@ieeesa-npm/groups 0.10.2 → 0.10.3

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.
@@ -29,11 +29,6 @@ export class GroupPermissionsMapService {
29
29
  permissionName: 'Edit Group Details',
30
30
  permissionId: 'PERM_NESC_d64e1f09-d3f7-4f86-a94c-4782a2f60571',
31
31
  },
32
- {
33
- permissionType: PermissionType.MANAGE_SYSTEM_USERS,
34
- permissionName: 'Manage System Users',
35
- permissionId: 'PERM_NESC_d2c103e9-20c6-4dd5-b320-f7d4d017c574',
36
- },
37
32
  {
38
33
  permissionType: PermissionType.VIEW_GROUP_OFFICERS,
39
34
  permissionName: 'View Group Officers',
@@ -55,10 +50,51 @@ export class GroupPermissionsMapService {
55
50
  permissionId: 'PERM_NESC_1969fecb-6383-446e-9276-b6a7b7265cb4',
56
51
  },
57
52
  ];
53
+ this.globalGroupPermissions = [
54
+ {
55
+ permissionType: PermissionType.MANAGE_SYSTEM_USERS,
56
+ permissionName: 'Manage System Users',
57
+ permissionId: 'PERM_NESC_d2c103e9-20c6-4dd5-b320-f7d4d017c574',
58
+ },
59
+ {
60
+ permissionType: PermissionType.VIEW_ALL_GROUPS,
61
+ permissionName: 'View All Group Details',
62
+ permissionId: 'PERM_NESC_741d7504-7595-4bec-811f-8d601333e7c4',
63
+ },
64
+ {
65
+ permissionType: PermissionType.MANAGE_ALL_GROUPS,
66
+ permissionName: 'Manage All Group Details',
67
+ permissionId: 'PERM_NESC_eebde105-0b53-44c8-babc-066be903229f',
68
+ },
69
+ {
70
+ permissionType: PermissionType.VIEW_ALL_ROSTERS,
71
+ permissionName: 'View All Rosters',
72
+ permissionId: 'PERM_NESC_0109d7c7-6d64-4673-b63b-3a23f3323530',
73
+ },
74
+ {
75
+ permissionType: PermissionType.MANAGE_ALL_ROSTERS,
76
+ permissionName: 'Manage All Rosters',
77
+ permissionId: 'PERM_NESC_6fec2e8c-1b48-46a9-b394-34d3648d6fe8',
78
+ },
79
+ ];
58
80
  }
81
+ /**
82
+ * Returns group-wise permission mappings.
83
+ * @return {GroupPermission[]}
84
+ * @memberof GroupPermissionsMapService
85
+ */
59
86
  getGroupPermissions() {
60
87
  return this.groupPermissions;
61
88
  }
89
+ /**
90
+ * Returns global permissions mapping for groups.
91
+ * Global permissions are maintained separately as global permissions also include role based group wise permissions irrespective of the attached group.
92
+ * @return {GroupPermission[]}
93
+ * @memberof GroupPermissionsMapService
94
+ */
95
+ getGlobalGroupPermissions() {
96
+ return this.globalGroupPermissions;
97
+ }
62
98
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GroupPermissionsMapService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
63
99
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GroupPermissionsMapService, providedIn: 'root' }); }
64
100
  }
@@ -68,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
68
104
  providedIn: 'root',
69
105
  }]
70
106
  }] });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtcGVybWlzc2lvbnMtbWFwLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9zZXJ2aWNlcy9ncm91cC1wZXJtaXNzaW9ucy1tYXAtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFLakUsTUFBTSxPQUFPLDBCQUEwQjtJQUh2QztRQUlFLHFCQUFnQixHQUFzQjtZQUNwQztnQkFDRSxjQUFjLEVBQUUsY0FBYyxDQUFDLFdBQVc7Z0JBQzFDLGNBQWMsRUFBRSxhQUFhO2dCQUM3QixZQUFZLEVBQUUsZ0RBQWdEO2FBQy9EO1lBQ0Q7Z0JBQ0UsY0FBYyxFQUFFLGNBQWMsQ0FBQyxpQkFBaUI7Z0JBQ2hELGNBQWMsRUFBRSxxQkFBcUI7Z0JBQ3JDLFlBQVksRUFBRSxnREFBZ0Q7YUFDL0Q7WUFDRDtnQkFDRSxjQUFjLEVBQUUsY0FBYyxDQUFDLGVBQWU7Z0JBQzlDLGNBQWMsRUFBRSxpQkFBaUI7Z0JBQ2pDLFlBQVksRUFBRSxnREFBZ0Q7YUFDL0Q7WUFDRDtnQkFDRSxjQUFjLEVBQUUsY0FBYyxDQUFDLFlBQVk7Z0JBQzNDLGNBQWMsRUFBRSxjQUFjO2dCQUM5QixZQUFZLEVBQUUsZ0RBQWdEO2FBQy9EO1lBQ0Q7Z0JBQ0UsY0FBYyxFQUFFLGNBQWMsQ0FBQyxVQUFVO2dCQUN6QyxjQUFjLEVBQUUsb0JBQW9CO2dCQUNwQyxZQUFZLEVBQUUsZ0RBQWdEO2FBQy9EO1lBQ0Q7Z0JBQ0UsY0FBYyxFQUFFLGNBQWMsQ0FBQyxtQkFBbUI7Z0JBQ2xELGNBQWMsRUFBRSxxQkFBcUI7Z0JBQ3JDLFlBQVksRUFBRSxnREFBZ0Q7YUFDL0Q7WUFDRDtnQkFDRSxjQUFjLEVBQUUsY0FBYyxDQUFDLG1CQUFtQjtnQkFDbEQsY0FBYyxFQUFFLHFCQUFxQjtnQkFDckMsWUFBWSxFQUFFLGdEQUFnRDthQUMvRDtZQUNEO2dCQUNFLGNBQWMsRUFBRSxjQUFjLENBQUMscUJBQXFCO2dCQUNwRCxjQUFjLEVBQUUsdUJBQXVCO2dCQUN2QyxZQUFZLEVBQUUsZ0RBQWdEO2FBQy9EO1lBQ0Q7Z0JBQ0UsY0FBYyxFQUFFLGNBQWMsQ0FBQyxrQkFBa0I7Z0JBQ2pELGNBQWMsRUFBRSxvQkFBb0I7Z0JBQ3BDLFlBQVksRUFBRSxnREFBZ0Q7YUFDL0Q7WUFDRDtnQkFDRSxjQUFjLEVBQUUsY0FBYyxDQUFDLG9CQUFvQjtnQkFDbkQsY0FBYyxFQUFFLHFCQUFxQjtnQkFDckMsWUFBWSxFQUFFLGdEQUFnRDthQUMvRDtTQUNGLENBQUM7S0FJSDtJQUhDLG1CQUFtQjtRQUNqQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDOytHQXZEVSwwQkFBMEI7bUhBQTFCLDBCQUEwQixjQUZ6QixNQUFNOzs0RkFFUCwwQkFBMEI7a0JBSHRDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBHcm91cFBlcm1pc3Npb24gfSBmcm9tICcuLi9tb2RlbHMvZ3JvdXAtcGVybWlzc2lvbnMubW9kZWwnO1xyXG5pbXBvcnQgeyBQZXJtaXNzaW9uVHlwZSB9IGZyb20gJy4uL21vZGVscy9wZXJtaXNzaW9uLXR5cGUubW9kZWwnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEdyb3VwUGVybWlzc2lvbnNNYXBTZXJ2aWNlIHtcclxuICBncm91cFBlcm1pc3Npb25zOiBHcm91cFBlcm1pc3Npb25bXSA9IFtcclxuICAgIHtcclxuICAgICAgcGVybWlzc2lvblR5cGU6IFBlcm1pc3Npb25UeXBlLlZJRVdfR1JPVVBTLFxyXG4gICAgICBwZXJtaXNzaW9uTmFtZTogJ1ZpZXcgR3JvdXBzJyxcclxuICAgICAgcGVybWlzc2lvbklkOiAnUEVSTV9ORVNDX2MwNWZmNTkyLTcxNzgtNDYxNC1iNzMwLTdhN2E4ODI4ODI0ZScsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwZXJtaXNzaW9uVHlwZTogUGVybWlzc2lvblR5cGUuQ1JFQVRFX1JPT1RfR1JPVVAsXHJcbiAgICAgIHBlcm1pc3Npb25OYW1lOiAnQ3JlYXRlIFBhcmVudCBHcm91cCcsXHJcbiAgICAgIHBlcm1pc3Npb25JZDogJ1BFUk1fTkVTQ19mYzUyMjc0OC1lMmQ0LTQ0MGMtYjZjNi00MWFhY2E3NWE4MGYnLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcGVybWlzc2lvblR5cGU6IFBlcm1pc3Npb25UeXBlLkNSRUFURV9TVUJHUk9VUCxcclxuICAgICAgcGVybWlzc2lvbk5hbWU6ICdDcmVhdGUgU3ViZ3JvdXAnLFxyXG4gICAgICBwZXJtaXNzaW9uSWQ6ICdQRVJNX05FU0NfOGY4YTIwM2UtZDk5Mi00NTU1LTljNDItYWM2OTcwZjJkMzc2JyxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHBlcm1pc3Npb25UeXBlOiBQZXJtaXNzaW9uVHlwZS5ERUxFVEVfR1JPVVAsXHJcbiAgICAgIHBlcm1pc3Npb25OYW1lOiAnRGVsZXRlIEdyb3VwJyxcclxuICAgICAgcGVybWlzc2lvbklkOiAnUEVSTV9ORVNDXzAwODIyOWJmLTZhMTItNDI4MS04OGQ4LTRhMmJjOTU5NzU3MycsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwZXJtaXNzaW9uVHlwZTogUGVybWlzc2lvblR5cGUuRURJVF9HUk9VUCxcclxuICAgICAgcGVybWlzc2lvbk5hbWU6ICdFZGl0IEdyb3VwIERldGFpbHMnLFxyXG4gICAgICBwZXJtaXNzaW9uSWQ6ICdQRVJNX05FU0NfZDY0ZTFmMDktZDNmNy00Zjg2LWE5NGMtNDc4MmEyZjYwNTcxJyxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHBlcm1pc3Npb25UeXBlOiBQZXJtaXNzaW9uVHlwZS5NQU5BR0VfU1lTVEVNX1VTRVJTLFxyXG4gICAgICBwZXJtaXNzaW9uTmFtZTogJ01hbmFnZSBTeXN0ZW0gVXNlcnMnLFxyXG4gICAgICBwZXJtaXNzaW9uSWQ6ICdQRVJNX05FU0NfZDJjMTAzZTktMjBjNi00ZGQ1LWIzMjAtZjdkNGQwMTdjNTc0JyxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHBlcm1pc3Npb25UeXBlOiBQZXJtaXNzaW9uVHlwZS5WSUVXX0dST1VQX09GRklDRVJTLFxyXG4gICAgICBwZXJtaXNzaW9uTmFtZTogJ1ZpZXcgR3JvdXAgT2ZmaWNlcnMnLFxyXG4gICAgICBwZXJtaXNzaW9uSWQ6ICdQRVJNX05FU0NfZjgwYWM4YTMtNjBiOC00YWU0LWJlZGYtY2UxZDg5YzU0MzU0JyxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHBlcm1pc3Npb25UeXBlOiBQZXJtaXNzaW9uVHlwZS5NQU5BR0VfR1JPVVBfT0ZGSUNFUlMsXHJcbiAgICAgIHBlcm1pc3Npb25OYW1lOiAnTWFuYWdlIEdyb3VwIE9mZmljZXJzJyxcclxuICAgICAgcGVybWlzc2lvbklkOiAnUEVSTV9ORVNDXzlkZGQ1MWRiLWY0ODEtNDdlYS05NDZiLWU4ODgxNTk3M2NmYicsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwZXJtaXNzaW9uVHlwZTogUGVybWlzc2lvblR5cGUuVklFV19HUk9VUF9NRU1CRVJTLFxyXG4gICAgICBwZXJtaXNzaW9uTmFtZTogJ1ZpZXcgR3JvdXAgTWVtYmVycycsXHJcbiAgICAgIHBlcm1pc3Npb25JZDogJ1BFUk1fTkVTQ181YThlZGI5MS1hMTMyLTQ2NzAtOTBhMy0yNWZiNjk4MjMwN2EnLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcGVybWlzc2lvblR5cGU6IFBlcm1pc3Npb25UeXBlLk1BTkFHRV9HUk9VUF9NRU1CRVJTLFxyXG4gICAgICBwZXJtaXNzaW9uTmFtZTogJ01hbmFnZSBHcm91cCBNZW1iZXInLFxyXG4gICAgICBwZXJtaXNzaW9uSWQ6ICdQRVJNX05FU0NfMTk2OWZlY2ItNjM4My00NDZlLTkyNzYtYjZhN2I3MjY1Y2I0JyxcclxuICAgIH0sXHJcbiAgXTtcclxuICBnZXRHcm91cFBlcm1pc3Npb25zKCk6IEdyb3VwUGVybWlzc2lvbltdIHtcclxuICAgIHJldHVybiB0aGlzLmdyb3VwUGVybWlzc2lvbnM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtcGVybWlzc2lvbnMtbWFwLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9zZXJ2aWNlcy9ncm91cC1wZXJtaXNzaW9ucy1tYXAtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFLakUsTUFBTSxPQUFPLDBCQUEwQjtJQUh2QztRQUlFLHFCQUFnQixHQUFzQjtZQUNwQztnQkFDRSxjQUFjLEVBQUUsY0FBYyxDQUFDLFdBQVc7Z0JBQzFDLGNBQWMsRUFBRSxhQUFhO2dCQUM3QixZQUFZLEVBQUUsZ0RBQWdEO2FBQy9EO1lBQ0Q7Z0JBQ0UsY0FBYyxFQUFFLGNBQWMsQ0FBQyxpQkFBaUI7Z0JBQ2hELGNBQWMsRUFBRSxxQkFBcUI7Z0JBQ3JDLFlBQVksRUFBRSxnREFBZ0Q7YUFDL0Q7WUFDRDtnQkFDRSxjQUFjLEVBQUUsY0FBYyxDQUFDLGVBQWU7Z0JBQzlDLGNBQWMsRUFBRSxpQkFBaUI7Z0JBQ2pDLFlBQVksRUFBRSxnREFBZ0Q7YUFDL0Q7WUFDRDtnQkFDRSxjQUFjLEVBQUUsY0FBYyxDQUFDLFlBQVk7Z0JBQzNDLGNBQWMsRUFBRSxjQUFjO2dCQUM5QixZQUFZLEVBQUUsZ0RBQWdEO2FBQy9EO1lBQ0Q7Z0JBQ0UsY0FBYyxFQUFFLGNBQWMsQ0FBQyxVQUFVO2dCQUN6QyxjQUFjLEVBQUUsb0JBQW9CO2dCQUNwQyxZQUFZLEVBQUUsZ0RBQWdEO2FBQy9EO1lBQ0Q7Z0JBQ0UsY0FBYyxFQUFFLGNBQWMsQ0FBQyxtQkFBbUI7Z0JBQ2xELGNBQWMsRUFBRSxxQkFBcUI7Z0JBQ3JDLFlBQVksRUFBRSxnREFBZ0Q7YUFDL0Q7WUFDRDtnQkFDRSxjQUFjLEVBQUUsY0FBYyxDQUFDLHFCQUFxQjtnQkFDcEQsY0FBYyxFQUFFLHVCQUF1QjtnQkFDdkMsWUFBWSxFQUFFLGdEQUFnRDthQUMvRDtZQUNEO2dCQUNFLGNBQWMsRUFBRSxjQUFjLENBQUMsa0JBQWtCO2dCQUNqRCxjQUFjLEVBQUUsb0JBQW9CO2dCQUNwQyxZQUFZLEVBQUUsZ0RBQWdEO2FBQy9EO1lBQ0Q7Z0JBQ0UsY0FBYyxFQUFFLGNBQWMsQ0FBQyxvQkFBb0I7Z0JBQ25ELGNBQWMsRUFBRSxxQkFBcUI7Z0JBQ3JDLFlBQVksRUFBRSxnREFBZ0Q7YUFDL0Q7U0FDRixDQUFDO1FBQ0YsMkJBQXNCLEdBQXNCO1lBQzFDO2dCQUNFLGNBQWMsRUFBRSxjQUFjLENBQUMsbUJBQW1CO2dCQUNsRCxjQUFjLEVBQUUscUJBQXFCO2dCQUNyQyxZQUFZLEVBQUUsZ0RBQWdEO2FBQy9EO1lBQ0Q7Z0JBQ0UsY0FBYyxFQUFFLGNBQWMsQ0FBQyxlQUFlO2dCQUM5QyxjQUFjLEVBQUUsd0JBQXdCO2dCQUN4QyxZQUFZLEVBQUUsZ0RBQWdEO2FBQy9EO1lBQ0Q7Z0JBQ0UsY0FBYyxFQUFFLGNBQWMsQ0FBQyxpQkFBaUI7Z0JBQ2hELGNBQWMsRUFBRSwwQkFBMEI7Z0JBQzFDLFlBQVksRUFBRSxnREFBZ0Q7YUFDL0Q7WUFDRDtnQkFDRSxjQUFjLEVBQUUsY0FBYyxDQUFDLGdCQUFnQjtnQkFDL0MsY0FBYyxFQUFFLGtCQUFrQjtnQkFDbEMsWUFBWSxFQUFFLGdEQUFnRDthQUMvRDtZQUNEO2dCQUNFLGNBQWMsRUFBRSxjQUFjLENBQUMsa0JBQWtCO2dCQUNqRCxjQUFjLEVBQUUsb0JBQW9CO2dCQUNwQyxZQUFZLEVBQUUsZ0RBQWdEO2FBQy9EO1NBQ0YsQ0FBQztLQWtCSDtJQWpCQzs7OztPQUlHO0lBQ0gsbUJBQW1CO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFDRDs7Ozs7T0FLRztJQUNILHlCQUF5QjtRQUN2QixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDOytHQTNGVSwwQkFBMEI7bUhBQTFCLDBCQUEwQixjQUZ6QixNQUFNOzs0RkFFUCwwQkFBMEI7a0JBSHRDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBHcm91cFBlcm1pc3Npb24gfSBmcm9tICcuLi9tb2RlbHMvZ3JvdXAtcGVybWlzc2lvbnMubW9kZWwnO1xyXG5pbXBvcnQgeyBQZXJtaXNzaW9uVHlwZSB9IGZyb20gJy4uL21vZGVscy9wZXJtaXNzaW9uLXR5cGUubW9kZWwnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEdyb3VwUGVybWlzc2lvbnNNYXBTZXJ2aWNlIHtcclxuICBncm91cFBlcm1pc3Npb25zOiBHcm91cFBlcm1pc3Npb25bXSA9IFtcclxuICAgIHtcclxuICAgICAgcGVybWlzc2lvblR5cGU6IFBlcm1pc3Npb25UeXBlLlZJRVdfR1JPVVBTLFxyXG4gICAgICBwZXJtaXNzaW9uTmFtZTogJ1ZpZXcgR3JvdXBzJyxcclxuICAgICAgcGVybWlzc2lvbklkOiAnUEVSTV9ORVNDX2MwNWZmNTkyLTcxNzgtNDYxNC1iNzMwLTdhN2E4ODI4ODI0ZScsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwZXJtaXNzaW9uVHlwZTogUGVybWlzc2lvblR5cGUuQ1JFQVRFX1JPT1RfR1JPVVAsXHJcbiAgICAgIHBlcm1pc3Npb25OYW1lOiAnQ3JlYXRlIFBhcmVudCBHcm91cCcsXHJcbiAgICAgIHBlcm1pc3Npb25JZDogJ1BFUk1fTkVTQ19mYzUyMjc0OC1lMmQ0LTQ0MGMtYjZjNi00MWFhY2E3NWE4MGYnLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcGVybWlzc2lvblR5cGU6IFBlcm1pc3Npb25UeXBlLkNSRUFURV9TVUJHUk9VUCxcclxuICAgICAgcGVybWlzc2lvbk5hbWU6ICdDcmVhdGUgU3ViZ3JvdXAnLFxyXG4gICAgICBwZXJtaXNzaW9uSWQ6ICdQRVJNX05FU0NfOGY4YTIwM2UtZDk5Mi00NTU1LTljNDItYWM2OTcwZjJkMzc2JyxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHBlcm1pc3Npb25UeXBlOiBQZXJtaXNzaW9uVHlwZS5ERUxFVEVfR1JPVVAsXHJcbiAgICAgIHBlcm1pc3Npb25OYW1lOiAnRGVsZXRlIEdyb3VwJyxcclxuICAgICAgcGVybWlzc2lvbklkOiAnUEVSTV9ORVNDXzAwODIyOWJmLTZhMTItNDI4MS04OGQ4LTRhMmJjOTU5NzU3MycsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwZXJtaXNzaW9uVHlwZTogUGVybWlzc2lvblR5cGUuRURJVF9HUk9VUCxcclxuICAgICAgcGVybWlzc2lvbk5hbWU6ICdFZGl0IEdyb3VwIERldGFpbHMnLFxyXG4gICAgICBwZXJtaXNzaW9uSWQ6ICdQRVJNX05FU0NfZDY0ZTFmMDktZDNmNy00Zjg2LWE5NGMtNDc4MmEyZjYwNTcxJyxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHBlcm1pc3Npb25UeXBlOiBQZXJtaXNzaW9uVHlwZS5WSUVXX0dST1VQX09GRklDRVJTLFxyXG4gICAgICBwZXJtaXNzaW9uTmFtZTogJ1ZpZXcgR3JvdXAgT2ZmaWNlcnMnLFxyXG4gICAgICBwZXJtaXNzaW9uSWQ6ICdQRVJNX05FU0NfZjgwYWM4YTMtNjBiOC00YWU0LWJlZGYtY2UxZDg5YzU0MzU0JyxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHBlcm1pc3Npb25UeXBlOiBQZXJtaXNzaW9uVHlwZS5NQU5BR0VfR1JPVVBfT0ZGSUNFUlMsXHJcbiAgICAgIHBlcm1pc3Npb25OYW1lOiAnTWFuYWdlIEdyb3VwIE9mZmljZXJzJyxcclxuICAgICAgcGVybWlzc2lvbklkOiAnUEVSTV9ORVNDXzlkZGQ1MWRiLWY0ODEtNDdlYS05NDZiLWU4ODgxNTk3M2NmYicsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwZXJtaXNzaW9uVHlwZTogUGVybWlzc2lvblR5cGUuVklFV19HUk9VUF9NRU1CRVJTLFxyXG4gICAgICBwZXJtaXNzaW9uTmFtZTogJ1ZpZXcgR3JvdXAgTWVtYmVycycsXHJcbiAgICAgIHBlcm1pc3Npb25JZDogJ1BFUk1fTkVTQ181YThlZGI5MS1hMTMyLTQ2NzAtOTBhMy0yNWZiNjk4MjMwN2EnLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcGVybWlzc2lvblR5cGU6IFBlcm1pc3Npb25UeXBlLk1BTkFHRV9HUk9VUF9NRU1CRVJTLFxyXG4gICAgICBwZXJtaXNzaW9uTmFtZTogJ01hbmFnZSBHcm91cCBNZW1iZXInLFxyXG4gICAgICBwZXJtaXNzaW9uSWQ6ICdQRVJNX05FU0NfMTk2OWZlY2ItNjM4My00NDZlLTkyNzYtYjZhN2I3MjY1Y2I0JyxcclxuICAgIH0sXHJcbiAgXTtcclxuICBnbG9iYWxHcm91cFBlcm1pc3Npb25zOiBHcm91cFBlcm1pc3Npb25bXSA9IFtcclxuICAgIHtcclxuICAgICAgcGVybWlzc2lvblR5cGU6IFBlcm1pc3Npb25UeXBlLk1BTkFHRV9TWVNURU1fVVNFUlMsXHJcbiAgICAgIHBlcm1pc3Npb25OYW1lOiAnTWFuYWdlIFN5c3RlbSBVc2VycycsXHJcbiAgICAgIHBlcm1pc3Npb25JZDogJ1BFUk1fTkVTQ19kMmMxMDNlOS0yMGM2LTRkZDUtYjMyMC1mN2Q0ZDAxN2M1NzQnLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcGVybWlzc2lvblR5cGU6IFBlcm1pc3Npb25UeXBlLlZJRVdfQUxMX0dST1VQUyxcclxuICAgICAgcGVybWlzc2lvbk5hbWU6ICdWaWV3IEFsbCBHcm91cCBEZXRhaWxzJyxcclxuICAgICAgcGVybWlzc2lvbklkOiAnUEVSTV9ORVNDXzc0MWQ3NTA0LTc1OTUtNGJlYy04MTFmLThkNjAxMzMzZTdjNCcsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwZXJtaXNzaW9uVHlwZTogUGVybWlzc2lvblR5cGUuTUFOQUdFX0FMTF9HUk9VUFMsXHJcbiAgICAgIHBlcm1pc3Npb25OYW1lOiAnTWFuYWdlIEFsbCBHcm91cCBEZXRhaWxzJyxcclxuICAgICAgcGVybWlzc2lvbklkOiAnUEVSTV9ORVNDX2VlYmRlMTA1LTBiNTMtNDRjOC1iYWJjLTA2NmJlOTAzMjI5ZicsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwZXJtaXNzaW9uVHlwZTogUGVybWlzc2lvblR5cGUuVklFV19BTExfUk9TVEVSUyxcclxuICAgICAgcGVybWlzc2lvbk5hbWU6ICdWaWV3IEFsbCBSb3N0ZXJzJyxcclxuICAgICAgcGVybWlzc2lvbklkOiAnUEVSTV9ORVNDXzAxMDlkN2M3LTZkNjQtNDY3My1iNjNiLTNhMjNmMzMyMzUzMCcsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwZXJtaXNzaW9uVHlwZTogUGVybWlzc2lvblR5cGUuTUFOQUdFX0FMTF9ST1NURVJTLFxyXG4gICAgICBwZXJtaXNzaW9uTmFtZTogJ01hbmFnZSBBbGwgUm9zdGVycycsXHJcbiAgICAgIHBlcm1pc3Npb25JZDogJ1BFUk1fTkVTQ182ZmVjMmU4Yy0xYjQ4LTQ2YTktYjM5NC0zNGQzNjQ4ZDZmZTgnLFxyXG4gICAgfSxcclxuICBdO1xyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgZ3JvdXAtd2lzZSBwZXJtaXNzaW9uIG1hcHBpbmdzLlxyXG4gICAqIEByZXR1cm4ge0dyb3VwUGVybWlzc2lvbltdfVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cFBlcm1pc3Npb25zTWFwU2VydmljZVxyXG4gICAqL1xyXG4gIGdldEdyb3VwUGVybWlzc2lvbnMoKTogR3JvdXBQZXJtaXNzaW9uW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ3JvdXBQZXJtaXNzaW9ucztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBnbG9iYWwgcGVybWlzc2lvbnMgbWFwcGluZyBmb3IgZ3JvdXBzLlxyXG4gICAqIEdsb2JhbCBwZXJtaXNzaW9ucyBhcmUgbWFpbnRhaW5lZCBzZXBhcmF0ZWx5IGFzIGdsb2JhbCBwZXJtaXNzaW9ucyBhbHNvIGluY2x1ZGUgcm9sZSBiYXNlZCBncm91cCB3aXNlIHBlcm1pc3Npb25zIGlycmVzcGVjdGl2ZSBvZiB0aGUgYXR0YWNoZWQgZ3JvdXAuXHJcbiAgICogQHJldHVybiB7R3JvdXBQZXJtaXNzaW9uW119XHJcbiAgICogQG1lbWJlcm9mIEdyb3VwUGVybWlzc2lvbnNNYXBTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0R2xvYmFsR3JvdXBQZXJtaXNzaW9ucygpOiBHcm91cFBlcm1pc3Npb25bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5nbG9iYWxHcm91cFBlcm1pc3Npb25zO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -7,6 +7,7 @@ import { FormStatus } from '../models/form-status.model';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@ieeesa-npm/utility";
