@netgrif/components-core 6.4.0-beta.6 → 6.4.0-beta.7
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.
- package/esm2020/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.mjs +33 -11
- package/fesm2015/netgrif-components-core.mjs +32 -10
- package/fesm2015/netgrif-components-core.mjs.map +1 -1
- package/fesm2020/netgrif-components-core.mjs +32 -10
- package/fesm2020/netgrif-components-core.mjs.map +1 -1
- package/package.json +1 -1
package/esm2020/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.mjs
CHANGED
|
@@ -117,8 +117,9 @@ export class AbstractNavigationDoubleDrawerComponent {
|
|
|
117
117
|
return;
|
|
118
118
|
}
|
|
119
119
|
this._currentNode = node;
|
|
120
|
-
if (!node)
|
|
120
|
+
if (!node) {
|
|
121
121
|
return;
|
|
122
|
+
}
|
|
122
123
|
if (node.parentId && !node.parent) {
|
|
123
124
|
if (node.parentId === this._uriService.root.id) {
|
|
124
125
|
node.parent = this._uriService.root;
|
|
@@ -134,7 +135,14 @@ export class AbstractNavigationDoubleDrawerComponent {
|
|
|
134
135
|
});
|
|
135
136
|
}
|
|
136
137
|
}
|
|
137
|
-
this.
|
|
138
|
+
if (this.nodeLoading$.isActive) {
|
|
139
|
+
this.nodeLoading$.subscribe(() => {
|
|
140
|
+
this.resolveMenuItems(node);
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
this.resolveMenuItems(node);
|
|
145
|
+
}
|
|
138
146
|
}
|
|
139
147
|
resolveMenuItems(node) {
|
|
140
148
|
if (this._uriService.isRoot(node)) {
|
|
@@ -245,16 +253,30 @@ export class AbstractNavigationDoubleDrawerComponent {
|
|
|
245
253
|
this._uriService.activeNode = this._currentNode.parent;
|
|
246
254
|
}
|
|
247
255
|
onItemClick(item) {
|
|
248
|
-
if (
|
|
249
|
-
|
|
250
|
-
this.
|
|
251
|
-
this._uriService.activeNode =
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
|
|
256
|
+
if (item.resource === undefined) {
|
|
257
|
+
// custom view represented only in nae.json
|
|
258
|
+
if (item.processUri === this.currentNode.uriPath) {
|
|
259
|
+
this._uriService.activeNode = this._currentNode;
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
this._uriService.activeNode = this._currentNode.parent;
|
|
263
|
+
}
|
|
255
264
|
}
|
|
256
265
|
else {
|
|
257
|
-
|
|
266
|
+
const path = item.resource.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH)?.value;
|
|
267
|
+
if (this.hasItemChildren(item) && !this.leftLoading$.isActive && !this.rightLoading$.isActive) {
|
|
268
|
+
this._uriService.getNodeByPath(path).subscribe(node => {
|
|
269
|
+
this._uriService.activeNode = node;
|
|
270
|
+
}, error => {
|
|
271
|
+
this._log.error(error);
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
else if (!path.includes(this.currentNode.uriPath)) {
|
|
275
|
+
this._uriService.activeNode = this._currentNode.parent;
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
this._uriService.activeNode = this._currentNode;
|
|
279
|
+
}
|
|
258
280
|
}
|
|
259
281
|
}
|
|
260
282
|
hasItemChildren(item) {
|
|
@@ -541,4 +563,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
541
563
|
}], viewsCategoryName: [{
|
|
542
564
|
type: Input
|
|
543
565
|
}] } });
|
|
544
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbmF2aWdhdGlvbi1kb3VibGUtZHJhd2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9uYXZpZ2F0aW9uL25hdmlnYXRpb24tZG91YmxlLWRyYXdlci9hYnN0cmFjdC1uYXZpZ2F0aW9uLWRvdWJsZS1kcmF3ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixXQUFXLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBaUMsTUFBTSxlQUFlLENBQUM7QUFJL0UsT0FBTyxFQUFhLEVBQUUsRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFXbkMsT0FBTyxFQUFDLDhCQUE4QixFQUFDLE1BQU0sdURBQXVELENBQUM7QUFJckcsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBSzdELE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBSTdFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQWMvRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM1QixpQkFBaUI7Q0FDcEIsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLGVBQWUsQ0FBQztBQUV0RCxNQUFNLHlCQUF5QixHQUFHLEVBQUUsQ0FBQztBQUNyQyxNQUFNLDBCQUEwQixHQUFHLEdBQUcsQ0FBQztBQUN2QyxNQUFNLDhCQUE4QixHQUFHLEdBQUcsQ0FBQztB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QUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7Z0JBQ3hCLEVBQUUsRUFBRSxVQUFVO2dCQUNkLEdBQUcsU0FBUzthQUNmLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQzs7cUlBNWhCaUIsdUNBQXVDO3lIQUF2Qyx1Q0FBdUMsNm1CQUYvQyxFQUFFOzRGQUVNLHVDQUF1QztrQkFKNUQsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsdUNBQXVDO29CQUNqRCxRQUFRLEVBQUUsRUFBRTtpQkFDZjtnaEJBR1ksY0FBYztzQkFBdEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QnJlYWtwb2ludE9ic2VydmVyLCBCcmVha3BvaW50c30gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hdERyYXdlck1vZGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtSZXNpemVFdmVudH0gZnJvbSAnYW5ndWxhci1yZXNpemFibGUtZWxlbWVudCc7XG5pbXBvcnQge09ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7Um9sZUFjY2VzcywgVmlld30gZnJvbSAnLi4vLi4vLi4vY29tbW9ucy9zY2hlbWEnO1xuaW1wb3J0IHtBY2Nlc3NTZXJ2aWNlfSBmcm9tICcuLi8uLi9hdXRob3JpemF0aW9uL3Blcm1pc3Npb24vYWNjZXNzLnNlcnZpY2UnO1xuaW1wb3J0IHtDb25maWd1cmF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtJbXBlcnNvbmF0aW9uVXNlclNlbGVjdFNlcnZpY2V9IGZyb20gJy4uLy4uL2ltcGVyc29uYXRpb24vc2VydmljZXMvaW1wZXJzb25hdGlvbi11c2VyLXNlbGVjdC5zZXJ2aWNlJztcbmltcG9ydCB7SW1wZXJzb25hdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL2ltcGVyc29uYXRpb24vc2VydmljZXMvaW1wZXJzb25hdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7Q2FzZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS9jYXNlJztcbmltcG9ydCB7XG4gICAgRHluYW1pY05hdmlnYXRpb25Sb3V0ZVByb3ZpZGVyU2VydmljZSxcbn0gZnJvbSAnLi4vLi4vcm91dGluZy9keW5hbWljLW5hdmlnYXRpb24tcm91dGUtcHJvdmlkZXIvZHluYW1pYy1uYXZpZ2F0aW9uLXJvdXRlLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtOQUVfUk9VVElOR19DT05GSUdVUkFUSU9OX1BBVEh9IGZyb20gJy4uLy4uL3JvdXRpbmcvcm91dGluZy1idWlsZGVyL3JvdXRpbmctYnVpbGRlci5zZXJ2aWNlJztcbmltcG9ydCB7TGFuZ3VhZ2VTZXJ2aWNlfSBmcm9tICcuLi8uLi90cmFuc2xhdGUvbGFuZ3VhZ2Uuc2VydmljZSc7XG5pbXBvcnQge1VzZXJ9IGZyb20gJy4uLy4uL3VzZXIvbW9kZWxzL3VzZXInO1xuaW1wb3J0IHtVc2VyU2VydmljZX0gZnJvbSAnLi4vLi4vdXNlci9zZXJ2aWNlcy91c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtMb2FkaW5nRW1pdHRlcn0gZnJvbSAnLi4vLi4vdXRpbGl0eS9sb2FkaW5nLWVtaXR0ZXInO1xuaW1wb3J0IHtVcmlOb2RlUmVzb3VyY2V9IGZyb20gJy4uL21vZGVsL3VyaS1yZXNvdXJjZSc7XG5pbXBvcnQge1VyaVNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2UvdXJpLnNlcnZpY2UnO1xuaW1wb3J0IHtJMThuRmllbGRWYWx1ZX0gZnJvbSBcIi4uLy4uL2RhdGEtZmllbGRzL2kxOG4tZmllbGQvbW9kZWxzL2kxOG4tZmllbGQtdmFsdWVcIjtcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7R3JvdXBOYXZpZ2F0aW9uQ29uc3RhbnRzfSBmcm9tIFwiLi4vbW9kZWwvZ3JvdXAtbmF2aWdhdGlvbi1jb25zdGFudHNcIjtcbmltcG9ydCB7Q2FzZVJlc291cmNlU2VydmljZX0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9lbmdpbmUtZW5kcG9pbnQvY2FzZS1yZXNvdXJjZS5zZXJ2aWNlXCI7XG5pbXBvcnQge1BhZ2V9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL3BhZ2VcIjtcbmltcG9ydCB7Q2FzZVNlYXJjaFJlcXVlc3RCb2R5LCBQZXRyaU5ldFNlYXJjaFJlcXVlc3R9IGZyb20gXCIuLi8uLi9maWx0ZXIvbW9kZWxzL2Nhc2Utc2VhcmNoLXJlcXVlc3QtYm9keVwiO1xuaW1wb3J0IHtIdHRwUGFyYW1zfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcbmltcG9ydCB7UGFnaW5hdGlvblBhcmFtc30gZnJvbSBcIi4uLy4uL3V0aWxpdHkvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLXBhcmFtc1wiO1xuaW1wb3J0IHtTaW1wbGVGaWx0ZXJ9IGZyb20gXCIuLi8uLi9maWx0ZXIvbW9kZWxzL3NpbXBsZS1maWx0ZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb25maWdEb3VibGVNZW51IHtcbiAgICBtb2RlOiBNYXREcmF3ZXJNb2RlO1xuICAgIG9wZW5lZDogYm9vbGVhbjtcbiAgICBkaXNhYmxlQ2xvc2U6IGJvb2xlYW47XG4gICAgd2lkdGg6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOYXZpZ2F0aW9uSXRlbSBleHRlbmRzIFZpZXcge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgcmVzb3VyY2U/OiBDYXNlO1xufVxuXG5leHBvcnQgY29uc3QgTUVOVV9JREVOVElGSUVSUyA9IFtcbiAgICAncHJlZmVyZW5jZV9pdGVtJyxcbl07XG5leHBvcnQgY29uc3QgU0VUVElOR1NfVFJBTlNJVElPTl9JRCA9ICdpdGVtX3NldHRpbmdzJztcblxuY29uc3QgTEVGVF9EUkFXRVJfREVGQVVMVF9XSURUSCA9IDYwO1xuY29uc3QgUklHSFRfRFJBV0VSX0RFRkFVTFRfV0lEVEggPSAyNDA7XG5jb25zdCBSSUdIVF9EUkFXRVJfREVGQVVMVF9NSU5fV0lEVEggPSAxODA7XG5jb25zdCBSSUdIVF9EUkFXRVJfTUFYX1dJRFRIID0gNDYwO1xuY29uc3QgUklHSFRfU0lERV9ORVdfUEFHRV9TSVpFID0gMTBcbmNvbnN0IFJJR0hUX1NJREVfSU5JVF9QQUdFX1NJWkUgPSAyMFxuXG5lbnVtIE1lbnVPcmRlciB7XG4gICAgQXNjZW5kaW5nLFxuICAgIERlc2NlbmRpbmdcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduY2MtYWJzdHJhY3QtbmF2aWdhdGlvbi1kb3VibGUtZHJhd2VyJyxcbiAgICB0ZW1wbGF0ZTogJycsXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0TmF2aWdhdGlvbkRvdWJsZURyYXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dCgpIHBvcnRhbExlZnRNZW51OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIEBJbnB1dCgpIHBvcnRhbFJpZ2h0TWVudTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBASW5wdXQoKSBpbWFnZVJvdXRlckxpbms6IHN0cmluZyA9ICcvJztcbiAgICBASW5wdXQoKSBpbWFnZUFsdDogc3RyaW5nID0gJ0xvZ28nO1xuICAgIEBJbnB1dCgpIGltYWdlOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHJvZmlsZVJvdXRlckxpbms6IHN0cmluZyA9ICcvcHJvZmlsZSc7XG4gICAgQElucHV0KCkgaW5jbHVkZVVzZXI6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIGluY2x1ZGVMYW5ndWFnZTogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgaW5jbHVkZU1vcmVNZW51OiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBpbmNsdWRlSW1wZXJzb25hdGlvbjogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgYWxsQ2xvc2FibGU6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIGZvbGRlckljb246IHN0cmluZyA9ICdmb2xkZXInO1xuICAgIEBJbnB1dCgpIG9wZW5lZEZvbGRlckljb246IHN0cmluZyA9ICdmb2xkZXJfb3Blbic7XG4gICAgQElucHV0KCkgZmlsdGVySWNvbjogc3RyaW5nID0gJ2ZpbHRlcl9hbHQnO1xuICAgIEBJbnB1dCgpIGZvbGRlcnNDYXRlZ29yeU5hbWU6IHN0cmluZyA9ICd0b29sYmFyLm1lbnUuZm9sZGVycyc7XG4gICAgQElucHV0KCkgdmlld3NDYXRlZ29yeU5hbWU6IHN0cmluZyA9ICd0b29sYmFyLm1lbnUudmlld3MnO1xuXG4gICAgLyoqXG4gICAgICogTGlzdCBvZiBkaXNwbGF5ZWQgaXRlbXMgb24gdGhlIGxlZnQgc2lkZVxuICAgICAqICovXG4gICAgbGVmdEl0ZW1zOiBBcnJheTxOYXZpZ2F0aW9uSXRlbT5cblxuICAgIC8qKlxuICAgICAqIExpc3Qgb2YgZGlzcGxheWVkIGl0ZW1zIG9uIHRoZSByaWdodCBzaWRlXG4gICAgICogKi9cbiAgICByaWdodEl0ZW1zOiBBcnJheTxOYXZpZ2F0aW9uSXRlbT5cblxuICAgIC8qKlxuICAgICAqIExpc3Qgb2YgaGlkZGVuIGl0ZW1zXG4gICAgICogKi9cbiAgICBtb3JlSXRlbXM6IEFycmF5PE5hdmlnYXRpb25JdGVtPjtcblxuICAgIC8qKlxuICAgICAqIExpc3Qgb2YgY3VzdG9tIGl0ZW1zIGluIG1vcmUgbWVudVxuICAgICAqICovXG4gICAgaGlkZGVuQ3VzdG9tSXRlbXM6IEFycmF5PE5hdmlnYXRpb25JdGVtPjtcblxuICAgIGl0ZW1zT3JkZXI6IE1lbnVPcmRlcjtcblxuICAgIHByb3RlY3RlZCBfYnJlYWtwb2ludFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByb3RlY3RlZCBfY3VycmVudE5vZGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIC8qKlxuICAgICAqIEN1cnJlbnRseSBkaXNwbGF5IHVyaVxuICAgICAqIFNpYmxpbmdzIG9mIHRoZSBub2RlIGFyZSBvbiB0aGUgbGVmdCwgY2hpbGRyZW4gYXJlIG9uIHRoZSByaWdodFxuICAgICAqL1xuICAgIHByaXZhdGUgX2N1cnJlbnROb2RlOiBVcmlOb2RlUmVzb3VyY2U7XG5cbiAgICBsZWZ0TG9hZGluZyQ6IExvYWRpbmdFbWl0dGVyO1xuICAgIHJpZ2h0TG9hZGluZyQ6IExvYWRpbmdFbWl0dGVyO1xuICAgIG5vZGVMb2FkaW5nJDogTG9hZGluZ0VtaXR0ZXI7XG5cbiAgICBwcm90ZWN0ZWQgX2NvbmZpZ0xlZnRNZW51OiBDb25maWdEb3VibGVNZW51ID0ge1xuICAgICAgICBtb2RlOiAnc2lkZScsXG4gICAgICAgIG9wZW5lZDogdHJ1ZSxcbiAgICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcbiAgICAgICAgd2lkdGg6IExFRlRfRFJBV0VSX0RFRkFVTFRfV0lEVEgsXG4gICAgfTtcbiAgICBwcm90ZWN0ZWQgX2NvbmZpZ1JpZ2h0TWVudTogQ29uZmlnRG91YmxlTWVudSA9IHtcbiAgICAgICAgbW9kZTogJ3NpZGUnLFxuICAgICAgICBvcGVuZWQ6IHRydWUsXG4gICAgICAgIGRpc2FibGVDbG9zZTogZmFsc2UsXG4gICAgICAgIHdpZHRoOiBSSUdIVF9EUkFXRVJfREVGQVVMVF9XSURUSCxcbiAgICB9O1xuXG4gICAgcHJvdGVjdGVkIF9jaGlsZEN1c3RvbVZpZXdzOiB7IFt1cmk6IHN0cmluZ106IHsgW2tleTogc3RyaW5nXTogTmF2aWdhdGlvbkl0ZW0gfSB9O1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2JyZWFrcG9pbnQ6IEJyZWFrcG9pbnRPYnNlcnZlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9sYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF90cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3VzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9hY2Nlc3NTZXJ2aWNlOiBBY2Nlc3NTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2xvZzogTG9nZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9jb25maWc6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3VyaVNlcnZpY2U6IFVyaVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfY2FzZVJlc291cmNlU2VydmljZTogQ2FzZVJlc291cmNlU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9pbXBlcnNvbmF0aW9uVXNlclNlbGVjdDogSW1wZXJzb25hdGlvblVzZXJTZWxlY3RTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2ltcGVyc29uYXRpb246IEltcGVyc29uYXRpb25TZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2R5bmFtaWNSb3V0aW5nU2VydmljZTogRHluYW1pY05hdmlnYXRpb25Sb3V0ZVByb3ZpZGVyU2VydmljZSkge1xuICAgICAgICB0aGlzLmxlZnRJdGVtcyA9IG5ldyBBcnJheTxOYXZpZ2F0aW9uSXRlbT4oKTtcbiAgICAgICAgdGhpcy5yaWdodEl0ZW1zID0gbmV3IEFycmF5PE5hdmlnYXRpb25JdGVtPigpO1xuICAgICAgICB0aGlzLmxlZnRMb2FkaW5nJCA9IG5ldyBMb2FkaW5nRW1pdHRlcigpO1xuICAgICAgICB0aGlzLnJpZ2h0TG9hZGluZyQgPSBuZXcgTG9hZGluZ0VtaXR0ZXIoKTtcbiAgICAgICAgdGhpcy5ub2RlTG9hZGluZyQgPSBuZXcgTG9hZGluZ0VtaXR0ZXIoKTtcbiAgICAgICAgdGhpcy5pdGVtc09yZGVyID0gTWVudU9yZGVyLkFzY2VuZGluZztcbiAgICAgICAgdGhpcy5oaWRkZW5DdXN0b21JdGVtcyA9IFtdO1xuICAgICAgICB0aGlzLm1vcmVJdGVtcyA9IG5ldyBBcnJheTxOYXZpZ2F0aW9uSXRlbT4oKTtcbiAgICAgICAgdGhpcy5fY2hpbGRDdXN0b21WaWV3cyA9IHt9O1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9icmVha3BvaW50U3Vic2NyaXB0aW9uID0gdGhpcy5fYnJlYWtwb2ludC5vYnNlcnZlKFtCcmVha3BvaW50cy5IYW5kc2V0TGFuZHNjYXBlXSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9icmVha3BvaW50LmlzTWF0Y2hlZCgnKG1heC13aWR0aDogOTU5Ljk5cHgpJykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc29sdmVMYXlvdXQoZmFsc2UpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc29sdmVMYXlvdXQodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2N1cnJlbnROb2RlU3Vic2NyaXB0aW9uID0gdGhpcy5fdXJpU2VydmljZS5hY3RpdmVOb2RlJC5zdWJzY3JpYmUobm9kZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnROb2RlID0gbm9kZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgdmlld0NvbmZpZ3VyYXRpb25QYXRoID0gdGhpcy5fYWN0aXZhdGVkUm91dGUuc25hcHNob3QuZGF0YVtOQUVfUk9VVElOR19DT05GSUdVUkFUSU9OX1BBVEhdO1xuICAgICAgICBpZiAoISF2aWV3Q29uZmlndXJhdGlvblBhdGgpIHtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdDb25maWd1cmF0aW9uID0gdGhpcy5fY29uZmlnLmdldFZpZXdCeVBhdGgodmlld0NvbmZpZ3VyYXRpb25QYXRoKTtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHZpZXdDb25maWd1cmF0aW9uLmNoaWxkcmVuKS5mb3JFYWNoKChba2V5LCBjaGlsZFZpZXddKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlVXJpRm9yQ2hpbGRWaWV3cyh2aWV3Q29uZmlndXJhdGlvblBhdGggKyAnLycgKyBrZXksIGNoaWxkVmlldyk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlSGlkZGVuTWVudUl0ZW1Gcm9tQ2hpbGRWaWV3cyh2aWV3Q29uZmlndXJhdGlvblBhdGggKyAnLycgKyBrZXksIGNoaWxkVmlldyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBjdXJyZW50Tm9kZSgpOiBVcmlOb2RlUmVzb3VyY2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudE5vZGU7XG4gICAgfVxuXG4gICAgc2V0IGN1cnJlbnROb2RlKG5vZGU6IFVyaU5vZGVSZXNvdXJjZSkge1xuICAgICAgICBpZiAobm9kZSA9PT0gdGhpcy5fY3VycmVudE5vZGUgfHwgdGhpcy5sZWZ0TG9hZGluZyQuaXNBY3RpdmUgfHwgdGhpcy5yaWdodExvYWRpbmckLmlzQWN0aXZlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY3VycmVudE5vZGUgPSBub2RlO1xuICAgICAgICBpZiAoIW5vZGUpIHJldHVybjtcbiAgICAgICAgaWYgKG5vZGUucGFyZW50SWQgJiYgIW5vZGUucGFyZW50KSB7XG4gICAgICAgICAgICBpZiAobm9kZS5wYXJlbnRJZCA9PT0gdGhpcy5fdXJpU2VydmljZS5yb290LmlkKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5wYXJlbnQgPSB0aGlzLl91cmlTZXJ2aWNlLnJvb3Q7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubm9kZUxvYWRpbmckLm9uKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fdXJpU2VydmljZS5nZXROb2RlQnlQYXRoKHRoaXMuX3VyaVNlcnZpY2UucmVzb2x2ZVBhcmVudFBhdGgobm9kZSkpLnN1YnNjcmliZShuID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5wYXJlbnQgPSAhbiA/IHRoaXMuX3VyaVNlcnZpY2Uucm9vdCA6IG47XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZUxvYWRpbmckLm9mZigpO1xuICAgICAgICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlTG9hZGluZyQub2ZmKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXNvbHZlTWVudUl0ZW1zKG5vZGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzb2x2ZU1lbnVJdGVtcyhub2RlOiBVcmlOb2RlUmVzb3VyY2UpIHtcbiAgICAgICAgaWYgKHRoaXMuX3VyaVNlcnZpY2UuaXNSb290KG5vZGUpKSB7XG4gICAgICAgICAgICB0aGlzLmxlZnRJdGVtcyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5sb2FkUmlnaHRTaWRlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMubGVmdEl0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLnJlc291cmNlPy5pbW1lZGlhdGVEYXRhLmZpbmQoZiA9PiBmLnN0cmluZ0lkID09PSBHcm91cE5hdmlnYXRpb25Db25zdGFudHMuSVRFTV9GSUVMRF9JRF9OT0RFX1BBVEgpPy52YWx1ZSA9PT0gbm9kZS51cmlQYXRoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZExlZnRTaWRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmxvYWRSaWdodFNpZGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9icmVha3BvaW50U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9jdXJyZW50Tm9kZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5sZWZ0TG9hZGluZyQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5yaWdodExvYWRpbmckLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMubm9kZUxvYWRpbmckLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgZ2V0IGNvbmZpZ0xlZnRNZW51KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnTGVmdE1lbnU7XG4gICAgfVxuXG4gICAgZ2V0IGNvbmZpZ1JpZ2h0TWVudSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZ1JpZ2h0TWVudTtcbiAgICB9XG5cbiAgICB0b2dnbGVNZW51KCkge1xuICAgICAgICB0aGlzLnRvZ2dsZVJpZ2h0TWVudSgpO1xuICAgICAgICBpZiAodGhpcy5hbGxDbG9zYWJsZSkge1xuICAgICAgICAgICAgdGhpcy50b2dnbGVMZWZ0TWVudSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9nZ2xlTGVmdE1lbnUoKSB7XG4gICAgICAgIHRoaXMuX2NvbmZpZ0xlZnRNZW51Lm9wZW5lZCA9ICF0aGlzLl9jb25maWdMZWZ0TWVudS5vcGVuZWQ7XG4gICAgfVxuXG4gICAgdG9nZ2xlUmlnaHRNZW51KCkge1xuICAgICAgICB0aGlzLl9jb25maWdSaWdodE1lbnUub3BlbmVkID0gIXRoaXMuX2NvbmZpZ1JpZ2h0TWVudS5vcGVuZWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlc29sdmVMYXlvdXQoaXNMYXJnZVNjcmVlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb25maWdMZWZ0TWVudSA9IGlzTGFyZ2VTY3JlZW4gPyB7XG4gICAgICAgICAgICBtb2RlOiAnc2lkZScsXG4gICAgICAgICAgICBvcGVuZWQ6IHRydWUsXG4gICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICAgICAgICB3aWR0aDogdGhpcy5fY29uZmlnTGVmdE1lbnUud2lkdGgsXG4gICAgICAgIH0gOiB7XG4gICAgICAgICAgICBtb2RlOiAnb3ZlcicsXG4gICAgICAgICAgICBvcGVuZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLl9jb25maWdMZWZ0TWVudS53aWR0aCxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fY29uZmlnUmlnaHRNZW51ID0gaXNMYXJnZVNjcmVlbiA/IHtcbiAgICAgICAgICAgIG1vZGU6ICdzaWRlJyxcbiAgICAgICAgICAgIG9wZW5lZDogdHJ1ZSxcbiAgICAgICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLl9jb25maWdSaWdodE1lbnUud2lkdGgsXG4gICAgICAgIH0gOiB7XG4gICAgICAgICAgICBtb2RlOiAnb3ZlcicsXG4gICAgICAgICAgICBvcGVuZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLl9jb25maWdSaWdodE1lbnUud2lkdGgsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZ2V0TGFuZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhbmd1YWdlU2VydmljZS5nZXRMYW5ndWFnZSgpO1xuICAgIH1cblxuICAgIGxvZ291dCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdXNlclNlcnZpY2UubG9nb3V0KCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5kZWJ1ZygnVXNlciBpcyBsb2dnZWQgb3V0Jyk7XG4gICAgICAgICAgICBpZiAodGhpcy5fY29uZmlnLmdldCgpLnNlcnZpY2VzICYmIHRoaXMuX2NvbmZpZy5nZXQoKS5zZXJ2aWNlcy5hdXRoICYmIHRoaXMuX2NvbmZpZy5nZXQoKS5zZXJ2aWNlcy5hdXRoLmxvZ291dFJlZGlyZWN0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVkaXJlY3RQYXRoID0gdGhpcy5fY29uZmlnLmdldCgpLnNlcnZpY2VzLmF1dGgubG9nb3V0UmVkaXJlY3Q7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmluZm8oJ1JlZGlyZWN0aW5nIHRvICcgKyByZWRpcmVjdFBhdGgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbcmVkaXJlY3RQYXRoXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGltcGVyc29uYXRlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbXBlcnNvbmF0aW9uVXNlclNlbGVjdC5zZWxlY3RJbXBlcnNvbmF0ZSgpO1xuICAgIH1cblxuICAgIHN0b3BJbXBlcnNvbmF0aW5nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbXBlcnNvbmF0aW9uLmNlYXNlKCk7XG4gICAgfVxuXG4gICAgZ2V0IHVzZXIoKTogVXNlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyU2VydmljZS51c2VyO1xuICAgIH1cblxuICAgIGdldCBjYW5Hb0JhY2tMb2FkaW5nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubm9kZUxvYWRpbmckO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9uIGhvbWUgY2xpY2ssIHRoZSBjdXJyZW50IGxldmVsIGlzIHNldCB0byAwLCBhbmQgY3VycmVudCBwYXJlbnQgaXNcbiAgICAgKiBzZXQgdG8gcm9vdCBub2RlLlxuICAgICAqICovXG4gICAgb25Ib21lQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmxlZnRMb2FkaW5nJC5pc0FjdGl2ZSB8fCB0aGlzLnJpZ2h0TG9hZGluZyQuaXNBY3RpdmUpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3VyaVNlcnZpY2UuYWN0aXZlTm9kZSA9IHRoaXMuX3VyaVNlcnZpY2Uucm9vdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPbiBiYWNrIGNsaWNrLCB0aGUgcGFyZW50IGlzIHNldCB0byBwYXJlbnQgb2YgbGVmdCBub2RlcywgdGhhdCB3aWxsIHNvbHZlXG4gICAgICogdGhlIHJpZ2h0IHNpZGUgbWVudSAoZWxlbWVudHMgdGhhdCB3ZXJlIGluIGxlZnQgc2lkZSwgYWZ0ZXIgYmFja3dhcmRcbiAgICAgKiBuYXZpZ2F0aW9uIHdpbGwgYmUgb24gdGhlIHJpZ2h0IHNpZGUpLlxuICAgICAqIEN1cnJlbnQgbGV2ZWwgaXMgc2V0IHRvIGEgbG93ZXIgbnVtYmVyIGluIG9yZGVyIHRvIHNldCB0aGUgbGVmdCBzaWRlIG1lbnUuXG4gICAgICogKi9cbiAgICBvbkJhY2tDbGljaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubGVmdExvYWRpbmckLmlzQWN0aXZlIHx8IHRoaXMucmlnaHRMb2FkaW5nJC5pc0FjdGl2ZSB8fCB0aGlzLl91cmlTZXJ2aWNlLmlzUm9vdCh0aGlzLl9jdXJyZW50Tm9kZSkpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3VyaVNlcnZpY2UuYWN0aXZlTm9kZSA9IHRoaXMuX2N1cnJlbnROb2RlLnBhcmVudDtcbiAgICB9XG5cbiAgICBvbkl0ZW1DbGljayhpdGVtOiBOYXZpZ2F0aW9uSXRlbSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5oYXNJdGVtQ2hpbGRyZW4oaXRlbSkgJiYgIXRoaXMubGVmdExvYWRpbmckLmlzQWN0aXZlICYmICF0aGlzLnJpZ2h0TG9hZGluZyQuaXNBY3RpdmUpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhdGggPSBpdGVtLnJlc291cmNlLmltbWVkaWF0ZURhdGEuZmluZChmID0+IGYuc3RyaW5nSWQgPT09IEdyb3VwTmF2aWdhdGlvbkNvbnN0YW50cy5JVEVNX0ZJRUxEX0lEX05PREVfUEFUSCk/LnZhbHVlXG4gICAgICAgICAgICB0aGlzLl91cmlTZXJ2aWNlLmdldE5vZGVCeVBhdGgocGF0aCkuc3Vic2NyaWJlKG5vZGUgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VyaVNlcnZpY2UuYWN0aXZlTm9kZSA9IG5vZGVcbiAgICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl91cmlTZXJ2aWNlLmFjdGl2ZU5vZGUgPSB0aGlzLl9jdXJyZW50Tm9kZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhc0l0ZW1DaGlsZHJlbihpdGVtOiBOYXZpZ2F0aW9uSXRlbSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaXRlbS5yZXNvdXJjZT8uaW1tZWRpYXRlRGF0YS5maW5kKGYgPT4gZi5zdHJpbmdJZCA9PT0gR3JvdXBOYXZpZ2F0aW9uQ29uc3RhbnRzLklURU1fRklFTERfSURfSEFTX0NISUxEUkVOKT8udmFsdWVcbiAgICB9XG5cbiAgICBpc0l0ZW1BbmROb2RlRXF1YWwoaXRlbTogTmF2aWdhdGlvbkl0ZW0sIG5vZGU6IFVyaU5vZGVSZXNvdXJjZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaXRlbS5yZXNvdXJjZT8uaW1tZWRpYXRlRGF0YS5maW5kKGYgPT4gZi5zdHJpbmdJZCA9PT0gR3JvdXBOYXZpZ2F0aW9uQ29uc3RhbnRzLklURU1fRklFTERfSURfTk9ERV9QQVRIKT8udmFsdWUgPT09IG5vZGUudXJpUGF0aFxuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkTGVmdFNpZGUoKSB7XG4gICAgICAgIGlmICh0aGlzLl91cmlTZXJ2aWNlLmlzUm9vdCh0aGlzLl9jdXJyZW50Tm9kZSkpIHtcbiAgICAgICAgICAgIHRoaXMubGVmdEl0ZW1zID0gW107XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sZWZ0TG9hZGluZyQub24oKTtcbiAgICAgICAgdGhpcy5fdXJpU2VydmljZS5nZXRJdGVtQ2FzZUJ5Tm9kZVBhdGgodGhpcy5jdXJyZW50Tm9kZS5wYXJlbnQpLnN1YnNjcmliZShwYWdlID0+IHtcbiAgICAgICAgICAgIGxldCBjaGlsZENhc2VzJDtcbiAgICAgICAgICAgIGxldCB0YXJnZXRJdGVtO1xuICAgICAgICAgICAgbGV0IG9yZGVyZWRDaGlsZENhc2VJZHM7XG5cbiAgICAgICAgICAgIGlmIChwYWdlPy5wYWdpbmF0aW9uPy50b3RhbEVsZW1lbnRzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgY2hpbGRDYXNlcyQgPSBvZihbXSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0SXRlbSA9IHBhZ2UuY29udGVudFswXVxuICAgICAgICAgICAgICAgIG9yZGVyZWRDaGlsZENhc2VJZHMgPSB0aGlzLmV4dHJhY3RDaGlsZENhc2VJZHModGFyZ2V0SXRlbSlcbiAgICAgICAgICAgICAgICBjaGlsZENhc2VzJCA9IHRoaXMuZ2V0SXRlbUNhc2VzQnlJZHNJbk9uZVBhZ2Uob3JkZXJlZENoaWxkQ2FzZUlkcykucGlwZShcbiAgICAgICAgICAgICAgICAgICAgbWFwKHAgPT4gcC5jb250ZW50KSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNoaWxkQ2FzZXMkLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5tYXAoZm9sZGVyID0+IHRoaXMucmVzb2x2ZUl0ZW1DYXNlVG9OYXZpZ2F0aW9uSXRlbShmb2xkZXIpKS5maWx0ZXIoaSA9PiAhIWkpO1xuICAgICAgICAgICAgICAgIHRoaXMubGVmdEl0ZW1zID0gcmVzdWx0LnNvcnQoKGEsIGIpID0+IG9yZGVyZWRDaGlsZENhc2VJZHMuaW5kZXhPZihhLnJlc291cmNlLnN0cmluZ0lkKSAtIG9yZGVyZWRDaGlsZENhc2VJZHMuaW5kZXhPZihiLnJlc291cmNlLnN0cmluZ0lkKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlQ3VzdG9tVmlld3NJbkxlZnRTaWRlKClcbiAgICAgICAgICAgICAgICB0aGlzLmxlZnRMb2FkaW5nJC5vZmYoKTtcbiAgICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgIHRoaXMubGVmdEl0ZW1zID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlQ3VzdG9tVmlld3NJbkxlZnRTaWRlKClcbiAgICAgICAgICAgICAgICB0aGlzLmxlZnRMb2FkaW5nJC5vZmYoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgdGhpcy5sZWZ0SXRlbXMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMucmVzb2x2ZUN1c3RvbVZpZXdzSW5MZWZ0U2lkZSgpXG4gICAgICAgICAgICB0aGlzLmxlZnRMb2FkaW5nJC5vZmYoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGxvYWRSaWdodFNpZGUoKSB7XG4gICAgICAgIHRoaXMucmlnaHRMb2FkaW5nJC5vbigpO1xuICAgICAgICB0aGlzLm1vcmVJdGVtcyA9IFtdO1xuICAgICAgICB0aGlzLl91cmlTZXJ2aWNlLmdldEl0ZW1DYXNlQnlOb2RlUGF0aCh0aGlzLmN1cnJlbnROb2RlKS5zdWJzY3JpYmUocGFnZSA9PiB7XG4gICAgICAgICAgICBsZXQgY2hpbGRDYXNlcyQ7XG4gICAgICAgICAgICBsZXQgdGFyZ2V0SXRlbTtcbiAgICAgICAgICAgIGxldCBvcmRlcmVkQ2hpbGRDYXNlSWRzO1xuXG4gICAgICAgICAgICBpZiAocGFnZT8ucGFnaW5hdGlvbj8udG90YWxFbGVtZW50cyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGNoaWxkQ2FzZXMkID0gb2YoW10pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRhcmdldEl0ZW0gPSBwYWdlLmNvbnRlbnRbMF1cbiAgICAgICAgICAgICAgICBvcmRlcmVkQ2hpbGRDYXNlSWRzID0gdGhpcy5leHRyYWN0Q2hpbGRDYXNlSWRzKHRhcmdldEl0ZW0pXG4gICAgICAgICAgICAgICAgY2hpbGRDYXNlcyQgPSB0aGlzLmdldEl0ZW1DYXNlc0J5SWRzSW5PbmVQYWdlKG9yZGVyZWRDaGlsZENhc2VJZHMpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIG1hcChwID0+IHAuY29udGVudCksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjaGlsZENhc2VzJC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0IGFzIENhc2VbXSkuc29ydCgoYSwgYikgPT4gb3JkZXJlZENoaWxkQ2FzZUlkcy5pbmRleE9mKGEuc3RyaW5nSWQpIC0gb3JkZXJlZENoaWxkQ2FzZUlkcy5pbmRleE9mKGIuc3RyaW5nSWQpKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA+IFJJR0hUX1NJREVfSU5JVF9QQUdFX1NJWkUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3UmlnaHRJdGVtczogQ2FzZVtdID0gcmVzdWx0LnNwbGljZSgwLCBSSUdIVF9TSURFX0lOSVRfUEFHRV9TSVpFKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yaWdodEl0ZW1zID0gcmF3UmlnaHRJdGVtcy5tYXAoZm9sZGVyID0+IHRoaXMucmVzb2x2ZUl0ZW1DYXNlVG9OYXZpZ2F0aW9uSXRlbShmb2xkZXIpKS5maWx0ZXIoaSA9PiAhIWkpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vcmVJdGVtcyA9IHJlc3VsdC5tYXAoZm9sZGVyID0+IHRoaXMucmVzb2x2ZUl0ZW1DYXNlVG9OYXZpZ2F0aW9uSXRlbShmb2xkZXIpKS5maWx0ZXIoaSA9PiAhIWkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmlnaHRJdGVtcyA9IHJlc3VsdC5tYXAoZm9sZGVyID0+IHRoaXMucmVzb2x2ZUl0ZW1DYXNlVG9OYXZpZ2F0aW9uSXRlbShmb2xkZXIpKS5maWx0ZXIoaSA9PiAhIWkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnJlc29sdmVDdXN0b21WaWV3c0luUmlnaHRTaWRlKClcbiAgICAgICAgICAgICAgICB0aGlzLnJpZ2h0TG9hZGluZyQub2ZmKCk7XG4gICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJpZ2h0SXRlbXMgPSBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLm1vcmVJdGVtcyA9IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZUN1c3RvbVZpZXdzSW5SaWdodFNpZGUoKVxuICAgICAgICAgICAgICAgIHRoaXMucmlnaHRMb2FkaW5nJC5vZmYoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgdGhpcy5yaWdodEl0ZW1zID0gW107XG4gICAgICAgICAgICB0aGlzLm1vcmVJdGVtcyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5yZXNvbHZlQ3VzdG9tVmlld3NJblJpZ2h0U2lkZSgpXG4gICAgICAgICAgICB0aGlzLnJpZ2h0TG9hZGluZyQub2ZmKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXh0cmFjdENoaWxkQ2FzZUlkcyhpdGVtOiBDYXNlKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gaXRlbS5pbW1lZGlhdGVEYXRhLmZpbmQoZiA9PiBmLnN0cmluZ0lkID09PSBHcm91cE5hdmlnYXRpb25Db25zdGFudHMuSVRFTV9GSUVMRF9JRF9DSElMRF9JVEVNX0lEUyk/LnZhbHVlXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRJdGVtQ2FzZXNCeUlkc0luT25lUGFnZShjYXNlSWRzOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8UGFnZTxDYXNlPj4gIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SXRlbUNhc2VzQnlJZHMoY2FzZUlkcywgMCwgY2FzZUlkcy5sZW5ndGgpXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRJdGVtQ2FzZXNCeUlkcyhjYXNlSWRzOiBzdHJpbmdbXSwgcGFnZU51bWJlcjogbnVtYmVyLCBwYWdlU2l6ZTogc3RyaW5nIHwgbnVtYmVyKTogT2JzZXJ2YWJsZTxQYWdlPENhc2U+PiB7XG4gICAgICAgIGNvbnN0IHNlYXJjaEJvZHk6IENhc2VTZWFyY2hSZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgICAgIHN0cmluZ0lkOiBjYXNlSWRzLFxuICAgICAgICAgICAgcHJvY2VzczogTUVOVV9JREVOVElGSUVSUy5tYXAoaWQgPT4gKHtpZGVudGlmaWVyOiBpZH0gYXMgUGV0cmlOZXRTZWFyY2hSZXF1ZXN0KSlcbiAgICAgICAgfTtcblxuICAgICAgICBsZXQgaHR0cFBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKClcbiAgICAgICAgICAgIC5zZXQoUGFnaW5hdGlvblBhcmFtcy5QQUdFX1NJWkUsIHBhZ2VTaXplKVxuICAgICAgICAgICAgLnNldChQYWdpbmF0aW9uUGFyYW1zLlBBR0VfTlVNQkVSLCBwYWdlTnVtYmVyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Nhc2VSZXNvdXJjZVNlcnZpY2Uuc2VhcmNoQ2FzZXMoU2ltcGxlRmlsdGVyLmZyb21DYXNlUXVlcnkoc2VhcmNoQm9keSksIGh0dHBQYXJhbXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2FkTW9yZUl0ZW1zKCkge1xuICAgICAgICBpZiAodGhpcy5tb3JlSXRlbXMubGVuZ3RoID4gUklHSFRfU0lERV9ORVdfUEFHRV9TSVpFKSB7XG4gICAgICAgICAgICB0aGlzLnJpZ2h0SXRlbXMucHVzaCguLi50aGlzLm1vcmVJdGVtcy5zcGxpY2UoMCwgUklHSFRfU0lERV9ORVdfUEFHRV9TSVpFKSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmlnaHRJdGVtcy5wdXNoKC4uLnRoaXMubW9yZUl0ZW1zKVxuICAgICAgICAgICAgdGhpcy5tb3JlSXRlbXMgPSBbXVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGlzQXNjZW5kaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtc09yZGVyID09PSBNZW51T3JkZXIuQXNjZW5kaW5nO1xuICAgIH1cblxuICAgIHB1YmxpYyBzd2l0Y2hPcmRlcigpIHtcbiAgICAgICAgdGhpcy5pdGVtc09yZGVyID0gKHRoaXMuaXRlbXNPcmRlciArIDEpICUgMjtcbiAgICAgICAgbGV0IG11bHRpcGxpZXIgPSAxXG4gICAgICAgIGlmICh0aGlzLml0ZW1zT3JkZXIgPT09IE1lbnVPcmRlci5EZXNjZW5kaW5nKSB7XG4gICAgICAgICAgICBtdWx0aXBsaWVyID0gLTFcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJpZ2h0SXRlbXMgPSB0aGlzLnJpZ2h0SXRlbXMuc29ydCgoYSwgYikgPT4gbXVsdGlwbGllciAqIChhPy5uYXZpZ2F0aW9uIGFzIE5hdmlnYXRpb25JdGVtKT8udGl0bGUubG9jYWxlQ29tcGFyZSgoYj8ubmF2aWdhdGlvbiBhcyBOYXZpZ2F0aW9uSXRlbSk/LnRpdGxlKSk7XG4gICAgICAgIHRoaXMubGVmdEl0ZW1zID0gdGhpcy5sZWZ0SXRlbXMuc29ydCgoYSwgYikgPT4gbXVsdGlwbGllciAqIChhPy5uYXZpZ2F0aW9uIGFzIE5hdmlnYXRpb25JdGVtKT8udGl0bGUubG9jYWxlQ29tcGFyZSgoYj8ubmF2aWdhdGlvbiBhcyBOYXZpZ2F0aW9uSXRlbSk/LnRpdGxlKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlc29sdmVDdXN0b21WaWV3c0luUmlnaHRTaWRlKCkge1xuICAgICAgICBpZiAoISF0aGlzLl9jaGlsZEN1c3RvbVZpZXdzW3RoaXMuX2N1cnJlbnROb2RlLnVyaVBhdGhdKSB7XG4gICAgICAgICAgICB0aGlzLnJpZ2h0SXRlbXMucHVzaCguLi5PYmplY3QudmFsdWVzKHRoaXMuX2NoaWxkQ3VzdG9tVmlld3NbdGhpcy5fY3VycmVudE5vZGUudXJpUGF0aF0pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCByZXNvbHZlQ3VzdG9tVmlld3NJbkxlZnRTaWRlKCkge1xuICAgICAgICBpZiAoISF0aGlzLl9jaGlsZEN1c3RvbVZpZXdzW3RoaXMuX2N1cnJlbnROb2RlLnBhcmVudC51cmlQYXRoXSkge1xuICAgICAgICAgICAgdGhpcy5sZWZ0SXRlbXMucHVzaCguLi5PYmplY3QudmFsdWVzKHRoaXMuX2NoaWxkQ3VzdG9tVmlld3NbdGhpcy5fY3VycmVudE5vZGUucGFyZW50LnVyaVBhdGhdKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZUl0ZW1DYXNlVG9OYXZpZ2F0aW9uSXRlbShpdGVtQ2FzZTogQ2FzZSk6IE5hdmlnYXRpb25JdGVtIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50c1Jvb3ROb2RlKGl0ZW1DYXNlKSkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXRlbTogTmF2aWdhdGlvbkl0ZW0gPSB7XG4gICAgICAgICAgICBhY2Nlc3M6IHt9LFxuICAgICAgICAgICAgbmF2aWdhdGlvbjoge1xuICAgICAgICAgICAgICAgIGljb246IGl0ZW1DYXNlLmltbWVkaWF0ZURhdGEuZmluZChmID0+IGYuc3RyaW5nSWQgPT09IEdyb3VwTmF2aWdhdGlvbkNvbnN0YW50cy5JVEVNX0ZJRUxEX0lEX01FTlVfSUNPTik/LnZhbHVlIHx8IHRoaXMuZmlsdGVySWNvbixcbiAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5nZXRUcmFuc2xhdGlvbihpdGVtQ2FzZS5pbW1lZGlhdGVEYXRhLmZpbmQoZiA9PiBmLnN0cmluZ0lkID09PSBHcm91cE5hdmlnYXRpb25Db25zdGFudHMuSVRFTV9GSUVMRF9JRF9NRU5VX05BTUUpPy52YWx1ZSkgfHwgaXRlbUNhc2UudGl0bGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcm91dGluZzoge1xuICAgICAgICAgICAgICAgIHBhdGg6IHRoaXMuZ2V0SXRlbVJvdXRpbmdQYXRoKGl0ZW1DYXNlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpZDogaXRlbUNhc2Uuc3RyaW5nSWQsXG4gICAgICAgICAgICByZXNvdXJjZTogaXRlbUNhc2UsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHJlc29sdmVkUm9sZXMgPSB0aGlzLnJlc29sdmVBY2Nlc3NSb2xlcyhpdGVtQ2FzZSwgR3JvdXBOYXZpZ2F0aW9uQ29uc3RhbnRzLklURU1fRklFTERfSURfQUxMT1dFRF9ST0xFUyk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkQmFubmVkUm9sZXMgPSB0aGlzLnJlc29sdmVBY2Nlc3NSb2xlcyhpdGVtQ2FzZSwgR3JvdXBOYXZpZ2F0aW9uQ29uc3RhbnRzLklURU1fRklFTERfSURfQkFOTkVEX1JPTEVTKTtcbiAgICAgICAgaWYgKCEhcmVzb2x2ZWRSb2xlcykgaXRlbS5hY2Nlc3NbJ3JvbGUnXSA9IHJlc29sdmVkUm9sZXM7XG4gICAgICAgIGlmICghIXJlc29sdmVkQmFubmVkUm9sZXMpIGl0ZW0uYWNjZXNzWydiYW5uZWRSb2xlJ10gPSByZXNvbHZlZEJhbm5lZFJvbGVzO1xuICAgICAgICBpZiAoIXRoaXMuX2FjY2Vzc1NlcnZpY2UuY2FuQWNjZXNzVmlldyhpdGVtLCBpdGVtLnJvdXRpbmdQYXRoKSkgcmV0dXJuO1xuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlcHJlc2VudHNSb290Tm9kZShpdGVtOiBDYXNlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpdGVtLmltbWVkaWF0ZURhdGEuZmluZChmID0+IGYuc3RyaW5nSWQgPT09IEdyb3VwTmF2aWdhdGlvbkNvbnN0YW50cy5JVEVNX0ZJRUxEX0lEX05PREVfUEFUSCkudmFsdWUgPT09IFwiL1wiXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUcmFuc2xhdGlvbih2YWx1ZTogSTE4bkZpZWxkVmFsdWUpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBsb2NhbGUgPSB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nLnNwbGl0KCctJylbMF07XG4gICAgICAgIHJldHVybiBsb2NhbGUgaW4gdmFsdWUudHJhbnNsYXRpb25zID8gdmFsdWUudHJhbnNsYXRpb25zW2xvY2FsZV0gOiB2YWx1ZS5kZWZhdWx0VmFsdWU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlc29sdmVBY2Nlc3NSb2xlcyhmaWx0ZXI6IENhc2UsIHJvbGVUeXBlOiBzdHJpbmcpOiBBcnJheTxSb2xlQWNjZXNzPiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGFsbG93ZWRSb2xlcyA9IGZpbHRlci5pbW1lZGlhdGVEYXRhLmZpbmQoZiA9PiBmLnN0cmluZ0lkID09PSByb2xlVHlwZSk/Lm9wdGlvbnM7XG4gICAgICAgIGlmICghYWxsb3dlZFJvbGVzIHx8IE9iamVjdC5rZXlzKGFsbG93ZWRSb2xlcykubGVuZ3RoID09PSAwKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCByb2xlcyA9IFtdO1xuICAgICAgICBPYmplY3Qua2V5cyhhbGxvd2VkUm9sZXMpLmZvckVhY2goY29tYmluZWQgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFydHMgPSBjb21iaW5lZC5zcGxpdCgnOicpO1xuICAgICAgICAgICAgcm9sZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc0lkOiBwYXJ0c1sxXSxcbiAgICAgICAgICAgICAgICByb2xlSWQ6IHBhcnRzWzBdLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcm9sZXM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEl0ZW1Sb3V0aW5nUGF0aChpdGVtQ2FzZTogQ2FzZSkge1xuICAgICAgICBjb25zdCB0cmFuc0lkID0gU0VUVElOR1NfVFJBTlNJVElPTl9JRDtcbiAgICAgICAgY29uc3QgdGFza0lkID0gaXRlbUNhc2UudGFza3MuZmluZCh0YXNrUGFpciA9PiB0YXNrUGFpci50cmFuc2l0aW9uID09PSB0cmFuc0lkKS50YXNrO1xuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLl9keW5hbWljUm91dGluZ1NlcnZpY2Uucm91dGU7XG4gICAgICAgIHJldHVybiBgLyR7dXJsfS8ke3Rhc2tJZH1gO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGJhY2sgYnV0dG9uIHNob3VsZCBiZSBkaXNwbGF5ZWRcbiAgICAgKiBAcmV0dXJucyBib29sZWFuIGlmIHRoZSBiYWNrIGJ1dHRvbiBzaG91bGQgYmUgZGlzcGxheWVkXG4gICAgICogKi9cbiAgICBpc09uWmVyb0xldmVsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLl9jdXJyZW50Tm9kZT8ubGV2ZWwgPyB0aGlzLl9jdXJyZW50Tm9kZS5sZXZlbCA9PSAwIDogdHJ1ZTtcbiAgICB9XG5cbiAgICBpc0xlZnRJdGVtc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sZWZ0SXRlbXMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmxlZnRJdGVtcy5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgaXNSaWdodEl0ZW1zRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJpZ2h0SXRlbXMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLnJpZ2h0SXRlbXMubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIHVyaU5vZGVUcmFja0J5KGluZGV4OiBudW1iZXIsIG5vZGU6IFVyaU5vZGVSZXNvdXJjZSkge1xuICAgICAgICByZXR1cm4gbm9kZS5pZDtcbiAgICB9XG5cbiAgICBpdGVtc1RyYWNrQnkoaW5kZXg6IG51bWJlciwgaXRlbTogTmF2aWdhdGlvbkl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaWQ7XG4gICAgfVxuXG4gICAgb25SZXNpemVFdmVudChldmVudDogUmVzaXplRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LnJlY3RhbmdsZS53aWR0aCA+IFJJR0hUX0RSQVdFUl9NQVhfV0lEVEgpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbmZpZ1JpZ2h0TWVudS53aWR0aCA9IFJJR0hUX0RSQVdFUl9NQVhfV0lEVEg7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQucmVjdGFuZ2xlLndpZHRoIDwgUklHSFRfRFJBV0VSX0RFRkFVTFRfTUlOX1dJRFRIKSB7XG4gICAgICAgICAgICB0aGlzLl9jb25maWdSaWdodE1lbnUud2lkdGggPSBSSUdIVF9EUkFXRVJfREVGQVVMVF9NSU5fV0lEVEg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9jb25maWdSaWdodE1lbnUud2lkdGggPSBldmVudC5yZWN0YW5nbGUud2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVE9ETyBpbXBsZW1lbnQgc2F2aW5nIGRyYXdlciB3aWR0aCB0byB1c2VyIHByZWZlcmVuY2VzXG4gICAgICAgIC8vIHRoaXMudXNlclByZWZlcmVuY2VTZXJ2aWNlLl9kcmF3ZXJXaWR0aENoYW5nZWQkLm5leHQodGhpcy53aWR0aCk7XG4gICAgICAgIC8vIHRoaXMuY29udGVudFdpZHRoLm5leHQodGhpcy53aWR0aCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlc29sdmVVcmlGb3JDaGlsZFZpZXdzKGNvbmZpZ1BhdGg6IHN0cmluZywgY2hpbGRWaWV3OiBWaWV3KTogdm9pZCB7XG4gICAgICAgIGlmICghY2hpbGRWaWV3LnByb2Nlc3NVcmkpIHJldHVybjtcbiAgICAgICAgaWYgKCF0aGlzLl9hY2Nlc3NTZXJ2aWNlLmNhbkFjY2Vzc1ZpZXcoY2hpbGRWaWV3LCBjb25maWdQYXRoKSkgcmV0dXJuO1xuICAgICAgICBpZiAoIXRoaXMuX2NoaWxkQ3VzdG9tVmlld3NbY2hpbGRWaWV3LnByb2Nlc3NVcmldKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGlsZEN1c3RvbVZpZXdzW2NoaWxkVmlldy5wcm9jZXNzVXJpXSA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2NoaWxkQ3VzdG9tVmlld3NbY2hpbGRWaWV3LnByb2Nlc3NVcmldW2NvbmZpZ1BhdGhdID0ge1xuICAgICAgICAgICAgaWQ6IGNvbmZpZ1BhdGgsXG4gICAgICAgICAgICAuLi5jaGlsZFZpZXcsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlc29sdmVIaWRkZW5NZW51SXRlbUZyb21DaGlsZFZpZXdzKGNvbmZpZ1BhdGg6IHN0cmluZywgY2hpbGRWaWV3OiBWaWV3KTogdm9pZCB7XG4gICAgICAgIGlmICghY2hpbGRWaWV3Lm5hdmlnYXRpb24pIHJldHVybjtcbiAgICAgICAgaWYgKCF0aGlzLl9hY2Nlc3NTZXJ2aWNlLmNhbkFjY2Vzc1ZpZXcoY2hpbGRWaWV3LCBjb25maWdQYXRoKSkgcmV0dXJuO1xuICAgICAgICBpZiAoISEoKGNoaWxkVmlldz8ubmF2aWdhdGlvbiBhcyBhbnkpPy5oaWRkZW4pKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGRlbkN1c3RvbUl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgIGlkOiBjb25maWdQYXRoLFxuICAgICAgICAgICAgICAgIC4uLmNoaWxkVmlldyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iXX0=
|
|
566
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbmF2aWdhdGlvbi1kb3VibGUtZHJhd2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9uYXZpZ2F0aW9uL25hdmlnYXRpb24tZG91YmxlLWRyYXdlci9hYnN0cmFjdC1uYXZpZ2F0aW9uLWRvdWJsZS1kcmF3ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixXQUFXLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBaUMsTUFBTSxlQUFlLENBQUM7QUFJL0UsT0FBTyxFQUFhLEVBQUUsRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFXbkMsT0FBTyxFQUFDLDhCQUE4QixFQUFDLE1BQU0sdURBQXVELENBQUM7QUFJckcsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBSzdELE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBSTdFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQWMvRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM1QixpQkFBaUI7Q0FDcEIsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLGVBQWUsQ0FBQztBQUV0RCxNQUFNLHlCQUF5QixHQUFHLEVBQUUsQ0FBQztBQUNyQyxNQUFNLDBCQUEwQixHQUFHLEdBQUcsQ0FBQztBQUN2QyxNQUFNLDhCQUE4QixHQUFHLEdBQUcsQ0FBQztB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QkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QnJlYWtwb2ludE9ic2VydmVyLCBCcmVha3BvaW50c30gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hdERyYXdlck1vZGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtSZXNpemVFdmVudH0gZnJvbSAnYW5ndWxhci1yZXNpemFibGUtZWxlbWVudCc7XG5pbXBvcnQge09ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7Um9sZUFjY2VzcywgVmlld30gZnJvbSAnLi4vLi4vLi4vY29tbW9ucy9zY2hlbWEnO1xuaW1wb3J0IHtBY2Nlc3NTZXJ2aWNlfSBmcm9tICcuLi8uLi9hdXRob3JpemF0aW9uL3Blcm1pc3Npb24vYWNjZXNzLnNlcnZpY2UnO1xuaW1wb3J0IHtDb25maWd1cmF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtJbXBlcnNvbmF0aW9uVXNlclNlbGVjdFNlcnZpY2V9IGZyb20gJy4uLy4uL2ltcGVyc29uYXRpb24vc2VydmljZXMvaW1wZXJzb25hdGlvbi11c2VyLXNlbGVjdC5zZXJ2aWNlJztcbmltcG9ydCB7SW1wZXJzb25hdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL2ltcGVyc29uYXRpb24vc2VydmljZXMvaW1wZXJzb25hdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7Q2FzZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS9jYXNlJztcbmltcG9ydCB7XG4gICAgRHluYW1pY05hdmlnYXRpb25Sb3V0ZVByb3ZpZGVyU2VydmljZSxcbn0gZnJvbSAnLi4vLi4vcm91dGluZy9keW5hbWljLW5hdmlnYXRpb24tcm91dGUtcHJvdmlkZXIvZHluYW1pYy1uYXZpZ2F0aW9uLXJvdXRlLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtOQUVfUk9VVElOR19DT05GSUdVUkFUSU9OX1BBVEh9IGZyb20gJy4uLy4uL3JvdXRpbmcvcm91dGluZy1idWlsZGVyL3JvdXRpbmctYnVpbGRlci5zZXJ2aWNlJztcbmltcG9ydCB7TGFuZ3VhZ2VTZXJ2aWNlfSBmcm9tICcuLi8uLi90cmFuc2xhdGUvbGFuZ3VhZ2Uuc2VydmljZSc7XG5pbXBvcnQge1VzZXJ9IGZyb20gJy4uLy4uL3VzZXIvbW9kZWxzL3VzZXInO1xuaW1wb3J0IHtVc2VyU2VydmljZX0gZnJvbSAnLi4vLi4vdXNlci9zZXJ2aWNlcy91c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtMb2FkaW5nRW1pdHRlcn0gZnJvbSAnLi4vLi4vdXRpbGl0eS9sb2FkaW5nLWVtaXR0ZXInO1xuaW1wb3J0IHtVcmlOb2RlUmVzb3VyY2V9IGZyb20gJy4uL21vZGVsL3VyaS1yZXNvdXJjZSc7XG5pbXBvcnQge1VyaVNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2UvdXJpLnNlcnZpY2UnO1xuaW1wb3J0IHtJMThuRmllbGRWYWx1ZX0gZnJvbSBcIi4uLy4uL2RhdGEtZmllbGRzL2kxOG4tZmllbGQvbW9kZWxzL2kxOG4tZmllbGQtdmFsdWVcIjtcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7R3JvdXBOYXZpZ2F0aW9uQ29uc3RhbnRzfSBmcm9tIFwiLi4vbW9kZWwvZ3JvdXAtbmF2aWdhdGlvbi1jb25zdGFudHNcIjtcbmltcG9ydCB7Q2FzZVJlc291cmNlU2VydmljZX0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9lbmdpbmUtZW5kcG9pbnQvY2FzZS1yZXNvdXJjZS5zZXJ2aWNlXCI7XG5pbXBvcnQge1BhZ2V9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL3BhZ2VcIjtcbmltcG9ydCB7Q2FzZVNlYXJjaFJlcXVlc3RCb2R5LCBQZXRyaU5ldFNlYXJjaFJlcXVlc3R9IGZyb20gXCIuLi8uLi9maWx0ZXIvbW9kZWxzL2Nhc2Utc2VhcmNoLXJlcXVlc3QtYm9keVwiO1xuaW1wb3J0IHtIdHRwUGFyYW1zfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcbmltcG9ydCB7UGFnaW5hdGlvblBhcmFtc30gZnJvbSBcIi4uLy4uL3V0aWxpdHkvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLXBhcmFtc1wiO1xuaW1wb3J0IHtTaW1wbGVGaWx0ZXJ9IGZyb20gXCIuLi8uLi9maWx0ZXIvbW9kZWxzL3NpbXBsZS1maWx0ZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb25maWdEb3VibGVNZW51IHtcbiAgICBtb2RlOiBNYXREcmF3ZXJNb2RlO1xuICAgIG9wZW5lZDogYm9vbGVhbjtcbiAgICBkaXNhYmxlQ2xvc2U6IGJvb2xlYW47XG4gICAgd2lkdGg6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOYXZpZ2F0aW9uSXRlbSBleHRlbmRzIFZpZXcge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgcmVzb3VyY2U/OiBDYXNlO1xufVxuXG5leHBvcnQgY29uc3QgTUVOVV9JREVOVElGSUVSUyA9IFtcbiAgICAncHJlZmVyZW5jZV9pdGVtJyxcbl07XG5leHBvcnQgY29uc3QgU0VUVElOR1NfVFJBTlNJVElPTl9JRCA9ICdpdGVtX3NldHRpbmdzJztcblxuY29uc3QgTEVGVF9EUkFXRVJfREVGQVVMVF9XSURUSCA9IDYwO1xuY29uc3QgUklHSFRfRFJBV0VSX0RFRkFVTFRfV0lEVEggPSAyNDA7XG5jb25zdCBSSUdIVF9EUkFXRVJfREVGQVVMVF9NSU5fV0lEVEggPSAxODA7XG5jb25zdCBSSUdIVF9EUkFXRVJfTUFYX1dJRFRIID0gNDYwO1xuY29uc3QgUklHSFRfU0lERV9ORVdfUEFHRV9TSVpFID0gMTBcbmNvbnN0IFJJR0hUX1NJREVfSU5JVF9QQUdFX1NJWkUgPSAyMFxuXG5lbnVtIE1lbnVPcmRlciB7XG4gICAgQXNjZW5kaW5nLFxuICAgIERlc2NlbmRpbmdcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduY2MtYWJzdHJhY3QtbmF2aWdhdGlvbi1kb3VibGUtZHJhd2VyJyxcbiAgICB0ZW1wbGF0ZTogJycsXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0TmF2aWdhdGlvbkRvdWJsZURyYXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dCgpIHBvcnRhbExlZnRNZW51OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIEBJbnB1dCgpIHBvcnRhbFJpZ2h0TWVudTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBASW5wdXQoKSBpbWFnZVJvdXRlckxpbms6IHN0cmluZyA9ICcvJztcbiAgICBASW5wdXQoKSBpbWFnZUFsdDogc3RyaW5nID0gJ0xvZ28nO1xuICAgIEBJbnB1dCgpIGltYWdlOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHJvZmlsZVJvdXRlckxpbms6IHN0cmluZyA9ICcvcHJvZmlsZSc7XG4gICAgQElucHV0KCkgaW5jbHVkZVVzZXI6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIGluY2x1ZGVMYW5ndWFnZTogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgaW5jbHVkZU1vcmVNZW51OiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBpbmNsdWRlSW1wZXJzb25hdGlvbjogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgYWxsQ2xvc2FibGU6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIGZvbGRlckljb246IHN0cmluZyA9ICdmb2xkZXInO1xuICAgIEBJbnB1dCgpIG9wZW5lZEZvbGRlckljb246IHN0cmluZyA9ICdmb2xkZXJfb3Blbic7XG4gICAgQElucHV0KCkgZmlsdGVySWNvbjogc3RyaW5nID0gJ2ZpbHRlcl9hbHQnO1xuICAgIEBJbnB1dCgpIGZvbGRlcnNDYXRlZ29yeU5hbWU6IHN0cmluZyA9ICd0b29sYmFyLm1lbnUuZm9sZGVycyc7XG4gICAgQElucHV0KCkgdmlld3NDYXRlZ29yeU5hbWU6IHN0cmluZyA9ICd0b29sYmFyLm1lbnUudmlld3MnO1xuXG4gICAgLyoqXG4gICAgICogTGlzdCBvZiBkaXNwbGF5ZWQgaXRlbXMgb24gdGhlIGxlZnQgc2lkZVxuICAgICAqICovXG4gICAgbGVmdEl0ZW1zOiBBcnJheTxOYXZpZ2F0aW9uSXRlbT5cblxuICAgIC8qKlxuICAgICAqIExpc3Qgb2YgZGlzcGxheWVkIGl0ZW1zIG9uIHRoZSByaWdodCBzaWRlXG4gICAgICogKi9cbiAgICByaWdodEl0ZW1zOiBBcnJheTxOYXZpZ2F0aW9uSXRlbT5cblxuICAgIC8qKlxuICAgICAqIExpc3Qgb2YgaGlkZGVuIGl0ZW1zXG4gICAgICogKi9cbiAgICBtb3JlSXRlbXM6IEFycmF5PE5hdmlnYXRpb25JdGVtPjtcblxuICAgIC8qKlxuICAgICAqIExpc3Qgb2YgY3VzdG9tIGl0ZW1zIGluIG1vcmUgbWVudVxuICAgICAqICovXG4gICAgaGlkZGVuQ3VzdG9tSXRlbXM6IEFycmF5PE5hdmlnYXRpb25JdGVtPjtcblxuICAgIGl0ZW1zT3JkZXI6IE1lbnVPcmRlcjtcblxuICAgIHByb3RlY3RlZCBfYnJlYWtwb2ludFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByb3RlY3RlZCBfY3VycmVudE5vZGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIC8qKlxuICAgICAqIEN1cnJlbnRseSBkaXNwbGF5IHVyaVxuICAgICAqIFNpYmxpbmdzIG9mIHRoZSBub2RlIGFyZSBvbiB0aGUgbGVmdCwgY2hpbGRyZW4gYXJlIG9uIHRoZSByaWdodFxuICAgICAqL1xuICAgIHByaXZhdGUgX2N1cnJlbnROb2RlOiBVcmlOb2RlUmVzb3VyY2U7XG5cbiAgICBsZWZ0TG9hZGluZyQ6IExvYWRpbmdFbWl0dGVyO1xuICAgIHJpZ2h0TG9hZGluZyQ6IExvYWRpbmdFbWl0dGVyO1xuICAgIG5vZGVMb2FkaW5nJDogTG9hZGluZ0VtaXR0ZXI7XG5cbiAgICBwcm90ZWN0ZWQgX2NvbmZpZ0xlZnRNZW51OiBDb25maWdEb3VibGVNZW51ID0ge1xuICAgICAgICBtb2RlOiAnc2lkZScsXG4gICAgICAgIG9wZW5lZDogdHJ1ZSxcbiAgICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcbiAgICAgICAgd2lkdGg6IExFRlRfRFJBV0VSX0RFRkFVTFRfV0lEVEgsXG4gICAgfTtcbiAgICBwcm90ZWN0ZWQgX2NvbmZpZ1JpZ2h0TWVudTogQ29uZmlnRG91YmxlTWVudSA9IHtcbiAgICAgICAgbW9kZTogJ3NpZGUnLFxuICAgICAgICBvcGVuZWQ6IHRydWUsXG4gICAgICAgIGRpc2FibGVDbG9zZTogZmFsc2UsXG4gICAgICAgIHdpZHRoOiBSSUdIVF9EUkFXRVJfREVGQVVMVF9XSURUSCxcbiAgICB9O1xuXG4gICAgcHJvdGVjdGVkIF9jaGlsZEN1c3RvbVZpZXdzOiB7IFt1cmk6IHN0cmluZ106IHsgW2tleTogc3RyaW5nXTogTmF2aWdhdGlvbkl0ZW0gfSB9O1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2JyZWFrcG9pbnQ6IEJyZWFrcG9pbnRPYnNlcnZlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9sYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF90cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3VzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9hY2Nlc3NTZXJ2aWNlOiBBY2Nlc3NTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2xvZzogTG9nZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9jb25maWc6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3VyaVNlcnZpY2U6IFVyaVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfY2FzZVJlc291cmNlU2VydmljZTogQ2FzZVJlc291cmNlU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9pbXBlcnNvbmF0aW9uVXNlclNlbGVjdDogSW1wZXJzb25hdGlvblVzZXJTZWxlY3RTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2ltcGVyc29uYXRpb246IEltcGVyc29uYXRpb25TZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2R5bmFtaWNSb3V0aW5nU2VydmljZTogRHluYW1pY05hdmlnYXRpb25Sb3V0ZVByb3ZpZGVyU2VydmljZSkge1xuICAgICAgICB0aGlzLmxlZnRJdGVtcyA9IG5ldyBBcnJheTxOYXZpZ2F0aW9uSXRlbT4oKTtcbiAgICAgICAgdGhpcy5yaWdodEl0ZW1zID0gbmV3IEFycmF5PE5hdmlnYXRpb25JdGVtPigpO1xuICAgICAgICB0aGlzLmxlZnRMb2FkaW5nJCA9IG5ldyBMb2FkaW5nRW1pdHRlcigpO1xuICAgICAgICB0aGlzLnJpZ2h0TG9hZGluZyQgPSBuZXcgTG9hZGluZ0VtaXR0ZXIoKTtcbiAgICAgICAgdGhpcy5ub2RlTG9hZGluZyQgPSBuZXcgTG9hZGluZ0VtaXR0ZXIoKTtcbiAgICAgICAgdGhpcy5pdGVtc09yZGVyID0gTWVudU9yZGVyLkFzY2VuZGluZztcbiAgICAgICAgdGhpcy5oaWRkZW5DdXN0b21JdGVtcyA9IFtdO1xuICAgICAgICB0aGlzLm1vcmVJdGVtcyA9IG5ldyBBcnJheTxOYXZpZ2F0aW9uSXRlbT4oKTtcbiAgICAgICAgdGhpcy5fY2hpbGRDdXN0b21WaWV3cyA9IHt9O1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9icmVha3BvaW50U3Vic2NyaXB0aW9uID0gdGhpcy5fYnJlYWtwb2ludC5vYnNlcnZlKFtCcmVha3BvaW50cy5IYW5kc2V0TGFuZHNjYXBlXSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9icmVha3BvaW50LmlzTWF0Y2hlZCgnKG1heC13aWR0aDogOTU5Ljk5cHgpJykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc29sdmVMYXlvdXQoZmFsc2UpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc29sdmVMYXlvdXQodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2N1cnJlbnROb2RlU3Vic2NyaXB0aW9uID0gdGhpcy5fdXJpU2VydmljZS5hY3RpdmVOb2RlJC5zdWJzY3JpYmUobm9kZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnROb2RlID0gbm9kZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgdmlld0NvbmZpZ3VyYXRpb25QYXRoID0gdGhpcy5fYWN0aXZhdGVkUm91dGUuc25hcHNob3QuZGF0YVtOQUVfUk9VVElOR19DT05GSUdVUkFUSU9OX1BBVEhdO1xuICAgICAgICBpZiAoISF2aWV3Q29uZmlndXJhdGlvblBhdGgpIHtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdDb25maWd1cmF0aW9uID0gdGhpcy5fY29uZmlnLmdldFZpZXdCeVBhdGgodmlld0NvbmZpZ3VyYXRpb25QYXRoKTtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHZpZXdDb25maWd1cmF0aW9uLmNoaWxkcmVuKS5mb3JFYWNoKChba2V5LCBjaGlsZFZpZXddKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlVXJpRm9yQ2hpbGRWaWV3cyh2aWV3Q29uZmlndXJhdGlvblBhdGggKyAnLycgKyBrZXksIGNoaWxkVmlldyk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlSGlkZGVuTWVudUl0ZW1Gcm9tQ2hpbGRWaWV3cyh2aWV3Q29uZmlndXJhdGlvblBhdGggKyAnLycgKyBrZXksIGNoaWxkVmlldyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBjdXJyZW50Tm9kZSgpOiBVcmlOb2RlUmVzb3VyY2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudE5vZGU7XG4gICAgfVxuXG4gICAgc2V0IGN1cnJlbnROb2RlKG5vZGU6IFVyaU5vZGVSZXNvdXJjZSkge1xuICAgICAgICBpZiAobm9kZSA9PT0gdGhpcy5fY3VycmVudE5vZGUgfHwgdGhpcy5sZWZ0TG9hZGluZyQuaXNBY3RpdmUgfHwgdGhpcy5yaWdodExvYWRpbmckLmlzQWN0aXZlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY3VycmVudE5vZGUgPSBub2RlO1xuICAgICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5wYXJlbnRJZCAmJiAhbm9kZS5wYXJlbnQpIHtcbiAgICAgICAgICAgIGlmIChub2RlLnBhcmVudElkID09PSB0aGlzLl91cmlTZXJ2aWNlLnJvb3QuaWQpIHtcbiAgICAgICAgICAgICAgICBub2RlLnBhcmVudCA9IHRoaXMuX3VyaVNlcnZpY2Uucm9vdDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlTG9hZGluZyQub24oKTtcbiAgICAgICAgICAgICAgICB0aGlzLl91cmlTZXJ2aWNlLmdldE5vZGVCeVBhdGgodGhpcy5fdXJpU2VydmljZS5yZXNvbHZlUGFyZW50UGF0aChub2RlKSkuc3Vic2NyaWJlKG4gPT4ge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnBhcmVudCA9ICFuID8gdGhpcy5fdXJpU2VydmljZS5yb290IDogbjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlTG9hZGluZyQub2ZmKCk7XG4gICAgICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGVMb2FkaW5nJC5vZmYoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5ub2RlTG9hZGluZyQuaXNBY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMubm9kZUxvYWRpbmckLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlTWVudUl0ZW1zKG5vZGUpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVzb2x2ZU1lbnVJdGVtcyhub2RlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVzb2x2ZU1lbnVJdGVtcyhub2RlOiBVcmlOb2RlUmVzb3VyY2UpIHtcbiAgICAgICAgaWYgKHRoaXMuX3VyaVNlcnZpY2UuaXNSb290KG5vZGUpKSB7XG4gICAgICAgICAgICB0aGlzLmxlZnRJdGVtcyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5sb2FkUmlnaHRTaWRlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMubGVmdEl0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLnJlc291cmNlPy5pbW1lZGlhdGVEYXRhLmZpbmQoZiA9PiBmLnN0cmluZ0lkID09PSBHcm91cE5hdmlnYXRpb25Db25zdGFudHMuSVRFTV9GSUVMRF9JRF9OT0RFX1BBVEgpPy52YWx1ZSA9PT0gbm9kZS51cmlQYXRoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZExlZnRTaWRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmxvYWRSaWdodFNpZGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9icmVha3BvaW50U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9jdXJyZW50Tm9kZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5sZWZ0TG9hZGluZyQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5yaWdodExvYWRpbmckLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMubm9kZUxvYWRpbmckLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgZ2V0IGNvbmZpZ0xlZnRNZW51KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnTGVmdE1lbnU7XG4gICAgfVxuXG4gICAgZ2V0IGNvbmZpZ1JpZ2h0TWVudSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZ1JpZ2h0TWVudTtcbiAgICB9XG5cbiAgICB0b2dnbGVNZW51KCkge1xuICAgICAgICB0aGlzLnRvZ2dsZVJpZ2h0TWVudSgpO1xuICAgICAgICBpZiAodGhpcy5hbGxDbG9zYWJsZSkge1xuICAgICAgICAgICAgdGhpcy50b2dnbGVMZWZ0TWVudSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9nZ2xlTGVmdE1lbnUoKSB7XG4gICAgICAgIHRoaXMuX2NvbmZpZ0xlZnRNZW51Lm9wZW5lZCA9ICF0aGlzLl9jb25maWdMZWZ0TWVudS5vcGVuZWQ7XG4gICAgfVxuXG4gICAgdG9nZ2xlUmlnaHRNZW51KCkge1xuICAgICAgICB0aGlzLl9jb25maWdSaWdodE1lbnUub3BlbmVkID0gIXRoaXMuX2NvbmZpZ1JpZ2h0TWVudS5vcGVuZWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlc29sdmVMYXlvdXQoaXNMYXJnZVNjcmVlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb25maWdMZWZ0TWVudSA9IGlzTGFyZ2VTY3JlZW4gPyB7XG4gICAgICAgICAgICBtb2RlOiAnc2lkZScsXG4gICAgICAgICAgICBvcGVuZWQ6IHRydWUsXG4gICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICAgICAgICB3aWR0aDogdGhpcy5fY29uZmlnTGVmdE1lbnUud2lkdGgsXG4gICAgICAgIH0gOiB7XG4gICAgICAgICAgICBtb2RlOiAnb3ZlcicsXG4gICAgICAgICAgICBvcGVuZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLl9jb25maWdMZWZ0TWVudS53aWR0aCxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fY29uZmlnUmlnaHRNZW51ID0gaXNMYXJnZVNjcmVlbiA/IHtcbiAgICAgICAgICAgIG1vZGU6ICdzaWRlJyxcbiAgICAgICAgICAgIG9wZW5lZDogdHJ1ZSxcbiAgICAgICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLl9jb25maWdSaWdodE1lbnUud2lkdGgsXG4gICAgICAgIH0gOiB7XG4gICAgICAgICAgICBtb2RlOiAnb3ZlcicsXG4gICAgICAgICAgICBvcGVuZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLl9jb25maWdSaWdodE1lbnUud2lkdGgsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZ2V0TGFuZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhbmd1YWdlU2VydmljZS5nZXRMYW5ndWFnZSgpO1xuICAgIH1cblxuICAgIGxvZ291dCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdXNlclNlcnZpY2UubG9nb3V0KCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5kZWJ1ZygnVXNlciBpcyBsb2dnZWQgb3V0Jyk7XG4gICAgICAgICAgICBpZiAodGhpcy5fY29uZmlnLmdldCgpLnNlcnZpY2VzICYmIHRoaXMuX2NvbmZpZy5nZXQoKS5zZXJ2aWNlcy5hdXRoICYmIHRoaXMuX2NvbmZpZy5nZXQoKS5zZXJ2aWNlcy5hdXRoLmxvZ291dFJlZGlyZWN0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVkaXJlY3RQYXRoID0gdGhpcy5fY29uZmlnLmdldCgpLnNlcnZpY2VzLmF1dGgubG9nb3V0UmVkaXJlY3Q7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmluZm8oJ1JlZGlyZWN0aW5nIHRvICcgKyByZWRpcmVjdFBhdGgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbcmVkaXJlY3RQYXRoXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGltcGVyc29uYXRlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbXBlcnNvbmF0aW9uVXNlclNlbGVjdC5zZWxlY3RJbXBlcnNvbmF0ZSgpO1xuICAgIH1cblxuICAgIHN0b3BJbXBlcnNvbmF0aW5nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbXBlcnNvbmF0aW9uLmNlYXNlKCk7XG4gICAgfVxuXG4gICAgZ2V0IHVzZXIoKTogVXNlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyU2VydmljZS51c2VyO1xuICAgIH1cblxuICAgIGdldCBjYW5Hb0JhY2tMb2FkaW5nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubm9kZUxvYWRpbmckO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9uIGhvbWUgY2xpY2ssIHRoZSBjdXJyZW50IGxldmVsIGlzIHNldCB0byAwLCBhbmQgY3VycmVudCBwYXJlbnQgaXNcbiAgICAgKiBzZXQgdG8gcm9vdCBub2RlLlxuICAgICAqICovXG4gICAgb25Ib21lQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmxlZnRMb2FkaW5nJC5pc0FjdGl2ZSB8fCB0aGlzLnJpZ2h0TG9hZGluZyQuaXNBY3RpdmUpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3VyaVNlcnZpY2UuYWN0aXZlTm9kZSA9IHRoaXMuX3VyaVNlcnZpY2Uucm9vdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPbiBiYWNrIGNsaWNrLCB0aGUgcGFyZW50IGlzIHNldCB0byBwYXJlbnQgb2YgbGVmdCBub2RlcywgdGhhdCB3aWxsIHNvbHZlXG4gICAgICogdGhlIHJpZ2h0IHNpZGUgbWVudSAoZWxlbWVudHMgdGhhdCB3ZXJlIGluIGxlZnQgc2lkZSwgYWZ0ZXIgYmFja3dhcmRcbiAgICAgKiBuYXZpZ2F0aW9uIHdpbGwgYmUgb24gdGhlIHJpZ2h0IHNpZGUpLlxuICAgICAqIEN1cnJlbnQgbGV2ZWwgaXMgc2V0IHRvIGEgbG93ZXIgbnVtYmVyIGluIG9yZGVyIHRvIHNldCB0aGUgbGVmdCBzaWRlIG1lbnUuXG4gICAgICogKi9cbiAgICBvbkJhY2tDbGljaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubGVmdExvYWRpbmckLmlzQWN0aXZlIHx8IHRoaXMucmlnaHRMb2FkaW5nJC5pc0FjdGl2ZSB8fCB0aGlzLl91cmlTZXJ2aWNlLmlzUm9vdCh0aGlzLl9jdXJyZW50Tm9kZSkpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3VyaVNlcnZpY2UuYWN0aXZlTm9kZSA9IHRoaXMuX2N1cnJlbnROb2RlLnBhcmVudDtcbiAgICB9XG5cbiAgICBvbkl0ZW1DbGljayhpdGVtOiBOYXZpZ2F0aW9uSXRlbSk6IHZvaWQge1xuICAgICAgICBpZiAoaXRlbS5yZXNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBjdXN0b20gdmlldyByZXByZXNlbnRlZCBvbmx5IGluIG5hZS5qc29uXG4gICAgICAgICAgICBpZiAoaXRlbS5wcm9jZXNzVXJpID09PSB0aGlzLmN1cnJlbnROb2RlLnVyaVBhdGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cmlTZXJ2aWNlLmFjdGl2ZU5vZGUgPSB0aGlzLl9jdXJyZW50Tm9kZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdXJpU2VydmljZS5hY3RpdmVOb2RlID0gdGhpcy5fY3VycmVudE5vZGUucGFyZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IGl0ZW0ucmVzb3VyY2UuaW1tZWRpYXRlRGF0YS5maW5kKGYgPT4gZi5zdHJpbmdJZCA9PT0gR3JvdXBOYXZpZ2F0aW9uQ29uc3RhbnRzLklURU1fRklFTERfSURfTk9ERV9QQVRIKT8udmFsdWVcbiAgICAgICAgICAgIGlmICh0aGlzLmhhc0l0ZW1DaGlsZHJlbihpdGVtKSAmJiAhdGhpcy5sZWZ0TG9hZGluZyQuaXNBY3RpdmUgJiYgIXRoaXMucmlnaHRMb2FkaW5nJC5pc0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VyaVNlcnZpY2UuZ2V0Tm9kZUJ5UGF0aChwYXRoKS5zdWJzY3JpYmUobm9kZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3VyaVNlcnZpY2UuYWN0aXZlTm9kZSA9IG5vZGVcbiAgICAgICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFwYXRoLmluY2x1ZGVzKHRoaXMuY3VycmVudE5vZGUudXJpUGF0aCkpe1xuICAgICAgICAgICAgICAgIHRoaXMuX3VyaVNlcnZpY2UuYWN0aXZlTm9kZSA9IHRoaXMuX2N1cnJlbnROb2RlLnBhcmVudDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdXJpU2VydmljZS5hY3RpdmVOb2RlID0gdGhpcy5fY3VycmVudE5vZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYXNJdGVtQ2hpbGRyZW4oaXRlbTogTmF2aWdhdGlvbkl0ZW0pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0ucmVzb3VyY2U/LmltbWVkaWF0ZURhdGEuZmluZChmID0+IGYuc3RyaW5nSWQgPT09IEdyb3VwTmF2aWdhdGlvbkNvbnN0YW50cy5JVEVNX0ZJRUxEX0lEX0hBU19DSElMRFJFTik/LnZhbHVlXG4gICAgfVxuXG4gICAgaXNJdGVtQW5kTm9kZUVxdWFsKGl0ZW06IE5hdmlnYXRpb25JdGVtLCBub2RlOiBVcmlOb2RlUmVzb3VyY2UpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0ucmVzb3VyY2U/LmltbWVkaWF0ZURhdGEuZmluZChmID0+IGYuc3RyaW5nSWQgPT09IEdyb3VwTmF2aWdhdGlvbkNvbnN0YW50cy5JVEVNX0ZJRUxEX0lEX05PREVfUEFUSCk/LnZhbHVlID09PSBub2RlLnVyaVBhdGhcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbG9hZExlZnRTaWRlKCkge1xuICAgICAgICBpZiAodGhpcy5fdXJpU2VydmljZS5pc1Jvb3QodGhpcy5fY3VycmVudE5vZGUpKSB7XG4gICAgICAgICAgICB0aGlzLmxlZnRJdGVtcyA9IFtdO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubGVmdExvYWRpbmckLm9uKCk7XG4gICAgICAgIHRoaXMuX3VyaVNlcnZpY2UuZ2V0SXRlbUNhc2VCeU5vZGVQYXRoKHRoaXMuY3VycmVudE5vZGUucGFyZW50KS5zdWJzY3JpYmUocGFnZSA9PiB7XG4gICAgICAgICAgICBsZXQgY2hpbGRDYXNlcyQ7XG4gICAgICAgICAgICBsZXQgdGFyZ2V0SXRlbTtcbiAgICAgICAgICAgIGxldCBvcmRlcmVkQ2hpbGRDYXNlSWRzO1xuXG4gICAgICAgICAgICBpZiAocGFnZT8ucGFnaW5hdGlvbj8udG90YWxFbGVtZW50cyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGNoaWxkQ2FzZXMkID0gb2YoW10pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRhcmdldEl0ZW0gPSBwYWdlLmNvbnRlbnRbMF1cbiAgICAgICAgICAgICAgICBvcmRlcmVkQ2hpbGRDYXNlSWRzID0gdGhpcy5leHRyYWN0Q2hpbGRDYXNlSWRzKHRhcmdldEl0ZW0pXG4gICAgICAgICAgICAgICAgY2hpbGRDYXNlcyQgPSB0aGlzLmdldEl0ZW1DYXNlc0J5SWRzSW5PbmVQYWdlKG9yZGVyZWRDaGlsZENhc2VJZHMpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIG1hcChwID0+IHAuY29udGVudCksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjaGlsZENhc2VzJC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQubWFwKGZvbGRlciA9PiB0aGlzLnJlc29sdmVJdGVtQ2FzZVRvTmF2aWdhdGlvbkl0ZW0oZm9sZGVyKSkuZmlsdGVyKGkgPT4gISFpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxlZnRJdGVtcyA9IHJlc3VsdC5zb3J0KChhLCBiKSA9PiBvcmRlcmVkQ2hpbGRDYXNlSWRzLmluZGV4T2YoYS5yZXNvdXJjZS5zdHJpbmdJZCkgLSBvcmRlcmVkQ2hpbGRDYXNlSWRzLmluZGV4T2YoYi5yZXNvdXJjZS5zdHJpbmdJZCkpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZUN1c3RvbVZpZXdzSW5MZWZ0U2lkZSgpXG4gICAgICAgICAgICAgICAgdGhpcy5sZWZ0TG9hZGluZyQub2ZmKCk7XG4gICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxlZnRJdGVtcyA9IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZUN1c3RvbVZpZXdzSW5MZWZ0U2lkZSgpXG4gICAgICAgICAgICAgICAgdGhpcy5sZWZ0TG9hZGluZyQub2ZmKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIHRoaXMubGVmdEl0ZW1zID0gW107XG4gICAgICAgICAgICB0aGlzLnJlc29sdmVDdXN0b21WaWV3c0luTGVmdFNpZGUoKVxuICAgICAgICAgICAgdGhpcy5sZWZ0TG9hZGluZyQub2ZmKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkUmlnaHRTaWRlKCkge1xuICAgICAgICB0aGlzLnJpZ2h0TG9hZGluZyQub24oKTtcbiAgICAgICAgdGhpcy5tb3JlSXRlbXMgPSBbXTtcbiAgICAgICAgdGhpcy5fdXJpU2VydmljZS5nZXRJdGVtQ2FzZUJ5Tm9kZVBhdGgodGhpcy5jdXJyZW50Tm9kZSkuc3Vic2NyaWJlKHBhZ2UgPT4ge1xuICAgICAgICAgICAgbGV0IGNoaWxkQ2FzZXMkO1xuICAgICAgICAgICAgbGV0IHRhcmdldEl0ZW07XG4gICAgICAgICAgICBsZXQgb3JkZXJlZENoaWxkQ2FzZUlkcztcblxuICAgICAgICAgICAgaWYgKHBhZ2U/LnBhZ2luYXRpb24/LnRvdGFsRWxlbWVudHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBjaGlsZENhc2VzJCA9IG9mKFtdKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRJdGVtID0gcGFnZS5jb250ZW50WzBdXG4gICAgICAgICAgICAgICAgb3JkZXJlZENoaWxkQ2FzZUlkcyA9IHRoaXMuZXh0cmFjdENoaWxkQ2FzZUlkcyh0YXJnZXRJdGVtKVxuICAgICAgICAgICAgICAgIGNoaWxkQ2FzZXMkID0gdGhpcy5nZXRJdGVtQ2FzZXNCeUlkc0luT25lUGFnZShvcmRlcmVkQ2hpbGRDYXNlSWRzKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICBtYXAocCA9PiBwLmNvbnRlbnQpLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2hpbGRDYXNlcyQuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCBhcyBDYXNlW10pLnNvcnQoKGEsIGIpID0+IG9yZGVyZWRDaGlsZENhc2VJZHMuaW5kZXhPZihhLnN0cmluZ0lkKSAtIG9yZGVyZWRDaGlsZENhc2VJZHMuaW5kZXhPZihiLnN0cmluZ0lkKSk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPiBSSUdIVF9TSURFX0lOSVRfUEFHRV9TSVpFKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1JpZ2h0SXRlbXM6IENhc2VbXSA9IHJlc3VsdC5zcGxpY2UoMCwgUklHSFRfU0lERV9JTklUX1BBR0VfU0laRSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmlnaHRJdGVtcyA9IHJhd1JpZ2h0SXRlbXMubWFwKGZvbGRlciA9PiB0aGlzLnJlc29sdmVJdGVtQ2FzZVRvTmF2aWdhdGlvbkl0ZW0oZm9sZGVyKSkuZmlsdGVyKGkgPT4gISFpKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3JlSXRlbXMgPSByZXN1bHQubWFwKGZvbGRlciA9PiB0aGlzLnJlc29sdmVJdGVtQ2FzZVRvTmF2aWdhdGlvbkl0ZW0oZm9sZGVyKSkuZmlsdGVyKGkgPT4gISFpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJpZ2h0SXRlbXMgPSByZXN1bHQubWFwKGZvbGRlciA9PiB0aGlzLnJlc29sdmVJdGVtQ2FzZVRvTmF2aWdhdGlvbkl0ZW0oZm9sZGVyKSkuZmlsdGVyKGkgPT4gISFpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlQ3VzdG9tVmlld3NJblJpZ2h0U2lkZSgpXG4gICAgICAgICAgICAgICAgdGhpcy5yaWdodExvYWRpbmckLm9mZigpO1xuICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgdGhpcy5yaWdodEl0ZW1zID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy5tb3JlSXRlbXMgPSBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc29sdmVDdXN0b21WaWV3c0luUmlnaHRTaWRlKClcbiAgICAgICAgICAgICAgICB0aGlzLnJpZ2h0TG9hZGluZyQub2ZmKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIHRoaXMucmlnaHRJdGVtcyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5tb3JlSXRlbXMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMucmVzb2x2ZUN1c3RvbVZpZXdzSW5SaWdodFNpZGUoKVxuICAgICAgICAgICAgdGhpcy5yaWdodExvYWRpbmckLm9mZigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4dHJhY3RDaGlsZENhc2VJZHMoaXRlbTogQ2FzZSk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaW1tZWRpYXRlRGF0YS5maW5kKGYgPT4gZi5zdHJpbmdJZCA9PT0gR3JvdXBOYXZpZ2F0aW9uQ29uc3RhbnRzLklURU1fRklFTERfSURfQ0hJTERfSVRFTV9JRFMpPy52YWx1ZVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SXRlbUNhc2VzQnlJZHNJbk9uZVBhZ2UoY2FzZUlkczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPFBhZ2U8Q2FzZT4+ICB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEl0ZW1DYXNlc0J5SWRzKGNhc2VJZHMsIDAsIGNhc2VJZHMubGVuZ3RoKVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SXRlbUNhc2VzQnlJZHMoY2FzZUlkczogc3RyaW5nW10sIHBhZ2VOdW1iZXI6IG51bWJlciwgcGFnZVNpemU6IHN0cmluZyB8IG51bWJlcik6IE9ic2VydmFibGU8UGFnZTxDYXNlPj4ge1xuICAgICAgICBjb25zdCBzZWFyY2hCb2R5OiBDYXNlU2VhcmNoUmVxdWVzdEJvZHkgPSB7XG4gICAgICAgICAgICBzdHJpbmdJZDogY2FzZUlkcyxcbiAgICAgICAgICAgIHByb2Nlc3M6IE1FTlVfSURFTlRJRklFUlMubWFwKGlkID0+ICh7aWRlbnRpZmllcjogaWR9IGFzIFBldHJpTmV0U2VhcmNoUmVxdWVzdCkpXG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IGh0dHBQYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpXG4gICAgICAgICAgICAuc2V0KFBhZ2luYXRpb25QYXJhbXMuUEFHRV9TSVpFLCBwYWdlU2l6ZSlcbiAgICAgICAgICAgIC5zZXQoUGFnaW5hdGlvblBhcmFtcy5QQUdFX05VTUJFUiwgcGFnZU51bWJlcik7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYXNlUmVzb3VyY2VTZXJ2aWNlLnNlYXJjaENhc2VzKFNpbXBsZUZpbHRlci5mcm9tQ2FzZVF1ZXJ5KHNlYXJjaEJvZHkpLCBodHRwUGFyYW1zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9hZE1vcmVJdGVtcygpIHtcbiAgICAgICAgaWYgKHRoaXMubW9yZUl0ZW1zLmxlbmd0aCA+IFJJR0hUX1NJREVfTkVXX1BBR0VfU0laRSkge1xuICAgICAgICAgICAgdGhpcy5yaWdodEl0ZW1zLnB1c2goLi4udGhpcy5tb3JlSXRlbXMuc3BsaWNlKDAsIFJJR0hUX1NJREVfTkVXX1BBR0VfU0laRSkpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJpZ2h0SXRlbXMucHVzaCguLi50aGlzLm1vcmVJdGVtcylcbiAgICAgICAgICAgIHRoaXMubW9yZUl0ZW1zID0gW11cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpc0FzY2VuZGluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbXNPcmRlciA9PT0gTWVudU9yZGVyLkFzY2VuZGluZztcbiAgICB9XG5cbiAgICBwdWJsaWMgc3dpdGNoT3JkZXIoKSB7XG4gICAgICAgIHRoaXMuaXRlbXNPcmRlciA9ICh0aGlzLml0ZW1zT3JkZXIgKyAxKSAlIDI7XG4gICAgICAgIGxldCBtdWx0aXBsaWVyID0gMVxuICAgICAgICBpZiAodGhpcy5pdGVtc09yZGVyID09PSBNZW51T3JkZXIuRGVzY2VuZGluZykge1xuICAgICAgICAgICAgbXVsdGlwbGllciA9IC0xXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yaWdodEl0ZW1zID0gdGhpcy5yaWdodEl0ZW1zLnNvcnQoKGEsIGIpID0+IG11bHRpcGxpZXIgKiAoYT8ubmF2aWdhdGlvbiBhcyBOYXZpZ2F0aW9uSXRlbSk/LnRpdGxlLmxvY2FsZUNvbXBhcmUoKGI/Lm5hdmlnYXRpb24gYXMgTmF2aWdhdGlvbkl0ZW0pPy50aXRsZSkpO1xuICAgICAgICB0aGlzLmxlZnRJdGVtcyA9IHRoaXMubGVmdEl0ZW1zLnNvcnQoKGEsIGIpID0+IG11bHRpcGxpZXIgKiAoYT8ubmF2aWdhdGlvbiBhcyBOYXZpZ2F0aW9uSXRlbSk/LnRpdGxlLmxvY2FsZUNvbXBhcmUoKGI/Lm5hdmlnYXRpb24gYXMgTmF2aWdhdGlvbkl0ZW0pPy50aXRsZSkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByZXNvbHZlQ3VzdG9tVmlld3NJblJpZ2h0U2lkZSgpIHtcbiAgICAgICAgaWYgKCEhdGhpcy5fY2hpbGRDdXN0b21WaWV3c1t0aGlzLl9jdXJyZW50Tm9kZS51cmlQYXRoXSkge1xuICAgICAgICAgICAgdGhpcy5yaWdodEl0ZW1zLnB1c2goLi4uT2JqZWN0LnZhbHVlcyh0aGlzLl9jaGlsZEN1c3RvbVZpZXdzW3RoaXMuX2N1cnJlbnROb2RlLnVyaVBhdGhdKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZUN1c3RvbVZpZXdzSW5MZWZ0U2lkZSgpIHtcbiAgICAgICAgaWYgKCEhdGhpcy5fY2hpbGRDdXN0b21WaWV3c1t0aGlzLl9jdXJyZW50Tm9kZS5wYXJlbnQudXJpUGF0aF0pIHtcbiAgICAgICAgICAgIHRoaXMubGVmdEl0ZW1zLnB1c2goLi4uT2JqZWN0LnZhbHVlcyh0aGlzLl9jaGlsZEN1c3RvbVZpZXdzW3RoaXMuX2N1cnJlbnROb2RlLnBhcmVudC51cmlQYXRoXSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlc29sdmVJdGVtQ2FzZVRvTmF2aWdhdGlvbkl0ZW0oaXRlbUNhc2U6IENhc2UpOiBOYXZpZ2F0aW9uSXRlbSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0aGlzLnJlcHJlc2VudHNSb290Tm9kZShpdGVtQ2FzZSkpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGl0ZW06IE5hdmlnYXRpb25JdGVtID0ge1xuICAgICAgICAgICAgYWNjZXNzOiB7fSxcbiAgICAgICAgICAgIG5hdmlnYXRpb246IHtcbiAgICAgICAgICAgICAgICBpY29uOiBpdGVtQ2FzZS5pbW1lZGlhdGVEYXRhLmZpbmQoZiA9PiBmLnN0cmluZ0lkID09PSBHcm91cE5hdmlnYXRpb25Db25zdGFudHMuSVRFTV9GSUVMRF9JRF9NRU5VX0lDT04pPy52YWx1ZSB8fCB0aGlzLmZpbHRlckljb24sXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMuZ2V0VHJhbnNsYXRpb24oaXRlbUNhc2UuaW1tZWRpYXRlRGF0YS5maW5kKGYgPT4gZi5zdHJpbmdJZCA9PT0gR3JvdXBOYXZpZ2F0aW9uQ29uc3RhbnRzLklURU1fRklFTERfSURfTUVOVV9OQU1FKT8udmFsdWUpIHx8IGl0ZW1DYXNlLnRpdGxlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJvdXRpbmc6IHtcbiAgICAgICAgICAgICAgICBwYXRoOiB0aGlzLmdldEl0ZW1Sb3V0aW5nUGF0aChpdGVtQ2FzZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaWQ6IGl0ZW1DYXNlLnN0cmluZ0lkLFxuICAgICAgICAgICAgcmVzb3VyY2U6IGl0ZW1DYXNlLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCByZXNvbHZlZFJvbGVzID0gdGhpcy5yZXNvbHZlQWNjZXNzUm9sZXMoaXRlbUNhc2UsIEdyb3VwTmF2aWdhdGlvbkNvbnN0YW50cy5JVEVNX0ZJRUxEX0lEX0FMTE9XRURfUk9MRVMpO1xuICAgICAgICBjb25zdCByZXNvbHZlZEJhbm5lZFJvbGVzID0gdGhpcy5yZXNvbHZlQWNjZXNzUm9sZXMoaXRlbUNhc2UsIEdyb3VwTmF2aWdhdGlvbkNvbnN0YW50cy5JVEVNX0ZJRUxEX0lEX0JBTk5FRF9ST0xFUyk7XG4gICAgICAgIGlmICghIXJlc29sdmVkUm9sZXMpIGl0ZW0uYWNjZXNzWydyb2xlJ10gPSByZXNvbHZlZFJvbGVzO1xuICAgICAgICBpZiAoISFyZXNvbHZlZEJhbm5lZFJvbGVzKSBpdGVtLmFjY2Vzc1snYmFubmVkUm9sZSddID0gcmVzb2x2ZWRCYW5uZWRSb2xlcztcbiAgICAgICAgaWYgKCF0aGlzLl9hY2Nlc3NTZXJ2aWNlLmNhbkFjY2Vzc1ZpZXcoaXRlbSwgaXRlbS5yb3V0aW5nUGF0aCkpIHJldHVybjtcbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXByZXNlbnRzUm9vdE5vZGUoaXRlbTogQ2FzZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaXRlbS5pbW1lZGlhdGVEYXRhLmZpbmQoZiA9PiBmLnN0cmluZ0lkID09PSBHcm91cE5hdmlnYXRpb25Db25zdGFudHMuSVRFTV9GSUVMRF9JRF9OT0RFX1BBVEgpLnZhbHVlID09PSBcIi9cIlxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VHJhbnNsYXRpb24odmFsdWU6IEkxOG5GaWVsZFZhbHVlKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgbG9jYWxlID0gdGhpcy5fdHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZy5zcGxpdCgnLScpWzBdO1xuICAgICAgICByZXR1cm4gbG9jYWxlIGluIHZhbHVlLnRyYW5zbGF0aW9ucyA/IHZhbHVlLnRyYW5zbGF0aW9uc1tsb2NhbGVdIDogdmFsdWUuZGVmYXVsdFZhbHVlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByZXNvbHZlQWNjZXNzUm9sZXMoZmlsdGVyOiBDYXNlLCByb2xlVHlwZTogc3RyaW5nKTogQXJyYXk8Um9sZUFjY2Vzcz4gfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBhbGxvd2VkUm9sZXMgPSBmaWx0ZXIuaW1tZWRpYXRlRGF0YS5maW5kKGYgPT4gZi5zdHJpbmdJZCA9PT0gcm9sZVR5cGUpPy5vcHRpb25zO1xuICAgICAgICBpZiAoIWFsbG93ZWRSb2xlcyB8fCBPYmplY3Qua2V5cyhhbGxvd2VkUm9sZXMpLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3Qgcm9sZXMgPSBbXTtcbiAgICAgICAgT2JqZWN0LmtleXMoYWxsb3dlZFJvbGVzKS5mb3JFYWNoKGNvbWJpbmVkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gY29tYmluZWQuc3BsaXQoJzonKTtcbiAgICAgICAgICAgIHJvbGVzLnB1c2goe1xuICAgICAgICAgICAgICAgIHByb2Nlc3NJZDogcGFydHNbMV0sXG4gICAgICAgICAgICAgICAgcm9sZUlkOiBwYXJ0c1swXSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJvbGVzO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRJdGVtUm91dGluZ1BhdGgoaXRlbUNhc2U6IENhc2UpIHtcbiAgICAgICAgY29uc3QgdHJhbnNJZCA9IFNFVFRJTkdTX1RSQU5TSVRJT05fSUQ7XG4gICAgICAgIGNvbnN0IHRhc2tJZCA9IGl0ZW1DYXNlLnRhc2tzLmZpbmQodGFza1BhaXIgPT4gdGFza1BhaXIudHJhbnNpdGlvbiA9PT0gdHJhbnNJZCkudGFzaztcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5fZHluYW1pY1JvdXRpbmdTZXJ2aWNlLnJvdXRlO1xuICAgICAgICByZXR1cm4gYC8ke3VybH0vJHt0YXNrSWR9YDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB0byBjaGVjayB3aGV0aGVyIHRoZSBiYWNrIGJ1dHRvbiBzaG91bGQgYmUgZGlzcGxheWVkXG4gICAgICogQHJldHVybnMgYm9vbGVhbiBpZiB0aGUgYmFjayBidXR0b24gc2hvdWxkIGJlIGRpc3BsYXllZFxuICAgICAqICovXG4gICAgaXNPblplcm9MZXZlbCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fY3VycmVudE5vZGU/LmxldmVsID8gdGhpcy5fY3VycmVudE5vZGUubGV2ZWwgPT0gMCA6IHRydWU7XG4gICAgfVxuXG4gICAgaXNMZWZ0SXRlbXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGVmdEl0ZW1zID09PSB1bmRlZmluZWQgfHwgdGhpcy5sZWZ0SXRlbXMubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIGlzUmlnaHRJdGVtc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yaWdodEl0ZW1zID09PSB1bmRlZmluZWQgfHwgdGhpcy5yaWdodEl0ZW1zLmxlbmd0aCA9PT0gMDtcbiAgICB9XG5cbiAgICB1cmlOb2RlVHJhY2tCeShpbmRleDogbnVtYmVyLCBub2RlOiBVcmlOb2RlUmVzb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuaWQ7XG4gICAgfVxuXG4gICAgaXRlbXNUcmFja0J5KGluZGV4OiBudW1iZXIsIGl0ZW06IE5hdmlnYXRpb25JdGVtKSB7XG4gICAgICAgIHJldHVybiBpdGVtLmlkO1xuICAgIH1cblxuICAgIG9uUmVzaXplRXZlbnQoZXZlbnQ6IFJlc2l6ZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC5yZWN0YW5nbGUud2lkdGggPiBSSUdIVF9EUkFXRVJfTUFYX1dJRFRIKSB7XG4gICAgICAgICAgICB0aGlzLl9jb25maWdSaWdodE1lbnUud2lkdGggPSBSSUdIVF9EUkFXRVJfTUFYX1dJRFRIO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnJlY3RhbmdsZS53aWR0aCA8IFJJR0hUX0RSQVdFUl9ERUZBVUxUX01JTl9XSURUSCkge1xuICAgICAgICAgICAgdGhpcy5fY29uZmlnUmlnaHRNZW51LndpZHRoID0gUklHSFRfRFJBV0VSX0RFRkFVTFRfTUlOX1dJRFRIO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fY29uZmlnUmlnaHRNZW51LndpZHRoID0gZXZlbnQucmVjdGFuZ2xlLndpZHRoO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRPRE8gaW1wbGVtZW50IHNhdmluZyBkcmF3ZXIgd2lkdGggdG8gdXNlciBwcmVmZXJlbmNlc1xuICAgICAgICAvLyB0aGlzLnVzZXJQcmVmZXJlbmNlU2VydmljZS5fZHJhd2VyV2lkdGhDaGFuZ2VkJC5uZXh0KHRoaXMud2lkdGgpO1xuICAgICAgICAvLyB0aGlzLmNvbnRlbnRXaWR0aC5uZXh0KHRoaXMud2lkdGgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByZXNvbHZlVXJpRm9yQ2hpbGRWaWV3cyhjb25maWdQYXRoOiBzdHJpbmcsIGNoaWxkVmlldzogVmlldyk6IHZvaWQge1xuICAgICAgICBpZiAoIWNoaWxkVmlldy5wcm9jZXNzVXJpKSByZXR1cm47XG4gICAgICAgIGlmICghdGhpcy5fYWNjZXNzU2VydmljZS5jYW5BY2Nlc3NWaWV3KGNoaWxkVmlldywgY29uZmlnUGF0aCkpIHJldHVybjtcbiAgICAgICAgaWYgKCF0aGlzLl9jaGlsZEN1c3RvbVZpZXdzW2NoaWxkVmlldy5wcm9jZXNzVXJpXSkge1xuICAgICAgICAgICAgdGhpcy5fY2hpbGRDdXN0b21WaWV3c1tjaGlsZFZpZXcucHJvY2Vzc1VyaV0gPSB7fTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jaGlsZEN1c3RvbVZpZXdzW2NoaWxkVmlldy5wcm9jZXNzVXJpXVtjb25maWdQYXRoXSA9IHtcbiAgICAgICAgICAgIGlkOiBjb25maWdQYXRoLFxuICAgICAgICAgICAgLi4uY2hpbGRWaWV3LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByZXNvbHZlSGlkZGVuTWVudUl0ZW1Gcm9tQ2hpbGRWaWV3cyhjb25maWdQYXRoOiBzdHJpbmcsIGNoaWxkVmlldzogVmlldyk6IHZvaWQge1xuICAgICAgICBpZiAoIWNoaWxkVmlldy5uYXZpZ2F0aW9uKSByZXR1cm47XG4gICAgICAgIGlmICghdGhpcy5fYWNjZXNzU2VydmljZS5jYW5BY2Nlc3NWaWV3KGNoaWxkVmlldywgY29uZmlnUGF0aCkpIHJldHVybjtcbiAgICAgICAgaWYgKCEhKChjaGlsZFZpZXc/Lm5hdmlnYXRpb24gYXMgYW55KT8uaGlkZGVuKSkge1xuICAgICAgICAgICAgdGhpcy5oaWRkZW5DdXN0b21JdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDogY29uZmlnUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5jaGlsZFZpZXcsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19
|
|
@@ -27881,8 +27881,9 @@ class AbstractNavigationDoubleDrawerComponent {
|
|
|
27881
27881
|
return;
|
|
27882
27882
|
}
|
|
27883
27883
|
this._currentNode = node;
|
|
27884
|
-
if (!node)
|
|
27884
|
+
if (!node) {
|
|
27885
27885
|
return;
|
|
27886
|
+
}
|
|
27886
27887
|
if (node.parentId && !node.parent) {
|
|
27887
27888
|
if (node.parentId === this._uriService.root.id) {
|
|
27888
27889
|
node.parent = this._uriService.root;
|
|
@@ -27898,7 +27899,14 @@ class AbstractNavigationDoubleDrawerComponent {
|
|
|
27898
27899
|
});
|
|
27899
27900
|
}
|
|
27900
27901
|
}
|
|
27901
|
-
this.
|
|
27902
|
+
if (this.nodeLoading$.isActive) {
|
|
27903
|
+
this.nodeLoading$.subscribe(() => {
|
|
27904
|
+
this.resolveMenuItems(node);
|
|
27905
|
+
});
|
|
27906
|
+
}
|
|
27907
|
+
else {
|
|
27908
|
+
this.resolveMenuItems(node);
|
|
27909
|
+
}
|
|
27902
27910
|
}
|
|
27903
27911
|
resolveMenuItems(node) {
|
|
27904
27912
|
if (this._uriService.isRoot(node)) {
|
|
@@ -28011,16 +28019,30 @@ class AbstractNavigationDoubleDrawerComponent {
|
|
|
28011
28019
|
}
|
|
28012
28020
|
onItemClick(item) {
|
|
28013
28021
|
var _a;
|
|
28014
|
-
if (
|
|
28015
|
-
|
|
28016
|
-
this.
|
|
28017
|
-
this._uriService.activeNode =
|
|
28018
|
-
}
|
|
28019
|
-
|
|
28020
|
-
|
|
28022
|
+
if (item.resource === undefined) {
|
|
28023
|
+
// custom view represented only in nae.json
|
|
28024
|
+
if (item.processUri === this.currentNode.uriPath) {
|
|
28025
|
+
this._uriService.activeNode = this._currentNode;
|
|
28026
|
+
}
|
|
28027
|
+
else {
|
|
28028
|
+
this._uriService.activeNode = this._currentNode.parent;
|
|
28029
|
+
}
|
|
28021
28030
|
}
|
|
28022
28031
|
else {
|
|
28023
|
-
|
|
28032
|
+
const path = (_a = item.resource.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH)) === null || _a === void 0 ? void 0 : _a.value;
|
|
28033
|
+
if (this.hasItemChildren(item) && !this.leftLoading$.isActive && !this.rightLoading$.isActive) {
|
|
28034
|
+
this._uriService.getNodeByPath(path).subscribe(node => {
|
|
28035
|
+
this._uriService.activeNode = node;
|
|
28036
|
+
}, error => {
|
|
28037
|
+
this._log.error(error);
|
|
28038
|
+
});
|
|
28039
|
+
}
|
|
28040
|
+
else if (!path.includes(this.currentNode.uriPath)) {
|
|
28041
|
+
this._uriService.activeNode = this._currentNode.parent;
|
|
28042
|
+
}
|
|
28043
|
+
else {
|
|
28044
|
+
this._uriService.activeNode = this._currentNode;
|
|
28045
|
+
}
|
|
28024
28046
|
}
|
|
28025
28047
|
}
|
|
28026
28048
|
hasItemChildren(item) {
|