nuxeo-development-framework 2.0.9 → 3.0.1

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.
Files changed (135) hide show
  1. package/bundles/nuxeo-development-framework.umd.js +8683 -454
  2. package/bundles/nuxeo-development-framework.umd.js.map +1 -1
  3. package/esm2015/lib/components/activities-log/activities-log/activities-log.component.js +84 -0
  4. package/esm2015/lib/components/activities-log/activities-log/activities-log.service.js +35 -0
  5. package/esm2015/lib/components/activities-log/activities-log.module.js +30 -0
  6. package/esm2015/lib/components/attachment-item/attachment-item/attachment-item.component.js +54 -0
  7. package/esm2015/lib/components/attachment-item/attachment-item.module.js +44 -0
  8. package/esm2015/lib/components/attachment-modal/attachment-modal.module.js +40 -0
  9. package/esm2015/lib/components/attachment-modal/attachments/attachments.component.js +157 -0
  10. package/esm2015/lib/components/confirmation-dialog/confirmation-dialog/confirmation-dialog.component.js +30 -0
  11. package/esm2015/lib/components/confirmation-dialog/confirmation-dialog.module.js +30 -0
  12. package/esm2015/lib/components/display-suitable-icon/display-suitable-icon/display-suitable-icon.component.js +44 -0
  13. package/esm2015/lib/components/display-suitable-icon/display-suitable-icon/icon.service.js +140 -0
  14. package/esm2015/lib/components/display-suitable-icon/display-suitable-icon.module.js +24 -0
  15. package/esm2015/lib/components/dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component.js +177 -0
  16. package/esm2015/lib/components/dynamic-fields-renderer/dynamic-fields-renderer.module.js +43 -0
  17. package/esm2015/lib/components/dynamic-tabs/dynamic-tabs/dynamic-tabs.component.js +39 -0
  18. package/esm2015/lib/components/dynamic-tabs/dynamic-tabs.module.js +34 -0
  19. package/esm2015/lib/components/file-manger/components/add-to-collection/add-to-collection.component.js +132 -0
  20. package/esm2015/lib/components/file-manger/components/clipboard/clipboard.component.js +264 -0
  21. package/esm2015/lib/components/file-manger/components/copy/copy.component.js +119 -0
  22. package/esm2015/lib/components/file-manger/components/create-directory/create-directory.component.js +91 -0
  23. package/esm2015/lib/components/file-manger/components/create-modal/create-modal.component.js +455 -0
  24. package/esm2015/lib/components/file-manger/components/creation-type/creation-type.component.js +26 -0
  25. package/esm2015/lib/components/file-manger/components/delete/delete.component.js +77 -0
  26. package/esm2015/lib/components/file-manger/components/folder-modal/folder-modal.component.js +114 -0
  27. package/esm2015/lib/components/file-manger/components/loan-request/loan-request.component.js +80 -0
  28. package/esm2015/lib/components/file-manger/components/move/move.component.js +108 -0
  29. package/esm2015/lib/components/file-manger/components/publish-dialog/publish-dialog.component.js +111 -0
  30. package/esm2015/lib/components/file-manger/components/rename/rename.component.js +86 -0
  31. package/esm2015/lib/components/file-manger/components/scan-modal/scan-modal.component.js +314 -0
  32. package/esm2015/lib/components/file-manger/components/share-dialog/share-dialog.component.js +294 -0
  33. package/esm2015/lib/components/file-manger/components/sidepanel/sidepanel.component.js +257 -0
  34. package/esm2015/lib/components/file-manger/components/template-modal/template-modal.component.js +64 -0
  35. package/esm2015/lib/components/file-manger/components/transfer-doc/transfer-doc.component.js +71 -0
  36. package/esm2015/lib/components/file-manger/components/update-modal/update-modal.component.js +358 -0
  37. package/esm2015/lib/components/file-manger/file-manager.abstract.js +1031 -0
  38. package/esm2015/lib/components/file-manger/file-manger.module.js +295 -0
  39. package/esm2015/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.js +51 -0
  40. package/esm2015/lib/components/mutiple-dynamic-form-viewer/mutiple-dynamic-form-viewer.module.js +30 -0
  41. package/esm2015/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.js +177 -0
  42. package/esm2015/lib/components/permissions/permission.service.js +118 -0
  43. package/esm2015/lib/components/permissions/permissions/permissions.component.js +232 -0
  44. package/esm2015/lib/components/permissions/permissions-template/permissions-template.component.js +117 -0
  45. package/esm2015/lib/components/permissions/permissions.module.js +71 -0
  46. package/esm2015/lib/components/select-users-by-department/select-users-by-department.module.js +47 -0
  47. package/esm2015/lib/components/select-users-by-department/select-users-by-departments/department-management.service.js +27 -0
  48. package/esm2015/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.js +116 -0
  49. package/esm2015/lib/components/user/user/user.component.js +29 -0
  50. package/esm2015/lib/components/user/user.module.js +30 -0
  51. package/esm2015/lib/directive/directive.module.js +9 -4
  52. package/esm2015/lib/directive/drag-and-drop/drag-and-drop.directive.js +46 -0
  53. package/esm2015/lib/shared/libraryShared.module.js +1 -4
  54. package/esm2015/lib/shared-services/dialog-mangment.service.js +61 -0
  55. package/esm2015/lib/shared-services/dynamic-form.service.js +241 -0
  56. package/esm2015/lib/shared-services/file-manager.adapter.js +74 -0
  57. package/esm2015/lib/shared-services/file-manager.service.js +793 -0
  58. package/esm2015/lib/shared-services/global-pdftron.service.js +46 -0
  59. package/esm2015/lib/shared-services/mainfolder.service.js +160 -0
  60. package/esm2015/lib/shared-services/publishing-document.service.js +202 -0
  61. package/esm2015/lib/shared-services/recently-viewed.service.js +57 -0
  62. package/esm2015/lib/shared-services/shared-docs.service.js +135 -0
  63. package/esm2015/lib/shared-services/shared-services.module.js +20 -0
  64. package/esm2015/lib/shared-services/upload-file.service.js +29 -0
  65. package/esm2015/lib/shared-services/upload-managment.service.js +151 -0
  66. package/esm2015/lib/shared-services/user.service.js +54 -0
  67. package/esm2015/public-api.js +65 -1
  68. package/fesm2015/nuxeo-development-framework.js +7969 -154
  69. package/fesm2015/nuxeo-development-framework.js.map +1 -1
  70. package/lib/components/activities-log/activities-log/activities-log.component.d.ts +23 -0
  71. package/lib/components/activities-log/activities-log/activities-log.service.d.ts +9 -0
  72. package/lib/components/activities-log/activities-log.module.d.ts +10 -0
  73. package/lib/components/attachment-item/attachment-item/attachment-item.component.d.ts +21 -0
  74. package/lib/components/attachment-item/attachment-item.module.d.ts +13 -0
  75. package/lib/components/attachment-modal/attachment-modal.module.d.ts +12 -0
  76. package/lib/components/attachment-modal/attachments/attachments.component.d.ts +50 -0
  77. package/lib/components/confirmation-dialog/confirmation-dialog/confirmation-dialog.component.d.ts +12 -0
  78. package/lib/components/confirmation-dialog/confirmation-dialog.module.d.ts +10 -0
  79. package/lib/components/display-suitable-icon/display-suitable-icon/display-suitable-icon.component.d.ts +17 -0
  80. package/lib/components/display-suitable-icon/display-suitable-icon/icon.service.d.ts +8 -0
  81. package/lib/components/display-suitable-icon/display-suitable-icon.module.d.ts +8 -0
  82. package/lib/components/dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component.d.ts +137 -0
  83. package/lib/components/dynamic-fields-renderer/dynamic-fields-renderer.module.d.ts +12 -0
  84. package/lib/components/dynamic-tabs/dynamic-tabs/dynamic-tabs.component.d.ts +13 -0
  85. package/lib/components/dynamic-tabs/dynamic-tabs.module.d.ts +11 -0
  86. package/lib/components/file-manger/components/add-to-collection/add-to-collection.component.d.ts +31 -0
  87. package/lib/components/file-manger/components/clipboard/clipboard.component.d.ts +41 -0
  88. package/lib/components/file-manger/components/copy/copy.component.d.ts +32 -0
  89. package/lib/components/file-manger/components/create-directory/create-directory.component.d.ts +24 -0
  90. package/lib/components/file-manger/components/create-modal/create-modal.component.d.ts +108 -0
  91. package/lib/components/file-manger/components/creation-type/creation-type.component.d.ts +11 -0
  92. package/lib/components/file-manger/components/delete/delete.component.d.ts +30 -0
  93. package/lib/components/file-manger/components/folder-modal/folder-modal.component.d.ts +56 -0
  94. package/lib/components/file-manger/components/loan-request/loan-request.component.d.ts +23 -0
  95. package/lib/components/file-manger/components/move/move.component.d.ts +32 -0
  96. package/lib/components/file-manger/components/publish-dialog/publish-dialog.component.d.ts +32 -0
  97. package/lib/components/file-manger/components/rename/rename.component.d.ts +25 -0
  98. package/lib/components/file-manger/components/scan-modal/scan-modal.component.d.ts +95 -0
  99. package/lib/components/file-manger/components/share-dialog/share-dialog.component.d.ts +58 -0
  100. package/lib/components/file-manger/components/sidepanel/sidepanel.component.d.ts +62 -0
  101. package/lib/components/file-manger/components/template-modal/template-modal.component.d.ts +34 -0
  102. package/lib/components/file-manger/components/transfer-doc/transfer-doc.component.d.ts +24 -0
  103. package/lib/components/file-manger/components/update-modal/update-modal.component.d.ts +194 -0
  104. package/lib/components/file-manger/file-manager.abstract.d.ts +173 -0
  105. package/lib/components/file-manger/file-manger.module.d.ts +59 -0
  106. package/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.d.ts +17 -0
  107. package/lib/components/mutiple-dynamic-form-viewer/mutiple-dynamic-form-viewer.module.d.ts +10 -0
  108. package/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.d.ts +44 -0
  109. package/lib/components/permissions/permission.service.d.ts +21 -0
  110. package/lib/components/permissions/permissions/permissions.component.d.ts +48 -0
  111. package/lib/components/permissions/permissions-template/permissions-template.component.d.ts +22 -0
  112. package/lib/components/permissions/permissions.module.d.ts +21 -0
  113. package/lib/components/select-users-by-department/select-users-by-department.module.d.ts +13 -0
  114. package/lib/components/select-users-by-department/select-users-by-departments/department-management.service.d.ts +10 -0
  115. package/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.d.ts +33 -0
  116. package/lib/components/user/user/user.component.d.ts +12 -0
  117. package/lib/components/user/user.module.d.ts +10 -0
  118. package/lib/directive/directive.module.d.ts +3 -2
  119. package/lib/directive/drag-and-drop/drag-and-drop.directive.d.ts +11 -0
  120. package/lib/shared/libraryShared.module.d.ts +1 -1
  121. package/lib/shared-services/dialog-mangment.service.d.ts +15 -0
  122. package/lib/shared-services/dynamic-form.service.d.ts +24 -0
  123. package/lib/shared-services/file-manager.adapter.d.ts +48 -0
  124. package/lib/shared-services/file-manager.service.d.ts +94 -0
  125. package/lib/shared-services/global-pdftron.service.d.ts +10 -0
  126. package/lib/shared-services/mainfolder.service.d.ts +32 -0
  127. package/lib/shared-services/publishing-document.service.d.ts +25 -0
  128. package/lib/shared-services/recently-viewed.service.d.ts +17 -0
  129. package/lib/shared-services/shared-docs.service.d.ts +21 -0
  130. package/lib/shared-services/shared-services.module.d.ts +7 -0
  131. package/lib/shared-services/upload-file.service.d.ts +10 -0
  132. package/lib/shared-services/upload-managment.service.d.ts +72 -0
  133. package/lib/shared-services/user.service.d.ts +12 -0
  134. package/package.json +7 -6
  135. package/public-api.d.ts +62 -0