9
9
  import * as i2 from "./user-permissions.service";
10
+ import * as i3 from "./group-permissions-map-service";
10
11
  /**
11
12
  * Groups service is an abstract layer and responsible for managing groups REST API calls.
12
13
  * @class GroupsService
@@ -19,10 +20,13 @@ export class GroupsService {
19
20
  // eslint-disable-next-line no-unused-vars
20
21
  userPermissionsService,
21
22
  // eslint-disable-next-line no-unused-vars
23
+ groupPermissionsService,
24
+ // eslint-disable-next-line no-unused-vars
22
25
  alertService // eslint-disable-next-line no-empty-function
23
26
  ) {
24
27
  this.httpService = httpService;
25
28
  this.userPermissionsService = userPermissionsService;
29
+ this.groupPermissionsService = groupPermissionsService;
26
30
  this.alertService = alertService;
27
31
  this.groupsText = screenTexts?.errors;
28
32
  this.openModalNotifier = new BehaviorSubject(GroupFunctionType.VIEW_ROSTER);
@@ -42,7 +46,7 @@ export class GroupsService {
42
46
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
43
47
  getGroupTypes() {
44
48
  return this.httpService
45
- .getData(`${this.apiBaseUrl}/configurations/config/group_type`)
49
+ .getData(`${this.apiBaseUrl}/groups/config/groupTypeConfigInfo`)
46
50
  .pipe(map((response) => {
47
51
  this.setLoadedGroupTypes(response?.body);
48
52
  return response;
@@ -492,11 +496,17 @@ export class GroupsService {
492
496
  }
493
497
  /**
494
498
  * Validates permission based access for provided feature.
499
+ * Checks for group level permissions, and provides access based on individual group permissions.
500
+ * For global permissions provides access across the individual groups or System groups.
495
501
  * @param {PermissionType} permissionType
496
502
  * @return {boolean}
497
503
  * @memberof GroupsService
498
504
  */
