fabrikantencore 2.23.2 → 2.24.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,4 +20,5 @@ export * from './src/app/modules/fabrikantencore/services/translate.service';
20
20
  export * from './src/app/modules/fabrikantencore/services/webgl.service';
21
21
  export * from './src/app/modules/fabrikantencore/services/svg.service';
22
22
  export * from './src/app/modules/fabrikantencore/services/template-component.service';
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwREFBMEQsQ0FBQTtBQUN4RSxjQUFjLHlEQUF5RCxDQUFBO0FBRXZFLGNBQWMscUZBQXFGLENBQUE7QUFDbkcsY0FBYyxpR0FBaUcsQ0FBQTtBQUMvRyxjQUFjLG1HQUFtRyxDQUFBO0FBRWpILGNBQWMsc0dBQXNHLENBQUE7QUFDcEgsY0FBYyw0RkFBNEYsQ0FBQTtBQUMxRyxjQUFjLHNGQUFzRixDQUFBO0FBQ3BHLGNBQWMsMEZBQTBGLENBQUE7QUFDeEcsY0FBYyxzRkFBc0YsQ0FBQTtBQUNwRyxjQUFjLDBHQUEwRyxDQUFBO0FBQ3hILGNBQWMsOEVBQThFLENBQUE7QUFDNUYsY0FBYyxvR0FBb0csQ0FBQTtBQUNsSCxjQUFjLDBGQUEwRixDQUFBO0FBQ3hHLGNBQWMsMEVBQTBFLENBQUE7QUFFeEYsY0FBYywyREFBMkQsQ0FBQTtBQUN6RSxjQUFjLGdFQUFnRSxDQUFBO0FBQzlFLGNBQWMsMkRBQTJELENBQUE7QUFDekUsY0FBYyw4REFBOEQsQ0FBQTtBQUM1RSxjQUFjLDBEQUEwRCxDQUFBO0FBQ3hFLGNBQWMsd0RBQXdELENBQUE7QUFDdEUsY0FBYyx1RUFBdUUsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9mYWJyaWthbnRlbmNvcmUubW9kdWxlJ1xyXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvc3dhZ2dlci9Td2FnZ2VyQ2xpZW50J1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2NvbXBvbmVudHMvaW5wdXRzL2ZhYi1maWx0ZXIvZmFiLWZpbHRlci5jb21wb25lbnQnXHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9jb21wb25lbnRzL2lucHV0cy9mYWItZmlsdGVyLWxhYmVsL2ZhYi1maWx0ZXItbGFiZWwuY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9pbnB1dHMvZmFiLWZpbHRlci1jdXN0b20vZmFiLWZpbHRlci1jdXN0b20uY29tcG9uZW50J1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2NvbXBvbmVudHMvZmFiLWNhdGVnb3J5LW5hdmlnYXRvci9mYWItY2F0ZWdvcnktbmF2aWdhdG9yLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2NvbXBvbmVudHMvZmFiLWZpbHRlcnMtaW5wdXQvZmFiLWZpbHRlcnMtaW5wdXQuY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItYWN0aW9ubWVudS9mYWItYWN0aW9ubWVudS5jb21wb25lbnQnXHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9jb21wb25lbnRzL2ZhYi13ZWJnbC12aWV3ZXIvZmFiLXdlYmdsLXZpZXdlci5jb21wb25lbnQnXHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9jb21wb25lbnRzL2ZhYi1zdmctdmlld2VyL2ZhYi1zdmctdmlld2VyLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2NvbXBvbmVudHMvZmFiLXByb2R1Y3QvZmFiLXByb2R1Y3QtYmVzdGVrL2ZhYi1wcm9kdWN0LWJlc3Rlay5jb21wb25lbnQnXHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9jb21wb25lbnRzL2ZhYi1sb2FkZXIvZmFiLWxvYWRlci5jb21wb25lbnQnXHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9jb21wb25lbnRzL2ZhYi1zZWxlY3QtYmNicHJvZHVjdC9mYWItc2VsZWN0LWJjYnByb2R1Y3QuY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItZG93bmxvYWQtemlwL2ZhYi1kb3dubG9hZC16aXAuY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItZm9ybS9mYWItZm9ybS5jb21wb25lbnQnXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvc2VydmljZXMvbW9iaWxlLnNlcnZpY2UnXHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9zZXJ2aWNlcy9mYWJyaWthbnRlbi5zZXJ2aWNlJ1xyXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvc2VydmljZXMvYmVzdGVrLnNlcnZpY2UnXHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSdcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL3NlcnZpY2VzL3dlYmdsLnNlcnZpY2UnXHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9zZXJ2aWNlcy9zdmcuc2VydmljZSdcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL3NlcnZpY2VzL3RlbXBsYXRlLWNvbXBvbmVudC5zZXJ2aWNlJ1xyXG4iXX0=
23
+ export * from './src/app/modules/fabrikantencore/helpers/auth.guard';
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwREFBMEQsQ0FBQTtBQUN4RSxjQUFjLHlEQUF5RCxDQUFBO0FBRXZFLGNBQWMscUZBQXFGLENBQUE7QUFDbkcsY0FBYyxpR0FBaUcsQ0FBQTtBQUMvRyxjQUFjLG1HQUFtRyxDQUFBO0FBRWpILGNBQWMsc0dBQXNHLENBQUE7QUFDcEgsY0FBYyw0RkFBNEYsQ0FBQTtBQUMxRyxjQUFjLHNGQUFzRixDQUFBO0FBQ3BHLGNBQWMsMEZBQTBGLENBQUE7QUFDeEcsY0FBYyxzRkFBc0YsQ0FBQTtBQUNwRyxjQUFjLDBHQUEwRyxDQUFBO0FBQ3hILGNBQWMsOEVBQThFLENBQUE7QUFDNUYsY0FBYyxvR0FBb0csQ0FBQTtBQUNsSCxjQUFjLDBGQUEwRixDQUFBO0FBQ3hHLGNBQWMsMEVBQTBFLENBQUE7QUFFeEYsY0FBYywyREFBMkQsQ0FBQTtBQUN6RSxjQUFjLGdFQUFnRSxDQUFBO0FBQzlFLGNBQWMsMkRBQTJELENBQUE7QUFDekUsY0FBYyw4REFBOEQsQ0FBQTtBQUM1RSxjQUFjLDBEQUEwRCxDQUFBO0FBQ3hFLGNBQWMsd0RBQXdELENBQUE7QUFDdEUsY0FBYyx1RUFBdUUsQ0FBQTtBQUVyRixjQUFjLHNEQUFzRCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2ZhYnJpa2FudGVuY29yZS5tb2R1bGUnXHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9zd2FnZ2VyL1N3YWdnZXJDbGllbnQnXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9pbnB1dHMvZmFiLWZpbHRlci9mYWItZmlsdGVyLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2NvbXBvbmVudHMvaW5wdXRzL2ZhYi1maWx0ZXItbGFiZWwvZmFiLWZpbHRlci1sYWJlbC5jb21wb25lbnQnXHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9jb21wb25lbnRzL2lucHV0cy9mYWItZmlsdGVyLWN1c3RvbS9mYWItZmlsdGVyLWN1c3RvbS5jb21wb25lbnQnXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItY2F0ZWdvcnktbmF2aWdhdG9yL2ZhYi1jYXRlZ29yeS1uYXZpZ2F0b3IuY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItZmlsdGVycy1pbnB1dC9mYWItZmlsdGVycy1pbnB1dC5jb21wb25lbnQnXHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9jb21wb25lbnRzL2ZhYi1hY3Rpb25tZW51L2ZhYi1hY3Rpb25tZW51LmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2NvbXBvbmVudHMvZmFiLXdlYmdsLXZpZXdlci9mYWItd2ViZ2wtdmlld2VyLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2NvbXBvbmVudHMvZmFiLXN2Zy12aWV3ZXIvZmFiLXN2Zy12aWV3ZXIuY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItcHJvZHVjdC9mYWItcHJvZHVjdC1iZXN0ZWsvZmFiLXByb2R1Y3QtYmVzdGVrLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2NvbXBvbmVudHMvZmFiLWxvYWRlci9mYWItbG9hZGVyLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2NvbXBvbmVudHMvZmFiLXNlbGVjdC1iY2Jwcm9kdWN0L2ZhYi1zZWxlY3QtYmNicHJvZHVjdC5jb21wb25lbnQnXHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9jb21wb25lbnRzL2ZhYi1kb3dubG9hZC16aXAvZmFiLWRvd25sb2FkLXppcC5jb21wb25lbnQnXHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9jb21wb25lbnRzL2ZhYi1mb3JtL2ZhYi1mb3JtLmNvbXBvbmVudCdcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9zZXJ2aWNlcy9tb2JpbGUuc2VydmljZSdcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL3NlcnZpY2VzL2ZhYnJpa2FudGVuLnNlcnZpY2UnXHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9zZXJ2aWNlcy9iZXN0ZWsuc2VydmljZSdcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlJ1xyXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvc2VydmljZXMvd2ViZ2wuc2VydmljZSdcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL3NlcnZpY2VzL3N2Zy5zZXJ2aWNlJ1xyXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvc2VydmljZXMvdGVtcGxhdGUtY29tcG9uZW50LnNlcnZpY2UnXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvaGVscGVycy9hdXRoLmd1YXJkJ1xyXG4iXX0=
@@ -0,0 +1,141 @@
1
+ import { Component, ViewChild } from '@angular/core';
2
+ import { DocumentDeleteRequest, DocumentChangeActiveRequest, DocumentTemplateItemAmount, LoginResponseModel } from '../../../swagger/SwaggerClient';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../../swagger/SwaggerClient";
5
+ import * as i2 from "../../../services/authentication.service";
6
+ import * as i3 from "@angular/common";
7
+ import * as i4 from "@angular/material/legacy-form-field";
8
+ import * as i5 from "@angular/forms";
9
+ import * as i6 from "@angular/material/legacy-button";
10
+ import * as i7 from "@angular/material/legacy-card";
11
+ import * as i8 from "@angular/material/legacy-radio";
12
+ import * as i9 from "@angular/material/legacy-checkbox";
13
+ import * as i10 from "@angular/material/legacy-select";
14
+ import * as i11 from "@angular/material/legacy-core";
15
+ import * as i12 from "../beheer-nav/beheer-nav.component";
16
+ import * as i13 from "../../../components/fab-loader/fab-loader.component";
17
+ class BeheerDocumentsComponent {
18
+ documentApiClient;
19
+ authenticationService;
20
+ Loading = true;
21
+ DocumentCategoriesViewModel = null;
22
+ SelectedDocumentCategoryViewModel = null;
23
+ last_item = null;
24
+ last_cat = null;
25
+ fileInput;
26
+ get DocumentTemplateItemAmount() {
27
+ return DocumentTemplateItemAmount;
28
+ }
29
+ constructor(documentApiClient, authenticationService) {
30
+ this.documentApiClient = documentApiClient;
31
+ this.authenticationService = authenticationService;
32
+ }
33
+ ngOnInit() {
34
+ this.LoadDocuments();
35
+ }
36
+ Delete(document) {
37
+ this.Loading = true;
38
+ var request = new DocumentDeleteRequest();
39
+ request.loginResponseModel = new LoginResponseModel(this.authenticationService.currentUserValue);
40
+ request.documentId = document.id;
41
+ this.documentApiClient.delete(request).subscribe(() => {
42
+ this.LoadDocuments();
43
+ }, (error) => {
44
+ alert('An unexpected error occured');
45
+ this.Loading = false;
46
+ });
47
+ }
48
+ ChangeActive(document) {
49
+ this.Loading = true;
50
+ var request = new DocumentChangeActiveRequest();
51
+ request.loginResponseModel = new LoginResponseModel(this.authenticationService.currentUserValue);
52
+ request.active = !document.active;
53
+ request.documentId = document.id;
54
+ this.documentApiClient.changeActive(request).subscribe(() => {
55
+ this.LoadDocuments();
56
+ }, (error) => {
57
+ alert('An unexpected error occured');
58
+ this.Loading = false;
59
+ });
60
+ }
61
+ Upload(category, item) {
62
+ this.last_cat = category;
63
+ this.last_item = item;
64
+ let inputElement = this.fileInput.nativeElement;
65
+ inputElement.setAttribute("accept", item.allowedFiles + "");
66
+ inputElement.click();
67
+ }
68
+ Handle(event) {
69
+ const file = event.target.files[0];
70
+ if (file && this.last_cat != null && this.last_item != null) {
71
+ this.Loading = true;
72
+ //loginResponseModel_UserId: number | undefined,
73
+ //loginResponseModel_UserName: string | null | undefined,
74
+ //loginResponseModel_UserRole: UserRole | undefined,
75
+ //loginResponseModel_SessionGUID: string | undefined,
76
+ //loginResponseModel_LoginSuccess: boolean | undefined,
77
+ //loginResponseModel_AuthData: string | null | undefined,
78
+ //data: FileParameter | null | undefined,
79
+ //fileName: string | null | undefined
80
+ var tLoginResponseModel = new LoginResponseModel(this.authenticationService.currentUserValue);
81
+ //var request = {
82
+ // data: file,
83
+ // fileName: file.name
84
+ //};
85
+ var fileParameter = { data: file, fileName: file.name };
86
+ this.documentApiClient.uploadDocument(tLoginResponseModel.userId, tLoginResponseModel.userName, tLoginResponseModel.userRole, tLoginResponseModel.sessionGUID, tLoginResponseModel.loginSuccess, tLoginResponseModel.authData, fileParameter, file.name, this.last_cat.id, this.last_item.id).subscribe((model) => {
87
+ this.LoadDocuments();
88
+ }, (error) => {
89
+ if (error.status == 400)
90
+ alert(error.json());
91
+ else {
92
+ alert('An unexpected error occured');
93
+ alert(error);
94
+ }
95
+ this.Loading = false;
96
+ });
97
+ }
98
+ }
99
+ GetCategories() {
100
+ if (this.DocumentCategoriesViewModel?.categories != null) {
101
+ return this.DocumentCategoriesViewModel.categories;
102
+ }
103
+ return new Array();
104
+ }
105
+ LoadDocuments() {
106
+ this.Loading = true;
107
+ this.documentApiClient.getDocumentCategoriesViewModel(new LoginResponseModel(this.authenticationService.currentUserValue)).subscribe((model) => {
108
+ this.DocumentCategoriesViewModel = model;
109
+ if (model.categories != undefined && model.categories.length > 0) {
110
+ if (this.SelectedDocumentCategoryViewModel != null) {
111
+ for (var i = 0; i < model.categories.length; i++) {
112
+ if (this.SelectedDocumentCategoryViewModel.id == model.categories[i].id) {
113
+ this.SelectedDocumentCategoryViewModel = model.categories[i];
114
+ }
115
+ }
116
+ }
117
+ else {
118
+ this.SelectedDocumentCategoryViewModel = model.categories[0];
119
+ }
120
+ }
121
+ else {
122
+ this.SelectedDocumentCategoryViewModel = null;
123
+ }
124
+ this.Loading = false;
125
+ }, (error) => {
126
+ alert('An unexpected error occured');
127
+ this.Loading = false;
128
+ });
129
+ }
130
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BeheerDocumentsComponent, deps: [{ token: i1.DocumentApiClient }, { token: i2.AuthenticationService }], target: i0.ɵɵFactoryTarget.Component });
131
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BeheerDocumentsComponent, selector: "app-beheer-documents", viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<app-beheer-nav></app-beheer-nav>\r\n\r\n<input #fileInput type=\"file\" style=\"display:none\" (change)=\"Handle($event)\">\r\n\r\n<div class=\"displayflex main\">\r\n <div *ngIf=\"Loading\">\r\n <app-fab-loader></app-fab-loader>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!Loading\">\r\n <mat-card class=\"card\">\r\n <mat-card-content>\r\n <div class=\"displayflex\">\r\n <mat-form-field class=\"flexauto\">\r\n <mat-label>Category</mat-label>\r\n <mat-select [(ngModel)]=\"SelectedDocumentCategoryViewModel\">\r\n <ng-container *ngFor=\"let category of GetCategories()\">\r\n <mat-option [value]=\"category\">{{category.name}}</mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n\r\n <ng-container *ngIf=\"SelectedDocumentCategoryViewModel != null\">\r\n <mat-card class=\"card\" *ngFor=\"let documentTemplateItem of SelectedDocumentCategoryViewModel.documentTemplate.items\">\r\n <mat-card-content>\r\n <div>\r\n \r\n <div class=\"displayflex border-bottom\">\r\n <div class=\"flexauto lineheight36\">\r\n {{ documentTemplateItem.name }}\r\n </div>\r\n <div>\r\n <div *ngIf=\"SelectedDocumentCategoryViewModel != null && SelectedDocumentCategoryViewModel.add\">\r\n <button mat-raised-button (click)=\"Upload(SelectedDocumentCategoryViewModel, documentTemplateItem)\" class=\"save-button\">\r\n Upload\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <div *ngIf=\"documentTemplateItem.documents.length == 0\">\r\n No files found in this category...\r\n </div>\r\n <div class=\"displayflex file\" *ngFor=\"let document of documentTemplateItem.documents\">\r\n <div class=\"lineheight36\">\r\n <ng-container *ngIf=\"documentTemplateItem.documentTemplateItemAmount == DocumentTemplateItemAmount.Many\">\r\n <mat-checkbox [(ngModel)]=\"document.active\" (click)=\"ChangeActive(document)\"></mat-checkbox>\r\n </ng-container>\r\n <ng-container *ngIf=\"documentTemplateItem.documentTemplateItemAmount == DocumentTemplateItemAmount.One\">\r\n <mat-radio-group [(ngModel)]=\"document.active\">\r\n <mat-radio-button [value]=\"true\" (click)=\"ChangeActive(document)\"></mat-radio-button>\r\n </mat-radio-group>\r\n </ng-container>\r\n </div>\r\n <div class=\"flexauto lineheight36 name-box\">\r\n <a href=\"{{ document.relativeURL }}\" target=\"_blank\">\r\n {{ document.name }}\r\n </a>\r\n </div>\r\n <div>\r\n <ng-container *ngIf=\"document.active\">\r\n <button mat-raised-button disabled class=\"save-button\">\r\n Delete\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"!document.active\">\r\n <button mat-raised-button (click)=\"Delete(document)\" class=\"save-button\">\r\n Delete\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n </ng-container>\r\n\r\n </ng-container>\r\n</div>\r\n", styles: [".card{margin:auto auto 10px;min-width:30vW}.file{padding:10px}.lineheight36{line-height:36px}.name-box{padding-left:5px}.main{flex-direction:column}.displayflex{display:flex}.cell{border-bottom:1px solid #000}.headercell-username{min-width:300px}.headercell-role{min-width:200px}.flexauto{flex:auto}.save-button{margin-left:5px}.border-bottom{padding-bottom:10px;border-bottom:1px solid #000}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLegacyLabel, selector: "mat-label" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatLegacyCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i7.MatLegacyCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "directive", type: i8.MatLegacyRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i8.MatLegacyRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "component", type: i9.MatLegacyCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i10.MatLegacySelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i11.MatLegacyOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i12.BeheerNavComponent, selector: "app-beheer-nav" }, { kind: "component", type: i13.FabLoaderComponent, selector: "app-fab-loader" }] });
132
+ }
133
+ export { BeheerDocumentsComponent };
134
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BeheerDocumentsComponent, decorators: [{
135
+ type: Component,
136
+ args: [{ selector: 'app-beheer-documents', template: "<app-beheer-nav></app-beheer-nav>\r\n\r\n<input #fileInput type=\"file\" style=\"display:none\" (change)=\"Handle($event)\">\r\n\r\n<div class=\"displayflex main\">\r\n <div *ngIf=\"Loading\">\r\n <app-fab-loader></app-fab-loader>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!Loading\">\r\n <mat-card class=\"card\">\r\n <mat-card-content>\r\n <div class=\"displayflex\">\r\n <mat-form-field class=\"flexauto\">\r\n <mat-label>Category</mat-label>\r\n <mat-select [(ngModel)]=\"SelectedDocumentCategoryViewModel\">\r\n <ng-container *ngFor=\"let category of GetCategories()\">\r\n <mat-option [value]=\"category\">{{category.name}}</mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n\r\n <ng-container *ngIf=\"SelectedDocumentCategoryViewModel != null\">\r\n <mat-card class=\"card\" *ngFor=\"let documentTemplateItem of SelectedDocumentCategoryViewModel.documentTemplate.items\">\r\n <mat-card-content>\r\n <div>\r\n \r\n <div class=\"displayflex border-bottom\">\r\n <div class=\"flexauto lineheight36\">\r\n {{ documentTemplateItem.name }}\r\n </div>\r\n <div>\r\n <div *ngIf=\"SelectedDocumentCategoryViewModel != null && SelectedDocumentCategoryViewModel.add\">\r\n <button mat-raised-button (click)=\"Upload(SelectedDocumentCategoryViewModel, documentTemplateItem)\" class=\"save-button\">\r\n Upload\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <div *ngIf=\"documentTemplateItem.documents.length == 0\">\r\n No files found in this category...\r\n </div>\r\n <div class=\"displayflex file\" *ngFor=\"let document of documentTemplateItem.documents\">\r\n <div class=\"lineheight36\">\r\n <ng-container *ngIf=\"documentTemplateItem.documentTemplateItemAmount == DocumentTemplateItemAmount.Many\">\r\n <mat-checkbox [(ngModel)]=\"document.active\" (click)=\"ChangeActive(document)\"></mat-checkbox>\r\n </ng-container>\r\n <ng-container *ngIf=\"documentTemplateItem.documentTemplateItemAmount == DocumentTemplateItemAmount.One\">\r\n <mat-radio-group [(ngModel)]=\"document.active\">\r\n <mat-radio-button [value]=\"true\" (click)=\"ChangeActive(document)\"></mat-radio-button>\r\n </mat-radio-group>\r\n </ng-container>\r\n </div>\r\n <div class=\"flexauto lineheight36 name-box\">\r\n <a href=\"{{ document.relativeURL }}\" target=\"_blank\">\r\n {{ document.name }}\r\n </a>\r\n </div>\r\n <div>\r\n <ng-container *ngIf=\"document.active\">\r\n <button mat-raised-button disabled class=\"save-button\">\r\n Delete\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"!document.active\">\r\n <button mat-raised-button (click)=\"Delete(document)\" class=\"save-button\">\r\n Delete\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n </ng-container>\r\n\r\n </ng-container>\r\n</div>\r\n", styles: [".card{margin:auto auto 10px;min-width:30vW}.file{padding:10px}.lineheight36{line-height:36px}.name-box{padding-left:5px}.main{flex-direction:column}.displayflex{display:flex}.cell{border-bottom:1px solid #000}.headercell-username{min-width:300px}.headercell-role{min-width:200px}.flexauto{flex:auto}.save-button{margin-left:5px}.border-bottom{padding-bottom:10px;border-bottom:1px solid #000}\n"] }]
137
+ }], ctorParameters: function () { return [{ type: i1.DocumentApiClient }, { type: i2.AuthenticationService }]; }, propDecorators: { fileInput: [{
138
+ type: ViewChild,
139
+ args: ['fileInput']
140
+ }] } });
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoZWVyLWRvY3VtZW50cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci1kb2N1bWVudHMvYmVoZWVyLWRvY3VtZW50cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci1kb2N1bWVudHMvYmVoZWVyLWRvY3VtZW50cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFzQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLDJCQUEyQixFQUFFLDBCQUEwQixFQUF1SixrQkFBa0IsRUFBaUIsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBRXhULE1BS2Esd0JBQXdCO0lBZWY7SUFDVjtJQWZILE9BQU8sR0FBWSxJQUFJLENBQUM7SUFFeEIsMkJBQTJCLEdBQXVDLElBQUksQ0FBQztJQUN2RSxpQ0FBaUMsR0FBcUMsSUFBSSxDQUFDO0lBRTFFLFNBQVMsR0FBeUMsSUFBSSxDQUFDO0lBQ3ZELFFBQVEsR0FBcUMsSUFBSSxDQUFDO0lBRWxDLFNBQVMsQ0FBYTtJQUU5QyxJQUFXLDBCQUEwQjtRQUNuQyxPQUFPLDBCQUEwQixDQUFDO0lBQ3BDLENBQUM7SUFFRCxZQUFvQixpQkFBb0MsRUFDOUMscUJBQTRDO1FBRGxDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDOUMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtJQUV0RCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU0s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cG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aGVudGljYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IERvY3VtZW50RGVsZXRlUmVxdWVzdCwgRG9jdW1lbnRDaGFuZ2VBY3RpdmVSZXF1ZXN0LCBEb2N1bWVudFRlbXBsYXRlSXRlbUFtb3VudCwgRG9jdW1lbnRVcGxvYWRSZXNwb25zZSwgRG9jdW1lbnRUZW1wbGF0ZUl0ZW1WaWV3TW9kZWwsIERvY3VtZW50QXBpQ2xpZW50LCBEb2N1bWVudENhdGVnb3JpZXNWaWV3TW9kZWwsIERvY3VtZW50Q2F0ZWdvcnlWaWV3TW9kZWwsIERvY3VtZW50Vmlld01vZGVsLCBMb2dpblJlc3BvbnNlTW9kZWwsIEZpbGVQYXJhbWV0ZXIgfSBmcm9tICcuLi8uLi8uLi9zd2FnZ2VyL1N3YWdnZXJDbGllbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtYmVoZWVyLWRvY3VtZW50cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9iZWhlZXItZG9jdW1lbnRzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYmVoZWVyLWRvY3VtZW50cy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEJlaGVlckRvY3VtZW50c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyBMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcblxuICBwdWJsaWMgRG9jdW1lbnRDYXRlZ29yaWVzVmlld01vZGVsOiBEb2N1bWVudENhdGVnb3JpZXNWaWV3TW9kZWwgfCBudWxsID0gbnVsbDtcbiAgcHVibGljIFNlbGVjdGVkRG9jdW1lbnRDYXRlZ29yeVZpZXdNb2RlbDogRG9jdW1lbnRDYXRlZ29yeVZpZXdNb2RlbCB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgbGFzdF9pdGVtOiBEb2N1bWVudFRlbXBsYXRlSXRlbVZpZXdNb2RlbCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGxhc3RfY2F0OiBEb2N1bWVudENhdGVnb3J5Vmlld01vZGVsIHwgbnVsbCA9IG51bGw7XG5cbiAgQFZpZXdDaGlsZCgnZmlsZUlucHV0JykgZmlsZUlucHV0OiBFbGVtZW50UmVmO1xuXG4gIHB1YmxpYyBnZXQgRG9jdW1lbnRUZW1wbGF0ZUl0ZW1BbW91bnQoKSB7XHJcbiAgICByZXR1cm4gRG9jdW1lbnRUZW1wbGF0ZUl0ZW1BbW91bnQ7XHJcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZG9jdW1lbnRBcGlDbGllbnQ6IERvY3VtZW50QXBpQ2xpZW50LFxuICAgIHByaXZhdGUgYXV0aGVudGljYXRpb25TZXJ2aWNlOiBBdXRoZW50aWNhdGlvblNlcnZpY2UpIHtcblxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5Mb2FkRG9jdW1lbnRzKCk7XG4gIH1cblxuICBwdWJsaWMgRGVsZXRlKGRvY3VtZW50OiBEb2N1bWVudFZpZXdNb2RlbCk6IHZvaWQge1xyXG4gICAgdGhpcy5Mb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBEb2N1bWVudERlbGV0ZVJlcXVlc3QoKTtcclxuXHJcbiAgICByZXF1ZXN0LmxvZ2luUmVzcG9uc2VNb2RlbCA9IG5ldyBMb2dpblJlc3BvbnNlTW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSk7XHJcbiAgICByZXF1ZXN0LmRvY3VtZW50SWQgPSBkb2N1bWVudC5pZDtcclxuXG4gICAgdGhpcy5kb2N1bWVudEFwaUNsaWVudC5kZWxldGUocmVxdWVzdCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuTG9hZERvY3VtZW50cygpO1xuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcbiAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcbiAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xuICAgIH0pO1xyXG4gIH1cblxuICBwdWJsaWMgQ2hhbmdlQWN0aXZlKGRvY3VtZW50OiBEb2N1bWVudFZpZXdNb2RlbCk6IHZvaWQge1xyXG4gICAgdGhpcy5Mb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBEb2N1bWVudENoYW5nZUFjdGl2ZVJlcXVlc3QoKTtcclxuXHJcbiAgICByZXF1ZXN0LmxvZ2luUmVzcG9uc2VNb2RlbCA9IG5ldyBMb2dpblJlc3BvbnNlTW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSk7XHJcbiAgICByZXF1ZXN0LmFjdGl2ZSA9ICFkb2N1bWVudC5hY3RpdmU7XHJcbiAgICByZXF1ZXN0LmRvY3VtZW50SWQgPSBkb2N1bWVudC5pZDtcclxuXG4gICAgdGhpcy5kb2N1bWVudEFwaUNsaWVudC5jaGFuZ2VBY3RpdmUocmVxdWVzdCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuTG9hZERvY3VtZW50cygpO1xuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcbiAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcbiAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xuICAgIH0pO1xyXG4gIH1cblxuICBwdWJsaWMgVXBsb2FkKGNhdGVnb3J5OiBEb2N1bWVudENhdGVnb3J5Vmlld01vZGVsLCBpdGVtOiBEb2N1bWVudFRlbXBsYXRlSXRlbVZpZXdNb2RlbCk6IHZvaWQge1xyXG4gICAgdGhpcy5sYXN0X2NhdCA9IGNhdGVnb3J5O1xyXG4gICAgdGhpcy5sYXN0X2l0ZW0gPSBpdGVtO1xyXG5cclxuICAgIGxldCBpbnB1dEVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICBpbnB1dEVsZW1lbnQuc2V0QXR0cmlidXRlKFwiYWNjZXB0XCIsIGl0ZW0uYWxsb3dlZEZpbGVzICsgXCJcIik7XHJcblxyXG4gICAgaW5wdXRFbGVtZW50LmNsaWNrKCk7XHJcbiAgfVxuXG4gIHB1YmxpYyBIYW5kbGUoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgZmlsZTogRmlsZSA9IGV2ZW50LnRhcmdldC5maWxlc1swXTtcclxuXHJcbiAgICBpZiAoZmlsZSAmJiB0aGlzLmxhc3RfY2F0ICE9IG51bGwgJiYgdGhpcy5sYXN0X2l0ZW0gIT0gbnVsbCkge1xyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgIC8vbG9naW5SZXNwb25zZU1vZGVsX1VzZXJJZDogbnVtYmVyIHwgdW5kZWZpbmVkLFxyXG4gICAgICAvL2xvZ2luUmVzcG9uc2VNb2RlbF9Vc2VyTmFtZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCxcclxuICAgICAgLy9sb2dpblJlc3BvbnNlTW9kZWxfVXNlclJvbGU6IFVzZXJSb2xlIHwgdW5kZWZpbmVkLFxyXG4gICAgICAvL2xvZ2luUmVzcG9uc2VNb2RlbF9TZXNzaW9uR1VJRDogc3RyaW5nIHwgdW5kZWZpbmVkLFxyXG4gICAgICAvL2xvZ2luUmVzcG9uc2VNb2RlbF9Mb2dpblN1Y2Nlc3M6IGJvb2xlYW4gfCB1bmRlZmluZWQsXHJcbiAgICAgIC8vbG9naW5SZXNwb25zZU1vZGVsX0F1dGhEYXRhOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLFxyXG4gICAgICAvL2RhdGE6IEZpbGVQYXJhbWV0ZXIgfCBudWxsIHwgdW5kZWZpbmVkLFxyXG4gICAgICAvL2ZpbGVOYW1lOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXHJcblxyXG4gICAgICB2YXIgdExvZ2luUmVzcG9uc2VNb2RlbCA9IG5ldyBMb2dpblJlc3BvbnNlTW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSk7XHJcblxyXG4gICAgICAvL3ZhciByZXF1ZXN0ID0ge1xyXG4gICAgICAvLyAgZGF0YTogZmlsZSxcclxuICAgICAgLy8gIGZpbGVOYW1lOiBmaWxlLm5hbWVcclxuICAgICAgLy99O1xyXG5cclxuICAgICAgdmFyIGZpbGVQYXJhbWV0ZXI6IEZpbGVQYXJhbWV0ZXIgPSB7IGRhdGE6IGZpbGUsIGZpbGVOYW1lOiBmaWxlLm5hbWUgfTtcclxuXHJcbiAgICAgIHRoaXMuZG9jdW1lbnRBcGlDbGllbnQudXBsb2FkRG9jdW1lbnQoXHJcbiAgICAgICAgdExvZ2luUmVzcG9uc2VNb2RlbC51c2VySWQsXHJcbiAgICAgICAgdExvZ2luUmVzcG9uc2VNb2RlbC51c2VyTmFtZSxcclxuICAgICAgICB0TG9naW5SZXNwb25zZU1vZGVsLnVzZXJSb2xlLFxyXG4gICAgICAgIHRMb2dpblJlc3BvbnNlTW9kZWwuc2Vzc2lvbkdVSUQsXHJcbiAgICAgICAgdExvZ2luUmVzcG9uc2VNb2RlbC5sb2dpblN1Y2Nlc3MsXHJcbiAgICAgICAgdExvZ2luUmVzcG9uc2VNb2RlbC5hdXRoRGF0YSxcclxuICAgICAgICBmaWxlUGFyYW1ldGVyLFxyXG4gICAgICAgIGZpbGUubmFtZSxcclxuICAgICAgICB0aGlzLmxhc3RfY2F0LmlkLFxyXG4gICAgICAgIHRoaXMubGFzdF9pdGVtLmlkXHJcbiAgICAgICkuc3Vic2NyaWJlKChtb2RlbDogRG9jdW1lbnRVcGxvYWRSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuTG9hZERvY3VtZW50cygpO1xyXG4gICAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgICBhbGVydChlcnJvci5qc29uKCkpO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgICAgYWxlcnQoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cblxuICBwdWJsaWMgR2V0Q2F0ZWdvcmllcygpOiBBcnJheTxEb2N1bWVudENhdGVnb3J5Vmlld01vZGVsPiB7XG4gICAgaWYgKHRoaXMuRG9jdW1lbnRDYXRlZ29yaWVzVmlld01vZGVsPy5jYXRlZ29yaWVzICE9IG51bGwpIHtcbiAgICAgIHJldHVybiB0aGlzLkRvY3VtZW50Q2F0ZWdvcmllc1ZpZXdNb2RlbC5jYXRlZ29yaWVzO1xyXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBBcnJheTxEb2N1bWVudENhdGVnb3J5Vmlld01vZGVsPigpO1xyXG4gIH1cblxuICBwcml2YXRlIExvYWREb2N1bWVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5Mb2FkaW5nID0gdHJ1ZTtcblxuICAgIHRoaXMuZG9jdW1lbnRBcGlDbGllbnQuZ2V0RG9jdW1lbnRDYXRlZ29yaWVzVmlld01vZGVsKG5ldyBMb2dpblJlc3BvbnNlTW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSkpLnN1YnNjcmliZSgobW9kZWw6IERvY3VtZW50Q2F0ZWdvcmllc1ZpZXdNb2RlbCkgPT4ge1xuICAgICAgdGhpcy5Eb2N1bWVudENhdGVnb3JpZXNWaWV3TW9kZWwgPSBtb2RlbDtcbiAgICAgIGlmIChtb2RlbC5jYXRlZ29yaWVzICE9IHVuZGVmaW5lZCAmJiBtb2RlbC5jYXRlZ29yaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKHRoaXMuU2VsZWN0ZWREb2N1bWVudENhdGVnb3J5Vmlld01vZGVsICE9IG51bGwpIHtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1vZGVsLmNhdGVnb3JpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuU2VsZWN0ZWREb2N1bWVudENhdGVnb3J5Vmlld01vZGVsLmlkID09IG1vZGVsLmNhdGVnb3JpZXNbaV0uaWQpIHtcclxuICAgICAgICAgICAgICB0aGlzLlNlbGVjdGVkRG9jdW1lbnRDYXRlZ29yeVZpZXdNb2RlbCA9IG1vZGVsLmNhdGVnb3JpZXNbaV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHRoaXMuU2VsZWN0ZWREb2N1bWVudENhdGVnb3J5Vmlld01vZGVsID0gbW9kZWwuY2F0ZWdvcmllc1swXTtcclxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5TZWxlY3RlZERvY3VtZW50Q2F0ZWdvcnlWaWV3TW9kZWwgPSBudWxsO1xyXG4gICAgICB9XG5cbiAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcbiAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcbiAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG59XG4iLCI8YXBwLWJlaGVlci1uYXY+PC9hcHAtYmVoZWVyLW5hdj5cclxuXHJcbjxpbnB1dCAjZmlsZUlucHV0IHR5cGU9XCJmaWxlXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmVcIiAoY2hhbmdlKT1cIkhhbmRsZSgkZXZlbnQpXCI+XHJcblxyXG48ZGl2IGNsYXNzPVwiZGlzcGxheWZsZXggbWFpblwiPlxyXG4gIDxkaXYgKm5nSWY9XCJMb2FkaW5nXCI+XHJcbiAgICA8YXBwLWZhYi1sb2FkZXI+PC9hcHAtZmFiLWxvYWRlcj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFMb2FkaW5nXCI+XHJcbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkaXNwbGF5ZmxleFwiPlxyXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZmxleGF1dG9cIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD5DYXRlZ29yeTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cIlNlbGVjdGVkRG9jdW1lbnRDYXRlZ29yeVZpZXdNb2RlbFwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNhdGVnb3J5IG9mIEdldENhdGVnb3JpZXMoKVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cImNhdGVnb3J5XCI+e3tjYXRlZ29yeS5uYW1lfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgIDwvbWF0LWNhcmQ+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlNlbGVjdGVkRG9jdW1lbnRDYXRlZ29yeVZpZXdNb2RlbCAhPSBudWxsXCI+XHJcbiAgICAgIDxtYXQtY2FyZCBjbGFzcz1cImNhcmRcIiAqbmdGb3I9XCJsZXQgZG9jdW1lbnRUZW1wbGF0ZUl0ZW0gb2YgU2VsZWN0ZWREb2N1bWVudENhdGVnb3J5Vmlld01vZGVsLmRvY3VtZW50VGVtcGxhdGUuaXRlbXNcIj5cclxuICAgICAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpc3BsYXlmbGV4IGJvcmRlci1ib3R0b21cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4YXV0byBsaW5laGVpZ2h0MzZcIj5cclxuICAgICAgICAgICAgICAgICAge3sgZG9jdW1lbnRUZW1wbGF0ZUl0ZW0ubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiU2VsZWN0ZWREb2N1bWVudENhdGVnb3J5Vmlld01vZGVsICE9IG51bGwgJiYgU2VsZWN0ZWREb2N1bWVudENhdGVnb3J5Vmlld01vZGVsLmFkZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIlVwbG9hZChTZWxlY3RlZERvY3VtZW50Q2F0ZWdvcnlWaWV3TW9kZWwsIGRvY3VtZW50VGVtcGxhdGVJdGVtKVwiIGNsYXNzPVwic2F2ZS1idXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIFVwbG9hZFxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRvY3VtZW50VGVtcGxhdGVJdGVtLmRvY3VtZW50cy5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICBObyBmaWxlcyBmb3VuZCBpbiB0aGlzIGNhdGVnb3J5Li4uXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXNwbGF5ZmxleCBmaWxlXCIgKm5nRm9yPVwibGV0IGRvY3VtZW50IG9mIGRvY3VtZW50VGVtcGxhdGVJdGVtLmRvY3VtZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGluZWhlaWdodDM2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvY3VtZW50VGVtcGxhdGVJdGVtLmRvY3VtZW50VGVtcGxhdGVJdGVtQW1vdW50ID09IERvY3VtZW50VGVtcGxhdGVJdGVtQW1vdW50Lk1hbnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggWyhuZ01vZGVsKV09XCJkb2N1bWVudC5hY3RpdmVcIiAoY2xpY2spPVwiQ2hhbmdlQWN0aXZlKGRvY3VtZW50KVwiPjwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkb2N1bWVudFRlbXBsYXRlSXRlbS5kb2N1bWVudFRlbXBsYXRlSXRlbUFtb3VudCA9PSBEb2N1bWVudFRlbXBsYXRlSXRlbUFtb3VudC5PbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtcmFkaW8tZ3JvdXAgWyhuZ01vZGVsKV09XCJkb2N1bWVudC5hY3RpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gW3ZhbHVlXT1cInRydWVcIiAoY2xpY2spPVwiQ2hhbmdlQWN0aXZlKGRvY3VtZW50KVwiPjwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhhdXRvIGxpbmVoZWlnaHQzNiBuYW1lLWJveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJ7eyBkb2N1bWVudC5yZWxhdGl2ZVVSTCB9fVwiIHRhcmdldD1cIl9ibGFua1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgZG9jdW1lbnQubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvY3VtZW50LmFjdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBkaXNhYmxlZCBjbGFzcz1cInNhdmUtYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIERlbGV0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkb2N1bWVudC5hY3RpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIkRlbGV0ZShkb2N1bWVudClcIiBjbGFzcz1cInNhdmUtYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIERlbGV0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgIDwvbWF0LWNhcmQ+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -24,6 +24,9 @@ class BeheerNavComponent {
24
24
  HangfireEnabled() {
25
25
  return this.FabrikantenSettingsViewModel?.hangfireEnabled == true;
26
26
  }
27
+ DocumentsEnabled() {
28
+ return this.FabrikantenSettingsViewModel?.documentsEnabled == true;
29
+ }
27
30
  ShowUploads() {
28
31
  var array = this.UploadsResponseModel?.uploads;
29
32
  if (array != null) {
@@ -80,11 +83,11 @@ class BeheerNavComponent {
80
83
  });
81
84
  }
82
85
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BeheerNavComponent, deps: [{ token: i1.AuthenticationService }, { token: i2.Router }, { token: i3.FabrikantenApiClient }], target: i0.ɵɵFactoryTarget.Component });
83
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BeheerNavComponent, selector: "app-beheer-nav", ngImport: i0, template: "<div class=\"main-block\">\r\n <div class=\"row\">\r\n <div class=\"cell left-block\" *ngIf=\"authenticationService.DeTweeSnoekenRights()\">\r\n <button mat-raised-button (click)=\"NavigateTo('searchproducts')\" class=\"link\" [disabled]=\"IsActive('/searchproducts')\">\r\n Zoeken\r\n </button>\r\n <button mat-raised-button (click)=\"NavigateTo('importsets')\" class=\"link\" [disabled]=\"IsActive('/importsets')\">\r\n Import\r\n </button>\r\n <button mat-raised-button (click)=\"NavigateTo('products')\" class=\"link\" [disabled]=\"IsActive('/products')\">\r\n Products\r\n </button>\r\n <button mat-raised-button (click)=\"NavigateTo('filters')\" class=\"link\" [disabled]=\"IsActive('/filters')\">\r\n Filters\r\n </button>\r\n <button mat-raised-button (click)=\"NavigateTo('ebokoppel')\" class=\"link\" [disabled]=\"IsActive('/ebokoppel')\">\r\n EBO Koppel\r\n </button>\r\n <button mat-raised-button (click)=\"NavigateTo('categories')\" class=\"link\" [disabled]=\"IsActive('/categories')\">\r\n Categories\r\n </button>\r\n <button mat-raised-button (click)=\"NavigateTo('deeplink')\" class=\"link\" [disabled]=\"IsActive('/deeplink')\">\r\n Deeplink\r\n </button>\r\n </div>\r\n <div class=\"cell right-block\">\r\n <button mat-raised-button (click)=\"Home()\" class=\"link\">\r\n Home\r\n </button>\r\n <button *ngIf=\"!authenticationService.ConfiguratorRights()\" mat-raised-button (click)=\"ResetCache()\" class=\"link\">\r\n {{ ResetCacheTitle }}\r\n </button>\r\n <button *ngIf=\"authenticationService.DeTweeSnoekenRights()\" mat-raised-button (click)=\"NavigateTo('settings')\" class=\"link\" [disabled]=\"IsActive('/settings')\">\r\n Settings\r\n </button>\r\n <button *ngIf=\"!authenticationService.ConfiguratorRights()\" mat-raised-button (click)=\"NavigateTo('translate')\" class=\"link\" [disabled]=\"IsActive('/translate')\">\r\n Translate\r\n </button>\r\n <button *ngIf=\"!authenticationService.ConfiguratorRights() && ShowUploads()\" mat-raised-button (click)=\"NavigateTo('uploads')\" class=\"link\" [disabled]=\"IsActive('/uploads')\">\r\n Files\r\n </button>\r\n <button *ngIf=\"authenticationService.ConfiguratorRights()\" mat-raised-button (click)=\"NavigateTo('configurator')\" class=\"link\" [disabled]=\"IsActive('/configurator')\">\r\n Configurator\r\n </button>\r\n <button *ngIf=\"authenticationService.AdministratorRights()\" mat-raised-button (click)=\"NavigateTo('users')\" class=\"link\" [disabled]=\"IsActive('/users')\">\r\n Users\r\n </button>\r\n <button *ngIf=\"authenticationService.DeTweeSnoekenRights() && HangfireEnabled()\" mat-raised-button (click)=\"NavigateTo('hangfire')\" class=\"link\" [disabled]=\"IsActive('/hangfire')\">\r\n Hangfire\r\n </button>\r\n <button mat-raised-button (click)=\"LogOff()\" class=\"link\">\r\n Uitloggen\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["app-beheer-nav .main-block{width:100%;display:table}app-beheer-nav .main-block .left-block{text-align:left}app-beheer-nav .main-block .right-block{text-align:right}app-beheer-nav .main-block .row{display:table-row}app-beheer-nav .main-block .cell{display:table-cell}app-beheer-nav .main-block .link{margin:5px}body{background:url(/assets/bouwconnect-achtergrond.png) fixed}.full-width{width:100%}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], encapsulation: i0.ViewEncapsulation.None });
86
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BeheerNavComponent, selector: "app-beheer-nav", ngImport: i0, template: "<div class=\"main-block\">\r\n <div class=\"row\">\r\n <div class=\"cell left-block\" *ngIf=\"authenticationService.DeTweeSnoekenRights()\">\r\n <button mat-raised-button (click)=\"NavigateTo('searchproducts')\" class=\"link\" [disabled]=\"IsActive('/searchproducts')\">\r\n Zoeken\r\n </button>\r\n <button mat-raised-button (click)=\"NavigateTo('importsets')\" class=\"link\" [disabled]=\"IsActive('/importsets')\">\r\n Import\r\n </button>\r\n <button mat-raised-button (click)=\"NavigateTo('products')\" class=\"link\" [disabled]=\"IsActive('/products')\">\r\n Products\r\n </button>\r\n <button mat-raised-button (click)=\"NavigateTo('filters')\" class=\"link\" [disabled]=\"IsActive('/filters')\">\r\n Filters\r\n </button>\r\n <button mat-raised-button (click)=\"NavigateTo('ebokoppel')\" class=\"link\" [disabled]=\"IsActive('/ebokoppel')\">\r\n EBO Koppel\r\n </button>\r\n <button mat-raised-button (click)=\"NavigateTo('categories')\" class=\"link\" [disabled]=\"IsActive('/categories')\">\r\n Categories\r\n </button>\r\n <button mat-raised-button (click)=\"NavigateTo('deeplink')\" class=\"link\" [disabled]=\"IsActive('/deeplink')\">\r\n Deeplink\r\n </button>\r\n </div>\r\n <div class=\"cell right-block\">\r\n <button mat-raised-button (click)=\"Home()\" class=\"link\">\r\n Home\r\n </button>\r\n <button *ngIf=\"!authenticationService.ConfiguratorRights()\" mat-raised-button (click)=\"ResetCache()\" class=\"link\">\r\n {{ ResetCacheTitle }}\r\n </button>\r\n <button *ngIf=\"authenticationService.DeTweeSnoekenRights()\" mat-raised-button (click)=\"NavigateTo('settings')\" class=\"link\" [disabled]=\"IsActive('/settings')\">\r\n Settings\r\n </button>\r\n <button *ngIf=\"!authenticationService.ConfiguratorRights() && DocumentsEnabled()\" mat-raised-button (click)=\"NavigateTo('documents')\" class=\"link\" [disabled]=\"IsActive('/documents')\">\r\n Documents\r\n </button>\r\n <button *ngIf=\"!authenticationService.ConfiguratorRights()\" mat-raised-button (click)=\"NavigateTo('translate')\" class=\"link\" [disabled]=\"IsActive('/translate')\">\r\n Translate\r\n </button>\r\n <button *ngIf=\"!authenticationService.ConfiguratorRights() && ShowUploads()\" mat-raised-button (click)=\"NavigateTo('uploads')\" class=\"link\" [disabled]=\"IsActive('/uploads')\">\r\n Files\r\n </button>\r\n <button *ngIf=\"authenticationService.ConfiguratorRights()\" mat-raised-button (click)=\"NavigateTo('configurator')\" class=\"link\" [disabled]=\"IsActive('/configurator')\">\r\n Configurator\r\n </button>\r\n <button *ngIf=\"authenticationService.AdministratorRights()\" mat-raised-button (click)=\"NavigateTo('users')\" class=\"link\" [disabled]=\"IsActive('/users')\">\r\n Users\r\n </button>\r\n <button *ngIf=\"authenticationService.DeTweeSnoekenRights() && HangfireEnabled()\" mat-raised-button (click)=\"NavigateTo('hangfire')\" class=\"link\" [disabled]=\"IsActive('/hangfire')\">\r\n Hangfire\r\n </button>\r\n <button mat-raised-button (click)=\"LogOff()\" class=\"link\">\r\n Uitloggen\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["app-beheer-nav .main-block{width:100%;display:table}app-beheer-nav .main-block .left-block{text-align:left}app-beheer-nav .main-block .right-block{text-align:right}app-beheer-nav .main-block .row{display:table-row}app-beheer-nav .main-block .cell{display:table-cell}app-beheer-nav .main-block .link{margin:5px}body{background:url(/assets/bouwconnect-achtergrond.png) fixed}.full-width{width:100%}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], encapsulation: i0.ViewEncapsulation.None });
84
87
  }
