@rivet-health/design-system 33.0.0 → 33.1.0
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/views/state.mjs +4 -4
- package/esm2020/lib/navigation/views/views/views.component.mjs +22 -7
- package/fesm2015/rivet-health-design-system.mjs +18 -5
- package/fesm2015/rivet-health-design-system.mjs.map +1 -1
- package/fesm2020/rivet-health-design-system.mjs +18 -5
- package/fesm2020/rivet-health-design-system.mjs.map +1 -1
- package/lib/navigation/views/views/views.component.d.ts +3 -0
- package/package.json +1 -1
|
@@ -416,11 +416,11 @@ export var RivViews;
|
|
|
416
416
|
function getPermissionDescription(permission) {
|
|
417
417
|
switch (permission) {
|
|
418
418
|
case 'private':
|
|
419
|
-
return 'Only
|
|
419
|
+
return 'Private - Only available to you';
|
|
420
420
|
case 'shared':
|
|
421
|
-
return 'Only visible to those with access';
|
|
421
|
+
return 'Shared - Only visible to those with access';
|
|
422
422
|
case 'public':
|
|
423
|
-
return 'Visible to everyone';
|
|
423
|
+
return 'Public - Visible to everyone';
|
|
424
424
|
}
|
|
425
425
|
}
|
|
426
426
|
RivViews.getPermissionDescription = getPermissionDescription;
|
|
@@ -429,4 +429,4 @@ export var RivViews;
|
|
|
429
429
|
}
|
|
430
430
|
RivViews.isSharedView = isSharedView;
|
|
431
431
|
})(RivViews || (RivViews = {}));
|
|
432
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9uYXZpZ2F0aW9uL3ZpZXdzL3N0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBa0MsTUFBTSxTQUFTLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3hELE9BQU8sRUFDTCxXQUFXLEVBRVgsSUFBSSxFQUNKLEdBQUcsRUFDSCxTQUFTLEVBRVQsYUFBYSxFQUNiLFNBQVMsRUFDVCxPQUFPLEdBQ1IsTUFBTSxNQUFNLENBQUM7QUFLZCxNQUFNLEtBQVcsUUFBUSxDQSt3QnhCO0FBL3dCRCxXQUFpQixRQUFRO0lBQ1Ysd0JBQWUsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFVLENBQUM7SUFHM0QscUJBQVksR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFVLENBQUM7SUF3SnRFLFNBQWdCLGFBQWEsQ0FBb0MsRUFDL0QsTUFBTSxFQUNOLElBQUksRUFDSixTQUFTLEVBQ1QsVUFBVSxFQUNWLFFBQVEsRUFDUixPQUFPLEVBQ1AsZUFBZSxHQUNVO1FBQ3pCLE1BQU0sWUFBWSxHQUFvQjtZQUNwQyxLQUFLLEVBQUUsRUFBRTtZQUNULFlBQVksRUFBRSxJQUFJO1lBQ2xCLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLGNBQWMsRUFBRSxDQUFDO1lBQ2pCLGtCQUFrQixFQUFFLElBQUk7WUFDeEIsbUJBQW1CLEVBQUUsSUFBSTtZQUN6QixRQUFRLEVBQUU7Z0JBQ1IsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsVUFBVSxFQUFFLEtBQUs7YUFDbEI7WUFDRCxHQUFHLEVBQUU7Z0JBQ0gsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixVQUFVLEVBQUUsSUFBSTthQUNqQjtZQUNELFVBQVU7WUFDVixhQUFhLEVBQUUsSUFBSTtTQUNwQixDQUFDO1FBRUYsTUFBTSxxQkFBcUIsR0FBb0IsWUFBWSxDQUN6RCxFQUFFLEVBQ0YsT0FBTyxFQUFFLFlBQVksRUFDckIsWUFBWSxDQUNiLENBQUM7UUFFRixNQUFNLE9BQU8sR0FBMEIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNyRCxNQUFNLFNBQVMsR0FBZ0MsT0FBTyxDQUFDLElBQUksQ0FDekQsU0FBUyxDQUNQLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQ2hCLElBQUksQ0FDRixNQUFNLENBQ0osS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sUUFBUSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsRUFDbkIsU0FBUyxFQUNULFFBQVEsRUFDUixlQUFlLENBQ2hCLENBQ0YsRUFDSCxxQkFBcUIsRUFDckIsQ0FBQyxDQUNGLEVBQ0QsU0FBUyxDQUFDLHFCQUFxQixDQUFDLENBQ2pDLENBQUM7UUFFRixNQUFNLEtBQUssR0FBaUMsV0FBVyxDQUNyRCxTQUFTLENBQUMsSUFBSSxDQUNaLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNOLE1BQU0sa0JBQWtCLEdBQVEsZUFBZSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6RCxNQUFNLFVBQVUsR0FBa0Isa0JBQWtCLENBQUMsSUFBSSxDQUN2RCxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FDbkMsQ0FBQztZQUNGLHFFQUFxRTtZQUNyRSwyREFBMkQ7WUFDM0QsTUFBTSxZQUFZLEdBQW1CLFVBQVU7Z0JBQzdDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDZixDQUFDLENBQUMsa0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUM7b0JBQy9CLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUMxQixDQUFDLENBQUMsSUFBSSxDQUFDO1lBRVQsTUFBTSxRQUFRLEdBQXFCLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN6RCxNQUFNLFlBQVksR0FBWSxDQUFDLENBQUMsYUFBYSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3pELE1BQU0sZUFBZSxHQUFZLENBQUMsQ0FBQyxlQUFlLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDL0QsT0FBTztvQkFDTCxHQUFHLElBQUk7b0JBQ1AsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLElBQUksWUFBWSxJQUFJLGVBQWU7b0JBQ3hELE1BQU0sRUFBRSxZQUFZLEtBQUssSUFBSSxDQUFDLEVBQUU7b0JBQ2hDLE1BQU0sRUFBRSxZQUFZO29CQUNwQixTQUFTLEVBQUUsZUFBZTtpQkFDM0IsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBRUgsTUFBTSxlQUFlLEdBQUcsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRWxELE1BQU0sY0FBYyxHQUFHLHVCQUF1QixDQUM1QyxlQUFlLEVBQ2YsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLEVBQzdCLFlBQVksRUFDWixDQUFDLENBQUMsZUFBZSxDQUNsQixDQUFDO1lBRUYsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNO2dCQUNwQyxDQUFDLENBQUMsV0FBVyxDQUNULGVBQWUsRUFDZixDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFDakIsT0FBTyxFQUFFLFdBQVcsQ0FDckI7Z0JBQ0gsQ0FBQyxDQUFDLGVBQWUsQ0FBQztZQUVwQixNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNuRSxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTTtnQkFDbkMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDO2dCQUNwRSxDQUFDLENBQUMsaUJBQWlCLENBQUM7WUFFdEIsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7WUFFekMsT0FBTztnQkFDTCxHQUFHLENBQUM7Z0JBQ0osUUFBUTtnQkFDUixjQUFjO2dCQUNkLFlBQVk7Z0JBQ1osZUFBZTtnQkFDZixHQUFHLEVBQUU7b0JBQ0gsR0FBRyxDQUFDLENBQUMsR0FBRztvQkFDUixXQUFXLEVBQUUsaUJBQWlCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXO29CQUNuRCxZQUFZLEVBQUUsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDO29CQUM1RCxVQUFVLEVBQUUsaUJBQWlCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVO29CQUNqRCxXQUFXLEVBQUUsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDO29CQUMxRCxVQUFVLEVBQUUsaUJBQWlCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVO29CQUNqRCxXQUFXLEVBQUUsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDO2lCQUMzRDtnQkFDRCxZQUFZLEVBQUUsWUFBWTthQUMzQixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsRUFDRDtZQUNFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDckMsaUJBQWlCLEVBQUUsS0FBSztTQUN6QixDQUNGLENBQUM7UUFDRixLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFaEIsNkJBQTZCO1FBQzdCLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUUvQixPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQzVCLENBQUM7SUExSWUsc0JBQWEsZ0JBMEk1QixDQUFBO0lBT0QsU0FBUyxlQUFlLENBQ3RCLEtBQXVCO1FBRXZCLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxTQUFTLDBCQUEwQixDQUNqQyxLQUFVLEVBQ1YsWUFBb0I7UUFFcEIsTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTVDLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU8sWUFBWSxDQUFDO1FBRXJDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyRSxPQUFPLFNBQVMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDckQsQ0FBQztJQUVELFNBQVMsMEJBQTBCLENBQ2pDLEtBQXNCO1FBRXRCLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbEQscUNBQXFDO1FBQ3JDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBRWhFLHFEQUFxRDtRQUNyRCxNQUFNLGtCQUFrQixHQUFHLGlCQUFpQixHQUFHLENBQUMsQ0FBQztRQUVqRCw4RUFBOEU7UUFDOUUsd0ZBQXdGO1FBQ3hGLElBQUksa0JBQWtCLElBQUksWUFBWSxDQUFDLE1BQU07WUFBRSxPQUFPLFlBQVksQ0FBQyxNQUFNLENBQUM7O1lBQ3JFLE9BQU8sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLENBQUMsK0JBQStCO0lBQ3JFLENBQUM7SUFFRCxTQUFTLHVCQUF1QixDQUM5QixTQUEyQixFQUMzQixpQkFBeUIsRUFDekIsWUFBNkMsRUFDN0MsZUFBbUQ7UUFFbkQsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUU3RCxNQUFNLG9CQUFvQixHQUFxQixFQUFFLENBQUM7UUFFbEQsMERBQTBEO1FBQzFELE1BQU0sbUJBQW1CLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FDN0MsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLFlBQVksQ0FDakMsQ0FBQztRQUNGLElBQUksWUFBWSxLQUFLLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQ2pELE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLFlBQVksQ0FBQyxDQUFDO1lBQ3BFLElBQUksVUFBVSxJQUFJLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUMzQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDdkM7U0FDRjtRQUVELDJEQUEyRDtRQUMzRCxNQUFNLHNCQUFzQixHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQ2hELElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxlQUFlLENBQ3BDLENBQUM7UUFDRixJQUNFLGVBQWUsS0FBSyxJQUFJO1lBQ3hCLENBQUMsc0JBQXNCO1lBQ3ZCLGVBQWUsSUFBSSxZQUFZLEVBQy9CO1lBQ0EsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssZUFBZSxDQUFDLENBQUM7WUFDMUUsSUFDRSxhQUFhO2dCQUNiLGNBQWMsQ0FBQyxNQUFNLEdBQUcsb0JBQW9CLENBQUMsTUFBTSxFQUNuRDtnQkFDQSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDMUM7U0FDRjtRQUVELElBQUksb0JBQW9CLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNuQyxNQUFNLGlCQUFpQixHQUFXLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztZQUM5RCxPQUFPO2dCQUNMLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUM7Z0JBQ2xELEdBQUcsb0JBQW9CO2FBQ3hCLENBQUM7U0FDSDtRQUVELE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxTQUFTLGlCQUFpQixDQUN4QixLQUF1QixFQUN2QixVQUEwQjtRQUUxQixPQUFPLE1BQU0sQ0FDWCxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsS0FBSyxVQUFVLENBQUMsRUFDcEQsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FDMUIsQ0FBQztJQUNKLENBQUM7SUFFRCxTQUFTLFdBQVcsQ0FDbEIsS0FBdUIsRUFDdkIsS0FBYSxFQUNiLE9BQXlCO1FBRXpCLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUMzQixTQUFTLEVBQUUsR0FBRztZQUNkLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQztZQUNmLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztRQUVILE1BQU0sY0FBYyxHQUFpQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXhFLE9BQU8sY0FBYyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbkMsR0FBRyxNQUFNLENBQUMsSUFBSTtZQUNkLHFCQUFxQixFQUFFO2dCQUNyQixHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLE9BQU8sQ0FBQyxFQUFFLE9BQU87b0JBQy9ELEVBQUUsQ0FBQzthQUNOO1NBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsU0FBUyxxQkFBcUIsQ0FDNUIsS0FBc0I7UUFFdEIsTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRCxNQUFNLHNCQUFzQixHQUFHLFlBQVksQ0FBQyxTQUFTLENBQ25ELElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsWUFBWSxDQUN2QyxDQUFDO1FBRUYsSUFBSSxZQUFZLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUM1QixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsSUFBSSxzQkFBc0IsS0FBSyxDQUFDLENBQUM7WUFBRSxPQUFPLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDN0QsT0FBTyxDQUNMLFlBQVksQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzVDLFlBQVksQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzVDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ25CLENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUyxVQUFVLENBQ2pCLEtBQXNCLEVBQ3RCLEVBQVc7UUFFWCxNQUFNLFlBQVksR0FDaEIsS0FBSyxDQUFDLFlBQVksS0FBSyxFQUFFO1lBQ3ZCLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUM7WUFDOUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDekIsTUFBTSxlQUFlLEdBQ25CLEtBQUssQ0FBQyxlQUFlLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7UUFDOUQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELE9BQU87WUFDTCxHQUFHLEtBQUs7WUFDUixLQUFLO1lBQ0wsWUFBWTtZQUNaLGVBQWU7WUFDZixtQkFBbUIsRUFBRSxJQUFJO1NBQzFCLENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUyxVQUFVLENBQ2pCLEtBQXNCLEVBQ3RCLEVBQVcsRUFDWCxPQUFnQjtRQUVoQixPQUFPO1lBQ0wsR0FBRyxLQUFLO1lBQ1IsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQzVCLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzdDO1lBQ0QsWUFBWSxFQUNWLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxZQUFZLEtBQUssRUFBRTtnQkFDbkMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQztnQkFDOUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZO1NBQ3pCLENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUyxpQkFBaUIsQ0FDeEIsS0FBVSxFQUNWLGNBQWlCLEVBQ2pCLE9BQVU7UUFFVixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0UsSUFBSSxXQUFXLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDdEIsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDO1NBQzVCO2FBQU07WUFDTCxPQUFPO2dCQUNMLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsV0FBVyxHQUFHLENBQUMsQ0FBQztnQkFDbEMsT0FBTztnQkFDUCxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQzthQUNoQyxDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRUQsU0FBUyxlQUFlLENBQ3RCLEtBQXNCLEVBQ3RCLG9CQUE0QixFQUM1QixlQUF1QjtRQUV2QixJQUNFLEtBQUssQ0FBQyxhQUFhO1lBQ25CLENBQUMsb0JBQW9CLEtBQUssQ0FBQyxJQUFJLGVBQWUsS0FBSyxDQUFDLENBQUMsRUFDckQ7WUFDQSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLHNDQUFzQztTQUM1RTtRQUVELE1BQU0sbUJBQW1CLEdBQUcsMEJBQTBCLENBQ3BELEtBQUssQ0FBQyxLQUFLLEVBQ1gsb0JBQW9CLENBQ3JCLENBQUM7UUFDRixNQUFNLGNBQWMsR0FBRywwQkFBMEIsQ0FDL0MsS0FBSyxDQUFDLEtBQUssRUFDWCxlQUFlLENBQ2hCLENBQUM7UUFFRixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDOUMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssbUJBQW1CLENBQUMsQ0FBQztRQUU1RSxPQUFPO1lBQ0wsS0FBSyxFQUFFO2dCQUNMLEdBQUcsS0FBSztnQkFDUixLQUFLLEVBQUU7b0JBQ0wsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUM7b0JBQ3ZDLElBQUk7b0JBQ0osR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQztpQkFDckM7YUFDRjtZQUNELFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUyxpQkFBaUIsQ0FDeEIsS0FBVSxFQUNWLGVBQW1EO1FBRW5ELE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksZUFBZSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELFNBQVMsa0JBQWtCLENBQ3pCLElBQWdCLEVBQ2hCLEtBQVUsRUFDVixlQUFtRDtRQUVuRCxNQUFNLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFFakUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLFVBQVUsTUFBTSxDQUNuQixLQUFzQixFQUN0QixNQUFvQixFQUNwQixNQUFvQixFQUNwQixJQUFnQixFQUNoQixTQUEwQixFQUMxQixRQUF3QixFQUN4QixlQUFzQztRQUV0QyxRQUFRLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDbkIsS0FBSyxNQUFNO2dCQUNULE1BQU0sS0FBSyxHQUFHLE1BQU0sTUFBTSxFQUFFLENBQUM7Z0JBQzdCLE9BQU87b0JBQ0wsR0FBRyxLQUFLO29CQUNSLEtBQUs7aUJBQ04sQ0FBQztZQUVKLEtBQUssZUFBZSxDQUFDLENBQUM7Z0JBQ3BCLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzdELE1BQU0sS0FBSyxHQUNULFVBQVUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPO29CQUMvQixDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDckIsSUFBSSxDQUFDLEVBQUUsS0FBSyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMxRDtvQkFDSCxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztnQkFDbEIsMkRBQTJEO2dCQUMzRCxJQUFJLEtBQUssS0FBSyxLQUFLLENBQUMsS0FBSyxFQUFFO29CQUN6QixrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztpQkFDeEQ7Z0JBQ0QscURBQXFEO2dCQUNyRCxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQixPQUFPO29CQUNMLEdBQUcsS0FBSztvQkFDUixZQUFZLEVBQUUsTUFBTSxDQUFDLEVBQUU7b0JBQ3ZCLEtBQUs7b0JBQ0wsR0FBRyxFQUFFO3dCQUNILEdBQUcsS0FBSyxDQUFDLEdBQUc7d0JBQ1osTUFBTSxFQUFFLEVBQUU7cUJBQ1g7b0JBQ0QsUUFBUSxFQUFFO3dCQUNSLEdBQUcsS0FBSyxDQUFDLFFBQVE7d0JBQ2pCLE1BQU0sRUFBRSxFQUFFO3FCQUNYO2lCQUNGLENBQUM7YUFDSDtZQUVELEtBQUssWUFBWSxDQUFDLENBQUM7Z0JBQ2pCLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzlELGtCQUFrQixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDbkUsT0FBTyxRQUFRLENBQUM7YUFDakI7WUFFRCxLQUFLLG1CQUFtQjtnQkFDdEIsT0FBTztvQkFDTCxHQUFHLEtBQUs7b0JBQ1IsY0FBYyxFQUFFLE1BQU0sQ0FBQyxLQUFLO2lCQUM3QixDQUFDO1lBRUosS0FBSyx1QkFBdUI7Z0JBQzFCLE9BQU87b0JBQ0wsR0FBRyxLQUFLO29CQUNSLFFBQVEsRUFBRTt3QkFDUixHQUFHLEtBQUssQ0FBQyxRQUFRO3dCQUNqQixVQUFVLEVBQUUsTUFBTSxDQUFDLElBQUk7cUJBQ3hCO2lCQUNGLENBQUM7WUFFSixLQUFLLHdCQUF3QjtnQkFDM0IsT0FBTztvQkFDTCxHQUFHLEtBQUs7b0JBQ1IsUUFBUSxFQUFFO3dCQUNSLEdBQUcsS0FBSyxDQUFDLFFBQVE7d0JBQ2pCLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSztxQkFDckI7aUJBQ0YsQ0FBQztZQUVKLEtBQUssd0JBQXdCO2dCQUMzQixPQUFPO29CQUNMLEdBQUcsS0FBSztvQkFDUixHQUFHLEVBQUU7d0JBQ0gsR0FBRyxLQUFLLENBQUMsR0FBRzt3QkFDWixNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUs7cUJBQ3JCO2lCQUNGLENBQUM7WUFFSixLQUFLLFlBQVksQ0FBQyxDQUFDO2dCQUNqQixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxlQUFlLEVBQUU7b0JBQzNDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ25DLElBQUksQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDaEQsQ0FBQztvQkFDRixrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztvQkFDdkQsT0FBTzt3QkFDTCxHQUFHLEtBQUs7d0JBQ1IsS0FBSyxFQUFFLEtBQUs7cUJBQ2IsQ0FBQztpQkFDSDtxQkFBTTtvQkFDTCxrRUFBa0U7b0JBQ2xFLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxTQUFTLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO29CQUVoRSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNuQyxJQUFJLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUN4RCxDQUFDO29CQUVGLGtCQUFrQixDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ3RDLHNEQUFzRDtvQkFDdEQsZUFBZSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUN4QyxPQUFPO3dCQUNMLEdBQUcsS0FBSzt3QkFDUixLQUFLLEVBQUUsS0FBSzt3QkFDWixZQUFZLEVBQUUsbUJBQW1CLENBQUMsRUFBRTt3QkFDcEMsZUFBZSxFQUFFLElBQUk7cUJBQ3RCLENBQUM7aUJBQ0g7YUFDRjtZQUVELEtBQUssWUFBWSxDQUFDLENBQUM7Z0JBQ2pCLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDbkQsa0JBQWtCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUNoRSxPQUFPLFFBQVEsQ0FBQzthQUNqQjtZQUVELEtBQUssZUFBZSxDQUFDLENBQUM7Z0JBQ3BCLE1BQU0sT0FBTyxHQUFHLE1BQU0sU0FBUyxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDcEQsT0FBTztvQkFDTCxHQUFHLEtBQUs7b0JBQ1IsS0FBSyxFQUFFLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7b0JBQzNELGtCQUFrQixFQUFFO3dCQUNsQixFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUU7d0JBQ2QsVUFBVSxFQUFFLElBQUk7d0JBQ2hCLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztxQkFDaEM7b0JBQ0QsWUFBWSxFQUFFLE9BQU8sQ0FBQyxFQUFFO2lCQUN6QixDQUFDO2FBQ0g7WUFFRCxLQUFLLGdCQUFnQjtnQkFDbkIsTUFBTSxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM1QixPQUFPLEtBQUssQ0FBQztZQUVmLEtBQUssaUJBQWlCLENBQUMsQ0FBQztnQkFDdEIsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEdBQUcsZUFBZSxDQUNyRCxLQUFLLEVBQ0wsTUFBTSxDQUFDLG9CQUFvQixFQUMzQixNQUFNLENBQUMsZUFBZSxDQUN2QixDQUFDO2dCQUNGLElBQUksVUFBVSxFQUFFO29CQUNkLGtCQUFrQixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztpQkFDakU7Z0JBQ0QsT0FBTyxRQUFRLENBQUM7YUFDakI7WUFFRCxLQUFLLG1CQUFtQjtnQkFDdEIsT0FBTztvQkFDTCxHQUFHLEtBQUs7b0JBQ1IsR0FBRyxFQUFFO3dCQUNILEdBQUcsS0FBSyxDQUFDLEdBQUc7d0JBQ1osV0FBVyxFQUNULE1BQU0sQ0FBQyxVQUFVLEtBQUssU0FBUzs0QkFDN0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJOzRCQUNiLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVc7d0JBQzNCLFVBQVUsRUFDUixNQUFNLENBQUMsVUFBVSxLQUFLLFFBQVE7NEJBQzVCLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSTs0QkFDYixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVO3dCQUMxQixVQUFVLEVBQ1IsTUFBTSxDQUFDLFVBQVUsS0FBSyxRQUFROzRCQUM1QixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUk7NEJBQ2IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVTtxQkFDM0I7aUJBQ0YsQ0FBQztZQUVKLEtBQUssZ0JBQWdCO2dCQUNuQixPQUFPO29CQUNMLEdBQUcsS0FBSztvQkFDUixrQkFBa0IsRUFBRSxNQUFNLENBQUMsT0FBTztpQkFDbkMsQ0FBQztZQUVKLEtBQUssaUJBQWlCO2dCQUNwQixPQUFPO29CQUNMLEdBQUcsS0FBSztvQkFDUixtQkFBbUIsRUFBRSxNQUFNLENBQUMsT0FBTztpQkFDcEMsQ0FBQztZQUVKLEtBQUsscUJBQXFCO2dCQUN4QixNQUFNLHNCQUFzQixHQUFHLGlCQUFpQixDQUM5QyxLQUFLLENBQUMsS0FBSyxFQUNYLEtBQUssQ0FBQyxlQUFlLENBQ3RCLENBQUM7Z0JBRUYsNkNBQTZDO2dCQUM3QyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDaEMsT0FBTztvQkFDTCxHQUFHLEtBQUs7b0JBQ1IsZUFBZSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDL0IsWUFBWSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDNUIsS0FBSyxFQUFFLENBQUMsR0FBRyxzQkFBc0IsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO2lCQUNoRCxDQUFDO1NBQ0w7SUFDSCxDQUFDO0lBRUQsZUFBZTtJQUNmLGVBQWU7SUFDZixlQUFlO0lBRWYsU0FBZ0Isa0JBQWtCLENBQUMsVUFBMEI7UUFDM0QsUUFBUSxVQUFVLEVBQUU7WUFDbEIsS0FBSyxTQUFTO2dCQUNaLE9BQU8sU0FBUyxDQUFDO1lBQ25CLEtBQUssUUFBUTtnQkFDWCxPQUFPLFFBQVEsQ0FBQztZQUNsQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxRQUFRLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBVGUsMkJBQWtCLHFCQVNqQyxDQUFBO0lBRUQsU0FBZ0Isd0JBQXdCLENBQUMsVUFBMEI7UUFDakUsUUFBUSxVQUFVLEVBQUU7WUFDbEIsS0FBSyxTQUFTO2dCQUNaLE9BQU8scUJBQXFCLENBQUM7WUFDL0IsS0FBSyxRQUFRO2dCQUNYLE9BQU8sbUNBQW1DLENBQUM7WUFDN0MsS0FBSyxRQUFRO2dCQUNYLE9BQU8scUJBQXFCLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBVGUsaUNBQXdCLDJCQVN2QyxDQUFBO0lBRUQsU0FBZ0IsWUFBWSxDQUMxQixJQUFxQjtRQUVyQixPQUFPLElBQUksRUFBRSxVQUFVLEtBQUssUUFBUSxDQUFDO0lBQ3ZDLENBQUM7SUFKZSxxQkFBWSxlQUkzQixDQUFBO0FBQ0gsQ0FBQyxFQS93QmdCLFFBQVEsS0FBUixRQUFRLFFBK3dCeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRnVzZSwgeyBGdXNlUmVzdWx0LCBJRnVzZU9wdGlvbnMgfSBmcm9tICdmdXNlLmpzJztcbmltcG9ydCB7IGRlYm91bmNlLCBkZWZhdWx0c0RlZXAsIHNvcnRCeSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1xuICBjb25uZWN0YWJsZSxcbiAgQ29ubmVjdGFibGUsXG4gIGZyb20sXG4gIG1hcCxcbiAgbWVyZ2VTY2FuLFxuICBPYnNlcnZhYmxlLFxuICBSZXBsYXlTdWJqZWN0LFxuICBzdGFydFdpdGgsXG4gIFN1YmplY3QsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGVlcFBhcnRpYWwgfSBmcm9tICd1dGlsaXR5LXR5cGVzJztcbmltcG9ydCB7IFJpdlNlbGVjdCB9IGZyb20gJy4uLy4uL2lucHV0L3NlbGVjdC9zdGF0ZSc7XG5pbXBvcnQgeyBIaWdobGlnaHRDb21wb25lbnQgfSBmcm9tICcuLi8uLi92aXN1YWxpemF0aW9uL2hpZ2hsaWdodC9oaWdobGlnaHQuY29tcG9uZW50JztcblxuZXhwb3J0IG5hbWVzcGFjZSBSaXZWaWV3cyB7XG4gIGV4cG9ydCBjb25zdCBWaWV3UGVybWlzc2lvbnMgPSBbJ3ByaXZhdGUnLCAncHVibGljJywgJ3NoYXJlZCddIGFzIGNvbnN0O1xuICBleHBvcnQgdHlwZSBWaWV3UGVybWlzc2lvbiA9ICh0eXBlb2YgVmlld1Blcm1pc3Npb25zKVtudW1iZXJdO1xuXG4gIGV4cG9ydCBjb25zdCBNZW51Q29udGV4dHMgPSBbJ3RhYicsICdhbGwtdmlld3MnLCAnb3ZlcmZsb3cnXSBhcyBjb25zdDtcbiAgZXhwb3J0IHR5cGUgTWVudUNvbnRleHQgPSAodHlwZW9mIE1lbnVDb250ZXh0cylbbnVtYmVyXTtcblxuICBleHBvcnQgdHlwZSBVc2VyID0gUml2U2VsZWN0LkJhc2VPcHRpb247XG5cbiAgZXhwb3J0IHR5cGUgVmlldzxVIGV4dGVuZHMgVXNlcj4gPSB7XG4gICAgaWQ6IHN0cmluZyB8IG51bWJlcjtcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gIH0gJiAoXG4gICAgfCB7XG4gICAgICAgIHBlcm1pc3Npb246ICdwcml2YXRlJyB8ICdwdWJsaWMnO1xuICAgICAgfVxuICAgIHwge1xuICAgICAgICBwZXJtaXNzaW9uOiAnc2hhcmVkJztcbiAgICAgICAgc2hhcmVkVXNlcnM6IFVbXTtcbiAgICAgIH1cbiAgKTtcblxuICBleHBvcnQgdHlwZSBGdWxsVmlldzxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0gViAmIHtcbiAgICBhY3RpdmU6IGJvb2xlYW47XG4gICAgc3lzdGVtOiBib29sZWFuO1xuICAgIHRpdGxlSGlnaGxpZ2h0SW5kaWNlcz86IEhpZ2hsaWdodENvbXBvbmVudC5IaWdobGlnaHRJbmRpY2VzW107XG4gICAgdGVtcG9yYXJ5OiBib29sZWFuO1xuICB9O1xuXG4gIC8vLy8vLy8vLy8vXG4gIC8vIFN0YXRlIC8vXG4gIC8vLy8vLy8vLy8vXG5cbiAgZXhwb3J0IHR5cGUgQ29yZVN0YXRlPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4gPSB7XG4gICAgdmlld3M6IFZbXTtcbiAgICBhY3RpdmVWaWV3SWQ6IFZbJ2lkJ10gfCBudWxsO1xuICAgIHRlbXBvcmFyeVZpZXdJZDogVlsnaWQnXSB8IG51bGw7XG4gICAgY29udGFpbmVyV2lkdGg6IG51bWJlcjtcbiAgICBlZGl0aW5nVmlld0NvbnRleHQ6IHtcbiAgICAgIGlkOiBWWydpZCddO1xuICAgICAgYXV0b1JlbmFtZTogYm9vbGVhbjtcbiAgICAgIG1lbnVDb250ZXh0OiBNZW51Q29udGV4dDtcbiAgICB9IHwgbnVsbDtcbiAgICBkZWxldGluZ1ZpZXdDb250ZXh0OiB7IGlkOiBWWydpZCddOyBtZW51Q29udGV4dDogTWVudUNvbnRleHQgfSB8IG51bGw7XG4gICAgb3ZlcmZsb3c6IHtcbiAgICAgIHNlYXJjaDogc3RyaW5nO1xuICAgICAgcGlja2VyT3BlbjogYm9vbGVhbjtcbiAgICB9O1xuICAgIGFsbDoge1xuICAgICAgc2VhcmNoOiBzdHJpbmc7XG4gICAgICBwcml2YXRlT3BlbjogYm9vbGVhbjtcbiAgICAgIHNoYXJlZE9wZW46IGJvb2xlYW47XG4gICAgICBwdWJsaWNPcGVuOiBib29sZWFuO1xuICAgIH07XG4gICAgdXNlclNvdXJjZTogVXNlclNvdXJjZTxVPjtcbiAgICBoYXNTeXN0ZW1WaWV3OiBib29sZWFuO1xuICB9O1xuXG4gIGV4cG9ydCB0eXBlIEZ1bGxTdGF0ZTxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0gQ29yZVN0YXRlPFUsIFY+ICYge1xuICAgIGFsbFZpZXdzOiBGdWxsVmlldzxVLCBWPltdO1xuICAgIGRpc3BsYXllZFZpZXdzOiBGdWxsVmlldzxVLCBWPltdO1xuICAgIGVuYWJsZWRWaWV3czogRnVsbFZpZXc8VSwgVj5bXTtcbiAgICBhbGxFbmFibGVkVmlld3M6IEZ1bGxWaWV3PFUsIFY+W107XG4gICAgYWxsOiB7XG4gICAgICBwcml2YXRlVmlld3M6IEZ1bGxWaWV3PFUsIFY+W107XG4gICAgICBzaGFyZWRWaWV3czogRnVsbFZpZXc8VSwgVj5bXTtcbiAgICAgIHB1YmxpY1ZpZXdzOiBGdWxsVmlldzxVLCBWPltdO1xuICAgIH07XG4gIH07XG5cbiAgLy8vLy8vLy8vLy8vL1xuICAvLyBBY3Rpb25zIC8vXG4gIC8vLy8vLy8vLy8vLy9cblxuICBleHBvcnQgdHlwZSBBY3Rpb248VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PiA9XG4gICAgfCB7IHR5cGU6ICdsb2FkJyB9XG4gICAgfCB7XG4gICAgICAgIHR5cGU6ICdzZXRBY3RpdmVWaWV3JztcbiAgICAgICAgaWQ6IFZbJ2lkJ107XG4gICAgICAgIHNvdXJjZT86ICd0YWInIHwgJ21lbnUnIHwgJ292ZXJmbG93JztcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgdHlwZTogJ3NldEVuYWJsZWQnO1xuICAgICAgICBpZDogVlsnaWQnXTtcbiAgICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgc291cmNlPzogJ21lbnUnIHwgJ2V5ZUljb24nO1xuICAgICAgfVxuICAgIHwgeyB0eXBlOiAnc2V0Q29udGFpbmVyV2lkdGgnOyB3aWR0aDogbnVtYmVyIH1cbiAgICB8IHsgdHlwZTogJ3NldE92ZXJmbG93UGlja2VyT3Blbic7IG9wZW46IGJvb2xlYW4gfVxuICAgIHwgeyB0eXBlOiAnc2V0T3ZlcmZsb3dTZWFyY2hRdWVyeSc7IHF1ZXJ5OiBzdHJpbmcgfVxuICAgIHwgeyB0eXBlOiAnc2V0QWxsVmlld3NTZWFyY2hRdWVyeSc7IHF1ZXJ5OiBzdHJpbmcgfVxuICAgIHwgeyB0eXBlOiAndXBkYXRlVmlldyc7IHZpZXc6IFYgfVxuICAgIHwgeyB0eXBlOiAnZGVsZXRlVmlldyc7IHZpZXc6IFYgfVxuICAgIHwgeyB0eXBlOiAnZHVwbGljYXRlVmlldyc7IHZpZXc6IFY7IG1lbnVDb250ZXh0OiBNZW51Q29udGV4dCB9XG4gICAgfCB7IHR5cGU6ICdjb3B5TGlua1RvVmlldyc7IHZpZXc6IFYgfVxuICAgIHwgeyB0eXBlOiAnc2V0RWRpdGluZ1ZpZXcnOyBjb250ZXh0OiBDb3JlU3RhdGU8VSwgVj5bJ2VkaXRpbmdWaWV3Q29udGV4dCddIH1cbiAgICB8IHtcbiAgICAgICAgdHlwZTogJ3NldERlbGV0aW5nVmlldyc7XG4gICAgICAgIGNvbnRleHQ6IENvcmVTdGF0ZTxVLCBWPlsnZGVsZXRpbmdWaWV3Q29udGV4dCddO1xuICAgICAgfVxuICAgIHwge1xuICAgICAgICB0eXBlOiAndmlld09yZGVyQ2hhbmdlJztcbiAgICAgICAgcHJldmlvdXNFbmFibGVkSW5kZXg6IG51bWJlcjtcbiAgICAgICAgbmV3RW5hYmxlZEluZGV4OiBudW1iZXI7XG4gICAgICAgIHNvdXJjZT86ICd0YWJEcmFnJyB8ICdvdmVyZmxvd0RyYWcnO1xuICAgICAgICB2aWV3VGl0bGU/OiBWWyd0aXRsZSddO1xuICAgICAgfVxuICAgIHwgeyB0eXBlOiAnc2V0QWxsVmlld3NUb2dnbGUnOyBwZXJtaXNzaW9uOiBWaWV3UGVybWlzc2lvbjsgb3BlbjogYm9vbGVhbiB9XG4gICAgfCB7IHR5cGU6ICdjcmVhdGVUZW1wb3JhcnlWaWV3JzsgdmlldzogViB9O1xuXG4gIC8vLy8vLy8vLy8vL1xuICAvLyBTb3VyY2UgLy9cbiAgLy8vLy8vLy8vLy8vXG5cbiAgZXhwb3J0IHR5cGUgU291cmNlPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4gPSAoKSA9PlxuICAgIHwgVltdXG4gICAgfCBQcm9taXNlPFZbXT47XG4gIGV4cG9ydCB0eXBlIFNhdmU8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PiA9IChcbiAgICB2aWV3czogVltdLFxuICApID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICBleHBvcnQgdHlwZSBEdXBsaWNhdGU8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PiA9IChcbiAgICB2aWV3VG9EdXBsaWNhdGU6IFYsXG4gICkgPT4gViB8IFByb21pc2U8Vj47XG4gIGV4cG9ydCB0eXBlIFVzZXJTb3VyY2U8VSBleHRlbmRzIFVzZXI+ID0gKCkgPT4gVVtdIHwgUHJvbWlzZTxVW10+O1xuICBleHBvcnQgdHlwZSBDb3B5TGluazxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0gKFxuICAgIHZpZXc6IFYsXG4gICkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD47XG4gIGV4cG9ydCB0eXBlIFNldEFjdGl2ZVZpZXdJZDxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0gKFxuICAgIGlkOiBWWydpZCddLFxuICApID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuXG4gIC8vLy8vLy8vLy8vLy9cbiAgLy8gTWFuYWdlciAvL1xuICAvLy8vLy8vLy8vLy8vXG5cbiAgZXhwb3J0IHR5cGUgTWFuYWdlcjxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0ge1xuICAgIGFjdGlvbnM6IFN1YmplY3Q8QWN0aW9uPFUsIFY+PjtcbiAgICBzdGF0ZTogQ29ubmVjdGFibGU8RnVsbFN0YXRlPFUsIFY+PjtcbiAgfTtcblxuICBleHBvcnQgdHlwZSBNYW5hZ2VyT3B0aW9uczxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0ge1xuICAgIGluaXRpYWxTdGF0ZT86IERlZXBQYXJ0aWFsPENvcmVTdGF0ZTxVLCBWPj47XG4gICAgZnVzZU9wdGlvbnM/OiBJRnVzZU9wdGlvbnM8Vj47XG4gIH07XG5cbiAgZXhwb3J0IHR5cGUgQ3JlYXRlTWFuYWdlcklucHV0PFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4gPSB7XG4gICAgc291cmNlOiBTb3VyY2U8VSwgVj47XG4gICAgc2F2ZTogU2F2ZTxVLCBWPjtcbiAgICBkdXBsaWNhdGU6IER1cGxpY2F0ZTxVLCBWPjtcbiAgICB1c2VyU291cmNlOiBVc2VyU291cmNlPFU+O1xuICAgIGNvcHlMaW5rOiBDb3B5TGluazxVLCBWPjtcbiAgICBzZXRBY3RpdmVWaWV3SWQ6IFNldEFjdGl2ZVZpZXdJZDxVLCBWPjtcbiAgICBvcHRpb25zPzogTWFuYWdlck9wdGlvbnM8VSwgVj47XG4gIH07XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1hbmFnZXI8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+Pih7XG4gICAgc291cmNlLFxuICAgIHNhdmUsXG4gICAgZHVwbGljYXRlLFxuICAgIHVzZXJTb3VyY2UsXG4gICAgY29weUxpbmssXG4gICAgb3B0aW9ucyxcbiAgICBzZXRBY3RpdmVWaWV3SWQsXG4gIH06IENyZWF0ZU1hbmFnZXJJbnB1dDxVLCBWPik6IE1hbmFnZXI8VSwgVj4ge1xuICAgIGNvbnN0IGRlZmF1bHRTdGF0ZTogQ29yZVN0YXRlPFUsIFY+ID0ge1xuICAgICAgdmlld3M6IFtdLFxuICAgICAgYWN0aXZlVmlld0lkOiBudWxsLFxuICAgICAgdGVtcG9yYXJ5Vmlld0lkOiBudWxsLFxuICAgICAgY29udGFpbmVyV2lkdGg6IDAsXG4gICAgICBlZGl0aW5nVmlld0NvbnRleHQ6IG51bGwsXG4gICAgICBkZWxldGluZ1ZpZXdDb250ZXh0OiBudWxsLFxuICAgICAgb3ZlcmZsb3c6IHtcbiAgICAgICAgc2VhcmNoOiAnJyxcbiAgICAgICAgcGlja2VyT3BlbjogZmFsc2UsXG4gICAgICB9LFxuICAgICAgYWxsOiB7XG4gICAgICAgIHNlYXJjaDogJycsXG4gICAgICAgIHByaXZhdGVPcGVuOiB0cnVlLFxuICAgICAgICBzaGFyZWRPcGVuOiB0cnVlLFxuICAgICAgICBwdWJsaWNPcGVuOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIHVzZXJTb3VyY2UsXG4gICAgICBoYXNTeXN0ZW1WaWV3OiB0cnVlLFxuICAgIH07XG5cbiAgICBjb25zdCBkZWZhdWx0ZWRJbml0aWFsU3RhdGU6IENvcmVTdGF0ZTxVLCBWPiA9IGRlZmF1bHRzRGVlcChcbiAgICAgIHt9LFxuICAgICAgb3B0aW9ucz8uaW5pdGlhbFN0YXRlLFxuICAgICAgZGVmYXVsdFN0YXRlLFxuICAgICk7XG5cbiAgICBjb25zdCBhY3Rpb25zOiBTdWJqZWN0PEFjdGlvbjxVLCBWPj4gPSBuZXcgU3ViamVjdCgpO1xuICAgIGNvbnN0IGNvcmVTdGF0ZTogT2JzZXJ2YWJsZTxDb3JlU3RhdGU8VSwgVj4+ID0gYWN0aW9ucy5waXBlKFxuICAgICAgbWVyZ2VTY2FuKFxuICAgICAgICAoc3RhdGUsIGFjdGlvbikgPT5cbiAgICAgICAgICBmcm9tKFxuICAgICAgICAgICAgcmVkdWNlKFxuICAgICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgICAgIGRlYm91bmNlKHNhdmUsIDIwMCksXG4gICAgICAgICAgICAgIGR1cGxpY2F0ZSxcbiAgICAgICAgICAgICAgY29weUxpbmssXG4gICAgICAgICAgICAgIHNldEFjdGl2ZVZpZXdJZCxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgZGVmYXVsdGVkSW5pdGlhbFN0YXRlLFxuICAgICAgICAxLFxuICAgICAgKSxcbiAgICAgIHN0YXJ0V2l0aChkZWZhdWx0ZWRJbml0aWFsU3RhdGUpLFxuICAgICk7XG5cbiAgICBjb25zdCBzdGF0ZTogQ29ubmVjdGFibGU8RnVsbFN0YXRlPFUsIFY+PiA9IGNvbm5lY3RhYmxlKFxuICAgICAgY29yZVN0YXRlLnBpcGUoXG4gICAgICAgIG1hcChzID0+IHtcbiAgICAgICAgICBjb25zdCBlbmFibGVkTm9ybWFsVmlld3M6IFZbXSA9IGdldEVuYWJsZWRWaWV3cyhzLnZpZXdzKTtcbiAgICAgICAgICBjb25zdCBhY3RpdmVWaWV3OiBWIHwgdW5kZWZpbmVkID0gZW5hYmxlZE5vcm1hbFZpZXdzLmZpbmQoXG4gICAgICAgICAgICB2aWV3ID0+IHZpZXcuaWQgPT09IHMuYWN0aXZlVmlld0lkLFxuICAgICAgICAgICk7XG4gICAgICAgICAgLy8gSWYgZm9yIHNvbWUgcmVhc29uIHRoZSBhY3RpdmUgdmlldyBpcyBub3QgY3VycmVudGx5IGVuYWJsZWQsIHdlJ2xsXG4gICAgICAgICAgLy8gZGVmYXVsdCB0byBtYWtpbmcgdGhlIGZpcnN0IGVuYWJsZWQgdmlldyBhY3RpdmUgaW5zdGVhZC5cbiAgICAgICAgICBjb25zdCBhY3RpdmVWaWV3SWQ6IFZbJ2lkJ10gfCBudWxsID0gYWN0aXZlVmlld1xuICAgICAgICAgICAgPyBhY3RpdmVWaWV3LmlkXG4gICAgICAgICAgICA6IGVuYWJsZWROb3JtYWxWaWV3cy5sZW5ndGggPiAwXG4gICAgICAgICAgICA/IGVuYWJsZWROb3JtYWxWaWV3c1swXS5pZFxuICAgICAgICAgICAgOiBudWxsO1xuXG4gICAgICAgICAgY29uc3QgYWxsVmlld3M6IEZ1bGxWaWV3PFUsIFY+W10gPSBzLnZpZXdzLm1hcCgodmlldywgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNTeXN0ZW1WaWV3OiBib29sZWFuID0gcy5oYXNTeXN0ZW1WaWV3ICYmIGkgPT09IDA7XG4gICAgICAgICAgICBjb25zdCBpc1RlbXBvcmFyeVZpZXc6IGJvb2xlYW4gPSBzLnRlbXBvcmFyeVZpZXdJZCA9PT0gdmlldy5pZDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLnZpZXcsXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHZpZXcuZW5hYmxlZCB8fCBpc1N5c3RlbVZpZXcgfHwgaXNUZW1wb3JhcnlWaWV3LFxuICAgICAgICAgICAgICBhY3RpdmU6IGFjdGl2ZVZpZXdJZCA9PT0gdmlldy5pZCxcbiAgICAgICAgICAgICAgc3lzdGVtOiBpc1N5c3RlbVZpZXcsXG4gICAgICAgICAgICAgIHRlbXBvcmFyeTogaXNUZW1wb3JhcnlWaWV3LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNvbnN0IGFsbEVuYWJsZWRWaWV3cyA9IGdldEVuYWJsZWRWaWV3cyhhbGxWaWV3cyk7XG5cbiAgICAgICAgICBjb25zdCBkaXNwbGF5ZWRWaWV3cyA9IGNhbGN1bGF0ZURpc3BsYXllZFZpZXdzKFxuICAgICAgICAgICAgYWxsRW5hYmxlZFZpZXdzLFxuICAgICAgICAgICAgY2FsY3VsYXRlT3ZlcmZsb3dWaWV3SW5kZXgocyksXG4gICAgICAgICAgICBhY3RpdmVWaWV3SWQsXG4gICAgICAgICAgICBzLnRlbXBvcmFyeVZpZXdJZCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3QgZW5hYmxlZFZpZXdzID0gcy5vdmVyZmxvdy5zZWFyY2hcbiAgICAgICAgICAgID8gc2VhcmNoVmlld3MoXG4gICAgICAgICAgICAgICAgYWxsRW5hYmxlZFZpZXdzLFxuICAgICAgICAgICAgICAgIHMub3ZlcmZsb3cuc2VhcmNoLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM/LmZ1c2VPcHRpb25zLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IGFsbEVuYWJsZWRWaWV3cztcblxuICAgICAgICAgIGNvbnN0IGFsbFBlcm1hbmVudFZpZXdzID0gYWxsVmlld3MuZmlsdGVyKHZpZXcgPT4gIXZpZXcudGVtcG9yYXJ5KTtcbiAgICAgICAgICBjb25zdCBhbGxWaWV3c0ZpbHRlcmVkID0gcy5hbGwuc2VhcmNoXG4gICAgICAgICAgICA/IHNlYXJjaFZpZXdzKGFsbFBlcm1hbmVudFZpZXdzLCBzLmFsbC5zZWFyY2gsIG9wdGlvbnM/LmZ1c2VPcHRpb25zKVxuICAgICAgICAgICAgOiBhbGxQZXJtYW5lbnRWaWV3cztcblxuICAgICAgICAgIGNvbnN0IHNlYXJjaGluZ0FsbFZpZXdzID0gISFzLmFsbC5zZWFyY2g7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ucyxcbiAgICAgICAgICAgIGFsbFZpZXdzLFxuICAgICAgICAgICAgZGlzcGxheWVkVmlld3MsXG4gICAgICAgICAgICBlbmFibGVkVmlld3MsXG4gICAgICAgICAgICBhbGxFbmFibGVkVmlld3MsXG4gICAgICAgICAgICBhbGw6IHtcbiAgICAgICAgICAgICAgLi4ucy5hbGwsXG4gICAgICAgICAgICAgIHByaXZhdGVPcGVuOiBzZWFyY2hpbmdBbGxWaWV3cyB8fCBzLmFsbC5wcml2YXRlT3BlbixcbiAgICAgICAgICAgICAgcHJpdmF0ZVZpZXdzOiB2aWV3c0J5UGVybWlzc2lvbihhbGxWaWV3c0ZpbHRlcmVkLCAncHJpdmF0ZScpLFxuICAgICAgICAgICAgICBzaGFyZWRPcGVuOiBzZWFyY2hpbmdBbGxWaWV3cyB8fCBzLmFsbC5zaGFyZWRPcGVuLFxuICAgICAgICAgICAgICBzaGFyZWRWaWV3czogdmlld3NCeVBlcm1pc3Npb24oYWxsVmlld3NGaWx0ZXJlZCwgJ3NoYXJlZCcpLFxuICAgICAgICAgICAgICBwdWJsaWNPcGVuOiBzZWFyY2hpbmdBbGxWaWV3cyB8fCBzLmFsbC5wdWJsaWNPcGVuLFxuICAgICAgICAgICAgICBwdWJsaWNWaWV3czogdmlld3NCeVBlcm1pc3Npb24oYWxsVmlld3NGaWx0ZXJlZCwgJ3B1YmxpYycpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFjdGl2ZVZpZXdJZDogYWN0aXZlVmlld0lkLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgY29ubmVjdG9yOiAoKSA9PiBuZXcgUmVwbGF5U3ViamVjdCgxKSxcbiAgICAgICAgcmVzZXRPbkRpc2Nvbm5lY3Q6IGZhbHNlLFxuICAgICAgfSxcbiAgICApO1xuICAgIHN0YXRlLmNvbm5lY3QoKTtcblxuICAgIC8vIExvYWQgdGhlIHZpZXdzIGltbWVkaWF0ZWx5XG4gICAgYWN0aW9ucy5uZXh0KHsgdHlwZTogJ2xvYWQnIH0pO1xuXG4gICAgcmV0dXJuIHsgYWN0aW9ucywgc3RhdGUgfTtcbiAgfVxuXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gU3RhdGUgcmVkdWNlciAod2l0aCBoZWxwZXJzKSAvL1xuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgZnVuY3Rpb24gZ2V0RW5hYmxlZFZpZXdzPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4odmlld3M6IFZbXSk6IFZbXTtcbiAgZnVuY3Rpb24gZ2V0RW5hYmxlZFZpZXdzPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4oXG4gICAgdmlld3M6IEZ1bGxWaWV3PFUsIFY+W10sXG4gICk6IEZ1bGxWaWV3PFUsIFY+W10ge1xuICAgIHJldHVybiB2aWV3cy5maWx0ZXIoKHYsIGkpID0+IHYuZW5hYmxlZCB8fCB2LnN5c3RlbSB8fCB2LnRlbXBvcmFyeSk7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNsYXRlcyBhbiBpbmRleCBpbiB0aGUgZW5hYmxlZCB2aWV3cyBsaXN0IHRvIHRoZSBjb3JyZXNwb25kaW5nIGluZGV4XG4gICAqIGluIHRoZSBmdWxsIHZpZXdzIGxpc3QuIFRoaXMgaXMgdXNlZCB0byByZXNvbHZlIFVJIGluZGljZXMgKHdoaWNoIG9ubHlcbiAgICogc2hvdyBlbmFibGVkIHZpZXdzKSB0byBzdGF0ZS52aWV3cyBpbmRpY2VzICh3aGljaCBpbmNsdWRlcyBhbGwgdmlld3MpLlxuICAgKi9cbiAgZnVuY3Rpb24gbWFwRW5hYmxlZEluZGV4VG9WaWV3SW5kZXg8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PihcbiAgICB2aWV3czogVltdLFxuICAgIGVuYWJsZWRJbmRleDogbnVtYmVyLFxuICApOiBudW1iZXIge1xuICAgIGNvbnN0IGVuYWJsZWRWaWV3cyA9IGdldEVuYWJsZWRWaWV3cyh2aWV3cyk7XG5cbiAgICBjb25zdCB0YXJnZXRWaWV3ID0gZW5hYmxlZFZpZXdzW2VuYWJsZWRJbmRleF07XG4gICAgaWYgKCF0YXJnZXRWaWV3KSByZXR1cm4gZW5hYmxlZEluZGV4O1xuXG4gICAgY29uc3Qgdmlld0luZGV4ID0gdmlld3MuZmluZEluZGV4KHZpZXcgPT4gdmlldy5pZCA9PT0gdGFyZ2V0Vmlldy5pZCk7XG4gICAgcmV0dXJuIHZpZXdJbmRleCA9PT0gLTEgPyBlbmFibGVkSW5kZXggOiB2aWV3SW5kZXg7XG4gIH1cblxuICBmdW5jdGlvbiBjYWxjdWxhdGVPdmVyZmxvd1ZpZXdJbmRleDxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHN0YXRlOiBDb3JlU3RhdGU8VSwgVj4sXG4gICk6IG51bWJlciB7XG4gICAgY29uc3QgZW5hYmxlZFZpZXdzID0gZ2V0RW5hYmxlZFZpZXdzKHN0YXRlLnZpZXdzKTtcblxuICAgIC8vIFRhYnMgaGF2ZSBhIG1pbmltdW0gd2lkdGggb2YgOTJweC5cbiAgICBjb25zdCBwb3NzaWJsZVNsb3RDb3VudCA9IE1hdGguZmxvb3Ioc3RhdGUuY29udGFpbmVyV2lkdGggLyA5Mik7XG5cbiAgICAvLyBUaGUgXCJhbGwgdmlld3NcIiBzaWRlYmFyIHRyaWdnZXIgdGFrZXMgdXAgb25lIHNsb3QuXG4gICAgY29uc3QgYXZhaWxhYmxlU2xvdENvdW50ID0gcG9zc2libGVTbG90Q291bnQgLSAxO1xuXG4gICAgLy8gSWYgdGhlcmUgYXJlIHRvbyBtYW55IHRhYnMsIHRoZSBcIk4gbW9yZVwiIHRyaWdnZXIgdGFrZXMgdXAgb25lIHNsb3QgYXMgd2VsbC5cbiAgICAvLyBCdXQgd2Ugd2FudCB0byBhdm9pZCB0aGUgXCIxIG1vcmVcIiBjYXNlLCBzbyB3ZSBvbmx5IHVzZSBhIHNsb3QgZm9yIFwiTiBtb3JlXCIgaWYgTiAhPSAxLlxuICAgIGlmIChhdmFpbGFibGVTbG90Q291bnQgPj0gZW5hYmxlZFZpZXdzLmxlbmd0aCkgcmV0dXJuIGVuYWJsZWRWaWV3cy5sZW5ndGg7XG4gICAgZWxzZSByZXR1cm4gYXZhaWxhYmxlU2xvdENvdW50IC0gMTsgLy8gdGhlIFwiTiBtb3JlXCIgdXNlcyB1cCBhIHNsb3QuXG4gIH1cblxuICBmdW5jdGlvbiBjYWxjdWxhdGVEaXNwbGF5ZWRWaWV3czxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIGZ1bGxWaWV3czogRnVsbFZpZXc8VSwgVj5bXSxcbiAgICBvdmVyZmxvd1ZpZXdJbmRleDogbnVtYmVyLFxuICAgIGFjdGl2ZVZpZXdJZDogQ29yZVN0YXRlPFUsIFY+WydhY3RpdmVWaWV3SWQnXSxcbiAgICB0ZW1wb3JhcnlWaWV3SWQ6IENvcmVTdGF0ZTxVLCBWPlsndGVtcG9yYXJ5Vmlld0lkJ10sXG4gICk6IEZ1bGxWaWV3PFUsIFY+W10ge1xuICAgIGNvbnN0IGRpc3BsYXllZFZpZXdzID0gZnVsbFZpZXdzLnNsaWNlKDAsIG92ZXJmbG93Vmlld0luZGV4KTtcblxuICAgIGNvbnN0IHZpZXdzVG9BbHdheXNEaXNwbGF5OiBGdWxsVmlldzxVLCBWPltdID0gW107XG5cbiAgICAvLyBUaGUgYWN0aXZlIHZpZXcgc2hvdWxkIGFsd2F5cyBiZSBkaXNwbGF5ZWQgaWYgaXQgZXhpc3RzXG4gICAgY29uc3QgYWN0aXZlVmlld0luRGlzcGxheSA9IGRpc3BsYXllZFZpZXdzLnNvbWUoXG4gICAgICB2aWV3ID0+IHZpZXcuaWQgPT09IGFjdGl2ZVZpZXdJZCxcbiAgICApO1xuICAgIGlmIChhY3RpdmVWaWV3SWQgIT09IG51bGwgJiYgIWFjdGl2ZVZpZXdJbkRpc3BsYXkpIHtcbiAgICAgIGNvbnN0IGFjdGl2ZVZpZXcgPSBmdWxsVmlld3MuZmluZCh2aWV3ID0+IHZpZXcuaWQgPT09IGFjdGl2ZVZpZXdJZCk7XG4gICAgICBpZiAoYWN0aXZlVmlldyAmJiBkaXNwbGF5ZWRWaWV3cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHZpZXdzVG9BbHdheXNEaXNwbGF5LnB1c2goYWN0aXZlVmlldyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gV2Ugc2hvdWxkIHRyeSB0byBkaXNwbGF5IHRoZSB0ZW1wb3JhcnkgdmlldyBpZiBpdCBleGlzdHNcbiAgICBjb25zdCB0ZW1wb3JhcnlWaWV3SW5EaXNwbGF5ID0gZGlzcGxheWVkVmlld3Muc29tZShcbiAgICAgIHZpZXcgPT4gdmlldy5pZCA9PT0gdGVtcG9yYXJ5Vmlld0lkLFxuICAgICk7XG4gICAgaWYgKFxuICAgICAgdGVtcG9yYXJ5Vmlld0lkICE9PSBudWxsICYmXG4gICAgICAhdGVtcG9yYXJ5Vmlld0luRGlzcGxheSAmJlxuICAgICAgdGVtcG9yYXJ5Vmlld0lkICE9IGFjdGl2ZVZpZXdJZFxuICAgICkge1xuICAgICAgY29uc3QgdGVtcG9yYXJ5VmlldyA9IGZ1bGxWaWV3cy5maW5kKHZpZXcgPT4gdmlldy5pZCA9PT0gdGVtcG9yYXJ5Vmlld0lkKTtcbiAgICAgIGlmIChcbiAgICAgICAgdGVtcG9yYXJ5VmlldyAmJlxuICAgICAgICBkaXNwbGF5ZWRWaWV3cy5sZW5ndGggPiB2aWV3c1RvQWx3YXlzRGlzcGxheS5sZW5ndGhcbiAgICAgICkge1xuICAgICAgICB2aWV3c1RvQWx3YXlzRGlzcGxheS5wdXNoKHRlbXBvcmFyeVZpZXcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2aWV3c1RvQWx3YXlzRGlzcGxheS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBudW1WaWV3c1RvUmVwbGFjZTogbnVtYmVyID0gdmlld3NUb0Fsd2F5c0Rpc3BsYXkubGVuZ3RoO1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgLi4uZGlzcGxheWVkVmlld3Muc2xpY2UoMCwgLTEgKiBudW1WaWV3c1RvUmVwbGFjZSksXG4gICAgICAgIC4uLnZpZXdzVG9BbHdheXNEaXNwbGF5LFxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlzcGxheWVkVmlld3M7XG4gIH1cblxuICBmdW5jdGlvbiB2aWV3c0J5UGVybWlzc2lvbjxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHZpZXdzOiBGdWxsVmlldzxVLCBWPltdLFxuICAgIHBlcm1pc3Npb246IFZpZXdQZXJtaXNzaW9uLFxuICApOiBGdWxsVmlldzxVLCBWPltdIHtcbiAgICByZXR1cm4gc29ydEJ5KFxuICAgICAgdmlld3MuZmlsdGVyKHZpZXcgPT4gdmlldy5wZXJtaXNzaW9uID09PSBwZXJtaXNzaW9uKSxcbiAgICAgIFt2ID0+ICF2LnN5c3RlbSwgJ3RpdGxlJ10sXG4gICAgKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNlYXJjaFZpZXdzPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4oXG4gICAgdmlld3M6IEZ1bGxWaWV3PFUsIFY+W10sXG4gICAgcXVlcnk6IHN0cmluZyxcbiAgICBvcHRpb25zPzogSUZ1c2VPcHRpb25zPFY+LFxuICApOiBGdWxsVmlldzxVLCBWPltdIHtcbiAgICBjb25zdCBmdXNlID0gbmV3IEZ1c2Uodmlld3MsIHtcbiAgICAgIHRocmVzaG9sZDogMC4yLFxuICAgICAga2V5czogWyd0aXRsZSddLFxuICAgICAgaW5jbHVkZU1hdGNoZXM6IHRydWUsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuXG4gICAgY29uc3QgbWF0Y2hlZE9wdGlvbnM6IEZ1c2VSZXN1bHQ8RnVsbFZpZXc8VSwgVj4+W10gPSBmdXNlLnNlYXJjaChxdWVyeSk7XG5cbiAgICByZXR1cm4gbWF0Y2hlZE9wdGlvbnMubWFwKHJlc3VsdCA9PiAoe1xuICAgICAgLi4ucmVzdWx0Lml0ZW0sXG4gICAgICB0aXRsZUhpZ2hsaWdodEluZGljZXM6IFtcbiAgICAgICAgLi4uKHJlc3VsdC5tYXRjaGVzPy5maW5kKG1hdGNoID0+IG1hdGNoLmtleSA9PT0gJ3RpdGxlJyk/LmluZGljZXMgPz9cbiAgICAgICAgICBbXSksXG4gICAgICBdLFxuICAgIH0pKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldE5leHRCZXN0QWN0aXZlVmlldzxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHN0YXRlOiBDb3JlU3RhdGU8VSwgVj4sXG4gICk6IFZbJ2lkJ10gfCBudWxsIHtcbiAgICBjb25zdCBlbmFibGVkVmlld3MgPSBnZXRFbmFibGVkVmlld3Moc3RhdGUudmlld3MpO1xuICAgIGNvbnN0IGN1cnJlbnRBY3RpdmVWaWV3SW5kZXggPSBlbmFibGVkVmlld3MuZmluZEluZGV4KFxuICAgICAgdmlldyA9PiB2aWV3LmlkID09PSBzdGF0ZS5hY3RpdmVWaWV3SWQsXG4gICAgKTtcblxuICAgIGlmIChlbmFibGVkVmlld3MubGVuZ3RoID09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAoY3VycmVudEFjdGl2ZVZpZXdJbmRleCA9PT0gLTEpIHJldHVybiBlbmFibGVkVmlld3NbMF0uaWQ7XG4gICAgcmV0dXJuIChcbiAgICAgIGVuYWJsZWRWaWV3c1tjdXJyZW50QWN0aXZlVmlld0luZGV4ICsgMV0/LmlkID8/XG4gICAgICBlbmFibGVkVmlld3NbY3VycmVudEFjdGl2ZVZpZXdJbmRleCAtIDFdPy5pZCA/P1xuICAgICAgZW5hYmxlZFZpZXdzWzBdLmlkXG4gICAgKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlbGV0ZVZpZXc8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PihcbiAgICBzdGF0ZTogQ29yZVN0YXRlPFUsIFY+LFxuICAgIGlkOiBWWydpZCddLFxuICApOiBDb3JlU3RhdGU8VSwgVj4ge1xuICAgIGNvbnN0IGFjdGl2ZVZpZXdJZCA9XG4gICAgICBzdGF0ZS5hY3RpdmVWaWV3SWQgPT09IGlkXG4gICAgICAgID8gZ2V0TmV4dEJlc3RBY3RpdmVWaWV3KHN0YXRlKVxuICAgICAgICA6IHN0YXRlLmFjdGl2ZVZpZXdJZDtcbiAgICBjb25zdCB0ZW1wb3JhcnlWaWV3SWQgPVxuICAgICAgc3RhdGUudGVtcG9yYXJ5Vmlld0lkID09PSBpZCA/IG51bGwgOiBzdGF0ZS50ZW1wb3JhcnlWaWV3SWQ7XG4gICAgY29uc3Qgdmlld3MgPSBzdGF0ZS52aWV3cy5maWx0ZXIodmlldyA9PiB2aWV3LmlkICE9PSBpZCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgdmlld3MsXG4gICAgICBhY3RpdmVWaWV3SWQsXG4gICAgICB0ZW1wb3JhcnlWaWV3SWQsXG4gICAgICBkZWxldGluZ1ZpZXdDb250ZXh0OiBudWxsLFxuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBzZXRFbmFibGVkPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4oXG4gICAgc3RhdGU6IENvcmVTdGF0ZTxVLCBWPixcbiAgICBpZDogVlsnaWQnXSxcbiAgICBlbmFibGVkOiBib29sZWFuLFxuICApOiBDb3JlU3RhdGU8VSwgVj4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHZpZXdzOiBzdGF0ZS52aWV3cy5tYXAodmlldyA9PlxuICAgICAgICB2aWV3LmlkID09PSBpZCA/IHsgLi4udmlldywgZW5hYmxlZCB9IDogdmlldyxcbiAgICAgICksXG4gICAgICBhY3RpdmVWaWV3SWQ6XG4gICAgICAgICFlbmFibGVkICYmIHN0YXRlLmFjdGl2ZVZpZXdJZCA9PT0gaWRcbiAgICAgICAgICA/IGdldE5leHRCZXN0QWN0aXZlVmlldyhzdGF0ZSlcbiAgICAgICAgICA6IHN0YXRlLmFjdGl2ZVZpZXdJZCxcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gd2l0aER1cGxpY2F0ZVZpZXc8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PihcbiAgICB2aWV3czogVltdLFxuICAgIGR1cGxpY2F0ZWRWaWV3OiBWLFxuICAgIG5ld1ZpZXc6IFYsXG4gICk6IFZbXSB7XG4gICAgY29uc3Qgc291cmNlSW5kZXggPSB2aWV3cy5maW5kSW5kZXgodmlldyA9PiB2aWV3LmlkID09PSBkdXBsaWNhdGVkVmlldy5pZCk7XG4gICAgaWYgKHNvdXJjZUluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIFtuZXdWaWV3LCAuLi52aWV3c107XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLnZpZXdzLnNsaWNlKDAsIHNvdXJjZUluZGV4ICsgMSksXG4gICAgICAgIG5ld1ZpZXcsXG4gICAgICAgIC4uLnZpZXdzLnNsaWNlKHNvdXJjZUluZGV4ICsgMSksXG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHZpZXdPcmRlckNoYW5nZTxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHN0YXRlOiBDb3JlU3RhdGU8VSwgVj4sXG4gICAgcHJldmlvdXNFbmFibGVkSW5kZXg6IG51bWJlcixcbiAgICBuZXdFbmFibGVkSW5kZXg6IG51bWJlcixcbiAgKTogeyBzdGF0ZTogQ29yZVN0YXRlPFUsIFY+OyBzaG91bGRTYXZlOiBib29sZWFuIH0ge1xuICAgIGlmIChcbiAgICAgIHN0YXRlLmhhc1N5c3RlbVZpZXcgJiZcbiAgICAgIChwcmV2aW91c0VuYWJsZWRJbmRleCA9PT0gMCB8fCBuZXdFbmFibGVkSW5kZXggPT09IDApXG4gICAgKSB7XG4gICAgICByZXR1cm4geyBzdGF0ZSwgc2hvdWxkU2F2ZTogZmFsc2UgfTsgLy8gS2VlcCBzeXN0ZW0gdmlldyAoaW5kZXggMCkgaW4gcGxhY2VcbiAgICB9XG5cbiAgICBjb25zdCBhY3R1YWxQcmV2aW91c0luZGV4ID0gbWFwRW5hYmxlZEluZGV4VG9WaWV3SW5kZXgoXG4gICAgICBzdGF0ZS52aWV3cyxcbiAgICAgIHByZXZpb3VzRW5hYmxlZEluZGV4LFxuICAgICk7XG4gICAgY29uc3QgYWN0dWFsTmV3SW5kZXggPSBtYXBFbmFibGVkSW5kZXhUb1ZpZXdJbmRleChcbiAgICAgIHN0YXRlLnZpZXdzLFxuICAgICAgbmV3RW5hYmxlZEluZGV4LFxuICAgICk7XG5cbiAgICBjb25zdCBpdGVtID0gc3RhdGUudmlld3NbYWN0dWFsUHJldmlvdXNJbmRleF07XG4gICAgY29uc3Qgd2l0aG91dEl0ZW0gPSBzdGF0ZS52aWV3cy5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGFjdHVhbFByZXZpb3VzSW5kZXgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXRlOiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICB2aWV3czogW1xuICAgICAgICAgIC4uLndpdGhvdXRJdGVtLnNsaWNlKDAsIGFjdHVhbE5ld0luZGV4KSxcbiAgICAgICAgICBpdGVtLFxuICAgICAgICAgIC4uLndpdGhvdXRJdGVtLnNsaWNlKGFjdHVhbE5ld0luZGV4KSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICBzaG91bGRTYXZlOiB0cnVlLFxuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBnZXRQZXJtYW5lbnRWaWV3czxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHZpZXdzOiBWW10sXG4gICAgdGVtcG9yYXJ5Vmlld0lkOiBDb3JlU3RhdGU8VSwgVj5bJ3RlbXBvcmFyeVZpZXdJZCddLFxuICApOiBWW10ge1xuICAgIHJldHVybiB2aWV3cy5maWx0ZXIodmlldyA9PiB2aWV3LmlkICE9IHRlbXBvcmFyeVZpZXdJZCk7XG4gIH1cblxuICBmdW5jdGlvbiBzYXZlUGVybWFuZW50Vmlld3M8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PihcbiAgICBzYXZlOiBTYXZlPFUsIFY+LFxuICAgIHZpZXdzOiBWW10sXG4gICAgdGVtcG9yYXJ5Vmlld0lkOiBDb3JlU3RhdGU8VSwgVj5bJ3RlbXBvcmFyeVZpZXdJZCddLFxuICApIHtcbiAgICBjb25zdCBwZXJtYW5lbnRWaWV3cyA9IGdldFBlcm1hbmVudFZpZXdzKHZpZXdzLCB0ZW1wb3JhcnlWaWV3SWQpO1xuXG4gICAgc2F2ZShwZXJtYW5lbnRWaWV3cyk7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiByZWR1Y2U8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PihcbiAgICBzdGF0ZTogQ29yZVN0YXRlPFUsIFY+LFxuICAgIGFjdGlvbjogQWN0aW9uPFUsIFY+LFxuICAgIHNvdXJjZTogU291cmNlPFUsIFY+LFxuICAgIHNhdmU6IFNhdmU8VSwgVj4sXG4gICAgZHVwbGljYXRlOiBEdXBsaWNhdGU8VSwgVj4sXG4gICAgY29weUxpbms6IENvcHlMaW5rPFUsIFY+LFxuICAgIHNldEFjdGl2ZVZpZXdJZDogU2V0QWN0aXZlVmlld0lkPFUsIFY+LFxuICApOiBQcm9taXNlPENvcmVTdGF0ZTxVLCBWPj4ge1xuICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2xvYWQnOlxuICAgICAgICBjb25zdCB2aWV3cyA9IGF3YWl0IHNvdXJjZSgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIHZpZXdzLFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdzZXRBY3RpdmVWaWV3Jzoge1xuICAgICAgICBjb25zdCBhY3RpdmVWaWV3ID0gc3RhdGUudmlld3MuZmluZCh2ID0+IHYuaWQgPT09IGFjdGlvbi5pZCk7XG4gICAgICAgIGNvbnN0IHZpZXdzID1cbiAgICAgICAgICBhY3RpdmVWaWV3ICYmICFhY3RpdmVWaWV3LmVuYWJsZWRcbiAgICAgICAgICAgID8gc3RhdGUudmlld3MubWFwKHZpZXcgPT5cbiAgICAgICAgICAgICAgICB2aWV3LmlkID09PSBhY3Rpb24uaWQgPyB7IC4uLnZpZXcsIGVuYWJsZWQ6IHRydWUgfSA6IHZpZXcsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogc3RhdGUudmlld3M7XG4gICAgICAgIC8vIElmIGVuYWJsaW5nIHRoZSB2aWV3IGNoYW5nZWQgdGhlIHZpZXdzLCB3ZSBuZWVkIHRvIHNhdmUuXG4gICAgICAgIGlmICh2aWV3cyAhPT0gc3RhdGUudmlld3MpIHtcbiAgICAgICAgICBzYXZlUGVybWFuZW50Vmlld3Moc2F2ZSwgdmlld3MsIHN0YXRlLnRlbXBvcmFyeVZpZXdJZCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbm90aWZ5IHRoZSBjYWxsZXIgdGhhdCB0aGUgYWN0aXZlIHZpZXcgaGFzIGNoYW5nZWRcbiAgICAgICAgc2V0QWN0aXZlVmlld0lkKGFjdGlvbi5pZCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgYWN0aXZlVmlld0lkOiBhY3Rpb24uaWQsXG4gICAgICAgICAgdmlld3MsXG4gICAgICAgICAgYWxsOiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5hbGwsXG4gICAgICAgICAgICBzZWFyY2g6ICcnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgb3ZlcmZsb3c6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLm92ZXJmbG93LFxuICAgICAgICAgICAgc2VhcmNoOiAnJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjYXNlICdzZXRFbmFibGVkJzoge1xuICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IHNldEVuYWJsZWQoc3RhdGUsIGFjdGlvbi5pZCwgYWN0aW9uLmVuYWJsZWQpO1xuICAgICAgICBzYXZlUGVybWFuZW50Vmlld3Moc2F2ZSwgbmV3U3RhdGUudmlld3MsIG5ld1N0YXRlLnRlbXBvcmFyeVZpZXdJZCk7XG4gICAgICAgIHJldHVybiBuZXdTdGF0ZTtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnc2V0Q29udGFpbmVyV2lkdGgnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIGNvbnRhaW5lcldpZHRoOiBhY3Rpb24ud2lkdGgsXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ3NldE92ZXJmbG93UGlja2VyT3Blbic6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgb3ZlcmZsb3c6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLm92ZXJmbG93LFxuICAgICAgICAgICAgcGlja2VyT3BlbjogYWN0aW9uLm9wZW4sXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnc2V0T3ZlcmZsb3dTZWFyY2hRdWVyeSc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgb3ZlcmZsb3c6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLm92ZXJmbG93LFxuICAgICAgICAgICAgc2VhcmNoOiBhY3Rpb24ucXVlcnksXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnc2V0QWxsVmlld3NTZWFyY2hRdWVyeSc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgYWxsOiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5hbGwsXG4gICAgICAgICAgICBzZWFyY2g6IGFjdGlvbi5xdWVyeSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICd1cGRhdGVWaWV3Jzoge1xuICAgICAgICBpZiAoYWN0aW9uLnZpZXcuaWQgIT0gc3RhdGUudGVtcG9yYXJ5Vmlld0lkKSB7XG4gICAgICAgICAgY29uc3Qgdmlld3MgPSBzdGF0ZS52aWV3cy5tYXAodmlldyA9PlxuICAgICAgICAgICAgdmlldy5pZCA9PT0gYWN0aW9uLnZpZXcuaWQgPyBhY3Rpb24udmlldyA6IHZpZXcsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBzYXZlUGVybWFuZW50Vmlld3Moc2F2ZSwgdmlld3MsIHN0YXRlLnRlbXBvcmFyeVZpZXdJZCk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgdmlld3M6IHZpZXdzLFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVXBkYXRpbmcgYSB0ZW1wb3JhcnkgdmlldyBzYXZlcyB0aGUgdmlldyBhbmQgbWFrZXMgaXQgcGVybWFuZW50XG4gICAgICAgICAgY29uc3QgdGVtcG9yYXJ5Vmlld1RvU2F2ZSA9IGF3YWl0IGR1cGxpY2F0ZSh7IC4uLmFjdGlvbi52aWV3IH0pO1xuXG4gICAgICAgICAgY29uc3Qgdmlld3MgPSBzdGF0ZS52aWV3cy5tYXAodmlldyA9PlxuICAgICAgICAgICAgdmlldy5pZCA9PT0gYWN0aW9uLnZpZXcuaWQgPyB0ZW1wb3JhcnlWaWV3VG9TYXZlIDogdmlldyxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgc2F2ZVBlcm1hbmVudFZpZXdzKHNhdmUsIHZpZXdzLCBudWxsKTtcbiAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIHZpZXcgd2UganVzdCBzYXZlZCBpcyB0aGUgYWN0aXZlIHZpZXdcbiAgICAgICAgICBzZXRBY3RpdmVWaWV3SWQodGVtcG9yYXJ5Vmlld1RvU2F2ZS5pZCk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgdmlld3M6IHZpZXdzLFxuICAgICAgICAgICAgYWN0aXZlVmlld0lkOiB0ZW1wb3JhcnlWaWV3VG9TYXZlLmlkLFxuICAgICAgICAgICAgdGVtcG9yYXJ5Vmlld0lkOiBudWxsLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY2FzZSAnZGVsZXRlVmlldyc6IHtcbiAgICAgICAgY29uc3QgbmV3U3RhdGUgPSBkZWxldGVWaWV3KHN0YXRlLCBhY3Rpb24udmlldy5pZCk7XG4gICAgICAgIHNhdmVQZXJtYW5lbnRWaWV3cyhzYXZlLCBuZXdTdGF0ZS52aWV3cywgc3RhdGUudGVtcG9yYXJ5Vmlld0lkKTtcbiAgICAgICAgcmV0dXJuIG5ld1N0YXRlO1xuICAgICAgfVxuXG4gICAgICBjYXNlICdkdXBsaWNhdGVWaWV3Jzoge1xuICAgICAgICBjb25zdCBuZXdWaWV3ID0gYXdhaXQgZHVwbGljYXRlKHsgLi4uYWN0aW9uLnZpZXcgfSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgdmlld3M6IHdpdGhEdXBsaWNhdGVWaWV3KHN0YXRlLnZpZXdzLCBhY3Rpb24udmlldywgbmV3VmlldyksXG4gICAgICAgICAgZWRpdGluZ1ZpZXdDb250ZXh0OiB7XG4gICAgICAgICAgICBpZDogbmV3Vmlldy5pZCxcbiAgICAgICAgICAgIGF1dG9SZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZW51Q29udGV4dDogYWN0aW9uLm1lbnVDb250ZXh0LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYWN0aXZlVmlld0lkOiBuZXdWaWV3LmlkLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjYXNlICdjb3B5TGlua1RvVmlldyc6XG4gICAgICAgIGF3YWl0IGNvcHlMaW5rKGFjdGlvbi52aWV3KTtcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuXG4gICAgICBjYXNlICd2aWV3T3JkZXJDaGFuZ2UnOiB7XG4gICAgICAgIGNvbnN0IHsgc3RhdGU6IG5ld1N0YXRlLCBzaG91bGRTYXZlIH0gPSB2aWV3T3JkZXJDaGFuZ2UoXG4gICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgYWN0aW9uLnByZXZpb3VzRW5hYmxlZEluZGV4LFxuICAgICAgICAgIGFjdGlvbi5uZXdFbmFibGVkSW5kZXgsXG4gICAgICAgICk7XG4gICAgICAgIGlmIChzaG91bGRTYXZlKSB7XG4gICAgICAgICAgc2F2ZVBlcm1hbmVudFZpZXdzKHNhdmUsIG5ld1N0YXRlLnZpZXdzLCBzdGF0ZS50ZW1wb3JhcnlWaWV3SWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdTdGF0ZTtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnc2V0QWxsVmlld3NUb2dnbGUnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIGFsbDoge1xuICAgICAgICAgICAgLi4uc3RhdGUuYWxsLFxuICAgICAgICAgICAgcHJpdmF0ZU9wZW46XG4gICAgICAgICAgICAgIGFjdGlvbi5wZXJtaXNzaW9uID09PSAncHJpdmF0ZSdcbiAgICAgICAgICAgICAgICA/IGFjdGlvbi5vcGVuXG4gICAgICAgICAgICAgICAgOiBzdGF0ZS5hbGwucHJpdmF0ZU9wZW4sXG4gICAgICAgICAgICBzaGFyZWRPcGVuOlxuICAgICAgICAgICAgICBhY3Rpb24ucGVybWlzc2lvbiA9PT0gJ3NoYXJlZCdcbiAgICAgICAgICAgICAgICA/IGFjdGlvbi5vcGVuXG4gICAgICAgICAgICAgICAgOiBzdGF0ZS5hbGwuc2hhcmVkT3BlbixcbiAgICAgICAgICAgIHB1YmxpY09wZW46XG4gICAgICAgICAgICAgIGFjdGlvbi5wZXJtaXNzaW9uID09PSAncHVibGljJ1xuICAgICAgICAgICAgICAgID8gYWN0aW9uLm9wZW5cbiAgICAgICAgICAgICAgICA6IHN0YXRlLmFsbC5wdWJsaWNPcGVuLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ3NldEVkaXRpbmdWaWV3JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBlZGl0aW5nVmlld0NvbnRleHQ6IGFjdGlvbi5jb250ZXh0LFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdzZXREZWxldGluZ1ZpZXcnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIGRlbGV0aW5nVmlld0NvbnRleHQ6IGFjdGlvbi5jb250ZXh0LFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdjcmVhdGVUZW1wb3JhcnlWaWV3JzpcbiAgICAgICAgY29uc3QgZXhpc3RpbmdQZXJtYW5lbnRWaWV3cyA9IGdldFBlcm1hbmVudFZpZXdzKFxuICAgICAgICAgIHN0YXRlLnZpZXdzLFxuICAgICAgICAgIHN0YXRlLnRlbXBvcmFyeVZpZXdJZCxcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBTd2FwIHRoZSBhY3RpdmUgdmlldyB0byB0aGUgdGVtcG9yYXJ5IHZpZXdcbiAgICAgICAgc2V0QWN0aXZlVmlld0lkKGFjdGlvbi52aWV3LmlkKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICB0ZW1wb3JhcnlWaWV3SWQ6IGFjdGlvbi52aWV3LmlkLFxuICAgICAgICAgIGFjdGl2ZVZpZXdJZDogYWN0aW9uLnZpZXcuaWQsXG4gICAgICAgICAgdmlld3M6IFsuLi5leGlzdGluZ1Blcm1hbmVudFZpZXdzLCBhY3Rpb24udmlld10sXG4gICAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLy8vLy8vLy8vLy8vLy8vXG4gIC8vIFV0aWxpdGllcyAvL1xuICAvLy8vLy8vLy8vLy8vLy9cblxuICBleHBvcnQgZnVuY3Rpb24gZ2V0UGVybWlzc2lvblRpdGxlKHBlcm1pc3Npb246IFZpZXdQZXJtaXNzaW9uKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHBlcm1pc3Npb24pIHtcbiAgICAgIGNhc2UgJ3ByaXZhdGUnOlxuICAgICAgICByZXR1cm4gJ1ByaXZhdGUnO1xuICAgICAgY2FzZSAnc2hhcmVkJzpcbiAgICAgICAgcmV0dXJuICdTaGFyZWQnO1xuICAgICAgY2FzZSAncHVibGljJzpcbiAgICAgICAgcmV0dXJuICdQdWJsaWMnO1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRQZXJtaXNzaW9uRGVzY3JpcHRpb24ocGVybWlzc2lvbjogVmlld1Blcm1pc3Npb24pOiBzdHJpbmcge1xuICAgIHN3aXRjaCAocGVybWlzc2lvbikge1xuICAgICAgY2FzZSAncHJpdmF0ZSc6XG4gICAgICAgIHJldHVybiAnT25seSB2aXNpYmxlIHRvIHlvdSc7XG4gICAgICBjYXNlICdzaGFyZWQnOlxuICAgICAgICByZXR1cm4gJ09ubHkgdmlzaWJsZSB0byB0aG9zZSB3aXRoIGFjY2Vzcyc7XG4gICAgICBjYXNlICdwdWJsaWMnOlxuICAgICAgICByZXR1cm4gJ1Zpc2libGUgdG8gZXZlcnlvbmUnO1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBpc1NoYXJlZFZpZXc8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PihcbiAgICB2aWV3PzogRnVsbFZpZXc8VSwgVj4sXG4gICk6IHZpZXcgaXMgRnVsbFZpZXc8VSwgVj4gJiB7IHBlcm1pc3Npb246ICdzaGFyZWQnOyBzaGFyZWRVc2VyczogVVtdIH0ge1xuICAgIHJldHVybiB2aWV3Py5wZXJtaXNzaW9uID09PSAnc2hhcmVkJztcbiAgfVxufVxuIl19
|
|
432
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9uYXZpZ2F0aW9uL3ZpZXdzL3N0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBa0MsTUFBTSxTQUFTLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3hELE9BQU8sRUFDTCxXQUFXLEVBRVgsSUFBSSxFQUNKLEdBQUcsRUFDSCxTQUFTLEVBRVQsYUFBYSxFQUNiLFNBQVMsRUFDVCxPQUFPLEdBQ1IsTUFBTSxNQUFNLENBQUM7QUFLZCxNQUFNLEtBQVcsUUFBUSxDQSt3QnhCO0FBL3dCRCxXQUFpQixRQUFRO0lBQ1Ysd0JBQWUsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFVLENBQUM7SUFHM0QscUJBQVksR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFVLENBQUM7SUF3SnRFLFNBQWdCLGFBQWEsQ0FBb0MsRUFDL0QsTUFBTSxFQUNOLElBQUksRUFDSixTQUFTLEVBQ1QsVUFBVSxFQUNWLFFBQVEsRUFDUixPQUFPLEVBQ1AsZUFBZSxHQUNVO1FBQ3pCLE1BQU0sWUFBWSxHQUFvQjtZQUNwQyxLQUFLLEVBQUUsRUFBRTtZQUNULFlBQVksRUFBRSxJQUFJO1lBQ2xCLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLGNBQWMsRUFBRSxDQUFDO1lBQ2pCLGtCQUFrQixFQUFFLElBQUk7WUFDeEIsbUJBQW1CLEVBQUUsSUFBSTtZQUN6QixRQUFRLEVBQUU7Z0JBQ1IsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsVUFBVSxFQUFFLEtBQUs7YUFDbEI7WUFDRCxHQUFHLEVBQUU7Z0JBQ0gsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixVQUFVLEVBQUUsSUFBSTthQUNqQjtZQUNELFVBQVU7WUFDVixhQUFhLEVBQUUsSUFBSTtTQUNwQixDQUFDO1FBRUYsTUFBTSxxQkFBcUIsR0FBb0IsWUFBWSxDQUN6RCxFQUFFLEVBQ0YsT0FBTyxFQUFFLFlBQVksRUFDckIsWUFBWSxDQUNiLENBQUM7UUFFRixNQUFNLE9BQU8sR0FBMEIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNyRCxNQUFNLFNBQVMsR0FBZ0MsT0FBTyxDQUFDLElBQUksQ0FDekQsU0FBUyxDQUNQLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQ2hCLElBQUksQ0FDRixNQUFNLENBQ0osS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sUUFBUSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsRUFDbkIsU0FBUyxFQUNULFFBQVEsRUFDUixlQUFlLENBQ2hCLENBQ0YsRUFDSCxxQkFBcUIsRUFDckIsQ0FBQyxDQUNGLEVBQ0QsU0FBUyxDQUFDLHFCQUFxQixDQUFDLENBQ2pDLENBQUM7UUFFRixNQUFNLEtBQUssR0FBaUMsV0FBVyxDQUNyRCxTQUFTLENBQUMsSUFBSSxDQUNaLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNOLE1BQU0sa0JBQWtCLEdBQVEsZUFBZSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6RCxNQUFNLFVBQVUsR0FBa0Isa0JBQWtCLENBQUMsSUFBSSxDQUN2RCxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FDbkMsQ0FBQztZQUNGLHFFQUFxRTtZQUNyRSwyREFBMkQ7WUFDM0QsTUFBTSxZQUFZLEdBQW1CLFVBQVU7Z0JBQzdDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDZixDQUFDLENBQUMsa0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUM7b0JBQy9CLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUMxQixDQUFDLENBQUMsSUFBSSxDQUFDO1lBRVQsTUFBTSxRQUFRLEdBQXFCLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN6RCxNQUFNLFlBQVksR0FBWSxDQUFDLENBQUMsYUFBYSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3pELE1BQU0sZUFBZSxHQUFZLENBQUMsQ0FBQyxlQUFlLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDL0QsT0FBTztvQkFDTCxHQUFHLElBQUk7b0JBQ1AsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLElBQUksWUFBWSxJQUFJLGVBQWU7b0JBQ3hELE1BQU0sRUFBRSxZQUFZLEtBQUssSUFBSSxDQUFDLEVBQUU7b0JBQ2hDLE1BQU0sRUFBRSxZQUFZO29CQUNwQixTQUFTLEVBQUUsZUFBZTtpQkFDM0IsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBRUgsTUFBTSxlQUFlLEdBQUcsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRWxELE1BQU0sY0FBYyxHQUFHLHVCQUF1QixDQUM1QyxlQUFlLEVBQ2YsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLEVBQzdCLFlBQVksRUFDWixDQUFDLENBQUMsZUFBZSxDQUNsQixDQUFDO1lBRUYsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNO2dCQUNwQyxDQUFDLENBQUMsV0FBVyxDQUNULGVBQWUsRUFDZixDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFDakIsT0FBTyxFQUFFLFdBQVcsQ0FDckI7Z0JBQ0gsQ0FBQyxDQUFDLGVBQWUsQ0FBQztZQUVwQixNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNuRSxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTTtnQkFDbkMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDO2dCQUNwRSxDQUFDLENBQUMsaUJBQWlCLENBQUM7WUFFdEIsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7WUFFekMsT0FBTztnQkFDTCxHQUFHLENBQUM7Z0JBQ0osUUFBUTtnQkFDUixjQUFjO2dCQUNkLFlBQVk7Z0JBQ1osZUFBZTtnQkFDZixHQUFHLEVBQUU7b0JBQ0gsR0FBRyxDQUFDLENBQUMsR0FBRztvQkFDUixXQUFXLEVBQUUsaUJBQWlCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXO29CQUNuRCxZQUFZLEVBQUUsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDO29CQUM1RCxVQUFVLEVBQUUsaUJBQWlCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVO29CQUNqRCxXQUFXLEVBQUUsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDO29CQUMxRCxVQUFVLEVBQUUsaUJBQWlCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVO29CQUNqRCxXQUFXLEVBQUUsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDO2lCQUMzRDtnQkFDRCxZQUFZLEVBQUUsWUFBWTthQUMzQixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsRUFDRDtZQUNFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDckMsaUJBQWlCLEVBQUUsS0FBSztTQUN6QixDQUNGLENBQUM7UUFDRixLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFaEIsNkJBQTZCO1FBQzdCLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUUvQixPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQzVCLENBQUM7SUExSWUsc0JBQWEsZ0JBMEk1QixDQUFBO0lBT0QsU0FBUyxlQUFlLENBQ3RCLEtBQXVCO1FBRXZCLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxTQUFTLDBCQUEwQixDQUNqQyxLQUFVLEVBQ1YsWUFBb0I7UUFFcEIsTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTVDLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU8sWUFBWSxDQUFDO1FBRXJDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyRSxPQUFPLFNBQVMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDckQsQ0FBQztJQUVELFNBQVMsMEJBQTBCLENBQ2pDLEtBQXNCO1FBRXRCLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbEQscUNBQXFDO1FBQ3JDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBRWhFLHFEQUFxRDtRQUNyRCxNQUFNLGtCQUFrQixHQUFHLGlCQUFpQixHQUFHLENBQUMsQ0FBQztRQUVqRCw4RUFBOEU7UUFDOUUsd0ZBQXdGO1FBQ3hGLElBQUksa0JBQWtCLElBQUksWUFBWSxDQUFDLE1BQU07WUFBRSxPQUFPLFlBQVksQ0FBQyxNQUFNLENBQUM7O1lBQ3JFLE9BQU8sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLENBQUMsK0JBQStCO0lBQ3JFLENBQUM7SUFFRCxTQUFTLHVCQUF1QixDQUM5QixTQUEyQixFQUMzQixpQkFBeUIsRUFDekIsWUFBNkMsRUFDN0MsZUFBbUQ7UUFFbkQsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUU3RCxNQUFNLG9CQUFvQixHQUFxQixFQUFFLENBQUM7UUFFbEQsMERBQTBEO1FBQzFELE1BQU0sbUJBQW1CLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FDN0MsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLFlBQVksQ0FDakMsQ0FBQztRQUNGLElBQUksWUFBWSxLQUFLLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQ2pELE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLFlBQVksQ0FBQyxDQUFDO1lBQ3BFLElBQUksVUFBVSxJQUFJLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUMzQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDdkM7U0FDRjtRQUVELDJEQUEyRDtRQUMzRCxNQUFNLHNCQUFzQixHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQ2hELElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxlQUFlLENBQ3BDLENBQUM7UUFDRixJQUNFLGVBQWUsS0FBSyxJQUFJO1lBQ3hCLENBQUMsc0JBQXNCO1lBQ3ZCLGVBQWUsSUFBSSxZQUFZLEVBQy9CO1lBQ0EsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssZUFBZSxDQUFDLENBQUM7WUFDMUUsSUFDRSxhQUFhO2dCQUNiLGNBQWMsQ0FBQyxNQUFNLEdBQUcsb0JBQW9CLENBQUMsTUFBTSxFQUNuRDtnQkFDQSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDMUM7U0FDRjtRQUVELElBQUksb0JBQW9CLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNuQyxNQUFNLGlCQUFpQixHQUFXLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztZQUM5RCxPQUFPO2dCQUNMLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUM7Z0JBQ2xELEdBQUcsb0JBQW9CO2FBQ3hCLENBQUM7U0FDSDtRQUVELE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxTQUFTLGlCQUFpQixDQUN4QixLQUF1QixFQUN2QixVQUEwQjtRQUUxQixPQUFPLE1BQU0sQ0FDWCxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsS0FBSyxVQUFVLENBQUMsRUFDcEQsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FDMUIsQ0FBQztJQUNKLENBQUM7SUFFRCxTQUFTLFdBQVcsQ0FDbEIsS0FBdUIsRUFDdkIsS0FBYSxFQUNiLE9BQXlCO1FBRXpCLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUMzQixTQUFTLEVBQUUsR0FBRztZQUNkLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQztZQUNmLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztRQUVILE1BQU0sY0FBYyxHQUFpQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXhFLE9BQU8sY0FBYyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbkMsR0FBRyxNQUFNLENBQUMsSUFBSTtZQUNkLHFCQUFxQixFQUFFO2dCQUNyQixHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLE9BQU8sQ0FBQyxFQUFFLE9BQU87b0JBQy9ELEVBQUUsQ0FBQzthQUNOO1NBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsU0FBUyxxQkFBcUIsQ0FDNUIsS0FBc0I7UUFFdEIsTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRCxNQUFNLHNCQUFzQixHQUFHLFlBQVksQ0FBQyxTQUFTLENBQ25ELElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsWUFBWSxDQUN2QyxDQUFDO1FBRUYsSUFBSSxZQUFZLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUM1QixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsSUFBSSxzQkFBc0IsS0FBSyxDQUFDLENBQUM7WUFBRSxPQUFPLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDN0QsT0FBTyxDQUNMLFlBQVksQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzVDLFlBQVksQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzVDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ25CLENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUyxVQUFVLENBQ2pCLEtBQXNCLEVBQ3RCLEVBQVc7UUFFWCxNQUFNLFlBQVksR0FDaEIsS0FBSyxDQUFDLFlBQVksS0FBSyxFQUFFO1lBQ3ZCLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUM7WUFDOUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDekIsTUFBTSxlQUFlLEdBQ25CLEtBQUssQ0FBQyxlQUFlLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7UUFDOUQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELE9BQU87WUFDTCxHQUFHLEtBQUs7WUFDUixLQUFLO1lBQ0wsWUFBWTtZQUNaLGVBQWU7WUFDZixtQkFBbUIsRUFBRSxJQUFJO1NBQzFCLENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUyxVQUFVLENBQ2pCLEtBQXNCLEVBQ3RCLEVBQVcsRUFDWCxPQUFnQjtRQUVoQixPQUFPO1lBQ0wsR0FBRyxLQUFLO1lBQ1IsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQzVCLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzdDO1lBQ0QsWUFBWSxFQUNWLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxZQUFZLEtBQUssRUFBRTtnQkFDbkMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQztnQkFDOUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZO1NBQ3pCLENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUyxpQkFBaUIsQ0FDeEIsS0FBVSxFQUNWLGNBQWlCLEVBQ2pCLE9BQVU7UUFFVixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0UsSUFBSSxXQUFXLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDdEIsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDO1NBQzVCO2FBQU07WUFDTCxPQUFPO2dCQUNMLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsV0FBVyxHQUFHLENBQUMsQ0FBQztnQkFDbEMsT0FBTztnQkFDUCxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQzthQUNoQyxDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRUQsU0FBUyxlQUFlLENBQ3RCLEtBQXNCLEVBQ3RCLG9CQUE0QixFQUM1QixlQUF1QjtRQUV2QixJQUNFLEtBQUssQ0FBQyxhQUFhO1lBQ25CLENBQUMsb0JBQW9CLEtBQUssQ0FBQyxJQUFJLGVBQWUsS0FBSyxDQUFDLENBQUMsRUFDckQ7WUFDQSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLHNDQUFzQztTQUM1RTtRQUVELE1BQU0sbUJBQW1CLEdBQUcsMEJBQTBCLENBQ3BELEtBQUssQ0FBQyxLQUFLLEVBQ1gsb0JBQW9CLENBQ3JCLENBQUM7UUFDRixNQUFNLGNBQWMsR0FBRywwQkFBMEIsQ0FDL0MsS0FBSyxDQUFDLEtBQUssRUFDWCxlQUFlLENBQ2hCLENBQUM7UUFFRixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDOUMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssbUJBQW1CLENBQUMsQ0FBQztRQUU1RSxPQUFPO1lBQ0wsS0FBSyxFQUFFO2dCQUNMLEdBQUcsS0FBSztnQkFDUixLQUFLLEVBQUU7b0JBQ0wsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUM7b0JBQ3ZDLElBQUk7b0JBQ0osR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQztpQkFDckM7YUFDRjtZQUNELFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUyxpQkFBaUIsQ0FDeEIsS0FBVSxFQUNWLGVBQW1EO1FBRW5ELE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksZUFBZSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELFNBQVMsa0JBQWtCLENBQ3pCLElBQWdCLEVBQ2hCLEtBQVUsRUFDVixlQUFtRDtRQUVuRCxNQUFNLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFFakUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLFVBQVUsTUFBTSxDQUNuQixLQUFzQixFQUN0QixNQUFvQixFQUNwQixNQUFvQixFQUNwQixJQUFnQixFQUNoQixTQUEwQixFQUMxQixRQUF3QixFQUN4QixlQUFzQztRQUV0QyxRQUFRLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDbkIsS0FBSyxNQUFNO2dCQUNULE1BQU0sS0FBSyxHQUFHLE1BQU0sTUFBTSxFQUFFLENBQUM7Z0JBQzdCLE9BQU87b0JBQ0wsR0FBRyxLQUFLO29CQUNSLEtBQUs7aUJBQ04sQ0FBQztZQUVKLEtBQUssZUFBZSxDQUFDLENBQUM7Z0JBQ3BCLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzdELE1BQU0sS0FBSyxHQUNULFVBQVUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPO29CQUMvQixDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDckIsSUFBSSxDQUFDLEVBQUUsS0FBSyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMxRDtvQkFDSCxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztnQkFDbEIsMkRBQTJEO2dCQUMzRCxJQUFJLEtBQUssS0FBSyxLQUFLLENBQUMsS0FBSyxFQUFFO29CQUN6QixrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztpQkFDeEQ7Z0JBQ0QscURBQXFEO2dCQUNyRCxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQixPQUFPO29CQUNMLEdBQUcsS0FBSztvQkFDUixZQUFZLEVBQUUsTUFBTSxDQUFDLEVBQUU7b0JBQ3ZCLEtBQUs7b0JBQ0wsR0FBRyxFQUFFO3dCQUNILEdBQUcsS0FBSyxDQUFDLEdBQUc7d0JBQ1osTUFBTSxFQUFFLEVBQUU7cUJBQ1g7b0JBQ0QsUUFBUSxFQUFFO3dCQUNSLEdBQUcsS0FBSyxDQUFDLFFBQVE7d0JBQ2pCLE1BQU0sRUFBRSxFQUFFO3FCQUNYO2lCQUNGLENBQUM7YUFDSDtZQUVELEtBQUssWUFBWSxDQUFDLENBQUM7Z0JBQ2pCLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzlELGtCQUFrQixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDbkUsT0FBTyxRQUFRLENBQUM7YUFDakI7WUFFRCxLQUFLLG1CQUFtQjtnQkFDdEIsT0FBTztvQkFDTCxHQUFHLEtBQUs7b0JBQ1IsY0FBYyxFQUFFLE1BQU0sQ0FBQyxLQUFLO2lCQUM3QixDQUFDO1lBRUosS0FBSyx1QkFBdUI7Z0JBQzFCLE9BQU87b0JBQ0wsR0FBRyxLQUFLO29CQUNSLFFBQVEsRUFBRTt3QkFDUixHQUFHLEtBQUssQ0FBQyxRQUFRO3dCQUNqQixVQUFVLEVBQUUsTUFBTSxDQUFDLElBQUk7cUJBQ3hCO2lCQUNGLENBQUM7WUFFSixLQUFLLHdCQUF3QjtnQkFDM0IsT0FBTztvQkFDTCxHQUFHLEtBQUs7b0JBQ1IsUUFBUSxFQUFFO3dCQUNSLEdBQUcsS0FBSyxDQUFDLFFBQVE7d0JBQ2pCLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSztxQkFDckI7aUJBQ0YsQ0FBQztZQUVKLEtBQUssd0JBQXdCO2dCQUMzQixPQUFPO29CQUNMLEdBQUcsS0FBSztvQkFDUixHQUFHLEVBQUU7d0JBQ0gsR0FBRyxLQUFLLENBQUMsR0FBRzt3QkFDWixNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUs7cUJBQ3JCO2lCQUNGLENBQUM7WUFFSixLQUFLLFlBQVksQ0FBQyxDQUFDO2dCQUNqQixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxlQUFlLEVBQUU7b0JBQzNDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ25DLElBQUksQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDaEQsQ0FBQztvQkFDRixrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztvQkFDdkQsT0FBTzt3QkFDTCxHQUFHLEtBQUs7d0JBQ1IsS0FBSyxFQUFFLEtBQUs7cUJBQ2IsQ0FBQztpQkFDSDtxQkFBTTtvQkFDTCxrRUFBa0U7b0JBQ2xFLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxTQUFTLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO29CQUVoRSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNuQyxJQUFJLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUN4RCxDQUFDO29CQUVGLGtCQUFrQixDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ3RDLHNEQUFzRDtvQkFDdEQsZUFBZSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUN4QyxPQUFPO3dCQUNMLEdBQUcsS0FBSzt3QkFDUixLQUFLLEVBQUUsS0FBSzt3QkFDWixZQUFZLEVBQUUsbUJBQW1CLENBQUMsRUFBRTt3QkFDcEMsZUFBZSxFQUFFLElBQUk7cUJBQ3RCLENBQUM7aUJBQ0g7YUFDRjtZQUVELEtBQUssWUFBWSxDQUFDLENBQUM7Z0JBQ2pCLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDbkQsa0JBQWtCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUNoRSxPQUFPLFFBQVEsQ0FBQzthQUNqQjtZQUVELEtBQUssZUFBZSxDQUFDLENBQUM7Z0JBQ3BCLE1BQU0sT0FBTyxHQUFHLE1BQU0sU0FBUyxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDcEQsT0FBTztvQkFDTCxHQUFHLEtBQUs7b0JBQ1IsS0FBSyxFQUFFLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7b0JBQzNELGtCQUFrQixFQUFFO3dCQUNsQixFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUU7d0JBQ2QsVUFBVSxFQUFFLElBQUk7d0JBQ2hCLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztxQkFDaEM7b0JBQ0QsWUFBWSxFQUFFLE9BQU8sQ0FBQyxFQUFFO2lCQUN6QixDQUFDO2FBQ0g7WUFFRCxLQUFLLGdCQUFnQjtnQkFDbkIsTUFBTSxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM1QixPQUFPLEtBQUssQ0FBQztZQUVmLEtBQUssaUJBQWlCLENBQUMsQ0FBQztnQkFDdEIsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEdBQUcsZUFBZSxDQUNyRCxLQUFLLEVBQ0wsTUFBTSxDQUFDLG9CQUFvQixFQUMzQixNQUFNLENBQUMsZUFBZSxDQUN2QixDQUFDO2dCQUNGLElBQUksVUFBVSxFQUFFO29CQUNkLGtCQUFrQixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztpQkFDakU7Z0JBQ0QsT0FBTyxRQUFRLENBQUM7YUFDakI7WUFFRCxLQUFLLG1CQUFtQjtnQkFDdEIsT0FBTztvQkFDTCxHQUFHLEtBQUs7b0JBQ1IsR0FBRyxFQUFFO3dCQUNILEdBQUcsS0FBSyxDQUFDLEdBQUc7d0JBQ1osV0FBVyxFQUNULE1BQU0sQ0FBQyxVQUFVLEtBQUssU0FBUzs0QkFDN0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJOzRCQUNiLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVc7d0JBQzNCLFVBQVUsRUFDUixNQUFNLENBQUMsVUFBVSxLQUFLLFFBQVE7NEJBQzVCLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSTs0QkFDYixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVO3dCQUMxQixVQUFVLEVBQ1IsTUFBTSxDQUFDLFVBQVUsS0FBSyxRQUFROzRCQUM1QixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUk7NEJBQ2IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVTtxQkFDM0I7aUJBQ0YsQ0FBQztZQUVKLEtBQUssZ0JBQWdCO2dCQUNuQixPQUFPO29CQUNMLEdBQUcsS0FBSztvQkFDUixrQkFBa0IsRUFBRSxNQUFNLENBQUMsT0FBTztpQkFDbkMsQ0FBQztZQUVKLEtBQUssaUJBQWlCO2dCQUNwQixPQUFPO29CQUNMLEdBQUcsS0FBSztvQkFDUixtQkFBbUIsRUFBRSxNQUFNLENBQUMsT0FBTztpQkFDcEMsQ0FBQztZQUVKLEtBQUsscUJBQXFCO2dCQUN4QixNQUFNLHNCQUFzQixHQUFHLGlCQUFpQixDQUM5QyxLQUFLLENBQUMsS0FBSyxFQUNYLEtBQUssQ0FBQyxlQUFlLENBQ3RCLENBQUM7Z0JBRUYsNkNBQTZDO2dCQUM3QyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDaEMsT0FBTztvQkFDTCxHQUFHLEtBQUs7b0JBQ1IsZUFBZSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDL0IsWUFBWSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDNUIsS0FBSyxFQUFFLENBQUMsR0FBRyxzQkFBc0IsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO2lCQUNoRCxDQUFDO1NBQ0w7SUFDSCxDQUFDO0lBRUQsZUFBZTtJQUNmLGVBQWU7SUFDZixlQUFlO0lBRWYsU0FBZ0Isa0JBQWtCLENBQUMsVUFBMEI7UUFDM0QsUUFBUSxVQUFVLEVBQUU7WUFDbEIsS0FBSyxTQUFTO2dCQUNaLE9BQU8sU0FBUyxDQUFDO1lBQ25CLEtBQUssUUFBUTtnQkFDWCxPQUFPLFFBQVEsQ0FBQztZQUNsQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxRQUFRLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBVGUsMkJBQWtCLHFCQVNqQyxDQUFBO0lBRUQsU0FBZ0Isd0JBQXdCLENBQUMsVUFBMEI7UUFDakUsUUFBUSxVQUFVLEVBQUU7WUFDbEIsS0FBSyxTQUFTO2dCQUNaLE9BQU8saUNBQWlDLENBQUM7WUFDM0MsS0FBSyxRQUFRO2dCQUNYLE9BQU8sNENBQTRDLENBQUM7WUFDdEQsS0FBSyxRQUFRO2dCQUNYLE9BQU8sOEJBQThCLENBQUM7U0FDekM7SUFDSCxDQUFDO0lBVGUsaUNBQXdCLDJCQVN2QyxDQUFBO0lBRUQsU0FBZ0IsWUFBWSxDQUMxQixJQUFxQjtRQUVyQixPQUFPLElBQUksRUFBRSxVQUFVLEtBQUssUUFBUSxDQUFDO0lBQ3ZDLENBQUM7SUFKZSxxQkFBWSxlQUkzQixDQUFBO0FBQ0gsQ0FBQyxFQS93QmdCLFFBQVEsS0FBUixRQUFRLFFBK3dCeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRnVzZSwgeyBGdXNlUmVzdWx0LCBJRnVzZU9wdGlvbnMgfSBmcm9tICdmdXNlLmpzJztcbmltcG9ydCB7IGRlYm91bmNlLCBkZWZhdWx0c0RlZXAsIHNvcnRCeSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1xuICBjb25uZWN0YWJsZSxcbiAgQ29ubmVjdGFibGUsXG4gIGZyb20sXG4gIG1hcCxcbiAgbWVyZ2VTY2FuLFxuICBPYnNlcnZhYmxlLFxuICBSZXBsYXlTdWJqZWN0LFxuICBzdGFydFdpdGgsXG4gIFN1YmplY3QsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGVlcFBhcnRpYWwgfSBmcm9tICd1dGlsaXR5LXR5cGVzJztcbmltcG9ydCB7IFJpdlNlbGVjdCB9IGZyb20gJy4uLy4uL2lucHV0L3NlbGVjdC9zdGF0ZSc7XG5pbXBvcnQgeyBIaWdobGlnaHRDb21wb25lbnQgfSBmcm9tICcuLi8uLi92aXN1YWxpemF0aW9uL2hpZ2hsaWdodC9oaWdobGlnaHQuY29tcG9uZW50JztcblxuZXhwb3J0IG5hbWVzcGFjZSBSaXZWaWV3cyB7XG4gIGV4cG9ydCBjb25zdCBWaWV3UGVybWlzc2lvbnMgPSBbJ3ByaXZhdGUnLCAncHVibGljJywgJ3NoYXJlZCddIGFzIGNvbnN0O1xuICBleHBvcnQgdHlwZSBWaWV3UGVybWlzc2lvbiA9ICh0eXBlb2YgVmlld1Blcm1pc3Npb25zKVtudW1iZXJdO1xuXG4gIGV4cG9ydCBjb25zdCBNZW51Q29udGV4dHMgPSBbJ3RhYicsICdhbGwtdmlld3MnLCAnb3ZlcmZsb3cnXSBhcyBjb25zdDtcbiAgZXhwb3J0IHR5cGUgTWVudUNvbnRleHQgPSAodHlwZW9mIE1lbnVDb250ZXh0cylbbnVtYmVyXTtcblxuICBleHBvcnQgdHlwZSBVc2VyID0gUml2U2VsZWN0LkJhc2VPcHRpb247XG5cbiAgZXhwb3J0IHR5cGUgVmlldzxVIGV4dGVuZHMgVXNlcj4gPSB7XG4gICAgaWQ6IHN0cmluZyB8IG51bWJlcjtcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gIH0gJiAoXG4gICAgfCB7XG4gICAgICAgIHBlcm1pc3Npb246ICdwcml2YXRlJyB8ICdwdWJsaWMnO1xuICAgICAgfVxuICAgIHwge1xuICAgICAgICBwZXJtaXNzaW9uOiAnc2hhcmVkJztcbiAgICAgICAgc2hhcmVkVXNlcnM6IFVbXTtcbiAgICAgIH1cbiAgKTtcblxuICBleHBvcnQgdHlwZSBGdWxsVmlldzxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0gViAmIHtcbiAgICBhY3RpdmU6IGJvb2xlYW47XG4gICAgc3lzdGVtOiBib29sZWFuO1xuICAgIHRpdGxlSGlnaGxpZ2h0SW5kaWNlcz86IEhpZ2hsaWdodENvbXBvbmVudC5IaWdobGlnaHRJbmRpY2VzW107XG4gICAgdGVtcG9yYXJ5OiBib29sZWFuO1xuICB9O1xuXG4gIC8vLy8vLy8vLy8vXG4gIC8vIFN0YXRlIC8vXG4gIC8vLy8vLy8vLy8vXG5cbiAgZXhwb3J0IHR5cGUgQ29yZVN0YXRlPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4gPSB7XG4gICAgdmlld3M6IFZbXTtcbiAgICBhY3RpdmVWaWV3SWQ6IFZbJ2lkJ10gfCBudWxsO1xuICAgIHRlbXBvcmFyeVZpZXdJZDogVlsnaWQnXSB8IG51bGw7XG4gICAgY29udGFpbmVyV2lkdGg6IG51bWJlcjtcbiAgICBlZGl0aW5nVmlld0NvbnRleHQ6IHtcbiAgICAgIGlkOiBWWydpZCddO1xuICAgICAgYXV0b1JlbmFtZTogYm9vbGVhbjtcbiAgICAgIG1lbnVDb250ZXh0OiBNZW51Q29udGV4dDtcbiAgICB9IHwgbnVsbDtcbiAgICBkZWxldGluZ1ZpZXdDb250ZXh0OiB7IGlkOiBWWydpZCddOyBtZW51Q29udGV4dDogTWVudUNvbnRleHQgfSB8IG51bGw7XG4gICAgb3ZlcmZsb3c6IHtcbiAgICAgIHNlYXJjaDogc3RyaW5nO1xuICAgICAgcGlja2VyT3BlbjogYm9vbGVhbjtcbiAgICB9O1xuICAgIGFsbDoge1xuICAgICAgc2VhcmNoOiBzdHJpbmc7XG4gICAgICBwcml2YXRlT3BlbjogYm9vbGVhbjtcbiAgICAgIHNoYXJlZE9wZW46IGJvb2xlYW47XG4gICAgICBwdWJsaWNPcGVuOiBib29sZWFuO1xuICAgIH07XG4gICAgdXNlclNvdXJjZTogVXNlclNvdXJjZTxVPjtcbiAgICBoYXNTeXN0ZW1WaWV3OiBib29sZWFuO1xuICB9O1xuXG4gIGV4cG9ydCB0eXBlIEZ1bGxTdGF0ZTxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0gQ29yZVN0YXRlPFUsIFY+ICYge1xuICAgIGFsbFZpZXdzOiBGdWxsVmlldzxVLCBWPltdO1xuICAgIGRpc3BsYXllZFZpZXdzOiBGdWxsVmlldzxVLCBWPltdO1xuICAgIGVuYWJsZWRWaWV3czogRnVsbFZpZXc8VSwgVj5bXTtcbiAgICBhbGxFbmFibGVkVmlld3M6IEZ1bGxWaWV3PFUsIFY+W107XG4gICAgYWxsOiB7XG4gICAgICBwcml2YXRlVmlld3M6IEZ1bGxWaWV3PFUsIFY+W107XG4gICAgICBzaGFyZWRWaWV3czogRnVsbFZpZXc8VSwgVj5bXTtcbiAgICAgIHB1YmxpY1ZpZXdzOiBGdWxsVmlldzxVLCBWPltdO1xuICAgIH07XG4gIH07XG5cbiAgLy8vLy8vLy8vLy8vL1xuICAvLyBBY3Rpb25zIC8vXG4gIC8vLy8vLy8vLy8vLy9cblxuICBleHBvcnQgdHlwZSBBY3Rpb248VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PiA9XG4gICAgfCB7IHR5cGU6ICdsb2FkJyB9XG4gICAgfCB7XG4gICAgICAgIHR5cGU6ICdzZXRBY3RpdmVWaWV3JztcbiAgICAgICAgaWQ6IFZbJ2lkJ107XG4gICAgICAgIHNvdXJjZT86ICd0YWInIHwgJ21lbnUnIHwgJ292ZXJmbG93JztcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgdHlwZTogJ3NldEVuYWJsZWQnO1xuICAgICAgICBpZDogVlsnaWQnXTtcbiAgICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgc291cmNlPzogJ21lbnUnIHwgJ2V5ZUljb24nO1xuICAgICAgfVxuICAgIHwgeyB0eXBlOiAnc2V0Q29udGFpbmVyV2lkdGgnOyB3aWR0aDogbnVtYmVyIH1cbiAgICB8IHsgdHlwZTogJ3NldE92ZXJmbG93UGlja2VyT3Blbic7IG9wZW46IGJvb2xlYW4gfVxuICAgIHwgeyB0eXBlOiAnc2V0T3ZlcmZsb3dTZWFyY2hRdWVyeSc7IHF1ZXJ5OiBzdHJpbmcgfVxuICAgIHwgeyB0eXBlOiAnc2V0QWxsVmlld3NTZWFyY2hRdWVyeSc7IHF1ZXJ5OiBzdHJpbmcgfVxuICAgIHwgeyB0eXBlOiAndXBkYXRlVmlldyc7IHZpZXc6IFYgfVxuICAgIHwgeyB0eXBlOiAnZGVsZXRlVmlldyc7IHZpZXc6IFYgfVxuICAgIHwgeyB0eXBlOiAnZHVwbGljYXRlVmlldyc7IHZpZXc6IFY7IG1lbnVDb250ZXh0OiBNZW51Q29udGV4dCB9XG4gICAgfCB7IHR5cGU6ICdjb3B5TGlua1RvVmlldyc7IHZpZXc6IFYgfVxuICAgIHwgeyB0eXBlOiAnc2V0RWRpdGluZ1ZpZXcnOyBjb250ZXh0OiBDb3JlU3RhdGU8VSwgVj5bJ2VkaXRpbmdWaWV3Q29udGV4dCddIH1cbiAgICB8IHtcbiAgICAgICAgdHlwZTogJ3NldERlbGV0aW5nVmlldyc7XG4gICAgICAgIGNvbnRleHQ6IENvcmVTdGF0ZTxVLCBWPlsnZGVsZXRpbmdWaWV3Q29udGV4dCddO1xuICAgICAgfVxuICAgIHwge1xuICAgICAgICB0eXBlOiAndmlld09yZGVyQ2hhbmdlJztcbiAgICAgICAgcHJldmlvdXNFbmFibGVkSW5kZXg6IG51bWJlcjtcbiAgICAgICAgbmV3RW5hYmxlZEluZGV4OiBudW1iZXI7XG4gICAgICAgIHNvdXJjZT86ICd0YWJEcmFnJyB8ICdvdmVyZmxvd0RyYWcnO1xuICAgICAgICB2aWV3VGl0bGU/OiBWWyd0aXRsZSddO1xuICAgICAgfVxuICAgIHwgeyB0eXBlOiAnc2V0QWxsVmlld3NUb2dnbGUnOyBwZXJtaXNzaW9uOiBWaWV3UGVybWlzc2lvbjsgb3BlbjogYm9vbGVhbiB9XG4gICAgfCB7IHR5cGU6ICdjcmVhdGVUZW1wb3JhcnlWaWV3JzsgdmlldzogViB9O1xuXG4gIC8vLy8vLy8vLy8vL1xuICAvLyBTb3VyY2UgLy9cbiAgLy8vLy8vLy8vLy8vXG5cbiAgZXhwb3J0IHR5cGUgU291cmNlPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4gPSAoKSA9PlxuICAgIHwgVltdXG4gICAgfCBQcm9taXNlPFZbXT47XG4gIGV4cG9ydCB0eXBlIFNhdmU8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PiA9IChcbiAgICB2aWV3czogVltdLFxuICApID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICBleHBvcnQgdHlwZSBEdXBsaWNhdGU8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PiA9IChcbiAgICB2aWV3VG9EdXBsaWNhdGU6IFYsXG4gICkgPT4gViB8IFByb21pc2U8Vj47XG4gIGV4cG9ydCB0eXBlIFVzZXJTb3VyY2U8VSBleHRlbmRzIFVzZXI+ID0gKCkgPT4gVVtdIHwgUHJvbWlzZTxVW10+O1xuICBleHBvcnQgdHlwZSBDb3B5TGluazxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0gKFxuICAgIHZpZXc6IFYsXG4gICkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD47XG4gIGV4cG9ydCB0eXBlIFNldEFjdGl2ZVZpZXdJZDxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0gKFxuICAgIGlkOiBWWydpZCddLFxuICApID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuXG4gIC8vLy8vLy8vLy8vLy9cbiAgLy8gTWFuYWdlciAvL1xuICAvLy8vLy8vLy8vLy8vXG5cbiAgZXhwb3J0IHR5cGUgTWFuYWdlcjxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0ge1xuICAgIGFjdGlvbnM6IFN1YmplY3Q8QWN0aW9uPFUsIFY+PjtcbiAgICBzdGF0ZTogQ29ubmVjdGFibGU8RnVsbFN0YXRlPFUsIFY+PjtcbiAgfTtcblxuICBleHBvcnQgdHlwZSBNYW5hZ2VyT3B0aW9uczxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0ge1xuICAgIGluaXRpYWxTdGF0ZT86IERlZXBQYXJ0aWFsPENvcmVTdGF0ZTxVLCBWPj47XG4gICAgZnVzZU9wdGlvbnM/OiBJRnVzZU9wdGlvbnM8Vj47XG4gIH07XG5cbiAgZXhwb3J0IHR5cGUgQ3JlYXRlTWFuYWdlcklucHV0PFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4gPSB7XG4gICAgc291cmNlOiBTb3VyY2U8VSwgVj47XG4gICAgc2F2ZTogU2F2ZTxVLCBWPjtcbiAgICBkdXBsaWNhdGU6IER1cGxpY2F0ZTxVLCBWPjtcbiAgICB1c2VyU291cmNlOiBVc2VyU291cmNlPFU+O1xuICAgIGNvcHlMaW5rOiBDb3B5TGluazxVLCBWPjtcbiAgICBzZXRBY3RpdmVWaWV3SWQ6IFNldEFjdGl2ZVZpZXdJZDxVLCBWPjtcbiAgICBvcHRpb25zPzogTWFuYWdlck9wdGlvbnM8VSwgVj47XG4gIH07XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1hbmFnZXI8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+Pih7XG4gICAgc291cmNlLFxuICAgIHNhdmUsXG4gICAgZHVwbGljYXRlLFxuICAgIHVzZXJTb3VyY2UsXG4gICAgY29weUxpbmssXG4gICAgb3B0aW9ucyxcbiAgICBzZXRBY3RpdmVWaWV3SWQsXG4gIH06IENyZWF0ZU1hbmFnZXJJbnB1dDxVLCBWPik6IE1hbmFnZXI8VSwgVj4ge1xuICAgIGNvbnN0IGRlZmF1bHRTdGF0ZTogQ29yZVN0YXRlPFUsIFY+ID0ge1xuICAgICAgdmlld3M6IFtdLFxuICAgICAgYWN0aXZlVmlld0lkOiBudWxsLFxuICAgICAgdGVtcG9yYXJ5Vmlld0lkOiBudWxsLFxuICAgICAgY29udGFpbmVyV2lkdGg6IDAsXG4gICAgICBlZGl0aW5nVmlld0NvbnRleHQ6IG51bGwsXG4gICAgICBkZWxldGluZ1ZpZXdDb250ZXh0OiBudWxsLFxuICAgICAgb3ZlcmZsb3c6IHtcbiAgICAgICAgc2VhcmNoOiAnJyxcbiAgICAgICAgcGlja2VyT3BlbjogZmFsc2UsXG4gICAgICB9LFxuICAgICAgYWxsOiB7XG4gICAgICAgIHNlYXJjaDogJycsXG4gICAgICAgIHByaXZhdGVPcGVuOiB0cnVlLFxuICAgICAgICBzaGFyZWRPcGVuOiB0cnVlLFxuICAgICAgICBwdWJsaWNPcGVuOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIHVzZXJTb3VyY2UsXG4gICAgICBoYXNTeXN0ZW1WaWV3OiB0cnVlLFxuICAgIH07XG5cbiAgICBjb25zdCBkZWZhdWx0ZWRJbml0aWFsU3RhdGU6IENvcmVTdGF0ZTxVLCBWPiA9IGRlZmF1bHRzRGVlcChcbiAgICAgIHt9LFxuICAgICAgb3B0aW9ucz8uaW5pdGlhbFN0YXRlLFxuICAgICAgZGVmYXVsdFN0YXRlLFxuICAgICk7XG5cbiAgICBjb25zdCBhY3Rpb25zOiBTdWJqZWN0PEFjdGlvbjxVLCBWPj4gPSBuZXcgU3ViamVjdCgpO1xuICAgIGNvbnN0IGNvcmVTdGF0ZTogT2JzZXJ2YWJsZTxDb3JlU3RhdGU8VSwgVj4+ID0gYWN0aW9ucy5waXBlKFxuICAgICAgbWVyZ2VTY2FuKFxuICAgICAgICAoc3RhdGUsIGFjdGlvbikgPT5cbiAgICAgICAgICBmcm9tKFxuICAgICAgICAgICAgcmVkdWNlKFxuICAgICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgICAgIGRlYm91bmNlKHNhdmUsIDIwMCksXG4gICAgICAgICAgICAgIGR1cGxpY2F0ZSxcbiAgICAgICAgICAgICAgY29weUxpbmssXG4gICAgICAgICAgICAgIHNldEFjdGl2ZVZpZXdJZCxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgZGVmYXVsdGVkSW5pdGlhbFN0YXRlLFxuICAgICAgICAxLFxuICAgICAgKSxcbiAgICAgIHN0YXJ0V2l0aChkZWZhdWx0ZWRJbml0aWFsU3RhdGUpLFxuICAgICk7XG5cbiAgICBjb25zdCBzdGF0ZTogQ29ubmVjdGFibGU8RnVsbFN0YXRlPFUsIFY+PiA9IGNvbm5lY3RhYmxlKFxuICAgICAgY29yZVN0YXRlLnBpcGUoXG4gICAgICAgIG1hcChzID0+IHtcbiAgICAgICAgICBjb25zdCBlbmFibGVkTm9ybWFsVmlld3M6IFZbXSA9IGdldEVuYWJsZWRWaWV3cyhzLnZpZXdzKTtcbiAgICAgICAgICBjb25zdCBhY3RpdmVWaWV3OiBWIHwgdW5kZWZpbmVkID0gZW5hYmxlZE5vcm1hbFZpZXdzLmZpbmQoXG4gICAgICAgICAgICB2aWV3ID0+IHZpZXcuaWQgPT09IHMuYWN0aXZlVmlld0lkLFxuICAgICAgICAgICk7XG4gICAgICAgICAgLy8gSWYgZm9yIHNvbWUgcmVhc29uIHRoZSBhY3RpdmUgdmlldyBpcyBub3QgY3VycmVudGx5IGVuYWJsZWQsIHdlJ2xsXG4gICAgICAgICAgLy8gZGVmYXVsdCB0byBtYWtpbmcgdGhlIGZpcnN0IGVuYWJsZWQgdmlldyBhY3RpdmUgaW5zdGVhZC5cbiAgICAgICAgICBjb25zdCBhY3RpdmVWaWV3SWQ6IFZbJ2lkJ10gfCBudWxsID0gYWN0aXZlVmlld1xuICAgICAgICAgICAgPyBhY3RpdmVWaWV3LmlkXG4gICAgICAgICAgICA6IGVuYWJsZWROb3JtYWxWaWV3cy5sZW5ndGggPiAwXG4gICAgICAgICAgICA/IGVuYWJsZWROb3JtYWxWaWV3c1swXS5pZFxuICAgICAgICAgICAgOiBudWxsO1xuXG4gICAgICAgICAgY29uc3QgYWxsVmlld3M6IEZ1bGxWaWV3PFUsIFY+W10gPSBzLnZpZXdzLm1hcCgodmlldywgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNTeXN0ZW1WaWV3OiBib29sZWFuID0gcy5oYXNTeXN0ZW1WaWV3ICYmIGkgPT09IDA7XG4gICAgICAgICAgICBjb25zdCBpc1RlbXBvcmFyeVZpZXc6IGJvb2xlYW4gPSBzLnRlbXBvcmFyeVZpZXdJZCA9PT0gdmlldy5pZDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLnZpZXcsXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHZpZXcuZW5hYmxlZCB8fCBpc1N5c3RlbVZpZXcgfHwgaXNUZW1wb3JhcnlWaWV3LFxuICAgICAgICAgICAgICBhY3RpdmU6IGFjdGl2ZVZpZXdJZCA9PT0gdmlldy5pZCxcbiAgICAgICAgICAgICAgc3lzdGVtOiBpc1N5c3RlbVZpZXcsXG4gICAgICAgICAgICAgIHRlbXBvcmFyeTogaXNUZW1wb3JhcnlWaWV3LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNvbnN0IGFsbEVuYWJsZWRWaWV3cyA9IGdldEVuYWJsZWRWaWV3cyhhbGxWaWV3cyk7XG5cbiAgICAgICAgICBjb25zdCBkaXNwbGF5ZWRWaWV3cyA9IGNhbGN1bGF0ZURpc3BsYXllZFZpZXdzKFxuICAgICAgICAgICAgYWxsRW5hYmxlZFZpZXdzLFxuICAgICAgICAgICAgY2FsY3VsYXRlT3ZlcmZsb3dWaWV3SW5kZXgocyksXG4gICAgICAgICAgICBhY3RpdmVWaWV3SWQsXG4gICAgICAgICAgICBzLnRlbXBvcmFyeVZpZXdJZCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3QgZW5hYmxlZFZpZXdzID0gcy5vdmVyZmxvdy5zZWFyY2hcbiAgICAgICAgICAgID8gc2VhcmNoVmlld3MoXG4gICAgICAgICAgICAgICAgYWxsRW5hYmxlZFZpZXdzLFxuICAgICAgICAgICAgICAgIHMub3ZlcmZsb3cuc2VhcmNoLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM/LmZ1c2VPcHRpb25zLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IGFsbEVuYWJsZWRWaWV3cztcblxuICAgICAgICAgIGNvbnN0IGFsbFBlcm1hbmVudFZpZXdzID0gYWxsVmlld3MuZmlsdGVyKHZpZXcgPT4gIXZpZXcudGVtcG9yYXJ5KTtcbiAgICAgICAgICBjb25zdCBhbGxWaWV3c0ZpbHRlcmVkID0gcy5hbGwuc2VhcmNoXG4gICAgICAgICAgICA/IHNlYXJjaFZpZXdzKGFsbFBlcm1hbmVudFZpZXdzLCBzLmFsbC5zZWFyY2gsIG9wdGlvbnM/LmZ1c2VPcHRpb25zKVxuICAgICAgICAgICAgOiBhbGxQZXJtYW5lbnRWaWV3cztcblxuICAgICAgICAgIGNvbnN0IHNlYXJjaGluZ0FsbFZpZXdzID0gISFzLmFsbC5zZWFyY2g7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ucyxcbiAgICAgICAgICAgIGFsbFZpZXdzLFxuICAgICAgICAgICAgZGlzcGxheWVkVmlld3MsXG4gICAgICAgICAgICBlbmFibGVkVmlld3MsXG4gICAgICAgICAgICBhbGxFbmFibGVkVmlld3MsXG4gICAgICAgICAgICBhbGw6IHtcbiAgICAgICAgICAgICAgLi4ucy5hbGwsXG4gICAgICAgICAgICAgIHByaXZhdGVPcGVuOiBzZWFyY2hpbmdBbGxWaWV3cyB8fCBzLmFsbC5wcml2YXRlT3BlbixcbiAgICAgICAgICAgICAgcHJpdmF0ZVZpZXdzOiB2aWV3c0J5UGVybWlzc2lvbihhbGxWaWV3c0ZpbHRlcmVkLCAncHJpdmF0ZScpLFxuICAgICAgICAgICAgICBzaGFyZWRPcGVuOiBzZWFyY2hpbmdBbGxWaWV3cyB8fCBzLmFsbC5zaGFyZWRPcGVuLFxuICAgICAgICAgICAgICBzaGFyZWRWaWV3czogdmlld3NCeVBlcm1pc3Npb24oYWxsVmlld3NGaWx0ZXJlZCwgJ3NoYXJlZCcpLFxuICAgICAgICAgICAgICBwdWJsaWNPcGVuOiBzZWFyY2hpbmdBbGxWaWV3cyB8fCBzLmFsbC5wdWJsaWNPcGVuLFxuICAgICAgICAgICAgICBwdWJsaWNWaWV3czogdmlld3NCeVBlcm1pc3Npb24oYWxsVmlld3NGaWx0ZXJlZCwgJ3B1YmxpYycpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFjdGl2ZVZpZXdJZDogYWN0aXZlVmlld0lkLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgY29ubmVjdG9yOiAoKSA9PiBuZXcgUmVwbGF5U3ViamVjdCgxKSxcbiAgICAgICAgcmVzZXRPbkRpc2Nvbm5lY3Q6IGZhbHNlLFxuICAgICAgfSxcbiAgICApO1xuICAgIHN0YXRlLmNvbm5lY3QoKTtcblxuICAgIC8vIExvYWQgdGhlIHZpZXdzIGltbWVkaWF0ZWx5XG4gICAgYWN0aW9ucy5uZXh0KHsgdHlwZTogJ2xvYWQnIH0pO1xuXG4gICAgcmV0dXJuIHsgYWN0aW9ucywgc3RhdGUgfTtcbiAgfVxuXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gU3RhdGUgcmVkdWNlciAod2l0aCBoZWxwZXJzKSAvL1xuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgZnVuY3Rpb24gZ2V0RW5hYmxlZFZpZXdzPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4odmlld3M6IFZbXSk6IFZbXTtcbiAgZnVuY3Rpb24gZ2V0RW5hYmxlZFZpZXdzPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4oXG4gICAgdmlld3M6IEZ1bGxWaWV3PFUsIFY+W10sXG4gICk6IEZ1bGxWaWV3PFUsIFY+W10ge1xuICAgIHJldHVybiB2aWV3cy5maWx0ZXIoKHYsIGkpID0+IHYuZW5hYmxlZCB8fCB2LnN5c3RlbSB8fCB2LnRlbXBvcmFyeSk7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNsYXRlcyBhbiBpbmRleCBpbiB0aGUgZW5hYmxlZCB2aWV3cyBsaXN0IHRvIHRoZSBjb3JyZXNwb25kaW5nIGluZGV4XG4gICAqIGluIHRoZSBmdWxsIHZpZXdzIGxpc3QuIFRoaXMgaXMgdXNlZCB0byByZXNvbHZlIFVJIGluZGljZXMgKHdoaWNoIG9ubHlcbiAgICogc2hvdyBlbmFibGVkIHZpZXdzKSB0byBzdGF0ZS52aWV3cyBpbmRpY2VzICh3aGljaCBpbmNsdWRlcyBhbGwgdmlld3MpLlxuICAgKi9cbiAgZnVuY3Rpb24gbWFwRW5hYmxlZEluZGV4VG9WaWV3SW5kZXg8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PihcbiAgICB2aWV3czogVltdLFxuICAgIGVuYWJsZWRJbmRleDogbnVtYmVyLFxuICApOiBudW1iZXIge1xuICAgIGNvbnN0IGVuYWJsZWRWaWV3cyA9IGdldEVuYWJsZWRWaWV3cyh2aWV3cyk7XG5cbiAgICBjb25zdCB0YXJnZXRWaWV3ID0gZW5hYmxlZFZpZXdzW2VuYWJsZWRJbmRleF07XG4gICAgaWYgKCF0YXJnZXRWaWV3KSByZXR1cm4gZW5hYmxlZEluZGV4O1xuXG4gICAgY29uc3Qgdmlld0luZGV4ID0gdmlld3MuZmluZEluZGV4KHZpZXcgPT4gdmlldy5pZCA9PT0gdGFyZ2V0Vmlldy5pZCk7XG4gICAgcmV0dXJuIHZpZXdJbmRleCA9PT0gLTEgPyBlbmFibGVkSW5kZXggOiB2aWV3SW5kZXg7XG4gIH1cblxuICBmdW5jdGlvbiBjYWxjdWxhdGVPdmVyZmxvd1ZpZXdJbmRleDxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHN0YXRlOiBDb3JlU3RhdGU8VSwgVj4sXG4gICk6IG51bWJlciB7XG4gICAgY29uc3QgZW5hYmxlZFZpZXdzID0gZ2V0RW5hYmxlZFZpZXdzKHN0YXRlLnZpZXdzKTtcblxuICAgIC8vIFRhYnMgaGF2ZSBhIG1pbmltdW0gd2lkdGggb2YgOTJweC5cbiAgICBjb25zdCBwb3NzaWJsZVNsb3RDb3VudCA9IE1hdGguZmxvb3Ioc3RhdGUuY29udGFpbmVyV2lkdGggLyA5Mik7XG5cbiAgICAvLyBUaGUgXCJhbGwgdmlld3NcIiBzaWRlYmFyIHRyaWdnZXIgdGFrZXMgdXAgb25lIHNsb3QuXG4gICAgY29uc3QgYXZhaWxhYmxlU2xvdENvdW50ID0gcG9zc2libGVTbG90Q291bnQgLSAxO1xuXG4gICAgLy8gSWYgdGhlcmUgYXJlIHRvbyBtYW55IHRhYnMsIHRoZSBcIk4gbW9yZVwiIHRyaWdnZXIgdGFrZXMgdXAgb25lIHNsb3QgYXMgd2VsbC5cbiAgICAvLyBCdXQgd2Ugd2FudCB0byBhdm9pZCB0aGUgXCIxIG1vcmVcIiBjYXNlLCBzbyB3ZSBvbmx5IHVzZSBhIHNsb3QgZm9yIFwiTiBtb3JlXCIgaWYgTiAhPSAxLlxuICAgIGlmIChhdmFpbGFibGVTbG90Q291bnQgPj0gZW5hYmxlZFZpZXdzLmxlbmd0aCkgcmV0dXJuIGVuYWJsZWRWaWV3cy5sZW5ndGg7XG4gICAgZWxzZSByZXR1cm4gYXZhaWxhYmxlU2xvdENvdW50IC0gMTsgLy8gdGhlIFwiTiBtb3JlXCIgdXNlcyB1cCBhIHNsb3QuXG4gIH1cblxuICBmdW5jdGlvbiBjYWxjdWxhdGVEaXNwbGF5ZWRWaWV3czxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIGZ1bGxWaWV3czogRnVsbFZpZXc8VSwgVj5bXSxcbiAgICBvdmVyZmxvd1ZpZXdJbmRleDogbnVtYmVyLFxuICAgIGFjdGl2ZVZpZXdJZDogQ29yZVN0YXRlPFUsIFY+WydhY3RpdmVWaWV3SWQnXSxcbiAgICB0ZW1wb3JhcnlWaWV3SWQ6IENvcmVTdGF0ZTxVLCBWPlsndGVtcG9yYXJ5Vmlld0lkJ10sXG4gICk6IEZ1bGxWaWV3PFUsIFY+W10ge1xuICAgIGNvbnN0IGRpc3BsYXllZFZpZXdzID0gZnVsbFZpZXdzLnNsaWNlKDAsIG92ZXJmbG93Vmlld0luZGV4KTtcblxuICAgIGNvbnN0IHZpZXdzVG9BbHdheXNEaXNwbGF5OiBGdWxsVmlldzxVLCBWPltdID0gW107XG5cbiAgICAvLyBUaGUgYWN0aXZlIHZpZXcgc2hvdWxkIGFsd2F5cyBiZSBkaXNwbGF5ZWQgaWYgaXQgZXhpc3RzXG4gICAgY29uc3QgYWN0aXZlVmlld0luRGlzcGxheSA9IGRpc3BsYXllZFZpZXdzLnNvbWUoXG4gICAgICB2aWV3ID0+IHZpZXcuaWQgPT09IGFjdGl2ZVZpZXdJZCxcbiAgICApO1xuICAgIGlmIChhY3RpdmVWaWV3SWQgIT09IG51bGwgJiYgIWFjdGl2ZVZpZXdJbkRpc3BsYXkpIHtcbiAgICAgIGNvbnN0IGFjdGl2ZVZpZXcgPSBmdWxsVmlld3MuZmluZCh2aWV3ID0+IHZpZXcuaWQgPT09IGFjdGl2ZVZpZXdJZCk7XG4gICAgICBpZiAoYWN0aXZlVmlldyAmJiBkaXNwbGF5ZWRWaWV3cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHZpZXdzVG9BbHdheXNEaXNwbGF5LnB1c2goYWN0aXZlVmlldyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gV2Ugc2hvdWxkIHRyeSB0byBkaXNwbGF5IHRoZSB0ZW1wb3JhcnkgdmlldyBpZiBpdCBleGlzdHNcbiAgICBjb25zdCB0ZW1wb3JhcnlWaWV3SW5EaXNwbGF5ID0gZGlzcGxheWVkVmlld3Muc29tZShcbiAgICAgIHZpZXcgPT4gdmlldy5pZCA9PT0gdGVtcG9yYXJ5Vmlld0lkLFxuICAgICk7XG4gICAgaWYgKFxuICAgICAgdGVtcG9yYXJ5Vmlld0lkICE9PSBudWxsICYmXG4gICAgICAhdGVtcG9yYXJ5Vmlld0luRGlzcGxheSAmJlxuICAgICAgdGVtcG9yYXJ5Vmlld0lkICE9IGFjdGl2ZVZpZXdJZFxuICAgICkge1xuICAgICAgY29uc3QgdGVtcG9yYXJ5VmlldyA9IGZ1bGxWaWV3cy5maW5kKHZpZXcgPT4gdmlldy5pZCA9PT0gdGVtcG9yYXJ5Vmlld0lkKTtcbiAgICAgIGlmIChcbiAgICAgICAgdGVtcG9yYXJ5VmlldyAmJlxuICAgICAgICBkaXNwbGF5ZWRWaWV3cy5sZW5ndGggPiB2aWV3c1RvQWx3YXlzRGlzcGxheS5sZW5ndGhcbiAgICAgICkge1xuICAgICAgICB2aWV3c1RvQWx3YXlzRGlzcGxheS5wdXNoKHRlbXBvcmFyeVZpZXcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2aWV3c1RvQWx3YXlzRGlzcGxheS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBudW1WaWV3c1RvUmVwbGFjZTogbnVtYmVyID0gdmlld3NUb0Fsd2F5c0Rpc3BsYXkubGVuZ3RoO1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgLi4uZGlzcGxheWVkVmlld3Muc2xpY2UoMCwgLTEgKiBudW1WaWV3c1RvUmVwbGFjZSksXG4gICAgICAgIC4uLnZpZXdzVG9BbHdheXNEaXNwbGF5LFxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlzcGxheWVkVmlld3M7XG4gIH1cblxuICBmdW5jdGlvbiB2aWV3c0J5UGVybWlzc2lvbjxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHZpZXdzOiBGdWxsVmlldzxVLCBWPltdLFxuICAgIHBlcm1pc3Npb246IFZpZXdQZXJtaXNzaW9uLFxuICApOiBGdWxsVmlldzxVLCBWPltdIHtcbiAgICByZXR1cm4gc29ydEJ5KFxuICAgICAgdmlld3MuZmlsdGVyKHZpZXcgPT4gdmlldy5wZXJtaXNzaW9uID09PSBwZXJtaXNzaW9uKSxcbiAgICAgIFt2ID0+ICF2LnN5c3RlbSwgJ3RpdGxlJ10sXG4gICAgKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNlYXJjaFZpZXdzPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4oXG4gICAgdmlld3M6IEZ1bGxWaWV3PFUsIFY+W10sXG4gICAgcXVlcnk6IHN0cmluZyxcbiAgICBvcHRpb25zPzogSUZ1c2VPcHRpb25zPFY+LFxuICApOiBGdWxsVmlldzxVLCBWPltdIHtcbiAgICBjb25zdCBmdXNlID0gbmV3IEZ1c2Uodmlld3MsIHtcbiAgICAgIHRocmVzaG9sZDogMC4yLFxuICAgICAga2V5czogWyd0aXRsZSddLFxuICAgICAgaW5jbHVkZU1hdGNoZXM6IHRydWUsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuXG4gICAgY29uc3QgbWF0Y2hlZE9wdGlvbnM6IEZ1c2VSZXN1bHQ8RnVsbFZpZXc8VSwgVj4+W10gPSBmdXNlLnNlYXJjaChxdWVyeSk7XG5cbiAgICByZXR1cm4gbWF0Y2hlZE9wdGlvbnMubWFwKHJlc3VsdCA9PiAoe1xuICAgICAgLi4ucmVzdWx0Lml0ZW0sXG4gICAgICB0aXRsZUhpZ2hsaWdodEluZGljZXM6IFtcbiAgICAgICAgLi4uKHJlc3VsdC5tYXRjaGVzPy5maW5kKG1hdGNoID0+IG1hdGNoLmtleSA9PT0gJ3RpdGxlJyk/LmluZGljZXMgPz9cbiAgICAgICAgICBbXSksXG4gICAgICBdLFxuICAgIH0pKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldE5leHRCZXN0QWN0aXZlVmlldzxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHN0YXRlOiBDb3JlU3RhdGU8VSwgVj4sXG4gICk6IFZbJ2lkJ10gfCBudWxsIHtcbiAgICBjb25zdCBlbmFibGVkVmlld3MgPSBnZXRFbmFibGVkVmlld3Moc3RhdGUudmlld3MpO1xuICAgIGNvbnN0IGN1cnJlbnRBY3RpdmVWaWV3SW5kZXggPSBlbmFibGVkVmlld3MuZmluZEluZGV4KFxuICAgICAgdmlldyA9PiB2aWV3LmlkID09PSBzdGF0ZS5hY3RpdmVWaWV3SWQsXG4gICAgKTtcblxuICAgIGlmIChlbmFibGVkVmlld3MubGVuZ3RoID09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAoY3VycmVudEFjdGl2ZVZpZXdJbmRleCA9PT0gLTEpIHJldHVybiBlbmFibGVkVmlld3NbMF0uaWQ7XG4gICAgcmV0dXJuIChcbiAgICAgIGVuYWJsZWRWaWV3c1tjdXJyZW50QWN0aXZlVmlld0luZGV4ICsgMV0/LmlkID8/XG4gICAgICBlbmFibGVkVmlld3NbY3VycmVudEFjdGl2ZVZpZXdJbmRleCAtIDFdPy5pZCA/P1xuICAgICAgZW5hYmxlZFZpZXdzWzBdLmlkXG4gICAgKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlbGV0ZVZpZXc8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PihcbiAgICBzdGF0ZTogQ29yZVN0YXRlPFUsIFY+LFxuICAgIGlkOiBWWydpZCddLFxuICApOiBDb3JlU3RhdGU8VSwgVj4ge1xuICAgIGNvbnN0IGFjdGl2ZVZpZXdJZCA9XG4gICAgICBzdGF0ZS5hY3RpdmVWaWV3SWQgPT09IGlkXG4gICAgICAgID8gZ2V0TmV4dEJlc3RBY3RpdmVWaWV3KHN0YXRlKVxuICAgICAgICA6IHN0YXRlLmFjdGl2ZVZpZXdJZDtcbiAgICBjb25zdCB0ZW1wb3JhcnlWaWV3SWQgPVxuICAgICAgc3RhdGUudGVtcG9yYXJ5Vmlld0lkID09PSBpZCA/IG51bGwgOiBzdGF0ZS50ZW1wb3JhcnlWaWV3SWQ7XG4gICAgY29uc3Qgdmlld3MgPSBzdGF0ZS52aWV3cy5maWx0ZXIodmlldyA9PiB2aWV3LmlkICE9PSBpZCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgdmlld3MsXG4gICAgICBhY3RpdmVWaWV3SWQsXG4gICAgICB0ZW1wb3JhcnlWaWV3SWQsXG4gICAgICBkZWxldGluZ1ZpZXdDb250ZXh0OiBudWxsLFxuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBzZXRFbmFibGVkPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4oXG4gICAgc3RhdGU6IENvcmVTdGF0ZTxVLCBWPixcbiAgICBpZDogVlsnaWQnXSxcbiAgICBlbmFibGVkOiBib29sZWFuLFxuICApOiBDb3JlU3RhdGU8VSwgVj4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHZpZXdzOiBzdGF0ZS52aWV3cy5tYXAodmlldyA9PlxuICAgICAgICB2aWV3LmlkID09PSBpZCA/IHsgLi4udmlldywgZW5hYmxlZCB9IDogdmlldyxcbiAgICAgICksXG4gICAgICBhY3RpdmVWaWV3SWQ6XG4gICAgICAgICFlbmFibGVkICYmIHN0YXRlLmFjdGl2ZVZpZXdJZCA9PT0gaWRcbiAgICAgICAgICA/IGdldE5leHRCZXN0QWN0aXZlVmlldyhzdGF0ZSlcbiAgICAgICAgICA6IHN0YXRlLmFjdGl2ZVZpZXdJZCxcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gd2l0aER1cGxpY2F0ZVZpZXc8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PihcbiAgICB2aWV3czogVltdLFxuICAgIGR1cGxpY2F0ZWRWaWV3OiBWLFxuICAgIG5ld1ZpZXc6IFYsXG4gICk6IFZbXSB7XG4gICAgY29uc3Qgc291cmNlSW5kZXggPSB2aWV3cy5maW5kSW5kZXgodmlldyA9PiB2aWV3LmlkID09PSBkdXBsaWNhdGVkVmlldy5pZCk7XG4gICAgaWYgKHNvdXJjZUluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIFtuZXdWaWV3LCAuLi52aWV3c107XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLnZpZXdzLnNsaWNlKDAsIHNvdXJjZUluZGV4ICsgMSksXG4gICAgICAgIG5ld1ZpZXcsXG4gICAgICAgIC4uLnZpZXdzLnNsaWNlKHNvdXJjZUluZGV4ICsgMSksXG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHZpZXdPcmRlckNoYW5nZTxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHN0YXRlOiBDb3JlU3RhdGU8VSwgVj4sXG4gICAgcHJldmlvdXNFbmFibGVkSW5kZXg6IG51bWJlcixcbiAgICBuZXdFbmFibGVkSW5kZXg6IG51bWJlcixcbiAgKTogeyBzdGF0ZTogQ29yZVN0YXRlPFUsIFY+OyBzaG91bGRTYXZlOiBib29sZWFuIH0ge1xuICAgIGlmIChcbiAgICAgIHN0YXRlLmhhc1N5c3RlbVZpZXcgJiZcbiAgICAgIChwcmV2aW91c0VuYWJsZWRJbmRleCA9PT0gMCB8fCBuZXdFbmFibGVkSW5kZXggPT09IDApXG4gICAgKSB7XG4gICAgICByZXR1cm4geyBzdGF0ZSwgc2hvdWxkU2F2ZTogZmFsc2UgfTsgLy8gS2VlcCBzeXN0ZW0gdmlldyAoaW5kZXggMCkgaW4gcGxhY2VcbiAgICB9XG5cbiAgICBjb25zdCBhY3R1YWxQcmV2aW91c0luZGV4ID0gbWFwRW5hYmxlZEluZGV4VG9WaWV3SW5kZXgoXG4gICAgICBzdGF0ZS52aWV3cyxcbiAgICAgIHByZXZpb3VzRW5hYmxlZEluZGV4LFxuICAgICk7XG4gICAgY29uc3QgYWN0dWFsTmV3SW5kZXggPSBtYXBFbmFibGVkSW5kZXhUb1ZpZXdJbmRleChcbiAgICAgIHN0YXRlLnZpZXdzLFxuICAgICAgbmV3RW5hYmxlZEluZGV4LFxuICAgICk7XG5cbiAgICBjb25zdCBpdGVtID0gc3RhdGUudmlld3NbYWN0dWFsUHJldmlvdXNJbmRleF07XG4gICAgY29uc3Qgd2l0aG91dEl0ZW0gPSBzdGF0ZS52aWV3cy5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGFjdHVhbFByZXZpb3VzSW5kZXgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXRlOiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICB2aWV3czogW1xuICAgICAgICAgIC4uLndpdGhvdXRJdGVtLnNsaWNlKDAsIGFjdHVhbE5ld0luZGV4KSxcbiAgICAgICAgICBpdGVtLFxuICAgICAgICAgIC4uLndpdGhvdXRJdGVtLnNsaWNlKGFjdHVhbE5ld0luZGV4KSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICBzaG91bGRTYXZlOiB0cnVlLFxuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBnZXRQZXJtYW5lbnRWaWV3czxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHZpZXdzOiBWW10sXG4gICAgdGVtcG9yYXJ5Vmlld0lkOiBDb3JlU3RhdGU8VSwgVj5bJ3RlbXBvcmFyeVZpZXdJZCddLFxuICApOiBWW10ge1xuICAgIHJldHVybiB2aWV3cy5maWx0ZXIodmlldyA9PiB2aWV3LmlkICE9IHRlbXBvcmFyeVZpZXdJZCk7XG4gIH1cblxuICBmdW5jdGlvbiBzYXZlUGVybWFuZW50Vmlld3M8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PihcbiAgICBzYXZlOiBTYXZlPFUsIFY+LFxuICAgIHZpZXdzOiBWW10sXG4gICAgdGVtcG9yYXJ5Vmlld0lkOiBDb3JlU3RhdGU8VSwgVj5bJ3RlbXBvcmFyeVZpZXdJZCddLFxuICApIHtcbiAgICBjb25zdCBwZXJtYW5lbnRWaWV3cyA9IGdldFBlcm1hbmVudFZpZXdzKHZpZXdzLCB0ZW1wb3JhcnlWaWV3SWQpO1xuXG4gICAgc2F2ZShwZXJtYW5lbnRWaWV3cyk7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiByZWR1Y2U8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PihcbiAgICBzdGF0ZTogQ29yZVN0YXRlPFUsIFY+LFxuICAgIGFjdGlvbjogQWN0aW9uPFUsIFY+LFxuICAgIHNvdXJjZTogU291cmNlPFUsIFY+LFxuICAgIHNhdmU6IFNhdmU8VSwgVj4sXG4gICAgZHVwbGljYXRlOiBEdXBsaWNhdGU8VSwgVj4sXG4gICAgY29weUxpbms6IENvcHlMaW5rPFUsIFY+LFxuICAgIHNldEFjdGl2ZVZpZXdJZDogU2V0QWN0aXZlVmlld0lkPFUsIFY+LFxuICApOiBQcm9taXNlPENvcmVTdGF0ZTxVLCBWPj4ge1xuICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2xvYWQnOlxuICAgICAgICBjb25zdCB2aWV3cyA9IGF3YWl0IHNvdXJjZSgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIHZpZXdzLFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdzZXRBY3RpdmVWaWV3Jzoge1xuICAgICAgICBjb25zdCBhY3RpdmVWaWV3ID0gc3RhdGUudmlld3MuZmluZCh2ID0+IHYuaWQgPT09IGFjdGlvbi5pZCk7XG4gICAgICAgIGNvbnN0IHZpZXdzID1cbiAgICAgICAgICBhY3RpdmVWaWV3ICYmICFhY3RpdmVWaWV3LmVuYWJsZWRcbiAgICAgICAgICAgID8gc3RhdGUudmlld3MubWFwKHZpZXcgPT5cbiAgICAgICAgICAgICAgICB2aWV3LmlkID09PSBhY3Rpb24uaWQgPyB7IC4uLnZpZXcsIGVuYWJsZWQ6IHRydWUgfSA6IHZpZXcsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogc3RhdGUudmlld3M7XG4gICAgICAgIC8vIElmIGVuYWJsaW5nIHRoZSB2aWV3IGNoYW5nZWQgdGhlIHZpZXdzLCB3ZSBuZWVkIHRvIHNhdmUuXG4gICAgICAgIGlmICh2aWV3cyAhPT0gc3RhdGUudmlld3MpIHtcbiAgICAgICAgICBzYXZlUGVybWFuZW50Vmlld3Moc2F2ZSwgdmlld3MsIHN0YXRlLnRlbXBvcmFyeVZpZXdJZCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbm90aWZ5IHRoZSBjYWxsZXIgdGhhdCB0aGUgYWN0aXZlIHZpZXcgaGFzIGNoYW5nZWRcbiAgICAgICAgc2V0QWN0aXZlVmlld0lkKGFjdGlvbi5pZCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgYWN0aXZlVmlld0lkOiBhY3Rpb24uaWQsXG4gICAgICAgICAgdmlld3MsXG4gICAgICAgICAgYWxsOiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5hbGwsXG4gICAgICAgICAgICBzZWFyY2g6ICcnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgb3ZlcmZsb3c6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLm92ZXJmbG93LFxuICAgICAgICAgICAgc2VhcmNoOiAnJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjYXNlICdzZXRFbmFibGVkJzoge1xuICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IHNldEVuYWJsZWQoc3RhdGUsIGFjdGlvbi5pZCwgYWN0aW9uLmVuYWJsZWQpO1xuICAgICAgICBzYXZlUGVybWFuZW50Vmlld3Moc2F2ZSwgbmV3U3RhdGUudmlld3MsIG5ld1N0YXRlLnRlbXBvcmFyeVZpZXdJZCk7XG4gICAgICAgIHJldHVybiBuZXdTdGF0ZTtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnc2V0Q29udGFpbmVyV2lkdGgnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIGNvbnRhaW5lcldpZHRoOiBhY3Rpb24ud2lkdGgsXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ3NldE92ZXJmbG93UGlja2VyT3Blbic6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgb3ZlcmZsb3c6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLm92ZXJmbG93LFxuICAgICAgICAgICAgcGlja2VyT3BlbjogYWN0aW9uLm9wZW4sXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnc2V0T3ZlcmZsb3dTZWFyY2hRdWVyeSc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgb3ZlcmZsb3c6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLm92ZXJmbG93LFxuICAgICAgICAgICAgc2VhcmNoOiBhY3Rpb24ucXVlcnksXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnc2V0QWxsVmlld3NTZWFyY2hRdWVyeSc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgYWxsOiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5hbGwsXG4gICAgICAgICAgICBzZWFyY2g6IGFjdGlvbi5xdWVyeSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICd1cGRhdGVWaWV3Jzoge1xuICAgICAgICBpZiAoYWN0aW9uLnZpZXcuaWQgIT0gc3RhdGUudGVtcG9yYXJ5Vmlld0lkKSB7XG4gICAgICAgICAgY29uc3Qgdmlld3MgPSBzdGF0ZS52aWV3cy5tYXAodmlldyA9PlxuICAgICAgICAgICAgdmlldy5pZCA9PT0gYWN0aW9uLnZpZXcuaWQgPyBhY3Rpb24udmlldyA6IHZpZXcsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBzYXZlUGVybWFuZW50Vmlld3Moc2F2ZSwgdmlld3MsIHN0YXRlLnRlbXBvcmFyeVZpZXdJZCk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgdmlld3M6IHZpZXdzLFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVXBkYXRpbmcgYSB0ZW1wb3JhcnkgdmlldyBzYXZlcyB0aGUgdmlldyBhbmQgbWFrZXMgaXQgcGVybWFuZW50XG4gICAgICAgICAgY29uc3QgdGVtcG9yYXJ5Vmlld1RvU2F2ZSA9IGF3YWl0IGR1cGxpY2F0ZSh7IC4uLmFjdGlvbi52aWV3IH0pO1xuXG4gICAgICAgICAgY29uc3Qgdmlld3MgPSBzdGF0ZS52aWV3cy5tYXAodmlldyA9PlxuICAgICAgICAgICAgdmlldy5pZCA9PT0gYWN0aW9uLnZpZXcuaWQgPyB0ZW1wb3JhcnlWaWV3VG9TYXZlIDogdmlldyxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgc2F2ZVBlcm1hbmVudFZpZXdzKHNhdmUsIHZpZXdzLCBudWxsKTtcbiAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIHZpZXcgd2UganVzdCBzYXZlZCBpcyB0aGUgYWN0aXZlIHZpZXdcbiAgICAgICAgICBzZXRBY3RpdmVWaWV3SWQodGVtcG9yYXJ5Vmlld1RvU2F2ZS5pZCk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgdmlld3M6IHZpZXdzLFxuICAgICAgICAgICAgYWN0aXZlVmlld0lkOiB0ZW1wb3JhcnlWaWV3VG9TYXZlLmlkLFxuICAgICAgICAgICAgdGVtcG9yYXJ5Vmlld0lkOiBudWxsLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY2FzZSAnZGVsZXRlVmlldyc6IHtcbiAgICAgICAgY29uc3QgbmV3U3RhdGUgPSBkZWxldGVWaWV3KHN0YXRlLCBhY3Rpb24udmlldy5pZCk7XG4gICAgICAgIHNhdmVQZXJtYW5lbnRWaWV3cyhzYXZlLCBuZXdTdGF0ZS52aWV3cywgc3RhdGUudGVtcG9yYXJ5Vmlld0lkKTtcbiAgICAgICAgcmV0dXJuIG5ld1N0YXRlO1xuICAgICAgfVxuXG4gICAgICBjYXNlICdkdXBsaWNhdGVWaWV3Jzoge1xuICAgICAgICBjb25zdCBuZXdWaWV3ID0gYXdhaXQgZHVwbGljYXRlKHsgLi4uYWN0aW9uLnZpZXcgfSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgdmlld3M6IHdpdGhEdXBsaWNhdGVWaWV3KHN0YXRlLnZpZXdzLCBhY3Rpb24udmlldywgbmV3VmlldyksXG4gICAgICAgICAgZWRpdGluZ1ZpZXdDb250ZXh0OiB7XG4gICAgICAgICAgICBpZDogbmV3Vmlldy5pZCxcbiAgICAgICAgICAgIGF1dG9SZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZW51Q29udGV4dDogYWN0aW9uLm1lbnVDb250ZXh0LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYWN0aXZlVmlld0lkOiBuZXdWaWV3LmlkLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjYXNlICdjb3B5TGlua1RvVmlldyc6XG4gICAgICAgIGF3YWl0IGNvcHlMaW5rKGFjdGlvbi52aWV3KTtcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuXG4gICAgICBjYXNlICd2aWV3T3JkZXJDaGFuZ2UnOiB7XG4gICAgICAgIGNvbnN0IHsgc3RhdGU6IG5ld1N0YXRlLCBzaG91bGRTYXZlIH0gPSB2aWV3T3JkZXJDaGFuZ2UoXG4gICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgYWN0aW9uLnByZXZpb3VzRW5hYmxlZEluZGV4LFxuICAgICAgICAgIGFjdGlvbi5uZXdFbmFibGVkSW5kZXgsXG4gICAgICAgICk7XG4gICAgICAgIGlmIChzaG91bGRTYXZlKSB7XG4gICAgICAgICAgc2F2ZVBlcm1hbmVudFZpZXdzKHNhdmUsIG5ld1N0YXRlLnZpZXdzLCBzdGF0ZS50ZW1wb3JhcnlWaWV3SWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdTdGF0ZTtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnc2V0QWxsVmlld3NUb2dnbGUnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIGFsbDoge1xuICAgICAgICAgICAgLi4uc3RhdGUuYWxsLFxuICAgICAgICAgICAgcHJpdmF0ZU9wZW46XG4gICAgICAgICAgICAgIGFjdGlvbi5wZXJtaXNzaW9uID09PSAncHJpdmF0ZSdcbiAgICAgICAgICAgICAgICA/IGFjdGlvbi5vcGVuXG4gICAgICAgICAgICAgICAgOiBzdGF0ZS5hbGwucHJpdmF0ZU9wZW4sXG4gICAgICAgICAgICBzaGFyZWRPcGVuOlxuICAgICAgICAgICAgICBhY3Rpb24ucGVybWlzc2lvbiA9PT0gJ3NoYXJlZCdcbiAgICAgICAgICAgICAgICA/IGFjdGlvbi5vcGVuXG4gICAgICAgICAgICAgICAgOiBzdGF0ZS5hbGwuc2hhcmVkT3BlbixcbiAgICAgICAgICAgIHB1YmxpY09wZW46XG4gICAgICAgICAgICAgIGFjdGlvbi5wZXJtaXNzaW9uID09PSAncHVibGljJ1xuICAgICAgICAgICAgICAgID8gYWN0aW9uLm9wZW5cbiAgICAgICAgICAgICAgICA6IHN0YXRlLmFsbC5wdWJsaWNPcGVuLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ3NldEVkaXRpbmdWaWV3JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBlZGl0aW5nVmlld0NvbnRleHQ6IGFjdGlvbi5jb250ZXh0LFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdzZXREZWxldGluZ1ZpZXcnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIGRlbGV0aW5nVmlld0NvbnRleHQ6IGFjdGlvbi5jb250ZXh0LFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdjcmVhdGVUZW1wb3JhcnlWaWV3JzpcbiAgICAgICAgY29uc3QgZXhpc3RpbmdQZXJtYW5lbnRWaWV3cyA9IGdldFBlcm1hbmVudFZpZXdzKFxuICAgICAgICAgIHN0YXRlLnZpZXdzLFxuICAgICAgICAgIHN0YXRlLnRlbXBvcmFyeVZpZXdJZCxcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBTd2FwIHRoZSBhY3RpdmUgdmlldyB0byB0aGUgdGVtcG9yYXJ5IHZpZXdcbiAgICAgICAgc2V0QWN0aXZlVmlld0lkKGFjdGlvbi52aWV3LmlkKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICB0ZW1wb3JhcnlWaWV3SWQ6IGFjdGlvbi52aWV3LmlkLFxuICAgICAgICAgIGFjdGl2ZVZpZXdJZDogYWN0aW9uLnZpZXcuaWQsXG4gICAgICAgICAgdmlld3M6IFsuLi5leGlzdGluZ1Blcm1hbmVudFZpZXdzLCBhY3Rpb24udmlld10sXG4gICAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLy8vLy8vLy8vLy8vLy8vXG4gIC8vIFV0aWxpdGllcyAvL1xuICAvLy8vLy8vLy8vLy8vLy9cblxuICBleHBvcnQgZnVuY3Rpb24gZ2V0UGVybWlzc2lvblRpdGxlKHBlcm1pc3Npb246IFZpZXdQZXJtaXNzaW9uKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHBlcm1pc3Npb24pIHtcbiAgICAgIGNhc2UgJ3ByaXZhdGUnOlxuICAgICAgICByZXR1cm4gJ1ByaXZhdGUnO1xuICAgICAgY2FzZSAnc2hhcmVkJzpcbiAgICAgICAgcmV0dXJuICdTaGFyZWQnO1xuICAgICAgY2FzZSAncHVibGljJzpcbiAgICAgICAgcmV0dXJuICdQdWJsaWMnO1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRQZXJtaXNzaW9uRGVzY3JpcHRpb24ocGVybWlzc2lvbjogVmlld1Blcm1pc3Npb24pOiBzdHJpbmcge1xuICAgIHN3aXRjaCAocGVybWlzc2lvbikge1xuICAgICAgY2FzZSAncHJpdmF0ZSc6XG4gICAgICAgIHJldHVybiAnUHJpdmF0ZSAtIE9ubHkgYXZhaWxhYmxlIHRvIHlvdSc7XG4gICAgICBjYXNlICdzaGFyZWQnOlxuICAgICAgICByZXR1cm4gJ1NoYXJlZCAtIE9ubHkgdmlzaWJsZSB0byB0aG9zZSB3aXRoIGFjY2Vzcyc7XG4gICAgICBjYXNlICdwdWJsaWMnOlxuICAgICAgICByZXR1cm4gJ1B1YmxpYyAtIFZpc2libGUgdG8gZXZlcnlvbmUnO1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBpc1NoYXJlZFZpZXc8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PihcbiAgICB2aWV3PzogRnVsbFZpZXc8VSwgVj4sXG4gICk6IHZpZXcgaXMgRnVsbFZpZXc8VSwgVj4gJiB7IHBlcm1pc3Npb246ICdzaGFyZWQnOyBzaGFyZWRVc2VyczogVVtdIH0ge1xuICAgIHJldHVybiB2aWV3Py5wZXJtaXNzaW9uID09PSAnc2hhcmVkJztcbiAgfVxufVxuIl19
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, ElementRef, Input, ViewChild, } from '@angular/core';
|
|
2
2
|
import { filter, map, merge, Subject } from 'rxjs';
|
|
3
|
+
import { RivViews } from '../state';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
import * as i1 from "@angular/common";
|
|
5
6
|
import * as i2 from "../all-views-modal/all-views-modal.component";
|
|
@@ -11,10 +12,11 @@ import * as i7 from "../../../overlay/overlay.directive";
|
|
|
11
12
|
import * as i8 from "../../../input/search/search.component";
|
|
12
13
|
import * as i9 from "../../../size/size.directive";
|
|
13
14
|
import * as i10 from "../../../overlay/toast/toast.component";
|
|
14
|
-
import * as i11 from "../../../
|
|
15
|
-
import * as i12 from "
|
|
16
|
-
import * as i13 from "
|
|
17
|
-
import * as i14 from "../../../
|
|
15
|
+
import * as i11 from "../../../overlay/callout/tooltip/tooltip.directive";
|
|
16
|
+
import * as i12 from "../../../format/truncate/truncate.component";
|
|
17
|
+
import * as i13 from "../view-menu/view-menu.component";
|
|
18
|
+
import * as i14 from "../../../visualization/zero-state/zero-state.component";
|
|
19
|
+
import * as i15 from "../../../format/pipes/number.pipe";
|
|
18
20
|
export class ViewsComponent {
|
|
19
21
|
constructor() {
|
|
20
22
|
this.sideSheetTopOffset = 0;
|
|
@@ -58,12 +60,25 @@ export class ViewsComponent {
|
|
|
58
60
|
ngOnInit() {
|
|
59
61
|
this.showLinkCopiedToast = merge(this.manager.actions.pipe(filter(({ type }) => type === 'copyLinkToView'), map(() => true)), this.toastClosed.pipe(map(() => false)));
|
|
60
62
|
}
|
|
63
|
+
getPermissionIcon(permission) {
|
|
64
|
+
switch (permission) {
|
|
65
|
+
case 'private':
|
|
66
|
+
return 'Lock';
|
|
67
|
+
case 'shared':
|
|
68
|
+
return 'UserCheck';
|
|
69
|
+
case 'public':
|
|
70
|
+
return 'Users';
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
getPermissionDescription(permission) {
|
|
74
|
+
return RivViews.getPermissionDescription(permission);
|
|
75
|
+
}
|
|
61
76
|
}
|
|
62
77
|
ViewsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ViewsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
63
|
-
ViewsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ViewsComponent, selector: "riv-views", inputs: { manager: "manager", sideSheetTopOffset: "sideSheetTopOffset" }, viewQueries: [{ propertyName: "overflowTrigger", first: true, predicate: ["overflowTrigger"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n (rivClientSize)=\"\n manager?.actions?.next({ type: 'setContainerWidth', width: $event.width })\n \"\n class=\"container\"\n>\n <ng-container *ngIf=\"manager?.state | async; let s\">\n <ng-container\n *ngFor=\"let view of s.displayedViews; let i = index; trackBy: trackById\"\n >\n <ng-container *ngIf=\"view.active; else inactiveTab\">\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'tab'\"\n class=\"active-menu\"\n >\n <ng-template #menuTrigger>\n <div\n class=\"tab active\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"!view.system\"\n [attr.droppable]=\"!view.system\"\n (dragstart)=\"dragStart(i, view.title, view.system)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i, view.system)\"\n (drop)=\"drop(i, false)\"\n >\n <riv-icon\n class=\"tab-reorder\"\n [class.hidden-class]=\"view.system\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div rivTruncate>\n {{ view.title }}\n </div>\n </div>\n </ng-template>\n </riv-view-menu>\n </ng-container>\n <ng-template #inactiveTab>\n <button\n class=\"tab\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"!view.system\"\n [attr.droppable]=\"!view.system\"\n (dragstart)=\"dragStart(i, view.title, view.system)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i, view.system)\"\n (drop)=\"drop(i, false)\"\n (click)=\"\n manager?.actions?.next({\n type: 'setActiveView',\n id: view.id,\n source: 'tab'\n })\n \"\n >\n <riv-icon\n class=\"tab-reorder\"\n [class.hidden-class]=\"view.system\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <span rivTruncate>\n {{ view.title }}\n </span>\n </button>\n </ng-template>\n </ng-container>\n <button\n *ngIf=\"s.allEnabledViews.length - s.displayedViews.length; let count\"\n class=\"tab overflow\"\n rivTruncate\n #overflowTrigger\n (click)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: true })\n \"\n >\n {{ count | rivNumber }} more\n </button>\n <ng-container *ngIf=\"s.overflow.pickerOpen\">\n <riv-callout\n *riv-overlay\n [anchor]=\"overflowTrigger?.nativeElement\"\n [isModal]=\"true\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [preferredPosition]=\"'bottom-left'\"\n (close)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: false })\n \"\n >\n <div class=\"overflow-callout\">\n <riv-search\n [value]=\"s.overflow.search\"\n (valueChange)=\"\n manager?.actions?.next({\n type: 'setOverflowSearchQuery',\n query: $event\n })\n \"\n ></riv-search>\n <div class=\"overflow-view-list\">\n <button\n *ngFor=\"let view of s.enabledViews; let i = index\"\n class=\"overflow-view\"\n [class.system]=\"view.system\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-top]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-bottom]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"!view.system\"\n [attr.droppable]=\"!view.system\"\n (dragstart)=\"dragStart(i, view.title, view.system)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i, view.system)\"\n (drop)=\"drop(i, true)\"\n (click)=\"\n manager?.actions?.next({\n type: 'setActiveView',\n id: view.id,\n source: 'overflow'\n });\n manager?.actions?.next({\n type: 'setOverflowPickerOpen',\n open: false\n })\n \"\n >\n <riv-icon\n *ngIf=\"!view.system\"\n class=\"overflow-reorder\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div class=\"overflow-title\" rivTruncate>\n <riv-highlight\n [indices]=\"view.titleHighlightIndices ?? []\"\n [text]=\"view.title\"\n ></riv-highlight>\n </div>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'overflow'\"\n ></riv-view-menu>\n </button>\n <riv-zero-state\n *ngIf=\"!s.enabledViews.length\"\n [message]=\"'No matching views.'\"\n ></riv-zero-state>\n </div>\n </div>\n </riv-callout>\n </ng-container>\n <div class=\"all-views-button-container\">\n <button\n rivButton\n [variant]=\"'ghost'\"\n [size]=\"'medium'\"\n (click)=\"showAllViews = true\"\n >\n All views\n </button>\n </div>\n </ng-container>\n</div>\n\n<riv-all-views-modal\n *ngIf=\"showAllViews\"\n [manager]=\"manager\"\n [topOffset]=\"sideSheetTopOffset\"\n (close)=\"showAllViews = false\"\n></riv-all-views-modal>\n\n<riv-toast *ngIf=\"showLinkCopiedToast | async\" (close)=\"toastClosed.next()\">\n Link to view copied to clipboard\n</riv-toast>\n", styles: [".container{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,calc(var(--base-grid-size) * 81));justify-content:start;border-bottom:var(--border-width) solid var(--border-light)}.tab{font:var(--input-medium);color:var(--type-light-low-contrast);background-color:var(--surface-light-1);border:var(--border-width) solid var(--border-light);border-bottom:none;border-top-left-radius:var(--border-radius-medium);border-top-right-radius:var(--border-radius-medium);padding:var(--size-small) var(--size-large) var(--size-small) 0;cursor:pointer;transition:background-color var(--medium-transition);display:flex;justify-content:flex-start;align-items:center;position:relative}.tab:hover{background-color:var(--surface-light-2)}.tab:active{background-color:var(--surface-light-3)}.tab:not(:first-child),.active-menu{margin-left:calc(var(--border-width) * -1)}.tab.active{color:var(--purp-80);background-color:var(--surface-light-0);border-bottom:var(--border-width) solid var(--surface-light-0);margin-bottom:calc(var(--border-width) * -1);z-index:1;width:100%;max-width:100%;height:100%;max-height:100%}.tab.active:active{border:var(--border-width) solid var(--purp-80)}.tab.dragging{cursor:grabbing}.tab.dragged-over-left:before,.tab.dragged-over-right:before{content:\"\";position:absolute;top:0;bottom:0;width:var(--size-xxsmall);background-color:var(--brand);box-shadow:0 0 var(--size-xxsmall) var(--brand)}.tab.dragged-over-left:before{left:0}.tab.dragged-over-right:before{right:0}.tab-reorder{color:var(--type-light-low-contrast);opacity:0;transition:opacity var(--short-transition);cursor:grab;margin:0 var(--size-xsmall)}.tab:hover .tab-reorder{opacity:1}.hidden-class{visibility:hidden}.active-menu{display:inline-flex;color:var(--type-light-link-hover);--size: calc(100% + calc(var(--border-width)));width:var(--size);max-width:var(--size);height:var(--size);max-height:var(--size);cursor:pointer;font:var(--input-medium)}.tab.overflow{padding-left:var(--size-large)}.all-views-button-container{padding:var(--size-xxsmall)}.overflow-callout{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-medium);height:calc(var(--base-grid-size) * 120);max-height:50vh;width:calc(var(--base-grid-size) * 75);max-width:50vw}.overflow-view-list{display:flex;flex-direction:column;gap:var(--size-small);flex-grow:1;overflow-y:auto}.overflow-view{display:flex;align-items:center;gap:var(--size-small);cursor:pointer;border-radius:var(--border-radius-medium);transition:background-color var(--short-transition);position:relative}.overflow-view.system{padding-left:var(--size-small)}.overflow-view:hover{background-color:var(--surface-light-2)}.overflow-view.dragged-over-top:before,.overflow-view.dragged-over-bottom:before{content:\"\";position:absolute;left:0;right:0;height:var(--size-xxsmall);background-color:var(--brand);box-shadow:0 0 var(--size-xxsmall) var(--brand)}.overflow-view.dragged-over-top:before{top:0}.overflow-view.dragged-over-bottom:before{bottom:0}.overflow-reorder{color:var(--type-light-low-contrast);cursor:grab}.overflow-title{flex-grow:1;text-align:left}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.AllViewsModalComponent, selector: "riv-all-views-modal", inputs: ["manager", "topOffset"], outputs: ["close"] }, { kind: "component", type: i3.ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "current"] }, { kind: "component", type: i4.CalloutComponent, selector: "riv-callout", inputs: ["anchor", "isModal", "preferredPosition", "allowedPositions", "fallbackDirection", "showCaret", "theme"], outputs: ["close"] }, { kind: "component", type: i5.HighlightComponent, selector: "riv-highlight", inputs: ["text", "indices"] }, { kind: "component", type: i6.IconComponent, selector: "riv-icon", inputs: ["name", "size", "customSize", "strokeWidth"] }, { kind: "directive", type: i7.OverlayDirective, selector: "[riv-overlay]" }, { kind: "component", type: i8.SearchComponent, selector: "riv-search", inputs: ["placeholder", "name", "labelTemplate"] }, { kind: "directive", type: i9.SizeDirective, selector: "[rivClientSize]", outputs: ["rivClientSize"] }, { kind: "component", type: i10.ToastComponent, selector: "riv-toast", inputs: ["variant", "icon"], outputs: ["close"] }, { kind: "component", type: i11.TruncateComponent, selector: "[rivTruncate]", inputs: ["maxTooltipWidth"] }, { kind: "component", type: i12.ViewMenuComponent, selector: "riv-view-menu", inputs: ["manager", "view", "menuContext"] }, { kind: "component", type: i13.ZeroStateComponent, selector: "riv-zero-state", inputs: ["message", "title", "icon"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i14.NumberPipe, name: "rivNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
78
|
+
ViewsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ViewsComponent, selector: "riv-views", inputs: { manager: "manager", sideSheetTopOffset: "sideSheetTopOffset" }, viewQueries: [{ propertyName: "overflowTrigger", first: true, predicate: ["overflowTrigger"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n (rivClientSize)=\"\n manager?.actions?.next({ type: 'setContainerWidth', width: $event.width })\n \"\n class=\"container\"\n>\n <ng-container *ngIf=\"manager?.state | async; let s\">\n <ng-container\n *ngFor=\"let view of s.displayedViews; let i = index; trackBy: trackById\"\n >\n <ng-container *ngIf=\"view.active; else inactiveTab\">\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'tab'\"\n class=\"active-menu\"\n >\n <ng-template #menuTrigger>\n <div\n class=\"tab active\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"!view.system\"\n [attr.droppable]=\"!view.system\"\n (dragstart)=\"dragStart(i, view.title, view.system)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i, view.system)\"\n (drop)=\"drop(i, false)\"\n >\n <riv-icon\n class=\"tab-reorder\"\n [class.hidden-class]=\"view.system\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div rivTruncate>\n {{ view.title }}\n </div>\n <riv-icon\n class=\"permission-icon\"\n [name]=\"getPermissionIcon(view.permission)\"\n [size]=\"12\"\n [rivTooltip]=\"getPermissionDescription(view.permission)\"\n ></riv-icon>\n </div>\n </ng-template>\n </riv-view-menu>\n </ng-container>\n <ng-template #inactiveTab>\n <button\n class=\"tab\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"!view.system\"\n [attr.droppable]=\"!view.system\"\n (dragstart)=\"dragStart(i, view.title, view.system)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i, view.system)\"\n (drop)=\"drop(i, false)\"\n (click)=\"\n manager?.actions?.next({\n type: 'setActiveView',\n id: view.id,\n source: 'tab'\n })\n \"\n >\n <riv-icon\n class=\"tab-reorder\"\n [class.hidden-class]=\"view.system\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <span rivTruncate>\n {{ view.title }}\n </span>\n </button>\n </ng-template>\n </ng-container>\n <button\n *ngIf=\"s.allEnabledViews.length - s.displayedViews.length; let count\"\n class=\"tab overflow\"\n rivTruncate\n #overflowTrigger\n (click)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: true })\n \"\n >\n {{ count | rivNumber }} more\n </button>\n <ng-container *ngIf=\"s.overflow.pickerOpen\">\n <riv-callout\n *riv-overlay\n [anchor]=\"overflowTrigger?.nativeElement\"\n [isModal]=\"true\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [preferredPosition]=\"'bottom-left'\"\n (close)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: false })\n \"\n >\n <div class=\"overflow-callout\">\n <riv-search\n [value]=\"s.overflow.search\"\n (valueChange)=\"\n manager?.actions?.next({\n type: 'setOverflowSearchQuery',\n query: $event\n })\n \"\n ></riv-search>\n <div class=\"overflow-view-list\">\n <button\n *ngFor=\"let view of s.enabledViews; let i = index\"\n class=\"overflow-view\"\n [class.system]=\"view.system\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-top]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-bottom]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"!view.system\"\n [attr.droppable]=\"!view.system\"\n (dragstart)=\"dragStart(i, view.title, view.system)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i, view.system)\"\n (drop)=\"drop(i, true)\"\n (click)=\"\n manager?.actions?.next({\n type: 'setActiveView',\n id: view.id,\n source: 'overflow'\n });\n manager?.actions?.next({\n type: 'setOverflowPickerOpen',\n open: false\n })\n \"\n >\n <riv-icon\n *ngIf=\"!view.system\"\n class=\"overflow-reorder\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div class=\"overflow-title\" rivTruncate>\n <riv-highlight\n [indices]=\"view.titleHighlightIndices ?? []\"\n [text]=\"view.title\"\n ></riv-highlight>\n </div>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'overflow'\"\n ></riv-view-menu>\n </button>\n <riv-zero-state\n *ngIf=\"!s.enabledViews.length\"\n [message]=\"'No matching views.'\"\n ></riv-zero-state>\n </div>\n </div>\n </riv-callout>\n </ng-container>\n <div class=\"all-views-button-container\">\n <button\n rivButton\n [variant]=\"'ghost'\"\n [size]=\"'medium'\"\n (click)=\"showAllViews = true\"\n >\n All views\n </button>\n </div>\n </ng-container>\n</div>\n\n<riv-all-views-modal\n *ngIf=\"showAllViews\"\n [manager]=\"manager\"\n [topOffset]=\"sideSheetTopOffset\"\n (close)=\"showAllViews = false\"\n></riv-all-views-modal>\n\n<riv-toast *ngIf=\"showLinkCopiedToast | async\" (close)=\"toastClosed.next()\">\n Link to view copied to clipboard\n</riv-toast>\n", styles: [".container{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,calc(var(--base-grid-size) * 81));justify-content:start;border-bottom:var(--border-width) solid var(--border-light)}.tab{font:var(--input-medium);color:var(--type-light-low-contrast);background-color:var(--surface-light-1);border:var(--border-width) solid var(--border-light);border-bottom:none;border-top-left-radius:var(--border-radius-medium);border-top-right-radius:var(--border-radius-medium);padding:var(--size-small) var(--size-large) var(--size-small) 0;cursor:pointer;transition:background-color var(--medium-transition);display:flex;justify-content:flex-start;align-items:center;position:relative}.tab:hover{background-color:var(--surface-light-2)}.tab:active{background-color:var(--surface-light-3)}.tab:not(:first-child),.active-menu{margin-left:calc(var(--border-width) * -1)}.tab.active{color:var(--purp-80);background-color:var(--surface-light-0);border-bottom:var(--border-width) solid var(--surface-light-0);margin-bottom:calc(var(--border-width) * -1);z-index:1;width:100%;max-width:100%;height:100%;max-height:100%}.tab.active:active{border:var(--border-width) solid var(--purp-80)}.tab.dragging{cursor:grabbing}.tab.dragged-over-left:before,.tab.dragged-over-right:before{content:\"\";position:absolute;top:0;bottom:0;width:var(--size-xxsmall);background-color:var(--brand);box-shadow:0 0 var(--size-xxsmall) var(--brand)}.tab.dragged-over-left:before{left:0}.tab.dragged-over-right:before{right:0}.tab-reorder{color:var(--type-light-low-contrast);opacity:0;transition:opacity var(--short-transition);cursor:grab;margin:0 var(--size-xsmall)}.tab:hover .tab-reorder{opacity:1}.hidden-class{visibility:hidden}.active-menu{display:inline-flex;color:var(--type-light-link-hover);--size: calc(100% + calc(var(--border-width)));width:var(--size);max-width:var(--size);height:var(--size);max-height:var(--size);cursor:pointer;font:var(--input-medium)}.tab.overflow{padding-left:var(--size-large)}.all-views-button-container{padding:var(--size-xxsmall)}.overflow-callout{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-medium);height:calc(var(--base-grid-size) * 120);max-height:50vh;width:calc(var(--base-grid-size) * 75);max-width:50vw}.overflow-view-list{display:flex;flex-direction:column;gap:var(--size-small);flex-grow:1;overflow-y:auto}.overflow-view{display:flex;align-items:center;gap:var(--size-small);cursor:pointer;border-radius:var(--border-radius-medium);transition:background-color var(--short-transition);position:relative}.overflow-view.system{padding-left:var(--size-small)}.overflow-view:hover{background-color:var(--surface-light-2)}.overflow-view.dragged-over-top:before,.overflow-view.dragged-over-bottom:before{content:\"\";position:absolute;left:0;right:0;height:var(--size-xxsmall);background-color:var(--brand);box-shadow:0 0 var(--size-xxsmall) var(--brand)}.overflow-view.dragged-over-top:before{top:0}.overflow-view.dragged-over-bottom:before{bottom:0}.overflow-reorder{color:var(--type-light-low-contrast);cursor:grab}.overflow-title{flex-grow:1;text-align:left}.permission-icon{color:var(--type-light-low-contrast);margin-left:var(--size-xsmall);flex-shrink:0}.tab.active .permission-icon{color:var(--purp-80)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.AllViewsModalComponent, selector: "riv-all-views-modal", inputs: ["manager", "topOffset"], outputs: ["close"] }, { kind: "component", type: i3.ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "current"] }, { kind: "component", type: i4.CalloutComponent, selector: "riv-callout", inputs: ["anchor", "isModal", "preferredPosition", "allowedPositions", "fallbackDirection", "showCaret", "theme"], outputs: ["close"] }, { kind: "component", type: i5.HighlightComponent, selector: "riv-highlight", inputs: ["text", "indices"] }, { kind: "component", type: i6.IconComponent, selector: "riv-icon", inputs: ["name", "size", "customSize", "strokeWidth"] }, { kind: "directive", type: i7.OverlayDirective, selector: "[riv-overlay]" }, { kind: "component", type: i8.SearchComponent, selector: "riv-search", inputs: ["placeholder", "name", "labelTemplate"] }, { kind: "directive", type: i9.SizeDirective, selector: "[rivClientSize]", outputs: ["rivClientSize"] }, { kind: "component", type: i10.ToastComponent, selector: "riv-toast", inputs: ["variant", "icon"], outputs: ["close"] }, { kind: "directive", type: i11.TooltipDirective, selector: "[rivTooltip]", inputs: ["rivTooltip", "rivTooltipTheme", "rivTooltipMaxWidth", "rivTooltipPreferredPosition", "rivTooltipCloseDelay", "rivTooltipOpenDelay"] }, { kind: "component", type: i12.TruncateComponent, selector: "[rivTruncate]", inputs: ["maxTooltipWidth"] }, { kind: "component", type: i13.ViewMenuComponent, selector: "riv-view-menu", inputs: ["manager", "view", "menuContext"] }, { kind: "component", type: i14.ZeroStateComponent, selector: "riv-zero-state", inputs: ["message", "title", "icon"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i15.NumberPipe, name: "rivNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
64
79
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ViewsComponent, decorators: [{
|
|
65
80
|
type: Component,
|
|
66
|
-
args: [{ selector: 'riv-views', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n (rivClientSize)=\"\n manager?.actions?.next({ type: 'setContainerWidth', width: $event.width })\n \"\n class=\"container\"\n>\n <ng-container *ngIf=\"manager?.state | async; let s\">\n <ng-container\n *ngFor=\"let view of s.displayedViews; let i = index; trackBy: trackById\"\n >\n <ng-container *ngIf=\"view.active; else inactiveTab\">\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'tab'\"\n class=\"active-menu\"\n >\n <ng-template #menuTrigger>\n <div\n class=\"tab active\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"!view.system\"\n [attr.droppable]=\"!view.system\"\n (dragstart)=\"dragStart(i, view.title, view.system)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i, view.system)\"\n (drop)=\"drop(i, false)\"\n >\n <riv-icon\n class=\"tab-reorder\"\n [class.hidden-class]=\"view.system\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div rivTruncate>\n {{ view.title }}\n </div>\n </div>\n </ng-template>\n </riv-view-menu>\n </ng-container>\n <ng-template #inactiveTab>\n <button\n class=\"tab\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"!view.system\"\n [attr.droppable]=\"!view.system\"\n (dragstart)=\"dragStart(i, view.title, view.system)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i, view.system)\"\n (drop)=\"drop(i, false)\"\n (click)=\"\n manager?.actions?.next({\n type: 'setActiveView',\n id: view.id,\n source: 'tab'\n })\n \"\n >\n <riv-icon\n class=\"tab-reorder\"\n [class.hidden-class]=\"view.system\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <span rivTruncate>\n {{ view.title }}\n </span>\n </button>\n </ng-template>\n </ng-container>\n <button\n *ngIf=\"s.allEnabledViews.length - s.displayedViews.length; let count\"\n class=\"tab overflow\"\n rivTruncate\n #overflowTrigger\n (click)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: true })\n \"\n >\n {{ count | rivNumber }} more\n </button>\n <ng-container *ngIf=\"s.overflow.pickerOpen\">\n <riv-callout\n *riv-overlay\n [anchor]=\"overflowTrigger?.nativeElement\"\n [isModal]=\"true\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [preferredPosition]=\"'bottom-left'\"\n (close)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: false })\n \"\n >\n <div class=\"overflow-callout\">\n <riv-search\n [value]=\"s.overflow.search\"\n (valueChange)=\"\n manager?.actions?.next({\n type: 'setOverflowSearchQuery',\n query: $event\n })\n \"\n ></riv-search>\n <div class=\"overflow-view-list\">\n <button\n *ngFor=\"let view of s.enabledViews; let i = index\"\n class=\"overflow-view\"\n [class.system]=\"view.system\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-top]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-bottom]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"!view.system\"\n [attr.droppable]=\"!view.system\"\n (dragstart)=\"dragStart(i, view.title, view.system)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i, view.system)\"\n (drop)=\"drop(i, true)\"\n (click)=\"\n manager?.actions?.next({\n type: 'setActiveView',\n id: view.id,\n source: 'overflow'\n });\n manager?.actions?.next({\n type: 'setOverflowPickerOpen',\n open: false\n })\n \"\n >\n <riv-icon\n *ngIf=\"!view.system\"\n class=\"overflow-reorder\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div class=\"overflow-title\" rivTruncate>\n <riv-highlight\n [indices]=\"view.titleHighlightIndices ?? []\"\n [text]=\"view.title\"\n ></riv-highlight>\n </div>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'overflow'\"\n ></riv-view-menu>\n </button>\n <riv-zero-state\n *ngIf=\"!s.enabledViews.length\"\n [message]=\"'No matching views.'\"\n ></riv-zero-state>\n </div>\n </div>\n </riv-callout>\n </ng-container>\n <div class=\"all-views-button-container\">\n <button\n rivButton\n [variant]=\"'ghost'\"\n [size]=\"'medium'\"\n (click)=\"showAllViews = true\"\n >\n All views\n </button>\n </div>\n </ng-container>\n</div>\n\n<riv-all-views-modal\n *ngIf=\"showAllViews\"\n [manager]=\"manager\"\n [topOffset]=\"sideSheetTopOffset\"\n (close)=\"showAllViews = false\"\n></riv-all-views-modal>\n\n<riv-toast *ngIf=\"showLinkCopiedToast | async\" (close)=\"toastClosed.next()\">\n Link to view copied to clipboard\n</riv-toast>\n", styles: [".container{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,calc(var(--base-grid-size) * 81));justify-content:start;border-bottom:var(--border-width) solid var(--border-light)}.tab{font:var(--input-medium);color:var(--type-light-low-contrast);background-color:var(--surface-light-1);border:var(--border-width) solid var(--border-light);border-bottom:none;border-top-left-radius:var(--border-radius-medium);border-top-right-radius:var(--border-radius-medium);padding:var(--size-small) var(--size-large) var(--size-small) 0;cursor:pointer;transition:background-color var(--medium-transition);display:flex;justify-content:flex-start;align-items:center;position:relative}.tab:hover{background-color:var(--surface-light-2)}.tab:active{background-color:var(--surface-light-3)}.tab:not(:first-child),.active-menu{margin-left:calc(var(--border-width) * -1)}.tab.active{color:var(--purp-80);background-color:var(--surface-light-0);border-bottom:var(--border-width) solid var(--surface-light-0);margin-bottom:calc(var(--border-width) * -1);z-index:1;width:100%;max-width:100%;height:100%;max-height:100%}.tab.active:active{border:var(--border-width) solid var(--purp-80)}.tab.dragging{cursor:grabbing}.tab.dragged-over-left:before,.tab.dragged-over-right:before{content:\"\";position:absolute;top:0;bottom:0;width:var(--size-xxsmall);background-color:var(--brand);box-shadow:0 0 var(--size-xxsmall) var(--brand)}.tab.dragged-over-left:before{left:0}.tab.dragged-over-right:before{right:0}.tab-reorder{color:var(--type-light-low-contrast);opacity:0;transition:opacity var(--short-transition);cursor:grab;margin:0 var(--size-xsmall)}.tab:hover .tab-reorder{opacity:1}.hidden-class{visibility:hidden}.active-menu{display:inline-flex;color:var(--type-light-link-hover);--size: calc(100% + calc(var(--border-width)));width:var(--size);max-width:var(--size);height:var(--size);max-height:var(--size);cursor:pointer;font:var(--input-medium)}.tab.overflow{padding-left:var(--size-large)}.all-views-button-container{padding:var(--size-xxsmall)}.overflow-callout{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-medium);height:calc(var(--base-grid-size) * 120);max-height:50vh;width:calc(var(--base-grid-size) * 75);max-width:50vw}.overflow-view-list{display:flex;flex-direction:column;gap:var(--size-small);flex-grow:1;overflow-y:auto}.overflow-view{display:flex;align-items:center;gap:var(--size-small);cursor:pointer;border-radius:var(--border-radius-medium);transition:background-color var(--short-transition);position:relative}.overflow-view.system{padding-left:var(--size-small)}.overflow-view:hover{background-color:var(--surface-light-2)}.overflow-view.dragged-over-top:before,.overflow-view.dragged-over-bottom:before{content:\"\";position:absolute;left:0;right:0;height:var(--size-xxsmall);background-color:var(--brand);box-shadow:0 0 var(--size-xxsmall) var(--brand)}.overflow-view.dragged-over-top:before{top:0}.overflow-view.dragged-over-bottom:before{bottom:0}.overflow-reorder{color:var(--type-light-low-contrast);cursor:grab}.overflow-title{flex-grow:1;text-align:left}\n"] }]
|
|
81
|
+
args: [{ selector: 'riv-views', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n (rivClientSize)=\"\n manager?.actions?.next({ type: 'setContainerWidth', width: $event.width })\n \"\n class=\"container\"\n>\n <ng-container *ngIf=\"manager?.state | async; let s\">\n <ng-container\n *ngFor=\"let view of s.displayedViews; let i = index; trackBy: trackById\"\n >\n <ng-container *ngIf=\"view.active; else inactiveTab\">\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'tab'\"\n class=\"active-menu\"\n >\n <ng-template #menuTrigger>\n <div\n class=\"tab active\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"!view.system\"\n [attr.droppable]=\"!view.system\"\n (dragstart)=\"dragStart(i, view.title, view.system)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i, view.system)\"\n (drop)=\"drop(i, false)\"\n >\n <riv-icon\n class=\"tab-reorder\"\n [class.hidden-class]=\"view.system\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div rivTruncate>\n {{ view.title }}\n </div>\n <riv-icon\n class=\"permission-icon\"\n [name]=\"getPermissionIcon(view.permission)\"\n [size]=\"12\"\n [rivTooltip]=\"getPermissionDescription(view.permission)\"\n ></riv-icon>\n </div>\n </ng-template>\n </riv-view-menu>\n </ng-container>\n <ng-template #inactiveTab>\n <button\n class=\"tab\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"!view.system\"\n [attr.droppable]=\"!view.system\"\n (dragstart)=\"dragStart(i, view.title, view.system)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i, view.system)\"\n (drop)=\"drop(i, false)\"\n (click)=\"\n manager?.actions?.next({\n type: 'setActiveView',\n id: view.id,\n source: 'tab'\n })\n \"\n >\n <riv-icon\n class=\"tab-reorder\"\n [class.hidden-class]=\"view.system\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <span rivTruncate>\n {{ view.title }}\n </span>\n </button>\n </ng-template>\n </ng-container>\n <button\n *ngIf=\"s.allEnabledViews.length - s.displayedViews.length; let count\"\n class=\"tab overflow\"\n rivTruncate\n #overflowTrigger\n (click)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: true })\n \"\n >\n {{ count | rivNumber }} more\n </button>\n <ng-container *ngIf=\"s.overflow.pickerOpen\">\n <riv-callout\n *riv-overlay\n [anchor]=\"overflowTrigger?.nativeElement\"\n [isModal]=\"true\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [preferredPosition]=\"'bottom-left'\"\n (close)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: false })\n \"\n >\n <div class=\"overflow-callout\">\n <riv-search\n [value]=\"s.overflow.search\"\n (valueChange)=\"\n manager?.actions?.next({\n type: 'setOverflowSearchQuery',\n query: $event\n })\n \"\n ></riv-search>\n <div class=\"overflow-view-list\">\n <button\n *ngFor=\"let view of s.enabledViews; let i = index\"\n class=\"overflow-view\"\n [class.system]=\"view.system\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-top]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-bottom]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"!view.system\"\n [attr.droppable]=\"!view.system\"\n (dragstart)=\"dragStart(i, view.title, view.system)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i, view.system)\"\n (drop)=\"drop(i, true)\"\n (click)=\"\n manager?.actions?.next({\n type: 'setActiveView',\n id: view.id,\n source: 'overflow'\n });\n manager?.actions?.next({\n type: 'setOverflowPickerOpen',\n open: false\n })\n \"\n >\n <riv-icon\n *ngIf=\"!view.system\"\n class=\"overflow-reorder\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div class=\"overflow-title\" rivTruncate>\n <riv-highlight\n [indices]=\"view.titleHighlightIndices ?? []\"\n [text]=\"view.title\"\n ></riv-highlight>\n </div>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'overflow'\"\n ></riv-view-menu>\n </button>\n <riv-zero-state\n *ngIf=\"!s.enabledViews.length\"\n [message]=\"'No matching views.'\"\n ></riv-zero-state>\n </div>\n </div>\n </riv-callout>\n </ng-container>\n <div class=\"all-views-button-container\">\n <button\n rivButton\n [variant]=\"'ghost'\"\n [size]=\"'medium'\"\n (click)=\"showAllViews = true\"\n >\n All views\n </button>\n </div>\n </ng-container>\n</div>\n\n<riv-all-views-modal\n *ngIf=\"showAllViews\"\n [manager]=\"manager\"\n [topOffset]=\"sideSheetTopOffset\"\n (close)=\"showAllViews = false\"\n></riv-all-views-modal>\n\n<riv-toast *ngIf=\"showLinkCopiedToast | async\" (close)=\"toastClosed.next()\">\n Link to view copied to clipboard\n</riv-toast>\n", styles: [".container{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,calc(var(--base-grid-size) * 81));justify-content:start;border-bottom:var(--border-width) solid var(--border-light)}.tab{font:var(--input-medium);color:var(--type-light-low-contrast);background-color:var(--surface-light-1);border:var(--border-width) solid var(--border-light);border-bottom:none;border-top-left-radius:var(--border-radius-medium);border-top-right-radius:var(--border-radius-medium);padding:var(--size-small) var(--size-large) var(--size-small) 0;cursor:pointer;transition:background-color var(--medium-transition);display:flex;justify-content:flex-start;align-items:center;position:relative}.tab:hover{background-color:var(--surface-light-2)}.tab:active{background-color:var(--surface-light-3)}.tab:not(:first-child),.active-menu{margin-left:calc(var(--border-width) * -1)}.tab.active{color:var(--purp-80);background-color:var(--surface-light-0);border-bottom:var(--border-width) solid var(--surface-light-0);margin-bottom:calc(var(--border-width) * -1);z-index:1;width:100%;max-width:100%;height:100%;max-height:100%}.tab.active:active{border:var(--border-width) solid var(--purp-80)}.tab.dragging{cursor:grabbing}.tab.dragged-over-left:before,.tab.dragged-over-right:before{content:\"\";position:absolute;top:0;bottom:0;width:var(--size-xxsmall);background-color:var(--brand);box-shadow:0 0 var(--size-xxsmall) var(--brand)}.tab.dragged-over-left:before{left:0}.tab.dragged-over-right:before{right:0}.tab-reorder{color:var(--type-light-low-contrast);opacity:0;transition:opacity var(--short-transition);cursor:grab;margin:0 var(--size-xsmall)}.tab:hover .tab-reorder{opacity:1}.hidden-class{visibility:hidden}.active-menu{display:inline-flex;color:var(--type-light-link-hover);--size: calc(100% + calc(var(--border-width)));width:var(--size);max-width:var(--size);height:var(--size);max-height:var(--size);cursor:pointer;font:var(--input-medium)}.tab.overflow{padding-left:var(--size-large)}.all-views-button-container{padding:var(--size-xxsmall)}.overflow-callout{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-medium);height:calc(var(--base-grid-size) * 120);max-height:50vh;width:calc(var(--base-grid-size) * 75);max-width:50vw}.overflow-view-list{display:flex;flex-direction:column;gap:var(--size-small);flex-grow:1;overflow-y:auto}.overflow-view{display:flex;align-items:center;gap:var(--size-small);cursor:pointer;border-radius:var(--border-radius-medium);transition:background-color var(--short-transition);position:relative}.overflow-view.system{padding-left:var(--size-small)}.overflow-view:hover{background-color:var(--surface-light-2)}.overflow-view.dragged-over-top:before,.overflow-view.dragged-over-bottom:before{content:\"\";position:absolute;left:0;right:0;height:var(--size-xxsmall);background-color:var(--brand);box-shadow:0 0 var(--size-xxsmall) var(--brand)}.overflow-view.dragged-over-top:before{top:0}.overflow-view.dragged-over-bottom:before{bottom:0}.overflow-reorder{color:var(--type-light-low-contrast);cursor:grab}.overflow-title{flex-grow:1;text-align:left}.permission-icon{color:var(--type-light-low-contrast);margin-left:var(--size-xsmall);flex-shrink:0}.tab.active .permission-icon{color:var(--purp-80)}\n"] }]
|
|
67
82
|
}], propDecorators: { manager: [{
|
|
68
83
|
type: Input
|
|
69
84
|
}], sideSheetTopOffset: [{
|
|
@@ -72,4 +87,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
72
87
|
type: ViewChild,
|
|
73
88
|
args: ['overflowTrigger', { read: ElementRef }]
|
|
74
89
|
}] } });
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvbmF2aWdhdGlvbi92aWV3cy92aWV3cy92aWV3cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9uYXZpZ2F0aW9uL3ZpZXdzL3ZpZXdzL3ZpZXdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTL0QsTUFBTSxPQUFPLGNBQWM7SUFOM0I7UUFhRSx1QkFBa0IsR0FBVyxDQUFDLENBQUM7UUFLeEIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFFckMsb0JBQWUsR0FBa0IsSUFBSSxDQUFDO1FBQ3RDLHdCQUFtQixHQUFrQixJQUFJLENBQUM7UUFDMUMscUJBQWdCLEdBQXNCLElBQUksQ0FBQztRQW1DM0MsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBWWxDLGNBQVMsR0FBNkMsQ0FDcEQsQ0FBUyxFQUNULENBQTBCLEVBQzFCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQ1g7SUFqREMsU0FBUyxDQUFDLEtBQWEsRUFBRSxLQUFpQixFQUFFLFlBQXFCO1FBQy9ELHdDQUF3QztRQUN4QyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWEsRUFBRSxZQUFxQjtRQUMzQyw2Q0FBNkM7UUFDN0MsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNqQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1NBQ2xDO2FBQU07WUFDTCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQyxLQUFhLEVBQUUsWUFBcUI7UUFDdkMsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLElBQUksRUFBRTtZQUNqQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ3pCLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLG9CQUFvQixFQUFFLElBQUksQ0FBQyxlQUFlO2dCQUMxQyxlQUFlLEVBQUUsS0FBSztnQkFDdEIsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUNqRCxTQUFTLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixJQUFJLFNBQVM7YUFDOUMsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7SUFDbEMsQ0FBQztJQUlELFFBQVE7UUFDTixJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUM5QixJQUFJLENBQUMsT0FBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ3hCLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxnQkFBZ0IsQ0FBQyxFQUMvQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQ2hCLEVBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ3hDLENBQUM7SUFDSixDQUFDOzsyR0E3RFUsY0FBYzsrRkFBZCxjQUFjLDBOQVNhLFVBQVUsNkJDM0JsRCxxNE5BK01BOzJGRDdMYSxjQUFjO2tCQU4xQixTQUFTOytCQUNFLFdBQVcsbUJBR0osdUJBQXVCLENBQUMsTUFBTTs4QkFNL0MsT0FBTztzQkFETixLQUFLO2dCQUlOLGtCQUFrQjtzQkFEakIsS0FBSztnQkFJTixlQUFlO3NCQURkLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgVHJhY2tCeUZ1bmN0aW9uLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIG1lcmdlLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSaXZWaWV3cyB9IGZyb20gJy4uL3N0YXRlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncml2LXZpZXdzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZXdzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmlld3MuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVmlld3NDb21wb25lbnQ8VSBleHRlbmRzIFJpdlZpZXdzLlVzZXIsIFYgZXh0ZW5kcyBSaXZWaWV3cy5WaWV3PFU+PlxuICBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICBASW5wdXQoKVxuICBtYW5hZ2VyPzogUml2Vmlld3MuTWFuYWdlcjxVLCBWPjtcblxuICBASW5wdXQoKVxuICBzaWRlU2hlZXRUb3BPZmZzZXQ6IG51bWJlciA9IDA7XG5cbiAgQFZpZXdDaGlsZCgnb3ZlcmZsb3dUcmlnZ2VyJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIG92ZXJmbG93VHJpZ2dlcj86IEVsZW1lbnRSZWY7XG5cbiAgcHVibGljIHNob3dBbGxWaWV3czogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGRyYWdnZWRUYWJJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIGRyYWdnZWRPdmVyVGFiSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBkcmFnZ2VkVmlld1RpdGxlOiBWWyd0aXRsZSddIHwgbnVsbCA9IG51bGw7XG5cbiAgZHJhZ1N0YXJ0KGluZGV4OiBudW1iZXIsIHRpdGxlOiBWWyd0aXRsZSddLCBpc1N5c3RlbVZpZXc6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAvLyBXZSBkb24ndCBsZXQgeW91IGRyYWcgdGhlIHN5c3RlbSB2aWV3XG4gICAgaWYgKCFpc1N5c3RlbVZpZXcpIHtcbiAgICAgIHRoaXMuZHJhZ2dlZFRhYkluZGV4ID0gaW5kZXg7XG4gICAgICB0aGlzLmRyYWdnZWRWaWV3VGl0bGUgPSB0aXRsZTtcbiAgICB9XG4gIH1cblxuICBkcmFnT3ZlcihpbmRleDogbnVtYmVyLCBpc1N5c3RlbVZpZXc6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAvLyBXZSBkb24ndCBsZXQgeW91IGRyYWcgb3ZlciB0aGUgc3lzdGVtIHZpZXdcbiAgICBpZiAoIWlzU3lzdGVtVmlldykge1xuICAgICAgdGhpcy5kcmFnZ2VkT3ZlclRhYkluZGV4ID0gaW5kZXg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZHJhZ2dlZE92ZXJUYWJJbmRleCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgZHJvcChpbmRleDogbnVtYmVyLCBvdmVyZmxvd01lbnU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kcmFnZ2VkVGFiSW5kZXggIT09IG51bGwpIHtcbiAgICAgIHRoaXMubWFuYWdlcj8uYWN0aW9ucy5uZXh0KHtcbiAgICAgICAgdHlwZTogJ3ZpZXdPcmRlckNoYW5nZScsXG4gICAgICAgIHByZXZpb3VzRW5hYmxlZEluZGV4OiB0aGlzLmRyYWdnZWRUYWJJbmRleCxcbiAgICAgICAgbmV3RW5hYmxlZEluZGV4OiBpbmRleCxcbiAgICAgICAgc291cmNlOiBvdmVyZmxvd01lbnUgPyAnb3ZlcmZsb3dEcmFnJyA6ICd0YWJEcmFnJyxcbiAgICAgICAgdmlld1RpdGxlOiB0aGlzLmRyYWdnZWRWaWV3VGl0bGUgfHwgdW5kZWZpbmVkLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5kcmFnZ2VkVGFiSW5kZXggPSBudWxsO1xuICAgIHRoaXMuZHJhZ2dlZFZpZXdUaXRsZSA9IG51bGw7XG4gICAgdGhpcy5kcmFnZ2VkT3ZlclRhYkluZGV4ID0gbnVsbDtcbiAgfVxuXG4gIHRvYXN0Q2xvc2VkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgc2hvd0xpbmtDb3BpZWRUb2FzdD86IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2hvd0xpbmtDb3BpZWRUb2FzdCA9IG1lcmdlKFxuICAgICAgdGhpcy5tYW5hZ2VyIS5hY3Rpb25zLnBpcGUoXG4gICAgICAgIGZpbHRlcigoeyB0eXBlIH0pID0+IHR5cGUgPT09ICdjb3B5TGlua1RvVmlldycpLFxuICAgICAgICBtYXAoKCkgPT4gdHJ1ZSksXG4gICAgICApLFxuICAgICAgdGhpcy50b2FzdENsb3NlZC5waXBlKG1hcCgoKSA9PiBmYWxzZSkpLFxuICAgICk7XG4gIH1cblxuICB0cmFja0J5SWQ6IFRyYWNrQnlGdW5jdGlvbjxSaXZWaWV3cy5GdWxsVmlldzxVLCBWPj4gPSAoXG4gICAgXzogbnVtYmVyLFxuICAgIHY6IFJpdlZpZXdzLkZ1bGxWaWV3PFUsIFY+LFxuICApID0+IHYuaWQ7XG59XG4iLCI8ZGl2XG4gIChyaXZDbGllbnRTaXplKT1cIlxuICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoeyB0eXBlOiAnc2V0Q29udGFpbmVyV2lkdGgnLCB3aWR0aDogJGV2ZW50LndpZHRoIH0pXG4gIFwiXG4gIGNsYXNzPVwiY29udGFpbmVyXCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1hbmFnZXI/LnN0YXRlIHwgYXN5bmM7IGxldCBzXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nRm9yPVwibGV0IHZpZXcgb2Ygcy5kaXNwbGF5ZWRWaWV3czsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUlkXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlldy5hY3RpdmU7IGVsc2UgaW5hY3RpdmVUYWJcIj5cbiAgICAgICAgPHJpdi12aWV3LW1lbnVcbiAgICAgICAgICBbbWFuYWdlcl09XCJtYW5hZ2VyXCJcbiAgICAgICAgICBbdmlld109XCJ2aWV3XCJcbiAgICAgICAgICBbbWVudUNvbnRleHRdPVwiJ3RhYidcIlxuICAgICAgICAgIGNsYXNzPVwiYWN0aXZlLW1lbnVcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNtZW51VHJpZ2dlcj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0YWIgYWN0aXZlXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRyYWdnaW5nXT1cImRyYWdnZWRUYWJJbmRleCA9PT0gaVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5kcmFnZ2VkLW92ZXItbGVmdF09XCJcbiAgICAgICAgICAgICAgICBkcmFnZ2VkT3ZlclRhYkluZGV4ID09PSBpICYmXG4gICAgICAgICAgICAgICAgZHJhZ2dlZFRhYkluZGV4ICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgZHJhZ2dlZFRhYkluZGV4ID4gaVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbY2xhc3MuZHJhZ2dlZC1vdmVyLXJpZ2h0XT1cIlxuICAgICAgICAgICAgICAgIGRyYWdnZWRPdmVyVGFiSW5kZXggPT09IGkgJiZcbiAgICAgICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggPCBpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFthdHRyLmRyYWdnYWJsZV09XCIhdmlldy5zeXN0ZW1cIlxuICAgICAgICAgICAgICBbYXR0ci5kcm9wcGFibGVdPVwiIXZpZXcuc3lzdGVtXCJcbiAgICAgICAgICAgICAgKGRyYWdzdGFydCk9XCJkcmFnU3RhcnQoaSwgdmlldy50aXRsZSwgdmlldy5zeXN0ZW0pXCJcbiAgICAgICAgICAgICAgKGRyYWdlbnRlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgICAgIChkcmFnb3Zlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgZHJhZ092ZXIoaSwgdmlldy5zeXN0ZW0pXCJcbiAgICAgICAgICAgICAgKGRyb3ApPVwiZHJvcChpLCBmYWxzZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8cml2LWljb25cbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYi1yZW9yZGVyXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaGlkZGVuLWNsYXNzXT1cInZpZXcuc3lzdGVtXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCInUmVvcmRlcidcIlxuICAgICAgICAgICAgICAgIFtzaXplXT1cIjE2XCJcbiAgICAgICAgICAgICAgPjwvcml2LWljb24+XG4gICAgICAgICAgICAgIDxkaXYgcml2VHJ1bmNhdGU+XG4gICAgICAgICAgICAgICAge3sgdmlldy50aXRsZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvcml2LXZpZXctbWVudT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNpbmFjdGl2ZVRhYj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwidGFiXCJcbiAgICAgICAgICBbY2xhc3MuZHJhZ2dpbmddPVwiZHJhZ2dlZFRhYkluZGV4ID09PSBpXCJcbiAgICAgICAgICBbY2xhc3MuZHJhZ2dlZC1vdmVyLWxlZnRdPVwiXG4gICAgICAgICAgICBkcmFnZ2VkT3ZlclRhYkluZGV4ID09PSBpICYmXG4gICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgIGRyYWdnZWRUYWJJbmRleCA+IGlcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtjbGFzcy5kcmFnZ2VkLW92ZXItcmlnaHRdPVwiXG4gICAgICAgICAgICBkcmFnZ2VkT3ZlclRhYkluZGV4ID09PSBpICYmXG4gICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgIGRyYWdnZWRUYWJJbmRleCA8IGlcbiAgICAgICAgICBcIlxuICAgICAgICAgIFthdHRyLmRyYWdnYWJsZV09XCIhdmlldy5zeXN0ZW1cIlxuICAgICAgICAgIFthdHRyLmRyb3BwYWJsZV09XCIhdmlldy5zeXN0ZW1cIlxuICAgICAgICAgIChkcmFnc3RhcnQpPVwiZHJhZ1N0YXJ0KGksIHZpZXcudGl0bGUsIHZpZXcuc3lzdGVtKVwiXG4gICAgICAgICAgKGRyYWdlbnRlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgKGRyYWdvdmVyKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBkcmFnT3ZlcihpLCB2aWV3LnN5c3RlbSlcIlxuICAgICAgICAgIChkcm9wKT1cImRyb3AoaSwgZmFsc2UpXCJcbiAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHtcbiAgICAgICAgICAgICAgdHlwZTogJ3NldEFjdGl2ZVZpZXcnLFxuICAgICAgICAgICAgICBpZDogdmlldy5pZCxcbiAgICAgICAgICAgICAgc291cmNlOiAndGFiJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPHJpdi1pY29uXG4gICAgICAgICAgICBjbGFzcz1cInRhYi1yZW9yZGVyXCJcbiAgICAgICAgICAgIFtjbGFzcy5oaWRkZW4tY2xhc3NdPVwidmlldy5zeXN0ZW1cIlxuICAgICAgICAgICAgW25hbWVdPVwiJ1Jlb3JkZXInXCJcbiAgICAgICAgICAgIFtzaXplXT1cIjE2XCJcbiAgICAgICAgICA+PC9yaXYtaWNvbj5cbiAgICAgICAgICA8c3BhbiByaXZUcnVuY2F0ZT5cbiAgICAgICAgICAgIHt7IHZpZXcudGl0bGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8YnV0dG9uXG4gICAgICAqbmdJZj1cInMuYWxsRW5hYmxlZFZpZXdzLmxlbmd0aCAtIHMuZGlzcGxheWVkVmlld3MubGVuZ3RoOyBsZXQgY291bnRcIlxuICAgICAgY2xhc3M9XCJ0YWIgb3ZlcmZsb3dcIlxuICAgICAgcml2VHJ1bmNhdGVcbiAgICAgICNvdmVyZmxvd1RyaWdnZXJcbiAgICAgIChjbGljayk9XCJcbiAgICAgICAgbWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7IHR5cGU6ICdzZXRPdmVyZmxvd1BpY2tlck9wZW4nLCBvcGVuOiB0cnVlIH0pXG4gICAgICBcIlxuICAgID5cbiAgICAgIHt7IGNvdW50IHwgcml2TnVtYmVyIH19IG1vcmVcbiAgICA8L2J1dHRvbj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicy5vdmVyZmxvdy5waWNrZXJPcGVuXCI+XG4gICAgICA8cml2LWNhbGxvdXRcbiAgICAgICAgKnJpdi1vdmVybGF5XG4gICAgICAgIFthbmNob3JdPVwib3ZlcmZsb3dUcmlnZ2VyPy5uYXRpdmVFbGVtZW50XCJcbiAgICAgICAgW2lzTW9kYWxdPVwidHJ1ZVwiXG4gICAgICAgIFtzaG93Q2FyZXRdPVwiZmFsc2VcIlxuICAgICAgICBbdGhlbWVdPVwiJ2xpZ2h0J1wiXG4gICAgICAgIFtwcmVmZXJyZWRQb3NpdGlvbl09XCInYm90dG9tLWxlZnQnXCJcbiAgICAgICAgKGNsb3NlKT1cIlxuICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoeyB0eXBlOiAnc2V0T3ZlcmZsb3dQaWNrZXJPcGVuJywgb3BlbjogZmFsc2UgfSlcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJmbG93LWNhbGxvdXRcIj5cbiAgICAgICAgICA8cml2LXNlYXJjaFxuICAgICAgICAgICAgW3ZhbHVlXT1cInMub3ZlcmZsb3cuc2VhcmNoXCJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJcbiAgICAgICAgICAgICAgbWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3NldE92ZXJmbG93U2VhcmNoUXVlcnknLFxuICAgICAgICAgICAgICAgIHF1ZXJ5OiAkZXZlbnRcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPjwvcml2LXNlYXJjaD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmZsb3ctdmlldy1saXN0XCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB2aWV3IG9mIHMuZW5hYmxlZFZpZXdzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJvdmVyZmxvdy12aWV3XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnN5c3RlbV09XCJ2aWV3LnN5c3RlbVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5kcmFnZ2luZ109XCJkcmFnZ2VkVGFiSW5kZXggPT09IGlcIlxuICAgICAgICAgICAgICBbY2xhc3MuZHJhZ2dlZC1vdmVyLXRvcF09XCJcbiAgICAgICAgICAgICAgICBkcmFnZ2VkT3ZlclRhYkluZGV4ID09PSBpICYmXG4gICAgICAgICAgICAgICAgZHJhZ2dlZFRhYkluZGV4ICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgZHJhZ2dlZFRhYkluZGV4ID4gaVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbY2xhc3MuZHJhZ2dlZC1vdmVyLWJvdHRvbV09XCJcbiAgICAgICAgICAgICAgICBkcmFnZ2VkT3ZlclRhYkluZGV4ID09PSBpICYmXG4gICAgICAgICAgICAgICAgZHJhZ2dlZFRhYkluZGV4ICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgZHJhZ2dlZFRhYkluZGV4IDwgaVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbYXR0ci5kcmFnZ2FibGVdPVwiIXZpZXcuc3lzdGVtXCJcbiAgICAgICAgICAgICAgW2F0dHIuZHJvcHBhYmxlXT1cIiF2aWV3LnN5c3RlbVwiXG4gICAgICAgICAgICAgIChkcmFnc3RhcnQpPVwiZHJhZ1N0YXJ0KGksIHZpZXcudGl0bGUsIHZpZXcuc3lzdGVtKVwiXG4gICAgICAgICAgICAgIChkcmFnZW50ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgICAoZHJhZ292ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGRyYWdPdmVyKGksIHZpZXcuc3lzdGVtKVwiXG4gICAgICAgICAgICAgIChkcm9wKT1cImRyb3AoaSwgdHJ1ZSlcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgbWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7XG4gICAgICAgICAgICAgICAgICB0eXBlOiAnc2V0QWN0aXZlVmlldycsXG4gICAgICAgICAgICAgICAgICBpZDogdmlldy5pZCxcbiAgICAgICAgICAgICAgICAgIHNvdXJjZTogJ292ZXJmbG93J1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoe1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ3NldE92ZXJmbG93UGlja2VyT3BlbicsXG4gICAgICAgICAgICAgICAgICBvcGVuOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxyaXYtaWNvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIXZpZXcuc3lzdGVtXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm92ZXJmbG93LXJlb3JkZXJcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cIidSZW9yZGVyJ1wiXG4gICAgICAgICAgICAgICAgW3NpemVdPVwiMTZcIlxuICAgICAgICAgICAgICA+PC9yaXYtaWNvbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJmbG93LXRpdGxlXCIgcml2VHJ1bmNhdGU+XG4gICAgICAgICAgICAgICAgPHJpdi1oaWdobGlnaHRcbiAgICAgICAgICAgICAgICAgIFtpbmRpY2VzXT1cInZpZXcudGl0bGVIaWdobGlnaHRJbmRpY2VzID8/IFtdXCJcbiAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cInZpZXcudGl0bGVcIlxuICAgICAgICAgICAgICAgID48L3Jpdi1oaWdobGlnaHQ+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8cml2LXZpZXctbWVudVxuICAgICAgICAgICAgICAgIFttYW5hZ2VyXT1cIm1hbmFnZXJcIlxuICAgICAgICAgICAgICAgIFt2aWV3XT1cInZpZXdcIlxuICAgICAgICAgICAgICAgIFttZW51Q29udGV4dF09XCInb3ZlcmZsb3cnXCJcbiAgICAgICAgICAgICAgPjwvcml2LXZpZXctbWVudT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPHJpdi16ZXJvLXN0YXRlXG4gICAgICAgICAgICAgICpuZ0lmPVwiIXMuZW5hYmxlZFZpZXdzLmxlbmd0aFwiXG4gICAgICAgICAgICAgIFttZXNzYWdlXT1cIidObyBtYXRjaGluZyB2aWV3cy4nXCJcbiAgICAgICAgICAgID48L3Jpdi16ZXJvLXN0YXRlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvcml2LWNhbGxvdXQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiBjbGFzcz1cImFsbC12aWV3cy1idXR0b24tY29udGFpbmVyXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHJpdkJ1dHRvblxuICAgICAgICBbdmFyaWFudF09XCInZ2hvc3QnXCJcbiAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxuICAgICAgICAoY2xpY2spPVwic2hvd0FsbFZpZXdzID0gdHJ1ZVwiXG4gICAgICA+XG4gICAgICAgIEFsbCB2aWV3c1xuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxyaXYtYWxsLXZpZXdzLW1vZGFsXG4gICpuZ0lmPVwic2hvd0FsbFZpZXdzXCJcbiAgW21hbmFnZXJdPVwibWFuYWdlclwiXG4gIFt0b3BPZmZzZXRdPVwic2lkZVNoZWV0VG9wT2Zmc2V0XCJcbiAgKGNsb3NlKT1cInNob3dBbGxWaWV3cyA9IGZhbHNlXCJcbj48L3Jpdi1hbGwtdmlld3MtbW9kYWw+XG5cbjxyaXYtdG9hc3QgKm5nSWY9XCJzaG93TGlua0NvcGllZFRvYXN0IHwgYXN5bmNcIiAoY2xvc2UpPVwidG9hc3RDbG9zZWQubmV4dCgpXCI+XG4gIExpbmsgdG8gdmlldyBjb3BpZWQgdG8gY2xpcGJvYXJkXG48L3Jpdi10b2FzdD5cbiJdfQ==
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvbmF2aWdhdGlvbi92aWV3cy92aWV3cy92aWV3cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9uYXZpZ2F0aW9uL3ZpZXdzL3ZpZXdzL3ZpZXdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRcEMsTUFBTSxPQUFPLGNBQWM7SUFOM0I7UUFhRSx1QkFBa0IsR0FBVyxDQUFDLENBQUM7UUFLeEIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFFckMsb0JBQWUsR0FBa0IsSUFBSSxDQUFDO1FBQ3RDLHdCQUFtQixHQUFrQixJQUFJLENBQUM7UUFDMUMscUJBQWdCLEdBQXNCLElBQUksQ0FBQztRQW1DM0MsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBWWxDLGNBQVMsR0FBNkMsQ0FDcEQsQ0FBUyxFQUNULENBQTBCLEVBQzFCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBZ0JYO0lBaEVDLFNBQVMsQ0FBQyxLQUFhLEVBQUUsS0FBaUIsRUFBRSxZQUFxQjtRQUMvRCx3Q0FBd0M7UUFDeEMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNqQixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUM3QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFhLEVBQUUsWUFBcUI7UUFDM0MsNkNBQTZDO1FBQzdDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDakIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztTQUNsQzthQUFNO1lBQ0wsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztTQUNqQztJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsS0FBYSxFQUFFLFlBQXFCO1FBQ3ZDLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxJQUFJLEVBQUU7WUFDakMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUN6QixJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixvQkFBb0IsRUFBRSxJQUFJLENBQUMsZUFBZTtnQkFDMUMsZUFBZSxFQUFFLEtBQUs7Z0JBQ3RCLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDakQsU0FBUyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxTQUFTO2FBQzlDLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0lBQ2xDLENBQUM7SUFJRCxRQUFRO1FBQ04sSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FDOUIsSUFBSSxDQUFDLE9BQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUN4QixNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLENBQUMsRUFDL0MsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUNoQixFQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUN4QyxDQUFDO0lBQ0osQ0FBQztJQU9ELGlCQUFpQixDQUFDLFVBQW1DO1FBQ25ELFFBQVEsVUFBVSxFQUFFO1lBQ2xCLEtBQUssU0FBUztnQkFDWixPQUFPLE1BQU0sQ0FBQztZQUNoQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxXQUFXLENBQUM7WUFDckIsS0FBSyxRQUFRO2dCQUNYLE9BQU8sT0FBTyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQztJQUVELHdCQUF3QixDQUFDLFVBQW1DO1FBQzFELE9BQU8sUUFBUSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7OzJHQWpGVSxjQUFjOytGQUFkLGNBQWMsME5BU2EsVUFBVSw2QkM1QmxELCtvT0FxTkE7MkZEbE1hLGNBQWM7a0JBTjFCLFNBQVM7K0JBQ0UsV0FBVyxtQkFHSix1QkFBdUIsQ0FBQyxNQUFNOzhCQU0vQyxPQUFPO3NCQUROLEtBQUs7Z0JBSU4sa0JBQWtCO3NCQURqQixLQUFLO2dCQUlOLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBUcmFja0J5RnVuY3Rpb24sXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IFJpdlZpZXdzIH0gZnJvbSAnLi4vc3RhdGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtdmlld3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlld3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi92aWV3cy5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBWaWV3c0NvbXBvbmVudDxVIGV4dGVuZHMgUml2Vmlld3MuVXNlciwgViBleHRlbmRzIFJpdlZpZXdzLlZpZXc8VT4+XG4gIGltcGxlbWVudHMgT25Jbml0XG57XG4gIEBJbnB1dCgpXG4gIG1hbmFnZXI/OiBSaXZWaWV3cy5NYW5hZ2VyPFUsIFY+O1xuXG4gIEBJbnB1dCgpXG4gIHNpZGVTaGVldFRvcE9mZnNldDogbnVtYmVyID0gMDtcblxuICBAVmlld0NoaWxkKCdvdmVyZmxvd1RyaWdnZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgb3ZlcmZsb3dUcmlnZ2VyPzogRWxlbWVudFJlZjtcblxuICBwdWJsaWMgc2hvd0FsbFZpZXdzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZHJhZ2dlZFRhYkluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgZHJhZ2dlZE92ZXJUYWJJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIGRyYWdnZWRWaWV3VGl0bGU6IFZbJ3RpdGxlJ10gfCBudWxsID0gbnVsbDtcblxuICBkcmFnU3RhcnQoaW5kZXg6IG51bWJlciwgdGl0bGU6IFZbJ3RpdGxlJ10sIGlzU3lzdGVtVmlldzogYm9vbGVhbik6IHZvaWQge1xuICAgIC8vIFdlIGRvbid0IGxldCB5b3UgZHJhZyB0aGUgc3lzdGVtIHZpZXdcbiAgICBpZiAoIWlzU3lzdGVtVmlldykge1xuICAgICAgdGhpcy5kcmFnZ2VkVGFiSW5kZXggPSBpbmRleDtcbiAgICAgIHRoaXMuZHJhZ2dlZFZpZXdUaXRsZSA9IHRpdGxlO1xuICAgIH1cbiAgfVxuXG4gIGRyYWdPdmVyKGluZGV4OiBudW1iZXIsIGlzU3lzdGVtVmlldzogYm9vbGVhbik6IHZvaWQge1xuICAgIC8vIFdlIGRvbid0IGxldCB5b3UgZHJhZyBvdmVyIHRoZSBzeXN0ZW0gdmlld1xuICAgIGlmICghaXNTeXN0ZW1WaWV3KSB7XG4gICAgICB0aGlzLmRyYWdnZWRPdmVyVGFiSW5kZXggPSBpbmRleDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kcmFnZ2VkT3ZlclRhYkluZGV4ID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBkcm9wKGluZGV4OiBudW1iZXIsIG92ZXJmbG93TWVudTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmRyYWdnZWRUYWJJbmRleCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5tYW5hZ2VyPy5hY3Rpb25zLm5leHQoe1xuICAgICAgICB0eXBlOiAndmlld09yZGVyQ2hhbmdlJyxcbiAgICAgICAgcHJldmlvdXNFbmFibGVkSW5kZXg6IHRoaXMuZHJhZ2dlZFRhYkluZGV4LFxuICAgICAgICBuZXdFbmFibGVkSW5kZXg6IGluZGV4LFxuICAgICAgICBzb3VyY2U6IG92ZXJmbG93TWVudSA/ICdvdmVyZmxvd0RyYWcnIDogJ3RhYkRyYWcnLFxuICAgICAgICB2aWV3VGl0bGU6IHRoaXMuZHJhZ2dlZFZpZXdUaXRsZSB8fCB1bmRlZmluZWQsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmRyYWdnZWRUYWJJbmRleCA9IG51bGw7XG4gICAgdGhpcy5kcmFnZ2VkVmlld1RpdGxlID0gbnVsbDtcbiAgICB0aGlzLmRyYWdnZWRPdmVyVGFiSW5kZXggPSBudWxsO1xuICB9XG5cbiAgdG9hc3RDbG9zZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBzaG93TGlua0NvcGllZFRvYXN0PzogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zaG93TGlua0NvcGllZFRvYXN0ID0gbWVyZ2UoXG4gICAgICB0aGlzLm1hbmFnZXIhLmFjdGlvbnMucGlwZShcbiAgICAgICAgZmlsdGVyKCh7IHR5cGUgfSkgPT4gdHlwZSA9PT0gJ2NvcHlMaW5rVG9WaWV3JyksXG4gICAgICAgIG1hcCgoKSA9PiB0cnVlKSxcbiAgICAgICksXG4gICAgICB0aGlzLnRvYXN0Q2xvc2VkLnBpcGUobWFwKCgpID0+IGZhbHNlKSksXG4gICAgKTtcbiAgfVxuXG4gIHRyYWNrQnlJZDogVHJhY2tCeUZ1bmN0aW9uPFJpdlZpZXdzLkZ1bGxWaWV3PFUsIFY+PiA9IChcbiAgICBfOiBudW1iZXIsXG4gICAgdjogUml2Vmlld3MuRnVsbFZpZXc8VSwgVj4sXG4gICkgPT4gdi5pZDtcblxuICBnZXRQZXJtaXNzaW9uSWNvbihwZXJtaXNzaW9uOiBSaXZWaWV3cy5WaWV3UGVybWlzc2lvbik6IEljb25Db21wb25lbnQuTmFtZSB7XG4gICAgc3dpdGNoIChwZXJtaXNzaW9uKSB7XG4gICAgICBjYXNlICdwcml2YXRlJzpcbiAgICAgICAgcmV0dXJuICdMb2NrJztcbiAgICAgIGNhc2UgJ3NoYXJlZCc6XG4gICAgICAgIHJldHVybiAnVXNlckNoZWNrJztcbiAgICAgIGNhc2UgJ3B1YmxpYyc6XG4gICAgICAgIHJldHVybiAnVXNlcnMnO1xuICAgIH1cbiAgfVxuXG4gIGdldFBlcm1pc3Npb25EZXNjcmlwdGlvbihwZXJtaXNzaW9uOiBSaXZWaWV3cy5WaWV3UGVybWlzc2lvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIFJpdlZpZXdzLmdldFBlcm1pc3Npb25EZXNjcmlwdGlvbihwZXJtaXNzaW9uKTtcbiAgfVxufVxuIiwiPGRpdlxuICAocml2Q2xpZW50U2l6ZSk9XCJcbiAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHsgdHlwZTogJ3NldENvbnRhaW5lcldpZHRoJywgd2lkdGg6ICRldmVudC53aWR0aCB9KVxuICBcIlxuICBjbGFzcz1cImNvbnRhaW5lclwiXG4+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJtYW5hZ2VyPy5zdGF0ZSB8IGFzeW5jOyBsZXQgc1wiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0Zvcj1cImxldCB2aWV3IG9mIHMuZGlzcGxheWVkVmlld3M7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlJZFwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXcuYWN0aXZlOyBlbHNlIGluYWN0aXZlVGFiXCI+XG4gICAgICAgIDxyaXYtdmlldy1tZW51XG4gICAgICAgICAgW21hbmFnZXJdPVwibWFuYWdlclwiXG4gICAgICAgICAgW3ZpZXddPVwidmlld1wiXG4gICAgICAgICAgW21lbnVDb250ZXh0XT1cIid0YWInXCJcbiAgICAgICAgICBjbGFzcz1cImFjdGl2ZS1tZW51XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbWVudVRyaWdnZXI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidGFiIGFjdGl2ZVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5kcmFnZ2luZ109XCJkcmFnZ2VkVGFiSW5kZXggPT09IGlcIlxuICAgICAgICAgICAgICBbY2xhc3MuZHJhZ2dlZC1vdmVyLWxlZnRdPVwiXG4gICAgICAgICAgICAgICAgZHJhZ2dlZE92ZXJUYWJJbmRleCA9PT0gaSAmJlxuICAgICAgICAgICAgICAgIGRyYWdnZWRUYWJJbmRleCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIGRyYWdnZWRUYWJJbmRleCA+IGlcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRyYWdnZWQtb3Zlci1yaWdodF09XCJcbiAgICAgICAgICAgICAgICBkcmFnZ2VkT3ZlclRhYkluZGV4ID09PSBpICYmXG4gICAgICAgICAgICAgICAgZHJhZ2dlZFRhYkluZGV4ICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgZHJhZ2dlZFRhYkluZGV4IDwgaVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbYXR0ci5kcmFnZ2FibGVdPVwiIXZpZXcuc3lzdGVtXCJcbiAgICAgICAgICAgICAgW2F0dHIuZHJvcHBhYmxlXT1cIiF2aWV3LnN5c3RlbVwiXG4gICAgICAgICAgICAgIChkcmFnc3RhcnQpPVwiZHJhZ1N0YXJ0KGksIHZpZXcudGl0bGUsIHZpZXcuc3lzdGVtKVwiXG4gICAgICAgICAgICAgIChkcmFnZW50ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgICAoZHJhZ292ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGRyYWdPdmVyKGksIHZpZXcuc3lzdGVtKVwiXG4gICAgICAgICAgICAgIChkcm9wKT1cImRyb3AoaSwgZmFsc2UpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHJpdi1pY29uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWItcmVvcmRlclwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmhpZGRlbi1jbGFzc109XCJ2aWV3LnN5c3RlbVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwiJ1Jlb3JkZXInXCJcbiAgICAgICAgICAgICAgICBbc2l6ZV09XCIxNlwiXG4gICAgICAgICAgICAgID48L3Jpdi1pY29uPlxuICAgICAgICAgICAgICA8ZGl2IHJpdlRydW5jYXRlPlxuICAgICAgICAgICAgICAgIHt7IHZpZXcudGl0bGUgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxyaXYtaWNvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwicGVybWlzc2lvbi1pY29uXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJnZXRQZXJtaXNzaW9uSWNvbih2aWV3LnBlcm1pc3Npb24pXCJcbiAgICAgICAgICAgICAgICBbc2l6ZV09XCIxMlwiXG4gICAgICAgICAgICAgICAgW3JpdlRvb2x0aXBdPVwiZ2V0UGVybWlzc2lvbkRlc2NyaXB0aW9uKHZpZXcucGVybWlzc2lvbilcIlxuICAgICAgICAgICAgICA+PC9yaXYtaWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvcml2LXZpZXctbWVudT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNpbmFjdGl2ZVRhYj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwidGFiXCJcbiAgICAgICAgICBbY2xhc3MuZHJhZ2dpbmddPVwiZHJhZ2dlZFRhYkluZGV4ID09PSBpXCJcbiAgICAgICAgICBbY2xhc3MuZHJhZ2dlZC1vdmVyLWxlZnRdPVwiXG4gICAgICAgICAgICBkcmFnZ2VkT3ZlclRhYkluZGV4ID09PSBpICYmXG4gICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgIGRyYWdnZWRUYWJJbmRleCA+IGlcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtjbGFzcy5kcmFnZ2VkLW92ZXItcmlnaHRdPVwiXG4gICAgICAgICAgICBkcmFnZ2VkT3ZlclRhYkluZGV4ID09PSBpICYmXG4gICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgIGRyYWdnZWRUYWJJbmRleCA8IGlcbiAgICAgICAgICBcIlxuICAgICAgICAgIFthdHRyLmRyYWdnYWJsZV09XCIhdmlldy5zeXN0ZW1cIlxuICAgICAgICAgIFthdHRyLmRyb3BwYWJsZV09XCIhdmlldy5zeXN0ZW1cIlxuICAgICAgICAgIChkcmFnc3RhcnQpPVwiZHJhZ1N0YXJ0KGksIHZpZXcudGl0bGUsIHZpZXcuc3lzdGVtKVwiXG4gICAgICAgICAgKGRyYWdlbnRlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgKGRyYWdvdmVyKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBkcmFnT3ZlcihpLCB2aWV3LnN5c3RlbSlcIlxuICAgICAgICAgIChkcm9wKT1cImRyb3AoaSwgZmFsc2UpXCJcbiAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHtcbiAgICAgICAgICAgICAgdHlwZTogJ3NldEFjdGl2ZVZpZXcnLFxuICAgICAgICAgICAgICBpZDogdmlldy5pZCxcbiAgICAgICAgICAgICAgc291cmNlOiAndGFiJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPHJpdi1pY29uXG4gICAgICAgICAgICBjbGFzcz1cInRhYi1yZW9yZGVyXCJcbiAgICAgICAgICAgIFtjbGFzcy5oaWRkZW4tY2xhc3NdPVwidmlldy5zeXN0ZW1cIlxuICAgICAgICAgICAgW25hbWVdPVwiJ1Jlb3JkZXInXCJcbiAgICAgICAgICAgIFtzaXplXT1cIjE2XCJcbiAgICAgICAgICA+PC9yaXYtaWNvbj5cbiAgICAgICAgICA8c3BhbiByaXZUcnVuY2F0ZT5cbiAgICAgICAgICAgIHt7IHZpZXcudGl0bGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8YnV0dG9uXG4gICAgICAqbmdJZj1cInMuYWxsRW5hYmxlZFZpZXdzLmxlbmd0aCAtIHMuZGlzcGxheWVkVmlld3MubGVuZ3RoOyBsZXQgY291bnRcIlxuICAgICAgY2xhc3M9XCJ0YWIgb3ZlcmZsb3dcIlxuICAgICAgcml2VHJ1bmNhdGVcbiAgICAgICNvdmVyZmxvd1RyaWdnZXJcbiAgICAgIChjbGljayk9XCJcbiAgICAgICAgbWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7IHR5cGU6ICdzZXRPdmVyZmxvd1BpY2tlck9wZW4nLCBvcGVuOiB0cnVlIH0pXG4gICAgICBcIlxuICAgID5cbiAgICAgIHt7IGNvdW50IHwgcml2TnVtYmVyIH19IG1vcmVcbiAgICA8L2J1dHRvbj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicy5vdmVyZmxvdy5waWNrZXJPcGVuXCI+XG4gICAgICA8cml2LWNhbGxvdXRcbiAgICAgICAgKnJpdi1vdmVybGF5XG4gICAgICAgIFthbmNob3JdPVwib3ZlcmZsb3dUcmlnZ2VyPy5uYXRpdmVFbGVtZW50XCJcbiAgICAgICAgW2lzTW9kYWxdPVwidHJ1ZVwiXG4gICAgICAgIFtzaG93Q2FyZXRdPVwiZmFsc2VcIlxuICAgICAgICBbdGhlbWVdPVwiJ2xpZ2h0J1wiXG4gICAgICAgIFtwcmVmZXJyZWRQb3NpdGlvbl09XCInYm90dG9tLWxlZnQnXCJcbiAgICAgICAgKGNsb3NlKT1cIlxuICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoeyB0eXBlOiAnc2V0T3ZlcmZsb3dQaWNrZXJPcGVuJywgb3BlbjogZmFsc2UgfSlcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJmbG93LWNhbGxvdXRcIj5cbiAgICAgICAgICA8cml2LXNlYXJjaFxuICAgICAgICAgICAgW3ZhbHVlXT1cInMub3ZlcmZsb3cuc2VhcmNoXCJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJcbiAgICAgICAgICAgICAgbWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3NldE92ZXJmbG93U2VhcmNoUXVlcnknLFxuICAgICAgICAgICAgICAgIHF1ZXJ5OiAkZXZlbnRcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPjwvcml2LXNlYXJjaD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmZsb3ctdmlldy1saXN0XCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB2aWV3IG9mIHMuZW5hYmxlZFZpZXdzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJvdmVyZmxvdy12aWV3XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnN5c3RlbV09XCJ2aWV3LnN5c3RlbVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5kcmFnZ2luZ109XCJkcmFnZ2VkVGFiSW5kZXggPT09IGlcIlxuICAgICAgICAgICAgICBbY2xhc3MuZHJhZ2dlZC1vdmVyLXRvcF09XCJcbiAgICAgICAgICAgICAgICBkcmFnZ2VkT3ZlclRhYkluZGV4ID09PSBpICYmXG4gICAgICAgICAgICAgICAgZHJhZ2dlZFRhYkluZGV4ICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgZHJhZ2dlZFRhYkluZGV4ID4gaVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbY2xhc3MuZHJhZ2dlZC1vdmVyLWJvdHRvbV09XCJcbiAgICAgICAgICAgICAgICBkcmFnZ2VkT3ZlclRhYkluZGV4ID09PSBpICYmXG4gICAgICAgICAgICAgICAgZHJhZ2dlZFRhYkluZGV4ICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgZHJhZ2dlZFRhYkluZGV4IDwgaVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbYXR0ci5kcmFnZ2FibGVdPVwiIXZpZXcuc3lzdGVtXCJcbiAgICAgICAgICAgICAgW2F0dHIuZHJvcHBhYmxlXT1cIiF2aWV3LnN5c3RlbVwiXG4gICAgICAgICAgICAgIChkcmFnc3RhcnQpPVwiZHJhZ1N0YXJ0KGksIHZpZXcudGl0bGUsIHZpZXcuc3lzdGVtKVwiXG4gICAgICAgICAgICAgIChkcmFnZW50ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgICAoZHJhZ292ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGRyYWdPdmVyKGksIHZpZXcuc3lzdGVtKVwiXG4gICAgICAgICAgICAgIChkcm9wKT1cImRyb3AoaSwgdHJ1ZSlcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgbWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7XG4gICAgICAgICAgICAgICAgICB0eXBlOiAnc2V0QWN0aXZlVmlldycsXG4gICAgICAgICAgICAgICAgICBpZDogdmlldy5pZCxcbiAgICAgICAgICAgICAgICAgIHNvdXJjZTogJ292ZXJmbG93J1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoe1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ3NldE92ZXJmbG93UGlja2VyT3BlbicsXG4gICAgICAgICAgICAgICAgICBvcGVuOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxyaXYtaWNvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIXZpZXcuc3lzdGVtXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm92ZXJmbG93LXJlb3JkZXJcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cIidSZW9yZGVyJ1wiXG4gICAgICAgICAgICAgICAgW3NpemVdPVwiMTZcIlxuICAgICAgICAgICAgICA+PC9yaXYtaWNvbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJmbG93LXRpdGxlXCIgcml2VHJ1bmNhdGU+XG4gICAgICAgICAgICAgICAgPHJpdi1oaWdobGlnaHRcbiAgICAgICAgICAgICAgICAgIFtpbmRpY2VzXT1cInZpZXcudGl0bGVIaWdobGlnaHRJbmRpY2VzID8/IFtdXCJcbiAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cInZpZXcudGl0bGVcIlxuICAgICAgICAgICAgICAgID48L3Jpdi1oaWdobGlnaHQ+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8cml2LXZpZXctbWVudVxuICAgICAgICAgICAgICAgIFttYW5hZ2VyXT1cIm1hbmFnZXJcIlxuICAgICAgICAgICAgICAgIFt2aWV3XT1cInZpZXdcIlxuICAgICAgICAgICAgICAgIFttZW51Q29udGV4dF09XCInb3ZlcmZsb3cnXCJcbiAgICAgICAgICAgICAgPjwvcml2LXZpZXctbWVudT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPHJpdi16ZXJvLXN0YXRlXG4gICAgICAgICAgICAgICpuZ0lmPVwiIXMuZW5hYmxlZFZpZXdzLmxlbmd0aFwiXG4gICAgICAgICAgICAgIFttZXNzYWdlXT1cIidObyBtYXRjaGluZyB2aWV3cy4nXCJcbiAgICAgICAgICAgID48L3Jpdi16ZXJvLXN0YXRlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvcml2LWNhbGxvdXQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiBjbGFzcz1cImFsbC12aWV3cy1idXR0b24tY29udGFpbmVyXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHJpdkJ1dHRvblxuICAgICAgICBbdmFyaWFudF09XCInZ2hvc3QnXCJcbiAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxuICAgICAgICAoY2xpY2spPVwic2hvd0FsbFZpZXdzID0gdHJ1ZVwiXG4gICAgICA+XG4gICAgICAgIEFsbCB2aWV3c1xuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxyaXYtYWxsLXZpZXdzLW1vZGFsXG4gICpuZ0lmPVwic2hvd0FsbFZpZXdzXCJcbiAgW21hbmFnZXJdPVwibWFuYWdlclwiXG4gIFt0b3BPZmZzZXRdPVwic2lkZVNoZWV0VG9wT2Zmc2V0XCJcbiAgKGNsb3NlKT1cInNob3dBbGxWaWV3cyA9IGZhbHNlXCJcbj48L3Jpdi1hbGwtdmlld3MtbW9kYWw+XG5cbjxyaXYtdG9hc3QgKm5nSWY9XCJzaG93TGlua0NvcGllZFRvYXN0IHwgYXN5bmNcIiAoY2xvc2UpPVwidG9hc3RDbG9zZWQubmV4dCgpXCI+XG4gIExpbmsgdG8gdmlldyBjb3BpZWQgdG8gY2xpcGJvYXJkXG48L3Jpdi10b2FzdD5cbiJdfQ==
|