499
- validateAccess(permissionType) {
505
+ validateAccess(permissionType, permissions) {
506
+ if (permissions) {
507
+ const userPermissionsToGroup = this.userPermissionsService.filterUserGroupPermissions(permissions, this.groupPermissionsService.getGroupPermissions());
508
+ return this.userPermissionsService.validateAccessPermission(permissionType, userPermissionsToGroup);
509
+ }
500
510
  return this.userPermissionsService.validateAccessPermission(permissionType, this.getUserGroupPermissions());
501
511
  }
502
512
  /**
@@ -567,7 +577,7 @@ export class GroupsService {
567
577
  getParentGroupChangeStatus() {
568
578
  return this.isParentGroupChanged;
569
579
  }
570
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GroupsService, deps: [{ token: i1.HttpService }, { token: i2.UserPermissionsService }, { token: i1.AlertsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
580
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GroupsService, deps: [{ token: i1.HttpService }, { token: i2.UserPermissionsService }, { token: i3.GroupPermissionsMapService }, { token: i1.AlertsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
571
581
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GroupsService, providedIn: 'root' }); }
572
582
  }
573
583
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GroupsService, decorators: [{
@@ -575,5 +585,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
575
585
  args: [{
576
586
  providedIn: 'root',
577
587
  }]
578
- }], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i2.UserPermissionsService }, { type: i1.AlertsService }]; } });
579
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9zZXJ2aWNlcy9ncm91cHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxHQUFHLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQWFwRSxPQUFPLEtBQUssV0FBVyxNQUFNLDBCQUEwQixDQUFDO0FBWXhELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBZ0J4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7O0FBT3pEOzs7R0FHRztBQUlILE1BQU0sT0FBTyxhQUFhO0lBa0J4Qiw2REFBNkQ7SUFDN0Q7SUFDRSwwQ0FBMEM7SUFDbEMsV0FBd0I7SUFDaEMsMENBQTBDO0lBQ2xDLHNCQUE4QztJQUN0RCwwQ0FBMEM7SUFDbkMsWUFBMkIsQ0FBQyw2Q0FBNkM7O1FBSnhFLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRXhCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFFL0MsaUJBQVksR0FBWixZQUFZLENBQWU7UUF4QnBDLGVBQVUsR0FBRyxXQUFXLEVBQUUsTUFBTSxDQUFDO1FBT2pDLHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUNyQyxpQkFBaUIsQ0FBQyxXQUFXLENBQzlCLENBQUM7UUFHRixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUl2Qix5QkFBb0IsR0FBRyxLQUFLLENBQUM7SUFTMUIsQ0FBQztJQUNKLDhEQUE4RDtJQUM5RCxZQUFZLENBQUMsVUFBa0IsRUFBRSxjQUFtQjtRQUNsRCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUs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LEVBQUUsRUFBRTtZQUNmLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3RCLE1BQU0sUUFBUSxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILDhCQUE4QjtRQUM1QixPQUFPLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLElBQUksQ0FDckMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxhQUFhLEtBQUssSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsU0FBUyxDQUMzRSxFQUFFLGdCQUFnQixFQUFFLFlBQVksQ0FBQztJQUNwQyxDQUFDO0lBQ0Q7Ozs7Ozs7T0FPRztJQUNILHNCQUFzQixDQUNwQixlQUFnQyxFQUNoQyxVQUE2QixFQUM3QixpQkFBMkI7UUFFM0IsSUFBSSxlQUFlLEtBQUssZUFBZSxDQUFDLFVBQVU7WUFDaEQsT0FBTyxVQUFVLEtBQUssVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUMzQyxPQUFPLGlCQUFpQixFQUFFLE1BQU0sS0FBSyxDQUFDLElBQUksVUFBVSxLQUFLLFVBQVUsQ0FBQyxPQUFPLENBQUM7SUFDOUUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCwwQkFBMEIsQ0FBQyxvQkFBNkI7UUFDdEQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLG9CQUFvQixDQUFDO0lBQ25ELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsMEJBQTBCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7K0dBeHJCVSxhQUFhO21IQUFiLGFBQWEsY0FGWixNQUFNOzs0RkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgbWFwLCBjYXRjaEVycm9yLCBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuICBDcmVhdGVHcm91cFBheWxvYWQsXHJcbiAgQ3JlYXRlR3JvdXBSZXNwb25zZSxcclxufSBmcm9tICcuLi9tb2RlbHMvY3JlYXRlLWdyb3VwLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBCdXNpbmVzc1J1bGUsXHJcbiAgR3JvdXBUeXBlQ29uZmlndXJhdGlvbixcclxuICBHcm91cFR5cGVDb25maWdWYWx1ZSxcclxuICBHcm91cFR5cGVSZXNwb25zZSxcclxufSBmcm9tICcuLi9tb2RlbHMvZ3JvdXAtdHlwZXMubW9kZWwnO1xyXG5pbXBvcnQgeyBBbGVydHNTZXJ2aWNlLCBIdHRwU2VydmljZSB9IGZyb20gJ0BpZWVlc2EtbnBtL3V0aWxpdHknO1xyXG5pbXBvcnQgeyBHZXRHcm91cFJlc3BvbnNlLCBHZXRHcm91cHNQYXlsb2FkIH0gZnJvbSAnLi4vbW9kZWxzL3ZpZXctZ3JvdXAubW9kZWwnO1xyXG5pbXBvcnQgKiBhcyBzY3JlZW5UZXh0cyBmcm9tICcuLi9hc3NldHMvY29uc3RhbnRzLmpzb24nO1xyXG5pbXBvcnQgeyBEZWxldGVHcm91cFBheWxvYWQgfSBmcm9tICcuLi9tb2RlbHMvZGVsZXRlLWdyb3VwLm1vZGVsJztcclxuaW1wb3J0IHsgR3JvdXBJbmZvIH0gZnJvbSAnLi4vbW9kZWxzL2dyb3VwLWluZm8ubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIFNlYXJjaFVzZXJzUGF5bG9hZCxcclxuICBGaWx0ZXJVc2Vyc1BheWxvYWQsXHJcbiAgR2V0R3JvdXBVc2Vyc1Jlc3BvbnNlLFxyXG4gIFVzZXIsXHJcbn0gZnJvbSAnLi4vbW9kZWxzL3VzZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBSb2xlIH0gZnJvbSAnLi4vbW9kZWxzL3JvbGUubW9kZWwnO1xyXG5pbXBvcnQgeyBDaGVja2JveE9wdGlvbiB9IGZyb20gJ0BpZWVlc2EtbnBtL3ByZXNlbnRhdGlvbic7XHJcbmltcG9ydCB7IEVkaXRHcm91cFBheWxvYWQgfSBmcm9tICcuLi9tb2RlbHMvZWRpdC1ncm91cC5tb2RlbCc7XHJcbmltcG9ydCB7IEdyb3VwRnVuY3Rpb25UeXBlIH0gZnJvbSAnLi4vbW9kZWxzL2dyb3VwLWZ1bmN0aW9uLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBSb3N0ZXJGdW5jdGlvblR5cGUgfSBmcm9tICcuLi9tb2RlbHMvcm9zdGVyLWZ1bmN0aW9uLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBHcm91cFVzZXJJbmZvIH0gZnJvbSAnLi4vbW9kZWxzL2dyb3VwLXVzZXItaW5mby5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgQWRkT3JFZGl0VXNlclBheWxvYWQsXHJcbiAgQWRkT3JFZGl0R3JvdXBVc2VyRGV0YWlsc1Jlc3BvbnNlLFxyXG4gIEFkZE9yRWRpdFVzZXJJbmRpdmlkdWFsUm9zdGVyUGF5bG9hZCxcclxufSBmcm9tICcuLi9tb2RlbHMvYWRkLW9yLWVkaXQtdXNlci1ncm91cC5tb2RlbCc7XHJcbmltcG9ydCB7IERlbGV0ZVVzZXJHcm91cFBheWxvYWQgfSBmcm9tICcuLi9tb2RlbHMvZGVsZXRlLXVzZXItZ3JvdXAubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIEdldFVzZXJEZXRhaWxzUGF5bG9hZCxcclxuICBTZWFyY2hVc2VyQnlFbWFpbFJlc3BvbnNlLFxyXG59IGZyb20gJy4uL21vZGVscy9hZGQtbmV3LXVzZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBPcmdhbml6YXRpb25SZXNwb25zZSB9IGZyb20gJy4uL21vZGVscy9vcmdhbml6YXRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBNZW1iZXJUeXBlUmVzcG9uc2UgfSBmcm9tICcuLi9tb2RlbHMvbWVtYmVyLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBDbGFzc2lmaWNhdGlvblJlc3BvbnNlIH0gZnJvbSAnLi4vbW9kZWxzL2NsYXNzaWZpY2F0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgR3JvdXBSb3N0ZXJUeXBlIH0gZnJvbSAnLi4vbW9kZWxzL3Jvc3Rlci10eXBlLm1vZGVsJztcclxuaW1wb3J0IHsgRm9ybVN0YXR1cyB9IGZyb20gJy4uL21vZGVscy9mb3JtLXN0YXR1cy5tb2RlbCc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sU3RhdHVzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBHcm91cFBlcm1pc3Npb24gfSBmcm9tICcuLi9tb2RlbHMvZ3JvdXAtcGVybWlzc2lvbnMubW9kZWwnO1xyXG5pbXBvcnQgeyBQZXJtaXNzaW9uVHlwZSB9IGZyb20gJy4uL21vZGVscy9wZXJtaXNzaW9uLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBVc2VyUGVybWlzc2lvbnNTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLXBlcm1pc3Npb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQYXJlbnRHcm91cHNJbmZvIH0gZnJvbSAnLi4vbW9kZWxzL3BhcmVudC1ncm91cHMtaW5mby5tb2RlbCc7XHJcblxyXG4vKipcclxuICogR3JvdXBzIHNlcnZpY2UgaXMgYW4gYWJzdHJhY3QgbGF5ZXIgYW5kIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyBncm91cHMgUkVTVCBBUEkgY2FsbHMuXHJcbiAqIEBjbGFzcyBHcm91cHNTZXJ2aWNlXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgR3JvdXBzU2VydmljZSB7XHJcbiAgZ3JvdXBzVGV4dCA9IHNjcmVlblRleHRzPy5lcnJvcnM7XHJcbiAgYXBpQmFzZVVybCE6IHN0cmluZztcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIHVzZXJQZXJtaXNzaW9uOiBhbnk7XHJcbiAgc2VsZWN0ZWRHcm91cEluZm8hOiBHcm91cEluZm8gfCB1bmRlZmluZWQ7XHJcbiAgZ3JvdXBGdW5jdGlvblR5cGUhOiBHcm91cEZ1bmN0aW9uVHlwZTtcclxuICBzZWxlY3RlZEdyb3VwUGFyZW50SW5mbyE6IEdyb3VwSW5mbyB8IHVuZGVmaW5lZDtcclxuICBvcGVuTW9kYWxOb3RpZmllciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8R3JvdXBGdW5jdGlvblR5cGU+KFxyXG4gICAgR3JvdXBGdW5jdGlvblR5cGUuVklFV19ST1NURVJcclxuICApO1xyXG4gIGdyb3VwVHlwZVJvbGVzITogQ2hlY2tib3hPcHRpb25bXTtcclxuICBzZWxlY3RlZFVzZXJJbmZvITogR3JvdXBVc2VySW5mbztcclxuICBjYW5TaG93TWVzc2FnZSA9IGZhbHNlO1xyXG4gIHJvc3RlckZ1bmN0aW9uVHlwZSE6IFJvc3RlckZ1bmN0aW9uVHlwZTtcclxuICB1c2VyR3JvdXBQZXJtaXNzaW9ucyE6IEdyb3VwUGVybWlzc2lvbltdO1xyXG4gIGdyb3VwVHlwZXMhOiBHcm91cFR5cGVDb25maWd1cmF0aW9uW107XHJcbiAgaXNQYXJlbnRHcm91cENoYW5nZWQgPSBmYWxzZTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZW1wdHktZnVuY3Rpb24sIG5vLXVudXNlZC12YXJzXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgaHR0cFNlcnZpY2U6IEh0dHBTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIHVzZXJQZXJtaXNzaW9uc1NlcnZpY2U6IFVzZXJQZXJtaXNzaW9uc1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBhbGVydFNlcnZpY2U6IEFsZXJ0c1NlcnZpY2UgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5LWZ1bmN0aW9uXHJcbiAgKSB7fVxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgc2V0QXBwQ29uZmlnKGFwaUJhc2VVcmw6IHN0cmluZywgdXNlclBlcm1pc3Npb246IGFueSkge1xyXG4gICAgdGhpcy5hcGlCYXNlVXJsID0gYXBpQmFzZVVybDtcclxuICAgIHRoaXMudXNlclBlcm1pc3Npb24gPSB1c2VyUGVybWlzc2lvbjtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyBhcHBsaWNhdGlvbiBncm91cCB0eXBlcyBmcm9tIEFQSSBhbmQgcmV0dXJucyBpdCBhcyBhbiBvYnNlcnZhYmxlLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8R3JvdXBUeXBlUmVzcG9uc2U+fSAtSXQgcmV0dXJucyBncm91cCB0eXBlcyBpZiBzdWNjZXNzIGVsc2UgZXJyb3IuXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGdldEdyb3VwVHlwZXMoKTogT2JzZXJ2YWJsZTxHcm91cFR5cGVSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLmdldERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9jb25maWd1cmF0aW9ucy9jb25maWcvZ3JvdXBfdHlwZWApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2V0TG9hZGVkR3JvdXBUeXBlcyhyZXNwb25zZT8uYm9keSk7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgYWxsb3dlZCBwYXJlbnQgZ3JvdXBzIGZyb20gQVBJIGFuZCByZXR1cm5zIGl0IGFzIGFuIG9ic2VydmFibGUuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGdyb3VwSWRcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEdyb3VwVHlwZVJlc3BvbnNlPn1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldEFsbG93ZWRQYXJlbnRHcm91cHMoZ3JvdXBJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxQYXJlbnRHcm91cHNJbmZvW10+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5nZXREYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vZ3JvdXBzL2FsbG93ZWRQYXJlbnRHcm91cHMvJHtncm91cElkfWApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZT8uYm9keTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgYWxsIHRoZSBncm91cHMgYmFzZWQgb24gcGFzc2VkIGdyb3VwIElkIGFuZCBncm91cCB0eXBlLlxyXG4gICAqIEBwYXJhbSB7R2V0R3JvdXBzUGF5bG9hZH0gZ2V0R3JvdXBzUGF5bG9hZFxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8R2V0R3JvdXBSZXNwb25zZT59XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRHcm91cHMoZ2V0R3JvdXBzUGF5bG9hZDogR2V0R3JvdXBzUGF5bG9hZCk6IE9ic2VydmFibGU8R2V0R3JvdXBSZXNwb25zZT4ge1xyXG4gICAgbGV0IHVybCA9ICdyb290R3JvdXBzJztcclxuICAgIGlmIChnZXRHcm91cHNQYXlsb2FkLmdyb3VwSWQpXHJcbiAgICAgIHVybCA9ICdpbW1DaGlsZEdyb3Vwc0J5R3JvdXBJZC8nICsgZ2V0R3JvdXBzUGF5bG9hZC5ncm91cElkO1xyXG4gICAgZWxzZSBpZiAoZ2V0R3JvdXBzUGF5bG9hZC5ncm91cFR5cGVJZClcclxuICAgICAgdXJsID0gJ2dyb3Vwc0J5R3JvdXBUeXBlLycgKyBnZXRHcm91cHNQYXlsb2FkLmdyb3VwVHlwZUlkO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLmdldERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvJHt1cmx9YCkucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzKSA9PiB7XHJcbiAgICAgICAgdGhyb3cgZXJyb3JSZXM7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBEZWxldGVzIGEgZ3JvdXAgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uXHJcbiAgICogQHBhcmFtIHtncm91cElkfSBzdHJpbmcgLWdyb3VwSWQgb2YgdGhlIGdyb3VwIHdoaWNoIGlzIHRvIGJlIGRlbGV0ZWRcclxuICAgKiBAcmV0dXJuIHsqfSAge09ic2VydmFibGU8YW55Pn0gLU9ic2VydmFibGUgcmVwcmVzZW50aW5nIHRoZSBncm91cCBkZWxldGlvbiByZXNwb25zZVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBkZWxldGVHcm91cChkZWxldGVHcm91cFBheWxvYWQ6IERlbGV0ZUdyb3VwUGF5bG9hZCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAucHV0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy9kZWxldGVgLCBkZWxldGVHcm91cFBheWxvYWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRGVsZXRlcyBhIHVzZXIgZnJvbSBncm91cCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb25cclxuICAgKiBAcGFyYW0ge2dyb3VwSWR9IHN0cmluZyAtZ3JvdXBJZCBvZiB0aGUgc2VsZWN0ZWQgZ3JvdXAgZnJvbSB3aGVyZSBzZWxlY3RlZCB1c2VyIHRvIGJlIGRlbGV0ZWQuXHJcbiAgICogQHBhcmFtIHt1c2VySWR9IEFycmF5IC11c2VyIGlkcyBvZiBzZWxlY3RlZCB1c2VycyB3aG8gYXJlIGRlbGV0ZWQgZnJvbSB0aGUgc2VsZWN0ZWQgZ3JvdXBcclxuICAgKiBAcmV0dXJuIHsqfSAge09ic2VydmFibGU8YW55Pn0gLU9ic2VydmFibGUgcmVwcmVzZW50aW5nIHRoZSBncm91cCBkZWxldGlvbiByZXNwb25zZVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBkZWxldGVVc2Vyc0dyb3VwKFxyXG4gICAgZGVsZXRlVXNlckdyb3VwUGF5bG9hZDogRGVsZXRlVXNlckdyb3VwUGF5bG9hZFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLnB1dERhdGEoXHJcbiAgICAgICAgYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvcm9zdGVyL2RlbGV0ZUdyb3VwVXNlcnNgLFxyXG4gICAgICAgIGRlbGV0ZVVzZXJHcm91cFBheWxvYWRcclxuICAgICAgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQb3N0cyBjcmVhdGUgZ3JvdXAgZm9ybSBkYXRhIHRvIHNlcnZlciB1c2luZyBIdHRwU2VydmljZSBmb3IgY3JlYXRpbmcgbmV3IGdyb3VwLlxyXG4gICAqIEBwYXJhbSB7Q3JlYXRlR3JvdXBQYXlsb2FkfSBjcmVhdGVHcm91cFBheWxvYWQgLWNyZWF0ZSBncm91cCBmb3JtIGRhdGEgd2hpY2ggaW5jbHVkZXMgZ3JvdXAgbmFtZSwgdHlwZSwgc2hvcnQgbmFtZSwgc2NvcGUuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxDcmVhdGVHcm91cFJlc3BvbnNlPn0gLXJldHVybnMgY3JlYXRlIGdyb3VwIEFQSSByZXNwb25zZSAoc3VjY2VzcyBvciBlcnJvcikgYXMgYW4gb2JzZXJ2YWJsZS5cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgY3JlYXRlR3JvdXAoXHJcbiAgICBjcmVhdGVHcm91cFBheWxvYWQ6IENyZWF0ZUdyb3VwUGF5bG9hZFxyXG4gICk6IE9ic2VydmFibGU8Q3JlYXRlR3JvdXBSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLnBvc3REYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vZ3JvdXBzL2NyZWF0ZWAsIGNyZWF0ZUdyb3VwUGF5bG9hZClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyBncm91cCBmb3JtIGRhdGEgdG8gc2VydmVyIHVzaW5nIEh0dHBTZXJ2aWNlLlxyXG4gICAqIEBwYXJhbSB7RWRpdEdyb3VwUGF5bG9hZH0gZWRpdEdyb3VwUGF5bG9hZCAtZWRpdCBncm91cCBmb3JtIGRhdGEgd2hpY2ggaW5jbHVkZXMgZ3JvdXAgbmFtZSwgc2hvcnQgbmFtZSwgc2NvcGUuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxFZGl0R3JvdXBQYXlsb2FkPn0gLXJldHVybnMgZWRpdCBncm91cCBBUEkgcmVzcG9uc2UgKHN1Y2Nlc3Mgb3IgZXJyb3IpIGFzIGFuIG9ic2VydmFibGUuXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBlZGl0R3JvdXAoXHJcbiAgICBlZGl0R3JvdXBQYXlsb2FkOiBFZGl0R3JvdXBQYXlsb2FkXHJcbiAgKTogT2JzZXJ2YWJsZTxDcmVhdGVHcm91cFJlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAucHV0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy9lZGl0YCwgZWRpdEdyb3VwUGF5bG9hZClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhpcyBtZXRob2Qgd2lsbCBwYXJzZSB0aGUgZXJyb3IgY29kZXMgYW5kIHJldHVybiB0aGUgcmVzcGVjdGl2ZSBlcnJvciBtZXNzYWdlIGZvciBlYWNoIGNvZGUuXHJcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gZXJyb3JDb2Rlc1xyXG4gICAqIEByZXR1cm4ge3N0cmluZ1tdfSBlcnJvck1lc3NhZ2VcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIHBhcnNlRXJyb3JNZXNzYWdlKGVycm9yQ29kZXM6IHN0cmluZ1tdKSB7XHJcbiAgICBjb25zdCBlcnJvck1lc3NhZ2U6IHN0cmluZ1tdID0gW107XHJcbiAgICBlcnJvckNvZGVzPy5mb3JFYWNoKChpdGVtOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlS2V5ID0gZXJyb3JDb2Rlc1tpbmRleF0gYXMga2V5b2YgdHlwZW9mIHRoaXMuZ3JvdXBzVGV4dDtcclxuICAgICAgZXJyb3JNZXNzYWdlLnB1c2godGhpcy5ncm91cHNUZXh0W2Vycm9yTWVzc2FnZUtleV0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZXJyb3JNZXNzYWdlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyBzZWxlY3RlZCBncm91cCBpbmZvLlxyXG4gICAqIEBwYXJhbSB7KEdyb3VwSW5mbyB8IHVuZGVmaW5lZCl9IHNlbGVjdGVkR3JvdXBJbmZvIC1zZWxlY3RlZCBncm91cCBpbmZvLlxyXG4gICAqIEBwYXJhbSB7KEdyb3VwSW5mbyB8IHVuZGVmaW5lZCl9IFtzZWxlY3RlZEdyb3VwUGFyZW50SW5mb10gLXNlbGVjdGVkIHBhcmVudCBncm91cCBpbmZvLlxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgc2V0U2VsZWN0ZWRHcm91cEluZm8oXHJcbiAgICBzZWxlY3RlZEdyb3VwSW5mbzogR3JvdXBJbmZvIHwgdW5kZWZpbmVkLFxyXG4gICAgc2VsZWN0ZWRHcm91cFBhcmVudEluZm8/OiBHcm91cEluZm8gfCB1bmRlZmluZWRcclxuICApIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRHcm91cEluZm8gPSBzZWxlY3RlZEdyb3VwSW5mbztcclxuICAgIHRoaXMuc2VsZWN0ZWRHcm91cFBhcmVudEluZm8gPSBzZWxlY3RlZEdyb3VwUGFyZW50SW5mbztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHNlbGVjdGVkIGdyb3VwIGluZm8uXHJcbiAgICogQHJldHVybiB7KEdyb3VwSW5mbyB8IHVuZGVmaW5lZCl9IC1ncm91cCBpbmZvLlxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0U2VsZWN0ZWRHcm91cEluZm8oKTogR3JvdXBJbmZvIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkR3JvdXBJbmZvO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgc2VsZWN0ZWQgZ3JvdXAgcGFyZW50IGdyb3VwIGluZm8uXHJcbiAgICogQHJldHVybiB7KEdyb3VwSW5mbyB8IHVuZGVmaW5lZCl9IC1ncm91cCBpbmZvLlxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0U2VsZWN0ZWRHcm91cFBhcmVudEluZm8oKTogR3JvdXBJbmZvIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkR3JvdXBQYXJlbnRJbmZvO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyBncm91cCBmdW5jdGlvbiB0eXBlLlxyXG4gICAqIEBwYXJhbSB7R3JvdXBGdW5jdGlvblR5cGV9IGdyb3VwRnVuY3Rpb25UeXBlIC1ncm91cCBmdW5jdGlvbiB0eXBlLlxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgc2V0R3JvdXBGdW5jdGlvblR5cGUoZ3JvdXBGdW5jdGlvblR5cGU6IEdyb3VwRnVuY3Rpb25UeXBlKTogdm9pZCB7XHJcbiAgICB0aGlzLmdyb3VwRnVuY3Rpb25UeXBlID0gZ3JvdXBGdW5jdGlvblR5cGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGdyb3VwIGZ1bmN0aW9uIHR5cGUuXHJcbiAgICogQHJldHVybiB7R3JvdXBGdW5jdGlvblR5cGV9IC1ncm91cCBmdW5jdGlvbiB0eXBlLlxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0R3JvdXBGdW5jdGlvblR5cGUoKTogR3JvdXBGdW5jdGlvblR5cGUge1xyXG4gICAgcmV0dXJuIHRoaXMuZ3JvdXBGdW5jdGlvblR5cGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBncm91cCB1c2VycyBmb3IgdGhlIGdpdmVuIGdyb3VwIGlkLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBncm91cElkXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxHZXRHcm91cFVzZXJzUmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgZ2V0R3JvdXBVc2VycyhcclxuICAgIGdyb3VwSWQ6IHN0cmluZyxcclxuICAgIHNvcnRDb2x1bW46IHN0cmluZyxcclxuICAgIHNvcnREaXJlY3Rpb246IGJvb2xlYW5cclxuICApOiBPYnNlcnZhYmxlPEdldEdyb3VwVXNlcnNSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLmdldERhdGEoXHJcbiAgICAgICAgYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvcm9zdGVyLyR7Z3JvdXBJZH0/c29ydENvbHVtbj0ke3NvcnRDb2x1bW59JmFzY2VuZGluZ09yZGVyPSR7c29ydERpcmVjdGlvbn1gXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvclJlcztcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgZ3JvdXAgdXNlcnMgYmFzZWQgb24gdGhlIGZpbHRlcmVkIHJvbGVzLlxyXG4gICAqIEBwYXJhbSB7RmlsdGVyVXNlcnNQYXlsb2FkfSBwYXlsb2FkXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxHZXRHcm91cFVzZXJzUmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0R3JvdXBVc2Vyc0J5Um9sZXMoXHJcbiAgICBwYXlsb2FkOiBGaWx0ZXJVc2Vyc1BheWxvYWRcclxuICApOiBPYnNlcnZhYmxlPEdldEdyb3VwVXNlcnNSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLnBvc3REYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vZ3JvdXBzL3Jvc3Rlci9ncm91cFVzZXJzRmlsdGVyYCwgcGF5bG9hZClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvclJlcztcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgZ3JvdXAgdXNlcnMgYmFzZWQgb24gc2VhcmNoZWQgbmFtZSBvciBlbWFpbFxyXG4gICAqIEBwYXJhbSB7U2VhcmNoVXNlcnNQYXlsb2FkfSBwYXlsb2FkXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxHZXRHcm91cFVzZXJzUmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgc2VhcmNoR3JvdXBVc2VycyhcclxuICAgIHBheWxvYWQ6IFNlYXJjaFVzZXJzUGF5bG9hZFxyXG4gICk6IE9ic2VydmFibGU8R2V0R3JvdXBVc2Vyc1Jlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAucG9zdERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvcm9zdGVyL2dyb3VwVXNlcnNTZWFyY2hgLCBwYXlsb2FkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXMpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yUmVzO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBncm91cCByb2xlcyBiYXNlZCBvbiB0aGUgZ3JvdXAgdHlwZS5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZ3JvdXBUeXBlSWRcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENoZWNrYm94T3B0aW9uW10+fVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcclxuICBnZXRHcm91cFR5cGVSb2xlcyhncm91cFR5cGVJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxDaGVja2JveE9wdGlvbltdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAuZ2V0RGF0YShcclxuICAgICAgICBgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy9jb25maWcvcm9sZXNCeUdyb3VwVHlwZS8ke2dyb3VwVHlwZUlkfWBcclxuICAgICAgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCByb2xlc09wdGlvbjogQ2hlY2tib3hPcHRpb25bXSA9IFtdO1xyXG4gICAgICAgICAgcmVzcG9uc2U/LmJvZHk/LmZvckVhY2goKHJvbGU6IFJvbGUpID0+IHtcclxuICAgICAgICAgICAgcm9sZXNPcHRpb24ucHVzaCh7XHJcbiAgICAgICAgICAgICAgaWQ6IHJvbGUucm9sZUlkLFxyXG4gICAgICAgICAgICAgIG5hbWU6IHJvbGUucm9sZU5hbWUsXHJcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5zZXRHcm91cFR5cGVVc2VyUm9sZXMocm9sZXNPcHRpb24pO1xyXG4gICAgICAgICAgcmV0dXJuIHJvbGVzT3B0aW9uO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvclJlcztcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSBjbGFzc2lmaWNhdGlvbnMgbWFzdGVyIGRhdGEgZnJvbSBjb25maWd1cmF0aW9uIGFuZCByZXR1cm5zLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8Q2xhc3NpZmljYXRpb25SZXNwb25zZT59XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRDbGFzc2lmaWNhdGlvbnMoKTogT2JzZXJ2YWJsZTxDbGFzc2lmaWNhdGlvblJlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAuZ2V0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy9yb3N0ZXIvY2xhc3NpZmljYXRpb25gKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXMpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yUmVzO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgdGhlIG1lbWJlciB0eXBlcyBtYXN0ZXIgZGF0YSBmcm9tIGNvbmZpZ3VyYXRpb24gYW5kIHJldHVybnMuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxNZW1iZXJUeXBlUmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0TWVtYmVyVHlwZXMoKTogT2JzZXJ2YWJsZTxNZW1iZXJUeXBlUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5nZXREYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vZ3JvdXBzL3Jvc3Rlci9tZW1iZXJTdGF0dXNgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXMpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yUmVzO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIENvbmNhdGVuYXRlcyB0aGUgZ3JvdXAgdXNlcnMgYXNzaWduZWQgcm9sZXMgbmFtZSBzZXBhcmF0ZWQgYnkgY29tbWEgYXMgc3RyaW5nIGFuZCByZXR1cm5zIHRoZSBncm91cCB1c2VycyBpbiBhbiBhcnJheS5cclxuICAgKiBAcGFyYW0ge0dldEdyb3VwVXNlcnNSZXNwb25zZX0gcmVzcG9uc2VcclxuICAgKiBAcmV0dXJuIHtVc2VyW119XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICB0cmFuc2Zvcm1Vc2VyUm9sZXNOYW1lQXNTdHJpbmcocmVzcG9uc2U6IEdldEdyb3VwVXNlcnNSZXNwb25zZSk6IFVzZXJbXSB7XHJcbiAgICBjb25zdCB1c2VyczogVXNlcltdID0gW107XHJcbiAgICByZXNwb25zZT8uYm9keT8uZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBjb25zdCByb2xlczogc3RyaW5nW10gPSBbXTtcclxuICAgICAgY29uc3QgY2xhc3NpZmljYXRpb25EZXNjID1cclxuICAgICAgICBpdGVtLmNsYXNzaWZpY2F0aW9uPy5jbGFzc2lmaWNhdGlvbk5hbWUgK1xyXG4gICAgICAgICcgKCcgK1xyXG4gICAgICAgIGl0ZW0uY2xhc3NpZmljYXRpb24/LmNsYXNzaWZpY2F0aW9uRGVzYyArXHJcbiAgICAgICAgJyknO1xyXG4gICAgICBpdGVtPy5yb2xlc0xpc3Q/LmZvckVhY2goKHJvbGUpID0+IHJvbGVzLnB1c2gocm9sZT8ucm9sZU5hbWUpKTtcclxuICAgICAgdXNlcnMucHVzaCh7XHJcbiAgICAgICAgdXNlcklkOiBpdGVtLnVzZXJJZCxcclxuICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXHJcbiAgICAgICAgZW1haWw6IGl0ZW0uZW1haWwsXHJcbiAgICAgICAgcm9sZTogcm9sZXMubGVuZ3RoID8gcm9sZXMuam9pbignLCAnKSA6IG51bGwsXHJcbiAgICAgICAgY2xhc3NpZmljYXRpb246IGl0ZW0uY2xhc3NpZmljYXRpb24/LmNsYXNzaWZpY2F0aW9uSWRcclxuICAgICAgICAgID8gY2xhc3NpZmljYXRpb25EZXNjXHJcbiAgICAgICAgICA6IG51bGwsXHJcbiAgICAgICAgbWVtYmVyU3RhdHVzOiBpdGVtLm1lbWJlclN0YXR1cz8ubWVtYmVyU3RhdHVzRGVzYyA/PyBudWxsLFxyXG4gICAgICAgIG9yZ2FuaXphdGlvbjogaXRlbS5vcmdhbml6YXRpb24/Lm9yZ05hbWUgPz8gbnVsbCxcclxuICAgICAgICBlbXBsb3llcjogaXRlbS5lbXBsb3llcj8ub3JnTmFtZSA/PyBudWxsLFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHVzZXJzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGZvcm1hdHRlZCBncm91cCB0eXBlcy5cclxuICAgKiBAcGFyYW0ge0dyb3VwVHlwZUNvbmZpZ3VyYXRpb25bXX0gZ3JvdXBUeXBlUmVzcG9uc2VcclxuICAgKiBAcmV0dXJuIHtHcm91cFR5cGVDb25maWdWYWx1ZX1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldEZvcm1hdHRlZEdyb3VwVHlwZXMoXHJcbiAgICBncm91cFR5cGVSZXNwb25zZTogR3JvdXBUeXBlQ29uZmlndXJhdGlvbltdXHJcbiAgKTogR3JvdXBUeXBlQ29uZmlnVmFsdWUge1xyXG4gICAgY29uc3QgZ3JvdXBUeXBlczogR3JvdXBUeXBlQ29uZmlnVmFsdWUgPSB7fTtcclxuICAgIGdyb3VwVHlwZVJlc3BvbnNlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgZ3JvdXBUeXBlc1tpdGVtLmNvbmZpZ0ZpZWxkSWRdID0gaXRlbS5jb25maWdGaWVsZFZhbHVlO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZ3JvdXBUeXBlcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgZ3JvdXAgdXNlciBkZXRhaWxzIGlmIGVtYWlsIGlzIGZvdW5kLCBlbHNlIHRocm93cyBlcnJvci5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZW1haWxcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPFNlYXJjaFVzZXJCeUVtYWlsUmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0VXNlckJ5RW1haWwoZW1haWw6IHN0cmluZyk6IE9ic2VydmFibGU8U2VhcmNoVXNlckJ5RW1haWxSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLmdldERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvdXNlcnMvdXNlckJ5RW1haWwvJHtlbWFpbH1gKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXMpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yUmVzO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSB1c2VyIGRldGFpbHMgZm9yIHRoZSBzZWxlY3RlZCBncm91cFxyXG4gICAqIEBwYXJhbSB7R2V0VXNlckRldGFpbHNQYXlsb2FkfSBwYXlsb2FkXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxBZGRPckVkaXRHcm91cFVzZXJEZXRhaWxzUmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0R3JvdXBVc2VyRGV0YWlscyhcclxuICAgIHBheWxvYWQ6IEdldFVzZXJEZXRhaWxzUGF5bG9hZFxyXG4gICk6IE9ic2VydmFibGU8QWRkT3JFZGl0R3JvdXBVc2VyRGV0YWlsc1Jlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAucG9zdERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvcm9zdGVyL3VzZXJEZXRhaWxzYCwgcGF5bG9hZClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBQb3N0cyBhZGQgbmV3IHVzZXIgZm9ybSBkYXRhIHRvIHRoZSBBUEkgZm9yIHRoZSBzZWxlY3RlZCBncm91cCBhbmQgcmV0dXJucyB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIHJlc3BvbnNlLlxyXG4gICAqIEBwYXJhbSB7KEFkZE9yRWRpdFVzZXJQYXlsb2FkXHJcbiAgICogICAgICAgfCBBZGRPckVkaXRVc2VySW5kaXZpZHVhbFJvc3RlclBheWxvYWQpfSBBZGRPckVkaXRVc2VyUGF5bG9hZFxyXG4gICAqIEBwYXJhbSB7R3JvdXBSb3N0ZXJUeXBlfSBncm91cFJvc3RlclR5cGVcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEFkZE9yRWRpdEdyb3VwVXNlckRldGFpbHNSZXNwb25zZT59XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBhZGROZXdHcm91cFVzZXIoXHJcbiAgICBBZGRPckVkaXRVc2VyUGF5bG9hZDpcclxuICAgICAgfCBBZGRPckVkaXRVc2VyUGF5bG9hZFxyXG4gICAgICB8IEFkZE9yRWRpdFVzZXJJbmRpdmlkdWFsUm9zdGVyUGF5bG9hZFxyXG4gICk6IE9ic2VydmFibGU8QWRkT3JFZGl0R3JvdXBVc2VyRGV0YWlsc1Jlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAucG9zdERhdGEoXHJcbiAgICAgICAgYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvcm9zdGVyL2NyZWF0ZUdyb3VwVXNlclJvbGVgLFxyXG4gICAgICAgIEFkZE9yRWRpdFVzZXJQYXlsb2FkXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgbG9hZGVkIGdyb3VwIHR5cGUgdXNlciByb2xlc1xyXG4gICAqIEBwYXJhbSB7Q2hlY2tib3hPcHRpb25bXX0gdXNlclJvbGVzXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBzZXRHcm91cFR5cGVVc2VyUm9sZXModXNlclJvbGVzOiBDaGVja2JveE9wdGlvbltdKTogdm9pZCB7XHJcbiAgICB0aGlzLmdyb3VwVHlwZVJvbGVzID0gdXNlclJvbGVzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgZ3JvdXAgdHlwZSB1c2VyIHJvbGVzLlxyXG4gICAqIEByZXR1cm4ge0NoZWNrYm94T3B0aW9uW119XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRHcm91cFR5cGVVc2VyUm9sZXMoKTogQ2hlY2tib3hPcHRpb25bXSB7XHJcbiAgICB0aGlzLmdyb3VwVHlwZVJvbGVzPy5tYXAoKG9wdGlvbikgPT4gKG9wdGlvbi5jaGVja2VkID0gZmFsc2UpKTtcclxuICAgIHJldHVybiB0aGlzLmdyb3VwVHlwZVJvbGVzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgc2VsZWN0ZWQgdXNlciBpbmZvLlxyXG4gICAqIEBwYXJhbSB7R3JvdXBVc2VySW5mb30gdXNlckluZm9cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIHNldFNlbGVjdGVkVXNlckluZm8odXNlckluZm86IEdyb3VwVXNlckluZm8pOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRVc2VySW5mbyA9IHVzZXJJbmZvO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBzZWxlY3RlZCB1c2VyIGluZm8uXHJcbiAgICogQHJldHVybiB7R3JvdXBVc2VySW5mb31cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldFNlbGVjdGVkVXNlckluZm8oKTogR3JvdXBVc2VySW5mbyB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFVzZXJJbmZvO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyBncm91cCB1c2VyIHJvbGVzIGFuZCBvdGhlciBkZXRhaWxzIHRvIHNlcnZlciB1c2luZyBIdHRwU2VydmljZS5cclxuICAgKiBAcGFyYW0geyhBZGRPckVkaXRVc2VyUGF5bG9hZCB8IEFkZE9yRWRpdFVzZXJJbmRpdmlkdWFsUm9zdGVyUGF5bG9hZCl9IHBheWxvYWRcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEFkZE9yRWRpdEdyb3VwVXNlckRldGFpbHNSZXNwb25zZT59XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBlZGl0R3JvdXBzVXNlclJvbGUoXHJcbiAgICBwYXlsb2FkOiBBZGRPckVkaXRVc2VyUGF5bG9hZCB8IEFkZE9yRWRpdFVzZXJJbmRpdmlkdWFsUm9zdGVyUGF5bG9hZFxyXG4gICk6IE9ic2VydmFibGU8QWRkT3JFZGl0R3JvdXBVc2VyRGV0YWlsc1Jlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAucHV0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy9yb3N0ZXIvZWRpdEdyb3VwVXNlclJvbGVgLCBwYXlsb2FkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHJvc3RlciBmdW5jdGlvbiB0eXBlLlxyXG4gICAqIEBwYXJhbSB7Um9zdGVyRnVuY3Rpb25UeXBlfSByb3N0ZXJGdW5jdGlvblR5cGVcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIHNldFJvc3RlckZ1bmN0aW9uVHlwZShyb3N0ZXJGdW5jdGlvblR5cGU6IFJvc3RlckZ1bmN0aW9uVHlwZSk6IHZvaWQge1xyXG4gICAgdGhpcy5yb3N0ZXJGdW5jdGlvblR5cGUgPSByb3N0ZXJGdW5jdGlvblR5cGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHJvc3RlciBmdW5jdGlvbiB0eXBlLlxyXG4gICAqIEByZXR1cm4ge1Jvc3RlckZ1bmN0aW9uVHlwZX1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldFJvc3RlckZ1bmN0aW9uVHlwZSgpOiBSb3N0ZXJGdW5jdGlvblR5cGUge1xyXG4gICAgcmV0dXJuIHRoaXMucm9zdGVyRnVuY3Rpb25UeXBlO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBncm91cHMgYmFzZWQgb24gdGhlIHNlYXJjaCBieSBncm91cCBuYW1lIG9yIGFjcm9ueW0uXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlYXJjaFRlcm1cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEdldEdyb3VwVXNlcnNSZXNwb25zZT59XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBncm91cHNCeU5hbWVBY3JvbnltKHNlYXJjaFRlcm06IHN0cmluZyk6IE9ic2VydmFibGU8R2V0R3JvdXBSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLmdldERhdGEoXHJcbiAgICAgICAgYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvZ3JvdXBzQnlOYW1lQWNyb255bT9uYW1lPSR7c2VhcmNoVGVybX1gXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvclJlcztcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSB1c2VyIGdyb3VwIHBlcm1pc3Npb25zXHJcbiAgICogQHBhcmFtIHtHcm91cFBlcm1pc3Npb25bXX0gdXNlckdyb3VwUGVybWlzc2lvbnNcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIHNldFVzZXJHcm91cFBlcm1pc3Npb25zKHVzZXJHcm91cFBlcm1pc3Npb25zOiBHcm91cFBlcm1pc3Npb25bXSkge1xyXG4gICAgdGhpcy51c2VyR3JvdXBQZXJtaXNzaW9ucyA9IHVzZXJHcm91cFBlcm1pc3Npb25zO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSB1c2VyIGdyb3VwIHBlcm1pc3Npb25zXHJcbiAgICogQHJldHVybiB7R3JvdXBQZXJtaXNzaW9uW119XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRVc2VyR3JvdXBQZXJtaXNzaW9ucygpOiBHcm91cFBlcm1pc3Npb25bXSB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyR3JvdXBQZXJtaXNzaW9ucztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdGVzIHBlcm1pc3Npb24gYmFzZWQgYWNjZXNzIGZvciBwcm92aWRlZCBmZWF0dXJlLlxyXG4gICAqIEBwYXJhbSB7UGVybWlzc2lvblR5cGV9IHBlcm1pc3Npb25UeXBlXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIHZhbGlkYXRlQWNjZXNzKHBlcm1pc3Npb25UeXBlOiBQZXJtaXNzaW9uVHlwZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlclBlcm1pc3Npb25zU2VydmljZS52YWxpZGF0ZUFjY2Vzc1Blcm1pc3Npb24oXHJcbiAgICAgIHBlcm1pc3Npb25UeXBlLFxyXG4gICAgICB0aGlzLmdldFVzZXJHcm91cFBlcm1pc3Npb25zKClcclxuICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFN0b3JlIHRoZSBsb2FkZWQgZ3JvdXAgdHlwZXMuXHJcbiAgICogQHBhcmFtIHtHcm91cFR5cGVDb25maWd1cmF0aW9uW119IGdyb3VwVHlwZXNcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIHNldExvYWRlZEdyb3VwVHlwZXMoZ3JvdXBUeXBlczogR3JvdXBUeXBlQ29uZmlndXJhdGlvbltdKSB7XHJcbiAgICB0aGlzLmdyb3VwVHlwZXMgPSBncm91cFR5cGVzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZXR1cm4gdGhlIGxvYWRlZCBncm91cCB0eXBlcy5cclxuICAgKiBAcmV0dXJuIHtHcm91cFR5cGVDb25maWd1cmF0aW9uW119XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRMb2FkZWRHcm91cFR5cGVzKCk6IEdyb3VwVHlwZUNvbmZpZ3VyYXRpb25bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5ncm91cFR5cGVzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3JnTmFtZVxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8T3JnYW5pemF0aW9uUmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0T3JnYW5pemF0aW9ucyhvcmdOYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE9yZ2FuaXphdGlvblJlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAuZ2V0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy9yb3N0ZXIvb3JnYW5pemF0aW9ucy8ke29yZ05hbWV9YClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvclJlcztcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBncm91cCB0eXBlIGNvbmZpZ3VyYXRpb24gQnVzaW5lc3MgcnVsZSBmb3IgdGhlIHNlbGVjdGVkIGdyb3VwLlxyXG4gICAqIEByZXR1cm4geyhCdXNpbmVzc1J1bGUgIHwgdW5kZWZpbmVkKX1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldEJ1c2luZXNzUnVsZU9mU2VsZWN0ZWRHcm91cCgpOiBCdXNpbmVzc1J1bGUgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0TG9hZGVkR3JvdXBUeXBlcygpPy5maW5kKFxyXG4gICAgICAoZ3JvdXApID0+IGdyb3VwPy5jb25maWdGaWVsZElkID09PSB0aGlzLmdldFNlbGVjdGVkR3JvdXBJbmZvKCk/Lmdyb3VwVHlwZVxyXG4gICAgKT8uY29uZmlnRmllbGRWYWx1ZT8uYnVzaW5lc3NSdWxlO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBmb3JtIHN1Ym1pdCBidXR0b24gYmFzZWQgb24gcGFzc2VkIHBhcmFtZXRlcnMuXHJcbiAgICogQHBhcmFtIHtHcm91cFJvc3RlclR5cGV9IGdyb3VwUm9zdGVyVHlwZVxyXG4gICAqIEBwYXJhbSB7Rm9ybUNvbnRyb2xTdGF0dXN9IGZvcm1TdGF0dXNcclxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBzZWxlY3RlZFVzZXJSb2xlc1xyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBpc1N1Ym1pdEJ1dHRvbkRpc2FibGVkKFxyXG4gICAgZ3JvdXBSb3N0ZXJUeXBlOiBHcm91cFJvc3RlclR5cGUsXHJcbiAgICBmb3JtU3RhdHVzOiBGb3JtQ29udHJvbFN0YXR1cyxcclxuICAgIHNlbGVjdGVkVXNlclJvbGVzOiBzdHJpbmdbXVxyXG4gICk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGdyb3VwUm9zdGVyVHlwZSA9PT0gR3JvdXBSb3N0ZXJUeXBlLklORElWSURVQUwpXHJcbiAgICAgIHJldHVybiBmb3JtU3RhdHVzID09PSBGb3JtU3RhdHVzLklOVkFMSUQ7XHJcbiAgICByZXR1cm4gc2VsZWN0ZWRVc2VyUm9sZXM/Lmxlbmd0aCA9PT0gMCB8fCBmb3JtU3RhdHVzID09PSBGb3JtU3RhdHVzLklOVkFMSUQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIGlzUGFyZW50R3JvdXBDaGFuZ2VkIHRydWUgb3IgZmFsc2UuXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBpc1BhcmVudEdyb3VwQ2hhbmdlZFxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgc2V0UGFyZW50R3JvdXBDaGFuZ2VTdGF0dXMoaXNQYXJlbnRHcm91cENoYW5nZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuaXNQYXJlbnRHcm91cENoYW5nZWQgPSBpc1BhcmVudEdyb3VwQ2hhbmdlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgaXNQYXJlbnRHcm91cENoYW5nZWQgdmFsdWUuXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldFBhcmVudEdyb3VwQ2hhbmdlU3RhdHVzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNQYXJlbnRHcm91cENoYW5nZWQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
588
+ }], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i2.UserPermissionsService }, { type: i3.GroupPermissionsMapService }, { type: i1.AlertsService }]; } });
589
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9zZXJ2aWNlcy9ncm91cHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxHQUFHLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQWFwRSxPQUFPLEtBQUssV0FBVyxNQUFNLDBCQUEwQixDQUFDO0FBWXhELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBZ0J4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7OztBQVd6RDs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sYUFBYTtJQWtCeEIsNkRBQTZEO0lBQzdEO0lBQ0UsMENBQTBDO0lBQ2xDLFdBQXdCO0lBQ2hDLDBDQUEwQztJQUNsQyxzQkFBOEM7SUFDdEQsMENBQTBDO0lBQ2xDLHVCQUFtRDtJQUMzRCwwQ0FBMEM7SUFDbkMsWUFBMkIsQ0FBQyw2Q0FBNkM7O1FBTnhFLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRXhCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFFOUMsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUE0QjtRQUVwRCxpQkFBWSxHQUFaLFlBQVksQ0FBZTtRQTFCcEMsZUFBVSxHQUFHLFdBQVcsRUFBRSxNQUFNLENBQUM7UUFPakMsc0JBQWlCLEdBQUcsSUFBSSxlQUFlLENBQ3JDLGlCQUFpQixDQUFDLFdBQVcsQ0FDOUIsQ0FBQztRQUdGLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBSXZCLHlCQUFvQixHQUFHLEtBQUssQ0FBQztJQVcxQixDQUFDO0lBQ0osOERBQThEO0lBQzlE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QW9CLEdBQUcsb0JBQW9CLENBQUM7SUFDbkQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCwwQkFBMEI7UUFDeEIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDbkMsQ0FBQzsrR0Exc0JVLGFBQWE7bUhBQWIsYUFBYSxjQUZaLE1BQU07OzRGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBtYXAsIGNhdGNoRXJyb3IsIEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIENyZWF0ZUdyb3VwUGF5bG9hZCxcclxuICBDcmVhdGVHcm91cFJlc3BvbnNlLFxyXG59IGZyb20gJy4uL21vZGVscy9jcmVhdGUtZ3JvdXAubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIEJ1c2luZXNzUnVsZSxcclxuICBHcm91cFR5cGVDb25maWd1cmF0aW9uLFxyXG4gIEdyb3VwVHlwZUNvbmZpZ1ZhbHVlLFxyXG4gIEdyb3VwVHlwZVJlc3BvbnNlLFxyXG59IGZyb20gJy4uL21vZGVscy9ncm91cC10eXBlcy5tb2RlbCc7XHJcbmltcG9ydCB7IEFsZXJ0c1NlcnZpY2UsIEh0dHBTZXJ2aWNlIH0gZnJvbSAnQGllZWVzYS1ucG0vdXRpbGl0eSc7XHJcbmltcG9ydCB7IEdldEdyb3VwUmVzcG9uc2UsIEdldEdyb3Vwc1BheWxvYWQgfSBmcm9tICcuLi9tb2RlbHMvdmlldy1ncm91cC5tb2RlbCc7XHJcbmltcG9ydCAqIGFzIHNjcmVlblRleHRzIGZyb20gJy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7IERlbGV0ZUdyb3VwUGF5bG9hZCB9IGZyb20gJy4uL21vZGVscy9kZWxldGUtZ3JvdXAubW9kZWwnO1xyXG5pbXBvcnQgeyBHcm91cEluZm8gfSBmcm9tICcuLi9tb2RlbHMvZ3JvdXAtaW5mby5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgU2VhcmNoVXNlcnNQYXlsb2FkLFxyXG4gIEZpbHRlclVzZXJzUGF5bG9hZCxcclxuICBHZXRHcm91cFVzZXJzUmVzcG9uc2UsXHJcbiAgVXNlcixcclxufSBmcm9tICcuLi9tb2RlbHMvdXNlci5tb2RlbCc7XHJcbmltcG9ydCB7IFJvbGUgfSBmcm9tICcuLi9tb2RlbHMvcm9sZS5tb2RlbCc7XHJcbmltcG9ydCB7IENoZWNrYm94T3B0aW9uIH0gZnJvbSAnQGllZWVzYS1ucG0vcHJlc2VudGF0aW9uJztcclxuaW1wb3J0IHsgRWRpdEdyb3VwUGF5bG9hZCB9IGZyb20gJy4uL21vZGVscy9lZGl0LWdyb3VwLm1vZGVsJztcclxuaW1wb3J0IHsgR3JvdXBGdW5jdGlvblR5cGUgfSBmcm9tICcuLi9tb2RlbHMvZ3JvdXAtZnVuY3Rpb24tdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IFJvc3RlckZ1bmN0aW9uVHlwZSB9IGZyb20gJy4uL21vZGVscy9yb3N0ZXItZnVuY3Rpb24tdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IEdyb3VwVXNlckluZm8gfSBmcm9tICcuLi9tb2RlbHMvZ3JvdXAtdXNlci1pbmZvLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBBZGRPckVkaXRVc2VyUGF5bG9hZCxcclxuICBBZGRPckVkaXRHcm91cFVzZXJEZXRhaWxzUmVzcG9uc2UsXHJcbiAgQWRkT3JFZGl0VXNlckluZGl2aWR1YWxSb3N0ZXJQYXlsb2FkLFxyXG59IGZyb20gJy4uL21vZGVscy9hZGQtb3ItZWRpdC11c2VyLWdyb3VwLm1vZGVsJztcclxuaW1wb3J0IHsgRGVsZXRlVXNlckdyb3VwUGF5bG9hZCB9IGZyb20gJy4uL21vZGVscy9kZWxldGUtdXNlci1ncm91cC5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgR2V0VXNlckRldGFpbHNQYXlsb2FkLFxyXG4gIFNlYXJjaFVzZXJCeUVtYWlsUmVzcG9uc2UsXHJcbn0gZnJvbSAnLi4vbW9kZWxzL2FkZC1uZXctdXNlci5tb2RlbCc7XHJcbmltcG9ydCB7IE9yZ2FuaXphdGlvblJlc3BvbnNlIH0gZnJvbSAnLi4vbW9kZWxzL29yZ2FuaXphdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IE1lbWJlclR5cGVSZXNwb25zZSB9IGZyb20gJy4uL21vZGVscy9tZW1iZXItdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IENsYXNzaWZpY2F0aW9uUmVzcG9uc2UgfSBmcm9tICcuLi9tb2RlbHMvY2xhc3NpZmljYXRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBHcm91cFJvc3RlclR5cGUgfSBmcm9tICcuLi9tb2RlbHMvcm9zdGVyLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBGb3JtU3RhdHVzIH0gZnJvbSAnLi4vbW9kZWxzL2Zvcm0tc3RhdHVzLm1vZGVsJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2xTdGF0dXMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7XHJcbiAgR3JvdXBQZXJtaXNzaW9uLFxyXG4gIFVzZXJQZXJtaXNzaW9uLFxyXG59IGZyb20gJy4uL21vZGVscy9ncm91cC1wZXJtaXNzaW9ucy5tb2RlbCc7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25UeXBlIH0gZnJvbSAnLi4vbW9kZWxzL3Blcm1pc3Npb24tdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IFVzZXJQZXJtaXNzaW9uc1NlcnZpY2UgfSBmcm9tICcuL3VzZXItcGVybWlzc2lvbnMuc2VydmljZSc7XHJcbmltcG9ydCB7IEdyb3VwUGVybWlzc2lvbnNNYXBTZXJ2aWNlIH0gZnJvbSAnLi9ncm91cC1wZXJtaXNzaW9ucy1tYXAtc2VydmljZSc7XHJcbmltcG9ydCB7IFBhcmVudEdyb3Vwc0luZm8gfSBmcm9tICcuLi9tb2RlbHMvcGFyZW50LWdyb3Vwcy1pbmZvLm1vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBHcm91cHMgc2VydmljZSBpcyBhbiBhYnN0cmFjdCBsYXllciBhbmQgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIGdyb3VwcyBSRVNUIEFQSSBjYWxscy5cclxuICogQGNsYXNzIEdyb3Vwc1NlcnZpY2VcclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHcm91cHNTZXJ2aWNlIHtcclxuICBncm91cHNUZXh0ID0gc2NyZWVuVGV4dHM/LmVycm9ycztcclxuICBhcGlCYXNlVXJsITogc3RyaW5nO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgdXNlclBlcm1pc3Npb246IGFueTtcclxuICBzZWxlY3RlZEdyb3VwSW5mbyE6IEdyb3VwSW5mbyB8IHVuZGVmaW5lZDtcclxuICBncm91cEZ1bmN0aW9uVHlwZSE6IEdyb3VwRnVuY3Rpb25UeXBlO1xyXG4gIHNlbGVjdGVkR3JvdXBQYXJlbnRJbmZvITogR3JvdXBJbmZvIHwgdW5kZWZpbmVkO1xyXG4gIG9wZW5Nb2RhbE5vdGlmaWVyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxHcm91cEZ1bmN0aW9uVHlwZT4oXHJcbiAgICBHcm91cEZ1bmN0aW9uVHlwZS5WSUVXX1JPU1RFUlxyXG4gICk7XHJcbiAgZ3JvdXBUeXBlUm9sZXMhOiBDaGVja2JveE9wdGlvbltdO1xyXG4gIHNlbGVjdGVkVXNlckluZm8hOiBHcm91cFVzZXJJbmZvO1xyXG4gIGNhblNob3dNZXNzYWdlID0gZmFsc2U7XHJcbiAgcm9zdGVyRnVuY3Rpb25UeXBlITogUm9zdGVyRnVuY3Rpb25UeXBlO1xyXG4gIHVzZXJHcm91cFBlcm1pc3Npb25zITogR3JvdXBQZXJtaXNzaW9uW107XHJcbiAgZ3JvdXBUeXBlcyE6IEdyb3VwVHlwZUNvbmZpZ3VyYXRpb25bXTtcclxuICBpc1BhcmVudEdyb3VwQ2hhbmdlZCA9IGZhbHNlO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eS1mdW5jdGlvbiwgbm8tdW51c2VkLXZhcnNcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBodHRwU2VydmljZTogSHR0cFNlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgdXNlclBlcm1pc3Npb25zU2VydmljZTogVXNlclBlcm1pc3Npb25zU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBncm91cFBlcm1pc3Npb25zU2VydmljZTogR3JvdXBQZXJtaXNzaW9uc01hcFNlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBhbGVydFNlcnZpY2U6IEFsZXJ0c1NlcnZpY2UgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5LWZ1bmN0aW9uXHJcbiAgKSB7fVxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgc2V0QXBwQ29uZmlnKGFwaUJhc2VVcmw6IHN0cmluZywgdXNlclBlcm1pc3Npb246IGFueSkge1xyXG4gICAgdGhpcy5hcGlCYXNlVXJsID0gYXBpQmFzZVVybDtcclxuICAgIHRoaXMudXNlclBlcm1pc3Npb24gPSB1c2VyUGVybWlzc2lvbjtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyBhcHBsaWNhdGlvbiBncm91cCB0eXBlcyBmcm9tIEFQSSBhbmQgcmV0dXJucyBpdCBhcyBhbiBvYnNlcnZhYmxlLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8R3JvdXBUeXBlUmVzcG9uc2U+fSAtSXQgcmV0dXJucyBncm91cCB0eXBlcyBpZiBzdWNjZXNzIGVsc2UgZXJyb3IuXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGdldEdyb3VwVHlwZXMoKTogT2JzZXJ2YWJsZTxHcm91cFR5cGVSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLmdldERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvY29uZmlnL2dyb3VwVHlwZUNvbmZpZ0luZm9gKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNldExvYWRlZEdyb3VwVHlwZXMocmVzcG9uc2U/LmJvZHkpO1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGFsbG93ZWQgcGFyZW50IGdyb3VwcyBmcm9tIEFQSSBhbmQgcmV0dXJucyBpdCBhcyBhbiBvYnNlcnZhYmxlLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBncm91cElkXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxHcm91cFR5cGVSZXNwb25zZT59XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRBbGxvd2VkUGFyZW50R3JvdXBzKGdyb3VwSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8UGFyZW50R3JvdXBzSW5mb1tdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAuZ2V0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy9hbGxvd2VkUGFyZW50R3JvdXBzLyR7Z3JvdXBJZH1gKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U/LmJvZHk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGFsbCB0aGUgZ3JvdXBzIGJhc2VkIG9uIHBhc3NlZCBncm91cCBJZCBhbmQgZ3JvdXAgdHlwZS5cclxuICAgKiBAcGFyYW0ge0dldEdyb3Vwc1BheWxvYWR9IGdldEdyb3Vwc1BheWxvYWRcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEdldEdyb3VwUmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0R3JvdXBzKGdldEdyb3Vwc1BheWxvYWQ6IEdldEdyb3Vwc1BheWxvYWQpOiBPYnNlcnZhYmxlPEdldEdyb3VwUmVzcG9uc2U+IHtcclxuICAgIGxldCB1cmwgPSAncm9vdEdyb3Vwcyc7XHJcbiAgICBpZiAoZ2V0R3JvdXBzUGF5bG9hZC5ncm91cElkKVxyXG4gICAgICB1cmwgPSAnaW1tQ2hpbGRHcm91cHNCeUdyb3VwSWQvJyArIGdldEdyb3Vwc1BheWxvYWQuZ3JvdXBJZDtcclxuICAgIGVsc2UgaWYgKGdldEdyb3Vwc1BheWxvYWQuZ3JvdXBUeXBlSWQpXHJcbiAgICAgIHVybCA9ICdncm91cHNCeUdyb3VwVHlwZS8nICsgZ2V0R3JvdXBzUGF5bG9hZC5ncm91cFR5cGVJZDtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5nZXREYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vZ3JvdXBzLyR7dXJsfWApLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgIH0pLFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvclJlcykgPT4ge1xyXG4gICAgICAgIHRocm93IGVycm9yUmVzO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRGVsZXRlcyBhIGdyb3VwIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBpbmZvcm1hdGlvblxyXG4gICAqIEBwYXJhbSB7Z3JvdXBJZH0gc3RyaW5nIC1ncm91cElkIG9mIHRoZSBncm91cCB3aGljaCBpcyB0byBiZSBkZWxldGVkXHJcbiAgICogQHJldHVybiB7Kn0gIHtPYnNlcnZhYmxlPGFueT59IC1PYnNlcnZhYmxlIHJlcHJlc2VudGluZyB0aGUgZ3JvdXAgZGVsZXRpb24gcmVzcG9uc2VcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZGVsZXRlR3JvdXAoZGVsZXRlR3JvdXBQYXlsb2FkOiBEZWxldGVHcm91cFBheWxvYWQpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLnB1dERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvZGVsZXRlYCwgZGVsZXRlR3JvdXBQYXlsb2FkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZXMgYSB1c2VyIGZyb20gZ3JvdXAgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uXHJcbiAgICogQHBhcmFtIHtncm91cElkfSBzdHJpbmcgLWdyb3VwSWQgb2YgdGhlIHNlbGVjdGVkIGdyb3VwIGZyb20gd2hlcmUgc2VsZWN0ZWQgdXNlciB0byBiZSBkZWxldGVkLlxyXG4gICAqIEBwYXJhbSB7dXNlcklkfSBBcnJheSAtdXNlciBpZHMgb2Ygc2VsZWN0ZWQgdXNlcnMgd2hvIGFyZSBkZWxldGVkIGZyb20gdGhlIHNlbGVjdGVkIGdyb3VwXHJcbiAgICogQHJldHVybiB7Kn0gIHtPYnNlcnZhYmxlPGFueT59IC1PYnNlcnZhYmxlIHJlcHJlc2VudGluZyB0aGUgZ3JvdXAgZGVsZXRpb24gcmVzcG9uc2VcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZGVsZXRlVXNlcnNHcm91cChcclxuICAgIGRlbGV0ZVVzZXJHcm91cFBheWxvYWQ6IERlbGV0ZVVzZXJHcm91cFBheWxvYWRcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wdXREYXRhKFxyXG4gICAgICAgIGAke3RoaXMuYXBpQmFzZVVybH0vZ3JvdXBzL3Jvc3Rlci9kZWxldGVHcm91cFVzZXJzYCxcclxuICAgICAgICBkZWxldGVVc2VyR3JvdXBQYXlsb2FkXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUG9zdHMgY3JlYXRlIGdyb3VwIGZvcm0gZGF0YSB0byBzZXJ2ZXIgdXNpbmcgSHR0cFNlcnZpY2UgZm9yIGNyZWF0aW5nIG5ldyBncm91cC5cclxuICAgKiBAcGFyYW0ge0NyZWF0ZUdyb3VwUGF5bG9hZH0gY3JlYXRlR3JvdXBQYXlsb2FkIC1jcmVhdGUgZ3JvdXAgZm9ybSBkYXRhIHdoaWNoIGluY2x1ZGVzIGdyb3VwIG5hbWUsIHR5cGUsIHNob3J0IG5hbWUsIHNjb3BlLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8Q3JlYXRlR3JvdXBSZXNwb25zZT59IC1yZXR1cm5zIGNyZWF0ZSBncm91cCBBUEkgcmVzcG9uc2UgKHN1Y2Nlc3Mgb3IgZXJyb3IpIGFzIGFuIG9ic2VydmFibGUuXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGNyZWF0ZUdyb3VwKFxyXG4gICAgY3JlYXRlR3JvdXBQYXlsb2FkOiBDcmVhdGVHcm91cFBheWxvYWRcclxuICApOiBPYnNlcnZhYmxlPENyZWF0ZUdyb3VwUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wb3N0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy9jcmVhdGVgLCBjcmVhdGVHcm91cFBheWxvYWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgZ3JvdXAgZm9ybSBkYXRhIHRvIHNlcnZlciB1c2luZyBIdHRwU2VydmljZS5cclxuICAgKiBAcGFyYW0ge0VkaXRHcm91cFBheWxvYWR9IGVkaXRHcm91cFBheWxvYWQgLWVkaXQgZ3JvdXAgZm9ybSBkYXRhIHdoaWNoIGluY2x1ZGVzIGdyb3VwIG5hbWUsIHNob3J0IG5hbWUsIHNjb3BlLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8RWRpdEdyb3VwUGF5bG9hZD59IC1yZXR1cm5zIGVkaXQgZ3JvdXAgQVBJIHJlc3BvbnNlIChzdWNjZXNzIG9yIGVycm9yKSBhcyBhbiBvYnNlcnZhYmxlLlxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZWRpdEdyb3VwKFxyXG4gICAgZWRpdEdyb3VwUGF5bG9hZDogRWRpdEdyb3VwUGF5bG9hZFxyXG4gICk6IE9ic2VydmFibGU8Q3JlYXRlR3JvdXBSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLnB1dERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvZWRpdGAsIGVkaXRHcm91cFBheWxvYWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoaXMgbWV0aG9kIHdpbGwgcGFyc2UgdGhlIGVycm9yIGNvZGVzIGFuZCByZXR1cm4gdGhlIHJlc3BlY3RpdmUgZXJyb3IgbWVzc2FnZSBmb3IgZWFjaCBjb2RlLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGVycm9yQ29kZXNcclxuICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gZXJyb3JNZXNzYWdlXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBwYXJzZUVycm9yTWVzc2FnZShlcnJvckNvZGVzOiBzdHJpbmdbXSkge1xyXG4gICAgY29uc3QgZXJyb3JNZXNzYWdlOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgZXJyb3JDb2Rlcz8uZm9yRWFjaCgoaXRlbTogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZUtleSA9IGVycm9yQ29kZXNbaW5kZXhdIGFzIGtleW9mIHR5cGVvZiB0aGlzLmdyb3Vwc1RleHQ7XHJcbiAgICAgIGVycm9yTWVzc2FnZS5wdXNoKHRoaXMuZ3JvdXBzVGV4dFtlcnJvck1lc3NhZ2VLZXldKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGVycm9yTWVzc2FnZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgc2VsZWN0ZWQgZ3JvdXAgaW5mby5cclxuICAgKiBAcGFyYW0geyhHcm91cEluZm8gfCB1bmRlZmluZWQpfSBzZWxlY3RlZEdyb3VwSW5mbyAtc2VsZWN0ZWQgZ3JvdXAgaW5mby5cclxuICAgKiBAcGFyYW0geyhHcm91cEluZm8gfCB1bmRlZmluZWQpfSBbc2VsZWN0ZWRHcm91cFBhcmVudEluZm9dIC1zZWxlY3RlZCBwYXJlbnQgZ3JvdXAgaW5mby5cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIHNldFNlbGVjdGVkR3JvdXBJbmZvKFxyXG4gICAgc2VsZWN0ZWRHcm91cEluZm86IEdyb3VwSW5mbyB8IHVuZGVmaW5lZCxcclxuICAgIHNlbGVjdGVkR3JvdXBQYXJlbnRJbmZvPzogR3JvdXBJbmZvIHwgdW5kZWZpbmVkXHJcbiAgKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkR3JvdXBJbmZvID0gc2VsZWN0ZWRHcm91cEluZm87XHJcbiAgICB0aGlzLnNlbGVjdGVkR3JvdXBQYXJlbnRJbmZvID0gc2VsZWN0ZWRHcm91cFBhcmVudEluZm87XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBzZWxlY3RlZCBncm91cCBpbmZvLlxyXG4gICAqIEByZXR1cm4geyhHcm91cEluZm8gfCB1bmRlZmluZWQpfSAtZ3JvdXAgaW5mby5cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldFNlbGVjdGVkR3JvdXBJbmZvKCk6IEdyb3VwSW5mbyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEdyb3VwSW5mbztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHNlbGVjdGVkIGdyb3VwIHBhcmVudCBncm91cCBpbmZvLlxyXG4gICAqIEByZXR1cm4geyhHcm91cEluZm8gfCB1bmRlZmluZWQpfSAtZ3JvdXAgaW5mby5cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldFNlbGVjdGVkR3JvdXBQYXJlbnRJbmZvKCk6IEdyb3VwSW5mbyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEdyb3VwUGFyZW50SW5mbztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgZ3JvdXAgZnVuY3Rpb24gdHlwZS5cclxuICAgKiBAcGFyYW0ge0dyb3VwRnVuY3Rpb25UeXBlfSBncm91cEZ1bmN0aW9uVHlwZSAtZ3JvdXAgZnVuY3Rpb24gdHlwZS5cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIHNldEdyb3VwRnVuY3Rpb25UeXBlKGdyb3VwRnVuY3Rpb25UeXBlOiBHcm91cEZ1bmN0aW9uVHlwZSk6IHZvaWQge1xyXG4gICAgdGhpcy5ncm91cEZ1bmN0aW9uVHlwZSA9IGdyb3VwRnVuY3Rpb25UeXBlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBncm91cCBmdW5jdGlvbiB0eXBlLlxyXG4gICAqIEByZXR1cm4ge0dyb3VwRnVuY3Rpb25UeXBlfSAtZ3JvdXAgZnVuY3Rpb24gdHlwZS5cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldEdyb3VwRnVuY3Rpb25UeXBlKCk6IEdyb3VwRnVuY3Rpb25UeXBlIHtcclxuICAgIHJldHVybiB0aGlzLmdyb3VwRnVuY3Rpb25UeXBlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgZ3JvdXAgdXNlcnMgZm9yIHRoZSBnaXZlbiBncm91cCBpZC5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZ3JvdXBJZFxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8R2V0R3JvdXBVc2Vyc1Jlc3BvbnNlPn1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gIGdldEdyb3VwVXNlcnMoXHJcbiAgICBncm91cElkOiBzdHJpbmcsXHJcbiAgICBzb3J0Q29sdW1uOiBzdHJpbmcsXHJcbiAgICBzb3J0RGlyZWN0aW9uOiBib29sZWFuXHJcbiAgKTogT2JzZXJ2YWJsZTxHZXRHcm91cFVzZXJzUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5nZXREYXRhKFxyXG4gICAgICAgIGAke3RoaXMuYXBpQmFzZVVybH0vZ3JvdXBzL3Jvc3Rlci8ke2dyb3VwSWR9P3NvcnRDb2x1bW49JHtzb3J0Q29sdW1ufSZhc2NlbmRpbmdPcmRlcj0ke3NvcnREaXJlY3Rpb259YFxyXG4gICAgICApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlcykgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3JSZXM7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGdyb3VwIHVzZXJzIGJhc2VkIG9uIHRoZSBmaWx0ZXJlZCByb2xlcy5cclxuICAgKiBAcGFyYW0ge0ZpbHRlclVzZXJzUGF5bG9hZH0gcGF5bG9hZFxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8R2V0R3JvdXBVc2Vyc1Jlc3BvbnNlPn1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldEdyb3VwVXNlcnNCeVJvbGVzKFxyXG4gICAgcGF5bG9hZDogRmlsdGVyVXNlcnNQYXlsb2FkXHJcbiAgKTogT2JzZXJ2YWJsZTxHZXRHcm91cFVzZXJzUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wb3N0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy9yb3N0ZXIvZ3JvdXBVc2Vyc0ZpbHRlcmAsIHBheWxvYWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlcykgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3JSZXM7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGdyb3VwIHVzZXJzIGJhc2VkIG9uIHNlYXJjaGVkIG5hbWUgb3IgZW1haWxcclxuICAgKiBAcGFyYW0ge1NlYXJjaFVzZXJzUGF5bG9hZH0gcGF5bG9hZFxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8R2V0R3JvdXBVc2Vyc1Jlc3BvbnNlPn1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIHNlYXJjaEdyb3VwVXNlcnMoXHJcbiAgICBwYXlsb2FkOiBTZWFyY2hVc2Vyc1BheWxvYWRcclxuICApOiBPYnNlcnZhYmxlPEdldEdyb3VwVXNlcnNSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLnBvc3REYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vZ3JvdXBzL3Jvc3Rlci9ncm91cFVzZXJzU2VhcmNoYCwgcGF5bG9hZClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvclJlcztcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgZ3JvdXAgcm9sZXMgYmFzZWQgb24gdGhlIGdyb3VwIHR5cGUuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGdyb3VwVHlwZUlkXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxDaGVja2JveE9wdGlvbltdPn1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycywgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXHJcbiAgZ2V0R3JvdXBUeXBlUm9sZXMoZ3JvdXBUeXBlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Q2hlY2tib3hPcHRpb25bXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLmdldERhdGEoXHJcbiAgICAgICAgYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvY29uZmlnL3JvbGVzQnlHcm91cFR5cGUvJHtncm91cFR5cGVJZH1gXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgY29uc3Qgcm9sZXNPcHRpb246IENoZWNrYm94T3B0aW9uW10gPSBbXTtcclxuICAgICAgICAgIHJlc3BvbnNlPy5ib2R5Py5mb3JFYWNoKChyb2xlOiBSb2xlKSA9PiB7XHJcbiAgICAgICAgICAgIHJvbGVzT3B0aW9uLnB1c2goe1xyXG4gICAgICAgICAgICAgIGlkOiByb2xlLnJvbGVJZCxcclxuICAgICAgICAgICAgICBuYW1lOiByb2xlLnJvbGVOYW1lLFxyXG4gICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICBjaGVja2VkOiBmYWxzZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuc2V0R3JvdXBUeXBlVXNlclJvbGVzKHJvbGVzT3B0aW9uKTtcclxuICAgICAgICAgIHJldHVybiByb2xlc09wdGlvbjtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlcykgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3JSZXM7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgY2xhc3NpZmljYXRpb25zIG1hc3RlciBkYXRhIGZyb20gY29uZmlndXJhdGlvbiBhbmQgcmV0dXJucy5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENsYXNzaWZpY2F0aW9uUmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0Q2xhc3NpZmljYXRpb25zKCk6IE9ic2VydmFibGU8Q2xhc3NpZmljYXRpb25SZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLmdldERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvcm9zdGVyL2NsYXNzaWZpY2F0aW9uYClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvclJlcztcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSBtZW1iZXIgdHlwZXMgbWFzdGVyIGRhdGEgZnJvbSBjb25maWd1cmF0aW9uIGFuZCByZXR1cm5zLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8TWVtYmVyVHlwZVJlc3BvbnNlPn1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldE1lbWJlclR5cGVzKCk6IE9ic2VydmFibGU8TWVtYmVyVHlwZVJlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAuZ2V0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy9yb3N0ZXIvbWVtYmVyU3RhdHVzYClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvclJlcztcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBDb25jYXRlbmF0ZXMgdGhlIGdyb3VwIHVzZXJzIGFzc2lnbmVkIHJvbGVzIG5hbWUgc2VwYXJhdGVkIGJ5IGNvbW1hIGFzIHN0cmluZyBhbmQgcmV0dXJucyB0aGUgZ3JvdXAgdXNlcnMgaW4gYW4gYXJyYXkuXHJcbiAgICogQHBhcmFtIHtHZXRHcm91cFVzZXJzUmVzcG9uc2V9IHJlc3BvbnNlXHJcbiAgICogQHJldHVybiB7VXNlcltdfVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgdHJhbnNmb3JtVXNlclJvbGVzTmFtZUFzU3RyaW5nKHJlc3BvbnNlOiBHZXRHcm91cFVzZXJzUmVzcG9uc2UpOiBVc2VyW10ge1xyXG4gICAgY29uc3QgdXNlcnM6IFVzZXJbXSA9IFtdO1xyXG4gICAgcmVzcG9uc2U/LmJvZHk/LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgY29uc3Qgcm9sZXM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgIGNvbnN0IGNsYXNzaWZpY2F0aW9uRGVzYyA9XHJcbiAgICAgICAgaXRlbS5jbGFzc2lmaWNhdGlvbj8uY2xhc3NpZmljYXRpb25OYW1lICtcclxuICAgICAgICAnICgnICtcclxuICAgICAgICBpdGVtLmNsYXNzaWZpY2F0aW9uPy5jbGFzc2lmaWNhdGlvbkRlc2MgK1xyXG4gICAgICAgICcpJztcclxuICAgICAgaXRlbT8ucm9sZXNMaXN0Py5mb3JFYWNoKChyb2xlKSA9PiByb2xlcy5wdXNoKHJvbGU/LnJvbGVOYW1lKSk7XHJcbiAgICAgIHVzZXJzLnB1c2goe1xyXG4gICAgICAgIHVzZXJJZDogaXRlbS51c2VySWQsXHJcbiAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxyXG4gICAgICAgIGVtYWlsOiBpdGVtLmVtYWlsLFxyXG4gICAgICAgIHJvbGU6IHJvbGVzLmxlbmd0aCA/IHJvbGVzLmpvaW4oJywgJykgOiBudWxsLFxyXG4gICAgICAgIGNsYXNzaWZpY2F0aW9uOiBpdGVtLmNsYXNzaWZpY2F0aW9uPy5jbGFzc2lmaWNhdGlvbklkXHJcbiAgICAgICAgICA/IGNsYXNzaWZpY2F0aW9uRGVzY1xyXG4gICAgICAgICAgOiBudWxsLFxyXG4gICAgICAgIG1lbWJlclN0YXR1czogaXRlbS5tZW1iZXJTdGF0dXM/Lm1lbWJlclN0YXR1c0Rlc2MgPz8gbnVsbCxcclxuICAgICAgICBvcmdhbml6YXRpb246IGl0ZW0ub3JnYW5pemF0aW9uPy5vcmdOYW1lID8/IG51bGwsXHJcbiAgICAgICAgZW1wbG95ZXI6IGl0ZW0uZW1wbG95ZXI/Lm9yZ05hbWUgPz8gbnVsbCxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB1c2VycztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBmb3JtYXR0ZWQgZ3JvdXAgdHlwZXMuXHJcbiAgICogQHBhcmFtIHtHcm91cFR5cGVDb25maWd1cmF0aW9uW119IGdyb3VwVHlwZVJlc3BvbnNlXHJcbiAgICogQHJldHVybiB7R3JvdXBUeXBlQ29uZmlnVmFsdWV9XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRGb3JtYXR0ZWRHcm91cFR5cGVzKFxyXG4gICAgZ3JvdXBUeXBlUmVzcG9uc2U6IEdyb3VwVHlwZUNvbmZpZ3VyYXRpb25bXVxyXG4gICk6IEdyb3VwVHlwZUNvbmZpZ1ZhbHVlIHtcclxuICAgIGNvbnN0IGdyb3VwVHlwZXM6IEdyb3VwVHlwZUNvbmZpZ1ZhbHVlID0ge307XHJcbiAgICBncm91cFR5cGVSZXNwb25zZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGdyb3VwVHlwZXNbaXRlbS5jb25maWdGaWVsZElkXSA9IGl0ZW0uY29uZmlnRmllbGRWYWx1ZTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGdyb3VwVHlwZXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGdyb3VwIHVzZXIgZGV0YWlscyBpZiBlbWFpbCBpcyBmb3VuZCwgZWxzZSB0aHJvd3MgZXJyb3IuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGVtYWlsXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxTZWFyY2hVc2VyQnlFbWFpbFJlc3BvbnNlPn1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldFVzZXJCeUVtYWlsKGVtYWlsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNlYXJjaFVzZXJCeUVtYWlsUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5nZXREYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vZ3JvdXBzL3VzZXJzL3VzZXJCeUVtYWlsLyR7ZW1haWx9YClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvclJlcztcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgdXNlciBkZXRhaWxzIGZvciB0aGUgc2VsZWN0ZWQgZ3JvdXBcclxuICAgKiBAcGFyYW0ge0dldFVzZXJEZXRhaWxzUGF5bG9hZH0gcGF5bG9hZFxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8QWRkT3JFZGl0R3JvdXBVc2VyRGV0YWlsc1Jlc3BvbnNlPn1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldEdyb3VwVXNlckRldGFpbHMoXHJcbiAgICBwYXlsb2FkOiBHZXRVc2VyRGV0YWlsc1BheWxvYWRcclxuICApOiBPYnNlcnZhYmxlPEFkZE9yRWRpdEdyb3VwVXNlckRldGFpbHNSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLnBvc3REYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vZ3JvdXBzL3Jvc3Rlci91c2VyRGV0YWlsc2AsIHBheWxvYWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUG9zdHMgYWRkIG5ldyB1c2VyIGZvcm0gZGF0YSB0byB0aGUgQVBJIGZvciB0aGUgc2VsZWN0ZWQgZ3JvdXAgYW5kIHJldHVybnMgdGhlIHN1Y2Nlc3Mgb3IgZmFpbHVyZSByZXNwb25zZS5cclxuICAgKiBAcGFyYW0geyhBZGRPckVkaXRVc2VyUGF5bG9hZFxyXG4gICAqICAgICAgIHwgQWRkT3JFZGl0VXNlckluZGl2aWR1YWxSb3N0ZXJQYXlsb2FkKX0gQWRkT3JFZGl0VXNlclBheWxvYWRcclxuICAgKiBAcGFyYW0ge0dyb3VwUm9zdGVyVHlwZX0gZ3JvdXBSb3N0ZXJUeXBlXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxBZGRPckVkaXRHcm91cFVzZXJEZXRhaWxzUmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgYWRkTmV3R3JvdXBVc2VyKFxyXG4gICAgQWRkT3JFZGl0VXNlclBheWxvYWQ6XHJcbiAgICAgIHwgQWRkT3JFZGl0VXNlclBheWxvYWRcclxuICAgICAgfCBBZGRPckVkaXRVc2VySW5kaXZpZHVhbFJvc3RlclBheWxvYWRcclxuICApOiBPYnNlcnZhYmxlPEFkZE9yRWRpdEdyb3VwVXNlckRldGFpbHNSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLnBvc3REYXRhKFxyXG4gICAgICAgIGAke3RoaXMuYXBpQmFzZVVybH0vZ3JvdXBzL3Jvc3Rlci9jcmVhdGVHcm91cFVzZXJSb2xlYCxcclxuICAgICAgICBBZGRPckVkaXRVc2VyUGF5bG9hZFxyXG4gICAgICApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGxvYWRlZCBncm91cCB0eXBlIHVzZXIgcm9sZXNcclxuICAgKiBAcGFyYW0ge0NoZWNrYm94T3B0aW9uW119IHVzZXJSb2xlc1xyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgc2V0R3JvdXBUeXBlVXNlclJvbGVzKHVzZXJSb2xlczogQ2hlY2tib3hPcHRpb25bXSk6IHZvaWQge1xyXG4gICAgdGhpcy5ncm91cFR5cGVSb2xlcyA9IHVzZXJSb2xlcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGdyb3VwIHR5cGUgdXNlciByb2xlcy5cclxuICAgKiBAcmV0dXJuIHtDaGVja2JveE9wdGlvbltdfVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0R3JvdXBUeXBlVXNlclJvbGVzKCk6IENoZWNrYm94T3B0aW9uW10ge1xyXG4gICAgdGhpcy5ncm91cFR5cGVSb2xlcz8ubWFwKChvcHRpb24pID0+IChvcHRpb24uY2hlY2tlZCA9IGZhbHNlKSk7XHJcbiAgICByZXR1cm4gdGhpcy5ncm91cFR5cGVSb2xlcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIHNlbGVjdGVkIHVzZXIgaW5mby5cclxuICAgKiBAcGFyYW0ge0dyb3VwVXNlckluZm99IHVzZXJJbmZvXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBzZXRTZWxlY3RlZFVzZXJJbmZvKHVzZXJJbmZvOiBHcm91cFVzZXJJbmZvKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkVXNlckluZm8gPSB1c2VySW5mbztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgc2VsZWN0ZWQgdXNlciBpbmZvLlxyXG4gICAqIEByZXR1cm4ge0dyb3VwVXNlckluZm99XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRTZWxlY3RlZFVzZXJJbmZvKCk6IEdyb3VwVXNlckluZm8ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRVc2VySW5mbztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgZ3JvdXAgdXNlciByb2xlcyBhbmQgb3RoZXIgZGV0YWlscyB0byBzZXJ2ZXIgdXNpbmcgSHR0cFNlcnZpY2UuXHJcbiAgICogQHBhcmFtIHsoQWRkT3JFZGl0VXNlclBheWxvYWQgfCBBZGRPckVkaXRVc2VySW5kaXZpZHVhbFJvc3RlclBheWxvYWQpfSBwYXlsb2FkXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxBZGRPckVkaXRHcm91cFVzZXJEZXRhaWxzUmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZWRpdEdyb3Vwc1VzZXJSb2xlKFxyXG4gICAgcGF5bG9hZDogQWRkT3JFZGl0VXNlclBheWxvYWQgfCBBZGRPckVkaXRVc2VySW5kaXZpZHVhbFJvc3RlclBheWxvYWRcclxuICApOiBPYnNlcnZhYmxlPEFkZE9yRWRpdEdyb3VwVXNlckRldGFpbHNSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLnB1dERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvcm9zdGVyL2VkaXRHcm91cFVzZXJSb2xlYCwgcGF5bG9hZClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyByb3N0ZXIgZnVuY3Rpb24gdHlwZS5cclxuICAgKiBAcGFyYW0ge1Jvc3RlckZ1bmN0aW9uVHlwZX0gcm9zdGVyRnVuY3Rpb25UeXBlXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBzZXRSb3N0ZXJGdW5jdGlvblR5cGUocm9zdGVyRnVuY3Rpb25UeXBlOiBSb3N0ZXJGdW5jdGlvblR5cGUpOiB2b2lkIHtcclxuICAgIHRoaXMucm9zdGVyRnVuY3Rpb25UeXBlID0gcm9zdGVyRnVuY3Rpb25UeXBlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyByb3N0ZXIgZnVuY3Rpb24gdHlwZS5cclxuICAgKiBAcmV0dXJuIHtSb3N0ZXJGdW5jdGlvblR5cGV9XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRSb3N0ZXJGdW5jdGlvblR5cGUoKTogUm9zdGVyRnVuY3Rpb25UeXBlIHtcclxuICAgIHJldHVybiB0aGlzLnJvc3RlckZ1bmN0aW9uVHlwZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgZ3JvdXBzIGJhc2VkIG9uIHRoZSBzZWFyY2ggYnkgZ3JvdXAgbmFtZSBvciBhY3JvbnltLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZWFyY2hUZXJtXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxHZXRHcm91cFVzZXJzUmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ3JvdXBzQnlOYW1lQWNyb255bShzZWFyY2hUZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEdldEdyb3VwUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5nZXREYXRhKFxyXG4gICAgICAgIGAke3RoaXMuYXBpQmFzZVVybH0vZ3JvdXBzL2dyb3Vwc0J5TmFtZUFjcm9ueW0/bmFtZT0ke3NlYXJjaFRlcm19YFxyXG4gICAgICApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlcykgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3JSZXM7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgdXNlciBncm91cCBwZXJtaXNzaW9uc1xyXG4gICAqIEBwYXJhbSB7R3JvdXBQZXJtaXNzaW9uW119IHVzZXJHcm91cFBlcm1pc3Npb25zXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBzZXRVc2VyR3JvdXBQZXJtaXNzaW9ucyh1c2VyR3JvdXBQZXJtaXNzaW9uczogR3JvdXBQZXJtaXNzaW9uW10pIHtcclxuICAgIHRoaXMudXNlckdyb3VwUGVybWlzc2lvbnMgPSB1c2VyR3JvdXBQZXJtaXNzaW9ucztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgdXNlciBncm91cCBwZXJtaXNzaW9uc1xyXG4gICAqIEByZXR1cm4ge0dyb3VwUGVybWlzc2lvbltdfVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0VXNlckdyb3VwUGVybWlzc2lvbnMoKTogR3JvdXBQZXJtaXNzaW9uW10ge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlckdyb3VwUGVybWlzc2lvbnM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYXRlcyBwZXJtaXNzaW9uIGJhc2VkIGFjY2VzcyBmb3IgcHJvdmlkZWQgZmVhdHVyZS5cclxuICAgKiBDaGVja3MgZm9yIGdyb3VwIGxldmVsIHBlcm1pc3Npb25zLCBhbmQgcHJvdmlkZXMgYWNjZXNzIGJhc2VkIG9uIGluZGl2aWR1YWwgZ3JvdXAgcGVybWlzc2lvbnMuXHJcbiAgICogRm9yIGdsb2JhbCBwZXJtaXNzaW9ucyBwcm92aWRlcyBhY2Nlc3MgYWNyb3NzIHRoZSBpbmRpdmlkdWFsIGdyb3VwcyBvciBTeXN0ZW0gZ3JvdXBzLlxyXG4gICAqIEBwYXJhbSB7UGVybWlzc2lvblR5cGV9IHBlcm1pc3Npb25UeXBlXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIHZhbGlkYXRlQWNjZXNzKFxyXG4gICAgcGVybWlzc2lvblR5cGU6IFBlcm1pc3Npb25UeXBlLFxyXG4gICAgcGVybWlzc2lvbnM/OiBVc2VyUGVybWlzc2lvbltdIHwgbnVsbFxyXG4gICk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHBlcm1pc3Npb25zKSB7XHJcbiAgICAgIGNvbnN0IHVzZXJQZXJtaXNzaW9uc1RvR3JvdXAgPVxyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25zU2VydmljZS5maWx0ZXJVc2VyR3JvdXBQZXJtaXNzaW9ucyhcclxuICAgICAgICAgIHBlcm1pc3Npb25zLFxyXG4gICAgICAgICAgdGhpcy5ncm91cFBlcm1pc3Npb25zU2VydmljZS5nZXRHcm91cFBlcm1pc3Npb25zKClcclxuICAgICAgICApO1xyXG4gICAgICByZXR1cm4gdGhpcy51c2VyUGVybWlzc2lvbnNTZXJ2aWNlLnZhbGlkYXRlQWNjZXNzUGVybWlzc2lvbihcclxuICAgICAgICBwZXJtaXNzaW9uVHlwZSxcclxuICAgICAgICB1c2VyUGVybWlzc2lvbnNUb0dyb3VwXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy51c2VyUGVybWlzc2lvbnNTZXJ2aWNlLnZhbGlkYXRlQWNjZXNzUGVybWlzc2lvbihcclxuICAgICAgcGVybWlzc2lvblR5cGUsXHJcbiAgICAgIHRoaXMuZ2V0VXNlckdyb3VwUGVybWlzc2lvbnMoKVxyXG4gICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU3RvcmUgdGhlIGxvYWRlZCBncm91cCB0eXBlcy5cclxuICAgKiBAcGFyYW0ge0dyb3VwVHlwZUNvbmZpZ3VyYXRpb25bXX0gZ3JvdXBUeXBlc1xyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgc2V0TG9hZGVkR3JvdXBUeXBlcyhncm91cFR5cGVzOiBHcm91cFR5cGVDb25maWd1cmF0aW9uW10pIHtcclxuICAgIHRoaXMuZ3JvdXBUeXBlcyA9IGdyb3VwVHlwZXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJldHVybiB0aGUgbG9hZGVkIGdyb3VwIHR5cGVzLlxyXG4gICAqIEByZXR1cm4ge0dyb3VwVHlwZUNvbmZpZ3VyYXRpb25bXX1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldExvYWRlZEdyb3VwVHlwZXMoKTogR3JvdXBUeXBlQ29uZmlndXJhdGlvbltdIHtcclxuICAgIHJldHVybiB0aGlzLmdyb3VwVHlwZXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcmdOYW1lXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxPcmdhbml6YXRpb25SZXNwb25zZT59XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRPcmdhbml6YXRpb25zKG9yZ05hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8T3JnYW5pemF0aW9uUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5nZXREYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vZ3JvdXBzL3Jvc3Rlci9vcmdhbml6YXRpb25zLyR7b3JnTmFtZX1gKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXMpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yUmVzO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGdyb3VwIHR5cGUgY29uZmlndXJhdGlvbiBCdXNpbmVzcyBydWxlIGZvciB0aGUgc2VsZWN0ZWQgZ3JvdXAuXHJcbiAgICogQHJldHVybiB7KEJ1c2luZXNzUnVsZSAgfCB1bmRlZmluZWQpfVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0QnVzaW5lc3NSdWxlT2ZTZWxlY3RlZEdyb3VwKCk6IEJ1c2luZXNzUnVsZSB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRMb2FkZWRHcm91cFR5cGVzKCk/LmZpbmQoXHJcbiAgICAgIChncm91cCkgPT4gZ3JvdXA/LmNvbmZpZ0ZpZWxkSWQgPT09IHRoaXMuZ2V0U2VsZWN0ZWRHcm91cEluZm8oKT8uZ3JvdXBUeXBlXHJcbiAgICApPy5jb25maWdGaWVsZFZhbHVlPy5idXNpbmVzc1J1bGU7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIGZvcm0gc3VibWl0IGJ1dHRvbiBiYXNlZCBvbiBwYXNzZWQgcGFyYW1ldGVycy5cclxuICAgKiBAcGFyYW0ge0dyb3VwUm9zdGVyVHlwZX0gZ3JvdXBSb3N0ZXJUeXBlXHJcbiAgICogQHBhcmFtIHtGb3JtQ29udHJvbFN0YXR1c30gZm9ybVN0YXR1c1xyXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IHNlbGVjdGVkVXNlclJvbGVzXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGlzU3VibWl0QnV0dG9uRGlzYWJsZWQoXHJcbiAgICBncm91cFJvc3RlclR5cGU6IEdyb3VwUm9zdGVyVHlwZSxcclxuICAgIGZvcm1TdGF0dXM6IEZvcm1Db250cm9sU3RhdHVzLFxyXG4gICAgc2VsZWN0ZWRVc2VyUm9sZXM6IHN0cmluZ1tdXHJcbiAgKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoZ3JvdXBSb3N0ZXJUeXBlID09PSBHcm91cFJvc3RlclR5cGUuSU5ESVZJRFVBTClcclxuICAgICAgcmV0dXJuIGZvcm1TdGF0dXMgPT09IEZvcm1TdGF0dXMuSU5WQUxJRDtcclxuICAgIHJldHVybiBzZWxlY3RlZFVzZXJSb2xlcz8ubGVuZ3RoID09PSAwIHx8IGZvcm1TdGF0dXMgPT09IEZvcm1TdGF0dXMuSU5WQUxJRDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgaXNQYXJlbnRHcm91cENoYW5nZWQgdHJ1ZSBvciBmYWxzZS5cclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzUGFyZW50R3JvdXBDaGFuZ2VkXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBzZXRQYXJlbnRHcm91cENoYW5nZVN0YXR1cyhpc1BhcmVudEdyb3VwQ2hhbmdlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pc1BhcmVudEdyb3VwQ2hhbmdlZCA9IGlzUGFyZW50R3JvdXBDaGFuZ2VkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBpc1BhcmVudEdyb3VwQ2hhbmdlZCB2YWx1ZS5cclxuICAgKiBAcmV0dXJuIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0UGFyZW50R3JvdXBDaGFuZ2VTdGF0dXMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc1BhcmVudEdyb3VwQ2hhbmdlZDtcclxuICB9XHJcbn1cclxuIl19
@@ -25,10 +25,8 @@ export class UserPermissionsService {
25
25
  * @return {GroupPermissions[]}
26
26
  * @memberof UserPermissionsService
27
27
  */
28
- filterUserGroupPermissions(userPermissions) {
29
- const userGroupPermissions = this.groupPermissionsService
30
- ?.getGroupPermissions()
31
- ?.filter((permission) => userPermissions?.find(({ permissionId }) => permission?.permissionId === permissionId));
28
+ filterUserGroupPermissions(userPermissions, groupPermissions) {
29
+ const userGroupPermissions = groupPermissions?.filter((permission) => userPermissions?.find(({ permissionId }) => permission?.permissionId === permissionId));
32
30
  return userGroupPermissions;
33
31
  }
34
32
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserPermissionsService, deps: [{ token: i1.GroupPermissionsMapService }], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -40,4 +38,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
40
38
  providedIn: 'root',
41
39
  }]