85
88
  export { BeheerNavComponent };
86
89
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BeheerNavComponent, decorators: [{
87
90
  type: Component,
88
- args: [{ selector: 'app-beheer-nav', encapsulation: ViewEncapsulation.None, template: "<div class=\"main-block\">\r\n <div class=\"row\">\r\n <div class=\"cell left-block\" *ngIf=\"authenticationService.DeTweeSnoekenRights()\">\r\n <button mat-raised-button (click)=\"NavigateTo('searchproducts')\" class=\"link\" [disabled]=\"IsActive('/searchproducts')\">\r\n Zoeken\r\n </button>\r\n <button mat-raised-button (click)=\"NavigateTo('importsets')\" class=\"link\" [disabled]=\"IsActive('/importsets')\">\r\n Import\r\n </button>\r\n <button mat-raised-button (click)=\"NavigateTo('products')\" class=\"link\" [disabled]=\"IsActive('/products')\">\r\n Products\r\n </button>\r\n <button mat-raised-button (click)=\"NavigateTo('filters')\" class=\"link\" [disabled]=\"IsActive('/filters')\">\r\n Filters\r\n </button>\r\n <button mat-raised-button (click)=\"NavigateTo('ebokoppel')\" class=\"link\" [disabled]=\"IsActive('/ebokoppel')\">\r\n EBO Koppel\r\n </button>\r\n <button mat-raised-button (click)=\"NavigateTo('categories')\" class=\"link\" [disabled]=\"IsActive('/categories')\">\r\n Categories\r\n </button>\r\n <button mat-raised-button (click)=\"NavigateTo('deeplink')\" class=\"link\" [disabled]=\"IsActive('/deeplink')\">\r\n Deeplink\r\n </button>\r\n </div>\r\n <div class=\"cell right-block\">\r\n <button mat-raised-button (click)=\"Home()\" class=\"link\">\r\n Home\r\n </button>\r\n <button *ngIf=\"!authenticationService.ConfiguratorRights()\" mat-raised-button (click)=\"ResetCache()\" class=\"link\">\r\n {{ ResetCacheTitle }}\r\n </button>\r\n <button *ngIf=\"authenticationService.DeTweeSnoekenRights()\" mat-raised-button (click)=\"NavigateTo('settings')\" class=\"link\" [disabled]=\"IsActive('/settings')\">\r\n Settings\r\n </button>\r\n <button *ngIf=\"!authenticationService.ConfiguratorRights()\" mat-raised-button (click)=\"NavigateTo('translate')\" class=\"link\" [disabled]=\"IsActive('/translate')\">\r\n Translate\r\n </button>\r\n <button *ngIf=\"!authenticationService.ConfiguratorRights() && ShowUploads()\" mat-raised-button (click)=\"NavigateTo('uploads')\" class=\"link\" [disabled]=\"IsActive('/uploads')\">\r\n Files\r\n </button>\r\n <button *ngIf=\"authenticationService.ConfiguratorRights()\" mat-raised-button (click)=\"NavigateTo('configurator')\" class=\"link\" [disabled]=\"IsActive('/configurator')\">\r\n Configurator\r\n </button>\r\n <button *ngIf=\"authenticationService.AdministratorRights()\" mat-raised-button (click)=\"NavigateTo('users')\" class=\"link\" [disabled]=\"IsActive('/users')\">\r\n Users\r\n </button>\r\n <button *ngIf=\"authenticationService.DeTweeSnoekenRights() && HangfireEnabled()\" mat-raised-button (click)=\"NavigateTo('hangfire')\" class=\"link\" [disabled]=\"IsActive('/hangfire')\">\r\n Hangfire\r\n </button>\r\n <button mat-raised-button (click)=\"LogOff()\" class=\"link\">\r\n Uitloggen\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["app-beheer-nav .main-block{width:100%;display:table}app-beheer-nav .main-block .left-block{text-align:left}app-beheer-nav .main-block .right-block{text-align:right}app-beheer-nav .main-block .row{display:table-row}app-beheer-nav .main-block .cell{display:table-cell}app-beheer-nav .main-block .link{margin:5px}body{background:url(/assets/bouwconnect-achtergrond.png) fixed}.full-width{width:100%}\n"] }]
91
+ args: [{ selector: 'app-beheer-nav', encapsulation: ViewEncapsulation.None, template: "<div class=\"main-block\">\r\n <div class=\"row\">\r\n <div class=\"cell left-block\" *ngIf=\"authenticationService.DeTweeSnoekenRights()\">\r\n <button mat-raised-button (click)=\"NavigateTo('searchproducts')\" class=\"link\" [disabled]=\"IsActive('/searchproducts')\">\r\n Zoeken\r\n </button>\r\n <button mat-raised-button (click)=\"NavigateTo('importsets')\" class=\"link\" [disabled]=\"IsActive('/importsets')\">\r\n Import\r\n </button>\r\n <button mat-raised-button (click)=\"NavigateTo('products')\" class=\"link\" [disabled]=\"IsActive('/products')\">\r\n Products\r\n </button>\r\n <button mat-raised-button (click)=\"NavigateTo('filters')\" class=\"link\" [disabled]=\"IsActive('/filters')\">\r\n Filters\r\n </button>\r\n <button mat-raised-button (click)=\"NavigateTo('ebokoppel')\" class=\"link\" [disabled]=\"IsActive('/ebokoppel')\">\r\n EBO Koppel\r\n </button>\r\n <button mat-raised-button (click)=\"NavigateTo('categories')\" class=\"link\" [disabled]=\"IsActive('/categories')\">\r\n Categories\r\n </button>\r\n <button mat-raised-button (click)=\"NavigateTo('deeplink')\" class=\"link\" [disabled]=\"IsActive('/deeplink')\">\r\n Deeplink\r\n </button>\r\n </div>\r\n <div class=\"cell right-block\">\r\n <button mat-raised-button (click)=\"Home()\" class=\"link\">\r\n Home\r\n </button>\r\n <button *ngIf=\"!authenticationService.ConfiguratorRights()\" mat-raised-button (click)=\"ResetCache()\" class=\"link\">\r\n {{ ResetCacheTitle }}\r\n </button>\r\n <button *ngIf=\"authenticationService.DeTweeSnoekenRights()\" mat-raised-button (click)=\"NavigateTo('settings')\" class=\"link\" [disabled]=\"IsActive('/settings')\">\r\n Settings\r\n </button>\r\n <button *ngIf=\"!authenticationService.ConfiguratorRights() && DocumentsEnabled()\" mat-raised-button (click)=\"NavigateTo('documents')\" class=\"link\" [disabled]=\"IsActive('/documents')\">\r\n Documents\r\n </button>\r\n <button *ngIf=\"!authenticationService.ConfiguratorRights()\" mat-raised-button (click)=\"NavigateTo('translate')\" class=\"link\" [disabled]=\"IsActive('/translate')\">\r\n Translate\r\n </button>\r\n <button *ngIf=\"!authenticationService.ConfiguratorRights() && ShowUploads()\" mat-raised-button (click)=\"NavigateTo('uploads')\" class=\"link\" [disabled]=\"IsActive('/uploads')\">\r\n Files\r\n </button>\r\n <button *ngIf=\"authenticationService.ConfiguratorRights()\" mat-raised-button (click)=\"NavigateTo('configurator')\" class=\"link\" [disabled]=\"IsActive('/configurator')\">\r\n Configurator\r\n </button>\r\n <button *ngIf=\"authenticationService.AdministratorRights()\" mat-raised-button (click)=\"NavigateTo('users')\" class=\"link\" [disabled]=\"IsActive('/users')\">\r\n Users\r\n </button>\r\n <button *ngIf=\"authenticationService.DeTweeSnoekenRights() && HangfireEnabled()\" mat-raised-button (click)=\"NavigateTo('hangfire')\" class=\"link\" [disabled]=\"IsActive('/hangfire')\">\r\n Hangfire\r\n </button>\r\n <button mat-raised-button (click)=\"LogOff()\" class=\"link\">\r\n Uitloggen\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["app-beheer-nav .main-block{width:100%;display:table}app-beheer-nav .main-block .left-block{text-align:left}app-beheer-nav .main-block .right-block{text-align:right}app-beheer-nav .main-block .row{display:table-row}app-beheer-nav .main-block .cell{display:table-cell}app-beheer-nav .main-block .link{margin:5px}body{background:url(/assets/bouwconnect-achtergrond.png) fixed}.full-width{width:100%}\n"] }]
89
92
  }], ctorParameters: function () { return [{ type: i1.AuthenticationService }, { type: i2.Router }, { type: i3.FabrikantenApiClient }]; } });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoZWVyLW5hdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci1uYXYvYmVoZWVyLW5hdi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci1uYXYvYmVoZWVyLW5hdi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBTXJFLE1BTWEsa0JBQWtCO0lBT1Y7SUFBc0Q7SUFBd0I7SUFMMUYsZUFBZSxHQUFXLGFBQWEsQ0FBQztJQUV4Qyw0QkFBNEIsQ0FBK0I7SUFDM0Qsb0JBQW9CLEdBQWdDLElBQUksQ0FBQztJQUVoRSxZQUFtQixxQkFBNEMsRUFBVSxNQUFjLEVBQVUsb0JBQTBDO1FBQXhILDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtJQUUzSSxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVNLGVBQWU7UUFDcEIsT0FBTyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsZUFBZSxJQUFJLElBQUksQ0FBQztJQUNwRSxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsT0FBTyxDQUFDO1FBQy9DLElBQUksS0FBSyxJQUFJLElBQUksRUFBRTtZQUNqQixJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNwQixPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxNQUFNO1FBQ1gsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVNLFVBQVUsQ0FBQyxJQUFZO1FBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU0sUUFBUSxDQUFDLElBQVk7UUFDMUIsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVNLFVBQVU7UUFDZixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsb0JBQW9CLENBQUMsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNwRCxJQUFJLENBQUMsZUFBZSxHQUFHLGFBQWEsQ0FBQztZQUNyQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUMvQixDQUFDLEVBQUUsQ0FBQyxLQUFlLEVBQUUsRUFBRTtZQUNyQixLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxJQUFJO1FBQ1QsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLCtCQUErQixFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBbUMsRUFBRSxFQUFFO1lBQzVHLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxLQUFLLENBQUM7UUFDNUMsQ0FBQyxFQUFFLENBQUMsS0FBZSxFQUFFLEVBQUU7WUFDckIsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLEdBQUc7Z0JBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7aUJBQ3ZCO2dCQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQztnQkFDM0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNwQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQTJCLEVBQUUsRUFBRTtZQUMvRSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQ3BDLENBQUMsRUFBRSxDQUFDLEtBQWUsRUFBRSxFQUFFO1lBQ3JCLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxHQUFHO2dCQUNyQixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2lCQUN2QjtnQkFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLDZCQUE2QixDQUFDLENBQUM7Z0JBQzNDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDcEI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBbEZVLGtCQUFrQjs0RkFBbEIsa0JBQWtCLHNEQ1ovQixzakdBd0RBOztTRDVDYSxrQkFBa0I7NEZBQWxCLGtCQUFrQjtrQkFOOUIsU0FBUzsrQkFDRSxnQkFBZ0IsaUJBR1gsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyLCBOYXZpZ2F0aW9uRW5kIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgRmFicmlrYW50ZW5BcGlDbGllbnQsIEZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwsIFVwbG9hZHNSZXNwb25zZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc3dhZ2dlci9Td2FnZ2VyQ2xpZW50JztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi8uLi9zZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJ1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtYmVoZWVyLW5hdicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2JlaGVlci1uYXYuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2JlaGVlci1uYXYuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCZWhlZXJOYXZDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBwdWJsaWMgUmVzZXRDYWNoZVRpdGxlOiBzdHJpbmcgPSBcIlJlc2V0IENhY2hlXCI7XHJcblxyXG4gIHB1YmxpYyBGYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsOiBGYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsO1xyXG4gIHB1YmxpYyBVcGxvYWRzUmVzcG9uc2VNb2RlbDogVXBsb2Fkc1Jlc3BvbnNlTW9kZWwgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGF1dGhlbnRpY2F0aW9uU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIEZhYnJpa2FudGVuQXBpQ2xpZW50OiBGYWJyaWthbnRlbkFwaUNsaWVudCkge1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5Mb2FkU2V0dGluZ3MoKTtcclxuICAgIHRoaXMuTG9hZFVwbG9hZHMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBIYW5nZmlyZUVuYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsPy5oYW5nZmlyZUVuYWJsZWQgPT0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93VXBsb2FkcygpOiBib29sZWFuIHtcclxuICAgIHZhciBhcnJheSA9IHRoaXMuVXBsb2Fkc1Jlc3BvbnNlTW9kZWw/LnVwbG9hZHM7XHJcbiAgICBpZiAoYXJyYXkgIT0gbnVsbCkge1xyXG4gICAgICBpZiAoYXJyYXkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIExvZ09mZigpOiB2b2lkIHtcclxuICAgIHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmxvZ291dCgpO1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL2JlaGVlci9pbmxvZ2dlbicpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIE5hdmlnYXRlVG8obmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvYmVoZWVyLycgKyBuYW1lKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBJc0FjdGl2ZShuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24uaHJlZi50b0xvd2VyQ2FzZSgpLmluZGV4T2YobmFtZS50b0xvd2VyQ2FzZSgpKSAhPSAtMTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBSZXNldENhY2hlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5SZXNldENhY2hlVGl0bGUgPSBcIi4uLlwiO1xyXG4gICAgdGhpcy5GYWJyaWthbnRlbkFwaUNsaWVudC5yZXNldENhY2hlKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5SZXNldENhY2hlVGl0bGUgPSBcIlJlc2V0IENhY2hlXCI7XHJcbiAgICAgIGFsZXJ0KCdjYWNoZSByZXNldCBzdWNjZXNzJyk7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEhvbWUoKTogdm9pZCB7XHJcbiAgICB3aW5kb3cub3BlbignLycsICdfYmxhbmsnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgTG9hZFNldHRpbmdzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5GYWJyaWthbnRlbkFwaUNsaWVudC5nZXRGYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsKCkuc3Vic2NyaWJlKChtb2RlbDogRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbCkgPT4ge1xyXG4gICAgICB0aGlzLkZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwgPSBtb2RlbDtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IuanNvbigpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIExvYWRVcGxvYWRzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5GYWJyaWthbnRlbkFwaUNsaWVudC5nZXRVcGxvYWRzKCkuc3Vic2NyaWJlKChtb2RlbDogVXBsb2Fkc1Jlc3BvbnNlTW9kZWwpID0+IHtcclxuICAgICAgdGhpcy5VcGxvYWRzUmVzcG9uc2VNb2RlbCA9IG1vZGVsO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvci5qc29uKCkpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1haW4tYmxvY2tcIj5cclxuICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2VsbCBsZWZ0LWJsb2NrXCIgKm5nSWY9XCJhdXRoZW50aWNhdGlvblNlcnZpY2UuRGVUd2VlU25vZWtlblJpZ2h0cygpXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIk5hdmlnYXRlVG8oJ3NlYXJjaHByb2R1Y3RzJylcIiBjbGFzcz1cImxpbmtcIiBbZGlzYWJsZWRdPVwiSXNBY3RpdmUoJy9zZWFyY2hwcm9kdWN0cycpXCI+XHJcbiAgICAgICAgWm9la2VuXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJOYXZpZ2F0ZVRvKCdpbXBvcnRzZXRzJylcIiBjbGFzcz1cImxpbmtcIiBbZGlzYWJsZWRdPVwiSXNBY3RpdmUoJy9pbXBvcnRzZXRzJylcIj5cclxuICAgICAgICBJbXBvcnRcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIk5hdmlnYXRlVG8oJ3Byb2R1Y3RzJylcIiBjbGFzcz1cImxpbmtcIiBbZGlzYWJsZWRdPVwiSXNBY3RpdmUoJy9wcm9kdWN0cycpXCI+XHJcbiAgICAgICAgUHJvZHVjdHNcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIk5hdmlnYXRlVG8oJ2ZpbHRlcnMnKVwiIGNsYXNzPVwibGlua1wiIFtkaXNhYmxlZF09XCJJc0FjdGl2ZSgnL2ZpbHRlcnMnKVwiPlxyXG4gICAgICAgIEZpbHRlcnNcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIk5hdmlnYXRlVG8oJ2Vib2tvcHBlbCcpXCIgY2xhc3M9XCJsaW5rXCIgW2Rpc2FibGVkXT1cIklzQWN0aXZlKCcvZWJva29wcGVsJylcIj5cclxuICAgICAgICBFQk8gS29wcGVsXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJOYXZpZ2F0ZVRvKCdjYXRlZ29yaWVzJylcIiBjbGFzcz1cImxpbmtcIiBbZGlzYWJsZWRdPVwiSXNBY3RpdmUoJy9jYXRlZ29yaWVzJylcIj5cclxuICAgICAgICBDYXRlZ29yaWVzXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJOYXZpZ2F0ZVRvKCdkZWVwbGluaycpXCIgY2xhc3M9XCJsaW5rXCIgW2Rpc2FibGVkXT1cIklzQWN0aXZlKCcvZGVlcGxpbmsnKVwiPlxyXG4gICAgICAgIERlZXBsaW5rXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2VsbCByaWdodC1ibG9ja1wiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJIb21lKClcIiBjbGFzcz1cImxpbmtcIj5cclxuICAgICAgICBIb21lXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uICpuZ0lmPVwiIWF1dGhlbnRpY2F0aW9uU2VydmljZS5Db25maWd1cmF0b3JSaWdodHMoKVwiIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJSZXNldENhY2hlKClcIiBjbGFzcz1cImxpbmtcIj5cclxuICAgICAgICB7eyBSZXNldENhY2hlVGl0bGUgfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gKm5nSWY9XCJhdXRoZW50aWNhdGlvblNlcnZpY2UuRGVUd2VlU25vZWtlblJpZ2h0cygpXCIgbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIk5hdmlnYXRlVG8oJ3NldHRpbmdzJylcIiBjbGFzcz1cImxpbmtcIiBbZGlzYWJsZWRdPVwiSXNBY3RpdmUoJy9zZXR0aW5ncycpXCI+XHJcbiAgICAgICAgU2V0dGluZ3NcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gKm5nSWY9XCIhYXV0aGVudGljYXRpb25TZXJ2aWNlLkNvbmZpZ3VyYXRvclJpZ2h0cygpXCIgbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIk5hdmlnYXRlVG8oJ3RyYW5zbGF0ZScpXCIgY2xhc3M9XCJsaW5rXCIgW2Rpc2FibGVkXT1cIklzQWN0aXZlKCcvdHJhbnNsYXRlJylcIj5cclxuICAgICAgICBUcmFuc2xhdGVcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gKm5nSWY9XCIhYXV0aGVudGljYXRpb25TZXJ2aWNlLkNvbmZpZ3VyYXRvclJpZ2h0cygpICYmIFNob3dVcGxvYWRzKClcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiTmF2aWdhdGVUbygndXBsb2FkcycpXCIgY2xhc3M9XCJsaW5rXCIgW2Rpc2FibGVkXT1cIklzQWN0aXZlKCcvdXBsb2FkcycpXCI+XHJcbiAgICAgICAgRmlsZXNcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gKm5nSWY9XCJhdXRoZW50aWNhdGlvblNlcnZpY2UuQ29uZmlndXJhdG9yUmlnaHRzKClcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiTmF2aWdhdGVUbygnY29uZmlndXJhdG9yJylcIiBjbGFzcz1cImxpbmtcIiBbZGlzYWJsZWRdPVwiSXNBY3RpdmUoJy9jb25maWd1cmF0b3InKVwiPlxyXG4gICAgICAgIENvbmZpZ3VyYXRvclxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiAqbmdJZj1cImF1dGhlbnRpY2F0aW9uU2VydmljZS5BZG1pbmlzdHJhdG9yUmlnaHRzKClcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiTmF2aWdhdGVUbygndXNlcnMnKVwiIGNsYXNzPVwibGlua1wiIFtkaXNhYmxlZF09XCJJc0FjdGl2ZSgnL3VzZXJzJylcIj5cclxuICAgICAgICBVc2Vyc1xyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiAqbmdJZj1cImF1dGhlbnRpY2F0aW9uU2VydmljZS5EZVR3ZWVTbm9la2VuUmlnaHRzKCkgJiYgSGFuZ2ZpcmVFbmFibGVkKClcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiTmF2aWdhdGVUbygnaGFuZ2ZpcmUnKVwiIGNsYXNzPVwibGlua1wiIFtkaXNhYmxlZF09XCJJc0FjdGl2ZSgnL2hhbmdmaXJlJylcIj5cclxuICAgICAgICBIYW5nZmlyZVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiTG9nT2ZmKClcIiBjbGFzcz1cImxpbmtcIj5cclxuICAgICAgICBVaXRsb2dnZW5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoZWVyLW5hdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci1uYXYvYmVoZWVyLW5hdi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci1uYXYvYmVoZWVyLW5hdi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBTXJFLE1BTWEsa0JBQWtCO0lBT1Y7SUFBc0Q7SUFBd0I7SUFMMUYsZUFBZSxHQUFXLGFBQWEsQ0FBQztJQUV4Qyw0QkFBNEIsQ0FBK0I7SUFDM0Qsb0JBQW9CLEdBQWdDLElBQUksQ0FBQztJQUVoRSxZQUFtQixxQkFBNEMsRUFBVSxNQUFjLEVBQVUsb0JBQTBDO1FBQXhILDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtJQUUzSSxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVNLGVBQWU7UUFDcEIsT0FBTyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsZUFBZSxJQUFJLElBQUksQ0FBQztJQUNwRSxDQUFDO0lBRU0sZ0JBQWdCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLDRCQUE0QixFQUFFLGdCQUFnQixJQUFJLElBQUksQ0FBQztJQUNyRSxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLEtBQUssR0FBRyxJ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dWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyLCBOYXZpZ2F0aW9uRW5kIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgRmFicmlrYW50ZW5BcGlDbGllbnQsIEZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwsIFVwbG9hZHNSZXNwb25zZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc3dhZ2dlci9Td2FnZ2VyQ2xpZW50JztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi8uLi9zZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJ1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtYmVoZWVyLW5hdicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2JlaGVlci1uYXYuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2JlaGVlci1uYXYuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCZWhlZXJOYXZDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBwdWJsaWMgUmVzZXRDYWNoZVRpdGxlOiBzdHJpbmcgPSBcIlJlc2V0IENhY2hlXCI7XHJcblxyXG4gIHB1YmxpYyBGYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsOiBGYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsO1xyXG4gIHB1YmxpYyBVcGxvYWRzUmVzcG9uc2VNb2RlbDogVXBsb2Fkc1Jlc3BvbnNlTW9kZWwgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGF1dGhlbnRpY2F0aW9uU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIEZhYnJpa2FudGVuQXBpQ2xpZW50OiBGYWJyaWthbnRlbkFwaUNsaWVudCkge1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5Mb2FkU2V0dGluZ3MoKTtcclxuICAgIHRoaXMuTG9hZFVwbG9hZHMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBIYW5nZmlyZUVuYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsPy5oYW5nZmlyZUVuYWJsZWQgPT0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBEb2N1bWVudHNFbmFibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbD8uZG9jdW1lbnRzRW5hYmxlZCA9PSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dVcGxvYWRzKCk6IGJvb2xlYW4ge1xyXG4gICAgdmFyIGFycmF5ID0gdGhpcy5VcGxvYWRzUmVzcG9uc2VNb2RlbD8udXBsb2FkcztcclxuICAgIGlmIChhcnJheSAhPSBudWxsKSB7XHJcbiAgICAgIGlmIChhcnJheS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgTG9nT2ZmKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UubG9nb3V0KCk7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvYmVoZWVyL2lubG9nZ2VuJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgTmF2aWdhdGVUbyhuYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9iZWhlZXIvJyArIG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIElzQWN0aXZlKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ocmVmLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihuYW1lLnRvTG93ZXJDYXNlKCkpICE9IC0xO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFJlc2V0Q2FjaGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLlJlc2V0Q2FjaGVUaXRsZSA9IFwiLi4uXCI7XHJcbiAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50LnJlc2V0Q2FjaGUoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLlJlc2V0Q2FjaGVUaXRsZSA9IFwiUmVzZXQgQ2FjaGVcIjtcclxuICAgICAgYWxlcnQoJ2NhY2hlIHJlc2V0IHN1Y2Nlc3MnKTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgSG9tZSgpOiB2b2lkIHtcclxuICAgIHdpbmRvdy5vcGVuKCcvJywgJ19ibGFuaycpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBMb2FkU2V0dGluZ3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50LmdldEZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwoKS5zdWJzY3JpYmUoKG1vZGVsOiBGYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsKSA9PiB7XHJcbiAgICAgIHRoaXMuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbCA9IG1vZGVsO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvci5qc29uKCkpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgTG9hZFVwbG9hZHMoKTogdm9pZCB7XHJcbiAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50LmdldFVwbG9hZHMoKS5zdWJzY3JpYmUoKG1vZGVsOiBVcGxvYWRzUmVzcG9uc2VNb2RlbCkgPT4ge1xyXG4gICAgICB0aGlzLlVwbG9hZHNSZXNwb25zZU1vZGVsID0gbW9kZWw7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibWFpbi1ibG9ja1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjZWxsIGxlZnQtYmxvY2tcIiAqbmdJZj1cImF1dGhlbnRpY2F0aW9uU2VydmljZS5EZVR3ZWVTbm9la2VuUmlnaHRzKClcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiTmF2aWdhdGVUbygnc2VhcmNocHJvZHVjdHMnKVwiIGNsYXNzPVwibGlua1wiIFtkaXNhYmxlZF09XCJJc0FjdGl2ZSgnL3NlYXJjaHByb2R1Y3RzJylcIj5cclxuICAgICAgICBab2VrZW5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIk5hdmlnYXRlVG8oJ2ltcG9ydHNldHMnKVwiIGNsYXNzPVwibGlua1wiIFtkaXNhYmxlZF09XCJJc0FjdGl2ZSgnL2ltcG9ydHNldHMnKVwiPlxyXG4gICAgICAgIEltcG9ydFxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiTmF2aWdhdGVUbygncHJvZHVjdHMnKVwiIGNsYXNzPVwibGlua1wiIFtkaXNhYmxlZF09XCJJc0FjdGl2ZSgnL3Byb2R1Y3RzJylcIj5cclxuICAgICAgICBQcm9kdWN0c1xyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiTmF2aWdhdGVUbygnZmlsdGVycycpXCIgY2xhc3M9XCJsaW5rXCIgW2Rpc2FibGVkXT1cIklzQWN0aXZlKCcvZmlsdGVycycpXCI+XHJcbiAgICAgICAgRmlsdGVyc1xyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiTmF2aWdhdGVUbygnZWJva29wcGVsJylcIiBjbGFzcz1cImxpbmtcIiBbZGlzYWJsZWRdPVwiSXNBY3RpdmUoJy9lYm9rb3BwZWwnKVwiPlxyXG4gICAgICAgIEVCTyBLb3BwZWxcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIk5hdmlnYXRlVG8oJ2NhdGVnb3JpZXMnKVwiIGNsYXNzPVwibGlua1wiIFtkaXNhYmxlZF09XCJJc0FjdGl2ZSgnL2NhdGVnb3JpZXMnKVwiPlxyXG4gICAgICAgIENhdGVnb3JpZXNcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIk5hdmlnYXRlVG8oJ2RlZXBsaW5rJylcIiBjbGFzcz1cImxpbmtcIiBbZGlzYWJsZWRdPVwiSXNBY3RpdmUoJy9kZWVwbGluaycpXCI+XHJcbiAgICAgICAgRGVlcGxpbmtcclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjZWxsIHJpZ2h0LWJsb2NrXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIkhvbWUoKVwiIGNsYXNzPVwibGlua1wiPlxyXG4gICAgICAgIEhvbWVcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gKm5nSWY9XCIhYXV0aGVudGljYXRpb25TZXJ2aWNlLkNvbmZpZ3VyYXRvclJpZ2h0cygpXCIgbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIlJlc2V0Q2FjaGUoKVwiIGNsYXNzPVwibGlua1wiPlxyXG4gICAgICAgIHt7IFJlc2V0Q2FjaGVUaXRsZSB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiAqbmdJZj1cImF1dGhlbnRpY2F0aW9uU2VydmljZS5EZVR3ZWVTbm9la2VuUmlnaHRzKClcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiTmF2aWdhdGVUbygnc2V0dGluZ3MnKVwiIGNsYXNzPVwibGlua1wiIFtkaXNhYmxlZF09XCJJc0FjdGl2ZSgnL3NldHRpbmdzJylcIj5cclxuICAgICAgICBTZXR0aW5nc1xyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFhdXRoZW50aWNhdGlvblNlcnZpY2UuQ29uZmlndXJhdG9yUmlnaHRzKCkgJiYgRG9jdW1lbnRzRW5hYmxlZCgpXCIgbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIk5hdmlnYXRlVG8oJ2RvY3VtZW50cycpXCIgY2xhc3M9XCJsaW5rXCIgW2Rpc2FibGVkXT1cIklzQWN0aXZlKCcvZG9jdW1lbnRzJylcIj5cclxuICAgICAgICBEb2N1bWVudHNcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gKm5nSWY9XCIhYXV0aGVudGljYXRpb25TZXJ2aWNlLkNvbmZpZ3VyYXRvclJpZ2h0cygpXCIgbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIk5hdmlnYXRlVG8oJ3RyYW5zbGF0ZScpXCIgY2xhc3M9XCJsaW5rXCIgW2Rpc2FibGVkXT1cIklzQWN0aXZlKCcvdHJhbnNsYXRlJylcIj5cclxuICAgICAgICBUcmFuc2xhdGVcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gKm5nSWY9XCIhYXV0aGVudGljYXRpb25TZXJ2aWNlLkNvbmZpZ3VyYXRvclJpZ2h0cygpICYmIFNob3dVcGxvYWRzKClcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiTmF2aWdhdGVUbygndXBsb2FkcycpXCIgY2xhc3M9XCJsaW5rXCIgW2Rpc2FibGVkXT1cIklzQWN0aXZlKCcvdXBsb2FkcycpXCI+XHJcbiAgICAgICAgRmlsZXNcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gKm5nSWY9XCJhdXRoZW50aWNhdGlvblNlcnZpY2UuQ29uZmlndXJhdG9yUmlnaHRzKClcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiTmF2aWdhdGVUbygnY29uZmlndXJhdG9yJylcIiBjbGFzcz1cImxpbmtcIiBbZGlzYWJsZWRdPVwiSXNBY3RpdmUoJy9jb25maWd1cmF0b3InKVwiPlxyXG4gICAgICAgIENvbmZpZ3VyYXRvclxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiAqbmdJZj1cImF1dGhlbnRpY2F0aW9uU2VydmljZS5BZG1pbmlzdHJhdG9yUmlnaHRzKClcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiTmF2aWdhdGVUbygndXNlcnMnKVwiIGNsYXNzPVwibGlua1wiIFtkaXNhYmxlZF09XCJJc0FjdGl2ZSgnL3VzZXJzJylcIj5cclxuICAgICAgICBVc2Vyc1xyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiAqbmdJZj1cImF1dGhlbnRpY2F0aW9uU2VydmljZS5EZVR3ZWVTbm9la2VuUmlnaHRzKCkgJiYgSGFuZ2ZpcmVFbmFibGVkKClcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiTmF2aWdhdGVUbygnaGFuZ2ZpcmUnKVwiIGNsYXNzPVwibGlua1wiIFtkaXNhYmxlZF09XCJJc0FjdGl2ZSgnL2hhbmdmaXJlJylcIj5cclxuICAgICAgICBIYW5nZmlyZVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiTG9nT2ZmKClcIiBjbGFzcz1cImxpbmtcIj5cclxuICAgICAgICBVaXRsb2dnZW5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==