@@ -0,0 +1,177 @@
1
+ import { Component, Inject, ViewEncapsulation } from '@angular/core';
2
+ import { FormControl, Validators } from '@angular/forms';
3
+ import { MAT_DIALOG_DATA } from '@angular/material/dialog';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/material/dialog";
6
+ import * as i2 from "../permission.service";
7
+ import * as i3 from "../../custom-toastr/services/custom-toastr.service";
8
+ import * as i4 from "@angular/forms";
9
+ import * as i5 from "../../../Core/services/translation/translation.service";
10
+ import * as i6 from "@ng-select/ng-select";
11
+ import * as i7 from "../../avatar/avatar/avatar.component";
12
+ import * as i8 from "@angular/material/progress-spinner";
13
+ import * as i9 from "../../../directive/rtl/set-rtl.directive";
14
+ import * as i10 from "@angular/common";
15
+ import * as i11 from "@ngx-translate/core";
16
+ export class AddPermissionsDialogComponent {
17
+ constructor(dialogRef, permissionService, tosterService, fb, translate, data) {
18
+ this.dialogRef = dialogRef;
19
+ this.permissionService = permissionService;
20
+ this.tosterService = tosterService;
21
+ this.fb = fb;
22
+ this.translate = translate;
23
+ this.rights = [];
24
+ this.id = null;
25
+ this.timeFrame = 'Permanent';
26
+ this.newPermission = {};
27
+ this.state = null;
28
+ this.aclId = null;
29
+ this.username = null;
30
+ this.subscriptions$ = [];
31
+ this.creating = false;
32
+ this.updating = false;
33
+ this.createAndAdd = false;
34
+ this.refreshUsers = false;
35
+ this.id = data.id;
36
+ data.rights.map(e => {
37
+ if ([
38
+ "Consumer",
39
+ "Editor",
40
+ "Contributor",
41
+ "Collaborator",
42
+ "Coordinator",
43
+ ].includes(e)) {
44
+ this.rights.push({ label: this.translate.instant(`rights.${e}`), value: e });
45
+ }
46
+ });
47
+ this.state = data.state || null;
48
+ this.aclId = data.aclId || null;
49
+ this.username = data.username || null;
50
+ this.editableRight = data.editableRight || null;
51
+ this.editableBegin = data.editableBegin || null;
52
+ this.editableEnd = data.editableEnd || null;
53
+ }
54
+ ngOnInit() {
55
+ this.permissionForm = this.fb.group({
56
+ begin: new FormControl(null),
57
+ end: new FormControl(null),
58
+ permission: new FormControl('', Validators.required),
59
+ users: new FormControl('', Validators.required),
60
+ }, { validator: this.checkDates });
61
+ //(this.editableBegin == null && this.editableEnd == null) ? this.timeFrame = 'Permanent' : this.timeFrame = 'Date-Based'
62
+ }
63
+ checkDates(group) {
64
+ if (group.controls.end.value < group.controls.begin.value) {
65
+ return { notValid: true };
66
+ }
67
+ return null;
68
+ }
69
+ createandAddAnother(permissionForm, newPermission) {
70
+ if (this.permissionForm.invalid) {
71
+ alert(this.translate.instant("permission.FILL_REQUIRED_FIELD"));
72
+ }
73
+ else {
74
+ this.createAndAdd = true;
75
+ this.newPermission = Object.assign(Object.assign({}, newPermission), { permission: newPermission.permission, users: newPermission.users, acl: "local", blockInheritance: true, notify: true });
76
+ this.subscriptions$.concat([this.permissionService.addNewLocalPermissions(this.id, this.newPermission).subscribe(res => {
77
+ if (res) {
78
+ this.tosterService.show('success', 'TOASTER.SUCCESS', "TOASTER.ADD_PERMISSION_SUCCESS");
79
+ this.permissionService.createAndAddAnother.emit();
80
+ this.refreshUserArray(newPermission.users);
81
+ this.permissionForm.reset();
82
+ this.timeFrame = 'Permanent';
83
+ this.createAndAdd = false;
84
+ }
85
+ }, err => {
86
+ this.createAndAdd = false;
87
+ this.tosterService.show('error', 'TOASTER.ERROR', "TOASTER.ADD_PERMISSION_FAIL");
88
+ })]);
89
+ }
90
+ }
91
+ refreshUserArray(users) {
92
+ this.refreshUsers = true;
93
+ let tempArr = [];
94
+ tempArr.push(...this.permissionService.departmentUsers);
95
+ this.permissionService.departmentUsers = [];
96
+ users.forEach(element => {
97
+ tempArr.forEach((user, index) => {
98
+ if (user.properties.username === element) {
99
+ tempArr.splice(index, 1);
100
+ }
101
+ });
102
+ });
103
+ this.permissionService.departmentUsers = tempArr;
104
+ setTimeout(() => {
105
+ this.refreshUsers = false;
106
+ }, 200);
107
+ }
108
+ create(newPermission) {
109
+ /*
110
+ newPermission = {
111
+ begin:null,
112
+ end:null,
113
+ permission: Read,ReadWrite....etc,
114
+ users:["fm_user"]....etc
115
+ }
116
+ */
117
+ if (this.permissionForm.invalid) {
118
+ alert(this.translate.instant("permission.FILL_REQUIRED_FIELD"));
119
+ }
120
+ else {
121
+ this.creating = true;
122
+ this.newPermission = Object.assign(Object.assign({}, newPermission), { permission: newPermission.permission, comment: "", email: null, notify: true });
123
+ this.subscriptions$.concat([this.permissionService.addNewLocalPermissions(this.id, this.newPermission).subscribe(res => {
124
+ if (res) {
125
+ this.tosterService.show('success', 'TOASTER.SUCCESS', "TOASTER.ADD_PERMISSION_SUCCESS");
126
+ this.cancel(true);
127
+ }
128
+ }, err => {
129
+ this.creating = false;
130
+ this.tosterService.show('error', 'TOASTER.ERROR', "TOASTER.ADD_PERMISSION_FAIL");
131
+ })]);
132
+ }
133
+ }
134
+ edit(newPermission) {
135
+ this.permissionForm.get('users').setValue([this.username]);
136
+ if (this.timeFrame == 'Permanent') {
137
+ this.editableBegin = this.editableEnd = null;
138
+ }
139
+ if (this.permissionForm.invalid) {
140
+ alert(this.translate.instant("permission.FILL_REQUIRED_FIELD"));
141
+ }
142
+ else {
143
+ this.updating = true;
144
+ this.newPermission = Object.assign(Object.assign({}, newPermission), { permission: newPermission.permission, begin: this.editableBegin, end: this.editableEnd, comment: "", email: null, notify: false, username: this.username.properties.username, id: this.aclId });
145
+ this.subscriptions$.concat([this.permissionService.editLocalPermissions(this.id, this.newPermission).subscribe(res => {
146
+ if (res) {
147
+ this.tosterService.show('success', 'TOASTER.SUCCESS', "TOASTER.EDIT_PERMISSION_SUCCESS");
148
+ this.cancel(true);
149
+ }
150
+ }, err => {
151
+ this.updating = false;
152
+ this.tosterService.show('error', 'TOASTER.ERROR', "TOASTER.EDIT_PERMISSION_FAIL");
153
+ })]);
154
+ }
155
+ }
156
+ cancel(result) {
157
+ this.dialogRef.close(result);
158
+ }
159
+ ngOnDestroy() {
160
+ this.subscriptions$.forEach(e => e.unsubscribe());
161
+ }
162
+ }
163
+ AddPermissionsDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: AddPermissionsDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: i2.PermissionService }, { token: i3.CustomToastrService }, { token: i4.FormBuilder }, { token: i5.TranslationService }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
164
+ AddPermissionsDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: AddPermissionsDialogComponent, selector: "app-add-permissions-dialog", ngImport: i0, template: "<form [formGroup]=\"permissionForm\" class=\"h-full\" SetRtl>\r\n\r\n <div class=\"flex flex-col h-full\">\r\n <div class=\"add-permsion-wrapper\">\r\n <span class=\"text-gray-900 text-lg\" *ngIf=\"state == 'update'\">\r\n {{ \"permission.edit_permission\" | translate }}\r\n </span>\r\n <span class=\"text-gray-900 text-lg\" *ngIf=\"state !== 'update'\">\r\n {{ \"permission.add_new_permission\" | translate }}\r\n </span>\r\n \r\n <div class=\"user-select mt-5\" *ngIf=\"state != 'update'\">\r\n <label class=\"text-base font-bold mb-0\">\r\n {{ 'permission.username' | translate}}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <ng-select \r\n [items]=\"permissionService.departmentUsers\"\r\n [placeholder]=\"'permission.placeholder' | translate\"\r\n [multiple]=\"true\"\r\n [loading]=\"refreshUsers\"\r\n bindLabel=\"displayLabel\"\r\n bindValue=\"properties.username\"\r\n formControlName=\"users\"\r\n >\r\n <ng-template ng-notfound-tmp let-searchTerm=\"searchTerm\">\r\n <div class=\"ng-option disabled\">\r\n {{'permission.ngSelect_resultNotFound' | translate}}\r\n </div>\r\n </ng-template>\r\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\">\r\n <div class=\"flex flex-col h-full\">\r\n <div class=\"flex flex-row\">\r\n <div class=\"flex-0 w-8 h-8 rounded-full overflow-hidden\" >\r\n <cts-avatar [user]=\"{\r\n properties: {\r\n firstName: item.properties.firstName,\r\n lastName: item.properties.lastName\r\n }\r\n }\">\r\n </cts-avatar>\r\n </div>\r\n <div class=\"flex flex-col pt-0 px-2\">\r\n <span>{{item.displayLabel}}</span>\r\n <span>{{item.properties.email}}-{{item.properties.username}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n <div class=\"mt-3 rights-select\">\r\n <label class=\"text-base font-bold mb-0\">\r\n {{ \"permission.Rights\" | translate }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <ng-select \r\n [items]=\"rights\"\r\n [placeholder]=\"'permission.rightsPlaceholder' | translate\"\r\n bindLabel=\"label\"\r\n bindValue=\"value\"\r\n formControlName=\"permission\" \r\n [(ngModel)]=\"editableRight\"\r\n >\r\n </ng-select>\r\n </div>\r\n \r\n <!--<div class=\"flex flex-row mt-5\">\r\n <span class=\"text-gray-900 text-base font-bold\">\r\n {{ \"permission.timeframe\" | translate }}\r\n <span class=\"text-danger\">*</span>:</span>\r\n <div class=\"mx-2\">\r\n <label class=\"inline-flex items-center\">\r\n <input type=\"radio\" class=\"form-radio\" name=\"radio\" value=\"Permanent\" [checked]=\"timeFrame == 'Permanent'\"\r\n (click)=\"timeFrame = 'Permanent'\" />\r\n <span class=\"mx-2 mt-1 text-gray-900 text-sm font-bold\">{{\r\n \"permission.permanent\" | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n <div rtl>\r\n <label class=\"inline-flex items-center\">\r\n <input type=\"radio\" class=\"form-radio\" name=\"radio\" value=\"Date-Based\" [checked]=\"timeFrame == 'Date-Based'\"\r\n (click)=\"timeFrame = 'Date-Based'\" />\r\n <span class=\"mx-2 mt-1 text-gray-900 text-sm font-bold\">{{\r\n \"permission.Date_based\" | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"flex flex-col mt-2\">\r\n <label class=\"text-base font-bold text-gray-900 mb-0\">{{ \"permission.from\" | translate }}</label>\r\n <cts-dynamic-form-hijri-dateitem \r\n formControlName=\"begin\" \r\n [isDisabled]=\"timeFrame == 'Permanent'\"\r\n [(ngModel)]=\"editableBegin\">\r\n </cts-dynamic-form-hijri-dateitem>\r\n <label class=\"text-base font-bold text-gray-900 mb-0\">{{ \"permission.to\" | translate }}</label>\r\n <cts-dynamic-form-hijri-dateitem \r\n formControlName=\"end\" \r\n [isDisabled]=\"timeFrame == 'Permanent'\"\r\n [(ngModel)]=\"editableEnd\">\r\n </cts-dynamic-form-hijri-dateitem>\r\n <div *ngIf=\"permissionForm?.errors?.notValid\">\r\n <span class=\"text-red-500 text-base -mt-3 \">{{\r\n \"permission.endStartError\" | translate\r\n }}</span>\r\n </div>\r\n </div>-->\r\n </div>\r\n\r\n <div class=\"flex flex-row justify-between mt-5 flex-wrap\">\r\n <div>\r\n <button\r\n class=\"cancelation-button mb-3\"\r\n (click)=\"cancel(false)\">\r\n {{ \"BUTTONS.Cancel\" | translate }}\r\n </button>\r\n </div>\r\n <div class=\"d-flex\">\r\n <button *ngIf=\"state != 'update'\"\r\n [disabled]=\"createAndAdd\"\r\n class=\"submission-button\"\r\n (click)=\"create(permissionForm.value)\">\r\n <span *ngIf=\"!creating;else loader\">{{ \"permission.create\" | translate }}</span>\r\n </button>\r\n <button\r\n class=\"submission-button\"\r\n (click)=\"edit(permissionForm.value)\" *ngIf=\"state == 'update'\">\r\n <span *ngIf=\"!updating;else loader\">{{ \"permission.update\" | translate }}</span>\r\n </button>\r\n <button *ngIf=\"state != 'update'\"\r\n class=\"submission-button w-44\"\r\n (click)=\"\r\n createandAddAnother(permissionForm, permissionForm.value)\r\n \">\r\n <span *ngIf=\"!createAndAdd;else loader\">{{ \"permission.createAndAdd\" | translate }}</span>\r\n </button>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ng-template #loader>\r\n <mat-spinner [value]=\"90\" [strokeWidth]=\"3\" overlay=\"true\" [diameter]=\"25\" color=\"warn\">\r\n </mat-spinner>\r\n</ng-template>\r\n", styles: [".form-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;user-select:none;flex-shrink:0;border-radius:100%;height:1em;width:1em;color:#4299e1;background-color:#fff;border-color:#e2e8f0;border-width:1px}.form-radio:checked{background-image:url(\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e\");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}@media not print{.form-radio::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-radio:focus{outline:none;box-shadow:0 0 0 3px #4299e180;border-color:#63b3ed}.select-label{color:#8f98aa;font-size:12px;margin-bottom:0}.user-select .ng-select-container,.rights-select .ng-select-container{border:1px solid #ccc!important;border-radius:5px!important;background-color:#8f98aa1a!important}.user-select .ng-select-container .ng-value-container,.rights-select .ng-select-container .ng-value-container{padding:unset!important}.user-select .ng-select-container .ng-value-container .ng-placeholder,.rights-select .ng-select-container .ng-value-container .ng-placeholder{font-size:12px}.user-select .ng-select-container .ng-value-container .ng-value,.rights-select .ng-select-container .ng-value-container .ng-value{color:#495057}.user-select .ng-select-container .ng-arrow-wrapper,.rights-select .ng-select-container .ng-arrow-wrapper{padding:0 20px}.user-select .ng-select-container .ng-input,.rights-select .ng-select-container .ng-input{left:10px;right:10px;width:auto}.user-select .ng-select-container .ng-value-container .ng-placeholder{padding-top:4px!important}.ng-select-disabled .ng-select-container{background-color:#e9ecef!important}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .option-wrapper .check-box-wrapper{position:relative}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .option-wrapper .check-box-wrapper input{visibility:hidden;width:20px;height:20px}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .option-wrapper .check-box-wrapper .icon-wrapper{position:absolute;top:0px;left:0px;width:20px;height:20px;border:1px solid blue;display:flex;justify-content:center;align-items:center}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .option-wrapper .check-box-wrapper .icon-wrapper .icon{color:#00f;display:none;justify-content:center;align-items:center;font-weight:bold}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option-selected .option-wrapper .check-box-wrapper .icon-wrapper .icon{display:flex}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option-selected .option-wrapper .label-wrapper{color:#00f}.ng-select .ng-select-focused:not(.ng-select-opened) .ng-select-container{border-color:#ccc;box-shadow:none}.add-permsion-wrapper{height:calc(100% - 50px);overflow:auto}\n"], components: [{ type: i6.NgSelectComponent, selector: "ng-select", inputs: ["markFirst", "dropdownPosition", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "bindLabel", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "virtualScroll", "openOnEnter", "appendTo", "bindValue", "appearance", "maxSelectedItems", "groupBy", "groupValue", "tabIndex", "typeahead"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { type: i7.AvatarComponent, selector: "cts-avatar", inputs: ["user"] }, { type: i8.MatSpinner, selector: "mat-spinner", inputs: ["color"] }], directives: [{ type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i9.SetRtlDirective, selector: "[SetRtl]" }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i6.ɵl, selector: "[ng-notfound-tmp]" }, { type: i6.ɵf, selector: "[ng-option-tmp]" }], pipes: { "translate": i11.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
165
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: AddPermissionsDialogComponent, decorators: [{
166
+ type: Component,
167
+ args: [{
168
+ selector: 'app-add-permissions-dialog',
169
+ templateUrl: './add-permissions-dialog.component.html',
170
+ styleUrls: ['./add-permissions-dialog.component.scss'],
171
+ encapsulation: ViewEncapsulation.None
172
+ }]
173
+ }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: i2.PermissionService }, { type: i3.CustomToastrService }, { type: i4.FormBuilder }, { type: i5.TranslationService }, { type: undefined, decorators: [{
174
+ type: Inject,
175
+ args: [MAT_DIALOG_DATA]
176
+ }] }]; } });
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXBlcm1pc3Npb25zLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3Blcm1pc3Npb25zL2FkZC1wZXJtaXNzaW9ucy1kaWFsb2cvYWRkLXBlcm1pc3Npb25zLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3Blcm1pc3Npb25zL2FkZC1wZXJtaXNzaW9ucy1kaWFsb2cvYWRkLXBlcm1pc3Npb25zLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBZ0MsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFlLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBY3pFLE1BQU0sT0FBTyw2QkFBNkI7SUFpQnhDLFlBQ1UsU0FBc0QsRUFDdkQsaUJBQW9DLEVBQ25DLGFBQWtDLEVBQ2xDLEVBQWUsRUFDZixTQUE2QixFQUNaLElBQUk7UUFMckIsY0FBUyxHQUFULFNBQVMsQ0FBNkM7UUFDdkQsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNuQyxrQkFBYSxHQUFiLGFBQWEsQ0FBcUI7UUFDbEMsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLGNBQVMsR0FBVCxTQUFTLENBQW9CO1FBckJ2QyxXQUFNLEdBQUMsRUFBRSxDQUFDO1FBQ1YsT0FBRSxHQUFHLElBQUksQ0FBQztRQUNWLGNBQVMsR0FBRSxXQUFXLENBQUM7UUFDdkIsa0JBQWEsR0FBRyxFQUFFLENBQUE7UUFDbEIsVUFBSyxHQUFHLElBQUksQ0FBQztRQUNiLFVBQUssR0FBRyxJQUFJLENBQUM7UUFDYixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBSWhCLG1CQUFjLEdBQW1CLEVBQUUsQ0FBQztRQUVwQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFRbkIsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2xCLElBQUk7Z0JBQ0YsVUFBVTtnQkFDVixRQUFRO2dCQUNSLGFBQWE7Z0JBQ2IsY0FBYztnQkFDZCxhQUFhO2FBQ2QsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO2FBQzdFO1FBQ0gsQ0FBQyxDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUM7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDO1FBQ2hELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUM7UUFDaEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQztJQUM5QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDbEMsS0FBSyxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQztZQUM1QixHQUFHLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQzFCLFVBQVUsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNwRCxLQUFLLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7U0FDaEQsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNuQyx5SEFBeUg7SUFFM0gsQ0FBQztJQUNELFVBQVUsQ0FBQyxLQUFnQjtRQUN6QixJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQTtTQUMxQjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELG1CQUFtQixDQUFDLGNBQWMsRUFBRSxhQUFrQjtRQUNwRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFO1lBQy9CLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUE7U0FDaEU7YUFBTTtZQUNMLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxhQUFhLG1DQUNiLGFBQWEsS0FDaEIsVUFBVSxFQUFFLGFBQWEsQ0FBQyxVQUFVLEVBQ3BDLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSyxFQUMxQixHQUFHLEVBQUUsT0FBTyxFQUNaLGdCQUFnQixFQUFFLElBQUksRUFDdEIsTUFBTSxFQUFFLElBQUksR0FDYixDQUFBO1lBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNySCxJQUFJLEdBQUcsRUFBRTt3QkFDUCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsZ0NBQWdDLENBQUMsQ0FBQzt3QkFDeEYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxDQUFDO3dCQUNsRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUMzQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQzt3QkFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRSxLQUFLLENBQUM7cUJBQzFCO2dCQUNILENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRTtvQkFDUCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztvQkFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSw2QkFBNkIsQ0FBQyxDQUFBO2dCQUNsRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7U0FDTDtJQUVILENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxLQUFLO1FBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksT0FBTyxHQUFFLEVBQUUsQ0FBQztRQUNoQixPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBQzFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDdEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBQyxLQUFLLEVBQUUsRUFBRTtnQkFDN0IsSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsS0FBSyxPQUFPLEVBQUU7b0JBQ3ZDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFBO2lCQUN4QjtZQUNILENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFDTCxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQztRQUNqRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDNUIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUNELE1BQU0sQ0FBQyxhQUFrQjtRQUN2Qjs7Ozs7OztVQU9FO1FBQ0osSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRTtZQUMvQixLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQUFBO1NBQzlEO2FBQ0k7WUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLENBQUMsYUFBYSxtQ0FDYixhQUFhLEtBQ2hCLFVBQVUsRUFBRSxhQUFhLENBQUMsVUFBVSxFQUNwQyxPQUFPLEVBQUUsRUFBRSxFQUNYLEtBQUssRUFBRSxJQUFJLEVBQ1gsTUFBTSxFQUFFLElBQUksR0FDYixDQUFBO1lBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNySCxJQUFJLEdBQUcsRUFBRTt3QkFDUCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsZ0NBQWdDLENBQUMsQ0FBQzt3QkFDeEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDbkI7Z0JBQ0gsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFO29CQUNQLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO29CQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLDZCQUE2QixDQUFDLENBQUE7Z0JBQ2xGLENBQUMsQ0FDQSxDQUFDLENBQUMsQ0FBQTtTQUNKO0lBRUgsQ0FBQztJQUVELElBQUksQ0FBQyxhQUFrQjtRQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUMxRCxJQUFHLElBQUksQ0FBQyxTQUFTLElBQUksV0FBVyxFQUFFO1lBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7U0FDaEQ7UUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFO1lBQy9CLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUE7U0FDaEU7YUFBTTtZQUNMLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxhQUFhLG1DQUNiLGFBQWEsS0FDaEIsVUFBVSxFQUFFLGFBQWEsQ0FBQyxVQUFVLEVBQ3BDLEtBQUssRUFBQyxJQUFJLENBQUMsYUFBYSxFQUN4QixHQUFHLEVBQUMsSUFBSSxDQUFDLFdBQVcsRUFDcEIsT0FBTyxFQUFFLEVBQUUsRUFDWCxLQUFLLEVBQUUsSUFBSSxFQUNYLE1BQU0sRUFBRSxLQUFLLEVBQ2IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFDM0MsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEdBQ2YsQ0FBQTtZQUNELElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDbkgsSUFBSSxHQUFHLEVBQUU7d0JBQ1AsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFLGlDQUFpQyxDQUFDLENBQUM7d0JBQ3pGLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQ25CO2dCQUNILENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRTtvQkFDUCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztvQkFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSw4QkFBOEIsQ0FBQyxDQUFBO2dCQUNuRixDQUFDLENBQ0EsQ0FBQyxDQUFDLENBQUE7U0FDSjtJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTTtRQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtJQUNuRCxDQUFDOzswSEFwTFUsNkJBQTZCLCtLQXVCOUIsZUFBZTs4R0F2QmQsNkJBQTZCLGtFQ2hCMUMseXdNQXFKQTsyRkRySWEsNkJBQTZCO2tCQU56QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLFdBQVcsRUFBRSx5Q0FBeUM7b0JBQ3RELFNBQVMsRUFBRSxDQUFDLHlDQUF5QyxDQUFDO29CQUN0RCxhQUFhLEVBQUMsaUJBQWlCLENBQUMsSUFBSTtpQkFDckM7OzBCQXdCSSxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgTmdTZWxlY3RDb21wb25lbnQgfSBmcm9tICdAbmctc2VsZWN0L25nLXNlbGVjdCc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJy4uL3Blcm1pc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEN1c3RvbVRvYXN0clNlcnZpY2UgfSBmcm9tICcuLi8uLi9jdXN0b20tdG9hc3RyL3NlcnZpY2VzL2N1c3RvbS10b2FzdHIuc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL0NvcmUvc2VydmljZXMvdHJhbnNsYXRpb24vdHJhbnNsYXRpb24uc2VydmljZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtYWRkLXBlcm1pc3Npb25zLWRpYWxvZycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1wZXJtaXNzaW9ucy1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2FkZC1wZXJtaXNzaW9ucy1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOlZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIEFkZFBlcm1pc3Npb25zRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHJpZ2h0cz1bXTtcclxuICBpZCA9IG51bGw7XHJcbiAgdGltZUZyYW1lPSAnUGVybWFuZW50JztcclxuICBuZXdQZXJtaXNzaW9uID0ge31cclxuICBzdGF0ZSA9IG51bGw7XHJcbiAgYWNsSWQgPSBudWxsO1xyXG4gIHVzZXJuYW1lID0gbnVsbDtcclxuICBlZGl0YWJsZVJpZ2h0Oy8vdG8gcGFzcyBSaWdodHMgdG8gZGlhbG9nIGlmIHdlIGFyZSBpbiB1cGRhdGUgbW9kZVxyXG4gIGVkaXRhYmxlQmVnaW47Ly90byBwYXNzIGJlZ2luRGF0ZSB0byBkaWFsb2cgaWYgd2UgYXJlIGluIHVwZGF0ZSBtb2RlXHJcbiAgZWRpdGFibGVFbmQ7Ly90byBwYXNzIGVuZERhdGUgdG8gZGlhbG9nIGlmIHdlIGFyZSBpbiB1cGRhdGUgbW9kZVxyXG4gIHN1YnNjcmlwdGlvbnMkOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIHBlcm1pc3Npb25Gb3JtOiBGb3JtR3JvdXA7XHJcbiAgY3JlYXRpbmcgPSBmYWxzZTtcclxuICB1cGRhdGluZyA9IGZhbHNlO1xyXG4gIGNyZWF0ZUFuZEFkZCA9IGZhbHNlO1xyXG4gIHJlZnJlc2hVc2VycyA9IGZhbHNlO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxBZGRQZXJtaXNzaW9uc0RpYWxvZ0NvbXBvbmVudD4sXHJcbiAgICBwdWJsaWMgcGVybWlzc2lvblNlcnZpY2U6IFBlcm1pc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0b3N0ZXJTZXJ2aWNlOiBDdXN0b21Ub2FzdHJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRpb25TZXJ2aWNlLFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIGRhdGEpIHtcclxuICAgIHRoaXMuaWQgPSBkYXRhLmlkO1xyXG4gICAgZGF0YS5yaWdodHMubWFwKGUgPT4ge1xyXG4gICAgICBpZiAoW1xyXG4gICAgICAgIFwiQ29uc3VtZXJcIixcclxuICAgICAgICBcIkVkaXRvclwiLFxyXG4gICAgICAgIFwiQ29udHJpYnV0b3JcIixcclxuICAgICAgICBcIkNvbGxhYm9yYXRvclwiLFxyXG4gICAgICAgIFwiQ29vcmRpbmF0b3JcIixcclxuICAgICAgXS5pbmNsdWRlcyhlKSkge1xyXG4gICAgICAgIHRoaXMucmlnaHRzLnB1c2goeyBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgcmlnaHRzLiR7ZX1gKSwgdmFsdWU6IGUgfSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHRoaXMuc3RhdGUgPSBkYXRhLnN0YXRlIHx8IG51bGw7XHJcbiAgICB0aGlzLmFjbElkID0gZGF0YS5hY2xJZCB8fCBudWxsO1xyXG4gICAgdGhpcy51c2VybmFtZSA9IGRhdGEudXNlcm5hbWUgfHwgbnVsbDtcclxuICAgIHRoaXMuZWRpdGFibGVSaWdodCA9IGRhdGEuZWRpdGFibGVSaWdodCB8fCBudWxsO1xyXG4gICAgdGhpcy5lZGl0YWJsZUJlZ2luID0gZGF0YS5lZGl0YWJsZUJlZ2luIHx8IG51bGw7XHJcbiAgICB0aGlzLmVkaXRhYmxlRW5kID0gZGF0YS5lZGl0YWJsZUVuZCB8fCBudWxsO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnBlcm1pc3Npb25Gb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIGJlZ2luOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcbiAgICAgIGVuZDogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG4gICAgICBwZXJtaXNzaW9uOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxyXG4gICAgICB1c2VyczogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgIH0sIHsgdmFsaWRhdG9yOiB0aGlzLmNoZWNrRGF0ZXMgfSk7XHJcbiAgICAvLyh0aGlzLmVkaXRhYmxlQmVnaW4gPT0gbnVsbCAmJiB0aGlzLmVkaXRhYmxlRW5kID09IG51bGwpID8gdGhpcy50aW1lRnJhbWUgPSAnUGVybWFuZW50JyA6IHRoaXMudGltZUZyYW1lID0gJ0RhdGUtQmFzZWQnXHJcblxyXG4gIH1cclxuICBjaGVja0RhdGVzKGdyb3VwOiBGb3JtR3JvdXApIHtcclxuICAgIGlmIChncm91cC5jb250cm9scy5lbmQudmFsdWUgPCBncm91cC5jb250cm9scy5iZWdpbi52YWx1ZSkge1xyXG4gICAgICByZXR1cm4geyBub3RWYWxpZDogdHJ1ZSB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgY3JlYXRlYW5kQWRkQW5vdGhlcihwZXJtaXNzaW9uRm9ybSwgbmV3UGVybWlzc2lvbjogYW55KSB7XHJcbiAgICBpZiAodGhpcy5wZXJtaXNzaW9uRm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIGFsZXJ0KHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJwZXJtaXNzaW9uLkZJTExfUkVRVUlSRURfRklFTERcIikpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNyZWF0ZUFuZEFkZCA9IHRydWU7XHJcbiAgICAgIHRoaXMubmV3UGVybWlzc2lvbiA9IHtcclxuICAgICAgICAuLi5uZXdQZXJtaXNzaW9uLFxyXG4gICAgICAgIHBlcm1pc3Npb246IG5ld1Blcm1pc3Npb24ucGVybWlzc2lvbixcclxuICAgICAgICB1c2VyczogbmV3UGVybWlzc2lvbi51c2VycyxcclxuICAgICAgICBhY2w6IFwibG9jYWxcIixcclxuICAgICAgICBibG9ja0luaGVyaXRhbmNlOiB0cnVlLFxyXG4gICAgICAgIG5vdGlmeTogdHJ1ZSxcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMkLmNvbmNhdChbdGhpcy5wZXJtaXNzaW9uU2VydmljZS5hZGROZXdMb2NhbFBlcm1pc3Npb25zKHRoaXMuaWQsIHRoaXMubmV3UGVybWlzc2lvbikuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgdGhpcy50b3N0ZXJTZXJ2aWNlLnNob3coJ3N1Y2Nlc3MnLCAnVE9BU1RFUi5TVUNDRVNTJywgXCJUT0FTVEVSLkFERF9QRVJNSVNTSU9OX1NVQ0NFU1NcIik7XHJcbiAgICAgICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLmNyZWF0ZUFuZEFkZEFub3RoZXIuZW1pdCgpO1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoVXNlckFycmF5KG5ld1Blcm1pc3Npb24udXNlcnMpO1xyXG4gICAgICAgICAgdGhpcy5wZXJtaXNzaW9uRm9ybS5yZXNldCgpO1xyXG4gICAgICAgICAgdGhpcy50aW1lRnJhbWUgPSAnUGVybWFuZW50JztcclxuICAgICAgICAgIHRoaXMuY3JlYXRlQW5kQWRkID1mYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVyciA9PiB7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVBbmRBZGQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRvc3RlclNlcnZpY2Uuc2hvdygnZXJyb3InLCAnVE9BU1RFUi5FUlJPUicsIFwiVE9BU1RFUi5BRERfUEVSTUlTU0lPTl9GQUlMXCIpXHJcbiAgICAgIH0pXSlcclxuICAgIH1cclxuXHJcbiAgfVxyXG4gIHJlZnJlc2hVc2VyQXJyYXkodXNlcnMpIHtcclxuICAgIHRoaXMucmVmcmVzaFVzZXJzID0gdHJ1ZTtcclxuICAgIGxldCB0ZW1wQXJyPSBbXTtcclxuICAgIHRlbXBBcnIucHVzaCguLi50aGlzLnBlcm1pc3Npb25TZXJ2aWNlLmRlcGFydG1lbnRVc2Vycyk7XHJcbiAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLmRlcGFydG1lbnRVc2VycyA9IFtdO1xyXG4gICAgICB1c2Vycy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgIHRlbXBBcnIuZm9yRWFjaCgodXNlcixpbmRleCkgPT4ge1xyXG4gICAgICAgICAgaWYodXNlci5wcm9wZXJ0aWVzLnVzZXJuYW1lID09PSBlbGVtZW50KSB7XHJcbiAgICAgICAgICAgIHRlbXBBcnIuc3BsaWNlKGluZGV4LDEpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLmRlcGFydG1lbnRVc2VycyA9IHRlbXBBcnI7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5yZWZyZXNoVXNlcnMgPSBmYWxzZTtcclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG4gIGNyZWF0ZShuZXdQZXJtaXNzaW9uOiBhbnkpIHtcclxuICAgIC8qXHJcbiAgICBuZXdQZXJtaXNzaW9uID0ge1xyXG4gICAgICBiZWdpbjpudWxsLFxyXG4gICAgICBlbmQ6bnVsbCxcclxuICAgICAgcGVybWlzc2lvbjogUmVhZCxSZWFkV3JpdGUuLi4uZXRjLFxyXG4gICAgICB1c2VyczpbXCJmbV91c2VyXCJdLi4uLmV0Y1xyXG4gICAgfVxyXG4gICAgKi9cclxuICBpZiAodGhpcy5wZXJtaXNzaW9uRm9ybS5pbnZhbGlkKSB7XHJcbiAgICBhbGVydCh0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwicGVybWlzc2lvbi5GSUxMX1JFUVVJUkVEX0ZJRUxEXCIpKVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuY3JlYXRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLm5ld1Blcm1pc3Npb24gPSB7XHJcbiAgICAgICAgLi4ubmV3UGVybWlzc2lvbixcclxuICAgICAgICBwZXJtaXNzaW9uOiBuZXdQZXJtaXNzaW9uLnBlcm1pc3Npb24sXHJcbiAgICAgICAgY29tbWVudDogXCJcIixcclxuICAgICAgICBlbWFpbDogbnVsbCxcclxuICAgICAgICBub3RpZnk6IHRydWUsXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zJC5jb25jYXQoW3RoaXMucGVybWlzc2lvblNlcnZpY2UuYWRkTmV3TG9jYWxQZXJtaXNzaW9ucyh0aGlzLmlkLCB0aGlzLm5ld1Blcm1pc3Npb24pLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIHRoaXMudG9zdGVyU2VydmljZS5zaG93KCdzdWNjZXNzJywgJ1RPQVNURVIuU1VDQ0VTUycsIFwiVE9BU1RFUi5BRERfUEVSTUlTU0lPTl9TVUNDRVNTXCIpO1xyXG4gICAgICAgICAgdGhpcy5jYW5jZWwodHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgIHRoaXMuY3JlYXRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRvc3RlclNlcnZpY2Uuc2hvdygnZXJyb3InLCAnVE9BU1RFUi5FUlJPUicsIFwiVE9BU1RFUi5BRERfUEVSTUlTU0lPTl9GQUlMXCIpXHJcbiAgICAgIH1cclxuICAgICAgKV0pXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZWRpdChuZXdQZXJtaXNzaW9uOiBhbnkpIHtcclxuICAgIHRoaXMucGVybWlzc2lvbkZvcm0uZ2V0KCd1c2VycycpLnNldFZhbHVlKFt0aGlzLnVzZXJuYW1lXSlcclxuICAgIGlmKHRoaXMudGltZUZyYW1lID09ICdQZXJtYW5lbnQnKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0YWJsZUJlZ2luID0gdGhpcy5lZGl0YWJsZUVuZCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wZXJtaXNzaW9uRm9ybS5pbnZhbGlkKSB7IFxyXG4gICAgICBhbGVydCh0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwicGVybWlzc2lvbi5GSUxMX1JFUVVJUkVEX0ZJRUxEXCIpKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy51cGRhdGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMubmV3UGVybWlzc2lvbiA9IHtcclxuICAgICAgICAuLi5uZXdQZXJtaXNzaW9uLFxyXG4gICAgICAgIHBlcm1pc3Npb246IG5ld1Blcm1pc3Npb24ucGVybWlzc2lvbixcclxuICAgICAgICBiZWdpbjp0aGlzLmVkaXRhYmxlQmVnaW4sXHJcbiAgICAgICAgZW5kOnRoaXMuZWRpdGFibGVFbmQsXHJcbiAgICAgICAgY29tbWVudDogXCJcIixcclxuICAgICAgICBlbWFpbDogbnVsbCxcclxuICAgICAgICBub3RpZnk6IGZhbHNlLFxyXG4gICAgICAgIHVzZXJuYW1lOiB0aGlzLnVzZXJuYW1lLnByb3BlcnRpZXMudXNlcm5hbWUsXHJcbiAgICAgICAgaWQ6IHRoaXMuYWNsSWRcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMkLmNvbmNhdChbdGhpcy5wZXJtaXNzaW9uU2VydmljZS5lZGl0TG9jYWxQZXJtaXNzaW9ucyh0aGlzLmlkLCB0aGlzLm5ld1Blcm1pc3Npb24pLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIHRoaXMudG9zdGVyU2VydmljZS5zaG93KCdzdWNjZXNzJywgJ1RPQVNURVIuU1VDQ0VTUycsIFwiVE9BU1RFUi5FRElUX1BFUk1JU1NJT05fU1VDQ0VTU1wiKTtcclxuICAgICAgICAgIHRoaXMuY2FuY2VsKHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICB0aGlzLnVwZGF0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50b3N0ZXJTZXJ2aWNlLnNob3coJ2Vycm9yJywgJ1RPQVNURVIuRVJST1InLCBcIlRPQVNURVIuRURJVF9QRVJNSVNTSU9OX0ZBSUxcIilcclxuICAgICAgfVxyXG4gICAgICApXSlcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgY2FuY2VsKHJlc3VsdCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UocmVzdWx0KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zJC5mb3JFYWNoKGUgPT4gZS51bnN1YnNjcmliZSgpKVxyXG4gIH1cclxufVxyXG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cInBlcm1pc3Npb25Gb3JtXCIgY2xhc3M9XCJoLWZ1bGxcIiBTZXRSdGw+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGgtZnVsbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImFkZC1wZXJtc2lvbi13cmFwcGVyXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ncmF5LTkwMCB0ZXh0LWxnXCIgKm5nSWY9XCJzdGF0ZSA9PSAndXBkYXRlJ1wiPlxyXG4gICAgICAgIHt7IFwicGVybWlzc2lvbi5lZGl0X3Blcm1pc3Npb25cIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ncmF5LTkwMCB0ZXh0LWxnXCIgKm5nSWY9XCJzdGF0ZSAhPT0gJ3VwZGF0ZSdcIj5cclxuICAgICAgICB7eyBcInBlcm1pc3Npb24uYWRkX25ld19wZXJtaXNzaW9uXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgPC9zcGFuPlxyXG4gIFxyXG4gICAgICA8ZGl2IGNsYXNzPVwidXNlci1zZWxlY3QgbXQtNVwiICpuZ0lmPVwic3RhdGUgIT0gJ3VwZGF0ZSdcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ZXh0LWJhc2UgZm9udC1ib2xkIG1iLTBcIj5cclxuICAgICAgICAgIHt7ICdwZXJtaXNzaW9uLnVzZXJuYW1lJyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICA8c3BhbiAgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPio8L3NwYW4+XHJcbiAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8bmctc2VsZWN0IFxyXG4gICAgICAgICAgW2l0ZW1zXT1cInBlcm1pc3Npb25TZXJ2aWNlLmRlcGFydG1lbnRVc2Vyc1wiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3Blcm1pc3Npb24ucGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgIFttdWx0aXBsZV09XCJ0cnVlXCJcclxuICAgICAgICAgIFtsb2FkaW5nXT1cInJlZnJlc2hVc2Vyc1wiXHJcbiAgICAgICAgICBiaW5kTGFiZWw9XCJkaXNwbGF5TGFiZWxcIlxyXG4gICAgICAgICAgYmluZFZhbHVlPVwicHJvcGVydGllcy51c2VybmFtZVwiXHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ1c2Vyc1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBuZy1ub3Rmb3VuZC10bXAgbGV0LXNlYXJjaFRlcm09XCJzZWFyY2hUZXJtXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibmctb3B0aW9uIGRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAge3sncGVybWlzc2lvbi5uZ1NlbGVjdF9yZXN1bHROb3RGb3VuZCcgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZy1vcHRpb24tdG1wIGxldC1pdGVtPVwiaXRlbVwiIGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGgtZnVsbFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC0wIHctOCBoLTggcm91bmRlZC1mdWxsIG92ZXJmbG93LWhpZGRlblwiID5cclxuICAgICAgICAgICAgICAgICAgPGN0cy1hdmF0YXIgW3VzZXJdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGZpcnN0TmFtZTogaXRlbS5wcm9wZXJ0aWVzLmZpcnN0TmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgIGxhc3ROYW1lOiBpdGVtLnByb3BlcnRpZXMubGFzdE5hbWVcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9jdHMtYXZhdGFyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCAgcHQtMCBweC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7aXRlbS5kaXNwbGF5TGFiZWx9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3tpdGVtLnByb3BlcnRpZXMuZW1haWx9fS17e2l0ZW0ucHJvcGVydGllcy51c2VybmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLXNlbGVjdD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIHJpZ2h0cy1zZWxlY3RcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ZXh0LWJhc2UgZm9udC1ib2xkIG1iLTBcIj5cclxuICAgICAgICAgIHt7IFwicGVybWlzc2lvbi5SaWdodHNcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPio8L3NwYW4+XHJcbiAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8bmctc2VsZWN0IFxyXG4gICAgICAgICAgW2l0ZW1zXT1cInJpZ2h0c1wiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3Blcm1pc3Npb24ucmlnaHRzUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgIGJpbmRMYWJlbD1cImxhYmVsXCJcclxuICAgICAgICAgIGJpbmRWYWx1ZT1cInZhbHVlXCJcclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBlcm1pc3Npb25cIiBcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZWRpdGFibGVSaWdodFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDwvbmctc2VsZWN0PlxyXG4gICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgPCEtLTxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IG10LTVcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZ3JheS05MDAgdGV4dC1iYXNlIGZvbnQtYm9sZFwiPlxyXG4gICAgICAgICAge3sgXCJwZXJtaXNzaW9uLnRpbWVmcmFtZVwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj46PC9zcGFuPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteC0yXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYWRpb1wiIGNsYXNzPVwiZm9ybS1yYWRpb1wiIG5hbWU9XCJyYWRpb1wiIHZhbHVlPVwiUGVybWFuZW50XCIgW2NoZWNrZWRdPVwidGltZUZyYW1lID09ICdQZXJtYW5lbnQnXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwidGltZUZyYW1lID0gJ1Blcm1hbmVudCdcIiAvPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTIgbXQtMSB0ZXh0LWdyYXktOTAwIHRleHQtc20gZm9udC1ib2xkXCI+e3tcclxuICAgICAgICAgICAgICBcInBlcm1pc3Npb24ucGVybWFuZW50XCIgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBydGw+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYWRpb1wiIGNsYXNzPVwiZm9ybS1yYWRpb1wiIG5hbWU9XCJyYWRpb1wiIHZhbHVlPVwiRGF0ZS1CYXNlZFwiIFtjaGVja2VkXT1cInRpbWVGcmFtZSA9PSAnRGF0ZS1CYXNlZCdcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0aW1lRnJhbWUgPSAnRGF0ZS1CYXNlZCdcIiAvPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTIgbXQtMSB0ZXh0LWdyYXktOTAwIHRleHQtc20gZm9udC1ib2xkXCI+e3tcclxuICAgICAgICAgICAgICBcInBlcm1pc3Npb24uRGF0ZV9iYXNlZFwiIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgbXQtMlwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInRleHQtYmFzZSBmb250LWJvbGQgdGV4dC1ncmF5LTkwMCBtYi0wXCI+e3sgXCJwZXJtaXNzaW9uLmZyb21cIiB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XHJcbiAgICAgICAgPGN0cy1keW5hbWljLWZvcm0taGlqcmktZGF0ZWl0ZW0gXHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJiZWdpblwiIFxyXG4gICAgICAgICAgW2lzRGlzYWJsZWRdPVwidGltZUZyYW1lID09ICdQZXJtYW5lbnQnXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZWRpdGFibGVCZWdpblwiPlxyXG4gICAgICAgIDwvY3RzLWR5bmFtaWMtZm9ybS1oaWpyaS1kYXRlaXRlbT5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ZXh0LWJhc2UgZm9udC1ib2xkIHRleHQtZ3JheS05MDAgbWItMFwiPnt7IFwicGVybWlzc2lvbi50b1wiIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cclxuICAgICAgICA8Y3RzLWR5bmFtaWMtZm9ybS1oaWpyaS1kYXRlaXRlbSBcclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImVuZFwiIFxyXG4gICAgICAgICAgW2lzRGlzYWJsZWRdPVwidGltZUZyYW1lID09ICdQZXJtYW5lbnQnXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZWRpdGFibGVFbmRcIj5cclxuICAgICAgICA8L2N0cy1keW5hbWljLWZvcm0taGlqcmktZGF0ZWl0ZW0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInBlcm1pc3Npb25Gb3JtPy5lcnJvcnM/Lm5vdFZhbGlkXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMCB0ZXh0LWJhc2UgLW10LTMgXCI+e3tcclxuICAgICAgICAgICAgXCJwZXJtaXNzaW9uLmVuZFN0YXJ0RXJyb3JcIiB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+LS0+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW4gbXQtNSBmbGV4LXdyYXBcIj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cImNhbmNlbGF0aW9uLWJ1dHRvbiBtYi0zXCJcclxuICAgICAgICAgIChjbGljayk9XCJjYW5jZWwoZmFsc2UpXCI+XHJcbiAgICAgICAgICB7eyBcIkJVVFRPTlMuQ2FuY2VsXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwic3RhdGUgIT0gJ3VwZGF0ZSdcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImNyZWF0ZUFuZEFkZFwiXHJcbiAgICAgICAgICBjbGFzcz1cInN1Ym1pc3Npb24tYnV0dG9uXCJcclxuICAgICAgICAgIChjbGljayk9XCJjcmVhdGUocGVybWlzc2lvbkZvcm0udmFsdWUpXCI+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjcmVhdGluZztlbHNlIGxvYWRlclwiPnt7IFwicGVybWlzc2lvbi5jcmVhdGVcIiB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJzdWJtaXNzaW9uLWJ1dHRvblwiXHJcbiAgICAgICAgKGNsaWNrKT1cImVkaXQocGVybWlzc2lvbkZvcm0udmFsdWUpXCIgKm5nSWY9XCJzdGF0ZSA9PSAndXBkYXRlJ1wiPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIXVwZGF0aW5nO2Vsc2UgbG9hZGVyXCI+e3sgXCJwZXJtaXNzaW9uLnVwZGF0ZVwiIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwic3RhdGUgIT0gJ3VwZGF0ZSdcIlxyXG4gICAgICAgICAgY2xhc3M9XCJzdWJtaXNzaW9uLWJ1dHRvbiB3LTQ0XCJcclxuICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWFuZEFkZEFub3RoZXIocGVybWlzc2lvbkZvcm0sIHBlcm1pc3Npb25Gb3JtLnZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNyZWF0ZUFuZEFkZDtlbHNlIGxvYWRlclwiPnt7IFwicGVybWlzc2lvbi5jcmVhdGVBbmRBZGRcIiB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Zvcm0+XHJcblxyXG48bmctdGVtcGxhdGUgI2xvYWRlcj5cclxuICA8bWF0LXNwaW5uZXIgW3ZhbHVlXT1cIjkwXCIgW3N0cm9rZVdpZHRoXT1cIjNcIiBvdmVybGF5PVwidHJ1ZVwiIFtkaWFtZXRlcl09XCIyNVwiIGNvbG9yPVwid2FyblwiPlxyXG4gIDwvbWF0LXNwaW5uZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
@@ -0,0 +1,118 @@
1
+ import { Injectable, EventEmitter, Inject } from '@angular/core';
2
+ import { from } from 'rxjs';
3
+ import { catchError } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../Core/services/nuxeo/nuxeo.service";
6
+ export class PermissionService {
7
+ constructor(nuxeoService, environment) {
8
+ this.nuxeoService = nuxeoService;
9
+ this.environment = environment;
10
+ this.disableClickOutSide = false;
11
+ this.departmentUsers = [];
12
+ this.createAndAddAnother = new EventEmitter();
13
+ }
14
+ getPermissionsForDocument(uid) {
15
+ return from(this.nuxeoService.nuxeoClient
16
+ .request(`/id/${uid}`)
17
+ .queryParams({
18
+ "fetch-acls": 'username,creator,extended',
19
+ "depth": 'children',
20
+ "time": '1635249129268'
21
+ })
22
+ .get({
23
+ headers: {
24
+ 'enrichers-document': "acls, permissions, userVisiblePermissions",
25
+ 'Content-Type': "application/json",
26
+ "accept": "text/plain,application/json, application/json",
27
+ },
28
+ })).pipe(catchError((err) => {
29
+ throw err;
30
+ }));
31
+ }
32
+ blockPermissionInheritance(uid) {
33
+ return from(this.nuxeoService.nuxeoClient
34
+ .operation('Document.BlockPermissionInheritance', {
35
+ url: `${this.environment.nuxeo}${this.environment.customAutomation}`,
36
+ })
37
+ .input(uid)
38
+ .params({
39
+ acl: "local",
40
+ })
41
+ .context({})
42
+ .execute()).pipe(catchError((err) => {
43
+ throw err;
44
+ }));
45
+ }
46
+ unblockPermissionInheritance(uid) {
47
+ return from(this.nuxeoService.nuxeoClient
48
+ .operation('Document.UnblockPermissionInheritance', {
49
+ url: `${this.environment.nuxeo}${this.environment.customAutomation}`,
50
+ })
51
+ .input(uid)
52
+ .params({
53
+ acl: "local",
54
+ })
55
+ .context({})
56
+ .execute()).pipe(catchError((err) => {
57
+ throw err;
58
+ }));
59
+ }
60
+ addNewLocalPermissions(uid, formData) {
61
+ return from(this.nuxeoService.nuxeoClient
62
+ .operation('Document.AddPermission', {
63
+ url: `${this.environment.nuxeo}${this.environment.customAutomation}`,
64
+ })
65
+ .input(uid)
66
+ .params(Object.assign({}, formData))
67
+ .context({})
68
+ .execute()).pipe(catchError((err) => {
69
+ throw err;
70
+ }));
71
+ }
72
+ editLocalPermissions(uid, formData) {
73
+ return from(this.nuxeoService.nuxeoClient
74
+ .operation('Document.ReplacePermission', {
75
+ url: `${this.environment.nuxeo}${this.environment.customAutomation}`,
76
+ })
77
+ .input(uid)
78
+ .params(Object.assign({}, formData))
79
+ .context({})
80
+ .execute()).pipe(catchError((err) => {
81
+ throw err;
82
+ }));
83
+ }
84
+ deleteLocalPermissions(uid, param) {
85
+ return from(this.nuxeoService.nuxeoClient
86
+ .operation('Document.RemovePermission', {
87
+ url: `${this.environment.nuxeo}${this.environment.customAutomation}`,
88
+ })
89
+ .input(uid)
90
+ .params({
91
+ id: param
92
+ })
93
+ .context({})
94
+ .execute()).pipe(catchError((err) => {
95
+ throw err;
96
+ }));
97
+ }
98
+ getDepMembers(deptTitle, params = {}) {
99
+ return from(this.nuxeoService.nuxeoClient
100
+ .request(`group-members/all-members/dms_user_${deptTitle}`)
101
+ .queryParams(Object.assign({ q: '*' }, params))
102
+ .get()).pipe(catchError((err) => {
103
+ throw err;
104
+ }));
105
+ }
106
+ }
107
+ PermissionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: PermissionService, deps: [{ token: i1.NuxeoService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
108
+ PermissionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: PermissionService, providedIn: 'root' });
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: PermissionService, decorators: [{
110
+ type: Injectable,
111
+ args: [{
112
+ providedIn: 'root'
113
+ }]
114
+ }], ctorParameters: function () { return [{ type: i1.NuxeoService }, { type: undefined, decorators: [{
115
+ type: Inject,
116
+ args: ['environment']
117
+ }] }]; } });
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9wZXJtaXNzaW9ucy9wZXJtaXNzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxJQUFJLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFNNUMsTUFBTSxPQUFPLGlCQUFpQjtJQUk1QixZQUFvQixZQUEwQixFQUFrQyxXQUFXO1FBQXZFLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQWtDLGdCQUFXLEdBQVgsV0FBVyxDQUFBO1FBSDNGLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUM1QixvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQix3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ3NELENBQUM7SUFFaEcseUJBQXlCLENBQUMsR0FBUTtRQUNoQyxPQUFPLElBQUksQ0FDVCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVc7YUFDMUIsT0FBTyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7YUFDckIsV0FBVyxDQUFDO1lBQ1gsWUFBWSxFQUFFLDJCQUEyQjtZQUN6QyxPQUFPLEVBQUUsVUFBVTtZQUNuQixNQUFNLEVBQUUsZUFBZTtTQUN4QixDQUFDO2FBQ0QsR0FBRyxDQUFDO1lBQ0gsT0FBTyxFQUFFO2dCQUNQLG9CQUFvQixFQUFFLDJDQUEyQztnQkFDakUsY0FBYyxFQUFFLGtCQUFrQjtnQkFDbEMsUUFBUSxFQUFFLCtDQUErQzthQUMxRDtTQUNGLENBQUMsQ0FDTCxDQUFDLElBQUksQ0FDSixVQUFV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R0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRTtTQUNyRSxDQUFDO2FBQ0QsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNWLE1BQU0sQ0FBQztZQUNOLEVBQUUsRUFBQyxLQUFLO1NBQ1QsQ0FBQzthQUNELE9BQU8sQ0FBQyxFQUFFLENBQUM7YUFDWCxPQUFPLEVBQUUsQ0FFYixDQUFDLElBQUksQ0FDSixVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNqQixNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsYUFBYSxDQUFDLFNBQVMsRUFBRSxNQUFNLEdBQUcsRUFBRTtRQUNsQyxPQUFPLElBQUksQ0FDVCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVc7YUFDMUIsT0FBTyxDQUFDLHNDQUFzQyxTQUFTLEVBQUUsQ0FBQzthQUMxRCxXQUFXLGlCQUFHLENBQUMsRUFBRSxHQUFHLElBQUssTUFBTSxFQUFHO2FBQ2xDLEdBQUcsRUFBRSxDQUNULENBQUMsSUFBSSxDQUNKLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pCLE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7OzhHQTVJVSxpQkFBaUIsOENBSTZCLGFBQWE7a0hBSjNELGlCQUFpQixjQUZoQixNQUFNOzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUttRCxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBFdmVudEVtaXR0ZXIsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE51eGVvU2VydmljZSB9IGZyb20gJy4uLy4uL0NvcmUvc2VydmljZXMvbnV4ZW8vbnV4ZW8uc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9uU2VydmljZSB7XHJcbiAgZGlzYWJsZUNsaWNrT3V0U2lkZSA9IGZhbHNlO1xyXG4gIGRlcGFydG1lbnRVc2VycyA9IFtdO1xyXG4gIGNyZWF0ZUFuZEFkZEFub3RoZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBudXhlb1NlcnZpY2U6IE51eGVvU2VydmljZSAsIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJpdmF0ZSBlbnZpcm9ubWVudCkgeyB9XHJcblxyXG4gIGdldFBlcm1pc3Npb25zRm9yRG9jdW1lbnQodWlkOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIGZyb20oXHJcbiAgICAgIHRoaXMubnV4ZW9TZXJ2aWNlLm51eGVvQ2xpZW50XHJcbiAgICAgICAgLnJlcXVlc3QoYC9pZC8ke3VpZH1gKVxyXG4gICAgICAgIC5xdWVyeVBhcmFtcyh7XHJcbiAgICAgICAgICBcImZldGNoLWFjbHNcIjogJ3VzZXJuYW1lLGNyZWF0b3IsZXh0ZW5kZWQnLFxyXG4gICAgICAgICAgXCJkZXB0aFwiOiAnY2hpbGRyZW4nLFxyXG4gICAgICAgICAgXCJ0aW1lXCI6ICcxNjM1MjQ5MTI5MjY4J1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmdldCh7XHJcbiAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICdlbnJpY2hlcnMtZG9jdW1lbnQnOiBcImFjbHMsIHBlcm1pc3Npb25zLCB1c2VyVmlzaWJsZVBlcm1pc3Npb25zXCIsXHJcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBcImFwcGxpY2F0aW9uL2pzb25cIixcclxuICAgICAgICAgICAgXCJhY2NlcHRcIjogXCJ0ZXh0L3BsYWluLGFwcGxpY2F0aW9uL2pzb24sIGFwcGxpY2F0aW9uL2pzb25cIixcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSlcclxuICAgICkucGlwZShcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XHJcbiAgICAgICAgdGhyb3cgZXJyO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGJsb2NrUGVybWlzc2lvbkluaGVyaXRhbmNlKHVpZDogYW55KSB7XHJcbiAgICByZXR1cm4gZnJvbShcclxuICAgICAgdGhpcy5udXhlb1NlcnZpY2UubnV4ZW9DbGllbnRcclxuICAgICAgICAub3BlcmF0aW9uKCdEb2N1bWVudC5CbG9ja1Blcm1pc3Npb25Jbmhlcml0YW5jZScsIHtcclxuICAgICAgICAgIHVybDogYCR7dGhpcy5lbnZpcm9ubWVudC5udXhlb30ke3RoaXMuZW52aXJvbm1lbnQuY3VzdG9tQXV0b21hdGlvbn1gLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmlucHV0KHVpZClcclxuICAgICAgICAucGFyYW1zKHtcclxuICAgICAgICAgIGFjbDogXCJsb2NhbFwiLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNvbnRleHQoe30pXHJcbiAgICAgICAgLmV4ZWN1dGUoKVxyXG5cclxuICAgICkucGlwZShcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XHJcbiAgICAgICAgdGhyb3cgZXJyO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVuYmxvY2tQZXJtaXNzaW9uSW5oZXJpdGFuY2UodWlkOiBhbnkpIHtcclxuICAgIHJldHVybiBmcm9tKFxyXG4gICAgICB0aGlzLm51eGVvU2VydmljZS5udXhlb0NsaWVudFxyXG4gICAgICAgIC5vcGVyYXRpb24oJ0RvY3VtZW50LlVuYmxvY2tQZXJtaXNzaW9uSW5oZXJpdGFuY2UnLCB7XHJcbiAgICAgICAgICB1cmw6IGAke3RoaXMuZW52aXJvbm1lbnQubnV4ZW99JHt0aGlzLmVudmlyb25tZW50LmN1c3RvbUF1dG9tYXRpb259YCxcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5pbnB1dCh1aWQpXHJcbiAgICAgICAgLnBhcmFtcyh7XHJcbiAgICAgICAgICBhY2w6IFwibG9jYWxcIixcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jb250ZXh0KHt9KVxyXG4gICAgICAgIC5leGVjdXRlKClcclxuXHJcbiAgICApLnBpcGUoXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xyXG4gICAgICAgIHRocm93IGVycjtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhZGROZXdMb2NhbFBlcm1pc3Npb25zKHVpZCxmb3JtRGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gZnJvbShcclxuICAgICAgdGhpcy5udXhlb1NlcnZpY2UubnV4ZW9DbGllbnRcclxuICAgICAgICAub3BlcmF0aW9uKCdEb2N1bWVudC5BZGRQZXJtaXNzaW9uJywge1xyXG4gICAgICAgICAgdXJsOiBgJHt0aGlzLmVudmlyb25tZW50Lm51eGVvfSR7dGhpcy5lbnZpcm9ubWVudC5jdXN0b21BdXRvbWF0aW9ufWAsXHJcbiAgICAgICAgfSlcclxuICAgICAgICAuaW5wdXQodWlkKVxyXG4gICAgICAgIC5wYXJhbXMoe1xyXG4gICAgICAgICAgLi4uZm9ybURhdGFcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jb250ZXh0KHt9KVxyXG4gICAgICAgIC5leGVjdXRlKClcclxuXHJcbiAgICApLnBpcGUoXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xyXG4gICAgICAgIHRocm93IGVycjtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBlZGl0TG9jYWxQZXJtaXNzaW9ucyh1aWQsZm9ybURhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIGZyb20oXHJcbiAgICAgIHRoaXMubnV4ZW9TZXJ2aWNlLm51eGVvQ2xpZW50XHJcbiAgICAgICAgLm9wZXJhdGlvbignRG9jdW1lbnQuUmVwbGFjZVBlcm1pc3Npb24nLCB7XHJcbiAgICAgICAgICB1cmw6IGAke3RoaXMuZW52aXJvbm1lbnQubnV4ZW99JHt0aGlzLmVudmlyb25tZW50LmN1c3RvbUF1dG9tYXRpb259YCxcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5pbnB1dCh1aWQpXHJcbiAgICAgICAgLnBhcmFtcyh7XHJcbiAgICAgICAgICAuLi5mb3JtRGF0YVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNvbnRleHQoe30pXHJcbiAgICAgICAgLmV4ZWN1dGUoKVxyXG5cclxuICAgICkucGlwZShcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XHJcbiAgICAgICAgdGhyb3cgZXJyO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUxvY2FsUGVybWlzc2lvbnModWlkLHBhcmFtKSB7XHJcbiAgICByZXR1cm4gZnJvbShcclxuICAgICAgdGhpcy5udXhlb1NlcnZpY2UubnV4ZW9DbGllbnRcclxuICAgICAgICAub3BlcmF0aW9uKCdEb2N1bWVudC5SZW1vdmVQZXJtaXNzaW9uJywge1xyXG4gICAgICAgICAgdXJsOiBgJHt0aGlzLmVudmlyb25tZW50Lm51eGVvfSR7dGhpcy5lbnZpcm9ubWVudC5jdXN0b21BdXRvbWF0aW9ufWAsXHJcbiAgICAgICAgfSlcclxuICAgICAgICAuaW5wdXQodWlkKVxyXG4gICAgICAgIC5wYXJhbXMoe1xyXG4gICAgICAgICAgaWQ6cGFyYW1cclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jb250ZXh0KHt9KVxyXG4gICAgICAgIC5leGVjdXRlKClcclxuXHJcbiAgICApLnBpcGUoXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xyXG4gICAgICAgIHRocm93IGVycjtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXREZXBNZW1iZXJzKGRlcHRUaXRsZSwgcGFyYW1zID0ge30pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIGZyb20oXHJcbiAgICAgIHRoaXMubnV4ZW9TZXJ2aWNlLm51eGVvQ2xpZW50XHJcbiAgICAgICAgLnJlcXVlc3QoYGdyb3VwLW1lbWJlcnMvYWxsLW1lbWJlcnMvZG1zX3VzZXJfJHtkZXB0VGl0bGV9YClcclxuICAgICAgICAucXVlcnlQYXJhbXMoeyBxOiAnKicsIC4uLnBhcmFtcyB9KVxyXG4gICAgICAgIC5nZXQoKVxyXG4gICAgKS5waXBlKFxyXG4gICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcclxuICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5cclxuIl19