{"version":3,"sources":["webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/app-config.module.ts","webpack:///./src/app/app-routing.module.ts","webpack:///./src/app/app.component.html","webpack:///./src/app/app.component.scss","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/components/activity-log/activity-log.component.html","webpack:///./src/app/components/activity-log/activity-log.component.scss","webpack:///./src/app/components/activity-log/activity-log.component.ts","webpack:///./src/app/components/alert/alert.component.html","webpack:///./src/app/components/alert/alert.component.scss","webpack:///./src/app/components/alert/alert.component.ts","webpack:///./src/app/components/card/card.component.html","webpack:///./src/app/components/card/card.component.scss","webpack:///./src/app/components/card/card.component.ts","webpack:///./src/app/components/comments/comments.component.html","webpack:///./src/app/components/comments/comments.component.scss","webpack:///./src/app/components/comments/comments.component.ts","webpack:///./src/app/components/datatable/alerts-datatable/alerts-datatable.component.html","webpack:///./src/app/components/datatable/alerts-datatable/alerts-datatable.component.scss","webpack:///./src/app/components/datatable/alerts-datatable/alerts-datatable.component.ts","webpack:///./src/app/components/datatable/builder-jobs-datatable/builder-jobs-datatable.component.html","webpack:///./src/app/components/datatable/builder-jobs-datatable/builder-jobs-datatable.component.scss","webpack:///./src/app/components/datatable/builder-jobs-datatable/builder-jobs-datatable.component.ts","webpack:///./src/app/components/datatable/datatable.component.html","webpack:///./src/app/components/datatable/datatable.component.scss","webpack:///./src/app/components/datatable/datatable.component.ts","webpack:///./src/app/components/datatable/repair-jobs-datatable/repair-jobs-datatable.component.html","webpack:///./src/app/components/datatable/repair-jobs-datatable/repair-jobs-datatable.component.scss","webpack:///./src/app/components/datatable/repair-jobs-datatable/repair-jobs-datatable.component.ts","webpack:///./src/app/components/datatable/reroof-jobs-datatable/reroof-jobs-datatable.component.html","webpack:///./src/app/components/datatable/reroof-jobs-datatable/reroof-jobs-datatable.component.scss","webpack:///./src/app/components/datatable/reroof-jobs-datatable/reroof-jobs-datatable.component.ts","webpack:///./src/app/components/datatable/warranty-jobs-datatable/warranty-jobs-datatable.component.html","webpack:///./src/app/components/datatable/warranty-jobs-datatable/warranty-jobs-datatable.component.scss","webpack:///./src/app/components/datatable/warranty-jobs-datatable/warranty-jobs-datatable.component.ts","webpack:///./src/app/components/logo/logo.component.html","webpack:///./src/app/components/logo/logo.component.scss","webpack:///./src/app/components/logo/logo.component.ts","webpack:///./src/app/components/main-navigation/link-parent/link-parent.component.html","webpack:///./src/app/components/main-navigation/link-parent/link-parent.component.scss","webpack:///./src/app/components/main-navigation/link-parent/link-parent.component.ts","webpack:///./src/app/components/main-navigation/link/link.component.html","webpack:///./src/app/components/main-navigation/link/link.component.scss","webpack:///./src/app/components/main-navigation/link/link.component.ts","webpack:///./src/app/components/main-navigation/main-navigation-items.ts","webpack:///./src/app/components/main-navigation/main-navigation.component.html","webpack:///./src/app/components/main-navigation/main-navigation.component.scss","webpack:///./src/app/components/main-navigation/main-navigation.component.ts","webpack:///./src/app/components/main-navigation/sub-menu/sub-menu.component.html","webpack:///./src/app/components/main-navigation/sub-menu/sub-menu.component.scss","webpack:///./src/app/components/main-navigation/sub-menu/sub-menu.component.ts","webpack:///./src/app/components/mobile-header/mobile-header.component.html","webpack:///./src/app/components/mobile-header/mobile-header.component.scss","webpack:///./src/app/components/mobile-header/mobile-header.component.ts","webpack:///./src/app/components/sidebar/sidebar.component.html","webpack:///./src/app/components/sidebar/sidebar.component.scss","webpack:///./src/app/components/sidebar/sidebar.component.ts","webpack:///./src/app/guards/auth/auth.guard.ts","webpack:///./src/app/helpers/error.interceptor.ts","webpack:///./src/app/helpers/index.ts","webpack:///./src/app/helpers/jwt.interceptor.ts","webpack:///./src/app/models/comment.ts","webpack:///./src/app/models/email.ts","webpack:///./src/app/models/role.ts","webpack:///./src/app/modules/job.module.ts","webpack:///./src/app/services/activity-log/activity-log.service.ts","webpack:///./src/app/services/alert/alert.service.ts","webpack:///./src/app/services/alerts/alerts.service.ts","webpack:///./src/app/services/auth/auth.service.ts","webpack:///./src/app/services/builders/builders.service.ts","webpack:///./src/app/services/comments/comments.service.ts","webpack:///./src/app/services/communities/communities.service.ts","webpack:///./src/app/services/contacts/contacts.service.ts","webpack:///./src/app/services/email/email.service.ts","webpack:///./src/app/services/employees/employees.service.ts","webpack:///./src/app/services/files/files.service.ts","webpack:///./src/app/services/inspections/inspections.service.ts","webpack:///./src/app/services/jobs/jobs.service.ts","webpack:///./src/app/services/role/role.service.ts","webpack:///./src/app/services/sms/sms.service.ts","webpack:///./src/app/services/user/user.service.ts","webpack:///./src/app/services/utilities/utilities.service.ts","webpack:///./src/app/views/alerts/alerts.component.html","webpack:///./src/app/views/alerts/alerts.component.scss","webpack:///./src/app/views/alerts/alerts.component.ts","webpack:///./src/app/views/alerts/alerts.module.ts","webpack:///./src/app/views/dashboard/dashboard.component.html","webpack:///./src/app/views/dashboard/dashboard.component.scss","webpack:///./src/app/views/dashboard/dashboard.component.ts","webpack:///./src/app/views/dashboard/dashboard.module.ts","webpack:///./src/app/views/inspections/dryin-inspection-add/dryin-inspection-add.component.html","webpack:///./src/app/views/inspections/dryin-inspection-add/dryin-inspection-add.component.scss","webpack:///./src/app/views/inspections/dryin-inspection-add/dryin-inspection-add.component.ts","webpack:///./src/app/views/inspections/dryin-inspection-view/dryin-inspection-view.component.html","webpack:///./src/app/views/inspections/dryin-inspection-view/dryin-inspection-view.component.scss","webpack:///./src/app/views/inspections/dryin-inspection-view/dryin-inspection-view.component.ts","webpack:///./src/app/views/inspections/safety-inspection-add/safety-inspection-add.component.html","webpack:///./src/app/views/inspections/safety-inspection-add/safety-inspection-add.component.scss","webpack:///./src/app/views/inspections/safety-inspection-add/safety-inspection-add.component.ts","webpack:///./src/app/views/inspections/safety-inspection-view/safety-inspection-view.component.html","webpack:///./src/app/views/inspections/safety-inspection-view/safety-inspection-view.component.scss","webpack:///./src/app/views/inspections/safety-inspection-view/safety-inspection-view.component.ts","webpack:///./src/app/views/inspections/shingle-inspection-add/shingle-inspection-add.component.html","webpack:///./src/app/views/inspections/shingle-inspection-add/shingle-inspection-add.component.scss","webpack:///./src/app/views/inspections/shingle-inspection-add/shingle-inspection-add.component.ts","webpack:///./src/app/views/inspections/shingle-inspection-view/shingle-inspection-view.component.html","webpack:///./src/app/views/inspections/shingle-inspection-view/shingle-inspection-view.component.scss","webpack:///./src/app/views/inspections/shingle-inspection-view/shingle-inspection-view.component.ts","webpack:///./src/app/views/login/login.component.html","webpack:///./src/app/views/login/login.component.scss","webpack:///./src/app/views/login/login.component.ts","webpack:///./src/app/views/new-password/new-password.component.html","webpack:///./src/app/views/new-password/new-password.component.scss","webpack:///./src/app/views/new-password/new-password.component.ts","webpack:///./src/app/views/page-not-found/page-not-found.component.html","webpack:///./src/app/views/page-not-found/page-not-found.component.scss","webpack:///./src/app/views/page-not-found/page-not-found.component.ts","webpack:///./src/app/views/password-reset/password-reset.component.html","webpack:///./src/app/views/password-reset/password-reset.component.scss","webpack:///./src/app/views/password-reset/password-reset.component.ts","webpack:///./src/environments/environment.ts","webpack:///./src/main.ts"],"names":[],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,qC;;;;;;;;;;;;;;;;;;;;;;;;;AC1FyD;AACC;AAEnD,IAAI,UAAU,GAAG,IAAI,4DAAc,CAAY,YAAY,CAAC,CAAC;AAEpE;IAAA;IAEA,CAAC;IAAD,gBAAC;AAAD,CAAC;;AAEM,IAAM,aAAa,GAAc;IACtC,MAAM,EAAE,qEAAW,CAAC,MAAM;CAC3B,CAAC;AAQF;IAAA;IAA+B,CAAC;IAAnB,eAAe;QAN3B,8DAAQ,CAAC;YACR,SAAS,EAAE,CAAC;oBACV,OAAO,EAAE,UAAU;oBACnB,QAAQ,EAAE,aAAa;iBACxB,CAAC;SACH,CAAC;OACW,eAAe,CAAI;IAAD,sBAAC;CAAA;AAAJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBa;AACgC;AACpB;AAEsB;AACa;AACzB;AAC0B;AACN;AAE9C;AAErC,IAAM,MAAM,GAAW;IACtB;QACC,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,CAAC,iEAAS,CAAC;QACxB,YAAY,EAAE,oDAAoD;KAClE;IACD;QACC,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,CAAC,iEAAS,CAAC;QACxB,YAAY,EAAE,oDAAoD;KAClE;IACD;QACC,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,CAAC,iEAAS,CAAC;QACxB,YAAY,EAAE,iDAAiD;KAC/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","file":"main.js","sourcesContent":["var map = {\n\t\"@/views/alerts/alerts.module\": [\n\t\t\"./src/app/views/alerts/alerts.module.ts\"\n\t],\n\t\"@/views/builder-jobs/builder-jobs.module\": [\n\t\t\"./src/app/views/builder-jobs/builder-jobs.module.ts\",\n\t\t\"default~views-builder-jobs-builder-jobs-module~views-repair-jobs-repair-jobs-module~views-reroof-job~cb3bb71e\",\n\t\t\"common\",\n\t\t\"views-builder-jobs-builder-jobs-module\"\n\t],\n\t\"@/views/builders/builders.module\": [\n\t\t\"./src/app/views/builders/builders.module.ts\",\n\t\t\"common\",\n\t\t\"views-builders-builders-module\"\n\t],\n\t\"@/views/communities/communities.module\": [\n\t\t\"./src/app/views/communities/communities.module.ts\",\n\t\t\"common\",\n\t\t\"views-communities-communities-module\"\n\t],\n\t\"@/views/contacts/contacts.module\": [\n\t\t\"./src/app/views/contacts/contacts.module.ts\",\n\t\t\"common\",\n\t\t\"views-contacts-contacts-module\"\n\t],\n\t\"@/views/dashboard/dashboard.module\": [\n\t\t\"./src/app/views/dashboard/dashboard.module.ts\"\n\t],\n\t\"@/views/employees/employees.module\": [\n\t\t\"./src/app/views/employees/employees.module.ts\",\n\t\t\"common\",\n\t\t\"views-employees-employees-module\"\n\t],\n\t\"@/views/incidents/incidents.module\": [\n\t\t\"./src/app/views/incidents/incidents.module.ts\",\n\t\t\"common\",\n\t\t\"views-incidents-incidents-module\"\n\t],\n\t\"@/views/models/models.module\": [\n\t\t\"./src/app/views/models/models.module.ts\",\n\t\t\"common\",\n\t\t\"views-models-models-module\"\n\t],\n\t\"@/views/repair-jobs/repair-jobs.module\": [\n\t\t\"./src/app/views/repair-jobs/repair-jobs.module.ts\",\n\t\t\"default~views-builder-jobs-builder-jobs-module~views-repair-jobs-repair-jobs-module~views-reroof-job~cb3bb71e\",\n\t\t\"common\",\n\t\t\"views-repair-jobs-repair-jobs-module\"\n\t],\n\t\"@/views/reroof-jobs/reroof-jobs.module\": [\n\t\t\"./src/app/views/reroof-jobs/reroof-jobs.module.ts\",\n\t\t\"default~views-builder-jobs-builder-jobs-module~views-repair-jobs-repair-jobs-module~views-reroof-job~cb3bb71e\",\n\t\t\"common\",\n\t\t\"views-reroof-jobs-reroof-jobs-module\"\n\t],\n\t\"@/views/time/time.module\": [\n\t\t\"./src/app/views/time/time.module.ts\",\n\t\t\"common\",\n\t\t\"views-time-time-module\"\n\t],\n\t\"@/views/users/users.module\": [\n\t\t\"./src/app/views/users/users.module.ts\",\n\t\t\"common\",\n\t\t\"views-users-users-module\"\n\t],\n\t\"@/views/warranty-jobs/warranty-jobs.module\": [\n\t\t\"./src/app/views/warranty-jobs/warranty-jobs.module.ts\",\n\t\t\"default~views-builder-jobs-builder-jobs-module~views-repair-jobs-repair-jobs-module~views-reroof-job~cb3bb71e\",\n\t\t\"common\",\n\t\t\"views-warranty-jobs-warranty-jobs-module\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tvar ids = map[req];\n\tif(!ids) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\tvar id = ids[0];\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";\nmodule.exports = webpackAsyncContext;","import { NgModule, InjectionToken } from '@angular/core';\r\nimport { environment } from '../environments/environment';\r\n\r\nexport let APP_CONFIG = new InjectionToken('app.config');\r\n\r\nexport class AppConfig {\r\n apiUrl: string;\r\n}\r\n\r\nexport const APP_DI_CONFIG: AppConfig = {\r\n apiUrl: environment.apiUrl\r\n};\r\n\r\n@NgModule({\r\n providers: [{\r\n provide: APP_CONFIG,\r\n useValue: APP_DI_CONFIG\r\n }]\r\n})\r\nexport class AppConfigModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule, PreloadAllModules} from '@angular/router';\r\nimport { AuthGuard } from '@/guards/auth/auth.guard';\r\n\r\nimport { DashboardComponent } from '@/views/dashboard/dashboard.component';\r\nimport { PageNotFoundComponent } from '@/views/page-not-found/page-not-found.component';\r\nimport { LoginComponent } from '@/views/login/login.component';\r\nimport { PasswordResetComponent } from '@/views/password-reset/password-reset.component';\r\nimport { NewPasswordComponent } from '@/views/new-password/new-password.component';\r\n\r\nimport { Role } from '@/models/role';\r\n\r\nconst routes: Routes = [\r\n\t{\r\n\t\tpath: 'incidents',\r\n\t\tcanActivate: [AuthGuard],\r\n\t\tloadChildren: '@/views/incidents/incidents.module#IncidentsModule'\r\n\t},\r\n\t{\r\n\t\tpath: 'dashboard',\r\n\t\tcanActivate: [AuthGuard],\r\n\t\tloadChildren: '@/views/dashboard/dashboard.module#DashboardModule'\r\n\t},\r\n\t{\r\n\t\tpath: 'builders',\r\n\t\tcanActivate: [AuthGuard],\r\n\t\tloadChildren: '@/views/builders/builders.module#BuildersModule'\r\n\t},\r\n\t{\r\n\t\tpath: 'communities',\r\n\t\tcanActivate: [AuthGuard],\r\n\t\tloadChildren: '@/views/communities/communities.module#CommunitiesModule',\r\n\t\tdata: { roles: [Role.Admin, Role.Supervisor, Role.CrewLeader] }\r\n\t},\r\n\t{\r\n\t\tpath: 'reroof-jobs',\r\n\t\tloadChildren: '@/views/reroof-jobs/reroof-jobs.module#ReroofJobsModule',\r\n\t\tcanActivate: [AuthGuard],\r\n\t\tdata: { roles: [Role.Admin, Role.Supervisor] }\r\n\t},\r\n\t{\r\n\t\tpath: 'builder-jobs',\r\n\t\tcanActivate: [AuthGuard],\r\n\t\tloadChildren: '@/views/builder-jobs/builder-jobs.module#BuilderJobsModule',\r\n\t\tdata: { roles: [Role.Admin, Role.Supervisor, Role.CrewLeader] }\r\n\t},\r\n\t{\r\n\t\tpath: 'repair-jobs',\r\n\t\tcanActivate: [AuthGuard],\r\n\t\tloadChildren: '@/views/repair-jobs/repair-jobs.module#RepairJobsModule',\r\n\t\tdata: { roles: [Role.Admin, Role.Supervisor, Role.CrewLeader] }\r\n\t},\r\n\t{\r\n\t\tpath: 'warranty-jobs',\r\n\t\tcanActivate: [AuthGuard],\r\n\t\tloadChildren: '@/views/warranty-jobs/warranty-jobs.module#WarrantyJobsModule',\r\n\t\tdata: { roles: [Role.Admin, Role.Supervisor, Role.CrewLeader] }\r\n\t},\r\n\t{\r\n\t\tpath: 'models',\r\n\t\tcanActivate: [AuthGuard],\r\n\t\tloadChildren: '@/views/models/models.module#ModelsModule',\r\n\t\tdata: { roles: [Role.Admin, Role.Supervisor, Role.CrewLeader] }\r\n\t},\r\n\t{\r\n\t\tpath: 'employees',\r\n\t\tcanActivate: [AuthGuard],\r\n\t\tloadChildren: '@/views/employees/employees.module#EmployeesModule',\r\n\t\tdata: { roles: [Role.Admin, Role.Supervisor] }\r\n\t},\r\n\t{\r\n\t\tpath: 'contacts',\r\n\t\tcanActivate: [AuthGuard],\r\n\t\tloadChildren: '@/views/contacts/contacts.module#ContactsModule',\r\n\t\tdata: { roles: [Role.Admin, Role.Supervisor] }\r\n\t},\r\n\t{\r\n\t\tpath: 'users',\r\n\t\tcanActivate: [AuthGuard],\r\n\t\tloadChildren: '@/views/users/users.module#UsersModule',\r\n\t\tdata: { roles: [Role.Admin, Role.Supervisor] }\r\n\t},\r\n\t{\r\n\t\tpath: 'time-entries',\r\n\t\tcanActivate: [AuthGuard],\r\n\t\tloadChildren: '@/views/time/time.module#TimeModule',\r\n\t\tdata: { roles: [Role.Admin, Role.Supervisor, Role.CrewLeader] }\r\n\t},\r\n\t{\r\n\t\tpath: 'alerts',\r\n\t\tcanActivate: [AuthGuard],\r\n\t\tloadChildren: '@/views/alerts/alerts.module#AlertsModule',\r\n\t\tdata: { roles: [Role.Admin, Role.Supervisor, Role.CrewLeader] }\r\n\t},\r\n\t{\r\n\t\tpath: 'login',\r\n\t\tcomponent: LoginComponent\r\n\t},\r\n\t{\r\n\t\tpath: 'password-reset',\r\n\t\tcomponent: PasswordResetComponent\r\n\t},\r\n\t{\r\n\t\tpath: 'new-password',\r\n\t\tcomponent: NewPasswordComponent\r\n\t\t},\r\n\t{\r\n\t\tpath: '',\r\n\t\tredirectTo: '/dashboard',\r\n\t\tpathMatch: 'full'\r\n\t},\r\n\t{\r\n\t\tpath: '',\r\n\t\tcomponent: DashboardComponent,\r\n\t\tcanActivate: [AuthGuard],\r\n\t\tchildren: [\r\n\t\t\t{\r\n\t\t\t\tpath: '',\r\n\t\t\t\tcanActivateChild: [AuthGuard],\r\n\t\t\t\tchildren: []\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\tpath: '**',\r\n\t\tcomponent: PageNotFoundComponent\r\n\t}\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n \tRouterModule.forRoot( routes )\r\n ],\r\n exports: [\r\n \tRouterModule\r\n ],\r\n})\r\nexport class AppRoutingModule { }\r\n","module.exports = \"
\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\\"Loading\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\r\\n
\\r\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2FwcC5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnChanges } from '@angular/core';\r\nimport {\r\n\tRouter,\r\n\tEvent,\r\n\tNavigationStart,\r\n\tNavigationEnd,\r\n\tNavigationCancel,\r\n\tNavigationError\r\n} from '@angular/router';\r\n\r\nimport { AuthService } from '@/services/auth/auth.service';\r\n\r\nimport { Role } from '@/models/role';\r\nimport { User } from '@/models/user';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss']\r\n})\r\nexport class AppComponent {\r\n\ttitle = 'SterlingRoofing';\r\n\tloggedIn = false;\r\n\r\n\tcurrentUser : User\r\n\tsidebarOpen : boolean = false;\r\n\trouteLoading : boolean = false\r\n\r\n\tconstructor(\r\n\t\tprivate authService: AuthService,\r\n\t\tprivate router: Router\r\n\t) {\r\n\t\tthis.loginCheck();\r\n\r\n\t\tthis.router.events.subscribe((event: Event) => {\r\n\t\t\tthis.loginCheck();\r\n\t\t});\r\n\t\tthis.authService.currentUser.subscribe(user => this.currentUser = user);\r\n\r\n\t\tthis.router.events.subscribe((event: Event) => {\r\n\t\t\tswitch (true) {\r\n\r\n\t\t\t\tcase event instanceof NavigationStart: {\r\n\t\t\t\t\tthis.routeLoading = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcase event instanceof NavigationEnd:\r\n\t\t\t\tcase event instanceof NavigationCancel:\r\n\t\t\t\tcase event instanceof NavigationError: {\r\n\t\t\t\t\tthis.routeLoading = false;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tdefault: {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tget isAdmin() {\r\n\t\treturn this.currentUser && this.currentUser.role.name === Role.Admin;\r\n\t}\r\n\r\n\tget isSupervisor() {\r\n\t\treturn this.currentUser && this.currentUser.role.name === Role.Supervisor;\r\n\t}\r\n\r\n\tget isCrewLeader() {\r\n\t\treturn this.currentUser && this.currentUser.role.name === Role.CrewLeader;\r\n\t}\r\n\r\n\tloginCheck() {\r\n\t\tconst currentUser = this.authService.currentUserValue;\r\n\r\n\t\tthis.loggedIn = currentUser ? true : false;\r\n\t}\r\n\r\n\ttoggleSidebar() {\r\n\t\tthis.sidebarOpen = !this.sidebarOpen;\r\n\t\treturn false;\r\n\t}\r\n\r\n\tcloseSidebar() {\r\n\t\tif(this.loggedIn) {\r\n\t\t\tif( this.sidebarOpen ) {\r\n\t\t\t\tthis.sidebarOpen = !this.sidebarOpen;\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","import { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule } from '@angular/core';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { DataTablesModule } from 'angular-datatables';\r\n\r\n// Custom Modules\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { AppConfigModule } from './app-config.module';\r\nimport { DashboardModule } from \"@/views/dashboard/dashboard.module\";\r\n\r\n// Helpers/Services\r\nimport { JwtInterceptor, ErrorInterceptor } from './helpers';\r\n\r\n// Components\r\nimport { AppComponent } from './app.component';\r\n\r\nimport { AlertComponent } from '@/components/alert/alert.component';\r\nimport { CardComponent } from '@/components/card/card.component';\r\n\r\nimport { LinkComponent } from '@/components/main-navigation/link/link.component';\r\nimport { LinkParentComponent } from '@/components/main-navigation/link-parent/link-parent.component';\r\nimport { LoginComponent } from '@/views/login/login.component';\r\nimport { LogoComponent } from '@/components/logo/logo.component';\r\n\r\nimport { MainNavigationComponent } from '@/components/main-navigation/main-navigation.component';\r\nimport { DatatableComponent } from '@/components/datatable/datatable.component';\r\n\r\nimport { MobileHeaderComponent } from '@/components/mobile-header/mobile-header.component';\r\n\r\nimport { NewPasswordComponent } from '@/views/new-password/new-password.component';\r\nimport { PageNotFoundComponent } from '@/views/page-not-found/page-not-found.component';\r\nimport { PasswordResetComponent } from '@/views/password-reset/password-reset.component';\r\n\r\nimport { SidebarComponent } from '@/components/sidebar/sidebar.component';\r\nimport { SubMenuComponent } from '@/components/main-navigation/sub-menu/sub-menu.component';\r\n// import { PipeDecorator } from '@angular/core/src/metadata/directives';\r\n\r\n@NgModule({\r\n\tdeclarations: [\r\n\t\tAlertComponent,\r\n\t\tAppComponent,\r\n\t\tCardComponent,\r\n\t\tLinkComponent,\r\n\t\tLinkParentComponent,\r\n\t\tLoginComponent,\r\n\t\tLogoComponent,\r\n\t\tMainNavigationComponent,\r\n\t\tMobileHeaderComponent,\r\n\t\tNewPasswordComponent,\r\n\t\tPageNotFoundComponent,\r\n\t\tPasswordResetComponent,\r\n\t\tSidebarComponent,\r\n\t\tSubMenuComponent,\r\n\t\tDatatableComponent\r\n\t],\r\n\timports: [\r\n\t\tAppRoutingModule,\r\n\t\tBrowserModule,\r\n\t\tDashboardModule,\r\n\t\tFormsModule,\r\n\t\tHttpClientModule,\r\n\t\tNgbModule,\r\n\t\tReactiveFormsModule,\r\n\t\tAppConfigModule,\r\n\t\tDataTablesModule,\r\n\t],\r\n\tproviders: [\r\n\t\t{ provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true },\r\n\t\t{ provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true }\r\n\t],\r\n\tbootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n","module.exports = \"
\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\t
    \\r\\n\\t\\t\\t\\t
  • \\r\\n\\t\\t\\t\\t\\t{{ item?.date }}\\r\\n\\t\\t\\t\\t\\t{{ item?.Timestamp + \\\" - \\\" + item?.userMessage + \\\" \\\" + \\\"(\\\" + item?.userResponsible + \\\")\\\" }}\\r\\n\\t\\t\\t\\t
  • \\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\t\\r\\n\\t\\r\\n\\t\\r\\n
\\r\\n\"","module.exports = \".c-activity-log ul {\\n padding: 0;\\n font-size: 14px;\\n}\\n.c-activity-log li {\\n list-style-type: none;\\n background-color: #E8E8E8;\\n padding: 0.5em;\\n}\\n.c-activity-log li:nth-of-type(odd) {\\n background-color: #ffffff;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9hY3Rpdml0eS1sb2cvQzpcXFVzZXJzXFxEYW5pZWxcXERlc2t0b3BcXFByb2plY3RzXFxTdGVybGluZ1Jvb2Zpbmcvc3JjXFxhcHBcXGNvbXBvbmVudHNcXGFjdGl2aXR5LWxvZ1xcYWN0aXZpdHktbG9nLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2FjdGl2aXR5LWxvZy9hY3Rpdml0eS1sb2cuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUM7RUFDQyxVQUFBO0VBQ0EsZUFBQTtBQ0RGO0FESUM7RUFFQyxxQkFBQTtFQUNBLHlCQUFBO0VBQ0EsY0FBQTtBQ0hGO0FES0U7RUFDQyx5QkFBQTtBQ0hIIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9hY3Rpdml0eS1sb2cvYWN0aXZpdHktbG9nLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmMtYWN0aXZpdHktbG9nIHtcclxuXHJcblx0dWwge1xyXG5cdFx0cGFkZGluZzogMDtcclxuXHRcdGZvbnQtc2l6ZTogMTRweDtcclxuXHR9XHJcblxyXG5cdGxpIHtcclxuXHJcblx0XHRsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjRThFOEU4O1xyXG5cdFx0cGFkZGluZzogLjVlbTtcclxuXHJcblx0XHQmOm50aC1vZi10eXBlKG9kZCkge1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xyXG5cdFx0fVxyXG5cclxuXHR9XHJcbn1cclxuXHJcbiIsIi5jLWFjdGl2aXR5LWxvZyB1bCB7XG4gIHBhZGRpbmc6IDA7XG4gIGZvbnQtc2l6ZTogMTRweDtcbn1cbi5jLWFjdGl2aXR5LWxvZyBsaSB7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0U4RThFODtcbiAgcGFkZGluZzogMC41ZW07XG59XG4uYy1hY3Rpdml0eS1sb2cgbGk6bnRoLW9mLXR5cGUob2RkKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG59Il19 */\"","import { Component, OnInit, Input } from '@angular/core';\r\n\r\nimport { ActivityLogService } from \"@/services/activity-log/activity-log.service\";\r\nimport { UserService } from \"@/services/user/user.service\";\r\nimport { BuildersService } from \"@/services/builders/builders.service\";\r\nimport { ContactsService } from \"@/services/contacts/contacts.service\";\r\nimport { CommunitiesService } from \"@/services/communities/communities.service\";\r\n\r\nimport { User } from \"@/models/user\";\r\n\r\nimport { Observable, of} from \"rxjs\";\r\n\r\n@Component({\r\n selector: 'activity-log',\r\n templateUrl: './activity-log.component.html',\r\n styleUrls: ['./activity-log.component.scss']\r\n})\r\nexport class ActivityLogComponent implements OnInit {\r\n\r\n\t@Input() type: string = '';\r\n\t@Input() id: string = '';\r\n\tlog = null;\r\n\t// pagination variables\r\n\tentriesPerPage: number = 20;\r\n\tcurrentPage: number = 1;\r\n\r\n constructor(\r\n\t\tprivate activityLogService: ActivityLogService,\r\n\t\tprivate userService: UserService,\r\n\t\tprivate buildersService: BuildersService,\r\n\t\tprivate contactsService: ContactsService,\r\n\t\tprivate communitiesService: CommunitiesService\r\n\r\n\t) { }\r\n\r\n ngOnInit() {\r\n\r\n\t\tthis.activityLogService.getLog(this.type, this.id).subscribe((result: any) => {\r\n\t\t\tvar log = result.body,\r\n\t\t\t\t\tusers: User[] = [];\r\n\r\n\t\t\tlog = log.reverse();\r\n\t\t\tthis.log = log;\r\n\r\n\t\t\t// Loop through object to get users/format date\r\n\t\t\tlog.forEach( ( item, index ) => {\r\n\t\t\t\tlet time = this.formatTimestamp(item.Timestamp),\r\n\t\t\t\t\t\tdate = this.formatDate(item.Timestamp),\r\n\t\t\t\t\t\tchanged = item.FieldChanged;\r\n\r\n\t\t\t\tusers.push(item.UserResponsibleID);\r\n\r\n\t\t\t\titem.Timestamp = time;\r\n\t\t\t\titem.date = date;\r\n\r\n\t\t\t\tif( changed === \"Builder\" || changed === \"BuilderID\") {\r\n\t\t\t\t\tthis.getBuilder(item);\r\n\t\t\t\t}\r\n\t\t\t\telse if( changed === \"BuilderConstructionManager\" || changed === \"BuilderCustomerCareRepID\" || changed === \"BuilderCustomerCareRep_ID\") {\r\n\t\t\t\t\tthis.getContact(item);\r\n\t\t\t\t}\r\n\t\t\t\telse if( changed === \"Community\" ) {\r\n\t\t\t\t\tthis.getCommunity(item);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif( changed !== \"Lot1\" && changed !== \"Lot2\" ) {\r\n\t\t\t\t\tif(changed === 'BuilderCustomerCareRep_ID') {\r\n\t\t\t\t\t\titem.FieldChanged = 'Builder Customer Care Rep'\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\titem.FieldChanged = changed.replace(/([a-z])([A-Z])[\\W_]+/g, '$1 $2');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\r\n\t\t\t// Iterating through all users until/if a get single user endpoint is set up\r\n\t\t\tthis.userService.getUsers().subscribe((result: any) => {\r\n\t\t\t\tvar allUsers = result.body;\r\n\t\t\t\tvar userNames = [];\r\n\r\n\t\t\t\tusers.forEach( logUser => {\r\n\t\t\t\t\tallUsers.data.forEach( user => {\r\n\r\n\t\t\t\t\t\tif( logUser === user.Id ) {\r\n\t\t\t\t\t\t\tuserNames.push(user.Email);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tlog.forEach( ( item, i ) => {\r\n\r\n\t\t\t\t\titem.userResponsible = userNames[i];\r\n\r\n\t\t\t\t\tthis.formatUsers(item, allUsers);\r\n\r\n\t\t\t\t\t// Formatting to add a space in between the job type and \"job\"\r\n\t\t\t\t\t// Build User Message\r\n\t\t\t\t\tif( item.FieldChanged === \"Created Date\" ) {\r\n\t\t\t\t\t\tlet job = this.type,\r\n\t\t\t\t\t\t\t\tindex = job.indexOf(\"Job\");\r\n\r\n\t\t\t\t\t\tif(item.Description.toLowerCase().includes(\"file uploaded\")){\r\n\t\t\t\t\t\t\titem.userMessage = 'New file uploaded'\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(index !== -1) {\r\n\t\t\t\t\t\t\t\tjob = job.slice(0, index) + \" \" + job.slice(index);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\tjob = job + \" Job\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\titem.userMessage = job + \" \" + \"created\";\r\n\t\t\t\t\t\t\titem.userMessage.toString();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if( item.FieldChanged == 'SentEmail' || item.FieldChanged == 'SentSMS' ) {\r\n\t\t\t\t\t\titem.userMessage = item.FieldChanged + \" \" + item.Description;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tif(item.Description.toLowerCase().includes(\"file removed\")){\r\n\t\t\t\t\t\t\titem.userMessage = 'File deleted'\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\titem.userMessage = item.FieldChanged + \" changed to \" + item.NewValue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t});\r\n\r\n\t\t});\r\n\r\n\t}\r\n\r\n\tpageChanged(newPage: number){\r\n\t\tthis.currentPage = newPage\r\n\t}\r\n\r\n\t// Function to format logs timestamp to human readable format\r\n\tformatTimestamp(timestamp) {\r\n\r\n\t\tvar dateObject = new Date(timestamp),\r\n\t\t\t\ttime = [dateObject.getHours(), dateObject.getMinutes()],\r\n\t\t\t\tsuffix = ( time[0] < 12 ) ? \"AM\" : \"PM\";\r\n\r\n\t\ttime[0] = ( time[0] < 12 ) ? time[0] : time[0] - 12;\r\n\t\ttime[0] = time[0] || 12;\r\n\r\n\t\tlet stringTime = time.map(String);\r\n\r\n\t\tfor ( var i = 1; i < 2; i++ ) {\r\n\t\t\tif ( time[i] < 10 ) {\r\n\t\t\t\tstringTime[i] = \"0\" + time[i].toString();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn stringTime.join(\":\") + \" \" + suffix;\r\n\t}\r\n\r\n\tformatDate(timestamp) {\r\n\t\tvar dateObject = new Date(timestamp),\r\n\t\tdate = [ dateObject.getMonth() + 1, dateObject.getDate(), dateObject.getFullYear() ];\r\n\t\treturn date.join(\"/\");\r\n\t}\r\n\r\n\t// Function to format the users into friendly text\r\n\tformatUsers(item, allUsers) {\r\n\r\n\t\tallUsers.data.forEach( user => {\r\n\r\n\t\t\tif( item.NewValue === user.Id ) {\r\n\t\t\t\titem.NewValue = user.FullName || user.Email;\r\n\r\n\t\t\t\tif( item.FieldChanged === \"CrewLeader ID\" ) {\r\n\t\t\t\t\titem.FieldChanged = \"Crew Leader\";\r\n\t\t\t\t}\r\n\t\t\t\telse if( item.FieldChanged === \"Supervisor ID\" ) {\r\n\t\t\t\t\titem.FieldChanged = \"Supervisor\";\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t}\r\n\r\n\tgetBuilder(item) {\r\n\r\n\t\tthis.buildersService.getBuilder(item.NewValue).subscribe((result: any) => {\r\n\r\n\t\t\t let builder = result.body;\r\n\r\n\t\t\t if( builder ) {\r\n\t\t\t\t item.NewValue = builder.CompanyName;\r\n\t\t\t\t item.userMessage = item.FieldChanged + \" changed to \" + item.NewValue;\r\n\t\t\t }\r\n\t\t});\r\n\r\n\t}\r\n\r\n\tgetContact(item) {\r\n\r\n\t\tthis.contactsService.getContact(item.NewValue).subscribe((result: any) => {\r\n\t\t\tlet contact = result.body;\r\n\t\t\tif( contact ) {\r\n\t\t\t\titem.NewValue = contact.Name;\r\n\t\t\t\titem.userMessage = item.FieldChanged + \" changed to \" + item.NewValue;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t}\r\n\r\n\tgetCommunity(item) {\r\n\r\n\t\tthis.communitiesService.getCommunity(item.NewValue).subscribe((result: any) => {\r\n\t\t\tlet community = result.body;\r\n\t\t\tif( community ) {\r\n\t\t\t\titem.NewValue = community.Name;\r\n\t\t\t\titem.userMessage = item.FieldChanged + \" changed to \" + item.NewValue;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n}\r\n\r\n","module.exports = \"\\r\\n\\t
\\r\\n\\r\\n\"","module.exports = \":host {\\n display: flex;\\n}\\n\\nngb-alert {\\n display: flex;\\n flex-wrap: wrap;\\n justify-content: space-between;\\n width: 100%;\\n}\\n\\n@media (min-width: 576px) {\\n ngb-alert {\\n width: auto;\\n }\\n}\\n\\nngb-alert.fixed-alert {\\n position: fixed;\\n z-index: 2;\\n left: 50%;\\n transform: translateX(-50%);\\n}\\n\\n@media (min-width: 992px) {\\n ngb-alert.fixed-alert {\\n transform: translateX(0);\\n }\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9hbGVydC9DOlxcVXNlcnNcXERhbmllbFxcRGVza3RvcFxcUHJvamVjdHNcXFN0ZXJsaW5nUm9vZmluZy9zcmNcXGFwcFxcY29tcG9uZW50c1xcYWxlcnRcXGFsZXJ0LmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2FsZXJ0L0M6XFxVc2Vyc1xcRGFuaWVsXFxEZXNrdG9wXFxQcm9qZWN0c1xcU3RlcmxpbmdSb29maW5nL25vZGVfbW9kdWxlc1xcYm9vdHN0cmFwXFxzY3NzXFxtaXhpbnNcXF9icmVha3BvaW50cy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBO0VBQ0MsYUFBQTtBQ0hEOztBRE1BO0VBQ0MsYUFBQTtFQUNBLGVBQUE7RUFDQSw4QkFBQTtFQUNBLFdBQUE7QUNIRDs7QUNtREk7RUZwREo7SUFPRSxXQUFBO0VDRkE7QUFDRjs7QURJQztFQUNDLGVBQUE7RUFDRSxVQUFBO0VBQ0EsU0FBQTtFQUNGLDJCQUFBO0FDRkY7O0FDd0NJO0VGMUNIO0lBT0Usd0JBQUE7RUNERDtBQUNGIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9hbGVydC9hbGVydC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgXCJib290c3RyYXAvc2Nzcy9mdW5jdGlvbnNcIjtcclxuQGltcG9ydCBcImJvb3RzdHJhcC9zY3NzL3ZhcmlhYmxlc1wiO1xyXG5AaW1wb3J0IFwiYm9vdHN0cmFwL3Njc3MvbWl4aW5zXCI7XHJcblxyXG46aG9zdCB7XHJcblx0ZGlzcGxheTogZmxleDtcclxufVxyXG5cclxubmdiLWFsZXJ0IHtcclxuXHRkaXNwbGF5OiBmbGV4O1xyXG5cdGZsZXgtd3JhcDogd3JhcDtcclxuXHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcblx0d2lkdGg6IDEwMCU7XHJcblxyXG5cdEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoc20pIHtcclxuXHRcdHdpZHRoOiBhdXRvO1xyXG5cdH1cclxuXHJcblx0Ji5maXhlZC1hbGVydHtcclxuXHRcdHBvc2l0aW9uOiBmaXhlZDtcclxuICAgIHotaW5kZXg6IDI7XHJcbiAgICBsZWZ0OiA1MCU7XHJcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XHJcblxyXG5cdFx0QGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChsZyl7XHJcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIiwiOmhvc3Qge1xuICBkaXNwbGF5OiBmbGV4O1xufVxuXG5uZ2ItYWxlcnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgd2lkdGg6IDEwMCU7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcbiAgbmdiLWFsZXJ0IHtcbiAgICB3aWR0aDogYXV0bztcbiAgfVxufVxubmdiLWFsZXJ0LmZpeGVkLWFsZXJ0IHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiAyO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICBuZ2ItYWxlcnQuZml4ZWQtYWxlcnQge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgfVxufSIsIi8vIEJyZWFrcG9pbnQgdmlld3BvcnQgc2l6ZXMgYW5kIG1lZGlhIHF1ZXJpZXMuXG4vL1xuLy8gQnJlYWtwb2ludHMgYXJlIGRlZmluZWQgYXMgYSBtYXAgb2YgKG5hbWU6IG1pbmltdW0gd2lkdGgpLCBvcmRlciBmcm9tIHNtYWxsIHRvIGxhcmdlOlxuLy9cbi8vICAgICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweClcbi8vXG4vLyBUaGUgbWFwIGRlZmluZWQgaW4gdGhlIGAkZ3JpZC1icmVha3BvaW50c2AgZ2xvYmFsIHZhcmlhYmxlIGlzIHVzZWQgYXMgdGhlIGAkYnJlYWtwb2ludHNgIGFyZ3VtZW50IGJ5IGRlZmF1bHQuXG5cbi8vIE5hbWUgb2YgdGhlIG5leHQgYnJlYWtwb2ludCwgb3IgbnVsbCBmb3IgdGhlIGxhc3QgYnJlYWtwb2ludC5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20pXG4vLyAgICBtZFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgbWRcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSwgJGJyZWFrcG9pbnQtbmFtZXM6ICh4cyBzbSBtZCBsZyB4bCkpXG4vLyAgICBtZFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cywgJGJyZWFrcG9pbnQtbmFtZXM6IG1hcC1rZXlzKCRicmVha3BvaW50cykpIHtcbiAgJG46IGluZGV4KCRicmVha3BvaW50LW5hbWVzLCAkbmFtZSk7XG4gIEByZXR1cm4gaWYoJG4gIT0gbnVsbCBhbmQgJG4gPCBsZW5ndGgoJGJyZWFrcG9pbnQtbmFtZXMpLCBudGgoJGJyZWFrcG9pbnQtbmFtZXMsICRuICsgMSksIG51bGwpO1xufVxuXG4vLyBNaW5pbXVtIGJyZWFrcG9pbnQgd2lkdGguIE51bGwgZm9yIHRoZSBzbWFsbGVzdCAoZmlyc3QpIGJyZWFrcG9pbnQuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1taW4oc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICA1NzZweFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gIEByZXR1cm4gaWYoJG1pbiAhPSAwLCAkbWluLCBudWxsKTtcbn1cblxuLy8gTWF4aW11bSBicmVha3BvaW50IHdpZHRoLiBOdWxsIGZvciB0aGUgbGFyZ2VzdCAobGFzdCkgYnJlYWtwb2ludC5cbi8vIFRoZSBtYXhpbXVtIHZhbHVlIGlzIGNhbGN1bGF0ZWQgYXMgdGhlIG1pbmltdW0gb2YgdGhlIG5leHQgb25lIGxlc3MgMC4wMnB4XG4vLyB0byB3b3JrIGFyb3VuZCB0aGUgbGltaXRhdGlvbnMgb2YgYG1pbi1gIGFuZCBgbWF4LWAgcHJlZml4ZXMgYW5kIHZpZXdwb3J0cyB3aXRoIGZyYWN0aW9uYWwgd2lkdGhzLlxuLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9tZWRpYXF1ZXJpZXMtNC8jbXEtbWluLW1heFxuLy8gVXNlcyAwLjAycHggcmF0aGVyIHRoYW4gMC4wMXB4IHRvIHdvcmsgYXJvdW5kIGEgY3VycmVudCByb3VuZGluZyBidWcgaW4gU2FmYXJpLlxuLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgyNjFcbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW1heChzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KSlcbi8vICAgIDc2Ny45OHB4XG5AZnVuY3Rpb24gYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG5leHQ6IGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQHJldHVybiBpZigkbmV4dCwgYnJlYWtwb2ludC1taW4oJG5leHQsICRicmVha3BvaW50cykgLSAuMDIsIG51bGwpO1xufVxuXG4vLyBSZXR1cm5zIGEgYmxhbmsgc3RyaW5nIGlmIHNtYWxsZXN0IGJyZWFrcG9pbnQsIG90aGVyd2lzZSByZXR1cm5zIHRoZSBuYW1lIHdpdGggYSBkYXNoIGluIGZyb250LlxuLy8gVXNlZnVsIGZvciBtYWtpbmcgcmVzcG9uc2l2ZSB1dGlsaXRpZXMuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1pbmZpeCh4cywgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KSlcbi8vICAgIFwiXCIgIChSZXR1cm5zIGEgYmxhbmsgc3RyaW5nKVxuLy8gICAgPj4gYnJlYWtwb2ludC1pbmZpeChzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KSlcbi8vICAgIFwiLXNtXCJcbkBmdW5jdGlvbiBicmVha3BvaW50LWluZml4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEByZXR1cm4gaWYoYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cykgPT0gbnVsbCwgXCJcIiwgXCItI3skbmFtZX1cIik7XG59XG5cbi8vIE1lZGlhIG9mIGF0IGxlYXN0IHRoZSBtaW5pbXVtIGJyZWFrcG9pbnQgd2lkdGguIE5vIHF1ZXJ5IGZvciB0aGUgc21hbGxlc3QgYnJlYWtwb2ludC5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBhbmQgd2lkZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQGlmICRtaW4ge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIE1lZGlhIG9mIGF0IG1vc3QgdGhlIG1heGltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBsYXJnZXN0IGJyZWFrcG9pbnQuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIG5hcnJvd2VyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQGlmICRtYXgge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIE1lZGlhIHRoYXQgc3BhbnMgbXVsdGlwbGUgYnJlYWtwb2ludCB3aWR0aHMuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgYmV0d2VlbiB0aGUgbWluIGFuZCBtYXggYnJlYWtwb2ludHNcbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWJldHdlZW4oJGxvd2VyLCAkdXBwZXIsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJGxvd2VyLCAkYnJlYWtwb2ludHMpO1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkdXBwZXIsICRicmVha3BvaW50cyk7XG5cbiAgQGlmICRtaW4gIT0gbnVsbCBhbmQgJG1heCAhPSBudWxsIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWF4ID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGxvd2VyLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWluID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkdXBwZXIsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vIE1lZGlhIGJldHdlZW4gdGhlIGJyZWFrcG9pbnQncyBtaW5pbXVtIGFuZCBtYXhpbXVtIHdpZHRocy5cbi8vIE5vIG1pbmltdW0gZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LCBhbmQgbm8gbWF4aW11bSBmb3IgdGhlIGxhcmdlc3Qgb25lLlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IG9ubHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQsIG5vdCB2aWV3cG9ydHMgYW55IHdpZGVyIG9yIG5hcnJvd2VyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtb25seSgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50cyk7XG5cbiAgQGlmICRtaW4gIT0gbnVsbCBhbmQgJG1heCAhPSBudWxsIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWF4ID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtaW4gPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuYW1lLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuIl19 */\"","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\nimport { AlertService } from '@/services/alert/alert.service';\r\n\r\n@Component({\r\n\tselector: 'alert',\r\n\ttemplateUrl: 'alert.component.html',\r\n\tstyleUrls: ['./alert.component.scss']\r\n})\r\nexport class AlertComponent implements OnInit, OnDestroy {\r\n private subscription: Subscription;\r\n\t\tmessage: any;\r\n\t\ttype: any;\r\n\t\tshowAlert = false;\r\n\t\talertClass:string = '';\r\n\r\n constructor(\r\n\t\t\tprivate alertService: AlertService,\r\n\t\t\tprivate sanitizer: DomSanitizer\r\n\t\t) { }\r\n\r\n ngOnInit() {\r\n\t\t\tthis.subscription = this.alertService.getAlert()\r\n\t\t\t\t.subscribe(data => {\r\n\r\n\t\t\t\t\tif( data ) {\r\n\t\t\t\t\t\tlet type = data.type,\r\n\t\t\t\t\t\t\t\tmessage = data.text,\r\n\t\t\t\t\t\t\t\talertClass = data.class;\r\n\r\n\t\t\t\t\t\t// Set type using Bootstrap conventions\r\n\t\t\t\t\t\tif( type === 'error' ) {\r\n\t\t\t\t\t\t\ttype = 'danger';\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif( type && message ) {\r\n\t\t\t\t\t\t\tthis.showAlert = true;\r\n\t\t\t\t\t\t\tthis.type = type;\r\n\t\t\t\t\t\t\tthis.alertClass = alertClass;\r\n\t\t\t\t\t\t\tthis.message = this.sanitizer.bypassSecurityTrustHtml(message);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n }\r\n\r\n ngOnDestroy() {\r\n\t\t\tthis.subscription.unsubscribe();\r\n\t\t\tconsole.log('alert destroyed');\r\n\t\t}\r\n\r\n\t\tclose() {\r\n\t\t\tthis.alertService.clear();\r\n\t\t\tthis.message = {};\r\n\t\t\tthis.showAlert = false;\r\n\t\t}\r\n}\r\n","module.exports = \"\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t{{ title }}\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t{{ description }}\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t
\\r\\n
\\r\\n\"","module.exports = \".c-card {\\n align-items: center;\\n background: #fefefe;\\n border: 1px solid #BCC6CE;\\n color: #212529;\\n display: flex;\\n font-size: 0.875rem;\\n margin-bottom: 1rem;\\n padding: 1em;\\n text-decoration: none;\\n transition: border-color 300ms ease-in-out, color 300ms ease-in-out;\\n width: 100%;\\n}\\n.c-card:hover, .c-card:focus {\\n border-color: #0058A8;\\n color: #0058A8;\\n text-decoration: none;\\n}\\n.c-card_controls {\\n margin-left: auto;\\n}\\n.c-card_control {\\n position: relative;\\n z-index: 2;\\n}\\n.c-card_close {\\n color: #dc3545;\\n font-weight: bold;\\n}\\n.c-card_content,\\n.c-card > .c-job-card_title {\\n margin: 0 0.625rem;\\n}\\n.c-card_description {\\n font-size: 0.85em;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9jYXJkL0M6XFxVc2Vyc1xcRGFuaWVsXFxEZXNrdG9wXFxQcm9qZWN0c1xcU3RlcmxpbmdSb29maW5nL3NyY1xcYXBwXFxjb21wb25lbnRzXFxjYXJkXFxjYXJkLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2NhcmQvQzpcXFVzZXJzXFxEYW5pZWxcXERlc2t0b3BcXFByb2plY3RzXFxTdGVybGluZ1Jvb2Zpbmcvc3JjXFxzdHlsZXNcXF92YXJpYWJsZXMuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9jYXJkL0M6XFxVc2Vyc1xcRGFuaWVsXFxEZXNrdG9wXFxQcm9qZWN0c1xcU3RlcmxpbmdSb29maW5nL25vZGVfbW9kdWxlc1xcYm9vdHN0cmFwXFxzY3NzXFxfdmFyaWFibGVzLnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvY2FyZC9jYXJkLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBO0VBQ0MsbUJBQUE7RUFDQSxtQkNHTztFREZQLHlCQUFBO0VBQ0EsY0VVVTtFRlRWLGFBQUE7RUFDQSxtQkFBQTtFQUNBLG1CQUFBO0VBQ0EsWUFBQTtFQUNBLHFCQUFBO0VBQ0EsbUVBQUE7RUFFQSxXQUFBO0FHRkQ7QUhJQztFQUVDLHFCQUFBO0VBQ0EsY0FBQTtFQUNBLHFCQUFBO0FHSEY7QUhNQztFQUNDLGlCQUFBO0FHSkY7QUhPQztFQUNDLGtCQUFBO0VBQ0EsVUFBQTtBR0xGO0FIUUM7RUFDQyxjQUFBO0VBQ0EsaUJBQUE7QUdORjtBSFNDOztFQUVDLGtCQUFBO0FHUEY7QUhVQztFQUNDLGlCQUFBO0FHUkYiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL2NhcmQvY2FyZC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJ2NvbXBvbmVudC1oZWFkZXInO1xyXG5cclxuLmMtY2FyZCB7XHJcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRiYWNrZ3JvdW5kOiAkd2hpdGU7XHJcblx0Ym9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1saWdodC1ncmF5O1xyXG5cdGNvbG9yOiAkYm9keS1jb2xvcjtcclxuXHRkaXNwbGF5OiBmbGV4O1xyXG5cdGZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpO1xyXG5cdG1hcmdpbi1ib3R0b206IDFyZW07XHJcblx0cGFkZGluZzogMWVtO1xyXG5cdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuXHR0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMzAwbXMgZWFzZS1pbi1vdXQsXHJcblx0XHRcdFx0XHRcdFx0Y29sb3IgMzAwbXMgZWFzZS1pbi1vdXQ7XHJcblx0d2lkdGg6IDEwMCU7XHJcblxyXG5cdCY6aG92ZXIsXHJcblx0Jjpmb2N1cyB7XHJcblx0XHRib3JkZXItY29sb3I6IHRoZW1lLWNvbG9yKCdwcmltYXJ5Jyk7XHJcblx0XHRjb2xvcjogdGhlbWUtY29sb3IoJ3ByaW1hcnknKTtcclxuXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuXHR9XHJcblxyXG5cdCZfY29udHJvbHMge1xyXG5cdFx0bWFyZ2luLWxlZnQ6IGF1dG87XHJcblx0fVxyXG5cclxuXHQmX2NvbnRyb2wge1xyXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdFx0ei1pbmRleDogMjtcclxuXHR9XHJcblxyXG5cdCZfY2xvc2Uge1xyXG5cdFx0Y29sb3I6IHRoZW1lLWNvbG9yKCdkYW5nZXInKTtcclxuXHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdH1cclxuXHJcblx0Jl9jb250ZW50LFxyXG5cdD4gLmMtam9iLWNhcmRfdGl0bGUge1xyXG5cdFx0bWFyZ2luOiAwIHJlbS1jYWxjKDEwKTtcclxuXHR9XHJcblxyXG5cdCZfZGVzY3JpcHRpb24ge1xyXG5cdFx0Zm9udC1zaXplOiAuODVlbTtcclxuXHR9XHJcbn1cclxuIiwiLy8gQ3VzdG9tIENvbG9yc1xyXG5cclxuJGRhcmstZ3JheTogIzI0MjQyNDtcclxuJG1lZGl1bS1kYXJrLWdyYXk6ICM2MTYxNjE7XHJcbiRtZWRpdW0tZ3JheTogIzUyNTI1MjtcclxuJG1lZGl1bS1saWdodC1ncmF5OiAjQkNDNkNFO1xyXG4kbGlnaHQtZ3JheTogI0U4RThFODtcclxuJHdoaXRlOiAjZmVmZWZlO1xyXG4kYmx1ZTogIzAwNTNBQztcclxuJGRhcmstYmx1ZTogIzUxNzA4RDtcclxuXHJcbiRwcmltYXJ5OiAjMDA1OEE4O1xyXG4kc2Vjb25kYXJ5OiAjMDA1OEE4O1xyXG4keWVsbG93OiAjRkZDMjM2O1xyXG4kb3JhbmdlOiAjRkY5NTJCO1xyXG4kaW5mbzogI2UyZTNlNTtcclxuXHJcbi8vIEFwcCBWYXJpYWJsZXNcclxuJGNvbnRhaW5lci1tYXgtd2lkdGg6IDEyMDBweDtcclxuJHNpZGViYXItYmc6ICRkYXJrLWdyYXk7XHJcbiRzaWRlYmFyLXdpZHRoOiAyNTBweDtcclxuXHJcbi8vIEJvb3RzdHJhcCBWYXJpYWJsZXNcclxuXHJcbi8vIExheW91dFxyXG5cclxuJGdyaWQtYnJlYWtwb2ludHM6IChcclxuICB4czogMCxcclxuICBzbTogNDgwcHgsXHJcbiAgbWQ6IDc2OHB4LFxyXG4gIGxnOiA5OTJweCxcclxuICB4bDogMTIwMHB4XHJcbik7XHJcblxyXG4kYm9keS1iZzogJGxpZ2h0LWdyYXk7XHJcblxyXG4vLyBUeXBvZ3JhcGh5XHJcbiRmb250LXNpemUtYmFzZTogMXJlbTtcclxuXHJcbiRmb250LWZhbWlseS1zYW5zLXNlcmlmOiAnUm9ib3RvJywgJ3NhbnMtc2VyaWYnO1xyXG5cclxuJGgxLWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS42MjU7IC8vIDI2XHJcbiRoMi1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuMzc1OyAvLyAyM1xyXG4kaDMtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UgKiAxLjI1OyAvLyAyMFxyXG4kaDQtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UgKiAxLjEyNTsgIC8vIDE4XHJcbiRoNS1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuMDYyNTsgLy8gMTdcclxuJGg2LWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlO1xyXG5cclxuXHJcbi8vIEdsb2JhbCBTdHlsZXNcclxuXHJcbiRib3JkZXItcmFkaXVzOiAwcHg7XHJcbiRib3JkZXItcmFkaXVzLWxnOiAkYm9yZGVyLXJhZGl1cztcclxuJGJvcmRlci1yYWRpdXMtc206ICRib3JkZXItcmFkaXVzO1xyXG5cclxuLy8gRm9ybXNcclxuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1iZzogJHdoaXRlO1xyXG5cclxuLy8gQmFkZ2VzXHJcbiRiYWRnZS1wYWRkaW5nLXk6IC41ZW07XHJcbiRiYWRnZS1wYWRkaW5nLXg6IC44ZW07XHJcbiRiYWRnZS1waWxsLXBhZGRpbmcteDogMS4yZW07XHJcbiIsIi8vIFZhcmlhYmxlc1xuLy9cbi8vIFZhcmlhYmxlcyBzaG91bGQgZm9sbG93IHRoZSBgJGNvbXBvbmVudC1zdGF0ZS1wcm9wZXJ0eS1zaXplYCBmb3JtdWxhIGZvclxuLy8gY29uc2lzdGVudCBuYW1pbmcuIEV4OiAkbmF2LWxpbmstZGlzYWJsZWQtY29sb3IgYW5kICRtb2RhbC1jb250ZW50LWJveC1zaGFkb3cteHMuXG5cbi8vIENvbG9yIHN5c3RlbVxuXG4kd2hpdGU6ICAgICNmZmYgIWRlZmF1bHQ7XG4kZ3JheS0xMDA6ICNmOGY5ZmEgIWRlZmF1bHQ7XG4kZ3JheS0yMDA6ICNlOWVjZWYgIWRlZmF1bHQ7XG4kZ3JheS0zMDA6ICNkZWUyZTYgIWRlZmF1bHQ7XG4kZ3JheS00MDA6ICNjZWQ0ZGEgIWRlZmF1bHQ7XG4kZ3JheS01MDA6ICNhZGI1YmQgIWRlZmF1bHQ7XG4kZ3JheS02MDA6ICM2Yzc1N2QgIWRlZmF1bHQ7XG4kZ3JheS03MDA6ICM0OTUwNTcgIWRlZmF1bHQ7XG4kZ3JheS04MDA6ICMzNDNhNDAgIWRlZmF1bHQ7XG4kZ3JheS05MDA6ICMyMTI1MjkgIWRlZmF1bHQ7XG4kYmxhY2s6ICAgICMwMDAgIWRlZmF1bHQ7XG5cbiRncmF5czogKCkgIWRlZmF1bHQ7XG4vLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2Nzcy9kb2xsYXItdmFyaWFibGUtZGVmYXVsdFxuJGdyYXlzOiBtYXAtbWVyZ2UoXG4gIChcbiAgICBcIjEwMFwiOiAkZ3JheS0xMDAsXG4gICAgXCIyMDBcIjogJGdyYXktMjAwLFxuICAgIFwiMzAwXCI6ICRncmF5LTMwMCxcbiAgICBcIjQwMFwiOiAkZ3JheS00MDAsXG4gICAgXCI1MDBcIjogJGdyYXktNTAwLFxuICAgIFwiNjAwXCI6ICRncmF5LTYwMCxcbiAgICBcIjcwMFwiOiAkZ3JheS03MDAsXG4gICAgXCI4MDBcIjogJGdyYXktODAwLFxuICAgIFwiOTAwXCI6ICRncmF5LTkwMFxuICApLFxuICAkZ3JheXNcbik7XG5cbiRibHVlOiAgICAjMDA3YmZmICFkZWZhdWx0O1xuJGluZGlnbzogICM2NjEwZjIgIWRlZmF1bHQ7XG4kcHVycGxlOiAgIzZmNDJjMSAhZGVmYXVsdDtcbiRwaW5rOiAgICAjZTgzZThjICFkZWZhdWx0O1xuJHJlZDogICAgICNkYzM1NDUgIWRlZmF1bHQ7XG4kb3JhbmdlOiAgI2ZkN2UxNCAhZGVmYXVsdDtcbiR5ZWxsb3c6ICAjZmZjMTA3ICFkZWZhdWx0O1xuJGdyZWVuOiAgICMyOGE3NDUgIWRlZmF1bHQ7XG4kdGVhbDogICAgIzIwYzk5NyAhZGVmYXVsdDtcbiRjeWFuOiAgICAjMTdhMmI4ICFkZWZhdWx0O1xuXG4kY29sb3JzOiAoKSAhZGVmYXVsdDtcbi8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzY3NzL2RvbGxhci12YXJpYWJsZS1kZWZhdWx0XG4kY29sb3JzOiBtYXAtbWVyZ2UoXG4gIChcbiAgICBcImJsdWVcIjogICAgICAgJGJsdWUsXG4gICAgXCJpbmRpZ29cIjogICAgICRpbmRpZ28sXG4gICAgXCJwdXJwbGVcIjogICAgICRwdXJwbGUsXG4gICAgXCJwaW5rXCI6ICAgICAgICRwaW5rLFxuICAgIFwicmVkXCI6ICAgICAgICAkcmVkLFxuICAgIFwib3JhbmdlXCI6ICAgICAkb3JhbmdlLFxuICAgIFwieWVsbG93XCI6ICAgICAkeWVsbG93LFxuICAgIFwiZ3JlZW5cIjogICAgICAkZ3JlZW4sXG4gICAgXCJ0ZWFsXCI6ICAgICAgICR0ZWFsLFxuICAgIFwiY3lhblwiOiAgICAgICAkY3lhbixcbiAgICBcIndoaXRlXCI6ICAgICAgJHdoaXRlLFxuICAgIFwiZ3JheVwiOiAgICAgICAkZ3JheS02MDAsXG4gICAgXCJncmF5LWRhcmtcIjogICRncmF5LTgwMFxuICApLFxuICAkY29sb3JzXG4pO1xuXG4kcHJpbWFyeTogICAgICAgJGJsdWUgIWRlZmF1bHQ7XG4kc2Vjb25kYXJ5OiAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuJHN1Y2Nlc3M6ICAgICAgICRncmVlbiAhZGVmYXVsdDtcbiRpbmZvOiAgICAgICAgICAkY3lhbiAhZGVmYXVsdDtcbiR3YXJuaW5nOiAgICAgICAkeWVsbG93ICFkZWZhdWx0O1xuJGRhbmdlcjogICAgICAgICRyZWQgIWRlZmF1bHQ7XG4kbGlnaHQ6ICAgICAgICAgJGdyYXktMTAwICFkZWZhdWx0O1xuJGRhcms6ICAgICAgICAgICRncmF5LTgwMCAhZGVmYXVsdDtcblxuJHRoZW1lLWNvbG9yczogKCkgIWRlZmF1bHQ7XG4vLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2Nzcy9kb2xsYXItdmFyaWFibGUtZGVmYXVsdFxuJHRoZW1lLWNvbG9yczogbWFwLW1lcmdlKFxuICAoXG4gICAgXCJwcmltYXJ5XCI6ICAgICRwcmltYXJ5LFxuICAgIFwic2Vjb25kYXJ5XCI6ICAkc2Vjb25kYXJ5LFxuICAgIFwic3VjY2Vzc1wiOiAgICAkc3VjY2VzcyxcbiAgICBcImluZm9cIjogICAgICAgJGluZm8sXG4gICAgXCJ3YXJuaW5nXCI6ICAgICR3YXJuaW5nLFxuICAgIFwiZGFuZ2VyXCI6ICAgICAkZGFuZ2VyLFxuICAgIFwibGlnaHRcIjogICAgICAkbGlnaHQsXG4gICAgXCJkYXJrXCI6ICAgICAgICRkYXJrXG4gICksXG4gICR0aGVtZS1jb2xvcnNcbik7XG5cbi8vIFNldCBhIHNwZWNpZmljIGp1bXAgcG9pbnQgZm9yIHJlcXVlc3RpbmcgY29sb3IganVtcHNcbiR0aGVtZS1jb2xvci1pbnRlcnZhbDogICAgICA4JSAhZGVmYXVsdDtcblxuLy8gVGhlIHlpcSBsaWdodG5lc3MgdmFsdWUgdGhhdCBkZXRlcm1pbmVzIHdoZW4gdGhlIGxpZ2h0bmVzcyBvZiBjb2xvciBjaGFuZ2VzIGZyb20gXCJkYXJrXCIgdG8gXCJsaWdodFwiLiBBY2NlcHRhYmxlIHZhbHVlcyBhcmUgYmV0d2VlbiAwIGFuZCAyNTUuXG4keWlxLWNvbnRyYXN0ZWQtdGhyZXNob2xkOiAgMTUwICFkZWZhdWx0O1xuXG4vLyBDdXN0b21pemUgdGhlIGxpZ2h0IGFuZCBkYXJrIHRleHQgY29sb3JzIGZvciB1c2UgaW4gb3VyIFlJUSBjb2xvciBjb250cmFzdCBmdW5jdGlvbi5cbiR5aXEtdGV4dC1kYXJrOiAgICAgICAgICAgICAkZ3JheS05MDAgIWRlZmF1bHQ7XG4keWlxLXRleHQtbGlnaHQ6ICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuXG5cbi8vIE9wdGlvbnNcbi8vXG4vLyBRdWlja2x5IG1vZGlmeSBnbG9iYWwgc3R5bGluZyBieSBlbmFibGluZyBvciBkaXNhYmxpbmcgb3B0aW9uYWwgZmVhdHVyZXMuXG5cbiRlbmFibGUtY2FyZXQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlICFkZWZhdWx0O1xuJGVuYWJsZS1yb3VuZGVkOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUgIWRlZmF1bHQ7XG4kZW5hYmxlLXNoYWRvd3M6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgIWRlZmF1bHQ7XG4kZW5hYmxlLWdyYWRpZW50czogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgIWRlZmF1bHQ7XG4kZW5hYmxlLXRyYW5zaXRpb25zOiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSAhZGVmYXVsdDtcbiRlbmFibGUtcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi1tZWRpYS1xdWVyeTogICB0cnVlICFkZWZhdWx0O1xuJGVuYWJsZS1ob3Zlci1tZWRpYS1xdWVyeTogICAgICAgICAgICAgICAgICAgIGZhbHNlICFkZWZhdWx0OyAvLyBEZXByZWNhdGVkLCBubyBsb25nZXIgYWZmZWN0cyBhbnkgY29tcGlsZWQgQ1NTXG4kZW5hYmxlLWdyaWQtY2xhc3NlczogICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSAhZGVmYXVsdDtcbiRlbmFibGUtcG9pbnRlci1jdXJzb3ItZm9yLWJ1dHRvbnM6ICAgICAgICAgICB0cnVlICFkZWZhdWx0O1xuJGVuYWJsZS1wcmludC1zdHlsZXM6ICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUgIWRlZmF1bHQ7XG4kZW5hYmxlLXJlc3BvbnNpdmUtZm9udC1zaXplczogICAgICAgICAgICAgICAgZmFsc2UgIWRlZmF1bHQ7XG4kZW5hYmxlLXZhbGlkYXRpb24taWNvbnM6ICAgICAgICAgICAgICAgICAgICAgdHJ1ZSAhZGVmYXVsdDtcbiRlbmFibGUtZGVwcmVjYXRpb24tbWVzc2FnZXM6ICAgICAgICAgICAgICAgICB0cnVlICFkZWZhdWx0O1xuXG5cbi8vIFNwYWNpbmdcbi8vXG4vLyBDb250cm9sIHRoZSBkZWZhdWx0IHN0eWxpbmcgb2YgbW9zdCBCb290c3RyYXAgZWxlbWVudHMgYnkgbW9kaWZ5aW5nIHRoZXNlXG4vLyB2YXJpYWJsZXMuIE1vc3RseSBmb2N1c2VkIG9uIHNwYWNpbmcuXG4vLyBZb3UgY2FuIGFkZCBtb3JlIGVudHJpZXMgdG8gdGhlICRzcGFjZXJzIG1hcCwgc2hvdWxkIHlvdSBuZWVkIG1vcmUgdmFyaWF0aW9uLlxuXG4kc3BhY2VyOiAxcmVtICFkZWZhdWx0O1xuJHNwYWNlcnM6ICgpICFkZWZhdWx0O1xuLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNjc3MvZG9sbGFyLXZhcmlhYmxlLWRlZmF1bHRcbiRzcGFjZXJzOiBtYXAtbWVyZ2UoXG4gIChcbiAgICAwOiAwLFxuICAgIDE6ICgkc3BhY2VyICogLjI1KSxcbiAgICAyOiAoJHNwYWNlciAqIC41KSxcbiAgICAzOiAkc3BhY2VyLFxuICAgIDQ6ICgkc3BhY2VyICogMS41KSxcbiAgICA1OiAoJHNwYWNlciAqIDMpXG4gICksXG4gICRzcGFjZXJzXG4pO1xuXG4vLyBUaGlzIHZhcmlhYmxlIGFmZmVjdHMgdGhlIGAuaC0qYCBhbmQgYC53LSpgIGNsYXNzZXMuXG4kc2l6ZXM6ICgpICFkZWZhdWx0O1xuLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNjc3MvZG9sbGFyLXZhcmlhYmxlLWRlZmF1bHRcbiRzaXplczogbWFwLW1lcmdlKFxuICAoXG4gICAgMjU6IDI1JSxcbiAgICA1MDogNTAlLFxuICAgIDc1OiA3NSUsXG4gICAgMTAwOiAxMDAlLFxuICAgIGF1dG86IGF1dG9cbiAgKSxcbiAgJHNpemVzXG4pO1xuXG5cbi8vIEJvZHlcbi8vXG4vLyBTZXR0aW5ncyBmb3IgdGhlIGA8Ym9keT5gIGVsZW1lbnQuXG5cbiRib2R5LWJnOiAgICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kYm9keS1jb2xvcjogICAgICAgICAgICAgICAgJGdyYXktOTAwICFkZWZhdWx0O1xuXG5cbi8vIExpbmtzXG4vL1xuLy8gU3R5bGUgYW5jaG9yIGVsZW1lbnRzLlxuXG4kbGluay1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVtZS1jb2xvcihcInByaW1hcnlcIikgIWRlZmF1bHQ7XG4kbGluay1kZWNvcmF0aW9uOiAgICAgICAgICAgICAgICAgICAgICAgICBub25lICFkZWZhdWx0O1xuJGxpbmstaG92ZXItY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICAgZGFya2VuKCRsaW5rLWNvbG9yLCAxNSUpICFkZWZhdWx0O1xuJGxpbmstaG92ZXItZGVjb3JhdGlvbjogICAgICAgICAgICAgICAgICAgdW5kZXJsaW5lICFkZWZhdWx0O1xuLy8gRGFya2VuIHBlcmNlbnRhZ2UgZm9yIGxpbmtzIHdpdGggYC50ZXh0LSpgIGNsYXNzIChlLmcuIGAudGV4dC1zdWNjZXNzYClcbiRlbXBoYXNpemVkLWxpbmstaG92ZXItZGFya2VuLXBlcmNlbnRhZ2U6IDE1JSAhZGVmYXVsdDtcblxuLy8gUGFyYWdyYXBoc1xuLy9cbi8vIFN0eWxlIHAgZWxlbWVudC5cblxuJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tOiAgIDFyZW0gIWRlZmF1bHQ7XG5cblxuLy8gR3JpZCBicmVha3BvaW50c1xuLy9cbi8vIERlZmluZSB0aGUgbWluaW11bSBkaW1lbnNpb25zIGF0IHdoaWNoIHlvdXIgbGF5b3V0IHdpbGwgY2hhbmdlLFxuLy8gYWRhcHRpbmcgdG8gZGlmZmVyZW50IHNjcmVlbiBzaXplcywgZm9yIHVzZSBpbiBtZWRpYSBxdWVyaWVzLlxuXG4kZ3JpZC1icmVha3BvaW50czogKFxuICB4czogMCxcbiAgc206IDU3NnB4LFxuICBtZDogNzY4cHgsXG4gIGxnOiA5OTJweCxcbiAgeGw6IDEyMDBweFxuKSAhZGVmYXVsdDtcblxuQGluY2x1ZGUgX2Fzc2VydC1hc2NlbmRpbmcoJGdyaWQtYnJlYWtwb2ludHMsIFwiJGdyaWQtYnJlYWtwb2ludHNcIik7XG5AaW5jbHVkZSBfYXNzZXJ0LXN0YXJ0cy1hdC16ZXJvKCRncmlkLWJyZWFrcG9pbnRzLCBcIiRncmlkLWJyZWFrcG9pbnRzXCIpO1xuXG5cbi8vIEdyaWQgY29udGFpbmVyc1xuLy9cbi8vIERlZmluZSB0aGUgbWF4aW11bSB3aWR0aCBvZiBgLmNvbnRhaW5lcmAgZm9yIGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMuXG5cbiRjb250YWluZXItbWF4LXdpZHRoczogKFxuICBzbTogNTQwcHgsXG4gIG1kOiA3MjBweCxcbiAgbGc6IDk2MHB4LFxuICB4bDogMTE0MHB4XG4pICFkZWZhdWx0O1xuXG5AaW5jbHVkZSBfYXNzZXJ0LWFzY2VuZGluZygkY29udGFpbmVyLW1heC13aWR0aHMsIFwiJGNvbnRhaW5lci1tYXgtd2lkdGhzXCIpO1xuXG5cbi8vIEdyaWQgY29sdW1uc1xuLy9cbi8vIFNldCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgYW5kIHNwZWNpZnkgdGhlIHdpZHRoIG9mIHRoZSBndXR0ZXJzLlxuXG4kZ3JpZC1jb2x1bW5zOiAgICAgICAgICAgICAgICAxMiAhZGVmYXVsdDtcbiRncmlkLWd1dHRlci13aWR0aDogICAgICAgICAgIDMwcHggIWRlZmF1bHQ7XG5cblxuLy8gQ29tcG9uZW50c1xuLy9cbi8vIERlZmluZSBjb21tb24gcGFkZGluZyBhbmQgYm9yZGVyIHJhZGl1cyBzaXplcyBhbmQgbW9yZS5cblxuJGxpbmUtaGVpZ2h0LWxnOiAgICAgICAgICAgICAgMS41ICFkZWZhdWx0O1xuJGxpbmUtaGVpZ2h0LXNtOiAgICAgICAgICAgICAgMS41ICFkZWZhdWx0O1xuXG4kYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICAgICAxcHggIWRlZmF1bHQ7XG4kYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAgICAkZ3JheS0zMDAgIWRlZmF1bHQ7XG5cbiRib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcbiRib3JkZXItcmFkaXVzLWxnOiAgICAgICAgICAgIC4zcmVtICFkZWZhdWx0O1xuJGJvcmRlci1yYWRpdXMtc206ICAgICAgICAgICAgLjJyZW0gIWRlZmF1bHQ7XG5cbiRyb3VuZGVkLXBpbGw6ICAgICAgICAgICAgICAgIDUwcmVtICFkZWZhdWx0O1xuXG4kYm94LXNoYWRvdy1zbTogICAgICAgICAgICAgICAwIC4xMjVyZW0gLjI1cmVtIHJnYmEoJGJsYWNrLCAuMDc1KSAhZGVmYXVsdDtcbiRib3gtc2hhZG93OiAgICAgICAgICAgICAgICAgIDAgLjVyZW0gMXJlbSByZ2JhKCRibGFjaywgLjE1KSAhZGVmYXVsdDtcbiRib3gtc2hhZG93LWxnOiAgICAgICAgICAgICAgIDAgMXJlbSAzcmVtIHJnYmEoJGJsYWNrLCAuMTc1KSAhZGVmYXVsdDtcblxuJGNvbXBvbmVudC1hY3RpdmUtY29sb3I6ICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJGNvbXBvbmVudC1hY3RpdmUtYmc6ICAgICAgICAgdGhlbWUtY29sb3IoXCJwcmltYXJ5XCIpICFkZWZhdWx0O1xuXG4kY2FyZXQtd2lkdGg6ICAgICAgICAgICAgICAgICAuM2VtICFkZWZhdWx0O1xuJGNhcmV0LXZlcnRpY2FsLWFsaWduOiAgICAgICAgJGNhcmV0LXdpZHRoICogLjg1ICFkZWZhdWx0O1xuJGNhcmV0LXNwYWNpbmc6ICAgICAgICAgICAgICAgJGNhcmV0LXdpZHRoICogLjg1ICFkZWZhdWx0O1xuXG4kdHJhbnNpdGlvbi1iYXNlOiAgICAgICAgICAgICBhbGwgLjJzIGVhc2UtaW4tb3V0ICFkZWZhdWx0O1xuJHRyYW5zaXRpb24tZmFkZTogICAgICAgICAgICAgb3BhY2l0eSAuMTVzIGxpbmVhciAhZGVmYXVsdDtcbiR0cmFuc2l0aW9uLWNvbGxhcHNlOiAgICAgICAgIGhlaWdodCAuMzVzIGVhc2UgIWRlZmF1bHQ7XG5cbiRlbWJlZC1yZXNwb25zaXZlLWFzcGVjdC1yYXRpb3M6ICgpICFkZWZhdWx0O1xuLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNjc3MvZG9sbGFyLXZhcmlhYmxlLWRlZmF1bHRcbiRlbWJlZC1yZXNwb25zaXZlLWFzcGVjdC1yYXRpb3M6IGpvaW4oXG4gIChcbiAgICAoMjEgOSksXG4gICAgKDE2IDkpLFxuICAgICg0IDMpLFxuICAgICgxIDEpLFxuICApLFxuICAkZW1iZWQtcmVzcG9uc2l2ZS1hc3BlY3QtcmF0aW9zXG4pO1xuXG4vLyBUeXBvZ3JhcGh5XG4vL1xuLy8gRm9udCwgbGluZS1oZWlnaHQsIGFuZCBjb2xvciBmb3IgYm9keSB0ZXh0LCBoZWFkaW5ncywgYW5kIG1vcmUuXG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIHZhbHVlLWtleXdvcmQtY2FzZVxuJGZvbnQtZmFtaWx5LXNhbnMtc2VyaWY6ICAgICAgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcIlNlZ29lIFVJXCIsIFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBBcmlhbCwgXCJOb3RvIFNhbnNcIiwgc2Fucy1zZXJpZiwgXCJBcHBsZSBDb2xvciBFbW9qaVwiLCBcIlNlZ29lIFVJIEVtb2ppXCIsIFwiU2Vnb2UgVUkgU3ltYm9sXCIsIFwiTm90byBDb2xvciBFbW9qaVwiICFkZWZhdWx0O1xuJGZvbnQtZmFtaWx5LW1vbm9zcGFjZTogICAgICAgU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCBcIkxpYmVyYXRpb24gTW9ub1wiLCBcIkNvdXJpZXIgTmV3XCIsIG1vbm9zcGFjZSAhZGVmYXVsdDtcbiRmb250LWZhbWlseS1iYXNlOiAgICAgICAgICAgICRmb250LWZhbWlseS1zYW5zLXNlcmlmICFkZWZhdWx0O1xuLy8gc3R5bGVsaW50LWVuYWJsZSB2YWx1ZS1rZXl3b3JkLWNhc2VcblxuJGZvbnQtc2l6ZS1iYXNlOiAgICAgICAgICAgICAgMXJlbSAhZGVmYXVsdDsgLy8gQXNzdW1lcyB0aGUgYnJvd3NlciBkZWZhdWx0LCB0eXBpY2FsbHkgYDE2cHhgXG4kZm9udC1zaXplLWxnOiAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAxLjI1ICFkZWZhdWx0O1xuJGZvbnQtc2l6ZS1zbTogICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICogLjg3NSAhZGVmYXVsdDtcblxuJGZvbnQtd2VpZ2h0LWxpZ2h0ZXI6ICAgICAgICAgbGlnaHRlciAhZGVmYXVsdDtcbiRmb250LXdlaWdodC1saWdodDogICAgICAgICAgIDMwMCAhZGVmYXVsdDtcbiRmb250LXdlaWdodC1ub3JtYWw6ICAgICAgICAgIDQwMCAhZGVmYXVsdDtcbiRmb250LXdlaWdodC1ib2xkOiAgICAgICAgICAgIDcwMCAhZGVmYXVsdDtcbiRmb250LXdlaWdodC1ib2xkZXI6ICAgICAgICAgIGJvbGRlciAhZGVmYXVsdDtcblxuJGZvbnQtd2VpZ2h0LWJhc2U6ICAgICAgICAgICAgJGZvbnQtd2VpZ2h0LW5vcm1hbCAhZGVmYXVsdDtcbiRsaW5lLWhlaWdodC1iYXNlOiAgICAgICAgICAgIDEuNSAhZGVmYXVsdDtcblxuJGgxLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICogMi41ICFkZWZhdWx0O1xuJGgyLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICogMiAhZGVmYXVsdDtcbiRoMy1mb250LXNpemU6ICAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIDEuNzUgIWRlZmF1bHQ7XG4kaDQtZm9udC1zaXplOiAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAxLjUgIWRlZmF1bHQ7XG4kaDUtZm9udC1zaXplOiAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAxLjI1ICFkZWZhdWx0O1xuJGg2LWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICFkZWZhdWx0O1xuXG4kaGVhZGluZ3MtbWFyZ2luLWJvdHRvbTogICAgICAkc3BhY2VyIC8gMiAhZGVmYXVsdDtcbiRoZWFkaW5ncy1mb250LWZhbWlseTogICAgICAgIG51bGwgIWRlZmF1bHQ7XG4kaGVhZGluZ3MtZm9udC13ZWlnaHQ6ICAgICAgICA1MDAgIWRlZmF1bHQ7XG4kaGVhZGluZ3MtbGluZS1oZWlnaHQ6ICAgICAgICAxLjIgIWRlZmF1bHQ7XG4kaGVhZGluZ3MtY29sb3I6ICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuXG4kZGlzcGxheTEtc2l6ZTogICAgICAgICAgICAgICA2cmVtICFkZWZhdWx0O1xuJGRpc3BsYXkyLXNpemU6ICAgICAgICAgICAgICAgNS41cmVtICFkZWZhdWx0O1xuJGRpc3BsYXkzLXNpemU6ICAgICAgICAgICAgICAgNC41cmVtICFkZWZhdWx0O1xuJGRpc3BsYXk0LXNpemU6ICAgICAgICAgICAgICAgMy41cmVtICFkZWZhdWx0O1xuXG4kZGlzcGxheTEtd2VpZ2h0OiAgICAgICAgICAgICAzMDAgIWRlZmF1bHQ7XG4kZGlzcGxheTItd2VpZ2h0OiAgICAgICAgICAgICAzMDAgIWRlZmF1bHQ7XG4kZGlzcGxheTMtd2VpZ2h0OiAgICAgICAgICAgICAzMDAgIWRlZmF1bHQ7XG4kZGlzcGxheTQtd2VpZ2h0OiAgICAgICAgICAgICAzMDAgIWRlZmF1bHQ7XG4kZGlzcGxheS1saW5lLWhlaWdodDogICAgICAgICAkaGVhZGluZ3MtbGluZS1oZWlnaHQgIWRlZmF1bHQ7XG5cbiRsZWFkLWZvbnQtc2l6ZTogICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIDEuMjUgIWRlZmF1bHQ7XG4kbGVhZC1mb250LXdlaWdodDogICAgICAgICAgICAzMDAgIWRlZmF1bHQ7XG5cbiRzbWFsbC1mb250LXNpemU6ICAgICAgICAgICAgIDgwJSAhZGVmYXVsdDtcblxuJHRleHQtbXV0ZWQ6ICAgICAgICAgICAgICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuXG4kYmxvY2txdW90ZS1zbWFsbC1jb2xvcjogICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG4kYmxvY2txdW90ZS1zbWFsbC1mb250LXNpemU6ICAkc21hbGwtZm9udC1zaXplICFkZWZhdWx0O1xuJGJsb2NrcXVvdGUtZm9udC1zaXplOiAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICogMS4yNSAhZGVmYXVsdDtcblxuJGhyLWJvcmRlci1jb2xvcjogICAgICAgICAgICAgcmdiYSgkYmxhY2ssIC4xKSAhZGVmYXVsdDtcbiRoci1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XG5cbiRtYXJrLXBhZGRpbmc6ICAgICAgICAgICAgICAgIC4yZW0gIWRlZmF1bHQ7XG5cbiRkdC1mb250LXdlaWdodDogICAgICAgICAgICAgICRmb250LXdlaWdodC1ib2xkICFkZWZhdWx0O1xuXG4ka2JkLWJveC1zaGFkb3c6ICAgICAgICAgICAgICBpbnNldCAwIC0uMXJlbSAwIHJnYmEoJGJsYWNrLCAuMjUpICFkZWZhdWx0O1xuJG5lc3RlZC1rYmQtZm9udC13ZWlnaHQ6ICAgICAgJGZvbnQtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XG5cbiRsaXN0LWlubGluZS1wYWRkaW5nOiAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuXG4kbWFyay1iZzogICAgICAgICAgICAgICAgICAgICAjZmNmOGUzICFkZWZhdWx0O1xuXG4kaHItbWFyZ2luLXk6ICAgICAgICAgICAgICAgICAkc3BhY2VyICFkZWZhdWx0O1xuXG5cbi8vIFRhYmxlc1xuLy9cbi8vIEN1c3RvbWl6ZXMgdGhlIGAudGFibGVgIGNvbXBvbmVudCB3aXRoIGJhc2ljIHZhbHVlcywgZWFjaCB1c2VkIGFjcm9zcyBhbGwgdGFibGUgdmFyaWF0aW9ucy5cblxuJHRhYmxlLWNlbGwtcGFkZGluZzogICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJHRhYmxlLWNlbGwtcGFkZGluZy1zbTogICAgICAgLjNyZW0gIWRlZmF1bHQ7XG5cbiR0YWJsZS1jb2xvcjogICAgICAgICAgICAgICAgICRib2R5LWNvbG9yICFkZWZhdWx0O1xuJHRhYmxlLWJnOiAgICAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbiR0YWJsZS1hY2NlbnQtYmc6ICAgICAgICAgICAgIHJnYmEoJGJsYWNrLCAuMDUpICFkZWZhdWx0O1xuJHRhYmxlLWhvdmVyLWNvbG9yOiAgICAgICAgICAgJHRhYmxlLWNvbG9yICFkZWZhdWx0O1xuJHRhYmxlLWhvdmVyLWJnOiAgICAgICAgICAgICAgcmdiYSgkYmxhY2ssIC4wNzUpICFkZWZhdWx0O1xuJHRhYmxlLWFjdGl2ZS1iZzogICAgICAgICAgICAgJHRhYmxlLWhvdmVyLWJnICFkZWZhdWx0O1xuXG4kdGFibGUtYm9yZGVyLXdpZHRoOiAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJHRhYmxlLWJvcmRlci1jb2xvcjogICAgICAgICAgJGJvcmRlci1jb2xvciAhZGVmYXVsdDtcblxuJHRhYmxlLWhlYWQtYmc6ICAgICAgICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuJHRhYmxlLWhlYWQtY29sb3I6ICAgICAgICAgICAgJGdyYXktNzAwICFkZWZhdWx0O1xuXG4kdGFibGUtZGFyay1jb2xvcjogICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kdGFibGUtZGFyay1iZzogICAgICAgICAgICAgICAkZ3JheS04MDAgIWRlZmF1bHQ7XG4kdGFibGUtZGFyay1hY2NlbnQtYmc6ICAgICAgICByZ2JhKCR3aGl0ZSwgLjA1KSAhZGVmYXVsdDtcbiR0YWJsZS1kYXJrLWhvdmVyLWNvbG9yOiAgICAgICR0YWJsZS1kYXJrLWNvbG9yICFkZWZhdWx0O1xuJHRhYmxlLWRhcmstaG92ZXItYmc6ICAgICAgICAgcmdiYSgkd2hpdGUsIC4wNzUpICFkZWZhdWx0O1xuJHRhYmxlLWRhcmstYm9yZGVyLWNvbG9yOiAgICAgbGlnaHRlbigkdGFibGUtZGFyay1iZywgNy41JSkgIWRlZmF1bHQ7XG4kdGFibGUtZGFyay1jb2xvcjogICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG5cbiR0YWJsZS1zdHJpcGVkLW9yZGVyOiAgICAgICAgIG9kZCAhZGVmYXVsdDtcblxuJHRhYmxlLWNhcHRpb24tY29sb3I6ICAgICAgICAgJHRleHQtbXV0ZWQgIWRlZmF1bHQ7XG5cbiR0YWJsZS1iZy1sZXZlbDogICAgICAgICAgICAgIC05ICFkZWZhdWx0O1xuJHRhYmxlLWJvcmRlci1sZXZlbDogICAgICAgICAgLTYgIWRlZmF1bHQ7XG5cblxuLy8gQnV0dG9ucyArIEZvcm1zXG4vL1xuLy8gU2hhcmVkIHZhcmlhYmxlcyB0aGF0IGFyZSByZWFzc2lnbmVkIHRvIGAkaW5wdXQtYCBhbmQgYCRidG4tYCBzcGVjaWZpYyB2YXJpYWJsZXMuXG5cbiRpbnB1dC1idG4tcGFkZGluZy15OiAgICAgICAgIC4zNzVyZW0gIWRlZmF1bHQ7XG4kaW5wdXQtYnRuLXBhZGRpbmcteDogICAgICAgICAuNzVyZW0gIWRlZmF1bHQ7XG4kaW5wdXQtYnRuLWZvbnQtZmFtaWx5OiAgICAgICBudWxsICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1mb250LXNpemU6ICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1saW5lLWhlaWdodDogICAgICAgJGxpbmUtaGVpZ2h0LWJhc2UgIWRlZmF1bHQ7XG5cbiRpbnB1dC1idG4tZm9jdXMtd2lkdGg6ICAgICAgIC4ycmVtICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1mb2N1cy1jb2xvcjogICAgICAgcmdiYSgkY29tcG9uZW50LWFjdGl2ZS1iZywgLjI1KSAhZGVmYXVsdDtcbiRpbnB1dC1idG4tZm9jdXMtYm94LXNoYWRvdzogIDAgMCAwICRpbnB1dC1idG4tZm9jdXMtd2lkdGggJGlucHV0LWJ0bi1mb2N1cy1jb2xvciAhZGVmYXVsdDtcblxuJGlucHV0LWJ0bi1wYWRkaW5nLXktc206ICAgICAgLjI1cmVtICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1wYWRkaW5nLXgtc206ICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kaW5wdXQtYnRuLWZvbnQtc2l6ZS1zbTogICAgICAkZm9udC1zaXplLXNtICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1saW5lLWhlaWdodC1zbTogICAgJGxpbmUtaGVpZ2h0LXNtICFkZWZhdWx0O1xuXG4kaW5wdXQtYnRuLXBhZGRpbmcteS1sZzogICAgICAuNXJlbSAhZGVmYXVsdDtcbiRpbnB1dC1idG4tcGFkZGluZy14LWxnOiAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kaW5wdXQtYnRuLWZvbnQtc2l6ZS1sZzogICAgICAkZm9udC1zaXplLWxnICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1saW5lLWhlaWdodC1sZzogICAgJGxpbmUtaGVpZ2h0LWxnICFkZWZhdWx0O1xuXG4kaW5wdXQtYnRuLWJvcmRlci13aWR0aDogICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuXG5cbi8vIEJ1dHRvbnNcbi8vXG4vLyBGb3IgZWFjaCBvZiBCb290c3RyYXAncyBidXR0b25zLCBkZWZpbmUgdGV4dCwgYmFja2dyb3VuZCwgYW5kIGJvcmRlciBjb2xvci5cblxuJGJ0bi1wYWRkaW5nLXk6ICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXkgIWRlZmF1bHQ7XG4kYnRuLXBhZGRpbmcteDogICAgICAgICAgICAgICAkaW5wdXQtYnRuLXBhZGRpbmcteCAhZGVmYXVsdDtcbiRidG4tZm9udC1mYW1pbHk6ICAgICAgICAgICAgICRpbnB1dC1idG4tZm9udC1mYW1pbHkgIWRlZmF1bHQ7XG4kYnRuLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAkaW5wdXQtYnRuLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRidG4tbGluZS1oZWlnaHQ6ICAgICAgICAgICAgICRpbnB1dC1idG4tbGluZS1oZWlnaHQgIWRlZmF1bHQ7XG5cbiRidG4tcGFkZGluZy15LXNtOiAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy15LXNtICFkZWZhdWx0O1xuJGJ0bi1wYWRkaW5nLXgtc206ICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXgtc20gIWRlZmF1bHQ7XG4kYnRuLWZvbnQtc2l6ZS1zbTogICAgICAgICAgICAkaW5wdXQtYnRuLWZvbnQtc2l6ZS1zbSAhZGVmYXVsdDtcbiRidG4tbGluZS1oZWlnaHQtc206ICAgICAgICAgICRpbnB1dC1idG4tbGluZS1oZWlnaHQtc20gIWRlZmF1bHQ7XG5cbiRidG4tcGFkZGluZy15LWxnOiAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy15LWxnICFkZWZhdWx0O1xuJGJ0bi1wYWRkaW5nLXgtbGc6ICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXgtbGcgIWRlZmF1bHQ7XG4kYnRuLWZvbnQtc2l6ZS1sZzogICAgICAgICAgICAkaW5wdXQtYnRuLWZvbnQtc2l6ZS1sZyAhZGVmYXVsdDtcbiRidG4tbGluZS1oZWlnaHQtbGc6ICAgICAgICAgICRpbnB1dC1idG4tbGluZS1oZWlnaHQtbGcgIWRlZmF1bHQ7XG5cbiRidG4tYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICRpbnB1dC1idG4tYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuXG4kYnRuLWZvbnQtd2VpZ2h0OiAgICAgICAgICAgICAkZm9udC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xuJGJ0bi1ib3gtc2hhZG93OiAgICAgICAgICAgICAgaW5zZXQgMCAxcHggMCByZ2JhKCR3aGl0ZSwgLjE1KSwgMCAxcHggMXB4IHJnYmEoJGJsYWNrLCAuMDc1KSAhZGVmYXVsdDtcbiRidG4tZm9jdXMtd2lkdGg6ICAgICAgICAgICAgICRpbnB1dC1idG4tZm9jdXMtd2lkdGggIWRlZmF1bHQ7XG4kYnRuLWZvY3VzLWJveC1zaGFkb3c6ICAgICAgICAkaW5wdXQtYnRuLWZvY3VzLWJveC1zaGFkb3cgIWRlZmF1bHQ7XG4kYnRuLWRpc2FibGVkLW9wYWNpdHk6ICAgICAgICAuNjUgIWRlZmF1bHQ7XG4kYnRuLWFjdGl2ZS1ib3gtc2hhZG93OiAgICAgICBpbnNldCAwIDNweCA1cHggcmdiYSgkYmxhY2ssIC4xMjUpICFkZWZhdWx0O1xuXG4kYnRuLWxpbmstZGlzYWJsZWQtY29sb3I6ICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG5cbiRidG4tYmxvY2stc3BhY2luZy15OiAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuXG4vLyBBbGxvd3MgZm9yIGN1c3RvbWl6aW5nIGJ1dHRvbiByYWRpdXMgaW5kZXBlbmRlbnRseSBmcm9tIGdsb2JhbCBib3JkZXIgcmFkaXVzXG4kYnRuLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbiRidG4tYm9yZGVyLXJhZGl1cy1sZzogICAgICAgICRib3JkZXItcmFkaXVzLWxnICFkZWZhdWx0O1xuJGJ0bi1ib3JkZXItcmFkaXVzLXNtOiAgICAgICAgJGJvcmRlci1yYWRpdXMtc20gIWRlZmF1bHQ7XG5cbiRidG4tdHJhbnNpdGlvbjogICAgICAgICAgICAgIGNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dCAhZGVmYXVsdDtcblxuXG4vLyBGb3Jtc1xuXG4kbGFiZWwtbWFyZ2luLWJvdHRvbTogICAgICAgICAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG5cbiRpbnB1dC1wYWRkaW5nLXk6ICAgICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLXBhZGRpbmcteSAhZGVmYXVsdDtcbiRpbnB1dC1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLXBhZGRpbmcteCAhZGVmYXVsdDtcbiRpbnB1dC1mb250LWZhbWlseTogICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLWZvbnQtZmFtaWx5ICFkZWZhdWx0O1xuJGlucHV0LWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tZm9udC1zaXplICFkZWZhdWx0O1xuJGlucHV0LWZvbnQtd2VpZ2h0OiAgICAgICAgICAgICAgICAgICAgICRmb250LXdlaWdodC1iYXNlICFkZWZhdWx0O1xuJGlucHV0LWxpbmUtaGVpZ2h0OiAgICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tbGluZS1oZWlnaHQgIWRlZmF1bHQ7XG5cbiRpbnB1dC1wYWRkaW5nLXktc206ICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLXBhZGRpbmcteS1zbSAhZGVmYXVsdDtcbiRpbnB1dC1wYWRkaW5nLXgtc206ICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLXBhZGRpbmcteC1zbSAhZGVmYXVsdDtcbiRpbnB1dC1mb250LXNpemUtc206ICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLWZvbnQtc2l6ZS1zbSAhZGVmYXVsdDtcbiRpbnB1dC1saW5lLWhlaWdodC1zbTogICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLWxpbmUtaGVpZ2h0LXNtICFkZWZhdWx0O1xuXG4kaW5wdXQtcGFkZGluZy15LWxnOiAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXktbGcgIWRlZmF1bHQ7XG4kaW5wdXQtcGFkZGluZy14LWxnOiAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXgtbGcgIWRlZmF1bHQ7XG4kaW5wdXQtZm9udC1zaXplLWxnOiAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1mb250LXNpemUtbGcgIWRlZmF1bHQ7XG4kaW5wdXQtbGluZS1oZWlnaHQtbGc6ICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1saW5lLWhlaWdodC1sZyAhZGVmYXVsdDtcblxuJGlucHV0LWJnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRpbnB1dC1kaXNhYmxlZC1iZzogICAgICAgICAgICAgICAgICAgICAkZ3JheS0yMDAgIWRlZmF1bHQ7XG5cbiRpbnB1dC1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAkZ3JheS03MDAgIWRlZmF1bHQ7XG4kaW5wdXQtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgJGdyYXktNDAwICFkZWZhdWx0O1xuJGlucHV0LWJvcmRlci13aWR0aDogICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJGlucHV0LWJveC1zaGFkb3c6ICAgICAgICAgICAgICAgICAgICAgIGluc2V0IDAgMXB4IDFweCByZ2JhKCRibGFjaywgLjA3NSkgIWRlZmF1bHQ7XG5cbiRpbnB1dC1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbiRpbnB1dC1ib3JkZXItcmFkaXVzLWxnOiAgICAgICAgICAgICAgICAkYm9yZGVyLXJhZGl1cy1sZyAhZGVmYXVsdDtcbiRpbnB1dC1ib3JkZXItcmFkaXVzLXNtOiAgICAgICAgICAgICAgICAkYm9yZGVyLXJhZGl1cy1zbSAhZGVmYXVsdDtcblxuJGlucHV0LWZvY3VzLWJnOiAgICAgICAgICAgICAgICAgICAgICAgICRpbnB1dC1iZyAhZGVmYXVsdDtcbiRpbnB1dC1mb2N1cy1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICBsaWdodGVuKCRjb21wb25lbnQtYWN0aXZlLWJnLCAyNSUpICFkZWZhdWx0O1xuJGlucHV0LWZvY3VzLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICRpbnB1dC1jb2xvciAhZGVmYXVsdDtcbiRpbnB1dC1mb2N1cy13aWR0aDogICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLWZvY3VzLXdpZHRoICFkZWZhdWx0O1xuJGlucHV0LWZvY3VzLWJveC1zaGFkb3c6ICAgICAgICAgICAgICAgICRpbnB1dC1idG4tZm9jdXMtYm94LXNoYWRvdyAhZGVmYXVsdDtcblxuJGlucHV0LXBsYWNlaG9sZGVyLWNvbG9yOiAgICAgICAgICAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcbiRpbnB1dC1wbGFpbnRleHQtY29sb3I6ICAgICAgICAgICAgICAgICAkYm9keS1jb2xvciAhZGVmYXVsdDtcblxuJGlucHV0LWhlaWdodC1ib3JkZXI6ICAgICAgICAgICAgICAgICAgICRpbnB1dC1ib3JkZXItd2lkdGggKiAyICFkZWZhdWx0O1xuXG4kaW5wdXQtaGVpZ2h0LWlubmVyOiAgICAgICAgICAgICAgICAgICAgY2FsYygjeyRpbnB1dC1saW5lLWhlaWdodCAqIDFlbX0gKyAjeyRpbnB1dC1wYWRkaW5nLXkgKiAyfSkgIWRlZmF1bHQ7XG4kaW5wdXQtaGVpZ2h0LWlubmVyLWhhbGY6ICAgICAgICAgICAgICAgY2FsYygjeyRpbnB1dC1saW5lLWhlaWdodCAqIC41ZW19ICsgI3skaW5wdXQtcGFkZGluZy15fSkgIWRlZmF1bHQ7XG4kaW5wdXQtaGVpZ2h0LWlubmVyLXF1YXJ0ZXI6ICAgICAgICAgICAgY2FsYygjeyRpbnB1dC1saW5lLWhlaWdodCAqIC4yNWVtfSArICN7JGlucHV0LXBhZGRpbmcteSAvIDJ9KSAhZGVmYXVsdDtcblxuJGlucHV0LWhlaWdodDogICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGMoI3skaW5wdXQtbGluZS1oZWlnaHQgKiAxZW19ICsgI3skaW5wdXQtcGFkZGluZy15ICogMn0gKyAjeyRpbnB1dC1oZWlnaHQtYm9yZGVyfSkgIWRlZmF1bHQ7XG4kaW5wdXQtaGVpZ2h0LXNtOiAgICAgICAgICAgICAgICAgICAgICAgY2FsYygjeyRpbnB1dC1saW5lLWhlaWdodC1zbSAqIDFlbX0gKyAjeyRpbnB1dC1idG4tcGFkZGluZy15LXNtICogMn0gKyAjeyRpbnB1dC1oZWlnaHQtYm9yZGVyfSkgIWRlZmF1bHQ7XG4kaW5wdXQtaGVpZ2h0LWxnOiAgICAgICAgICAgICAgICAgICAgICAgY2FsYygjeyRpbnB1dC1saW5lLWhlaWdodC1sZyAqIDFlbX0gKyAjeyRpbnB1dC1idG4tcGFkZGluZy15LWxnICogMn0gKyAjeyRpbnB1dC1oZWlnaHQtYm9yZGVyfSkgIWRlZmF1bHQ7XG5cbiRpbnB1dC10cmFuc2l0aW9uOiAgICAgICAgICAgICAgICAgICAgICBib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0ICFkZWZhdWx0O1xuXG4kZm9ybS10ZXh0LW1hcmdpbi10b3A6ICAgICAgICAgICAgICAgICAgLjI1cmVtICFkZWZhdWx0O1xuXG4kZm9ybS1jaGVjay1pbnB1dC1ndXR0ZXI6ICAgICAgICAgICAgICAgMS4yNXJlbSAhZGVmYXVsdDtcbiRmb3JtLWNoZWNrLWlucHV0LW1hcmdpbi15OiAgICAgICAgICAgICAuM3JlbSAhZGVmYXVsdDtcbiRmb3JtLWNoZWNrLWlucHV0LW1hcmdpbi14OiAgICAgICAgICAgICAuMjVyZW0gIWRlZmF1bHQ7XG5cbiRmb3JtLWNoZWNrLWlubGluZS1tYXJnaW4teDogICAgICAgICAgICAuNzVyZW0gIWRlZmF1bHQ7XG4kZm9ybS1jaGVjay1pbmxpbmUtaW5wdXQtbWFyZ2luLXg6ICAgICAgLjMxMjVyZW0gIWRlZmF1bHQ7XG5cbiRmb3JtLWdyaWQtZ3V0dGVyLXdpZHRoOiAgICAgICAgICAgICAgICAxMHB4ICFkZWZhdWx0O1xuJGZvcm0tZ3JvdXAtbWFyZ2luLWJvdHRvbTogICAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG5cbiRpbnB1dC1ncm91cC1hZGRvbi1jb2xvcjogICAgICAgICAgICAgICAkaW5wdXQtY29sb3IgIWRlZmF1bHQ7XG4kaW5wdXQtZ3JvdXAtYWRkb24tYmc6ICAgICAgICAgICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuJGlucHV0LWdyb3VwLWFkZG9uLWJvcmRlci1jb2xvcjogICAgICAgICRpbnB1dC1ib3JkZXItY29sb3IgIWRlZmF1bHQ7XG5cbiRjdXN0b20tZm9ybXMtdHJhbnNpdGlvbjogICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XG5cbiRjdXN0b20tY29udHJvbC1ndXR0ZXI6ICAgICAgICAgICAgICAgICAuNXJlbSAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1zcGFjZXIteDogICAgICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuXG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLXNpemU6ICAgICAgICAgMXJlbSAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYmc6ICAgICAgICAgICAkaW5wdXQtYmcgIWRlZmF1bHQ7XG5cbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYmctc2l6ZTogICAgICA1MCUgNTAlICFkZWZhdWx0O1xuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1ib3gtc2hhZG93OiAgICRpbnB1dC1ib3gtc2hhZG93ICFkZWZhdWx0O1xuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1ib3JkZXItY29sb3I6ICRncmF5LTUwMCAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYm9yZGVyLXdpZHRoOiAkaW5wdXQtYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuXG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWRpc2FibGVkLWJnOiAgICAgICAgICAkaW5wdXQtZGlzYWJsZWQtYmcgIWRlZmF1bHQ7XG4kY3VzdG9tLWNvbnRyb2wtbGFiZWwtZGlzYWJsZWQtY29sb3I6ICAgICAgICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG5cbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1jb2xvcjogICAgICAgICRjb21wb25lbnQtYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWJnOiAgICAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtYmcgIWRlZmF1bHQ7XG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWNoZWNrZWQtZGlzYWJsZWQtYmc6ICByZ2JhKHRoZW1lLWNvbG9yKFwicHJpbWFyeVwiKSwgLjUpICFkZWZhdWx0O1xuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWJveC1zaGFkb3c6ICAgbm9uZSAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1ib3JkZXItY29sb3I6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1iZyAhZGVmYXVsdDtcblxuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1mb2N1cy1ib3gtc2hhZG93OiAgICAgJGlucHV0LWZvY3VzLWJveC1zaGFkb3cgIWRlZmF1bHQ7XG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWZvY3VzLWJvcmRlci1jb2xvcjogICAkaW5wdXQtZm9jdXMtYm9yZGVyLWNvbG9yICFkZWZhdWx0O1xuXG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWFjdGl2ZS1jb2xvcjogICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYWN0aXZlLWJnOiAgICAgICAgICAgIGxpZ2h0ZW4oJGNvbXBvbmVudC1hY3RpdmUtYmcsIDM1JSkgIWRlZmF1bHQ7XG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWFjdGl2ZS1ib3gtc2hhZG93OiAgICBub25lICFkZWZhdWx0O1xuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1hY3RpdmUtYm9yZGVyLWNvbG9yOiAgJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1hY3RpdmUtYmcgIWRlZmF1bHQ7XG5cbiRjdXN0b20tY2hlY2tib3gtaW5kaWNhdG9yLWJvcmRlci1yYWRpdXM6ICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJGN1c3RvbS1jaGVja2JveC1pbmRpY2F0b3ItaWNvbi1jaGVja2VkOiAgICAgICAgc3RyLXJlcGxhY2UodXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA4IDgnJTNlJTNjcGF0aCBmaWxsPScjeyRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1jb2xvcn0nIGQ9J002LjU2NC43NWwtMy41OSAzLjYxMi0xLjUzOC0xLjU1TDAgNC4yNiAyLjk3NCA3LjI1IDggMi4xOTN6Jy8lM2UlM2Mvc3ZnJTNlXCIpLCBcIiNcIiwgXCIlMjNcIikgIWRlZmF1bHQ7XG5cbiRjdXN0b20tY2hlY2tib3gtaW5kaWNhdG9yLWluZGV0ZXJtaW5hdGUtYmc6ICAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1iZyAhZGVmYXVsdDtcbiRjdXN0b20tY2hlY2tib3gtaW5kaWNhdG9yLWluZGV0ZXJtaW5hdGUtY29sb3I6ICAgICAgICAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWNoZWNrZWQtY29sb3IgIWRlZmF1bHQ7XG4kY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1pY29uLWluZGV0ZXJtaW5hdGU6ICAgICAgICAgc3RyLXJlcGxhY2UodXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA0IDQnJTNlJTNjcGF0aCBzdHJva2U9JyN7JGN1c3RvbS1jaGVja2JveC1pbmRpY2F0b3ItaW5kZXRlcm1pbmF0ZS1jb2xvcn0nIGQ9J00wIDJoNCcvJTNlJTNjL3N2ZyUzZVwiKSwgXCIjXCIsIFwiJTIzXCIpICFkZWZhdWx0O1xuJGN1c3RvbS1jaGVja2JveC1pbmRpY2F0b3ItaW5kZXRlcm1pbmF0ZS1ib3gtc2hhZG93OiAgIG5vbmUgIWRlZmF1bHQ7XG4kY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1pbmRldGVybWluYXRlLWJvcmRlci1jb2xvcjogJGN1c3RvbS1jaGVja2JveC1pbmRpY2F0b3ItaW5kZXRlcm1pbmF0ZS1iZyAhZGVmYXVsdDtcblxuJGN1c3RvbS1yYWRpby1pbmRpY2F0b3ItYm9yZGVyLXJhZGl1czogICAgICAgICAgNTAlICFkZWZhdWx0O1xuJGN1c3RvbS1yYWRpby1pbmRpY2F0b3ItaWNvbi1jaGVja2VkOiAgICAgICAgICAgc3RyLXJlcGxhY2UodXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9Jy00IC00IDggOCclM2UlM2NjaXJjbGUgcj0nMycgZmlsbD0nI3skY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWNoZWNrZWQtY29sb3J9Jy8lM2UlM2Mvc3ZnJTNlXCIpLCBcIiNcIiwgXCIlMjNcIikgIWRlZmF1bHQ7XG5cbiRjdXN0b20tc3dpdGNoLXdpZHRoOiAgICAgICAgICAgICAgICAgICAgICAgICAgICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3Itc2l6ZSAqIDEuNzUgIWRlZmF1bHQ7XG4kY3VzdG9tLXN3aXRjaC1pbmRpY2F0b3ItYm9yZGVyLXJhZGl1czogICAgICAgICAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLXNpemUgLyAyICFkZWZhdWx0O1xuJGN1c3RvbS1zd2l0Y2gtaW5kaWNhdG9yLXNpemU6ICAgICAgICAgICAgICAgICAgY2FsYygjeyRjdXN0b20tY29udHJvbC1pbmRpY2F0b3Itc2l6ZX0gLSAjeyRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYm9yZGVyLXdpZHRoICogNH0pICFkZWZhdWx0O1xuXG4kY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXk6ICAgICAgICAgICAkaW5wdXQtcGFkZGluZy15ICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtcGFkZGluZy14OiAgICAgICAgICAgJGlucHV0LXBhZGRpbmcteCAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWZvbnQtZmFtaWx5OiAgICAgICAgICRpbnB1dC1mb250LWZhbWlseSAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWZvbnQtc2l6ZTogICAgICAgICAgICRpbnB1dC1mb250LXNpemUgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1oZWlnaHQ6ICAgICAgICAgICAgICAkaW5wdXQtaGVpZ2h0ICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtaW5kaWNhdG9yLXBhZGRpbmc6ICAgMXJlbSAhZGVmYXVsdDsgLy8gRXh0cmEgcGFkZGluZyB0byBhY2NvdW50IGZvciB0aGUgcHJlc2VuY2Ugb2YgdGhlIGJhY2tncm91bmQtaW1hZ2UgYmFzZWQgaW5kaWNhdG9yXG4kY3VzdG9tLXNlbGVjdC1mb250LXdlaWdodDogICAgICAgICAkaW5wdXQtZm9udC13ZWlnaHQgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1saW5lLWhlaWdodDogICAgICAgICAkaW5wdXQtbGluZS1oZWlnaHQgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1jb2xvcjogICAgICAgICAgICAgICAkaW5wdXQtY29sb3IgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1kaXNhYmxlZC1jb2xvcjogICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1iZzogICAgICAgICAgICAgICAgICAkaW5wdXQtYmcgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1kaXNhYmxlZC1iZzogICAgICAgICAkZ3JheS0yMDAgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1iZy1zaXplOiAgICAgICAgICAgICA4cHggMTBweCAhZGVmYXVsdDsgLy8gSW4gcGl4ZWxzIGJlY2F1c2UgaW1hZ2UgZGltZW5zaW9uc1xuJGN1c3RvbS1zZWxlY3QtaW5kaWNhdG9yLWNvbG9yOiAgICAgJGdyYXktODAwICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtaW5kaWNhdG9yOiAgICAgICAgICAgc3RyLXJlcGxhY2UodXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA0IDUnJTNlJTNjcGF0aCBmaWxsPScjeyRjdXN0b20tc2VsZWN0LWluZGljYXRvci1jb2xvcn0nIGQ9J00yIDBMMCAyaDR6bTAgNUwwIDNoNHonLyUzZSUzYy9zdmclM2VcIiksIFwiI1wiLCBcIiUyM1wiKSAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWJhY2tncm91bmQ6ICAgICAgICAgICRjdXN0b20tc2VsZWN0LWluZGljYXRvciBuby1yZXBlYXQgcmlnaHQgJGN1c3RvbS1zZWxlY3QtcGFkZGluZy14IGNlbnRlciAvICRjdXN0b20tc2VsZWN0LWJnLXNpemUgIWRlZmF1bHQ7IC8vIFVzZWQgc28gd2UgY2FuIGhhdmUgbXVsdGlwbGUgYmFja2dyb3VuZCBlbGVtZW50cyAoZS5nLiwgYXJyb3cgYW5kIGZlZWRiYWNrIGljb24pXG5cbiRjdXN0b20tc2VsZWN0LWZlZWRiYWNrLWljb24tcGFkZGluZy1yaWdodDogY2FsYygoMWVtICsgI3syICogJGN1c3RvbS1zZWxlY3QtcGFkZGluZy15fSkgKiAzIC8gNCArICN7JGN1c3RvbS1zZWxlY3QtcGFkZGluZy14ICsgJGN1c3RvbS1zZWxlY3QtaW5kaWNhdG9yLXBhZGRpbmd9KSAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWZlZWRiYWNrLWljb24tcG9zaXRpb246ICAgICAgY2VudGVyIHJpZ2h0ICgkY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXggKyAkY3VzdG9tLXNlbGVjdC1pbmRpY2F0b3ItcGFkZGluZykgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1mZWVkYmFjay1pY29uLXNpemU6ICAgICAgICAgICRpbnB1dC1oZWlnaHQtaW5uZXItaGFsZiAkaW5wdXQtaGVpZ2h0LWlubmVyLWhhbGYgIWRlZmF1bHQ7XG5cbiRjdXN0b20tc2VsZWN0LWJvcmRlci13aWR0aDogICAgICAgICRpbnB1dC1ib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1ib3JkZXItY29sb3I6ICAgICAgICAkaW5wdXQtYm9yZGVyLWNvbG9yICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtYm9yZGVyLXJhZGl1czogICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1ib3gtc2hhZG93OiAgICAgICAgICBpbnNldCAwIDFweCAycHggcmdiYSgkYmxhY2ssIC4wNzUpICFkZWZhdWx0O1xuXG4kY3VzdG9tLXNlbGVjdC1mb2N1cy1ib3JkZXItY29sb3I6ICAkaW5wdXQtZm9jdXMtYm9yZGVyLWNvbG9yICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtZm9jdXMtd2lkdGg6ICAgICAgICAgJGlucHV0LWZvY3VzLXdpZHRoICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtZm9jdXMtYm94LXNoYWRvdzogICAgMCAwIDAgJGN1c3RvbS1zZWxlY3QtZm9jdXMtd2lkdGggJGlucHV0LWJ0bi1mb2N1cy1jb2xvciAhZGVmYXVsdDtcblxuJGN1c3RvbS1zZWxlY3QtcGFkZGluZy15LXNtOiAgICAgICAgJGlucHV0LXBhZGRpbmcteS1zbSAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LXBhZGRpbmcteC1zbTogICAgICAgICRpbnB1dC1wYWRkaW5nLXgtc20gIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1mb250LXNpemUtc206ICAgICAgICAkaW5wdXQtZm9udC1zaXplLXNtICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtaGVpZ2h0LXNtOiAgICAgICAgICAgJGlucHV0LWhlaWdodC1zbSAhZGVmYXVsdDtcblxuJGN1c3RvbS1zZWxlY3QtcGFkZGluZy15LWxnOiAgICAgICAgJGlucHV0LXBhZGRpbmcteS1sZyAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LXBhZGRpbmcteC1sZzogICAgICAgICRpbnB1dC1wYWRkaW5nLXgtbGcgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1mb250LXNpemUtbGc6ICAgICAgICAkaW5wdXQtZm9udC1zaXplLWxnICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtaGVpZ2h0LWxnOiAgICAgICAgICAgJGlucHV0LWhlaWdodC1sZyAhZGVmYXVsdDtcblxuJGN1c3RvbS1yYW5nZS10cmFjay13aWR0aDogICAgICAgICAgMTAwJSAhZGVmYXVsdDtcbiRjdXN0b20tcmFuZ2UtdHJhY2staGVpZ2h0OiAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuJGN1c3RvbS1yYW5nZS10cmFjay1jdXJzb3I6ICAgICAgICAgcG9pbnRlciAhZGVmYXVsdDtcbiRjdXN0b20tcmFuZ2UtdHJhY2stYmc6ICAgICAgICAgICAgICRncmF5LTMwMCAhZGVmYXVsdDtcbiRjdXN0b20tcmFuZ2UtdHJhY2stYm9yZGVyLXJhZGl1czogIDFyZW0gIWRlZmF1bHQ7XG4kY3VzdG9tLXJhbmdlLXRyYWNrLWJveC1zaGFkb3c6ICAgICBpbnNldCAwIC4yNXJlbSAuMjVyZW0gcmdiYSgkYmxhY2ssIC4xKSAhZGVmYXVsdDtcblxuJGN1c3RvbS1yYW5nZS10aHVtYi13aWR0aDogICAgICAgICAgICAgICAgICAgMXJlbSAhZGVmYXVsdDtcbiRjdXN0b20tcmFuZ2UtdGh1bWItaGVpZ2h0OiAgICAgICAgICAgICAgICAgICRjdXN0b20tcmFuZ2UtdGh1bWItd2lkdGggIWRlZmF1bHQ7XG4kY3VzdG9tLXJhbmdlLXRodW1iLWJnOiAgICAgICAgICAgICAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1iZyAhZGVmYXVsdDtcbiRjdXN0b20tcmFuZ2UtdGh1bWItYm9yZGVyOiAgICAgICAgICAgICAgICAgIDAgIWRlZmF1bHQ7XG4kY3VzdG9tLXJhbmdlLXRodW1iLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuJGN1c3RvbS1yYW5nZS10aHVtYi1ib3gtc2hhZG93OiAgICAgICAgICAgICAgMCAuMXJlbSAuMjVyZW0gcmdiYSgkYmxhY2ssIC4xKSAhZGVmYXVsdDtcbiRjdXN0b20tcmFuZ2UtdGh1bWItZm9jdXMtYm94LXNoYWRvdzogICAgICAgIDAgMCAwIDFweCAkYm9keS1iZywgJGlucHV0LWZvY3VzLWJveC1zaGFkb3cgIWRlZmF1bHQ7XG4kY3VzdG9tLXJhbmdlLXRodW1iLWZvY3VzLWJveC1zaGFkb3ctd2lkdGg6ICAkaW5wdXQtZm9jdXMtd2lkdGggIWRlZmF1bHQ7IC8vIEZvciBmb2N1cyBib3ggc2hhZG93IGlzc3VlIGluIElFL0VkZ2VcbiRjdXN0b20tcmFuZ2UtdGh1bWItYWN0aXZlLWJnOiAgICAgICAgICAgICAgIGxpZ2h0ZW4oJGNvbXBvbmVudC1hY3RpdmUtYmcsIDM1JSkgIWRlZmF1bHQ7XG4kY3VzdG9tLXJhbmdlLXRodW1iLWRpc2FibGVkLWJnOiAgICAgICAgICAgICAkZ3JheS01MDAgIWRlZmF1bHQ7XG5cbiRjdXN0b20tZmlsZS1oZWlnaHQ6ICAgICAgICAgICAgICAgICRpbnB1dC1oZWlnaHQgIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtaGVpZ2h0LWlubmVyOiAgICAgICAgICAkaW5wdXQtaGVpZ2h0LWlubmVyICFkZWZhdWx0O1xuJGN1c3RvbS1maWxlLWZvY3VzLWJvcmRlci1jb2xvcjogICAgJGlucHV0LWZvY3VzLWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1mb2N1cy1ib3gtc2hhZG93OiAgICAgICRpbnB1dC1mb2N1cy1ib3gtc2hhZG93ICFkZWZhdWx0O1xuJGN1c3RvbS1maWxlLWRpc2FibGVkLWJnOiAgICAgICAgICAgJGlucHV0LWRpc2FibGVkLWJnICFkZWZhdWx0O1xuXG4kY3VzdG9tLWZpbGUtcGFkZGluZy15OiAgICAgICAgICAgICAkaW5wdXQtcGFkZGluZy15ICFkZWZhdWx0O1xuJGN1c3RvbS1maWxlLXBhZGRpbmcteDogICAgICAgICAgICAgJGlucHV0LXBhZGRpbmcteCAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1saW5lLWhlaWdodDogICAgICAgICAgICRpbnB1dC1saW5lLWhlaWdodCAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1mb250LWZhbWlseTogICAgICAgICAgICRpbnB1dC1mb250LWZhbWlseSAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1mb250LXdlaWdodDogICAgICAgICAgICRpbnB1dC1mb250LXdlaWdodCAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1jb2xvcjogICAgICAgICAgICAgICAgICRpbnB1dC1jb2xvciAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1iZzogICAgICAgICAgICAgICAgICAgICRpbnB1dC1iZyAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1ib3JkZXItd2lkdGg6ICAgICAgICAgICRpbnB1dC1ib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtYm9yZGVyLWNvbG9yOiAgICAgICAgICAkaW5wdXQtYm9yZGVyLWNvbG9yICFkZWZhdWx0O1xuJGN1c3RvbS1maWxlLWJvcmRlci1yYWRpdXM6ICAgICAgICAgJGlucHV0LWJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtYm94LXNoYWRvdzogICAgICAgICAgICAkaW5wdXQtYm94LXNoYWRvdyAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1idXR0b24tY29sb3I6ICAgICAgICAgICRjdXN0b20tZmlsZS1jb2xvciAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1idXR0b24tYmc6ICAgICAgICAgICAgICRpbnB1dC1ncm91cC1hZGRvbi1iZyAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS10ZXh0OiAoXG4gIGVuOiBcIkJyb3dzZVwiXG4pICFkZWZhdWx0O1xuXG5cbi8vIEZvcm0gdmFsaWRhdGlvblxuXG4kZm9ybS1mZWVkYmFjay1tYXJnaW4tdG9wOiAgICAgICAgICAkZm9ybS10ZXh0LW1hcmdpbi10b3AgIWRlZmF1bHQ7XG4kZm9ybS1mZWVkYmFjay1mb250LXNpemU6ICAgICAgICAgICAkc21hbGwtZm9udC1zaXplICFkZWZhdWx0O1xuJGZvcm0tZmVlZGJhY2stdmFsaWQtY29sb3I6ICAgICAgICAgdGhlbWUtY29sb3IoXCJzdWNjZXNzXCIpICFkZWZhdWx0O1xuJGZvcm0tZmVlZGJhY2staW52YWxpZC1jb2xvcjogICAgICAgdGhlbWUtY29sb3IoXCJkYW5nZXJcIikgIWRlZmF1bHQ7XG5cbiRmb3JtLWZlZWRiYWNrLWljb24tdmFsaWQtY29sb3I6ICAgICRmb3JtLWZlZWRiYWNrLXZhbGlkLWNvbG9yICFkZWZhdWx0O1xuJGZvcm0tZmVlZGJhY2staWNvbi12YWxpZDogICAgICAgICAgc3RyLXJlcGxhY2UodXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA4IDgnJTNlJTNjcGF0aCBmaWxsPScjeyRmb3JtLWZlZWRiYWNrLWljb24tdmFsaWQtY29sb3J9JyBkPSdNMi4zIDYuNzNMLjYgNC41M2MtLjQtMS4wNC40Ni0xLjQgMS4xLS44bDEuMSAxLjQgMy40LTMuOGMuNi0uNjMgMS42LS4yNyAxLjIuN2wtNCA0LjZjLS40My41LS44LjQtMS4xLjF6Jy8lM2UlM2Mvc3ZnJTNlXCIpLCBcIiNcIiwgXCIlMjNcIikgIWRlZmF1bHQ7XG4kZm9ybS1mZWVkYmFjay1pY29uLWludmFsaWQtY29sb3I6ICAkZm9ybS1mZWVkYmFjay1pbnZhbGlkLWNvbG9yICFkZWZhdWx0O1xuJGZvcm0tZmVlZGJhY2staWNvbi1pbnZhbGlkOiAgICAgICAgc3RyLXJlcGxhY2UodXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGw9JyN7JGZvcm0tZmVlZGJhY2staWNvbi1pbnZhbGlkLWNvbG9yfScgdmlld0JveD0nLTIgLTIgNyA3JyUzZSUzY3BhdGggc3Ryb2tlPScjeyRmb3JtLWZlZWRiYWNrLWljb24taW52YWxpZC1jb2xvcn0nIGQ9J00wIDBsMyAzbTAtM0wwIDMnLyUzZSUzY2NpcmNsZSByPScuNScvJTNlJTNjY2lyY2xlIGN4PSczJyByPScuNScvJTNlJTNjY2lyY2xlIGN5PSczJyByPScuNScvJTNlJTNjY2lyY2xlIGN4PSczJyBjeT0nMycgcj0nLjUnLyUzZSUzYy9zdmclM0VcIiksIFwiI1wiLCBcIiUyM1wiKSAhZGVmYXVsdDtcblxuJGZvcm0tdmFsaWRhdGlvbi1zdGF0ZXM6ICgpICFkZWZhdWx0O1xuLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNjc3MvZG9sbGFyLXZhcmlhYmxlLWRlZmF1bHRcbiRmb3JtLXZhbGlkYXRpb24tc3RhdGVzOiBtYXAtbWVyZ2UoXG4gIChcbiAgICBcInZhbGlkXCI6IChcbiAgICAgIFwiY29sb3JcIjogJGZvcm0tZmVlZGJhY2stdmFsaWQtY29sb3IsXG4gICAgICBcImljb25cIjogJGZvcm0tZmVlZGJhY2staWNvbi12YWxpZFxuICAgICksXG4gICAgXCJpbnZhbGlkXCI6IChcbiAgICAgIFwiY29sb3JcIjogJGZvcm0tZmVlZGJhY2staW52YWxpZC1jb2xvcixcbiAgICAgIFwiaWNvblwiOiAkZm9ybS1mZWVkYmFjay1pY29uLWludmFsaWRcbiAgICApLFxuICApLFxuICAkZm9ybS12YWxpZGF0aW9uLXN0YXRlc1xuKTtcblxuLy8gWi1pbmRleCBtYXN0ZXIgbGlzdFxuLy9cbi8vIFdhcm5pbmc6IEF2b2lkIGN1c3RvbWl6aW5nIHRoZXNlIHZhbHVlcy4gVGhleSdyZSB1c2VkIGZvciBhIGJpcmQncyBleWUgdmlld1xuLy8gb2YgY29tcG9uZW50cyBkZXBlbmRlbnQgb24gdGhlIHotYXhpcyBhbmQgYXJlIGRlc2lnbmVkIHRvIGFsbCB3b3JrIHRvZ2V0aGVyLlxuXG4kemluZGV4LWRyb3Bkb3duOiAgICAgICAgICAgICAgICAgICAxMDAwICFkZWZhdWx0O1xuJHppbmRleC1zdGlja3k6ICAgICAgICAgICAgICAgICAgICAgMTAyMCAhZGVmYXVsdDtcbiR6aW5kZXgtZml4ZWQ6ICAgICAgICAgICAgICAgICAgICAgIDEwMzAgIWRlZmF1bHQ7XG4kemluZGV4LW1vZGFsLWJhY2tkcm9wOiAgICAgICAgICAgICAxMDQwICFkZWZhdWx0O1xuJHppbmRleC1tb2RhbDogICAgICAgICAgICAgICAgICAgICAgMTA1MCAhZGVmYXVsdDtcbiR6aW5kZXgtcG9wb3ZlcjogICAgICAgICAgICAgICAgICAgIDEwNjAgIWRlZmF1bHQ7XG4kemluZGV4LXRvb2x0aXA6ICAgICAgICAgICAgICAgICAgICAxMDcwICFkZWZhdWx0O1xuXG5cbi8vIE5hdnNcblxuJG5hdi1saW5rLXBhZGRpbmcteTogICAgICAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kbmF2LWxpbmstcGFkZGluZy14OiAgICAgICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuJG5hdi1saW5rLWRpc2FibGVkLWNvbG9yOiAgICAgICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuXG4kbmF2LXRhYnMtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAkZ3JheS0zMDAgIWRlZmF1bHQ7XG4kbmF2LXRhYnMtYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJG5hdi10YWJzLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kbmF2LXRhYnMtbGluay1ob3Zlci1ib3JkZXItY29sb3I6ICAkZ3JheS0yMDAgJGdyYXktMjAwICRuYXYtdGFicy1ib3JkZXItY29sb3IgIWRlZmF1bHQ7XG4kbmF2LXRhYnMtbGluay1hY3RpdmUtY29sb3I6ICAgICAgICAkZ3JheS03MDAgIWRlZmF1bHQ7XG4kbmF2LXRhYnMtbGluay1hY3RpdmUtYmc6ICAgICAgICAgICAkYm9keS1iZyAhZGVmYXVsdDtcbiRuYXYtdGFicy1saW5rLWFjdGl2ZS1ib3JkZXItY29sb3I6ICRncmF5LTMwMCAkZ3JheS0zMDAgJG5hdi10YWJzLWxpbmstYWN0aXZlLWJnICFkZWZhdWx0O1xuXG4kbmF2LXBpbGxzLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbiRuYXYtcGlsbHMtbGluay1hY3RpdmUtY29sb3I6ICAgICAgICRjb21wb25lbnQtYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuJG5hdi1waWxscy1saW5rLWFjdGl2ZS1iZzogICAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtYmcgIWRlZmF1bHQ7XG5cbiRuYXYtZGl2aWRlci1jb2xvcjogICAgICAgICAgICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcbiRuYXYtZGl2aWRlci1tYXJnaW4teTogICAgICAgICAgICAgICRzcGFjZXIgLyAyICFkZWZhdWx0O1xuXG5cbi8vIE5hdmJhclxuXG4kbmF2YmFyLXBhZGRpbmcteTogICAgICAgICAgICAgICAgICAkc3BhY2VyIC8gMiAhZGVmYXVsdDtcbiRuYXZiYXItcGFkZGluZy14OiAgICAgICAgICAgICAgICAgICRzcGFjZXIgIWRlZmF1bHQ7XG5cbiRuYXZiYXItbmF2LWxpbmstcGFkZGluZy14OiAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuXG4kbmF2YmFyLWJyYW5kLWZvbnQtc2l6ZTogICAgICAgICAgICAkZm9udC1zaXplLWxnICFkZWZhdWx0O1xuLy8gQ29tcHV0ZSB0aGUgbmF2YmFyLWJyYW5kIHBhZGRpbmcteSBzbyB0aGUgbmF2YmFyLWJyYW5kIHdpbGwgaGF2ZSB0aGUgc2FtZSBoZWlnaHQgYXMgbmF2YmFyLXRleHQgYW5kIG5hdi1saW5rXG4kbmF2LWxpbmstaGVpZ2h0OiAgICAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAkbGluZS1oZWlnaHQtYmFzZSArICRuYXYtbGluay1wYWRkaW5nLXkgKiAyICFkZWZhdWx0O1xuJG5hdmJhci1icmFuZC1oZWlnaHQ6ICAgICAgICAgICAgICAgJG5hdmJhci1icmFuZC1mb250LXNpemUgKiAkbGluZS1oZWlnaHQtYmFzZSAhZGVmYXVsdDtcbiRuYXZiYXItYnJhbmQtcGFkZGluZy15OiAgICAgICAgICAgICgkbmF2LWxpbmstaGVpZ2h0IC0gJG5hdmJhci1icmFuZC1oZWlnaHQpIC8gMiAhZGVmYXVsdDtcblxuJG5hdmJhci10b2dnbGVyLXBhZGRpbmcteTogICAgICAgICAgLjI1cmVtICFkZWZhdWx0O1xuJG5hdmJhci10b2dnbGVyLXBhZGRpbmcteDogICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJG5hdmJhci10b2dnbGVyLWZvbnQtc2l6ZTogICAgICAgICAgJGZvbnQtc2l6ZS1sZyAhZGVmYXVsdDtcbiRuYXZiYXItdG9nZ2xlci1ib3JkZXItcmFkaXVzOiAgICAgICRidG4tYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcblxuJG5hdmJhci1kYXJrLWNvbG9yOiAgICAgICAgICAgICAgICAgcmdiYSgkd2hpdGUsIC41KSAhZGVmYXVsdDtcbiRuYXZiYXItZGFyay1ob3Zlci1jb2xvcjogICAgICAgICAgIHJnYmEoJHdoaXRlLCAuNzUpICFkZWZhdWx0O1xuJG5hdmJhci1kYXJrLWFjdGl2ZS1jb2xvcjogICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJG5hdmJhci1kYXJrLWRpc2FibGVkLWNvbG9yOiAgICAgICAgcmdiYSgkd2hpdGUsIC4yNSkgIWRlZmF1bHQ7XG4kbmF2YmFyLWRhcmstdG9nZ2xlci1pY29uLWJnOiAgICAgICBzdHItcmVwbGFjZSh1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHZpZXdCb3g9JzAgMCAzMCAzMCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzZSUzY3BhdGggc3Ryb2tlPScjeyRuYXZiYXItZGFyay1jb2xvcn0nIHN0cm9rZS13aWR0aD0nMicgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbWl0ZXJsaW1pdD0nMTAnIGQ9J000IDdoMjJNNCAxNWgyMk00IDIzaDIyJy8lM2UlM2Mvc3ZnJTNlXCIpLCBcIiNcIiwgXCIlMjNcIikgIWRlZmF1bHQ7XG4kbmF2YmFyLWRhcmstdG9nZ2xlci1ib3JkZXItY29sb3I6ICByZ2JhKCR3aGl0ZSwgLjEpICFkZWZhdWx0O1xuXG4kbmF2YmFyLWxpZ2h0LWNvbG9yOiAgICAgICAgICAgICAgICByZ2JhKCRibGFjaywgLjUpICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC1ob3Zlci1jb2xvcjogICAgICAgICAgcmdiYSgkYmxhY2ssIC43KSAhZGVmYXVsdDtcbiRuYXZiYXItbGlnaHQtYWN0aXZlLWNvbG9yOiAgICAgICAgIHJnYmEoJGJsYWNrLCAuOSkgIWRlZmF1bHQ7XG4kbmF2YmFyLWxpZ2h0LWRpc2FibGVkLWNvbG9yOiAgICAgICByZ2JhKCRibGFjaywgLjMpICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC10b2dnbGVyLWljb24tYmc6ICAgICAgc3RyLXJlcGxhY2UodXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB2aWV3Qm94PScwIDAgMzAgMzAnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM2UlM2NwYXRoIHN0cm9rZT0nI3skbmF2YmFyLWxpZ2h0LWNvbG9yfScgc3Ryb2tlLXdpZHRoPScyJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1taXRlcmxpbWl0PScxMCcgZD0nTTQgN2gyMk00IDE1aDIyTTQgMjNoMjInLyUzZSUzYy9zdmclM2VcIiksIFwiI1wiLCBcIiUyM1wiKSAhZGVmYXVsdDtcbiRuYXZiYXItbGlnaHQtdG9nZ2xlci1ib3JkZXItY29sb3I6IHJnYmEoJGJsYWNrLCAuMSkgIWRlZmF1bHQ7XG5cbiRuYXZiYXItbGlnaHQtYnJhbmQtY29sb3I6ICAgICAgICAgICAgICAgICRuYXZiYXItbGlnaHQtYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC1icmFuZC1ob3Zlci1jb2xvcjogICAgICAgICAgJG5hdmJhci1saWdodC1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XG4kbmF2YmFyLWRhcmstYnJhbmQtY29sb3I6ICAgICAgICAgICAgICAgICAkbmF2YmFyLWRhcmstYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuJG5hdmJhci1kYXJrLWJyYW5kLWhvdmVyLWNvbG9yOiAgICAgICAgICAgJG5hdmJhci1kYXJrLWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcblxuXG4vLyBEcm9wZG93bnNcbi8vXG4vLyBEcm9wZG93biBtZW51IGNvbnRhaW5lciBhbmQgY29udGVudHMuXG5cbiRkcm9wZG93bi1taW4td2lkdGg6ICAgICAgICAgICAgICAgIDEwcmVtICFkZWZhdWx0O1xuJGRyb3Bkb3duLXBhZGRpbmcteTogICAgICAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kZHJvcGRvd24tc3BhY2VyOiAgICAgICAgICAgICAgICAgICAuMTI1cmVtICFkZWZhdWx0O1xuJGRyb3Bkb3duLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICFkZWZhdWx0O1xuJGRyb3Bkb3duLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgJGJvZHktY29sb3IgIWRlZmF1bHQ7XG4kZHJvcGRvd24tYmc6ICAgICAgICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kZHJvcGRvd24tYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICByZ2JhKCRibGFjaywgLjE1KSAhZGVmYXVsdDtcbiRkcm9wZG93bi1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJGRyb3Bkb3duLWJvcmRlci13aWR0aDogICAgICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRkcm9wZG93bi1pbm5lci1ib3JkZXItcmFkaXVzOiAgICAgIGNhbGMoI3skZHJvcGRvd24tYm9yZGVyLXJhZGl1c30gLSAjeyRkcm9wZG93bi1ib3JkZXItd2lkdGh9KSAhZGVmYXVsdDtcbiRkcm9wZG93bi1kaXZpZGVyLWJnOiAgICAgICAgICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcbiRkcm9wZG93bi1kaXZpZGVyLW1hcmdpbi15OiAgICAgICAgICRuYXYtZGl2aWRlci1tYXJnaW4teSAhZGVmYXVsdDtcbiRkcm9wZG93bi1ib3gtc2hhZG93OiAgICAgICAgICAgICAgIDAgLjVyZW0gMXJlbSByZ2JhKCRibGFjaywgLjE3NSkgIWRlZmF1bHQ7XG5cbiRkcm9wZG93bi1saW5rLWNvbG9yOiAgICAgICAgICAgICAgICRncmF5LTkwMCAhZGVmYXVsdDtcbiRkcm9wZG93bi1saW5rLWhvdmVyLWNvbG9yOiAgICAgICAgIGRhcmtlbigkZ3JheS05MDAsIDUlKSAhZGVmYXVsdDtcbiRkcm9wZG93bi1saW5rLWhvdmVyLWJnOiAgICAgICAgICAgICRncmF5LTEwMCAhZGVmYXVsdDtcblxuJGRyb3Bkb3duLWxpbmstYWN0aXZlLWNvbG9yOiAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XG4kZHJvcGRvd24tbGluay1hY3RpdmUtYmc6ICAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1iZyAhZGVmYXVsdDtcblxuJGRyb3Bkb3duLWxpbmstZGlzYWJsZWQtY29sb3I6ICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuXG4kZHJvcGRvd24taXRlbS1wYWRkaW5nLXk6ICAgICAgICAgICAuMjVyZW0gIWRlZmF1bHQ7XG4kZHJvcGRvd24taXRlbS1wYWRkaW5nLXg6ICAgICAgICAgICAxLjVyZW0gIWRlZmF1bHQ7XG5cbiRkcm9wZG93bi1oZWFkZXItY29sb3I6ICAgICAgICAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcblxuXG4vLyBQYWdpbmF0aW9uXG5cbiRwYWdpbmF0aW9uLXBhZGRpbmcteTogICAgICAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tcGFkZGluZy14OiAgICAgICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tcGFkZGluZy15LXNtOiAgICAgICAgICAgLjI1cmVtICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tcGFkZGluZy14LXNtOiAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1wYWRkaW5nLXktbGc6ICAgICAgICAgICAuNzVyZW0gIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1wYWRkaW5nLXgtbGc6ICAgICAgICAgICAxLjVyZW0gIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1saW5lLWhlaWdodDogICAgICAgICAgICAxLjI1ICFkZWZhdWx0O1xuXG4kcGFnaW5hdGlvbi1jb2xvcjogICAgICAgICAgICAgICAgICAkbGluay1jb2xvciAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWJnOiAgICAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWJvcmRlci13aWR0aDogICAgICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1ib3JkZXItY29sb3I6ICAgICAgICAgICAkZ3JheS0zMDAgIWRlZmF1bHQ7XG5cbiRwYWdpbmF0aW9uLWZvY3VzLWJveC1zaGFkb3c6ICAgICAgICRpbnB1dC1idG4tZm9jdXMtYm94LXNoYWRvdyAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWZvY3VzLW91dGxpbmU6ICAgICAgICAgIDAgIWRlZmF1bHQ7XG5cbiRwYWdpbmF0aW9uLWhvdmVyLWNvbG9yOiAgICAgICAgICAgICRsaW5rLWhvdmVyLWNvbG9yICFkZWZhdWx0O1xuJHBhZ2luYXRpb24taG92ZXItYmc6ICAgICAgICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuJHBhZ2luYXRpb24taG92ZXItYm9yZGVyLWNvbG9yOiAgICAgJGdyYXktMzAwICFkZWZhdWx0O1xuXG4kcGFnaW5hdGlvbi1hY3RpdmUtY29sb3I6ICAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWFjdGl2ZS1iZzogICAgICAgICAgICAgICRjb21wb25lbnQtYWN0aXZlLWJnICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tYWN0aXZlLWJvcmRlci1jb2xvcjogICAgJHBhZ2luYXRpb24tYWN0aXZlLWJnICFkZWZhdWx0O1xuXG4kcGFnaW5hdGlvbi1kaXNhYmxlZC1jb2xvcjogICAgICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1kaXNhYmxlZC1iZzogICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1kaXNhYmxlZC1ib3JkZXItY29sb3I6ICAkZ3JheS0zMDAgIWRlZmF1bHQ7XG5cblxuLy8gSnVtYm90cm9uXG5cbiRqdW1ib3Ryb24tcGFkZGluZzogICAgICAgICAgICAgICAgIDJyZW0gIWRlZmF1bHQ7XG4kanVtYm90cm9uLWNvbG9yOiAgICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuJGp1bWJvdHJvbi1iZzogICAgICAgICAgICAgICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuXG5cbi8vIENhcmRzXG5cbiRjYXJkLXNwYWNlci15OiAgICAgICAgICAgICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiRjYXJkLXNwYWNlci14OiAgICAgICAgICAgICAgICAgICAgIDEuMjVyZW0gIWRlZmF1bHQ7XG4kY2FyZC1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJGNhcmQtYm9yZGVyLXJhZGl1czogICAgICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kY2FyZC1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICAgICByZ2JhKCRibGFjaywgLjEyNSkgIWRlZmF1bHQ7XG4kY2FyZC1pbm5lci1ib3JkZXItcmFkaXVzOiAgICAgICAgICBjYWxjKCN7JGNhcmQtYm9yZGVyLXJhZGl1c30gLSAjeyRjYXJkLWJvcmRlci13aWR0aH0pICFkZWZhdWx0O1xuJGNhcmQtY2FwLWJnOiAgICAgICAgICAgICAgICAgICAgICAgcmdiYSgkYmxhY2ssIC4wMykgIWRlZmF1bHQ7XG4kY2FyZC1jYXAtY29sb3I6ICAgICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuJGNhcmQtY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbiRjYXJkLWJnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcblxuJGNhcmQtaW1nLW92ZXJsYXktcGFkZGluZzogICAgICAgICAgMS4yNXJlbSAhZGVmYXVsdDtcblxuJGNhcmQtZ3JvdXAtbWFyZ2luOiAgICAgICAgICAgICAgICAgJGdyaWQtZ3V0dGVyLXdpZHRoIC8gMiAhZGVmYXVsdDtcbiRjYXJkLWRlY2stbWFyZ2luOiAgICAgICAgICAgICAgICAgICRjYXJkLWdyb3VwLW1hcmdpbiAhZGVmYXVsdDtcblxuJGNhcmQtY29sdW1ucy1jb3VudDogICAgICAgICAgICAgICAgMyAhZGVmYXVsdDtcbiRjYXJkLWNvbHVtbnMtZ2FwOiAgICAgICAgICAgICAgICAgIDEuMjVyZW0gIWRlZmF1bHQ7XG4kY2FyZC1jb2x1bW5zLW1hcmdpbjogICAgICAgICAgICAgICAkY2FyZC1zcGFjZXIteSAhZGVmYXVsdDtcblxuXG4vLyBUb29sdGlwc1xuXG4kdG9vbHRpcC1mb250LXNpemU6ICAgICAgICAgICAgICAgICAkZm9udC1zaXplLXNtICFkZWZhdWx0O1xuJHRvb2x0aXAtbWF4LXdpZHRoOiAgICAgICAgICAgICAgICAgMjAwcHggIWRlZmF1bHQ7XG4kdG9vbHRpcC1jb2xvcjogICAgICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kdG9vbHRpcC1iZzogICAgICAgICAgICAgICAgICAgICAgICAkYmxhY2sgIWRlZmF1bHQ7XG4kdG9vbHRpcC1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbiR0b29sdGlwLW9wYWNpdHk6ICAgICAgICAgICAgICAgICAgIC45ICFkZWZhdWx0O1xuJHRvb2x0aXAtcGFkZGluZy15OiAgICAgICAgICAgICAgICAgLjI1cmVtICFkZWZhdWx0O1xuJHRvb2x0aXAtcGFkZGluZy14OiAgICAgICAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kdG9vbHRpcC1tYXJnaW46ICAgICAgICAgICAgICAgICAgICAwICFkZWZhdWx0O1xuXG4kdG9vbHRpcC1hcnJvdy13aWR0aDogICAgICAgICAgICAgICAuOHJlbSAhZGVmYXVsdDtcbiR0b29sdGlwLWFycm93LWhlaWdodDogICAgICAgICAgICAgIC40cmVtICFkZWZhdWx0O1xuJHRvb2x0aXAtYXJyb3ctY29sb3I6ICAgICAgICAgICAgICAgJHRvb2x0aXAtYmcgIWRlZmF1bHQ7XG5cbi8vIEZvcm0gdG9vbHRpcHMgbXVzdCBjb21lIGFmdGVyIHJlZ3VsYXIgdG9vbHRpcHNcbiRmb3JtLWZlZWRiYWNrLXRvb2x0aXAtcGFkZGluZy15OiAgICAgJHRvb2x0aXAtcGFkZGluZy15ICFkZWZhdWx0O1xuJGZvcm0tZmVlZGJhY2stdG9vbHRpcC1wYWRkaW5nLXg6ICAgICAkdG9vbHRpcC1wYWRkaW5nLXggIWRlZmF1bHQ7XG4kZm9ybS1mZWVkYmFjay10b29sdGlwLWZvbnQtc2l6ZTogICAgICR0b29sdGlwLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRmb3JtLWZlZWRiYWNrLXRvb2x0aXAtbGluZS1oZWlnaHQ6ICAgJGxpbmUtaGVpZ2h0LWJhc2UgIWRlZmF1bHQ7XG4kZm9ybS1mZWVkYmFjay10b29sdGlwLW9wYWNpdHk6ICAgICAgICR0b29sdGlwLW9wYWNpdHkgIWRlZmF1bHQ7XG4kZm9ybS1mZWVkYmFjay10b29sdGlwLWJvcmRlci1yYWRpdXM6ICR0b29sdGlwLWJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG5cblxuLy8gUG9wb3ZlcnNcblxuJHBvcG92ZXItZm9udC1zaXplOiAgICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1zbSAhZGVmYXVsdDtcbiRwb3BvdmVyLWJnOiAgICAgICAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRwb3BvdmVyLW1heC13aWR0aDogICAgICAgICAgICAgICAgIDI3NnB4ICFkZWZhdWx0O1xuJHBvcG92ZXItYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRwb3BvdmVyLWJvcmRlci1jb2xvcjogICAgICAgICAgICAgIHJnYmEoJGJsYWNrLCAuMikgIWRlZmF1bHQ7XG4kcG9wb3Zlci1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAkYm9yZGVyLXJhZGl1cy1sZyAhZGVmYXVsdDtcbiRwb3BvdmVyLWJveC1zaGFkb3c6ICAgICAgICAgICAgICAgIDAgLjI1cmVtIC41cmVtIHJnYmEoJGJsYWNrLCAuMikgIWRlZmF1bHQ7XG5cbiRwb3BvdmVyLWhlYWRlci1iZzogICAgICAgICAgICAgICAgIGRhcmtlbigkcG9wb3Zlci1iZywgMyUpICFkZWZhdWx0O1xuJHBvcG92ZXItaGVhZGVyLWNvbG9yOiAgICAgICAgICAgICAgJGhlYWRpbmdzLWNvbG9yICFkZWZhdWx0O1xuJHBvcG92ZXItaGVhZGVyLXBhZGRpbmcteTogICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kcG9wb3Zlci1oZWFkZXItcGFkZGluZy14OiAgICAgICAgICAuNzVyZW0gIWRlZmF1bHQ7XG5cbiRwb3BvdmVyLWJvZHktY29sb3I6ICAgICAgICAgICAgICAgICRib2R5LWNvbG9yICFkZWZhdWx0O1xuJHBvcG92ZXItYm9keS1wYWRkaW5nLXk6ICAgICAgICAgICAgJHBvcG92ZXItaGVhZGVyLXBhZGRpbmcteSAhZGVmYXVsdDtcbiRwb3BvdmVyLWJvZHktcGFkZGluZy14OiAgICAgICAgICAgICRwb3BvdmVyLWhlYWRlci1wYWRkaW5nLXggIWRlZmF1bHQ7XG5cbiRwb3BvdmVyLWFycm93LXdpZHRoOiAgICAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kcG9wb3Zlci1hcnJvdy1oZWlnaHQ6ICAgICAgICAgICAgICAuNXJlbSAhZGVmYXVsdDtcbiRwb3BvdmVyLWFycm93LWNvbG9yOiAgICAgICAgICAgICAgICRwb3BvdmVyLWJnICFkZWZhdWx0O1xuXG4kcG9wb3Zlci1hcnJvdy1vdXRlci1jb2xvcjogICAgICAgICBmYWRlLWluKCRwb3BvdmVyLWJvcmRlci1jb2xvciwgLjA1KSAhZGVmYXVsdDtcblxuXG4vLyBUb2FzdHNcblxuJHRvYXN0LW1heC13aWR0aDogICAgICAgICAgICAgICAgICAgMzUwcHggIWRlZmF1bHQ7XG4kdG9hc3QtcGFkZGluZy14OiAgICAgICAgICAgICAgICAgICAuNzVyZW0gIWRlZmF1bHQ7XG4kdG9hc3QtcGFkZGluZy15OiAgICAgICAgICAgICAgICAgICAuMjVyZW0gIWRlZmF1bHQ7XG4kdG9hc3QtZm9udC1zaXplOiAgICAgICAgICAgICAgICAgICAuODc1cmVtICFkZWZhdWx0O1xuJHRvYXN0LWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbiR0b2FzdC1iYWNrZ3JvdW5kLWNvbG9yOiAgICAgICAgICAgIHJnYmEoJHdoaXRlLCAuODUpICFkZWZhdWx0O1xuJHRvYXN0LWJvcmRlci13aWR0aDogICAgICAgICAgICAgICAgMXB4ICFkZWZhdWx0O1xuJHRvYXN0LWJvcmRlci1jb2xvcjogICAgICAgICAgICAgICAgcmdiYSgwLCAwLCAwLCAuMSkgIWRlZmF1bHQ7XG4kdG9hc3QtYm9yZGVyLXJhZGl1czogICAgICAgICAgICAgICAuMjVyZW0gIWRlZmF1bHQ7XG4kdG9hc3QtYm94LXNoYWRvdzogICAgICAgICAgICAgICAgICAwIC4yNXJlbSAuNzVyZW0gcmdiYSgkYmxhY2ssIC4xKSAhZGVmYXVsdDtcblxuJHRvYXN0LWhlYWRlci1jb2xvcjogICAgICAgICAgICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuJHRvYXN0LWhlYWRlci1iYWNrZ3JvdW5kLWNvbG9yOiAgICAgcmdiYSgkd2hpdGUsIC44NSkgIWRlZmF1bHQ7XG4kdG9hc3QtaGVhZGVyLWJvcmRlci1jb2xvcjogICAgICAgICByZ2JhKDAsIDAsIDAsIC4wNSkgIWRlZmF1bHQ7XG5cblxuLy8gQmFkZ2VzXG5cbiRiYWRnZS1mb250LXNpemU6ICAgICAgICAgICAgICAgICAgIDc1JSAhZGVmYXVsdDtcbiRiYWRnZS1mb250LXdlaWdodDogICAgICAgICAgICAgICAgICRmb250LXdlaWdodC1ib2xkICFkZWZhdWx0O1xuJGJhZGdlLXBhZGRpbmcteTogICAgICAgICAgICAgICAgICAgLjI1ZW0gIWRlZmF1bHQ7XG4kYmFkZ2UtcGFkZGluZy14OiAgICAgICAgICAgICAgICAgICAuNGVtICFkZWZhdWx0O1xuJGJhZGdlLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG5cbiRiYWRnZS10cmFuc2l0aW9uOiAgICAgICAgICAgICAgICAgICRidG4tdHJhbnNpdGlvbiAhZGVmYXVsdDtcbiRiYWRnZS1mb2N1cy13aWR0aDogICAgICAgICAgICAgICAgICRpbnB1dC1idG4tZm9jdXMtd2lkdGggIWRlZmF1bHQ7XG5cbiRiYWRnZS1waWxsLXBhZGRpbmcteDogICAgICAgICAgICAgIC42ZW0gIWRlZmF1bHQ7XG4vLyBVc2UgYSBoaWdoZXIgdGhhbiBub3JtYWwgdmFsdWUgdG8gZW5zdXJlIGNvbXBsZXRlbHkgcm91bmRlZCBlZGdlcyB3aGVuXG4vLyBjdXN0b21pemluZyBwYWRkaW5nIG9yIGZvbnQtc2l6ZSBvbiBsYWJlbHMuXG4kYmFkZ2UtcGlsbC1ib3JkZXItcmFkaXVzOiAgICAgICAgICAxMHJlbSAhZGVmYXVsdDtcblxuXG4vLyBNb2RhbHNcblxuLy8gUGFkZGluZyBhcHBsaWVkIHRvIHRoZSBtb2RhbCBib2R5XG4kbW9kYWwtaW5uZXItcGFkZGluZzogICAgICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuXG4kbW9kYWwtZGlhbG9nLW1hcmdpbjogICAgICAgICAgICAgICAuNXJlbSAhZGVmYXVsdDtcbiRtb2RhbC1kaWFsb2ctbWFyZ2luLXktc20tdXA6ICAgICAgIDEuNzVyZW0gIWRlZmF1bHQ7XG5cbiRtb2RhbC10aXRsZS1saW5lLWhlaWdodDogICAgICAgICAgICRsaW5lLWhlaWdodC1iYXNlICFkZWZhdWx0O1xuXG4kbW9kYWwtY29udGVudC1jb2xvcjogICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuJG1vZGFsLWNvbnRlbnQtYmc6ICAgICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJG1vZGFsLWNvbnRlbnQtYm9yZGVyLWNvbG9yOiAgICAgICAgcmdiYSgkYmxhY2ssIC4yKSAhZGVmYXVsdDtcbiRtb2RhbC1jb250ZW50LWJvcmRlci13aWR0aDogICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kbW9kYWwtY29udGVudC1ib3JkZXItcmFkaXVzOiAgICAgICAkYm9yZGVyLXJhZGl1cy1sZyAhZGVmYXVsdDtcbiRtb2RhbC1jb250ZW50LWJveC1zaGFkb3cteHM6ICAgICAgIDAgLjI1cmVtIC41cmVtIHJnYmEoJGJsYWNrLCAuNSkgIWRlZmF1bHQ7XG4kbW9kYWwtY29udGVudC1ib3gtc2hhZG93LXNtLXVwOiAgICAwIC41cmVtIDFyZW0gcmdiYSgkYmxhY2ssIC41KSAhZGVmYXVsdDtcblxuJG1vZGFsLWJhY2tkcm9wLWJnOiAgICAgICAgICAgICAgICAgJGJsYWNrICFkZWZhdWx0O1xuJG1vZGFsLWJhY2tkcm9wLW9wYWNpdHk6ICAgICAgICAgICAgLjUgIWRlZmF1bHQ7XG4kbW9kYWwtaGVhZGVyLWJvcmRlci1jb2xvcjogICAgICAgICAkYm9yZGVyLWNvbG9yICFkZWZhdWx0O1xuJG1vZGFsLWZvb3Rlci1ib3JkZXItY29sb3I6ICAgICAgICAgJG1vZGFsLWhlYWRlci1ib3JkZXItY29sb3IgIWRlZmF1bHQ7XG4kbW9kYWwtaGVhZGVyLWJvcmRlci13aWR0aDogICAgICAgICAkbW9kYWwtY29udGVudC1ib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kbW9kYWwtZm9vdGVyLWJvcmRlci13aWR0aDogICAgICAgICAkbW9kYWwtaGVhZGVyLWJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRtb2RhbC1oZWFkZXItcGFkZGluZy15OiAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kbW9kYWwtaGVhZGVyLXBhZGRpbmcteDogICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuJG1vZGFsLWhlYWRlci1wYWRkaW5nOiAgICAgICAgICAgICAgJG1vZGFsLWhlYWRlci1wYWRkaW5nLXkgJG1vZGFsLWhlYWRlci1wYWRkaW5nLXggIWRlZmF1bHQ7IC8vIEtlZXAgdGhpcyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblxuJG1vZGFsLXhsOiAgICAgICAgICAgICAgICAgICAgICAgICAgMTE0MHB4ICFkZWZhdWx0O1xuJG1vZGFsLWxnOiAgICAgICAgICAgICAgICAgICAgICAgICAgODAwcHggIWRlZmF1bHQ7XG4kbW9kYWwtbWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICA1MDBweCAhZGVmYXVsdDtcbiRtb2RhbC1zbTogICAgICAgICAgICAgICAgICAgICAgICAgIDMwMHB4ICFkZWZhdWx0O1xuXG4kbW9kYWwtZmFkZS10cmFuc2Zvcm06ICAgICAgICAgICAgICB0cmFuc2xhdGUoMCwgLTUwcHgpICFkZWZhdWx0O1xuJG1vZGFsLXNob3ctdHJhbnNmb3JtOiAgICAgICAgICAgICAgbm9uZSAhZGVmYXVsdDtcbiRtb2RhbC10cmFuc2l0aW9uOiAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybSAuM3MgZWFzZS1vdXQgIWRlZmF1bHQ7XG5cblxuLy8gQWxlcnRzXG4vL1xuLy8gRGVmaW5lIGFsZXJ0IGNvbG9ycywgYm9yZGVyIHJhZGl1cywgYW5kIHBhZGRpbmcuXG5cbiRhbGVydC1wYWRkaW5nLXk6ICAgICAgICAgICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiRhbGVydC1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgICAgIDEuMjVyZW0gIWRlZmF1bHQ7XG4kYWxlcnQtbWFyZ2luLWJvdHRvbTogICAgICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuJGFsZXJ0LWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kYWxlcnQtbGluay1mb250LXdlaWdodDogICAgICAgICAgICAkZm9udC13ZWlnaHQtYm9sZCAhZGVmYXVsdDtcbiRhbGVydC1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XG5cbiRhbGVydC1iZy1sZXZlbDogICAgICAgICAgICAgICAgICAgIC0xMCAhZGVmYXVsdDtcbiRhbGVydC1ib3JkZXItbGV2ZWw6ICAgICAgICAgICAgICAgIC05ICFkZWZhdWx0O1xuJGFsZXJ0LWNvbG9yLWxldmVsOiAgICAgICAgICAgICAgICAgNiAhZGVmYXVsdDtcblxuXG4vLyBQcm9ncmVzcyBiYXJzXG5cbiRwcm9ncmVzcy1oZWlnaHQ6ICAgICAgICAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kcHJvZ3Jlc3MtZm9udC1zaXplOiAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAuNzUgIWRlZmF1bHQ7XG4kcHJvZ3Jlc3MtYmc6ICAgICAgICAgICAgICAgICAgICAgICAkZ3JheS0yMDAgIWRlZmF1bHQ7XG4kcHJvZ3Jlc3MtYm9yZGVyLXJhZGl1czogICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbiRwcm9ncmVzcy1ib3gtc2hhZG93OiAgICAgICAgICAgICAgIGluc2V0IDAgLjFyZW0gLjFyZW0gcmdiYSgkYmxhY2ssIC4xKSAhZGVmYXVsdDtcbiRwcm9ncmVzcy1iYXItY29sb3I6ICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRwcm9ncmVzcy1iYXItYmc6ICAgICAgICAgICAgICAgICAgIHRoZW1lLWNvbG9yKFwicHJpbWFyeVwiKSAhZGVmYXVsdDtcbiRwcm9ncmVzcy1iYXItYW5pbWF0aW9uLXRpbWluZzogICAgIDFzIGxpbmVhciBpbmZpbml0ZSAhZGVmYXVsdDtcbiRwcm9ncmVzcy1iYXItdHJhbnNpdGlvbjogICAgICAgICAgIHdpZHRoIC42cyBlYXNlICFkZWZhdWx0O1xuXG5cbi8vIExpc3QgZ3JvdXBcblxuJGxpc3QtZ3JvdXAtY29sb3I6ICAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWJnOiAgICAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWJvcmRlci1jb2xvcjogICAgICAgICAgIHJnYmEoJGJsYWNrLCAuMTI1KSAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWJvcmRlci13aWR0aDogICAgICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1ib3JkZXItcmFkaXVzOiAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcblxuJGxpc3QtZ3JvdXAtaXRlbS1wYWRkaW5nLXk6ICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtaXRlbS1wYWRkaW5nLXg6ICAgICAgICAgMS4yNXJlbSAhZGVmYXVsdDtcblxuJGxpc3QtZ3JvdXAtaG92ZXItYmc6ICAgICAgICAgICAgICAgJGdyYXktMTAwICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtYWN0aXZlLWNvbG9yOiAgICAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1hY3RpdmUtYmc6ICAgICAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1iZyAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWFjdGl2ZS1ib3JkZXItY29sb3I6ICAgICRsaXN0LWdyb3VwLWFjdGl2ZS1iZyAhZGVmYXVsdDtcblxuJGxpc3QtZ3JvdXAtZGlzYWJsZWQtY29sb3I6ICAgICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtZGlzYWJsZWQtYmc6ICAgICAgICAgICAgJGxpc3QtZ3JvdXAtYmcgIWRlZmF1bHQ7XG5cbiRsaXN0LWdyb3VwLWFjdGlvbi1jb2xvcjogICAgICAgICAgICRncmF5LTcwMCAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWFjdGlvbi1ob3Zlci1jb2xvcjogICAgICRsaXN0LWdyb3VwLWFjdGlvbi1jb2xvciAhZGVmYXVsdDtcblxuJGxpc3QtZ3JvdXAtYWN0aW9uLWFjdGl2ZS1jb2xvcjogICAgJGJvZHktY29sb3IgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1hY3Rpb24tYWN0aXZlLWJnOiAgICAgICAkZ3JheS0yMDAgIWRlZmF1bHQ7XG5cblxuLy8gSW1hZ2UgdGh1bWJuYWlsc1xuXG4kdGh1bWJuYWlsLXBhZGRpbmc6ICAgICAgICAgICAgICAgICAuMjVyZW0gIWRlZmF1bHQ7XG4kdGh1bWJuYWlsLWJnOiAgICAgICAgICAgICAgICAgICAgICAkYm9keS1iZyAhZGVmYXVsdDtcbiR0aHVtYm5haWwtYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kdGh1bWJuYWlsLWJvcmRlci1jb2xvcjogICAgICAgICAgICAkZ3JheS0zMDAgIWRlZmF1bHQ7XG4kdGh1bWJuYWlsLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbiR0aHVtYm5haWwtYm94LXNoYWRvdzogICAgICAgICAgICAgIDAgMXB4IDJweCByZ2JhKCRibGFjaywgLjA3NSkgIWRlZmF1bHQ7XG5cblxuLy8gRmlndXJlc1xuXG4kZmlndXJlLWNhcHRpb24tZm9udC1zaXplOiAgICAgICAgICA5MCUgIWRlZmF1bHQ7XG4kZmlndXJlLWNhcHRpb24tY29sb3I6ICAgICAgICAgICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG5cblxuLy8gQnJlYWRjcnVtYnNcblxuJGJyZWFkY3J1bWItcGFkZGluZy15OiAgICAgICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJGJyZWFkY3J1bWItcGFkZGluZy14OiAgICAgICAgICAgICAgMXJlbSAhZGVmYXVsdDtcbiRicmVhZGNydW1iLWl0ZW0tcGFkZGluZzogICAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuXG4kYnJlYWRjcnVtYi1tYXJnaW4tYm90dG9tOiAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuXG4kYnJlYWRjcnVtYi1iZzogICAgICAgICAgICAgICAgICAgICAkZ3JheS0yMDAgIWRlZmF1bHQ7XG4kYnJlYWRjcnVtYi1kaXZpZGVyLWNvbG9yOiAgICAgICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG4kYnJlYWRjcnVtYi1hY3RpdmUtY29sb3I6ICAgICAgICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG4kYnJlYWRjcnVtYi1kaXZpZGVyOiAgICAgICAgICAgICAgICBxdW90ZShcIi9cIikgIWRlZmF1bHQ7XG5cbiRicmVhZGNydW1iLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuXG5cbi8vIENhcm91c2VsXG5cbiRjYXJvdXNlbC1jb250cm9sLWNvbG9yOiAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtY29udHJvbC13aWR0aDogICAgICAgICAgICAgMTUlICFkZWZhdWx0O1xuJGNhcm91c2VsLWNvbnRyb2wtb3BhY2l0eTogICAgICAgICAgIC41ICFkZWZhdWx0O1xuJGNhcm91c2VsLWNvbnRyb2wtaG92ZXItb3BhY2l0eTogICAgIC45ICFkZWZhdWx0O1xuJGNhcm91c2VsLWNvbnRyb2wtdHJhbnNpdGlvbjogICAgICAgIG9wYWNpdHkgLjE1cyBlYXNlICFkZWZhdWx0O1xuXG4kY2Fyb3VzZWwtaW5kaWNhdG9yLXdpZHRoOiAgICAgICAgICAgMzBweCAhZGVmYXVsdDtcbiRjYXJvdXNlbC1pbmRpY2F0b3ItaGVpZ2h0OiAgICAgICAgICAzcHggIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtaW5kaWNhdG9yLWhpdC1hcmVhLWhlaWdodDogMTBweCAhZGVmYXVsdDtcbiRjYXJvdXNlbC1pbmRpY2F0b3Itc3BhY2VyOiAgICAgICAgICAzcHggIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtaW5kaWNhdG9yLWFjdGl2ZS1iZzogICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJGNhcm91c2VsLWluZGljYXRvci10cmFuc2l0aW9uOiAgICAgIG9wYWNpdHkgLjZzIGVhc2UgIWRlZmF1bHQ7XG5cbiRjYXJvdXNlbC1jYXB0aW9uLXdpZHRoOiAgICAgICAgICAgICA3MCUgIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtY2FwdGlvbi1jb2xvcjogICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuXG4kY2Fyb3VzZWwtY29udHJvbC1pY29uLXdpZHRoOiAgICAgICAgMjBweCAhZGVmYXVsdDtcblxuJGNhcm91c2VsLWNvbnRyb2wtcHJldi1pY29uLWJnOiAgICAgIHN0ci1yZXBsYWNlKHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBmaWxsPScjeyRjYXJvdXNlbC1jb250cm9sLWNvbG9yfScgdmlld0JveD0nMCAwIDggOCclM2UlM2NwYXRoIGQ9J001LjI1IDBsLTQgNCA0IDQgMS41LTEuNS0yLjUtMi41IDIuNS0yLjUtMS41LTEuNXonLyUzZSUzYy9zdmclM2VcIiksIFwiI1wiLCBcIiUyM1wiKSAhZGVmYXVsdDtcbiRjYXJvdXNlbC1jb250cm9sLW5leHQtaWNvbi1iZzogICAgICBzdHItcmVwbGFjZSh1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgZmlsbD0nI3skY2Fyb3VzZWwtY29udHJvbC1jb2xvcn0nIHZpZXdCb3g9JzAgMCA4IDgnJTNlJTNjcGF0aCBkPSdNMi43NSAwbC0xLjUgMS41IDIuNSAyLjUtMi41IDIuNSAxLjUgMS41IDQtNC00LTR6Jy8lM2UlM2Mvc3ZnJTNlXCIpLCBcIiNcIiwgXCIlMjNcIikgIWRlZmF1bHQ7XG5cbiRjYXJvdXNlbC10cmFuc2l0aW9uLWR1cmF0aW9uOiAgICAgICAuNnMgIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtdHJhbnNpdGlvbjogICAgICAgICAgICAgICAgdHJhbnNmb3JtICRjYXJvdXNlbC10cmFuc2l0aW9uLWR1cmF0aW9uIGVhc2UtaW4tb3V0ICFkZWZhdWx0OyAvLyBEZWZpbmUgdHJhbnNmb3JtIHRyYW5zaXRpb24gZmlyc3QgaWYgdXNpbmcgbXVsdGlwbGUgdHJhbnNpdGlvbnMgKGUuZy4sIGB0cmFuc2Zvcm0gMnMgZWFzZSwgb3BhY2l0eSAuNXMgZWFzZS1vdXRgKVxuXG5cbi8vIFNwaW5uZXJzXG5cbiRzcGlubmVyLXdpZHRoOiAgICAgICAgIDJyZW0gIWRlZmF1bHQ7XG4kc3Bpbm5lci1oZWlnaHQ6ICAgICAgICAkc3Bpbm5lci13aWR0aCAhZGVmYXVsdDtcbiRzcGlubmVyLWJvcmRlci13aWR0aDogIC4yNWVtICFkZWZhdWx0O1xuXG4kc3Bpbm5lci13aWR0aC1zbTogICAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kc3Bpbm5lci1oZWlnaHQtc206ICAgICAgICRzcGlubmVyLXdpZHRoLXNtICFkZWZhdWx0O1xuJHNwaW5uZXItYm9yZGVyLXdpZHRoLXNtOiAuMmVtICFkZWZhdWx0O1xuXG5cbi8vIENsb3NlXG5cbiRjbG9zZS1mb250LXNpemU6ICAgICAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIDEuNSAhZGVmYXVsdDtcbiRjbG9zZS1mb250LXdlaWdodDogICAgICAgICAgICAgICAgICRmb250LXdlaWdodC1ib2xkICFkZWZhdWx0O1xuJGNsb3NlLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgJGJsYWNrICFkZWZhdWx0O1xuJGNsb3NlLXRleHQtc2hhZG93OiAgICAgICAgICAgICAgICAgMCAxcHggMCAkd2hpdGUgIWRlZmF1bHQ7XG5cblxuLy8gQ29kZVxuXG4kY29kZS1mb250LXNpemU6ICAgICAgICAgICAgICAgICAgICA4Ny41JSAhZGVmYXVsdDtcbiRjb2RlLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgICRwaW5rICFkZWZhdWx0O1xuXG4ka2JkLXBhZGRpbmcteTogICAgICAgICAgICAgICAgICAgICAuMnJlbSAhZGVmYXVsdDtcbiRrYmQtcGFkZGluZy14OiAgICAgICAgICAgICAgICAgICAgIC40cmVtICFkZWZhdWx0O1xuJGtiZC1mb250LXNpemU6ICAgICAgICAgICAgICAgICAgICAgJGNvZGUtZm9udC1zaXplICFkZWZhdWx0O1xuJGtiZC1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJGtiZC1iZzogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGdyYXktOTAwICFkZWZhdWx0O1xuXG4kcHJlLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgICAkZ3JheS05MDAgIWRlZmF1bHQ7XG4kcHJlLXNjcm9sbGFibGUtbWF4LWhlaWdodDogICAgICAgICAzNDBweCAhZGVmYXVsdDtcblxuXG4vLyBVdGlsaXRpZXNcblxuJGRpc3BsYXlzOiBub25lLCBpbmxpbmUsIGlubGluZS1ibG9jaywgYmxvY2ssIHRhYmxlLCB0YWJsZS1yb3csIHRhYmxlLWNlbGwsIGZsZXgsIGlubGluZS1mbGV4ICFkZWZhdWx0O1xuJG92ZXJmbG93czogYXV0bywgaGlkZGVuICFkZWZhdWx0O1xuJHBvc2l0aW9uczogc3RhdGljLCByZWxhdGl2ZSwgYWJzb2x1dGUsIGZpeGVkLCBzdGlja3kgIWRlZmF1bHQ7XG5cblxuLy8gUHJpbnRpbmdcblxuJHByaW50LXBhZ2Utc2l6ZTogICAgICAgICAgICAgICAgICAgYTMgIWRlZmF1bHQ7XG4kcHJpbnQtYm9keS1taW4td2lkdGg6ICAgICAgICAgICAgICBtYXAtZ2V0KCRncmlkLWJyZWFrcG9pbnRzLCBcImxnXCIpICFkZWZhdWx0O1xuIiwiLmMtY2FyZCB7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJhY2tncm91bmQ6ICNmZWZlZmU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNCQ0M2Q0U7XG4gIGNvbG9yOiAjMjEyNTI5O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICBwYWRkaW5nOiAxZW07XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDMwMG1zIGVhc2UtaW4tb3V0LCBjb2xvciAzMDBtcyBlYXNlLWluLW91dDtcbiAgd2lkdGg6IDEwMCU7XG59XG4uYy1jYXJkOmhvdmVyLCAuYy1jYXJkOmZvY3VzIHtcbiAgYm9yZGVyLWNvbG9yOiAjMDA1OEE4O1xuICBjb2xvcjogIzAwNThBODtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuLmMtY2FyZF9jb250cm9scyB7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xufVxuLmMtY2FyZF9jb250cm9sIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAyO1xufVxuLmMtY2FyZF9jbG9zZSB7XG4gIGNvbG9yOiAjZGMzNTQ1O1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cbi5jLWNhcmRfY29udGVudCxcbi5jLWNhcmQgPiAuYy1qb2ItY2FyZF90aXRsZSB7XG4gIG1hcmdpbjogMCAwLjYyNXJlbTtcbn1cbi5jLWNhcmRfZGVzY3JpcHRpb24ge1xuICBmb250LXNpemU6IDAuODVlbTtcbn0iXX0= */\"","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'card',\r\n templateUrl: './card.component.html',\r\n styleUrls: ['./card.component.scss']\r\n})\r\nexport class CardComponent implements OnInit {\r\n\t@Input() url : string = '#';\r\n\t@Input() linkTitle : string = 'Click to View';\r\n\t@Input() title : string = '';\r\n\t@Input() description : string = '';\r\n\t@Input() icon : string = '';\r\n\r\n\t@Input() onClose = ''\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\t
\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\tAdd Comment\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t{{ comment.User.FullName || comment.User.Email }}\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{ comment.CreatedDate | date:'medium' }} \\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\tDelete\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\tCancel\\r\\n\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\tUpdate\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\r\\n\\t\\r\\n\\t\\r\\n\\t\\r\\n
\\r\\n\"","module.exports = \".c-comments {\\n margin-bottom: 1rem;\\n margin-top: 2rem;\\n}\\n.c-comments_buttons {\\n display: flex;\\n flex-wrap: wrap;\\n padding-top: 1em;\\n}\\n.c-comments_button:not(:last-child) {\\n margin-right: 0.75rem;\\n}\\n.c-comments_button--submit {\\n margin-left: auto;\\n}\\n.c-comments_options {\\n border: none;\\n background-color: unset;\\n}\\n.c-comment {\\n margin-bottom: 2rem;\\n padding-bottom: 2rem;\\n}\\n.c-comment:not(:last-child) {\\n border-bottom: 1px solid #BCC6CE;\\n}\\n.c-comment_header {\\n display: flex;\\n font-size: 0.85em;\\n justify-content: space-between;\\n margin-bottom: 0.25rem;\\n}\\n@media (max-width: 767px) {\\n .c-comment_header {\\n flex-wrap: wrap;\\n }\\n}\\n.c-comment_field {\\n background: #e5e5e5;\\n}\\n.c-comment_field:focus {\\n background: #fefefe;\\n}\\n.c-comment_text {\\n white-space: pre-line;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9jb21tZW50cy9DOlxcVXNlcnNcXERhbmllbFxcRGVza3RvcFxcUHJvamVjdHNcXFN0ZXJsaW5nUm9vZmluZy9zcmNcXGFwcFxcY29tcG9uZW50c1xcY29tbWVudHNcXGNvbW1lbnRzLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2NvbW1lbnRzL2NvbW1lbnRzLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2NvbW1lbnRzL0M6XFxVc2Vyc1xcRGFuaWVsXFxEZXNrdG9wXFxQcm9qZWN0c1xcU3RlcmxpbmdSb29maW5nL3NyY1xcc3R5bGVzXFxfdmFyaWFibGVzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDQyxtQkFBQTtFQUNBLGdCQUFBO0FDREQ7QURHQztFQUNDLGFBQUE7RUFDQSxlQUFBO0VBQ0EsZ0JBQUE7QUNERjtBREtFO0VBQ0MscUJBQUE7QUNISDtBRE1FO0VBQ0MsaUJBQUE7QUNKSDtBRFFDO0VBQ0MsWUFBQTtFQUNBLHVCQUFBO0FDTkY7QURXQTtFQUNDLG1CQUFBO0VBQ0Esb0JBQUE7QUNSRDtBRFVDO0VBQ0MsZ0NBQUE7QUNSRjtBRFdDO0VBQ0MsYUFBQTtFQUNBLGlCQUFBO0VBQ0EsOEJBQUE7RUFDQSxzQkFBQTtBQ1RGO0FEV0U7RUFORDtJQU9FLGVBQUE7RUNSRDtBQUNGO0FEV0M7RUFDQyxtQkFBQTtBQ1RGO0FEV0U7RUFDQyxtQkU3Q0s7QURvQ1I7QURjQTtFQUNDLHFCQUFBO0FDWEQiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL2NvbW1lbnRzL2NvbW1lbnRzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnY29tcG9uZW50LWhlYWRlcic7XHJcblxyXG4uYy1jb21tZW50cyB7XHJcblx0bWFyZ2luLWJvdHRvbTogMXJlbTtcclxuXHRtYXJnaW4tdG9wOiAycmVtO1xyXG5cclxuXHQmX2J1dHRvbnMge1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGZsZXgtd3JhcDogd3JhcDtcclxuXHRcdHBhZGRpbmctdG9wOiAxZW07XHJcblx0fVxyXG5cclxuXHQmX2J1dHRvbiB7XHJcblx0XHQmOm5vdCg6bGFzdC1jaGlsZCkge1xyXG5cdFx0XHRtYXJnaW4tcmlnaHQ6IC43NXJlbTtcclxuXHRcdH1cclxuXHJcblx0XHQmLS1zdWJtaXQge1xyXG5cdFx0XHRtYXJnaW4tbGVmdDogYXV0bztcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdCZfb3B0aW9ucyB7XHJcblx0XHRib3JkZXI6IG5vbmU7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB1bnNldDtcclxuXHR9XHJcblxyXG59XHJcblxyXG4uYy1jb21tZW50IHtcclxuXHRtYXJnaW4tYm90dG9tOiAycmVtO1xyXG5cdHBhZGRpbmctYm90dG9tOiAycmVtO1xyXG5cclxuXHQmOm5vdCg6bGFzdC1jaGlsZCkge1xyXG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRtZWRpdW0tbGlnaHQtZ3JheTtcclxuXHR9XHJcblxyXG5cdCZfaGVhZGVyIHtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRmb250LXNpemU6IC44NWVtO1xyXG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG5cdFx0bWFyZ2luLWJvdHRvbTogLjI1cmVtO1xyXG5cclxuXHRcdEBtZWRpYShtYXgtd2lkdGg6IDc2N3B4KXtcclxuXHRcdFx0ZmxleC13cmFwOiB3cmFwO1x0XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQmX2ZpZWxkIHtcclxuXHRcdGJhY2tncm91bmQ6IGRhcmtlbigkd2hpdGUsIDEwJSk7XHJcblxyXG5cdFx0Jjpmb2N1cyB7XHJcblx0XHRcdGJhY2tncm91bmQ6ICR3aGl0ZTtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcbi5jLWNvbW1lbnRfdGV4dCB7XHJcblx0d2hpdGUtc3BhY2U6IHByZS1saW5lO1xyXG59IiwiLmMtY29tbWVudHMge1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICBtYXJnaW4tdG9wOiAycmVtO1xufVxuLmMtY29tbWVudHNfYnV0dG9ucyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgcGFkZGluZy10b3A6IDFlbTtcbn1cbi5jLWNvbW1lbnRzX2J1dHRvbjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgbWFyZ2luLXJpZ2h0OiAwLjc1cmVtO1xufVxuLmMtY29tbWVudHNfYnV0dG9uLS1zdWJtaXQge1xuICBtYXJnaW4tbGVmdDogYXV0bztcbn1cbi5jLWNvbW1lbnRzX29wdGlvbnMge1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6IHVuc2V0O1xufVxuXG4uYy1jb21tZW50IHtcbiAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbiAgcGFkZGluZy1ib3R0b206IDJyZW07XG59XG4uYy1jb21tZW50Om5vdCg6bGFzdC1jaGlsZCkge1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0JDQzZDRTtcbn1cbi5jLWNvbW1lbnRfaGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZm9udC1zaXplOiAwLjg1ZW07XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbTtcbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAuYy1jb21tZW50X2hlYWRlciB7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICB9XG59XG4uYy1jb21tZW50X2ZpZWxkIHtcbiAgYmFja2dyb3VuZDogI2U1ZTVlNTtcbn1cbi5jLWNvbW1lbnRfZmllbGQ6Zm9jdXMge1xuICBiYWNrZ3JvdW5kOiAjZmVmZWZlO1xufVxuXG4uYy1jb21tZW50X3RleHQge1xuICB3aGl0ZS1zcGFjZTogcHJlLWxpbmU7XG59IiwiLy8gQ3VzdG9tIENvbG9yc1xyXG5cclxuJGRhcmstZ3JheTogIzI0MjQyNDtcclxuJG1lZGl1bS1kYXJrLWdyYXk6ICM2MTYxNjE7XHJcbiRtZWRpdW0tZ3JheTogIzUyNTI1MjtcclxuJG1lZGl1bS1saWdodC1ncmF5OiAjQkNDNkNFO1xyXG4kbGlnaHQtZ3JheTogI0U4RThFODtcclxuJHdoaXRlOiAjZmVmZWZlO1xyXG4kYmx1ZTogIzAwNTNBQztcclxuJGRhcmstYmx1ZTogIzUxNzA4RDtcclxuXHJcbiRwcmltYXJ5OiAjMDA1OEE4O1xyXG4kc2Vjb25kYXJ5OiAjMDA1OEE4O1xyXG4keWVsbG93OiAjRkZDMjM2O1xyXG4kb3JhbmdlOiAjRkY5NTJCO1xyXG4kaW5mbzogI2UyZTNlNTtcclxuXHJcbi8vIEFwcCBWYXJpYWJsZXNcclxuJGNvbnRhaW5lci1tYXgtd2lkdGg6IDEyMDBweDtcclxuJHNpZGViYXItYmc6ICRkYXJrLWdyYXk7XHJcbiRzaWRlYmFyLXdpZHRoOiAyNTBweDtcclxuXHJcbi8vIEJvb3RzdHJhcCBWYXJpYWJsZXNcclxuXHJcbi8vIExheW91dFxyXG5cclxuJGdyaWQtYnJlYWtwb2ludHM6IChcclxuICB4czogMCxcclxuICBzbTogNDgwcHgsXHJcbiAgbWQ6IDc2OHB4LFxyXG4gIGxnOiA5OTJweCxcclxuICB4bDogMTIwMHB4XHJcbik7XHJcblxyXG4kYm9keS1iZzogJGxpZ2h0LWdyYXk7XHJcblxyXG4vLyBUeXBvZ3JhcGh5XHJcbiRmb250LXNpemUtYmFzZTogMXJlbTtcclxuXHJcbiRmb250LWZhbWlseS1zYW5zLXNlcmlmOiAnUm9ib3RvJywgJ3NhbnMtc2VyaWYnO1xyXG5cclxuJGgxLWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS42MjU7IC8vIDI2XHJcbiRoMi1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuMzc1OyAvLyAyM1xyXG4kaDMtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UgKiAxLjI1OyAvLyAyMFxyXG4kaDQtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UgKiAxLjEyNTsgIC8vIDE4XHJcbiRoNS1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuMDYyNTsgLy8gMTdcclxuJGg2LWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlO1xyXG5cclxuXHJcbi8vIEdsb2JhbCBTdHlsZXNcclxuXHJcbiRib3JkZXItcmFkaXVzOiAwcHg7XHJcbiRib3JkZXItcmFkaXVzLWxnOiAkYm9yZGVyLXJhZGl1cztcclxuJGJvcmRlci1yYWRpdXMtc206ICRib3JkZXItcmFkaXVzO1xyXG5cclxuLy8gRm9ybXNcclxuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1iZzogJHdoaXRlO1xyXG5cclxuLy8gQmFkZ2VzXHJcbiRiYWRnZS1wYWRkaW5nLXk6IC41ZW07XHJcbiRiYWRnZS1wYWRkaW5nLXg6IC44ZW07XHJcbiRiYWRnZS1waWxsLXBhZGRpbmcteDogMS4yZW07XHJcbiJdfQ== */\"","import { Component, OnInit, Input, ElementRef, ViewChild, ViewChildren, QueryList } from '@angular/core';\r\nimport { FormGroup, FormBuilder, FormControl, Validators } from '@angular/forms';\r\n\r\nimport { AlertService } from '@/services/alert/alert.service';\r\nimport { CommentsService } from '@/services/comments/comments.service';\r\nimport { AuthService } from '@/services/auth/auth.service';\r\nimport { BehaviorSubject, Observable, from } from 'rxjs';\r\nimport { Comment } from '@/models/comment';\r\nimport { TagifyComponent, TagData, TagifySettings, TagifyService } from 'ngx-tagify';\r\n// import { User } from '@/models/user';\r\n// import { text } from '@angular/core/src/render3';\r\n\r\n@Component({\r\n\tselector: 'app-comments',\r\n\ttemplateUrl: './comments.component.html',\r\n\tstyleUrls: ['./comments.component.scss']\r\n})\r\nexport class CommentsComponent implements OnInit {\r\n\r\n\t@Input() type: string = '';\r\n\t@Input() id: string = '';\r\n\t@Input() start: number;\r\n\t@Input() length: number;\r\n\tcommentValue: string = '';\r\n\t// editCommentValue: string = '';\r\n\r\n\t@ViewChild('commentButton')\r\n\tcommentButton: ElementRef;\r\n\r\n\t@ViewChildren(\"comments\")\r\n\tcommentsEl: QueryList;\r\n\r\n\t// pagination variables\r\n\tentriesPerPage: number = 10;\r\n\tcurrentPage: number = 1;\r\n\r\n\tuserRoleID = this.authService.currentUserValue['role'].id;\r\n\r\n\tnewCommentSubmitted: Boolean = false\r\n\tnewComment = new Comment();\r\n\tcommentEdited = new Comment();\r\n\teditingComment: boolean = false;\r\n\r\n\tcomments: Comment[];\r\n\r\n\tcommentForm: FormGroup;\r\n\teditCommentForm: FormGroup;\r\n\tuserList:TagData[];\r\n\r\n\tcommentSettings: TagifySettings = {\r\n\t\tplaceholder: 'Start typing...',\r\n\t\t// whitelist: this.userList,\r\n\t\teditTags: false,\r\n\t\tenforceWhitelist: true,\r\n\t\tmode: 'mix', // <-- Enable mixed-content\r\n\t\tpattern: /@/,\r\n\t\tdropdown: {\r\n\t\t\tclassname: \"color-blue\",\r\n\t\t\tenabled: 0, // show the dropdown immediately on focus\r\n\t\t\tmaxItems: 5,\r\n\t\t\tposition: \"text\", // place the dropdown near the typed text\r\n\t\t\tcloseOnSelect: true, // keep the dropdown open after selecting a suggestion\r\n\t\t\thighlightFirst: true\r\n\t\t},\r\n\t\tdelimiters: ',| |\\n|\\r',\r\n\t\tcallbacks: {\r\n\t\t\tchange: (e) => { \r\n\t\t\t\t// this.commentValue = e.detail.value;\r\n\t\t\t\tthis.commentValue = this.parseTags(e.detail.tagify.DOM.input.innerHTML);\r\n\t\t\t }\r\n\t\t}\r\n\t};\r\n\r\n\tconstructor(\r\n\t\tprivate alertService: AlertService,\r\n\t\tprivate formBuilder: FormBuilder,\r\n\t\tprivate commentsService: CommentsService,\r\n\t\tprivate authService: AuthService,\r\n\t\tprivate tagifyService: TagifyService\r\n\t) { }\r\n\r\n\tngOnInit() {\r\n\r\n\t\tthis.commentForm = this.formBuilder.group({\r\n\t\t\tComment: ''\r\n\t\t});\r\n\r\n\t\tthis.editCommentForm = this.formBuilder.group({\r\n\t\t\tEditComment: ''\r\n\t\t});\r\n\r\n\t\tthis.getAllCommentUsers();\r\n\t\tthis.getAllComments();\r\n\t}\r\n\r\n\tparseTags = (inputHtml: string) => {\r\n\t\tconst tmpParser = new DOMParser()\r\n\r\n\t\tvar tagsRegexp = //img;\r\n\t\tinputHtml = inputHtml.replace(tagsRegexp, function(match) {\r\n\t\t\tvar matchElem = tmpParser.parseFromString(match, \"text/html\");\r\n\t\t\tvar tagId = matchElem.querySelector('tag').getAttribute('id');\r\n\t\t\tvar tagName = matchElem.querySelector('tag').getAttribute('value');\r\n\t\t\tvar tagPrefix = matchElem.querySelector('tag').getAttribute('prefix');\r\n\t\t return `[[{\"id\":\"${tagId}\",\"value\":\"${tagName}\",\"prefix\":\"${tagPrefix}\"}]]`;\r\n\t\t});\r\n\r\n\t\treturn this.removeTags(inputHtml).replace(/ /g, \" \");\r\n\t}\r\n\t\r\n\tremoveTags (str: string) {\r\n\t\tif ((str === null) || (str === ''))\r\n\t\t\treturn '';\r\n\t\telse\r\n\t\t\tstr = str.toString();\r\n\t \r\n\t\t// Regular expression to identify HTML tags in\r\n\t\t// the input string. Replacing the identified\r\n\t\t// HTML tag with a null string.\r\n\t\treturn str.replace(/(<([^>]+)>)/ig, '');\r\n\t}\r\n\r\n\tgetAllCommentUsers() {\r\n\t\tthis.commentsService.getCommentsUserList().subscribe((result) => {\r\n\t\t\tlet tmpUserList = result.body['data'];\r\n\t\t\tlet newUserList:TagData[] = new Array();\r\n\t\t\ttmpUserList.forEach(user => {\r\n\t\t\t\tlet newTag:TagData = {id:user.id, value:user.value};\r\n\t\t\t\tnewUserList.push(newTag);\r\n\t\t\t});\r\n\r\n\t\t\tthis.userList = newUserList;\r\n\t\t\tthis.tagifyService.get('Comment').settings.whitelist = newUserList;\r\n\t\t});\r\n\t}\r\n\r\n\tgetAllComments() {\r\n\t\tthis.commentsService.getComments(this.id, this.type, this.start, this.length)\r\n\t\t\t.subscribe((result) => {\r\n\t\t\t\tlet comments = result.body['data'];\r\n\t\t\t\tconsole.log('comments', comments);\r\n\t\t\t\tcomments.forEach(comment => {\r\n\t\t\t\t\tconsole.log('comment1', comment);\r\n\t\t\t\t\t// Simplify tags for editing\r\n\t\t\t\t\tcomment.EditText = this.commentsService.generateCleanEditText(comment.CommentText);\r\n\t\t\t\t\tcomment.CleanCommentText = this.commentsService.generateCleanCommentText(comment.CommentText);\r\n\r\n\t\t\t\t\tconsole.log('comment2', comment);\r\n\t\t\t\t\tif (comment.CommentText.indexOf(\"\\n\") > 0) {\r\n\t\t\t\t\t\tcomment.CommentText = comment.CommentText.replace(/\\n/g, \"
\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconsole.log('comment3', comment);\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// Sort comments in ascending order\r\n\t\t\t\tcomments.sort((a, b) => {\r\n\t\t\t\t\tconst date1 = new Date(a.CreatedDate)\r\n\t\t\t\t\tconst date2 = new Date(b.CreatedDate)\r\n\r\n\t\t\t\t\treturn date2.getTime() - date1.getTime()\r\n\t\t\t\t})\r\n\r\n\t\t\t\tconsole.log('comments final', comments);\r\n\t\t\t\tthis.comments = comments;\r\n\t\t});\r\n\t}\r\n\r\n\tpageChanged(newPage: number) {\r\n\t\tthis.currentPage = newPage\r\n\t}\r\n\r\n\tdeleteComment(ID) {\r\n\t\t// Method must still be subscribed to to delete a comment\r\n\t\tthis.commentsService.deleteComment(ID).subscribe((result) => {\r\n\r\n\t\t\tthis.comments.forEach((comment, i) => {\r\n\r\n\t\t\t\tif (comment.ID === ID) {\r\n\t\t\t\t\tthis.comments.splice(i, 1);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tclearCommentForm() {\r\n\t\tthis.commentForm.reset();\r\n\t\tthis.commentValue = '';\r\n\t\tthis.tagifyService.get('Comment').removeAllTags();\r\n\t}\r\n\r\n\tget newCommentForm() {\r\n\t\treturn this.commentForm.controls\r\n\t}\r\n\r\n\tonSubmit = () => {\r\n\t\tthis.commentButton.nativeElement.toggleAttribute('readonly')\r\n\t\tthis.newCommentSubmitted = true;\r\n\t\t\r\n\t\tif (this.commentValue.trim() == '') {\r\n\t\t\tconsole.error('form submission invalid');\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// if (this.commentForm.invalid) {\r\n\t\t// \tconsole.error('form submission invalid');\r\n\t\t// \treturn;\r\n\t\t// }\r\n\r\n\t\tthis.newComment.ObjectID = this.id;\r\n\t\tthis.newComment.ObjectType = this.type;\r\n\t\tthis.newComment.CommentText = this.commentValue.trim();\r\n\r\n\t\tthis.commentsService.createComment(this.newComment)\r\n\t\t\t.subscribe(\r\n\t\t\t\t(data: any) => {\r\n\t\t\t\t\tthis.getAllComments();\r\n\t\t\t\t\tthis.clearCommentForm();\r\n\t\t\t\t\tthis.newCommentSubmitted = false\r\n\t\t\t\t\tthis.alertService.success(`Comment Posted!`, true);\r\n\t\t\t\t\tthis.commentButton.nativeElement.toggleAttribute('readonly')\r\n\t\t\t\t},\r\n\t\t\t\terror => {\r\n\t\t\t\t\tthis.alertService.error(error);\r\n\r\n\t\t\t\t\tdocument.body.scrollIntoView({ behavior: \"smooth\" });\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t}\r\n\r\n\teditComment(commentEdited) {\r\n\t\tthis.commentEdited = commentEdited;\r\n\t\tcommentEdited.editingComment = false;\r\n\t\tcommentEdited.CommentText = this.editCommentForm.get('EditComment').value;\r\n\r\n\t\tthis.commentsService.updateComment(commentEdited.ID, commentEdited)\r\n\t\t\t.subscribe((result) => {\r\n\t\t\t\tthis.alertService.success(`Comment Updated!`, true);\r\n\r\n\t\t\t\tcommentEdited.EditText = this.commentsService.generateCleanEditText(commentEdited.CommentText);\r\n\t\t\t\tcommentEdited.CleanCommentText = this.commentsService.generateCleanCommentText(commentEdited.CommentText);\r\n\r\n\t\t\t\t//also replace the created date with the modified date\r\n\t\t\t\tcommentEdited.CreatedDate = commentEdited.LastModifiedDate;\r\n\r\n\t\t\t\tthis.comments.forEach(comment => {\r\n\t\t\t\t\tif (comment.ID === commentEdited.ID) {\r\n\t\t\t\t\t\tcomment = commentEdited;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\terror => {\r\n\t\t\t\tthis.alertService.error(error);\r\n\t\t\t\tdocument.body.scrollIntoView({ behavior: \"smooth\" });\r\n\t\t\t}\r\n\r\n\t\t);\r\n\t}\r\n\r\n\ttoggleEditBoxes(event, commentEdited) {\r\n\r\n\t\tlet targetID = event.currentTarget.id\r\n\r\n\t\tcommentEdited['editingComment'] = !commentEdited['editingComment'];\r\n\r\n\t\tthis.comments.forEach((comment, index) => {\r\n\r\n\t\t\t// let currentComment = this.commentsEl.toArray()[index].nativeElement;\r\n\t\t\tif (commentEdited.ID !== comment.ID) {\r\n\t\t\t\tcomment['editingComment'] = false;\r\n\t\t\t}\r\n\r\n\t\t\t// Settimeout must be applied to allow time for the element to exist before focusing\r\n\t\t\t// if (currentComment.classList.contains(targetID)) {\r\n\t\t\t// \tsetTimeout(() => currentComment.focus(), 0);\r\n\t\t\t// }\r\n\t\t});\r\n\r\n\t}\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\t
\\r\\n\\t\\t

\\r\\n\\t\\t\\t{{ title }}\\r\\n\\t\\t

\\r\\n\\t\\t\\r\\n\\t\\t\\t{{ viewText }}\\r\\n\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\tCreated On\\r\\n\\t\\t\\tJob Type\\r\\n\\t\\t\\tType\\r\\n\\t\\t\\tMessage\\r\\n\\t\\t\\tDetail\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{ row.GeneratedDate | date }}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{ row.ObjectType }}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{ row.Type }}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{ row.Message }}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n \\t\\r\\n
\\r\\n\"","module.exports = \".c-datatable_header {\\n align-items: flex-start;\\n display: flex;\\n margin-bottom: 10px;\\n position: relative;\\n transform: translateY(0);\\n z-index: 2;\\n width: 100%;\\n justify-content: space-between;\\n}\\n@media (min-width: 768px) {\\n .c-datatable_header {\\n width: calc(100% - 240px);\\n justify-content: normal;\\n margin-bottom: 0;\\n transform: translateY(100%);\\n }\\n}\\n.c-datatable_location {\\n min-width: 170px;\\n}\\n.c-datatable .dataTables_filter {\\n text-align: left;\\n}\\n.c-datatable_view-link {\\n line-height: 2;\\n margin-left: 1em;\\n}\\n@media (min-width: 768px) {\\n .c-datatable_view-link {\\n margin-left: 2em;\\n }\\n}\\n.c-datatable_table {\\n background: #fefefe;\\n}\\n.c-datatable_address {\\n margin-bottom: 0.5rem;\\n}\\n.c-datatable small {\\n font-size: 0.75rem;\\n}\\n.c-datatable .inspection-dropdown button {\\n font-size: 0.875rem;\\n text-transform: capitalize;\\n}\\n.c-datatable thead {\\n background: #616161;\\n color: #fefefe;\\n}\\n.c-datatable thead .sorting, .c-datatable thead .sorting_asc, .c-datatable thead .sorting_desc {\\n background-image: none;\\n position: relative;\\n}\\n.c-datatable thead .sorting::after, .c-datatable thead .sorting_asc::after, .c-datatable thead .sorting_desc::after {\\n bottom: auto;\\n display: inline-block;\\n font-family: \\\"Font Awesome 5 Pro\\\";\\n font-weight: 900;\\n position: absolute;\\n right: 4px;\\n top: 50%;\\n transform: translateY(-50%);\\n}\\n.c-datatable thead .sorting::before, .c-datatable thead .sorting_asc::before, .c-datatable thead .sorting_desc::before {\\n display: none;\\n}\\n.c-datatable thead .sorting_asc::after, .c-datatable thead .sorting_desc::after {\\n color: #fefefe;\\n opacity: 1;\\n}\\n.c-datatable thead .sorting::after {\\n content: \\\"\\\\f0dc\\\";\\n}\\n.c-datatable thead .sorting_asc::after {\\n content: \\\"\\\\f0de\\\";\\n}\\n.c-datatable thead .sorting_desc::after {\\n content: \\\"\\\\f0dd\\\";\\n}\\n.c-datatable th,\\n.c-datatable td {\\n border-right: 1px solid #E8E8E8;\\n font-size: 0.875rem;\\n}\\n.c-datatable th:last-child,\\n.c-datatable td:last-child {\\n border-right: none;\\n}\\n.c-datatable th {\\n border-bottom: none;\\n font-weight: normal;\\n white-space: nowrap;\\n}\\n.c-datatable_export-button {\\n background: none;\\n border: 0;\\n cursor: pointer;\\n color: #0058A8;\\n position: absolute;\\n transform: translateY(-145%);\\n z-index: 1;\\n}\\n.c-datatable_modal-button {\\n background: none;\\n border: 0;\\n cursor: pointer;\\n color: #0058A8;\\n}\\n.c-datatable ul {\\n display: block;\\n list-style-type: none;\\n padding-left: 0;\\n margin-bottom: 0;\\n}\\n.c-datatable.alerts-table header {\\n align-items: center;\\n width: 100%;\\n flex-wrap: wrap;\\n row-gap: 10px;\\n}\\n@media (min-width: 768px) {\\n .c-datatable.alerts-table header {\\n flex-wrap: nowrap;\\n width: -moz-fit-content;\\n width: fit-content;\\n -moz-column-gap: 50px;\\n column-gap: 50px;\\n }\\n}\\n.c-datatable.alerts-table form {\\n width: 100%;\\n}\\n.c-datatable.alerts-table form .form-group {\\n display: flex;\\n -moz-column-gap: 10px;\\n column-gap: 10px;\\n align-items: center;\\n margin: 0;\\n}\\n.c-datatable.alerts-table form .form-group label {\\n display: inline-block;\\n margin-bottom: 0;\\n width: 115px;\\n}\\n@media (min-width: 768px) {\\n .c-datatable.alerts-table form .form-group label {\\n width: -moz-max-content;\\n width: max-content;\\n }\\n}\\n.c-datatable.alerts-table #selectTypeFilters,\\n.c-datatable.alerts-table #selectFilters {\\n width: 100%;\\n}\\n@media (min-width: 768px) {\\n .c-datatable.alerts-table #selectTypeFilters,\\n.c-datatable.alerts-table #selectFilters {\\n width: 200px;\\n }\\n}\\n.c-datatable.alerts-table .dataTables_wrapper {\\n background-color: pink;\\n text-align: left;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9kYXRhdGFibGUvYWxlcnRzLWRhdGF0YWJsZS9DOlxcVXNlcnNcXERhbmllbFxcRGVza3RvcFxcUHJvamVjdHNcXFN0ZXJsaW5nUm9vZmluZy9zcmNcXGFwcFxcY29tcG9uZW50c1xcZGF0YXRhYmxlXFxhbGVydHMtZGF0YXRhYmxlXFxhbGVydHMtZGF0YXRhYmxlLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2RhdGF0YWJsZS9hbGVydHMtZGF0YXRhYmxlL2FsZXJ0cy1kYXRhdGFibGUuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvZGF0YXRhYmxlL2FsZXJ0cy1kYXRhdGFibGUvQzpcXFVzZXJzXFxEYW5pZWxcXERlc2t0b3BcXFByb2plY3RzXFxTdGVybGluZ1Jvb2Zpbmcvbm9kZV9tb2R1bGVzXFxib290c3RyYXBcXHNjc3NcXG1peGluc1xcX2JyZWFrcG9pbnRzLnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvZGF0YXRhYmxlL2FsZXJ0cy1kYXRhdGFibGUvQzpcXFVzZXJzXFxEYW5pZWxcXERlc2t0b3BcXFByb2plY3RzXFxTdGVybGluZ1Jvb2Zpbmcvc3JjXFxzdHlsZXNcXF92YXJpYWJsZXMuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9kYXRhdGFibGUvYWxlcnRzLWRhdGF0YWJsZS9DOlxcVXNlcnNcXERhbmllbFxcRGVza3RvcFxcUHJvamVjdHNcXFN0ZXJsaW5nUm9vZmluZy9zdGRpbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQztFQUNDLHVCQUFBO0VBQ0EsYUFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7RUFDQSx3QkFBQTtFQUNBLFVBQUE7RUFDQSxXQUFBO0VBQ0EsOEJBQUE7QUNGRjtBQ21ESTtFRnpESDtJQVdFLHlCQUFBO0lBQ0EsdUJBQUE7SUFDQSxnQkFBQTtJQUNBLDJCQUFBO0VDREQ7QUFDRjtBRElDO0VBQ0MsZ0JBQUE7QUNGRjtBREtDO0VBQ0MsZ0JBQUE7QUNIRjtBRE1DO0VBQ0MsY0FBQTtFQUNBLGdCQUFBO0FDSkY7QUNpQ0k7RUYvQkg7SUFLRSxnQkFBQTtFQ0hEO0FBQ0Y7QURNQztFQUNDLG1CR2hDTTtBRjRCUjtBRE9DO0VBQ0MscUJBQUE7QUNMRjtBRFFDO0VBQ0Msa0JBQUE7QUNORjtBRFdFO0VBQ0MsbUJBQUE7RUFDQSwwQkFBQTtBQ1RIO0FEYUM7RUFDQyxtQkd4RGlCO0VIeURqQixjR3JETTtBRjBDUjtBRGVHO0VBR0Msc0JBQUE7RUFDQSxrQkFBQTtBQ2ZKO0FEaUJJO0VBQ0MsWUFBQTtFQUNBLHFCQUFBO0VBQ0EsaUNBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLFFBQUE7RUFDQSwyQkFBQTtBQ2ZMO0FEa0JJO0VBQ0MsYUFBQTtBQ2hCTDtBRHdCSTtFQUNDLGNHcEZHO0VIcUZILFVBQUE7QUN0Qkw7QUQwQkc7RUFDQyxnQkFBQTtBQ3hCSjtBRDJCRztFQUNDLGdCQUFBO0FDekJKO0FENEJHO0VBQ0MsZ0JBQUE7QUMxQko7QUQrQkM7O0VBRUMsK0JBQUE7RUFDQSxtQkFBQTtBQzdCRjtBRDhCRTs7RUFDQyxrQkFBQTtBQzNCSDtBRCtCQztFQUNDLG1CQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQkFBQTtBQzdCRjtBRGdDQztFQUNDLGdCQUFBO0VBQ0EsU0FBQTtFQUNBLGVBQUE7RUFDQSxjR3RIUTtFSHVIUixrQkFBQTtFQUNBLDRCQUFBO0VBQ0EsVUFBQTtBQzlCRjtBRGlDQztFQUNDLGdCQUFBO0VBQ0EsU0FBQTtFQUNBLGVBQUE7RUFDQSxjR2hJUTtBRmlHVjtBRGtDQztFQUNDLGNBQUE7RUFDQSxxQkFBQTtFQUNBLGVBQUE7RUFDQSxnQkFBQTtBQ2hDRjtBRy9HQztFQUNDLG1CQUFBO0VBQ0EsV0FBQTtFQUNBLGVBQUE7RUFDQSxhQUFBO0FIa0hGO0FDN0RJO0VFekRIO0lBT0UsaUJBQUE7SUFDQSx1QkFBQTtJQUFBLGtCQUFBO0lBQ0EscUJBQUE7U0FBQSxnQkFBQTtFSG1IRDtBQUNGO0FHL0dDO0VBQ0MsV0FBQTtBSGlIRjtBRy9HRTtFQUNDLGFBQUE7RUFDQSxxQkFBQTtPQUFBLGdCQUFBO0VBQ0EsbUJBQUE7RUFDQSxTQUFBO0FIaUhIO0FHL0dHO0VBQ0MscUJBQUE7RUFDQSxnQkFBQTtFQUNBLFlBQUE7QUhpSEo7QUNsRkk7RUVsQ0Q7SUFNRSx1QkFBQTtJQUFBLGtCQUFBO0VIa0hIO0FBQ0Y7QUc3R0M7O0VBRUMsV0FBQTtBSCtHRjtBQzNGSTtFRXRCSDs7SUFLRSxZQUFBO0VIaUhEO0FBQ0Y7QUc3R0M7RUFDQyxzQkFBQTtFQUNBLGdCQUFBO0FIK0dGIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9kYXRhdGFibGUvYWxlcnRzLWRhdGF0YWJsZS9hbGVydHMtZGF0YXRhYmxlLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnY29tcG9uZW50LWhlYWRlcic7XHJcblxyXG4uYy1kYXRhdGFibGUge1xyXG5cdCZfaGVhZGVyIHtcclxuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdG1hcmdpbi1ib3R0b206IDEwcHg7XHJcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XHJcblx0XHR6LWluZGV4OiAyO1xyXG5cdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcblxyXG5cdFx0QGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChtZCkge1xyXG5cdFx0XHR3aWR0aDogY2FsYygxMDAlIC0gMjQwcHgpO1xyXG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IG5vcm1hbDtcclxuXHRcdFx0bWFyZ2luLWJvdHRvbTogMDtcclxuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Jl9sb2NhdGlvbiB7XHJcblx0XHRtaW4td2lkdGg6IDE3MHB4O1xyXG5cdH1cclxuXHJcblx0LmRhdGFUYWJsZXNfZmlsdGVye1xyXG5cdFx0dGV4dC1hbGlnbjogbGVmdDtcclxuXHR9XHJcblxyXG5cdCZfdmlldy1saW5rIHtcclxuXHRcdGxpbmUtaGVpZ2h0OiAyO1xyXG5cdFx0bWFyZ2luLWxlZnQ6IDFlbTtcclxuXHJcblx0XHRAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKG1kKSB7XHJcblx0XHRcdG1hcmdpbi1sZWZ0OiAyZW07XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQmX3RhYmxlIHtcclxuXHRcdGJhY2tncm91bmQ6ICR3aGl0ZTtcclxuXHR9XHJcblxyXG5cdCZfYWRkcmVzcyB7XHJcblx0XHRtYXJnaW4tYm90dG9tOiAwLjVyZW07XHJcblx0fVxyXG5cclxuXHRzbWFsbCB7XHJcblx0XHRmb250LXNpemU6IHJlbS1jYWxjKDEyKTtcclxuXHR9XHJcblxyXG5cdC5pbnNwZWN0aW9uLWRyb3Bkb3duIHtcclxuXHJcblx0XHRidXR0b257XHJcblx0XHRcdGZvbnQtc2l6ZTogMC44NzVyZW07XHJcblx0XHRcdHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dGhlYWQge1xyXG5cdFx0YmFja2dyb3VuZDogJG1lZGl1bS1kYXJrLWdyYXk7XHJcblx0XHRjb2xvcjogJHdoaXRlO1xyXG5cclxuXHRcdC5zb3J0aW5nIHtcclxuXHJcblx0XHRcdCYsXHJcblx0XHRcdCZfYXNjLFxyXG5cdFx0XHQmX2Rlc2Mge1xyXG5cdFx0XHRcdGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XHJcblx0XHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cclxuXHRcdFx0XHQmOjphZnRlciB7XHJcblx0XHRcdFx0XHRib3R0b206IGF1dG87XHJcblx0XHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHRcdFx0XHRmb250LWZhbWlseTogJ0ZvbnQgQXdlc29tZSA1IFBybyc7XHJcblx0XHRcdFx0XHRmb250LXdlaWdodDogOTAwO1xyXG5cdFx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0XHRcdFx0cmlnaHQ6IDRweDtcclxuXHRcdFx0XHRcdHRvcDogNTAlO1xyXG5cdFx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0Jjo6YmVmb3JlIHtcclxuXHRcdFx0XHRcdGRpc3BsYXk6IG5vbmU7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Jl9hc2MsXHJcblx0XHRcdCZfZGVzYyB7XHJcblxyXG5cdFx0XHRcdCY6OmFmdGVyIHtcclxuXHRcdFx0XHRcdGNvbG9yOiAkd2hpdGU7XHJcblx0XHRcdFx0XHRvcGFjaXR5OiAxO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Jjo6YWZ0ZXIge1xyXG5cdFx0XHRcdGNvbnRlbnQ6IFwiXFxmMGRjXCI7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdCZfYXNjOjphZnRlciB7XHJcblx0XHRcdFx0Y29udGVudDogXCJcXGYwZGVcIjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Jl9kZXNjOjphZnRlciB7XHJcblx0XHRcdFx0Y29udGVudDogXCJcXGYwZGRcIjtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dGgsXHJcblx0dGQge1xyXG5cdFx0Ym9yZGVyLXJpZ2h0OiAxcHggc29saWQgJGxpZ2h0LWdyYXk7XHJcblx0XHRmb250LXNpemU6IHJlbS1jYWxjKDE0KTtcclxuXHRcdCY6bGFzdC1jaGlsZCB7XHJcblx0XHRcdGJvcmRlci1yaWdodDogbm9uZTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHRoIHtcclxuXHRcdGJvcmRlci1ib3R0b206IG5vbmU7XHJcblx0XHRmb250LXdlaWdodDogbm9ybWFsO1xyXG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuXHR9XHJcblxyXG5cdCZfZXhwb3J0LWJ1dHRvbiB7XHJcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xyXG5cdFx0Ym9yZGVyOiAwO1xyXG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xyXG5cdFx0Y29sb3I6ICRwcmltYXJ5O1xyXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNDUlKTtcclxuXHRcdHotaW5kZXg6IDE7XHJcblx0fVxyXG5cclxuXHQmX21vZGFsLWJ1dHRvbiB7XHJcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xyXG5cdFx0Ym9yZGVyOiAwO1xyXG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xyXG5cdFx0Y29sb3I6ICRwcmltYXJ5O1xyXG5cdH1cclxuXHJcblx0dWwge1xyXG5cdFx0ZGlzcGxheTogYmxvY2s7XHJcblx0XHRsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XHJcblx0XHRwYWRkaW5nLWxlZnQ6IDA7XHJcblx0XHRtYXJnaW4tYm90dG9tOiAwO1xyXG5cclxuXHR9XHJcblxyXG5cclxufVxyXG5cclxuIiwiLmMtZGF0YXRhYmxlX2hlYWRlciB7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBkaXNwbGF5OiBmbGV4O1xuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgei1pbmRleDogMjtcbiAgd2lkdGg6IDEwMCU7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuYy1kYXRhdGFibGVfaGVhZGVyIHtcbiAgICB3aWR0aDogY2FsYygxMDAlIC0gMjQwcHgpO1xuICAgIGp1c3RpZnktY29udGVudDogbm9ybWFsO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICB9XG59XG4uYy1kYXRhdGFibGVfbG9jYXRpb24ge1xuICBtaW4td2lkdGg6IDE3MHB4O1xufVxuLmMtZGF0YXRhYmxlIC5kYXRhVGFibGVzX2ZpbHRlciB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG4uYy1kYXRhdGFibGVfdmlldy1saW5rIHtcbiAgbGluZS1oZWlnaHQ6IDI7XG4gIG1hcmdpbi1sZWZ0OiAxZW07XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmMtZGF0YXRhYmxlX3ZpZXctbGluayB7XG4gICAgbWFyZ2luLWxlZnQ6IDJlbTtcbiAgfVxufVxuLmMtZGF0YXRhYmxlX3RhYmxlIHtcbiAgYmFja2dyb3VuZDogI2ZlZmVmZTtcbn1cbi5jLWRhdGF0YWJsZV9hZGRyZXNzIHtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xufVxuLmMtZGF0YXRhYmxlIHNtYWxsIHtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xufVxuLmMtZGF0YXRhYmxlIC5pbnNwZWN0aW9uLWRyb3Bkb3duIGJ1dHRvbiB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xufVxuLmMtZGF0YXRhYmxlIHRoZWFkIHtcbiAgYmFja2dyb3VuZDogIzYxNjE2MTtcbiAgY29sb3I6ICNmZWZlZmU7XG59XG4uYy1kYXRhdGFibGUgdGhlYWQgLnNvcnRpbmcsIC5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZ19hc2MsIC5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZ19kZXNjIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nOjphZnRlciwgLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nX2FzYzo6YWZ0ZXIsIC5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZ19kZXNjOjphZnRlciB7XG4gIGJvdHRvbTogYXV0bztcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LWZhbWlseTogXCJGb250IEF3ZXNvbWUgNSBQcm9cIjtcbiAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogNHB4O1xuICB0b3A6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nOjpiZWZvcmUsIC5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZ19hc2M6OmJlZm9yZSwgLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nX2Rlc2M6OmJlZm9yZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uYy1kYXRhdGFibGUgdGhlYWQgLnNvcnRpbmdfYXNjOjphZnRlciwgLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nX2Rlc2M6OmFmdGVyIHtcbiAgY29sb3I6ICNmZWZlZmU7XG4gIG9wYWNpdHk6IDE7XG59XG4uYy1kYXRhdGFibGUgdGhlYWQgLnNvcnRpbmc6OmFmdGVyIHtcbiAgY29udGVudDogXCJcXGYwZGNcIjtcbn1cbi5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZ19hc2M6OmFmdGVyIHtcbiAgY29udGVudDogXCJcXGYwZGVcIjtcbn1cbi5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZ19kZXNjOjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXFxmMGRkXCI7XG59XG4uYy1kYXRhdGFibGUgdGgsXG4uYy1kYXRhdGFibGUgdGQge1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjRThFOEU4O1xuICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuLmMtZGF0YXRhYmxlIHRoOmxhc3QtY2hpbGQsXG4uYy1kYXRhdGFibGUgdGQ6bGFzdC1jaGlsZCB7XG4gIGJvcmRlci1yaWdodDogbm9uZTtcbn1cbi5jLWRhdGF0YWJsZSB0aCB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4uYy1kYXRhdGFibGVfZXhwb3J0LWJ1dHRvbiB7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjb2xvcjogIzAwNThBODtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE0NSUpO1xuICB6LWluZGV4OiAxO1xufVxuLmMtZGF0YXRhYmxlX21vZGFsLWJ1dHRvbiB7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjb2xvcjogIzAwNThBODtcbn1cbi5jLWRhdGF0YWJsZSB1bCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLmMtZGF0YXRhYmxlLmFsZXJ0cy10YWJsZSBoZWFkZXIge1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB3aWR0aDogMTAwJTtcbiAgZmxleC13cmFwOiB3cmFwO1xuICByb3ctZ2FwOiAxMHB4O1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5jLWRhdGF0YWJsZS5hbGVydHMtdGFibGUgaGVhZGVyIHtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgY29sdW1uLWdhcDogNTBweDtcbiAgfVxufVxuLmMtZGF0YXRhYmxlLmFsZXJ0cy10YWJsZSBmb3JtIHtcbiAgd2lkdGg6IDEwMCU7XG59XG4uYy1kYXRhdGFibGUuYWxlcnRzLXRhYmxlIGZvcm0gLmZvcm0tZ3JvdXAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBjb2x1bW4tZ2FwOiAxMHB4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW46IDA7XG59XG4uYy1kYXRhdGFibGUuYWxlcnRzLXRhYmxlIGZvcm0gLmZvcm0tZ3JvdXAgbGFiZWwge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIHdpZHRoOiAxMTVweDtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuYy1kYXRhdGFibGUuYWxlcnRzLXRhYmxlIGZvcm0gLmZvcm0tZ3JvdXAgbGFiZWwge1xuICAgIHdpZHRoOiBtYXgtY29udGVudDtcbiAgfVxufVxuLmMtZGF0YXRhYmxlLmFsZXJ0cy10YWJsZSAjc2VsZWN0VHlwZUZpbHRlcnMsXG4uYy1kYXRhdGFibGUuYWxlcnRzLXRhYmxlICNzZWxlY3RGaWx0ZXJzIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmMtZGF0YXRhYmxlLmFsZXJ0cy10YWJsZSAjc2VsZWN0VHlwZUZpbHRlcnMsXG4uYy1kYXRhdGFibGUuYWxlcnRzLXRhYmxlICNzZWxlY3RGaWx0ZXJzIHtcbiAgICB3aWR0aDogMjAwcHg7XG4gIH1cbn1cbi5jLWRhdGF0YWJsZS5hbGVydHMtdGFibGUgLmRhdGFUYWJsZXNfd3JhcHBlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHBpbms7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59IiwiLy8gQnJlYWtwb2ludCB2aWV3cG9ydCBzaXplcyBhbmQgbWVkaWEgcXVlcmllcy5cbi8vXG4vLyBCcmVha3BvaW50cyBhcmUgZGVmaW5lZCBhcyBhIG1hcCBvZiAobmFtZTogbWluaW11bSB3aWR0aCksIG9yZGVyIGZyb20gc21hbGwgdG8gbGFyZ2U6XG4vL1xuLy8gICAgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KVxuLy9cbi8vIFRoZSBtYXAgZGVmaW5lZCBpbiB0aGUgYCRncmlkLWJyZWFrcG9pbnRzYCBnbG9iYWwgdmFyaWFibGUgaXMgdXNlZCBhcyB0aGUgYCRicmVha3BvaW50c2AgYXJndW1lbnQgYnkgZGVmYXVsdC5cblxuLy8gTmFtZSBvZiB0aGUgbmV4dCBicmVha3BvaW50LCBvciBudWxsIGZvciB0aGUgbGFzdCBicmVha3BvaW50LlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSlcbi8vICAgIG1kXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICBtZFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAkYnJlYWtwb2ludC1uYW1lczogKHhzIHNtIG1kIGxnIHhsKSlcbi8vICAgIG1kXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludC1uYW1lczogbWFwLWtleXMoJGJyZWFrcG9pbnRzKSkge1xuICAkbjogaW5kZXgoJGJyZWFrcG9pbnQtbmFtZXMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbiAhPSBudWxsIGFuZCAkbiA8IGxlbmd0aCgkYnJlYWtwb2ludC1uYW1lcyksIG50aCgkYnJlYWtwb2ludC1uYW1lcywgJG4gKyAxKSwgbnVsbCk7XG59XG5cbi8vIE1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTnVsbCBmb3IgdGhlIHNtYWxsZXN0IChmaXJzdCkgYnJlYWtwb2ludC5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW1pbihzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KSlcbi8vICAgIDU3NnB4XG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbWluICE9IDAsICRtaW4sIG51bGwpO1xufVxuXG4vLyBNYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguIE51bGwgZm9yIHRoZSBsYXJnZXN0IChsYXN0KSBicmVha3BvaW50LlxuLy8gVGhlIG1heGltdW0gdmFsdWUgaXMgY2FsY3VsYXRlZCBhcyB0aGUgbWluaW11bSBvZiB0aGUgbmV4dCBvbmUgbGVzcyAwLjAycHhcbi8vIHRvIHdvcmsgYXJvdW5kIHRoZSBsaW1pdGF0aW9ucyBvZiBgbWluLWAgYW5kIGBtYXgtYCBwcmVmaXhlcyBhbmQgdmlld3BvcnRzIHdpdGggZnJhY3Rpb25hbCB3aWR0aHMuXG4vLyBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL21lZGlhcXVlcmllcy00LyNtcS1taW4tbWF4XG4vLyBVc2VzIDAuMDJweCByYXRoZXIgdGhhbiAwLjAxcHggdG8gd29yayBhcm91bmQgYSBjdXJyZW50IHJvdW5kaW5nIGJ1ZyBpbiBTYWZhcmkuXG4vLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODI2MVxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbWF4KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgNzY3Ljk4cHhcbkBmdW5jdGlvbiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbmV4dDogYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAcmV0dXJuIGlmKCRuZXh0LCBicmVha3BvaW50LW1pbigkbmV4dCwgJGJyZWFrcG9pbnRzKSAtIC4wMiwgbnVsbCk7XG59XG5cbi8vIFJldHVybnMgYSBibGFuayBzdHJpbmcgaWYgc21hbGxlc3QgYnJlYWtwb2ludCwgb3RoZXJ3aXNlIHJldHVybnMgdGhlIG5hbWUgd2l0aCBhIGRhc2ggaW4gZnJvbnQuXG4vLyBVc2VmdWwgZm9yIG1ha2luZyByZXNwb25zaXZlIHV0aWxpdGllcy5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHhzLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgXCJcIiAgKFJldHVybnMgYSBibGFuayBzdHJpbmcpXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgXCItc21cIlxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaW5maXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgQHJldHVybiBpZihicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKSA9PSBudWxsLCBcIlwiLCBcIi0jeyRuYW1lfVwiKTtcbn1cblxuLy8gTWVkaWEgb2YgYXQgbGVhc3QgdGhlIG1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCB3aWRlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1pbiB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTWVkaWEgb2YgYXQgbW9zdCB0aGUgbWF4aW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIGxhcmdlc3QgYnJlYWtwb2ludC5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBhbmQgbmFycm93ZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1heCB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTWVkaWEgdGhhdCBzcGFucyBtdWx0aXBsZSBicmVha3BvaW50IHdpZHRocy5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBiZXR3ZWVuIHRoZSBtaW4gYW5kIG1heCBicmVha3BvaW50c1xuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtYmV0d2VlbigkbG93ZXIsICR1cHBlciwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbG93ZXIsICRicmVha3BvaW50cyk7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCR1cHBlciwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbG93ZXIsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtaW4gPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCR1cHBlciwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8gTWVkaWEgYmV0d2VlbiB0aGUgYnJlYWtwb2ludCdzIG1pbmltdW0gYW5kIG1heGltdW0gd2lkdGhzLlxuLy8gTm8gbWluaW11bSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQsIGFuZCBubyBtYXhpbXVtIGZvciB0aGUgbGFyZ2VzdCBvbmUuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgb25seSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCwgbm90IHZpZXdwb3J0cyBhbnkgd2lkZXIgb3IgbmFycm93ZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1vbmx5KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBDdXN0b20gQ29sb3JzXHJcblxyXG4kZGFyay1ncmF5OiAjMjQyNDI0O1xyXG4kbWVkaXVtLWRhcmstZ3JheTogIzYxNjE2MTtcclxuJG1lZGl1bS1ncmF5OiAjNTI1MjUyO1xyXG4kbWVkaXVtLWxpZ2h0LWdyYXk6ICNCQ0M2Q0U7XHJcbiRsaWdodC1ncmF5OiAjRThFOEU4O1xyXG4kd2hpdGU6ICNmZWZlZmU7XHJcbiRibHVlOiAjMDA1M0FDO1xyXG4kZGFyay1ibHVlOiAjNTE3MDhEO1xyXG5cclxuJHByaW1hcnk6ICMwMDU4QTg7XHJcbiRzZWNvbmRhcnk6ICMwMDU4QTg7XHJcbiR5ZWxsb3c6ICNGRkMyMzY7XHJcbiRvcmFuZ2U6ICNGRjk1MkI7XHJcbiRpbmZvOiAjZTJlM2U1O1xyXG5cclxuLy8gQXBwIFZhcmlhYmxlc1xyXG4kY29udGFpbmVyLW1heC13aWR0aDogMTIwMHB4O1xyXG4kc2lkZWJhci1iZzogJGRhcmstZ3JheTtcclxuJHNpZGViYXItd2lkdGg6IDI1MHB4O1xyXG5cclxuLy8gQm9vdHN0cmFwIFZhcmlhYmxlc1xyXG5cclxuLy8gTGF5b3V0XHJcblxyXG4kZ3JpZC1icmVha3BvaW50czogKFxyXG4gIHhzOiAwLFxyXG4gIHNtOiA0ODBweCxcclxuICBtZDogNzY4cHgsXHJcbiAgbGc6IDk5MnB4LFxyXG4gIHhsOiAxMjAwcHhcclxuKTtcclxuXHJcbiRib2R5LWJnOiAkbGlnaHQtZ3JheTtcclxuXHJcbi8vIFR5cG9ncmFwaHlcclxuJGZvbnQtc2l6ZS1iYXNlOiAxcmVtO1xyXG5cclxuJGZvbnQtZmFtaWx5LXNhbnMtc2VyaWY6ICdSb2JvdG8nLCAnc2Fucy1zZXJpZic7XHJcblxyXG4kaDEtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UgKiAxLjYyNTsgLy8gMjZcclxuJGgyLWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS4zNzU7IC8vIDIzXHJcbiRoMy1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuMjU7IC8vIDIwXHJcbiRoNC1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuMTI1OyAgLy8gMThcclxuJGg1LWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS4wNjI1OyAvLyAxN1xyXG4kaDYtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7XHJcblxyXG5cclxuLy8gR2xvYmFsIFN0eWxlc1xyXG5cclxuJGJvcmRlci1yYWRpdXM6IDBweDtcclxuJGJvcmRlci1yYWRpdXMtbGc6ICRib3JkZXItcmFkaXVzO1xyXG4kYm9yZGVyLXJhZGl1cy1zbTogJGJvcmRlci1yYWRpdXM7XHJcblxyXG4vLyBGb3Jtc1xyXG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWJnOiAkd2hpdGU7XHJcblxyXG4vLyBCYWRnZXNcclxuJGJhZGdlLXBhZGRpbmcteTogLjVlbTtcclxuJGJhZGdlLXBhZGRpbmcteDogLjhlbTtcclxuJGJhZGdlLXBpbGwtcGFkZGluZy14OiAxLjJlbTtcclxuIiwiQGltcG9ydCAnLi4vZGF0YXRhYmxlLmNvbXBvbmVudC5zY3NzJztcclxuXHJcbi5jLWRhdGF0YWJsZS5hbGVydHMtdGFibGUge1xyXG5cdGhlYWRlciB7XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRmbGV4LXdyYXA6IHdyYXA7XHJcblx0XHRyb3ctZ2FwOiAxMHB4O1xyXG5cclxuXHRcdEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobWQpe1xyXG5cdFx0XHRmbGV4LXdyYXA6IG5vd3JhcDtcclxuXHRcdFx0d2lkdGg6IGZpdC1jb250ZW50O1xyXG5cdFx0XHRjb2x1bW4tZ2FwOiA1MHB4O1xyXG5cdFx0XHQvLyBtYXJnaW4tbGVmdDogMjAwcHg7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRmb3JtIHtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cclxuXHRcdC5mb3JtLWdyb3VwIHtcclxuXHRcdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdFx0Y29sdW1uLWdhcDogMTBweDtcclxuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdFx0bWFyZ2luOiAwO1xyXG5cclxuXHRcdFx0bGFiZWwge1xyXG5cdFx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xyXG5cdFx0XHRcdHdpZHRoOiAxMTVweDtcclxuXHJcblx0XHRcdFx0QGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChtZCl7XHJcblx0XHRcdFx0XHR3aWR0aDogbWF4LWNvbnRlbnQ7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQjc2VsZWN0VHlwZUZpbHRlcnMsXHJcblx0I3NlbGVjdEZpbHRlcnMge1xyXG5cdFx0d2lkdGg6IDEwMCU7XHJcblxyXG5cdFx0QGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChtZCl7XHJcblx0XHRcdHdpZHRoOiAyMDBweDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vIGRvZXNudCB3b3JrP1xyXG5cdC5kYXRhVGFibGVzX3dyYXBwZXIgIHtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6IHBpbms7XHJcblx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xyXG5cdH1cclxufVxyXG4iXX0= */\"","import { Component, Renderer2, OnInit, OnDestroy, AfterViewInit, Input, ViewChild, ElementRef } from '@angular/core';\r\nimport { DataTableDirective } from 'angular-datatables';\r\nimport { Router } from '@angular/router';\r\nimport { Select2OptionData } from 'ng-select2';\r\n\r\nimport { AlertsService } from '@/services/alerts/alerts.service';\r\n\r\n@Component({\r\n selector: 'datatable-alerts',\r\n templateUrl: './alerts-datatable.component.html',\r\n styleUrls: ['./alerts-datatable.component.scss']\r\n})\r\n\r\n\r\nexport class AlertsDatatableComponent implements AfterViewInit, OnInit, OnDestroy {\r\n\r\n\t@ViewChild(DataTableDirective)\r\n datatableElement: DataTableDirective;\r\n\r\n\t@Input() title: string = '';\r\n\t@Input() showFooter: boolean = true;\r\n\t@Input() rowsPerPage: number = 10;\r\n\t@Input() viewRoute: string = '';\r\n\t@Input() viewText: string = 'View';\r\n\t@Input() showFilters : boolean = true;\r\n\r\n\tshowTitle : Boolean = false\r\n\r\n \trows = []\r\n\talertList = []\r\n\tactiveObjectTypeFilters: string = ''\r\n\tactiveAlertTypeFilters: number = null\r\n\tselectFilters: Array = [\r\n\t\t{\r\n\t\t\tid: 'all',\r\n\t\t\ttext: 'All'\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: 'BuilderJob',\r\n\t\t\ttext: 'Builder Jobs'\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: 'RepairJob',\r\n\t\t\ttext: 'Repair Jobs'\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: 'ReroofJob',\r\n\t\t\ttext: 'Reroof Jobs'\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: 'WarrantyJob',\r\n\t\t\ttext: 'Warranty Jobs'\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: 'InspectionSafety',\r\n\t\t\ttext: 'Safety Inspections'\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: 'InspectionDryin',\r\n\t\t\ttext: 'Dryin Inspections'\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: 'InspectionShingle',\r\n\t\t\ttext: 'Shingle Inspections'\r\n\t\t},\r\n\t]\r\n\tselectTypeFilters: Array = [\r\n\t\t{\r\n\t\t\tid: 'all',\r\n\t\t\ttext: 'All'\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: '1',\r\n\t\t\ttext: 'Permit Not Finalized'\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: '2',\r\n\t\t\ttext: 'P O Items Short'\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: '3',\r\n\t\t\ttext: 'Job Unpaid'\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: '4',\r\n\t\t\ttext: 'Inspection Rating Too Low'\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: '5',\r\n\t\t\ttext: 'Step Passed'\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: '6',\r\n\t\t\ttext: 'GRV Not Complete'\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: '7',\r\n\t\t\ttext: 'ORV Not Complete'\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: '8',\r\n\t\t\ttext: 'Boots Not Complete'\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: '9',\r\n\t\t\ttext: 'Dryer Vent Not Complete'\r\n\t\t}\r\n\t]\r\n\r\n\twindowLoc = '';\r\n dtOptions: DataTables.Settings = {};\r\n\r\n\t@ViewChild('jobFilters')\r\n\tjobFilters: ElementRef;\r\n\r\n\t@ViewChild('alertTable')\r\n\talertTable: ElementRef;\r\n\r\n\tselect2Options = {\r\n\t\ttheme: \"bootstrap4\",\r\n\t\tdropdownAutoWidth: true,\r\n\t\twidth: \"100%\"\r\n\t}\r\n\r\n constructor(\r\n\t\tprivate alertsService: AlertsService,\r\n\t\tprivate renderer: Renderer2,\r\n\t\tprivate router: Router\r\n\t){}\r\n\r\n\tdataTablesInit(searchStr? : any) {\r\n\t\tlet searchOptions : (DataTables.SearchSettings) = {search: searchStr};\r\n\t\tlet lastPage = 0;\r\n\t\tlet lastSearchText = \"\";\r\n\t\tthis.dtOptions = {\r\n\t\t\tpagingType: 'full_numbers',\r\n\t\t\tpageLength: this.rowsPerPage,\r\n\t\t\tlengthChange: false,\r\n\t\t\tdisplayStart: lastPage, // Last Selected Page\r\n\t\t\tinfo: this.showFooter,\r\n\t\t\tpaging: this.showFooter,\r\n\t\t\tscrollX: true,\r\n\t\t\tordering: true,\r\n\t\t\tsearch: searchOptions,\r\n\t\t\tcolumns: [\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"GeneratedDate\"\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"ObjectType\",\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"Type\",\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"Message\",\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"FullLink\"\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t\tcolumnDefs: [\r\n\t\t\t\t{\r\n\t\t\t\t\ttargets: [ 4 ],\r\n\t\t\t\t\torderable: false\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttargets: [ 0 ],\r\n\t\t\t\t\ttype: 'date'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tclassName: \"text-center\", \"targets\": [ 4 ]\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tserverSide: true,\r\n\t\t\tprocessing: true,\r\n\t\t\tajax: (data: object, callback, dataTablesParameters: any) => {\r\n\t\t\t\tlastPage = dataTablesParameters.start; // Note : dataTablesParameters.start = page count * table length\r\n\t\t\t\tlastSearchText = 'search' in dataTablesParameters && dataTablesParameters.search != 'undefined' ? dataTablesParameters.search.value : '';\r\n\r\n\t\t\t\t// let page: number = null\r\n\t\t\t\t// let objectType: string = ''\r\n\t\t\t\t// let alertType: number = null\r\n\t\t\t\tconst count: number = 1000000\r\n\r\n\t\t\t\tif ( this.activeObjectTypeFilters !== 'all' ){\r\n\t\t\t\t\tdata['columns'][1]['search'].value = this.activeObjectTypeFilters\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( this.activeAlertTypeFilters > 0 ){\r\n\t\t\t\t\tdata['columns'][2]['search'].value = this.activeAlertTypeFilters.toString()\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.alertsService.getAlertsDatatable(data).subscribe((result: any) => {\r\n\t\t\t\t\tresult.data.forEach(row => {\r\n\t\t\t\t\t\t// format date properly\r\n\t\t\t\t\t\tlet date = new Date(row.GeneratedDate)\r\n\t\t\t\t\t\trow.GeneratedDate = date.toLocaleDateString()\r\n\r\n\t\t\t\t\t\t// Split string by capital letters to make readable\r\n\t\t\t\t\t\trow.Type = row.Type.split(/(?=[A-Z])/).join(\" \")\r\n\t\t\t\t\t\trow.ObjectType = row.ObjectType.split(/(?=[A-Z])/).join(\" \")\r\n\r\n\r\n\t\t\t\t\t\t// Do Link logic here\r\n\t\t\t\t\t\t// const { LinkedJob, ObjectID, ObjectType } = full\r\n\t\t\t\t\t\tlet urlFriendlyJobType: string = ''\r\n\t\t\t\t\t\trow.FullLink = \"\";\r\n\t\t\t\t\t\tif ( row.LinkedJob ) {\r\n\t\t\t\t\t\t\tlet inspectionType = ''\r\n\r\n\t\t\t\t\t\t\tif ( row.LinkedJob.Type )\r\n\r\n\t\t\t\t\t\t\t\tif ( row.LinkedJob.Type === 'BuilderJob' ) {\r\n\t\t\t\t\t\t\t\t\turlFriendlyJobType = row.LinkedJob.Type.split(/(?=[A-Z])/).join(\" \").toLowerCase().replace( ' ', '-' ) + 's'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\turlFriendlyJobType = `${row.LinkedJob.Type.toLowerCase()}-jobs`\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tswitch( row.ObjectType ){\r\n\t\t\t\t\t\t\t\tcase 'Inspection Safety':\r\n\t\t\t\t\t\t\t\t\tinspectionType = 'safety'\r\n\t\t\t\t\t\t\t\t\tbreak\r\n\t\t\t\t\t\t\t\tcase 'Inspection Dry In':\r\n\t\t\t\t\t\t\t\t\tinspectionType = 'dryin'\r\n\t\t\t\t\t\t\t\t\tbreak\r\n\t\t\t\t\t\t\t\tcase 'Inspection Shingle':\r\n\t\t\t\t\t\t\t\t\tinspectionType = 'shingle'\r\n\t\t\t\t\t\t\t\t\tbreak\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\trow.FullLink = `/${ urlFriendlyJobType }/${ row.LinkedJob.ID }/${ inspectionType }-inspection/${ row.ObjectID }`\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\turlFriendlyJobType = row.ObjectType.toLowerCase().replace( ' ', '-' ) + 's'\r\n\r\n\t\t\t\t\t\t\trow.FullLink = `/${ urlFriendlyJobType }/${ row.ObjectID }`\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn row;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.rows = result.data;\r\n\r\n\t\t\t\t\tcallback({\r\n\t\t\t\t\t\trecordsTotal: result.recordsTotal,\r\n\t\t\t\t\t\trecordsFiltered: result.recordsFiltered,\r\n\t\t\t\t\t\tdata: [] // this gets set to empty because this.rows above is rendered by angular with the relevant formatting\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\t$($.fn.dataTable.tables(true)).DataTable().columns.adjust();\r\n\t\t\t\t\t\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t$($.fn.dataTable.tables(true)).DataTable().columns.adjust();\r\n\t\t\t\t\t}, 2500);\r\n\t\t\t\t})\r\n\t\t\t},\r\n\t\t\torder: [\r\n\t\t\t\t[ 0, \"desc\" ]\r\n\t\t\t],\r\n\r\n\t\t\tinitComplete: () => {\r\n\t\t\t\tlet searchLabels = document.querySelectorAll('.dataTables_filter > label')\r\n\r\n\t\t\t\tsearchLabels.forEach(( label ) => {\r\n\t\t\t\t\tlabel.setAttribute('aria-label', 'Search/Filter Table')\r\n\t\t\t\t})\r\n\r\n\t\t\t\tthis.showTitle = true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n \tngOnInit(): void {\r\n\t\tthis.windowLoc = window.location.pathname;\r\n\t\tlet trySearch: any = window.sessionStorage.getItem(this.windowLoc + \"alertSearch\");\r\n\t\twindow.sessionStorage.clear();\r\n\r\n\t\tif (trySearch != null && trySearch != ''){\r\n\t\t\tthis.dataTablesInit(trySearch);\r\n\t\t}\r\n\t\telse {\r\n\r\n\t\t\tthis.dataTablesInit();\r\n\t\t}\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tlet dtinst: DataTables.Api;\r\n\t\tlet search : any = \"\";\r\n\r\n\t\tthis.datatableElement.dtInstance.then(x => {\r\n\t\t\tdtinst = x;\r\n\t\t\tsearch = dtinst.search();\r\n\t\t\tif (search != null || search != ''){\r\n\t\t\t\twindow.sessionStorage.setItem(this.windowLoc + \"alertSearch\", search);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tngAfterViewInit(): void {\r\n\t\tthis.renderer.listen( 'document', 'click', (event) => {\r\n\t\t\tif ( event.target.hasAttribute( \"job-link\" )) {\r\n\t\t\t\tevent.preventDefault()\r\n this.router.navigate([ event.target.getAttribute( \"job-link\" ) ])\r\n }\r\n\t\t});\r\n\t}\r\n\r\n\tupdateObjectType( event: { value: string, data } ){\r\n\t\tconst { value } = event\r\n\r\n\t\tthis.activeObjectTypeFilters = value\r\n\r\n\t\tthis.datatableElement.dtInstance.then(( dtInstance: DataTables.Api ) => {\r\n\t\t\tdtInstance.search('');\r\n\t\t\tdtInstance.columns().search('');\r\n\t\t\tdtInstance.draw();\r\n\t\t});\r\n\t}\r\n\r\n\tupdateType( event: { value: number, data } ){\r\n\t\tconst { value } = event\r\n\r\n\t\tthis.activeAlertTypeFilters = value\r\n\r\n\t\tthis.datatableElement.dtInstance.then(( dtInstance: DataTables.Api ) => {\r\n\t\t\tdtInstance.search('');\r\n\t\t\tdtInstance.columns().search('');\r\n\r\n\t\t\tdtInstance.draw();\r\n\t\t});\r\n\t}\r\n}\r\n","module.exports = \"
\\r\\n\\t
\\r\\n\\t\\t

\\r\\n\\t\\t\\t{{ title }}\\r\\n\\t\\t

\\r\\n\\t\\t\\r\\n\\t\\t\\t{{ viewText }}\\r\\n\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tCreated On\\r\\n\\t\\t\\t\\tScheduled Date\\r\\n\\t\\t\\t\\tBuilder\\r\\n\\t\\t\\t\\tCommunity\\r\\n\\t\\t\\t\\tLocation\\r\\n\\t\\t\\t\\tCommunity Manager\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\tStatus\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\tInspections\\r\\n\\t\\t\\t\\tDetail\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{ row.CreatedDate | date }}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{ row.ScheduledDate | date }}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{ row.Builder?.CompanyName }}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{ row.Community?.Name }}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t{{ row.Address }}
\\r\\n\\t\\t\\t\\t\\t\\t
{{ row.Address2 }}
\\r\\n\\t\\t\\t\\t\\t\\t{{ row.City }}, {{ row.State }} {{ row.ZipCode }}\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\tLot: {{ row?.Lots }}\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t
  • \\r\\n\\t\\t\\t\\t\\t\\t\\t{{ manager.name }}\\r\\n\\t\\t\\t\\t\\t\\t
  • \\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{ row.Status }}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ inspection.CreatedDate | date: 'shortDate' }} - {{ inspection.Type }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tNew Safety...\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tNew Dryin...\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tNew Shingle...\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t\\r\\n
\\r\\n\"","module.exports = \".c-datatable_header {\\n align-items: flex-start;\\n display: flex;\\n margin-bottom: 10px;\\n position: relative;\\n transform: translateY(0);\\n z-index: 2;\\n width: 100%;\\n justify-content: space-between;\\n}\\n@media (min-width: 768px) {\\n .c-datatable_header {\\n width: calc(100% - 240px);\\n justify-content: normal;\\n margin-bottom: 0;\\n transform: translateY(100%);\\n }\\n}\\n.c-datatable_location {\\n min-width: 170px;\\n}\\n.c-datatable .dataTables_filter {\\n text-align: left;\\n}\\n.c-datatable_view-link {\\n line-height: 2;\\n margin-left: 1em;\\n}\\n@media (min-width: 768px) {\\n .c-datatable_view-link {\\n margin-left: 2em;\\n }\\n}\\n.c-datatable_table {\\n background: #fefefe;\\n}\\n.c-datatable_address {\\n margin-bottom: 0.5rem;\\n}\\n.c-datatable small {\\n font-size: 0.75rem;\\n}\\n.c-datatable .inspection-dropdown button {\\n font-size: 0.875rem;\\n text-transform: capitalize;\\n}\\n.c-datatable thead {\\n background: #616161;\\n color: #fefefe;\\n}\\n.c-datatable thead .sorting, .c-datatable thead .sorting_asc, .c-datatable thead .sorting_desc {\\n background-image: none;\\n position: relative;\\n}\\n.c-datatable thead .sorting::after, .c-datatable thead .sorting_asc::after, .c-datatable thead .sorting_desc::after {\\n bottom: auto;\\n display: inline-block;\\n font-family: \\\"Font Awesome 5 Pro\\\";\\n font-weight: 900;\\n position: absolute;\\n right: 4px;\\n top: 50%;\\n transform: translateY(-50%);\\n}\\n.c-datatable thead .sorting::before, .c-datatable thead .sorting_asc::before, .c-datatable thead .sorting_desc::before {\\n display: none;\\n}\\n.c-datatable thead .sorting_asc::after, .c-datatable thead .sorting_desc::after {\\n color: #fefefe;\\n opacity: 1;\\n}\\n.c-datatable thead .sorting::after {\\n content: \\\"\\\\f0dc\\\";\\n}\\n.c-datatable thead .sorting_asc::after {\\n content: \\\"\\\\f0de\\\";\\n}\\n.c-datatable thead .sorting_desc::after {\\n content: \\\"\\\\f0dd\\\";\\n}\\n.c-datatable th,\\n.c-datatable td {\\n border-right: 1px solid #E8E8E8;\\n font-size: 0.875rem;\\n}\\n.c-datatable th:last-child,\\n.c-datatable td:last-child {\\n border-right: none;\\n}\\n.c-datatable th {\\n border-bottom: none;\\n font-weight: normal;\\n white-space: nowrap;\\n}\\n.c-datatable_export-button {\\n background: none;\\n border: 0;\\n cursor: pointer;\\n color: #0058A8;\\n position: absolute;\\n transform: translateY(-145%);\\n z-index: 1;\\n}\\n.c-datatable_modal-button {\\n background: none;\\n border: 0;\\n cursor: pointer;\\n color: #0058A8;\\n}\\n.c-datatable ul {\\n display: block;\\n list-style-type: none;\\n padding-left: 0;\\n margin-bottom: 0;\\n}\\n.inspection-dropdown button {\\n font-size: 0.875rem;\\n text-transform: capitalize;\\n}\\n.c-datatable.builder-jobs-table header {\\n align-items: center;\\n width: 100%;\\n flex-wrap: wrap;\\n row-gap: 10px;\\n}\\n@media (min-width: 768px) {\\n .c-datatable.builder-jobs-table header {\\n flex-wrap: nowrap;\\n width: -moz-fit-content;\\n width: fit-content;\\n -moz-column-gap: 50px;\\n column-gap: 50px;\\n }\\n}\\n.c-datatable.builder-jobs-table form {\\n width: 100%;\\n}\\n.c-datatable.builder-jobs-table form .form-group {\\n display: flex;\\n -moz-column-gap: 10px;\\n column-gap: 10px;\\n align-items: center;\\n margin: 0;\\n}\\n.c-datatable.builder-jobs-table form .form-group label {\\n display: inline-block;\\n margin-bottom: 0;\\n width: 115px;\\n}\\n@media (min-width: 768px) {\\n .c-datatable.builder-jobs-table form .form-group label {\\n width: -moz-max-content;\\n width: max-content;\\n }\\n}\\n.c-datatable.builder-jobs-table #selectStatusFilter {\\n width: 100%;\\n}\\n@media (min-width: 768px) {\\n .c-datatable.builder-jobs-table #selectStatusFilter {\\n width: 200px;\\n }\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9kYXRhdGFibGUvYnVpbGRlci1qb2JzLWRhdGF0YWJsZS9DOlxcVXNlcnNcXERhbmllbFxcRGVza3RvcFxcUHJvamVjdHNcXFN0ZXJsaW5nUm9vZmluZy9zcmNcXGFwcFxcY29tcG9uZW50c1xcZGF0YXRhYmxlXFxidWlsZGVyLWpvYnMtZGF0YXRhYmxlXFxidWlsZGVyLWpvYnMtZGF0YXRhYmxlLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2RhdGF0YWJsZS9idWlsZGVyLWpvYnMtZGF0YXRhYmxlL2J1aWxkZXItam9icy1kYXRhdGFibGUuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvZGF0YXRhYmxlL2J1aWxkZXItam9icy1kYXRhdGFibGUvQzpcXFVzZXJzXFxEYW5pZWxcXERlc2t0b3BcXFByb2plY3RzXFxTdGVybGluZ1Jvb2Zpbmcvbm9kZV9tb2R1bGVzXFxib290c3RyYXBcXHNjc3NcXG1peGluc1xcX2JyZWFrcG9pbnRzLnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvZGF0YXRhYmxlL2J1aWxkZXItam9icy1kYXRhdGFibGUvQzpcXFVzZXJzXFxEYW5pZWxcXERlc2t0b3BcXFByb2plY3RzXFxTdGVybGluZ1Jvb2Zpbmcvc3JjXFxzdHlsZXNcXF92YXJpYWJsZXMuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9kYXRhdGFibGUvYnVpbGRlci1qb2JzLWRhdGF0YWJsZS9DOlxcVXNlcnNcXERhbmllbFxcRGVza3RvcFxcUHJvamVjdHNcXFN0ZXJsaW5nUm9vZmluZy9zdGRpbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQztFQUNDLHVCQUFBO0VBQ0EsYUFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7RUFDQSx3QkFBQTtFQUNBLFVBQUE7RUFDQSxXQUFBO0VBQ0EsOEJBQUE7QUNGRjtBQ21ESTtFRnpESDtJQVdFLHlCQUFBO0lBQ0EsdUJBQUE7SUFDQSxnQkFBQTtJQUNBLDJCQUFBO0VDREQ7QUFDRjtBRElDO0VBQ0MsZ0JBQUE7QUNGRjtBREtDO0VBQ0MsZ0JBQUE7QUNIRjtBRE1DO0VBQ0MsY0FBQTtFQUNBLGdCQUFBO0FDSkY7QUNpQ0k7RUYvQkg7SUFLRSxnQkFBQTtFQ0hEO0FBQ0Y7QURNQztFQUNDLG1CR2hDTTtBRjRCUjtBRE9DO0VBQ0MscUJBQUE7QUNMRjtBRFFDO0VBQ0Msa0JBQUE7QUNORjtBRFdFO0VBQ0MsbUJBQUE7RUFDQSwwQkFBQTtBQ1RIO0FEYUM7RUFDQyxtQkd4RGlCO0VIeURqQixjR3JETTtBRjBDUjtBRGVHO0VBR0Msc0JBQUE7RUFDQSxrQkFBQTtBQ2ZKO0FEaUJJO0VBQ0MsWUFBQTtFQUNBLHFCQUFBO0VBQ0EsaUNBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLFFBQUE7RUFDQSwyQkFBQTtBQ2ZMO0FEa0JJO0VBQ0MsYUFBQTtBQ2hCTDtBRHdCSTtFQUNDLGNHcEZHO0VIcUZILFVBQUE7QUN0Qkw7QUQwQkc7RUFDQyxnQkFBQTtBQ3hCSjtBRDJCRztFQUNDLGdCQUFBO0FDekJKO0FENEJHO0VBQ0MsZ0JBQUE7QUMxQko7QUQrQkM7O0VBRUMsK0JBQUE7RUFDQSxtQkFBQTtBQzdCRjtBRDhCRTs7RUFDQyxrQkFBQTtBQzNCSDtBRCtCQztFQUNDLG1CQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQkFBQTtBQzdCRjtBRGdDQztFQUNDLGdCQUFBO0VBQ0EsU0FBQTtFQUNBLGVBQUE7RUFDQSxjR3RIUTtFSHVIUixrQkFBQTtFQUNBLDRCQUFBO0VBQ0EsVUFBQTtBQzlCRjtBRGlDQztFQUNDLGdCQUFBO0VBQ0EsU0FBQTtFQUNBLGVBQUE7RUFDQSxjR2hJUTtBRmlHVjtBRGtDQztFQUNDLGNBQUE7RUFDQSxxQkFBQTtFQUNBLGVBQUE7RUFDQSxnQkFBQTtBQ2hDRjtBRzlHRTtFQUNFLG1CQUFBO0VBQ0EsMEJBQUE7QUhpSEo7QUc1R0M7RUFDQyxtQkFBQTtFQUNBLFdBQUE7RUFDQSxlQUFBO0VBQ0EsYUFBQTtBSCtHRjtBQ2xFSTtFRWpESDtJQU9FLGlCQUFBO0lBQ0EsdUJBQUE7SUFBQSxrQkFBQTtJQUNBLHFCQUFBO1NBQUEsZ0JBQUE7RUhnSEQ7QUFDRjtBRzVHQztFQUNDLFdBQUE7QUg4R0Y7QUc1R0U7RUFDQyxhQUFBO0VBQ0EscUJBQUE7T0FBQSxnQkFBQTtFQUNBLG1CQUFBO0VBQ0EsU0FBQTtBSDhHSDtBRzVHRztFQUNDLHFCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxZQUFBO0FIOEdKO0FDdkZJO0VFMUJEO0lBTUUsdUJBQUE7SUFBQSxrQkFBQTtFSCtHSDtBQUNGO0FHMUdDO0VBQ0MsV0FBQTtBSDRHRjtBQy9GSTtFRWRIO0lBSUUsWUFBQTtFSDZHRDtBQUNGIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9kYXRhdGFibGUvYnVpbGRlci1qb2JzLWRhdGF0YWJsZS9idWlsZGVyLWpvYnMtZGF0YXRhYmxlLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnY29tcG9uZW50LWhlYWRlcic7XHJcblxyXG4uYy1kYXRhdGFibGUge1xyXG5cdCZfaGVhZGVyIHtcclxuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdG1hcmdpbi1ib3R0b206IDEwcHg7XHJcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XHJcblx0XHR6LWluZGV4OiAyO1xyXG5cdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcblxyXG5cdFx0QGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChtZCkge1xyXG5cdFx0XHR3aWR0aDogY2FsYygxMDAlIC0gMjQwcHgpO1xyXG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IG5vcm1hbDtcclxuXHRcdFx0bWFyZ2luLWJvdHRvbTogMDtcclxuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Jl9sb2NhdGlvbiB7XHJcblx0XHRtaW4td2lkdGg6IDE3MHB4O1xyXG5cdH1cclxuXHJcblx0LmRhdGFUYWJsZXNfZmlsdGVye1xyXG5cdFx0dGV4dC1hbGlnbjogbGVmdDtcclxuXHR9XHJcblxyXG5cdCZfdmlldy1saW5rIHtcclxuXHRcdGxpbmUtaGVpZ2h0OiAyO1xyXG5cdFx0bWFyZ2luLWxlZnQ6IDFlbTtcclxuXHJcblx0XHRAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKG1kKSB7XHJcblx0XHRcdG1hcmdpbi1sZWZ0OiAyZW07XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQmX3RhYmxlIHtcclxuXHRcdGJhY2tncm91bmQ6ICR3aGl0ZTtcclxuXHR9XHJcblxyXG5cdCZfYWRkcmVzcyB7XHJcblx0XHRtYXJnaW4tYm90dG9tOiAwLjVyZW07XHJcblx0fVxyXG5cclxuXHRzbWFsbCB7XHJcblx0XHRmb250LXNpemU6IHJlbS1jYWxjKDEyKTtcclxuXHR9XHJcblxyXG5cdC5pbnNwZWN0aW9uLWRyb3Bkb3duIHtcclxuXHJcblx0XHRidXR0b257XHJcblx0XHRcdGZvbnQtc2l6ZTogMC44NzVyZW07XHJcblx0XHRcdHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dGhlYWQge1xyXG5cdFx0YmFja2dyb3VuZDogJG1lZGl1bS1kYXJrLWdyYXk7XHJcblx0XHRjb2xvcjogJHdoaXRlO1xyXG5cclxuXHRcdC5zb3J0aW5nIHtcclxuXHJcblx0XHRcdCYsXHJcblx0XHRcdCZfYXNjLFxyXG5cdFx0XHQmX2Rlc2Mge1xyXG5cdFx0XHRcdGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XHJcblx0XHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cclxuXHRcdFx0XHQmOjphZnRlciB7XHJcblx0XHRcdFx0XHRib3R0b206IGF1dG87XHJcblx0XHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHRcdFx0XHRmb250LWZhbWlseTogJ0ZvbnQgQXdlc29tZSA1IFBybyc7XHJcblx0XHRcdFx0XHRmb250LXdlaWdodDogOTAwO1xyXG5cdFx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0XHRcdFx0cmlnaHQ6IDRweDtcclxuXHRcdFx0XHRcdHRvcDogNTAlO1xyXG5cdFx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0Jjo6YmVmb3JlIHtcclxuXHRcdFx0XHRcdGRpc3BsYXk6IG5vbmU7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Jl9hc2MsXHJcblx0XHRcdCZfZGVzYyB7XHJcblxyXG5cdFx0XHRcdCY6OmFmdGVyIHtcclxuXHRcdFx0XHRcdGNvbG9yOiAkd2hpdGU7XHJcblx0XHRcdFx0XHRvcGFjaXR5OiAxO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Jjo6YWZ0ZXIge1xyXG5cdFx0XHRcdGNvbnRlbnQ6IFwiXFxmMGRjXCI7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdCZfYXNjOjphZnRlciB7XHJcblx0XHRcdFx0Y29udGVudDogXCJcXGYwZGVcIjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Jl9kZXNjOjphZnRlciB7XHJcblx0XHRcdFx0Y29udGVudDogXCJcXGYwZGRcIjtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dGgsXHJcblx0dGQge1xyXG5cdFx0Ym9yZGVyLXJpZ2h0OiAxcHggc29saWQgJGxpZ2h0LWdyYXk7XHJcblx0XHRmb250LXNpemU6IHJlbS1jYWxjKDE0KTtcclxuXHRcdCY6bGFzdC1jaGlsZCB7XHJcblx0XHRcdGJvcmRlci1yaWdodDogbm9uZTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHRoIHtcclxuXHRcdGJvcmRlci1ib3R0b206IG5vbmU7XHJcblx0XHRmb250LXdlaWdodDogbm9ybWFsO1xyXG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuXHR9XHJcblxyXG5cdCZfZXhwb3J0LWJ1dHRvbiB7XHJcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xyXG5cdFx0Ym9yZGVyOiAwO1xyXG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xyXG5cdFx0Y29sb3I6ICRwcmltYXJ5O1xyXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNDUlKTtcclxuXHRcdHotaW5kZXg6IDE7XHJcblx0fVxyXG5cclxuXHQmX21vZGFsLWJ1dHRvbiB7XHJcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xyXG5cdFx0Ym9yZGVyOiAwO1xyXG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xyXG5cdFx0Y29sb3I6ICRwcmltYXJ5O1xyXG5cdH1cclxuXHJcblx0dWwge1xyXG5cdFx0ZGlzcGxheTogYmxvY2s7XHJcblx0XHRsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XHJcblx0XHRwYWRkaW5nLWxlZnQ6IDA7XHJcblx0XHRtYXJnaW4tYm90dG9tOiAwO1xyXG5cclxuXHR9XHJcblxyXG5cclxufVxyXG5cclxuIiwiLmMtZGF0YXRhYmxlX2hlYWRlciB7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBkaXNwbGF5OiBmbGV4O1xuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgei1pbmRleDogMjtcbiAgd2lkdGg6IDEwMCU7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuYy1kYXRhdGFibGVfaGVhZGVyIHtcbiAgICB3aWR0aDogY2FsYygxMDAlIC0gMjQwcHgpO1xuICAgIGp1c3RpZnktY29udGVudDogbm9ybWFsO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICB9XG59XG4uYy1kYXRhdGFibGVfbG9jYXRpb24ge1xuICBtaW4td2lkdGg6IDE3MHB4O1xufVxuLmMtZGF0YXRhYmxlIC5kYXRhVGFibGVzX2ZpbHRlciB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG4uYy1kYXRhdGFibGVfdmlldy1saW5rIHtcbiAgbGluZS1oZWlnaHQ6IDI7XG4gIG1hcmdpbi1sZWZ0OiAxZW07XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmMtZGF0YXRhYmxlX3ZpZXctbGluayB7XG4gICAgbWFyZ2luLWxlZnQ6IDJlbTtcbiAgfVxufVxuLmMtZGF0YXRhYmxlX3RhYmxlIHtcbiAgYmFja2dyb3VuZDogI2ZlZmVmZTtcbn1cbi5jLWRhdGF0YWJsZV9hZGRyZXNzIHtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xufVxuLmMtZGF0YXRhYmxlIHNtYWxsIHtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xufVxuLmMtZGF0YXRhYmxlIC5pbnNwZWN0aW9uLWRyb3Bkb3duIGJ1dHRvbiB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xufVxuLmMtZGF0YXRhYmxlIHRoZWFkIHtcbiAgYmFja2dyb3VuZDogIzYxNjE2MTtcbiAgY29sb3I6ICNmZWZlZmU7XG59XG4uYy1kYXRhdGFibGUgdGhlYWQgLnNvcnRpbmcsIC5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZ19hc2MsIC5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZ19kZXNjIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nOjphZnRlciwgLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nX2FzYzo6YWZ0ZXIsIC5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZ19kZXNjOjphZnRlciB7XG4gIGJvdHRvbTogYXV0bztcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LWZhbWlseTogXCJGb250IEF3ZXNvbWUgNSBQcm9cIjtcbiAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogNHB4O1xuICB0b3A6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nOjpiZWZvcmUsIC5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZ19hc2M6OmJlZm9yZSwgLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nX2Rlc2M6OmJlZm9yZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uYy1kYXRhdGFibGUgdGhlYWQgLnNvcnRpbmdfYXNjOjphZnRlciwgLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nX2Rlc2M6OmFmdGVyIHtcbiAgY29sb3I6ICNmZWZlZmU7XG4gIG9wYWNpdHk6IDE7XG59XG4uYy1kYXRhdGFibGUgdGhlYWQgLnNvcnRpbmc6OmFmdGVyIHtcbiAgY29udGVudDogXCJcXGYwZGNcIjtcbn1cbi5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZ19hc2M6OmFmdGVyIHtcbiAgY29udGVudDogXCJcXGYwZGVcIjtcbn1cbi5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZ19kZXNjOjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXFxmMGRkXCI7XG59XG4uYy1kYXRhdGFibGUgdGgsXG4uYy1kYXRhdGFibGUgdGQge1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjRThFOEU4O1xuICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuLmMtZGF0YXRhYmxlIHRoOmxhc3QtY2hpbGQsXG4uYy1kYXRhdGFibGUgdGQ6bGFzdC1jaGlsZCB7XG4gIGJvcmRlci1yaWdodDogbm9uZTtcbn1cbi5jLWRhdGF0YWJsZSB0aCB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4uYy1kYXRhdGFibGVfZXhwb3J0LWJ1dHRvbiB7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjb2xvcjogIzAwNThBODtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE0NSUpO1xuICB6LWluZGV4OiAxO1xufVxuLmMtZGF0YXRhYmxlX21vZGFsLWJ1dHRvbiB7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjb2xvcjogIzAwNThBODtcbn1cbi5jLWRhdGF0YWJsZSB1bCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLmluc3BlY3Rpb24tZHJvcGRvd24gYnV0dG9uIHtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG59XG5cbi5jLWRhdGF0YWJsZS5idWlsZGVyLWpvYnMtdGFibGUgaGVhZGVyIHtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgd2lkdGg6IDEwMCU7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgcm93LWdhcDogMTBweDtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuYy1kYXRhdGFibGUuYnVpbGRlci1qb2JzLXRhYmxlIGhlYWRlciB7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgd2lkdGg6IGZpdC1jb250ZW50O1xuICAgIGNvbHVtbi1nYXA6IDUwcHg7XG4gIH1cbn1cbi5jLWRhdGF0YWJsZS5idWlsZGVyLWpvYnMtdGFibGUgZm9ybSB7XG4gIHdpZHRoOiAxMDAlO1xufVxuLmMtZGF0YXRhYmxlLmJ1aWxkZXItam9icy10YWJsZSBmb3JtIC5mb3JtLWdyb3VwIHtcbiAgZGlzcGxheTogZmxleDtcbiAgY29sdW1uLWdhcDogMTBweDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWFyZ2luOiAwO1xufVxuLmMtZGF0YXRhYmxlLmJ1aWxkZXItam9icy10YWJsZSBmb3JtIC5mb3JtLWdyb3VwIGxhYmVsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICB3aWR0aDogMTE1cHg7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmMtZGF0YXRhYmxlLmJ1aWxkZXItam9icy10YWJsZSBmb3JtIC5mb3JtLWdyb3VwIGxhYmVsIHtcbiAgICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gIH1cbn1cbi5jLWRhdGF0YWJsZS5idWlsZGVyLWpvYnMtdGFibGUgI3NlbGVjdFN0YXR1c0ZpbHRlciB7XG4gIHdpZHRoOiAxMDAlO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5jLWRhdGF0YWJsZS5idWlsZGVyLWpvYnMtdGFibGUgI3NlbGVjdFN0YXR1c0ZpbHRlciB7XG4gICAgd2lkdGg6IDIwMHB4O1xuICB9XG59IiwiLy8gQnJlYWtwb2ludCB2aWV3cG9ydCBzaXplcyBhbmQgbWVkaWEgcXVlcmllcy5cbi8vXG4vLyBCcmVha3BvaW50cyBhcmUgZGVmaW5lZCBhcyBhIG1hcCBvZiAobmFtZTogbWluaW11bSB3aWR0aCksIG9yZGVyIGZyb20gc21hbGwgdG8gbGFyZ2U6XG4vL1xuLy8gICAgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KVxuLy9cbi8vIFRoZSBtYXAgZGVmaW5lZCBpbiB0aGUgYCRncmlkLWJyZWFrcG9pbnRzYCBnbG9iYWwgdmFyaWFibGUgaXMgdXNlZCBhcyB0aGUgYCRicmVha3BvaW50c2AgYXJndW1lbnQgYnkgZGVmYXVsdC5cblxuLy8gTmFtZSBvZiB0aGUgbmV4dCBicmVha3BvaW50LCBvciBudWxsIGZvciB0aGUgbGFzdCBicmVha3BvaW50LlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSlcbi8vICAgIG1kXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICBtZFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAkYnJlYWtwb2ludC1uYW1lczogKHhzIHNtIG1kIGxnIHhsKSlcbi8vICAgIG1kXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludC1uYW1lczogbWFwLWtleXMoJGJyZWFrcG9pbnRzKSkge1xuICAkbjogaW5kZXgoJGJyZWFrcG9pbnQtbmFtZXMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbiAhPSBudWxsIGFuZCAkbiA8IGxlbmd0aCgkYnJlYWtwb2ludC1uYW1lcyksIG50aCgkYnJlYWtwb2ludC1uYW1lcywgJG4gKyAxKSwgbnVsbCk7XG59XG5cbi8vIE1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTnVsbCBmb3IgdGhlIHNtYWxsZXN0IChmaXJzdCkgYnJlYWtwb2ludC5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW1pbihzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KSlcbi8vICAgIDU3NnB4XG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbWluICE9IDAsICRtaW4sIG51bGwpO1xufVxuXG4vLyBNYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguIE51bGwgZm9yIHRoZSBsYXJnZXN0IChsYXN0KSBicmVha3BvaW50LlxuLy8gVGhlIG1heGltdW0gdmFsdWUgaXMgY2FsY3VsYXRlZCBhcyB0aGUgbWluaW11bSBvZiB0aGUgbmV4dCBvbmUgbGVzcyAwLjAycHhcbi8vIHRvIHdvcmsgYXJvdW5kIHRoZSBsaW1pdGF0aW9ucyBvZiBgbWluLWAgYW5kIGBtYXgtYCBwcmVmaXhlcyBhbmQgdmlld3BvcnRzIHdpdGggZnJhY3Rpb25hbCB3aWR0aHMuXG4vLyBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL21lZGlhcXVlcmllcy00LyNtcS1taW4tbWF4XG4vLyBVc2VzIDAuMDJweCByYXRoZXIgdGhhbiAwLjAxcHggdG8gd29yayBhcm91bmQgYSBjdXJyZW50IHJvdW5kaW5nIGJ1ZyBpbiBTYWZhcmkuXG4vLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODI2MVxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbWF4KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgNzY3Ljk4cHhcbkBmdW5jdGlvbiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbmV4dDogYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAcmV0dXJuIGlmKCRuZXh0LCBicmVha3BvaW50LW1pbigkbmV4dCwgJGJyZWFrcG9pbnRzKSAtIC4wMiwgbnVsbCk7XG59XG5cbi8vIFJldHVybnMgYSBibGFuayBzdHJpbmcgaWYgc21hbGxlc3QgYnJlYWtwb2ludCwgb3RoZXJ3aXNlIHJldHVybnMgdGhlIG5hbWUgd2l0aCBhIGRhc2ggaW4gZnJvbnQuXG4vLyBVc2VmdWwgZm9yIG1ha2luZyByZXNwb25zaXZlIHV0aWxpdGllcy5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHhzLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgXCJcIiAgKFJldHVybnMgYSBibGFuayBzdHJpbmcpXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgXCItc21cIlxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaW5maXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgQHJldHVybiBpZihicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKSA9PSBudWxsLCBcIlwiLCBcIi0jeyRuYW1lfVwiKTtcbn1cblxuLy8gTWVkaWEgb2YgYXQgbGVhc3QgdGhlIG1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCB3aWRlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1pbiB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTWVkaWEgb2YgYXQgbW9zdCB0aGUgbWF4aW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIGxhcmdlc3QgYnJlYWtwb2ludC5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBhbmQgbmFycm93ZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1heCB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTWVkaWEgdGhhdCBzcGFucyBtdWx0aXBsZSBicmVha3BvaW50IHdpZHRocy5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBiZXR3ZWVuIHRoZSBtaW4gYW5kIG1heCBicmVha3BvaW50c1xuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtYmV0d2VlbigkbG93ZXIsICR1cHBlciwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbG93ZXIsICRicmVha3BvaW50cyk7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCR1cHBlciwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbG93ZXIsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtaW4gPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCR1cHBlciwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8gTWVkaWEgYmV0d2VlbiB0aGUgYnJlYWtwb2ludCdzIG1pbmltdW0gYW5kIG1heGltdW0gd2lkdGhzLlxuLy8gTm8gbWluaW11bSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQsIGFuZCBubyBtYXhpbXVtIGZvciB0aGUgbGFyZ2VzdCBvbmUuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgb25seSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCwgbm90IHZpZXdwb3J0cyBhbnkgd2lkZXIgb3IgbmFycm93ZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1vbmx5KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBDdXN0b20gQ29sb3JzXHJcblxyXG4kZGFyay1ncmF5OiAjMjQyNDI0O1xyXG4kbWVkaXVtLWRhcmstZ3JheTogIzYxNjE2MTtcclxuJG1lZGl1bS1ncmF5OiAjNTI1MjUyO1xyXG4kbWVkaXVtLWxpZ2h0LWdyYXk6ICNCQ0M2Q0U7XHJcbiRsaWdodC1ncmF5OiAjRThFOEU4O1xyXG4kd2hpdGU6ICNmZWZlZmU7XHJcbiRibHVlOiAjMDA1M0FDO1xyXG4kZGFyay1ibHVlOiAjNTE3MDhEO1xyXG5cclxuJHByaW1hcnk6ICMwMDU4QTg7XHJcbiRzZWNvbmRhcnk6ICMwMDU4QTg7XHJcbiR5ZWxsb3c6ICNGRkMyMzY7XHJcbiRvcmFuZ2U6ICNGRjk1MkI7XHJcbiRpbmZvOiAjZTJlM2U1O1xyXG5cclxuLy8gQXBwIFZhcmlhYmxlc1xyXG4kY29udGFpbmVyLW1heC13aWR0aDogMTIwMHB4O1xyXG4kc2lkZWJhci1iZzogJGRhcmstZ3JheTtcclxuJHNpZGViYXItd2lkdGg6IDI1MHB4O1xyXG5cclxuLy8gQm9vdHN0cmFwIFZhcmlhYmxlc1xyXG5cclxuLy8gTGF5b3V0XHJcblxyXG4kZ3JpZC1icmVha3BvaW50czogKFxyXG4gIHhzOiAwLFxyXG4gIHNtOiA0ODBweCxcclxuICBtZDogNzY4cHgsXHJcbiAgbGc6IDk5MnB4LFxyXG4gIHhsOiAxMjAwcHhcclxuKTtcclxuXHJcbiRib2R5LWJnOiAkbGlnaHQtZ3JheTtcclxuXHJcbi8vIFR5cG9ncmFwaHlcclxuJGZvbnQtc2l6ZS1iYXNlOiAxcmVtO1xyXG5cclxuJGZvbnQtZmFtaWx5LXNhbnMtc2VyaWY6ICdSb2JvdG8nLCAnc2Fucy1zZXJpZic7XHJcblxyXG4kaDEtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UgKiAxLjYyNTsgLy8gMjZcclxuJGgyLWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS4zNzU7IC8vIDIzXHJcbiRoMy1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuMjU7IC8vIDIwXHJcbiRoNC1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuMTI1OyAgLy8gMThcclxuJGg1LWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS4wNjI1OyAvLyAxN1xyXG4kaDYtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7XHJcblxyXG5cclxuLy8gR2xvYmFsIFN0eWxlc1xyXG5cclxuJGJvcmRlci1yYWRpdXM6IDBweDtcclxuJGJvcmRlci1yYWRpdXMtbGc6ICRib3JkZXItcmFkaXVzO1xyXG4kYm9yZGVyLXJhZGl1cy1zbTogJGJvcmRlci1yYWRpdXM7XHJcblxyXG4vLyBGb3Jtc1xyXG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWJnOiAkd2hpdGU7XHJcblxyXG4vLyBCYWRnZXNcclxuJGJhZGdlLXBhZGRpbmcteTogLjVlbTtcclxuJGJhZGdlLXBhZGRpbmcteDogLjhlbTtcclxuJGJhZGdlLXBpbGwtcGFkZGluZy14OiAxLjJlbTtcclxuIiwiQGltcG9ydCAnLi4vZGF0YXRhYmxlLmNvbXBvbmVudC5zY3NzJztcclxuXHJcbi5pbnNwZWN0aW9uLWRyb3Bkb3duIHtcclxuXHJcbiAgYnV0dG9ue1xyXG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcclxuICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xyXG4gIH1cclxufVxyXG5cclxuLmMtZGF0YXRhYmxlLmJ1aWxkZXItam9icy10YWJsZSB7XHJcblx0aGVhZGVyIHtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdGZsZXgtd3JhcDogd3JhcDtcclxuXHRcdHJvdy1nYXA6IDEwcHg7XHJcblxyXG5cdFx0QGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChtZCl7XHJcblx0XHRcdGZsZXgtd3JhcDogbm93cmFwO1xyXG5cdFx0XHR3aWR0aDogZml0LWNvbnRlbnQ7XHJcblx0XHRcdGNvbHVtbi1nYXA6IDUwcHg7XHJcblx0XHRcdC8vIG1hcmdpbi1sZWZ0OiAyMDBweDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGZvcm0ge1xyXG5cdFx0d2lkdGg6IDEwMCU7XHJcblxyXG5cdFx0LmZvcm0tZ3JvdXAge1xyXG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0XHRjb2x1bW4tZ2FwOiAxMHB4O1xyXG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0XHRtYXJnaW46IDA7XHJcblxyXG5cdFx0XHRsYWJlbCB7XHJcblx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0XHRcdG1hcmdpbi1ib3R0b206IDA7XHJcblx0XHRcdFx0d2lkdGg6IDExNXB4O1xyXG5cclxuXHRcdFx0XHRAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKG1kKXtcclxuXHRcdFx0XHRcdHdpZHRoOiBtYXgtY29udGVudDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdCNzZWxlY3RTdGF0dXNGaWx0ZXIge1xyXG5cdFx0d2lkdGg6IDEwMCU7XHJcblxyXG5cdFx0QGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChtZCl7XHJcblx0XHRcdHdpZHRoOiAyMDBweDtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIl19 */\"","import { Component, OnInit, OnDestroy, Input, ViewChild } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { JobsService } from '@/services/jobs/jobs.service';\r\nimport { BuildersService } from '@/services/builders/builders.service';\r\nimport { CommunitiesService } from '@/services/communities/communities.service';\r\nimport { ContactsService } from '@/services/contacts/contacts.service';\r\nimport { DataTableDirective } from 'angular-datatables';\r\nimport { NgbPopoverConfig } from '@ng-bootstrap/ng-bootstrap';\r\nimport { Select2OptionData } from 'ng-select2';\r\n\r\n@Component({\r\n selector: 'datatable-builder-jobs',\r\n templateUrl: './builder-jobs-datatable.component.html',\r\n styleUrls: ['./builder-jobs-datatable.component.scss']\r\n})\r\nexport class BuilderJobsDatatableComponent implements OnInit, OnDestroy {\r\n\r\n\t@ViewChild(DataTableDirective)\r\n datatableElement: DataTableDirective;\r\n\r\n\t@Input() title : string = '';\r\n\t@Input() showFooter : boolean = true;\r\n\t@Input() rowsPerPage : number = 10;\r\n\t@Input() viewRoute : string = '';\r\n\t@Input() viewText : string = 'View';\r\n\t@Input() status : string = 'all';\r\n\t@Input() showStatus : boolean = true;\r\n\t@Input() showFilters : boolean = true;\r\n\r\n\twindowLoc = '';\r\n\trows = [];\r\n\tdtOptions : DataTables.Settings = {};\r\n\tshowTitle : Boolean = false\r\n\tactiveStatusFilter: string = ''\r\n\r\n\tjobStatuses: string[] = [\r\n\t\t'Active',\r\n\t\t'Closed',\r\n\t\t'Removed'\r\n\t];\r\n\r\n\tselect2Options = {\r\n\t\ttheme: \"bootstrap4\",\r\n\t\tdropdownAutoWidth: true,\r\n\t\twidth: \"100%\"\r\n\t}\r\n\t\r\n\tselectStatusFilter: Array = [\r\n\t\t{\r\n\t\t\tid: '',\r\n\t\t\ttext: ''\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: 'active',\r\n\t\t\ttext: 'Active'\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: 'closed',\r\n\t\t\ttext: 'Closed'\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: 'removed',\r\n\t\t\ttext: 'Removed'\r\n\t\t}\r\n\t]\r\n\r\n constructor(\r\n\t\tprivate jobsService: JobsService,\r\n\t\tprivate buildersService: BuildersService,\r\n\t\tprivate communitiesService: CommunitiesService,\r\n\t\tprivate contactsService: ContactsService,\r\n\t\tprivate config: NgbPopoverConfig\r\n\t) {\r\n\t\tconfig.placement = 'left';\r\n\t}\r\n\r\n\tdataTablesInit(searchStr? : any) {\r\n\t\t// console.log('bj dataTablesInit', this.status, this.activeStatusFilter);\r\n\t\tlet lastPage = 0;\r\n\t\tlet lastSearchText = \"\";\r\n\t\tlet searchOptions : (DataTables.SearchSettings) = {search: searchStr};\r\n\t\tthis.dtOptions = {\r\n\t\t\tpagingType: 'full_numbers',\r\n\t\t\tpageLength: this.rowsPerPage,\r\n\t\t\tlengthChange: false,\r\n\t\t\tdisplayStart: lastPage, // Last Selected Page\r\n\t\t\tinfo: this.showFooter,\r\n\t\t\tpaging: this.showFooter,\r\n\t\t\tscrollX: true,\r\n\t\t\tsearch: searchOptions,\r\n\t\t\tcolumns: [\r\n\t\t\t\t{ \"data\": \"CreatedDate\" },\r\n\t\t\t\t{ \"data\": \"ScheduledDate\" },\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"Builder\",\r\n\t\t\t\t\trender: function (data, type, row) {\r\n\t\t\t\t\t\t\treturn 'CompanyName' in data ? data.CompanyName : '';\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"Community\",\r\n\t\t\t\t\trender: function (data, type, row) {\r\n\t\t\t\t\t\t\treturn 'Name' in data ? data.Name : '';\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"Address\",\r\n\t\t\t\t\trender: function (data, type, row) {\r\n\t\t\t\t\t\t\treturn data + ' ' + (row.Address2 != null ? row.Address2 : '') + '
' + row.City + ', ' + row.State + ' ' + row.ZipCode;\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"CommunityManagers\",\r\n\t\t\t\t\trender: function (data, type, row) {\r\n\t\t\t\t\t\t\treturn data.length > 0 ? data.join('
') : '';\r\n\t\t\t\t\t},\r\n\t\t\t\t\t\"orderable\": false\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"Status\",\r\n\t\t\t\t\t\"visible\": this.showStatus,\r\n\t\t\t\t\t\"orderable\": false\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"Inspections\",\r\n\t\t\t\t\trender: function (data, type, row) {\r\n\t\t\t\t\t\treturn '';\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"Detail\",\r\n\t\t\t\t\trender: function (data, type, row) {\r\n\t\t\t\t\t\treturn '';\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tcolumnDefs: [\r\n\t\t\t\t{\r\n\t\t\t\t\ttargets: this.showStatus ? [7, 8] : [6, 7],\r\n\t\t\t\t\torderable: false,\r\n\t\t\t\t\tsearchable: false\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tserverSide: true,\r\n\t\t\tprocessing: true,\r\n\t\t\tajax: (data: object, callback, dataTablesParameters: any) => {\r\n\t\t\t\t// console.log('bj datatables', data, dataTablesParameters);\r\n\t\t\t\tlastPage = dataTablesParameters.start; // Note : dataTablesParameters.start = page count * table length\r\n\t\t\t\tlastSearchText = 'search' in dataTablesParameters && dataTablesParameters.search != 'undefined' ? dataTablesParameters.search.value : '';\r\n\r\n\t\t\t\tif ( this.activeStatusFilter !== '' ){\r\n\t\t\t\t\tdata['columns'][6]['search'].value = this.activeStatusFilter.toLowerCase()\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//this.status, this.rowsPerPage, lastPage\r\n\t\t\t\tthis.jobsService.getBuilderJobsDatatable(data).subscribe((result: any) => {\r\n\t\t\t\t\t// console.log('result', result);\r\n\t\t\t\t\t// Get all Rows\r\n\t\t\t\t\tresult.data.forEach(row => {\r\n\t\t\t\t\t\tlet communityManagers: Array = []\r\n\r\n\t\t\t\t\t\tthis.buildersService.getBuilder(row.BuilderID).subscribe((result: any) => {\r\n\t\t\t\t\t\t\trow.Builder = result.body;\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tthis.communitiesService.getCommunity(row.CommunityID).subscribe((result: any) => {\r\n\t\t\t\t\t\t\trow.Community = result.body;\r\n\t\t\t\t\t\t\trow.Community.ManagerIDs.forEach(( id: string ) => {\r\n\t\t\t\t\t\t\t\tthis.contactsService.getContact( id ).subscribe(( result: any ) => {\r\n\t\t\t\t\t\t\t\t\tcommunityManagers.push({\r\n\t\t\t\t\t\t\t\t\t\tname: result.body.Name,\r\n\t\t\t\t\t\t\t\t\t\tid: result.body.ID\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\trow['DryinChecklistAddLink'] = `/builder-jobs/${row.ID}/dryin-inspection-add`\r\n\t\t\t\t\t\trow['ShingleChecklistAddLink'] = `/builder-jobs/${row.ID}/shingle-inspection-add`\r\n\t\t\t\t\t\trow['SafetyChecklistAddLink'] = `/builder-jobs/${row.ID}/safety-inspection-add`\r\n\r\n\t\t\t\t\t\tif(row.Inspections.length){\r\n\t\t\t\t\t\t\trow.Inspections.sort(function (a, b) {\r\n\t\t\t\t\t\t\t\tconst c: any = new Date(a.CreatedDate)\r\n\t\t\t\t\t\t\t\tconst d: any = new Date(b.CreatedDate)\r\n\t\t\t\t\t\t\t\treturn c - d\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trow['Lots'] = [row.Lot1, row.Lot2].filter(Boolean).join(\"/\");\r\n\t\t\t\t\t\tlet status = row.Status;\r\n\r\n\t\t\t\t\t\t// Set Default status color\r\n\t\t\t\t\t\trow.StatusColor = 'dark';\r\n\r\n\t\t\t\t\t\tswitch(status) {\r\n\t\t\t\t\t\t\tcase 'Active':\r\n\t\t\t\t\t\t\t\trow.StatusColor = 'success';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 'Closed':\r\n\t\t\t\t\t\t\t\trow.StatusColor = 'danger';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trow.CommunityManagers = communityManagers;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// console.log(this.rows);\r\n\t\t\t\t\t// Store rows in class property\r\n\t\t\t\t\tthis.rows = result.data;\r\n\t\t\t\t\tcallback({\r\n\t\t\t\t\t\trecordsTotal: result.recordsTotal,\r\n\t\t\t\t\t\trecordsFiltered: result.recordsFiltered,\r\n\t\t\t\t\t\tdata: [] // this gets set to empty because this.rows above is rendered by angular with the relevant formatting\r\n\t\t\t\t\t});\r\n\t\t\t\t\t// setTimeout(() => this.dtTrigger.next(), 1000)\r\n\t\t\t\t\t// console.log('Refreshing columns');\r\n\t\t\t\t\t$($.fn.dataTable.tables(true)).DataTable().columns.adjust();\r\n\t\t\t\t\t\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t$($.fn.dataTable.tables(true)).DataTable().columns.adjust();\r\n\t\t\t\t\t}, 2500);\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\torder: [[0, \"desc\"]],\r\n\t\t\tinitComplete: () => {\r\n\t\t\t\tlet searchLabels = document.querySelectorAll('.dataTables_filter > label');\r\n\r\n\t\t\t\tsearchLabels.forEach((label) => {\r\n\t\t\t\t\tlabel.setAttribute('aria-label', 'Search/Filter Table');\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.showTitle = true\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// console.log('dtOptions', this.dtOptions);\r\n\t\tsetTimeout(() => {\r\n\t\t\t$($.fn.dataTable.tables(true)).DataTable().columns.adjust();\r\n\t\t}, 2000);\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\t// console.log('builder jobs init');\r\n\t\tthis.windowLoc = window.location.pathname;\r\n\t\tlet trySearch: any = window.sessionStorage.getItem(this.windowLoc + \"builderJobSearch\");\r\n\t\twindow.sessionStorage.clear();\r\n\r\n\t\tif (trySearch != null && trySearch != ''){\r\n\t\t\tthis.dataTablesInit(trySearch);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.dataTablesInit();\r\n\t\t}\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tlet dtinst: DataTables.Api;\r\n\t\tlet search : any = \"\";\r\n\r\n\t\tthis.datatableElement.dtInstance.then(x => {\r\n\t\t\tdtinst = x;\r\n\t\t\tsearch = dtinst.search();\r\n\t\t\tif (search != null || search != ''){\r\n\t\t\t\twindow.sessionStorage.setItem(this.windowLoc + \"builderJobSearch\", search);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tupdateStatusFilter( event: { value: string, data } ){\r\n\t\tconst { value } = event\r\n\r\n\t\tthis.activeStatusFilter = value\r\n\r\n\t\tthis.datatableElement.dtInstance.then(( dtInstance: DataTables.Api ) => {\r\n\t\t\tdtInstance.search('');\r\n\t\t\tdtInstance.columns().search('');\r\n\t\t\tdtInstance.draw();\r\n\t\t});\r\n\t}\r\n\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\t
\\r\\n\\t\\t

\\r\\n\\t\\t\\t{{ title }}\\r\\n\\t\\t

\\r\\n\\t\\t\\r\\n\\t\\t\\t{{ viewText }}\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tBuilder\\r\\n\\t\\t\\t\\tCommunity\\r\\n\\t\\t\\t\\tLot\\r\\n\\t\\t\\t\\tCommunity Manager\\r\\n\\t\\t\\t\\tChecklist\\r\\n\\t\\t\\t\\tDetail\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tLennar\\r\\n\\t\\t\\t\\tCommunity A\\r\\n\\t\\t\\t\\t1 / 23 - Sabal Ridge Trail\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\tObi-wan Kenobi\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t\\r\\n
\\r\\n\"","module.exports = \".c-datatable_header {\\n align-items: flex-start;\\n display: flex;\\n margin-bottom: 10px;\\n position: relative;\\n transform: translateY(0);\\n z-index: 2;\\n width: 100%;\\n justify-content: space-between;\\n}\\n@media (min-width: 768px) {\\n .c-datatable_header {\\n width: calc(100% - 240px);\\n justify-content: normal;\\n margin-bottom: 0;\\n transform: translateY(100%);\\n }\\n}\\n.c-datatable_location {\\n min-width: 170px;\\n}\\n.c-datatable .dataTables_filter {\\n text-align: left;\\n}\\n.c-datatable_view-link {\\n line-height: 2;\\n margin-left: 1em;\\n}\\n@media (min-width: 768px) {\\n .c-datatable_view-link {\\n margin-left: 2em;\\n }\\n}\\n.c-datatable_table {\\n background: #fefefe;\\n}\\n.c-datatable_address {\\n margin-bottom: 0.5rem;\\n}\\n.c-datatable small {\\n font-size: 0.75rem;\\n}\\n.c-datatable .inspection-dropdown button {\\n font-size: 0.875rem;\\n text-transform: capitalize;\\n}\\n.c-datatable thead {\\n background: #616161;\\n color: #fefefe;\\n}\\n.c-datatable thead .sorting, .c-datatable thead .sorting_asc, .c-datatable thead .sorting_desc {\\n background-image: none;\\n position: relative;\\n}\\n.c-datatable thead .sorting::after, .c-datatable thead .sorting_asc::after, .c-datatable thead .sorting_desc::after {\\n bottom: auto;\\n display: inline-block;\\n font-family: \\\"Font Awesome 5 Pro\\\";\\n font-weight: 900;\\n position: absolute;\\n right: 4px;\\n top: 50%;\\n transform: translateY(-50%);\\n}\\n.c-datatable thead .sorting::before, .c-datatable thead .sorting_asc::before, .c-datatable thead .sorting_desc::before {\\n display: none;\\n}\\n.c-datatable thead .sorting_asc::after, .c-datatable thead .sorting_desc::after {\\n color: #fefefe;\\n opacity: 1;\\n}\\n.c-datatable thead .sorting::after {\\n content: \\\"\\\\f0dc\\\";\\n}\\n.c-datatable thead .sorting_asc::after {\\n content: \\\"\\\\f0de\\\";\\n}\\n.c-datatable thead .sorting_desc::after {\\n content: \\\"\\\\f0dd\\\";\\n}\\n.c-datatable th,\\n.c-datatable td {\\n border-right: 1px solid #E8E8E8;\\n font-size: 0.875rem;\\n}\\n.c-datatable th:last-child,\\n.c-datatable td:last-child {\\n border-right: none;\\n}\\n.c-datatable th {\\n border-bottom: none;\\n font-weight: normal;\\n white-space: nowrap;\\n}\\n.c-datatable_export-button {\\n background: none;\\n border: 0;\\n cursor: pointer;\\n color: #0058A8;\\n position: absolute;\\n transform: translateY(-145%);\\n z-index: 1;\\n}\\n.c-datatable_modal-button {\\n background: none;\\n border: 0;\\n cursor: pointer;\\n color: #0058A8;\\n}\\n.c-datatable ul {\\n display: block;\\n list-style-type: none;\\n padding-left: 0;\\n margin-bottom: 0;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9kYXRhdGFibGUvQzpcXFVzZXJzXFxEYW5pZWxcXERlc2t0b3BcXFByb2plY3RzXFxTdGVybGluZ1Jvb2Zpbmcvc3JjXFxhcHBcXGNvbXBvbmVudHNcXGRhdGF0YWJsZVxcZGF0YXRhYmxlLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2RhdGF0YWJsZS9kYXRhdGFibGUuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvZGF0YXRhYmxlL0M6XFxVc2Vyc1xcRGFuaWVsXFxEZXNrdG9wXFxQcm9qZWN0c1xcU3RlcmxpbmdSb29maW5nL25vZGVfbW9kdWxlc1xcYm9vdHN0cmFwXFxzY3NzXFxtaXhpbnNcXF9icmVha3BvaW50cy5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2RhdGF0YWJsZS9DOlxcVXNlcnNcXERhbmllbFxcRGVza3RvcFxcUHJvamVjdHNcXFN0ZXJsaW5nUm9vZmluZy9zcmNcXHN0eWxlc1xcX3ZhcmlhYmxlcy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdDO0VBQ0MsdUJBQUE7RUFDQSxhQUFBO0VBQ0EsbUJBQUE7RUFDQSxrQkFBQTtFQUNBLHdCQUFBO0VBQ0EsVUFBQTtFQUNBLFdBQUE7RUFDQSw4QkFBQTtBQ0ZGO0FDbURJO0VGekRIO0lBV0UseUJBQUE7SUFDQSx1QkFBQTtJQUNBLGdCQUFBO0lBQ0EsMkJBQUE7RUNERDtBQUNGO0FESUM7RUFDQyxnQkFBQTtBQ0ZGO0FES0M7RUFDQyxnQkFBQTtBQ0hGO0FETUM7RUFDQyxjQUFBO0VBQ0EsZ0JBQUE7QUNKRjtBQ2lDSTtFRi9CSDtJQUtFLGdCQUFBO0VDSEQ7QUFDRjtBRE1DO0VBQ0MsbUJHaENNO0FGNEJSO0FET0M7RUFDQyxxQkFBQTtBQ0xGO0FEUUM7RUFDQyxrQkFBQTtBQ05GO0FEV0U7RUFDQyxtQkFBQTtFQUNBLDBCQUFBO0FDVEg7QURhQztFQUNDLG1CR3hEaUI7RUh5RGpCLGNHckRNO0FGMENSO0FEZUc7RUFHQyxzQkFBQTtFQUNBLGtCQUFBO0FDZko7QURpQkk7RUFDQyxZQUFBO0VBQ0EscUJBQUE7RUFDQSxpQ0FBQTtFQUNBLGdCQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBO0VBQ0EsUUFBQTtFQUNBLDJCQUFBO0FDZkw7QURrQkk7RUFDQyxhQUFBO0FDaEJMO0FEd0JJO0VBQ0MsY0dwRkc7RUhxRkgsVUFBQTtBQ3RCTDtBRDBCRztFQUNDLGdCQUFBO0FDeEJKO0FEMkJHO0VBQ0MsZ0JBQUE7QUN6Qko7QUQ0Qkc7RUFDQyxnQkFBQTtBQzFCSjtBRCtCQzs7RUFFQywrQkFBQTtFQUNBLG1CQUFBO0FDN0JGO0FEOEJFOztFQUNDLGtCQUFBO0FDM0JIO0FEK0JDO0VBQ0MsbUJBQUE7RUFDQSxtQkFBQTtFQUNBLG1CQUFBO0FDN0JGO0FEZ0NDO0VBQ0MsZ0JBQUE7RUFDQSxTQUFBO0VBQ0EsZUFBQTtFQUNBLGNHdEhRO0VIdUhSLGtCQUFBO0VBQ0EsNEJBQUE7RUFDQSxVQUFBO0FDOUJGO0FEaUNDO0VBQ0MsZ0JBQUE7RUFDQSxTQUFBO0VBQ0EsZUFBQTtFQUNBLGNHaElRO0FGaUdWO0FEa0NDO0VBQ0MsY0FBQTtFQUNBLHFCQUFBO0VBQ0EsZUFBQTtFQUNBLGdCQUFBO0FDaENGIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9kYXRhdGFibGUvZGF0YXRhYmxlLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnY29tcG9uZW50LWhlYWRlcic7XHJcblxyXG4uYy1kYXRhdGFibGUge1xyXG5cdCZfaGVhZGVyIHtcclxuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdG1hcmdpbi1ib3R0b206IDEwcHg7XHJcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XHJcblx0XHR6LWluZGV4OiAyO1xyXG5cdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcblxyXG5cdFx0QGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChtZCkge1xyXG5cdFx0XHR3aWR0aDogY2FsYygxMDAlIC0gMjQwcHgpO1xyXG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IG5vcm1hbDtcclxuXHRcdFx0bWFyZ2luLWJvdHRvbTogMDtcclxuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Jl9sb2NhdGlvbiB7XHJcblx0XHRtaW4td2lkdGg6IDE3MHB4O1xyXG5cdH1cclxuXHJcblx0LmRhdGFUYWJsZXNfZmlsdGVye1xyXG5cdFx0dGV4dC1hbGlnbjogbGVmdDtcclxuXHR9XHJcblxyXG5cdCZfdmlldy1saW5rIHtcclxuXHRcdGxpbmUtaGVpZ2h0OiAyO1xyXG5cdFx0bWFyZ2luLWxlZnQ6IDFlbTtcclxuXHJcblx0XHRAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKG1kKSB7XHJcblx0XHRcdG1hcmdpbi1sZWZ0OiAyZW07XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQmX3RhYmxlIHtcclxuXHRcdGJhY2tncm91bmQ6ICR3aGl0ZTtcclxuXHR9XHJcblxyXG5cdCZfYWRkcmVzcyB7XHJcblx0XHRtYXJnaW4tYm90dG9tOiAwLjVyZW07XHJcblx0fVxyXG5cclxuXHRzbWFsbCB7XHJcblx0XHRmb250LXNpemU6IHJlbS1jYWxjKDEyKTtcclxuXHR9XHJcblxyXG5cdC5pbnNwZWN0aW9uLWRyb3Bkb3duIHtcclxuXHJcblx0XHRidXR0b257XHJcblx0XHRcdGZvbnQtc2l6ZTogMC44NzVyZW07XHJcblx0XHRcdHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dGhlYWQge1xyXG5cdFx0YmFja2dyb3VuZDogJG1lZGl1bS1kYXJrLWdyYXk7XHJcblx0XHRjb2xvcjogJHdoaXRlO1xyXG5cclxuXHRcdC5zb3J0aW5nIHtcclxuXHJcblx0XHRcdCYsXHJcblx0XHRcdCZfYXNjLFxyXG5cdFx0XHQmX2Rlc2Mge1xyXG5cdFx0XHRcdGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XHJcblx0XHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cclxuXHRcdFx0XHQmOjphZnRlciB7XHJcblx0XHRcdFx0XHRib3R0b206IGF1dG87XHJcblx0XHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHRcdFx0XHRmb250LWZhbWlseTogJ0ZvbnQgQXdlc29tZSA1IFBybyc7XHJcblx0XHRcdFx0XHRmb250LXdlaWdodDogOTAwO1xyXG5cdFx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0XHRcdFx0cmlnaHQ6IDRweDtcclxuXHRcdFx0XHRcdHRvcDogNTAlO1xyXG5cdFx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0Jjo6YmVmb3JlIHtcclxuXHRcdFx0XHRcdGRpc3BsYXk6IG5vbmU7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Jl9hc2MsXHJcblx0XHRcdCZfZGVzYyB7XHJcblxyXG5cdFx0XHRcdCY6OmFmdGVyIHtcclxuXHRcdFx0XHRcdGNvbG9yOiAkd2hpdGU7XHJcblx0XHRcdFx0XHRvcGFjaXR5OiAxO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Jjo6YWZ0ZXIge1xyXG5cdFx0XHRcdGNvbnRlbnQ6IFwiXFxmMGRjXCI7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdCZfYXNjOjphZnRlciB7XHJcblx0XHRcdFx0Y29udGVudDogXCJcXGYwZGVcIjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Jl9kZXNjOjphZnRlciB7XHJcblx0XHRcdFx0Y29udGVudDogXCJcXGYwZGRcIjtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dGgsXHJcblx0dGQge1xyXG5cdFx0Ym9yZGVyLXJpZ2h0OiAxcHggc29saWQgJGxpZ2h0LWdyYXk7XHJcblx0XHRmb250LXNpemU6IHJlbS1jYWxjKDE0KTtcclxuXHRcdCY6bGFzdC1jaGlsZCB7XHJcblx0XHRcdGJvcmRlci1yaWdodDogbm9uZTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHRoIHtcclxuXHRcdGJvcmRlci1ib3R0b206IG5vbmU7XHJcblx0XHRmb250LXdlaWdodDogbm9ybWFsO1xyXG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuXHR9XHJcblxyXG5cdCZfZXhwb3J0LWJ1dHRvbiB7XHJcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xyXG5cdFx0Ym9yZGVyOiAwO1xyXG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xyXG5cdFx0Y29sb3I6ICRwcmltYXJ5O1xyXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNDUlKTtcclxuXHRcdHotaW5kZXg6IDE7XHJcblx0fVxyXG5cclxuXHQmX21vZGFsLWJ1dHRvbiB7XHJcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xyXG5cdFx0Ym9yZGVyOiAwO1xyXG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xyXG5cdFx0Y29sb3I6ICRwcmltYXJ5O1xyXG5cdH1cclxuXHJcblx0dWwge1xyXG5cdFx0ZGlzcGxheTogYmxvY2s7XHJcblx0XHRsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XHJcblx0XHRwYWRkaW5nLWxlZnQ6IDA7XHJcblx0XHRtYXJnaW4tYm90dG9tOiAwO1xyXG5cclxuXHR9XHJcblxyXG5cclxufVxyXG5cclxuIiwiLmMtZGF0YXRhYmxlX2hlYWRlciB7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBkaXNwbGF5OiBmbGV4O1xuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgei1pbmRleDogMjtcbiAgd2lkdGg6IDEwMCU7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuYy1kYXRhdGFibGVfaGVhZGVyIHtcbiAgICB3aWR0aDogY2FsYygxMDAlIC0gMjQwcHgpO1xuICAgIGp1c3RpZnktY29udGVudDogbm9ybWFsO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICB9XG59XG4uYy1kYXRhdGFibGVfbG9jYXRpb24ge1xuICBtaW4td2lkdGg6IDE3MHB4O1xufVxuLmMtZGF0YXRhYmxlIC5kYXRhVGFibGVzX2ZpbHRlciB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG4uYy1kYXRhdGFibGVfdmlldy1saW5rIHtcbiAgbGluZS1oZWlnaHQ6IDI7XG4gIG1hcmdpbi1sZWZ0OiAxZW07XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmMtZGF0YXRhYmxlX3ZpZXctbGluayB7XG4gICAgbWFyZ2luLWxlZnQ6IDJlbTtcbiAgfVxufVxuLmMtZGF0YXRhYmxlX3RhYmxlIHtcbiAgYmFja2dyb3VuZDogI2ZlZmVmZTtcbn1cbi5jLWRhdGF0YWJsZV9hZGRyZXNzIHtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xufVxuLmMtZGF0YXRhYmxlIHNtYWxsIHtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xufVxuLmMtZGF0YXRhYmxlIC5pbnNwZWN0aW9uLWRyb3Bkb3duIGJ1dHRvbiB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xufVxuLmMtZGF0YXRhYmxlIHRoZWFkIHtcbiAgYmFja2dyb3VuZDogIzYxNjE2MTtcbiAgY29sb3I6ICNmZWZlZmU7XG59XG4uYy1kYXRhdGFibGUgdGhlYWQgLnNvcnRpbmcsIC5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZ19hc2MsIC5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZ19kZXNjIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nOjphZnRlciwgLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nX2FzYzo6YWZ0ZXIsIC5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZ19kZXNjOjphZnRlciB7XG4gIGJvdHRvbTogYXV0bztcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LWZhbWlseTogXCJGb250IEF3ZXNvbWUgNSBQcm9cIjtcbiAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogNHB4O1xuICB0b3A6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nOjpiZWZvcmUsIC5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZ19hc2M6OmJlZm9yZSwgLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nX2Rlc2M6OmJlZm9yZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uYy1kYXRhdGFibGUgdGhlYWQgLnNvcnRpbmdfYXNjOjphZnRlciwgLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nX2Rlc2M6OmFmdGVyIHtcbiAgY29sb3I6ICNmZWZlZmU7XG4gIG9wYWNpdHk6IDE7XG59XG4uYy1kYXRhdGFibGUgdGhlYWQgLnNvcnRpbmc6OmFmdGVyIHtcbiAgY29udGVudDogXCJcXGYwZGNcIjtcbn1cbi5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZ19hc2M6OmFmdGVyIHtcbiAgY29udGVudDogXCJcXGYwZGVcIjtcbn1cbi5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZ19kZXNjOjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXFxmMGRkXCI7XG59XG4uYy1kYXRhdGFibGUgdGgsXG4uYy1kYXRhdGFibGUgdGQge1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjRThFOEU4O1xuICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuLmMtZGF0YXRhYmxlIHRoOmxhc3QtY2hpbGQsXG4uYy1kYXRhdGFibGUgdGQ6bGFzdC1jaGlsZCB7XG4gIGJvcmRlci1yaWdodDogbm9uZTtcbn1cbi5jLWRhdGF0YWJsZSB0aCB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4uYy1kYXRhdGFibGVfZXhwb3J0LWJ1dHRvbiB7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjb2xvcjogIzAwNThBODtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE0NSUpO1xuICB6LWluZGV4OiAxO1xufVxuLmMtZGF0YXRhYmxlX21vZGFsLWJ1dHRvbiB7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjb2xvcjogIzAwNThBODtcbn1cbi5jLWRhdGF0YWJsZSB1bCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn0iLCIvLyBCcmVha3BvaW50IHZpZXdwb3J0IHNpemVzIGFuZCBtZWRpYSBxdWVyaWVzLlxuLy9cbi8vIEJyZWFrcG9pbnRzIGFyZSBkZWZpbmVkIGFzIGEgbWFwIG9mIChuYW1lOiBtaW5pbXVtIHdpZHRoKSwgb3JkZXIgZnJvbSBzbWFsbCB0byBsYXJnZTpcbi8vXG4vLyAgICAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpXG4vL1xuLy8gVGhlIG1hcCBkZWZpbmVkIGluIHRoZSBgJGdyaWQtYnJlYWtwb2ludHNgIGdsb2JhbCB2YXJpYWJsZSBpcyB1c2VkIGFzIHRoZSBgJGJyZWFrcG9pbnRzYCBhcmd1bWVudCBieSBkZWZhdWx0LlxuXG4vLyBOYW1lIG9mIHRoZSBuZXh0IGJyZWFrcG9pbnQsIG9yIG51bGwgZm9yIHRoZSBsYXN0IGJyZWFrcG9pbnQuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtKVxuLy8gICAgbWRcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KSlcbi8vICAgIG1kXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICRicmVha3BvaW50LW5hbWVzOiAoeHMgc20gbWQgbGcgeGwpKVxuLy8gICAgbWRcbkBmdW5jdGlvbiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMsICRicmVha3BvaW50LW5hbWVzOiBtYXAta2V5cygkYnJlYWtwb2ludHMpKSB7XG4gICRuOiBpbmRleCgkYnJlYWtwb2ludC1uYW1lcywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRuICE9IG51bGwgYW5kICRuIDwgbGVuZ3RoKCRicmVha3BvaW50LW5hbWVzKSwgbnRoKCRicmVha3BvaW50LW5hbWVzLCAkbiArIDEpLCBudWxsKTtcbn1cblxuLy8gTWluaW11bSBicmVha3BvaW50IHdpZHRoLiBOdWxsIGZvciB0aGUgc21hbGxlc3QgKGZpcnN0KSBicmVha3BvaW50LlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbWluKHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgNTc2cHhcbkBmdW5jdGlvbiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRtaW4gIT0gMCwgJG1pbiwgbnVsbCk7XG59XG5cbi8vIE1heGltdW0gYnJlYWtwb2ludCB3aWR0aC4gTnVsbCBmb3IgdGhlIGxhcmdlc3QgKGxhc3QpIGJyZWFrcG9pbnQuXG4vLyBUaGUgbWF4aW11bSB2YWx1ZSBpcyBjYWxjdWxhdGVkIGFzIHRoZSBtaW5pbXVtIG9mIHRoZSBuZXh0IG9uZSBsZXNzIDAuMDJweFxuLy8gdG8gd29yayBhcm91bmQgdGhlIGxpbWl0YXRpb25zIG9mIGBtaW4tYCBhbmQgYG1heC1gIHByZWZpeGVzIGFuZCB2aWV3cG9ydHMgd2l0aCBmcmFjdGlvbmFsIHdpZHRocy5cbi8vIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvbWVkaWFxdWVyaWVzLTQvI21xLW1pbi1tYXhcbi8vIFVzZXMgMC4wMnB4IHJhdGhlciB0aGFuIDAuMDFweCB0byB3b3JrIGFyb3VuZCBhIGN1cnJlbnQgcm91bmRpbmcgYnVnIGluIFNhZmFyaS5cbi8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MjYxXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1tYXgoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICA3NjcuOThweFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRuZXh0OiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEByZXR1cm4gaWYoJG5leHQsIGJyZWFrcG9pbnQtbWluKCRuZXh0LCAkYnJlYWtwb2ludHMpIC0gLjAyLCBudWxsKTtcbn1cblxuLy8gUmV0dXJucyBhIGJsYW5rIHN0cmluZyBpZiBzbWFsbGVzdCBicmVha3BvaW50LCBvdGhlcndpc2UgcmV0dXJucyB0aGUgbmFtZSB3aXRoIGEgZGFzaCBpbiBmcm9udC5cbi8vIFVzZWZ1bCBmb3IgbWFraW5nIHJlc3BvbnNpdmUgdXRpbGl0aWVzLlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoeHMsICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICBcIlwiICAoUmV0dXJucyBhIGJsYW5rIHN0cmluZylcbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICBcIi1zbVwiXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pbmZpeCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICBAcmV0dXJuIGlmKGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpID09IG51bGwsIFwiXCIsIFwiLSN7JG5hbWV9XCIpO1xufVxuXG4vLyBNZWRpYSBvZiBhdCBsZWFzdCB0aGUgbWluaW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIHdpZGVyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWluIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBNZWRpYSBvZiBhdCBtb3N0IHRoZSBtYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguIE5vIHF1ZXJ5IGZvciB0aGUgbGFyZ2VzdCBicmVha3BvaW50LlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCBuYXJyb3dlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWF4IHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBNZWRpYSB0aGF0IHNwYW5zIG11bHRpcGxlIGJyZWFrcG9pbnQgd2lkdGhzLlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IGJldHdlZW4gdGhlIG1pbiBhbmQgbWF4IGJyZWFrcG9pbnRzXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1iZXR3ZWVuKCRsb3dlciwgJHVwcGVyLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRsb3dlciwgJGJyZWFrcG9pbnRzKTtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJHVwcGVyLCAkYnJlYWtwb2ludHMpO1xuXG4gIEBpZiAkbWluICE9IG51bGwgYW5kICRtYXggIT0gbnVsbCB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1heCA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRsb3dlciwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJHVwcGVyLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLyBNZWRpYSBiZXR3ZWVuIHRoZSBicmVha3BvaW50J3MgbWluaW11bSBhbmQgbWF4aW11bSB3aWR0aHMuXG4vLyBObyBtaW5pbXVtIGZvciB0aGUgc21hbGxlc3QgYnJlYWtwb2ludCwgYW5kIG5vIG1heGltdW0gZm9yIHRoZSBsYXJnZXN0IG9uZS5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBvbmx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50LCBub3Qgdmlld3BvcnRzIGFueSB3aWRlciBvciBuYXJyb3dlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LW9ubHkoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuXG4gIEBpZiAkbWluICE9IG51bGwgYW5kICRtYXggIT0gbnVsbCB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1heCA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWluID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkbmFtZSwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEN1c3RvbSBDb2xvcnNcclxuXHJcbiRkYXJrLWdyYXk6ICMyNDI0MjQ7XHJcbiRtZWRpdW0tZGFyay1ncmF5OiAjNjE2MTYxO1xyXG4kbWVkaXVtLWdyYXk6ICM1MjUyNTI7XHJcbiRtZWRpdW0tbGlnaHQtZ3JheTogI0JDQzZDRTtcclxuJGxpZ2h0LWdyYXk6ICNFOEU4RTg7XHJcbiR3aGl0ZTogI2ZlZmVmZTtcclxuJGJsdWU6ICMwMDUzQUM7XHJcbiRkYXJrLWJsdWU6ICM1MTcwOEQ7XHJcblxyXG4kcHJpbWFyeTogIzAwNThBODtcclxuJHNlY29uZGFyeTogIzAwNThBODtcclxuJHllbGxvdzogI0ZGQzIzNjtcclxuJG9yYW5nZTogI0ZGOTUyQjtcclxuJGluZm86ICNlMmUzZTU7XHJcblxyXG4vLyBBcHAgVmFyaWFibGVzXHJcbiRjb250YWluZXItbWF4LXdpZHRoOiAxMjAwcHg7XHJcbiRzaWRlYmFyLWJnOiAkZGFyay1ncmF5O1xyXG4kc2lkZWJhci13aWR0aDogMjUwcHg7XHJcblxyXG4vLyBCb290c3RyYXAgVmFyaWFibGVzXHJcblxyXG4vLyBMYXlvdXRcclxuXHJcbiRncmlkLWJyZWFrcG9pbnRzOiAoXHJcbiAgeHM6IDAsXHJcbiAgc206IDQ4MHB4LFxyXG4gIG1kOiA3NjhweCxcclxuICBsZzogOTkycHgsXHJcbiAgeGw6IDEyMDBweFxyXG4pO1xyXG5cclxuJGJvZHktYmc6ICRsaWdodC1ncmF5O1xyXG5cclxuLy8gVHlwb2dyYXBoeVxyXG4kZm9udC1zaXplLWJhc2U6IDFyZW07XHJcblxyXG4kZm9udC1mYW1pbHktc2Fucy1zZXJpZjogJ1JvYm90bycsICdzYW5zLXNlcmlmJztcclxuXHJcbiRoMS1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuNjI1OyAvLyAyNlxyXG4kaDItZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UgKiAxLjM3NTsgLy8gMjNcclxuJGgzLWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS4yNTsgLy8gMjBcclxuJGg0LWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS4xMjU7ICAvLyAxOFxyXG4kaDUtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UgKiAxLjA2MjU7IC8vIDE3XHJcbiRoNi1mb250LXNpemU6ICRmb250LXNpemUtYmFzZTtcclxuXHJcblxyXG4vLyBHbG9iYWwgU3R5bGVzXHJcblxyXG4kYm9yZGVyLXJhZGl1czogMHB4O1xyXG4kYm9yZGVyLXJhZGl1cy1sZzogJGJvcmRlci1yYWRpdXM7XHJcbiRib3JkZXItcmFkaXVzLXNtOiAkYm9yZGVyLXJhZGl1cztcclxuXHJcbi8vIEZvcm1zXHJcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYmc6ICR3aGl0ZTtcclxuXHJcbi8vIEJhZGdlc1xyXG4kYmFkZ2UtcGFkZGluZy15OiAuNWVtO1xyXG4kYmFkZ2UtcGFkZGluZy14OiAuOGVtO1xyXG4kYmFkZ2UtcGlsbC1wYWRkaW5nLXg6IDEuMmVtO1xyXG4iXX0= */\"","import { Component, OnInit, Input } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { JobsService } from '@/services/jobs/jobs.service';\r\n\r\n@Component({\r\n selector: 'datatable',\r\n templateUrl: './datatable.component.html',\r\n styleUrls: ['./datatable.component.scss']\r\n})\r\nexport class DatatableComponent implements OnInit {\r\n\r\n\t@Input() title : string = '';\r\n\t@Input() showFooter : boolean = true;\r\n\t@Input() rowsPerPage : number = 10;\r\n\t@Input() viewRoute : string = '';\r\n\t@Input() viewText : string = 'View';\r\n\t@Input() dataType : string;\r\n\r\n\tdtOptions : DataTables.Settings = {};\r\n\tdtTrigger : Subject = new Subject();\r\n\tdefaultDTOptions = {};\r\n\ttableData = [];\r\n\r\n constructor(\r\n\t private jobsService: JobsService,\r\n )\r\n {\r\n\t this.defaultDTOptions = {\r\n\t pagingType : 'simple_numbers',\r\n\t lengthChange: false,\r\n\t info: this.showFooter,\r\n\t paging: this.showFooter,\r\n\t\t\tinitComplete: () => {\r\n\t\t\t\tlet searchLabels = document.querySelectorAll('.dataTables_filter > label');\r\n\r\n\t\t\t\tsearchLabels.forEach((label) => {\r\n\t\t\t\t\tlabel.setAttribute('aria-label', 'Search/Filter Table');\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t }\r\n\t}\r\n\r\n ngOnInit() {\r\n\t this.getData(this.dataType);\r\n }\r\n\r\n initBuilderJobsTable() {\r\n\t\tlet options = Object.assign({\r\n\t\t\tdata: this.tableData,\r\n\t\t\tcolumns: [\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'Builder',\r\n\t\t\t\t\tdata: 'builder.companyName'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'Community',\r\n\t\t\t\t\tdata: 'community.name'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'Lot',\r\n\t\t\t\t\tdata: 'lot1'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'Community Manager',\r\n\t\t\t\t\tdata: 'community.communityManagerName'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'Checklist',\r\n\t\t\t\t\tdata: ''\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'Detail',\r\n\t\t\t\t\tdata: ''\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t}, this.defaultDTOptions);\r\n\r\n\t\tthis.dtOptions = options;\r\n\t\tthis.dtTrigger.next();\r\n\r\n\t\tconsole.log(this.dtOptions)\r\n\r\n }\r\n\r\n getData(type) {\r\n\t switch(type) {\r\n\t\t case 'builderjobs':\r\n\t\t this.jobsService.getBuilderJobs().subscribe((result: any) => {\r\n\t\t\t \tthis.tableData = result.body;\r\n\r\n\t\t\t \tthis.initBuilderJobsTable();\r\n\t\t\t });\r\n\t\t break;\r\n\t }\r\n }\r\n}\r\n","module.exports = \"
\\r\\n\\t
\\r\\n\\t\\t

\\r\\n\\t\\t\\t{{ title }}\\r\\n\\t\\t

\\r\\n\\t\\t\\r\\n\\t\\t\\t{{ viewText }}\\r\\n\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tCreated On\\r\\n\\t\\t\\t\\tScheduled Date\\r\\n\\t\\t\\t\\tName\\r\\n\\t\\t\\t\\tPhone\\r\\n\\t\\t\\t\\tEmail\\r\\n\\t\\t\\t\\tLocation\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\tStatus\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\tChecklist\\r\\n\\t\\t\\t\\tDetail\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{ row.CreatedDate | date }}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{ row.ScheduledDate | date }}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{ row.FirstName }} {{ row.LastName }}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{ row.Phone | mask: '000-000-0000' }}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{ row.Email }}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t{{ row.Address }}
\\r\\n\\t\\t\\t\\t\\t\\t
{{ row.Address2 }}
\\r\\n\\t\\t\\t\\t\\t\\t{{ row.City }}, {{ row.State }} {{ row.ZipCode }}\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t{{ row.Status }}\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tNew Safety...\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t\\r\\n
\\r\\n\"","module.exports = \".c-datatable_header {\\n align-items: flex-start;\\n display: flex;\\n margin-bottom: 10px;\\n position: relative;\\n transform: translateY(0);\\n z-index: 2;\\n width: 100%;\\n justify-content: space-between;\\n}\\n@media (min-width: 768px) {\\n .c-datatable_header {\\n width: calc(100% - 240px);\\n justify-content: normal;\\n margin-bottom: 0;\\n transform: translateY(100%);\\n }\\n}\\n.c-datatable_location {\\n min-width: 170px;\\n}\\n.c-datatable .dataTables_filter {\\n text-align: left;\\n}\\n.c-datatable_view-link {\\n line-height: 2;\\n margin-left: 1em;\\n}\\n@media (min-width: 768px) {\\n .c-datatable_view-link {\\n margin-left: 2em;\\n }\\n}\\n.c-datatable_table {\\n background: #fefefe;\\n}\\n.c-datatable_address {\\n margin-bottom: 0.5rem;\\n}\\n.c-datatable small {\\n font-size: 0.75rem;\\n}\\n.c-datatable .inspection-dropdown button {\\n font-size: 0.875rem;\\n text-transform: capitalize;\\n}\\n.c-datatable thead {\\n background: #616161;\\n color: #fefefe;\\n}\\n.c-datatable thead .sorting, .c-datatable thead .sorting_asc, .c-datatable thead .sorting_desc {\\n background-image: none;\\n position: relative;\\n}\\n.c-datatable thead .sorting::after, .c-datatable thead .sorting_asc::after, .c-datatable thead .sorting_desc::after {\\n bottom: auto;\\n display: inline-block;\\n font-family: \\\"Font Awesome 5 Pro\\\";\\n font-weight: 900;\\n position: absolute;\\n right: 4px;\\n top: 50%;\\n transform: translateY(-50%);\\n}\\n.c-datatable thead .sorting::before, .c-datatable thead .sorting_asc::before, .c-datatable thead .sorting_desc::before {\\n display: none;\\n}\\n.c-datatable thead .sorting_asc::after, .c-datatable thead .sorting_desc::after {\\n color: #fefefe;\\n opacity: 1;\\n}\\n.c-datatable thead .sorting::after {\\n content: \\\"\\\\f0dc\\\";\\n}\\n.c-datatable thead .sorting_asc::after {\\n content: \\\"\\\\f0de\\\";\\n}\\n.c-datatable thead .sorting_desc::after {\\n content: \\\"\\\\f0dd\\\";\\n}\\n.c-datatable th,\\n.c-datatable td {\\n border-right: 1px solid #E8E8E8;\\n font-size: 0.875rem;\\n}\\n.c-datatable th:last-child,\\n.c-datatable td:last-child {\\n border-right: none;\\n}\\n.c-datatable th {\\n border-bottom: none;\\n font-weight: normal;\\n white-space: nowrap;\\n}\\n.c-datatable_export-button {\\n background: none;\\n border: 0;\\n cursor: pointer;\\n color: #0058A8;\\n position: absolute;\\n transform: translateY(-145%);\\n z-index: 1;\\n}\\n.c-datatable_modal-button {\\n background: none;\\n border: 0;\\n cursor: pointer;\\n color: #0058A8;\\n}\\n.c-datatable ul {\\n display: block;\\n list-style-type: none;\\n padding-left: 0;\\n margin-bottom: 0;\\n}\\n.c-datatable.repairs-table header {\\n align-items: center;\\n width: 100%;\\n flex-wrap: wrap;\\n row-gap: 10px;\\n}\\n@media (min-width: 768px) {\\n .c-datatable.repairs-table header {\\n flex-wrap: nowrap;\\n width: -moz-fit-content;\\n width: fit-content;\\n -moz-column-gap: 50px;\\n column-gap: 50px;\\n }\\n}\\n.c-datatable.repairs-table form {\\n width: 100%;\\n}\\n.c-datatable.repairs-table form .form-group {\\n display: flex;\\n -moz-column-gap: 10px;\\n column-gap: 10px;\\n align-items: center;\\n margin: 0;\\n}\\n.c-datatable.repairs-table form .form-group label {\\n display: inline-block;\\n margin-bottom: 0;\\n width: 115px;\\n}\\n@media (min-width: 768px) {\\n .c-datatable.repairs-table form .form-group label {\\n width: -moz-max-content;\\n width: max-content;\\n }\\n}\\n.c-datatable.repairs-table #selectStatusFilter {\\n width: 100%;\\n}\\n@media (min-width: 768px) {\\n .c-datatable.repairs-table #selectStatusFilter {\\n width: 200px;\\n }\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9kYXRhdGFibGUvcmVwYWlyLWpvYnMtZGF0YXRhYmxlL0M6XFxVc2Vyc1xcRGFuaWVsXFxEZXNrdG9wXFxQcm9qZWN0c1xcU3RlcmxpbmdSb29maW5nL3NyY1xcYXBwXFxjb21wb25lbnRzXFxkYXRhdGFibGVcXHJlcGFpci1qb2JzLWRhdGF0YWJsZVxccmVwYWlyLWpvYnMtZGF0YXRhYmxlLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2RhdGF0YWJsZS9yZXBhaXItam9icy1kYXRhdGFibGUvcmVwYWlyLWpvYnMtZGF0YXRhYmxlLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2RhdGF0YWJsZS9yZXBhaXItam9icy1kYXRhdGFibGUvQzpcXFVzZXJzXFxEYW5pZWxcXERlc2t0b3BcXFByb2plY3RzXFxTdGVybGluZ1Jvb2Zpbmcvbm9kZV9tb2R1bGVzXFxib290c3RyYXBcXHNjc3NcXG1peGluc1xcX2JyZWFrcG9pbnRzLnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvZGF0YXRhYmxlL3JlcGFpci1qb2JzLWRhdGF0YWJsZS9DOlxcVXNlcnNcXERhbmllbFxcRGVza3RvcFxcUHJvamVjdHNcXFN0ZXJsaW5nUm9vZmluZy9zcmNcXHN0eWxlc1xcX3ZhcmlhYmxlcy5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2RhdGF0YWJsZS9yZXBhaXItam9icy1kYXRhdGFibGUvQzpcXFVzZXJzXFxEYW5pZWxcXERlc2t0b3BcXFByb2plY3RzXFxTdGVybGluZ1Jvb2Zpbmcvc3RkaW4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0M7RUFDQyx1QkFBQTtFQUNBLGFBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0Esd0JBQUE7RUFDQSxVQUFBO0VBQ0EsV0FBQTtFQUNBLDhCQUFBO0FDRkY7QUNtREk7RUZ6REg7SUFXRSx5QkFBQTtJQUNBLHVCQUFBO0lBQ0EsZ0JBQUE7SUFDQSwyQkFBQTtFQ0REO0FBQ0Y7QURJQztFQUNDLGdCQUFBO0FDRkY7QURLQztFQUNDLGdCQUFBO0FDSEY7QURNQztFQUNDLGNBQUE7RUFDQSxnQkFBQTtBQ0pGO0FDaUNJO0VGL0JIO0lBS0UsZ0JBQUE7RUNIRDtBQUNGO0FETUM7RUFDQyxtQkdoQ007QUY0QlI7QURPQztFQUNDLHFCQUFBO0FDTEY7QURRQztFQUNDLGtCQUFBO0FDTkY7QURXRTtFQUNDLG1CQUFBO0VBQ0EsMEJBQUE7QUNUSDtBRGFDO0VBQ0MsbUJHeERpQjtFSHlEakIsY0dyRE07QUYwQ1I7QURlRztFQUdDLHNCQUFBO0VBQ0Esa0JBQUE7QUNmSjtBRGlCSTtFQUNDLFlBQUE7RUFDQSxxQkFBQTtFQUNBLGlDQUFBO0VBQ0EsZ0JBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7RUFDQSxRQUFBO0VBQ0EsMkJBQUE7QUNmTDtBRGtCSTtFQUNDLGFBQUE7QUNoQkw7QUR3Qkk7RUFDQyxjR3BGRztFSHFGSCxVQUFBO0FDdEJMO0FEMEJHO0VBQ0MsZ0JBQUE7QUN4Qko7QUQyQkc7RUFDQyxnQkFBQTtBQ3pCSjtBRDRCRztFQUNDLGdCQUFBO0FDMUJKO0FEK0JDOztFQUVDLCtCQUFBO0VBQ0EsbUJBQUE7QUM3QkY7QUQ4QkU7O0VBQ0Msa0JBQUE7QUMzQkg7QUQrQkM7RUFDQyxtQkFBQTtFQUNBLG1CQUFBO0VBQ0EsbUJBQUE7QUM3QkY7QURnQ0M7RUFDQyxnQkFBQTtFQUNBLFNBQUE7RUFDQSxlQUFBO0VBQ0EsY0d0SFE7RUh1SFIsa0JBQUE7RUFDQSw0QkFBQTtFQUNBLFVBQUE7QUM5QkY7QURpQ0M7RUFDQyxnQkFBQTtFQUNBLFNBQUE7RUFDQSxlQUFBO0VBQ0EsY0doSVE7QUZpR1Y7QURrQ0M7RUFDQyxjQUFBO0VBQ0EscUJBQUE7RUFDQSxlQUFBO0VBQ0EsZ0JBQUE7QUNoQ0Y7QUcvR0M7RUFDQyxtQkFBQTtFQUNBLFdBQUE7RUFDQSxlQUFBO0VBQ0EsYUFBQTtBSGtIRjtBQzdESTtFRXpESDtJQU9FLGlCQUFBO0lBQ0EsdUJBQUE7SUFBQSxrQkFBQTtJQUNBLHFCQUFBO1NBQUEsZ0JBQUE7RUhtSEQ7QUFDRjtBRy9HQztFQUNDLFdBQUE7QUhpSEY7QUcvR0U7RUFDQyxhQUFBO0VBQ0EscUJBQUE7T0FBQSxnQkFBQTtFQUNBLG1CQUFBO0VBQ0EsU0FBQTtBSGlISDtBRy9HRztFQUNDLHFCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxZQUFBO0FIaUhKO0FDbEZJO0VFbENEO0lBTUUsdUJBQUE7SUFBQSxrQkFBQTtFSGtISDtBQUNGO0FHN0dDO0VBQ0MsV0FBQTtBSCtHRjtBQzFGSTtFRXRCSDtJQUlFLFlBQUE7RUhnSEQ7QUFDRiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvZGF0YXRhYmxlL3JlcGFpci1qb2JzLWRhdGF0YWJsZS9yZXBhaXItam9icy1kYXRhdGFibGUuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICdjb21wb25lbnQtaGVhZGVyJztcclxuXHJcbi5jLWRhdGF0YWJsZSB7XHJcblx0Jl9oZWFkZXIge1xyXG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcclxuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcclxuXHRcdHotaW5kZXg6IDI7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuXHJcblx0XHRAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKG1kKSB7XHJcblx0XHRcdHdpZHRoOiBjYWxjKDEwMCUgLSAyNDBweCk7XHJcblx0XHRcdGp1c3RpZnktY29udGVudDogbm9ybWFsO1xyXG5cdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xyXG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQmX2xvY2F0aW9uIHtcclxuXHRcdG1pbi13aWR0aDogMTcwcHg7XHJcblx0fVxyXG5cclxuXHQuZGF0YVRhYmxlc19maWx0ZXJ7XHJcblx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xyXG5cdH1cclxuXHJcblx0Jl92aWV3LWxpbmsge1xyXG5cdFx0bGluZS1oZWlnaHQ6IDI7XHJcblx0XHRtYXJnaW4tbGVmdDogMWVtO1xyXG5cclxuXHRcdEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobWQpIHtcclxuXHRcdFx0bWFyZ2luLWxlZnQ6IDJlbTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdCZfdGFibGUge1xyXG5cdFx0YmFja2dyb3VuZDogJHdoaXRlO1xyXG5cdH1cclxuXHJcblx0Jl9hZGRyZXNzIHtcclxuXHRcdG1hcmdpbi1ib3R0b206IDAuNXJlbTtcclxuXHR9XHJcblxyXG5cdHNtYWxsIHtcclxuXHRcdGZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpO1xyXG5cdH1cclxuXHJcblx0Lmluc3BlY3Rpb24tZHJvcGRvd24ge1xyXG5cclxuXHRcdGJ1dHRvbntcclxuXHRcdFx0Zm9udC1zaXplOiAwLjg3NXJlbTtcclxuXHRcdFx0dGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR0aGVhZCB7XHJcblx0XHRiYWNrZ3JvdW5kOiAkbWVkaXVtLWRhcmstZ3JheTtcclxuXHRcdGNvbG9yOiAkd2hpdGU7XHJcblxyXG5cdFx0LnNvcnRpbmcge1xyXG5cclxuXHRcdFx0JixcclxuXHRcdFx0Jl9hc2MsXHJcblx0XHRcdCZfZGVzYyB7XHJcblx0XHRcdFx0YmFja2dyb3VuZC1pbWFnZTogbm9uZTtcclxuXHRcdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblxyXG5cdFx0XHRcdCY6OmFmdGVyIHtcclxuXHRcdFx0XHRcdGJvdHRvbTogYXV0bztcclxuXHRcdFx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdFx0XHRcdGZvbnQtZmFtaWx5OiAnRm9udCBBd2Vzb21lIDUgUHJvJztcclxuXHRcdFx0XHRcdGZvbnQtd2VpZ2h0OiA5MDA7XHJcblx0XHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHRcdFx0XHRyaWdodDogNHB4O1xyXG5cdFx0XHRcdFx0dG9wOiA1MCU7XHJcblx0XHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQmOjpiZWZvcmUge1xyXG5cdFx0XHRcdFx0ZGlzcGxheTogbm9uZTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQmX2FzYyxcclxuXHRcdFx0Jl9kZXNjIHtcclxuXHJcblx0XHRcdFx0Jjo6YWZ0ZXIge1xyXG5cdFx0XHRcdFx0Y29sb3I6ICR3aGl0ZTtcclxuXHRcdFx0XHRcdG9wYWNpdHk6IDE7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQmOjphZnRlciB7XHJcblx0XHRcdFx0Y29udGVudDogXCJcXGYwZGNcIjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Jl9hc2M6OmFmdGVyIHtcclxuXHRcdFx0XHRjb250ZW50OiBcIlxcZjBkZVwiO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQmX2Rlc2M6OmFmdGVyIHtcclxuXHRcdFx0XHRjb250ZW50OiBcIlxcZjBkZFwiO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR0aCxcclxuXHR0ZCB7XHJcblx0XHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkbGlnaHQtZ3JheTtcclxuXHRcdGZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpO1xyXG5cdFx0JjpsYXN0LWNoaWxkIHtcclxuXHRcdFx0Ym9yZGVyLXJpZ2h0OiBub25lO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dGgge1xyXG5cdFx0Ym9yZGVyLWJvdHRvbTogbm9uZTtcclxuXHRcdGZvbnQtd2VpZ2h0OiBub3JtYWw7XHJcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG5cdH1cclxuXHJcblx0Jl9leHBvcnQtYnV0dG9uIHtcclxuXHRcdGJhY2tncm91bmQ6IG5vbmU7XHJcblx0XHRib3JkZXI6IDA7XHJcblx0XHRjdXJzb3I6IHBvaW50ZXI7XHJcblx0XHRjb2xvcjogJHByaW1hcnk7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE0NSUpO1xyXG5cdFx0ei1pbmRleDogMTtcclxuXHR9XHJcblxyXG5cdCZfbW9kYWwtYnV0dG9uIHtcclxuXHRcdGJhY2tncm91bmQ6IG5vbmU7XHJcblx0XHRib3JkZXI6IDA7XHJcblx0XHRjdXJzb3I6IHBvaW50ZXI7XHJcblx0XHRjb2xvcjogJHByaW1hcnk7XHJcblx0fVxyXG5cclxuXHR1bCB7XHJcblx0XHRkaXNwbGF5OiBibG9jaztcclxuXHRcdGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcclxuXHRcdHBhZGRpbmctbGVmdDogMDtcclxuXHRcdG1hcmdpbi1ib3R0b206IDA7XHJcblxyXG5cdH1cclxuXHJcblxyXG59XHJcblxyXG4iLCIuYy1kYXRhdGFibGVfaGVhZGVyIHtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICB6LWluZGV4OiAyO1xuICB3aWR0aDogMTAwJTtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5jLWRhdGF0YWJsZV9oZWFkZXIge1xuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAyNDBweCk7XG4gICAganVzdGlmeS1jb250ZW50OiBub3JtYWw7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gIH1cbn1cbi5jLWRhdGF0YWJsZV9sb2NhdGlvbiB7XG4gIG1pbi13aWR0aDogMTcwcHg7XG59XG4uYy1kYXRhdGFibGUgLmRhdGFUYWJsZXNfZmlsdGVyIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn1cbi5jLWRhdGF0YWJsZV92aWV3LWxpbmsge1xuICBsaW5lLWhlaWdodDogMjtcbiAgbWFyZ2luLWxlZnQ6IDFlbTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuYy1kYXRhdGFibGVfdmlldy1saW5rIHtcbiAgICBtYXJnaW4tbGVmdDogMmVtO1xuICB9XG59XG4uYy1kYXRhdGFibGVfdGFibGUge1xuICBiYWNrZ3JvdW5kOiAjZmVmZWZlO1xufVxuLmMtZGF0YXRhYmxlX2FkZHJlc3Mge1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG59XG4uYy1kYXRhdGFibGUgc21hbGwge1xuICBmb250LXNpemU6IDAuNzVyZW07XG59XG4uYy1kYXRhdGFibGUgLmluc3BlY3Rpb24tZHJvcGRvd24gYnV0dG9uIHtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG59XG4uYy1kYXRhdGFibGUgdGhlYWQge1xuICBiYWNrZ3JvdW5kOiAjNjE2MTYxO1xuICBjb2xvcjogI2ZlZmVmZTtcbn1cbi5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZywgLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nX2FzYywgLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nX2Rlc2Mge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uYy1kYXRhdGFibGUgdGhlYWQgLnNvcnRpbmc6OmFmdGVyLCAuYy1kYXRhdGFibGUgdGhlYWQgLnNvcnRpbmdfYXNjOjphZnRlciwgLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nX2Rlc2M6OmFmdGVyIHtcbiAgYm90dG9tOiBhdXRvO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtZmFtaWx5OiBcIkZvbnQgQXdlc29tZSA1IFByb1wiO1xuICBmb250LXdlaWdodDogOTAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiA0cHg7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG59XG4uYy1kYXRhdGFibGUgdGhlYWQgLnNvcnRpbmc6OmJlZm9yZSwgLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nX2FzYzo6YmVmb3JlLCAuYy1kYXRhdGFibGUgdGhlYWQgLnNvcnRpbmdfZGVzYzo6YmVmb3JlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZ19hc2M6OmFmdGVyLCAuYy1kYXRhdGFibGUgdGhlYWQgLnNvcnRpbmdfZGVzYzo6YWZ0ZXIge1xuICBjb2xvcjogI2ZlZmVmZTtcbiAgb3BhY2l0eTogMTtcbn1cbi5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZzo6YWZ0ZXIge1xuICBjb250ZW50OiBcIlxcZjBkY1wiO1xufVxuLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nX2FzYzo6YWZ0ZXIge1xuICBjb250ZW50OiBcIlxcZjBkZVwiO1xufVxuLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nX2Rlc2M6OmFmdGVyIHtcbiAgY29udGVudDogXCJcXGYwZGRcIjtcbn1cbi5jLWRhdGF0YWJsZSB0aCxcbi5jLWRhdGF0YWJsZSB0ZCB7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNFOEU4RTg7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG4uYy1kYXRhdGFibGUgdGg6bGFzdC1jaGlsZCxcbi5jLWRhdGF0YWJsZSB0ZDpsYXN0LWNoaWxkIHtcbiAgYm9yZGVyLXJpZ2h0OiBub25lO1xufVxuLmMtZGF0YXRhYmxlIHRoIHtcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5jLWRhdGF0YWJsZV9leHBvcnQtYnV0dG9uIHtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiAjMDA1OEE4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTQ1JSk7XG4gIHotaW5kZXg6IDE7XG59XG4uYy1kYXRhdGFibGVfbW9kYWwtYnV0dG9uIHtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiAjMDA1OEE4O1xufVxuLmMtZGF0YXRhYmxlIHVsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uYy1kYXRhdGFibGUucmVwYWlycy10YWJsZSBoZWFkZXIge1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB3aWR0aDogMTAwJTtcbiAgZmxleC13cmFwOiB3cmFwO1xuICByb3ctZ2FwOiAxMHB4O1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5jLWRhdGF0YWJsZS5yZXBhaXJzLXRhYmxlIGhlYWRlciB7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgd2lkdGg6IGZpdC1jb250ZW50O1xuICAgIGNvbHVtbi1nYXA6IDUwcHg7XG4gIH1cbn1cbi5jLWRhdGF0YWJsZS5yZXBhaXJzLXRhYmxlIGZvcm0ge1xuICB3aWR0aDogMTAwJTtcbn1cbi5jLWRhdGF0YWJsZS5yZXBhaXJzLXRhYmxlIGZvcm0gLmZvcm0tZ3JvdXAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBjb2x1bW4tZ2FwOiAxMHB4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW46IDA7XG59XG4uYy1kYXRhdGFibGUucmVwYWlycy10YWJsZSBmb3JtIC5mb3JtLWdyb3VwIGxhYmVsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICB3aWR0aDogMTE1cHg7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmMtZGF0YXRhYmxlLnJlcGFpcnMtdGFibGUgZm9ybSAuZm9ybS1ncm91cCBsYWJlbCB7XG4gICAgd2lkdGg6IG1heC1jb250ZW50O1xuICB9XG59XG4uYy1kYXRhdGFibGUucmVwYWlycy10YWJsZSAjc2VsZWN0U3RhdHVzRmlsdGVyIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmMtZGF0YXRhYmxlLnJlcGFpcnMtdGFibGUgI3NlbGVjdFN0YXR1c0ZpbHRlciB7XG4gICAgd2lkdGg6IDIwMHB4O1xuICB9XG59IiwiLy8gQnJlYWtwb2ludCB2aWV3cG9ydCBzaXplcyBhbmQgbWVkaWEgcXVlcmllcy5cbi8vXG4vLyBCcmVha3BvaW50cyBhcmUgZGVmaW5lZCBhcyBhIG1hcCBvZiAobmFtZTogbWluaW11bSB3aWR0aCksIG9yZGVyIGZyb20gc21hbGwgdG8gbGFyZ2U6XG4vL1xuLy8gICAgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KVxuLy9cbi8vIFRoZSBtYXAgZGVmaW5lZCBpbiB0aGUgYCRncmlkLWJyZWFrcG9pbnRzYCBnbG9iYWwgdmFyaWFibGUgaXMgdXNlZCBhcyB0aGUgYCRicmVha3BvaW50c2AgYXJndW1lbnQgYnkgZGVmYXVsdC5cblxuLy8gTmFtZSBvZiB0aGUgbmV4dCBicmVha3BvaW50LCBvciBudWxsIGZvciB0aGUgbGFzdCBicmVha3BvaW50LlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSlcbi8vICAgIG1kXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICBtZFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAkYnJlYWtwb2ludC1uYW1lczogKHhzIHNtIG1kIGxnIHhsKSlcbi8vICAgIG1kXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludC1uYW1lczogbWFwLWtleXMoJGJyZWFrcG9pbnRzKSkge1xuICAkbjogaW5kZXgoJGJyZWFrcG9pbnQtbmFtZXMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbiAhPSBudWxsIGFuZCAkbiA8IGxlbmd0aCgkYnJlYWtwb2ludC1uYW1lcyksIG50aCgkYnJlYWtwb2ludC1uYW1lcywgJG4gKyAxKSwgbnVsbCk7XG59XG5cbi8vIE1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTnVsbCBmb3IgdGhlIHNtYWxsZXN0IChmaXJzdCkgYnJlYWtwb2ludC5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW1pbihzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KSlcbi8vICAgIDU3NnB4XG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbWluICE9IDAsICRtaW4sIG51bGwpO1xufVxuXG4vLyBNYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguIE51bGwgZm9yIHRoZSBsYXJnZXN0IChsYXN0KSBicmVha3BvaW50LlxuLy8gVGhlIG1heGltdW0gdmFsdWUgaXMgY2FsY3VsYXRlZCBhcyB0aGUgbWluaW11bSBvZiB0aGUgbmV4dCBvbmUgbGVzcyAwLjAycHhcbi8vIHRvIHdvcmsgYXJvdW5kIHRoZSBsaW1pdGF0aW9ucyBvZiBgbWluLWAgYW5kIGBtYXgtYCBwcmVmaXhlcyBhbmQgdmlld3BvcnRzIHdpdGggZnJhY3Rpb25hbCB3aWR0aHMuXG4vLyBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL21lZGlhcXVlcmllcy00LyNtcS1taW4tbWF4XG4vLyBVc2VzIDAuMDJweCByYXRoZXIgdGhhbiAwLjAxcHggdG8gd29yayBhcm91bmQgYSBjdXJyZW50IHJvdW5kaW5nIGJ1ZyBpbiBTYWZhcmkuXG4vLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODI2MVxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbWF4KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgNzY3Ljk4cHhcbkBmdW5jdGlvbiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbmV4dDogYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAcmV0dXJuIGlmKCRuZXh0LCBicmVha3BvaW50LW1pbigkbmV4dCwgJGJyZWFrcG9pbnRzKSAtIC4wMiwgbnVsbCk7XG59XG5cbi8vIFJldHVybnMgYSBibGFuayBzdHJpbmcgaWYgc21hbGxlc3QgYnJlYWtwb2ludCwgb3RoZXJ3aXNlIHJldHVybnMgdGhlIG5hbWUgd2l0aCBhIGRhc2ggaW4gZnJvbnQuXG4vLyBVc2VmdWwgZm9yIG1ha2luZyByZXNwb25zaXZlIHV0aWxpdGllcy5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHhzLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgXCJcIiAgKFJldHVybnMgYSBibGFuayBzdHJpbmcpXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgXCItc21cIlxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaW5maXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgQHJldHVybiBpZihicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKSA9PSBudWxsLCBcIlwiLCBcIi0jeyRuYW1lfVwiKTtcbn1cblxuLy8gTWVkaWEgb2YgYXQgbGVhc3QgdGhlIG1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCB3aWRlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1pbiB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTWVkaWEgb2YgYXQgbW9zdCB0aGUgbWF4aW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIGxhcmdlc3QgYnJlYWtwb2ludC5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBhbmQgbmFycm93ZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1heCB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTWVkaWEgdGhhdCBzcGFucyBtdWx0aXBsZSBicmVha3BvaW50IHdpZHRocy5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBiZXR3ZWVuIHRoZSBtaW4gYW5kIG1heCBicmVha3BvaW50c1xuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtYmV0d2VlbigkbG93ZXIsICR1cHBlciwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbG93ZXIsICRicmVha3BvaW50cyk7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCR1cHBlciwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbG93ZXIsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtaW4gPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCR1cHBlciwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8gTWVkaWEgYmV0d2VlbiB0aGUgYnJlYWtwb2ludCdzIG1pbmltdW0gYW5kIG1heGltdW0gd2lkdGhzLlxuLy8gTm8gbWluaW11bSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQsIGFuZCBubyBtYXhpbXVtIGZvciB0aGUgbGFyZ2VzdCBvbmUuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgb25seSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCwgbm90IHZpZXdwb3J0cyBhbnkgd2lkZXIgb3IgbmFycm93ZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1vbmx5KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBDdXN0b20gQ29sb3JzXHJcblxyXG4kZGFyay1ncmF5OiAjMjQyNDI0O1xyXG4kbWVkaXVtLWRhcmstZ3JheTogIzYxNjE2MTtcclxuJG1lZGl1bS1ncmF5OiAjNTI1MjUyO1xyXG4kbWVkaXVtLWxpZ2h0LWdyYXk6ICNCQ0M2Q0U7XHJcbiRsaWdodC1ncmF5OiAjRThFOEU4O1xyXG4kd2hpdGU6ICNmZWZlZmU7XHJcbiRibHVlOiAjMDA1M0FDO1xyXG4kZGFyay1ibHVlOiAjNTE3MDhEO1xyXG5cclxuJHByaW1hcnk6ICMwMDU4QTg7XHJcbiRzZWNvbmRhcnk6ICMwMDU4QTg7XHJcbiR5ZWxsb3c6ICNGRkMyMzY7XHJcbiRvcmFuZ2U6ICNGRjk1MkI7XHJcbiRpbmZvOiAjZTJlM2U1O1xyXG5cclxuLy8gQXBwIFZhcmlhYmxlc1xyXG4kY29udGFpbmVyLW1heC13aWR0aDogMTIwMHB4O1xyXG4kc2lkZWJhci1iZzogJGRhcmstZ3JheTtcclxuJHNpZGViYXItd2lkdGg6IDI1MHB4O1xyXG5cclxuLy8gQm9vdHN0cmFwIFZhcmlhYmxlc1xyXG5cclxuLy8gTGF5b3V0XHJcblxyXG4kZ3JpZC1icmVha3BvaW50czogKFxyXG4gIHhzOiAwLFxyXG4gIHNtOiA0ODBweCxcclxuICBtZDogNzY4cHgsXHJcbiAgbGc6IDk5MnB4LFxyXG4gIHhsOiAxMjAwcHhcclxuKTtcclxuXHJcbiRib2R5LWJnOiAkbGlnaHQtZ3JheTtcclxuXHJcbi8vIFR5cG9ncmFwaHlcclxuJGZvbnQtc2l6ZS1iYXNlOiAxcmVtO1xyXG5cclxuJGZvbnQtZmFtaWx5LXNhbnMtc2VyaWY6ICdSb2JvdG8nLCAnc2Fucy1zZXJpZic7XHJcblxyXG4kaDEtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UgKiAxLjYyNTsgLy8gMjZcclxuJGgyLWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS4zNzU7IC8vIDIzXHJcbiRoMy1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuMjU7IC8vIDIwXHJcbiRoNC1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuMTI1OyAgLy8gMThcclxuJGg1LWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS4wNjI1OyAvLyAxN1xyXG4kaDYtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7XHJcblxyXG5cclxuLy8gR2xvYmFsIFN0eWxlc1xyXG5cclxuJGJvcmRlci1yYWRpdXM6IDBweDtcclxuJGJvcmRlci1yYWRpdXMtbGc6ICRib3JkZXItcmFkaXVzO1xyXG4kYm9yZGVyLXJhZGl1cy1zbTogJGJvcmRlci1yYWRpdXM7XHJcblxyXG4vLyBGb3Jtc1xyXG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWJnOiAkd2hpdGU7XHJcblxyXG4vLyBCYWRnZXNcclxuJGJhZGdlLXBhZGRpbmcteTogLjVlbTtcclxuJGJhZGdlLXBhZGRpbmcteDogLjhlbTtcclxuJGJhZGdlLXBpbGwtcGFkZGluZy14OiAxLjJlbTtcclxuIiwiQGltcG9ydCAnLi4vZGF0YXRhYmxlLmNvbXBvbmVudC5zY3NzJztcclxuXHJcbi5jLWRhdGF0YWJsZS5yZXBhaXJzLXRhYmxlIHtcclxuXHRoZWFkZXIge1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0ZmxleC13cmFwOiB3cmFwO1xyXG5cdFx0cm93LWdhcDogMTBweDtcclxuXHJcblx0XHRAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKG1kKXtcclxuXHRcdFx0ZmxleC13cmFwOiBub3dyYXA7XHJcblx0XHRcdHdpZHRoOiBmaXQtY29udGVudDtcclxuXHRcdFx0Y29sdW1uLWdhcDogNTBweDtcclxuXHRcdFx0Ly8gbWFyZ2luLWxlZnQ6IDIwMHB4O1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Zm9ybSB7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHJcblx0XHQuZm9ybS1ncm91cCB7XHJcblx0XHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRcdGNvbHVtbi1nYXA6IDEwcHg7XHJcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRcdG1hcmdpbjogMDtcclxuXHJcblx0XHRcdGxhYmVsIHtcclxuXHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogMDtcclxuXHRcdFx0XHR3aWR0aDogMTE1cHg7XHJcblxyXG5cdFx0XHRcdEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobWQpe1xyXG5cdFx0XHRcdFx0d2lkdGg6IG1heC1jb250ZW50O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0I3NlbGVjdFN0YXR1c0ZpbHRlciB7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHJcblx0XHRAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKG1kKXtcclxuXHRcdFx0d2lkdGg6IDIwMHB4O1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iXX0= */\"","import { Component, OnInit, OnDestroy, Input, ViewChild } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { JobsService } from '@/services/jobs/jobs.service';\r\nimport { BuildersService } from '@/services/builders/builders.service';\r\nimport { CommunitiesService } from '@/services/communities/communities.service';\r\nimport { ContactsService } from '@/services/contacts/contacts.service';\r\nimport { DataTableDirective } from 'angular-datatables';\r\nimport { NgbPopoverConfig } from '@ng-bootstrap/ng-bootstrap';\r\nimport { Select2OptionData } from 'ng-select2';\r\n\r\n@Component({\r\n selector: 'datatable-repair-jobs',\r\n templateUrl: './repair-jobs-datatable.component.html',\r\n styleUrls: ['./repair-jobs-datatable.component.scss']\r\n})\r\nexport class RepairJobsDatatableComponent implements OnInit, OnDestroy {\r\n\r\n\t@ViewChild(DataTableDirective)\r\n \tdatatableElement: DataTableDirective;\r\n\r\n\t@Input() title : string = '';\r\n\t@Input() showFooter : boolean = true;\r\n\t@Input() rowsPerPage : number = 10;\r\n\t@Input() viewRoute : string = '';\r\n\t@Input() viewText : string = 'View';\r\n\t@Input() status : string = 'all';\r\n\t@Input() showStatus : boolean = true;\r\n\t@Input() showFilters : boolean = true;\r\n\r\n\twindowLoc = '';\r\n\trows = [];\r\n\tdtOptions : DataTables.Settings = {};\r\n\tshowTitle : Boolean = false\r\n\tactiveStatusFilter: string = ''\r\n\r\n\tjobStatuses: string[] = [\r\n\t\t'Active',\r\n\t\t'Closed',\r\n\t\t'Estimated',\r\n\t\t'Removed'\r\n\t];\r\n\r\n\tselect2Options = {\r\n\t\ttheme: \"bootstrap4\",\r\n\t\tdropdownAutoWidth: true,\r\n\t\twidth: \"100%\"\r\n\t}\r\n\t\r\n\tselectStatusFilter: Array = [\r\n\t\t{\r\n\t\t\tid: '',\r\n\t\t\ttext: ''\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: 'active',\r\n\t\t\ttext: 'Active'\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: 'closed',\r\n\t\t\ttext: 'Closed'\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: 'estimated',\r\n\t\t\ttext: 'Estimated'\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: 'removed',\r\n\t\t\ttext: 'Removed'\r\n\t\t}\r\n\t]\r\n\r\n \tconstructor(\r\n\t \tprivate jobsService: JobsService,\r\n\t\tprivate config: NgbPopoverConfig\r\n \t) { \r\n\t\tconfig.placement = 'left';\r\n }\r\n\r\n \tdataTablesInit(searchStr? : any) {\r\n\t let lastPage = 0;\r\n\t\tlet lastSearchText = \"\";\r\n\t\tlet searchOptions : (DataTables.SearchSettings) = {search: searchStr};\r\n\t\tthis.dtOptions = {\r\n\t\t\tpagingType: 'full_numbers',\r\n\t\t\tpageLength: this.rowsPerPage,\r\n\t\t\tlengthChange: false,\r\n\t\t\tdisplayStart: lastPage, // Last Selected Page\r\n\t\t\tinfo: this.showFooter,\r\n\t\t\tpaging: this.showFooter,\r\n\t\t\tscrollX: true,\r\n\t\t\tsearch: searchOptions,\r\n\t\t\tcolumns: [\r\n\t\t\t\t{ \"data\": \"CreatedDate\" },\r\n\t\t\t\t{ \"data\": \"ScheduledDate\" },\r\n\t\t\t\t{ \"data\": \"Name\" },\r\n\t\t\t\t{ \"data\": \"Phone\" },\r\n\t\t\t\t{ \"data\": \"Email\" },\r\n\t\t\t\t{ \"data\": \"Location\" },\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"Status\",\r\n\t\t\t\t\t\"visible\": this.showStatus,\r\n\t\t\t\t\t\"orderable\": false\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"Inspections\",\r\n\t\t\t\t\trender: function (data, type, row) {\r\n\t\t\t\t\t\treturn '';\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"Detail\",\r\n\t\t\t\t\trender: function (data, type, row) {\r\n\t\t\t\t\t\treturn '';\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tcolumnDefs: [\r\n\t\t\t\t{\r\n\t\t\t\t\ttargets: this.showStatus ? [7, 8] : [6, 7],\r\n\t\t\t\t\torderable: false,\r\n\t\t\t\t\tsearchable: false\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tserverSide: true,\r\n\t\t\tprocessing: true,\r\n\t\t\tajax: (data: object, callback, dataTablesParameters: any) => {\r\n\t\t\t\tlastPage = dataTablesParameters.start; // Note : dataTablesParameters.start = page count * table length\r\n\t\t\t\tlastSearchText = 'search' in dataTablesParameters && dataTablesParameters.search != 'undefined' ? dataTablesParameters.search.value : '';\r\n\r\n\t\t\t\tif ( this.activeStatusFilter !== '' ){\r\n\t\t\t\t\tdata['columns'][6]['search'].value = this.activeStatusFilter.toLowerCase()\r\n\t\t\t\t}\r\n\r\n\t \t\t\t// Get the table data\r\n\t\t\t\tthis.jobsService.getRepairJobsDatatable(data).subscribe((result: any) => {\r\n\r\n\t\t\t\t\tresult.data.forEach((row) => {\r\n\t\t\t\t\t\tlet status = row.Status;\r\n\r\n\t\t\t\t\t\t// Set Default status color\r\n\t\t\t\t\t\trow.StatusColor = 'dark';\r\n\r\n\t\t\t\t\t\tswitch(status) {\r\n\t\t\t\t\t\t\tcase 'Active':\r\n\t\t\t\t\t\t\t\trow.StatusColor = 'success';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\tcase 'Closed':\r\n\t\t\t\t\t\t\t\trow.StatusColor = 'danger';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 'Estimated':\r\n\t\t\t\t\t\t\t\trow.StatusColor = 'primary';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 'Inactive':\r\n\t\t\t\t\t\t\t\trow.StatusColor = 'warning';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\trow['SafetyChecklistAddLink'] = `/repair-jobs/${row.ID}/safety-inspection-add`\r\n\r\n\t\t\t\t\t\tif (row.Inspections.length) {\r\n\t\t\t\t\t\t\trow.Inspections.sort(function (a, b) {\r\n\t\t\t\t\t\t\t\tconst c: any = new Date(a.CreatedDate)\r\n\t\t\t\t\t\t\t\tconst d: any = new Date(b.CreatedDate)\r\n\t\t\t\t\t\t\t\treturn c - d\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.rows = result.data;\r\n\t\t\t\t\tcallback({\r\n\t\t\t\t\t\trecordsTotal: result.recordsTotal,\r\n\t\t\t\t\t\trecordsFiltered: result.recordsFiltered,\r\n\t\t\t\t\t\tdata: [] // this gets set to empty because this.rows above is rendered by angular with the relevant formatting\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$($.fn.dataTable.tables(true)).DataTable().columns.adjust();\r\n\t\t\t\t\t\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t$($.fn.dataTable.tables(true)).DataTable().columns.adjust();\r\n\t\t\t\t\t}, 2500);\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\torder: [[0, \"desc\"]],\r\n\t\t\tinitComplete: () => {\r\n\t\t\t\tlet searchLabels = document.querySelectorAll('.dataTables_filter > label');\r\n\r\n\t\t\t\tsearchLabels.forEach((label) => {\r\n\t\t\t\t\tlabel.setAttribute('aria-label', 'Search/Filter Table');\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.showTitle = true\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// console.log('dtOptions', this.dtOptions);\r\n\t\tsetTimeout(() => {\r\n\t\t\t$($.fn.dataTable.tables(true)).DataTable().columns.adjust();\r\n\t\t}, 2000);\r\n \t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.windowLoc = window.location.pathname;\r\n\t\tlet trySearch: any = window.sessionStorage.getItem(this.windowLoc + \"repairSearch\");\r\n\t\twindow.sessionStorage.clear();\r\n\r\n\t\tif (trySearch != null && trySearch != ''){\r\n\t\t\tthis.dataTablesInit(trySearch);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.dataTablesInit();\r\n\t\t}\t\t\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tlet dtinst: DataTables.Api;\r\n\t\tlet search : any = \"\";\r\n\r\n\t\tthis.datatableElement.dtInstance.then(x => {\r\n\t\t\tdtinst = x;\r\n\t\t\tsearch = dtinst.search();\r\n\t\t\tif (search != null || search != ''){\r\n\t\t\t\twindow.sessionStorage.setItem(this.windowLoc + \"repairSearch\", search);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tupdateStatusFilter( event: { value: string, data } ){\r\n\t\tconst { value } = event\r\n\r\n\t\tthis.activeStatusFilter = value\r\n\r\n\t\tthis.datatableElement.dtInstance.then(( dtInstance: DataTables.Api ) => {\r\n\t\t\tdtInstance.search('');\r\n\t\t\tdtInstance.columns().search('');\r\n\t\t\tdtInstance.draw();\r\n\t\t});\r\n\t}\r\n}\r\n","module.exports = \"
\\r\\n\\t
\\r\\n\\t\\t

\\r\\n\\t\\t\\t{{ title }}\\r\\n\\t\\t

\\r\\n\\t\\t\\r\\n\\t\\t\\t{{ viewText }}\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tCreated On\\r\\n\\t\\t\\t\\tScheduled Date\\r\\n\\t\\t\\t\\tSize\\r\\n\\t\\t\\t\\tName\\r\\n\\t\\t\\t\\tPhone\\r\\n\\t\\t\\t\\tEmail\\r\\n\\t\\t\\t\\tLocation\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\tStatus\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\tChecklist\\r\\n\\t\\t\\t\\tDetail\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{ row.CreatedDate | date }}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{ row.ScheduledDate | date }}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{ row.HomeSize }}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{ row.FirstName }} {{ row.LastName }}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{ row.Phone | mask: '000-000-0000' }}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{ row.Email }}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t{{ row.Address }}
\\r\\n\\t\\t\\t\\t\\t\\t
{{ row.Address2 }}
\\r\\n\\t\\t\\t\\t\\t\\t{{ row.City }}, {{ row.State }} {{ row.ZipCode }}\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t{{ row.Status }}\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tNew Safety...\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t\\r\\n
\\r\\n\"","module.exports = \".c-datatable_header {\\n align-items: flex-start;\\n display: flex;\\n margin-bottom: 10px;\\n position: relative;\\n transform: translateY(0);\\n z-index: 2;\\n width: 100%;\\n justify-content: space-between;\\n}\\n@media (min-width: 768px) {\\n .c-datatable_header {\\n width: calc(100% - 240px);\\n justify-content: normal;\\n margin-bottom: 0;\\n transform: translateY(100%);\\n }\\n}\\n.c-datatable_location {\\n min-width: 170px;\\n}\\n.c-datatable .dataTables_filter {\\n text-align: left;\\n}\\n.c-datatable_view-link {\\n line-height: 2;\\n margin-left: 1em;\\n}\\n@media (min-width: 768px) {\\n .c-datatable_view-link {\\n margin-left: 2em;\\n }\\n}\\n.c-datatable_table {\\n background: #fefefe;\\n}\\n.c-datatable_address {\\n margin-bottom: 0.5rem;\\n}\\n.c-datatable small {\\n font-size: 0.75rem;\\n}\\n.c-datatable .inspection-dropdown button {\\n font-size: 0.875rem;\\n text-transform: capitalize;\\n}\\n.c-datatable thead {\\n background: #616161;\\n color: #fefefe;\\n}\\n.c-datatable thead .sorting, .c-datatable thead .sorting_asc, .c-datatable thead .sorting_desc {\\n background-image: none;\\n position: relative;\\n}\\n.c-datatable thead .sorting::after, .c-datatable thead .sorting_asc::after, .c-datatable thead .sorting_desc::after {\\n bottom: auto;\\n display: inline-block;\\n font-family: \\\"Font Awesome 5 Pro\\\";\\n font-weight: 900;\\n position: absolute;\\n right: 4px;\\n top: 50%;\\n transform: translateY(-50%);\\n}\\n.c-datatable thead .sorting::before, .c-datatable thead .sorting_asc::before, .c-datatable thead .sorting_desc::before {\\n display: none;\\n}\\n.c-datatable thead .sorting_asc::after, .c-datatable thead .sorting_desc::after {\\n color: #fefefe;\\n opacity: 1;\\n}\\n.c-datatable thead .sorting::after {\\n content: \\\"\\\\f0dc\\\";\\n}\\n.c-datatable thead .sorting_asc::after {\\n content: \\\"\\\\f0de\\\";\\n}\\n.c-datatable thead .sorting_desc::after {\\n content: \\\"\\\\f0dd\\\";\\n}\\n.c-datatable th,\\n.c-datatable td {\\n border-right: 1px solid #E8E8E8;\\n font-size: 0.875rem;\\n}\\n.c-datatable th:last-child,\\n.c-datatable td:last-child {\\n border-right: none;\\n}\\n.c-datatable th {\\n border-bottom: none;\\n font-weight: normal;\\n white-space: nowrap;\\n}\\n.c-datatable_export-button {\\n background: none;\\n border: 0;\\n cursor: pointer;\\n color: #0058A8;\\n position: absolute;\\n transform: translateY(-145%);\\n z-index: 1;\\n}\\n.c-datatable_modal-button {\\n background: none;\\n border: 0;\\n cursor: pointer;\\n color: #0058A8;\\n}\\n.c-datatable ul {\\n display: block;\\n list-style-type: none;\\n padding-left: 0;\\n margin-bottom: 0;\\n}\\n.c-datatable.reroofs-table header {\\n align-items: center;\\n width: 100%;\\n flex-wrap: wrap;\\n row-gap: 10px;\\n}\\n@media (min-width: 768px) {\\n .c-datatable.reroofs-table header {\\n flex-wrap: nowrap;\\n width: -moz-fit-content;\\n width: fit-content;\\n -moz-column-gap: 50px;\\n column-gap: 50px;\\n }\\n}\\n.c-datatable.reroofs-table form {\\n width: 100%;\\n}\\n.c-datatable.reroofs-table form .form-group {\\n display: flex;\\n -moz-column-gap: 10px;\\n column-gap: 10px;\\n align-items: center;\\n margin: 0;\\n}\\n.c-datatable.reroofs-table form .form-group label {\\n display: inline-block;\\n margin-bottom: 0;\\n width: 115px;\\n}\\n@media (min-width: 768px) {\\n .c-datatable.reroofs-table form .form-group label {\\n width: -moz-max-content;\\n width: max-content;\\n }\\n}\\n.c-datatable.reroofs-table #selectTypeFilters,\\n.c-datatable.reroofs-table #selectFilters {\\n width: 100%;\\n}\\n@media (min-width: 768px) {\\n .c-datatable.reroofs-table #selectTypeFilters,\\n.c-datatable.reroofs-table #selectFilters {\\n width: 200px;\\n }\\n}\\n.c-datatable.reroofs-table .dataTables_wrapper {\\n background-color: pink;\\n text-align: left;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9kYXRhdGFibGUvcmVyb29mLWpvYnMtZGF0YXRhYmxlL0M6XFxVc2Vyc1xcRGFuaWVsXFxEZXNrdG9wXFxQcm9qZWN0c1xcU3RlcmxpbmdSb29maW5nL3NyY1xcYXBwXFxjb21wb25lbnRzXFxkYXRhdGFibGVcXHJlcm9vZi1qb2JzLWRhdGF0YWJsZVxccmVyb29mLWpvYnMtZGF0YXRhYmxlLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2RhdGF0YWJsZS9yZXJvb2Ytam9icy1kYXRhdGFibGUvcmVyb29mLWpvYnMtZGF0YXRhYmxlLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2RhdGF0YWJsZS9yZXJvb2Ytam9icy1kYXRhdGFibGUvQzpcXFVzZXJzXFxEYW5pZWxcXERlc2t0b3BcXFByb2plY3RzXFxTdGVybGluZ1Jvb2Zpbmcvbm9kZV9tb2R1bGVzXFxib290c3RyYXBcXHNjc3NcXG1peGluc1xcX2JyZWFrcG9pbnRzLnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvZGF0YXRhYmxlL3Jlcm9vZi1qb2JzLWRhdGF0YWJsZS9DOlxcVXNlcnNcXERhbmllbFxcRGVza3RvcFxcUHJvamVjdHNcXFN0ZXJsaW5nUm9vZmluZy9zcmNcXHN0eWxlc1xcX3ZhcmlhYmxlcy5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2RhdGF0YWJsZS9yZXJvb2Ytam9icy1kYXRhdGFibGUvQzpcXFVzZXJzXFxEYW5pZWxcXERlc2t0b3BcXFByb2plY3RzXFxTdGVybGluZ1Jvb2Zpbmcvc3RkaW4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0M7RUFDQyx1QkFBQTtFQUNBLGFBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0Esd0JBQUE7RUFDQSxVQUFBO0VBQ0EsV0FBQTtFQUNBLDhCQUFBO0FDRkY7QUNtREk7RUZ6REg7SUFXRSx5QkFBQTtJQUNBLHVCQUFBO0lBQ0EsZ0JBQUE7SUFDQSwyQkFBQTtFQ0REO0FBQ0Y7QURJQztFQUNDLGdCQUFBO0FDRkY7QURLQztFQUNDLGdCQUFBO0FDSEY7QURNQztFQUNDLGNBQUE7RUFDQSxnQkFBQTtBQ0pGO0FDaUNJO0VGL0JIO0lBS0UsZ0JBQUE7RUNIRDtBQUNGO0FETUM7RUFDQyxtQkdoQ007QUY0QlI7QURPQztFQUNDLHFCQUFBO0FDTEY7QURRQztFQUNDLGtCQUFBO0FDTkY7QURXRTtFQUNDLG1CQUFBO0VBQ0EsMEJBQUE7QUNUSDtBRGFDO0VBQ0MsbUJHeERpQjtFSHlEakIsY0dyRE07QUYwQ1I7QURlRztFQUdDLHNCQUFBO0VBQ0Esa0JBQUE7QUNmSjtBRGlCSTtFQUNDLFlBQUE7RUFDQSxxQkFBQTtFQUNBLGlDQUFBO0VBQ0EsZ0JBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7RUFDQSxRQUFBO0VBQ0EsMkJBQUE7QUNmTDtBRGtCSTtFQUNDLGFBQUE7QUNoQkw7QUR3Qkk7RUFDQyxjR3BGRztFSHFGSCxVQUFBO0FDdEJMO0FEMEJHO0VBQ0MsZ0JBQUE7QUN4Qko7QUQyQkc7RUFDQyxnQkFBQTtBQ3pCSjtBRDRCRztFQUNDLGdCQUFBO0FDMUJKO0FEK0JDOztFQUVDLCtCQUFBO0VBQ0EsbUJBQUE7QUM3QkY7QUQ4QkU7O0VBQ0Msa0JBQUE7QUMzQkg7QUQrQkM7RUFDQyxtQkFBQTtFQUNBLG1CQUFBO0VBQ0EsbUJBQUE7QUM3QkY7QURnQ0M7RUFDQyxnQkFBQTtFQUNBLFNBQUE7RUFDQSxlQUFBO0VBQ0EsY0d0SFE7RUh1SFIsa0JBQUE7RUFDQSw0QkFBQTtFQUNBLFVBQUE7QUM5QkY7QURpQ0M7RUFDQyxnQkFBQTtFQUNBLFNBQUE7RUFDQSxlQUFBO0VBQ0EsY0doSVE7QUZpR1Y7QURrQ0M7RUFDQyxjQUFBO0VBQ0EscUJBQUE7RUFDQSxlQUFBO0VBQ0EsZ0JBQUE7QUNoQ0Y7QUcvR0M7RUFDQyxtQkFBQTtFQUNBLFdBQUE7RUFDQSxlQUFBO0VBQ0EsYUFBQTtBSGtIRjtBQzdESTtFRXpESDtJQU9FLGlCQUFBO0lBQ0EsdUJBQUE7SUFBQSxrQkFBQTtJQUNBLHFCQUFBO1NBQUEsZ0JBQUE7RUhtSEQ7QUFDRjtBRy9HQztFQUNDLFdBQUE7QUhpSEY7QUcvR0U7RUFDQyxhQUFBO0VBQ0EscUJBQUE7T0FBQSxnQkFBQTtFQUNBLG1CQUFBO0VBQ0EsU0FBQTtBSGlISDtBRy9HRztFQUNDLHFCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxZQUFBO0FIaUhKO0FDbEZJO0VFbENEO0lBTUUsdUJBQUE7SUFBQSxrQkFBQTtFSGtISDtBQUNGO0FHN0dDOztFQUVDLFdBQUE7QUgrR0Y7QUMzRkk7RUV0Qkg7O0lBS0UsWUFBQTtFSGlIRDtBQUNGO0FHN0dDO0VBQ0Msc0JBQUE7RUFDQSxnQkFBQTtBSCtHRiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvZGF0YXRhYmxlL3Jlcm9vZi1qb2JzLWRhdGF0YWJsZS9yZXJvb2Ytam9icy1kYXRhdGFibGUuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICdjb21wb25lbnQtaGVhZGVyJztcclxuXHJcbi5jLWRhdGF0YWJsZSB7XHJcblx0Jl9oZWFkZXIge1xyXG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcclxuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcclxuXHRcdHotaW5kZXg6IDI7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuXHJcblx0XHRAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKG1kKSB7XHJcblx0XHRcdHdpZHRoOiBjYWxjKDEwMCUgLSAyNDBweCk7XHJcblx0XHRcdGp1c3RpZnktY29udGVudDogbm9ybWFsO1xyXG5cdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xyXG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQmX2xvY2F0aW9uIHtcclxuXHRcdG1pbi13aWR0aDogMTcwcHg7XHJcblx0fVxyXG5cclxuXHQuZGF0YVRhYmxlc19maWx0ZXJ7XHJcblx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xyXG5cdH1cclxuXHJcblx0Jl92aWV3LWxpbmsge1xyXG5cdFx0bGluZS1oZWlnaHQ6IDI7XHJcblx0XHRtYXJnaW4tbGVmdDogMWVtO1xyXG5cclxuXHRcdEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobWQpIHtcclxuXHRcdFx0bWFyZ2luLWxlZnQ6IDJlbTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdCZfdGFibGUge1xyXG5cdFx0YmFja2dyb3VuZDogJHdoaXRlO1xyXG5cdH1cclxuXHJcblx0Jl9hZGRyZXNzIHtcclxuXHRcdG1hcmdpbi1ib3R0b206IDAuNXJlbTtcclxuXHR9XHJcblxyXG5cdHNtYWxsIHtcclxuXHRcdGZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpO1xyXG5cdH1cclxuXHJcblx0Lmluc3BlY3Rpb24tZHJvcGRvd24ge1xyXG5cclxuXHRcdGJ1dHRvbntcclxuXHRcdFx0Zm9udC1zaXplOiAwLjg3NXJlbTtcclxuXHRcdFx0dGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR0aGVhZCB7XHJcblx0XHRiYWNrZ3JvdW5kOiAkbWVkaXVtLWRhcmstZ3JheTtcclxuXHRcdGNvbG9yOiAkd2hpdGU7XHJcblxyXG5cdFx0LnNvcnRpbmcge1xyXG5cclxuXHRcdFx0JixcclxuXHRcdFx0Jl9hc2MsXHJcblx0XHRcdCZfZGVzYyB7XHJcblx0XHRcdFx0YmFja2dyb3VuZC1pbWFnZTogbm9uZTtcclxuXHRcdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblxyXG5cdFx0XHRcdCY6OmFmdGVyIHtcclxuXHRcdFx0XHRcdGJvdHRvbTogYXV0bztcclxuXHRcdFx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdFx0XHRcdGZvbnQtZmFtaWx5OiAnRm9udCBBd2Vzb21lIDUgUHJvJztcclxuXHRcdFx0XHRcdGZvbnQtd2VpZ2h0OiA5MDA7XHJcblx0XHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHRcdFx0XHRyaWdodDogNHB4O1xyXG5cdFx0XHRcdFx0dG9wOiA1MCU7XHJcblx0XHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQmOjpiZWZvcmUge1xyXG5cdFx0XHRcdFx0ZGlzcGxheTogbm9uZTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQmX2FzYyxcclxuXHRcdFx0Jl9kZXNjIHtcclxuXHJcblx0XHRcdFx0Jjo6YWZ0ZXIge1xyXG5cdFx0XHRcdFx0Y29sb3I6ICR3aGl0ZTtcclxuXHRcdFx0XHRcdG9wYWNpdHk6IDE7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQmOjphZnRlciB7XHJcblx0XHRcdFx0Y29udGVudDogXCJcXGYwZGNcIjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Jl9hc2M6OmFmdGVyIHtcclxuXHRcdFx0XHRjb250ZW50OiBcIlxcZjBkZVwiO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQmX2Rlc2M6OmFmdGVyIHtcclxuXHRcdFx0XHRjb250ZW50OiBcIlxcZjBkZFwiO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR0aCxcclxuXHR0ZCB7XHJcblx0XHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkbGlnaHQtZ3JheTtcclxuXHRcdGZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpO1xyXG5cdFx0JjpsYXN0LWNoaWxkIHtcclxuXHRcdFx0Ym9yZGVyLXJpZ2h0OiBub25lO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dGgge1xyXG5cdFx0Ym9yZGVyLWJvdHRvbTogbm9uZTtcclxuXHRcdGZvbnQtd2VpZ2h0OiBub3JtYWw7XHJcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG5cdH1cclxuXHJcblx0Jl9leHBvcnQtYnV0dG9uIHtcclxuXHRcdGJhY2tncm91bmQ6IG5vbmU7XHJcblx0XHRib3JkZXI6IDA7XHJcblx0XHRjdXJzb3I6IHBvaW50ZXI7XHJcblx0XHRjb2xvcjogJHByaW1hcnk7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE0NSUpO1xyXG5cdFx0ei1pbmRleDogMTtcclxuXHR9XHJcblxyXG5cdCZfbW9kYWwtYnV0dG9uIHtcclxuXHRcdGJhY2tncm91bmQ6IG5vbmU7XHJcblx0XHRib3JkZXI6IDA7XHJcblx0XHRjdXJzb3I6IHBvaW50ZXI7XHJcblx0XHRjb2xvcjogJHByaW1hcnk7XHJcblx0fVxyXG5cclxuXHR1bCB7XHJcblx0XHRkaXNwbGF5OiBibG9jaztcclxuXHRcdGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcclxuXHRcdHBhZGRpbmctbGVmdDogMDtcclxuXHRcdG1hcmdpbi1ib3R0b206IDA7XHJcblxyXG5cdH1cclxuXHJcblxyXG59XHJcblxyXG4iLCIuYy1kYXRhdGFibGVfaGVhZGVyIHtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICB6LWluZGV4OiAyO1xuICB3aWR0aDogMTAwJTtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5jLWRhdGF0YWJsZV9oZWFkZXIge1xuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAyNDBweCk7XG4gICAganVzdGlmeS1jb250ZW50OiBub3JtYWw7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gIH1cbn1cbi5jLWRhdGF0YWJsZV9sb2NhdGlvbiB7XG4gIG1pbi13aWR0aDogMTcwcHg7XG59XG4uYy1kYXRhdGFibGUgLmRhdGFUYWJsZXNfZmlsdGVyIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn1cbi5jLWRhdGF0YWJsZV92aWV3LWxpbmsge1xuICBsaW5lLWhlaWdodDogMjtcbiAgbWFyZ2luLWxlZnQ6IDFlbTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuYy1kYXRhdGFibGVfdmlldy1saW5rIHtcbiAgICBtYXJnaW4tbGVmdDogMmVtO1xuICB9XG59XG4uYy1kYXRhdGFibGVfdGFibGUge1xuICBiYWNrZ3JvdW5kOiAjZmVmZWZlO1xufVxuLmMtZGF0YXRhYmxlX2FkZHJlc3Mge1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG59XG4uYy1kYXRhdGFibGUgc21hbGwge1xuICBmb250LXNpemU6IDAuNzVyZW07XG59XG4uYy1kYXRhdGFibGUgLmluc3BlY3Rpb24tZHJvcGRvd24gYnV0dG9uIHtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG59XG4uYy1kYXRhdGFibGUgdGhlYWQge1xuICBiYWNrZ3JvdW5kOiAjNjE2MTYxO1xuICBjb2xvcjogI2ZlZmVmZTtcbn1cbi5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZywgLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nX2FzYywgLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nX2Rlc2Mge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uYy1kYXRhdGFibGUgdGhlYWQgLnNvcnRpbmc6OmFmdGVyLCAuYy1kYXRhdGFibGUgdGhlYWQgLnNvcnRpbmdfYXNjOjphZnRlciwgLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nX2Rlc2M6OmFmdGVyIHtcbiAgYm90dG9tOiBhdXRvO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtZmFtaWx5OiBcIkZvbnQgQXdlc29tZSA1IFByb1wiO1xuICBmb250LXdlaWdodDogOTAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiA0cHg7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG59XG4uYy1kYXRhdGFibGUgdGhlYWQgLnNvcnRpbmc6OmJlZm9yZSwgLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nX2FzYzo6YmVmb3JlLCAuYy1kYXRhdGFibGUgdGhlYWQgLnNvcnRpbmdfZGVzYzo6YmVmb3JlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZ19hc2M6OmFmdGVyLCAuYy1kYXRhdGFibGUgdGhlYWQgLnNvcnRpbmdfZGVzYzo6YWZ0ZXIge1xuICBjb2xvcjogI2ZlZmVmZTtcbiAgb3BhY2l0eTogMTtcbn1cbi5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZzo6YWZ0ZXIge1xuICBjb250ZW50OiBcIlxcZjBkY1wiO1xufVxuLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nX2FzYzo6YWZ0ZXIge1xuICBjb250ZW50OiBcIlxcZjBkZVwiO1xufVxuLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nX2Rlc2M6OmFmdGVyIHtcbiAgY29udGVudDogXCJcXGYwZGRcIjtcbn1cbi5jLWRhdGF0YWJsZSB0aCxcbi5jLWRhdGF0YWJsZSB0ZCB7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNFOEU4RTg7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG4uYy1kYXRhdGFibGUgdGg6bGFzdC1jaGlsZCxcbi5jLWRhdGF0YWJsZSB0ZDpsYXN0LWNoaWxkIHtcbiAgYm9yZGVyLXJpZ2h0OiBub25lO1xufVxuLmMtZGF0YXRhYmxlIHRoIHtcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5jLWRhdGF0YWJsZV9leHBvcnQtYnV0dG9uIHtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiAjMDA1OEE4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTQ1JSk7XG4gIHotaW5kZXg6IDE7XG59XG4uYy1kYXRhdGFibGVfbW9kYWwtYnV0dG9uIHtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiAjMDA1OEE4O1xufVxuLmMtZGF0YXRhYmxlIHVsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uYy1kYXRhdGFibGUucmVyb29mcy10YWJsZSBoZWFkZXIge1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB3aWR0aDogMTAwJTtcbiAgZmxleC13cmFwOiB3cmFwO1xuICByb3ctZ2FwOiAxMHB4O1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5jLWRhdGF0YWJsZS5yZXJvb2ZzLXRhYmxlIGhlYWRlciB7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgd2lkdGg6IGZpdC1jb250ZW50O1xuICAgIGNvbHVtbi1nYXA6IDUwcHg7XG4gIH1cbn1cbi5jLWRhdGF0YWJsZS5yZXJvb2ZzLXRhYmxlIGZvcm0ge1xuICB3aWR0aDogMTAwJTtcbn1cbi5jLWRhdGF0YWJsZS5yZXJvb2ZzLXRhYmxlIGZvcm0gLmZvcm0tZ3JvdXAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBjb2x1bW4tZ2FwOiAxMHB4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW46IDA7XG59XG4uYy1kYXRhdGFibGUucmVyb29mcy10YWJsZSBmb3JtIC5mb3JtLWdyb3VwIGxhYmVsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICB3aWR0aDogMTE1cHg7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmMtZGF0YXRhYmxlLnJlcm9vZnMtdGFibGUgZm9ybSAuZm9ybS1ncm91cCBsYWJlbCB7XG4gICAgd2lkdGg6IG1heC1jb250ZW50O1xuICB9XG59XG4uYy1kYXRhdGFibGUucmVyb29mcy10YWJsZSAjc2VsZWN0VHlwZUZpbHRlcnMsXG4uYy1kYXRhdGFibGUucmVyb29mcy10YWJsZSAjc2VsZWN0RmlsdGVycyB7XG4gIHdpZHRoOiAxMDAlO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5jLWRhdGF0YWJsZS5yZXJvb2ZzLXRhYmxlICNzZWxlY3RUeXBlRmlsdGVycyxcbi5jLWRhdGF0YWJsZS5yZXJvb2ZzLXRhYmxlICNzZWxlY3RGaWx0ZXJzIHtcbiAgICB3aWR0aDogMjAwcHg7XG4gIH1cbn1cbi5jLWRhdGF0YWJsZS5yZXJvb2ZzLXRhYmxlIC5kYXRhVGFibGVzX3dyYXBwZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBwaW5rO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xufSIsIi8vIEJyZWFrcG9pbnQgdmlld3BvcnQgc2l6ZXMgYW5kIG1lZGlhIHF1ZXJpZXMuXG4vL1xuLy8gQnJlYWtwb2ludHMgYXJlIGRlZmluZWQgYXMgYSBtYXAgb2YgKG5hbWU6IG1pbmltdW0gd2lkdGgpLCBvcmRlciBmcm9tIHNtYWxsIHRvIGxhcmdlOlxuLy9cbi8vICAgICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweClcbi8vXG4vLyBUaGUgbWFwIGRlZmluZWQgaW4gdGhlIGAkZ3JpZC1icmVha3BvaW50c2AgZ2xvYmFsIHZhcmlhYmxlIGlzIHVzZWQgYXMgdGhlIGAkYnJlYWtwb2ludHNgIGFyZ3VtZW50IGJ5IGRlZmF1bHQuXG5cbi8vIE5hbWUgb2YgdGhlIG5leHQgYnJlYWtwb2ludCwgb3IgbnVsbCBmb3IgdGhlIGxhc3QgYnJlYWtwb2ludC5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20pXG4vLyAgICBtZFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgbWRcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSwgJGJyZWFrcG9pbnQtbmFtZXM6ICh4cyBzbSBtZCBsZyB4bCkpXG4vLyAgICBtZFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cywgJGJyZWFrcG9pbnQtbmFtZXM6IG1hcC1rZXlzKCRicmVha3BvaW50cykpIHtcbiAgJG46IGluZGV4KCRicmVha3BvaW50LW5hbWVzLCAkbmFtZSk7XG4gIEByZXR1cm4gaWYoJG4gIT0gbnVsbCBhbmQgJG4gPCBsZW5ndGgoJGJyZWFrcG9pbnQtbmFtZXMpLCBudGgoJGJyZWFrcG9pbnQtbmFtZXMsICRuICsgMSksIG51bGwpO1xufVxuXG4vLyBNaW5pbXVtIGJyZWFrcG9pbnQgd2lkdGguIE51bGwgZm9yIHRoZSBzbWFsbGVzdCAoZmlyc3QpIGJyZWFrcG9pbnQuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1taW4oc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICA1NzZweFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gIEByZXR1cm4gaWYoJG1pbiAhPSAwLCAkbWluLCBudWxsKTtcbn1cblxuLy8gTWF4aW11bSBicmVha3BvaW50IHdpZHRoLiBOdWxsIGZvciB0aGUgbGFyZ2VzdCAobGFzdCkgYnJlYWtwb2ludC5cbi8vIFRoZSBtYXhpbXVtIHZhbHVlIGlzIGNhbGN1bGF0ZWQgYXMgdGhlIG1pbmltdW0gb2YgdGhlIG5leHQgb25lIGxlc3MgMC4wMnB4XG4vLyB0byB3b3JrIGFyb3VuZCB0aGUgbGltaXRhdGlvbnMgb2YgYG1pbi1gIGFuZCBgbWF4LWAgcHJlZml4ZXMgYW5kIHZpZXdwb3J0cyB3aXRoIGZyYWN0aW9uYWwgd2lkdGhzLlxuLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9tZWRpYXF1ZXJpZXMtNC8jbXEtbWluLW1heFxuLy8gVXNlcyAwLjAycHggcmF0aGVyIHRoYW4gMC4wMXB4IHRvIHdvcmsgYXJvdW5kIGEgY3VycmVudCByb3VuZGluZyBidWcgaW4gU2FmYXJpLlxuLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgyNjFcbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW1heChzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KSlcbi8vICAgIDc2Ny45OHB4XG5AZnVuY3Rpb24gYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG5leHQ6IGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQHJldHVybiBpZigkbmV4dCwgYnJlYWtwb2ludC1taW4oJG5leHQsICRicmVha3BvaW50cykgLSAuMDIsIG51bGwpO1xufVxuXG4vLyBSZXR1cm5zIGEgYmxhbmsgc3RyaW5nIGlmIHNtYWxsZXN0IGJyZWFrcG9pbnQsIG90aGVyd2lzZSByZXR1cm5zIHRoZSBuYW1lIHdpdGggYSBkYXNoIGluIGZyb250LlxuLy8gVXNlZnVsIGZvciBtYWtpbmcgcmVzcG9uc2l2ZSB1dGlsaXRpZXMuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1pbmZpeCh4cywgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KSlcbi8vICAgIFwiXCIgIChSZXR1cm5zIGEgYmxhbmsgc3RyaW5nKVxuLy8gICAgPj4gYnJlYWtwb2ludC1pbmZpeChzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KSlcbi8vICAgIFwiLXNtXCJcbkBmdW5jdGlvbiBicmVha3BvaW50LWluZml4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEByZXR1cm4gaWYoYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cykgPT0gbnVsbCwgXCJcIiwgXCItI3skbmFtZX1cIik7XG59XG5cbi8vIE1lZGlhIG9mIGF0IGxlYXN0IHRoZSBtaW5pbXVtIGJyZWFrcG9pbnQgd2lkdGguIE5vIHF1ZXJ5IGZvciB0aGUgc21hbGxlc3QgYnJlYWtwb2ludC5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBhbmQgd2lkZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQGlmICRtaW4ge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIE1lZGlhIG9mIGF0IG1vc3QgdGhlIG1heGltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBsYXJnZXN0IGJyZWFrcG9pbnQuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIG5hcnJvd2VyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQGlmICRtYXgge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIE1lZGlhIHRoYXQgc3BhbnMgbXVsdGlwbGUgYnJlYWtwb2ludCB3aWR0aHMuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgYmV0d2VlbiB0aGUgbWluIGFuZCBtYXggYnJlYWtwb2ludHNcbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWJldHdlZW4oJGxvd2VyLCAkdXBwZXIsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJGxvd2VyLCAkYnJlYWtwb2ludHMpO1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkdXBwZXIsICRicmVha3BvaW50cyk7XG5cbiAgQGlmICRtaW4gIT0gbnVsbCBhbmQgJG1heCAhPSBudWxsIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWF4ID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGxvd2VyLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWluID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkdXBwZXIsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vIE1lZGlhIGJldHdlZW4gdGhlIGJyZWFrcG9pbnQncyBtaW5pbXVtIGFuZCBtYXhpbXVtIHdpZHRocy5cbi8vIE5vIG1pbmltdW0gZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LCBhbmQgbm8gbWF4aW11bSBmb3IgdGhlIGxhcmdlc3Qgb25lLlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IG9ubHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQsIG5vdCB2aWV3cG9ydHMgYW55IHdpZGVyIG9yIG5hcnJvd2VyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtb25seSgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50cyk7XG5cbiAgQGlmICRtaW4gIT0gbnVsbCBhbmQgJG1heCAhPSBudWxsIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWF4ID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtaW4gPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuYW1lLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuIiwiLy8gQ3VzdG9tIENvbG9yc1xyXG5cclxuJGRhcmstZ3JheTogIzI0MjQyNDtcclxuJG1lZGl1bS1kYXJrLWdyYXk6ICM2MTYxNjE7XHJcbiRtZWRpdW0tZ3JheTogIzUyNTI1MjtcclxuJG1lZGl1bS1saWdodC1ncmF5OiAjQkNDNkNFO1xyXG4kbGlnaHQtZ3JheTogI0U4RThFODtcclxuJHdoaXRlOiAjZmVmZWZlO1xyXG4kYmx1ZTogIzAwNTNBQztcclxuJGRhcmstYmx1ZTogIzUxNzA4RDtcclxuXHJcbiRwcmltYXJ5OiAjMDA1OEE4O1xyXG4kc2Vjb25kYXJ5OiAjMDA1OEE4O1xyXG4keWVsbG93OiAjRkZDMjM2O1xyXG4kb3JhbmdlOiAjRkY5NTJCO1xyXG4kaW5mbzogI2UyZTNlNTtcclxuXHJcbi8vIEFwcCBWYXJpYWJsZXNcclxuJGNvbnRhaW5lci1tYXgtd2lkdGg6IDEyMDBweDtcclxuJHNpZGViYXItYmc6ICRkYXJrLWdyYXk7XHJcbiRzaWRlYmFyLXdpZHRoOiAyNTBweDtcclxuXHJcbi8vIEJvb3RzdHJhcCBWYXJpYWJsZXNcclxuXHJcbi8vIExheW91dFxyXG5cclxuJGdyaWQtYnJlYWtwb2ludHM6IChcclxuICB4czogMCxcclxuICBzbTogNDgwcHgsXHJcbiAgbWQ6IDc2OHB4LFxyXG4gIGxnOiA5OTJweCxcclxuICB4bDogMTIwMHB4XHJcbik7XHJcblxyXG4kYm9keS1iZzogJGxpZ2h0LWdyYXk7XHJcblxyXG4vLyBUeXBvZ3JhcGh5XHJcbiRmb250LXNpemUtYmFzZTogMXJlbTtcclxuXHJcbiRmb250LWZhbWlseS1zYW5zLXNlcmlmOiAnUm9ib3RvJywgJ3NhbnMtc2VyaWYnO1xyXG5cclxuJGgxLWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS42MjU7IC8vIDI2XHJcbiRoMi1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuMzc1OyAvLyAyM1xyXG4kaDMtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UgKiAxLjI1OyAvLyAyMFxyXG4kaDQtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UgKiAxLjEyNTsgIC8vIDE4XHJcbiRoNS1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuMDYyNTsgLy8gMTdcclxuJGg2LWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlO1xyXG5cclxuXHJcbi8vIEdsb2JhbCBTdHlsZXNcclxuXHJcbiRib3JkZXItcmFkaXVzOiAwcHg7XHJcbiRib3JkZXItcmFkaXVzLWxnOiAkYm9yZGVyLXJhZGl1cztcclxuJGJvcmRlci1yYWRpdXMtc206ICRib3JkZXItcmFkaXVzO1xyXG5cclxuLy8gRm9ybXNcclxuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1iZzogJHdoaXRlO1xyXG5cclxuLy8gQmFkZ2VzXHJcbiRiYWRnZS1wYWRkaW5nLXk6IC41ZW07XHJcbiRiYWRnZS1wYWRkaW5nLXg6IC44ZW07XHJcbiRiYWRnZS1waWxsLXBhZGRpbmcteDogMS4yZW07XHJcbiIsIkBpbXBvcnQgJy4uL2RhdGF0YWJsZS5jb21wb25lbnQuc2Nzcyc7XHJcblxyXG4uYy1kYXRhdGFibGUucmVyb29mcy10YWJsZSB7XHJcblx0aGVhZGVyIHtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdGZsZXgtd3JhcDogd3JhcDtcclxuXHRcdHJvdy1nYXA6IDEwcHg7XHJcblxyXG5cdFx0QGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChtZCl7XHJcblx0XHRcdGZsZXgtd3JhcDogbm93cmFwO1xyXG5cdFx0XHR3aWR0aDogZml0LWNvbnRlbnQ7XHJcblx0XHRcdGNvbHVtbi1nYXA6IDUwcHg7XHJcblx0XHRcdC8vIG1hcmdpbi1sZWZ0OiAyMDBweDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGZvcm0ge1xyXG5cdFx0d2lkdGg6IDEwMCU7XHJcblxyXG5cdFx0LmZvcm0tZ3JvdXAge1xyXG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0XHRjb2x1bW4tZ2FwOiAxMHB4O1xyXG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0XHRtYXJnaW46IDA7XHJcblxyXG5cdFx0XHRsYWJlbCB7XHJcblx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0XHRcdG1hcmdpbi1ib3R0b206IDA7XHJcblx0XHRcdFx0d2lkdGg6IDExNXB4O1xyXG5cclxuXHRcdFx0XHRAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKG1kKXtcclxuXHRcdFx0XHRcdHdpZHRoOiBtYXgtY29udGVudDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdCNzZWxlY3RUeXBlRmlsdGVycyxcclxuXHQjc2VsZWN0RmlsdGVycyB7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHJcblx0XHRAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKG1kKXtcclxuXHRcdFx0d2lkdGg6IDIwMHB4O1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Ly8gZG9lc250IHdvcms/XHJcblx0LmRhdGFUYWJsZXNfd3JhcHBlciAge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogcGluaztcclxuXHRcdHRleHQtYWxpZ246IGxlZnQ7XHJcblx0fVxyXG59XHJcbiJdfQ== */\"","import { Component, OnInit, OnDestroy, Input, ViewChild } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { JobsService } from '@/services/jobs/jobs.service';\r\nimport { BuildersService } from '@/services/builders/builders.service';\r\nimport { CommunitiesService } from '@/services/communities/communities.service';\r\nimport { ContactsService } from '@/services/contacts/contacts.service';\r\nimport { DataTableDirective } from 'angular-datatables';\r\nimport { NgbPopoverConfig } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'datatable-reroof-jobs',\r\n templateUrl: './reroof-jobs-datatable.component.html',\r\n styleUrls: ['./reroof-jobs-datatable.component.scss']\r\n})\r\nexport class ReroofJobsDatatableComponent implements OnInit, OnDestroy {\r\n\r\n\t@ViewChild(DataTableDirective)\r\n \tdatatableElement: DataTableDirective;\r\n \t\r\n\t@Input() title : string = '';\r\n\t@Input() showFooter : boolean = true;\r\n\t@Input() rowsPerPage : number = 10;\r\n\t@Input() viewRoute : string = '';\r\n\t@Input() viewText : string = 'View';\r\n\t@Input() status : string = 'all';\r\n\t@Input() showStatus : boolean = true;\r\n\r\n\twindowLoc = '';\r\n\trows = [];\r\n\tdtOptions : DataTables.Settings = {};\r\n\tshowTitle : Boolean = false\r\n\tactiveStatusFilter: string = ''\r\n\r\n\tjobStatuses: string[] = [\r\n\t\t'Active',\r\n\t\t'Closed',\r\n\t\t'Estimated',\r\n\t\t'Removed'\r\n\t];\r\n constructor(\r\n\t private jobsService: JobsService,\r\n\t\t\tprivate buildersService: BuildersService,\r\n\t\t\tprivate communitiesService: CommunitiesService,\r\n\t\t\tprivate contactsService: ContactsService,\r\n\t\tprivate config: NgbPopoverConfig\r\n ) { \r\n\t\tconfig.placement = 'left';\r\n }\r\n\r\n\r\n \tdataTablesInit(searchStr?: any) {\r\n\t let lastPage = 0;\r\n\t\tlet lastSearchText = \"\";\r\n\t\tlet searchOptions : (DataTables.SearchSettings) = {search: searchStr};\r\n\t\tthis.dtOptions = {\r\n\t\t\tpagingType: 'full_numbers',\r\n\t\t\tpageLength: this.rowsPerPage,\r\n\t\t\tlengthChange: false,\r\n\t\t\tdisplayStart: lastPage, // Last Selected Page\r\n\t\t\tinfo: this.showFooter,\r\n\t\t\tpaging: this.showFooter,\r\n\t\t\tscrollX: true,\r\n\t\t\tsearch: searchOptions,\r\n\t\t\tcolumns: [\r\n\t\t\t\t{ \"data\": \"CreatedDate\" },\r\n\t\t\t\t{ \"data\": \"ScheduledDate\" },\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"HomeSize\"\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"Name\"\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"Phone\"\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"Email\"\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"Location\"\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"Status\",\r\n\t\t\t\t\t\"visible\": this.showStatus,\r\n\t\t\t\t\t\"orderable\": false\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"Inspections\",\r\n\t\t\t\t\trender: function (data, type, row) {\r\n\t\t\t\t\t\treturn '';\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"Detail\",\r\n\t\t\t\t\trender: function (data, type, row) {\r\n\t\t\t\t\t\treturn '';\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tcolumnDefs: [\r\n\t\t\t\t{\r\n\t\t\t\t\ttargets: this.showStatus ? [8, 9] : [7, 8],\r\n\t\t\t\t\torderable: false,\r\n\t\t\t\t\tsearchable: false\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tserverSide: true,\r\n\t\t\tprocessing: true,\r\n\t\t\tajax: (data: object, callback, dataTablesParameters: any) => {\r\n\t\t\t\tlastPage = dataTablesParameters.start; // Note : dataTablesParameters.start = page count * table length\r\n\t\t\t\tlastSearchText = 'search' in dataTablesParameters && dataTablesParameters.search != 'undefined' ? dataTablesParameters.search.value : '';\r\n\r\n\t\t\t\tif ( this.activeStatusFilter !== '' ){\r\n\t\t\t\t\tdata['columns'][6]['search'].value = this.activeStatusFilter.toLowerCase()\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Get the table data\r\n\t\t\t\tthis.jobsService.getReroofJobsDatatable(data).subscribe((result: any) => {\r\n\r\n\t\t\t\t\tresult.data.forEach((row) => {\r\n\t\t\t\t\t\tlet status = row.Status;\r\n\r\n\t\t\t\t\t\t// Set Default status color\r\n\t\t\t\t\t\trow.StatusColor = 'dark';\r\n\r\n\t\t\t\t\t\tswitch(status) {\r\n\t\t\t\t\t\t\tcase 'Active':\r\n\t\t\t\t\t\t\t\trow.StatusColor = 'success';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 'Closed':\r\n\t\t\t\t\t\t\t\trow.StatusColor = 'danger';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 'Estimated':\r\n\t\t\t\t\t\t\t\trow.StatusColor = 'primary';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 'Inactive':\r\n\t\t\t\t\t\t\t\trow.StatusColor = 'warning';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trow['SafetyChecklistAddLink'] = `/reroof-jobs/${row.ID}/safety-inspection-add`\r\n\r\n\t\t\t\t\t\tif (row.Inspections.length) {\r\n\t\t\t\t\t\t\trow.Inspections.sort(function (a, b) {\r\n\t\t\t\t\t\t\t\tconst c: any = new Date(a.CreatedDate)\r\n\t\t\t\t\t\t\t\tconst d: any = new Date(b.CreatedDate)\r\n\t\t\t\t\t\t\t\treturn c - d\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.rows = result.data;\r\n\t\t\t\t\tcallback({\r\n\t\t\t\t\t\trecordsTotal: result.recordsTotal,\r\n\t\t\t\t\t\trecordsFiltered: result.recordsFiltered,\r\n\t\t\t\t\t\tdata: [] // this gets set to empty because this.rows above is rendered by angular with the relevant formatting\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\t$($.fn.dataTable.tables(true)).DataTable().columns.adjust();\r\n\t\t\t\t\t\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t$($.fn.dataTable.tables(true)).DataTable().columns.adjust();\r\n\t\t\t\t\t}, 2500);\r\n\t\t\t\t});\r\n\r\n\t\t\t},\r\n\t\t\torder: [[0, \"desc\"]],\r\n\t\t\tinitComplete: () => {\r\n\t\t\t\tlet searchLabels = document.querySelectorAll('.dataTables_filter > label');\r\n\r\n\t\t\t\tsearchLabels.forEach((label) => {\r\n\t\t\t\t\tlabel.setAttribute('aria-label', 'Search/Filter Table');\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.showTitle = true\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// console.log('dtOptions', this.dtOptions);\r\n\t\tsetTimeout(() => {\r\n\t\t\t$($.fn.dataTable.tables(true)).DataTable().columns.adjust();\r\n\t\t}, 2000);\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.windowLoc = window.location.pathname;\r\n\t\tlet trySearch: any = window.sessionStorage.getItem(this.windowLoc + \"reroofSearch\");\r\n\t\twindow.sessionStorage.clear();\r\n\r\n\t\tif (trySearch != null && trySearch != ''){\r\n\t\t\tthis.dataTablesInit(trySearch);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.dataTablesInit();\r\n\t\t}\t\t\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tlet dtinst: DataTables.Api;\r\n\t\tlet search : any = \"\";\r\n\r\n\t\tthis.datatableElement.dtInstance.then(x => {\r\n\t\t\tdtinst = x;\r\n\t\t\tsearch = dtinst.search();\r\n\t\t\tif (search != null || search != ''){\r\n\t\t\t\twindow.sessionStorage.setItem(this.windowLoc + \"reroofSearch\", search);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tupdateStatusFilter( event: { value: string, data } ){\r\n\t\tconst { value } = event\r\n\r\n\t\tthis.activeStatusFilter = value\r\n\r\n\t\tthis.datatableElement.dtInstance.then(( dtInstance: DataTables.Api ) => {\r\n\t\t\tdtInstance.search('');\r\n\t\t\tdtInstance.columns().search('');\r\n\t\t\tdtInstance.draw();\r\n\t\t});\r\n\t}\r\n}\r\n","module.exports = \"
\\r\\n\\t
\\r\\n\\t\\t

\\r\\n\\t\\t\\t{{ title }}\\r\\n\\t\\t

\\r\\n\\t\\t\\r\\n\\t\\t\\t{{ viewText }}\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tCreated On\\r\\n\\t\\t\\t\\tScheduled Date\\r\\n\\t\\t\\t\\tBuilder\\r\\n\\t\\t\\t\\tCommunity\\r\\n\\t\\t\\t\\tLocation\\r\\n\\t\\t\\t\\tCommunity Manager\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\tStatus\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\tInspections\\r\\n\\t\\t\\t\\tDetail\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{ row.CreatedDate | date }}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{ row.ScheduledDate | date }}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t{{row.Builder?.CompanyName}}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{ row.Community?.Name }}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t{{ row.Address }}
\\r\\n\\t\\t\\t\\t\\t\\t
{{ row.Address2 }}
\\r\\n\\t\\t\\t\\t\\t\\t{{ row.City }}, {{ row.State }} {{ row.ZipCode }}\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\tLot: {{ row?.Lots }}\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t
  • \\r\\n\\t\\t\\t\\t\\t\\t\\t{{ manager.name }}\\r\\n\\t\\t\\t\\t\\t\\t
  • \\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{ row.Status }}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tNew Safety...\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tNew Dryin...\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tNew Shingle...\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t\\r\\n
\\r\\n\"","module.exports = \".c-datatable_header {\\n align-items: flex-start;\\n display: flex;\\n margin-bottom: 10px;\\n position: relative;\\n transform: translateY(0);\\n z-index: 2;\\n width: 100%;\\n justify-content: space-between;\\n}\\n@media (min-width: 768px) {\\n .c-datatable_header {\\n width: calc(100% - 240px);\\n justify-content: normal;\\n margin-bottom: 0;\\n transform: translateY(100%);\\n }\\n}\\n.c-datatable_location {\\n min-width: 170px;\\n}\\n.c-datatable .dataTables_filter {\\n text-align: left;\\n}\\n.c-datatable_view-link {\\n line-height: 2;\\n margin-left: 1em;\\n}\\n@media (min-width: 768px) {\\n .c-datatable_view-link {\\n margin-left: 2em;\\n }\\n}\\n.c-datatable_table {\\n background: #fefefe;\\n}\\n.c-datatable_address {\\n margin-bottom: 0.5rem;\\n}\\n.c-datatable small {\\n font-size: 0.75rem;\\n}\\n.c-datatable .inspection-dropdown button {\\n font-size: 0.875rem;\\n text-transform: capitalize;\\n}\\n.c-datatable thead {\\n background: #616161;\\n color: #fefefe;\\n}\\n.c-datatable thead .sorting, .c-datatable thead .sorting_asc, .c-datatable thead .sorting_desc {\\n background-image: none;\\n position: relative;\\n}\\n.c-datatable thead .sorting::after, .c-datatable thead .sorting_asc::after, .c-datatable thead .sorting_desc::after {\\n bottom: auto;\\n display: inline-block;\\n font-family: \\\"Font Awesome 5 Pro\\\";\\n font-weight: 900;\\n position: absolute;\\n right: 4px;\\n top: 50%;\\n transform: translateY(-50%);\\n}\\n.c-datatable thead .sorting::before, .c-datatable thead .sorting_asc::before, .c-datatable thead .sorting_desc::before {\\n display: none;\\n}\\n.c-datatable thead .sorting_asc::after, .c-datatable thead .sorting_desc::after {\\n color: #fefefe;\\n opacity: 1;\\n}\\n.c-datatable thead .sorting::after {\\n content: \\\"\\\\f0dc\\\";\\n}\\n.c-datatable thead .sorting_asc::after {\\n content: \\\"\\\\f0de\\\";\\n}\\n.c-datatable thead .sorting_desc::after {\\n content: \\\"\\\\f0dd\\\";\\n}\\n.c-datatable th,\\n.c-datatable td {\\n border-right: 1px solid #E8E8E8;\\n font-size: 0.875rem;\\n}\\n.c-datatable th:last-child,\\n.c-datatable td:last-child {\\n border-right: none;\\n}\\n.c-datatable th {\\n border-bottom: none;\\n font-weight: normal;\\n white-space: nowrap;\\n}\\n.c-datatable_export-button {\\n background: none;\\n border: 0;\\n cursor: pointer;\\n color: #0058A8;\\n position: absolute;\\n transform: translateY(-145%);\\n z-index: 1;\\n}\\n.c-datatable_modal-button {\\n background: none;\\n border: 0;\\n cursor: pointer;\\n color: #0058A8;\\n}\\n.c-datatable ul {\\n display: block;\\n list-style-type: none;\\n padding-left: 0;\\n margin-bottom: 0;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9kYXRhdGFibGUvd2FycmFudHktam9icy1kYXRhdGFibGUvQzpcXFVzZXJzXFxEYW5pZWxcXERlc2t0b3BcXFByb2plY3RzXFxTdGVybGluZ1Jvb2Zpbmcvc3JjXFxhcHBcXGNvbXBvbmVudHNcXGRhdGF0YWJsZVxcd2FycmFudHktam9icy1kYXRhdGFibGVcXHdhcnJhbnR5LWpvYnMtZGF0YXRhYmxlLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2RhdGF0YWJsZS93YXJyYW50eS1qb2JzLWRhdGF0YWJsZS93YXJyYW50eS1qb2JzLWRhdGF0YWJsZS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9kYXRhdGFibGUvd2FycmFudHktam9icy1kYXRhdGFibGUvQzpcXFVzZXJzXFxEYW5pZWxcXERlc2t0b3BcXFByb2plY3RzXFxTdGVybGluZ1Jvb2Zpbmcvbm9kZV9tb2R1bGVzXFxib290c3RyYXBcXHNjc3NcXG1peGluc1xcX2JyZWFrcG9pbnRzLnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvZGF0YXRhYmxlL3dhcnJhbnR5LWpvYnMtZGF0YXRhYmxlL0M6XFxVc2Vyc1xcRGFuaWVsXFxEZXNrdG9wXFxQcm9qZWN0c1xcU3RlcmxpbmdSb29maW5nL3NyY1xcc3R5bGVzXFxfdmFyaWFibGVzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0M7RUFDQyx1QkFBQTtFQUNBLGFBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0Esd0JBQUE7RUFDQSxVQUFBO0VBQ0EsV0FBQTtFQUNBLDhCQUFBO0FDRkY7QUNtREk7RUZ6REg7SUFXRSx5QkFBQTtJQUNBLHVCQUFBO0lBQ0EsZ0JBQUE7SUFDQSwyQkFBQTtFQ0REO0FBQ0Y7QURJQztFQUNDLGdCQUFBO0FDRkY7QURLQztFQUNDLGdCQUFBO0FDSEY7QURNQztFQUNDLGNBQUE7RUFDQSxnQkFBQTtBQ0pGO0FDaUNJO0VGL0JIO0lBS0UsZ0JBQUE7RUNIRDtBQUNGO0FETUM7RUFDQyxtQkdoQ007QUY0QlI7QURPQztFQUNDLHFCQUFBO0FDTEY7QURRQztFQUNDLGtCQUFBO0FDTkY7QURXRTtFQUNDLG1CQUFBO0VBQ0EsMEJBQUE7QUNUSDtBRGFDO0VBQ0MsbUJHeERpQjtFSHlEakIsY0dyRE07QUYwQ1I7QURlRztFQUdDLHNCQUFBO0VBQ0Esa0JBQUE7QUNmSjtBRGlCSTtFQUNDLFlBQUE7RUFDQSxxQkFBQTtFQUNBLGlDQUFBO0VBQ0EsZ0JBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7RUFDQSxRQUFBO0VBQ0EsMkJBQUE7QUNmTDtBRGtCSTtFQUNDLGFBQUE7QUNoQkw7QUR3Qkk7RUFDQyxjR3BGRztFSHFGSCxVQUFBO0FDdEJMO0FEMEJHO0VBQ0MsZ0JBQUE7QUN4Qko7QUQyQkc7RUFDQyxnQkFBQTtBQ3pCSjtBRDRCRztFQUNDLGdCQUFBO0FDMUJKO0FEK0JDOztFQUVDLCtCQUFBO0VBQ0EsbUJBQUE7QUM3QkY7QUQ4QkU7O0VBQ0Msa0JBQUE7QUMzQkg7QUQrQkM7RUFDQyxtQkFBQTtFQUNBLG1CQUFBO0VBQ0EsbUJBQUE7QUM3QkY7QURnQ0M7RUFDQyxnQkFBQTtFQUNBLFNBQUE7RUFDQSxlQUFBO0VBQ0EsY0d0SFE7RUh1SFIsa0JBQUE7RUFDQSw0QkFBQTtFQUNBLFVBQUE7QUM5QkY7QURpQ0M7RUFDQyxnQkFBQTtFQUNBLFNBQUE7RUFDQSxlQUFBO0VBQ0EsY0doSVE7QUZpR1Y7QURrQ0M7RUFDQyxjQUFBO0VBQ0EscUJBQUE7RUFDQSxlQUFBO0VBQ0EsZ0JBQUE7QUNoQ0YiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL2RhdGF0YWJsZS93YXJyYW50eS1qb2JzLWRhdGF0YWJsZS93YXJyYW50eS1qb2JzLWRhdGF0YWJsZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJ2NvbXBvbmVudC1oZWFkZXInO1xyXG5cclxuLmMtZGF0YXRhYmxlIHtcclxuXHQmX2hlYWRlciB7XHJcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xyXG5cdFx0ei1pbmRleDogMjtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG5cclxuXHRcdEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobWQpIHtcclxuXHRcdFx0d2lkdGg6IGNhbGMoMTAwJSAtIDI0MHB4KTtcclxuXHRcdFx0anVzdGlmeS1jb250ZW50OiBub3JtYWw7XHJcblx0XHRcdG1hcmdpbi1ib3R0b206IDA7XHJcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdCZfbG9jYXRpb24ge1xyXG5cdFx0bWluLXdpZHRoOiAxNzBweDtcclxuXHR9XHJcblxyXG5cdC5kYXRhVGFibGVzX2ZpbHRlcntcclxuXHRcdHRleHQtYWxpZ246IGxlZnQ7XHJcblx0fVxyXG5cclxuXHQmX3ZpZXctbGluayB7XHJcblx0XHRsaW5lLWhlaWdodDogMjtcclxuXHRcdG1hcmdpbi1sZWZ0OiAxZW07XHJcblxyXG5cdFx0QGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChtZCkge1xyXG5cdFx0XHRtYXJnaW4tbGVmdDogMmVtO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Jl90YWJsZSB7XHJcblx0XHRiYWNrZ3JvdW5kOiAkd2hpdGU7XHJcblx0fVxyXG5cclxuXHQmX2FkZHJlc3Mge1xyXG5cdFx0bWFyZ2luLWJvdHRvbTogMC41cmVtO1xyXG5cdH1cclxuXHJcblx0c21hbGwge1xyXG5cdFx0Zm9udC1zaXplOiByZW0tY2FsYygxMik7XHJcblx0fVxyXG5cclxuXHQuaW5zcGVjdGlvbi1kcm9wZG93biB7XHJcblxyXG5cdFx0YnV0dG9ue1xyXG5cdFx0XHRmb250LXNpemU6IDAuODc1cmVtO1xyXG5cdFx0XHR0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHRoZWFkIHtcclxuXHRcdGJhY2tncm91bmQ6ICRtZWRpdW0tZGFyay1ncmF5O1xyXG5cdFx0Y29sb3I6ICR3aGl0ZTtcclxuXHJcblx0XHQuc29ydGluZyB7XHJcblxyXG5cdFx0XHQmLFxyXG5cdFx0XHQmX2FzYyxcclxuXHRcdFx0Jl9kZXNjIHtcclxuXHRcdFx0XHRiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xyXG5cdFx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHJcblx0XHRcdFx0Jjo6YWZ0ZXIge1xyXG5cdFx0XHRcdFx0Ym90dG9tOiBhdXRvO1xyXG5cdFx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0XHRcdFx0Zm9udC1mYW1pbHk6ICdGb250IEF3ZXNvbWUgNSBQcm8nO1xyXG5cdFx0XHRcdFx0Zm9udC13ZWlnaHQ6IDkwMDtcclxuXHRcdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdFx0XHRcdHJpZ2h0OiA0cHg7XHJcblx0XHRcdFx0XHR0b3A6IDUwJTtcclxuXHRcdFx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdCY6OmJlZm9yZSB7XHJcblx0XHRcdFx0XHRkaXNwbGF5OiBub25lO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdH1cclxuXHJcblx0XHRcdCZfYXNjLFxyXG5cdFx0XHQmX2Rlc2Mge1xyXG5cclxuXHRcdFx0XHQmOjphZnRlciB7XHJcblx0XHRcdFx0XHRjb2xvcjogJHdoaXRlO1xyXG5cdFx0XHRcdFx0b3BhY2l0eTogMTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdCY6OmFmdGVyIHtcclxuXHRcdFx0XHRjb250ZW50OiBcIlxcZjBkY1wiO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQmX2FzYzo6YWZ0ZXIge1xyXG5cdFx0XHRcdGNvbnRlbnQ6IFwiXFxmMGRlXCI7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdCZfZGVzYzo6YWZ0ZXIge1xyXG5cdFx0XHRcdGNvbnRlbnQ6IFwiXFxmMGRkXCI7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHRoLFxyXG5cdHRkIHtcclxuXHRcdGJvcmRlci1yaWdodDogMXB4IHNvbGlkICRsaWdodC1ncmF5O1xyXG5cdFx0Zm9udC1zaXplOiByZW0tY2FsYygxNCk7XHJcblx0XHQmOmxhc3QtY2hpbGQge1xyXG5cdFx0XHRib3JkZXItcmlnaHQ6IG5vbmU7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR0aCB7XHJcblx0XHRib3JkZXItYm90dG9tOiBub25lO1xyXG5cdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcblx0fVxyXG5cclxuXHQmX2V4cG9ydC1idXR0b24ge1xyXG5cdFx0YmFja2dyb3VuZDogbm9uZTtcclxuXHRcdGJvcmRlcjogMDtcclxuXHRcdGN1cnNvcjogcG9pbnRlcjtcclxuXHRcdGNvbG9yOiAkcHJpbWFyeTtcclxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTQ1JSk7XHJcblx0XHR6LWluZGV4OiAxO1xyXG5cdH1cclxuXHJcblx0Jl9tb2RhbC1idXR0b24ge1xyXG5cdFx0YmFja2dyb3VuZDogbm9uZTtcclxuXHRcdGJvcmRlcjogMDtcclxuXHRcdGN1cnNvcjogcG9pbnRlcjtcclxuXHRcdGNvbG9yOiAkcHJpbWFyeTtcclxuXHR9XHJcblxyXG5cdHVsIHtcclxuXHRcdGRpc3BsYXk6IGJsb2NrO1xyXG5cdFx0bGlzdC1zdHlsZS10eXBlOiBub25lO1xyXG5cdFx0cGFkZGluZy1sZWZ0OiAwO1xyXG5cdFx0bWFyZ2luLWJvdHRvbTogMDtcclxuXHJcblx0fVxyXG5cclxuXHJcbn1cclxuXHJcbiIsIi5jLWRhdGF0YWJsZV9oZWFkZXIge1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgZGlzcGxheTogZmxleDtcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIHotaW5kZXg6IDI7XG4gIHdpZHRoOiAxMDAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmMtZGF0YXRhYmxlX2hlYWRlciB7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDI0MHB4KTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IG5vcm1hbDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgfVxufVxuLmMtZGF0YXRhYmxlX2xvY2F0aW9uIHtcbiAgbWluLXdpZHRoOiAxNzBweDtcbn1cbi5jLWRhdGF0YWJsZSAuZGF0YVRhYmxlc19maWx0ZXIge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuLmMtZGF0YXRhYmxlX3ZpZXctbGluayB7XG4gIGxpbmUtaGVpZ2h0OiAyO1xuICBtYXJnaW4tbGVmdDogMWVtO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5jLWRhdGF0YWJsZV92aWV3LWxpbmsge1xuICAgIG1hcmdpbi1sZWZ0OiAyZW07XG4gIH1cbn1cbi5jLWRhdGF0YWJsZV90YWJsZSB7XG4gIGJhY2tncm91bmQ6ICNmZWZlZmU7XG59XG4uYy1kYXRhdGFibGVfYWRkcmVzcyB7XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbn1cbi5jLWRhdGF0YWJsZSBzbWFsbCB7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbn1cbi5jLWRhdGF0YWJsZSAuaW5zcGVjdGlvbi1kcm9wZG93biBidXR0b24ge1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbn1cbi5jLWRhdGF0YWJsZSB0aGVhZCB7XG4gIGJhY2tncm91bmQ6ICM2MTYxNjE7XG4gIGNvbG9yOiAjZmVmZWZlO1xufVxuLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nLCAuYy1kYXRhdGFibGUgdGhlYWQgLnNvcnRpbmdfYXNjLCAuYy1kYXRhdGFibGUgdGhlYWQgLnNvcnRpbmdfZGVzYyB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZzo6YWZ0ZXIsIC5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZ19hc2M6OmFmdGVyLCAuYy1kYXRhdGFibGUgdGhlYWQgLnNvcnRpbmdfZGVzYzo6YWZ0ZXIge1xuICBib3R0b206IGF1dG87XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1mYW1pbHk6IFwiRm9udCBBd2Vzb21lIDUgUHJvXCI7XG4gIGZvbnQtd2VpZ2h0OiA5MDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDRweDtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbn1cbi5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZzo6YmVmb3JlLCAuYy1kYXRhdGFibGUgdGhlYWQgLnNvcnRpbmdfYXNjOjpiZWZvcmUsIC5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZ19kZXNjOjpiZWZvcmUge1xuICBkaXNwbGF5OiBub25lO1xufVxuLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nX2FzYzo6YWZ0ZXIsIC5jLWRhdGF0YWJsZSB0aGVhZCAuc29ydGluZ19kZXNjOjphZnRlciB7XG4gIGNvbG9yOiAjZmVmZWZlO1xuICBvcGFjaXR5OiAxO1xufVxuLmMtZGF0YXRhYmxlIHRoZWFkIC5zb3J0aW5nOjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXFxmMGRjXCI7XG59XG4uYy1kYXRhdGFibGUgdGhlYWQgLnNvcnRpbmdfYXNjOjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXFxmMGRlXCI7XG59XG4uYy1kYXRhdGFibGUgdGhlYWQgLnNvcnRpbmdfZGVzYzo6YWZ0ZXIge1xuICBjb250ZW50OiBcIlxcZjBkZFwiO1xufVxuLmMtZGF0YXRhYmxlIHRoLFxuLmMtZGF0YXRhYmxlIHRkIHtcbiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0U4RThFODtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbn1cbi5jLWRhdGF0YWJsZSB0aDpsYXN0LWNoaWxkLFxuLmMtZGF0YXRhYmxlIHRkOmxhc3QtY2hpbGQge1xuICBib3JkZXItcmlnaHQ6IG5vbmU7XG59XG4uYy1kYXRhdGFibGUgdGgge1xuICBib3JkZXItYm90dG9tOiBub25lO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuLmMtZGF0YXRhYmxlX2V4cG9ydC1idXR0b24ge1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBib3JkZXI6IDA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgY29sb3I6ICMwMDU4QTg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNDUlKTtcbiAgei1pbmRleDogMTtcbn1cbi5jLWRhdGF0YWJsZV9tb2RhbC1idXR0b24ge1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBib3JkZXI6IDA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgY29sb3I6ICMwMDU4QTg7XG59XG4uYy1kYXRhdGFibGUgdWwge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59IiwiLy8gQnJlYWtwb2ludCB2aWV3cG9ydCBzaXplcyBhbmQgbWVkaWEgcXVlcmllcy5cbi8vXG4vLyBCcmVha3BvaW50cyBhcmUgZGVmaW5lZCBhcyBhIG1hcCBvZiAobmFtZTogbWluaW11bSB3aWR0aCksIG9yZGVyIGZyb20gc21hbGwgdG8gbGFyZ2U6XG4vL1xuLy8gICAgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KVxuLy9cbi8vIFRoZSBtYXAgZGVmaW5lZCBpbiB0aGUgYCRncmlkLWJyZWFrcG9pbnRzYCBnbG9iYWwgdmFyaWFibGUgaXMgdXNlZCBhcyB0aGUgYCRicmVha3BvaW50c2AgYXJndW1lbnQgYnkgZGVmYXVsdC5cblxuLy8gTmFtZSBvZiB0aGUgbmV4dCBicmVha3BvaW50LCBvciBudWxsIGZvciB0aGUgbGFzdCBicmVha3BvaW50LlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSlcbi8vICAgIG1kXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICBtZFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAkYnJlYWtwb2ludC1uYW1lczogKHhzIHNtIG1kIGxnIHhsKSlcbi8vICAgIG1kXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludC1uYW1lczogbWFwLWtleXMoJGJyZWFrcG9pbnRzKSkge1xuICAkbjogaW5kZXgoJGJyZWFrcG9pbnQtbmFtZXMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbiAhPSBudWxsIGFuZCAkbiA8IGxlbmd0aCgkYnJlYWtwb2ludC1uYW1lcyksIG50aCgkYnJlYWtwb2ludC1uYW1lcywgJG4gKyAxKSwgbnVsbCk7XG59XG5cbi8vIE1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTnVsbCBmb3IgdGhlIHNtYWxsZXN0IChmaXJzdCkgYnJlYWtwb2ludC5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW1pbihzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KSlcbi8vICAgIDU3NnB4XG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbWluICE9IDAsICRtaW4sIG51bGwpO1xufVxuXG4vLyBNYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguIE51bGwgZm9yIHRoZSBsYXJnZXN0IChsYXN0KSBicmVha3BvaW50LlxuLy8gVGhlIG1heGltdW0gdmFsdWUgaXMgY2FsY3VsYXRlZCBhcyB0aGUgbWluaW11bSBvZiB0aGUgbmV4dCBvbmUgbGVzcyAwLjAycHhcbi8vIHRvIHdvcmsgYXJvdW5kIHRoZSBsaW1pdGF0aW9ucyBvZiBgbWluLWAgYW5kIGBtYXgtYCBwcmVmaXhlcyBhbmQgdmlld3BvcnRzIHdpdGggZnJhY3Rpb25hbCB3aWR0aHMuXG4vLyBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL21lZGlhcXVlcmllcy00LyNtcS1taW4tbWF4XG4vLyBVc2VzIDAuMDJweCByYXRoZXIgdGhhbiAwLjAxcHggdG8gd29yayBhcm91bmQgYSBjdXJyZW50IHJvdW5kaW5nIGJ1ZyBpbiBTYWZhcmkuXG4vLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODI2MVxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbWF4KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgNzY3Ljk4cHhcbkBmdW5jdGlvbiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbmV4dDogYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAcmV0dXJuIGlmKCRuZXh0LCBicmVha3BvaW50LW1pbigkbmV4dCwgJGJyZWFrcG9pbnRzKSAtIC4wMiwgbnVsbCk7XG59XG5cbi8vIFJldHVybnMgYSBibGFuayBzdHJpbmcgaWYgc21hbGxlc3QgYnJlYWtwb2ludCwgb3RoZXJ3aXNlIHJldHVybnMgdGhlIG5hbWUgd2l0aCBhIGRhc2ggaW4gZnJvbnQuXG4vLyBVc2VmdWwgZm9yIG1ha2luZyByZXNwb25zaXZlIHV0aWxpdGllcy5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHhzLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgXCJcIiAgKFJldHVybnMgYSBibGFuayBzdHJpbmcpXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgXCItc21cIlxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaW5maXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgQHJldHVybiBpZihicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKSA9PSBudWxsLCBcIlwiLCBcIi0jeyRuYW1lfVwiKTtcbn1cblxuLy8gTWVkaWEgb2YgYXQgbGVhc3QgdGhlIG1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCB3aWRlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1pbiB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTWVkaWEgb2YgYXQgbW9zdCB0aGUgbWF4aW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIGxhcmdlc3QgYnJlYWtwb2ludC5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBhbmQgbmFycm93ZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1heCB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTWVkaWEgdGhhdCBzcGFucyBtdWx0aXBsZSBicmVha3BvaW50IHdpZHRocy5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBiZXR3ZWVuIHRoZSBtaW4gYW5kIG1heCBicmVha3BvaW50c1xuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtYmV0d2VlbigkbG93ZXIsICR1cHBlciwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbG93ZXIsICRicmVha3BvaW50cyk7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCR1cHBlciwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbG93ZXIsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtaW4gPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCR1cHBlciwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8gTWVkaWEgYmV0d2VlbiB0aGUgYnJlYWtwb2ludCdzIG1pbmltdW0gYW5kIG1heGltdW0gd2lkdGhzLlxuLy8gTm8gbWluaW11bSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQsIGFuZCBubyBtYXhpbXVtIGZvciB0aGUgbGFyZ2VzdCBvbmUuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgb25seSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCwgbm90IHZpZXdwb3J0cyBhbnkgd2lkZXIgb3IgbmFycm93ZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1vbmx5KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBDdXN0b20gQ29sb3JzXHJcblxyXG4kZGFyay1ncmF5OiAjMjQyNDI0O1xyXG4kbWVkaXVtLWRhcmstZ3JheTogIzYxNjE2MTtcclxuJG1lZGl1bS1ncmF5OiAjNTI1MjUyO1xyXG4kbWVkaXVtLWxpZ2h0LWdyYXk6ICNCQ0M2Q0U7XHJcbiRsaWdodC1ncmF5OiAjRThFOEU4O1xyXG4kd2hpdGU6ICNmZWZlZmU7XHJcbiRibHVlOiAjMDA1M0FDO1xyXG4kZGFyay1ibHVlOiAjNTE3MDhEO1xyXG5cclxuJHByaW1hcnk6ICMwMDU4QTg7XHJcbiRzZWNvbmRhcnk6ICMwMDU4QTg7XHJcbiR5ZWxsb3c6ICNGRkMyMzY7XHJcbiRvcmFuZ2U6ICNGRjk1MkI7XHJcbiRpbmZvOiAjZTJlM2U1O1xyXG5cclxuLy8gQXBwIFZhcmlhYmxlc1xyXG4kY29udGFpbmVyLW1heC13aWR0aDogMTIwMHB4O1xyXG4kc2lkZWJhci1iZzogJGRhcmstZ3JheTtcclxuJHNpZGViYXItd2lkdGg6IDI1MHB4O1xyXG5cclxuLy8gQm9vdHN0cmFwIFZhcmlhYmxlc1xyXG5cclxuLy8gTGF5b3V0XHJcblxyXG4kZ3JpZC1icmVha3BvaW50czogKFxyXG4gIHhzOiAwLFxyXG4gIHNtOiA0ODBweCxcclxuICBtZDogNzY4cHgsXHJcbiAgbGc6IDk5MnB4LFxyXG4gIHhsOiAxMjAwcHhcclxuKTtcclxuXHJcbiRib2R5LWJnOiAkbGlnaHQtZ3JheTtcclxuXHJcbi8vIFR5cG9ncmFwaHlcclxuJGZvbnQtc2l6ZS1iYXNlOiAxcmVtO1xyXG5cclxuJGZvbnQtZmFtaWx5LXNhbnMtc2VyaWY6ICdSb2JvdG8nLCAnc2Fucy1zZXJpZic7XHJcblxyXG4kaDEtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UgKiAxLjYyNTsgLy8gMjZcclxuJGgyLWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS4zNzU7IC8vIDIzXHJcbiRoMy1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuMjU7IC8vIDIwXHJcbiRoNC1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuMTI1OyAgLy8gMThcclxuJGg1LWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS4wNjI1OyAvLyAxN1xyXG4kaDYtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7XHJcblxyXG5cclxuLy8gR2xvYmFsIFN0eWxlc1xyXG5cclxuJGJvcmRlci1yYWRpdXM6IDBweDtcclxuJGJvcmRlci1yYWRpdXMtbGc6ICRib3JkZXItcmFkaXVzO1xyXG4kYm9yZGVyLXJhZGl1cy1zbTogJGJvcmRlci1yYWRpdXM7XHJcblxyXG4vLyBGb3Jtc1xyXG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWJnOiAkd2hpdGU7XHJcblxyXG4vLyBCYWRnZXNcclxuJGJhZGdlLXBhZGRpbmcteTogLjVlbTtcclxuJGJhZGdlLXBhZGRpbmcteDogLjhlbTtcclxuJGJhZGdlLXBpbGwtcGFkZGluZy14OiAxLjJlbTtcclxuIl19 */\"","import { Component, OnInit, OnDestroy, Input, ViewChild } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { JobsService } from '@/services/jobs/jobs.service';\r\nimport { BuildersService } from '@/services/builders/builders.service';\r\nimport { CommunitiesService } from '@/services/communities/communities.service';\r\nimport { ContactsService } from '@/services/contacts/contacts.service';\r\nimport { DataTableDirective } from 'angular-datatables';\r\nimport { NgbPopoverConfig } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'datatable-warranty-jobs',\r\n templateUrl: './warranty-jobs-datatable.component.html',\r\n styleUrls: ['./warranty-jobs-datatable.component.scss']\r\n})\r\nexport class WarrantyJobsDatatableComponent implements OnInit, OnDestroy {\r\n\r\n\t@ViewChild(DataTableDirective)\r\n \tdatatableElement: DataTableDirective;\r\n\r\n\t@Input() title: string = '';\r\n\t@Input() showFooter: boolean = true;\r\n\t@Input() rowsPerPage: number = 10;\r\n\t@Input() viewRoute: string = '';\r\n\t@Input() viewText: string = 'View';\r\n\t@Input() status : string = 'all';\r\n\t@Input() showStatus : boolean = true;\r\n\r\n\twindowLoc = '';\r\n\trows = [];\r\n\tdtOptions : DataTables.Settings = {};\r\n\tshowTitle : Boolean = false\r\n\t\r\n\tjobStatuses: string[] = [\r\n\t\t'Active',\r\n\t\t'Completed',\r\n\t\t'Estimated',\r\n\t\t'Inactive',\r\n\t\t'Removed'\r\n\t];\r\n\tconstructor(\r\n\t\tprivate jobsService: JobsService,\r\n\t\t\tprivate buildersService: BuildersService,\r\n\t\t\tprivate communitiesService: CommunitiesService,\r\n\t\t\tprivate contactsService: ContactsService,\r\n\t\tprivate config: NgbPopoverConfig\r\n\t) {\r\n\t\tconfig.placement = 'left';\r\n\t}\r\n\r\n \tdataTablesInit(searchStr?: any) {\r\n\t let lastPage = 0;\r\n\t\tlet lastSearchText = \"\";\r\n\t\tlet searchOptions : (DataTables.SearchSettings) = {search: searchStr}\r\n\t\tthis.dtOptions = {\r\n\t\t\tpagingType: 'full_numbers',\r\n\t\t\tpageLength: this.rowsPerPage,\r\n\t\t\tlengthChange: false,\r\n\t\t\tdisplayStart: lastPage, // Last Selected Page\r\n\t\t\tinfo: this.showFooter,\r\n\t\t\tpaging: this.showFooter, \r\n\t\t\tscrollX: true,\r\n\t\t\tsearch: searchOptions,\r\n\t\t\tcolumns: [\r\n\t\t\t\t{ \"data\": \"CreatedDate\" },\r\n\t\t\t\t{ \"data\": \"ScheduledDate\" },\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"Builder\",\r\n\t\t\t\t\trender: function (data, type, row) {\r\n\t\t\t\t\t\t\treturn 'CompanyName' in data ? data.CompanyName : '';\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"Community\",\r\n\t\t\t\t\trender: function (data, type, row) {\r\n\t\t\t\t\t\t\treturn 'Name' in data ? data.Name : '';\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"Address\",\r\n\t\t\t\t\trender: function (data, type, row) {\r\n\t\t\t\t\t\t\treturn data + ' ' + (row.Address2 != null ? row.Address2 : '') + '
' + row.City + ', ' + row.State + ' ' + row.ZipCode;\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"CommunityManagers\",\r\n\t\t\t\t\trender: function (data, type, row) {\r\n\t\t\t\t\t\t\treturn data.length > 0 ? data.join('
') : '';\r\n\t\t\t\t\t},\r\n\t\t\t\t\t\"orderable\": false\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"Status\",\r\n\t\t\t\t\t\"visible\": this.showStatus,\r\n\t\t\t\t\t\"orderable\": false\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"Inspections\",\r\n\t\t\t\t\trender: function (data, type, row) {\r\n\t\t\t\t\t\treturn '';\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"data\": \"Detail\",\r\n\t\t\t\t\trender: function (data, type, row) {\r\n\t\t\t\t\t\treturn '';\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tcolumnDefs: [\r\n\t\t\t\t{\r\n\t\t\t\t\ttargets: this.showStatus ? [7, 8] : [6, 7],\r\n\t\t\t\t\torderable: false,\r\n\t\t\t\t\tsearchable: false\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tserverSide: true,\r\n\t\t\tprocessing: true,\r\n\t\t\tajax: (data: object, callback, dataTablesParameters: any) => {\r\n\t\t\t\tlastPage = dataTablesParameters.start; // Note : dataTablesParameters.start = page count * table length\r\n\t\t\t\tlastSearchText = 'search' in dataTablesParameters && dataTablesParameters.search != 'undefined' ? dataTablesParameters.search.value : '';\r\n\r\n\t\t\t\tthis.jobsService.getWarrantyJobsDatatable(data).subscribe((result: any) => {\r\n\t\t\t\t\t// Get all Rows\r\n\t\t\t\t\tresult.data.forEach(row => {\r\n\t\t\t\t\t\tlet communityManagers: Array = []\r\n\r\n\t\t\t\t\t\tthis.buildersService.getBuilder(row.BuilderID).subscribe((result: any) => {\r\n\t\t\t\t\t\t\trow.Builder = result.body;\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tthis.communitiesService.getCommunity(row.CommunityID).subscribe((result: any) => {\r\n\t\t\t\t\t\t\trow.Community = result.body;\r\n\t\t\t\t\t\t\trow.Community.ManagerIDs.forEach(( id: string ) => {\r\n\t\t\t\t\t\t\t\tthis.contactsService.getContact( id ).subscribe(( result: any ) => {\r\n\t\t\t\t\t\t\t\t\tcommunityManagers.push({\r\n\t\t\t\t\t\t\t\t\t\tname: result.body.Name,\r\n\t\t\t\t\t\t\t\t\t\tid: result.body.ID\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\trow['Lots'] = [row.Lot1, row.Lot2].filter(Boolean).join(\"/\");\r\n\t\t\t\t\t\tlet status = row.Status;\r\n\r\n\t\t\t\t\t\t// Set Default status color\r\n\t\t\t\t\t\trow.StatusColor = 'dark';\r\n\r\n\t\t\t\t\t\tswitch(status) {\r\n\t\t\t\t\t\t\tcase 'Active':\r\n\t\t\t\t\t\t\t\trow.StatusColor = 'success';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 'Completed':\r\n\t\t\t\t\t\t\t\trow.StatusColor = 'danger';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 'Estimated':\r\n\t\t\t\t\t\t\t\trow.StatusColor = 'primary';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 'Inactive':\r\n\t\t\t\t\t\t\t\trow.StatusColor = 'warning';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trow['DryinChecklistAddLink'] = `/warranty-jobs/${row.ID}/dryin-inspection-add`\r\n\t\t\t\t\t\trow['ShingleChecklistAddLink'] = `/warranty-jobs/${row.ID}/shingle-inspection-add`\r\n\t\t\t\t\t\trow['SafetyChecklistAddLink'] = `/warranty-jobs/${row.ID}/safety-inspection-add`\r\n\r\n\t\t\t\t\t\tif (row.Inspections.length) {\r\n\t\t\t\t\t\t\trow.Inspections.sort(function (a, b) {\r\n\t\t\t\t\t\t\t\tconst c: any = new Date(a.CreatedDate)\r\n\t\t\t\t\t\t\t\tconst d: any = new Date(b.CreatedDate)\r\n\t\t\t\t\t\t\t\treturn c - d\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trow.CommunityManagers = communityManagers;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// console.log(this.rows);\r\n\t\t\t\t\t// Store rows in class property\r\n\t\t\t\t\tthis.rows = result.data;\r\n\t\t\t\t\tcallback({\r\n\t\t\t\t\t\trecordsTotal: result.recordsTotal,\r\n\t\t\t\t\t\trecordsFiltered: result.recordsFiltered,\r\n\t\t\t\t\t\tdata: [] // this gets set to empty because this.rows above is rendered by angular with the relevant formatting\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\t$($.fn.dataTable.tables(true)).DataTable().columns.adjust();\r\n\t\t\t\t\t\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t$($.fn.dataTable.tables(true)).DataTable().columns.adjust();\r\n\t\t\t\t\t}, 2500);\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\torder: [[0, \"desc\"]],\r\n\t\t\tinitComplete: () => {\r\n\t\t\t\tlet searchLabels = document.querySelectorAll('.dataTables_filter > label');\r\n\r\n\t\t\t\tsearchLabels.forEach((label) => {\r\n\t\t\t\t\tlabel.setAttribute('aria-label', 'Search/Filter Table');\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.showTitle = true\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// console.log('dtOptions', this.dtOptions);\r\n\t\tsetTimeout(() => {\r\n\t\t\t$($.fn.dataTable.tables(true)).DataTable().columns.adjust();\r\n\t\t}, 2000);\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.windowLoc = window.location.pathname;\r\n\t\tlet trySearch: any = window.sessionStorage.getItem(this.windowLoc + \"warrantySearch\");\r\n\t\twindow.sessionStorage.clear();\r\n\r\n\t\tif (trySearch != null && trySearch != ''){\r\n\t\t\tthis.dataTablesInit(trySearch);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.dataTablesInit();\r\n\t\t}\t\t\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tlet dtinst: DataTables.Api;\r\n\t\tlet search : any = \"\";\r\n\r\n\t\tthis.datatableElement.dtInstance.then(x => {\r\n\t\t\tdtinst = x;\r\n\t\t\tsearch = dtinst.search();\r\n\t\t\tif (search != null || search != ''){\r\n\t\t\t\twindow.sessionStorage.setItem(this.windowLoc + \"warrantySearch\", search);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\"","module.exports = \".c-logo {\\n margin-bottom: 40px;\\n text-align: center;\\n}\\n@media screen and (max-width: 800px) {\\n .c-logo.col {\\n display: none;\\n }\\n}\\n.c-logo_mobile {\\n margin-bottom: 0;\\n display: block;\\n}\\n.c-logo_mobile img {\\n width: 60px;\\n height: 60px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9sb2dvL0M6XFxVc2Vyc1xcRGFuaWVsXFxEZXNrdG9wXFxQcm9qZWN0c1xcU3RlcmxpbmdSb29maW5nL3NyY1xcYXBwXFxjb21wb25lbnRzXFxsb2dvXFxsb2dvLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2xvZ28vbG9nby5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNDLG1CQUFBO0VBQ0Esa0JBQUE7QUNERDtBREtFO0VBREQ7SUFFRSxhQUFBO0VDRkQ7QUFDRjtBREtDO0VBQ0MsZ0JBQUE7RUFDQSxjQUFBO0FDSEY7QURLRTtFQUNDLFdBQUE7RUFDQSxZQUFBO0FDSEgiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL2xvZ28vbG9nby5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJ2NvbXBvbmVudC1oZWFkZXInO1xyXG5cclxuLmMtbG9nbyB7XHJcblx0bWFyZ2luLWJvdHRvbTogNDBweDtcclxuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblxyXG5cclxuXHQmLmNvbCB7XHJcblx0XHRAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4MDBweCkge1xyXG5cdFx0XHRkaXNwbGF5OiBub25lO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Jl9tb2JpbGUge1xyXG5cdFx0bWFyZ2luLWJvdHRvbTogMDtcclxuXHRcdGRpc3BsYXk6IGJsb2NrO1xyXG5cclxuXHRcdGltZyB7XHJcblx0XHRcdHdpZHRoOiA2MHB4O1xyXG5cdFx0XHRoZWlnaHQ6IDYwcHg7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG5cclxuIiwiLmMtbG9nbyB7XG4gIG1hcmdpbi1ib3R0b206IDQwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDgwMHB4KSB7XG4gIC5jLWxvZ28uY29sIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG4uYy1sb2dvX21vYmlsZSB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuLmMtbG9nb19tb2JpbGUgaW1nIHtcbiAgd2lkdGg6IDYwcHg7XG4gIGhlaWdodDogNjBweDtcbn0iXX0= */\"","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'logo',\r\n templateUrl: './logo.component.html',\r\n styleUrls: ['./logo.component.scss']\r\n})\r\n\r\nexport class LogoComponent {\r\n\t@Input() classNames: string;\r\n}\r\n","module.exports = \"\\r\\n\\t\\r\\n\\t\\r\\n\\t\\t{{ text }}\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\"","module.exports = \".link {\\n color: inherit;\\n cursor: pointer;\\n padding: 1rem 1rem 1rem calc(1rem + 1em);\\n position: relative;\\n transition: color 300ms ease-in-out;\\n}\\n.link:hover, .link:focus {\\n color: #fefefe;\\n}\\n.icon {\\n margin-right: 0.5em;\\n}\\n.active-parent {\\n box-shadow: inset 15px 0 0 -5px #0053AC;\\n}\\n.link {\\n padding-right: calc(1rem + 1em);\\n}\\n.caret {\\n right: 1rem;\\n top: 50%;\\n transform: translateY(-50%);\\n position: absolute;\\n}\\n.active-child-link {\\n box-shadow: inset 15px 0 0 -5px #0053AC;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9tYWluLW5hdmlnYXRpb24vbGluay1wYXJlbnQvQzpcXFVzZXJzXFxEYW5pZWxcXERlc2t0b3BcXFByb2plY3RzXFxTdGVybGluZ1Jvb2Zpbmcvc3JjXFxhcHBcXGNvbXBvbmVudHNcXG1haW4tbmF2aWdhdGlvblxcbGluay1wYXJlbnRcXGxpbmstcGFyZW50LmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL21haW4tbmF2aWdhdGlvbi9saW5rLXBhcmVudC9saW5rLXBhcmVudC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9tYWluLW5hdmlnYXRpb24vbGluay1wYXJlbnQvQzpcXFVzZXJzXFxEYW5pZWxcXERlc2t0b3BcXFByb2plY3RzXFxTdGVybGluZ1Jvb2Zpbmcvc3JjXFxzdHlsZXNcXF92YXJpYWJsZXMuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9tYWluLW5hdmlnYXRpb24vbGluay1wYXJlbnQvQzpcXFVzZXJzXFxEYW5pZWxcXERlc2t0b3BcXFByb2plY3RzXFxTdGVybGluZ1Jvb2Zpbmcvc3RkaW4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDQyxjQUFBO0VBQ0EsZUFBQTtFQUNBLHdDQUFBO0VBQ0Esa0JBQUE7RUFDQSxtQ0FBQTtBQ0REO0FER0M7RUFFQyxjRUpNO0FERVI7QURNQTtFQUNDLG1CQUFBO0FDSEQ7QURNQTtFQUNDLHVDQUFBO0FDSEQ7QUVkQTtFQUNDLCtCQUFBO0FGaUJEO0FFZEE7RUFDQyxXQUFBO0VBQ0EsUUFBQTtFQUNBLDJCQUFBO0VBQ0Esa0JBQUE7QUZpQkQ7QUVkQTtFQUNDLHVDQUFBO0FGaUJEIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9tYWluLW5hdmlnYXRpb24vbGluay1wYXJlbnQvbGluay1wYXJlbnQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICdjb21wb25lbnQtaGVhZGVyJztcclxuXHJcbi5saW5rIHtcclxuXHRjb2xvcjogaW5oZXJpdDtcclxuXHRjdXJzb3I6IHBvaW50ZXI7XHJcblx0cGFkZGluZzogMXJlbSAxcmVtIDFyZW0gY2FsYygxcmVtICsgMWVtKTtcclxuXHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0dHJhbnNpdGlvbjogY29sb3IgMzAwbXMgZWFzZS1pbi1vdXQ7XHJcblxyXG5cdCY6aG92ZXIsXHJcblx0Jjpmb2N1cyB7XHJcblx0XHRjb2xvcjogJHdoaXRlO1xyXG5cdH1cclxufVxyXG5cclxuLmljb24ge1xyXG5cdG1hcmdpbi1yaWdodDogLjVlbTtcclxufVxyXG5cclxuLmFjdGl2ZS1wYXJlbnQge1xyXG5cdGJveC1zaGFkb3c6IGluc2V0IDE1cHggMCAwIC01cHggIzAwNTNBQztcclxufVxyXG4iLCIubGluayB7XG4gIGNvbG9yOiBpbmhlcml0O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHBhZGRpbmc6IDFyZW0gMXJlbSAxcmVtIGNhbGMoMXJlbSArIDFlbSk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdHJhbnNpdGlvbjogY29sb3IgMzAwbXMgZWFzZS1pbi1vdXQ7XG59XG4ubGluazpob3ZlciwgLmxpbms6Zm9jdXMge1xuICBjb2xvcjogI2ZlZmVmZTtcbn1cblxuLmljb24ge1xuICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xufVxuXG4uYWN0aXZlLXBhcmVudCB7XG4gIGJveC1zaGFkb3c6IGluc2V0IDE1cHggMCAwIC01cHggIzAwNTNBQztcbn1cblxuLmxpbmsge1xuICBwYWRkaW5nLXJpZ2h0OiBjYWxjKDFyZW0gKyAxZW0pO1xufVxuXG4uY2FyZXQge1xuICByaWdodDogMXJlbTtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xufVxuXG4uYWN0aXZlLWNoaWxkLWxpbmsge1xuICBib3gtc2hhZG93OiBpbnNldCAxNXB4IDAgMCAtNXB4ICMwMDUzQUM7XG59IiwiLy8gQ3VzdG9tIENvbG9yc1xyXG5cclxuJGRhcmstZ3JheTogIzI0MjQyNDtcclxuJG1lZGl1bS1kYXJrLWdyYXk6ICM2MTYxNjE7XHJcbiRtZWRpdW0tZ3JheTogIzUyNTI1MjtcclxuJG1lZGl1bS1saWdodC1ncmF5OiAjQkNDNkNFO1xyXG4kbGlnaHQtZ3JheTogI0U4RThFODtcclxuJHdoaXRlOiAjZmVmZWZlO1xyXG4kYmx1ZTogIzAwNTNBQztcclxuJGRhcmstYmx1ZTogIzUxNzA4RDtcclxuXHJcbiRwcmltYXJ5OiAjMDA1OEE4O1xyXG4kc2Vjb25kYXJ5OiAjMDA1OEE4O1xyXG4keWVsbG93OiAjRkZDMjM2O1xyXG4kb3JhbmdlOiAjRkY5NTJCO1xyXG4kaW5mbzogI2UyZTNlNTtcclxuXHJcbi8vIEFwcCBWYXJpYWJsZXNcclxuJGNvbnRhaW5lci1tYXgtd2lkdGg6IDEyMDBweDtcclxuJHNpZGViYXItYmc6ICRkYXJrLWdyYXk7XHJcbiRzaWRlYmFyLXdpZHRoOiAyNTBweDtcclxuXHJcbi8vIEJvb3RzdHJhcCBWYXJpYWJsZXNcclxuXHJcbi8vIExheW91dFxyXG5cclxuJGdyaWQtYnJlYWtwb2ludHM6IChcclxuICB4czogMCxcclxuICBzbTogNDgwcHgsXHJcbiAgbWQ6IDc2OHB4LFxyXG4gIGxnOiA5OTJweCxcclxuICB4bDogMTIwMHB4XHJcbik7XHJcblxyXG4kYm9keS1iZzogJGxpZ2h0LWdyYXk7XHJcblxyXG4vLyBUeXBvZ3JhcGh5XHJcbiRmb250LXNpemUtYmFzZTogMXJlbTtcclxuXHJcbiRmb250LWZhbWlseS1zYW5zLXNlcmlmOiAnUm9ib3RvJywgJ3NhbnMtc2VyaWYnO1xyXG5cclxuJGgxLWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS42MjU7IC8vIDI2XHJcbiRoMi1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuMzc1OyAvLyAyM1xyXG4kaDMtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UgKiAxLjI1OyAvLyAyMFxyXG4kaDQtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UgKiAxLjEyNTsgIC8vIDE4XHJcbiRoNS1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuMDYyNTsgLy8gMTdcclxuJGg2LWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlO1xyXG5cclxuXHJcbi8vIEdsb2JhbCBTdHlsZXNcclxuXHJcbiRib3JkZXItcmFkaXVzOiAwcHg7XHJcbiRib3JkZXItcmFkaXVzLWxnOiAkYm9yZGVyLXJhZGl1cztcclxuJGJvcmRlci1yYWRpdXMtc206ICRib3JkZXItcmFkaXVzO1xyXG5cclxuLy8gRm9ybXNcclxuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1iZzogJHdoaXRlO1xyXG5cclxuLy8gQmFkZ2VzXHJcbiRiYWRnZS1wYWRkaW5nLXk6IC41ZW07XHJcbiRiYWRnZS1wYWRkaW5nLXg6IC44ZW07XHJcbiRiYWRnZS1waWxsLXBhZGRpbmcteDogMS4yZW07XHJcbiIsIkBpbXBvcnQgJy4uL2xpbmsvbGluay5jb21wb25lbnQnO1xyXG5cclxuXHJcbi5saW5rIHtcclxuXHRwYWRkaW5nLXJpZ2h0OiBjYWxjKDFyZW0gKyAxZW0pO1xyXG59XHJcblxyXG4uY2FyZXQge1xyXG5cdHJpZ2h0OiAxcmVtO1xyXG5cdHRvcDogNTAlO1xyXG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxuXHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcbn1cclxuXHJcbi5hY3RpdmUtY2hpbGQtbGluayB7XHJcblx0Ym94LXNoYWRvdzogaW5zZXQgMTVweCAwIDAgLTVweCAjMDA1M0FDO1xyXG59XHJcbiJdfQ== */\"","import { Component, Input, Output, OnInit, EventEmitter, HostBinding } from '@angular/core';\r\nimport { Router, NavigationEnd } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'main-nav-link-parent',\r\n templateUrl: './link-parent.component.html',\r\n styleUrls: ['./link-parent.component.scss']\r\n})\r\nexport class LinkParentComponent implements OnInit {\r\n\r\n\t@Input() isCollapsed : boolean = true;\r\n\r\n\t@Input() text: string;\r\n\t@Input() subID: string;\r\n\t@Input() icon: string;\r\n\t@Input() route: string;\r\n\t@Input() children: any[];\r\n\r\n\tactiveParent: boolean = false\r\n\r\n\t@Output() isCollapsedChange = new EventEmitter();\r\n\r\n\r\n\tconstructor(\r\n\t\tprivate router: Router\r\n\t) {\r\n\r\n\t\trouter.events.subscribe((val) => {\r\n\t\t\tif (val instanceof NavigationEnd) {\r\n\t\t\t\tif(this.children) {\r\n\t\t\t\t\tconst isParent = this.children.find(child => child.route === this.router.url)\r\n\t\t\t\t\tthis.activeParent = isParent ? true : false\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t}\r\n\r\n\tngOnInit() {}\r\n\r\n\ttoggleCollapse() {\r\n\t\tthis.isCollapsed = !this.isCollapsed;\r\n\t\tthis.isCollapsedChange.emit(this.isCollapsed);\r\n\t}\r\n\r\n}\r\n","module.exports = \"\\r\\n\\t\\r\\n\\t\\r\\n\\t\\t{{ text }}\\r\\n\\t\\r\\n\\r\\n\"","module.exports = \".link {\\n color: inherit;\\n cursor: pointer;\\n padding: 1rem 1rem 1rem calc(1rem + 1em);\\n position: relative;\\n transition: color 300ms ease-in-out;\\n}\\n.link:hover, .link:focus {\\n color: #fefefe;\\n}\\n.icon {\\n margin-right: 0.5em;\\n}\\n.active-parent {\\n box-shadow: inset 15px 0 0 -5px #0053AC;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9tYWluLW5hdmlnYXRpb24vbGluay9DOlxcVXNlcnNcXERhbmllbFxcRGVza3RvcFxcUHJvamVjdHNcXFN0ZXJsaW5nUm9vZmluZy9zcmNcXGFwcFxcY29tcG9uZW50c1xcbWFpbi1uYXZpZ2F0aW9uXFxsaW5rXFxsaW5rLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL21haW4tbmF2aWdhdGlvbi9saW5rL2xpbmsuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvbWFpbi1uYXZpZ2F0aW9uL2xpbmsvQzpcXFVzZXJzXFxEYW5pZWxcXERlc2t0b3BcXFByb2plY3RzXFxTdGVybGluZ1Jvb2Zpbmcvc3JjXFxzdHlsZXNcXF92YXJpYWJsZXMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNDLGNBQUE7RUFDQSxlQUFBO0VBQ0Esd0NBQUE7RUFDQSxrQkFBQTtFQUNBLG1DQUFBO0FDREQ7QURHQztFQUVDLGNFSk07QURFUjtBRE1BO0VBQ0MsbUJBQUE7QUNIRDtBRE1BO0VBQ0MsdUNBQUE7QUNIRCIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbWFpbi1uYXZpZ2F0aW9uL2xpbmsvbGluay5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJ2NvbXBvbmVudC1oZWFkZXInO1xyXG5cclxuLmxpbmsge1xyXG5cdGNvbG9yOiBpbmhlcml0O1xyXG5cdGN1cnNvcjogcG9pbnRlcjtcclxuXHRwYWRkaW5nOiAxcmVtIDFyZW0gMXJlbSBjYWxjKDFyZW0gKyAxZW0pO1xyXG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHR0cmFuc2l0aW9uOiBjb2xvciAzMDBtcyBlYXNlLWluLW91dDtcclxuXHJcblx0Jjpob3ZlcixcclxuXHQmOmZvY3VzIHtcclxuXHRcdGNvbG9yOiAkd2hpdGU7XHJcblx0fVxyXG59XHJcblxyXG4uaWNvbiB7XHJcblx0bWFyZ2luLXJpZ2h0OiAuNWVtO1xyXG59XHJcblxyXG4uYWN0aXZlLXBhcmVudCB7XHJcblx0Ym94LXNoYWRvdzogaW5zZXQgMTVweCAwIDAgLTVweCAjMDA1M0FDO1xyXG59XHJcbiIsIi5saW5rIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgcGFkZGluZzogMXJlbSAxcmVtIDFyZW0gY2FsYygxcmVtICsgMWVtKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0cmFuc2l0aW9uOiBjb2xvciAzMDBtcyBlYXNlLWluLW91dDtcbn1cbi5saW5rOmhvdmVyLCAubGluazpmb2N1cyB7XG4gIGNvbG9yOiAjZmVmZWZlO1xufVxuXG4uaWNvbiB7XG4gIG1hcmdpbi1yaWdodDogMC41ZW07XG59XG5cbi5hY3RpdmUtcGFyZW50IHtcbiAgYm94LXNoYWRvdzogaW5zZXQgMTVweCAwIDAgLTVweCAjMDA1M0FDO1xufSIsIi8vIEN1c3RvbSBDb2xvcnNcclxuXHJcbiRkYXJrLWdyYXk6ICMyNDI0MjQ7XHJcbiRtZWRpdW0tZGFyay1ncmF5OiAjNjE2MTYxO1xyXG4kbWVkaXVtLWdyYXk6ICM1MjUyNTI7XHJcbiRtZWRpdW0tbGlnaHQtZ3JheTogI0JDQzZDRTtcclxuJGxpZ2h0LWdyYXk6ICNFOEU4RTg7XHJcbiR3aGl0ZTogI2ZlZmVmZTtcclxuJGJsdWU6ICMwMDUzQUM7XHJcbiRkYXJrLWJsdWU6ICM1MTcwOEQ7XHJcblxyXG4kcHJpbWFyeTogIzAwNThBODtcclxuJHNlY29uZGFyeTogIzAwNThBODtcclxuJHllbGxvdzogI0ZGQzIzNjtcclxuJG9yYW5nZTogI0ZGOTUyQjtcclxuJGluZm86ICNlMmUzZTU7XHJcblxyXG4vLyBBcHAgVmFyaWFibGVzXHJcbiRjb250YWluZXItbWF4LXdpZHRoOiAxMjAwcHg7XHJcbiRzaWRlYmFyLWJnOiAkZGFyay1ncmF5O1xyXG4kc2lkZWJhci13aWR0aDogMjUwcHg7XHJcblxyXG4vLyBCb290c3RyYXAgVmFyaWFibGVzXHJcblxyXG4vLyBMYXlvdXRcclxuXHJcbiRncmlkLWJyZWFrcG9pbnRzOiAoXHJcbiAgeHM6IDAsXHJcbiAgc206IDQ4MHB4LFxyXG4gIG1kOiA3NjhweCxcclxuICBsZzogOTkycHgsXHJcbiAgeGw6IDEyMDBweFxyXG4pO1xyXG5cclxuJGJvZHktYmc6ICRsaWdodC1ncmF5O1xyXG5cclxuLy8gVHlwb2dyYXBoeVxyXG4kZm9udC1zaXplLWJhc2U6IDFyZW07XHJcblxyXG4kZm9udC1mYW1pbHktc2Fucy1zZXJpZjogJ1JvYm90bycsICdzYW5zLXNlcmlmJztcclxuXHJcbiRoMS1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuNjI1OyAvLyAyNlxyXG4kaDItZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UgKiAxLjM3NTsgLy8gMjNcclxuJGgzLWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS4yNTsgLy8gMjBcclxuJGg0LWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS4xMjU7ICAvLyAxOFxyXG4kaDUtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UgKiAxLjA2MjU7IC8vIDE3XHJcbiRoNi1mb250LXNpemU6ICRmb250LXNpemUtYmFzZTtcclxuXHJcblxyXG4vLyBHbG9iYWwgU3R5bGVzXHJcblxyXG4kYm9yZGVyLXJhZGl1czogMHB4O1xyXG4kYm9yZGVyLXJhZGl1cy1sZzogJGJvcmRlci1yYWRpdXM7XHJcbiRib3JkZXItcmFkaXVzLXNtOiAkYm9yZGVyLXJhZGl1cztcclxuXHJcbi8vIEZvcm1zXHJcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYmc6ICR3aGl0ZTtcclxuXHJcbi8vIEJhZGdlc1xyXG4kYmFkZ2UtcGFkZGluZy15OiAuNWVtO1xyXG4kYmFkZ2UtcGFkZGluZy14OiAuOGVtO1xyXG4kYmFkZ2UtcGlsbC1wYWRkaW5nLXg6IDEuMmVtO1xyXG4iXX0= */\"","import { Component, Input, OnInit, AfterViewChecked } from '@angular/core';\r\nimport { Router, NavigationEnd } from '@angular/router';\r\n\r\n@Component({\r\n\tselector: 'main-nav-link',\r\n\ttemplateUrl: './link.component.html',\r\n\tstyleUrls: ['./link.component.scss']\r\n})\r\nexport class LinkComponent implements OnInit, AfterViewChecked {\r\n\r\n\t@Input() route: string;\r\n\t@Input() icon: string;\r\n\t@Input() text: string;\r\n\r\n\tcurrentURL: string = ''\r\n\r\n\tconstructor(private router: Router) {\r\n\t\trouter.events.subscribe((val) => {\r\n\t\t\tif (val instanceof NavigationEnd) {\r\n\t\t\t\tthis.currentURL = ''\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t}\r\n\r\n\tngAfterViewChecked() {\r\n\t\tif (!this.currentURL) {\r\n\t\t\tsetTimeout(() => this.currentURL = this.router.url)\r\n\t\t}\r\n\t}\r\n\r\n}\r\n","import { Role } from '@/models/role';\r\n\r\nexport const MainNavItems = [\r\n\t{\r\n\t\ticon: \"fas fa-columns\",\r\n\t\troute: \"/dashboard\",\r\n\t\ttext: \"Dashboard\",\r\n\t\tvisible: true,\r\n\t\tisCollapsed: true,\r\n\t\troles: [Role.Admin, Role.Supervisor, Role.CrewLeader],\r\n\t\tchildren: []\r\n\t},\r\n\t{\r\n\t\ticon: \"fas fa-hammer\",\r\n\t\troute: \"\",\r\n\t\ttext: \"Builder Jobs\",\r\n\t\tvisible: \"\",\r\n\t\tisCollapsed: true,\r\n\t\troles: [Role.Admin, Role.Supervisor, Role.CrewLeader],\r\n\t\tchildren: [\r\n\t\t\t{\r\n\t\t\t\troute: \"/builder-jobs/add\",\r\n\t\t\t\ttext: \"Add Builder Job\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: \"/builder-jobs/view\",\r\n\t\t\t\ttext: \"View Builder Jobs\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin, Role.Supervisor, Role.CrewLeader]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: \"/builder-jobs/calendar\",\r\n\t\t\t\ttext: \"View Calendar\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t roles: [Role.Admin, Role.Supervisor, Role.CrewLeader]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: \"/builder-jobs/mycalendar\",\r\n\t\t\t\ttext: \"View My Calendar\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t roles: [Role.Admin, Role.Supervisor, Role.CrewLeader]\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\ticon: \"fas fa-home\",\r\n\t\troute: \"#\",\r\n\t\ttext: \"Re-Roofs\",\r\n\t\tvisible: true,\r\n\t\tisCollapsed: true,\r\n\t\troles: [Role.Admin, Role.Supervisor, Role.CrewLeader],\r\n\t\tchildren: [\r\n\t\t\t{\r\n\t\t\t\troute: \"/reroof-jobs/add\",\r\n\t\t\t\ttext: \"Add Re-Roof Estimate\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: \"/reroof-jobs/view\",\r\n\t\t\t\ttext: \"View Re-Roof Jobs\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin, Role.Supervisor, Role.CrewLeader]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: \"/reroof-jobs/calendar\",\r\n\t\t\t\ttext: \"View Calendar\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin, Role.Supervisor, Role.CrewLeader]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: \"/reroof-jobs/mycalendar\",\r\n\t\t\t\ttext: \"View My Calendar\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin, Role.Supervisor, Role.CrewLeader]\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\ticon: \"fas fa-cogs\",\r\n\t\troute: \"#\",\r\n\t\ttext: \"Repairs\",\r\n\t\tvisible: \"\",\r\n\t\tisCollapsed: true,\r\n\t\troles: [Role.Admin, Role.Supervisor, Role.CrewLeader],\r\n\t\tchildren: [\r\n\t\t\t{\r\n\t\t\t\troute: \"/repair-jobs/add\",\r\n\t\t\t\ttext: \"Add Repair Job\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: \"/repair-jobs/view\",\r\n\t\t\t\ttext: \"View Repair Jobs\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin, Role.Supervisor, Role.CrewLeader]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: \"/repair-jobs/calendar\",\r\n\t\t\t\ttext: \"View Calendar\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin, Role.Supervisor, Role.CrewLeader]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: \"/repair-jobs/mycalendar\",\r\n\t\t\t\ttext: \"View My Calendar\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin, Role.Supervisor, Role.CrewLeader]\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\ticon: \"fas fa-file-exclamation\",\r\n\t\troute: \"#\",\r\n\t\ttext: \"Warranty Services\",\r\n\t\tvisible: true,\r\n\t\tisCollapsed: true,\r\n\t\troles: [Role.Admin, Role.Supervisor, Role.CrewLeader],\r\n\t\tchildren: [\r\n\t\t\t{\r\n\t\t\t\troute: \"/warranty-jobs/add\",\r\n\t\t\t\ttext: \"Add Warranty Job\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: \"/warranty-jobs/view\",\r\n\t\t\t\ttext: \"View Warranty Jobs\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin, Role.Supervisor, Role.CrewLeader]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: \"/warranty-jobs/calendar\",\r\n\t\t\t\ttext: \"View Calendar\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin, Role.Supervisor, Role.CrewLeader]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: \"/warranty-jobs/mycalendar\",\r\n\t\t\t\ttext: \"View My Calendar\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin, Role.Supervisor, Role.CrewLeader]\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\ticon: \"fas fa-wrench\",\r\n\t\troute: \"#\",\r\n\t\ttext: \"Builders\",\r\n\t\tvisible: true,\r\n\t\tisCollapsed: true,\r\n\t\troles: [Role.Admin, Role.Supervisor],\r\n\t\tchildren: [\r\n\t\t\t{\r\n\t\t\t\troute: \"/builders/add\",\r\n\t\t\t\ttext: \"Add Builder\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: \"/builders/view\",\r\n\t\t\t\ttext: \"View Builders\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin, Role.Supervisor]\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\ticon: \"fas fa-home\",\r\n\t\troute: \"#\",\r\n\t\ttext: \"Models\",\r\n\t\tvisible: true,\r\n\t\tisCollapsed: true,\r\n\t\troles: [Role.Admin, Role.Supervisor],\r\n\t\tchildren: [\r\n\t\t\t{\r\n\t\t\t\troute: \"/models/add\",\r\n\t\t\t\ttext: \"Add Model\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: \"/models/view\",\r\n\t\t\t\ttext: \"View Models\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin, Role.Supervisor]\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\ticon: \"fas fa-building\",\r\n\t\troute: \"#\",\r\n\t\ttext: \"Communities\",\r\n\t\tvisible: true,\r\n\t\tisCollapsed: true,\r\n\t\troles: [Role.Admin, Role.Supervisor],\r\n\t\tchildren: [\r\n\t\t\t{\r\n\t\t\t\troute: \"/communities/add\",\r\n\t\t\t\ttext: \"Add Community\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: \"/communities/view\",\r\n\t\t\t\ttext: \"View Communities\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin, Role.Supervisor]\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\ticon: \"fas fa-users\",\r\n\t\troute: \"#\",\r\n\t\ttext: \"Contacts\",\r\n\t\tvisible: true,\r\n\t\tisCollapsed: true,\r\n\t\troles: [Role.Admin, Role.Supervisor],\r\n\t\tchildren: [\r\n\t\t\t{\r\n\t\t\t\troute: \"/contacts/add\",\r\n\t\t\t\ttext: \"Add Contact\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: \"/contacts/view\",\r\n\t\t\t\ttext: \"View Contacts\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin, Role.Supervisor]\r\n\t\t\t},\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\ticon: \"fas fa-users\",\r\n\t\troute: \"#\",\r\n\t\ttext: \"Employees\",\r\n\t\tvisible: true,\r\n\t\tisCollapsed: true,\r\n\t\troles: [Role.Admin, Role.Supervisor],\r\n\t\tchildren: [\r\n\t\t\t{\r\n\t\t\t\troute: \"/employees/add\",\r\n\t\t\t\ttext: \"Add Employee\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin, Role.Supervisor]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: \"/employees/view\",\r\n\t\t\t\ttext: \"View Employees\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin, Role.Supervisor]\r\n\t\t\t},\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\ticon: \"fas fa-exclamation-triangle\",\r\n\t\troute: \"#\",\r\n\t\ttext: \"Incidents\",\r\n\t\tvisible: true,\r\n\t\tisCollapsed: true,\r\n\t\troles: [Role.Admin, Role.Supervisor],\r\n\t\tchildren: [\r\n\t\t\t{\r\n\t\t\t\troute: \"/incidents/add\",\r\n\t\t\t\ttext: \"Add Incident\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin, Role.Supervisor]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: \"/incidents/view\",\r\n\t\t\t\ttext: \"View Incidents\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin, Role.Supervisor]\r\n\t\t\t},\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\ticon: \"fas fa-users\",\r\n\t\troute: \"#\",\r\n\t\ttext: \"Users\",\r\n\t\tvisible: true,\r\n\t\tisCollapsed: true,\r\n\t\troles: [Role.Admin],\r\n\t\tchildren: [\r\n\t\t\t{\r\n\t\t\t\troute: \"/users/add\",\r\n\t\t\t\ttext: \"Add User\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: \"/users/view\",\r\n\t\t\t\ttext: \"View Users\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin]\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\ticon: \"fas fa-clock\",\r\n\t\troute: \"#\",\r\n\t\ttext: \"Time\",\r\n\t\tvisible: true,\r\n\t\tisCollapsed: true,\r\n\t\troles: [Role.Admin, Role.Supervisor, Role.CrewLeader],\r\n\t\tchildren: [\r\n\t\t\t{\r\n\t\t\t\troute: \"/time-entries/add\",\r\n\t\t\t\ttext: \"Add Time Entry\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin, Role.Supervisor, Role.CrewLeader]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: \"/time-entries/view\",\r\n\t\t\t\ttext: \"View Time Entries\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\troles: [Role.Admin, Role.Supervisor, Role.CrewLeader]\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\ticon: \"fas fa-exclamation-triangle\",\r\n\t\troute: \"#\",\r\n\t\ttext: \"Incidents\",\r\n\t\tvisible: true,\r\n\t\tisCollapsed: true,\r\n\t\tchildren: [\r\n\t\t\t{\r\n\t\t\t\troute: \"/incidents/add\",\r\n\t\t\t\ttext: \"Add Incident\",\r\n\t\t\t\tvisible: true\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: \"/incidents/view\",\r\n\t\t\t\ttext: \"View Incidents\",\r\n\t\t\t\tvisible: true\r\n\t\t\t}\r\n\t\t]\r\n\t}\r\n];\r\n","module.exports = \"\\r\\n\"","module.exports = \".link {\\n color: inherit;\\n cursor: pointer;\\n padding: 1rem 1rem 1rem calc(1rem + 1em);\\n position: relative;\\n transition: color 300ms ease-in-out;\\n}\\n.link:hover, .link:focus {\\n color: #fefefe;\\n}\\n.icon {\\n margin-right: 0.5em;\\n}\\n.active-parent {\\n box-shadow: inset 15px 0 0 -5px #0053AC;\\n}\\n.c-main-nav {\\n color: #BCC6CE;\\n}\\n.c-main-nav_menu_item {\\n border-bottom: 1px solid #525252;\\n position: relative;\\n}\\n.c-main-nav_menu_item::before {\\n background: #0053AC;\\n content: \\\"\\\";\\n height: 100%;\\n left: 0;\\n position: absolute;\\n top: 0px;\\n transition: width 300ms ease-in-out;\\n width: 0px;\\n}\\n.c-main-nav_menu_item.is-active::before {\\n width: 1em;\\n}\\n.c-main-nav_menu_item:first-child {\\n border-top: 1px solid #525252;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9tYWluLW5hdmlnYXRpb24vQzpcXFVzZXJzXFxEYW5pZWxcXERlc2t0b3BcXFByb2plY3RzXFxTdGVybGluZ1Jvb2Zpbmcvc3JjXFxhcHBcXGNvbXBvbmVudHNcXG1haW4tbmF2aWdhdGlvblxcbWFpbi1uYXZpZ2F0aW9uLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL21haW4tbmF2aWdhdGlvbi9tYWluLW5hdmlnYXRpb24uY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvbWFpbi1uYXZpZ2F0aW9uL0M6XFxVc2Vyc1xcRGFuaWVsXFxEZXNrdG9wXFxQcm9qZWN0c1xcU3RlcmxpbmdSb29maW5nL3NyY1xcc3R5bGVzXFxfdmFyaWFibGVzLnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvbWFpbi1uYXZpZ2F0aW9uL0M6XFxVc2Vyc1xcRGFuaWVsXFxEZXNrdG9wXFxQcm9qZWN0c1xcU3RlcmxpbmdSb29maW5nL3N0ZGluIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBO0VBQ0MsY0FBQTtFQUNBLGVBQUE7RUFDQSx3Q0FBQTtFQUNBLGtCQUFBO0VBQ0EsbUNBQUE7QUNERDtBREdDO0VBRUMsY0VKTTtBREVSO0FETUE7RUFDQyxtQkFBQTtBQ0hEO0FETUE7RUFDQyx1Q0FBQTtBQ0hEO0FFVkE7RUFDQyxjREhtQjtBRGdCcEI7QUVURTtFQUNDLGdDQVJnQjtFQVNoQixrQkFBQTtBRldIO0FFVEc7RUFDQyxtQkRURztFQ1VILFdBQUE7RUFDQSxZQUFBO0VBQ0EsT0FBQTtFQUNBLGtCQUFBO0VBQ0EsUUFBQTtFQUNBLG1DQUFBO0VBQ0EsVUFBQTtBRldKO0FFUkc7RUFDQyxVQUFBO0FGVUo7QUVQRztFQUNDLDZCQTNCZTtBRm9DbkIiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL21haW4tbmF2aWdhdGlvbi9tYWluLW5hdmlnYXRpb24uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICdjb21wb25lbnQtaGVhZGVyJztcclxuXHJcbi5saW5rIHtcclxuXHRjb2xvcjogaW5oZXJpdDtcclxuXHRjdXJzb3I6IHBvaW50ZXI7XHJcblx0cGFkZGluZzogMXJlbSAxcmVtIDFyZW0gY2FsYygxcmVtICsgMWVtKTtcclxuXHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0dHJhbnNpdGlvbjogY29sb3IgMzAwbXMgZWFzZS1pbi1vdXQ7XHJcblxyXG5cdCY6aG92ZXIsXHJcblx0Jjpmb2N1cyB7XHJcblx0XHRjb2xvcjogJHdoaXRlO1xyXG5cdH1cclxufVxyXG5cclxuLmljb24ge1xyXG5cdG1hcmdpbi1yaWdodDogLjVlbTtcclxufVxyXG5cclxuLmFjdGl2ZS1wYXJlbnQge1xyXG5cdGJveC1zaGFkb3c6IGluc2V0IDE1cHggMCAwIC01cHggIzAwNTNBQztcclxufVxyXG4iLCIubGluayB7XG4gIGNvbG9yOiBpbmhlcml0O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHBhZGRpbmc6IDFyZW0gMXJlbSAxcmVtIGNhbGMoMXJlbSArIDFlbSk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdHJhbnNpdGlvbjogY29sb3IgMzAwbXMgZWFzZS1pbi1vdXQ7XG59XG4ubGluazpob3ZlciwgLmxpbms6Zm9jdXMge1xuICBjb2xvcjogI2ZlZmVmZTtcbn1cblxuLmljb24ge1xuICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xufVxuXG4uYWN0aXZlLXBhcmVudCB7XG4gIGJveC1zaGFkb3c6IGluc2V0IDE1cHggMCAwIC01cHggIzAwNTNBQztcbn1cblxuLmMtbWFpbi1uYXYge1xuICBjb2xvcjogI0JDQzZDRTtcbn1cbi5jLW1haW4tbmF2X21lbnVfaXRlbSB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjNTI1MjUyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uYy1tYWluLW5hdl9tZW51X2l0ZW06OmJlZm9yZSB7XG4gIGJhY2tncm91bmQ6ICMwMDUzQUM7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGhlaWdodDogMTAwJTtcbiAgbGVmdDogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDBweDtcbiAgdHJhbnNpdGlvbjogd2lkdGggMzAwbXMgZWFzZS1pbi1vdXQ7XG4gIHdpZHRoOiAwcHg7XG59XG4uYy1tYWluLW5hdl9tZW51X2l0ZW0uaXMtYWN0aXZlOjpiZWZvcmUge1xuICB3aWR0aDogMWVtO1xufVxuLmMtbWFpbi1uYXZfbWVudV9pdGVtOmZpcnN0LWNoaWxkIHtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICM1MjUyNTI7XG59IiwiLy8gQ3VzdG9tIENvbG9yc1xyXG5cclxuJGRhcmstZ3JheTogIzI0MjQyNDtcclxuJG1lZGl1bS1kYXJrLWdyYXk6ICM2MTYxNjE7XHJcbiRtZWRpdW0tZ3JheTogIzUyNTI1MjtcclxuJG1lZGl1bS1saWdodC1ncmF5OiAjQkNDNkNFO1xyXG4kbGlnaHQtZ3JheTogI0U4RThFODtcclxuJHdoaXRlOiAjZmVmZWZlO1xyXG4kYmx1ZTogIzAwNTNBQztcclxuJGRhcmstYmx1ZTogIzUxNzA4RDtcclxuXHJcbiRwcmltYXJ5OiAjMDA1OEE4O1xyXG4kc2Vjb25kYXJ5OiAjMDA1OEE4O1xyXG4keWVsbG93OiAjRkZDMjM2O1xyXG4kb3JhbmdlOiAjRkY5NTJCO1xyXG4kaW5mbzogI2UyZTNlNTtcclxuXHJcbi8vIEFwcCBWYXJpYWJsZXNcclxuJGNvbnRhaW5lci1tYXgtd2lkdGg6IDEyMDBweDtcclxuJHNpZGViYXItYmc6ICRkYXJrLWdyYXk7XHJcbiRzaWRlYmFyLXdpZHRoOiAyNTBweDtcclxuXHJcbi8vIEJvb3RzdHJhcCBWYXJpYWJsZXNcclxuXHJcbi8vIExheW91dFxyXG5cclxuJGdyaWQtYnJlYWtwb2ludHM6IChcclxuICB4czogMCxcclxuICBzbTogNDgwcHgsXHJcbiAgbWQ6IDc2OHB4LFxyXG4gIGxnOiA5OTJweCxcclxuICB4bDogMTIwMHB4XHJcbik7XHJcblxyXG4kYm9keS1iZzogJGxpZ2h0LWdyYXk7XHJcblxyXG4vLyBUeXBvZ3JhcGh5XHJcbiRmb250LXNpemUtYmFzZTogMXJlbTtcclxuXHJcbiRmb250LWZhbWlseS1zYW5zLXNlcmlmOiAnUm9ib3RvJywgJ3NhbnMtc2VyaWYnO1xyXG5cclxuJGgxLWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS42MjU7IC8vIDI2XHJcbiRoMi1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuMzc1OyAvLyAyM1xyXG4kaDMtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UgKiAxLjI1OyAvLyAyMFxyXG4kaDQtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UgKiAxLjEyNTsgIC8vIDE4XHJcbiRoNS1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuMDYyNTsgLy8gMTdcclxuJGg2LWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlO1xyXG5cclxuXHJcbi8vIEdsb2JhbCBTdHlsZXNcclxuXHJcbiRib3JkZXItcmFkaXVzOiAwcHg7XHJcbiRib3JkZXItcmFkaXVzLWxnOiAkYm9yZGVyLXJhZGl1cztcclxuJGJvcmRlci1yYWRpdXMtc206ICRib3JkZXItcmFkaXVzO1xyXG5cclxuLy8gRm9ybXNcclxuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1iZzogJHdoaXRlO1xyXG5cclxuLy8gQmFkZ2VzXHJcbiRiYWRnZS1wYWRkaW5nLXk6IC41ZW07XHJcbiRiYWRnZS1wYWRkaW5nLXg6IC44ZW07XHJcbiRiYWRnZS1waWxsLXBhZGRpbmcteDogMS4yZW07XHJcbiIsIkBpbXBvcnQgJ2NvbXBvbmVudC1oZWFkZXInO1xyXG5AaW1wb3J0ICdsaW5rL2xpbmsuY29tcG9uZW50JztcclxuXHJcbiRtZW51LWl0ZW0tYm9yZGVyLXdpZHRoOiAxcHg7XHJcbiRtZW51LWl0ZW0tYm9yZGVyLWNvbG9yOiAkbWVkaXVtLWdyYXk7XHJcbiRtZW51LWl0ZW0tYm9yZGVyOiAkbWVudS1pdGVtLWJvcmRlci13aWR0aCBzb2xpZCAkbWVudS1pdGVtLWJvcmRlci1jb2xvcjtcclxuXHJcbi5jLW1haW4tbmF2IHtcclxuXHRjb2xvcjogJG1lZGl1bS1saWdodC1ncmF5O1xyXG5cclxuXHQmX21lbnUge1xyXG5cclxuXHRcdCZfaXRlbSB7XHJcblx0XHRcdGJvcmRlci1ib3R0b206ICRtZW51LWl0ZW0tYm9yZGVyO1xyXG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblxyXG5cdFx0XHQmOjpiZWZvcmUge1xyXG5cdFx0XHRcdGJhY2tncm91bmQ6ICRibHVlO1xyXG5cdFx0XHRcdGNvbnRlbnQ6ICcnO1xyXG5cdFx0XHRcdGhlaWdodDogMTAwJTtcclxuXHRcdFx0XHRsZWZ0OiAwO1xyXG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdFx0XHR0b3A6IDBweDtcclxuXHRcdFx0XHR0cmFuc2l0aW9uOiB3aWR0aCAzMDBtcyBlYXNlLWluLW91dDtcclxuXHRcdFx0XHR3aWR0aDogMHB4O1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQmLmlzLWFjdGl2ZTo6YmVmb3JlIHtcclxuXHRcdFx0XHR3aWR0aDogMWVtO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQmOmZpcnN0LWNoaWxkIHtcclxuXHRcdFx0XHRib3JkZXItdG9wOiAkbWVudS1pdGVtLWJvcmRlcjtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHR9XHJcbn1cclxuIl19 */\"","import { Component, OnInit, ElementRef, ViewChild, AfterViewChecked, AfterViewInit } from '@angular/core';\r\n\r\nimport { MainNavItems } from './main-navigation-items';\r\n\r\nimport { AuthService } from '@/services/auth/auth.service';\r\n\r\nimport { User } from '@/models/user';\r\n\r\n@Component({\r\n\tselector: 'main-navigation',\r\n\ttemplateUrl: './main-navigation.component.html',\r\n\tstyleUrls: ['./main-navigation.component.scss']\r\n})\r\n\r\nexport class MainNavigationComponent implements OnInit, AfterViewInit {\r\n\t@ViewChild('activeSubNav')\r\n\tactiveSubNav: ElementRef\r\n\r\n\tmenuItems = [];\r\n\tcurrentUser: User\r\n\r\n\tconstructor(\r\n\t\tprivate authService: AuthService\r\n\t) {\r\n\t\tthis.menuItems = MainNavItems;\r\n\t\tthis.authService.currentUser.subscribe(user => this.currentUser = user);\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tconsole.log(this.currentUser)\r\n\t}\r\n\r\n\tngAfterViewInit() {\r\n\r\n\t}\r\n\r\n\tcollapseState(value: Event, item) {\r\n\t\tthis.menuItems.forEach( menuItem => menuItem.isCollapsed = true )\r\n\t\titem.isCollapsed = value;\r\n\t}\r\n\r\n\tlogout() {\r\n\t\tthis.authService.logout();\r\n\t}\r\n}\r\n","module.exports = \"
\\r\\n\\t\\r\\n
\\r\\n\"","module.exports = \".sub {\\n background: #525252;\\n font-size: 0.9em;\\n}\\n\\n.menu {\\n border-left: 1px solid #6c757d;\\n margin-left: calc(1.25rem + 1em);\\n padding: 0.5rem 0;\\n}\\n\\n.link {\\n color: inherit;\\n}\\n\\n.link:hover, .link:focus {\\n color: #fefefe;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9tYWluLW5hdmlnYXRpb24vc3ViLW1lbnUvQzpcXFVzZXJzXFxEYW5pZWxcXERlc2t0b3BcXFByb2plY3RzXFxTdGVybGluZ1Jvb2Zpbmcvc3JjXFxhcHBcXGNvbXBvbmVudHNcXG1haW4tbmF2aWdhdGlvblxcc3ViLW1lbnVcXHN1Yi1tZW51LmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL21haW4tbmF2aWdhdGlvbi9zdWItbWVudS9DOlxcVXNlcnNcXERhbmllbFxcRGVza3RvcFxcUHJvamVjdHNcXFN0ZXJsaW5nUm9vZmluZy9zcmNcXHN0eWxlc1xcX3ZhcmlhYmxlcy5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL21haW4tbmF2aWdhdGlvbi9zdWItbWVudS9zdWItbWVudS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNDLG1CQ0NhO0VEQWIsZ0JBQUE7QUVERDs7QUZJQTtFQUNDLDhCQUFBO0VBQ0EsZ0NBQUE7RUFDQSxpQkFBQTtBRUREOztBRklBO0VBQ0MsY0FBQTtBRUREOztBRkdDO0VBRUMsY0NYTTtBQ1NSIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9tYWluLW5hdmlnYXRpb24vc3ViLW1lbnUvc3ViLW1lbnUuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICdjb21wb25lbnQtaGVhZGVyJztcclxuXHJcbi5zdWIge1xyXG5cdGJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheTtcclxuXHRmb250LXNpemU6IC45ZW07XHJcblxyXG59XHJcbi5tZW51IHtcclxuXHRib3JkZXItbGVmdDogMXB4IHNvbGlkICRncmF5LTYwMDtcclxuXHRtYXJnaW4tbGVmdDogY2FsYygxLjI1cmVtICsgMWVtKTtcclxuXHRwYWRkaW5nOiAuNXJlbSAwO1xyXG59XHJcblxyXG4ubGluayB7XHJcblx0Y29sb3I6IGluaGVyaXQ7XHJcblxyXG5cdCY6aG92ZXIsXHJcblx0Jjpmb2N1cyB7XHJcblx0XHRjb2xvcjogJHdoaXRlO1xyXG5cdH1cclxufVxyXG4iLCIvLyBDdXN0b20gQ29sb3JzXHJcblxyXG4kZGFyay1ncmF5OiAjMjQyNDI0O1xyXG4kbWVkaXVtLWRhcmstZ3JheTogIzYxNjE2MTtcclxuJG1lZGl1bS1ncmF5OiAjNTI1MjUyO1xyXG4kbWVkaXVtLWxpZ2h0LWdyYXk6ICNCQ0M2Q0U7XHJcbiRsaWdodC1ncmF5OiAjRThFOEU4O1xyXG4kd2hpdGU6ICNmZWZlZmU7XHJcbiRibHVlOiAjMDA1M0FDO1xyXG4kZGFyay1ibHVlOiAjNTE3MDhEO1xyXG5cclxuJHByaW1hcnk6ICMwMDU4QTg7XHJcbiRzZWNvbmRhcnk6ICMwMDU4QTg7XHJcbiR5ZWxsb3c6ICNGRkMyMzY7XHJcbiRvcmFuZ2U6ICNGRjk1MkI7XHJcbiRpbmZvOiAjZTJlM2U1O1xyXG5cclxuLy8gQXBwIFZhcmlhYmxlc1xyXG4kY29udGFpbmVyLW1heC13aWR0aDogMTIwMHB4O1xyXG4kc2lkZWJhci1iZzogJGRhcmstZ3JheTtcclxuJHNpZGViYXItd2lkdGg6IDI1MHB4O1xyXG5cclxuLy8gQm9vdHN0cmFwIFZhcmlhYmxlc1xyXG5cclxuLy8gTGF5b3V0XHJcblxyXG4kZ3JpZC1icmVha3BvaW50czogKFxyXG4gIHhzOiAwLFxyXG4gIHNtOiA0ODBweCxcclxuICBtZDogNzY4cHgsXHJcbiAgbGc6IDk5MnB4LFxyXG4gIHhsOiAxMjAwcHhcclxuKTtcclxuXHJcbiRib2R5LWJnOiAkbGlnaHQtZ3JheTtcclxuXHJcbi8vIFR5cG9ncmFwaHlcclxuJGZvbnQtc2l6ZS1iYXNlOiAxcmVtO1xyXG5cclxuJGZvbnQtZmFtaWx5LXNhbnMtc2VyaWY6ICdSb2JvdG8nLCAnc2Fucy1zZXJpZic7XHJcblxyXG4kaDEtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UgKiAxLjYyNTsgLy8gMjZcclxuJGgyLWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS4zNzU7IC8vIDIzXHJcbiRoMy1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuMjU7IC8vIDIwXHJcbiRoNC1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuMTI1OyAgLy8gMThcclxuJGg1LWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS4wNjI1OyAvLyAxN1xyXG4kaDYtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7XHJcblxyXG5cclxuLy8gR2xvYmFsIFN0eWxlc1xyXG5cclxuJGJvcmRlci1yYWRpdXM6IDBweDtcclxuJGJvcmRlci1yYWRpdXMtbGc6ICRib3JkZXItcmFkaXVzO1xyXG4kYm9yZGVyLXJhZGl1cy1zbTogJGJvcmRlci1yYWRpdXM7XHJcblxyXG4vLyBGb3Jtc1xyXG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWJnOiAkd2hpdGU7XHJcblxyXG4vLyBCYWRnZXNcclxuJGJhZGdlLXBhZGRpbmcteTogLjVlbTtcclxuJGJhZGdlLXBhZGRpbmcteDogLjhlbTtcclxuJGJhZGdlLXBpbGwtcGFkZGluZy14OiAxLjJlbTtcclxuIiwiLnN1YiB7XG4gIGJhY2tncm91bmQ6ICM1MjUyNTI7XG4gIGZvbnQtc2l6ZTogMC45ZW07XG59XG5cbi5tZW51IHtcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjNmM3NTdkO1xuICBtYXJnaW4tbGVmdDogY2FsYygxLjI1cmVtICsgMWVtKTtcbiAgcGFkZGluZzogMC41cmVtIDA7XG59XG5cbi5saW5rIHtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG4ubGluazpob3ZlciwgLmxpbms6Zm9jdXMge1xuICBjb2xvcjogI2ZlZmVmZTtcbn0iXX0= */\"","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { Router, NavigationEnd } from '@angular/router';\r\n\r\nimport { User } from '@/models/user';\r\n\r\nimport { AuthService } from '@/services/auth/auth.service';\r\n\r\n@Component({\r\n selector: 'main-nav-sub-menu',\r\n templateUrl: './sub-menu.component.html',\r\n styleUrls: ['./sub-menu.component.scss']\r\n})\r\nexport class SubMenuComponent implements OnInit {\r\n\r\n currentUser: User\r\n\r\n\t@Input() children : any[];\r\n\t@Input() id: string;\r\n\t@Input() isCollapsed: boolean;\r\n\r\n\t@Output() isCollapsedChange = new EventEmitter();\r\n\r\n constructor(\r\n\t\tprivate authService: AuthService,\r\n\t\tprivate router: Router\r\n\t)\r\n\t{\r\n\r\n\t\t// Ensures that sub menu stays open on refresh\r\n\t\trouter.events.subscribe((val) => {\r\n\t\t\tif (val instanceof NavigationEnd) {\r\n\t\t\t\tif(this.children) {\r\n\t\t\t\t\tconst isParent = this.children.find(child => child.route === this.router.url)\r\n\t\t\t\t\tif(isParent && this.isCollapsed) {\r\n\t\t\t\t\t\tthis.toggleCollapse()\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n this.authService.currentUser.subscribe(user => this.currentUser = user);\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n\ttoggleCollapse() {\r\n\t\tthis.isCollapsed = !this.isCollapsed;\r\n\t\tthis.isCollapsedChange.emit(this.isCollapsed);\r\n\t}\r\n}\r\n","module.exports = \"
\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t

Sterling Roofing

\\r\\n\\t\\t\\r\\n\\t
\\r\\n
\\r\\n\"","module.exports = \":host {\\n background-color: #242424;\\n color: #BCC6CE;\\n display: block;\\n padding: 0.5rem 0.9375rem;\\n position: fixed;\\n top: 0;\\n width: 100%;\\n z-index: 3;\\n}\\n:host.logged-out {\\n display: none;\\n}\\n@media screen and (min-width: 800px) {\\n :host {\\n display: none;\\n }\\n}\\n:host .c-mobile-header_container {\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n}\\n:host .c-mobile-header--logged-out {\\n display: none;\\n}\\n:host .c-mobile-header button {\\n background: none;\\n border: 0;\\n padding: 0;\\n}\\n:host .c-mobile-header button:focus {\\n outline: none;\\n}\\n:host .c-mobile-header button i {\\n color: #fefefe;\\n font-size: 2em;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9tb2JpbGUtaGVhZGVyL0M6XFxVc2Vyc1xcRGFuaWVsXFxEZXNrdG9wXFxQcm9qZWN0c1xcU3RlcmxpbmdSb29maW5nL3NyY1xcYXBwXFxjb21wb25lbnRzXFxtb2JpbGUtaGVhZGVyXFxtb2JpbGUtaGVhZGVyLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL21vYmlsZS1oZWFkZXIvQzpcXFVzZXJzXFxEYW5pZWxcXERlc2t0b3BcXFByb2plY3RzXFxTdGVybGluZ1Jvb2Zpbmcvc3JjXFxzdHlsZXNcXF92YXJpYWJsZXMuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9tb2JpbGUtaGVhZGVyL21vYmlsZS1oZWFkZXIuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDQyx5QkNEVztFREVYLGNDQ21CO0VEQW5CLGNBQUE7RUFDQSx5QkFBQTtFQUNBLGVBQUE7RUFDQSxNQUFBO0VBQ0EsV0FBQTtFQUNBLFVBQUE7QUVERDtBRkdDO0VBQ0MsYUFBQTtBRURGO0FGSUM7RUFkRDtJQWVFLGFBQUE7RUVEQTtBQUNGO0FGS0U7RUFDQyxhQUFBO0VBQ0EsbUJBQUE7RUFDQSw4QkFBQTtBRUhIO0FGTUU7RUFDQyxhQUFBO0FFSkg7QUZPRTtFQUNDLGdCQUFBO0VBQ0EsU0FBQTtFQUNBLFVBQUE7QUVMSDtBRk9HO0VBQ0MsYUFBQTtBRUxKO0FGUUc7RUFDQyxjQ25DSTtFRG9DSixjQUFBO0FFTkoiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL21vYmlsZS1oZWFkZXIvbW9iaWxlLWhlYWRlci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJ2NvbXBvbmVudC1oZWFkZXInO1xyXG5cclxuOmhvc3Qge1xyXG5cdGJhY2tncm91bmQtY29sb3I6ICRzaWRlYmFyLWJnO1xyXG5cdGNvbG9yOiAkbWVkaXVtLWxpZ2h0LWdyYXk7XHJcblx0ZGlzcGxheTogYmxvY2s7XHJcblx0cGFkZGluZzogLjVyZW0gcmVtLWNhbGMoMTUpO1xyXG5cdHBvc2l0aW9uOiBmaXhlZDtcclxuXHR0b3A6IDA7XHJcblx0d2lkdGg6IDEwMCU7XHJcblx0ei1pbmRleDogMztcclxuXHJcblx0Ji5sb2dnZWQtb3V0IHtcclxuXHRcdGRpc3BsYXk6IG5vbmU7XHJcblx0fVxyXG5cclxuXHRAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjgwMHB4KSB7XHJcblx0XHRkaXNwbGF5OiBub25lO1xyXG5cdH1cclxuXHJcblx0LmMtbW9iaWxlLWhlYWRlciB7XHJcblxyXG5cdFx0Jl9jb250YWluZXIge1xyXG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xyXG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcblx0XHR9XHJcblxyXG5cdFx0Ji0tbG9nZ2VkLW91dCB7XHJcblx0XHRcdGRpc3BsYXk6IG5vbmU7XHJcblx0XHR9XHJcblxyXG5cdFx0YnV0dG9uIHtcclxuXHRcdFx0YmFja2dyb3VuZDogbm9uZTtcclxuXHRcdFx0Ym9yZGVyOiAwO1xyXG5cdFx0XHRwYWRkaW5nOiAwO1xyXG5cclxuXHRcdFx0Jjpmb2N1cyB7XHJcblx0XHRcdFx0b3V0bGluZTogbm9uZTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aSB7XHJcblx0XHRcdFx0Y29sb3I6ICR3aGl0ZTtcclxuXHRcdFx0XHRmb250LXNpemU6IDJlbTtcclxuXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cclxufVxyXG4iLCIvLyBDdXN0b20gQ29sb3JzXHJcblxyXG4kZGFyay1ncmF5OiAjMjQyNDI0O1xyXG4kbWVkaXVtLWRhcmstZ3JheTogIzYxNjE2MTtcclxuJG1lZGl1bS1ncmF5OiAjNTI1MjUyO1xyXG4kbWVkaXVtLWxpZ2h0LWdyYXk6ICNCQ0M2Q0U7XHJcbiRsaWdodC1ncmF5OiAjRThFOEU4O1xyXG4kd2hpdGU6ICNmZWZlZmU7XHJcbiRibHVlOiAjMDA1M0FDO1xyXG4kZGFyay1ibHVlOiAjNTE3MDhEO1xyXG5cclxuJHByaW1hcnk6ICMwMDU4QTg7XHJcbiRzZWNvbmRhcnk6ICMwMDU4QTg7XHJcbiR5ZWxsb3c6ICNGRkMyMzY7XHJcbiRvcmFuZ2U6ICNGRjk1MkI7XHJcbiRpbmZvOiAjZTJlM2U1O1xyXG5cclxuLy8gQXBwIFZhcmlhYmxlc1xyXG4kY29udGFpbmVyLW1heC13aWR0aDogMTIwMHB4O1xyXG4kc2lkZWJhci1iZzogJGRhcmstZ3JheTtcclxuJHNpZGViYXItd2lkdGg6IDI1MHB4O1xyXG5cclxuLy8gQm9vdHN0cmFwIFZhcmlhYmxlc1xyXG5cclxuLy8gTGF5b3V0XHJcblxyXG4kZ3JpZC1icmVha3BvaW50czogKFxyXG4gIHhzOiAwLFxyXG4gIHNtOiA0ODBweCxcclxuICBtZDogNzY4cHgsXHJcbiAgbGc6IDk5MnB4LFxyXG4gIHhsOiAxMjAwcHhcclxuKTtcclxuXHJcbiRib2R5LWJnOiAkbGlnaHQtZ3JheTtcclxuXHJcbi8vIFR5cG9ncmFwaHlcclxuJGZvbnQtc2l6ZS1iYXNlOiAxcmVtO1xyXG5cclxuJGZvbnQtZmFtaWx5LXNhbnMtc2VyaWY6ICdSb2JvdG8nLCAnc2Fucy1zZXJpZic7XHJcblxyXG4kaDEtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UgKiAxLjYyNTsgLy8gMjZcclxuJGgyLWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS4zNzU7IC8vIDIzXHJcbiRoMy1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuMjU7IC8vIDIwXHJcbiRoNC1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuMTI1OyAgLy8gMThcclxuJGg1LWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS4wNjI1OyAvLyAxN1xyXG4kaDYtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7XHJcblxyXG5cclxuLy8gR2xvYmFsIFN0eWxlc1xyXG5cclxuJGJvcmRlci1yYWRpdXM6IDBweDtcclxuJGJvcmRlci1yYWRpdXMtbGc6ICRib3JkZXItcmFkaXVzO1xyXG4kYm9yZGVyLXJhZGl1cy1zbTogJGJvcmRlci1yYWRpdXM7XHJcblxyXG4vLyBGb3Jtc1xyXG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWJnOiAkd2hpdGU7XHJcblxyXG4vLyBCYWRnZXNcclxuJGJhZGdlLXBhZGRpbmcteTogLjVlbTtcclxuJGJhZGdlLXBhZGRpbmcteDogLjhlbTtcclxuJGJhZGdlLXBpbGwtcGFkZGluZy14OiAxLjJlbTtcclxuIiwiOmhvc3Qge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjQyNDI0O1xuICBjb2xvcjogI0JDQzZDRTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDAuNXJlbSAwLjkzNzVyZW07XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgei1pbmRleDogMztcbn1cbjpob3N0LmxvZ2dlZC1vdXQge1xuICBkaXNwbGF5OiBub25lO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogODAwcHgpIHtcbiAgOmhvc3Qge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbjpob3N0IC5jLW1vYmlsZS1oZWFkZXJfY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuOmhvc3QgLmMtbW9iaWxlLWhlYWRlci0tbG9nZ2VkLW91dCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG46aG9zdCAuYy1tb2JpbGUtaGVhZGVyIGJ1dHRvbiB7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogMDtcbiAgcGFkZGluZzogMDtcbn1cbjpob3N0IC5jLW1vYmlsZS1oZWFkZXIgYnV0dG9uOmZvY3VzIHtcbiAgb3V0bGluZTogbm9uZTtcbn1cbjpob3N0IC5jLW1vYmlsZS1oZWFkZXIgYnV0dG9uIGkge1xuICBjb2xvcjogI2ZlZmVmZTtcbiAgZm9udC1zaXplOiAyZW07XG59Il19 */\"","import { Component, OnInit, Output, EventEmitter, Input, OnChanges } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mobile-header',\r\n templateUrl: './mobile-header.component.html',\r\n styleUrls: ['./mobile-header.component.scss']\r\n})\r\nexport class MobileHeaderComponent implements OnInit, OnChanges {\r\n\r\n\tmenuOpen: boolean = false;\r\n\t@Input('toggleIcon') toggleIcon: boolean = false;\r\n\t@Output() menuToggle = new EventEmitter();\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n\t}\r\n\r\n\tngOnChanges() {\r\n\t\tthis.menuOpen = this.toggleIcon;\r\n\t}\r\n\r\n\ttoggleSidebar(event) {\r\n\t\tevent.stopPropagation();\r\n\t\tthis.menuToggle.emit(this.menuOpen = !this.menuOpen);\r\n\t\treturn false;\r\n\t}\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\t\\r\\n\\t\\r\\n\\t\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

Translate

\\r\\n \\r\\n
\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n

\\r\\n Note: This can take a couple of seconds to complete\\r\\n

\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\"","module.exports = \".c-sidebar {\\n background-color: #242424;\\n color: #BCC6CE;\\n height: 100%;\\n overflow-y: auto;\\n padding: 2.5rem 0;\\n position: fixed;\\n top: 0;\\n left: 0;\\n width: 250px;\\n z-index: 4;\\n}\\n@media screen and (max-width: 800px) {\\n .c-sidebar {\\n transform: translateX(-250px);\\n transition: 0.1s all ease-in;\\n padding-top: 0;\\n }\\n}\\n.c-sidebar.is-open {\\n transform: translateX(0px);\\n}\\n.c-sidebar a {\\n color: inherit;\\n}\\n.c-sidebar_profile {\\n margin-bottom: 1rem;\\n text-align: center;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9zaWRlYmFyL0M6XFxVc2Vyc1xcRGFuaWVsXFxEZXNrdG9wXFxQcm9qZWN0c1xcU3RlcmxpbmdSb29maW5nL3NyY1xcYXBwXFxjb21wb25lbnRzXFxzaWRlYmFyXFxzaWRlYmFyLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL3NpZGViYXIvQzpcXFVzZXJzXFxEYW5pZWxcXERlc2t0b3BcXFByb2plY3RzXFxTdGVybGluZ1Jvb2Zpbmcvc3JjXFxzdHlsZXNcXF92YXJpYWJsZXMuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9zaWRlYmFyL3NpZGViYXIuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDQyx5QkNEVztFREVYLGNDQ21CO0VEQW5CLFlBQUE7RUFDQSxnQkFBQTtFQUNBLGlCQUFBO0VBQ0EsZUFBQTtFQUNBLE1BQUE7RUFDQSxPQUFBO0VBQ0EsWUNTZTtFRFJmLFVBQUE7QUVERDtBRkdDO0VBWkQ7SUFhRSw2QkFBQTtJQUNBLDRCQUFBO0lBQ0EsY0FBQTtFRUFBO0FBQ0Y7QUZFQztFQUNDLDBCQUFBO0FFQUY7QUZJQztFQUNDLGNBQUE7QUVGRjtBRktDO0VBQ0MsbUJBQUE7RUFDQSxrQkFBQTtBRUhGIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9zaWRlYmFyL3NpZGViYXIuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICdjb21wb25lbnQtaGVhZGVyJztcclxuXHJcbi5jLXNpZGViYXIge1xyXG5cdGJhY2tncm91bmQtY29sb3I6ICRzaWRlYmFyLWJnO1xyXG5cdGNvbG9yOiAkbWVkaXVtLWxpZ2h0LWdyYXk7XHJcblx0aGVpZ2h0OiAxMDAlO1xyXG5cdG92ZXJmbG93LXk6IGF1dG87XHJcblx0cGFkZGluZzogcmVtLWNhbGMoNDApIDA7XHJcblx0cG9zaXRpb246IGZpeGVkO1xyXG5cdHRvcDogMDtcclxuXHRsZWZ0OiAwO1xyXG5cdHdpZHRoOiAkc2lkZWJhci13aWR0aDtcclxuXHR6LWluZGV4OiA0O1xyXG5cclxuXHRAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4MDBweCkge1xyXG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yNTBweCk7XHJcblx0XHR0cmFuc2l0aW9uOiAuMXMgYWxsIGVhc2UtaW47XHJcblx0XHRwYWRkaW5nLXRvcDogMDtcclxuXHR9XHJcblxyXG5cdCYuaXMtb3BlbiB7XHJcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMHB4KTtcclxuXHJcblx0fVxyXG5cclxuXHRhIHtcclxuXHRcdGNvbG9yOiBpbmhlcml0O1xyXG5cdH1cclxuXHJcblx0Jl9wcm9maWxlIHtcclxuXHRcdG1hcmdpbi1ib3R0b206IDFyZW07XHJcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0fVxyXG5cclxufVxyXG5cclxuXHJcbiIsIi8vIEN1c3RvbSBDb2xvcnNcclxuXHJcbiRkYXJrLWdyYXk6ICMyNDI0MjQ7XHJcbiRtZWRpdW0tZGFyay1ncmF5OiAjNjE2MTYxO1xyXG4kbWVkaXVtLWdyYXk6ICM1MjUyNTI7XHJcbiRtZWRpdW0tbGlnaHQtZ3JheTogI0JDQzZDRTtcclxuJGxpZ2h0LWdyYXk6ICNFOEU4RTg7XHJcbiR3aGl0ZTogI2ZlZmVmZTtcclxuJGJsdWU6ICMwMDUzQUM7XHJcbiRkYXJrLWJsdWU6ICM1MTcwOEQ7XHJcblxyXG4kcHJpbWFyeTogIzAwNThBODtcclxuJHNlY29uZGFyeTogIzAwNThBODtcclxuJHllbGxvdzogI0ZGQzIzNjtcclxuJG9yYW5nZTogI0ZGOTUyQjtcclxuJGluZm86ICNlMmUzZTU7XHJcblxyXG4vLyBBcHAgVmFyaWFibGVzXHJcbiRjb250YWluZXItbWF4LXdpZHRoOiAxMjAwcHg7XHJcbiRzaWRlYmFyLWJnOiAkZGFyay1ncmF5O1xyXG4kc2lkZWJhci13aWR0aDogMjUwcHg7XHJcblxyXG4vLyBCb290c3RyYXAgVmFyaWFibGVzXHJcblxyXG4vLyBMYXlvdXRcclxuXHJcbiRncmlkLWJyZWFrcG9pbnRzOiAoXHJcbiAgeHM6IDAsXHJcbiAgc206IDQ4MHB4LFxyXG4gIG1kOiA3NjhweCxcclxuICBsZzogOTkycHgsXHJcbiAgeGw6IDEyMDBweFxyXG4pO1xyXG5cclxuJGJvZHktYmc6ICRsaWdodC1ncmF5O1xyXG5cclxuLy8gVHlwb2dyYXBoeVxyXG4kZm9udC1zaXplLWJhc2U6IDFyZW07XHJcblxyXG4kZm9udC1mYW1pbHktc2Fucy1zZXJpZjogJ1JvYm90bycsICdzYW5zLXNlcmlmJztcclxuXHJcbiRoMS1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuNjI1OyAvLyAyNlxyXG4kaDItZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UgKiAxLjM3NTsgLy8gMjNcclxuJGgzLWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS4yNTsgLy8gMjBcclxuJGg0LWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS4xMjU7ICAvLyAxOFxyXG4kaDUtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UgKiAxLjA2MjU7IC8vIDE3XHJcbiRoNi1mb250LXNpemU6ICRmb250LXNpemUtYmFzZTtcclxuXHJcblxyXG4vLyBHbG9iYWwgU3R5bGVzXHJcblxyXG4kYm9yZGVyLXJhZGl1czogMHB4O1xyXG4kYm9yZGVyLXJhZGl1cy1sZzogJGJvcmRlci1yYWRpdXM7XHJcbiRib3JkZXItcmFkaXVzLXNtOiAkYm9yZGVyLXJhZGl1cztcclxuXHJcbi8vIEZvcm1zXHJcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYmc6ICR3aGl0ZTtcclxuXHJcbi8vIEJhZGdlc1xyXG4kYmFkZ2UtcGFkZGluZy15OiAuNWVtO1xyXG4kYmFkZ2UtcGFkZGluZy14OiAuOGVtO1xyXG4kYmFkZ2UtcGlsbC1wYWRkaW5nLXg6IDEuMmVtO1xyXG4iLCIuYy1zaWRlYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI0MjQyNDtcbiAgY29sb3I6ICNCQ0M2Q0U7XG4gIGhlaWdodDogMTAwJTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgcGFkZGluZzogMi41cmVtIDA7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMjUwcHg7XG4gIHotaW5kZXg6IDQ7XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4MDBweCkge1xuICAuYy1zaWRlYmFyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTI1MHB4KTtcbiAgICB0cmFuc2l0aW9uOiAwLjFzIGFsbCBlYXNlLWluO1xuICAgIHBhZGRpbmctdG9wOiAwO1xuICB9XG59XG4uYy1zaWRlYmFyLmlzLW9wZW4ge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMHB4KTtcbn1cbi5jLXNpZGViYXIgYSB7XG4gIGNvbG9yOiBpbmhlcml0O1xufVxuLmMtc2lkZWJhcl9wcm9maWxlIHtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufSJdfQ== */\"","import { Component, OnInit, Input, ElementRef, ViewChild, Renderer2, Inject } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { FormBuilder, FormGroup, FormControl, FormArray, Validators, NgControl } from '@angular/forms';\r\n\r\nimport { AuthService } from '@/services/auth/auth.service';\r\nimport { UtilitiesService } from '@/services/utilities/utilities.service';\r\n\r\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\r\n\r\nexport interface CustomWindow extends Window {\r\n transformersPipeline: any;\r\n}\r\n// import { pipeline } from '@xenova/transformers';\r\n\r\n@Component({\r\n selector: 'sidebar',\r\n templateUrl: './sidebar.component.html',\r\n styleUrls: ['./sidebar.component.scss']\r\n})\r\nexport class SidebarComponent implements OnInit {\r\n\r\n @Input('open') open: boolean;\r\n modalReference: NgbModalRef;\r\n translateModalElement: any;\r\n window: CustomWindow;\r\n\r\n @ViewChild('translateModalElement')\r\n translateElementsModal: ElementRef;\r\n translateForm: FormGroup;\r\n\r\n constructor(\r\n private authService: AuthService,\r\n private modalService: NgbModal,\r\n private formBuilder: FormBuilder,\r\n\t\tprivate utilities: UtilitiesService,\r\n private renderer: Renderer2,\r\n @Inject(DOCUMENT) private document: Document\r\n ) {\r\n this.window = this.document.defaultView;\r\n }\r\n\r\n ngOnInit() {\r\n this.utilities.loadTransformersJsModule(this.renderer);\r\n\r\n this.translateForm = this.formBuilder.group({\r\n translateInput: '',\r\n translateOutput: ''\r\n });\r\n\r\n }\r\n\r\n openModal(event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n let modal = this.translateElementsModal;\r\n let windowClass = 'c-translate-data-modal';\r\n this.modalReference = this.modalService.open(modal, { ariaLabelledBy: \"modal-basic-title\", windowClass })\r\n this.modalReference.result.then(\r\n result => {\r\n `Closed with ${result}`\r\n },\r\n reason => {\r\n `Dismissed with ${reason}`\r\n }\r\n )\r\n }\r\n\r\n async translate() {\r\n this.translateForm.get('translateOutput').setValue('Working...');\r\n let pipe = await this.window.transformersPipeline('translation', 'Xenova/opus-mt-en-es');\r\n var input = this.translateForm.get('translateInput').value;\r\n let out = await pipe(input);\r\n if(typeof out[0] != 'undefined' && typeof out[0].translation_text == 'string') {\r\n this.translateForm.get('translateOutput').setValue(out[0].translation_text);\r\n } else {\r\n this.translateForm.get('translateOutput').setValue('Error');\r\n }\r\n }\r\n\r\n logout() {\r\n this.authService.logout();\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\n\r\nimport { AuthService } from '@/services/auth/auth.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthGuard implements CanActivate {\r\n constructor(\r\n private router: Router,\r\n private authService: AuthService\r\n ) {}\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n const currentUser = this.authService.currentUserValue;\r\n\r\n if( currentUser ) {\r\n // check if route is restricted by role\r\n if (route.data.roles && route.data.roles.indexOf(currentUser.role.name) === -1) {\r\n // role not authorised so redirect to home page\r\n this.router.navigate(['/']);\r\n return false;\r\n }\r\n // authorised so return true\r\n return true;\r\n } else {\r\n // not logged in so redirect to login page with the return url\r\n this.router.navigate(['/login'], { queryParams: { returnUrl: state.url }});\r\n \r\n return false;\r\n\r\n }\r\n\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\nimport { AuthService } from '@/services/auth/auth.service';\r\n\r\n@Injectable()\r\nexport class ErrorInterceptor implements HttpInterceptor {\r\n constructor(private authService: AuthService) {}\r\n\r\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n return next.handle(request).pipe(catchError(err => {\r\n if ([401, 403].indexOf(err.status) !== -1) {\r\n // auto logout if 401 Unauthorized or 403 Forbidden response returned from api\r\n this.authService.logout();\r\n location.reload(true);\r\n }\r\n\r\n const error = err.error.message || err.statusText;\r\n return throwError(error);\r\n }))\r\n }\r\n}\r\n","export * from './error.interceptor';\r\nexport * from './jwt.interceptor';\r\n","// Intercepts http requests from the application to add a JWT auth token to the Authorization header if the user is logged in.\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { AuthService } from '@/services/auth/auth.service';\r\n\r\n@Injectable()\r\nexport class JwtInterceptor implements HttpInterceptor {\r\n constructor(private authService: AuthService) {}\r\n\r\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n // add authorization header with jwt token if available\r\n let currentUser = this.authService.currentUserValue;\r\n if (currentUser && currentUser.token) {\r\n request = request.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${currentUser.token}`\r\n }\r\n });\r\n }\r\n\r\n return next.handle(request);\r\n }\r\n}\r\n","export class Comment {\r\n\tID: string;\r\n\tCreatedDate: string;\r\n\tObjectID: string;\r\n\tObjectType: string;\r\n\tCommenterID: string;\r\n\tCommentText: string;\r\n\tEditText: string;\r\n\tUser: {\r\n\t\tId: string;\r\n\t\tEmail: string;\r\n\t\tPassword: string;\r\n\t\tActive: boolean;\r\n\t\tresetToken: string;\r\n\t\tRole_Id: string;\r\n\t\tFullName: string;\r\n\t\tActivityLogs: any;\r\n\t\tRole: string;\r\n\t\tUserSessions: any;\r\n\t\tComments: any;\r\n\r\n\t}\r\n\r\n}\r\n","export class AddressValues {\r\n email : string\r\n\tname : string\r\n}\r\n\r\nexport class Email{\r\n\tfrom : AddressValues\r\n\treplyTo : AddressValues\r\n\tto : AddressValues[]\r\n\tcc : AddressValues[]\r\n\tbcc : AddressValues[]\r\n\tsubject : string\r\n\tbody : string\r\n\ttype : string\r\n\trelatedObjectId : string\r\n\tattachmentFiles : Array\r\n\r\n\tconstructor() {\r\n\t\tthis.from = new AddressValues()\r\n\t\tthis.replyTo = new AddressValues()\r\n\t\tthis.to = []\r\n\t\tthis.cc = []\r\n\t\tthis.bcc = []\r\n\t\tthis.attachmentFiles = []\r\n\t\tthis.relatedObjectId = ''\r\n\t}\r\n}\r\n","export enum Role {\r\n Supervisor = 'Supervisor',\r\n Admin = 'Admin',\r\n CrewLeader = 'Crew Leader',\r\n Accountant = 'Accountant',\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgxPaginationModule } from 'ngx-pagination';\r\nimport { DataTablesModule } from 'angular-datatables';\r\nimport { FullCalendarModule } from '@fullcalendar/angular';\r\nimport { SignaturePadModule } from 'angular2-signaturepad';\r\nimport { NgSelect2Module } from 'ng-select2';\r\nimport { NgbDate, NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxMaskModule, IConfig } from 'ngx-mask'\r\nimport { TagifyModule } from 'ngx-tagify'\r\n\r\nimport { ActivityLogComponent } from '@/components/activity-log/activity-log.component';\r\nimport { CommentsComponent } from '@/components/comments/comments.component';\r\nimport { DryinInspectionAddComponent } from '@/views/inspections/dryin-inspection-add/dryin-inspection-add.component';\r\nimport { DryinInspectionViewComponent } from '@/views/inspections/dryin-inspection-view/dryin-inspection-view.component';\r\nimport { ShingleInspectionAddComponent } from '@/views/inspections/shingle-inspection-add/shingle-inspection-add.component';\r\nimport { ShingleInspectionViewComponent } from '@/views/inspections/shingle-inspection-view/shingle-inspection-view.component';\r\nimport { SafetyInspectionAddComponent } from '@/views/inspections/safety-inspection-add/safety-inspection-add.component';\r\nimport { SafetyInspectionViewComponent } from '@/views/inspections/safety-inspection-view/safety-inspection-view.component';\r\n\r\n// Test the import of job types\r\nimport { BuilderJobsDatatableComponent } from '@/components/datatable/builder-jobs-datatable/builder-jobs-datatable.component';\r\nimport { WarrantyJobsDatatableComponent } from '@/components/datatable/warranty-jobs-datatable/warranty-jobs-datatable.component';\r\nimport { RepairJobsDatatableComponent } from '@/components/datatable/repair-jobs-datatable/repair-jobs-datatable.component';\r\nimport { ReroofJobsDatatableComponent } from '@/components/datatable/reroof-jobs-datatable/reroof-jobs-datatable.component';\r\n\r\n// export const options: Partial | (() => Partial) = null\r\n\r\n@NgModule({\r\n\tdeclarations: [\r\n\t\tActivityLogComponent,\r\n\t\tCommentsComponent,\r\n\t\tDryinInspectionAddComponent,\r\n\t\tDryinInspectionViewComponent,\r\n\t\tShingleInspectionAddComponent,\r\n\t\tShingleInspectionViewComponent,\r\n\t\tSafetyInspectionAddComponent,\r\n\t\tSafetyInspectionViewComponent,\r\n\t\tBuilderJobsDatatableComponent,\r\n\t\tWarrantyJobsDatatableComponent,\r\n\t\tRepairJobsDatatableComponent,\r\n\t\tReroofJobsDatatableComponent,\r\n\t],\r\n\timports: [\r\n\t\tNgxMaskModule.forRoot(),\r\n\t\tCommonModule,\r\n\t\tRouterModule,\r\n\t\tFormsModule,\r\n\t\tReactiveFormsModule,\r\n\t\tNgSelect2Module,\r\n\t\tNgbModule,\r\n\t\tFullCalendarModule,\r\n\t\tDataTablesModule,\r\n\t\tNgxPaginationModule,\r\n\t\tSignaturePadModule,\r\n\t\tTagifyModule.forRoot(),\r\n\t],\r\n\texports: [\r\n\t\tCommonModule,\r\n\t\tRouterModule,\r\n\t\tFormsModule,\r\n\t\tReactiveFormsModule,\r\n\t\tNgSelect2Module,\r\n\t\tNgbModule,\r\n\t\tNgxMaskModule,\r\n\t\tFullCalendarModule,\r\n\t\tDataTablesModule,\r\n\t\tNgxPaginationModule,\r\n\t\tTagifyModule,\r\n\t\tSignaturePadModule,\r\n\t\tActivityLogComponent,\r\n\t\tCommentsComponent,\r\n\t\tDryinInspectionAddComponent,\r\n\t\tDryinInspectionViewComponent,\r\n\t\tShingleInspectionAddComponent,\r\n\t\tShingleInspectionViewComponent,\r\n\t\tSafetyInspectionAddComponent,\r\n\t\tSafetyInspectionViewComponent,\r\n\t\tBuilderJobsDatatableComponent,\r\n\t\tWarrantyJobsDatatableComponent,\r\n\t\tRepairJobsDatatableComponent,\r\n\t\tReroofJobsDatatableComponent\r\n\t]\r\n})\r\nexport class JobModule { }\r\n\r\nexport {\r\n\tDryinInspectionAddComponent,\r\n\tDryinInspectionViewComponent,\r\n\tShingleInspectionAddComponent,\r\n\tShingleInspectionViewComponent,\r\n\tSafetyInspectionAddComponent,\r\n\tSafetyInspectionViewComponent,\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\nimport { APP_CONFIG, AppConfig } from '@/app-config.module';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ActivityLogService {\r\n\r\n\tconstructor(\r\n\t\tprivate http: HttpClient,\r\n\t\t@Inject(APP_CONFIG) private config: AppConfig\r\n\t) { }\r\n\r\n \tprivate handleError(error: HttpErrorResponse, obs) {\r\n\r\n\t\tconsole.error('raw error:', error, 'headers:', obs, obs.status, obs.statusText, obs.message);\r\n\r\n\t\tif (error.error instanceof ErrorEvent) {\r\n\t\t // A client-side or network error occurred. Handle it accordingly.\r\n\t\t console.error('An error occurred:', error.error.message);\r\n\t\t}\r\n\t\telse {\r\n\t\t // The backend returned an unsuccessful response code.\r\n\t\t // The response body may contain clues as to what went wrong,\r\n\t\t console.error(\r\n\t\t `Backend returned code ${error.status}, ` +\r\n\t\t `body was: ${error.error}`);\r\n\t\t}\r\n\r\n\t\t// return an observable with a user-facing error message\r\n\t\treturn throwError('Something bad happened; please try again later.');\r\n\t}\r\n\r\n\tpublic getLog(type: string, id: string) {\r\n\t\tlet endpoint = 'activitylog',\r\n\t\t\t\turl = `${this.config.apiUrl}/${endpoint}/list?objectType=${type}&objectID=${id}`;\r\n\r\n\t\tconsole.log(url);\r\n\r\n\t\treturn this.http.get(url, { observe: 'response' })\r\n\t\t.pipe(\r\n\t\t\tcatchError(this.handleError)\r\n\t\t);\r\n\t}\r\n\r\n\tpublic addLogEntry(type: string, id: string, description: string) {\r\n\t\tlet endpoint = 'activitylog',\r\n\t\t\t\turl = `${this.config.apiUrl}/${endpoint}/add`;\r\n\r\n\t\tconsole.log(url);\r\n\t\tlet data = {\r\n\t\t\t'objectType' : type,\r\n\t\t\t'objectId' : id,\r\n\t\t\t'description' : description\r\n\t\t};\r\n\r\n\t\treturn this.http.post(url, data).pipe(catchError(this.handleError))\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router, NavigationStart } from '@angular/router';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AlertService {\r\n private subject = new Subject();\r\n private keepAfterRouteChange = false;\r\n\r\n constructor(private router: Router) {\r\n // clear alert messages on route change unless 'keepAfterRouteChange' flag is true\r\n this.router.events.subscribe(event => {\r\n if (event instanceof NavigationStart) {\r\n if (this.keepAfterRouteChange) {\r\n // only keep for a single route change\r\n this.keepAfterRouteChange = false;\r\n } else {\r\n // clear alert message\r\n this.clear();\r\n }\r\n }\r\n });\r\n }\r\n\r\n getAlert(): Observable {\r\n return this.subject.asObservable();\r\n }\r\n\r\n success(message: string, keepAfterRouteChange = false, alertClass:string = '') {\r\n\t\t\t\tthis.keepAfterRouteChange = keepAfterRouteChange;\r\n\r\n this.subject.next({\r\n\t\t\t\t\ttype: 'success',\r\n\t\t\t\t\ttext: message,\r\n\t\t\t\t\tclass: alertClass\r\n\t\t\t\t});\r\n }\r\n\r\n error(message: string, keepAfterRouteChange = false, alertClass:string = '') {\r\n this.keepAfterRouteChange = keepAfterRouteChange;\r\n this.subject.next({\r\n\t\t\t\t\ttype: 'error',\r\n\t\t\t\t\ttext: message,\r\n\t\t\t\t\tclass: alertClass\r\n\t\t\t\t});\r\n }\r\n\r\n clear() {\r\n\t\t\t// console.log('clearing alerts');\r\n\t\t\t// clear by calling subject.next() without parameters\r\n\t\t\tthis.subject.next({});\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse, HttpResponse } from '@angular/common/http';\r\nimport { throwError } from 'rxjs';\r\nimport { catchError, retry } from 'rxjs/operators';\r\n\r\nimport { APP_CONFIG, AppConfig } from '@/app-config.module';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AlertsService {\r\n\r\n\tendpoint = 'alert'\r\n\r\n\tconstructor(\r\n\t\tprivate http: HttpClient,\r\n\t\t@Inject(APP_CONFIG) private config: AppConfig\r\n\t) { }\r\n\r\n private handleError(error: HttpErrorResponse) {\r\n\t\tif (error.error instanceof ErrorEvent) {\r\n\t\t\t// A client-side or network error occurred. Handle it accordingly.\r\n\t\t\tconsole.error(\"An error occurred:\", error.error.message);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// The backend returned an unsuccessful response code.\r\n\t\t\t// The response body may contain clues as to what went wrong,\r\n\t\t\tconsole.error(\r\n\t\t\t\t`Backend returned code ${error.status}, ` + `body was: ${error.error}`\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\t// return an observable with a user-facing error message\r\n\t\treturn throwError(\"Something bad happened; please try again later.\");\r\n\t}\r\n\r\n\tpublic getAlerts( page: number = null, count: number = null, objectType: string = '', alertType: number = null ){\r\n\t\tconst url = `${this.config.apiUrl}/${this.endpoint}/list?page=${page}&count=${count}&objectType=${objectType}&alertType=${alertType}`;\r\n\r\n return this.http.get(url, { observe: 'response' })\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n\t}\r\n\r\n\tpublic getAlertsDatatable(data){\r\n\t\tconst url = `${this.config.apiUrl}/${this.endpoint}/datatable`;\r\n\r\n\t\treturn this.http.post(url, data)\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n}\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { BehaviorSubject, Observable, of, throwError } from 'rxjs';\r\nimport { catchError, tap, map } from 'rxjs/operators';\r\n\r\nimport { APP_CONFIG, AppConfig } from '@/app-config.module';\r\nimport { User } from '@/models/user';\r\n\r\n@Injectable({ providedIn: 'root' })\r\n\r\nexport class AuthService {\r\n private currentUserSubject: BehaviorSubject;\r\n public currentUser: Observable;\r\n\r\n constructor(\r\n\t\t\tprivate http: HttpClient,\r\n\t\t\t@Inject(APP_CONFIG) private config: AppConfig\r\n\t\t) {\r\n\t\t\tthis.currentUserSubject = new BehaviorSubject(JSON.parse(localStorage.getItem('currentUser')));\r\n\t\t\tthis.currentUser = this.currentUserSubject.asObservable();\r\n }\r\n\r\n public get currentUserValue(): User {\r\n\t\t\treturn this.currentUserSubject.value;\r\n }\r\n\r\n\t\thandleError (operation = 'operation', result?: T) {\r\n\t\t\treturn (error: any): Observable => {\r\n\t\t\t\tconsole.error(error);\r\n\r\n\t\t\t\t// Return empty result to ensure app keeps running\r\n\t\t\t\t// return of(result as T);\r\n\t\t\t\treturn throwError(error);\r\n\t\t\t}\r\n\t\t}\r\n\r\n login(UserName: string, Password: string) {\r\n\r\n return this.http.post(`${this.config.apiUrl}/account/login`, { UserName, Password })\r\n\t\t\t\t\t.pipe(\r\n\t\t\t\t\t\tcatchError(this.handleError('login', [])),\r\n\t\t\t\t\t\tmap(user => {\r\n\t\t\t\t\t\t\t\t// login successful if there's a jwt token in the response\r\n\t\t\t\t\t\t\t\tconsole.log(user);\r\n\t\t\t\t\t\t\t\tif( user && user.token ) {\r\n\t\t\t\t\t\t\t\t\t\t// store user details and jwt token in local storage to keep user logged in between page refreshes\r\n\t\t\t\t\t\t\t\t\t\tlocalStorage.setItem('currentUser', JSON.stringify(user));\r\n\t\t\t\t\t\t\t\t\t\tthis.currentUserSubject.next(user);\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\treturn user;\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t);\r\n }\r\n\r\n logout() {\r\n // remove user from local storage to log user out\r\n\t\t\t\tlocalStorage.removeItem('currentUser');\r\n this.currentUserSubject.next(null);\r\n }\r\n}\r\n","import { Injectable, Inject } from \"@angular/core\";\r\nimport {\r\n\tHttpClient,\r\n\tHttpErrorResponse\r\n} from \"@angular/common/http\";\r\nimport { throwError } from \"rxjs\";\r\nimport { catchError } from \"rxjs/operators\";\r\n\r\nimport { APP_CONFIG, AppConfig } from '@/app-config.module';\r\n\r\n@Injectable({\r\n\tprovidedIn: \"root\"\r\n})\r\nexport class BuildersService {\r\n\tendpoint = \"builders\";\r\n\r\n\tconstructor(\r\n\t\tprivate http: HttpClient,\r\n\t\t@Inject(APP_CONFIG) private config: AppConfig\r\n\t) {}\r\n\r\n\tprivate handleError(error: HttpErrorResponse) {\r\n\t\tif (error.error instanceof ErrorEvent) {\r\n\t\t\t// A client-side or network error occurred. Handle it accordingly.\r\n\t\t\tconsole.error(\"An error occurred:\", error.error.message);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// The backend returned an unsuccessful response code.\r\n\t\t\t// The response body may contain clues as to what went wrong,\r\n\t\t\tconsole.error(\r\n\t\t\t\t`Backend returned code ${error.status}, ` + `body was: ${error.error}`\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\t// return an observable with a user-facing error message\r\n\t\treturn throwError(\"Something bad happened; please try again later.\");\r\n\t}\r\n\r\n\tpublic getBuilder(id = \"\") {\r\n\t\tlet url = `${this.config.apiUrl}/${this.endpoint}/get/${id}`;\r\n\r\n\t\treturn this.http\r\n\t\t\t.get(url, { observe: \"response\" })\r\n\t\t\t.pipe(catchError(this.handleError));\r\n\t}\r\n\r\n\tpublic getBuilders() {\r\n\t\tlet url = `${this.config.apiUrl}/${this.endpoint}/all`;\r\n\r\n\t\treturn this.http\r\n\t\t\t.get(url, { observe: \"response\" })\r\n\t\t\t.pipe(catchError(this.handleError));\r\n\t}\r\n\r\n\tpublic createBuilder(submission: any) {\r\n\t\tlet url = `${this.config.apiUrl}/${this.endpoint}/create`,\r\n\t\t\tdata = {};\r\n\r\n\t\tfor (let key in submission) {\r\n\t\t\tvar control = submission[key],\r\n\t\t\t\tvalue = control.value;\r\n\r\n\t\t\tdata[key] = value;\r\n\t\t}\r\n\r\n\t\treturn this.http.post(url, data).pipe(catchError(this.handleError));\r\n\t}\r\n\r\n\tpublic updateBuilder(id, data: any) {\r\n\t\tlet\turl = `${this.config.apiUrl}/${this.endpoint}/update/${id}`;\r\n\r\n\t\tif (\"Status\" in data) {\r\n\t\t\tif (data[\"Status\"] == null) {\r\n\t\t\t\tdata[\"Status\"] = \"Active\";\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdata[\"Status\"] = \"Active\";\r\n\t\t}\r\n\r\n\t\treturn this.http.put(url, data).pipe(catchError(this.handleError));\r\n\t}\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\nimport { APP_CONFIG, AppConfig } from '@/app-config.module';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class CommentsService {\r\n\r\n\ttagsRegexp = /\\[\\[({.*?})\\]\\]/sg;\r\n\teditTagsRegexp = /\\[@(.*?)\\]/sg;\r\n\r\n\tconstructor(\r\n\t\tprivate http: HttpClient,\r\n\t\t@Inject(APP_CONFIG) private config: AppConfig\r\n\t) { }\r\n\r\n\tprivate handleError(error: HttpErrorResponse, obs) {\r\n\r\n\t\tconsole.error('raw error:', error, 'headers:', obs, obs.status, obs.statusText, obs.message);\r\n\r\n\t\tif (error.error instanceof ErrorEvent) {\r\n\t\t\t// A client-side or network error occurred. Handle it accordingly.\r\n\t\t\tconsole.error('An error occurred:', error.error.message);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// The backend returned an unsuccessful response code.\r\n\t\t\t// The response body may contain clues as to what went wrong,\r\n\t\t\tconsole.error(\r\n\t\t\t\t`Backend returned code ${error.status}, ` +\r\n\t\t\t\t`body was: ${error.error}`);\r\n\t\t}\r\n\r\n\t\t// return an observable with a user-facing error message\r\n\t\treturn throwError('Something bad happened; please try again later.');\r\n\t}\r\n\r\n\tpublic getComments(objectID: string, objectType: string, start = 0, length = 99) {\r\n\t\tlet endpoint = 'Comments',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/list?objectID=${objectID}&objectType=${objectType}`;\r\n\r\n\t\tif (start !== 0) {\r\n\t\t\turl += `&start=${start}`;\r\n\t\t}\r\n\r\n\t\tif (length !== 0) {\r\n\t\t\turl += `&length=${length}`;\r\n\t\t}\r\n\r\n\t\treturn this.http.get(url, { observe: 'response' })\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t)\r\n\t}\r\n\r\n\tpublic getCommentsUserList() {\r\n\t\tlet endpoint = 'Comments',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/userlist`;\r\n\r\n\t\treturn this.http.get(url, { observe: 'response' })\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t)\r\n\t}\r\n\r\n\tpublic getComment(id: string) {\r\n\t\tlet endpoint = 'Comments',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/get/${id}`;\r\n\r\n\t\treturn this.http.get(url, { observe: 'response' })\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic createComment(submission: any) {\r\n\t\tlet endpoint = 'Comments',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/create`;\r\n\r\n\t\tconsole.log(submission);\r\n\r\n\t\treturn this.http.post(url, submission)\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic updateComment(id: string, data: any) {\r\n\t\tlet endpoint = 'Comments',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/update/${id}`;\r\n\r\n\t\t// console.log(data);\r\n\t\t// console.log(id);\r\n\t\treturn this.http.put(url, data)\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic deleteComment(id: string) {\r\n\t\tlet endpoint = 'Comments',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/delete/${id}`;\r\n\t\t// console.log(url);\r\n\r\n\r\n\t\treturn this.http.delete(url)\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic generateCleanEditText(input: any) {\r\n\t\treturn input.replaceAll(this.tagsRegexp, function (match, group) {\r\n\t\t\ttry {\r\n\t\t\t\tvar obj = JSON.parse(group);\r\n\t\t\t\tif ('value' in obj) {\r\n\t\t\t\t\treturn \"[@\" + obj.value + \"]\";\r\n\t\t\t\t}\r\n\t\t\t} catch (SyntaxError) {\r\n\t\t\t}\r\n\r\n\t\t\treturn match;\r\n\t\t});\r\n\t}\r\n\r\n\tpublic generateCleanCommentText(input: any) {\r\n\t\treturn input.replaceAll(this.tagsRegexp, function(match, group) {\r\n\t\t\ttry {\r\n\t\t\t\tvar obj = JSON.parse(group);\r\n\t\t\t\tif('value' in obj && 'prefix' in obj) {\r\n\t\t\t\t\treturn \" \" + obj.prefix + obj.value + \" \";\r\n\t\t\t\t}\r\n\t\t\t} catch(SyntaxError) {\r\n\t\t\t}\r\n\r\n\t\t\treturn match;\r\n\t\t}).replaceAll(this.editTagsRegexp, function(match, group) {\r\n\t\t\treturn \" @\" + group + \" \";\r\n\t\t});\r\n\t}\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\nimport { APP_CONFIG, AppConfig } from '@/app-config.module';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CommunitiesService {\r\n\r\n endpoint = 'communities'\r\n\r\n constructor(\r\n\t\tprivate http: HttpClient,\r\n\t\t@Inject(APP_CONFIG) private config: AppConfig\r\n ) { }\r\n\r\n private handleError(error: HttpErrorResponse) {\r\n if (error.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n console.error('An error occurred:', error.error.message);\r\n }\r\n else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n console.error(\r\n `Backend returned code ${error.status}, ` +\r\n `body was: ${error}`);\r\n }\r\n\r\n // return an observable with a user-facing error message\r\n return throwError('Something bad happened; please try again later.');\r\n }\r\n\r\n public getCommunity(id = '') {\r\n let url = `${this.config.apiUrl}/${this.endpoint}/get?id=${id}`;\r\n\r\n return this.http.get(url, { observe: 'response' })\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n public getCommunities() {\r\n let url = `${this.config.apiUrl}/${this.endpoint}/all`;\r\n\r\n return this.http.get(url, { observe: 'response' })\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n\t}\r\n\r\n public createCommunity(data) {\r\n let url = `${this.config.apiUrl}/${this.endpoint}/create`;\r\n\r\n\treturn this.http.post(url, data)\r\n\t .pipe(\r\n\t catchError(this.handleError)\r\n\t );\r\n }\r\n\r\n\tpublic updateCommunity(id, data: any) {\r\n let url = `${this.config.apiUrl}/${this.endpoint}/update/${id}`;\r\n\r\n\treturn this.http.put(url, data)\r\n\t .pipe(\r\n\t catchError(this.handleError)\r\n\t );\r\n\t}\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\nimport { APP_CONFIG, AppConfig } from '@/app-config.module';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ContactsService {\r\n\tendpoint = 'contacts';\r\n\r\n\tconstructor(\r\n\t\tprivate http: HttpClient,\r\n\t\t@Inject(APP_CONFIG) private config: AppConfig\r\n\t) { }\r\n\r\n private handleError(error: any, context: any = '') {\r\n\t\tconsole.error('Invalid Request')\r\n\r\n\t\tlet message = `Failure: ${error}`;\r\n\r\n\t\t// if( context ) {\r\n\t\t// \tmessage = `${message} ${context}`;\r\n\t\t// }\r\n\r\n\t\t// return an observable with a user-facing error message\r\n\t\treturn throwError(message);\r\n\t}\r\n\r\n\tpublic getContacts() {\r\n\t\tlet url = `${this.config.apiUrl}/${this.endpoint}/all`;\r\n\r\n\t\treturn this.http.get(url, { observe: 'response' })\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic getContact(id: string) {\r\n\t\tlet url = `${this.config.apiUrl}/${this.endpoint}/get/${id}`;\r\n\r\n\t\treturn this.http.get(url, { observe: 'response' })\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic createContact(submission: any) {\r\n\t\tlet url = `${this.config.apiUrl}/${this.endpoint}/create`,\r\n\t\t \tdata = {};\r\n\r\n\t\tfor (let key in submission) {\r\n\t\t\tvar control = submission[key],\r\n\t\t\t\tvalue = control.value;\r\n\r\n\t\t\tdata[key] = value;\r\n\t\t}\r\n\r\n\t\treturn this.http.post(url, data)\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(error => this.handleError(error, 'Check your submisision and try again.') )\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic updateContact(id, data: any) {\r\n\t\tlet url = `${this.config.apiUrl}/${this.endpoint}/update?id=${id}`;\r\n\r\n\t\treturn this.http.put(url, data)\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\nimport { APP_CONFIG, AppConfig } from '@/app-config.module';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EmailService {\r\n\tendpoint: string = 'email'\r\n\r\n constructor(\r\n\t\tprivate http: HttpClient,\r\n\t\t@Inject(APP_CONFIG) private config: AppConfig\r\n\t) { }\r\n\r\n\tprivate handleError(error: any, context: any = '') {\r\n\t\tconsole.error('Invalid Request')\r\n\r\n\t\tlet message = `Failure: ${error}`;\r\n\r\n\t\t// if( context ) {\r\n\t\t// \tmessage = `${message} ${context}`;\r\n\t\t// }\r\n\r\n\t\t// return an observable with a user-facing error message\r\n\t\treturn throwError(message);\r\n\t}\r\n\r\n\tpublic sendEmail( emailData: any ){\r\n\t\tconst url = `${this.config.apiUrl}/${this.endpoint}/sendasync`\r\n\r\n\t\treturn this.http.post(url, emailData)\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(error => this.handleError(error, 'Check your submisision and try again.') )\r\n\t\t\t);\r\n\t}\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\nimport { APP_CONFIG, AppConfig } from '@/app-config.module';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EmployeesService {\r\n\tendpoint = 'Employees';\r\n\r\n\tconstructor(\r\n\t\tprivate http: HttpClient,\r\n\t\t@Inject(APP_CONFIG) private config: AppConfig\r\n\t) { }\r\n\r\n\tprivate handleError(error: any, context: any = '') {\r\n\t\tconsole.error('Invalid Request', error, context);\r\n\r\n\t\tlet message = `Failure: ${error}`;\r\n\r\n\t\t// if( context ) {\r\n\t\t// \tmessage = `${message} ${context}`;\r\n\t\t// }\r\n\r\n\t\t// return an observable with a user-facing error message\r\n\t\treturn throwError(message);\r\n\t}\r\n\r\n\tpublic getEmployees( includeInactive: boolean = false ) {\r\n\t\tlet url = `${this.config.apiUrl}/${this.endpoint}/all`;\r\n\r\n\t\tif ( includeInactive ) {\r\n\t\t\turl = url + '?includeInactive=true'\r\n\t\t}\r\n\r\n\t\treturn this.http.get(url, { observe: 'response' })\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic getEmployee(id: string) {\r\n\t\tlet url = `${this.config.apiUrl}/${this.endpoint}/get/${id}`;\r\n\r\n\t\treturn this.http.get(url, { observe: 'response' })\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic createEmployee(submission: any) {\r\n\t\tlet url = `${this.config.apiUrl}/${this.endpoint}/create`,\r\n\t\t\t data = {};\r\n\r\n\t\tfor (let key in submission) {\r\n\t\t\tlet value = submission[key]\r\n\r\n\t\t\tif (key === 'DOB' || key === 'HireDate' || (key === 'DrugTestCompletedDate' && value !== null)) {\r\n\t\t\t\tvalue = `${value.year}/${value.month}/${value.day}`;\r\n\t\t\t}\r\n\r\n\t\t\tdata[key] = value;\r\n\t\t}\r\n\r\n\t\treturn this.http.post(url, data)\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(error => this.handleError(error, 'Check your submisision and try again.') )\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic updateEmployee(id: string, submission: any) {\r\n\t\tlet url = `${this.config.apiUrl}/${this.endpoint}/update/${id}`,\r\n\t\t\t data = {}\r\n\r\n\t\tfor (let key in submission) {\r\n\t\t\tlet value = submission[key]\r\n\r\n\t\t\tif (key === 'DOB' && typeof value !== 'string' || key === 'HireDate' && typeof value !== 'string' || key === 'DrugTestCompletedDate' && typeof value !== 'string') {\r\n\t\t\t\tif(value !== null)\r\n \t\t\t\tvalue = `${value.year}/${value.month}/${value.day}`;\r\n\t\t\t}\r\n\r\n\t\t\tdata[key] = value;\r\n\t\t}\r\n\r\n\t\treturn this.http.put(url, data)\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic addIncident(employeeID: string, incidentID: string) {\r\n\t\tlet url = `${this.config.apiUrl}/${this.endpoint}/addincident?employeeID=${employeeID}&incidentID=${incidentID}`\r\n\r\n\t\treturn this.http.put(url, {}, {})\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic deleteIncident(employeeID: string, incidentID: string) {\r\n\t\tlet url = `${this.config.apiUrl}/${this.endpoint}/deleteincident?employeeID=${employeeID}&incidentID=${incidentID}`\r\n\r\n\t\treturn this.http.put(url, {}, {})\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic updateEmployeeStatus( id: string, data, active: boolean ) {\r\n\t\tconst url = `${ this.config.apiUrl }/${ this.endpoint }/update/${ id }`;\r\n\r\n\t\tdata.active = active\r\n\r\n\t\treturn this.http.put( url, data )\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient, HttpEventType } from '@angular/common/http';\r\nimport { throwError } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\n\r\nimport { APP_CONFIG, AppConfig } from '@/app-config.module';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class FilesService {\r\n\tendpoint = 'file';\r\n\r\n\tconstructor(\r\n\t\tprivate http: HttpClient,\r\n\t\t@Inject(APP_CONFIG) private config: AppConfig\r\n\t) {\r\n\t}\r\n\r\n\tpublic getFile(id: string) {\r\n\t\tlet url = `${this.config.apiUrl}/${this.endpoint}/get/${id}`;\r\n\r\n\t\treturn this.http.get(url, {observe: 'response'})\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic uploadFile(data: any, id: string, jobType: string, ForSMS: boolean = false) {\r\n\t\tvar formData = new FormData();\r\n\t\tformData.append(\"file\", data)\r\n\r\n\t\tlet url = `${this.config.apiUrl}/${this.endpoint}/upload?objectID=${id}&label=${data.name}&type=${data.type ? data.type : 'unknown'}`;\r\n\r\n\t\tif ( ForSMS ) {\r\n\t\t\turl += `&objectType=SMS&forSms=true`\r\n\t\t}\r\n\t\telse {\r\n\t\t\turl += `&objectType=${ jobType }`\r\n\t\t}\r\n\r\n\t\treturn this.http.post(url, formData, {\r\n\t\t\treportProgress: true,\r\n\t\t\tobserve: 'events'\r\n\t\t}).pipe(map((event) => {\r\n\r\n\t\t\tswitch (event.type) {\r\n\r\n\t\t\t\tcase HttpEventType.UploadProgress:\r\n\t\t\t\t\tconst progress = Math.round(100 * event.loaded / event.total);\r\n\t\t\t\t\treturn { status: 'progress', message: progress };\r\n\r\n\t\t\t\tcase HttpEventType.Response:\r\n\t\t\t\t\treturn event.body;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn `Unhandled event: ${event.type}`;\r\n\t\t\t}\r\n\t\t}))\r\n\t}\r\n\r\n\tpublic downloadFile(fileID){\r\n\t\tlet url = `${this.config.apiUrl}/${this.endpoint}/download/${fileID}`;\r\n\r\n return this.http.get(url, {\r\n\t\t\tresponseType: 'blob'\r\n\t\t}).pipe(\r\n catchError(this.handleError)\r\n )\r\n\t}\r\n\r\n\tpublic deleteFile(fileID: string){\r\n\t\tlet url = `${this.config.apiUrl}/${this.endpoint}/delete/${fileID}`;\r\n\r\n\t\treturn this.http.delete(url, {observe: 'response'})\r\n\t\t\t .pipe( catchError(this.handleError) )\r\n\t}\r\n\r\n\tprivate handleError(error: any, context: any = '') {\r\n\t\tconsole.error('Invalid Request')\r\n\r\n\t\tlet message = `Failure: ${error}`;\r\n\r\n\t\t// if (context) {\r\n\t\t// \tmessage = `${message} ${context}`;\r\n\t\t// }\r\n\r\n\t\t// return an observable with a user-facing error message\r\n\t\treturn throwError(message);\r\n\t}\r\n}\r\n","import { Injectable, Inject } from \"@angular/core\";\r\nimport { HttpClient, HttpErrorResponse } from \"@angular/common/http\";\r\nimport { throwError } from \"rxjs\";\r\nimport { catchError } from \"rxjs/operators\";\r\n\r\nimport { APP_CONFIG, AppConfig } from '@/app-config.module';\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class InspectionsService {\r\n endpoint = \"inspection\";\r\n\r\n constructor(\r\n\t\tprivate http: HttpClient,\r\n\t\t@Inject(APP_CONFIG) private config: AppConfig\r\n\t) { }\r\n\r\n private handleError(error: HttpErrorResponse) {\r\n if (error.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n console.error(\"An error occurred:\", error.error.message);\r\n }\r\n else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n console.error(\r\n `Backend returned code ${error.status}, ` + `body was: ${error.error}`\r\n );\r\n }\r\n\r\n // return an observable with a user-facing error message\r\n return throwError(\"Something bad happened; please try again later.\");\r\n }\r\n\r\n public getSafetyChecklist(id:string = \"\") {\r\n let url = `${this.config.apiUrl}/${this.endpoint}/getsafety/${id}`;\r\n\r\n return this.http\r\n .get(url, { observe: \"response\" })\r\n .pipe(catchError(this.handleError));\r\n }\r\n\r\n public getAllSafetyChecklists() {\r\n let url = `${this.config.apiUrl}/${this.endpoint}/allsafety`;\r\n\r\n return this.http\r\n .get(url, { observe: \"response\" })\r\n .pipe(catchError(this.handleError));\r\n }\r\n\r\n public createSafetyChecklist(data: any) {\r\n let url = `${this.config.apiUrl}/${this.endpoint}/createsafety`\r\n\r\n return this.http.post(url, data).pipe(catchError(this.handleError));\r\n }\r\n\r\n public updateSafetyChecklist(id:string, data: any) {\r\n let url = `${this.config.apiUrl}/${this.endpoint}/updatesafety/${id}`;\r\n\r\n return this.http.put(url, data).pipe(catchError(this.handleError));\r\n }\r\n\r\n public getShingleChecklist(id:string = \"\") {\r\n let url = `${this.config.apiUrl}/${this.endpoint}/getshingle/${id}`;\r\n\r\n return this.http\r\n .get(url, { observe: \"response\" })\r\n .pipe(catchError(this.handleError));\r\n }\r\n\r\n\tpublic getAllShingleChecklists() {\r\n let url = `${this.config.apiUrl}/${this.endpoint}/allshingle`;\r\n\r\n return this.http\r\n .get(url, { observe: \"response\" })\r\n .pipe(catchError(this.handleError));\r\n }\r\n\r\n\tpublic createShingleChecklist(data: any) {\r\n let url = `${this.config.apiUrl}/${this.endpoint}/createshingle`\r\n\r\n return this.http.post(url, data).pipe(catchError(this.handleError));\r\n }\r\n\r\n\tpublic updateShingleChecklist(id: string, data: any) {\r\n let url = `${this.config.apiUrl}/${this.endpoint}/updateshingle/${id}`;\r\n\r\n return this.http.put(url, data).pipe(catchError(this.handleError));\r\n }\r\n\r\n public getDryinChecklist(id:string = \"\") {\r\n let url = `${this.config.apiUrl}/${this.endpoint}/getdryin/${id}`;\r\n\r\n return this.http\r\n .get(url, { observe: \"response\" })\r\n .pipe(catchError(this.handleError));\r\n }\r\n\r\n\tpublic getAllDryinChecklists() {\r\n let url = `${this.config.apiUrl}/${this.endpoint}/alldryin`;\r\n\r\n return this.http\r\n .get(url, { observe: \"response\" })\r\n .pipe(catchError(this.handleError));\r\n }\r\n\r\n\tpublic createDryinChecklist(data: any) {\r\n let url = `${this.config.apiUrl}/${this.endpoint}/createdryin`\r\n\r\n return this.http.post(url, data).pipe(catchError(this.handleError));\r\n }\r\n\r\n\tpublic updateDryinChecklist(id: string, data: any) {\r\n let url = `${this.config.apiUrl}/${this.endpoint}/updatedryin/${id}`;\r\n\r\n return this.http.put(url, data).pipe(catchError(this.handleError));\r\n }\r\n\r\n public addChecklistToJob(inspectionID, jobID, jobType, data: any) {\r\n let url = `${this.config.apiUrl}/${this.endpoint}/addjob?inspectionID=${inspectionID}&jobID=${jobID}&jobType=${jobType}`;\r\n\r\n if (\"Status\" in data) {\r\n if (data[\"Status\"] == null) {\r\n data[\"Status\"] = \"Active\";\r\n }\r\n }\r\n\r\n return this.http.put(url, data).pipe(catchError(this.handleError));\r\n }\r\n\r\n public deleteChecklist(id: string) {\r\n const url = `${this.config.apiUrl}/${this.endpoint}/delete/${id}`;\r\n\r\n return this.http.delete(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { throwError, Observable, forkJoin } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\nimport { APP_CONFIG, AppConfig } from '@/app-config.module';\r\nimport { FormGroup, Validators } from '@angular/forms';\r\n\r\nimport { User } from '@/models/user';\r\nimport { Email } from '@/models/email';\r\n\r\nimport { UserService } from '@/services/user/user.service';\r\nimport { EmployeesService } from '@/services/employees/employees.service';\r\nimport { AuthService } from '@/services/auth/auth.service';\r\nimport { AlertService } from '@/services/alert/alert.service';\r\nimport { FilesService } from '@/services/files/files.service';\r\nimport { EmailService } from '@/services/email/email.service';\r\nimport { CommentsService } from '@/services/comments/comments.service';\r\nimport { SMSService } from '@/services/sms/sms.service';\r\nimport { ActivityLogService } from '@/services/activity-log/activity-log.service';\r\n\r\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\r\nimport html2pdf from 'html2pdf.js'\r\nimport { isArray } from 'util';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class JobsService {\r\n\temailJobData: Email = new Email()\r\n\tcurrentUser: User\r\n\tattachments: Array = []\r\n\tfromEmail: string = 'notifications@sterlingroofingfl.com'\r\n\tfromName: string = 'Sterling Roofing'\r\n\temailJobFormError: string = ''\r\n\tpdfGenerating: Boolean = false\r\n\tpdfComponents: any\r\n\tjob: any\r\n\tjobType: any\r\n\tsendType: any\r\n\tjobDataElement: any\r\n\tpdfModalElement: any\r\n\ttextRecipients: string[]\r\n\temailRecipients: string[]\r\n\temailSent: Boolean = false\r\n\ttextSent: Boolean = false\r\n\tmodalReference: NgbModalRef\r\n\r\n\tconstructor(\r\n\t\tprivate http: HttpClient,\r\n\t\tprivate employeeService: EmployeesService,\r\n\t\tprivate userService: UserService,\r\n\t\tprivate commentService: CommentsService,\r\n\t\tprivate authService: AuthService,\r\n\t\tprivate alertService: AlertService,\r\n\t\tprivate activityLogService: ActivityLogService,\r\n\t\tprivate filesService: FilesService,\r\n\t\tprivate emailService: EmailService,\r\n\t\tprivate smsService: SMSService,\r\n\t\tprivate modalService: NgbModal,\r\n\t\t@Inject(APP_CONFIG) private config: AppConfig\r\n\t) {\r\n\t\tthis.authService.currentUser.subscribe(user => this.currentUser = user);\r\n\t}\r\n\r\n\tprivate handleError(error: any, context: any = '') {\r\n\t\tconsole.error('Invalid Request')\r\n\r\n\t\tlet message = `Failure: ${error}`;\r\n\r\n\t\t// if( context ) {\r\n\t\t// \tmessage = `${message} ${context}`;\r\n\t\t// }\r\n\r\n\t\t// return an observable with a user-facing error message\r\n\t\treturn throwError(message);\r\n\t}\r\n\r\n\tvalidateCC(CC: string) {\r\n\t\tlet allCCs = CC.split(',')\r\n\t\tallCCs.forEach(cc => {\r\n\t\t\tconst emailTrimmed = cc.trim()\r\n\t\t\tif (/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/.test(emailTrimmed)) {\r\n\t\t\t\tthis.emailJobData.cc.push({ email: emailTrimmed, name: '' })\r\n\t\t\t\tthis.emailJobFormError = ''\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.alertService.error(`The CC email: ${emailTrimmed} is invalid.`)\r\n\t\t\t\tthis.emailJobFormError = 'true'\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tpublic sendJobDetails(data, formValues, jobDataElement, job, pdfComponents, pdfModalElement, sendType, jobType) {\r\n\t\tlet { value } = formValues,\r\n\t\t\t{ CC, EmailSubject, Message, Attachments }: { CC: string, EmailSubject: string, Message: string, Attachments: Array } = value,\r\n\t\t\tpdfOptions = {}\r\n\t\tconst { EmailRecipients } = data\r\n\t\tconst { TextRecipients } = data\r\n\r\n\t\tthis.job = job\r\n\t\tthis.jobDataElement = jobDataElement\r\n\t\tthis.pdfComponents = pdfComponents\r\n\t\tthis.pdfModalElement = pdfModalElement\r\n\t\tthis.jobType = jobType\r\n\t\tthis.sendType = sendType\r\n\r\n\t\tif (this.emailJobFormError.length) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif (data.IncludePOItems) {\r\n\t\t\tpdfOptions['includePOItems'] = true\r\n\t\t}\r\n\r\n\t\tif (data.IncludeComments) {\r\n\t\t\tpdfOptions['includeComments'] = true\r\n\t\t}\r\n\r\n\t\tif (data.IncludeActivityLog) {\r\n\t\t\tpdfOptions['includeActivityLog'] = true\r\n\t\t}\r\n\r\n\t\tif (data.IncludePaymentDetails) {\r\n\t\t\tpdfOptions['includePaymentDetails'] = true\r\n\t\t}\r\n\r\n\t\tpdfOptions['saveFile'] = true\r\n\r\n\t\t// Set Email information\r\n\t\tthis.emailJobData = new Email()\r\n\t\tthis.emailJobData.subject = EmailSubject\r\n\t\tthis.emailJobData.body = Message\r\n\t\tthis.emailJobData.type = 'text'\r\n\t\tthis.emailJobData.relatedObjectId = this.job.ID\r\n\t\tthis.emailJobData.from.email = this.fromEmail\r\n\t\tthis.emailJobData.from.name = this.fromName\r\n\t\tthis.emailJobData.attachmentFiles = Attachments\r\n\r\n\t\tif (this.sendType === 'Email Only') {\r\n\t\t\t// Set the From address as the current user\r\n\t\t\tthis.userService.getUser(this.currentUser.userID).subscribe((resFrom: any) => {\r\n\t\t\t\tlet { Email: email, FullName: name } = resFrom.body\r\n\t\t\t\tif (name === null) {\r\n\t\t\t\t\tname = ''\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.emailJobData.replyTo.email = email\r\n\t\t\t\tthis.emailJobData.replyTo.name = name\r\n\r\n\t\t\t\t// set the To address\r\n\t\t\t\tif (EmailRecipients) {\r\n\t\t\t\t\tthis.getMultipleEmployees(EmailRecipients).subscribe(employees => {\r\n\t\t\t\t\t\tthis.emailRecipients = employees.map(employee => employee.Email);\r\n\t\t\t\t\t\tfor (var recipient in this.emailRecipients) {\r\n\t\t\t\t\t\t\tthis.emailJobData.to.push({ email: this.emailRecipients[recipient], name: '' })\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t\t// console.log('this.emailRecipients', this.emailRecipients);\r\n\t\t\t\t\t// for(var recipient in this.emailRecipients){\r\n\t\t\t\t\t// \tthis.emailJobData.to.push({ email: this.emailRecipients[recipient], name: '' })\r\n\t\t\t\t\t// }\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.alertService.error('You must specify an email recipient', false);\r\n\t\t\t\t\tthis.emailJobFormError = 'true'\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\t// validate each CC address, then set them\r\n\t\t\t\tif (CC.length) {\r\n\t\t\t\t\tthis.validateCC(CC)\r\n\t\t\t\t}\r\n\t\t\t\t// generate PDF\r\n\t\t\t\tthis.generatePDF(pdfOptions, this.sendType)\r\n\t\t\t})\r\n\t\t}\r\n\t\telse if (this.sendType === 'Text Only') {\r\n\t\t\tif (TextRecipients) {\r\n\t\t\t\tthis.getMultipleEmployees(TextRecipients).subscribe(employees => {\r\n\t\t\t\t\tthis.textRecipients = employees.map(employee => employee.CellPhone)\r\n\t\t\t\t\tthis.generatePDF(pdfOptions, this.sendType)\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.alertService.error('You must specify a Text/SMS recipient', false);\r\n\t\t\t\tthis.emailJobFormError = 'true'\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.userService.getUser(this.currentUser.userID).subscribe((resFrom: any) => {\r\n\t\t\t\tlet { Email: email, FullName: name } = resFrom.body\r\n\t\t\t\tif (name === null) {\r\n\t\t\t\t\tname = ''\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.emailJobData.replyTo.email = email\r\n\t\t\t\tthis.emailJobData.replyTo.name = name\r\n\r\n\t\t\t\t// set the To address\r\n\t\t\t\tif (TextRecipients) {\r\n\t\t\t\t\tthis.getMultipleEmployees(TextRecipients).subscribe(employees => {\r\n\t\t\t\t\t\tthis.textRecipients = employees.map(employee => employee.CellPhone)\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.alertService.error('You must specify a Text/SMS recipient', false);\r\n\t\t\t\t\tthis.emailJobFormError = 'true'\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\tif (EmailRecipients) {\r\n\t\t\t\t\tthis.getMultipleEmployees(EmailRecipients).subscribe(employees => {\r\n\t\t\t\t\t\tthis.emailRecipients = employees.map(employee => employee.Email);\r\n\t\t\t\t\t\tfor (var recipient in this.emailRecipients) {\r\n\t\t\t\t\t\t\tthis.emailJobData.to.push({ email: this.emailRecipients[recipient], name: '' })\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.alertService.error('You must specify an email recipient', false);\r\n\t\t\t\t\tthis.emailJobFormError = 'true'\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\t// validate each CC address, then set them\r\n\t\t\t\tif (CC.length) {\r\n\t\t\t\t\tthis.validateCC(CC)\r\n\t\t\t\t}\r\n\t\t\t\t// generate PDF\r\n\t\t\t\tthis.generatePDF(pdfOptions, this.sendType)\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\tdissmisJobModal() {\r\n\t\tconst pdfModal = document.getElementById('pdf-modal')\r\n\t\tif (this.sendType === 'Email and Text') {\r\n\t\t\tif (this.textSent && this.emailSent) {\r\n\t\t\t\tpdfModal.innerHTML = ''\r\n\t\t\t\tthis.modalReference.close()\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tpdfModal.innerHTML = ''\r\n\t\t\tthis.modalReference.close()\r\n\t\t}\r\n\t}\r\n\r\n\tgeneratePDF(pdfOptions: any, sendType: string) {\r\n\t\tconst jobInfo = this.jobDataElement.nativeElement.querySelector('.c-job_info').cloneNode(true)\r\n\t\tlet headerTitle: string, pdfFileName: string\r\n\r\n\t\tconst communityName = this.job.Community ? this.job.Community.Name : 'Community'\r\n\t\tconst crewLeaderName = this.job.CrewLeader ? this.job.CrewLeader.FullName : 'Crew Leader'\r\n\r\n\t\tswitch (this.jobType) {\r\n\t\t\tcase 'Reroof':\r\n\t\t\tcase 'Repair':\r\n\t\t\t\theaderTitle = pdfFileName = `${this.jobType} Job - ${this.job.FirstName} ${this.job.LastName}`\r\n\t\t\t\tbreak\r\n\t\t\tcase 'BuilderJob':\r\n\t\t\tcase 'Warranty':\r\n\t\t\t\theaderTitle = pdfFileName = `${this.jobType} - ${communityName} - ${this.job.Lot1} ${this.job.Lot2} - ${crewLeaderName}`\r\n\t\t\t\tbreak\r\n\t\t}\r\n\r\n\t\tthis.pdfGenerating = true\r\n\t\tlet pdfGenerationData: any = {\r\n\t\t\theaderTitle: headerTitle,\r\n\t\t\tjobInfo: jobInfo,\r\n\t\t\tpoItems: null,\r\n\t\t\tpayments: null,\r\n\t\t\tcomments: null,\r\n\t\t\tactivityLog: null,\r\n\t\t}\r\n\t\tlet paymentsObj = null\r\n\r\n\t\t// Add Job Payment Details if they exist\r\n\t\tif (this.job.PaymentAmount || this.job.PaymentID || this.job.PaymentDate) {\r\n\t\t\tpaymentsObj = {\r\n\t\t\t\tPaymentAmount: this.job.PaymentAmount,\r\n\t\t\t\tPaymentDate: this.job.PaymentDate,\r\n\t\t\t\tPaymentID: this.job.PaymentID,\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tpdfGenerationData.activityLog = pdfOptions.includeActivityLog ? this.pdfComponents.activityLog : null\r\n\t\tpdfGenerationData.poItems = pdfOptions.includePOItems ? this.pdfComponents.poForm : null\r\n\t\tpdfGenerationData.payments = pdfOptions.includePaymentDetails && paymentsObj ? paymentsObj : null\r\n\t\tpdfGenerationData.comments = pdfOptions.includeComments && this.pdfComponents.comments['data'].length ? this.pdfComponents.comments['data'] : null\r\n\r\n\t\tconst pdfHtml = this.getJobPdf(pdfGenerationData)\r\n\r\n\t\tthis.openModal(this.pdfModalElement, 'c-pdf-data-modal')\r\n\t\tlet pdfModal = document.getElementById('pdf-modal')\r\n\r\n\t\tpdfModal.innerHTML += pdfHtml + pdfModal.innerHTML\r\n\r\n\t\tconst pdfOpts = {\r\n\t\t\tfilename: pdfFileName,\r\n\t\t\tpagebreak: {\r\n\t\t\t\tmode: 'css',\r\n\t\t\t\tbefore: '.break-before',\r\n\t\t\t\tafter: '.break-after',\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (pdfOptions.saveFile) {\r\n\t\t\thtml2pdf().set(pdfOpts).from(pdfModal).outputPdf('blob').then(result => {\r\n\t\t\t\tif (sendType === 'Text Only') {\r\n\t\t\t\t\tthis.textPdfFile(result)\r\n\t\t\t\t}\r\n\t\t\t\telse if (sendType === 'Email Only') {\r\n\t\t\t\t\tthis.emailPdfFile(result)\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.textPdfFile(result)\r\n\t\t\t\t\tthis.emailPdfFile(result)\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\telse {\r\n\t\t\thtml2pdf().set(pdfOpts).from(pdfModal).save().then(res => {\r\n\t\t\t\tthis.pdfGenerating = false\r\n\t\t\t\tpdfModal.innerHTML = ''\r\n\t\t\t\tthis.dissmisJobModal()\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\tblobToFile(theBlob: Blob, fileName: string): File {\r\n\t\treturn new File([theBlob], fileName, { lastModified: new Date().getTime(), type: theBlob.type })\r\n\t}\r\n\r\n\ttextPdfFile(pdf): void {\r\n\t\tconst pdfFile = this.blobToFile(pdf, `${this.jobType}${this.job.ID}.pdf`)\r\n\t\tlet textData = {\r\n\t\t\trecipients: this.textRecipients,\r\n\t\t\tbody: '',\r\n\t\t\trelatedObjectId: this.job.ID\r\n\t\t}\r\n\r\n\t\t// upload new pdf file to get file ID before texting\r\n\t\tthis.filesService.uploadFile(pdfFile, '00000000-0000-0000-0000-000000000000', this.jobType, true).subscribe(\r\n\t\t\tres => {\r\n\t\t\t\tlet pdfFileID\r\n\t\t\t\tif (isArray(res)) {\r\n\t\t\t\t\tpdfFileID = res[0]\r\n\t\t\t\t\t// Construct text message body with downloadable file URL\r\n\t\t\t\t\ttextData.body = `${this.jobType} details requested: ${this.config.apiUrl}/File/sms/${pdfFileID}`\r\n\t\t\t\t\t// Send text\r\n\t\t\t\t\tthis.smsService.sendSMS(textData).subscribe((data: any) => {\r\n\t\t\t\t\t\tthis.alertService.success(`Message sent successfully!`, false);\r\n\t\t\t\t\t\tthis.textSent = true\r\n\t\t\t\t\t\tthis.dissmisJobModal();\r\n\t\t\t\t\t\tthis.activityLogService.addLogEntry(this.jobType, this.job.ID, 'Job details sent via SMS to ' + textData.recipients.join(', '));\r\n\t\t\t\t\t},\r\n\t\t\t\t\t\terror => {\r\n\t\t\t\t\t\t\tthis.alertService.error('There was an error sending your message. Please try again.', false);\r\n\t\t\t\t\t\t\tdocument.body.scrollIntoView({ behavior: \"smooth\" });\r\n\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t}\r\n\r\n\temailPdfFile(pdf): void {\r\n\t\tconst pdfFile = this.blobToFile(pdf, `${this.jobType}-${this.job.ID}.pdf`)\r\n\r\n\t\t// upload new pdf file to get file ID before emailing\r\n\t\tthis.filesService.uploadFile(pdfFile, '00000000-0000-0000-0000-000000000000', this.jobType).subscribe(\r\n\t\t\tres => {\r\n\t\t\t\tlet pdfFileID\r\n\t\t\t\tif (isArray(res)) {\r\n\t\t\t\t\tpdfFileID = res[0]\r\n\t\t\t\t\t// Add newly uploaded PDF file to email attachments array\r\n\t\t\t\t\tthis.emailJobData.attachmentFiles.unshift(pdfFileID)\r\n\r\n\t\t\t\t\tthis.emailJobData.relatedObjectId = this.job.ID\r\n\r\n\t\t\t\t\t// Send email\r\n\t\t\t\t\tthis.emailService.sendEmail(this.emailJobData).subscribe((data: any) => {\r\n\t\t\t\t\t\tthis.alertService.success(`Message sent successfully!`, false);\r\n\t\t\t\t\t\tthis.emailSent = true\r\n\t\t\t\t\t\tthis.dissmisJobModal()\r\n\t\t\t\t\t\tthis.activityLogService.addLogEntry(this.jobType, this.job.ID, 'Job details sent via Email to ' + this.emailRecipients.join(', '));\r\n\t\t\t\t\t},\r\n\t\t\t\t\t\terror => {\r\n\t\t\t\t\t\t\tthis.alertService.error('There was an error sending your message. Please try again.', false);\r\n\t\t\t\t\t\t\tdocument.body.scrollIntoView({ behavior: \"smooth\" });\r\n\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t}\r\n\r\n\topenModal(modal, windowClass) {\r\n\t\tthis.modalReference = this.modalService.open(modal, { ariaLabelledBy: \"modal-basic-title\", windowClass })\r\n\t\tthis.modalReference.result.then(\r\n\t\t\tresult => {\r\n\t\t\t\t`Closed with ${result}`\r\n\t\t\t},\r\n\t\t\treason => {\r\n\t\t\t\t`Dismissed with ${reason}`\r\n\t\t\t}\r\n\t\t)\r\n\t}\r\n\r\n\t// Get multiple employees at the same time\r\n\tpublic getMultipleEmployees(recipients): Observable {\r\n\t\tlet responses = recipients.map(recipient => {\r\n\t\t\treturn this.http.get(`${this.config.apiUrl}/Employees/get/${recipient}`)\r\n\t\t})\r\n\r\n\t\treturn forkJoin(responses)\r\n\t}\r\n\r\n\tpublic textEmailOptions(form: FormGroup, value: string) {\r\n\t\tswitch (value) {\r\n\t\t\tcase 'Text Only':\r\n\t\t\t\tform.get('TextRecipients').setValidators([Validators.required])\r\n\t\t\t\tform.get('TextRecipients').updateValueAndValidity()\r\n\t\t\t\tform.get('EmailRecipients').clearValidators()\r\n\t\t\t\tform.get('EmailRecipients').updateValueAndValidity()\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'Email Only':\r\n\t\t\t\tform.get('TextRecipients').clearValidators()\r\n\t\t\t\tform.get('TextRecipients').updateValueAndValidity()\r\n\t\t\t\tform.get('EmailRecipients').setValidators([Validators.required])\r\n\t\t\t\tform.get('EmailRecipients').updateValueAndValidity()\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'Email and Text':\r\n\t\t\t\tform.get('TextRecipients').setValidators([Validators.required])\r\n\t\t\t\tform.get('TextRecipients').updateValueAndValidity()\r\n\t\t\t\tform.get('EmailRecipients').setValidators([Validators.required])\r\n\t\t\t\tform.get('EmailRecipients').updateValueAndValidity()\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic getJobPdf(pdfOptions: any) {\r\n\t\tlet pdfHtml: string = ''\r\n\t\tlet paymentsHtml: string = ''\r\n\t\tlet poItemsHtml: string = ''\r\n\t\tlet breakClass: string = ''\r\n\t\tconst { headerTitle, payments, poItems, jobInfo, comments, activityLog, jobType } = pdfOptions\r\n\r\n\t\t// Remove pencil edit icons\r\n\t\tconst pencils = jobInfo.getElementsByClassName('fa-pencil')\r\n\t\tfor (const pencil of pencils) {\r\n\t\t\tpencil.style.display = 'none'\r\n\t\t}\r\n\r\n\t\t// PDF Header\r\n\t\tpdfHtml += `\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t

${headerTitle}

\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t

Job Information

\r\n\t\t\t\t\t${jobInfo.outerHTML}\r\n\t\t`\r\n\r\n\t\tif (payments) {\r\n\t\t\tconst jobPayments = this.buildPaymentsObject(payments)\r\n\t\t\tpaymentsHtml += `\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\tPayment Details\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t`\r\n\t\t\tObject.keys(jobPayments).forEach((key: any) => {\r\n\t\t\t\tpaymentsHtml += `\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t${jobPayments[key].title}\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t${jobPayments[key].data}\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t`\r\n\t\t\t})\r\n\t\t\t// Close #job-payment-data\r\n\t\t\tpaymentsHtml += '
'\r\n\t\t\tpdfHtml += paymentsHtml\r\n\t\t}\r\n\r\n\t\t// Top Wrapper Close\r\n\t\tpdfHtml += '
'\r\n\r\n\t\tlet poStyle: string = ''\r\n\t\tif (!payments) {\r\n\t\t\tpoStyle = 'margin-top:160px'\r\n\t\t}\r\n\r\n\t\tif (poItems) {\r\n\t\t\tlet poOptionsHtml: string = ''\r\n\t\t\tpoItemsHtml += `\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t`\r\n\r\n\t\t\tfor (const [key, value] of Object.entries(poItems)) {\r\n\t\t\t\tif (key !== 'PO' && key !== 'PermitStatus') {\r\n\t\t\t\t\tif (typeof value !== 'boolean') {\r\n\t\t\t\t\t\tpoItemsHtml += `\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t`\r\n\r\n\t\t\t\t\t\tif (value['Options']) {\r\n\t\t\t\t\t\t\tconst optionsArray = Object.keys(value['Options'])\r\n\t\t\t\t\t\t\toptionsArray.forEach((element, index) => {\r\n\t\t\t\t\t\t\t\tpoItemsHtml += `\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t`\r\n\t\t\t\t\t\t\t\tif (index !== optionsArray.length - 1) {\r\n\t\t\t\t\t\t\t\t\tpoItemsHtml += '
'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tpoItemsHtml += `\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t`\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tpoOptionsHtml += `\r\n\t\t\t\t\t\t\t${key}:  ${value ? ' Yes' : ' No'}\r\n\t\t\t\t\t\t`\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tpoItemsHtml += `\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
PO ItemShortQuantityActualUnitOptions
${key}${value['Short'] ? 'Yes' : 'No'}${value['Quantity'] ? value['Quantity'] : 0}${value['Actual'] ? value['Actual'] : 0}${value['Unit'] ? value['Unit'] : 0}${element}: ${value['Options'][element]}
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
${poOptionsHtml}
\r\n\t\t\t`\r\n\t\t\tpdfHtml += poItemsHtml\r\n\t\t}\r\n\r\n\t\tif (comments) {\r\n\t\t\t// Set margin-top based on which modules are present above the comments\r\n\t\t\tlet mt = 0\r\n\r\n\t\t\tif (jobType === 'builder') {\r\n\t\t\t\tif (poItems) {\r\n\t\t\t\t\tmt += 370\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (payments) {\r\n\t\t\t\t\t\tmt += 280\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tmt += 420\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet commentsHtml: string = `\r\n\t\t\t\t
\r\n\t\t\t\t\t

Comments

\r\n\t\t\t`\r\n\r\n\t\t\tcomments.forEach((comment: any, index) => {\r\n\t\t\t\tconst date = new Date(comment.LastModifiedDate).toLocaleDateString()\r\n\t\t\t\tconst time = new Date(comment.LastModifiedDate).toLocaleTimeString()\r\n\t\t\t\tcomment.CleanCommentText = this.commentService.generateCleanCommentText(comment.CommentText)\r\n\t\t\t\tcommentsHtml += `\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t${comment.User.FullName || comment.User.Email}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t${date}, ${time}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
${comment.CleanCommentText}
\r\n\t\t\t\t\t
\r\n\t\t\t\t`\r\n\t\t\t\tif (index !== comments.length - 1) {\r\n\t\t\t\t\tcommentsHtml += '

'\r\n\t\t\t\t}\r\n\t\t\t})\r\n\r\n\t\t\tcommentsHtml += '
'\r\n\r\n\t\t\tpdfHtml += commentsHtml\r\n\t\t}\r\n\r\n\t\tif (activityLog) {\r\n\t\t\t// Set margin-top based on which modules are present above the activity log\r\n\t\t\tlet mt = 0\r\n\r\n\t\t\tif (jobType === 'builder') {\r\n\t\t\t\tif (!poItems && !comments) {\r\n\t\t\t\t\tif (payments) {\r\n\t\t\t\t\t\tmt += 280\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tmt += 420\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet activityHtml: string = `\r\n\t\t\t\t
\r\n\t\t\t\t\t

Activity Log

\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t`\r\n\r\n\t\t\tactivityLog.forEach((item: any, index) => {\r\n\t\t\t\tconst bgColor = index % 2 !== 0 ? 'background-color:#E8E8E8' : ''\r\n\t\t\t\tactivityHtml += `\r\n\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t${item.Description}\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t`\r\n\t\t\t})\r\n\r\n\t\t\tactivityHtml += `\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t`\r\n\r\n\t\t\tpdfHtml += activityHtml\r\n\t\t}\r\n\r\n\t\t// Close .modal-body\r\n\t\tpdfHtml += '
'\r\n\t\tpdfHtml += `\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t

Generating PDF...

\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t`\r\n\r\n\t\treturn pdfHtml\r\n\t}\r\n\r\n\tpublic buildPaymentsObject(payments: any) {\r\n\t\tlet paymentsObj = {}\r\n\t\tif (payments.PaymentAmount) {\r\n\t\t\tpaymentsObj = {\r\n\t\t\t\t...paymentsObj,\r\n\t\t\t\tamount: {\r\n\t\t\t\t\ttitle: 'Payment Amount',\r\n\t\t\t\t\tdata: payments.PaymentAmount\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (payments.PaymentDate) {\r\n\t\t\tpaymentsObj = {\r\n\t\t\t\t...paymentsObj,\r\n\t\t\t\tdate: {\r\n\t\t\t\t\ttitle: 'Payment Date',\r\n\t\t\t\t\tdata: new Date(payments.PaymentDate).toLocaleDateString(),\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (payments.PaymentID) {\r\n\t\t\tpaymentsObj = {\r\n\t\t\t\t...paymentsObj,\r\n\t\t\t\tid: {\r\n\t\t\t\t\ttitle: 'Payment ID',\r\n\t\t\t\t\tdata: payments.PaymentID\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn paymentsObj\r\n\t}\r\n\r\n\t// TODO: Set use to power getJob requests for all job types\r\n\tpublic getJobs(endpoint = '', status = 'all') {\r\n\t\tlet url = `${this.config.apiUrl}/${endpoint}/all`;\r\n\r\n\t\tif (status !== 'all') {\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/list?status=${status}`\r\n\t\t}\r\n\r\n\t\treturn this.http.get(url, { observe: 'response' })\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\r\n\t// Builder Jobs\r\n\t////////////////////////////////////////////\r\n\tpublic getBuilderJobs(status = 'all', count = 10, offset = 0, includeCalendarNames = false) {\r\n\t\tlet endpoint = 'builderjobs',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/all?count=${count}&offset=${offset}`;\r\n\r\n\t\tif (status !== 'all') {\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/list?status=${status}&count=${count}&offset=${offset}`\r\n\t\t}\r\n\r\n\t\tif (includeCalendarNames) {\r\n\t\t\turl = `${url}&includeCalendarNames=true`\r\n\t\t}\r\n\r\n\t\treturn this.http.get(url, { observe: 'response' })\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic getMyBuilderJobs(count = 10, offset = 0, includeCalendarNames = false) {\r\n\t\tlet endpoint = 'builderjobs',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/mine?count=${count}&offset=${offset}`;\r\n\r\n\t\tif (includeCalendarNames) {\r\n\t\t\turl = `${url}&includeCalendarNames=true`\r\n\t\t}\r\n\r\n\t\treturn this.http.get(url, { observe: 'response' })\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic getBuilderJobsDatatable(data) {\r\n\t\tlet endpoint = 'builderjobs',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/datatable`;\r\n\r\n\t\treturn this.http.post(url, data)\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic getBuilderJob(id: string) {\r\n\t\tlet endpoint = 'builderjobs',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/get?id=${id}`;\r\n\r\n\t\treturn this.http.get(url, { observe: 'response' })\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic createBuilderJob(submission: any) {\r\n\t\tlet endpoint = 'builderjobs',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/create`,\r\n\t\t\tdata = {\r\n\t\t\t\tStatus: 'Active',\r\n\t\t\t\tPermitStatus: 'Unfiled',\r\n\t\t\t\tContacts: {\r\n\t\t\t\t\tSupervisor: '',\r\n\t\t\t\t\tCrewLeader: ''\r\n\t\t\t\t},\r\n\t\t\t};\r\n\r\n\t\tfor (let key in submission) {\r\n\t\t\tvar control = submission[key],\r\n\t\t\t\tvalue = control.value;\r\n\r\n\t\t\tif (key === 'PaymentDate'\r\n\t\t\t\t|| key === 'ScheduledDate'\r\n\t\t\t\t|| key === 'DryInStartDate'\r\n\t\t\t\t|| key === 'ShingleStartDate'\r\n\t\t\t\t|| key === 'StuccoStopStartDate'\r\n\t\t\t\t|| key === 'MetalStartDate') {\r\n\t\t\t\tif (value) {\r\n\t\t\t\t\tvalue = `${value.year}/${value.month}/${value.day}`;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tdata[key] = value;\r\n\t\t}\r\n\r\n\t\treturn this.http.post(url, data)\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(error => this.handleError(error, 'Check your submisision and try again.'))\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic updateBuilderJob(id, data: any) {\r\n\t\tlet endpoint = 'builderjobs',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/update/${id}`;\r\n\r\n\t\tif ('Status' in data) {\r\n\t\t\tif (data['Status'] == null) {\r\n\t\t\t\tdata['Status'] = 'Active';\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdata['Status'] = 'Active';\r\n\t\t}\r\n\r\n\t\t// console.log(data)\r\n\r\n\t\treturn this.http.put(url, data)\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n \t// public getSearchBuilderJobsUrl() {\r\n\t// \tlet endpoint = 'builderjobs',\r\n\t// \t\t\turl = `${this.config.apiUrl}/${endpoint}/search`;\r\n\t// \treturn url;\r\n\t// }\r\n\r\n \tpublic searchBuilderJobs(params) {\r\n\t\tlet endpoint = 'builderjobs',\r\n\t\t\t\turl = `${this.config.apiUrl}/${endpoint}/search`;\r\n\r\n\t\tconsole.log('searchBuilderJobs', url, params);\r\n\r\n\t\treturn this.http.post(url, params)\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(error => this.handleError(error, 'Check your submisision and try again.'))\r\n\t\t\t);\r\n\t}\r\n\r\n\t// Repair Jobs\r\n\t////////////////////////////////////////////\r\n\r\n\tpublic getRepairJobs(status = 'all', count = 10, offset = 0, includeCalendarNames = false) {\r\n\t\tlet endpoint = 'repairs',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/all?count=${count}&offset=${offset}`;\r\n\r\n\t\tif (status !== 'all') {\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/list?status=${status}`;\r\n\t\t}\r\n\r\n\t\tif (includeCalendarNames) {\r\n\t\t\turl = `${url}&includeCalendarNames=true`\r\n\t\t}\r\n\r\n\t\treturn this.http.get(url, { observe: 'response' })\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic getMyRepairJobs(count = 10, offset = 0, includeCalendarNames = false) {\r\n\t\tlet endpoint = 'repairs',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/mine?count=${count}&offset=${offset}`;\r\n\r\n\t\tif (includeCalendarNames) {\r\n\t\t\turl = `${url}&includeCalendarNames=true`\r\n\t\t}\r\n\r\n\t\treturn this.http.get(url, { observe: 'response' })\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic getRepairJob(id: string) {\r\n\t\tlet endpoint = 'repairs',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/get?id=${id}`;\r\n\r\n\t\treturn this.http.get(url, { observe: 'response' })\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic createRepairJob(submission: any) {\r\n\t\tlet endpoint = 'repairs',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/create`,\r\n\t\t\tdata = {\r\n\t\t\t\tstatus: \"Estimated\"\r\n\t\t\t};\r\n\r\n\t\tfor (let key in submission) {\r\n\t\t\tvar control = submission[key],\r\n\t\t\t\tvalue = control.value;\r\n\r\n\t\t\tif (key === 'ScheduledDate' || key === 'CallDate' || key === 'ScheduledDateEnd') {\r\n\t\t\t\tif (value) {\r\n\t\t\t\t\tvalue = `${value.year}/${value.month}/${value.day}`;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tdata[key] = value;\r\n\t\t}\r\n\r\n\t\treturn this.http.post(url, data)\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic updateRepairJob(id, data: any) {\r\n\t\tlet endpoint = 'repairs',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/update?id=${id}`;\r\n\r\n\t\tif ('Status' in data) {\r\n\t\t\tif (data['Status'] == null) {\r\n\t\t\t\tdata['Status'] = 'Estimated';\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdata['Status'] = 'Estimated';\r\n\t\t}\r\n\r\n\t\treturn this.http.put(url, data)\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\t// Reroof Jobs\r\n\t////////////////////////////////////////////\r\n\r\n\tpublic getReroofJobs(status = 'all', count = 5000, offset = 0, includeCalendarNames = false) {\r\n\t\tlet endpoint = 'reroofs',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/all?count=${count}&offset=${offset}`;\r\n\r\n\t\tif (status !== 'all') {\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/list?status=${status}`;\r\n\t\t}\r\n\r\n\t\tif (includeCalendarNames) {\r\n\t\t\turl = `${url}&includeCalendarNames=true`\r\n\t\t}\r\n\r\n\t\treturn this.http.get(url, { observe: 'response' })\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic getMyReroofJobs(count = 10, offset = 0, includeCalendarNames = false) {\r\n\t\tlet endpoint = 'reroofs',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/mine?count=${count}&offset=${offset}`;\r\n\r\n\t\tif (includeCalendarNames) {\r\n\t\t\turl = `${url}&includeCalendarNames=true`\r\n\t\t}\r\n\r\n\t\treturn this.http.get(url, { observe: 'response' })\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic getReroofJob(id: string) {\r\n\t\tlet endpoint = 'reroofs',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/get?id=${id}`;\r\n\r\n\t\treturn this.http.get(url, { observe: 'response' })\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic createReroofJob(submission: any) {\r\n\t\tlet endpoint = 'reroofs',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/create`,\r\n\t\t\tdata = {\r\n\t\t\t\tstatus: \"Estimated\"\r\n\t\t\t};\r\n\r\n\t\tfor (let key in submission) {\r\n\t\t\tvar control = submission[key],\r\n\t\t\t\tvalue = control.value;\r\n\r\n\t\t\tif (key === 'ScheduledDate' || key === 'CallDate' || key === 'ScheduledDateEnd') {\r\n\t\t\t\tif (value) {\r\n\t\t\t\t\tvalue = `${value.year}/${value.month}/${value.day}`;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tdata[key] = value;\r\n\t\t}\r\n\r\n\t\treturn this.http.post(url, data)\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic updateReroofJob(id, data: any) {\r\n\t\tlet endpoint = 'reroofs',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/update?id=${id}`;\r\n\r\n\t\tif ('Status' in data) {\r\n\t\t\tif (data['Status'] == null) {\r\n\t\t\t\tdata['Status'] = 'Estimated';\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdata['Status'] = 'Estimated';\r\n\t\t}\r\n\r\n\t\treturn this.http.put(url, data)\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\t// Warranty Jobs\r\n\t////////////////////////////////////////////\r\n\r\n\tpublic getWarrantyJobs(status = 'all', count = 2000, offset = 0, includeCalendarNames = false) {\r\n\t\tlet endpoint = 'warranties',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/all?count=${count}&offset=${offset}`;\r\n\r\n\t\tif (status !== 'all') {\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/list?status=${status}`;\r\n\t\t}\r\n\r\n\t\tif (includeCalendarNames) {\r\n\t\t\turl = `${url}&includeCalendarNames=true`\r\n\t\t}\r\n\r\n\t\treturn this.http.get(url, { observe: 'response' })\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic getWarrantyJobsDatatable(data) {\r\n\t\tlet endpoint = 'warranties',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/datatable`;\r\n\r\n\t\treturn this.http.post(url, data)\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic getReroofJobsDatatable(data) {\r\n\t\tlet endpoint = 'reroofs',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/datatable`;\r\n\r\n\t\treturn this.http.post(url, data)\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic getRepairJobsDatatable(data) {\r\n\t\tlet endpoint = 'repairs',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/datatable`;\r\n\r\n\t\treturn this.http.post(url, data)\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic getMyWarrantyJobs(count = 10, offset = 0, includeCalendarNames = false) {\r\n\t\tlet endpoint = 'warranties',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/mine?count=${count}&offset=${offset}`;\r\n\r\n\t\tif (includeCalendarNames) {\r\n\t\t\turl = `${url}&includeCalendarNames=true`\r\n\t\t}\r\n\r\n\t\treturn this.http.get(url, { observe: 'response' })\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic getWarrantyJob(id: string) {\r\n\t\tlet endpoint = 'warranties',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/get?id=${id}`;\r\n\r\n\t\treturn this.http.get(url, { observe: 'response' })\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic createWarrantyJob(submission: any) {\r\n\t\tlet endpoint = 'warranties',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/create`,\r\n\t\t\tdata = {\r\n\t\t\t\tstatus: \"Estimated\"\r\n\t\t\t};\r\n\r\n\t\tfor (let key in submission) {\r\n\t\t\tvar control = submission[key],\r\n\t\t\t\tvalue = control.value;\r\n\r\n\t\t\tif (key === 'ScheduledDate' || key === 'WorkOrderReceivedDate' || key === 'ScheduledDateEnd') {\r\n\t\t\t\tif (value) {\r\n\t\t\t\t\tvalue = `${value.year}/${value.month}/${value.day}`;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tdata[key] = value;\r\n\t\t}\r\n\r\n\t\treturn this.http.post(url, data)\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic updateWarrantyJob(id, data: any) {\r\n\t\tlet endpoint = 'warranties',\r\n\t\t\turl = `${this.config.apiUrl}/${endpoint}/update?id=${id}`;\r\n\r\n\t\tif ('Status' in data) {\r\n\t\t\tif (data['Status'] == null) {\r\n\t\t\t\tdata['Status'] = 'Estimated';\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdata['Status'] = 'Estimated';\r\n\t\t}\r\n\r\n\t\treturn this.http.put(url, data)\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { AuthService } from '@/services/auth/auth.service';\r\n\r\nimport { Role } from '@/models/role';\r\nimport { User } from '@/models/user';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RoleService {\r\n currentUser: User\r\n\r\n constructor(private authService: AuthService)\r\n {\r\n this.authService.currentUser.subscribe(user => this.currentUser = user);\r\n }\r\n\r\n get isAdmin() {\r\n return this.currentUser && this.currentUser.role.name === Role.Admin;\r\n }\r\n\r\n get isSupervisor() {\r\n return this.currentUser && this.currentUser.role.name === Role.Supervisor;\r\n }\r\n\r\n get isCrewLeader() {\r\n return this.currentUser && this.currentUser.role.name === Role.CrewLeader;\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\nimport { APP_CONFIG, AppConfig } from '@/app-config.module';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SMSService {\r\n\tendpoint: string = 'sms'\r\n\r\n constructor(\r\n\t\tprivate http: HttpClient,\r\n\t\t@Inject(APP_CONFIG) private config: AppConfig\r\n\t) { }\r\n\r\n\tprivate handleError(error: any, context: any = '') {\r\n\t\tconsole.error('Invalid Request')\r\n\r\n\t\tlet message = `Failure: ${error}`;\r\n\r\n\t\t// if( context ) {\r\n\t\t// \tmessage = `${message} ${context}`;\r\n\t\t// }\r\n\r\n\t\t// return an observable with a user-facing error message\r\n\t\treturn throwError(message);\r\n\t}\r\n\r\n\tpublic sendSMS( smsData: any ){\r\n\t\tconst url = `${ this.config.apiUrl }/${ this.endpoint }/send`\r\n\r\n\t\treturn this.http.post( url, smsData )\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(error => this.handleError(error, 'Check your submisision and try again.') )\r\n\t\t\t);\r\n\t}\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\nimport { APP_CONFIG, AppConfig } from '@/app-config.module';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class UserService {\r\n\tendpoint = 'users'\r\n\r\n\tconstructor(\r\n\t\tprivate http: HttpClient,\r\n\t\t@Inject(APP_CONFIG) private config: AppConfig\r\n\t) { }\r\n\r\n\tprivate handleError(error: any, context: any = '') {\r\n\t\tconsole.error('Invalid Request')\r\n\r\n\t\tlet message = `Failure: ${error}`;\r\n\r\n\t\t// if( context ) {\r\n\t\t// \tmessage = `${message} ${context}`;\r\n\t\t// }\r\n\r\n\t\t// return an observable with a user-facing error message\r\n\t\treturn throwError(message);\r\n\t}\r\n\r\n\tpublic getUsers(roleID = 1) {\r\n\t\tconst url = `${this.config.apiUrl}/${this.endpoint}/list?roleID=${roleID}`;\r\n\r\n\t\treturn this.http.get(url, { observe: 'response' })\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic getAllUsers() {\r\n\t\tconst url = `${this.config.apiUrl}/${this.endpoint}/all`;\r\n\r\n\t\treturn this.http.get(url, { observe: 'response' })\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\t// Get single user by id\r\n\tpublic getUser(userID) {\r\n\t\tconst url = `${this.config.apiUrl}/${this.endpoint}/get/${userID}`;\r\n\r\n\t\treturn this.http.get(url, { observe: 'response' })\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic createUser(data: any) {\r\n\t\tlet url = `${this.config.apiUrl}/${this.endpoint}/create`;\r\n\r\n\t\treturn this.http.post(url, data)\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic updateUser(id, data: any) {\r\n\t\tlet url = `${this.config.apiUrl}/${this.endpoint}/update/${id}`;\r\n\r\n\t\treturn this.http.post(url, data)\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic deactivateUser( id: string ) {\r\n\t\tconst url = `${ this.config.apiUrl }/${ this.endpoint }/delete/${ id }`;\r\n\r\n\t\treturn this.http.delete( url )\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(this.handleError)\r\n\t\t\t);\r\n\t}\r\n\r\n\tpublic resetPassword(email: string) {\r\n\t\tconst endpoint = 'Account',\r\n\t\t\t url = `${this.config.apiUrl}/${endpoint}/forgotpassword?email=${email}`;\r\n\r\n\t\treturn this.http.post(url, email)\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(error => this.handleError(error, 'Check your submission and try again.'))\r\n\t\t\t);\r\n\t}\r\n\r\n\r\n\tpublic newPassword(password: string, token: string) {\r\n\t\tconst endpoint = 'Account',\r\n\t\t\t url = `${this.config.apiUrl}/${endpoint}/changepassword`;\r\n\r\n\t\t\tconst data = {\r\n\t\t\t\tpassword: password,\r\n\t\t\t\tresetToken: token\r\n\t\t\t}\r\n\r\n\t\treturn this.http.post(url, data)\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError(error => this.handleError(error, 'Check your submission and try again.'))\r\n\t\t\t);\r\n\t}\r\n}\r\n","import { Injectable, Renderer2, Inject } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\n\r\nexport class UtilitiesService {\r\n\r\n\tconstructor(\r\n\t\t@Inject(DOCUMENT) private document: Document\r\n\t) { }\r\n\r\n\tformatAddressString(address) {\r\n\t\tif (!address) return false;\r\n\r\n\t\tlet start = [],\r\n\t\t\tend = [],\r\n\t\t\toutput = [];\r\n\r\n\t\t// Setup address parts\r\n\t\tif (address.address) start.push(address.address);\r\n\r\n\t\tif (address.address2) start.push(address.address2);\r\n\r\n\t\tif (address.city) start.push(address.city);\r\n\r\n\t\tif (address.state) end.push(address.state);\r\n\r\n\t\tif (address.zipCode) end.push(address.zipCode);\r\n\r\n\t\t// Remove empty values\r\n\t\tstart = start.filter((value) => {\r\n\t\t\tvalue = value.trim();\r\n\r\n\t\t\treturn value ? true : false;\r\n\t\t});\r\n\r\n\t\t// Remove empty values\r\n\t\tend = end.filter((value) => {\r\n\t\t\tvalue = value.trim();\r\n\r\n\t\t\treturn value ? true : false;\r\n\t\t});\r\n\r\n\t\t// Setup output string\r\n\t\tif (start.length) output.push(start.join(' ').trim());\r\n\t\tif (end.length) output.push(end.join(' ').trim());\r\n\r\n\t\treturn output.join(', ');\r\n\t}\r\n\r\n\t/**\r\n\t * Append the JS tag to the Document Body.\r\n\t * @param renderer The Angular Renderer\r\n\t * @param src The path to the script\r\n\t * @returns the script element\r\n\t */\r\n\tpublic loadJsScript(renderer: Renderer2, src: string): HTMLScriptElement {\r\n\t\tconst script = renderer.createElement('script');\r\n\t\tscript.type = 'text/javascript';\r\n\t\tscript.src = src;\r\n\t\trenderer.appendChild(this.document.body, script);\r\n\t\treturn script;\r\n\t}\r\n\r\n\tpublic loadTransformersJsModule(renderer: Renderer2): HTMLScriptElement {\r\n\t\tconst script = renderer.createElement('script');\r\n\t\tscript.type = 'module';\r\n\t\tscript.appendChild(document.createTextNode('import { pipeline } from \\'https://cdn.jsdelivr.net/npm/@xenova/transformers@2.17.2\\';window.transformersPipeline = pipeline;'));\r\n\t\trenderer.appendChild(this.document.body, script);\r\n\t\treturn script;\r\n\t}\r\n}\r\n","module.exports = \"
\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t

\\r\\n\\t\\t\\t\\tAlerts\\r\\n\\t\\t\\t

\\r\\n\\t\\t
\\r\\n\\t\\t\\r\\n\\t
\\r\\n
\\r\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3ZpZXdzL2FsZXJ0cy9hbGVydHMuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'alerts',\r\n templateUrl: './alerts.component.html',\r\n styleUrls: ['./alerts.component.scss']\r\n})\r\nexport class AlertsComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { NgSelect2Module } from 'ng-select2';\r\nimport { DataTablesModule } from 'angular-datatables';\r\n\r\nimport { AuthGuard } from '@/guards/auth/auth.guard';\r\nimport { Role } from '@/models/role';\r\n\r\nimport { AlertsDatatableComponent } from '@/components/datatable/alerts-datatable/alerts-datatable.component';\r\nimport { AlertsComponent } from './alerts.component';\r\n\r\nexport const routes: Routes = [\r\n\t{\r\n\t\tpath: 'view',\r\n\t\tcomponent: AlertsComponent,\r\n\t\tcanActivate: [AuthGuard],\r\n\t\tdata: { roles: [Role.Admin, Role.Supervisor, Role.CrewLeader] }\r\n\t},\r\n\t{\r\n\t\tpath: '',\r\n\t\tredirectTo: '/alerts/view',\r\n\t\tpathMatch: 'full'\r\n\t},\r\n\t{\r\n\t\tpath: '**',\r\n\t\tredirectTo: '/alerts/view',\r\n\t\tpathMatch: 'full'\r\n\t}\r\n];\r\n\r\n@NgModule({\r\n\tdeclarations: [\r\n\t\tAlertsComponent,\r\n\t\tAlertsDatatableComponent,\r\n\t],\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tNgSelect2Module,\r\n\t\tDataTablesModule,\r\n\t\tRouterModule.forChild(routes),\r\n\t],\r\n\texports: [\r\n\t\tAlertsDatatableComponent\r\n\t]\r\n})\r\nexport class AlertsModule { }\r\n","module.exports = \"
\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t

Quick Links

\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t

Builder Jobs

\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t

Warranty Jobs

\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t

Repair Jobs

\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t

Reroof Jobs

\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
  • View All
  • \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
  • View Calendar
  • \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
  • Add new
  • \\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
  • View All
  • \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
  • View Calendar
  • \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
  • Add new
  • \\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
  • View All
  • \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
  • View Calendar
  • \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
  • Add new
  • \\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
  • View All
  • \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
  • View Calendar
  • \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
  • Add new
  • \\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t
\\r\\n
\\r\\n\"","module.exports = \".c-dashboard-section {\\n margin-bottom: 40px;\\n}\\n\\n.c-dashboard-actions {\\n margin-bottom: 2rem;\\n}\\n\\n.c-dashboard-actions_action {\\n background: #fefefe;\\n padding: 1rem;\\n text-align: center;\\n padding: 1rem 1.25rem;\\n}\\n\\n.c-dashboard-actions_quick-list {\\n list-style-type: none;\\n padding-left: 0;\\n margin-bottom: 5px;\\n}\\n\\n.c-dashboard-actions_quick-list .btn {\\n width: 100%;\\n margin-bottom: 10px;\\n}\\n\\n.c-dashboard-actions_quick-list li:last-of-type .btn {\\n margin-bottom: 0;\\n}\\n\\n.c-dashboard-actions_quick-col {\\n display: none;\\n}\\n\\n@media (min-width: 768px) {\\n .c-dashboard-actions_quick-col {\\n display: block;\\n }\\n}\\n\\n.c-dashboard-actions .accordion {\\n width: 90%;\\n margin: auto;\\n display: block;\\n}\\n\\n@media (min-width: 768px) {\\n .c-dashboard-actions .accordion {\\n display: none;\\n }\\n}\\n\\n.c-dashboard-actions .accordion .card-header .btn-link {\\n width: 100%;\\n text-align: left;\\n}\\n\\n.c-dashboard-actions .accordion .card-header .btn-link:hover {\\n text-decoration: none;\\n}\\n\\n.c-dashboard-shortcuts {\\n text-align: center;\\n}\\n\\n.c-dashboard-shortcuts_shortcut {\\n margin: 0 2em;\\n}\\n\\n.c-dashboard-shortcuts hr {\\n margin-left: auto;\\n margin-right: auto;\\n margin-top: 2rem;\\n width: 84%;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdmlld3MvZGFzaGJvYXJkL0M6XFxVc2Vyc1xcRGFuaWVsXFxEZXNrdG9wXFxQcm9qZWN0c1xcU3RlcmxpbmdSb29maW5nL3NyY1xcYXBwXFx2aWV3c1xcZGFzaGJvYXJkXFxkYXNoYm9hcmQuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3ZpZXdzL2Rhc2hib2FyZC9kYXNoYm9hcmQuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3ZpZXdzL2Rhc2hib2FyZC9DOlxcVXNlcnNcXERhbmllbFxcRGVza3RvcFxcUHJvamVjdHNcXFN0ZXJsaW5nUm9vZmluZy9zcmNcXHN0eWxlc1xcX2luY2x1ZGVzLnNjc3MiLCJzcmMvYXBwL3ZpZXdzL2Rhc2hib2FyZC9DOlxcVXNlcnNcXERhbmllbFxcRGVza3RvcFxcUHJvamVjdHNcXFN0ZXJsaW5nUm9vZmluZy9zcmNcXHN0eWxlc1xcX3ZhcmlhYmxlcy5zY3NzIiwic3JjL2FwcC92aWV3cy9kYXNoYm9hcmQvQzpcXFVzZXJzXFxEYW5pZWxcXERlc2t0b3BcXFByb2plY3RzXFxTdGVybGluZ1Jvb2Zpbmcvbm9kZV9tb2R1bGVzXFxib290c3RyYXBcXHNjc3NcXG1peGluc1xcX2JyZWFrcG9pbnRzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0E7RUFDQyxtQkFBQTtBQ0pEOztBRE9BO0VBQ0MsbUJBQUE7QUNKRDs7QURNQztFRUNBLG1CQ05PO0VET1AsYUFBQTtFRkFDLGtCQUFBO0VBQ0EscUJBQUE7QUNIRjs7QURNQztFQUNDLHFCQUFBO0VBQ0EsZUFBQTtFQUNBLGtCQUFBO0FDSkY7O0FETUU7RUFDQyxXQUFBO0VBQ0EsbUJBQUE7QUNKSDs7QURPRTtFQUNDLGdCQUFBO0FDTEg7O0FEU0M7RUFDQyxhQUFBO0FDUEY7O0FHaUNJO0VKM0JIO0lBSUUsY0FBQTtFQ05EO0FBQ0Y7O0FEU0M7RUFDQyxVQUFBO0VBQ0EsWUFBQTtFQUNBLGNBQUE7QUNQRjs7QUd1Qkk7RUpuQkg7SUFNRSxhQUFBO0VDTkQ7QUFDRjs7QURVRztFQUNDLFdBQUE7RUFDQSxnQkFBQTtBQ1JKOztBRFVJO0VBQ0MscUJBQUE7QUNSTDs7QURlQTtFQUNDLGtCQUFBO0FDWkQ7O0FEY0M7RUFDQyxhQUFBO0FDWkY7O0FEZUM7RUFDQyxpQkFBQTtFQUNBLGtCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0FDYkYiLCJmaWxlIjoic3JjL2FwcC92aWV3cy9kYXNoYm9hcmQvZGFzaGJvYXJkLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnY29tcG9uZW50LWhlYWRlcic7XHJcbkBpbXBvcnQgXCJib290c3RyYXAvc2Nzcy9mdW5jdGlvbnNcIjtcclxuQGltcG9ydCBcImJvb3RzdHJhcC9zY3NzL3ZhcmlhYmxlc1wiO1xyXG5AaW1wb3J0IFwiYm9vdHN0cmFwL3Njc3MvbWl4aW5zXCI7XHJcblxyXG4uYy1kYXNoYm9hcmQtc2VjdGlvbiB7XHJcblx0bWFyZ2luLWJvdHRvbTogNDBweDtcclxufVxyXG5cclxuLmMtZGFzaGJvYXJkLWFjdGlvbnMge1xyXG5cdG1hcmdpbi1ib3R0b206IDJyZW07XHJcblxyXG5cdCZfYWN0aW9uIHtcclxuXHRcdEBpbmNsdWRlIHdpZGdldC1jb250YWluZXIoKTtcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdHBhZGRpbmc6IDFyZW0gMS4yNXJlbTtcclxuXHR9XHJcblxyXG5cdCZfcXVpY2stbGlzdHtcclxuXHRcdGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcclxuXHRcdHBhZGRpbmctbGVmdDogMDtcclxuXHRcdG1hcmdpbi1ib3R0b206IDVweDtcclxuXHJcblx0XHQuYnRue1xyXG5cdFx0XHR3aWR0aDogMTAwJTtcclxuXHRcdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcclxuXHRcdH1cclxuXHJcblx0XHRsaTpsYXN0LW9mLXR5cGUgLmJ0bntcclxuXHRcdFx0bWFyZ2luLWJvdHRvbTogMDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdCZfcXVpY2stY29se1xyXG5cdFx0ZGlzcGxheTogbm9uZTtcclxuXHJcblx0XHRAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKG1kKSB7XHJcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LmFjY29yZGlvbiB7XHJcblx0XHR3aWR0aDogOTAlO1xyXG5cdFx0bWFyZ2luOiBhdXRvO1xyXG5cdFx0ZGlzcGxheTogYmxvY2s7XHJcblxyXG5cdFx0QGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChtZCkge1xyXG5cdFx0XHRkaXNwbGF5OiBub25lO1xyXG5cdFx0fVxyXG5cclxuXHRcdC5jYXJkLWhlYWRlcntcclxuXHJcblx0XHRcdC5idG4tbGlua3tcclxuXHRcdFx0XHR3aWR0aDogMTAwJTtcclxuXHRcdFx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xyXG5cclxuXHRcdFx0XHQmOmhvdmVye1xyXG5cdFx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuLmMtZGFzaGJvYXJkLXNob3J0Y3V0cyB7XHJcblx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cclxuXHQmX3Nob3J0Y3V0IHtcclxuXHRcdG1hcmdpbjogMCAyZW07XHJcblx0fVxyXG5cclxuXHRociB7XHJcblx0XHRtYXJnaW4tbGVmdDogYXV0bztcclxuXHRcdG1hcmdpbi1yaWdodDogYXV0bztcclxuXHRcdG1hcmdpbi10b3A6IDJyZW07XHJcblx0XHR3aWR0aDogODQlO1xyXG5cdH1cclxufSIsIi5jLWRhc2hib2FyZC1zZWN0aW9uIHtcbiAgbWFyZ2luLWJvdHRvbTogNDBweDtcbn1cblxuLmMtZGFzaGJvYXJkLWFjdGlvbnMge1xuICBtYXJnaW4tYm90dG9tOiAycmVtO1xufVxuLmMtZGFzaGJvYXJkLWFjdGlvbnNfYWN0aW9uIHtcbiAgYmFja2dyb3VuZDogI2ZlZmVmZTtcbiAgcGFkZGluZzogMXJlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiAxcmVtIDEuMjVyZW07XG59XG4uYy1kYXNoYm9hcmQtYWN0aW9uc19xdWljay1saXN0IHtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIG1hcmdpbi1ib3R0b206IDVweDtcbn1cbi5jLWRhc2hib2FyZC1hY3Rpb25zX3F1aWNrLWxpc3QgLmJ0biB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xufVxuLmMtZGFzaGJvYXJkLWFjdGlvbnNfcXVpY2stbGlzdCBsaTpsYXN0LW9mLXR5cGUgLmJ0biB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG4uYy1kYXNoYm9hcmQtYWN0aW9uc19xdWljay1jb2wge1xuICBkaXNwbGF5OiBub25lO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5jLWRhc2hib2FyZC1hY3Rpb25zX3F1aWNrLWNvbCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cbi5jLWRhc2hib2FyZC1hY3Rpb25zIC5hY2NvcmRpb24ge1xuICB3aWR0aDogOTAlO1xuICBtYXJnaW46IGF1dG87XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5jLWRhc2hib2FyZC1hY3Rpb25zIC5hY2NvcmRpb24ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbi5jLWRhc2hib2FyZC1hY3Rpb25zIC5hY2NvcmRpb24gLmNhcmQtaGVhZGVyIC5idG4tbGluayB7XG4gIHdpZHRoOiAxMDAlO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuLmMtZGFzaGJvYXJkLWFjdGlvbnMgLmFjY29yZGlvbiAuY2FyZC1oZWFkZXIgLmJ0bi1saW5rOmhvdmVyIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4uYy1kYXNoYm9hcmQtc2hvcnRjdXRzIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLmMtZGFzaGJvYXJkLXNob3J0Y3V0c19zaG9ydGN1dCB7XG4gIG1hcmdpbjogMCAyZW07XG59XG4uYy1kYXNoYm9hcmQtc2hvcnRjdXRzIGhyIHtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgbWFyZ2luLXRvcDogMnJlbTtcbiAgd2lkdGg6IDg0JTtcbn0iLCJAbWl4aW4gY29udGFpbmVyLXNtYWxsKCkge1xyXG5cdG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG5cdG1hcmdpbi1yaWdodDogYXV0bztcclxuXHRtYXgtd2lkdGg6IDQzMHB4O1xyXG59XHJcblxyXG5AbWl4aW4gY29udGFpbmVyLW1lZGl1bSgpIHtcclxuXHRtYXJnaW4tbGVmdDogYXV0bztcclxuXHRtYXJnaW4tcmlnaHQ6IGF1dG87XHJcblx0bWF4LXdpZHRoOiA2NDBweDtcclxufVxyXG5cclxuQG1peGluIHdpZGdldC1jb250YWluZXIoKSB7XHJcblx0YmFja2dyb3VuZDogJHdoaXRlO1xyXG5cdHBhZGRpbmc6IDFyZW07XHJcbn1cclxuXHJcbkBtaXhpbiBmb3JtLWNvbnRhaW5lcigpIHtcclxuXHRiYWNrZ3JvdW5kOiAkd2hpdGU7XHJcblx0cGFkZGluZzogMzBweDtcclxuXHJcblx0QGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChzbSkge1xyXG5cdFx0cGFkZGluZy1sZWZ0OiA1MHB4O1xyXG5cdFx0cGFkZGluZy1yaWdodDogNTBweDtcclxuXHR9XHJcbn1cclxuXHJcbkBmdW5jdGlvbiBzdHJpcC11bml0KCRudW0pIHtcclxuICBAcmV0dXJuICRudW0gLyAoJG51bSAqIDAgKyAxKTtcclxufVxyXG5cclxuQGZ1bmN0aW9uIGNvbnZlcnQtdG8tcmVtKCR2YWx1ZSwgJGJhc2UtdmFsdWU6IDE2cHgpICB7XHJcblx0JHZhbHVlOiBzdHJpcC11bml0KCR2YWx1ZSkgLyBzdHJpcC11bml0KCRiYXNlLXZhbHVlKSAqIDFyZW07XHJcblxyXG5cdEBpZiAoJHZhbHVlID09IDByZW0pIHtcclxuXHQgICR2YWx1ZTogMDtcclxuXHR9IC8vIFR1cm4gMHJlbSBpbnRvIDBcclxuXHJcblx0QHJldHVybiAkdmFsdWU7XHJcbn1cclxuXHJcbkBmdW5jdGlvbiByZW0tY2FsYygkdmFsdWVzLCAkYmFzZS12YWx1ZTogMTZweCkge1xyXG5cdCRtYXg6IGxlbmd0aCgkdmFsdWVzKTtcclxuXHJcblx0QGlmICRtYXggPT0gMSB7XHJcblx0XHRAcmV0dXJuIGNvbnZlcnQtdG8tcmVtKG50aCgkdmFsdWVzLCAxKSwgJGJhc2UtdmFsdWUpO1xyXG5cdH1cclxuXHJcblx0JHJlbVZhbHVlczogKCk7XHJcblxyXG5cdEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJG1heCB7XHJcblx0XHQkcmVtVmFsdWVzOiBhcHBlbmQoJHJlbVZhbHVlcywgY29udmVydC10by1yZW0obnRoKCR2YWx1ZXMsICRpKSwgJGJhc2UtdmFsdWUpKTtcclxuXHR9XHJcblxyXG5cdEByZXR1cm4gJHJlbVZhbHVlcztcclxufVxyXG4iLCIvLyBDdXN0b20gQ29sb3JzXHJcblxyXG4kZGFyay1ncmF5OiAjMjQyNDI0O1xyXG4kbWVkaXVtLWRhcmstZ3JheTogIzYxNjE2MTtcclxuJG1lZGl1bS1ncmF5OiAjNTI1MjUyO1xyXG4kbWVkaXVtLWxpZ2h0LWdyYXk6ICNCQ0M2Q0U7XHJcbiRsaWdodC1ncmF5OiAjRThFOEU4O1xyXG4kd2hpdGU6ICNmZWZlZmU7XHJcbiRibHVlOiAjMDA1M0FDO1xyXG4kZGFyay1ibHVlOiAjNTE3MDhEO1xyXG5cclxuJHByaW1hcnk6ICMwMDU4QTg7XHJcbiRzZWNvbmRhcnk6ICMwMDU4QTg7XHJcbiR5ZWxsb3c6ICNGRkMyMzY7XHJcbiRvcmFuZ2U6ICNGRjk1MkI7XHJcbiRpbmZvOiAjZTJlM2U1O1xyXG5cclxuLy8gQXBwIFZhcmlhYmxlc1xyXG4kY29udGFpbmVyLW1heC13aWR0aDogMTIwMHB4O1xyXG4kc2lkZWJhci1iZzogJGRhcmstZ3JheTtcclxuJHNpZGViYXItd2lkdGg6IDI1MHB4O1xyXG5cclxuLy8gQm9vdHN0cmFwIFZhcmlhYmxlc1xyXG5cclxuLy8gTGF5b3V0XHJcblxyXG4kZ3JpZC1icmVha3BvaW50czogKFxyXG4gIHhzOiAwLFxyXG4gIHNtOiA0ODBweCxcclxuICBtZDogNzY4cHgsXHJcbiAgbGc6IDk5MnB4LFxyXG4gIHhsOiAxMjAwcHhcclxuKTtcclxuXHJcbiRib2R5LWJnOiAkbGlnaHQtZ3JheTtcclxuXHJcbi8vIFR5cG9ncmFwaHlcclxuJGZvbnQtc2l6ZS1iYXNlOiAxcmVtO1xyXG5cclxuJGZvbnQtZmFtaWx5LXNhbnMtc2VyaWY6ICdSb2JvdG8nLCAnc2Fucy1zZXJpZic7XHJcblxyXG4kaDEtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UgKiAxLjYyNTsgLy8gMjZcclxuJGgyLWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS4zNzU7IC8vIDIzXHJcbiRoMy1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuMjU7IC8vIDIwXHJcbiRoNC1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuMTI1OyAgLy8gMThcclxuJGg1LWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS4wNjI1OyAvLyAxN1xyXG4kaDYtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7XHJcblxyXG5cclxuLy8gR2xvYmFsIFN0eWxlc1xyXG5cclxuJGJvcmRlci1yYWRpdXM6IDBweDtcclxuJGJvcmRlci1yYWRpdXMtbGc6ICRib3JkZXItcmFkaXVzO1xyXG4kYm9yZGVyLXJhZGl1cy1zbTogJGJvcmRlci1yYWRpdXM7XHJcblxyXG4vLyBGb3Jtc1xyXG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWJnOiAkd2hpdGU7XHJcblxyXG4vLyBCYWRnZXNcclxuJGJhZGdlLXBhZGRpbmcteTogLjVlbTtcclxuJGJhZGdlLXBhZGRpbmcteDogLjhlbTtcclxuJGJhZGdlLXBpbGwtcGFkZGluZy14OiAxLjJlbTtcclxuIiwiLy8gQnJlYWtwb2ludCB2aWV3cG9ydCBzaXplcyBhbmQgbWVkaWEgcXVlcmllcy5cbi8vXG4vLyBCcmVha3BvaW50cyBhcmUgZGVmaW5lZCBhcyBhIG1hcCBvZiAobmFtZTogbWluaW11bSB3aWR0aCksIG9yZGVyIGZyb20gc21hbGwgdG8gbGFyZ2U6XG4vL1xuLy8gICAgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KVxuLy9cbi8vIFRoZSBtYXAgZGVmaW5lZCBpbiB0aGUgYCRncmlkLWJyZWFrcG9pbnRzYCBnbG9iYWwgdmFyaWFibGUgaXMgdXNlZCBhcyB0aGUgYCRicmVha3BvaW50c2AgYXJndW1lbnQgYnkgZGVmYXVsdC5cblxuLy8gTmFtZSBvZiB0aGUgbmV4dCBicmVha3BvaW50LCBvciBudWxsIGZvciB0aGUgbGFzdCBicmVha3BvaW50LlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSlcbi8vICAgIG1kXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICBtZFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAkYnJlYWtwb2ludC1uYW1lczogKHhzIHNtIG1kIGxnIHhsKSlcbi8vICAgIG1kXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludC1uYW1lczogbWFwLWtleXMoJGJyZWFrcG9pbnRzKSkge1xuICAkbjogaW5kZXgoJGJyZWFrcG9pbnQtbmFtZXMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbiAhPSBudWxsIGFuZCAkbiA8IGxlbmd0aCgkYnJlYWtwb2ludC1uYW1lcyksIG50aCgkYnJlYWtwb2ludC1uYW1lcywgJG4gKyAxKSwgbnVsbCk7XG59XG5cbi8vIE1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTnVsbCBmb3IgdGhlIHNtYWxsZXN0IChmaXJzdCkgYnJlYWtwb2ludC5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW1pbihzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KSlcbi8vICAgIDU3NnB4XG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbWluICE9IDAsICRtaW4sIG51bGwpO1xufVxuXG4vLyBNYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguIE51bGwgZm9yIHRoZSBsYXJnZXN0IChsYXN0KSBicmVha3BvaW50LlxuLy8gVGhlIG1heGltdW0gdmFsdWUgaXMgY2FsY3VsYXRlZCBhcyB0aGUgbWluaW11bSBvZiB0aGUgbmV4dCBvbmUgbGVzcyAwLjAycHhcbi8vIHRvIHdvcmsgYXJvdW5kIHRoZSBsaW1pdGF0aW9ucyBvZiBgbWluLWAgYW5kIGBtYXgtYCBwcmVmaXhlcyBhbmQgdmlld3BvcnRzIHdpdGggZnJhY3Rpb25hbCB3aWR0aHMuXG4vLyBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL21lZGlhcXVlcmllcy00LyNtcS1taW4tbWF4XG4vLyBVc2VzIDAuMDJweCByYXRoZXIgdGhhbiAwLjAxcHggdG8gd29yayBhcm91bmQgYSBjdXJyZW50IHJvdW5kaW5nIGJ1ZyBpbiBTYWZhcmkuXG4vLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODI2MVxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbWF4KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgNzY3Ljk4cHhcbkBmdW5jdGlvbiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbmV4dDogYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAcmV0dXJuIGlmKCRuZXh0LCBicmVha3BvaW50LW1pbigkbmV4dCwgJGJyZWFrcG9pbnRzKSAtIC4wMiwgbnVsbCk7XG59XG5cbi8vIFJldHVybnMgYSBibGFuayBzdHJpbmcgaWYgc21hbGxlc3QgYnJlYWtwb2ludCwgb3RoZXJ3aXNlIHJldHVybnMgdGhlIG5hbWUgd2l0aCBhIGRhc2ggaW4gZnJvbnQuXG4vLyBVc2VmdWwgZm9yIG1ha2luZyByZXNwb25zaXZlIHV0aWxpdGllcy5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHhzLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgXCJcIiAgKFJldHVybnMgYSBibGFuayBzdHJpbmcpXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgXCItc21cIlxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaW5maXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgQHJldHVybiBpZihicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKSA9PSBudWxsLCBcIlwiLCBcIi0jeyRuYW1lfVwiKTtcbn1cblxuLy8gTWVkaWEgb2YgYXQgbGVhc3QgdGhlIG1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCB3aWRlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1pbiB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTWVkaWEgb2YgYXQgbW9zdCB0aGUgbWF4aW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIGxhcmdlc3QgYnJlYWtwb2ludC5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBhbmQgbmFycm93ZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1heCB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTWVkaWEgdGhhdCBzcGFucyBtdWx0aXBsZSBicmVha3BvaW50IHdpZHRocy5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBiZXR3ZWVuIHRoZSBtaW4gYW5kIG1heCBicmVha3BvaW50c1xuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtYmV0d2VlbigkbG93ZXIsICR1cHBlciwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbG93ZXIsICRicmVha3BvaW50cyk7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCR1cHBlciwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbG93ZXIsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtaW4gPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCR1cHBlciwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8gTWVkaWEgYmV0d2VlbiB0aGUgYnJlYWtwb2ludCdzIG1pbmltdW0gYW5kIG1heGltdW0gd2lkdGhzLlxuLy8gTm8gbWluaW11bSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQsIGFuZCBubyBtYXhpbXVtIGZvciB0aGUgbGFyZ2VzdCBvbmUuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgb25seSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCwgbm90IHZpZXdwb3J0cyBhbnkgd2lkZXIgb3IgbmFycm93ZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1vbmx5KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG4iXX0= */\"","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-dashboard',\r\n templateUrl: './dashboard.component.html',\r\n styleUrls: ['./dashboard.component.scss']\r\n})\r\nexport class DashboardComponent implements OnInit {\r\n\r\n\tpublic doughnutOptions = {\r\n\t\tlegend: {\r\n\t\t\tposition: 'right'\r\n\t\t}\r\n\t}\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nimport { JobModule } from '@/modules/job.module'\r\nimport { AlertsModule } from '@/views/alerts/alerts.module';\r\n\r\nimport { NgbAccordionModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { DataTablesModule } from 'angular-datatables';\r\n\r\nimport { DashboardComponent } from '@/views/dashboard/dashboard.component';\r\n\r\nexport const routes: Routes = [\r\n\t{ path: '', component: DashboardComponent },\r\n];\r\n\r\n@NgModule({\r\n\tdeclarations: [\r\n\t\tDashboardComponent,\r\n\t],\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tNgbAccordionModule,\r\n\t\tDataTablesModule,\r\n\t\tJobModule,\r\n\t\tAlertsModule,\r\n\t\tRouterModule.forChild(routes)\r\n\t]\r\n})\r\nexport class DashboardModule { }\r\n","module.exports = \"
\\r\\n
\\r\\n \\r\\n
\\r\\n

\\r\\n Dry-in Inspection\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Builder\\r\\n
\\r\\n
\\r\\n {{ builder?.CompanyName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Community\\r\\n
\\r\\n
\\r\\n {{ community?.Name }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Lot\\r\\n
\\r\\n
\\r\\n {{ job?.Lot1 }} / {{ job?.Lot2 }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n
\\r\\n Crew Leader\\r\\n
\\r\\n
\\r\\n {{ crewLeader?.FullName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tYear must be between 2010 and 2050\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tEnter a valid inspection date YYYY-MM-DD\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tInspection date is required\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n
\\r\\n
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\tAll fields marked with * are required\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t+ Add \\\"Other\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
Inspection ItemsYesNoN/A
Framing completed 100%*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Felt ran up walls*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
OSB completely covered w/felt*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Drip edge straight with no waves*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Drip ran back to front*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Drip edge laps at least 3\\\" & nailed to 4\\\"0c*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Flashing Installed 100%*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Flashing wall laps bulled and lapped 6\\\"*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Kickouts set in bull and laps bulled*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Eyebrow flashed*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Drip edge sealed*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Valley metal installed*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Ridge vents cut to right size*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
All debris picked up*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
\\r\\n Other:\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n Documents\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ uploadError }}\\r\\n
\\r\\n
\\r\\n {{ uploadResponse.message }}\\r\\n
\\r\\n
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{uploadResponse.message}}%\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n
\\r\\n\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n Signature\\r\\n

\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tX Clear Signature\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\tSubmit\\r\\n\\t\\t\\t\\t\\t\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n\\r\\n\\r\\n\\t
\\r\\n\\t\\t

Update Crew Leader

\\r\\n\\t\\t\\r\\n\\t\\t\\t×\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tSave\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\r\\n\\r\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3ZpZXdzL2luc3BlY3Rpb25zL2RyeWluLWluc3BlY3Rpb24tYWRkL2RyeWluLWluc3BlY3Rpb24tYWRkLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit, ElementRef, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators, FormArray } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport { JobsService } from '@/services/jobs/jobs.service';\r\nimport { BuildersService } from '@/services/builders/builders.service';\r\nimport { CommunitiesService } from '@/services/communities/communities.service';\r\nimport { UserService } from '@/services/user/user.service';\r\nimport { InspectionsService } from '@/services/inspections/inspections.service';\r\nimport { FilesService } from '@/services/files/files.service';\r\nimport { AlertService } from '@/services/alert/alert.service';\r\nimport { RoleService } from '@/services/role/role.service';\r\n\r\nimport { BuilderJob } from '@/models/builder-job';\r\nimport { Community } from '@/models/community';\r\nimport { User } from '@/models/user';\r\nimport { Builder } from '@/models/builder';\r\n\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { SignaturePad } from 'angular2-signaturepad/signature-pad';\r\nimport { isArray } from 'util';\r\n\r\nimport { Select2OptionData } from 'ng-select2';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-dryin-inspection-add',\r\n templateUrl: './dryin-inspection-add.component.html',\r\n styleUrls: ['./dryin-inspection-add.component.scss']\r\n})\r\nexport class DryinInspectionAddComponent implements OnInit {\r\n @ViewChild('inspectionTable')\r\n inspectionTable: ElementRef;\r\n\r\n @ViewChild(SignaturePad)\r\n signaturePad: SignaturePad;\r\n\r\n @ViewChild('signatureDiv')\r\n signatureDiv: ElementRef;\r\n\r\n jobID : string\r\n jobType : string\r\n job : BuilderJob\r\n community : Community\r\n builder : Builder\r\n\tcrewLeader : User\r\n\tcrewLeaders : Observable>\r\n checklistForm : FormGroup\r\n otherEntries : FormArray\r\n uploadError : string\r\n\tsignatureBaseURL : string\r\n\r\n builderFiles = [];\r\n uploadResponse = { status: '', message: '', filePath: '' }\r\n submitted = false\r\n selectOptions = [\r\n { name: \"N/A\", value: \"0\" },\r\n { name: \"No\", value: \"1\" },\r\n { name: \"Yes\", value: \"2\" },\r\n ]\r\n signaturePadOptions: Object = {\r\n 'minWidth': 3,\r\n 'canvasWidth': 500,\r\n 'canvasHeight': 200,\r\n\t}\r\n\tselect2Options = {\r\n\t\ttheme: \"bootstrap4\",\r\n\t\twidth: \"100%\"\r\n\t}\r\n\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private jobService: JobsService,\r\n private builderService: BuildersService,\r\n private communityService: CommunitiesService,\r\n\t\tprivate userService: UserService,\r\n\t\tpublic roleService: RoleService,\r\n\t\tprivate modalService: NgbModal,\r\n private inspectionsService: InspectionsService,\r\n private filesService: FilesService,\r\n private alertService: AlertService,\r\n ) {\r\n this.jobID = this.route.snapshot.paramMap.get(\"id\")\r\n }\r\n\r\n ngAfterViewInit() {\r\n if( this.signaturePad ){\r\n\t\t\tthis.signaturePad.set('minWidth', 3)\r\n\t\t\tthis.setCanvasWidth()\r\n\t\t\tthis.signaturePad.clear()\r\n\t\t}\r\n }\r\n\r\n clearSignature() {\r\n this.signaturePad.clear()\r\n }\r\n\r\n drawComplete() {\r\n this.signatureBaseURL = this.signaturePad.toDataURL()\r\n }\r\n\r\n createFileFromBaseURL(url: string) {\r\n let date = new Date().toLocaleDateString()\r\n date = date.replace(/\\//g, \"-\")\r\n const base64String = url.split(',')[1]\r\n\t\tconst text = 'Dryin'\r\n const imageName = date + ' ' + text + '.png'\r\n const imageBlob = this.dataURItoBlob(base64String)\r\n return new File([imageBlob], imageName, { type: 'image/png' })\r\n }\r\n\r\n dataURItoBlob(dataURI) {\r\n const byteString = window.atob(dataURI);\r\n const arrayBuffer = new ArrayBuffer(byteString.length);\r\n const int8Array = new Uint8Array(arrayBuffer);\r\n for (let i = 0; i < byteString.length; i++) {\r\n int8Array[i] = byteString.charCodeAt(i);\r\n }\r\n const blob = new Blob([int8Array], { type: 'image/png' });\r\n return blob;\r\n }\r\n\r\n setCanvasWidth() {\r\n this.signaturePad.set('canvasWidth', this.signatureDiv.nativeElement.offsetWidth)\r\n }\r\n\r\n async getWarranty(){\r\n const data = await this.jobService.getWarrantyJob(this.jobID).toPromise()\r\n return data.body\r\n }\r\n\r\n async getBuilder(){\r\n const data = await this.jobService.getBuilderJob(this.jobID).toPromise()\r\n return data.body\r\n }\r\n\r\n ngOnInit() {\r\n\t\tlet jobResponse\r\n\t\tconst urlPath = location.href\r\n\r\n if (urlPath.includes('builder')) {\r\n this.jobType = 'builder'\r\n jobResponse = this.getBuilder()\r\n\t\t}\r\n\t\telse if (urlPath.includes('warranty')) {\r\n this.jobType = 'warranty'\r\n jobResponse = this.getWarranty()\r\n }\r\n\r\n jobResponse.then(res => {\r\n\t\t\tthis.job = res\r\n\r\n // Get builder name\r\n this.builderService\r\n .getBuilder(this.job.BuilderID)\r\n .subscribe((res: any) => {\r\n this.builder = res.body\r\n })\r\n\r\n // Get community name\r\n this.communityService\r\n .getCommunity(this.job.CommunityID)\r\n .subscribe((res: any) => {\r\n this.community = res.body\r\n })\r\n\r\n // Get crew leader name\r\n if (this.jobType === 'builder') {\r\n this.userService\r\n .getUser(this.job.CrewLeaderID)\r\n .subscribe((res: any) => {\r\n\t\t\t\t\t\tthis.crewLeader = res.body\r\n\r\n\t\t\t\t\t\t// get only users who are crew leaders and put in dropdown\r\n\t\t\t\t\t\tthis.userService.getUsers( 3 ).subscribe(( result: any ) => {\r\n\t\t\t\t\t\t\tconst users = result.body.data.map( user => {\r\n\t\t\t\t\t\t\t\tconst text = user.FullName ? user.FullName : user.Email\r\n\t\t\t\t\t\t\t\tconst id = user.Id\r\n\r\n\t\t\t\t\t\t\t\treturn { id, text }\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\tthis.crewLeaders = this.updateUsers( users )\r\n\t\t\t\t\t\t})\r\n })\r\n\t\t\t}\r\n\r\n\t\t\tthis.checklistForm = this.formBuilder.group({\r\n\t\t\t\ttype: 'Dryin',\r\n\t\t\t\tCrewLeaderID: [this.job.CrewLeaderID, Validators.required],\r\n\t\t\t\tcomments: '',\r\n\t\t\t\tdryInInspectionDate: '',\r\n\t\t\t\tridgeVentsRightSize: ['', Validators.required],\r\n\t\t\t\tframingComplete: ['', Validators.required],\r\n\t\t\t\tfeltRanUpWalls: ['', Validators.required],\r\n\t\t\t\tosbCovered: ['', Validators.required],\r\n\t\t\t\tdripEdgeStraight: ['', Validators.required],\r\n\t\t\t\tdripBackToFront: ['', Validators.required],\r\n\t\t\t\tdripEdgeLaps: ['', Validators.required],\r\n\t\t\t\tdripEdgeSealed: ['', Validators.required],\r\n\t\t\t\tflashingInstalled: ['', Validators.required],\r\n\t\t\t\tflashingBulled: ['', Validators.required],\r\n\t\t\t\tkickoutsSet: ['', Validators.required],\r\n\t\t\t\teyebrowFlashed: ['', Validators.required],\r\n\t\t\t\tvalleyMetalInstalled: ['', Validators.required],\r\n\t\t\t\tdebrisDisposed: ['', Validators.required],\r\n\t\t\t\tridgeVentCutCount: [null, Validators.required],\r\n\t\t\t\totherEntries: this.formBuilder.array([this.createItem()]),\r\n\t\t\t});\r\n\r\n\t\t\t// Only Builder Jobs require a CrewLeaderID\r\n\t\t\tif ( this.jobType !== 'builder' ) {\r\n\t\t\t\tthis.checklistForm.removeControl( 'CrewLeaderID' )\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\topenModal(modal, windowClass) {\r\n\t\t// don't show modals if crew leader is logged in\r\n\t\tif(this.roleService.isCrewLeader) return\r\n\r\n\t\tthis.modalService\r\n\t\t\t.open(modal, { ariaLabelledBy: \"modal-basic-title\", windowClass })\r\n\t\t\t.result.then(\r\n\t\t\t\tresult => {\r\n\r\n\t\t\t\t\tfor (let key in result) {\r\n\t\t\t\t\t\tconst value = result[key]\r\n\r\n\t\t\t\t\t\tif( key === \"CrewLeaderID\") {\r\n\t\t\t\t\t\t\tthis.updateCrewLeader( value )\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\treason => {\r\n\t\t\t\t\t// this.closeResult = this.getDismissReason(reason);\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t}\r\n\r\n\tupdateCrewLeader( id: string ) {\r\n\t\tthis.checklistForm.controls[ 'CrewLeaderID' ].setValue( id )\r\n\t\tthis.userService.getUser( id ).subscribe((result: any) => {\r\n\t\t\tlet user = result.body\r\n\t\t\tthis.crewLeader = user\r\n\t\t});\r\n\t}\r\n\r\n createItem(): FormGroup {\r\n return this.formBuilder.group({\r\n Input: '',\r\n Rating: '',\r\n });\r\n }\r\n\r\n addItem(): void {\r\n this.otherEntries = this.checklistForm.get('otherEntries') as FormArray;\r\n this.otherEntries.push(this.createItem());\r\n }\r\n\r\n removeItem(index): void {\r\n this.otherEntries.removeAt(index)\r\n }\r\n\r\n displayFilesOnUpload() {\r\n const input = document.querySelector('#fileUpload');\r\n // Create array from FileList\r\n this.builderFiles = Array.from((input).files)\r\n }\r\n\r\n get form() {\r\n return this.checklistForm.get('otherEntries')['controls']\r\n }\r\n\r\n handleFormSubmit() {\r\n this.submitted = true\r\n\t\tlet data = this.checklistForm.value\r\n\r\n\t\tif (this.checklistForm.invalid) {\r\n\t\t\tthis.alertService.error(\"Your form has errors. Make sure all inspection items have been checked\")\r\n\t\t\tdocument.body.scrollIntoView({ behavior: \"smooth\" })\r\n\t\t\treturn\r\n\t\t}\r\n\r\n for (let key in data) {\r\n if (data.hasOwnProperty(key)) {\r\n\t\t\t\t// Look at all fields except comments, type & CrewLeaderID\r\n\t\t\t\tif (\r\n\t\t\t\t\tkey !== \"comments\" &&\r\n\t\t\t\t\tkey !== 'type' &&\r\n\t\t\t\t\tkey !== 'CrewLeaderID'\r\n\t\t\t\t) {\r\n\t\t\t\t\t// if key corresponds to the two date fields\r\n\t\t\t\t\tif (key === 'dryInInspectionDate' ) {\r\n\t\t\t\t\t\tif (data[key]) {\r\n\t\t\t\t\t\t\t// If a value exists, change the format for database to handle\r\n\t\t\t\t\t\t\tdata[key] = `${data[key].year}/${data[key].month}/${data[key].day}`;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t// set value to empty string\r\n\t\t\t\t\t\t\tdata[key] = ''\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (key === \"otherEntries\") {\r\n\t\t\t\t\t\tdata[key].forEach(( value, index ) => {\r\n\t\t\t\t\t\t\tif(!value.Input){\r\n\t\t\t\t\t\t\t\tdata[key].splice(index, 1)\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tvalue.Rating = +value.Rating\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n }\r\n }\r\n\r\n this.inspectionsService\r\n\t\t\t.createDryinChecklist(data)\r\n .subscribe((data: any) => {\r\n\t\t\t\tlet signatureFile\r\n\t\t\t\t// save digital signature as a File\r\n\t\t\t\tif(this.signatureBaseURL){\r\n\t\t\t\t\tsignatureFile = this.createFileFromBaseURL(this.signatureBaseURL)\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.alertService.error(\"You must sign the inspection to submit it\");\r\n\t\t\t\t\tdocument.body.scrollIntoView({ behavior: \"smooth\" });\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n this.filesService.uploadFile(signatureFile, data.ID, \"Inspection\").subscribe((res: any) => {\r\n // wait a second for the server to register the new files\r\n if (isArray(res)) {\r\n setTimeout(() => {\r\n data.SignatureFileID = res[0]\r\n\t\t\t\t\t\t\tthis.inspectionsService.updateDryinChecklist(data.ID, data).subscribe((res: any) => { })\r\n }, 1000)\r\n }\r\n })\r\n\r\n if (this.builderFiles.length) {\r\n // Iterate through each file in the array\r\n this.builderFiles.forEach(file => {\r\n // send array of files to file upload service function\r\n this.filesService.uploadFile(file, data.ID, \"Inspection\").subscribe(\r\n res => {\r\n console.log(res)\r\n },\r\n err => console.log(err)\r\n )\r\n })\r\n\t\t\t\t}\r\n\r\n // Add created inspection to Job, then redirect to job\r\n\t\t\t\tlet jobType\r\n\r\n switch ( this.jobType ) {\r\n\t\t\t\t\tcase 'builder':\r\n\t\t\t\t\t\tjobType = 'BuilderJob'\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'warranty':\r\n\t\t\t\t\t\tjobType = 'Warranty'\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'reroof':\r\n\t\t\t\t\t\tjobType = 'Reroof'\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'repair':\r\n\t\t\t\t\t\tjobType = 'Repair'\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n this.inspectionsService\r\n .addChecklistToJob(data.ID, this.jobID, jobType, data)\r\n .subscribe((result: any) => {\r\n this.router.navigate([ `${this.jobType}-jobs/${this.jobID}` ]);\r\n })\r\n },\r\n error => {\r\n this.alertService.error(error);\r\n\r\n document.body.scrollIntoView({ behavior: \"smooth\" });\r\n }\r\n )\r\n\t}\r\n\r\n\tupdateUsers(users = []): Observable> {\r\n\t\treturn Observable.create((obs) => {\r\n\t\t\tobs.next(users);\r\n\t\t\tobs.complete();\r\n\t\t});\r\n\t}\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n \\r\\n
\\r\\n

\\r\\n Dry-in Inspection\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Builder\\r\\n
\\r\\n
\\r\\n {{ builder?.CompanyName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Community\\r\\n
\\r\\n
\\r\\n {{ community?.Name }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Lot\\r\\n
\\r\\n
\\r\\n {{ job?.Lot1 }} / {{ job?.Lot2 }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n
\\r\\n
\\r\\n Crew Leader\\r\\n
\\r\\n
\\r\\n {{ crewLeader?.FullName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tYear must be between 2010 and 2050\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tEnter a valid inspection date YYYY-MM-DD\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tInspection date is required\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t+ Add \\\"Other\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
Inspection ItemsYesNoN/A
Framing completed 100%\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Felt ran up walls\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
OSB completely covered w/felt\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Drip edge straight with no waves\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Drip ran back to front\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Drip edge laps at least 3\\\" & nailed to 4'0c\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Flashing Installed 100%\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Flashing wall laps bulled and lapped 6\\\"\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Kickouts set in bull and laps bulled\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Eyebrow flashed\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Drip edge sealed\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Valley metal installed\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Ridge vents cut to right size\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
All debris picked up\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
\\r\\n Other:\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
\\r\\n
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\tUpdate inspection\\r\\n\\t\\t\\t\\t\\t\\r\\n
\\r\\n
\\r\\n
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n
\\r\\n
\\r\\n Comments\\r\\n
\\r\\n
\\r\\n {{ inspection?.Comments }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n Documents\\r\\n

\\r\\n
\\r\\n
\\r\\n {{ uploadError }}\\r\\n
\\r\\n
\\r\\n {{ uploadResponse.message }}\\r\\n
\\r\\n
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{{uploadResponse.message}}%\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n
\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n {{ file.Label }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
No documents have been uploaded
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n Signature\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\\"Inspection\\r\\n
\\r\\n
\\r\\n
This inspection has not yet been signed
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n\\r\\n\\r\\n\\t
\\r\\n\\t\\t

{{ modalPreviewFileName }}

\\r\\n\\t\\t\\r\\n\\t\\t\\t×\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\\"image\\\"\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tDownload File\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n
\\r\\n\\r\\n\\r\\n\\t
\\r\\n\\t\\t

Update Comments

\\r\\n\\t\\t\\r\\n\\t\\t\\t×\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tSave\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\\r\\n\\r\\n\\t
\\r\\n\\t\\t

Update Crew Leader

\\r\\n\\t\\t\\r\\n\\t\\t\\t×\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tCrew Leader Name is required\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tSave\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\r\\n\\r\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3ZpZXdzL2luc3BlY3Rpb25zL2RyeWluLWluc3BlY3Rpb24tdmlldy9kcnlpbi1pbnNwZWN0aW9uLXZpZXcuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit, ElementRef, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators, FormArray } from '@angular/forms';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { DomSanitizer } from \"@angular/platform-browser\";\r\n\r\nimport { JobsService } from '@/services/jobs/jobs.service';\r\nimport { BuildersService } from '@/services/builders/builders.service';\r\nimport { CommunitiesService } from '@/services/communities/communities.service';\r\nimport { UserService } from '@/services/user/user.service';\r\nimport { InspectionsService } from '@/services/inspections/inspections.service';\r\nimport { FilesService } from '@/services/files/files.service';\r\nimport { AlertService } from '@/services/alert/alert.service';\r\nimport { RoleService } from '@/services/role/role.service';\r\n\r\nimport { BuilderJob } from '@/models/builder-job';\r\nimport { Community } from '@/models/community';\r\nimport { User } from '@/models/user';\r\nimport { Builder } from '@/models/builder';\r\nimport { DryinInspection } from '@/models/dryin-inspection';\r\n\r\nimport { Select2OptionData } from 'ng-select2';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-dryin-inspection-view',\r\n templateUrl: './dryin-inspection-view.component.html',\r\n styleUrls: ['./dryin-inspection-view.component.scss']\r\n})\r\nexport class DryinInspectionViewComponent implements OnInit {\r\n @ViewChild('inspectionTable')\r\n\tinspectionTable: ElementRef;\r\n\r\n\t@ViewChild('filePreviewModal')\r\n\tfilePreviewModal: ElementRef;\r\n\r\n inspection: DryinInspection\r\n jobID: string\r\n jobType: string\r\n checklistID: string\r\n job: BuilderJob\r\n community: Community\r\n builder: Builder\r\n crewLeader: User\r\n crewLeaders : Observable>\r\n checklistForm: FormGroup\r\n otherEntries: FormArray\r\n uploadError: string\r\n inspectionFiles: Array\r\n DryInInspectionDate: string\r\n ShingleInspectionDate: string\r\n\tinspectionSignature: string | ArrayBuffer\r\n\tmodalPreviewFile\t\t : any;\r\n\tmodalPreviewFileType : string;\r\n\tmodalPreviewFileID : string;\r\n\tmodalPreviewFileName : string;\r\n\r\n uploadResponse = { status: '', message: '', filePath: '' }\r\n selectOptions = [\r\n { name: \"N/A\", value: 0 },\r\n { name: \"Yes\", value: 2 },\r\n { name: \"No\", value: 1 },\r\n\t]\r\n\r\n\tselect2Options = {\r\n\t\ttheme: \"bootstrap4\",\r\n\t\twidth: \"100%\"\r\n\t}\r\n\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private route: ActivatedRoute,\r\n private jobService: JobsService,\r\n private builderService: BuildersService,\r\n private communityService: CommunitiesService,\r\n private userService: UserService,\r\n\t\tpublic roleService: RoleService,\r\n private modalService: NgbModal,\r\n private inspectionsService: InspectionsService,\r\n private alertService: AlertService,\r\n private filesService: FilesService,\r\n\t\tprivate domSanitizer : DomSanitizer,\r\n ) {\r\n this.jobID = this.route.snapshot.paramMap.get(\"id\")\r\n this.checklistID = this.route.snapshot.paramMap.get(\"checklist_id\")\r\n\t}\r\n\r\n\tasync getWarranty() {\r\n const data = await this.jobService.getWarrantyJob( this.jobID ).toPromise()\r\n return data.body\r\n }\r\n\r\n async getBuilder() {\r\n const data = await this.jobService.getBuilderJob( this.jobID ).toPromise()\r\n return data.body\r\n }\r\n\r\n async getRepair() {\r\n const data = await this.jobService.getRepairJob( this.jobID ).toPromise()\r\n return data.body\r\n }\r\n\r\n async getReroof() {\r\n const data = await this.jobService.getReroofJob( this.jobID ).toPromise()\r\n return data.body\r\n }\r\n\r\n ngOnInit() {\r\n\t\tlet jobResponse\r\n\t\tconst urlPath = location.href\r\n\r\n if ( urlPath.includes( 'builder' )) {\r\n this.jobType = 'builder'\r\n jobResponse = this.getBuilder()\r\n\t\t}\r\n\t\telse if ( urlPath.includes( 'warranty' )) {\r\n this.jobType = 'warranty'\r\n jobResponse = this.getWarranty()\r\n\t\t}\r\n\t\telse if ( urlPath.includes( 'repair' )) {\r\n this.jobType = 'repair'\r\n jobResponse = this.getRepair()\r\n\t\t}\r\n\t\telse if ( urlPath.includes( 'reroof' )) {\r\n this.jobType = 'reroof'\r\n jobResponse = this.getReroof()\r\n }\r\n\r\n jobResponse.then( res => {\r\n this.job = res\r\n if ( this.jobType === 'builder' || this.jobType === 'warranty' ) {\r\n // Get builder name\r\n this.builderService\r\n .getBuilder( this.job.BuilderID )\r\n .subscribe(( res: any ) => {\r\n this.builder = res.body\r\n })\r\n\r\n // Get community name\r\n this.communityService\r\n .getCommunity( this.job.CommunityID )\r\n .subscribe(( res: any ) => {\r\n this.community = res.body\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t// get only users who are crew leaders and put in dropdown\r\n\t\t\t\tthis.userService.getUsers( 3 ).subscribe(( result: any ) => {\r\n\t\t\t\t\tconst users = result.body.data.map( user => {\r\n\t\t\t\t\t\tconst text = user.FullName ? user.FullName : user.Email\r\n\t\t\t\t\t\tconst id = user.Id\r\n\r\n\t\t\t\t\t\treturn { id, text }\r\n\t\t\t\t\t})\r\n\t\t\t\t\tthis.crewLeaders = this.updateUsers( users )\r\n\t\t\t\t})\r\n }\r\n })\r\n\r\n this.checklistForm = this.formBuilder.group({\r\n Type: 'Dryin',\r\n Comments: '',\r\n CrewLeaderID: '',\r\n DryInInspectionDate: '',\r\n CricketsInstalled: '',\r\n FramingComplete: '',\r\n RidgeVentsRightSize: '',\r\n FeltRanUpWalls: '',\r\n OSBCovered: '',\r\n DripEdgeStraight: '',\r\n DripBackToFront: '',\r\n DripEdgeLaps: '',\r\n FlashingInstalled: '',\r\n FlashingBulled: '',\r\n KickoutsSet: '',\r\n EyebrowFlashed: '',\r\n DripEdgeSealed: '',\r\n ValleyMetalInstalled: '',\r\n RidgeVentCutCount: '',\r\n DebrisDisposed: '',\r\n OtherEntries: this.formBuilder.array([]),\r\n });\r\n\r\n\t\t// Only Builder Jobs require a CrewLeaderID\r\n\t\tif ( this.jobType !== 'builder' ) {\r\n\t\t\tthis.checklistForm.removeControl( 'CrewLeaderID' )\r\n\t\t}\r\n\r\n this.inspectionsService\r\n .getDryinChecklist(this.checklistID)\r\n .subscribe((data: any) => {\r\n\t\t\t\tthis.inspection = data.body\r\n this.inspectionFiles = this.inspection.Files.filter(file => file.ID !== this.inspection.SignatureFileID)\r\n\r\n if (this.inspection.SignatureFileID){\r\n this.displaySignature(this.inspection.SignatureFileID)\r\n\t\t\t\t}\r\n\r\n for (const key in this.inspection) {\r\n if (this.inspection.hasOwnProperty(key)) {\r\n\t\t\t\t\t\tconst value = this.inspection[key]\r\n\r\n if (key === 'OtherEntries') {\r\n if(value){\r\n value.forEach(val => {\r\n this.createItemWithValues(val.Input, `${val.Rating}`)\r\n })\r\n }\r\n } else if (key === 'DryInInspectionDate') {\r\n if (value) {\r\n const dateValue = value.split(\"T\")[0]\r\n\t\t\t\t\t\t\t\tthis.DryInInspectionDate = dateValue\r\n }\r\n } else if (key === 'ShingleInspectedDate') {\r\n if (value) {\r\n const dateValue = value.split(\"T\")[0]\r\n\t\t\t\t\t\t\t\tthis.ShingleInspectionDate = dateValue\r\n }\r\n } else{\r\n\t\t\t\t\t\t\tif( this.checklistForm.get(key) ){\r\n \tthis.checklistForm.controls[key].patchValue(`${value}`)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n }\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Get crew leader name\r\n\t\t\t\tif ( this.jobType === 'builder' ) {\r\n\t\t\t\t\tthis.userService\r\n\t\t\t\t\t\t.getUser( this.inspection.CrewLeaderID )\r\n\t\t\t\t\t\t.subscribe(( res: any ) => {\r\n\t\t\t\t\t\t\tthis.crewLeader = res.body\r\n\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n })\r\n }\r\n\r\n createItem(): FormGroup {\r\n return this.formBuilder.group({\r\n Input: '',\r\n Rating: '',\r\n });\r\n }\r\n\r\n createItemWithValues(input: string, rating: string): void {\r\n this.otherEntries = this.checklistForm.get('OtherEntries') as FormArray;\r\n this.otherEntries.push(\r\n this.formBuilder.group({\r\n Input: input,\r\n Rating: rating\r\n })\r\n )\r\n }\r\n\r\n addItem(): void {\r\n this.otherEntries = this.checklistForm.get('OtherEntries') as FormArray;\r\n this.otherEntries.push(this.createItem());\r\n }\r\n\r\n removeItem(index): void {\r\n this.otherEntries.removeAt(index)\r\n }\r\n\r\n updateFiles() {\r\n this.inspectionsService.getSafetyChecklist(this.inspection.ID).subscribe((result: any) => {\r\n this.inspectionFiles = result.body.Files.filter( file => file.ID !== this.inspection.SignatureFileID )\r\n })\r\n }\r\n\r\n onDeleteFile(event: Event, fileID: string) {\r\n event.preventDefault()\r\n if (window.confirm(\"Do you really want to delete this file?\")) {\r\n this.filesService.deleteFile(fileID).subscribe((result: any) => {\r\n this.updateFiles()\r\n })\r\n }\r\n }\r\n\r\n setPreviewFile( fileURL ){\r\n\t\tif(this.modalPreviewFileType.includes('image')){\r\n\t\t\tthis.modalPreviewFile = fileURL\r\n\t\t}else{\r\n\t\t\tthis.modalPreviewFile = this.domSanitizer.bypassSecurityTrustResourceUrl(fileURL)\r\n\t\t}\r\n\t\tthis.openModal( this.filePreviewModal, 'image-pdf' )\r\n\t}\r\n\r\n\tdownloadPreviewFile(){\r\n\t\tthis.filesService.downloadFile( this.modalPreviewFileID ).subscribe(( result: Blob ) => {\r\n\t\t\t// create a fake anchor element to force browser to download\r\n\t\t\tconst anchor = document.createElement('a')\r\n\t\t\tanchor.style.display = \"none\"\r\n\t\t\tdocument.body.appendChild(anchor)\r\n\t\t\t// Set file name attribute\r\n\t\t\tanchor.setAttribute(\"download\", this.modalPreviewFileName)\r\n\t\t\t// create new blob to change the type to the file's type\r\n\t\t\tconst blob = new Blob([result], {type: this.modalPreviewFileType})\r\n\t\t\t// Create file URL from Blob object\r\n\t\t\tconst url = window.URL.createObjectURL(blob)\r\n\t\t\t// set href attribute to be url\r\n\t\t\tanchor.setAttribute(\"href\", url)\r\n\t\t\t// force click on anchor to download\r\n\t\t\tanchor.click()\r\n\t\t\t// Cleanup\r\n\t\t\twindow.URL.revokeObjectURL(anchor.href);\r\n\t\t\tdocument.body.removeChild(anchor);\r\n\t\t})\r\n\t}\r\n\r\n\tgetFile( event, fileID, fileType, fileName ){\r\n\t\tevent.preventDefault()\r\n\t\tthis.modalPreviewFileName = fileName\r\n\t\tthis.modalPreviewFileType = fileType\r\n\t\tthis.modalPreviewFileID = fileID\r\n\r\n\t\tthis.filesService.downloadFile( fileID ).subscribe(( result: Blob ) => {\r\n\t\t\t// create new blob to change the type to the file's type\r\n\t\t\tconst blob = new Blob([result], {type: fileType})\r\n\t\t\t// create base64 url to display in modal\r\n\t\t\tconst reader = new FileReader()\r\n\t\t\treader.readAsDataURL(blob)\r\n\t\t\treader.onloadend = () => {\r\n\t\t\t\tvar base64data = reader.result\r\n\t\t\t\tthis.setPreviewFile(base64data)\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n displaySignature(id) {\r\n this.filesService.getFile(id).subscribe((res: any) => {\r\n const file = res.body\r\n const fileType = file.Type\r\n this.filesService.downloadFile(id).subscribe((result: Blob) => {\r\n // create new blob to change the type to the file's type\r\n const blob = new Blob([result], { type: fileType })\r\n // get Base64 url and display as image\r\n var reader = new FileReader()\r\n reader.readAsDataURL(blob);\r\n reader.onloadend = () => {\r\n this.inspectionSignature = reader.result\r\n }\r\n })\r\n })\r\n }\r\n\r\n displayFilesOnUpload() {\r\n const input = document.querySelector('#fileUpload');\r\n // Create array from FileList\r\n const filesArray = Array.from((input).files)\r\n // Iterate through each file in the array and send to server endpoint\r\n filesArray.forEach(file => {\r\n // send array of files to file upload service function\r\n this.filesService.uploadFile(file, this.inspection.ID, \"Inspection\").subscribe(\r\n res => {\r\n this.uploadResponse = res\r\n if (res.message == '100') {\r\n // wait a second for the server to register the new files\r\n setTimeout(() => {\r\n this.updateFiles()\r\n this.alertService.success(`File uploaded successfully!`, true);\r\n }, 1000)\r\n }\r\n },\r\n err => {\r\n this.uploadError = err\r\n this.alertService.error(`File upload failed - ${err}`, true);\r\n }\r\n )\r\n })\r\n }\r\n\r\n openModal(modal, windowClass = '') {\r\n this.modalService.open(modal, { ariaLabelledBy: 'modal-basic-title', windowClass })\r\n .result.then(\r\n result => {\r\n for (let key in result) {\r\n var value = result[key];\r\n\r\n if (key === 'dryInInspectionDate' || key === 'shingleInspectedDate') {\r\n if (value) {\r\n value = `${value.year}/${value.month}/${value.day}`;\r\n }\r\n }\r\n this.inspection[key] = value\r\n }\r\n\r\n this.inspectionsService.updateSafetyChecklist(this.inspection.ID, this.inspection)\r\n .subscribe(\r\n (data: any) => {\r\n\t\t\t\t\t\t\t\tthis.updateCrewLeader( this.inspection[ 'CrewLeaderID' ] )\r\n\t\t\t\t\t\t\t\tthis.alertService.success(`Inspection Updated!`, true)\r\n \t\t\tdocument.body.scrollIntoView({ behavior: \"smooth\" })\r\n },\r\n error => {\r\n this.alertService.error(error);\r\n document.body.scrollIntoView({ behavior: \"smooth\" });\r\n });\r\n },\r\n reason => {\r\n // this.closeResult = this.getDismissReason(reason);\r\n }\r\n );\r\n }\r\n\r\n get form() {\r\n return this.checklistForm.get('OtherEntries')['controls']\r\n }\r\n\r\n handleFormSubmit() {\r\n\t\tlet data = this.checklistForm.value\r\n\r\n for (let key in data) {\r\n let value = data[key]\r\n\r\n if (key === 'ShingleInspectedDate') {\r\n\r\n if (typeof value === 'object') {\r\n\t\t\t\t\tvalue = `${value.year}/${value.month}/${value.day}`\r\n }else{\r\n\t\t\t\t\tvalue = this.ShingleInspectionDate\r\n\t\t\t\t}\r\n\r\n } else if (key === 'DryInInspectionDate') {\r\n\r\n\t\t\t\tif (typeof value === 'object') {\r\n\t\t\t\t\tvalue = `${value.year}/${value.month}/${value.day}`\r\n }else{\r\n\t\t\t\t\tvalue = this.DryInInspectionDate\r\n\t\t\t\t}\r\n\r\n\t\t\t} else if (key === \"OtherEntries\") {\r\n\r\n value.forEach(( value, index ) => {\r\n if (!value.Input) {\r\n data[key].splice(index, 1)\r\n } else {\r\n value.Rating = +value.Rating\r\n }\r\n\t\t\t\t})\r\n\r\n } else{\r\n\t\t\t\t// force all values to an integer that arent Type, Comment & CrewLeaderID\r\n\t\t\t\tif (\r\n\t\t\t\t\tkey !== 'Type' &&\r\n\t\t\t\t\tkey !== 'Comments' &&\r\n\t\t\t\t\tkey !== 'CrewLeaderID'\r\n\t\t\t\t){\r\n\t\t\t\t\tvalue = +value\r\n\t\t\t\t}\r\n\t\t\t}\r\n data[key] = value\r\n\t\t}\r\n\t\t// Merge checklist form object with the inspection object\r\n\t\tdata = { ...this.inspection, ...data }\r\n\r\n this.inspectionsService\r\n .updateDryinChecklist( this.inspection.ID, data )\r\n .subscribe((result: any) => {\r\n this.alertService.success(`Inspection Updated!`, true)\r\n document.body.scrollIntoView({ behavior: \"smooth\" })\r\n },\r\n error => {\r\n this.alertService.error(error);\r\n document.body.scrollIntoView({ behavior: \"smooth\" })\r\n }\r\n )\r\n\t}\r\n\r\n\tupdateUsers(users = []): Observable> {\r\n\t\treturn Observable.create((obs) => {\r\n\t\t\tobs.next(users);\r\n\t\t\tobs.complete();\r\n\t\t});\r\n\t}\r\n\r\n\tupdateCrewLeader( id: string ) {\r\n\t\tthis.userService\r\n\t\t\t.getUser( id )\r\n\t\t\t.subscribe(( res: any ) => {\r\n\t\t\t\tthis.crewLeader = res.body\r\n\t\t\t})\r\n\t}\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n \\r\\n
\\r\\n

\\r\\n Safety Checklist\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Builder\\r\\n
\\r\\n
\\r\\n {{ builder?.CompanyName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Community\\r\\n
\\r\\n
\\r\\n {{ community?.Name }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Lot\\r\\n
\\r\\n
\\r\\n {{ job?.Lot1 }} / {{ job?.Lot2 }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n
\\r\\n
\\r\\n Crew Leader\\r\\n
\\r\\n
\\r\\n {{ crewLeader?.FullName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Customer\\r\\n
\\r\\n
\\r\\n {{ job?.FirstName + ' ' + job?.LastName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Address\\r\\n
\\r\\n
\\r\\n {{ job?.Address }}
\\r\\n \\r\\n {{ job?.Address2 }}
\\r\\n
\\r\\n {{ job?.City }} {{ job?.State }}, {{ job?.ZipCode }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Phone\\r\\n
\\r\\n
\\r\\n {{ job?.Phone | mask: '000-000-0000' }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\tAll fields marked with * are required\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t+ Add \\\"Other\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
Inspection ItemsCompliantNon-compliantN/A
Gas Can*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
Compressor*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
Fire Extinguisher*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n {{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
First Aid Kit*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Ladder Angle*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Ladder Tied Off*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Ladder Height*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Anchor Placement*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Anchor Attachment*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
SRL Attached*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Creativity*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
SRL Condition*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Harness Condition*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Hard Hats*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Safety Glasses*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Gloves*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
\\r\\n Other:\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n Documents\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ uploadError }}\\r\\n
\\r\\n
\\r\\n {{ uploadResponse.message }}\\r\\n
\\r\\n
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{uploadResponse.message}}%\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n
\\r\\n\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n Signature\\r\\n

\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tX Clear Signature\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\tSubmit\\r\\n\\t\\t\\t\\t\\t\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n\\r\\n\\r\\n\\t
\\r\\n\\t\\t

Update Crew Leader

\\r\\n\\t\\t\\r\\n\\t\\t\\t×\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tSave\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\r\\n\\r\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3ZpZXdzL2luc3BlY3Rpb25zL3NhZmV0eS1pbnNwZWN0aW9uLWFkZC9zYWZldHktaW5zcGVjdGlvbi1hZGQuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit, ElementRef, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators, FormArray } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport { JobsService } from '@/services/jobs/jobs.service';\r\nimport { BuildersService } from '@/services/builders/builders.service';\r\nimport { CommunitiesService } from '@/services/communities/communities.service';\r\nimport { UserService } from '@/services/user/user.service';\r\nimport { EmployeesService } from '@/services/employees/employees.service';\r\nimport { InspectionsService } from '@/services/inspections/inspections.service';\r\nimport { FilesService } from '@/services/files/files.service';\r\nimport { AlertService } from '@/services/alert/alert.service';\r\nimport { RoleService } from '@/services/role/role.service';\r\n\r\nimport { BuilderJob } from '@/models/builder-job';\r\nimport { Community } from '@/models/community';\r\nimport { User } from '@/models/user';\r\nimport { Builder } from '@/models/builder';\r\n\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { SignaturePad } from 'angular2-signaturepad/signature-pad';\r\nimport { isArray } from 'util';\r\n\r\nimport { Select2OptionData } from 'ng-select2';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-safety-inspection-add',\r\n templateUrl: './safety-inspection-add.component.html',\r\n styleUrls: ['./safety-inspection-add.component.scss']\r\n})\r\nexport class SafetyInspectionAddComponent implements OnInit {\r\n @ViewChild('inspectionTable')\r\n inspectionTable: ElementRef;\r\n\r\n @ViewChild(SignaturePad)\r\n signaturePad: SignaturePad;\r\n\r\n @ViewChild('signatureDiv')\r\n signatureDiv: ElementRef;\r\n\r\n jobID : string\r\n jobType : string\r\n job : BuilderJob\r\n community : Community\r\n builder : Builder\r\n crewLeader : User\r\n crewLeaders : Observable>\r\n checklistForm : FormGroup\r\n otherEntries : FormArray\r\n uploadError : string;\r\n\r\n signatureBaseURL : string;\r\n\r\n builderFiles = [];\r\n uploadResponse = { status: '', message: '', filePath: '' }\r\n submitted = false\r\n selectOptions = [\r\n { name: \"N/A\", value: 0 },\r\n { name: \"Non-compliant\", value: 1 },\r\n { name: \"Compliant\", value: 2 },\r\n ]\r\n signaturePadOptions: Object = {\r\n 'minWidth': 3,\r\n 'canvasWidth': 500,\r\n 'canvasHeight': 200,\r\n\t}\r\n\tselect2Options = {\r\n\t\ttheme: \"bootstrap4\",\r\n\t\twidth: \"100%\"\r\n\t}\r\n\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private jobService: JobsService,\r\n private builderService: BuildersService,\r\n private communityService: CommunitiesService,\r\n private userService: UserService,\r\n private employeeService: EmployeesService,\r\n\t\tpublic roleService: RoleService,\r\n\t\tprivate modalService: NgbModal,\r\n private inspectionsService: InspectionsService,\r\n private filesService: FilesService,\r\n private alertService: AlertService,\r\n ) {\r\n this.jobID = this.route.snapshot.paramMap.get(\"id\");\r\n\t\tthis.employeeService = employeeService;\r\n }\r\n\r\n ngAfterViewInit() {\r\n\t\tif( this.signaturePad ){\r\n\t\t\tthis.signaturePad.set('minWidth', 3)\r\n\t\t\tthis.setCanvasWidth()\r\n\t\t\tthis.signaturePad.clear()\r\n\t\t}\r\n }\r\n\r\n clearSignature(){\r\n this.signaturePad.clear()\r\n }\r\n\r\n drawComplete() {\r\n this.signatureBaseURL = this.signaturePad.toDataURL()\r\n }\r\n\r\n createFileFromBaseURL(url: string){\r\n let date = new Date().toLocaleDateString()\r\n date = date.replace(/\\//g, \"-\")\r\n const base64String = url.split(',')[1]\r\n const text = 'Safety'\r\n const imageName = date + ' ' + text + '.png'\r\n const imageBlob = this.dataURItoBlob(base64String)\r\n return new File([imageBlob], imageName, { type: 'image/png' })\r\n }\r\n\r\n dataURItoBlob(dataURI) {\r\n const byteString = window.atob(dataURI);\r\n const arrayBuffer = new ArrayBuffer(byteString.length);\r\n const int8Array = new Uint8Array(arrayBuffer);\r\n for (let i = 0; i < byteString.length; i++) {\r\n int8Array[i] = byteString.charCodeAt(i);\r\n }\r\n const blob = new Blob([int8Array], { type: 'image/png' });\r\n return blob;\r\n }\r\n\r\n setCanvasWidth() {\r\n this.signaturePad.set('canvasWidth', this.signatureDiv.nativeElement.offsetWidth )\r\n }\r\n\r\n async getWarranty(){\r\n const data = await this.jobService.getWarrantyJob(this.jobID).toPromise()\r\n return data.body\r\n }\r\n\r\n async getBuilder(){\r\n const data = await this.jobService.getBuilderJob(this.jobID).toPromise()\r\n return data.body\r\n }\r\n\r\n async getRepair(){\r\n const data = await this.jobService.getRepairJob(this.jobID).toPromise()\r\n return data.body\r\n }\r\n\r\n async getReroof(){\r\n const data = await this.jobService.getReroofJob(this.jobID).toPromise()\r\n return data.body\r\n }\r\n\r\n ngOnInit() {\r\n\t\tlet jobResponse\r\n\t\tconst urlPath = location.href\r\n\r\n if (urlPath.includes('builder')){\r\n this.jobType = 'builder'\r\n\t\t\tjobResponse = this.getBuilder()\r\n\t\t}\r\n\t\telse if (urlPath.includes('warranty')){\r\n this.jobType = 'warranty'\r\n\t\t\tjobResponse = this.getWarranty()\r\n\t\t}\r\n\t\telse if (urlPath.includes('repair')){\r\n this.jobType = 'repair'\r\n\t\t\tjobResponse = this.getRepair()\r\n\t\t}\r\n\t\telse if (urlPath.includes('reroof')){\r\n this.jobType = 'reroof'\r\n\t\t\tjobResponse = this.getReroof()\r\n }\r\n\r\n jobResponse.then( res => {\r\n this.job = res\r\n if (this.jobType === 'builder' || this.jobType === 'warranty') {\r\n // Get builder name\r\n this.builderService\r\n .getBuilder(this.job.BuilderID)\r\n .subscribe((res: any) => {\r\n this.builder = res.body\r\n })\r\n\r\n // Get community name\r\n this.communityService\r\n .getCommunity(this.job.CommunityID)\r\n .subscribe((res: any) => {\r\n this.community = res.body\r\n })\r\n }\r\n\r\n // Get crew leader name\r\n if (this.jobType === 'builder') {\r\n\t\t\t\t// console.log('Get crew leader name', this.job);\r\n\t\t\t\tif(this.job.CrewLeaderID != null) {\r\n\t\t\t\t\tthis.employeeService.getEmployee(this.job.CrewLeaderID).subscribe( (result: any) => {\r\n\t\t\t\t\t\t// console.log('job crew leader', result);\r\n\r\n\t\t\t\t\t\tresult.body.FullName = [result.body.FirstName, result.body.LastName].join(' ');\r\n\t\t\t\t\t\tthis.crewLeader = result.body\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.employeeService.getEmployees().subscribe( (result: any) => {\r\n\t\t\t\t\tlet employees = result.body\r\n\t\t\t\t\t\t\t// .filter( employee => employee.IsCrewLeader )\r\n\t\t\t\t\t\t\t.map( employee => {\r\n\t\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\t\ttext: `${ employee.FirstName } ${ employee.LastName }`,\r\n\t\t\t\t\t\t\t\t\tid: employee.ID\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\tthis.crewLeaders = this.updateUsers(employees)\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t\tthis.checklistForm = this.formBuilder.group({\r\n\t\t\t\ttype: 'Safety',\r\n\t\t\t\tcomments: '',\r\n\t\t\t\tCrewLeaderID: [ this.job.CrewLeaderID, Validators.required ],\r\n\t\t\t\tgasCan: ['', Validators.required],\r\n\t\t\t\tcompressor: ['', Validators.required],\r\n\t\t\t\tfireExtinguisher: ['', Validators.required],\r\n\t\t\t\tfirstAidKit: ['', Validators.required],\r\n\t\t\t\tladderAngle: ['', Validators.required],\r\n\t\t\t\tladderTiedOff: ['', Validators.required],\r\n\t\t\t\tladderHeight: ['', Validators.required],\r\n\t\t\t\tanchorPlacement: ['', Validators.required],\r\n\t\t\t\tanchorAttachment: ['', Validators.required],\r\n\t\t\t\tsrlAttached: ['', Validators.required],\r\n\t\t\t\tsrlCondition: ['', Validators.required],\r\n\t\t\t\tcreativity: ['', Validators.required],\r\n\t\t\t\tharnessCondition: ['', Validators.required],\r\n\t\t\t\thardHats: ['', Validators.required],\r\n\t\t\t\tsafetyGlasses: ['', Validators.required],\r\n\t\t\t\tgloves: ['', Validators.required],\r\n\t\t\t\totherEntries: this.formBuilder.array([ this.createItem() ]),\r\n\t\t\t});\r\n\r\n\t\t\t// Only Builder Jobs require a CrewLeaderID\r\n\t\t\tif ( this.jobType !== 'builder' ) {\r\n\t\t\t\tthis.checklistForm.removeControl( 'CrewLeaderID' )\r\n\t\t\t}\r\n })\r\n\r\n\t}\r\n\r\n\topenModal(modal, windowClass) {\r\n\t\t// don't show modals if crew leader is logged in\r\n\t\tif(this.roleService.isCrewLeader) return\r\n\r\n\t\tthis.modalService\r\n\t\t\t.open(modal, { ariaLabelledBy: \"modal-basic-title\", windowClass })\r\n\t\t\t.result.then(\r\n\t\t\t\tresult => {\r\n\r\n\t\t\t\t\tfor (let key in result) {\r\n\t\t\t\t\t\tconst value = result[key]\r\n\r\n\t\t\t\t\t\tif( key === \"CrewLeaderID\") {\r\n\t\t\t\t\t\t\tthis.updateCrewLeader( value )\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\treason => {\r\n\t\t\t\t\t// this.closeResult = this.getDismissReason(reason);\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t}\r\n\r\n\tupdateCrewLeader( id: string ) {\r\n\t\tthis.checklistForm.controls[ 'CrewLeaderID' ].setValue( id )\r\n\t\tthis.userService.getUser( id ).subscribe((result: any) => {\r\n\t\t\tlet user = result.body\r\n\t\t\tthis.crewLeader = user\r\n\t\t});\r\n\t}\r\n\r\n createItem(): FormGroup {\r\n return this.formBuilder.group({\r\n input: '',\r\n rating: '',\r\n });\r\n }\r\n\r\n addItem(): void {\r\n this.otherEntries = this.checklistForm.get('otherEntries') as FormArray;\r\n this.otherEntries.push(this.createItem());\r\n }\r\n\r\n removeItem(index): void {\r\n this.otherEntries.removeAt(index)\r\n }\r\n\r\n displayFilesOnUpload() {\r\n const input = document.querySelector('#fileUpload');\r\n // Create array from FileList\r\n this.builderFiles = Array.from((input).files)\r\n }\r\n\r\n get form() {\r\n return this.checklistForm.get('otherEntries')['controls']\r\n }\r\n\r\n handleFormSubmit() {\r\n\t\tthis.submitted = true\r\n\r\n\t\tif (this.checklistForm.invalid) {\r\n\t\t\tthis.alertService.error(\"Your form has errors. Make sure all inspection items have been checked\")\r\n\t\t\tdocument.body.scrollIntoView({ behavior: \"smooth\" })\r\n\t\t\tthis.submitted = false\r\n\t\t\treturn\r\n\t\t}\r\n const formData = this.checklistForm.value\r\n // change form values from strings to integers\r\n for (const key in formData) {\r\n const value = formData[key]\r\n\r\n\t\t\t// Look at all fields except comments, type & CrewLeaderID\r\n\t\t\tif (\r\n\t\t\t\t\tkey !== \"comments\" &&\r\n\t\t\t\t\tkey !== 'type' &&\r\n\t\t\t\t\tkey !== 'CrewLeaderID'\r\n\t\t\t\t) {\r\n\r\n\t\t\t\tif (key === \"otherEntries\") {\r\n\r\n\t\t\t\t\t\tformData[key].forEach(( value, index ) => {\r\n\t\t\t\t\t\t\tif(!value.input){\r\n\t\t\t\t\t\t\t\tformData[key].splice(index, 1)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\tvalue.rating = +value.rating\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tformData[key] = +value\r\n\t\t\t\t}\r\n\t\t\t}\r\n }\r\n\r\n this.inspectionsService\r\n .createSafetyChecklist(formData)\r\n .subscribe((data: any) => {\r\n\t\t\t\tlet signatureFile\r\n // save digital signature as a File\r\n\t\t\t\tif(this.signatureBaseURL){\r\n\t\t\t\t\tsignatureFile = this.createFileFromBaseURL(this.signatureBaseURL)\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.alertService.error(\"You must sign the inspection to submit it\");\r\n\t\t\t\t\tdocument.body.scrollIntoView({ behavior: \"smooth\" });\r\n\t\t\t\t\tthis.submitted = false\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\r\n this.filesService.uploadFile(signatureFile, data.ID, \"Inspection\").subscribe(( res: any ) => {\r\n // wait a second for the server to register the new files\r\n if( isArray(res) ){\r\n setTimeout(() => {\r\n data.SignatureFileID = res[0]\r\n this.inspectionsService.updateSafetyChecklist(data.ID, data).subscribe(( res: any ) => {})\r\n }, 1000)\r\n }\r\n })\r\n\r\n // If files were uploaded, send to server\r\n if (this.builderFiles.length) {\r\n // Iterate through each file in the array\r\n this.builderFiles.forEach(file => {\r\n // send array of files to file upload service function\r\n this.filesService.uploadFile(file, data.ID, \"Inspection\").subscribe(\r\n res => {\r\n console.log(res)\r\n },\r\n err => console.log(err)\r\n )\r\n })\r\n }\r\n\r\n // Add created inspection to Job, then redirect to job\r\n let jobType\r\n\r\n\t\t\t\tswitch ( this.jobType ) {\r\n\t\t\t\t\tcase 'builder':\r\n\t\t\t\t\t\tjobType = 'BuilderJob'\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'warranty':\r\n\t\t\t\t\t\tjobType = 'Warranty'\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'reroof':\r\n\t\t\t\t\t\tjobType = 'Reroof'\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'repair':\r\n\t\t\t\t\t\tjobType = 'Repair'\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n this.inspectionsService\r\n .addChecklistToJob( data.ID, this.jobID, jobType, data )\r\n .subscribe(( result: any ) => {\r\n this.router.navigate([ `${this.jobType}-jobs/${this.jobID}` ]);\r\n })\r\n },\r\n error => {\r\n this.alertService.error(error);\r\n\r\n document.body.scrollIntoView({ behavior: \"smooth\" });\r\n }\r\n )\r\n\t}\r\n\r\n\tupdateUsers(users = []): Observable> {\r\n\t\treturn Observable.create((obs) => {\r\n\t\t\tobs.next(users);\r\n\t\t\tobs.complete();\r\n\t\t});\r\n\t}\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n \\r\\n
\\r\\n

\\r\\n Safety Checklist\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Builder\\r\\n
\\r\\n
\\r\\n {{ builder?.CompanyName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Community\\r\\n
\\r\\n
\\r\\n {{ community?.Name }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Lot\\r\\n
\\r\\n
\\r\\n {{ job?.Lot1 }} / {{ job?.Lot2 }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n
\\r\\n Crew Leader\\r\\n
\\r\\n
\\r\\n {{ crewLeader?.FullName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Customer\\r\\n
\\r\\n
\\r\\n {{ job?.FirstName + ' ' + job?.LastName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Address\\r\\n
\\r\\n
\\r\\n {{ job?.Address }}
\\r\\n \\r\\n {{ job?.Address2 }}
\\r\\n
\\r\\n {{ job?.City }} {{ job?.State }}, {{ job?.ZipCode }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Phone\\r\\n
\\r\\n
\\r\\n {{ job?.Phone | mask: '000-000-0000' }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t+ Add \\\"Other\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
Inspection ItemsCompliantNon-compliantN/A
Gas Can\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
Compressor\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
Fire Extinguiser\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
First Aid Kit\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
Ladder Angle\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
Ladder Tied Off\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
Ladder Height\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
Anchor Placement\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
Anchor Attachment\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
SRL Attached\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Creativity\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
SRL Condition\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Harness Condition\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Hard Hats\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Safety Glasses\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
Gloves\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
\\r\\n Other:\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
\\r\\n
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\tUpdate inspection\\r\\n\\t\\t\\t\\t\\t\\r\\n
\\r\\n
\\r\\n
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n
\\r\\n
\\r\\n Comments\\r\\n
\\r\\n
\\r\\n {{ inspection?.Comments }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n Documents\\r\\n

\\r\\n
\\r\\n
\\r\\n {{ uploadError }}\\r\\n
\\r\\n
\\r\\n {{ uploadResponse.message }}\\r\\n
\\r\\n
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{{uploadResponse.message}}%\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n
\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t{{ file.Label.length > 25 ? file.Label.substr(0,25) + '...' : file.Label }}\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
Uploaded: {{ file.UploadedDate | date:'medium' }}
\\r\\n\\t\\t\\t
\\r\\n
\\r\\n
\\r\\n
\\r\\n
No documents have been uploaded
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n Signature\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\\"Inspection\\r\\n
\\r\\n
\\r\\n
This inspection has not yet been signed
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n\\r\\n\\r\\n\\t
\\r\\n\\t\\t

{{ modalPreviewFileName }}

\\r\\n\\t\\t\\r\\n\\t\\t\\t×\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\\"image\\\"\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tDownload File\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n
\\r\\n\\r\\n\\r\\n\\t
\\r\\n\\t\\t

Update Comments

\\r\\n\\t\\t\\r\\n\\t\\t\\t×\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tSave\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\\r\\n\\r\\n\\t
\\r\\n\\t\\t

Update Crew Leader

\\r\\n\\t\\t\\r\\n\\t\\t\\t×\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tCrew Leader Name is required\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t{{ inspection.CrewLeaderID }}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tSave\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\r\\n\\r\\n\"","module.exports = \".c-job-file-wrapper-outer {\\n display: flex;\\n flex-direction: column;\\n width: 100%;\\n}\\n\\n.c-job-file-wrapper {\\n display: flex;\\n flex-direction: row;\\n}\\n\\n.c-job-file-preview-wrapper {\\n display: flex;\\n flex-direction: column;\\n width: 100%;\\n align-items: center;\\n cursor: pointer;\\n}\\n\\n.c-job-file-preview {\\n height: 10em;\\n width: auto;\\n margin: 1em;\\n}\\n\\n.c-job-file-wrapper-outer .uploaded-date {\\n text-align: center;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdmlld3MvaW5zcGVjdGlvbnMvc2FmZXR5LWluc3BlY3Rpb24tdmlldy9DOlxcVXNlcnNcXERhbmllbFxcRGVza3RvcFxcUHJvamVjdHNcXFN0ZXJsaW5nUm9vZmluZy9zcmNcXGFwcFxcdmlld3NcXGluc3BlY3Rpb25zXFxzYWZldHktaW5zcGVjdGlvbi12aWV3XFxzYWZldHktaW5zcGVjdGlvbi12aWV3LmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC92aWV3cy9pbnNwZWN0aW9ucy9zYWZldHktaW5zcGVjdGlvbi12aWV3L3NhZmV0eS1pbnNwZWN0aW9uLXZpZXcuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxhQUFBO0VBQ0Esc0JBQUE7RUFDQSxXQUFBO0FDQ0o7O0FERUE7RUFDSSxhQUFBO0VBQ0EsbUJBQUE7QUNDSjs7QURFQTtFQUNJLGFBQUE7RUFDQSxzQkFBQTtFQUNBLFdBQUE7RUFDQSxtQkFBQTtFQUNBLGVBQUE7QUNDSjs7QURFQTtFQUNJLFlBQUE7RUFDQSxXQUFBO0VBQ0EsV0FBQTtBQ0NKOztBREVBO0VBQ0ksa0JBQUE7QUNDSiIsImZpbGUiOiJzcmMvYXBwL3ZpZXdzL2luc3BlY3Rpb25zL3NhZmV0eS1pbnNwZWN0aW9uLXZpZXcvc2FmZXR5LWluc3BlY3Rpb24tdmlldy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jLWpvYi1maWxlLXdyYXBwZXItb3V0ZXIge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxuLmMtam9iLWZpbGUtd3JhcHBlciB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcclxufVxyXG5cclxuLmMtam9iLWZpbGUtcHJldmlldy13cmFwcGVyIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4uYy1qb2ItZmlsZS1wcmV2aWV3IHtcclxuICAgIGhlaWdodDogMTBlbTtcclxuICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgbWFyZ2luOiAxZW07XHJcbn1cclxuXHJcbi5jLWpvYi1maWxlLXdyYXBwZXItb3V0ZXIgLnVwbG9hZGVkLWRhdGUge1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG59IiwiLmMtam9iLWZpbGUtd3JhcHBlci1vdXRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uYy1qb2ItZmlsZS13cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbn1cblxuLmMtam9iLWZpbGUtcHJldmlldy13cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6IDEwMCU7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmMtam9iLWZpbGUtcHJldmlldyB7XG4gIGhlaWdodDogMTBlbTtcbiAgd2lkdGg6IGF1dG87XG4gIG1hcmdpbjogMWVtO1xufVxuXG4uYy1qb2ItZmlsZS13cmFwcGVyLW91dGVyIC51cGxvYWRlZC1kYXRlIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufSJdfQ== */\"","import { Component, OnInit, ElementRef, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators, FormArray } from '@angular/forms';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { DomSanitizer } from \"@angular/platform-browser\";\r\n\r\nimport { JobsService } from '@/services/jobs/jobs.service';\r\nimport { BuildersService } from '@/services/builders/builders.service';\r\nimport { CommunitiesService } from '@/services/communities/communities.service';\r\nimport { UserService } from '@/services/user/user.service';\r\nimport { InspectionsService } from '@/services/inspections/inspections.service';\r\nimport { FilesService } from '@/services/files/files.service';\r\nimport { AlertService } from '@/services/alert/alert.service';\r\nimport { RoleService } from '@/services/role/role.service';\r\n\r\nimport { BuilderJob } from '@/models/builder-job';\r\nimport { Community } from '@/models/community';\r\nimport { User } from '@/models/user';\r\nimport { Builder } from '@/models/builder';\r\nimport { SafetyInspection } from '@/models/safety-inspection';\r\n\r\nimport { Select2OptionData } from 'ng-select2';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-safety-inspection-view',\r\n templateUrl: './safety-inspection-view.component.html',\r\n styleUrls: ['./safety-inspection-view.component.scss']\r\n})\r\nexport class SafetyInspectionViewComponent implements OnInit {\r\n @ViewChild('inspectionTable')\r\n\tinspectionTable: ElementRef;\r\n\r\n\t@ViewChild('filePreviewModal')\r\n\tfilePreviewModal: ElementRef;\r\n\r\n inspection : SafetyInspection\r\n jobID : string\r\n jobType : string\r\n checklistID : string\r\n job : BuilderJob\r\n community : Community\r\n builder : Builder\r\n crewLeader : User\r\n crewLeaders \t\t\t\t : Observable>\r\n checklistForm : FormGroup\r\n otherEntries : FormArray\r\n\tuploadError : string\r\n inspectionFiles : Array\r\n inspectionSignature : string | ArrayBuffer\r\n\tmodalPreviewFile\t\t : any;\r\n\tmodalPreviewFileType : string;\r\n\tmodalPreviewFileName : string;\r\n\tmodalPreviewFileID : string;\r\n\r\n uploadResponse = { status: '', message: '', filePath: '' }\r\n selectOptions = [\r\n { name: \"N/A\", value: 0 },\r\n { name: \"Non-compliant\", value: 1 },\r\n { name: \"Compliant\", value: 2 },\r\n\t]\r\n\r\n\tselect2Options = {\r\n\t\ttheme: \"bootstrap4\",\r\n\t\twidth: \"100%\"\r\n\t}\r\n\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private route: ActivatedRoute,\r\n private jobService: JobsService,\r\n private builderService: BuildersService,\r\n private communityService: CommunitiesService,\r\n private userService: UserService,\r\n\t\tpublic roleService: RoleService,\r\n private modalService: NgbModal,\r\n private inspectionsService: InspectionsService,\r\n private alertService: AlertService,\r\n private filesService: FilesService,\r\n\t\tprivate domSanitizer : DomSanitizer,\r\n ) {\r\n this.jobID = this.route.snapshot.paramMap.get(\"id\")\r\n this.checklistID = this.route.snapshot.paramMap.get(\"checklist_id\")\r\n }\r\n\r\n async getWarranty() {\r\n const data = await this.jobService.getWarrantyJob(this.jobID).toPromise()\r\n return data.body\r\n }\r\n\r\n async getBuilder() {\r\n const data = await this.jobService.getBuilderJob(this.jobID).toPromise()\r\n return data.body\r\n }\r\n\r\n async getRepair() {\r\n const data = await this.jobService.getRepairJob(this.jobID).toPromise()\r\n return data.body\r\n }\r\n\r\n async getReroof() {\r\n const data = await this.jobService.getReroofJob(this.jobID).toPromise()\r\n return data.body\r\n }\r\n\r\n ngOnInit() {\r\n\t\tlet jobResponse\r\n\t\tconst urlPath = location.href\r\n\r\n if ( urlPath.includes( 'builder' )) {\r\n this.jobType = 'builder'\r\n jobResponse = this.getBuilder()\r\n\t\t}\r\n\t\telse if ( urlPath.includes( 'warranty' )) {\r\n this.jobType = 'warranty'\r\n jobResponse = this.getWarranty()\r\n\t\t}\r\n\t\telse if ( urlPath.includes( 'repair' )) {\r\n this.jobType = 'repair'\r\n jobResponse = this.getRepair()\r\n\t\t}\r\n\t\telse if ( urlPath.includes( 'reroof' )) {\r\n this.jobType = 'reroof'\r\n jobResponse = this.getReroof()\r\n }\r\n\r\n jobResponse.then(res => {\r\n this.job = res\r\n if (this.jobType === 'builder' || this.jobType === 'warranty') {\r\n // Get builder name\r\n this.builderService\r\n .getBuilder(this.job.BuilderID)\r\n .subscribe((res: any) => {\r\n this.builder = res.body\r\n })\r\n\r\n // Get community name\r\n this.communityService\r\n .getCommunity(this.job.CommunityID)\r\n .subscribe((res: any) => {\r\n this.community = res.body\r\n })\r\n }\r\n\r\n // get only users who are crew leaders and put in dropdown\r\n\t\t\tthis.userService.getUsers( 3 ).subscribe(( result: any ) => {\r\n\t\t\t\tconst users = result.body.data.map( user => {\r\n\t\t\t\t\tconst text = user.FullName ? user.FullName : user.Email\r\n\t\t\t\t\tconst id = user.Id\r\n\r\n\t\t\t\t\treturn { id, text }\r\n\t\t\t\t})\r\n\t\t\t\tthis.crewLeaders = this.updateUsers( users )\r\n\t\t\t})\r\n })\r\n\r\n this.checklistForm = this.formBuilder.group({\r\n Type: 'Safety',\r\n Comments: '',\r\n CrewLeaderID: '',\r\n GasCan: '',\r\n Compressor: '',\r\n FireExtinguisher: '',\r\n FirstAidKit: '',\r\n LadderAngle: '',\r\n LadderTiedOff: '',\r\n LadderHeight: '',\r\n AnchorPlacement: '',\r\n AnchorAttachment: '',\r\n SRLAttached: '',\r\n SRLCondition: '',\r\n Creativity: '',\r\n HarnessCondition: '',\r\n HardHats: '',\r\n SafetyGlasses: '',\r\n Gloves: '',\r\n OtherEntries: this.formBuilder.array([]),\r\n });\r\n\r\n\t\t// Only Builder Jobs require a CrewLeaderID\r\n\t\tif ( this.jobType !== 'builder' ) {\r\n\t\t\tthis.checklistForm.removeControl( 'CrewLeaderID' )\r\n\t\t}\r\n\r\n this.inspectionsService\r\n .getSafetyChecklist(this.checklistID)\r\n .subscribe((data: any) => {\r\n this.inspection = data.body\r\n this.inspectionFiles = this.inspection.Files.filter( file => file.ID !== this.inspection.SignatureFileID )\r\n\r\n if (this.inspection.SignatureFileID)\r\n this.displaySignature(this.inspection.SignatureFileID)\r\n // change integer values to strings to populate radio buttons\r\n for (const key in this.inspection) {\r\n if (this.inspection.hasOwnProperty(key)) {\r\n const value = this.inspection[key]\r\n if (typeof value === 'number' || key === 'Comments') {\r\n this.checklistForm.get(key).setValue(`${value}`)\r\n }\r\n if(key === 'OtherEntries' && value){\r\n if (value) {\r\n value.forEach(val => {\r\n this.createItemWithValues(val.Input, `${val.Rating}`)\r\n })\r\n }\r\n }\r\n }\r\n\t\t\t\t}\r\n\t\t\t\t// Get crew leader name\r\n\t\t\t\tif ( this.jobType === 'builder' ) {\r\n\t\t\t\t\tthis.userService\r\n\t\t\t\t\t\t.getUser( this.inspection.CrewLeaderID )\r\n\t\t\t\t\t\t.subscribe(( res: any ) => {\r\n\t\t\t\t\t\t\tthis.crewLeader = res.body\r\n\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n })\r\n }\r\n\r\n createItem(): FormGroup {\r\n return this.formBuilder.group({\r\n Input: '',\r\n Rating: '',\r\n });\r\n }\r\n\r\n addItem(): void {\r\n this.otherEntries = this.checklistForm.get('OtherEntries') as FormArray;\r\n this.otherEntries.push(this.createItem());\r\n }\r\n\r\n createItemWithValues(input: string, rating: string): void {\r\n this.otherEntries = this.checklistForm.get('OtherEntries') as FormArray;\r\n this.otherEntries.push(\r\n this.formBuilder.group({\r\n Input: input,\r\n Rating: rating\r\n })\r\n )\r\n }\r\n\r\n removeItem(index): void {\r\n this.otherEntries.removeAt(index)\r\n }\r\n\r\n updateFiles() {\r\n this.inspectionsService.getSafetyChecklist(this.inspection.ID).subscribe((result: any) => {\r\n this.inspectionFiles = result.body.Files.filter(file => file.ID !== this.inspection.SignatureFileID)\r\n })\r\n }\r\n\r\n onDeleteFile(event: Event, fileID: string) {\r\n event.preventDefault()\r\n if (window.confirm(\"Do you really want to delete this file?\")) {\r\n this.filesService.deleteFile(fileID).subscribe((result: any) => {\r\n this.updateFiles()\r\n })\r\n }\r\n }\r\n\r\n setPreviewFile( fileURL ){\r\n\t\tif(this.modalPreviewFileType.includes('image')){\r\n\t\t\tthis.modalPreviewFile = fileURL\r\n\t\t}else{\r\n\t\t\tthis.modalPreviewFile = this.domSanitizer.bypassSecurityTrustResourceUrl(fileURL)\r\n\t\t}\r\n\t\tthis.openModal( this.filePreviewModal, 'image-pdf' )\r\n\t}\r\n\r\n\tdownloadPreviewFile(){\r\n\t\tthis.filesService.downloadFile( this.modalPreviewFileID ).subscribe(( result: Blob ) => {\r\n\t\t\t// create a fake anchor element to force browser to download\r\n\t\t\tconst anchor = document.createElement('a')\r\n\t\t\tanchor.style.display = \"none\"\r\n\t\t\tdocument.body.appendChild(anchor)\r\n\t\t\t// Set file name attribute\r\n\t\t\tanchor.setAttribute(\"download\", this.modalPreviewFileName)\r\n\t\t\t// create new blob to change the type to the file's type\r\n\t\t\tconst blob = new Blob([result], {type: this.modalPreviewFileType})\r\n\t\t\t// Create file URL from Blob object\r\n\t\t\tconst url = window.URL.createObjectURL(blob)\r\n\t\t\t// set href attribute to be url\r\n\t\t\tanchor.setAttribute(\"href\", url)\r\n\t\t\t// force click on anchor to download\r\n\t\t\tanchor.click()\r\n\t\t\t// Cleanup\r\n\t\t\twindow.URL.revokeObjectURL(anchor.href);\r\n\t\t\tdocument.body.removeChild(anchor);\r\n\t\t})\r\n\t}\r\n\r\n\tgetFile( event, fileID, fileType, fileName ){\r\n\t\tevent.preventDefault()\r\n\t\tthis.modalPreviewFileName = fileName\r\n\t\tthis.modalPreviewFileType = fileType\r\n\t\tthis.modalPreviewFileID = fileID\r\n\r\n\t\tthis.filesService.downloadFile( fileID ).subscribe(( result: Blob ) => {\r\n\t\t\t// create new blob to change the type to the file's type\r\n\t\t\tconst blob = new Blob([result], {type: fileType})\r\n\t\t\t// create base64 url to display in modal\r\n\t\t\tconst reader = new FileReader()\r\n\t\t\treader.readAsDataURL(blob)\r\n\t\t\treader.onloadend = () => {\r\n\t\t\t\tvar base64data = reader.result\r\n\t\t\t\tthis.setPreviewFile(base64data)\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n displaySignature(id){\r\n this.filesService.getFile(id).subscribe(( res: any) => {\r\n const file = res.body\r\n const fileType = file.Type\r\n this.filesService.downloadFile(id).subscribe((result: Blob) => {\r\n // create new blob to change the type to the file's type\r\n const blob = new Blob([result], { type: fileType })\r\n // get Base64 url and display as image\r\n var reader = new FileReader()\r\n reader.readAsDataURL(blob);\r\n reader.onloadend = () => {\r\n this.inspectionSignature = reader.result\r\n }\r\n })\r\n })\r\n }\r\n\r\n displayFilesOnUpload() {\r\n const input = document.querySelector('#fileUpload');\r\n // Create array from FileList\r\n const filesArray = Array.from((input).files)\r\n // Iterate through each file in the array and send to server endpoint\r\n filesArray.forEach(file => {\r\n // send array of files to file upload service function\r\n this.filesService.uploadFile(file, this.inspection.ID, \"Inspection\").subscribe(\r\n res => {\r\n this.uploadResponse = res\r\n if (res.message == '100') {\r\n // wait a second for the server to register the new files\r\n setTimeout(() => {\r\n this.updateFiles()\r\n this.alertService.success(`File uploaded successfully!`, true);\r\n }, 1000)\r\n }\r\n },\r\n err => {\r\n this.uploadError = err\r\n this.alertService.error(`File upload failed - ${err}`, true);\r\n }\r\n )\r\n })\r\n }\r\n\r\n openModal(modal, windowClass = '') {\r\n this.modalService.open(modal, { ariaLabelledBy: 'modal-basic-title', windowClass })\r\n .result.then(\r\n result => {\r\n for (let key in result) {\r\n var value = result[key];\r\n\r\n if ( value == 1 || value == 2 || value == 3 ) {\r\n value = +value\r\n }\r\n if (key === \"OtherEntries\") {\r\n value.forEach(( val, index ) => {\r\n val.Rating = +val.Rating\r\n })\r\n }\r\n this.inspection[key] = value\r\n }\r\n\r\n this.inspectionsService.updateSafetyChecklist(this.inspection.ID, this.inspection)\r\n .subscribe(\r\n (data: any) => {\r\n\t\t\t\t\t\t\t\tthis.updateCrewLeader( this.inspection[ 'CrewLeaderID' ] )\r\n\t\t\t\t\t\t\t\tthis.alertService.success(`Inspection Updated!`, true)\r\n \t\t\tdocument.body.scrollIntoView({ behavior: \"smooth\" })\r\n },\r\n error => {\r\n this.alertService.error(error);\r\n document.body.scrollIntoView({ behavior: \"smooth\" });\r\n });\r\n },\r\n reason => {\r\n // this.closeResult = this.getDismissReason(reason);\r\n }\r\n );\r\n }\r\n\r\n get form() {\r\n return this.checklistForm.get('OtherEntries')['controls']\r\n }\r\n\r\n handleFormSubmit() {\r\n\t\tlet data = this.checklistForm.value\r\n\r\n for (let key in data) {\r\n let value = data[key];\r\n\r\n if (key === \"OtherEntries\") {\r\n value.forEach((val, index) => {\r\n if (!val.Input) {\r\n data[key].splice(index, 1)\r\n } else {\r\n val.Rating = +val.Rating\r\n }\r\n })\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// force all values to an integer that arent Type, Comment & CrewLeaderID\r\n\t\t\t\tif (\r\n\t\t\t\t\tkey !== 'Type' &&\r\n\t\t\t\t\tkey !== 'Comments' &&\r\n\t\t\t\t\tkey !== 'CrewLeaderID'\r\n\t\t\t\t){\r\n\t\t\t\t\tvalue = +value\r\n\t\t\t\t}\r\n\t\t\t}\r\n data[key] = value\r\n\t\t}\r\n\r\n\t\tdata = { ...this.inspection, ...data}\r\n\r\n this.inspectionsService.updateSafetyChecklist(this.inspection.ID, data)\r\n .subscribe(\r\n (data: any) => {\r\n this.alertService.success(`Inspection Updated!`, true)\r\n document.body.scrollIntoView({ behavior: \"smooth\" })\r\n },\r\n error => {\r\n this.alertService.error(error);\r\n document.body.scrollIntoView({ behavior: \"smooth\" });\r\n });\r\n\t}\r\n\r\n\tupdateUsers(users = []): Observable> {\r\n\t\treturn Observable.create((obs) => {\r\n\t\t\tobs.next(users);\r\n\t\t\tobs.complete();\r\n\t\t});\r\n\t}\r\n\r\n\tupdateCrewLeader( id: string ) {\r\n\t\tthis.userService\r\n\t\t\t.getUser( id )\r\n\t\t\t.subscribe(( res: any ) => {\r\n\t\t\t\tthis.crewLeader = res.body\r\n\t\t\t})\r\n\t}\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n \\r\\n
\\r\\n

\\r\\n Shingle Inspection\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Builder\\r\\n
\\r\\n
\\r\\n {{ builder?.CompanyName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Community\\r\\n
\\r\\n
\\r\\n {{ community?.Name }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Lot\\r\\n
\\r\\n
\\r\\n {{ job?.Lot1 }} / {{ job?.Lot2 }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n
\\r\\n Crew Leader\\r\\n
\\r\\n
\\r\\n {{ crewLeader?.FullName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tYear must be between 2010 and 2050\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tEnter a valid inspection date YYYY-MM-DD\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tInspection date is required\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n
\\r\\n
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\tAll fields marked with * are required\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Inspection ItemsYesNoN/A
Shingles installed 100% straight and nailed correctly*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
All penetrations installed*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
All walls & penetrations step-bulled*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
All valleys bulled*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
Crickets installed*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
Plenty of squish around vents and flashing*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
Boots folded over 100%*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
All shingles picked up & debris cleaned*\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
\\r\\n Other:\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n Documents\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ uploadError }}\\r\\n
\\r\\n
\\r\\n {{ uploadResponse.message }}\\r\\n
\\r\\n
\\r\\n
\\r\\n {{uploadResponse.message}}%\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n Signature\\r\\n

\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\tSubmit\\r\\n\\t\\t\\t\\t\\t\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n\\r\\n\\r\\n\\t
\\r\\n\\t\\t

Update Crew Leader

\\r\\n\\t\\t\\r\\n\\t\\t\\t×\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tSave\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\r\\n\\r\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3ZpZXdzL2luc3BlY3Rpb25zL3NoaW5nbGUtaW5zcGVjdGlvbi1hZGQvc2hpbmdsZS1pbnNwZWN0aW9uLWFkZC5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit, ElementRef, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators, FormArray } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport { JobsService } from '@/services/jobs/jobs.service';\r\nimport { BuildersService } from '@/services/builders/builders.service';\r\nimport { CommunitiesService } from '@/services/communities/communities.service';\r\nimport { UserService } from '@/services/user/user.service';\r\nimport { InspectionsService } from '@/services/inspections/inspections.service';\r\nimport { FilesService } from '@/services/files/files.service';\r\nimport { AlertService } from '@/services/alert/alert.service';\r\nimport { RoleService } from '@/services/role/role.service';\r\n\r\nimport { BuilderJob } from '@/models/builder-job';\r\nimport { Community } from '@/models/community';\r\nimport { User } from '@/models/user';\r\nimport { Builder } from '@/models/builder';\r\n\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { SignaturePad } from 'angular2-signaturepad/signature-pad';\r\nimport { isArray } from 'util';\r\n\r\nimport { Select2OptionData } from 'ng-select2';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-shingle-inspection-add',\r\n templateUrl: './shingle-inspection-add.component.html',\r\n styleUrls: ['./shingle-inspection-add.component.scss']\r\n})\r\nexport class ShingleInspectionAddComponent implements OnInit {\r\n @ViewChild('inspectionTable')\r\n inspectionTable: ElementRef;\r\n\r\n @ViewChild(SignaturePad)\r\n signaturePad: SignaturePad;\r\n\r\n @ViewChild('signatureDiv')\r\n signatureDiv: ElementRef;\r\n\r\n jobID : string\r\n jobType : string\r\n job : BuilderJob\r\n community : Community\r\n builder : Builder\r\n\tcrewLeader : User\r\n\tcrewLeaders : Observable>\r\n checklistForm : FormGroup\r\n otherEntries : FormArray\r\n uploadError : string\r\n signatureBaseURL : string\r\n\r\n builderFiles = [];\r\n uploadResponse = { status: '', message: '', filePath: '' }\r\n submitted = false\r\n selectOptions = [\r\n { name: \"N/A\", value: \"0\" },\r\n { name: \"No\", value: \"1\" },\r\n { name: \"Yes\", value: \"2\" },\r\n ]\r\n signaturePadOptions: Object = {\r\n 'minWidth': 3,\r\n 'canvasWidth': 500,\r\n 'canvasHeight': 200,\r\n\t}\r\n\tselect2Options = {\r\n\t\ttheme: \"bootstrap4\",\r\n\t\twidth: \"100%\"\r\n\t}\r\n\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private jobService: JobsService,\r\n private builderService: BuildersService,\r\n private communityService: CommunitiesService,\r\n private userService: UserService,\r\n\t\tpublic roleService: RoleService,\r\n\t\tprivate modalService: NgbModal,\r\n private inspectionsService: InspectionsService,\r\n private filesService: FilesService,\r\n private alertService: AlertService,\r\n ) {\r\n this.jobID = this.route.snapshot.paramMap.get(\"id\")\r\n }\r\n\r\n ngAfterViewInit() {\r\n if( this.signaturePad ){\r\n\t\t\tthis.signaturePad.set('minWidth', 3)\r\n\t\t\tthis.setCanvasWidth()\r\n\t\t\tthis.signaturePad.clear()\r\n\t\t}\r\n }\r\n\r\n clearSignature() {\r\n this.signaturePad.clear()\r\n }\r\n\r\n drawComplete() {\r\n this.signatureBaseURL = this.signaturePad.toDataURL()\r\n }\r\n\r\n createFileFromBaseURL(url: string) {\r\n let date = new Date().toLocaleDateString()\r\n date = date.replace(/\\//g, \"-\")\r\n const base64String = url.split(',')[1]\r\n\t\tconst text = 'Shingle'\r\n const imageName = date + ' ' + text + '.png'\r\n const imageBlob = this.dataURItoBlob(base64String)\r\n return new File([imageBlob], imageName, { type: 'image/png' })\r\n }\r\n\r\n dataURItoBlob(dataURI) {\r\n const byteString = window.atob(dataURI);\r\n const arrayBuffer = new ArrayBuffer(byteString.length);\r\n const int8Array = new Uint8Array(arrayBuffer);\r\n for (let i = 0; i < byteString.length; i++) {\r\n int8Array[i] = byteString.charCodeAt(i);\r\n }\r\n const blob = new Blob([int8Array], { type: 'image/png' });\r\n return blob;\r\n }\r\n\r\n setCanvasWidth() {\r\n this.signaturePad.set('canvasWidth', this.signatureDiv.nativeElement.offsetWidth)\r\n }\r\n\r\n async getWarranty(){\r\n const data = await this.jobService.getWarrantyJob(this.jobID).toPromise()\r\n return data.body\r\n }\r\n\r\n async getBuilder(){\r\n const data = await this.jobService.getBuilderJob(this.jobID).toPromise()\r\n return data.body\r\n }\r\n\r\n ngOnInit() {\r\n\t\tlet jobResponse\r\n\t\tconst urlPath = location.href\r\n\r\n if (urlPath.includes('builder')) {\r\n this.jobType = 'builder'\r\n jobResponse = this.getBuilder()\r\n\t\t}\r\n\t\telse if (urlPath.includes('warranty')) {\r\n this.jobType = 'warranty'\r\n jobResponse = this.getWarranty()\r\n }\r\n\r\n jobResponse.then(res => {\r\n this.job = res\r\n\r\n // Get builder name\r\n this.builderService\r\n .getBuilder(this.job.BuilderID)\r\n .subscribe((res: any) => {\r\n this.builder = res.body\r\n })\r\n\r\n // Get community name\r\n this.communityService\r\n .getCommunity(this.job.CommunityID)\r\n .subscribe((res: any) => {\r\n this.community = res.body\r\n })\r\n\r\n // Get crew leader name\r\n if (this.jobType === 'builder') {\r\n this.userService\r\n .getUser(this.job.CrewLeaderID)\r\n .subscribe((res: any) => {\r\n\t\t\t\t\t\tthis.crewLeader = res.body\r\n\r\n\t\t\t\t\t\t// get only users who are crew leaders and put in dropdown\r\n\t\t\t\t\t\tthis.userService.getUsers( 3 ).subscribe(( result: any ) => {\r\n\t\t\t\t\t\t\tconst users = result.body.data.map( user => {\r\n\t\t\t\t\t\t\t\tconst text = user.FullName ? user.FullName : user.Email\r\n\t\t\t\t\t\t\t\tconst id = user.Id\r\n\r\n\t\t\t\t\t\t\t\treturn { id, text }\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\tthis.crewLeaders = this.updateUsers( users )\r\n\t\t\t\t\t\t})\r\n })\r\n\t\t\t}\r\n\r\n\t\t\tthis.checklistForm = this.formBuilder.group({\r\n\t\t\t\ttype: 'Shingle',\r\n\t\t\t\tcomments: '',\r\n\t\t\t\tCrewLeaderID: [ this.job.CrewLeaderID, Validators.required ],\r\n\t\t\t\tshingleInspectedDate: '',\r\n\t\t\t\tcricketsInstalled: ['', Validators.required],\r\n\t\t\t\tvalleysBulled: ['', Validators.required],\r\n\t\t\t\tpenetrationsInstalled: ['', Validators.required],\r\n\t\t\t\tpenetrationsStepBulled: ['', Validators.required],\r\n\t\t\t\tventFlashingSquish: ['', Validators.required],\r\n\t\t\t\tbootsFolded: ['', Validators.required],\r\n\t\t\t\tshinglesInstalledCorrectly: ['', Validators.required],\r\n\t\t\t\tshinglesCleaned: ['', Validators.required],\r\n\t\t\t\totherEntries: this.formBuilder.array([this.createItem()]),\r\n\t\t\t});\r\n\r\n\t\t\t// Only Builder Jobs require a CrewLeaderID\r\n\t\t\tif ( this.jobType !== 'builder' ) {\r\n\t\t\t\tthis.checklistForm.removeControl( 'CrewLeaderID' )\r\n\t\t\t}\r\n })\r\n\t}\r\n\r\n\topenModal(modal, windowClass) {\r\n\t\t// don't show modals if crew leader is logged in\r\n\t\tif(this.roleService.isCrewLeader) return\r\n\r\n\t\tthis.modalService\r\n\t\t\t.open(modal, { ariaLabelledBy: \"modal-basic-title\", windowClass })\r\n\t\t\t.result.then(\r\n\t\t\t\tresult => {\r\n\r\n\t\t\t\t\tfor (let key in result) {\r\n\t\t\t\t\t\tconst value = result[key]\r\n\r\n\t\t\t\t\t\tif( key === \"CrewLeaderID\") {\r\n\t\t\t\t\t\t\tthis.updateCrewLeader( value )\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\treason => {\r\n\t\t\t\t\t// this.closeResult = this.getDismissReason(reason);\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t}\r\n\r\n\tupdateCrewLeader( id: string ) {\r\n\t\tthis.checklistForm.controls[ 'CrewLeaderID' ].setValue( id )\r\n\t\tthis.userService.getUser( id ).subscribe((result: any) => {\r\n\t\t\tlet user = result.body\r\n\t\t\tthis.crewLeader = user\r\n\t\t});\r\n\t}\r\n\r\n createItem(): FormGroup {\r\n return this.formBuilder.group({\r\n Input: '',\r\n Rating: '',\r\n });\r\n }\r\n\r\n addItem(): void {\r\n this.otherEntries = this.checklistForm.get('otherEntries') as FormArray;\r\n this.otherEntries.push(this.createItem());\r\n }\r\n\r\n removeItem(index): void {\r\n this.otherEntries.removeAt(index)\r\n }\r\n\r\n displayFilesOnUpload() {\r\n const input = document.querySelector('#fileUpload');\r\n // Create array from FileList\r\n this.builderFiles = Array.from((input).files)\r\n }\r\n\r\n get form() {\r\n return this.checklistForm.get('otherEntries')['controls']\r\n }\r\n\r\n handleFormSubmit() {\r\n this.submitted = true\r\n\t\tlet data = this.checklistForm.value\r\n\r\n\t\tif (this.checklistForm.invalid) {\r\n\t\t\tthis.alertService.error(\"Your form has errors. Make sure all inspection items have been checked\")\r\n\t\t\tdocument.body.scrollIntoView({ behavior: \"smooth\" })\r\n\t\t\treturn\r\n\t\t}\r\n\r\n for (let key in data) {\r\n if (data.hasOwnProperty(key)) {\r\n\t\t\t\t// Look at all fields except comments, type & CrewLeaderID\r\n\t\t\t\tif (\r\n\t\t\t\t\tkey !== \"comments\" &&\r\n\t\t\t\t\tkey !== 'type' &&\r\n\t\t\t\t\tkey !== 'CrewLeaderID'\r\n\t\t\t\t) {\r\n\t\t\t\t\t// if key corresponds to the two date fields\r\n\t\t\t\t\tif (key === 'dryInInspectionDate' || key === 'shingleInspectedDate' ) {\r\n\t\t\t\t\t\tif (data[key]) {\r\n\t\t\t\t\t\t\t// If a value exists, change the format for database to handle\r\n\t\t\t\t\t\t\tdata[key] = `${data[key].year}/${data[key].month}/${data[key].day}`;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t// set value to empty string\r\n\t\t\t\t\t\t\tdata[key] = ''\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (key === \"otherEntries\") {\r\n\t\t\t\t\t\tdata[key].forEach(( value, index ) => {\r\n\t\t\t\t\t\t\tif(!value.Input){\r\n\t\t\t\t\t\t\t\tdata[key].splice(index, 1)\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tvalue.Rating = +value.Rating\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n }\r\n }\r\n\r\n this.inspectionsService\r\n .createShingleChecklist(data)\r\n .subscribe((data: any) => {\r\n\t\t\t\tlet signatureFile\r\n\t\t\t\t// save digital signature as a File\r\n\t\t\t\tif(this.signatureBaseURL){\r\n\t\t\t\t\tsignatureFile = this.createFileFromBaseURL(this.signatureBaseURL)\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.alertService.error(\"You must sign the inspection to submit it\");\r\n\t\t\t\t\tdocument.body.scrollIntoView({ behavior: \"smooth\" });\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n this.filesService.uploadFile(signatureFile, data.ID, \"Inspection\").subscribe((res: any) => {\r\n // wait a second for the server to register the new files\r\n if (isArray(res)) {\r\n setTimeout(() => {\r\n data.SignatureFileID = res[0]\r\n this.inspectionsService.updateShingleChecklist(data.ID, data).subscribe((res: any) => { })\r\n }, 1000)\r\n }\r\n })\r\n\r\n if (this.builderFiles.length) {\r\n // Iterate through each file in the array\r\n this.builderFiles.forEach(file => {\r\n // send array of files to file upload service function\r\n this.filesService.uploadFile(file, data.ID, \"Inspection\").subscribe(\r\n res => {\r\n console.log(res)\r\n },\r\n err => console.log(err)\r\n )\r\n })\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Add created inspection to Job, then redirect to job\r\n let jobType\r\n\r\n\t\t\t\tswitch ( this.jobType ) {\r\n\t\t\t\t\tcase 'builder':\r\n\t\t\t\t\t\tjobType = 'BuilderJob'\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'warranty':\r\n\t\t\t\t\t\tjobType = 'Warranty'\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'reroof':\r\n\t\t\t\t\t\tjobType = 'Reroof'\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'repair':\r\n\t\t\t\t\t\tjobType = 'Repair'\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n this.inspectionsService\r\n .addChecklistToJob(data.ID, this.jobID, jobType, data)\r\n .subscribe((result: any) => {\r\n this.router.navigate([ `${this.jobType}-jobs/${this.jobID}` ]);\r\n })\r\n },\r\n error => {\r\n this.alertService.error(error);\r\n\r\n document.body.scrollIntoView({ behavior: \"smooth\" });\r\n }\r\n )\r\n\t}\r\n\r\n\tupdateUsers(users = []): Observable> {\r\n\t\treturn Observable.create((obs) => {\r\n\t\t\tobs.next(users);\r\n\t\t\tobs.complete();\r\n\t\t});\r\n\t}\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n \\r\\n
\\r\\n

\\r\\n Shingle Inspection\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Builder\\r\\n
\\r\\n
\\r\\n {{ builder?.CompanyName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Community\\r\\n
\\r\\n
\\r\\n {{ community?.Name }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Lot\\r\\n
\\r\\n
\\r\\n {{ job?.Lot1 }} / {{ job?.Lot2 }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n
\\r\\n Crew Leader\\r\\n
\\r\\n
\\r\\n {{ crewLeader?.FullName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tYear must be between 2020 and 2050\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tEnter a valid inspection date YYYY-MM-DD\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tInspection date is required\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Inspection ItemsYesNoN/A
Shingles installed 100% straight and nailed correctly\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
All penetrations installed\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
All walls & penetrations step-bulled\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
All valleys bulled\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
Crickets installed\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
Plenty of squish around vents and flashing\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
Boots folded over 100%\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
All shingles picked up & debris cleaned\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
\\r\\n Other:\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{ option.name }}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Comments\\r\\n
\\r\\n
\\r\\n {{ inspection?.Comments }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n Documents\\r\\n

\\r\\n
\\r\\n
\\r\\n {{ uploadError }}\\r\\n
\\r\\n
\\r\\n {{ uploadResponse.message }}\\r\\n
\\r\\n
\\r\\n
\\r\\n {{uploadResponse.message}}%\\r\\n
\\r\\n
\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n {{ file.Label }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
No documents have been uploaded
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n Signature\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\\"Inspection\\r\\n
\\r\\n
\\r\\n
This inspection has not yet been signed
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n\\r\\n\\r\\n\\t
\\r\\n\\t\\t

{{ modalPreviewFileName }}

\\r\\n\\t\\t\\r\\n\\t\\t\\t×\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\\"image\\\"\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tDownload File\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n
\\r\\n\\r\\n\\r\\n\\t
\\r\\n\\t\\t

Update Comments

\\r\\n\\t\\t\\r\\n\\t\\t\\t×\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tSave\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\\r\\n\\r\\n\\t
\\r\\n\\t\\t

Update Crew Leader

\\r\\n\\t\\t\\r\\n\\t\\t\\t×\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tCrew Leader Name is required\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tSave\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\r\\n\\r\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3ZpZXdzL2luc3BlY3Rpb25zL3NoaW5nbGUtaW5zcGVjdGlvbi12aWV3L3NoaW5nbGUtaW5zcGVjdGlvbi12aWV3LmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit, ElementRef, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators, FormArray } from '@angular/forms';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { DomSanitizer } from \"@angular/platform-browser\";\r\n\r\nimport { JobsService } from '@/services/jobs/jobs.service';\r\nimport { BuildersService } from '@/services/builders/builders.service';\r\nimport { CommunitiesService } from '@/services/communities/communities.service';\r\nimport { UserService } from '@/services/user/user.service';\r\nimport { InspectionsService } from '@/services/inspections/inspections.service';\r\nimport { FilesService } from '@/services/files/files.service';\r\nimport { AlertService } from '@/services/alert/alert.service';\r\nimport { RoleService } from '@/services/role/role.service';\r\n\r\nimport { BuilderJob } from '@/models/builder-job';\r\nimport { Community } from '@/models/community';\r\nimport { User } from '@/models/user';\r\nimport { Builder } from '@/models/builder';\r\nimport { ShingleInspection } from '@/models/shingle-inspection';\r\n\r\nimport { Select2OptionData } from 'ng-select2';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-shingle-inspection-view',\r\n templateUrl: './shingle-inspection-view.component.html',\r\n styleUrls: ['./shingle-inspection-view.component.scss']\r\n})\r\nexport class ShingleInspectionViewComponent implements OnInit {\r\n @ViewChild('inspectionTable')\r\n\tinspectionTable: ElementRef;\r\n\r\n\t@ViewChild('filePreviewModal')\r\n\tfilePreviewModal: ElementRef;\r\n\r\n inspection: ShingleInspection\r\n jobID: string\r\n jobType: string\r\n checklistID: string\r\n job: BuilderJob\r\n community: Community\r\n builder: Builder\r\n crewLeader: User\r\n crewLeaders: Observable>\r\n checklistForm: FormGroup\r\n otherEntries: FormArray\r\n uploadError: string\r\n inspectionFiles: Array\r\n DryInInspectionDate: string\r\n ShingleInspectionDate: string\r\n\tinspectionSignature: string | ArrayBuffer\r\n\tmodalPreviewFile\t\t : any;\r\n\tmodalPreviewFileType : string;\r\n\tmodalPreviewFileID : string;\r\n\tmodalPreviewFileName : string;\r\n\r\n uploadResponse = { status: '', message: '', filePath: '' }\r\n selectOptions = [\r\n { name: \"N/A\", value: 0 },\r\n { name: \"Yes\", value: 2 },\r\n { name: \"No\", value: 1 },\r\n\t]\r\n\r\n\tselect2Options = {\r\n\t\ttheme: \"bootstrap4\",\r\n\t\twidth: \"100%\"\r\n\t}\r\n\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private route: ActivatedRoute,\r\n private jobService: JobsService,\r\n private builderService: BuildersService,\r\n private communityService: CommunitiesService,\r\n private userService: UserService,\r\n\t\tpublic roleService: RoleService,\r\n private modalService: NgbModal,\r\n private inspectionsService: InspectionsService,\r\n private alertService: AlertService,\r\n private filesService: FilesService,\r\n\t\tprivate domSanitizer : DomSanitizer,\r\n ) {\r\n this.jobID = this.route.snapshot.paramMap.get(\"id\")\r\n this.checklistID = this.route.snapshot.paramMap.get(\"checklist_id\")\r\n\t}\r\n\r\n\tasync getWarranty() {\r\n const data = await this.jobService.getWarrantyJob( this.jobID ).toPromise()\r\n return data.body\r\n }\r\n\r\n async getBuilder() {\r\n const data = await this.jobService.getBuilderJob( this.jobID ).toPromise()\r\n return data.body\r\n }\r\n\r\n async getRepair() {\r\n const data = await this.jobService.getRepairJob( this.jobID ).toPromise()\r\n return data.body\r\n }\r\n\r\n async getReroof() {\r\n const data = await this.jobService.getReroofJob( this.jobID ).toPromise()\r\n return data.body\r\n }\r\n\r\n ngOnInit() {\r\n\t\tlet jobResponse\r\n\t\tconst urlPath = location.href\r\n\r\n if ( urlPath.includes( 'builder' )) {\r\n this.jobType = 'builder'\r\n jobResponse = this.getBuilder()\r\n\t\t}\r\n\t\telse if ( urlPath.includes( 'warranty' )) {\r\n this.jobType = 'warranty'\r\n jobResponse = this.getWarranty()\r\n\t\t}\r\n\t\telse if ( urlPath.includes( 'repair' )) {\r\n this.jobType = 'repair'\r\n jobResponse = this.getRepair()\r\n\t\t}\r\n\t\telse if ( urlPath.includes( 'reroof' )) {\r\n this.jobType = 'reroof'\r\n jobResponse = this.getReroof()\r\n }\r\n\r\n jobResponse.then( res => {\r\n this.job = res\r\n if ( this.jobType === 'builder' || this.jobType === 'warranty' ) {\r\n // Get builder name\r\n this.builderService\r\n .getBuilder( this.job.BuilderID )\r\n .subscribe(( res: any ) => {\r\n this.builder = res.body\r\n })\r\n\r\n // Get community name\r\n this.communityService\r\n .getCommunity( this.job.CommunityID )\r\n .subscribe(( res: any ) => {\r\n this.community = res.body\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t// get only users who are crew leaders and put in dropdown\r\n\t\t\t\tthis.userService.getUsers( 3 ).subscribe(( result: any ) => {\r\n\t\t\t\t\tconst users = result.body.data.map( user => {\r\n\t\t\t\t\t\tconst text = user.FullName ? user.FullName : user.Email\r\n\t\t\t\t\t\tconst id = user.Id\r\n\r\n\t\t\t\t\t\treturn { id, text }\r\n\t\t\t\t\t})\r\n\t\t\t\t\tthis.crewLeaders = this.updateUsers( users )\r\n\t\t\t\t})\r\n }\r\n\r\n })\r\n\r\n this.checklistForm = this.formBuilder.group({\r\n Type: 'Shingle',\r\n Comments: '',\r\n CrewLeaderID: '',\r\n CricketsInstalled: '',\r\n ShingleInspectedDate: '',\r\n ShinglesInstalledCorrectly: '',\r\n PenetrationsInstalled: '',\r\n PenetrationsStepBulled: '',\r\n ValleysBulled: '',\r\n VentFlashingSquish: '',\r\n BootsFolded: '',\r\n ShinglesCleaned: '',\r\n OtherEntries: this.formBuilder.array([]),\r\n });\r\n\r\n\t\t// Only Builder Jobs require a CrewLeaderID\r\n\t\tif ( this.jobType !== 'builder' ) {\r\n\t\t\tthis.checklistForm.removeControl( 'CrewLeaderID' )\r\n\t\t}\r\n\r\n this.inspectionsService\r\n .getShingleChecklist(this.checklistID)\r\n .subscribe((data: any) => {\r\n\t\t\t\tthis.inspection = data.body\r\n this.inspectionFiles = this.inspection.Files.filter(file => file.ID !== this.inspection.SignatureFileID)\r\n\r\n if (this.inspection.SignatureFileID){\r\n this.displaySignature(this.inspection.SignatureFileID)\r\n\t\t\t\t}\r\n\r\n for (const key in this.inspection) {\r\n if (this.inspection.hasOwnProperty(key)) {\r\n const value = this.inspection[key]\r\n\r\n if (key === 'OtherEntries') {\r\n if(value){\r\n value.forEach(val => {\r\n this.createItemWithValues(val.Input, `${val.Rating}`)\r\n })\r\n }\r\n } else if (key === 'DryInInspectionDate') {\r\n if (value) {\r\n const dateValue = value.split(\"T\")[0]\r\n\t\t\t\t\t\t\t\tthis.DryInInspectionDate = dateValue\r\n }\r\n } else if (key === 'ShingleInspectedDate') {\r\n if (value) {\r\n const dateValue = value.split(\"T\")[0]\r\n\t\t\t\t\t\t\t\tthis.ShingleInspectionDate = dateValue\r\n }\r\n } else{\r\n\t\t\t\t\t\t\tif( this.checklistForm.get(key) ){\r\n \tthis.checklistForm.controls[key].patchValue(`${value}`)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n }\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Get crew leader name\r\n\t\t\t\tif ( this.jobType === 'builder' ) {\r\n\t\t\t\t\tthis.userService\r\n\t\t\t\t\t\t.getUser( this.inspection.CrewLeaderID )\r\n\t\t\t\t\t\t.subscribe(( res: any ) => {\r\n\t\t\t\t\t\t\tthis.crewLeader = res.body\r\n\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n })\r\n }\r\n\r\n createItem(): FormGroup {\r\n return this.formBuilder.group({\r\n Input: '',\r\n Rating: '',\r\n });\r\n }\r\n\r\n createItemWithValues(input: string, rating: string): void {\r\n this.otherEntries = this.checklistForm.get('OtherEntries') as FormArray;\r\n this.otherEntries.push(\r\n this.formBuilder.group({\r\n Input: input,\r\n Rating: rating\r\n })\r\n )\r\n }\r\n\r\n addItem(): void {\r\n this.otherEntries = this.checklistForm.get('OtherEntries') as FormArray;\r\n this.otherEntries.push(this.createItem());\r\n }\r\n\r\n removeItem(index): void {\r\n this.otherEntries.removeAt(index)\r\n }\r\n\r\n updateFiles() {\r\n this.inspectionsService.getSafetyChecklist(this.inspection.ID).subscribe((result: any) => {\r\n this.inspectionFiles = result.body.Files.filter( file => file.ID !== this.inspection.SignatureFileID )\r\n })\r\n }\r\n\r\n onDeleteFile(event: Event, fileID: string) {\r\n event.preventDefault()\r\n if (window.confirm(\"Do you really want to delete this file?\")) {\r\n this.filesService.deleteFile(fileID).subscribe((result: any) => {\r\n this.updateFiles()\r\n })\r\n }\r\n }\r\n\r\n setPreviewFile( fileURL ){\r\n\t\tif(this.modalPreviewFileType.includes('image')){\r\n\t\t\tthis.modalPreviewFile = fileURL\r\n\t\t}else{\r\n\t\t\tthis.modalPreviewFile = this.domSanitizer.bypassSecurityTrustResourceUrl(fileURL)\r\n\t\t}\r\n\t\tthis.openModal( this.filePreviewModal, 'image-pdf' )\r\n\t}\r\n\r\n\tdownloadPreviewFile(){\r\n\t\tthis.filesService.downloadFile( this.modalPreviewFileID ).subscribe(( result: Blob ) => {\r\n\t\t\t// create a fake anchor element to force browser to download\r\n\t\t\tconst anchor = document.createElement('a')\r\n\t\t\tanchor.style.display = \"none\"\r\n\t\t\tdocument.body.appendChild(anchor)\r\n\t\t\t// Set file name attribute\r\n\t\t\tanchor.setAttribute(\"download\", this.modalPreviewFileName)\r\n\t\t\t// create new blob to change the type to the file's type\r\n\t\t\tconst blob = new Blob([result], {type: this.modalPreviewFileType})\r\n\t\t\t// Create file URL from Blob object\r\n\t\t\tconst url = window.URL.createObjectURL(blob)\r\n\t\t\t// set href attribute to be url\r\n\t\t\tanchor.setAttribute(\"href\", url)\r\n\t\t\t// force click on anchor to download\r\n\t\t\tanchor.click()\r\n\t\t\t// Cleanup\r\n\t\t\twindow.URL.revokeObjectURL(anchor.href);\r\n\t\t\tdocument.body.removeChild(anchor);\r\n\t\t})\r\n\t}\r\n\r\n\tgetFile( event, fileID, fileType, fileName ){\r\n\t\tevent.preventDefault()\r\n\t\tthis.modalPreviewFileName = fileName\r\n\t\tthis.modalPreviewFileType = fileType\r\n\t\tthis.modalPreviewFileID = fileID\r\n\r\n\t\tthis.filesService.downloadFile( fileID ).subscribe(( result: Blob ) => {\r\n\t\t\t// create new blob to change the type to the file's type\r\n\t\t\tconst blob = new Blob([result], {type: fileType})\r\n\t\t\t// create base64 url to display in modal\r\n\t\t\tconst reader = new FileReader()\r\n\t\t\treader.readAsDataURL(blob)\r\n\t\t\treader.onloadend = () => {\r\n\t\t\t\tvar base64data = reader.result\r\n\t\t\t\tthis.setPreviewFile(base64data)\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n displaySignature(id) {\r\n this.filesService.getFile(id).subscribe((res: any) => {\r\n const file = res.body\r\n const fileType = file.Type\r\n this.filesService.downloadFile(id).subscribe((result: Blob) => {\r\n // create new blob to change the type to the file's type\r\n const blob = new Blob([result], { type: fileType })\r\n // get Base64 url and display as image\r\n var reader = new FileReader()\r\n reader.readAsDataURL(blob);\r\n reader.onloadend = () => {\r\n this.inspectionSignature = reader.result\r\n }\r\n })\r\n })\r\n }\r\n\r\n displayFilesOnUpload() {\r\n const input = document.querySelector('#fileUpload');\r\n // Create array from FileList\r\n const filesArray = Array.from((input).files)\r\n // Iterate through each file in the array and send to server endpoint\r\n filesArray.forEach(file => {\r\n // send array of files to file upload service function\r\n this.filesService.uploadFile(file, this.inspection.ID, \"Inspection\").subscribe(\r\n res => {\r\n this.uploadResponse = res\r\n if (res.message == '100') {\r\n // wait a second for the server to register the new files\r\n setTimeout(() => {\r\n this.updateFiles()\r\n this.alertService.success(`File uploaded successfully!`, true);\r\n }, 1000)\r\n }\r\n },\r\n err => {\r\n this.uploadError = err\r\n this.alertService.error(`File upload failed - ${err}`, true);\r\n }\r\n )\r\n })\r\n }\r\n\r\n openModal(modal, windowClass = '') {\r\n this.modalService.open(modal, { ariaLabelledBy: 'modal-basic-title', windowClass })\r\n .result.then(\r\n result => {\r\n for (let key in result) {\r\n var value = result[key];\r\n\r\n if (key === 'dryInInspectionDate' || key === 'shingleInspectedDate') {\r\n if (value) {\r\n value = `${value.year}/${value.month}/${value.day}`;\r\n }\r\n }\r\n this.inspection[key] = value\r\n }\r\n\r\n this.inspectionsService.updateSafetyChecklist(this.inspection.ID, this.inspection)\r\n .subscribe(\r\n (data: any) => {\r\n\t\t\t\t\t\t\t\t// Only Builder Jobs require a CrewLeaderID\r\n\t\t\t\t\t\t\t\tif ( this.jobType !== 'builder' ) {\r\n\t\t\t\t\t\t\t\t\tthis.updateCrewLeader( this.inspection[ 'CrewLeaderID' ] )\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tthis.alertService.success(`Inspection Updated!`, true)\r\n \t\t\tdocument.body.scrollIntoView({ behavior: \"smooth\" })\r\n },\r\n error => {\r\n this.alertService.error(error);\r\n document.body.scrollIntoView({ behavior: \"smooth\" });\r\n });\r\n },\r\n reason => {\r\n // this.closeResult = this.getDismissReason(reason);\r\n }\r\n );\r\n }\r\n\r\n get form() {\r\n return this.checklistForm.get('OtherEntries')['controls']\r\n }\r\n\r\n handleFormSubmit() {\r\n\t\tlet data = this.checklistForm.value\r\n\r\n for (let key in data) {\r\n let value = data[key]\r\n\r\n if (key === 'ShingleInspectedDate') {\r\n\r\n if (typeof value === 'object') {\r\n\t\t\t\t\tvalue = `${value.year}/${value.month}/${value.day}`\r\n }else{\r\n\t\t\t\t\tvalue = this.ShingleInspectionDate\r\n\t\t\t\t}\r\n\r\n } else if (key === 'DryInInspectionDate') {\r\n\r\n\t\t\t\tif (typeof value === 'object') {\r\n\t\t\t\t\tvalue = `${value.year}/${value.month}/${value.day}`\r\n }else{\r\n\t\t\t\t\tvalue = this.DryInInspectionDate\r\n\t\t\t\t}\r\n\r\n\t\t\t} else if (key === \"OtherEntries\") {\r\n\r\n value.forEach(( value, index ) => {\r\n if (!value.Input) {\r\n data[key].splice(index, 1)\r\n } else {\r\n value.Rating = +value.Rating\r\n }\r\n\t\t\t\t})\r\n\r\n } else{\r\n\t\t\t\t// force all values to an integer that arent Type and Comment\r\n\t\t\t\tif (\r\n\t\t\t\t\tkey !== 'Type' &&\r\n\t\t\t\t\tkey !== 'Comments' &&\r\n\t\t\t\t\tkey !== 'CrewLeaderID'\r\n\t\t\t\t){\r\n\t\t\t\t\tvalue = +value\r\n\t\t\t\t}\r\n\t\t\t}\r\n data[key] = value\r\n\t\t}\r\n\t\t// Merge checklist form object with the inspection object\r\n\t\tdata = { ...this.inspection, ...data }\r\n\r\n this.inspectionsService\r\n .updateShingleChecklist( this.inspection.ID, data )\r\n .subscribe((result: any) => {\r\n this.alertService.success(`Inspection Updated!`, true)\r\n document.body.scrollIntoView({ behavior: \"smooth\" })\r\n },\r\n error => {\r\n this.alertService.error(error);\r\n document.body.scrollIntoView({ behavior: \"smooth\" })\r\n }\r\n )\r\n\t}\r\n\r\n\tupdateUsers(users = []): Observable> {\r\n\t\treturn Observable.create((obs) => {\r\n\t\t\tobs.next(users);\r\n\t\t\tobs.complete();\r\n\t\t});\r\n\t}\r\n\r\n\tupdateCrewLeader( id: string ) {\r\n\t\tthis.userService\r\n\t\t\t.getUser( id )\r\n\t\t\t.subscribe(( res: any ) => {\r\n\t\t\t\tthis.crewLeader = res.body\r\n\t\t\t})\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\"","module.exports = \".c-login {\\n background: #fefefe;\\n padding: 30px;\\n}\\n@media (min-width: 480px) {\\n .c-login {\\n padding-left: 50px;\\n padding-right: 50px;\\n }\\n}\\n.c-login-container {\\n margin-left: auto;\\n margin-right: auto;\\n max-width: 430px;\\n margin-bottom: 60px;\\n margin-top: 60px;\\n}\\n.c-login_headline {\\n text-align: center;\\n}\\n.c-login_form_links {\\n font-size: 0.75rem;\\n}\\n.c-login_form_submit {\\n text-align: right;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdmlld3MvbG9naW4vQzpcXFVzZXJzXFxEYW5pZWxcXERlc2t0b3BcXFByb2plY3RzXFxTdGVybGluZ1Jvb2Zpbmcvc3JjXFxhcHBcXHZpZXdzXFxsb2dpblxcbG9naW4uY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3ZpZXdzL2xvZ2luL0M6XFxVc2Vyc1xcRGFuaWVsXFxEZXNrdG9wXFxQcm9qZWN0c1xcU3RlcmxpbmdSb29maW5nL3NyY1xcc3R5bGVzXFxfaW5jbHVkZXMuc2NzcyIsInNyYy9hcHAvdmlld3MvbG9naW4vQzpcXFVzZXJzXFxEYW5pZWxcXERlc2t0b3BcXFByb2plY3RzXFxTdGVybGluZ1Jvb2Zpbmcvc3JjXFxzdHlsZXNcXF92YXJpYWJsZXMuc2NzcyIsInNyYy9hcHAvdmlld3MvbG9naW4vbG9naW4uY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3ZpZXdzL2xvZ2luL0M6XFxVc2Vyc1xcRGFuaWVsXFxEZXNrdG9wXFxQcm9qZWN0c1xcU3RlcmxpbmdSb29maW5nL25vZGVfbW9kdWxlc1xcYm9vdHN0cmFwXFxzY3NzXFxtaXhpbnNcXF9icmVha3BvaW50cy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBO0VDZ0JDLG1CQ1hPO0VEWVAsYUFBQTtBRWhCRDtBQ3lESTtFSjFESjtJQ29CRSxrQkFBQTtJQUNBLG1CQUFBO0VFZkE7QUFDRjtBSEpDO0VDSkEsaUJBQUE7RUFDQSxrQkFBQTtFQUNBLGdCQUFBO0VESUMsbUJBQUE7RUFDQSxnQkFBQTtBR1FGO0FITEM7RUFDQyxrQkFBQTtBR09GO0FISEU7RUFDQyxrQkFBQTtBR0tIO0FIRkU7RUFDQyxpQkFBQTtBR0lIIiwiZmlsZSI6InNyYy9hcHAvdmlld3MvbG9naW4vbG9naW4uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICdjb21wb25lbnQtaGVhZGVyJztcclxuXHJcbi5jLWxvZ2luIHtcclxuXHRAaW5jbHVkZSBmb3JtLWNvbnRhaW5lcigpO1xyXG5cclxuXHQmLWNvbnRhaW5lciB7XHJcblx0XHRAaW5jbHVkZSBjb250YWluZXItc21hbGwoKTtcclxuXHRcdG1hcmdpbi1ib3R0b206IDYwcHg7XHJcblx0XHRtYXJnaW4tdG9wOiA2MHB4O1xyXG5cdH1cclxuXHJcblx0Jl9oZWFkbGluZSB7XHJcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0fVxyXG5cclxuXHQmX2Zvcm0ge1xyXG5cdFx0Jl9saW5rcyB7XHJcblx0XHRcdGZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpO1xyXG5cdFx0fVxyXG5cclxuXHRcdCZfc3VibWl0IHtcclxuXHRcdFx0dGV4dC1hbGlnbjogcmlnaHQ7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG4iLCJAbWl4aW4gY29udGFpbmVyLXNtYWxsKCkge1xyXG5cdG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG5cdG1hcmdpbi1yaWdodDogYXV0bztcclxuXHRtYXgtd2lkdGg6IDQzMHB4O1xyXG59XHJcblxyXG5AbWl4aW4gY29udGFpbmVyLW1lZGl1bSgpIHtcclxuXHRtYXJnaW4tbGVmdDogYXV0bztcclxuXHRtYXJnaW4tcmlnaHQ6IGF1dG87XHJcblx0bWF4LXdpZHRoOiA2NDBweDtcclxufVxyXG5cclxuQG1peGluIHdpZGdldC1jb250YWluZXIoKSB7XHJcblx0YmFja2dyb3VuZDogJHdoaXRlO1xyXG5cdHBhZGRpbmc6IDFyZW07XHJcbn1cclxuXHJcbkBtaXhpbiBmb3JtLWNvbnRhaW5lcigpIHtcclxuXHRiYWNrZ3JvdW5kOiAkd2hpdGU7XHJcblx0cGFkZGluZzogMzBweDtcclxuXHJcblx0QGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChzbSkge1xyXG5cdFx0cGFkZGluZy1sZWZ0OiA1MHB4O1xyXG5cdFx0cGFkZGluZy1yaWdodDogNTBweDtcclxuXHR9XHJcbn1cclxuXHJcbkBmdW5jdGlvbiBzdHJpcC11bml0KCRudW0pIHtcclxuICBAcmV0dXJuICRudW0gLyAoJG51bSAqIDAgKyAxKTtcclxufVxyXG5cclxuQGZ1bmN0aW9uIGNvbnZlcnQtdG8tcmVtKCR2YWx1ZSwgJGJhc2UtdmFsdWU6IDE2cHgpICB7XHJcblx0JHZhbHVlOiBzdHJpcC11bml0KCR2YWx1ZSkgLyBzdHJpcC11bml0KCRiYXNlLXZhbHVlKSAqIDFyZW07XHJcblxyXG5cdEBpZiAoJHZhbHVlID09IDByZW0pIHtcclxuXHQgICR2YWx1ZTogMDtcclxuXHR9IC8vIFR1cm4gMHJlbSBpbnRvIDBcclxuXHJcblx0QHJldHVybiAkdmFsdWU7XHJcbn1cclxuXHJcbkBmdW5jdGlvbiByZW0tY2FsYygkdmFsdWVzLCAkYmFzZS12YWx1ZTogMTZweCkge1xyXG5cdCRtYXg6IGxlbmd0aCgkdmFsdWVzKTtcclxuXHJcblx0QGlmICRtYXggPT0gMSB7XHJcblx0XHRAcmV0dXJuIGNvbnZlcnQtdG8tcmVtKG50aCgkdmFsdWVzLCAxKSwgJGJhc2UtdmFsdWUpO1xyXG5cdH1cclxuXHJcblx0JHJlbVZhbHVlczogKCk7XHJcblxyXG5cdEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJG1heCB7XHJcblx0XHQkcmVtVmFsdWVzOiBhcHBlbmQoJHJlbVZhbHVlcywgY29udmVydC10by1yZW0obnRoKCR2YWx1ZXMsICRpKSwgJGJhc2UtdmFsdWUpKTtcclxuXHR9XHJcblxyXG5cdEByZXR1cm4gJHJlbVZhbHVlcztcclxufVxyXG4iLCIvLyBDdXN0b20gQ29sb3JzXHJcblxyXG4kZGFyay1ncmF5OiAjMjQyNDI0O1xyXG4kbWVkaXVtLWRhcmstZ3JheTogIzYxNjE2MTtcclxuJG1lZGl1bS1ncmF5OiAjNTI1MjUyO1xyXG4kbWVkaXVtLWxpZ2h0LWdyYXk6ICNCQ0M2Q0U7XHJcbiRsaWdodC1ncmF5OiAjRThFOEU4O1xyXG4kd2hpdGU6ICNmZWZlZmU7XHJcbiRibHVlOiAjMDA1M0FDO1xyXG4kZGFyay1ibHVlOiAjNTE3MDhEO1xyXG5cclxuJHByaW1hcnk6ICMwMDU4QTg7XHJcbiRzZWNvbmRhcnk6ICMwMDU4QTg7XHJcbiR5ZWxsb3c6ICNGRkMyMzY7XHJcbiRvcmFuZ2U6ICNGRjk1MkI7XHJcbiRpbmZvOiAjZTJlM2U1O1xyXG5cclxuLy8gQXBwIFZhcmlhYmxlc1xyXG4kY29udGFpbmVyLW1heC13aWR0aDogMTIwMHB4O1xyXG4kc2lkZWJhci1iZzogJGRhcmstZ3JheTtcclxuJHNpZGViYXItd2lkdGg6IDI1MHB4O1xyXG5cclxuLy8gQm9vdHN0cmFwIFZhcmlhYmxlc1xyXG5cclxuLy8gTGF5b3V0XHJcblxyXG4kZ3JpZC1icmVha3BvaW50czogKFxyXG4gIHhzOiAwLFxyXG4gIHNtOiA0ODBweCxcclxuICBtZDogNzY4cHgsXHJcbiAgbGc6IDk5MnB4LFxyXG4gIHhsOiAxMjAwcHhcclxuKTtcclxuXHJcbiRib2R5LWJnOiAkbGlnaHQtZ3JheTtcclxuXHJcbi8vIFR5cG9ncmFwaHlcclxuJGZvbnQtc2l6ZS1iYXNlOiAxcmVtO1xyXG5cclxuJGZvbnQtZmFtaWx5LXNhbnMtc2VyaWY6ICdSb2JvdG8nLCAnc2Fucy1zZXJpZic7XHJcblxyXG4kaDEtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UgKiAxLjYyNTsgLy8gMjZcclxuJGgyLWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS4zNzU7IC8vIDIzXHJcbiRoMy1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuMjU7IC8vIDIwXHJcbiRoNC1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuMTI1OyAgLy8gMThcclxuJGg1LWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS4wNjI1OyAvLyAxN1xyXG4kaDYtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7XHJcblxyXG5cclxuLy8gR2xvYmFsIFN0eWxlc1xyXG5cclxuJGJvcmRlci1yYWRpdXM6IDBweDtcclxuJGJvcmRlci1yYWRpdXMtbGc6ICRib3JkZXItcmFkaXVzO1xyXG4kYm9yZGVyLXJhZGl1cy1zbTogJGJvcmRlci1yYWRpdXM7XHJcblxyXG4vLyBGb3Jtc1xyXG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWJnOiAkd2hpdGU7XHJcblxyXG4vLyBCYWRnZXNcclxuJGJhZGdlLXBhZGRpbmcteTogLjVlbTtcclxuJGJhZGdlLXBhZGRpbmcteDogLjhlbTtcclxuJGJhZGdlLXBpbGwtcGFkZGluZy14OiAxLjJlbTtcclxuIiwiLmMtbG9naW4ge1xuICBiYWNrZ3JvdW5kOiAjZmVmZWZlO1xuICBwYWRkaW5nOiAzMHB4O1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDQ4MHB4KSB7XG4gIC5jLWxvZ2luIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDUwcHg7XG4gICAgcGFkZGluZy1yaWdodDogNTBweDtcbiAgfVxufVxuLmMtbG9naW4tY29udGFpbmVyIHtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgbWF4LXdpZHRoOiA0MzBweDtcbiAgbWFyZ2luLWJvdHRvbTogNjBweDtcbiAgbWFyZ2luLXRvcDogNjBweDtcbn1cbi5jLWxvZ2luX2hlYWRsaW5lIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLmMtbG9naW5fZm9ybV9saW5rcyB7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbn1cbi5jLWxvZ2luX2Zvcm1fc3VibWl0IHtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59IiwiLy8gQnJlYWtwb2ludCB2aWV3cG9ydCBzaXplcyBhbmQgbWVkaWEgcXVlcmllcy5cbi8vXG4vLyBCcmVha3BvaW50cyBhcmUgZGVmaW5lZCBhcyBhIG1hcCBvZiAobmFtZTogbWluaW11bSB3aWR0aCksIG9yZGVyIGZyb20gc21hbGwgdG8gbGFyZ2U6XG4vL1xuLy8gICAgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KVxuLy9cbi8vIFRoZSBtYXAgZGVmaW5lZCBpbiB0aGUgYCRncmlkLWJyZWFrcG9pbnRzYCBnbG9iYWwgdmFyaWFibGUgaXMgdXNlZCBhcyB0aGUgYCRicmVha3BvaW50c2AgYXJndW1lbnQgYnkgZGVmYXVsdC5cblxuLy8gTmFtZSBvZiB0aGUgbmV4dCBicmVha3BvaW50LCBvciBudWxsIGZvciB0aGUgbGFzdCBicmVha3BvaW50LlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSlcbi8vICAgIG1kXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICBtZFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAkYnJlYWtwb2ludC1uYW1lczogKHhzIHNtIG1kIGxnIHhsKSlcbi8vICAgIG1kXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludC1uYW1lczogbWFwLWtleXMoJGJyZWFrcG9pbnRzKSkge1xuICAkbjogaW5kZXgoJGJyZWFrcG9pbnQtbmFtZXMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbiAhPSBudWxsIGFuZCAkbiA8IGxlbmd0aCgkYnJlYWtwb2ludC1uYW1lcyksIG50aCgkYnJlYWtwb2ludC1uYW1lcywgJG4gKyAxKSwgbnVsbCk7XG59XG5cbi8vIE1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTnVsbCBmb3IgdGhlIHNtYWxsZXN0IChmaXJzdCkgYnJlYWtwb2ludC5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW1pbihzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KSlcbi8vICAgIDU3NnB4XG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbWluICE9IDAsICRtaW4sIG51bGwpO1xufVxuXG4vLyBNYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguIE51bGwgZm9yIHRoZSBsYXJnZXN0IChsYXN0KSBicmVha3BvaW50LlxuLy8gVGhlIG1heGltdW0gdmFsdWUgaXMgY2FsY3VsYXRlZCBhcyB0aGUgbWluaW11bSBvZiB0aGUgbmV4dCBvbmUgbGVzcyAwLjAycHhcbi8vIHRvIHdvcmsgYXJvdW5kIHRoZSBsaW1pdGF0aW9ucyBvZiBgbWluLWAgYW5kIGBtYXgtYCBwcmVmaXhlcyBhbmQgdmlld3BvcnRzIHdpdGggZnJhY3Rpb25hbCB3aWR0aHMuXG4vLyBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL21lZGlhcXVlcmllcy00LyNtcS1taW4tbWF4XG4vLyBVc2VzIDAuMDJweCByYXRoZXIgdGhhbiAwLjAxcHggdG8gd29yayBhcm91bmQgYSBjdXJyZW50IHJvdW5kaW5nIGJ1ZyBpbiBTYWZhcmkuXG4vLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODI2MVxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbWF4KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgNzY3Ljk4cHhcbkBmdW5jdGlvbiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbmV4dDogYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAcmV0dXJuIGlmKCRuZXh0LCBicmVha3BvaW50LW1pbigkbmV4dCwgJGJyZWFrcG9pbnRzKSAtIC4wMiwgbnVsbCk7XG59XG5cbi8vIFJldHVybnMgYSBibGFuayBzdHJpbmcgaWYgc21hbGxlc3QgYnJlYWtwb2ludCwgb3RoZXJ3aXNlIHJldHVybnMgdGhlIG5hbWUgd2l0aCBhIGRhc2ggaW4gZnJvbnQuXG4vLyBVc2VmdWwgZm9yIG1ha2luZyByZXNwb25zaXZlIHV0aWxpdGllcy5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHhzLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgXCJcIiAgKFJldHVybnMgYSBibGFuayBzdHJpbmcpXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgXCItc21cIlxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaW5maXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgQHJldHVybiBpZihicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKSA9PSBudWxsLCBcIlwiLCBcIi0jeyRuYW1lfVwiKTtcbn1cblxuLy8gTWVkaWEgb2YgYXQgbGVhc3QgdGhlIG1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCB3aWRlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1pbiB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTWVkaWEgb2YgYXQgbW9zdCB0aGUgbWF4aW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIGxhcmdlc3QgYnJlYWtwb2ludC5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBhbmQgbmFycm93ZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1heCB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTWVkaWEgdGhhdCBzcGFucyBtdWx0aXBsZSBicmVha3BvaW50IHdpZHRocy5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBiZXR3ZWVuIHRoZSBtaW4gYW5kIG1heCBicmVha3BvaW50c1xuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtYmV0d2VlbigkbG93ZXIsICR1cHBlciwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbG93ZXIsICRicmVha3BvaW50cyk7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCR1cHBlciwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbG93ZXIsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtaW4gPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCR1cHBlciwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8gTWVkaWEgYmV0d2VlbiB0aGUgYnJlYWtwb2ludCdzIG1pbmltdW0gYW5kIG1heGltdW0gd2lkdGhzLlxuLy8gTm8gbWluaW11bSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQsIGFuZCBubyBtYXhpbXVtIGZvciB0aGUgbGFyZ2VzdCBvbmUuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgb25seSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCwgbm90IHZpZXdwb3J0cyBhbnkgd2lkZXIgb3IgbmFycm93ZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1vbmx5KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG4iXX0= */\"","import { Component, OnInit } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { first } from 'rxjs/operators';\r\n\r\nimport { AuthService } from '@/services/auth/auth.service';\r\nimport { AlertService } from '@/services/alert/alert.service';\r\n\r\n@Component({\r\n selector: 'app-login',\r\n templateUrl: './login.component.html',\r\n styleUrls: ['./login.component.scss']\r\n})\r\nexport class LoginComponent implements OnInit {\r\n\r\n\tloginForm: FormGroup;\r\n\tloading = false;\r\n\tsubmitted = false;\r\n\treturnUrl: string;\r\n\r\n constructor(\r\n\t private formBuilder: FormBuilder,\r\n\t private route: ActivatedRoute,\r\n\t private router: Router,\r\n\t\tprivate authService: AuthService,\r\n\t\tprivate alertService: AlertService\r\n ) {\r\n\r\n\t\tif( this.authService.currentUserValue ) {\r\n\t\t\tthis.router.navigate(['/']);\r\n\t\t}\r\n\r\n\t}\r\n\r\n ngOnInit() {\r\n\t\tthis.loginForm = this.formBuilder.group({\r\n\t\t\tUserName: ['', Validators.required],\r\n\t\t\tPassword: ['', Validators.required]\r\n\t\t});\r\n\r\n // get return url from route parameters or default to '/'\r\n this.returnUrl = this.route.snapshot.queryParams['returnUrl'] || '/';\r\n }\r\n\r\n\tget form() {\r\n\t\treturn this.loginForm.controls;\r\n\t}\r\n\r\n\tscrollToFormError() {\r\n\t\tdocument.querySelector('.invalid-feedback').scrollIntoView({\r\n\t\t\tbehavior: 'smooth',\r\n\t\t\tblock: \"center\"\r\n\t\t})\r\n\t}\r\n\r\n\tonSubmit() {\r\n\t\tthis.submitted = true;\r\n\r\n\t\tthis.alertService.clear();\r\n\r\n\t\tif( this.loginForm.invalid ) {\r\n\t\t\tsetTimeout(() => this.scrollToFormError(), 100)\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.loading = true;\r\n\t\tthis.authService.login(this.form.UserName.value, this.form.Password.value)\r\n\t\t\t.pipe(first())\r\n\t\t\t.subscribe(\r\n\t\t\t\tdata => {\r\n\t\t\t\t\tthis.alertService.success('Login Successful');\r\n\t\t\t\t\tthis.router.navigate([this.returnUrl]);\r\n\t\t\t\t},\r\n\t\t\t\terror => {\r\n\t\t\t\t\tthis.alertService.error(error);\r\n\t\t\t\t\tthis.loading = false;\r\n\t\t\t\t}\r\n\t\t\t)\r\n\t}\r\n}\r\n","module.exports = \"
\\r\\n\\t\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t

\\r\\n\\t\\t\\t\\tPassword Reset\\r\\n\\t\\t\\t

\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\tPassword Strength: \\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\tPassword must:\\r\\n\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t
  • Have at least 8 characters
  • \\r\\n\\t\\t\\t\\t\\t\\t
  • Include at least one letter and one number
  • \\r\\n\\t\\t\\t\\t\\t\\t
  • Include at least one uppercase letter
  • \\r\\n\\t\\t\\t\\t\\t\\t
  • Include at least one symbol or space: -/:;()$.,?!'*=_~[]
  • \\r\\n\\t\\t\\t\\t\\t\\t
  • Match one another
  • \\r\\n\\t\\t\\t\\t\\t\\t
  • \\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\tReset\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\r\\n\\t\\r\\n
\\r\\n\"","module.exports = \".c-password-reset {\\n background: #fefefe;\\n padding: 30px;\\n}\\n@media (min-width: 480px) {\\n .c-password-reset {\\n padding-left: 50px;\\n padding-right: 50px;\\n }\\n}\\n.c-password-reset-container {\\n margin-left: auto;\\n margin-right: auto;\\n max-width: 430px;\\n margin-bottom: 60px;\\n margin-top: 60px;\\n}\\n.c-password-reset .form-group {\\n position: relative;\\n}\\n.c-password-reset_header {\\n text-align: center;\\n}\\n.c-password-reset_form_links {\\n font-size: 12px;\\n}\\n.c-password-reset_form_submit {\\n text-align: right;\\n}\\n.c-password-reset--form input {\\n margin-bottom: 0;\\n margin-top: 1.5em;\\n}\\n.c-password-reset--form .menu {\\n padding-left: 0;\\n margin: 0;\\n}\\n.c-password-reset--form .menu li {\\n list-style-type: none;\\n}\\n.c-password-reset--form--field {\\n margin-bottom: 1rem;\\n padding: 1.5em;\\n position: relative;\\n border: 1px solid rgba(10, 10, 10, 0.25);\\n}\\n.c-password-reset--form--field.no-label {\\n padding-top: 0;\\n}\\n.c-password-reset--form--field--wrap {\\n position: relative;\\n}\\n.c-password-reset--form--field--label {\\n font-size: 0.75rem;\\n font-weight: bold;\\n left: 0.5rem;\\n line-height: 1.4;\\n opacity: 0;\\n top: 0;\\n position: absolute;\\n transition: all 300ms ease;\\n transform: translate3d(0, -50%, 0);\\n z-index: 2;\\n}\\n.c-password-reset--form--field--label.active {\\n left: 0;\\n opacity: 1;\\n transform: translate3d(0, -100%, 0);\\n}\\n.c-password-reset--form--field input[type=submit] {\\n background: blue;\\n border: none;\\n box-shadow: none;\\n color: #fff;\\n display: block;\\n margin: 0 auto;\\n transition: background 300ms ease, color 300ms ease;\\n}\\n.c-password-reset--form--field input[type=submit]:hover {\\n background: #3333ff;\\n}\\n.c-password-reset--strength {\\n margin-bottom: 0.25rem;\\n}\\n.c-password-reset--strength--label {\\n display: block;\\n font-size: 0.75rem;\\n margin-bottom: 1rem;\\n}\\n.c-password-reset--strength--requirements {\\n font-size: 0.75rem;\\n}\\n.c-password-reset--strength .slider {\\n position: relative;\\n height: 0.5rem;\\n margin-top: 1.25rem;\\n margin-bottom: 2.25rem;\\n background-color: #e6e6e6;\\n cursor: pointer;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n user-select: none;\\n touch-action: none;\\n position: absolute;\\n}\\n.c-password-reset--strength .slider-fill {\\n top: 0;\\n left: 0;\\n display: inline-block;\\n max-width: 100%;\\n height: 0.5rem;\\n background-color: #cacaca;\\n transition: all 0.2s ease-in-out;\\n}\\n.color-alert {\\n color: #B7312C;\\n}\\n.color-success {\\n color: #80bd01;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdmlld3MvbmV3LXBhc3N3b3JkL0M6XFxVc2Vyc1xcRGFuaWVsXFxEZXNrdG9wXFxQcm9qZWN0c1xcU3RlcmxpbmdSb29maW5nL3NyY1xcYXBwXFx2aWV3c1xcbmV3LXBhc3N3b3JkXFxuZXctcGFzc3dvcmQuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3ZpZXdzL25ldy1wYXNzd29yZC9DOlxcVXNlcnNcXERhbmllbFxcRGVza3RvcFxcUHJvamVjdHNcXFN0ZXJsaW5nUm9vZmluZy9zcmNcXHN0eWxlc1xcX2luY2x1ZGVzLnNjc3MiLCJzcmMvYXBwL3ZpZXdzL25ldy1wYXNzd29yZC9DOlxcVXNlcnNcXERhbmllbFxcRGVza3RvcFxcUHJvamVjdHNcXFN0ZXJsaW5nUm9vZmluZy9zcmNcXHN0eWxlc1xcX3ZhcmlhYmxlcy5zY3NzIiwic3JjL2FwcC92aWV3cy9uZXctcGFzc3dvcmQvbmV3LXBhc3N3b3JkLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC92aWV3cy9uZXctcGFzc3dvcmQvQzpcXFVzZXJzXFxEYW5pZWxcXERlc2t0b3BcXFByb2plY3RzXFxTdGVybGluZ1Jvb2Zpbmcvbm9kZV9tb2R1bGVzXFxib290c3RyYXBcXHNjc3NcXG1peGluc1xcX2JyZWFrcG9pbnRzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUNnQkMsbUJDWE87RURZUCxhQUFBO0FFaEJEO0FDeURJO0VKMURKO0lDb0JFLGtCQUFBO0lBQ0EsbUJBQUE7RUVmQTtBQUNGO0FISkM7RUNKQSxpQkFBQTtFQUNBLGtCQUFBO0VBQ0EsZ0JBQUE7RURJQyxtQkFBQTtFQUNBLGdCQUFBO0FHUUY7QUhMQztFQUNDLGtCQUFBO0FHT0Y7QUhKQztFQUNDLGtCQUFBO0FHTUY7QUhGRTtFQUNDLGVBQUE7QUdJSDtBSERFO0VBQ0MsaUJBQUE7QUdHSDtBSEdFO0VBQ0MsZ0JBQUE7RUFDQSxpQkFBQTtBR0RIO0FISUU7RUFDQyxlQUFBO0VBQ0EsU0FBQTtBR0ZIO0FISUc7RUFDQyxxQkFBQTtBR0ZKO0FITUU7RUFDQyxtQkFBQTtFQUNBLGNBQUE7RUFDQSxrQkFBQTtFQUNBLHdDQUFBO0FHSkg7QUhNRztFQUNDLGNBQUE7QUdKSjtBSE9HO0VBQ0Msa0JBQUE7QUdMSjtBSFFHO0VBQ0Msa0JBQUE7RUFDQSxpQkFBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtFQUNBLFVBQUE7RUFDQSxNQUFBO0VBQ0Esa0JBQUE7RUFDQSwwQkFBQTtFQUNBLGtDQUFBO0VBQ0EsVUFBQTtBR05KO0FIUUk7RUFDQyxPQUFBO0VBQ0EsVUFBQTtFQUNBLG1DQUFBO0FHTkw7QUhVRztFQUNDLGdCQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLGNBQUE7RUFDQSxjQUFBO0VBQ0EsbURBQUE7QUdSSjtBSFdJO0VBQ0MsbUJBQUE7QUdUTDtBSGVDO0VBQ0Msc0JBQUE7QUdiRjtBSGVFO0VBQ0MsY0FBQTtFQUNBLGtCQUFBO0VBQ0EsbUJBQUE7QUdiSDtBSGdCRTtFQUNDLGtCQUFBO0FHZEg7QUhpQkU7RUFDQyxrQkFBQTtFQUNBLGNBQUE7RUFDQSxtQkFBQTtFQUNBLHNCQUFBO0VBQ0EseUJBQUE7RUFDQSxlQUFBO0VBQ0EseUJBQUE7RUFDQSxzQkFBQTtFQUVBLGlCQUFBO0VBRUEsa0JBQUE7RUFDQSxrQkFBQTtBR2ZIO0FIa0JFO0VBQ0MsTUFBQTtFQUNBLE9BQUE7RUFDQSxxQkFBQTtFQUNBLGVBQUE7RUFDQSxjQUFBO0VBQ0EseUJBQUE7RUFFQSxnQ0FBQTtBR2hCSDtBSHVCQTtFQUNDLGNBQUE7QUdwQkQ7QUh1QkE7RUFDQyxjQUFBO0FHcEJEIiwiZmlsZSI6InNyYy9hcHAvdmlld3MvbmV3LXBhc3N3b3JkL25ldy1wYXNzd29yZC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJ2NvbXBvbmVudC1oZWFkZXInO1xyXG5cclxuLmMtcGFzc3dvcmQtcmVzZXQge1xyXG5cdEBpbmNsdWRlIGZvcm0tY29udGFpbmVyKCk7XHJcblxyXG5cdCYtY29udGFpbmVyIHtcclxuXHRcdEBpbmNsdWRlIGNvbnRhaW5lci1zbWFsbCgpO1xyXG5cdFx0bWFyZ2luLWJvdHRvbTogNjBweDtcclxuXHRcdG1hcmdpbi10b3A6IDYwcHg7XHJcblx0fVxyXG5cclxuXHQuZm9ybS1ncm91cCB7XHJcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0fVxyXG5cclxuXHQmX2hlYWRlciB7XHJcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0fVxyXG5cclxuXHQmX2Zvcm0ge1xyXG5cdFx0Jl9saW5rcyB7XHJcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcclxuXHRcdH1cclxuXHJcblx0XHQmX3N1Ym1pdCB7XHJcblx0XHRcdHRleHQtYWxpZ246IHJpZ2h0O1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Ji0tZm9ybSB7XHJcblxyXG5cdFx0aW5wdXQge1xyXG5cdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xyXG5cdFx0XHRtYXJnaW4tdG9wOiAxLjVlbTtcclxuXHRcdH1cclxuXHJcblx0XHQubWVudSB7XHJcblx0XHRcdHBhZGRpbmctbGVmdDogMDtcclxuXHRcdFx0bWFyZ2luOiAwO1xyXG5cclxuXHRcdFx0bGkge1xyXG5cdFx0XHRcdGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdCYtLWZpZWxkIHtcclxuXHRcdFx0bWFyZ2luLWJvdHRvbTogMXJlbTtcclxuXHRcdFx0cGFkZGluZzogMS41ZW07XHJcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgcmdiYSgxMCwgMTAsIDEwLCAwLjI1KTtcclxuXHJcblx0XHRcdCYubm8tbGFiZWwge1xyXG5cdFx0XHRcdHBhZGRpbmctdG9wOiAwO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQmLS13cmFwIHtcclxuXHRcdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdCYtLWxhYmVsIHtcclxuXHRcdFx0XHRmb250LXNpemU6IHJlbS1jYWxjKDEyKTtcclxuXHRcdFx0XHRmb250LXdlaWdodDogYm9sZDtcclxuXHRcdFx0XHRsZWZ0OiAuNXJlbTtcclxuXHRcdFx0XHRsaW5lLWhlaWdodDogMS40O1xyXG5cdFx0XHRcdG9wYWNpdHk6IDA7XHJcblx0XHRcdFx0dG9wOiAwO1xyXG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdFx0XHR0cmFuc2l0aW9uOiBhbGwgMzAwbXMgZWFzZTtcclxuXHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC01MCUsIDApO1xyXG5cdFx0XHRcdHotaW5kZXg6IDI7XHJcblxyXG5cdFx0XHRcdCYuYWN0aXZlIHtcclxuXHRcdFx0XHRcdGxlZnQ6IDA7XHJcblx0XHRcdFx0XHRvcGFjaXR5OiAxO1xyXG5cdFx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpbnB1dFt0eXBlPVwic3VibWl0XCJdIHtcclxuXHRcdFx0XHRiYWNrZ3JvdW5kOiBibHVlO1xyXG5cdFx0XHRcdGJvcmRlcjogbm9uZTtcclxuXHRcdFx0XHRib3gtc2hhZG93OiBub25lO1xyXG5cdFx0XHRcdGNvbG9yOiAjZmZmO1xyXG5cdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xyXG5cdFx0XHRcdG1hcmdpbjogMCBhdXRvO1xyXG5cdFx0XHRcdHRyYW5zaXRpb246IGJhY2tncm91bmQgMzAwbXMgZWFzZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb2xvciAzMDBtcyBlYXNlO1xyXG5cclxuXHRcdFx0XHQmOmhvdmVyIHtcclxuXHRcdFx0XHRcdGJhY2tncm91bmQ6IGxpZ2h0ZW4oYmx1ZSwgMTAlKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdCYtLXN0cmVuZ3RoIHtcclxuXHRcdG1hcmdpbi1ib3R0b206IC4yNXJlbTtcclxuXHJcblx0XHQmLS1sYWJlbCB7XHJcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xyXG5cdFx0XHRmb250LXNpemU6IHJlbS1jYWxjKDEyKTtcclxuXHRcdFx0bWFyZ2luLWJvdHRvbTogMXJlbTtcclxuXHRcdH1cclxuXHJcblx0XHQmLS1yZXF1aXJlbWVudHMge1xyXG5cdFx0XHRmb250LXNpemU6IHJlbS1jYWxjKDEyKTtcclxuXHRcdH1cclxuXHJcblx0XHQuc2xpZGVyIHtcclxuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdFx0XHRoZWlnaHQ6IDAuNXJlbTtcclxuXHRcdFx0bWFyZ2luLXRvcDogMS4yNXJlbTtcclxuXHRcdFx0bWFyZ2luLWJvdHRvbTogMi4yNXJlbTtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjtcclxuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xyXG5cdFx0XHQtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xyXG5cdFx0XHQtbW96LXVzZXItc2VsZWN0OiBub25lO1xyXG5cdFx0XHQtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XHJcblx0XHRcdHVzZXItc2VsZWN0OiBub25lO1xyXG5cdFx0XHQtbXMtdG91Y2gtYWN0aW9uOiBub25lO1xyXG5cdFx0XHR0b3VjaC1hY3Rpb246IG5vbmU7XHJcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdH1cclxuXHJcblx0XHQuc2xpZGVyLWZpbGwgIHtcclxuXHRcdFx0dG9wOiAwO1xyXG5cdFx0XHRsZWZ0OiAwO1xyXG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHRcdG1heC13aWR0aDogMTAwJTtcclxuXHRcdFx0aGVpZ2h0OiAwLjVyZW07XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNjYWNhY2E7XHJcblx0XHRcdC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQ7XHJcblx0XHRcdHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0O1xyXG5cclxuXHRcdH1cclxuXHR9XHJcblxyXG59XHJcblxyXG4uY29sb3ItYWxlcnQge1xyXG5cdGNvbG9yOiAjQjczMTJDO1xyXG59XHJcblxyXG4uY29sb3Itc3VjY2VzcyB7XHJcblx0Y29sb3I6ICM4MGJkMDE7XHJcbn1cclxuXHJcblxyXG4iLCJAbWl4aW4gY29udGFpbmVyLXNtYWxsKCkge1xyXG5cdG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG5cdG1hcmdpbi1yaWdodDogYXV0bztcclxuXHRtYXgtd2lkdGg6IDQzMHB4O1xyXG59XHJcblxyXG5AbWl4aW4gY29udGFpbmVyLW1lZGl1bSgpIHtcclxuXHRtYXJnaW4tbGVmdDogYXV0bztcclxuXHRtYXJnaW4tcmlnaHQ6IGF1dG87XHJcblx0bWF4LXdpZHRoOiA2NDBweDtcclxufVxyXG5cclxuQG1peGluIHdpZGdldC1jb250YWluZXIoKSB7XHJcblx0YmFja2dyb3VuZDogJHdoaXRlO1xyXG5cdHBhZGRpbmc6IDFyZW07XHJcbn1cclxuXHJcbkBtaXhpbiBmb3JtLWNvbnRhaW5lcigpIHtcclxuXHRiYWNrZ3JvdW5kOiAkd2hpdGU7XHJcblx0cGFkZGluZzogMzBweDtcclxuXHJcblx0QGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChzbSkge1xyXG5cdFx0cGFkZGluZy1sZWZ0OiA1MHB4O1xyXG5cdFx0cGFkZGluZy1yaWdodDogNTBweDtcclxuXHR9XHJcbn1cclxuXHJcbkBmdW5jdGlvbiBzdHJpcC11bml0KCRudW0pIHtcclxuICBAcmV0dXJuICRudW0gLyAoJG51bSAqIDAgKyAxKTtcclxufVxyXG5cclxuQGZ1bmN0aW9uIGNvbnZlcnQtdG8tcmVtKCR2YWx1ZSwgJGJhc2UtdmFsdWU6IDE2cHgpICB7XHJcblx0JHZhbHVlOiBzdHJpcC11bml0KCR2YWx1ZSkgLyBzdHJpcC11bml0KCRiYXNlLXZhbHVlKSAqIDFyZW07XHJcblxyXG5cdEBpZiAoJHZhbHVlID09IDByZW0pIHtcclxuXHQgICR2YWx1ZTogMDtcclxuXHR9IC8vIFR1cm4gMHJlbSBpbnRvIDBcclxuXHJcblx0QHJldHVybiAkdmFsdWU7XHJcbn1cclxuXHJcbkBmdW5jdGlvbiByZW0tY2FsYygkdmFsdWVzLCAkYmFzZS12YWx1ZTogMTZweCkge1xyXG5cdCRtYXg6IGxlbmd0aCgkdmFsdWVzKTtcclxuXHJcblx0QGlmICRtYXggPT0gMSB7XHJcblx0XHRAcmV0dXJuIGNvbnZlcnQtdG8tcmVtKG50aCgkdmFsdWVzLCAxKSwgJGJhc2UtdmFsdWUpO1xyXG5cdH1cclxuXHJcblx0JHJlbVZhbHVlczogKCk7XHJcblxyXG5cdEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJG1heCB7XHJcblx0XHQkcmVtVmFsdWVzOiBhcHBlbmQoJHJlbVZhbHVlcywgY29udmVydC10by1yZW0obnRoKCR2YWx1ZXMsICRpKSwgJGJhc2UtdmFsdWUpKTtcclxuXHR9XHJcblxyXG5cdEByZXR1cm4gJHJlbVZhbHVlcztcclxufVxyXG4iLCIvLyBDdXN0b20gQ29sb3JzXHJcblxyXG4kZGFyay1ncmF5OiAjMjQyNDI0O1xyXG4kbWVkaXVtLWRhcmstZ3JheTogIzYxNjE2MTtcclxuJG1lZGl1bS1ncmF5OiAjNTI1MjUyO1xyXG4kbWVkaXVtLWxpZ2h0LWdyYXk6ICNCQ0M2Q0U7XHJcbiRsaWdodC1ncmF5OiAjRThFOEU4O1xyXG4kd2hpdGU6ICNmZWZlZmU7XHJcbiRibHVlOiAjMDA1M0FDO1xyXG4kZGFyay1ibHVlOiAjNTE3MDhEO1xyXG5cclxuJHByaW1hcnk6ICMwMDU4QTg7XHJcbiRzZWNvbmRhcnk6ICMwMDU4QTg7XHJcbiR5ZWxsb3c6ICNGRkMyMzY7XHJcbiRvcmFuZ2U6ICNGRjk1MkI7XHJcbiRpbmZvOiAjZTJlM2U1O1xyXG5cclxuLy8gQXBwIFZhcmlhYmxlc1xyXG4kY29udGFpbmVyLW1heC13aWR0aDogMTIwMHB4O1xyXG4kc2lkZWJhci1iZzogJGRhcmstZ3JheTtcclxuJHNpZGViYXItd2lkdGg6IDI1MHB4O1xyXG5cclxuLy8gQm9vdHN0cmFwIFZhcmlhYmxlc1xyXG5cclxuLy8gTGF5b3V0XHJcblxyXG4kZ3JpZC1icmVha3BvaW50czogKFxyXG4gIHhzOiAwLFxyXG4gIHNtOiA0ODBweCxcclxuICBtZDogNzY4cHgsXHJcbiAgbGc6IDk5MnB4LFxyXG4gIHhsOiAxMjAwcHhcclxuKTtcclxuXHJcbiRib2R5LWJnOiAkbGlnaHQtZ3JheTtcclxuXHJcbi8vIFR5cG9ncmFwaHlcclxuJGZvbnQtc2l6ZS1iYXNlOiAxcmVtO1xyXG5cclxuJGZvbnQtZmFtaWx5LXNhbnMtc2VyaWY6ICdSb2JvdG8nLCAnc2Fucy1zZXJpZic7XHJcblxyXG4kaDEtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UgKiAxLjYyNTsgLy8gMjZcclxuJGgyLWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS4zNzU7IC8vIDIzXHJcbiRoMy1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuMjU7IC8vIDIwXHJcbiRoNC1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuMTI1OyAgLy8gMThcclxuJGg1LWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS4wNjI1OyAvLyAxN1xyXG4kaDYtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7XHJcblxyXG5cclxuLy8gR2xvYmFsIFN0eWxlc1xyXG5cclxuJGJvcmRlci1yYWRpdXM6IDBweDtcclxuJGJvcmRlci1yYWRpdXMtbGc6ICRib3JkZXItcmFkaXVzO1xyXG4kYm9yZGVyLXJhZGl1cy1zbTogJGJvcmRlci1yYWRpdXM7XHJcblxyXG4vLyBGb3Jtc1xyXG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWJnOiAkd2hpdGU7XHJcblxyXG4vLyBCYWRnZXNcclxuJGJhZGdlLXBhZGRpbmcteTogLjVlbTtcclxuJGJhZGdlLXBhZGRpbmcteDogLjhlbTtcclxuJGJhZGdlLXBpbGwtcGFkZGluZy14OiAxLjJlbTtcclxuIiwiLmMtcGFzc3dvcmQtcmVzZXQge1xuICBiYWNrZ3JvdW5kOiAjZmVmZWZlO1xuICBwYWRkaW5nOiAzMHB4O1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDQ4MHB4KSB7XG4gIC5jLXBhc3N3b3JkLXJlc2V0IHtcbiAgICBwYWRkaW5nLWxlZnQ6IDUwcHg7XG4gICAgcGFkZGluZy1yaWdodDogNTBweDtcbiAgfVxufVxuLmMtcGFzc3dvcmQtcmVzZXQtY29udGFpbmVyIHtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgbWF4LXdpZHRoOiA0MzBweDtcbiAgbWFyZ2luLWJvdHRvbTogNjBweDtcbiAgbWFyZ2luLXRvcDogNjBweDtcbn1cbi5jLXBhc3N3b3JkLXJlc2V0IC5mb3JtLWdyb3VwIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLmMtcGFzc3dvcmQtcmVzZXRfaGVhZGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLmMtcGFzc3dvcmQtcmVzZXRfZm9ybV9saW5rcyB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbn1cbi5jLXBhc3N3b3JkLXJlc2V0X2Zvcm1fc3VibWl0IHtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG4uYy1wYXNzd29yZC1yZXNldC0tZm9ybSBpbnB1dCB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIG1hcmdpbi10b3A6IDEuNWVtO1xufVxuLmMtcGFzc3dvcmQtcmVzZXQtLWZvcm0gLm1lbnUge1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIG1hcmdpbjogMDtcbn1cbi5jLXBhc3N3b3JkLXJlc2V0LS1mb3JtIC5tZW51IGxpIHtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xufVxuLmMtcGFzc3dvcmQtcmVzZXQtLWZvcm0tLWZpZWxkIHtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgcGFkZGluZzogMS41ZW07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMCwgMTAsIDEwLCAwLjI1KTtcbn1cbi5jLXBhc3N3b3JkLXJlc2V0LS1mb3JtLS1maWVsZC5uby1sYWJlbCB7XG4gIHBhZGRpbmctdG9wOiAwO1xufVxuLmMtcGFzc3dvcmQtcmVzZXQtLWZvcm0tLWZpZWxkLS13cmFwIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLmMtcGFzc3dvcmQtcmVzZXQtLWZvcm0tLWZpZWxkLS1sYWJlbCB7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGxlZnQ6IDAuNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgb3BhY2l0eTogMDtcbiAgdG9wOiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRyYW5zaXRpb246IGFsbCAzMDBtcyBlYXNlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC01MCUsIDApO1xuICB6LWluZGV4OiAyO1xufVxuLmMtcGFzc3dvcmQtcmVzZXQtLWZvcm0tLWZpZWxkLS1sYWJlbC5hY3RpdmUge1xuICBsZWZ0OiAwO1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTtcbn1cbi5jLXBhc3N3b3JkLXJlc2V0LS1mb3JtLS1maWVsZCBpbnB1dFt0eXBlPXN1Ym1pdF0ge1xuICBiYWNrZ3JvdW5kOiBibHVlO1xuICBib3JkZXI6IG5vbmU7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG4gIGNvbG9yOiAjZmZmO1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMzAwbXMgZWFzZSwgY29sb3IgMzAwbXMgZWFzZTtcbn1cbi5jLXBhc3N3b3JkLXJlc2V0LS1mb3JtLS1maWVsZCBpbnB1dFt0eXBlPXN1Ym1pdF06aG92ZXIge1xuICBiYWNrZ3JvdW5kOiAjMzMzM2ZmO1xufVxuLmMtcGFzc3dvcmQtcmVzZXQtLXN0cmVuZ3RoIHtcbiAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbTtcbn1cbi5jLXBhc3N3b3JkLXJlc2V0LS1zdHJlbmd0aC0tbGFiZWwge1xuICBkaXNwbGF5OiBibG9jaztcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuLmMtcGFzc3dvcmQtcmVzZXQtLXN0cmVuZ3RoLS1yZXF1aXJlbWVudHMge1xuICBmb250LXNpemU6IDAuNzVyZW07XG59XG4uYy1wYXNzd29yZC1yZXNldC0tc3RyZW5ndGggLnNsaWRlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAwLjVyZW07XG4gIG1hcmdpbi10b3A6IDEuMjVyZW07XG4gIG1hcmdpbi1ib3R0b206IDIuMjVyZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1zLXRvdWNoLWFjdGlvbjogbm9uZTtcbiAgdG91Y2gtYWN0aW9uOiBub25lO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG59XG4uYy1wYXNzd29yZC1yZXNldC0tc3RyZW5ndGggLnNsaWRlci1maWxsIHtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAwLjVyZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNjYWNhY2E7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQ7XG4gIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0O1xufVxuXG4uY29sb3ItYWxlcnQge1xuICBjb2xvcjogI0I3MzEyQztcbn1cblxuLmNvbG9yLXN1Y2Nlc3Mge1xuICBjb2xvcjogIzgwYmQwMTtcbn0iLCIvLyBCcmVha3BvaW50IHZpZXdwb3J0IHNpemVzIGFuZCBtZWRpYSBxdWVyaWVzLlxuLy9cbi8vIEJyZWFrcG9pbnRzIGFyZSBkZWZpbmVkIGFzIGEgbWFwIG9mIChuYW1lOiBtaW5pbXVtIHdpZHRoKSwgb3JkZXIgZnJvbSBzbWFsbCB0byBsYXJnZTpcbi8vXG4vLyAgICAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpXG4vL1xuLy8gVGhlIG1hcCBkZWZpbmVkIGluIHRoZSBgJGdyaWQtYnJlYWtwb2ludHNgIGdsb2JhbCB2YXJpYWJsZSBpcyB1c2VkIGFzIHRoZSBgJGJyZWFrcG9pbnRzYCBhcmd1bWVudCBieSBkZWZhdWx0LlxuXG4vLyBOYW1lIG9mIHRoZSBuZXh0IGJyZWFrcG9pbnQsIG9yIG51bGwgZm9yIHRoZSBsYXN0IGJyZWFrcG9pbnQuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtKVxuLy8gICAgbWRcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KSlcbi8vICAgIG1kXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICRicmVha3BvaW50LW5hbWVzOiAoeHMgc20gbWQgbGcgeGwpKVxuLy8gICAgbWRcbkBmdW5jdGlvbiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMsICRicmVha3BvaW50LW5hbWVzOiBtYXAta2V5cygkYnJlYWtwb2ludHMpKSB7XG4gICRuOiBpbmRleCgkYnJlYWtwb2ludC1uYW1lcywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRuICE9IG51bGwgYW5kICRuIDwgbGVuZ3RoKCRicmVha3BvaW50LW5hbWVzKSwgbnRoKCRicmVha3BvaW50LW5hbWVzLCAkbiArIDEpLCBudWxsKTtcbn1cblxuLy8gTWluaW11bSBicmVha3BvaW50IHdpZHRoLiBOdWxsIGZvciB0aGUgc21hbGxlc3QgKGZpcnN0KSBicmVha3BvaW50LlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbWluKHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgNTc2cHhcbkBmdW5jdGlvbiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRtaW4gIT0gMCwgJG1pbiwgbnVsbCk7XG59XG5cbi8vIE1heGltdW0gYnJlYWtwb2ludCB3aWR0aC4gTnVsbCBmb3IgdGhlIGxhcmdlc3QgKGxhc3QpIGJyZWFrcG9pbnQuXG4vLyBUaGUgbWF4aW11bSB2YWx1ZSBpcyBjYWxjdWxhdGVkIGFzIHRoZSBtaW5pbXVtIG9mIHRoZSBuZXh0IG9uZSBsZXNzIDAuMDJweFxuLy8gdG8gd29yayBhcm91bmQgdGhlIGxpbWl0YXRpb25zIG9mIGBtaW4tYCBhbmQgYG1heC1gIHByZWZpeGVzIGFuZCB2aWV3cG9ydHMgd2l0aCBmcmFjdGlvbmFsIHdpZHRocy5cbi8vIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvbWVkaWFxdWVyaWVzLTQvI21xLW1pbi1tYXhcbi8vIFVzZXMgMC4wMnB4IHJhdGhlciB0aGFuIDAuMDFweCB0byB3b3JrIGFyb3VuZCBhIGN1cnJlbnQgcm91bmRpbmcgYnVnIGluIFNhZmFyaS5cbi8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MjYxXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1tYXgoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICA3NjcuOThweFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRuZXh0OiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEByZXR1cm4gaWYoJG5leHQsIGJyZWFrcG9pbnQtbWluKCRuZXh0LCAkYnJlYWtwb2ludHMpIC0gLjAyLCBudWxsKTtcbn1cblxuLy8gUmV0dXJucyBhIGJsYW5rIHN0cmluZyBpZiBzbWFsbGVzdCBicmVha3BvaW50LCBvdGhlcndpc2UgcmV0dXJucyB0aGUgbmFtZSB3aXRoIGEgZGFzaCBpbiBmcm9udC5cbi8vIFVzZWZ1bCBmb3IgbWFraW5nIHJlc3BvbnNpdmUgdXRpbGl0aWVzLlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoeHMsICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICBcIlwiICAoUmV0dXJucyBhIGJsYW5rIHN0cmluZylcbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICBcIi1zbVwiXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pbmZpeCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICBAcmV0dXJuIGlmKGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpID09IG51bGwsIFwiXCIsIFwiLSN7JG5hbWV9XCIpO1xufVxuXG4vLyBNZWRpYSBvZiBhdCBsZWFzdCB0aGUgbWluaW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIHdpZGVyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWluIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBNZWRpYSBvZiBhdCBtb3N0IHRoZSBtYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguIE5vIHF1ZXJ5IGZvciB0aGUgbGFyZ2VzdCBicmVha3BvaW50LlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCBuYXJyb3dlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWF4IHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBNZWRpYSB0aGF0IHNwYW5zIG11bHRpcGxlIGJyZWFrcG9pbnQgd2lkdGhzLlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IGJldHdlZW4gdGhlIG1pbiBhbmQgbWF4IGJyZWFrcG9pbnRzXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1iZXR3ZWVuKCRsb3dlciwgJHVwcGVyLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRsb3dlciwgJGJyZWFrcG9pbnRzKTtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJHVwcGVyLCAkYnJlYWtwb2ludHMpO1xuXG4gIEBpZiAkbWluICE9IG51bGwgYW5kICRtYXggIT0gbnVsbCB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1heCA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRsb3dlciwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJHVwcGVyLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLyBNZWRpYSBiZXR3ZWVuIHRoZSBicmVha3BvaW50J3MgbWluaW11bSBhbmQgbWF4aW11bSB3aWR0aHMuXG4vLyBObyBtaW5pbXVtIGZvciB0aGUgc21hbGxlc3QgYnJlYWtwb2ludCwgYW5kIG5vIG1heGltdW0gZm9yIHRoZSBsYXJnZXN0IG9uZS5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBvbmx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50LCBub3Qgdmlld3BvcnRzIGFueSB3aWRlciBvciBuYXJyb3dlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LW9ubHkoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuXG4gIEBpZiAkbWluICE9IG51bGwgYW5kICRtYXggIT0gbnVsbCB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1heCA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWluID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkbmFtZSwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cbiJdfQ== */\"","import { Component, OnInit, ElementRef, ViewChild } from '@angular/core';\r\n\r\nimport { ActivatedRoute, ParamMap, Router} from '@angular/router';\r\nimport {FormBuilder, FormGroup, Validators} from '@angular/forms';\r\n\r\nimport { UserService } from '@/services/user/user.service';\r\nimport { AlertService } from '@/services/alert/alert.service';\r\nimport { AuthService } from '@/services/auth/auth.service';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'app-new-password',\r\n templateUrl: './new-password.component.html',\r\n styleUrls: ['./new-password.component.scss']\r\n})\r\nexport class NewPasswordComponent implements OnInit {\r\n\r\n\t// HTML References\r\n\t@ViewChild('newPassword')\r\n\tnewPasswordInput: ElementRef;\r\n\r\n\t@ViewChild('confirmPassword')\r\n\tconfirmPasswordInput: ElementRef;\r\n\r\n\t@ViewChild('submitPassword')\r\n\tsubmitPassword: ElementRef;\r\n\r\n\t@ViewChild('requirements')\r\n\tpasswordRequirements: ElementRef;\r\n\r\n\t@ViewChild('dataSlider')\r\n\tdataSlider: ElementRef;\r\n\r\n\t@ViewChild('strengthValue')\r\n\tstrengthValue: ElementRef;\r\n\r\n\tsameValueElement: HTMLLIElement;\r\n\tinstructionsElement: HTMLElement;\r\n\r\n\r\n\t// Properties\r\n\tpatterns = {\r\n\t\tpattern0: /.{8,}/, // minimum 8 characters\r\n\t\tpattern1: /^(?=.*[A-z])(?=.*\\d).*$/, // one letter, one number\r\n\t\tpattern2: /.*[A-Z]/, // one uppercase letter\r\n\t\tpattern3: /.*[-\\/:;()$.,?!'*=_~\\[\\] ]/ // any of these symbols\r\n\t}\r\n\r\n\tmatches = {\r\n\t\t0: false,\r\n\t\t1: false,\r\n\t\t2: false,\r\n\t\t3: false,\r\n\t\tsameValue: false\r\n\t};\r\n\r\n\tdisableSubmit: boolean = true;\r\n\tdisallowedChar: boolean = true;\r\n\tsubmitted: boolean = false;\r\n\tresetToken: string;\r\n\r\n\tnewPasswordForm: FormGroup;\r\n\r\n constructor(\r\n\t\tprivate route: ActivatedRoute,\r\n\t\tprivate alertService: AlertService,\r\n\t\tprivate formBuilder: FormBuilder,\r\n\t\tprivate router: Router,\r\n\t\tprivate userService: UserService,\r\n\t\tprivate authService: AuthService\r\n\t\t) { }\r\n\r\n ngOnInit() {\r\n\r\n\t\t// Redirect if user is logged in\r\n\t\tif(this.authService.currentUserValue) {\r\n\t\t\tthis.router.navigate(['/dashboard']);\r\n\t\t}\r\n\r\n\t\tthis.newPasswordForm = this.formBuilder.group({\r\n\t\t\tPassword: ''\r\n\t\t});\r\n\r\n\t\tthis.resetToken = this.route.snapshot.queryParams.token;\r\n\r\n\t}\r\n\r\n\tngAfterViewInit() {\r\n\t}\r\n\r\n\tallTrue(object) {\r\n\t\tfor (var i in object) {\r\n\t if (object[i] === false)\r\n\t {\r\n\t \treturn false;\r\n\t }\r\n\t }\r\n\t return true;\r\n\t}\r\n\r\n\tinputState(input) {\r\n\r\n\t\tlet label = input.labels[0];\r\n\r\n\t\tif( input.value !== '' ) {\r\n\r\n\t\t\tlabel.classList.add('active');\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlabel.classList.remove('active');\r\n\t\t}\r\n\t}\r\n\r\n\tinputValidation(event) {\r\n\t\tlet requirementsElement = this.passwordRequirements.nativeElement,\r\n\t\t\t\trequirementsChildren = requirementsElement.children,\r\n\t\t\t\tvalue = event.target.value,\r\n\t\t\t\tindex = 0,\r\n\t\t\t\tpatterns = this.patterns,\r\n\t\t\t\tmatches = this.matches,\r\n\t\t\t\tcompareValue = this.confirmPasswordInput.nativeElement.value;\r\n\r\n\r\n\t\tthis.inputState(event.target);\r\n\r\n\t\tfor( let pattern in patterns) {\r\n\r\n\t\t\tfor( let i = 0; i < requirementsChildren.length; i++ ) {\r\n\r\n\t\t\t\tif( requirementsChildren[i].id === pattern ) {\r\n\t\t\t\t\tvar selector = requirementsChildren[i];\r\n\t\t\t\t}\r\n\t\t\t\tif( requirementsChildren[i].id === 'pattern4' ) {\r\n\t\t\t\t\t this.sameValueElement = requirementsChildren[i];\r\n\t\t\t\t}\r\n\t\t\t\tif(requirementsChildren[i].id === 'pattern5' ) {\r\n\t\t\t\t\tthis.instructionsElement = requirementsChildren[i];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif( patterns[pattern].test(value) ) {\r\n\t\t\t\tmatches[index] = true;\r\n\t\t\t\tselector.classList.remove('color-alert');\r\n\t\t\t\tselector.classList.add('color-success');\r\n\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tmatches[index] = false;\r\n\t\t\t\tselector.classList.remove('color-success');\r\n\t\t\t\tselector.classList.add('color-alert');\r\n\t\t\t}\r\n\r\n\t\t\tindex++;\r\n\t\t}\r\n\r\n\t\tif( this.allTrue(matches) && !this.disallowedTest(value, compareValue) ) {\r\n\t\t\tthis.disableSubmit = false;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.disableSubmit = true;\r\n\t\t}\r\n\r\n\t\tthis.disallowedHandler(value, compareValue);\r\n\t\tthis.strengthMeter(matches);\r\n\t\tthis.compareValues();\r\n\r\n\t}\r\n\r\n\tcompareValues() {\r\n\r\n\t\tlet\tvalue = this.newPasswordInput.nativeElement.value,\r\n\t\tsameValueElement = this.sameValueElement,\r\n\t\tmatches = this.matches,\r\n\t\tcompareValue = this.confirmPasswordInput.nativeElement.value;\r\n\r\n\t\tthis.inputState(event.target);\r\n\r\n\t\tif( value === compareValue && value !== '' ) {\r\n\r\n\t\t\tthis.matches.sameValue = true;\r\n\r\n\t\t\tsameValueElement.classList.remove('color-alert');\r\n\t\t\tsameValueElement.classList.add('color-success');\r\n\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.matches.sameValue = false;\r\n\t\t\tsameValueElement.classList.remove('color-success');\r\n\t\t\tsameValueElement.classList.add('color-alert');\r\n\r\n\t\t}\r\n\r\n\t\tif( this.allTrue(matches) && !this.disallowedTest(value, compareValue) ) {\r\n\t\t\tthis.disableSubmit = false;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.disableSubmit = true;\r\n\t\t}\r\n\r\n\t\tthis.disallowedHandler(value, compareValue);\r\n\t\tthis.disallowedTest(value, compareValue);\r\n\t\tthis.strengthMeter(matches);\r\n\r\n\t}\r\n\r\n\tdisallowedTest(newValue, compareValue) {\r\n\t\tvar disallowed = /[^A-Za-z\\d-\\/:;()$.,?!'*=_~\\[\\] ]/g;\r\n\r\n\t\treturn ( disallowed.test(newValue) || disallowed.test(compareValue) ) ? true : false;\r\n\t}\r\n\r\n\tdisallowedHandler(newValue, compareValue) {\r\n\r\n\t\tvar disallowed = /[^A-Za-z\\d-\\/:;()$.,?!'*=_~\\[\\] ]/g;\r\n\r\n\t\tif( this.disallowedTest(newValue, compareValue) ) {\r\n\t\t\tvar matches = newValue.match(disallowed),\r\n\t\t\t\t\tcompareMatches = compareValue.match(disallowed),\r\n\t\t\t\t\tchars = '';\r\n\r\n\t\t var matchResults = [...matches, ...compareMatches];\r\n\r\n\t\t\tchars = matchResults.join(', ');\r\n\t\t\tthis.disallowedChar = false;\r\n\t\t\tthis.instructionsElement.textContent = `Remove disallowed characters: ${chars}`;\r\n\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.disallowedChar = true;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tstrengthMeter(matches) {\r\n\r\n\t\tlet width = 0,\r\n\t\t\t\tsliderFill = this.dataSlider.nativeElement,\r\n\t\t\t\tstrengthValue = this.strengthValue.nativeElement,\r\n\t\t\t\tlabelText = 'Weak',\r\n\t\t\t\tcolors = {\r\n\t\t\t\t\tsuccess: '#78BE20',\r\n\t\t\t\t\twarning: '#ed5102',\r\n\t\t\t\t\talert: '#B7312C'\r\n\t\t\t\t};\r\n\r\n\t\tfor ( var i in matches ) {\r\n\t\t\tif ( i !== 'sameValue' ) {\r\n\t\t\t\tif( matches[i] === true ) {\r\n\t\t\t\t\twidth += 25;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif( width < 0 )\r\n\t\t{\r\n\t\t\twidth = 0;\r\n\t\t}\r\n\t\telse if( width <= 50 ) {\r\n\t\t\tsliderFill.style.backgroundColor = colors.alert;\r\n\t\t\tlabelText = 'Weak';\r\n\t\t}\r\n\t\telse if( width <= 75 ) {\r\n\t\t\tsliderFill.style.backgroundColor = colors.warning;\r\n\t\t\tlabelText = 'Weak';\r\n\t\t}\r\n\t\telse if( width === 100 ) {\r\n\t\t\tsliderFill.style.backgroundColor = colors.success;\r\n\t\t\tlabelText = 'Strong';\r\n\t\t}\r\n\r\n\t\tlet formattedWidth = String(width);\r\n\t\tformattedWidth = width + '%';\r\n\r\n\t\tstrengthValue.textContent = labelText;\r\n\t\tsliderFill.style.width = formattedWidth;\r\n\r\n\t}\r\n\r\n\tonSubmit() {\r\n\t\tthis.submitted = true;\r\n\r\n\t\tif (this.newPasswordForm.invalid) {\r\n\t\t\tconsole.error('form submission invalid');\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.userService.newPassword(this.newPasswordForm.get('Password').value, this.resetToken)\r\n\t\t\t.subscribe(\r\n\t\t\t\t(data: any) => {\r\n\t\t\t\t\tthis.alertService.success(`Password has been reset`, true);\r\n\t\t\t\t\tthis.router.navigate(['login']);\r\n\t\t\t\t},\r\n\t\t\t\terror => {\r\n\t\t\t\t\tthis.alertService.error(error);\r\n\r\n\t\t\t\t\tdocument.body.scrollIntoView({behavior: \"smooth\"});\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t}\r\n\r\n}\r\n","module.exports = \"

404 - Page Not Found

\\r\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3ZpZXdzL3BhZ2Utbm90LWZvdW5kL3BhZ2Utbm90LWZvdW5kLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-page-not-found',\r\n templateUrl: './page-not-found.component.html',\r\n styleUrls: ['./page-not-found.component.scss']\r\n})\r\nexport class PageNotFoundComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\t\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t

\\r\\n\\t\\t\\t\\tPassword Reset\\r\\n\\t\\t\\t

\\r\\n\\t\\t\\t

\\r\\n\\t\\t\\t\\tUpon entering your email, a password reset link will be delivered to your inbox.\\r\\n\\t\\t\\t

\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t
Email is required
\\r\\n\\t\\t\\t\\t\\t\\t
Email is not valid
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\tReset\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\"","module.exports = \".c-password-reset {\\n background: #fefefe;\\n padding: 30px;\\n}\\n@media (min-width: 480px) {\\n .c-password-reset {\\n padding-left: 50px;\\n padding-right: 50px;\\n }\\n}\\n.c-password-reset-container {\\n margin-left: auto;\\n margin-right: auto;\\n max-width: 430px;\\n margin-bottom: 60px;\\n margin-top: 60px;\\n}\\n.c-password-reset_header {\\n text-align: center;\\n}\\n.c-password-reset_form_links {\\n font-size: 12px;\\n}\\n.c-password-reset_form_submit {\\n text-align: right;\\n}\\n.c-password-reset_form.was-validated:not(.ng-valid) .align-items-end {\\n align-items: center !important;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdmlld3MvcGFzc3dvcmQtcmVzZXQvQzpcXFVzZXJzXFxEYW5pZWxcXERlc2t0b3BcXFByb2plY3RzXFxTdGVybGluZ1Jvb2Zpbmcvc3JjXFxhcHBcXHZpZXdzXFxwYXNzd29yZC1yZXNldFxccGFzc3dvcmQtcmVzZXQuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3ZpZXdzL3Bhc3N3b3JkLXJlc2V0L0M6XFxVc2Vyc1xcRGFuaWVsXFxEZXNrdG9wXFxQcm9qZWN0c1xcU3RlcmxpbmdSb29maW5nL3NyY1xcc3R5bGVzXFxfaW5jbHVkZXMuc2NzcyIsInNyYy9hcHAvdmlld3MvcGFzc3dvcmQtcmVzZXQvQzpcXFVzZXJzXFxEYW5pZWxcXERlc2t0b3BcXFByb2plY3RzXFxTdGVybGluZ1Jvb2Zpbmcvc3JjXFxzdHlsZXNcXF92YXJpYWJsZXMuc2NzcyIsInNyYy9hcHAvdmlld3MvcGFzc3dvcmQtcmVzZXQvcGFzc3dvcmQtcmVzZXQuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3ZpZXdzL3Bhc3N3b3JkLXJlc2V0L0M6XFxVc2Vyc1xcRGFuaWVsXFxEZXNrdG9wXFxQcm9qZWN0c1xcU3RlcmxpbmdSb29maW5nL25vZGVfbW9kdWxlc1xcYm9vdHN0cmFwXFxzY3NzXFxtaXhpbnNcXF9icmVha3BvaW50cy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBO0VDZ0JDLG1CQ1hPO0VEWVAsYUFBQTtBRWhCRDtBQ3lESTtFSjFESjtJQ29CRSxrQkFBQTtJQUNBLG1CQUFBO0VFZkE7QUFDRjtBSEpDO0VDSkEsaUJBQUE7RUFDQSxrQkFBQTtFQUNBLGdCQUFBO0VESUMsbUJBQUE7RUFDQSxnQkFBQTtBR1FGO0FITEM7RUFDQyxrQkFBQTtBR09GO0FISEU7RUFDQyxlQUFBO0FHS0g7QUhGRTtFQUNDLGlCQUFBO0FHSUg7QUhERTtFQUNDLDhCQUFBO0FHR0giLCJmaWxlIjoic3JjL2FwcC92aWV3cy9wYXNzd29yZC1yZXNldC9wYXNzd29yZC1yZXNldC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJ2NvbXBvbmVudC1oZWFkZXInO1xyXG5cclxuLmMtcGFzc3dvcmQtcmVzZXQge1xyXG5cdEBpbmNsdWRlIGZvcm0tY29udGFpbmVyKCk7XHJcblxyXG5cdCYtY29udGFpbmVyIHtcclxuXHRcdEBpbmNsdWRlIGNvbnRhaW5lci1zbWFsbCgpO1xyXG5cdFx0bWFyZ2luLWJvdHRvbTogNjBweDtcclxuXHRcdG1hcmdpbi10b3A6IDYwcHg7XHJcblx0fVxyXG5cclxuXHQmX2hlYWRlciB7XHJcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0fVxyXG5cclxuXHQmX2Zvcm0ge1xyXG5cdFx0Jl9saW5rcyB7XHJcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcclxuXHRcdH1cclxuXHJcblx0XHQmX3N1Ym1pdCB7XHJcblx0XHRcdHRleHQtYWxpZ246IHJpZ2h0O1xyXG5cdFx0fVxyXG5cclxuXHRcdCYud2FzLXZhbGlkYXRlZDpub3QoLm5nLXZhbGlkKSAuYWxpZ24taXRlbXMtZW5ke1xyXG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiIsIkBtaXhpbiBjb250YWluZXItc21hbGwoKSB7XHJcblx0bWFyZ2luLWxlZnQ6IGF1dG87XHJcblx0bWFyZ2luLXJpZ2h0OiBhdXRvO1xyXG5cdG1heC13aWR0aDogNDMwcHg7XHJcbn1cclxuXHJcbkBtaXhpbiBjb250YWluZXItbWVkaXVtKCkge1xyXG5cdG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG5cdG1hcmdpbi1yaWdodDogYXV0bztcclxuXHRtYXgtd2lkdGg6IDY0MHB4O1xyXG59XHJcblxyXG5AbWl4aW4gd2lkZ2V0LWNvbnRhaW5lcigpIHtcclxuXHRiYWNrZ3JvdW5kOiAkd2hpdGU7XHJcblx0cGFkZGluZzogMXJlbTtcclxufVxyXG5cclxuQG1peGluIGZvcm0tY29udGFpbmVyKCkge1xyXG5cdGJhY2tncm91bmQ6ICR3aGl0ZTtcclxuXHRwYWRkaW5nOiAzMHB4O1xyXG5cclxuXHRAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKHNtKSB7XHJcblx0XHRwYWRkaW5nLWxlZnQ6IDUwcHg7XHJcblx0XHRwYWRkaW5nLXJpZ2h0OiA1MHB4O1xyXG5cdH1cclxufVxyXG5cclxuQGZ1bmN0aW9uIHN0cmlwLXVuaXQoJG51bSkge1xyXG4gIEByZXR1cm4gJG51bSAvICgkbnVtICogMCArIDEpO1xyXG59XHJcblxyXG5AZnVuY3Rpb24gY29udmVydC10by1yZW0oJHZhbHVlLCAkYmFzZS12YWx1ZTogMTZweCkgIHtcclxuXHQkdmFsdWU6IHN0cmlwLXVuaXQoJHZhbHVlKSAvIHN0cmlwLXVuaXQoJGJhc2UtdmFsdWUpICogMXJlbTtcclxuXHJcblx0QGlmICgkdmFsdWUgPT0gMHJlbSkge1xyXG5cdCAgJHZhbHVlOiAwO1xyXG5cdH0gLy8gVHVybiAwcmVtIGludG8gMFxyXG5cclxuXHRAcmV0dXJuICR2YWx1ZTtcclxufVxyXG5cclxuQGZ1bmN0aW9uIHJlbS1jYWxjKCR2YWx1ZXMsICRiYXNlLXZhbHVlOiAxNnB4KSB7XHJcblx0JG1heDogbGVuZ3RoKCR2YWx1ZXMpO1xyXG5cclxuXHRAaWYgJG1heCA9PSAxIHtcclxuXHRcdEByZXR1cm4gY29udmVydC10by1yZW0obnRoKCR2YWx1ZXMsIDEpLCAkYmFzZS12YWx1ZSk7XHJcblx0fVxyXG5cclxuXHQkcmVtVmFsdWVzOiAoKTtcclxuXHJcblx0QGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbWF4IHtcclxuXHRcdCRyZW1WYWx1ZXM6IGFwcGVuZCgkcmVtVmFsdWVzLCBjb252ZXJ0LXRvLXJlbShudGgoJHZhbHVlcywgJGkpLCAkYmFzZS12YWx1ZSkpO1xyXG5cdH1cclxuXHJcblx0QHJldHVybiAkcmVtVmFsdWVzO1xyXG59XHJcbiIsIi8vIEN1c3RvbSBDb2xvcnNcclxuXHJcbiRkYXJrLWdyYXk6ICMyNDI0MjQ7XHJcbiRtZWRpdW0tZGFyay1ncmF5OiAjNjE2MTYxO1xyXG4kbWVkaXVtLWdyYXk6ICM1MjUyNTI7XHJcbiRtZWRpdW0tbGlnaHQtZ3JheTogI0JDQzZDRTtcclxuJGxpZ2h0LWdyYXk6ICNFOEU4RTg7XHJcbiR3aGl0ZTogI2ZlZmVmZTtcclxuJGJsdWU6ICMwMDUzQUM7XHJcbiRkYXJrLWJsdWU6ICM1MTcwOEQ7XHJcblxyXG4kcHJpbWFyeTogIzAwNThBODtcclxuJHNlY29uZGFyeTogIzAwNThBODtcclxuJHllbGxvdzogI0ZGQzIzNjtcclxuJG9yYW5nZTogI0ZGOTUyQjtcclxuJGluZm86ICNlMmUzZTU7XHJcblxyXG4vLyBBcHAgVmFyaWFibGVzXHJcbiRjb250YWluZXItbWF4LXdpZHRoOiAxMjAwcHg7XHJcbiRzaWRlYmFyLWJnOiAkZGFyay1ncmF5O1xyXG4kc2lkZWJhci13aWR0aDogMjUwcHg7XHJcblxyXG4vLyBCb290c3RyYXAgVmFyaWFibGVzXHJcblxyXG4vLyBMYXlvdXRcclxuXHJcbiRncmlkLWJyZWFrcG9pbnRzOiAoXHJcbiAgeHM6IDAsXHJcbiAgc206IDQ4MHB4LFxyXG4gIG1kOiA3NjhweCxcclxuICBsZzogOTkycHgsXHJcbiAgeGw6IDEyMDBweFxyXG4pO1xyXG5cclxuJGJvZHktYmc6ICRsaWdodC1ncmF5O1xyXG5cclxuLy8gVHlwb2dyYXBoeVxyXG4kZm9udC1zaXplLWJhc2U6IDFyZW07XHJcblxyXG4kZm9udC1mYW1pbHktc2Fucy1zZXJpZjogJ1JvYm90bycsICdzYW5zLXNlcmlmJztcclxuXHJcbiRoMS1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDEuNjI1OyAvLyAyNlxyXG4kaDItZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UgKiAxLjM3NTsgLy8gMjNcclxuJGgzLWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS4yNTsgLy8gMjBcclxuJGg0LWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlICogMS4xMjU7ICAvLyAxOFxyXG4kaDUtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UgKiAxLjA2MjU7IC8vIDE3XHJcbiRoNi1mb250LXNpemU6ICRmb250LXNpemUtYmFzZTtcclxuXHJcblxyXG4vLyBHbG9iYWwgU3R5bGVzXHJcblxyXG4kYm9yZGVyLXJhZGl1czogMHB4O1xyXG4kYm9yZGVyLXJhZGl1cy1sZzogJGJvcmRlci1yYWRpdXM7XHJcbiRib3JkZXItcmFkaXVzLXNtOiAkYm9yZGVyLXJhZGl1cztcclxuXHJcbi8vIEZvcm1zXHJcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYmc6ICR3aGl0ZTtcclxuXHJcbi8vIEJhZGdlc1xyXG4kYmFkZ2UtcGFkZGluZy15OiAuNWVtO1xyXG4kYmFkZ2UtcGFkZGluZy14OiAuOGVtO1xyXG4kYmFkZ2UtcGlsbC1wYWRkaW5nLXg6IDEuMmVtO1xyXG4iLCIuYy1wYXNzd29yZC1yZXNldCB7XG4gIGJhY2tncm91bmQ6ICNmZWZlZmU7XG4gIHBhZGRpbmc6IDMwcHg7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNDgwcHgpIHtcbiAgLmMtcGFzc3dvcmQtcmVzZXQge1xuICAgIHBhZGRpbmctbGVmdDogNTBweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiA1MHB4O1xuICB9XG59XG4uYy1wYXNzd29yZC1yZXNldC1jb250YWluZXIge1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICBtYXgtd2lkdGg6IDQzMHB4O1xuICBtYXJnaW4tYm90dG9tOiA2MHB4O1xuICBtYXJnaW4tdG9wOiA2MHB4O1xufVxuLmMtcGFzc3dvcmQtcmVzZXRfaGVhZGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLmMtcGFzc3dvcmQtcmVzZXRfZm9ybV9saW5rcyB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbn1cbi5jLXBhc3N3b3JkLXJlc2V0X2Zvcm1fc3VibWl0IHtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG4uYy1wYXNzd29yZC1yZXNldF9mb3JtLndhcy12YWxpZGF0ZWQ6bm90KC5uZy12YWxpZCkgLmFsaWduLWl0ZW1zLWVuZCB7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDtcbn0iLCIvLyBCcmVha3BvaW50IHZpZXdwb3J0IHNpemVzIGFuZCBtZWRpYSBxdWVyaWVzLlxuLy9cbi8vIEJyZWFrcG9pbnRzIGFyZSBkZWZpbmVkIGFzIGEgbWFwIG9mIChuYW1lOiBtaW5pbXVtIHdpZHRoKSwgb3JkZXIgZnJvbSBzbWFsbCB0byBsYXJnZTpcbi8vXG4vLyAgICAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpXG4vL1xuLy8gVGhlIG1hcCBkZWZpbmVkIGluIHRoZSBgJGdyaWQtYnJlYWtwb2ludHNgIGdsb2JhbCB2YXJpYWJsZSBpcyB1c2VkIGFzIHRoZSBgJGJyZWFrcG9pbnRzYCBhcmd1bWVudCBieSBkZWZhdWx0LlxuXG4vLyBOYW1lIG9mIHRoZSBuZXh0IGJyZWFrcG9pbnQsIG9yIG51bGwgZm9yIHRoZSBsYXN0IGJyZWFrcG9pbnQuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtKVxuLy8gICAgbWRcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KSlcbi8vICAgIG1kXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICRicmVha3BvaW50LW5hbWVzOiAoeHMgc20gbWQgbGcgeGwpKVxuLy8gICAgbWRcbkBmdW5jdGlvbiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMsICRicmVha3BvaW50LW5hbWVzOiBtYXAta2V5cygkYnJlYWtwb2ludHMpKSB7XG4gICRuOiBpbmRleCgkYnJlYWtwb2ludC1uYW1lcywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRuICE9IG51bGwgYW5kICRuIDwgbGVuZ3RoKCRicmVha3BvaW50LW5hbWVzKSwgbnRoKCRicmVha3BvaW50LW5hbWVzLCAkbiArIDEpLCBudWxsKTtcbn1cblxuLy8gTWluaW11bSBicmVha3BvaW50IHdpZHRoLiBOdWxsIGZvciB0aGUgc21hbGxlc3QgKGZpcnN0KSBicmVha3BvaW50LlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbWluKHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgNTc2cHhcbkBmdW5jdGlvbiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRtaW4gIT0gMCwgJG1pbiwgbnVsbCk7XG59XG5cbi8vIE1heGltdW0gYnJlYWtwb2ludCB3aWR0aC4gTnVsbCBmb3IgdGhlIGxhcmdlc3QgKGxhc3QpIGJyZWFrcG9pbnQuXG4vLyBUaGUgbWF4aW11bSB2YWx1ZSBpcyBjYWxjdWxhdGVkIGFzIHRoZSBtaW5pbXVtIG9mIHRoZSBuZXh0IG9uZSBsZXNzIDAuMDJweFxuLy8gdG8gd29yayBhcm91bmQgdGhlIGxpbWl0YXRpb25zIG9mIGBtaW4tYCBhbmQgYG1heC1gIHByZWZpeGVzIGFuZCB2aWV3cG9ydHMgd2l0aCBmcmFjdGlvbmFsIHdpZHRocy5cbi8vIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvbWVkaWFxdWVyaWVzLTQvI21xLW1pbi1tYXhcbi8vIFVzZXMgMC4wMnB4IHJhdGhlciB0aGFuIDAuMDFweCB0byB3b3JrIGFyb3VuZCBhIGN1cnJlbnQgcm91bmRpbmcgYnVnIGluIFNhZmFyaS5cbi8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MjYxXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1tYXgoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICA3NjcuOThweFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRuZXh0OiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEByZXR1cm4gaWYoJG5leHQsIGJyZWFrcG9pbnQtbWluKCRuZXh0LCAkYnJlYWtwb2ludHMpIC0gLjAyLCBudWxsKTtcbn1cblxuLy8gUmV0dXJucyBhIGJsYW5rIHN0cmluZyBpZiBzbWFsbGVzdCBicmVha3BvaW50LCBvdGhlcndpc2UgcmV0dXJucyB0aGUgbmFtZSB3aXRoIGEgZGFzaCBpbiBmcm9udC5cbi8vIFVzZWZ1bCBmb3IgbWFraW5nIHJlc3BvbnNpdmUgdXRpbGl0aWVzLlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoeHMsICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICBcIlwiICAoUmV0dXJucyBhIGJsYW5rIHN0cmluZylcbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICBcIi1zbVwiXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pbmZpeCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICBAcmV0dXJuIGlmKGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpID09IG51bGwsIFwiXCIsIFwiLSN7JG5hbWV9XCIpO1xufVxuXG4vLyBNZWRpYSBvZiBhdCBsZWFzdCB0aGUgbWluaW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIHdpZGVyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWluIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBNZWRpYSBvZiBhdCBtb3N0IHRoZSBtYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguIE5vIHF1ZXJ5IGZvciB0aGUgbGFyZ2VzdCBicmVha3BvaW50LlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCBuYXJyb3dlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWF4IHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBNZWRpYSB0aGF0IHNwYW5zIG11bHRpcGxlIGJyZWFrcG9pbnQgd2lkdGhzLlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IGJldHdlZW4gdGhlIG1pbiBhbmQgbWF4IGJyZWFrcG9pbnRzXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1iZXR3ZWVuKCRsb3dlciwgJHVwcGVyLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRsb3dlciwgJGJyZWFrcG9pbnRzKTtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJHVwcGVyLCAkYnJlYWtwb2ludHMpO1xuXG4gIEBpZiAkbWluICE9IG51bGwgYW5kICRtYXggIT0gbnVsbCB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1heCA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRsb3dlciwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJHVwcGVyLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLyBNZWRpYSBiZXR3ZWVuIHRoZSBicmVha3BvaW50J3MgbWluaW11bSBhbmQgbWF4aW11bSB3aWR0aHMuXG4vLyBObyBtaW5pbXVtIGZvciB0aGUgc21hbGxlc3QgYnJlYWtwb2ludCwgYW5kIG5vIG1heGltdW0gZm9yIHRoZSBsYXJnZXN0IG9uZS5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBvbmx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50LCBub3Qgdmlld3BvcnRzIGFueSB3aWRlciBvciBuYXJyb3dlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LW9ubHkoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuXG4gIEBpZiAkbWluICE9IG51bGwgYW5kICRtYXggIT0gbnVsbCB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1heCA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWluID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkbmFtZSwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cbiJdfQ== */\"","import {Component, OnInit} from '@angular/core';\r\nimport {FormBuilder, FormGroup, Validators} from '@angular/forms';\r\nimport {Router} from '@angular/router';\r\n\r\nimport {UserService} from '@/services/user/user.service';\r\nimport {AlertService} from '@/services/alert/alert.service';\r\n\r\n@Component({\r\n selector: 'password-reset',\r\n templateUrl: './password-reset.component.html',\r\n styleUrls: ['./password-reset.component.scss']\r\n})\r\n\r\nexport class PasswordResetComponent implements OnInit {\r\n\tresetForm: FormGroup;\r\n\tsubmitted = false;\r\n\tuserEmail:string = ''\r\n\r\n\tconstructor(\r\n\t\tprivate formBuilder: FormBuilder,\r\n\t\tprivate router: Router,\r\n\t\tprivate userService: UserService,\r\n\t\tprivate alertService: AlertService\r\n\t) {\r\n\t}\r\n\r\n ngOnInit() {\r\n\t\tconst urlParams = new URLSearchParams(window.location.search)\r\n\t\tthis.userEmail = urlParams.get('email') && urlParams.get('email')\r\n\t\tthis.resetForm = this.formBuilder.group({\r\n\t\t\tEmail: ['', Validators.email]\r\n\t\t});\r\n\t}\r\n\r\n\tget form() {\r\n\t\treturn this.resetForm.controls;\r\n\t}\r\n\r\n\tonSubmit() {\r\n\t\tthis.submitted = true;\r\n\r\n\t\tif (this.resetForm.invalid) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.userService.resetPassword(this.resetForm.get('Email').value)\r\n\t\t\t.subscribe(\r\n\t\t\t\t(data: any) => {\r\n\t\t\t\t\tthis.alertService.success(`Reset Password Link sent to your Email!`, true);\r\n\t\t\t\t\tthis.router.navigate(['login']);\r\n\t\t\t\t},\r\n\t\t\t\terror => {\r\n\t\t\t\t\tthis.alertService.error(error);\r\n\r\n\t\t\t\t\tdocument.body.scrollIntoView({behavior: \"smooth\"});\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t}\r\n\r\n}\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n\tproduction: true,\r\n\t// apiUrl: 'https://localhost:44344/api'\r\n\tapiUrl: 'https://www.sterlingroofingfl.com/api'\r\n\t// apiUrl: 'https://sterling.oyovadev.com/api'\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n"],"sourceRoot":""}