42
40
  }], ctorParameters: function () { return [{ type: i1.GroupPermissionsMapService }]; } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wZXJtaXNzaW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3JvdXBzL3NyYy9saWIvc2VydmljZXMvdXNlci1wZXJtaXNzaW9ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVczQyxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLDZEQUE2RDtJQUM3RCxZQUFvQix1QkFBbUQ7UUFBbkQsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUE0QjtJQUFHLENBQUM7SUFFM0U7Ozs7OztPQU1HO0lBQ0gsd0JBQXdCLENBQ3RCLFVBQTBCLEVBQzFCLG9CQUF1QztRQUV2QyxNQUFNLFdBQVcsR0FBRyxvQkFBb0I7WUFDdEMsQ0FBQyxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FDeEIsQ0FBQyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxjQUFjLEtBQUssVUFBVSxDQUN0RDtZQUNILENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDVixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCwwQkFBMEIsQ0FBQyxlQUFpQztRQUMxRCxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyx1QkFBdUI7WUFDdkQsRUFBRSxtQkFBbUIsRUFBRTtZQUN2QixFQUFFLE1BQU0sQ0FBQyxDQUFDLFVBQTJCLEVBQUUsRUFBRSxDQUN2QyxlQUFlLEVBQUUsSUFBSSxDQUNuQixDQUFDLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUFDLFVBQVUsRUFBRSxZQUFZLEtBQUssWUFBWSxDQUNoRSxDQUNGLENBQUM7UUFDSixPQUFPLG9CQUFvQixDQUFDO0lBQzlCLENBQUM7K0dBdENVLHNCQUFzQjttSEFBdEIsc0JBQXNCLGNBRnJCLE1BQU07OzRGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25UeXBlIH0gZnJvbSAnLi4vbW9kZWxzL3Blcm1pc3Npb24tdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IEdyb3VwUGVybWlzc2lvbnNNYXBTZXJ2aWNlIH0gZnJvbSAnLi9ncm91cC1wZXJtaXNzaW9ucy1tYXAtc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgR3JvdXBQZXJtaXNzaW9uLFxyXG4gIFVzZXJQZXJtaXNzaW9uLFxyXG59IGZyb20gJy4uL21vZGVscy9ncm91cC1wZXJtaXNzaW9ucy5tb2RlbCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlclBlcm1pc3Npb25zU2VydmljZSB7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzLCBuby1lbXB0eS1mdW5jdGlvblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZ3JvdXBQZXJtaXNzaW9uc1NlcnZpY2U6IEdyb3VwUGVybWlzc2lvbnNNYXBTZXJ2aWNlKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGFjY2VzcyBwcm92aXNpb24gZm9yIHRoZSBwYXNzZWQgYWN0aW9uL2ZlYXR1cmUgYmFzZWQgb24gd2hldGhlciB0aGUgc2lnbmVkIGluIHVzZXIgaGFzIGFwcHJvcHJpYXRlIHBlcm1pc3Npb24uXHJcbiAgICogQHBhcmFtIHtQZXJtaXNzaW9uVHlwZX0gcGVybWlzc2lvblxyXG4gICAqIEBwYXJhbSB7R3JvdXBQZXJtaXNzaW9uW119IHVzZXJHcm91cFBlcm1pc3Npb25zXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgVXNlclBlcm1pc3Npb25zU2VydmljZVxyXG4gICAqL1xyXG4gIHZhbGlkYXRlQWNjZXNzUGVybWlzc2lvbihcclxuICAgIHBlcm1pc3Npb246IFBlcm1pc3Npb25UeXBlLFxyXG4gICAgdXNlckdyb3VwUGVybWlzc2lvbnM6IEdyb3VwUGVybWlzc2lvbltdXHJcbiAgKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBpc1Blcm1pdHRlZCA9IHVzZXJHcm91cFBlcm1pc3Npb25zXHJcbiAgICAgID8gdXNlckdyb3VwUGVybWlzc2lvbnM/LnNvbWUoXHJcbiAgICAgICAgICAoeyBwZXJtaXNzaW9uVHlwZSB9KSA9PiBwZXJtaXNzaW9uVHlwZSA9PT0gcGVybWlzc2lvblxyXG4gICAgICAgIClcclxuICAgICAgOiBmYWxzZTtcclxuICAgIHJldHVybiBpc1Blcm1pdHRlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbHRlcnMgc2lnbmVkIGluIHVzZXIgZ3JvdXAgcGVybWlzc2lvbnMgZnJvbSBlbnRpcmUgZ3JvdXAgcGVybWlzc2lvbnMuXHJcbiAgICogQHBhcmFtIHtVc2VyUGVybWlzc2lvbnNbXX0gdXNlclBlcm1pc3Npb25zXHJcbiAgICogQHJldHVybiB7R3JvdXBQZXJtaXNzaW9uc1tdfVxyXG4gICAqIEBtZW1iZXJvZiBVc2VyUGVybWlzc2lvbnNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZmlsdGVyVXNlckdyb3VwUGVybWlzc2lvbnModXNlclBlcm1pc3Npb25zOiBVc2VyUGVybWlzc2lvbltdKTogR3JvdXBQZXJtaXNzaW9uW10ge1xyXG4gICAgY29uc3QgdXNlckdyb3VwUGVybWlzc2lvbnMgPSB0aGlzLmdyb3VwUGVybWlzc2lvbnNTZXJ2aWNlXHJcbiAgICAgID8uZ2V0R3JvdXBQZXJtaXNzaW9ucygpXHJcbiAgICAgID8uZmlsdGVyKChwZXJtaXNzaW9uOiBHcm91cFBlcm1pc3Npb24pID0+XHJcbiAgICAgICAgdXNlclBlcm1pc3Npb25zPy5maW5kKFxyXG4gICAgICAgICAgKHsgcGVybWlzc2lvbklkIH0pID0+IHBlcm1pc3Npb24/LnBlcm1pc3Npb25JZCA9PT0gcGVybWlzc2lvbklkXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgcmV0dXJuIHVzZXJHcm91cFBlcm1pc3Npb25zO1xyXG4gIH1cclxufVxyXG4iXX0=
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wZXJtaXNzaW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3JvdXBzL3NyYy9saWIvc2VydmljZXMvdXNlci1wZXJtaXNzaW9ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVczQyxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLDZEQUE2RDtJQUM3RCxZQUFvQix1QkFBbUQ7UUFBbkQsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUE0QjtJQUFHLENBQUM7SUFFM0U7Ozs7OztPQU1HO0lBQ0gsd0JBQXdCLENBQ3RCLFVBQTBCLEVBQzFCLG9CQUF1QztRQUV2QyxNQUFNLFdBQVcsR0FBRyxvQkFBb0I7WUFDdEMsQ0FBQyxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FDeEIsQ0FBQyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxjQUFjLEtBQUssVUFBVSxDQUN0RDtZQUNILENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDVixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCwwQkFBMEIsQ0FDeEIsZUFBaUMsRUFDakMsZ0JBQW1DO1FBRW5DLE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWdCLEVBQUUsTUFBTSxDQUNuRCxDQUFDLFVBQTJCLEVBQUUsRUFBRSxDQUM5QixlQUFlLEVBQUUsSUFBSSxDQUNuQixDQUFDLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUFDLFVBQVUsRUFBRSxZQUFZLEtBQUssWUFBWSxDQUNoRSxDQUNKLENBQUM7UUFDRixPQUFPLG9CQUFvQixDQUFDO0lBQzlCLENBQUM7K0dBeENVLHNCQUFzQjttSEFBdEIsc0JBQXNCLGNBRnJCLE1BQU07OzRGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25UeXBlIH0gZnJvbSAnLi4vbW9kZWxzL3Blcm1pc3Npb24tdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IEdyb3VwUGVybWlzc2lvbnNNYXBTZXJ2aWNlIH0gZnJvbSAnLi9ncm91cC1wZXJtaXNzaW9ucy1tYXAtc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgR3JvdXBQZXJtaXNzaW9uLFxyXG4gIFVzZXJQZXJtaXNzaW9uLFxyXG59IGZyb20gJy4uL21vZGVscy9ncm91cC1wZXJtaXNzaW9ucy5tb2RlbCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlclBlcm1pc3Npb25zU2VydmljZSB7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzLCBuby1lbXB0eS1mdW5jdGlvblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZ3JvdXBQZXJtaXNzaW9uc1NlcnZpY2U6IEdyb3VwUGVybWlzc2lvbnNNYXBTZXJ2aWNlKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGFjY2VzcyBwcm92aXNpb24gZm9yIHRoZSBwYXNzZWQgYWN0aW9uL2ZlYXR1cmUgYmFzZWQgb24gd2hldGhlciB0aGUgc2lnbmVkIGluIHVzZXIgaGFzIGFwcHJvcHJpYXRlIHBlcm1pc3Npb24uXHJcbiAgICogQHBhcmFtIHtQZXJtaXNzaW9uVHlwZX0gcGVybWlzc2lvblxyXG4gICAqIEBwYXJhbSB7R3JvdXBQZXJtaXNzaW9uW119IHVzZXJHcm91cFBlcm1pc3Npb25zXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgVXNlclBlcm1pc3Npb25zU2VydmljZVxyXG4gICAqL1xyXG4gIHZhbGlkYXRlQWNjZXNzUGVybWlzc2lvbihcclxuICAgIHBlcm1pc3Npb246IFBlcm1pc3Npb25UeXBlLFxyXG4gICAgdXNlckdyb3VwUGVybWlzc2lvbnM6IEdyb3VwUGVybWlzc2lvbltdXHJcbiAgKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBpc1Blcm1pdHRlZCA9IHVzZXJHcm91cFBlcm1pc3Npb25zXHJcbiAgICAgID8gdXNlckdyb3VwUGVybWlzc2lvbnM/LnNvbWUoXHJcbiAgICAgICAgICAoeyBwZXJtaXNzaW9uVHlwZSB9KSA9PiBwZXJtaXNzaW9uVHlwZSA9PT0gcGVybWlzc2lvblxyXG4gICAgICAgIClcclxuICAgICAgOiBmYWxzZTtcclxuICAgIHJldHVybiBpc1Blcm1pdHRlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbHRlcnMgc2lnbmVkIGluIHVzZXIgZ3JvdXAgcGVybWlzc2lvbnMgZnJvbSBlbnRpcmUgZ3JvdXAgcGVybWlzc2lvbnMuXHJcbiAgICogQHBhcmFtIHtVc2VyUGVybWlzc2lvbnNbXX0gdXNlclBlcm1pc3Npb25zXHJcbiAgICogQHJldHVybiB7R3JvdXBQZXJtaXNzaW9uc1tdfVxyXG4gICAqIEBtZW1iZXJvZiBVc2VyUGVybWlzc2lvbnNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZmlsdGVyVXNlckdyb3VwUGVybWlzc2lvbnMoXHJcbiAgICB1c2VyUGVybWlzc2lvbnM6IFVzZXJQZXJtaXNzaW9uW10sXHJcbiAgICBncm91cFBlcm1pc3Npb25zOiBHcm91cFBlcm1pc3Npb25bXVxyXG4gICk6IEdyb3VwUGVybWlzc2lvbltdIHtcclxuICAgIGNvbnN0IHVzZXJHcm91cFBlcm1pc3Npb25zID0gZ3JvdXBQZXJtaXNzaW9ucz8uZmlsdGVyKFxyXG4gICAgICAocGVybWlzc2lvbjogR3JvdXBQZXJtaXNzaW9uKSA9PlxyXG4gICAgICAgIHVzZXJQZXJtaXNzaW9ucz8uZmluZChcclxuICAgICAgICAgICh7IHBlcm1pc3Npb25JZCB9KSA9PiBwZXJtaXNzaW9uPy5wZXJtaXNzaW9uSWQgPT09IHBlcm1pc3Npb25JZFxyXG4gICAgICAgIClcclxuICAgICk7XHJcbiAgICByZXR1cm4gdXNlckdyb3VwUGVybWlzc2lvbnM7XHJcbiAgfVxyXG59XHJcbiJdfQ==