ng-hub-ui-modal 1.2.2 → 1.2.4
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.
|
@@ -283,7 +283,6 @@ export class HubModalStack {
|
|
|
283
283
|
*/
|
|
284
284
|
_addCloseEventListener(container, context, options) {
|
|
285
285
|
if (options.closeSelector) {
|
|
286
|
-
debugger;
|
|
287
286
|
const dismissaable = container.querySelectorAll(options.closeSelector);
|
|
288
287
|
for (const item of Array.from(dismissaable)) {
|
|
289
288
|
const clickEventListeners = item.addEventListener('click', () => context.close());
|
|
@@ -319,4 +318,4 @@ function extractAndRemoveNodesBySelector(container, selector) {
|
|
|
319
318
|
Array.from(nodesToRemove).forEach((node) => node.remove());
|
|
320
319
|
return nodes;
|
|
321
320
|
}
|
|
322
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tb2RhbC9zcmMvbGliL21vZGFsLXN0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ04sY0FBYyxFQUVkLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLE1BQU0sRUFDTixVQUFVLEVBQ1YsUUFBUSxFQUNSLE1BQU0sRUFDTixXQUFXLEVBRVgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNOLFVBQVUsRUFDVixZQUFZLEVBQ1osU0FBUyxFQUNULFFBQVEsRUFDUixTQUFTLEVBQ1QsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBR2hELE1BQU0sT0FBTyxhQUFhO0lBY3pCO1FBYlEsb0JBQWUsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDekMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3Qix5QkFBb0IsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNuRCxjQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdCLGVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFL0IsZ0NBQTJCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNsRCxzQkFBaUIs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SyxNQUFNLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUM1QyxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQy9ELE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FDZixDQUFDO2FBQ0Y7U0FDRDtJQUNGLENBQUM7OEdBL1pXLGFBQWE7a0hBQWIsYUFBYSxjQURBLE1BQU07OzJGQUNuQixhQUFhO2tCQUR6QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7QUFtYWxDOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFTLCtCQUErQixDQUN2QyxTQUFzQixFQUN0QixRQUFnQjtJQUVoQixJQUFJLGNBQWMsR0FBRyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFMUQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDMUQsT0FBTyxDQUFDLEdBQUcsR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDLEVBQUUsRUFBaUIsQ0FBQyxDQUFDO0lBRXRCLDJFQUEyRTtJQUMzRSxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsZ0JBQWdCLENBQWMsUUFBUSxDQUFDLENBQUM7SUFFeEUsMERBQTBEO0lBQzFELEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUMzRCxPQUFPLEtBQUssQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuXHRBcHBsaWNhdGlvblJlZixcblx0Q29tcG9uZW50UmVmLFxuXHRjcmVhdGVDb21wb25lbnQsXG5cdEVudmlyb25tZW50SW5qZWN0b3IsXG5cdEV2ZW50RW1pdHRlcixcblx0aW5qZWN0LFxuXHRJbmplY3RhYmxlLFxuXHRJbmplY3Rvcixcblx0Tmdab25lLFxuXHRUZW1wbGF0ZVJlZixcblx0VHlwZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG5cdENvbnRlbnRSZWYsXG5cdGh1YkZvY3VzVHJhcCxcblx0aXNEZWZpbmVkLFxuXHRpc1N0cmluZyxcblx0U2Nyb2xsQmFyXG59IGZyb20gJ25nLWh1Yi11aS11dGlscyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSHViTW9kYWxCYWNrZHJvcCB9IGZyb20gJy4vbW9kYWwtYmFja2Ryb3AnO1xuaW1wb3J0IHsgSHViTW9kYWxPcHRpb25zLCBIdWJNb2RhbFVwZGF0YWJsZU9wdGlvbnMgfSBmcm9tICcuL21vZGFsLWNvbmZpZyc7XG5pbXBvcnQgeyBIdWJBY3RpdmVNb2RhbCwgSHViTW9kYWxSZWYgfSBmcm9tICcuL21vZGFsLXJlZic7XG5pbXBvcnQgeyBIdWJNb2RhbFdpbmRvdyB9IGZyb20gJy4vbW9kYWwtd2luZG93JztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBIdWJNb2RhbFN0YWNrIHtcblx0cHJpdmF0ZSBfYXBwbGljYXRpb25SZWYgPSBpbmplY3QoQXBwbGljYXRpb25SZWYpO1xuXHRwcml2YXRlIF9pbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cdHByaXZhdGUgX2Vudmlyb25tZW50SW5qZWN0b3IgPSBpbmplY3QoRW52aXJvbm1lbnRJbmplY3Rvcik7XG5cdHByaXZhdGUgX2RvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcblx0cHJpdmF0ZSBfc2Nyb2xsQmFyID0gaW5qZWN0KFNjcm9sbEJhcik7XG5cblx0cHJpdmF0ZSBfYWN0aXZlV2luZG93Q21wdEhhc0NoYW5nZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXHRwcml2YXRlIF9hcmlhSGlkZGVuVmFsdWVzOiBNYXA8RWxlbWVudCwgc3RyaW5nIHwgbnVsbD4gPSBuZXcgTWFwKCk7XG5cdHByaXZhdGUgX3Njcm9sbEJhclJlc3RvcmVGbjogbnVsbCB8ICgoKSA9PiB2b2lkKSA9IG51bGw7XG5cdHByaXZhdGUgX21vZGFsUmVmczogSHViTW9kYWxSZWZbXSA9IFtdO1xuXHRwcml2YXRlIF93aW5kb3dDbXB0czogQ29tcG9uZW50UmVmPEh1Yk1vZGFsV2luZG93PltdID0gW107XG5cdHByaXZhdGUgX2FjdGl2ZUluc3RhbmNlczogRXZlbnRFbWl0dGVyPEh1Yk1vZGFsUmVmW10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGNvbnN0IG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG5cdFx0Ly8gVHJhcCBmb2N1cyBvbiBhY3RpdmUgV2luZG93Q21wdFxuXHRcdHRoaXMuX2FjdGl2ZVdpbmRvd0NtcHRIYXNDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB7XG5cdFx0XHRpZiAodGhpcy5fd2luZG93Q21wdHMubGVuZ3RoKSB7XG5cdFx0XHRcdGNvbnN0IGFjdGl2ZVdpbmRvd0NtcHQgPVxuXHRcdFx0XHRcdHRoaXMuX3dpbmRvd0NtcHRzW3RoaXMuX3dpbmRvd0NtcHRzLmxlbmd0aCAtIDFdO1xuXHRcdFx0XHRodWJGb2N1c1RyYXAoXG5cdFx0XHRcdFx0bmdab25lLFxuXHRcdFx0XHRcdGFjdGl2ZVdpbmRvd0NtcHQubG9jYXRpb24ubmF0aXZlRWxlbWVudCxcblx0XHRcdFx0XHR0aGlzLl9hY3RpdmVXaW5kb3dDbXB0SGFzQ2hhbmdlZFxuXHRcdFx0XHQpO1xuXHRcdFx0XHR0aGlzLl9yZXZlcnRBcmlhSGlkZGVuKCk7XG5cdFx0XHRcdHRoaXMuX3NldEFyaWFIaWRkZW4oYWN0aXZlV2luZG93Q21wdC5sb2NhdGlvbi5uYXRpdmVFbGVtZW50KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgX3Jlc3RvcmVTY3JvbGxCYXIoKSB7XG5cdFx0Y29uc3Qgc2Nyb2xsQmFyUmVzdG9yZUZuID0gdGhpcy5fc2Nyb2xsQmFyUmVzdG9yZUZuO1xuXHRcdGlmIChzY3JvbGxCYXJSZXN0b3JlRm4pIHtcblx0XHRcdHRoaXMuX3Njcm9sbEJhclJlc3RvcmVGbiA9IG51bGw7XG5cdFx0XHRzY3JvbGxCYXJSZXN0b3JlRm4oKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIF9oaWRlU2Nyb2xsQmFyKCkge1xuXHRcdGlmICghdGhpcy5fc2Nyb2xsQmFyUmVzdG9yZUZuKSB7XG5cdFx0XHR0aGlzLl9zY3JvbGxCYXJSZXN0b3JlRm4gPSB0aGlzLl9zY3JvbGxCYXIuaGlkZSgpO1xuXHRcdH1cblx0fVxuXG5cdG9wZW4oXG5cdFx0Y29udGVudEluamVjdG9yOiBJbmplY3Rvcixcblx0XHRjb250ZW50OiBhbnksXG5cdFx0b3B0aW9uczogSHViTW9kYWxPcHRpb25zXG5cdCk6IEh1Yk1vZGFsUmVmIHtcblx0XHRjb25zdCBjb250YWluZXJFbCA9XG5cdFx0XHRvcHRpb25zLmNvbnRhaW5lciBpbnN0YW5jZW9mIEhUTUxFbGVtZW50XG5cdFx0XHRcdD8gb3B0aW9ucy5jb250YWluZXJcblx0XHRcdFx0OiBpc0RlZmluZWQob3B0aW9ucy5jb250YWluZXIpXG5cdFx0XHRcdD8gdGhpcy5fZG9jdW1lbnQucXVlcnlTZWxlY3RvcihvcHRpb25zLmNvbnRhaW5lciEpXG5cdFx0XHRcdDogdGhpcy5fZG9jdW1lbnQuYm9keTtcblxuXHRcdGlmICghY29udGFpbmVyRWwpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcblx0XHRcdFx0YFRoZSBzcGVjaWZpZWQgbW9kYWwgY29udGFpbmVyIFwiJHtcblx0XHRcdFx0XHRvcHRpb25zLmNvbnRhaW5lciB8fCAnYm9keSdcblx0XHRcdFx0fVwiIHdhcyBub3QgZm91bmQgaW4gdGhlIERPTS5gXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHRoaXMuX2hpZGVTY3JvbGxCYXIoKTtcblxuXHRcdGNvbnN0IGFjdGl2ZU1vZGFsID0gbmV3IEh1YkFjdGl2ZU1vZGFsKCk7XG5cblx0XHRjb250ZW50SW5qZWN0b3IgPSBvcHRpb25zLmluamVjdG9yIHx8IGNvbnRlbnRJbmplY3Rvcjtcblx0XHRjb25zdCBlbnZpcm9ubWVudEluamVjdG9yID1cblx0XHRcdGNvbnRlbnRJbmplY3Rvci5nZXQoRW52aXJvbm1lbnRJbmplY3RvciwgbnVsbCkgfHxcblx0XHRcdHRoaXMuX2Vudmlyb25tZW50SW5qZWN0b3I7XG5cdFx0Y29uc3QgY29udGVudFJlZiA9IHRoaXMuX2dldENvbnRlbnRSZWYoXG5cdFx0XHRjb250ZW50SW5qZWN0b3IsXG5cdFx0XHRlbnZpcm9ubWVudEluamVjdG9yLFxuXHRcdFx0Y29udGVudCxcblx0XHRcdGFjdGl2ZU1vZGFsLFxuXHRcdFx0b3B0aW9uc1xuXHRcdCk7XG5cblx0XHRjb25zdCBiYWNrZHJvcENtcHRSZWY6IENvbXBvbmVudFJlZjxIdWJNb2RhbEJhY2tkcm9wPiB8IHVuZGVmaW5lZCA9XG5cdFx0XHRvcHRpb25zLmJhY2tkcm9wICE9PSBmYWxzZVxuXHRcdFx0XHQ/IHRoaXMuX2F0dGFjaEJhY2tkcm9wKGNvbnRhaW5lckVsKVxuXHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRjb25zdCB3aW5kb3dDbXB0UmVmOiBDb21wb25lbnRSZWY8SHViTW9kYWxXaW5kb3c+ID1cblx0XHRcdHRoaXMuX2F0dGFjaFdpbmRvd0NvbXBvbmVudChjb250YWluZXJFbCwgY29udGVudFJlZi5ub2Rlcywgb3B0aW9ucyk7XG5cdFx0Y29uc3QgaHViTW9kYWxSZWY6IEh1Yk1vZGFsUmVmID0gbmV3IEh1Yk1vZGFsUmVmKFxuXHRcdFx0d2luZG93Q21wdFJlZixcblx0XHRcdGNvbnRlbnRSZWYsXG5cdFx0XHRiYWNrZHJvcENtcHRSZWYsXG5cdFx0XHRvcHRpb25zLmJlZm9yZURpc21pc3Ncblx0XHQpO1xuXG5cdFx0dGhpcy5fcmVnaXN0ZXJNb2RhbFJlZihodWJNb2RhbFJlZik7XG5cdFx0dGhpcy5fcmVnaXN0ZXJXaW5kb3dDbXB0KHdpbmRvd0NtcHRSZWYpO1xuXG5cdFx0Ly8gV2UgaGF2ZSB0byBjbGVhbnVwIERPTSBhZnRlciB0aGUgbGFzdCBtb2RhbCB3aGVuIEJPVEggJ2hpZGRlbicgd2FzIGVtaXR0ZWQgYW5kICdyZXN1bHQnIHByb21pc2Ugd2FzIHJlc29sdmVkOlxuXHRcdC8vIC0gd2l0aCBhbmltYXRpb25zIE9GRiwgJ2hpZGRlbicgZW1pdHMgc3luY2hyb25vdXNseSwgdGhlbiAncmVzdWx0JyBpcyByZXNvbHZlZCBhc3luY2hyb25vdXNseVxuXHRcdC8vIC0gd2l0aCBhbmltYXRpb25zIE9OLCAncmVzdWx0JyBpcyByZXNvbHZlZCBhc3luY2hyb25vdXNseSwgdGhlbiAnaGlkZGVuJyBlbWl0cyBhc3luY2hyb25vdXNseVxuXHRcdGh1Yk1vZGFsUmVmLmhpZGRlbi5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PlxuXHRcdFx0UHJvbWlzZS5yZXNvbHZlKHRydWUpLnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRpZiAoIXRoaXMuX21vZGFsUmVmcy5sZW5ndGgpIHtcblx0XHRcdFx0XHR0aGlzLl9kb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ21vZGFsLW9wZW4nKTtcblx0XHRcdFx0XHR0aGlzLl9yZXN0b3JlU2Nyb2xsQmFyKCk7XG5cdFx0XHRcdFx0dGhpcy5fcmV2ZXJ0QXJpYUhpZGRlbigpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdCk7XG5cblx0XHRhY3RpdmVNb2RhbC5jbG9zZSA9IChyZXN1bHQ6IGFueSkgPT4ge1xuXHRcdFx0aHViTW9kYWxSZWYuY2xvc2UocmVzdWx0KTtcblx0XHR9O1xuXHRcdGFjdGl2ZU1vZGFsLmRpc21pc3MgPSAocmVhc29uOiBhbnkpID0+IHtcblx0XHRcdGh1Yk1vZGFsUmVmLmRpc21pc3MocmVhc29uKTtcblx0XHR9O1xuXG5cdFx0YWN0aXZlTW9kYWwudXBkYXRlID0gKG9wdGlvbnM6IEh1Yk1vZGFsVXBkYXRhYmxlT3B0aW9ucykgPT4ge1xuXHRcdFx0aHViTW9kYWxSZWYudXBkYXRlKG9wdGlvbnMpO1xuXHRcdH07XG5cblx0XHRodWJNb2RhbFJlZi51cGRhdGUob3B0aW9ucyk7XG5cdFx0aWYgKHRoaXMuX21vZGFsUmVmcy5sZW5ndGggPT09IDEpIHtcblx0XHRcdHRoaXMuX2RvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnbW9kYWwtb3BlbicpO1xuXHRcdH1cblxuXHRcdGlmIChiYWNrZHJvcENtcHRSZWYgJiYgYmFja2Ryb3BDbXB0UmVmLmluc3RhbmNlKSB7XG5cdFx0XHRiYWNrZHJvcENtcHRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdH1cblx0XHR3aW5kb3dDbXB0UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblx0XHRyZXR1cm4gaHViTW9kYWxSZWY7XG5cdH1cblxuXHRnZXQgYWN0aXZlSW5zdGFuY2VzKCkge1xuXHRcdHJldHVybiB0aGlzLl9hY3RpdmVJbnN0YW5jZXM7XG5cdH1cblxuXHRkaXNtaXNzQWxsKHJlYXNvbj86IGFueSkge1xuXHRcdHRoaXMuX21vZGFsUmVmcy5mb3JFYWNoKChodWJNb2RhbFJlZikgPT4gaHViTW9kYWxSZWYuZGlzbWlzcyhyZWFzb24pKTtcblx0fVxuXG5cdGhhc09wZW5Nb2RhbHMoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuX21vZGFsUmVmcy5sZW5ndGggPiAwO1xuXHR9XG5cblx0cHJpdmF0ZSBfYXR0YWNoQmFja2Ryb3AoXG5cdFx0Y29udGFpbmVyRWw6IEVsZW1lbnRcblx0KTogQ29tcG9uZW50UmVmPEh1Yk1vZGFsQmFja2Ryb3A+IHtcblx0XHRsZXQgYmFja2Ryb3BDbXB0UmVmID0gY3JlYXRlQ29tcG9uZW50KEh1Yk1vZGFsQmFja2Ryb3AsIHtcblx0XHRcdGVudmlyb25tZW50SW5qZWN0b3I6IHRoaXMuX2FwcGxpY2F0aW9uUmVmLmluamVjdG9yLFxuXHRcdFx0ZWxlbWVudEluamVjdG9yOiB0aGlzLl9pbmplY3RvclxuXHRcdH0pO1xuXHRcdHRoaXMuX2FwcGxpY2F0aW9uUmVmLmF0dGFjaFZpZXcoYmFja2Ryb3BDbXB0UmVmLmhvc3RWaWV3KTtcblx0XHRjb250YWluZXJFbC5hcHBlbmRDaGlsZChiYWNrZHJvcENtcHRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCk7XG5cdFx0cmV0dXJuIGJhY2tkcm9wQ21wdFJlZjtcblx0fVxuXG5cdHByaXZhdGUgX2F0dGFjaFdpbmRvd0NvbXBvbmVudChcblx0XHRjb250YWluZXJFbDogRWxlbWVudCxcblx0XHRbaGVhZGVyTm9kZXMsIGJvZHlOb2RlcywgZm9vdGVyTm9kZXNdOiBOb2RlW11bXSxcblx0XHRvcHRpb25zOiBIdWJNb2RhbE9wdGlvbnNcblx0KTogQ29tcG9uZW50UmVmPEh1Yk1vZGFsV2luZG93PiB7XG5cdFx0Y29uc3Qgc2luZ2xlQ29udGVudCA9XG5cdFx0XHQhb3B0aW9ucy5oZWFkZXJTZWxlY3RvciAmJiAhb3B0aW9ucy5mb290ZXJTZWxlY3Rvcjtcblx0XHRsZXQgd2luZG93Q21wdFJlZiA9IGNyZWF0ZUNvbXBvbmVudChIdWJNb2RhbFdpbmRvdywge1xuXHRcdFx0ZW52aXJvbm1lbnRJbmplY3RvcjogdGhpcy5fYXBwbGljYXRpb25SZWYuaW5qZWN0b3IsXG5cdFx0XHRlbGVtZW50SW5qZWN0b3I6IHRoaXMuX2luamVjdG9yLFxuXHRcdFx0cHJvamVjdGFibGVOb2Rlczogc2luZ2xlQ29udGVudFxuXHRcdFx0XHQ/IFtib2R5Tm9kZXNdXG5cdFx0XHRcdDogW1tdLCBoZWFkZXJOb2RlcywgYm9keU5vZGVzLCBmb290ZXJOb2Rlc11cblx0XHR9KTtcblxuXHRcdE9iamVjdC5hc3NpZ24od2luZG93Q21wdFJlZi5pbnN0YW5jZSwgeyBzaW5nbGVDb250ZW50IH0pO1xuXG5cdFx0dGhpcy5fYXBwbGljYXRpb25SZWYuYXR0YWNoVmlldyh3aW5kb3dDbXB0UmVmLmhvc3RWaWV3KTtcblx0XHRjb250YWluZXJFbC5hcHBlbmRDaGlsZCh3aW5kb3dDbXB0UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xuXHRcdHJldHVybiB3aW5kb3dDbXB0UmVmO1xuXHR9XG5cblx0cHJpdmF0ZSBfZ2V0Q29udGVudFJlZihcblx0XHRjb250ZW50SW5qZWN0b3I6IEluamVjdG9yLFxuXHRcdGVudmlyb25tZW50SW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IsXG5cdFx0Y29udGVudDogVHlwZTxhbnk+IHwgVGVtcGxhdGVSZWY8YW55PiB8IHN0cmluZyxcblx0XHRhY3RpdmVNb2RhbDogSHViQWN0aXZlTW9kYWwsXG5cdFx0b3B0aW9uczogSHViTW9kYWxPcHRpb25zXG5cdCk6IENvbnRlbnRSZWYge1xuXHRcdGlmICghY29udGVudCkge1xuXHRcdFx0cmV0dXJuIG5ldyBDb250ZW50UmVmKFtdKTtcblx0XHR9IGVsc2UgaWYgKGNvbnRlbnQgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuXHRcdFx0cmV0dXJuIHRoaXMuX2NyZWF0ZUZyb21UZW1wbGF0ZVJlZihjb250ZW50LCBhY3RpdmVNb2RhbCwgb3B0aW9ucyk7XG5cdFx0fSBlbHNlIGlmIChpc1N0cmluZyhjb250ZW50KSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuX2NyZWF0ZUZyb21TdHJpbmcoY29udGVudCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0aGlzLl9jcmVhdGVGcm9tQ29tcG9uZW50KFxuXHRcdFx0XHRjb250ZW50SW5qZWN0b3IsXG5cdFx0XHRcdGVudmlyb25tZW50SW5qZWN0b3IsXG5cdFx0XHRcdGNvbnRlbnQsXG5cdFx0XHRcdGFjdGl2ZU1vZGFsLFxuXHRcdFx0XHRvcHRpb25zXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgX2NyZWF0ZUZyb21UZW1wbGF0ZVJlZihcblx0XHR0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Pixcblx0XHRhY3RpdmVNb2RhbDogSHViQWN0aXZlTW9kYWwsXG5cdFx0b3B0aW9uczogSHViTW9kYWxPcHRpb25zXG5cdCk6IENvbnRlbnRSZWYge1xuXHRcdGNvbnN0IGNvbnRleHQgPSB7XG5cdFx0XHQkaW1wbGljaXQ6IGFjdGl2ZU1vZGFsLFxuXHRcdFx0Y2xvc2UocmVzdWx0KSB7XG5cdFx0XHRcdGFjdGl2ZU1vZGFsLmNsb3NlKHJlc3VsdCk7XG5cdFx0XHR9LFxuXHRcdFx0ZGlzbWlzcyhyZWFzb24pIHtcblx0XHRcdFx0YWN0aXZlTW9kYWwuZGlzbWlzcyhyZWFzb24pO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0Y29uc3Qgdmlld1JlZiA9IHRlbXBsYXRlUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyhjb250ZXh0KTtcblx0XHR0aGlzLl9hcHBsaWNhdGlvblJlZi5hdHRhY2hWaWV3KHZpZXdSZWYpO1xuXG5cdFx0Y29uc3QgY29udGFpbmVyTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ25nLWNvbnRhaW5lcicpO1xuXHRcdGNvbnRhaW5lck5vZGUuYXBwZW5kKC4uLnZpZXdSZWYucm9vdE5vZGVzKTtcblxuXHRcdHRoaXMuX2FkZERpc21pc3NFdmVudExpc3RlbmVyKGNvbnRhaW5lck5vZGUsIGNvbnRleHQgYXMgYW55LCBvcHRpb25zKTtcblx0XHR0aGlzLl9hZGRDbG9zZUV2ZW50TGlzdGVuZXIoY29udGFpbmVyTm9kZSwgY29udGV4dCBhcyBhbnksIG9wdGlvbnMpO1xuXG5cdFx0cmV0dXJuIG5ldyBDb250ZW50UmVmKFxuXHRcdFx0W1xuXHRcdFx0XHRvcHRpb25zLmhlYWRlclNlbGVjdG9yXG5cdFx0XHRcdFx0PyBleHRyYWN0QW5kUmVtb3ZlTm9kZXNCeVNlbGVjdG9yKFxuXHRcdFx0XHRcdFx0XHRjb250YWluZXJOb2RlLFxuXHRcdFx0XHRcdFx0XHRvcHRpb25zLmhlYWRlclNlbGVjdG9yXG5cdFx0XHRcdFx0ICApXG5cdFx0XHRcdFx0OiBbXSxcblx0XHRcdFx0Y29udGFpbmVyTm9kZS5jaGlsZE5vZGVzIGFzIGFueSxcblx0XHRcdFx0b3B0aW9ucy5mb290ZXJTZWxlY3RvclxuXHRcdFx0XHRcdD8gZXh0cmFjdEFuZFJlbW92ZU5vZGVzQnlTZWxlY3Rvcihcblx0XHRcdFx0XHRcdFx0Y29udGFpbmVyTm9kZSxcblx0XHRcdFx0XHRcdFx0b3B0aW9ucy5mb290ZXJTZWxlY3RvclxuXHRcdFx0XHRcdCAgKVxuXHRcdFx0XHRcdDogW11cblx0XHRcdF0sXG5cdFx0XHR2aWV3UmVmXG5cdFx0KTtcblx0fVxuXG5cdHByaXZhdGUgX2NyZWF0ZUZyb21TdHJpbmcoY29udGVudDogc3RyaW5nKTogQ29udGVudFJlZiB7XG5cdFx0Y29uc3QgY29tcG9uZW50ID0gdGhpcy5fZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYCR7Y29udGVudH1gKTtcblx0XHRyZXR1cm4gbmV3IENvbnRlbnRSZWYoW1tjb21wb25lbnRdXSk7XG5cdH1cblxuXHRwcml2YXRlIF9jcmVhdGVGcm9tQ29tcG9uZW50KFxuXHRcdGNvbnRlbnRJbmplY3RvcjogSW5qZWN0b3IsXG5cdFx0ZW52aXJvbm1lbnRJbmplY3RvcjogRW52aXJvbm1lbnRJbmplY3Rvcixcblx0XHRjb21wb25lbnRUeXBlOiBUeXBlPGFueT4sXG5cdFx0Y29udGV4dDogSHViQWN0aXZlTW9kYWwsXG5cdFx0b3B0aW9uczogSHViTW9kYWxPcHRpb25zXG5cdCk6IENvbnRlbnRSZWYge1xuXHRcdGNvbnN0IGVsZW1lbnRJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG5cdFx0XHRwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEh1YkFjdGl2ZU1vZGFsLCB1c2VWYWx1ZTogY29udGV4dCB9XSxcblx0XHRcdHBhcmVudDogY29udGVudEluamVjdG9yXG5cdFx0fSk7XG5cdFx0Y29uc3QgY29tcG9uZW50UmVmID0gY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudFR5cGUsIHtcblx0XHRcdGVudmlyb25tZW50SW5qZWN0b3IsXG5cdFx0XHRlbGVtZW50SW5qZWN0b3Jcblx0XHR9KTtcblxuXHRcdGlmIChvcHRpb25zLmRhdGEpIHtcblx0XHRcdE9iamVjdC5hc3NpZ24oY29tcG9uZW50UmVmLmluc3RhbmNlLCB7XG5cdFx0XHRcdGRhdGE6IG9wdGlvbnMuZGF0YVxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgY29tcG9uZW50TmF0aXZlRWw6IEhUTUxFbGVtZW50ID1cblx0XHRcdGNvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xuXHRcdGlmIChvcHRpb25zLnNjcm9sbGFibGUpIHtcblx0XHRcdGNvbXBvbmVudE5hdGl2ZUVsLmNsYXNzTGlzdC5hZGQoJ2NvbXBvbmVudC1ob3N0LXNjcm9sbGFibGUnKTtcblx0XHR9XG5cdFx0dGhpcy5fYXBwbGljYXRpb25SZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuXG5cdFx0dGhpcy5fYWRkRGlzbWlzc0V2ZW50TGlzdGVuZXIoY29tcG9uZW50TmF0aXZlRWwsIGNvbnRleHQsIG9wdGlvbnMpO1xuXHRcdHRoaXMuX2FkZENsb3NlRXZlbnRMaXN0ZW5lcihjb21wb25lbnROYXRpdmVFbCwgY29udGV4dCBhcyBhbnksIG9wdGlvbnMpO1xuXG5cdFx0Ly8gRklYTUU6IHdlIHNob3VsZCBoZXJlIGdldCByaWQgb2YgdGhlIGNvbXBvbmVudCBuYXRpdmVFbGVtZW50XG5cdFx0Ly8gYW5kIHVzZSBgW0FycmF5LmZyb20oY29tcG9uZW50TmF0aXZlRWwuY2hpbGROb2RlcyldYCBpbnN0ZWFkIGFuZCByZW1vdmUgdGhlIGFib3ZlIENTUyBjbGFzcy5cblx0XHRyZXR1cm4gbmV3IENvbnRlbnRSZWYoXG5cdFx0XHRbXG5cdFx0XHRcdG9wdGlvbnMuaGVhZGVyU2VsZWN0b3Jcblx0XHRcdFx0XHQ/IGV4dHJhY3RBbmRSZW1vdmVOb2Rlc0J5U2VsZWN0b3IoXG5cdFx0XHRcdFx0XHRcdGNvbXBvbmVudE5hdGl2ZUVsLFxuXHRcdFx0XHRcdFx0XHRvcHRpb25zLmhlYWRlclNlbGVjdG9yXG5cdFx0XHRcdFx0ICApXG5cdFx0XHRcdFx0OiBbXSxcblx0XHRcdFx0Y29tcG9uZW50TmF0aXZlRWwuY2hpbGROb2RlcyBhcyBhbnksXG5cdFx0XHRcdG9wdGlvbnMuZm9vdGVyU2VsZWN0b3Jcblx0XHRcdFx0XHQ/IGV4dHJhY3RBbmRSZW1vdmVOb2Rlc0J5U2VsZWN0b3IoXG5cdFx0XHRcdFx0XHRcdGNvbXBvbmVudE5hdGl2ZUVsLFxuXHRcdFx0XHRcdFx0XHRvcHRpb25zLmZvb3RlclNlbGVjdG9yXG5cdFx0XHRcdFx0ICApXG5cdFx0XHRcdFx0OiBbXVxuXHRcdFx0XSxcblx0XHRcdGNvbXBvbmVudFJlZi5ob3N0Vmlldyxcblx0XHRcdGNvbXBvbmVudFJlZlxuXHRcdCk7XG5cdH1cblxuXHRwcml2YXRlIF9zZXRBcmlhSGlkZGVuKGVsZW1lbnQ6IEVsZW1lbnQpIHtcblx0XHRjb25zdCBwYXJlbnQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XG5cdFx0aWYgKHBhcmVudCAmJiBlbGVtZW50ICE9PSB0aGlzLl9kb2N1bWVudC5ib2R5KSB7XG5cdFx0XHRBcnJheS5mcm9tKHBhcmVudC5jaGlsZHJlbikuZm9yRWFjaCgoc2libGluZykgPT4ge1xuXHRcdFx0XHRpZiAoc2libGluZyAhPT0gZWxlbWVudCAmJiBzaWJsaW5nLm5vZGVOYW1lICE9PSAnU0NSSVBUJykge1xuXHRcdFx0XHRcdHRoaXMuX2FyaWFIaWRkZW5WYWx1ZXMuc2V0KFxuXHRcdFx0XHRcdFx0c2libGluZyxcblx0XHRcdFx0XHRcdHNpYmxpbmcuZ2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRzaWJsaW5nLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblxuXHRcdFx0dGhpcy5fc2V0QXJpYUhpZGRlbihwYXJlbnQpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgX3JldmVydEFyaWFIaWRkZW4oKSB7XG5cdFx0dGhpcy5fYXJpYUhpZGRlblZhbHVlcy5mb3JFYWNoKCh2YWx1ZSwgZWxlbWVudCkgPT4ge1xuXHRcdFx0aWYgKHZhbHVlKSB7XG5cdFx0XHRcdGVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsIHZhbHVlKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWhpZGRlbicpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHRoaXMuX2FyaWFIaWRkZW5WYWx1ZXMuY2xlYXIoKTtcblx0fVxuXG5cdHByaXZhdGUgX3JlZ2lzdGVyTW9kYWxSZWYoaHViTW9kYWxSZWY6IEh1Yk1vZGFsUmVmKSB7XG5cdFx0Y29uc3QgdW5yZWdpc3Rlck1vZGFsUmVmID0gKCkgPT4ge1xuXHRcdFx0Y29uc3QgaW5kZXggPSB0aGlzLl9tb2RhbFJlZnMuaW5kZXhPZihodWJNb2RhbFJlZik7XG5cdFx0XHRpZiAoaW5kZXggPiAtMSkge1xuXHRcdFx0XHR0aGlzLl9tb2RhbFJlZnMuc3BsaWNlKGluZGV4LCAxKTtcblx0XHRcdFx0dGhpcy5fYWN0aXZlSW5zdGFuY2VzLmVtaXQodGhpcy5fbW9kYWxSZWZzKTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdHRoaXMuX21vZGFsUmVmcy5wdXNoKGh1Yk1vZGFsUmVmKTtcblx0XHR0aGlzLl9hY3RpdmVJbnN0YW5jZXMuZW1pdCh0aGlzLl9tb2RhbFJlZnMpO1xuXHRcdGh1Yk1vZGFsUmVmLnJlc3VsdC50aGVuKHVucmVnaXN0ZXJNb2RhbFJlZiwgdW5yZWdpc3Rlck1vZGFsUmVmKTtcblx0fVxuXG5cdHByaXZhdGUgX3JlZ2lzdGVyV2luZG93Q21wdChodWJXaW5kb3dDbXB0OiBDb21wb25lbnRSZWY8SHViTW9kYWxXaW5kb3c+KSB7XG5cdFx0dGhpcy5fd2luZG93Q21wdHMucHVzaChodWJXaW5kb3dDbXB0KTtcblx0XHR0aGlzLl9hY3RpdmVXaW5kb3dDbXB0SGFzQ2hhbmdlZC5uZXh0KCk7XG5cblx0XHRodWJXaW5kb3dDbXB0Lm9uRGVzdHJveSgoKSA9PiB7XG5cdFx0XHRjb25zdCBpbmRleCA9IHRoaXMuX3dpbmRvd0NtcHRzLmluZGV4T2YoaHViV2luZG93Q21wdCk7XG5cdFx0XHRpZiAoaW5kZXggPiAtMSkge1xuXHRcdFx0XHR0aGlzLl93aW5kb3dDbXB0cy5zcGxpY2UoaW5kZXgsIDEpO1xuXHRcdFx0XHR0aGlzLl9hY3RpdmVXaW5kb3dDbXB0SGFzQ2hhbmdlZC5uZXh0KCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogQXR0YWNoZXMgY2xpY2sgZXZlbnQgbGlzdGVuZXJzIHRvIGVsZW1lbnRzIHdpdGhpbiBhIGNvbnRhaW5lciBiYXNlZCBvbiBhIHNwZWNpZmllZCBkaXNtaXNzIHNlbGVjdG9yIHRvIGRpc21pc3MgYSBtb2RhbC5cblx0ICpcblx0ICogQHBhcmFtIHtIVE1MRWxlbWVudH0gY29udGFpbmVyIC0gVGhlIGBjb250YWluZXJgIHBhcmFtZXRlciBpcyBhbiBIVE1MRWxlbWVudCB0aGF0IHJlcHJlc2VudHMgdGhlIERPTSBlbGVtZW50IHdoaWNoIGNvbnRhaW5zIHRoZVxuXHQgKiBtb2RhbCBjb250ZW50LlxuXHQgKiBAcGFyYW0ge0h1YkFjdGl2ZU1vZGFsfSBjb250ZXh0IC0gVGhlIGBjb250ZXh0YCBwYXJhbWV0ZXIgaW4gdGhlIGBfYWRkRGlzbWlzc0V2ZW50TGlzdGVuZXJgIGZ1bmN0aW9uIHJlZmVycyB0byB0aGUgYWN0aXZlIG1vZGFsXG5cdCAqIGluc3RhbmNlIHRoYXQgaXMgYmVpbmcgZGlzcGxheWVkLiBJdCBpcyB1c2VkIHRvIGNhbGwgdGhlIGBkaXNtaXNzYCBtZXRob2Qgb24gdGhlIG1vZGFsIGluc3RhbmNlIHdoZW4gYSBkaXNtaXNzaWJsZSBlbGVtZW50IGlzXG5cdCAqIGNsaWNrZWQuXG5cdCAqIEBwYXJhbSB7SHViTW9kYWxPcHRpb25zfSBvcHRpb25zIC0gVGhlIGBvcHRpb25zYCBwYXJhbWV0ZXIgaXMgYW4gb2JqZWN0IHRoYXQgY29udGFpbnMgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgbW9kYWwuIEl0XG5cdCAqIG1heSBpbmNsdWRlIHByb3BlcnRpZXMgc3VjaCBhcyBgZGlzbWlzc1NlbGVjdG9yYCwgd2hpY2ggaXMgdXNlZCB0byBzcGVjaWZ5IGEgQ1NTIHNlbGVjdG9yIGZvciBlbGVtZW50cyB0aGF0LCB3aGVuIGNsaWNrZWQsIHdpbGxcblx0ICogZGlzbWlzcyB0aGUgbW9kYWwgYnkgY2FsbGluZyB0aGUgYGRpc21pc3NgIG1ldGhvZCBvbiB0aGUgYGNvbnRleHRgIG9iamVjdC5cblx0ICovXG5cdHByaXZhdGUgX2FkZERpc21pc3NFdmVudExpc3RlbmVyKFxuXHRcdGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsXG5cdFx0Y29udGV4dDogSHViQWN0aXZlTW9kYWwsXG5cdFx0b3B0aW9uczogSHViTW9kYWxPcHRpb25zXG5cdCkge1xuXHRcdGlmIChvcHRpb25zLmRpc21pc3NTZWxlY3Rvcikge1xuXHRcdFx0Y29uc3QgZGlzbWlzc2FhYmxlOiBOb2RlTGlzdE9mPEVsZW1lbnQ+ID1cblx0XHRcdFx0Y29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwob3B0aW9ucy5kaXNtaXNzU2VsZWN0b3IpO1xuXHRcdFx0Zm9yIChjb25zdCBpdGVtIG9mIEFycmF5LmZyb20oZGlzbWlzc2FhYmxlKSkge1xuXHRcdFx0XHRpdGVtLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gY29udGV4dC5kaXNtaXNzKCkpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBdHRhY2hlcyBjbGljayBldmVudCBsaXN0ZW5lcnMgdG8gZWxlbWVudHMgbWF0Y2hpbmcgYSBzcGVjaWZpZWQgc2VsZWN0b3IgdG8gY2xvc2UgYSBtb2RhbCB3aW5kb3cuXG5cdCAqXG5cdCAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGNvbnRhaW5lciAtIFRoZSBgY29udGFpbmVyYCBwYXJhbWV0ZXIgaXMgYW4gSFRNTEVsZW1lbnQgdGhhdCByZXByZXNlbnRzIHRoZSBET00gZWxlbWVudCB3aGljaCBjb250YWlucyB0aGVcblx0ICogbW9kYWwgY29udGVudC5cblx0ICogQHBhcmFtIHtIdWJBY3RpdmVNb2RhbH0gY29udGV4dCAtIFRoZSBgY29udGV4dGAgcGFyYW1ldGVyIGluIHRoZSBgX2FkZENsb3NlRXZlbnRMaXN0ZW5lcmAgZnVuY3Rpb24gaXMgb2YgdHlwZSBgSHViQWN0aXZlTW9kYWxgLlxuXHQgKiBJdCBpcyB1c2VkIHRvIHJlZmVyZW5jZSB0aGUgYWN0aXZlIG1vZGFsIGluc3RhbmNlIHdpdGhpbiB0aGUgZnVuY3Rpb24gYW5kIGNhbGwgdGhlIGBjbG9zZSgpYCBtZXRob2Qgb24gaXQgd2hlbiBhIGNsb3NlIGV2ZW50IGlzXG5cdCAqIHRyaWdnZXJlZC5cblx0ICogQHBhcmFtIHtIdWJNb2RhbE9wdGlvbnN9IG9wdGlvbnMgLSBUaGUgYG9wdGlvbnNgIHBhcmFtZXRlciBpcyBhbiBvYmplY3QgdGhhdCBjb250YWlucyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBtb2RhbC4gSXRcblx0ICogbWF5IGluY2x1ZGUgcHJvcGVydGllcyBzdWNoIGFzIGBjbG9zZVNlbGVjdG9yYCwgd2hpY2ggaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBzZWxlY3RvciBmb3IgZWxlbWVudHMgdGhhdCBjYW4gdHJpZ2dlciB0aGUgbW9kYWxcblx0ICogdG8gY2xvc2Ugd2hlbiBjbGlja2VkLlxuXHQgKi9cblx0cHJpdmF0ZSBfYWRkQ2xvc2VFdmVudExpc3RlbmVyKFxuXHRcdGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsXG5cdFx0Y29udGV4dDogSHViQWN0aXZlTW9kYWwsXG5cdFx0b3B0aW9uczogSHViTW9kYWxPcHRpb25zXG5cdCkge1xuXHRcdGlmIChvcHRpb25zLmNsb3NlU2VsZWN0b3IpIHtcblx0XHRcdGRlYnVnZ2VyO1xuXHRcdFx0Y29uc3QgZGlzbWlzc2FhYmxlOiBOb2RlTGlzdE9mPEVsZW1lbnQ+ID1cblx0XHRcdFx0Y29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwob3B0aW9ucy5jbG9zZVNlbGVjdG9yKTtcblx0XHRcdGZvciAoY29uc3QgaXRlbSBvZiBBcnJheS5mcm9tKGRpc21pc3NhYWJsZSkpIHtcblx0XHRcdFx0Y29uc3QgY2xpY2tFdmVudExpc3RlbmVycyA9IGl0ZW0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PlxuXHRcdFx0XHRcdGNvbnRleHQuY2xvc2UoKVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIEV4dHJhY3RzIGNoaWxkIG5vZGVzIG1hdGNoaW5nIGEgc2VsZWN0b3IgZnJvbSBhIGNvbnRhaW5lciBlbGVtZW50LCByZW1vdmVzIHRob3NlIG5vZGVzIGZyb20gdGhlIERPTSwgYW5kIHJldHVybnMgdGhlbSBhcyBhbiBhcnJheS5cbiAqXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBjb250YWluZXIgLSBUaGUgYGNvbnRhaW5lcmAgcGFyYW1ldGVyIGluIHRoZSBgZXh0cmFjdEFuZFJlbW92ZU5vZGVzQnlTZWxlY3RvcmAgZnVuY3Rpb24gaXMgYW4gSFRNTEVsZW1lbnRcbiAqIHRoYXQgcmVwcmVzZW50cyB0aGUgcGFyZW50IGVsZW1lbnQgd2l0aGluIHdoaWNoIHdlIHdhbnQgdG8gc2VhcmNoIGZvciBub2RlcyBtYXRjaGluZyBhIHNwZWNpZmljIHNlbGVjdG9yIGFuZCByZW1vdmUgdGhlbS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBzZWxlY3RvciAtIFRoZSBgc2VsZWN0b3JgIHBhcmFtZXRlciBpbiB0aGUgYGV4dHJhY3RBbmRSZW1vdmVOb2Rlc0J5U2VsZWN0b3JgIGZ1bmN0aW9uIGlzIGEgc3RyaW5nIHRoYXRcbiAqIHJlcHJlc2VudHMgYSBDU1Mgc2VsZWN0b3IuIFRoaXMgc2VsZWN0b3IgaXMgdXNlZCB0byBxdWVyeSBhbmQgc2VsZWN0IHNwZWNpZmljIGVsZW1lbnRzIHdpdGhpbiB0aGUgYGNvbnRhaW5lcmAgSFRNTEVsZW1lbnQuXG4gKlxuICogQHJldHVybnMgQW4gYXJyYXkgb2Ygbm9kZXMgdGhhdCB3ZXJlIGV4dHJhY3RlZCBmcm9tIHRoZSBjb250YWluZXIgZWxlbWVudCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgc2VsZWN0b3IsIGFuZCB0aGVuIHJlbW92ZXMgdGhvc2VcbiAqIG5vZGVzIGZyb20gdGhlIERPTS5cbiAqL1xuZnVuY3Rpb24gZXh0cmFjdEFuZFJlbW92ZU5vZGVzQnlTZWxlY3Rvcihcblx0Y29udGFpbmVyOiBIVE1MRWxlbWVudCxcblx0c2VsZWN0b3I6IHN0cmluZ1xuKTogQXJyYXk8Tm9kZT4ge1xuXHRsZXQgY29udGFpbmVyTm9kZXMgPSBjb250YWluZXIucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7XG5cblx0Y29uc3Qgbm9kZXMgPSBBcnJheS5mcm9tKGNvbnRhaW5lck5vZGVzKS5yZWR1Y2UoKGFjYywgYykgPT4ge1xuXHRcdHJldHVybiBbLi4uYWNjLCAuLi5BcnJheS5mcm9tKGMuY2hpbGROb2RlcyldO1xuXHR9LCBbXSBhcyBBcnJheTxOb2RlPik7XG5cblx0Ly8gU2VsZWNjaW9uYSBsb3Mgbm9kb3MgZGVudHJvIGRlbCBjb250ZW5lZG9yIHF1ZSBjb2luY2lkYW4gY29uIGVsIHNlbGVjdG9yXG5cdGNvbnN0IG5vZGVzVG9SZW1vdmUgPSBjb250YWluZXIucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oc2VsZWN0b3IpO1xuXG5cdC8vIENvbnZlcnRpciBOb2RlTGlzdCBhIGFycmF5IHkgZWxpbWluYXIgY2FkYSBub2RvIGRlbCBET01cblx0QXJyYXkuZnJvbShub2Rlc1RvUmVtb3ZlKS5mb3JFYWNoKChub2RlKSA9PiBub2RlLnJlbW92ZSgpKTtcblx0cmV0dXJuIG5vZGVzO1xufVxuIl19
|
|
321
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tb2RhbC9zcmMvbGliL21vZGFsLXN0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ04sY0FBYyxFQUVkLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLE1BQU0sRUFDTixVQUFVLEVBQ1YsUUFBUSxFQUNSLE1BQU0sRUFDTixXQUFXLEVBRVgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNOLFVBQVUsRUFDVixZQUFZLEVBQ1osU0FBUyxFQUNULFFBQVEsRUFDUixTQUFTLEVBQ1QsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBR2hELE1BQU0sT0FBTyxhQUFhO0lBY3pCO1FBYlEsb0JBQWUsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDekMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3Qix5QkFBb0IsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNuRCxjQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdCLGVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFL0IsZ0NBQTJCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNsRCxzQkFBaUIs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SSxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUM1QyxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQy9ELE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FDZixDQUFDO2FBQ0Y7U0FDRDtJQUNGLENBQUM7OEdBOVpXLGFBQWE7a0hBQWIsYUFBYSxjQURBLE1BQU07OzJGQUNuQixhQUFhO2tCQUR6QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7QUFrYWxDOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFTLCtCQUErQixDQUN2QyxTQUFzQixFQUN0QixRQUFnQjtJQUVoQixJQUFJLGNBQWMsR0FBRyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFMUQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDMUQsT0FBTyxDQUFDLEdBQUcsR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDLEVBQUUsRUFBaUIsQ0FBQyxDQUFDO0lBRXRCLDJFQUEyRTtJQUMzRSxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsZ0JBQWdCLENBQWMsUUFBUSxDQUFDLENBQUM7SUFFeEUsMERBQTBEO0lBQzFELEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUMzRCxPQUFPLEtBQUssQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuXHRBcHBsaWNhdGlvblJlZixcblx0Q29tcG9uZW50UmVmLFxuXHRjcmVhdGVDb21wb25lbnQsXG5cdEVudmlyb25tZW50SW5qZWN0b3IsXG5cdEV2ZW50RW1pdHRlcixcblx0aW5qZWN0LFxuXHRJbmplY3RhYmxlLFxuXHRJbmplY3Rvcixcblx0Tmdab25lLFxuXHRUZW1wbGF0ZVJlZixcblx0VHlwZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG5cdENvbnRlbnRSZWYsXG5cdGh1YkZvY3VzVHJhcCxcblx0aXNEZWZpbmVkLFxuXHRpc1N0cmluZyxcblx0U2Nyb2xsQmFyXG59IGZyb20gJ25nLWh1Yi11aS11dGlscyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSHViTW9kYWxCYWNrZHJvcCB9IGZyb20gJy4vbW9kYWwtYmFja2Ryb3AnO1xuaW1wb3J0IHsgSHViTW9kYWxPcHRpb25zLCBIdWJNb2RhbFVwZGF0YWJsZU9wdGlvbnMgfSBmcm9tICcuL21vZGFsLWNvbmZpZyc7XG5pbXBvcnQgeyBIdWJBY3RpdmVNb2RhbCwgSHViTW9kYWxSZWYgfSBmcm9tICcuL21vZGFsLXJlZic7XG5pbXBvcnQgeyBIdWJNb2RhbFdpbmRvdyB9IGZyb20gJy4vbW9kYWwtd2luZG93JztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBIdWJNb2RhbFN0YWNrIHtcblx0cHJpdmF0ZSBfYXBwbGljYXRpb25SZWYgPSBpbmplY3QoQXBwbGljYXRpb25SZWYpO1xuXHRwcml2YXRlIF9pbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cdHByaXZhdGUgX2Vudmlyb25tZW50SW5qZWN0b3IgPSBpbmplY3QoRW52aXJvbm1lbnRJbmplY3Rvcik7XG5cdHByaXZhdGUgX2RvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcblx0cHJpdmF0ZSBfc2Nyb2xsQmFyID0gaW5qZWN0KFNjcm9sbEJhcik7XG5cblx0cHJpdmF0ZSBfYWN0aXZlV2luZG93Q21wdEhhc0NoYW5nZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXHRwcml2YXRlIF9hcmlhSGlkZGVuVmFsdWVzOiBNYXA8RWxlbWVudCwgc3RyaW5nIHwgbnVsbD4gPSBuZXcgTWFwKCk7XG5cdHByaXZhdGUgX3Njcm9sbEJhclJlc3RvcmVGbjogbnVsbCB8ICgoKSA9PiB2b2lkKSA9IG51bGw7XG5cdHByaXZhdGUgX21vZGFsUmVmczogSHViTW9kYWxSZWZbXSA9IFtdO1xuXHRwcml2YXRlIF93aW5kb3dDbXB0czogQ29tcG9uZW50UmVmPEh1Yk1vZGFsV2luZG93PltdID0gW107XG5cdHByaXZhdGUgX2FjdGl2ZUluc3RhbmNlczogRXZlbnRFbWl0dGVyPEh1Yk1vZGFsUmVmW10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGNvbnN0IG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG5cdFx0Ly8gVHJhcCBmb2N1cyBvbiBhY3RpdmUgV2luZG93Q21wdFxuXHRcdHRoaXMuX2FjdGl2ZVdpbmRvd0NtcHRIYXNDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB7XG5cdFx0XHRpZiAodGhpcy5fd2luZG93Q21wdHMubGVuZ3RoKSB7XG5cdFx0XHRcdGNvbnN0IGFjdGl2ZVdpbmRvd0NtcHQgPVxuXHRcdFx0XHRcdHRoaXMuX3dpbmRvd0NtcHRzW3RoaXMuX3dpbmRvd0NtcHRzLmxlbmd0aCAtIDFdO1xuXHRcdFx0XHRodWJGb2N1c1RyYXAoXG5cdFx0XHRcdFx0bmdab25lLFxuXHRcdFx0XHRcdGFjdGl2ZVdpbmRvd0NtcHQubG9jYXRpb24ubmF0aXZlRWxlbWVudCxcblx0XHRcdFx0XHR0aGlzLl9hY3RpdmVXaW5kb3dDbXB0SGFzQ2hhbmdlZFxuXHRcdFx0XHQpO1xuXHRcdFx0XHR0aGlzLl9yZXZlcnRBcmlhSGlkZGVuKCk7XG5cdFx0XHRcdHRoaXMuX3NldEFyaWFIaWRkZW4oYWN0aXZlV2luZG93Q21wdC5sb2NhdGlvbi5uYXRpdmVFbGVtZW50KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgX3Jlc3RvcmVTY3JvbGxCYXIoKSB7XG5cdFx0Y29uc3Qgc2Nyb2xsQmFyUmVzdG9yZUZuID0gdGhpcy5fc2Nyb2xsQmFyUmVzdG9yZUZuO1xuXHRcdGlmIChzY3JvbGxCYXJSZXN0b3JlRm4pIHtcblx0XHRcdHRoaXMuX3Njcm9sbEJhclJlc3RvcmVGbiA9IG51bGw7XG5cdFx0XHRzY3JvbGxCYXJSZXN0b3JlRm4oKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIF9oaWRlU2Nyb2xsQmFyKCkge1xuXHRcdGlmICghdGhpcy5fc2Nyb2xsQmFyUmVzdG9yZUZuKSB7XG5cdFx0XHR0aGlzLl9zY3JvbGxCYXJSZXN0b3JlRm4gPSB0aGlzLl9zY3JvbGxCYXIuaGlkZSgpO1xuXHRcdH1cblx0fVxuXG5cdG9wZW4oXG5cdFx0Y29udGVudEluamVjdG9yOiBJbmplY3Rvcixcblx0XHRjb250ZW50OiBhbnksXG5cdFx0b3B0aW9uczogSHViTW9kYWxPcHRpb25zXG5cdCk6IEh1Yk1vZGFsUmVmIHtcblx0XHRjb25zdCBjb250YWluZXJFbCA9XG5cdFx0XHRvcHRpb25zLmNvbnRhaW5lciBpbnN0YW5jZW9mIEhUTUxFbGVtZW50XG5cdFx0XHRcdD8gb3B0aW9ucy5jb250YWluZXJcblx0XHRcdFx0OiBpc0RlZmluZWQob3B0aW9ucy5jb250YWluZXIpXG5cdFx0XHRcdD8gdGhpcy5fZG9jdW1lbnQucXVlcnlTZWxlY3RvcihvcHRpb25zLmNvbnRhaW5lciEpXG5cdFx0XHRcdDogdGhpcy5fZG9jdW1lbnQuYm9keTtcblxuXHRcdGlmICghY29udGFpbmVyRWwpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcblx0XHRcdFx0YFRoZSBzcGVjaWZpZWQgbW9kYWwgY29udGFpbmVyIFwiJHtcblx0XHRcdFx0XHRvcHRpb25zLmNvbnRhaW5lciB8fCAnYm9keSdcblx0XHRcdFx0fVwiIHdhcyBub3QgZm91bmQgaW4gdGhlIERPTS5gXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHRoaXMuX2hpZGVTY3JvbGxCYXIoKTtcblxuXHRcdGNvbnN0IGFjdGl2ZU1vZGFsID0gbmV3IEh1YkFjdGl2ZU1vZGFsKCk7XG5cblx0XHRjb250ZW50SW5qZWN0b3IgPSBvcHRpb25zLmluamVjdG9yIHx8IGNvbnRlbnRJbmplY3Rvcjtcblx0XHRjb25zdCBlbnZpcm9ubWVudEluamVjdG9yID1cblx0XHRcdGNvbnRlbnRJbmplY3Rvci5nZXQoRW52aXJvbm1lbnRJbmplY3RvciwgbnVsbCkgfHxcblx0XHRcdHRoaXMuX2Vudmlyb25tZW50SW5qZWN0b3I7XG5cdFx0Y29uc3QgY29udGVudFJlZiA9IHRoaXMuX2dldENvbnRlbnRSZWYoXG5cdFx0XHRjb250ZW50SW5qZWN0b3IsXG5cdFx0XHRlbnZpcm9ubWVudEluamVjdG9yLFxuXHRcdFx0Y29udGVudCxcblx0XHRcdGFjdGl2ZU1vZGFsLFxuXHRcdFx0b3B0aW9uc1xuXHRcdCk7XG5cblx0XHRjb25zdCBiYWNrZHJvcENtcHRSZWY6IENvbXBvbmVudFJlZjxIdWJNb2RhbEJhY2tkcm9wPiB8IHVuZGVmaW5lZCA9XG5cdFx0XHRvcHRpb25zLmJhY2tkcm9wICE9PSBmYWxzZVxuXHRcdFx0XHQ/IHRoaXMuX2F0dGFjaEJhY2tkcm9wKGNvbnRhaW5lckVsKVxuXHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRjb25zdCB3aW5kb3dDbXB0UmVmOiBDb21wb25lbnRSZWY8SHViTW9kYWxXaW5kb3c+ID1cblx0XHRcdHRoaXMuX2F0dGFjaFdpbmRvd0NvbXBvbmVudChjb250YWluZXJFbCwgY29udGVudFJlZi5ub2Rlcywgb3B0aW9ucyk7XG5cdFx0Y29uc3QgaHViTW9kYWxSZWY6IEh1Yk1vZGFsUmVmID0gbmV3IEh1Yk1vZGFsUmVmKFxuXHRcdFx0d2luZG93Q21wdFJlZixcblx0XHRcdGNvbnRlbnRSZWYsXG5cdFx0XHRiYWNrZHJvcENtcHRSZWYsXG5cdFx0XHRvcHRpb25zLmJlZm9yZURpc21pc3Ncblx0XHQpO1xuXG5cdFx0dGhpcy5fcmVnaXN0ZXJNb2RhbFJlZihodWJNb2RhbFJlZik7XG5cdFx0dGhpcy5fcmVnaXN0ZXJXaW5kb3dDbXB0KHdpbmRvd0NtcHRSZWYpO1xuXG5cdFx0Ly8gV2UgaGF2ZSB0byBjbGVhbnVwIERPTSBhZnRlciB0aGUgbGFzdCBtb2RhbCB3aGVuIEJPVEggJ2hpZGRlbicgd2FzIGVtaXR0ZWQgYW5kICdyZXN1bHQnIHByb21pc2Ugd2FzIHJlc29sdmVkOlxuXHRcdC8vIC0gd2l0aCBhbmltYXRpb25zIE9GRiwgJ2hpZGRlbicgZW1pdHMgc3luY2hyb25vdXNseSwgdGhlbiAncmVzdWx0JyBpcyByZXNvbHZlZCBhc3luY2hyb25vdXNseVxuXHRcdC8vIC0gd2l0aCBhbmltYXRpb25zIE9OLCAncmVzdWx0JyBpcyByZXNvbHZlZCBhc3luY2hyb25vdXNseSwgdGhlbiAnaGlkZGVuJyBlbWl0cyBhc3luY2hyb25vdXNseVxuXHRcdGh1Yk1vZGFsUmVmLmhpZGRlbi5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PlxuXHRcdFx0UHJvbWlzZS5yZXNvbHZlKHRydWUpLnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRpZiAoIXRoaXMuX21vZGFsUmVmcy5sZW5ndGgpIHtcblx0XHRcdFx0XHR0aGlzLl9kb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ21vZGFsLW9wZW4nKTtcblx0XHRcdFx0XHR0aGlzLl9yZXN0b3JlU2Nyb2xsQmFyKCk7XG5cdFx0XHRcdFx0dGhpcy5fcmV2ZXJ0QXJpYUhpZGRlbigpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdCk7XG5cblx0XHRhY3RpdmVNb2RhbC5jbG9zZSA9IChyZXN1bHQ6IGFueSkgPT4ge1xuXHRcdFx0aHViTW9kYWxSZWYuY2xvc2UocmVzdWx0KTtcblx0XHR9O1xuXHRcdGFjdGl2ZU1vZGFsLmRpc21pc3MgPSAocmVhc29uOiBhbnkpID0+IHtcblx0XHRcdGh1Yk1vZGFsUmVmLmRpc21pc3MocmVhc29uKTtcblx0XHR9O1xuXG5cdFx0YWN0aXZlTW9kYWwudXBkYXRlID0gKG9wdGlvbnM6IEh1Yk1vZGFsVXBkYXRhYmxlT3B0aW9ucykgPT4ge1xuXHRcdFx0aHViTW9kYWxSZWYudXBkYXRlKG9wdGlvbnMpO1xuXHRcdH07XG5cblx0XHRodWJNb2RhbFJlZi51cGRhdGUob3B0aW9ucyk7XG5cdFx0aWYgKHRoaXMuX21vZGFsUmVmcy5sZW5ndGggPT09IDEpIHtcblx0XHRcdHRoaXMuX2RvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnbW9kYWwtb3BlbicpO1xuXHRcdH1cblxuXHRcdGlmIChiYWNrZHJvcENtcHRSZWYgJiYgYmFja2Ryb3BDbXB0UmVmLmluc3RhbmNlKSB7XG5cdFx0XHRiYWNrZHJvcENtcHRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdH1cblx0XHR3aW5kb3dDbXB0UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblx0XHRyZXR1cm4gaHViTW9kYWxSZWY7XG5cdH1cblxuXHRnZXQgYWN0aXZlSW5zdGFuY2VzKCkge1xuXHRcdHJldHVybiB0aGlzLl9hY3RpdmVJbnN0YW5jZXM7XG5cdH1cblxuXHRkaXNtaXNzQWxsKHJlYXNvbj86IGFueSkge1xuXHRcdHRoaXMuX21vZGFsUmVmcy5mb3JFYWNoKChodWJNb2RhbFJlZikgPT4gaHViTW9kYWxSZWYuZGlzbWlzcyhyZWFzb24pKTtcblx0fVxuXG5cdGhhc09wZW5Nb2RhbHMoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuX21vZGFsUmVmcy5sZW5ndGggPiAwO1xuXHR9XG5cblx0cHJpdmF0ZSBfYXR0YWNoQmFja2Ryb3AoXG5cdFx0Y29udGFpbmVyRWw6IEVsZW1lbnRcblx0KTogQ29tcG9uZW50UmVmPEh1Yk1vZGFsQmFja2Ryb3A+IHtcblx0XHRsZXQgYmFja2Ryb3BDbXB0UmVmID0gY3JlYXRlQ29tcG9uZW50KEh1Yk1vZGFsQmFja2Ryb3AsIHtcblx0XHRcdGVudmlyb25tZW50SW5qZWN0b3I6IHRoaXMuX2FwcGxpY2F0aW9uUmVmLmluamVjdG9yLFxuXHRcdFx0ZWxlbWVudEluamVjdG9yOiB0aGlzLl9pbmplY3RvclxuXHRcdH0pO1xuXHRcdHRoaXMuX2FwcGxpY2F0aW9uUmVmLmF0dGFjaFZpZXcoYmFja2Ryb3BDbXB0UmVmLmhvc3RWaWV3KTtcblx0XHRjb250YWluZXJFbC5hcHBlbmRDaGlsZChiYWNrZHJvcENtcHRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCk7XG5cdFx0cmV0dXJuIGJhY2tkcm9wQ21wdFJlZjtcblx0fVxuXG5cdHByaXZhdGUgX2F0dGFjaFdpbmRvd0NvbXBvbmVudChcblx0XHRjb250YWluZXJFbDogRWxlbWVudCxcblx0XHRbaGVhZGVyTm9kZXMsIGJvZHlOb2RlcywgZm9vdGVyTm9kZXNdOiBOb2RlW11bXSxcblx0XHRvcHRpb25zOiBIdWJNb2RhbE9wdGlvbnNcblx0KTogQ29tcG9uZW50UmVmPEh1Yk1vZGFsV2luZG93PiB7XG5cdFx0Y29uc3Qgc2luZ2xlQ29udGVudCA9XG5cdFx0XHQhb3B0aW9ucy5oZWFkZXJTZWxlY3RvciAmJiAhb3B0aW9ucy5mb290ZXJTZWxlY3Rvcjtcblx0XHRsZXQgd2luZG93Q21wdFJlZiA9IGNyZWF0ZUNvbXBvbmVudChIdWJNb2RhbFdpbmRvdywge1xuXHRcdFx0ZW52aXJvbm1lbnRJbmplY3RvcjogdGhpcy5fYXBwbGljYXRpb25SZWYuaW5qZWN0b3IsXG5cdFx0XHRlbGVtZW50SW5qZWN0b3I6IHRoaXMuX2luamVjdG9yLFxuXHRcdFx0cHJvamVjdGFibGVOb2Rlczogc2luZ2xlQ29udGVudFxuXHRcdFx0XHQ/IFtib2R5Tm9kZXNdXG5cdFx0XHRcdDogW1tdLCBoZWFkZXJOb2RlcywgYm9keU5vZGVzLCBmb290ZXJOb2Rlc11cblx0XHR9KTtcblxuXHRcdE9iamVjdC5hc3NpZ24od2luZG93Q21wdFJlZi5pbnN0YW5jZSwgeyBzaW5nbGVDb250ZW50IH0pO1xuXG5cdFx0dGhpcy5fYXBwbGljYXRpb25SZWYuYXR0YWNoVmlldyh3aW5kb3dDbXB0UmVmLmhvc3RWaWV3KTtcblx0XHRjb250YWluZXJFbC5hcHBlbmRDaGlsZCh3aW5kb3dDbXB0UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xuXHRcdHJldHVybiB3aW5kb3dDbXB0UmVmO1xuXHR9XG5cblx0cHJpdmF0ZSBfZ2V0Q29udGVudFJlZihcblx0XHRjb250ZW50SW5qZWN0b3I6IEluamVjdG9yLFxuXHRcdGVudmlyb25tZW50SW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IsXG5cdFx0Y29udGVudDogVHlwZTxhbnk+IHwgVGVtcGxhdGVSZWY8YW55PiB8IHN0cmluZyxcblx0XHRhY3RpdmVNb2RhbDogSHViQWN0aXZlTW9kYWwsXG5cdFx0b3B0aW9uczogSHViTW9kYWxPcHRpb25zXG5cdCk6IENvbnRlbnRSZWYge1xuXHRcdGlmICghY29udGVudCkge1xuXHRcdFx0cmV0dXJuIG5ldyBDb250ZW50UmVmKFtdKTtcblx0XHR9IGVsc2UgaWYgKGNvbnRlbnQgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuXHRcdFx0cmV0dXJuIHRoaXMuX2NyZWF0ZUZyb21UZW1wbGF0ZVJlZihjb250ZW50LCBhY3RpdmVNb2RhbCwgb3B0aW9ucyk7XG5cdFx0fSBlbHNlIGlmIChpc1N0cmluZyhjb250ZW50KSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuX2NyZWF0ZUZyb21TdHJpbmcoY29udGVudCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0aGlzLl9jcmVhdGVGcm9tQ29tcG9uZW50KFxuXHRcdFx0XHRjb250ZW50SW5qZWN0b3IsXG5cdFx0XHRcdGVudmlyb25tZW50SW5qZWN0b3IsXG5cdFx0XHRcdGNvbnRlbnQsXG5cdFx0XHRcdGFjdGl2ZU1vZGFsLFxuXHRcdFx0XHRvcHRpb25zXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgX2NyZWF0ZUZyb21UZW1wbGF0ZVJlZihcblx0XHR0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Pixcblx0XHRhY3RpdmVNb2RhbDogSHViQWN0aXZlTW9kYWwsXG5cdFx0b3B0aW9uczogSHViTW9kYWxPcHRpb25zXG5cdCk6IENvbnRlbnRSZWYge1xuXHRcdGNvbnN0IGNvbnRleHQgPSB7XG5cdFx0XHQkaW1wbGljaXQ6IGFjdGl2ZU1vZGFsLFxuXHRcdFx0Y2xvc2UocmVzdWx0KSB7XG5cdFx0XHRcdGFjdGl2ZU1vZGFsLmNsb3NlKHJlc3VsdCk7XG5cdFx0XHR9LFxuXHRcdFx0ZGlzbWlzcyhyZWFzb24pIHtcblx0XHRcdFx0YWN0aXZlTW9kYWwuZGlzbWlzcyhyZWFzb24pO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0Y29uc3Qgdmlld1JlZiA9IHRlbXBsYXRlUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyhjb250ZXh0KTtcblx0XHR0aGlzLl9hcHBsaWNhdGlvblJlZi5hdHRhY2hWaWV3KHZpZXdSZWYpO1xuXG5cdFx0Y29uc3QgY29udGFpbmVyTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ25nLWNvbnRhaW5lcicpO1xuXHRcdGNvbnRhaW5lck5vZGUuYXBwZW5kKC4uLnZpZXdSZWYucm9vdE5vZGVzKTtcblxuXHRcdHRoaXMuX2FkZERpc21pc3NFdmVudExpc3RlbmVyKGNvbnRhaW5lck5vZGUsIGNvbnRleHQgYXMgYW55LCBvcHRpb25zKTtcblx0XHR0aGlzLl9hZGRDbG9zZUV2ZW50TGlzdGVuZXIoY29udGFpbmVyTm9kZSwgY29udGV4dCBhcyBhbnksIG9wdGlvbnMpO1xuXG5cdFx0cmV0dXJuIG5ldyBDb250ZW50UmVmKFxuXHRcdFx0W1xuXHRcdFx0XHRvcHRpb25zLmhlYWRlclNlbGVjdG9yXG5cdFx0XHRcdFx0PyBleHRyYWN0QW5kUmVtb3ZlTm9kZXNCeVNlbGVjdG9yKFxuXHRcdFx0XHRcdFx0XHRjb250YWluZXJOb2RlLFxuXHRcdFx0XHRcdFx0XHRvcHRpb25zLmhlYWRlclNlbGVjdG9yXG5cdFx0XHRcdFx0ICApXG5cdFx0XHRcdFx0OiBbXSxcblx0XHRcdFx0Y29udGFpbmVyTm9kZS5jaGlsZE5vZGVzIGFzIGFueSxcblx0XHRcdFx0b3B0aW9ucy5mb290ZXJTZWxlY3RvclxuXHRcdFx0XHRcdD8gZXh0cmFjdEFuZFJlbW92ZU5vZGVzQnlTZWxlY3Rvcihcblx0XHRcdFx0XHRcdFx0Y29udGFpbmVyTm9kZSxcblx0XHRcdFx0XHRcdFx0b3B0aW9ucy5mb290ZXJTZWxlY3RvclxuXHRcdFx0XHRcdCAgKVxuXHRcdFx0XHRcdDogW11cblx0XHRcdF0sXG5cdFx0XHR2aWV3UmVmXG5cdFx0KTtcblx0fVxuXG5cdHByaXZhdGUgX2NyZWF0ZUZyb21TdHJpbmcoY29udGVudDogc3RyaW5nKTogQ29udGVudFJlZiB7XG5cdFx0Y29uc3QgY29tcG9uZW50ID0gdGhpcy5fZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYCR7Y29udGVudH1gKTtcblx0XHRyZXR1cm4gbmV3IENvbnRlbnRSZWYoW1tjb21wb25lbnRdXSk7XG5cdH1cblxuXHRwcml2YXRlIF9jcmVhdGVGcm9tQ29tcG9uZW50KFxuXHRcdGNvbnRlbnRJbmplY3RvcjogSW5qZWN0b3IsXG5cdFx0ZW52aXJvbm1lbnRJbmplY3RvcjogRW52aXJvbm1lbnRJbmplY3Rvcixcblx0XHRjb21wb25lbnRUeXBlOiBUeXBlPGFueT4sXG5cdFx0Y29udGV4dDogSHViQWN0aXZlTW9kYWwsXG5cdFx0b3B0aW9uczogSHViTW9kYWxPcHRpb25zXG5cdCk6IENvbnRlbnRSZWYge1xuXHRcdGNvbnN0IGVsZW1lbnRJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG5cdFx0XHRwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEh1YkFjdGl2ZU1vZGFsLCB1c2VWYWx1ZTogY29udGV4dCB9XSxcblx0XHRcdHBhcmVudDogY29udGVudEluamVjdG9yXG5cdFx0fSk7XG5cdFx0Y29uc3QgY29tcG9uZW50UmVmID0gY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudFR5cGUsIHtcblx0XHRcdGVudmlyb25tZW50SW5qZWN0b3IsXG5cdFx0XHRlbGVtZW50SW5qZWN0b3Jcblx0XHR9KTtcblxuXHRcdGlmIChvcHRpb25zLmRhdGEpIHtcblx0XHRcdE9iamVjdC5hc3NpZ24oY29tcG9uZW50UmVmLmluc3RhbmNlLCB7XG5cdFx0XHRcdGRhdGE6IG9wdGlvbnMuZGF0YVxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgY29tcG9uZW50TmF0aXZlRWw6IEhUTUxFbGVtZW50ID1cblx0XHRcdGNvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xuXHRcdGlmIChvcHRpb25zLnNjcm9sbGFibGUpIHtcblx0XHRcdGNvbXBvbmVudE5hdGl2ZUVsLmNsYXNzTGlzdC5hZGQoJ2NvbXBvbmVudC1ob3N0LXNjcm9sbGFibGUnKTtcblx0XHR9XG5cdFx0dGhpcy5fYXBwbGljYXRpb25SZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuXG5cdFx0dGhpcy5fYWRkRGlzbWlzc0V2ZW50TGlzdGVuZXIoY29tcG9uZW50TmF0aXZlRWwsIGNvbnRleHQsIG9wdGlvbnMpO1xuXHRcdHRoaXMuX2FkZENsb3NlRXZlbnRMaXN0ZW5lcihjb21wb25lbnROYXRpdmVFbCwgY29udGV4dCBhcyBhbnksIG9wdGlvbnMpO1xuXG5cdFx0Ly8gRklYTUU6IHdlIHNob3VsZCBoZXJlIGdldCByaWQgb2YgdGhlIGNvbXBvbmVudCBuYXRpdmVFbGVtZW50XG5cdFx0Ly8gYW5kIHVzZSBgW0FycmF5LmZyb20oY29tcG9uZW50TmF0aXZlRWwuY2hpbGROb2RlcyldYCBpbnN0ZWFkIGFuZCByZW1vdmUgdGhlIGFib3ZlIENTUyBjbGFzcy5cblx0XHRyZXR1cm4gbmV3IENvbnRlbnRSZWYoXG5cdFx0XHRbXG5cdFx0XHRcdG9wdGlvbnMuaGVhZGVyU2VsZWN0b3Jcblx0XHRcdFx0XHQ/IGV4dHJhY3RBbmRSZW1vdmVOb2Rlc0J5U2VsZWN0b3IoXG5cdFx0XHRcdFx0XHRcdGNvbXBvbmVudE5hdGl2ZUVsLFxuXHRcdFx0XHRcdFx0XHRvcHRpb25zLmhlYWRlclNlbGVjdG9yXG5cdFx0XHRcdFx0ICApXG5cdFx0XHRcdFx0OiBbXSxcblx0XHRcdFx0Y29tcG9uZW50TmF0aXZlRWwuY2hpbGROb2RlcyBhcyBhbnksXG5cdFx0XHRcdG9wdGlvbnMuZm9vdGVyU2VsZWN0b3Jcblx0XHRcdFx0XHQ/IGV4dHJhY3RBbmRSZW1vdmVOb2Rlc0J5U2VsZWN0b3IoXG5cdFx0XHRcdFx0XHRcdGNvbXBvbmVudE5hdGl2ZUVsLFxuXHRcdFx0XHRcdFx0XHRvcHRpb25zLmZvb3RlclNlbGVjdG9yXG5cdFx0XHRcdFx0ICApXG5cdFx0XHRcdFx0OiBbXVxuXHRcdFx0XSxcblx0XHRcdGNvbXBvbmVudFJlZi5ob3N0Vmlldyxcblx0XHRcdGNvbXBvbmVudFJlZlxuXHRcdCk7XG5cdH1cblxuXHRwcml2YXRlIF9zZXRBcmlhSGlkZGVuKGVsZW1lbnQ6IEVsZW1lbnQpIHtcblx0XHRjb25zdCBwYXJlbnQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XG5cdFx0aWYgKHBhcmVudCAmJiBlbGVtZW50ICE9PSB0aGlzLl9kb2N1bWVudC5ib2R5KSB7XG5cdFx0XHRBcnJheS5mcm9tKHBhcmVudC5jaGlsZHJlbikuZm9yRWFjaCgoc2libGluZykgPT4ge1xuXHRcdFx0XHRpZiAoc2libGluZyAhPT0gZWxlbWVudCAmJiBzaWJsaW5nLm5vZGVOYW1lICE9PSAnU0NSSVBUJykge1xuXHRcdFx0XHRcdHRoaXMuX2FyaWFIaWRkZW5WYWx1ZXMuc2V0KFxuXHRcdFx0XHRcdFx0c2libGluZyxcblx0XHRcdFx0XHRcdHNpYmxpbmcuZ2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRzaWJsaW5nLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblxuXHRcdFx0dGhpcy5fc2V0QXJpYUhpZGRlbihwYXJlbnQpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgX3JldmVydEFyaWFIaWRkZW4oKSB7XG5cdFx0dGhpcy5fYXJpYUhpZGRlblZhbHVlcy5mb3JFYWNoKCh2YWx1ZSwgZWxlbWVudCkgPT4ge1xuXHRcdFx0aWYgKHZhbHVlKSB7XG5cdFx0XHRcdGVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsIHZhbHVlKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWhpZGRlbicpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHRoaXMuX2FyaWFIaWRkZW5WYWx1ZXMuY2xlYXIoKTtcblx0fVxuXG5cdHByaXZhdGUgX3JlZ2lzdGVyTW9kYWxSZWYoaHViTW9kYWxSZWY6IEh1Yk1vZGFsUmVmKSB7XG5cdFx0Y29uc3QgdW5yZWdpc3Rlck1vZGFsUmVmID0gKCkgPT4ge1xuXHRcdFx0Y29uc3QgaW5kZXggPSB0aGlzLl9tb2RhbFJlZnMuaW5kZXhPZihodWJNb2RhbFJlZik7XG5cdFx0XHRpZiAoaW5kZXggPiAtMSkge1xuXHRcdFx0XHR0aGlzLl9tb2RhbFJlZnMuc3BsaWNlKGluZGV4LCAxKTtcblx0XHRcdFx0dGhpcy5fYWN0aXZlSW5zdGFuY2VzLmVtaXQodGhpcy5fbW9kYWxSZWZzKTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdHRoaXMuX21vZGFsUmVmcy5wdXNoKGh1Yk1vZGFsUmVmKTtcblx0XHR0aGlzLl9hY3RpdmVJbnN0YW5jZXMuZW1pdCh0aGlzLl9tb2RhbFJlZnMpO1xuXHRcdGh1Yk1vZGFsUmVmLnJlc3VsdC50aGVuKHVucmVnaXN0ZXJNb2RhbFJlZiwgdW5yZWdpc3Rlck1vZGFsUmVmKTtcblx0fVxuXG5cdHByaXZhdGUgX3JlZ2lzdGVyV2luZG93Q21wdChodWJXaW5kb3dDbXB0OiBDb21wb25lbnRSZWY8SHViTW9kYWxXaW5kb3c+KSB7XG5cdFx0dGhpcy5fd2luZG93Q21wdHMucHVzaChodWJXaW5kb3dDbXB0KTtcblx0XHR0aGlzLl9hY3RpdmVXaW5kb3dDbXB0SGFzQ2hhbmdlZC5uZXh0KCk7XG5cblx0XHRodWJXaW5kb3dDbXB0Lm9uRGVzdHJveSgoKSA9PiB7XG5cdFx0XHRjb25zdCBpbmRleCA9IHRoaXMuX3dpbmRvd0NtcHRzLmluZGV4T2YoaHViV2luZG93Q21wdCk7XG5cdFx0XHRpZiAoaW5kZXggPiAtMSkge1xuXHRcdFx0XHR0aGlzLl93aW5kb3dDbXB0cy5zcGxpY2UoaW5kZXgsIDEpO1xuXHRcdFx0XHR0aGlzLl9hY3RpdmVXaW5kb3dDbXB0SGFzQ2hhbmdlZC5uZXh0KCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogQXR0YWNoZXMgY2xpY2sgZXZlbnQgbGlzdGVuZXJzIHRvIGVsZW1lbnRzIHdpdGhpbiBhIGNvbnRhaW5lciBiYXNlZCBvbiBhIHNwZWNpZmllZCBkaXNtaXNzIHNlbGVjdG9yIHRvIGRpc21pc3MgYSBtb2RhbC5cblx0ICpcblx0ICogQHBhcmFtIHtIVE1MRWxlbWVudH0gY29udGFpbmVyIC0gVGhlIGBjb250YWluZXJgIHBhcmFtZXRlciBpcyBhbiBIVE1MRWxlbWVudCB0aGF0IHJlcHJlc2VudHMgdGhlIERPTSBlbGVtZW50IHdoaWNoIGNvbnRhaW5zIHRoZVxuXHQgKiBtb2RhbCBjb250ZW50LlxuXHQgKiBAcGFyYW0ge0h1YkFjdGl2ZU1vZGFsfSBjb250ZXh0IC0gVGhlIGBjb250ZXh0YCBwYXJhbWV0ZXIgaW4gdGhlIGBfYWRkRGlzbWlzc0V2ZW50TGlzdGVuZXJgIGZ1bmN0aW9uIHJlZmVycyB0byB0aGUgYWN0aXZlIG1vZGFsXG5cdCAqIGluc3RhbmNlIHRoYXQgaXMgYmVpbmcgZGlzcGxheWVkLiBJdCBpcyB1c2VkIHRvIGNhbGwgdGhlIGBkaXNtaXNzYCBtZXRob2Qgb24gdGhlIG1vZGFsIGluc3RhbmNlIHdoZW4gYSBkaXNtaXNzaWJsZSBlbGVtZW50IGlzXG5cdCAqIGNsaWNrZWQuXG5cdCAqIEBwYXJhbSB7SHViTW9kYWxPcHRpb25zfSBvcHRpb25zIC0gVGhlIGBvcHRpb25zYCBwYXJhbWV0ZXIgaXMgYW4gb2JqZWN0IHRoYXQgY29udGFpbnMgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgbW9kYWwuIEl0XG5cdCAqIG1heSBpbmNsdWRlIHByb3BlcnRpZXMgc3VjaCBhcyBgZGlzbWlzc1NlbGVjdG9yYCwgd2hpY2ggaXMgdXNlZCB0byBzcGVjaWZ5IGEgQ1NTIHNlbGVjdG9yIGZvciBlbGVtZW50cyB0aGF0LCB3aGVuIGNsaWNrZWQsIHdpbGxcblx0ICogZGlzbWlzcyB0aGUgbW9kYWwgYnkgY2FsbGluZyB0aGUgYGRpc21pc3NgIG1ldGhvZCBvbiB0aGUgYGNvbnRleHRgIG9iamVjdC5cblx0ICovXG5cdHByaXZhdGUgX2FkZERpc21pc3NFdmVudExpc3RlbmVyKFxuXHRcdGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsXG5cdFx0Y29udGV4dDogSHViQWN0aXZlTW9kYWwsXG5cdFx0b3B0aW9uczogSHViTW9kYWxPcHRpb25zXG5cdCkge1xuXHRcdGlmIChvcHRpb25zLmRpc21pc3NTZWxlY3Rvcikge1xuXHRcdFx0Y29uc3QgZGlzbWlzc2FhYmxlOiBOb2RlTGlzdE9mPEVsZW1lbnQ+ID1cblx0XHRcdFx0Y29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwob3B0aW9ucy5kaXNtaXNzU2VsZWN0b3IpO1xuXHRcdFx0Zm9yIChjb25zdCBpdGVtIG9mIEFycmF5LmZyb20oZGlzbWlzc2FhYmxlKSkge1xuXHRcdFx0XHRpdGVtLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gY29udGV4dC5kaXNtaXNzKCkpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBdHRhY2hlcyBjbGljayBldmVudCBsaXN0ZW5lcnMgdG8gZWxlbWVudHMgbWF0Y2hpbmcgYSBzcGVjaWZpZWQgc2VsZWN0b3IgdG8gY2xvc2UgYSBtb2RhbCB3aW5kb3cuXG5cdCAqXG5cdCAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGNvbnRhaW5lciAtIFRoZSBgY29udGFpbmVyYCBwYXJhbWV0ZXIgaXMgYW4gSFRNTEVsZW1lbnQgdGhhdCByZXByZXNlbnRzIHRoZSBET00gZWxlbWVudCB3aGljaCBjb250YWlucyB0aGVcblx0ICogbW9kYWwgY29udGVudC5cblx0ICogQHBhcmFtIHtIdWJBY3RpdmVNb2RhbH0gY29udGV4dCAtIFRoZSBgY29udGV4dGAgcGFyYW1ldGVyIGluIHRoZSBgX2FkZENsb3NlRXZlbnRMaXN0ZW5lcmAgZnVuY3Rpb24gaXMgb2YgdHlwZSBgSHViQWN0aXZlTW9kYWxgLlxuXHQgKiBJdCBpcyB1c2VkIHRvIHJlZmVyZW5jZSB0aGUgYWN0aXZlIG1vZGFsIGluc3RhbmNlIHdpdGhpbiB0aGUgZnVuY3Rpb24gYW5kIGNhbGwgdGhlIGBjbG9zZSgpYCBtZXRob2Qgb24gaXQgd2hlbiBhIGNsb3NlIGV2ZW50IGlzXG5cdCAqIHRyaWdnZXJlZC5cblx0ICogQHBhcmFtIHtIdWJNb2RhbE9wdGlvbnN9IG9wdGlvbnMgLSBUaGUgYG9wdGlvbnNgIHBhcmFtZXRlciBpcyBhbiBvYmplY3QgdGhhdCBjb250YWlucyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBtb2RhbC4gSXRcblx0ICogbWF5IGluY2x1ZGUgcHJvcGVydGllcyBzdWNoIGFzIGBjbG9zZVNlbGVjdG9yYCwgd2hpY2ggaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBzZWxlY3RvciBmb3IgZWxlbWVudHMgdGhhdCBjYW4gdHJpZ2dlciB0aGUgbW9kYWxcblx0ICogdG8gY2xvc2Ugd2hlbiBjbGlja2VkLlxuXHQgKi9cblx0cHJpdmF0ZSBfYWRkQ2xvc2VFdmVudExpc3RlbmVyKFxuXHRcdGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsXG5cdFx0Y29udGV4dDogSHViQWN0aXZlTW9kYWwsXG5cdFx0b3B0aW9uczogSHViTW9kYWxPcHRpb25zXG5cdCkge1xuXHRcdGlmIChvcHRpb25zLmNsb3NlU2VsZWN0b3IpIHtcblx0XHRcdGNvbnN0IGRpc21pc3NhYWJsZTogTm9kZUxpc3RPZjxFbGVtZW50PiA9XG5cdFx0XHRcdGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKG9wdGlvbnMuY2xvc2VTZWxlY3Rvcik7XG5cdFx0XHRmb3IgKGNvbnN0IGl0ZW0gb2YgQXJyYXkuZnJvbShkaXNtaXNzYWFibGUpKSB7XG5cdFx0XHRcdGNvbnN0IGNsaWNrRXZlbnRMaXN0ZW5lcnMgPSBpdGVtLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT5cblx0XHRcdFx0XHRjb250ZXh0LmNsb3NlKClcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBFeHRyYWN0cyBjaGlsZCBub2RlcyBtYXRjaGluZyBhIHNlbGVjdG9yIGZyb20gYSBjb250YWluZXIgZWxlbWVudCwgcmVtb3ZlcyB0aG9zZSBub2RlcyBmcm9tIHRoZSBET00sIGFuZCByZXR1cm5zIHRoZW0gYXMgYW4gYXJyYXkuXG4gKlxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gY29udGFpbmVyIC0gVGhlIGBjb250YWluZXJgIHBhcmFtZXRlciBpbiB0aGUgYGV4dHJhY3RBbmRSZW1vdmVOb2Rlc0J5U2VsZWN0b3JgIGZ1bmN0aW9uIGlzIGFuIEhUTUxFbGVtZW50XG4gKiB0aGF0IHJlcHJlc2VudHMgdGhlIHBhcmVudCBlbGVtZW50IHdpdGhpbiB3aGljaCB3ZSB3YW50IHRvIHNlYXJjaCBmb3Igbm9kZXMgbWF0Y2hpbmcgYSBzcGVjaWZpYyBzZWxlY3RvciBhbmQgcmVtb3ZlIHRoZW0uXG4gKiBAcGFyYW0ge3N0cmluZ30gc2VsZWN0b3IgLSBUaGUgYHNlbGVjdG9yYCBwYXJhbWV0ZXIgaW4gdGhlIGBleHRyYWN0QW5kUmVtb3ZlTm9kZXNCeVNlbGVjdG9yYCBmdW5jdGlvbiBpcyBhIHN0cmluZyB0aGF0XG4gKiByZXByZXNlbnRzIGEgQ1NTIHNlbGVjdG9yLiBUaGlzIHNlbGVjdG9yIGlzIHVzZWQgdG8gcXVlcnkgYW5kIHNlbGVjdCBzcGVjaWZpYyBlbGVtZW50cyB3aXRoaW4gdGhlIGBjb250YWluZXJgIEhUTUxFbGVtZW50LlxuICpcbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIG5vZGVzIHRoYXQgd2VyZSBleHRyYWN0ZWQgZnJvbSB0aGUgY29udGFpbmVyIGVsZW1lbnQgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHNlbGVjdG9yLCBhbmQgdGhlbiByZW1vdmVzIHRob3NlXG4gKiBub2RlcyBmcm9tIHRoZSBET00uXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RBbmRSZW1vdmVOb2Rlc0J5U2VsZWN0b3IoXG5cdGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsXG5cdHNlbGVjdG9yOiBzdHJpbmdcbik6IEFycmF5PE5vZGU+IHtcblx0bGV0IGNvbnRhaW5lck5vZGVzID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpO1xuXG5cdGNvbnN0IG5vZGVzID0gQXJyYXkuZnJvbShjb250YWluZXJOb2RlcykucmVkdWNlKChhY2MsIGMpID0+IHtcblx0XHRyZXR1cm4gWy4uLmFjYywgLi4uQXJyYXkuZnJvbShjLmNoaWxkTm9kZXMpXTtcblx0fSwgW10gYXMgQXJyYXk8Tm9kZT4pO1xuXG5cdC8vIFNlbGVjY2lvbmEgbG9zIG5vZG9zIGRlbnRybyBkZWwgY29udGVuZWRvciBxdWUgY29pbmNpZGFuIGNvbiBlbCBzZWxlY3RvclxuXHRjb25zdCBub2Rlc1RvUmVtb3ZlID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KHNlbGVjdG9yKTtcblxuXHQvLyBDb252ZXJ0aXIgTm9kZUxpc3QgYSBhcnJheSB5IGVsaW1pbmFyIGNhZGEgbm9kbyBkZWwgRE9NXG5cdEFycmF5LmZyb20obm9kZXNUb1JlbW92ZSkuZm9yRWFjaCgobm9kZSkgPT4gbm9kZS5yZW1vdmUoKSk7XG5cdHJldHVybiBub2Rlcztcbn1cbiJdfQ==
|
|
@@ -845,7 +845,6 @@ class HubModalStack {
|
|
|
845
845
|
*/
|
|
846
846
|
_addCloseEventListener(container, context, options) {
|
|
847
847
|
if (options.closeSelector) {
|
|
848
|
-
debugger;
|
|
849
848
|
const dismissaable = container.querySelectorAll(options.closeSelector);
|
|
850
849
|
for (const item of Array.from(dismissaable)) {
|
|
851
850
|
const clickEventListeners = item.addEventListener('click', () => context.close());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-hub-ui-modal.mjs","sources":["../../../projects/modal/src/lib/modal-config.ts","../../../projects/modal/src/lib/modal-backdrop.ts","../../../projects/modal/src/lib/modal-ref.ts","../../../projects/modal/src/lib/modal-dismiss-reasons.ts","../../../projects/modal/src/lib/modal-window.ts","../../../projects/modal/src/lib/modal-stack.ts","../../../projects/modal/src/lib/modal.ts","../../../projects/modal/src/lib/modal.module.ts","../../../projects/modal/src/public-api.ts","../../../projects/modal/src/ng-hub-ui-modal.ts"],"sourcesContent":["import { Injectable, Injector } from '@angular/core';\n// import { HubConfig } from '../hub-config';\n\n/**\n * Options available when opening new modal windows with `HubModal.open()` method.\n */\nexport interface HubModalOptions {\n\t/**\n\t * If `true`, modal opening and closing will be animated.\n\t *\n\t * @since 8.0.0\n\t */\n\tanimation?: boolean;\n\n\t/**\n\t * `aria-labelledby` attribute value to set on the modal window.\n\t *\n\t * @since 2.2.0\n\t */\n\tariaLabelledBy?: string;\n\n\t/**\n\t * `aria-describedby` attribute value to set on the modal window.\n\t *\n\t * @since 6.1.0\n\t */\n\tariaDescribedBy?: string;\n\n\t/**\n\t * If `true`, the backdrop element will be created for a given modal.\n\t *\n\t * Alternatively, specify `'static'` for a backdrop which doesn't close the modal on click.\n\t *\n\t * Default value is `true`.\n\t */\n\tbackdrop?: boolean | 'static';\n\n\t/**\n\t * Callback right before the modal will be dismissed.\n\t *\n\t * If this function returns:\n\t * * `false`\n\t * * a promise resolved with `false`\n\t * * a promise that is rejected\n\t *\n\t * then the modal won't be dismissed.\n\t */\n\tbeforeDismiss?: () => boolean | Promise<boolean>;\n\n\t/**\n\t * If `true`, the modal will be centered vertically.\n\t *\n\t * Default value is `false`.\n\t *\n\t * @since 1.1.0\n\t */\n\tcentered?: boolean;\n\n\t/**\n\t * A selector specifying the element all new modal windows should be appended to.\n\t * Since v5.3.0 it is also possible to pass the reference to an `HTMLElement`.\n\t *\n\t * If not specified, will be `body`.\n\t */\n\tcontainer?: string | HTMLElement;\n\n\t/**\n\t * If `true` modal will always be displayed in fullscreen mode.\n\t *\n\t * For values like `'md'` it means that modal will be displayed in fullscreen mode\n\t * only if the viewport width is below `'md'`. For custom strings (ex. when passing `'mysize'`)\n\t * it will add a `'modal-fullscreen-mysize-down'` class.\n\t *\n\t * If not specified will be `false`.\n\t *\n\t * @since 12.1.0\n\t */\n\tfullscreen?: 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | boolean | string;\n\n\t/**\n\t * The `Injector` to use for modal content.\n\t */\n\tinjector?: Injector;\n\n\t/**\n\t * If `true`, the modal will be closed when `Escape` key is pressed\n\t *\n\t * Default value is `true`.\n\t */\n\tkeyboard?: boolean;\n\n\t/**\n\t * Scrollable modal content (false by default).\n\t *\n\t * @since 5.0.0\n\t */\n\tscrollable?: boolean;\n\n\t/**\n\t * Size of a new modal window.\n\t */\n\tsize?: 'sm' | 'lg' | 'xl' | string;\n\n\t/**\n\t * A custom class to append to the modal window.\n\t */\n\twindowClass?: string;\n\n\t/**\n\t * A custom class to append to the modal dialog.\n\t *\n\t * @since 9.1.0\n\t */\n\tmodalDialogClass?: string;\n\n\t/**\n\t * A custom class to append to the modal backdrop.\n\t *\n\t * @since 1.1.0\n\t */\n\tbackdropClass?: string;\n\n\t/**\n\t * Allows to specify a custom selector for the header element of the modal window. This can be useful if you want to target\n\t * a specific element within the modal to act as the header, for example, to apply custom styling or functionality to it. By\n\t * providing a CSS selector string, you can target the desired\theader element within the modal content.\n\t */\n\theaderSelector?: string;\n\n\t/**\n\t * Allows to specify a custom selector for the footer element of the modal window. This can be useful if you want to target\n\t * a specific element within the modal to act as the footer, for example, to apply custom styling or functionality to it. By\n\t * providing a CSS selector string, you can target the desired footer element within the modal content.\n\t */\n\tfooterSelector?: string;\n\n\t/** Used to specify a custom selector for elements that can trigger the dismissal of the modal window. By providing a CSS selector\n\t * string for `dismissSelector`, you can target specific elements within the modal content that, when interacted with (e.g., clicked),\n\t * will close or dismiss the modal window.\n\t */\n\tdismissSelector?: string;\n\n\t/**\n\t * Used to specify a custom selector for elements that can trigger the closing of the modal window. By providing a CSS selector\n\t * string for `closeSelector`, you can target specific elements within the modal content that, when interacted with (e.g., clicked),\n\t * will close the modal window. This allows for customization of the elements that can act as close buttons for the modal.\n\t */\n\tcloseSelector?: string;\n\n\t/** Used to store any additional data that needs to be passed to the modal window when it is opened. This property allows you\n\t * to provide custom data to the modal component, which can then be accessed and utilized within the modal content or logic.\n\t * It provides flexibility for passing dynamic information to the modal window based on the specific use case or requirements.\n\t */\n\tdata?: any;\n}\n\n/**\n * Options that can be changed on an opened modal with `HubModalRef.update()` and `HubActiveModal.update()` methods.\n *\n * @since 14.2.0\n */\nexport type HubModalUpdatableOptions = Pick<\n\tHubModalOptions,\n\t| 'ariaLabelledBy'\n\t| 'ariaDescribedBy'\n\t| 'centered'\n\t| 'fullscreen'\n\t| 'backdropClass'\n\t| 'size'\n\t| 'windowClass'\n\t| 'modalDialogClass'\n>;\n\n/**\n * A configuration service for the [`HubModal`](#/components/modal/api#HubModal) service.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all modals used in the application.\n *\n * @since 3.1.0\n */\n@Injectable({ providedIn: 'root' })\nexport class HubModalConfig implements Required<HubModalOptions> {\n\t// private _hubConfig = inject(HubConfig);\n\tprivate _animation: boolean;\n\n\tariaLabelledBy: string;\n\tariaDescribedBy: string;\n\tbackdrop: boolean | 'static' = true;\n\tbeforeDismiss: () => boolean | Promise<boolean>;\n\tcentered: boolean;\n\tcontainer: string | HTMLElement;\n\tfullscreen: 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | boolean | string = false;\n\tinjector: Injector;\n\tkeyboard = true;\n\tscrollable: boolean;\n\tsize: 'sm' | 'lg' | 'xl' | string;\n\twindowClass: string;\n\tmodalDialogClass: string;\n\tbackdropClass: string;\n\theaderSelector: string;\n\tfooterSelector: string;\n\tdismissSelector: string = '[data-dismiss=\"modal\"]';\n\tcloseSelector: string = '[data-close=\"modal\"]';\n\tdata: any;\n\n\tget animation(): boolean {\n\t\treturn this._animation ?? true /* this._hubConfig.animation */;\n\t}\n\tset animation(animation: boolean) {\n\t\tthis._animation = animation;\n\t}\n}\n","import {\n\tComponent,\n\tElementRef,\n\tinject,\n\tInput,\n\tNgZone,\n\tOnInit,\n\tViewEncapsulation\n} from '@angular/core';\nimport { hubRunTransition, reflow } from 'ng-hub-ui-utils';\nimport { Observable } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\n@Component({\n\tselector: 'hub-modal-backdrop',\n\tstandalone: true,\n\tencapsulation: ViewEncapsulation.None,\n\ttemplate: '',\n\thost: {\n\t\t'[class]':\n\t\t\t'\"modal-backdrop\" + (backdropClass ? \" \" + backdropClass : \"\")',\n\t\t'[class.show]': '!animation',\n\t\t'[class.fade]': 'animation',\n\t\tstyle: 'z-index: 1055'\n\t}\n})\nexport class HubModalBackdrop implements OnInit {\n\tprivate _nativeElement = inject(ElementRef).nativeElement as HTMLElement;\n\tprivate _zone = inject(NgZone);\n\n\t@Input() animation: boolean;\n\t@Input() backdropClass: string;\n\n\tngOnInit() {\n\t\tthis._zone.onStable\n\t\t\t.asObservable()\n\t\t\t.pipe(take(1))\n\t\t\t.subscribe(() => {\n\t\t\t\thubRunTransition(\n\t\t\t\t\tthis._zone,\n\t\t\t\t\tthis._nativeElement,\n\t\t\t\t\t(element: HTMLElement, animation: boolean) => {\n\t\t\t\t\t\tif (animation) {\n\t\t\t\t\t\t\treflow(element);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telement.classList.add('show');\n\t\t\t\t\t},\n\t\t\t\t\t{ animation: this.animation, runningTransition: 'continue' }\n\t\t\t\t);\n\t\t\t});\n\t}\n\n\thide(): Observable<void> {\n\t\treturn hubRunTransition(\n\t\t\tthis._zone,\n\t\t\tthis._nativeElement,\n\t\t\t({ classList }) => classList.remove('show'),\n\t\t\t{\n\t\t\t\tanimation: this.animation,\n\t\t\t\trunningTransition: 'stop'\n\t\t\t}\n\t\t);\n\t}\n}\n","import { ComponentRef } from '@angular/core';\nimport { Observable, of, Subject, zip } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { HubModalBackdrop } from './modal-backdrop';\nimport { HubModalWindow } from './modal-window';\nimport { HubModalOptions, HubModalUpdatableOptions } from './modal-config';\nimport { ContentRef, isDefined, isPromise } from 'ng-hub-ui-utils';\n\n/**\n * A reference to the currently opened (active) modal.\n *\n * Instances of this class can be injected into your component passed as modal content.\n * So you can `.update()`, `.close()` or `.dismiss()` the modal window from your component.\n */\nexport class HubActiveModal {\n\t/**\n\t * Updates options of an opened modal.\n\t *\n\t * @since 14.2.0\n\t */\n\tupdate(options: HubModalUpdatableOptions): void {}\n\t/**\n\t * Closes the modal with an optional `result` value.\n\t *\n\t * The `HubModalRef.result` promise will be resolved with the provided value.\n\t */\n\tclose(result?: any): void {}\n\n\t/**\n\t * Dismisses the modal with an optional `reason` value.\n\t *\n\t * The `HubModalRef.result` promise will be rejected with the provided value.\n\t */\n\tdismiss(reason?: any): void {}\n}\n\nconst WINDOW_ATTRIBUTES: string[] = [\n\t'animation',\n\t'ariaLabelledBy',\n\t'ariaDescribedBy',\n\t'backdrop',\n\t'centered',\n\t'fullscreen',\n\t'keyboard',\n\t'scrollable',\n\t'size',\n\t'windowClass',\n\t'modalDialogClass'\n];\nconst BACKDROP_ATTRIBUTES: string[] = ['animation', 'backdropClass'];\n\n/**\n * A reference to the newly opened modal returned by the `HubModal.open()` method.\n */\nexport class HubModalRef {\n\tprivate _closed = new Subject<any>();\n\tprivate _dismissed = new Subject<any>();\n\tprivate _hidden = new Subject<void>();\n\tprivate _resolve!: (result?: any) => void;\n\tprivate _reject!: (reason?: any) => void;\n\n\tprivate _applyWindowOptions(\n\t\twindowInstance: HubModalWindow,\n\t\toptions: HubModalOptions\n\t): void {\n\t\tWINDOW_ATTRIBUTES.forEach((optionName: string) => {\n\t\t\tif (isDefined(options[optionName])) {\n\t\t\t\twindowInstance[optionName] = options[optionName];\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _applyBackdropOptions(\n\t\tbackdropInstance: HubModalBackdrop,\n\t\toptions: HubModalOptions\n\t): void {\n\t\tBACKDROP_ATTRIBUTES.forEach((optionName: string) => {\n\t\t\tif (isDefined(options[optionName])) {\n\t\t\t\tbackdropInstance[optionName] = options[optionName];\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Updates options of an opened modal.\n\t *\n\t * @since 14.2.0\n\t */\n\tupdate(options: HubModalUpdatableOptions): void {\n\t\tthis._applyWindowOptions(this._windowCmptRef.instance, options);\n\t\tif (this._backdropCmptRef && this._backdropCmptRef.instance) {\n\t\t\tthis._applyBackdropOptions(this._backdropCmptRef.instance, options);\n\t\t}\n\t}\n\n\t/**\n\t * The instance of a component used for the modal content.\n\t *\n\t * When a `TemplateRef` is used as the content or when the modal is closed, will return `undefined`.\n\t */\n\tget componentInstance(): any {\n\t\tif (this._contentRef && this._contentRef.componentRef) {\n\t\t\treturn this._contentRef.componentRef.instance;\n\t\t}\n\t}\n\n\t/**\n\t * The promise that is resolved when the modal is closed and rejected when the modal is dismissed.\n\t */\n\tresult: Promise<any>;\n\n\t/**\n\t * The observable that emits when the modal is closed via the `.close()` method.\n\t *\n\t * It will emit the result passed to the `.close()` method.\n\t *\n\t * @since 8.0.0\n\t */\n\tget closed(): Observable<any> {\n\t\treturn this._closed.asObservable().pipe(takeUntil(this._hidden));\n\t}\n\n\t/**\n\t * The observable that emits when the modal is dismissed via the `.dismiss()` method.\n\t *\n\t * It will emit the reason passed to the `.dismissed()` method by the user, or one of the internal\n\t * reasons like backdrop click or ESC key press.\n\t *\n\t * @since 8.0.0\n\t */\n\tget dismissed(): Observable<any> {\n\t\treturn this._dismissed.asObservable().pipe(takeUntil(this._hidden));\n\t}\n\n\t/**\n\t * The observable that emits when both modal window and backdrop are closed and animations were finished.\n\t * At this point modal and backdrop elements will be removed from the DOM tree.\n\t *\n\t * This observable will be completed after emitting.\n\t *\n\t * @since 8.0.0\n\t */\n\tget hidden(): Observable<void> {\n\t\treturn this._hidden.asObservable();\n\t}\n\n\t/**\n\t * The observable that emits when modal is fully visible and animation was finished.\n\t * Modal DOM element is always available synchronously after calling 'modal.open()' service.\n\t *\n\t * This observable will be completed after emitting.\n\t * It will not emit, if modal is closed before open animation is finished.\n\t *\n\t * @since 8.0.0\n\t */\n\tget shown(): Observable<void> {\n\t\treturn this._windowCmptRef.instance.shown.asObservable();\n\t}\n\n\tconstructor(\n\t\tprivate _windowCmptRef: ComponentRef<HubModalWindow>,\n\t\tprivate _contentRef: ContentRef,\n\t\tprivate _backdropCmptRef?: ComponentRef<HubModalBackdrop>,\n\t\tprivate _beforeDismiss?: () => boolean | Promise<boolean>\n\t) {\n\t\t_windowCmptRef.instance.dismissEvent.subscribe((reason: any) => {\n\t\t\tthis.dismiss(reason);\n\t\t});\n\n\t\tthis.result = new Promise((resolve, reject) => {\n\t\t\tthis._resolve = resolve;\n\t\t\tthis._reject = reject;\n\t\t});\n\t\tthis.result.then(null, () => {});\n\t}\n\n\t/**\n\t * Closes the modal with an optional `result` value.\n\t *\n\t * The `HubMobalRef.result` promise will be resolved with the provided value.\n\t */\n\tclose(result?: any): void {\n\t\tif (this._windowCmptRef) {\n\t\t\tthis._closed.next(result);\n\t\t\tthis._resolve(result);\n\t\t\tthis._removeModalElements();\n\t\t}\n\t}\n\n\tprivate _dismiss(reason?: any) {\n\t\tthis._dismissed.next(reason);\n\t\tthis._reject(reason);\n\t\tthis._removeModalElements();\n\t}\n\n\t/**\n\t * Dismisses the modal with an optional `reason` value.\n\t *\n\t * The `HubModalRef.result` promise will be rejected with the provided value.\n\t */\n\tdismiss(reason?: any): void {\n\t\tif (this._windowCmptRef) {\n\t\t\tif (!this._beforeDismiss) {\n\t\t\t\tthis._dismiss(reason);\n\t\t\t} else {\n\t\t\t\tconst dismiss = this._beforeDismiss();\n\t\t\t\tif (isPromise(dismiss)) {\n\t\t\t\t\tdismiss.then(\n\t\t\t\t\t\t(result) => {\n\t\t\t\t\t\t\tif (result !== false) {\n\t\t\t\t\t\t\t\tthis._dismiss(reason);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() => {}\n\t\t\t\t\t);\n\t\t\t\t} else if (dismiss !== false) {\n\t\t\t\t\tthis._dismiss(reason);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _removeModalElements() {\n\t\tconst windowTransition$ = this._windowCmptRef.instance.hide();\n\t\tconst backdropTransition$ = this._backdropCmptRef\n\t\t\t? this._backdropCmptRef.instance.hide()\n\t\t\t: of(undefined);\n\n\t\t// hiding window\n\t\twindowTransition$.subscribe(() => {\n\t\t\tconst { nativeElement } = this._windowCmptRef.location;\n\t\t\tnativeElement.parentNode.removeChild(nativeElement);\n\t\t\tthis._windowCmptRef.destroy();\n\t\t\tthis._contentRef?.viewRef?.destroy();\n\n\t\t\tthis._windowCmptRef = <any>null;\n\t\t\tthis._contentRef = <any>null;\n\t\t});\n\n\t\t// hiding backdrop\n\t\tbackdropTransition$.subscribe(() => {\n\t\t\tif (this._backdropCmptRef) {\n\t\t\t\tconst { nativeElement } = this._backdropCmptRef.location;\n\t\t\t\tnativeElement.parentNode.removeChild(nativeElement);\n\t\t\t\tthis._backdropCmptRef.destroy();\n\t\t\t\tthis._backdropCmptRef = <any>null;\n\t\t\t}\n\t\t});\n\n\t\t// all done\n\t\tzip(windowTransition$, backdropTransition$).subscribe(() => {\n\t\t\tthis._hidden.next();\n\t\t\tthis._hidden.complete();\n\t\t});\n\t}\n}\n","export enum ModalDismissReasons {\n\tBACKDROP_CLICK,\n\tESC,\n}\n","import { DOCUMENT, NgIf } from '@angular/common';\nimport {\n\tComponent,\n\tElementRef,\n\tEventEmitter,\n\tinject,\n\tInput,\n\tNgZone,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tViewChild,\n\tViewEncapsulation\n} from '@angular/core';\nimport { fromEvent, Observable, Subject, zip } from 'rxjs';\nimport { filter, switchMap, take, takeUntil, tap } from 'rxjs/operators';\nimport { ModalDismissReasons } from './modal-dismiss-reasons';\nimport {\n\tisString,\n\treflow,\n\tgetFocusableBoundaryElements,\n\thubRunTransition,\n\tTransitionOptions\n} from 'ng-hub-ui-utils';\n\n@Component({\n\tselector: 'hub-modal-window',\n\tstandalone: true,\n\timports: [NgIf],\n\thost: {\n\t\t'[class]': '\"modal d-block\" + (windowClass ? \" \" + windowClass : \"\")',\n\t\t'[class.fade]': 'animation',\n\t\trole: 'dialog',\n\t\ttabindex: '-1',\n\t\t'[attr.aria-modal]': 'true',\n\t\t'[attr.aria-labelledby]': 'ariaLabelledBy',\n\t\t'[attr.aria-describedby]': 'ariaDescribedBy'\n\t},\n\ttemplate: `\n\t\t<div\n\t\t\t#dialog\n\t\t\t[class]=\"\n\t\t\t\t'modal-dialog' +\n\t\t\t\t(size ? ' modal-' + size : '') +\n\t\t\t\t(centered ? ' modal-dialog-centered' : '') +\n\t\t\t\tfullscreenClass +\n\t\t\t\t(scrollable ? ' modal-dialog-scrollable' : '') +\n\t\t\t\t(modalDialogClass ? ' ' + modalDialogClass : '')\n\t\t\t\"\n\t\t\trole=\"document\"\n\t\t>\n\t\t\t<div class=\"modal-content\">\n\t\t\t\t<ng-container *ngIf=\"singleContent; else multipleContent\">\n\t\t\t\t\t<ng-content></ng-content>\n\t\t\t\t</ng-container>\n\t\t\t\t<ng-template #multipleContent>\n\t\t\t\t\t<div class=\"modal-header\">\n\t\t\t\t\t\t<ng-content />\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclass=\"btn-close\"\n\t\t\t\t\t\t\tdata-bs-dismiss=\"modal\"\n\t\t\t\t\t\t\taria-label=\"Close\"\n\t\t\t\t\t\t\t(click)=\"dismiss(null)\"\n\t\t\t\t\t\t></button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"modal-body\">\n\t\t\t\t\t\t<ng-content />\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"modal-footer\">\n\t\t\t\t\t\t<ng-content />\n\t\t\t\t\t</div>\n\t\t\t\t</ng-template>\n\t\t\t</div>\n\t\t</div>\n\t`,\n\tencapsulation: ViewEncapsulation.None,\n\tstyleUrl: './modal.scss'\n})\nexport class HubModalWindow implements OnInit, OnDestroy {\n\tprivate _document = inject(DOCUMENT);\n\tprivate _elRef = inject(ElementRef<HTMLElement>);\n\tprivate _zone = inject(NgZone);\n\n\tprivate _closed$ = new Subject<void>();\n\tprivate _elWithFocus: Element | null = null; // element that is focused prior to modal opening\n\n\t@ViewChild('dialog', { static: true })\n\tprivate _dialogEl: ElementRef<HTMLElement>;\n\n\t@Input() animation: boolean;\n\t@Input() ariaLabelledBy: string;\n\t@Input() ariaDescribedBy: string;\n\t@Input() backdrop: boolean | string = true;\n\t@Input() centered: string;\n\t@Input() fullscreen: string | boolean;\n\t@Input() keyboard = true;\n\t@Input() scrollable: string;\n\t@Input() size: string;\n\t@Input() windowClass: string;\n\t@Input() modalDialogClass: string;\n\n\tsingleContent!: boolean;\n\n\t@Output('dismiss') dismissEvent = new EventEmitter();\n\n\tshown = new Subject<void>();\n\thidden = new Subject<void>();\n\n\tget fullscreenClass(): string {\n\t\treturn this.fullscreen === true\n\t\t\t? ' modal-fullscreen'\n\t\t\t: isString(this.fullscreen)\n\t\t\t? ` modal-fullscreen-${this.fullscreen}-down`\n\t\t\t: '';\n\t}\n\n\tdismiss(reason): void {\n\t\tthis.dismissEvent.emit(reason);\n\t}\n\n\tngOnInit() {\n\t\tthis._elWithFocus = this._document.activeElement;\n\t\tthis._zone.onStable\n\t\t\t.asObservable()\n\t\t\t.pipe(take(1))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis._show();\n\t\t\t});\n\t}\n\n\tngOnDestroy() {\n\t\tthis._disableEventHandling();\n\t}\n\n\thide(): Observable<any> {\n\t\tconst { nativeElement } = this._elRef;\n\t\tconst context: TransitionOptions<any> = {\n\t\t\tanimation: this.animation,\n\t\t\trunningTransition: 'stop'\n\t\t};\n\n\t\tconst windowTransition$ = hubRunTransition(\n\t\t\tthis._zone,\n\t\t\tnativeElement,\n\t\t\t() => nativeElement.classList.remove('show'),\n\t\t\tcontext\n\t\t);\n\t\tconst dialogTransition$ = hubRunTransition(\n\t\t\tthis._zone,\n\t\t\tthis._dialogEl.nativeElement,\n\t\t\t() => {},\n\t\t\tcontext\n\t\t);\n\n\t\tconst transitions$ = zip(windowTransition$, dialogTransition$);\n\t\ttransitions$.subscribe(() => {\n\t\t\tthis.hidden.next();\n\t\t\tthis.hidden.complete();\n\t\t});\n\n\t\tthis._disableEventHandling();\n\t\tthis._restoreFocus();\n\n\t\treturn transitions$;\n\t}\n\n\tprivate _show() {\n\t\tconst context: TransitionOptions<any> = {\n\t\t\tanimation: this.animation,\n\t\t\trunningTransition: 'continue'\n\t\t};\n\n\t\tconst windowTransition$ = hubRunTransition(\n\t\t\tthis._zone,\n\t\t\tthis._elRef.nativeElement,\n\t\t\t(element: HTMLElement, animation: boolean) => {\n\t\t\t\tif (animation) {\n\t\t\t\t\treflow(element);\n\t\t\t\t}\n\t\t\t\telement.classList.add('show');\n\t\t\t},\n\t\t\tcontext\n\t\t);\n\t\tconst dialogTransition$ = hubRunTransition(\n\t\t\tthis._zone,\n\t\t\tthis._dialogEl.nativeElement,\n\t\t\t() => {},\n\t\t\tcontext\n\t\t);\n\n\t\tzip(windowTransition$, dialogTransition$).subscribe(() => {\n\t\t\tthis.shown.next();\n\t\t\tthis.shown.complete();\n\t\t});\n\n\t\tthis._enableEventHandling();\n\t\tthis._setFocus();\n\t}\n\n\tprivate _enableEventHandling() {\n\t\tconst { nativeElement } = this._elRef;\n\t\tthis._zone.runOutsideAngular(() => {\n\t\t\tfromEvent<KeyboardEvent>(nativeElement, 'keydown')\n\t\t\t\t.pipe(\n\t\t\t\t\ttakeUntil(this._closed$),\n\t\t\t\t\tfilter((e) => e.key === 'Escape')\n\t\t\t\t)\n\t\t\t\t.subscribe((event) => {\n\t\t\t\t\tif (this.keyboard) {\n\t\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\t\tif (!event.defaultPrevented) {\n\t\t\t\t\t\t\t\tthis._zone.run(() =>\n\t\t\t\t\t\t\t\t\tthis.dismiss(ModalDismissReasons.ESC)\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (this.backdrop === 'static') {\n\t\t\t\t\t\tthis._bumpBackdrop();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t// We're listening to 'mousedown' and 'mouseup' to prevent modal from closing when pressing the mouse\n\t\t\t// inside the modal dialog and releasing it outside\n\t\t\tlet preventClose = false;\n\t\t\tfromEvent<MouseEvent>(this._dialogEl.nativeElement, 'mousedown')\n\t\t\t\t.pipe(\n\t\t\t\t\ttakeUntil(this._closed$),\n\t\t\t\t\ttap(() => (preventClose = false)),\n\t\t\t\t\tswitchMap(() =>\n\t\t\t\t\t\tfromEvent<MouseEvent>(nativeElement, 'mouseup').pipe(\n\t\t\t\t\t\t\ttakeUntil(this._closed$),\n\t\t\t\t\t\t\ttake(1)\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t\tfilter(({ target }) => nativeElement === target)\n\t\t\t\t)\n\t\t\t\t.subscribe(() => {\n\t\t\t\t\tpreventClose = true;\n\t\t\t\t});\n\n\t\t\t// We're listening to 'click' to dismiss modal on modal window click, except when:\n\t\t\t// 1. clicking on modal dialog itself\n\t\t\t// 2. closing was prevented by mousedown/up handlers\n\t\t\t// 3. clicking on scrollbar when the viewport is too small and modal doesn't fit (click is not triggered at all)\n\t\t\tfromEvent<MouseEvent>(nativeElement, 'click')\n\t\t\t\t.pipe(takeUntil(this._closed$))\n\t\t\t\t.subscribe(({ target }) => {\n\t\t\t\t\tif (nativeElement === target) {\n\t\t\t\t\t\tif (this.backdrop === 'static') {\n\t\t\t\t\t\t\tthis._bumpBackdrop();\n\t\t\t\t\t\t} else if (this.backdrop === true && !preventClose) {\n\t\t\t\t\t\t\tthis._zone.run(() =>\n\t\t\t\t\t\t\t\tthis.dismiss(ModalDismissReasons.BACKDROP_CLICK)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tpreventClose = false;\n\t\t\t\t});\n\t\t});\n\t}\n\n\tprivate _disableEventHandling() {\n\t\tthis._closed$.next();\n\t}\n\n\tprivate _setFocus() {\n\t\tconst { nativeElement } = this._elRef;\n\t\tif (!nativeElement.contains(document.activeElement)) {\n\t\t\tconst autoFocusable = nativeElement.querySelector(\n\t\t\t\t`[hubAutofocus]`\n\t\t\t) as HTMLElement;\n\t\t\tconst firstFocusable =\n\t\t\t\tgetFocusableBoundaryElements(nativeElement)[0];\n\n\t\t\tconst elementToFocus =\n\t\t\t\tautoFocusable || firstFocusable || nativeElement;\n\t\t\telementToFocus.focus();\n\t\t}\n\t}\n\n\tprivate _restoreFocus() {\n\t\tconst body = this._document.body;\n\t\tconst elWithFocus = this._elWithFocus;\n\n\t\tlet elementToFocus;\n\t\tif (elWithFocus && elWithFocus['focus'] && body.contains(elWithFocus)) {\n\t\t\telementToFocus = elWithFocus;\n\t\t} else {\n\t\t\telementToFocus = body;\n\t\t}\n\t\tthis._zone.runOutsideAngular(() => {\n\t\t\tsetTimeout(() => elementToFocus.focus());\n\t\t\tthis._elWithFocus = null;\n\t\t});\n\t}\n\n\tprivate _bumpBackdrop() {\n\t\tif (this.backdrop === 'static') {\n\t\t\thubRunTransition(\n\t\t\t\tthis._zone,\n\t\t\t\tthis._elRef.nativeElement,\n\t\t\t\t({ classList }) => {\n\t\t\t\t\tclassList.add('modal-static');\n\t\t\t\t\treturn () => classList.remove('modal-static');\n\t\t\t\t},\n\t\t\t\t{ animation: this.animation, runningTransition: 'continue' }\n\t\t\t);\n\t\t}\n\t}\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n\tApplicationRef,\n\tComponentRef,\n\tcreateComponent,\n\tEnvironmentInjector,\n\tEventEmitter,\n\tinject,\n\tInjectable,\n\tInjector,\n\tNgZone,\n\tTemplateRef,\n\tType\n} from '@angular/core';\nimport {\n\tContentRef,\n\thubFocusTrap,\n\tisDefined,\n\tisString,\n\tScrollBar\n} from 'ng-hub-ui-utils';\nimport { Subject } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { HubModalBackdrop } from './modal-backdrop';\nimport { HubModalOptions, HubModalUpdatableOptions } from './modal-config';\nimport { HubActiveModal, HubModalRef } from './modal-ref';\nimport { HubModalWindow } from './modal-window';\n\n@Injectable({ providedIn: 'root' })\nexport class HubModalStack {\n\tprivate _applicationRef = inject(ApplicationRef);\n\tprivate _injector = inject(Injector);\n\tprivate _environmentInjector = inject(EnvironmentInjector);\n\tprivate _document = inject(DOCUMENT);\n\tprivate _scrollBar = inject(ScrollBar);\n\n\tprivate _activeWindowCmptHasChanged = new Subject<void>();\n\tprivate _ariaHiddenValues: Map<Element, string | null> = new Map();\n\tprivate _scrollBarRestoreFn: null | (() => void) = null;\n\tprivate _modalRefs: HubModalRef[] = [];\n\tprivate _windowCmpts: ComponentRef<HubModalWindow>[] = [];\n\tprivate _activeInstances: EventEmitter<HubModalRef[]> = new EventEmitter();\n\n\tconstructor() {\n\t\tconst ngZone = inject(NgZone);\n\n\t\t// Trap focus on active WindowCmpt\n\t\tthis._activeWindowCmptHasChanged.subscribe(() => {\n\t\t\tif (this._windowCmpts.length) {\n\t\t\t\tconst activeWindowCmpt =\n\t\t\t\t\tthis._windowCmpts[this._windowCmpts.length - 1];\n\t\t\t\thubFocusTrap(\n\t\t\t\t\tngZone,\n\t\t\t\t\tactiveWindowCmpt.location.nativeElement,\n\t\t\t\t\tthis._activeWindowCmptHasChanged\n\t\t\t\t);\n\t\t\t\tthis._revertAriaHidden();\n\t\t\t\tthis._setAriaHidden(activeWindowCmpt.location.nativeElement);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _restoreScrollBar() {\n\t\tconst scrollBarRestoreFn = this._scrollBarRestoreFn;\n\t\tif (scrollBarRestoreFn) {\n\t\t\tthis._scrollBarRestoreFn = null;\n\t\t\tscrollBarRestoreFn();\n\t\t}\n\t}\n\n\tprivate _hideScrollBar() {\n\t\tif (!this._scrollBarRestoreFn) {\n\t\t\tthis._scrollBarRestoreFn = this._scrollBar.hide();\n\t\t}\n\t}\n\n\topen(\n\t\tcontentInjector: Injector,\n\t\tcontent: any,\n\t\toptions: HubModalOptions\n\t): HubModalRef {\n\t\tconst containerEl =\n\t\t\toptions.container instanceof HTMLElement\n\t\t\t\t? options.container\n\t\t\t\t: isDefined(options.container)\n\t\t\t\t? this._document.querySelector(options.container!)\n\t\t\t\t: this._document.body;\n\n\t\tif (!containerEl) {\n\t\t\tthrow new Error(\n\t\t\t\t`The specified modal container \"${\n\t\t\t\t\toptions.container || 'body'\n\t\t\t\t}\" was not found in the DOM.`\n\t\t\t);\n\t\t}\n\n\t\tthis._hideScrollBar();\n\n\t\tconst activeModal = new HubActiveModal();\n\n\t\tcontentInjector = options.injector || contentInjector;\n\t\tconst environmentInjector =\n\t\t\tcontentInjector.get(EnvironmentInjector, null) ||\n\t\t\tthis._environmentInjector;\n\t\tconst contentRef = this._getContentRef(\n\t\t\tcontentInjector,\n\t\t\tenvironmentInjector,\n\t\t\tcontent,\n\t\t\tactiveModal,\n\t\t\toptions\n\t\t);\n\n\t\tconst backdropCmptRef: ComponentRef<HubModalBackdrop> | undefined =\n\t\t\toptions.backdrop !== false\n\t\t\t\t? this._attachBackdrop(containerEl)\n\t\t\t\t: undefined;\n\t\tconst windowCmptRef: ComponentRef<HubModalWindow> =\n\t\t\tthis._attachWindowComponent(containerEl, contentRef.nodes, options);\n\t\tconst hubModalRef: HubModalRef = new HubModalRef(\n\t\t\twindowCmptRef,\n\t\t\tcontentRef,\n\t\t\tbackdropCmptRef,\n\t\t\toptions.beforeDismiss\n\t\t);\n\n\t\tthis._registerModalRef(hubModalRef);\n\t\tthis._registerWindowCmpt(windowCmptRef);\n\n\t\t// We have to cleanup DOM after the last modal when BOTH 'hidden' was emitted and 'result' promise was resolved:\n\t\t// - with animations OFF, 'hidden' emits synchronously, then 'result' is resolved asynchronously\n\t\t// - with animations ON, 'result' is resolved asynchronously, then 'hidden' emits asynchronously\n\t\thubModalRef.hidden.pipe(take(1)).subscribe(() =>\n\t\t\tPromise.resolve(true).then(() => {\n\t\t\t\tif (!this._modalRefs.length) {\n\t\t\t\t\tthis._document.body.classList.remove('modal-open');\n\t\t\t\t\tthis._restoreScrollBar();\n\t\t\t\t\tthis._revertAriaHidden();\n\t\t\t\t}\n\t\t\t})\n\t\t);\n\n\t\tactiveModal.close = (result: any) => {\n\t\t\thubModalRef.close(result);\n\t\t};\n\t\tactiveModal.dismiss = (reason: any) => {\n\t\t\thubModalRef.dismiss(reason);\n\t\t};\n\n\t\tactiveModal.update = (options: HubModalUpdatableOptions) => {\n\t\t\thubModalRef.update(options);\n\t\t};\n\n\t\thubModalRef.update(options);\n\t\tif (this._modalRefs.length === 1) {\n\t\t\tthis._document.body.classList.add('modal-open');\n\t\t}\n\n\t\tif (backdropCmptRef && backdropCmptRef.instance) {\n\t\t\tbackdropCmptRef.changeDetectorRef.detectChanges();\n\t\t}\n\t\twindowCmptRef.changeDetectorRef.detectChanges();\n\t\treturn hubModalRef;\n\t}\n\n\tget activeInstances() {\n\t\treturn this._activeInstances;\n\t}\n\n\tdismissAll(reason?: any) {\n\t\tthis._modalRefs.forEach((hubModalRef) => hubModalRef.dismiss(reason));\n\t}\n\n\thasOpenModals(): boolean {\n\t\treturn this._modalRefs.length > 0;\n\t}\n\n\tprivate _attachBackdrop(\n\t\tcontainerEl: Element\n\t): ComponentRef<HubModalBackdrop> {\n\t\tlet backdropCmptRef = createComponent(HubModalBackdrop, {\n\t\t\tenvironmentInjector: this._applicationRef.injector,\n\t\t\telementInjector: this._injector\n\t\t});\n\t\tthis._applicationRef.attachView(backdropCmptRef.hostView);\n\t\tcontainerEl.appendChild(backdropCmptRef.location.nativeElement);\n\t\treturn backdropCmptRef;\n\t}\n\n\tprivate _attachWindowComponent(\n\t\tcontainerEl: Element,\n\t\t[headerNodes, bodyNodes, footerNodes]: Node[][],\n\t\toptions: HubModalOptions\n\t): ComponentRef<HubModalWindow> {\n\t\tconst singleContent =\n\t\t\t!options.headerSelector && !options.footerSelector;\n\t\tlet windowCmptRef = createComponent(HubModalWindow, {\n\t\t\tenvironmentInjector: this._applicationRef.injector,\n\t\t\telementInjector: this._injector,\n\t\t\tprojectableNodes: singleContent\n\t\t\t\t? [bodyNodes]\n\t\t\t\t: [[], headerNodes, bodyNodes, footerNodes]\n\t\t});\n\n\t\tObject.assign(windowCmptRef.instance, { singleContent });\n\n\t\tthis._applicationRef.attachView(windowCmptRef.hostView);\n\t\tcontainerEl.appendChild(windowCmptRef.location.nativeElement);\n\t\treturn windowCmptRef;\n\t}\n\n\tprivate _getContentRef(\n\t\tcontentInjector: Injector,\n\t\tenvironmentInjector: EnvironmentInjector,\n\t\tcontent: Type<any> | TemplateRef<any> | string,\n\t\tactiveModal: HubActiveModal,\n\t\toptions: HubModalOptions\n\t): ContentRef {\n\t\tif (!content) {\n\t\t\treturn new ContentRef([]);\n\t\t} else if (content instanceof TemplateRef) {\n\t\t\treturn this._createFromTemplateRef(content, activeModal, options);\n\t\t} else if (isString(content)) {\n\t\t\treturn this._createFromString(content);\n\t\t} else {\n\t\t\treturn this._createFromComponent(\n\t\t\t\tcontentInjector,\n\t\t\t\tenvironmentInjector,\n\t\t\t\tcontent,\n\t\t\t\tactiveModal,\n\t\t\t\toptions\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate _createFromTemplateRef(\n\t\ttemplateRef: TemplateRef<any>,\n\t\tactiveModal: HubActiveModal,\n\t\toptions: HubModalOptions\n\t): ContentRef {\n\t\tconst context = {\n\t\t\t$implicit: activeModal,\n\t\t\tclose(result) {\n\t\t\t\tactiveModal.close(result);\n\t\t\t},\n\t\t\tdismiss(reason) {\n\t\t\t\tactiveModal.dismiss(reason);\n\t\t\t}\n\t\t};\n\t\tconst viewRef = templateRef.createEmbeddedView(context);\n\t\tthis._applicationRef.attachView(viewRef);\n\n\t\tconst containerNode = document.createElement('ng-container');\n\t\tcontainerNode.append(...viewRef.rootNodes);\n\n\t\tthis._addDismissEventListener(containerNode, context as any, options);\n\t\tthis._addCloseEventListener(containerNode, context as any, options);\n\n\t\treturn new ContentRef(\n\t\t\t[\n\t\t\t\toptions.headerSelector\n\t\t\t\t\t? extractAndRemoveNodesBySelector(\n\t\t\t\t\t\t\tcontainerNode,\n\t\t\t\t\t\t\toptions.headerSelector\n\t\t\t\t\t )\n\t\t\t\t\t: [],\n\t\t\t\tcontainerNode.childNodes as any,\n\t\t\t\toptions.footerSelector\n\t\t\t\t\t? extractAndRemoveNodesBySelector(\n\t\t\t\t\t\t\tcontainerNode,\n\t\t\t\t\t\t\toptions.footerSelector\n\t\t\t\t\t )\n\t\t\t\t\t: []\n\t\t\t],\n\t\t\tviewRef\n\t\t);\n\t}\n\n\tprivate _createFromString(content: string): ContentRef {\n\t\tconst component = this._document.createTextNode(`${content}`);\n\t\treturn new ContentRef([[component]]);\n\t}\n\n\tprivate _createFromComponent(\n\t\tcontentInjector: Injector,\n\t\tenvironmentInjector: EnvironmentInjector,\n\t\tcomponentType: Type<any>,\n\t\tcontext: HubActiveModal,\n\t\toptions: HubModalOptions\n\t): ContentRef {\n\t\tconst elementInjector = Injector.create({\n\t\t\tproviders: [{ provide: HubActiveModal, useValue: context }],\n\t\t\tparent: contentInjector\n\t\t});\n\t\tconst componentRef = createComponent(componentType, {\n\t\t\tenvironmentInjector,\n\t\t\telementInjector\n\t\t});\n\n\t\tif (options.data) {\n\t\t\tObject.assign(componentRef.instance, {\n\t\t\t\tdata: options.data\n\t\t\t});\n\t\t}\n\n\t\tconst componentNativeEl: HTMLElement =\n\t\t\tcomponentRef.location.nativeElement;\n\t\tif (options.scrollable) {\n\t\t\tcomponentNativeEl.classList.add('component-host-scrollable');\n\t\t}\n\t\tthis._applicationRef.attachView(componentRef.hostView);\n\n\t\tthis._addDismissEventListener(componentNativeEl, context, options);\n\t\tthis._addCloseEventListener(componentNativeEl, context as any, options);\n\n\t\t// FIXME: we should here get rid of the component nativeElement\n\t\t// and use `[Array.from(componentNativeEl.childNodes)]` instead and remove the above CSS class.\n\t\treturn new ContentRef(\n\t\t\t[\n\t\t\t\toptions.headerSelector\n\t\t\t\t\t? extractAndRemoveNodesBySelector(\n\t\t\t\t\t\t\tcomponentNativeEl,\n\t\t\t\t\t\t\toptions.headerSelector\n\t\t\t\t\t )\n\t\t\t\t\t: [],\n\t\t\t\tcomponentNativeEl.childNodes as any,\n\t\t\t\toptions.footerSelector\n\t\t\t\t\t? extractAndRemoveNodesBySelector(\n\t\t\t\t\t\t\tcomponentNativeEl,\n\t\t\t\t\t\t\toptions.footerSelector\n\t\t\t\t\t )\n\t\t\t\t\t: []\n\t\t\t],\n\t\t\tcomponentRef.hostView,\n\t\t\tcomponentRef\n\t\t);\n\t}\n\n\tprivate _setAriaHidden(element: Element) {\n\t\tconst parent = element.parentElement;\n\t\tif (parent && element !== this._document.body) {\n\t\t\tArray.from(parent.children).forEach((sibling) => {\n\t\t\t\tif (sibling !== element && sibling.nodeName !== 'SCRIPT') {\n\t\t\t\t\tthis._ariaHiddenValues.set(\n\t\t\t\t\t\tsibling,\n\t\t\t\t\t\tsibling.getAttribute('aria-hidden')\n\t\t\t\t\t);\n\t\t\t\t\tsibling.setAttribute('aria-hidden', 'true');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis._setAriaHidden(parent);\n\t\t}\n\t}\n\n\tprivate _revertAriaHidden() {\n\t\tthis._ariaHiddenValues.forEach((value, element) => {\n\t\t\tif (value) {\n\t\t\t\telement.setAttribute('aria-hidden', value);\n\t\t\t} else {\n\t\t\t\telement.removeAttribute('aria-hidden');\n\t\t\t}\n\t\t});\n\t\tthis._ariaHiddenValues.clear();\n\t}\n\n\tprivate _registerModalRef(hubModalRef: HubModalRef) {\n\t\tconst unregisterModalRef = () => {\n\t\t\tconst index = this._modalRefs.indexOf(hubModalRef);\n\t\t\tif (index > -1) {\n\t\t\t\tthis._modalRefs.splice(index, 1);\n\t\t\t\tthis._activeInstances.emit(this._modalRefs);\n\t\t\t}\n\t\t};\n\t\tthis._modalRefs.push(hubModalRef);\n\t\tthis._activeInstances.emit(this._modalRefs);\n\t\thubModalRef.result.then(unregisterModalRef, unregisterModalRef);\n\t}\n\n\tprivate _registerWindowCmpt(hubWindowCmpt: ComponentRef<HubModalWindow>) {\n\t\tthis._windowCmpts.push(hubWindowCmpt);\n\t\tthis._activeWindowCmptHasChanged.next();\n\n\t\thubWindowCmpt.onDestroy(() => {\n\t\t\tconst index = this._windowCmpts.indexOf(hubWindowCmpt);\n\t\t\tif (index > -1) {\n\t\t\t\tthis._windowCmpts.splice(index, 1);\n\t\t\t\tthis._activeWindowCmptHasChanged.next();\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Attaches click event listeners to elements within a container based on a specified dismiss selector to dismiss a modal.\n\t *\n\t * @param {HTMLElement} container - The `container` parameter is an HTMLElement that represents the DOM element which contains the\n\t * modal content.\n\t * @param {HubActiveModal} context - The `context` parameter in the `_addDismissEventListener` function refers to the active modal\n\t * instance that is being displayed. It is used to call the `dismiss` method on the modal instance when a dismissible element is\n\t * clicked.\n\t * @param {HubModalOptions} options - The `options` parameter is an object that contains configuration options for the modal. It\n\t * may include properties such as `dismissSelector`, which is used to specify a CSS selector for elements that, when clicked, will\n\t * dismiss the modal by calling the `dismiss` method on the `context` object.\n\t */\n\tprivate _addDismissEventListener(\n\t\tcontainer: HTMLElement,\n\t\tcontext: HubActiveModal,\n\t\toptions: HubModalOptions\n\t) {\n\t\tif (options.dismissSelector) {\n\t\t\tconst dismissaable: NodeListOf<Element> =\n\t\t\t\tcontainer.querySelectorAll(options.dismissSelector);\n\t\t\tfor (const item of Array.from(dismissaable)) {\n\t\t\t\titem.addEventListener('click', () => context.dismiss());\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Attaches click event listeners to elements matching a specified selector to close a modal window.\n\t *\n\t * @param {HTMLElement} container - The `container` parameter is an HTMLElement that represents the DOM element which contains the\n\t * modal content.\n\t * @param {HubActiveModal} context - The `context` parameter in the `_addCloseEventListener` function is of type `HubActiveModal`.\n\t * It is used to reference the active modal instance within the function and call the `close()` method on it when a close event is\n\t * triggered.\n\t * @param {HubModalOptions} options - The `options` parameter is an object that contains configuration options for the modal. It\n\t * may include properties such as `closeSelector`, which is used to specify the selector for elements that can trigger the modal\n\t * to close when clicked.\n\t */\n\tprivate _addCloseEventListener(\n\t\tcontainer: HTMLElement,\n\t\tcontext: HubActiveModal,\n\t\toptions: HubModalOptions\n\t) {\n\t\tif (options.closeSelector) {\n\t\t\tdebugger;\n\t\t\tconst dismissaable: NodeListOf<Element> =\n\t\t\t\tcontainer.querySelectorAll(options.closeSelector);\n\t\t\tfor (const item of Array.from(dismissaable)) {\n\t\t\t\tconst clickEventListeners = item.addEventListener('click', () =>\n\t\t\t\t\tcontext.close()\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Extracts child nodes matching a selector from a container element, removes those nodes from the DOM, and returns them as an array.\n *\n * @param {HTMLElement} container - The `container` parameter in the `extractAndRemoveNodesBySelector` function is an HTMLElement\n * that represents the parent element within which we want to search for nodes matching a specific selector and remove them.\n * @param {string} selector - The `selector` parameter in the `extractAndRemoveNodesBySelector` function is a string that\n * represents a CSS selector. This selector is used to query and select specific elements within the `container` HTMLElement.\n *\n * @returns An array of nodes that were extracted from the container element based on the provided selector, and then removes those\n * nodes from the DOM.\n */\nfunction extractAndRemoveNodesBySelector(\n\tcontainer: HTMLElement,\n\tselector: string\n): Array<Node> {\n\tlet containerNodes = container.querySelectorAll(selector);\n\n\tconst nodes = Array.from(containerNodes).reduce((acc, c) => {\n\t\treturn [...acc, ...Array.from(c.childNodes)];\n\t}, [] as Array<Node>);\n\n\t// Selecciona los nodos dentro del contenedor que coincidan con el selector\n\tconst nodesToRemove = container.querySelectorAll<HTMLElement>(selector);\n\n\t// Convertir NodeList a array y eliminar cada nodo del DOM\n\tArray.from(nodesToRemove).forEach((node) => node.remove());\n\treturn nodes;\n}\n","import { inject, Injectable, Injector } from '@angular/core';\n\nimport { HubModalConfig, HubModalOptions } from './modal-config';\nimport { HubModalRef } from './modal-ref';\nimport { HubModalStack } from './modal-stack';\n\n/**\n * A service for opening modal windows.\n *\n * Creating a modal is straightforward: create a component or a template and pass it as an argument to\n * the `.open()` method.\n */\n@Injectable({ providedIn: 'root' })\nexport class HubModal {\n\tprivate _injector = inject(Injector);\n\tprivate _modalStack = inject(HubModalStack);\n\tprivate _config = inject(HubModalConfig);\n\n\t/**\n\t * Opens a new modal window with the specified content and supplied options.\n\t *\n\t * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\n\t * then instances of those components can be injected with an instance of the `HubActiveModal` class. You can then\n\t * use `HubActiveModal` methods to close / dismiss modals from \"inside\" of your component.\n\t *\n\t * Also see the [`HubModalOptions`](#/components/modal/api#HubModalOptions) for the list of supported options.\n\t */\n\topen(content: any, options: HubModalOptions = {}): HubModalRef {\n\t\tconst combinedOptions = { ...this._config, animation: this._config.animation, ...options };\n\t\treturn this._modalStack.open(this._injector, content, combinedOptions);\n\t}\n\n\t/**\n\t * Returns an observable that holds the active modal instances.\n\t */\n\tget activeInstances() {\n\t\treturn this._modalStack.activeInstances;\n\t}\n\n\t/**\n\t * Dismisses all currently displayed modal windows with the supplied reason.\n\t *\n\t * @since 3.1.0\n\t */\n\tdismissAll(reason?: any) {\n\t\tthis._modalStack.dismissAll(reason);\n\t}\n\n\t/**\n\t * Indicates if there are currently any open modal windows in the application.\n\t *\n\t * @since 3.3.0\n\t */\n\thasOpenModals(): boolean {\n\t\treturn this._modalStack.hasOpenModals();\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { HubModal } from './modal';\nexport { HubModal } from './modal';\nexport {\n\tHubModalConfig,\n\tHubModalOptions,\n\tHubModalUpdatableOptions\n} from './modal-config';\nexport { ModalDismissReasons } from './modal-dismiss-reasons';\nexport { HubActiveModal, HubModalRef } from './modal-ref';\n\n@NgModule({ providers: [HubModal] })\nexport class HubModalModule {}\n","/*\n * Public API Surface of modal\n */\nexport {\n\tModalDismissReasons,\n\tHubActiveModal,\n\tHubModal,\n\tHubModalConfig,\n\tHubModalModule,\n\tHubModalOptions,\n\tHubModalUpdatableOptions,\n\tHubModalRef\n} from './lib/modal.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-hub-ui-modal.mjs","sources":["../../../projects/modal/src/lib/modal-config.ts","../../../projects/modal/src/lib/modal-backdrop.ts","../../../projects/modal/src/lib/modal-ref.ts","../../../projects/modal/src/lib/modal-dismiss-reasons.ts","../../../projects/modal/src/lib/modal-window.ts","../../../projects/modal/src/lib/modal-stack.ts","../../../projects/modal/src/lib/modal.ts","../../../projects/modal/src/lib/modal.module.ts","../../../projects/modal/src/public-api.ts","../../../projects/modal/src/ng-hub-ui-modal.ts"],"sourcesContent":["import { Injectable, Injector } from '@angular/core';\n// import { HubConfig } from '../hub-config';\n\n/**\n * Options available when opening new modal windows with `HubModal.open()` method.\n */\nexport interface HubModalOptions {\n\t/**\n\t * If `true`, modal opening and closing will be animated.\n\t *\n\t * @since 8.0.0\n\t */\n\tanimation?: boolean;\n\n\t/**\n\t * `aria-labelledby` attribute value to set on the modal window.\n\t *\n\t * @since 2.2.0\n\t */\n\tariaLabelledBy?: string;\n\n\t/**\n\t * `aria-describedby` attribute value to set on the modal window.\n\t *\n\t * @since 6.1.0\n\t */\n\tariaDescribedBy?: string;\n\n\t/**\n\t * If `true`, the backdrop element will be created for a given modal.\n\t *\n\t * Alternatively, specify `'static'` for a backdrop which doesn't close the modal on click.\n\t *\n\t * Default value is `true`.\n\t */\n\tbackdrop?: boolean | 'static';\n\n\t/**\n\t * Callback right before the modal will be dismissed.\n\t *\n\t * If this function returns:\n\t * * `false`\n\t * * a promise resolved with `false`\n\t * * a promise that is rejected\n\t *\n\t * then the modal won't be dismissed.\n\t */\n\tbeforeDismiss?: () => boolean | Promise<boolean>;\n\n\t/**\n\t * If `true`, the modal will be centered vertically.\n\t *\n\t * Default value is `false`.\n\t *\n\t * @since 1.1.0\n\t */\n\tcentered?: boolean;\n\n\t/**\n\t * A selector specifying the element all new modal windows should be appended to.\n\t * Since v5.3.0 it is also possible to pass the reference to an `HTMLElement`.\n\t *\n\t * If not specified, will be `body`.\n\t */\n\tcontainer?: string | HTMLElement;\n\n\t/**\n\t * If `true` modal will always be displayed in fullscreen mode.\n\t *\n\t * For values like `'md'` it means that modal will be displayed in fullscreen mode\n\t * only if the viewport width is below `'md'`. For custom strings (ex. when passing `'mysize'`)\n\t * it will add a `'modal-fullscreen-mysize-down'` class.\n\t *\n\t * If not specified will be `false`.\n\t *\n\t * @since 12.1.0\n\t */\n\tfullscreen?: 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | boolean | string;\n\n\t/**\n\t * The `Injector` to use for modal content.\n\t */\n\tinjector?: Injector;\n\n\t/**\n\t * If `true`, the modal will be closed when `Escape` key is pressed\n\t *\n\t * Default value is `true`.\n\t */\n\tkeyboard?: boolean;\n\n\t/**\n\t * Scrollable modal content (false by default).\n\t *\n\t * @since 5.0.0\n\t */\n\tscrollable?: boolean;\n\n\t/**\n\t * Size of a new modal window.\n\t */\n\tsize?: 'sm' | 'lg' | 'xl' | string;\n\n\t/**\n\t * A custom class to append to the modal window.\n\t */\n\twindowClass?: string;\n\n\t/**\n\t * A custom class to append to the modal dialog.\n\t *\n\t * @since 9.1.0\n\t */\n\tmodalDialogClass?: string;\n\n\t/**\n\t * A custom class to append to the modal backdrop.\n\t *\n\t * @since 1.1.0\n\t */\n\tbackdropClass?: string;\n\n\t/**\n\t * Allows to specify a custom selector for the header element of the modal window. This can be useful if you want to target\n\t * a specific element within the modal to act as the header, for example, to apply custom styling or functionality to it. By\n\t * providing a CSS selector string, you can target the desired\theader element within the modal content.\n\t */\n\theaderSelector?: string;\n\n\t/**\n\t * Allows to specify a custom selector for the footer element of the modal window. This can be useful if you want to target\n\t * a specific element within the modal to act as the footer, for example, to apply custom styling or functionality to it. By\n\t * providing a CSS selector string, you can target the desired footer element within the modal content.\n\t */\n\tfooterSelector?: string;\n\n\t/** Used to specify a custom selector for elements that can trigger the dismissal of the modal window. By providing a CSS selector\n\t * string for `dismissSelector`, you can target specific elements within the modal content that, when interacted with (e.g., clicked),\n\t * will close or dismiss the modal window.\n\t */\n\tdismissSelector?: string;\n\n\t/**\n\t * Used to specify a custom selector for elements that can trigger the closing of the modal window. By providing a CSS selector\n\t * string for `closeSelector`, you can target specific elements within the modal content that, when interacted with (e.g., clicked),\n\t * will close the modal window. This allows for customization of the elements that can act as close buttons for the modal.\n\t */\n\tcloseSelector?: string;\n\n\t/** Used to store any additional data that needs to be passed to the modal window when it is opened. This property allows you\n\t * to provide custom data to the modal component, which can then be accessed and utilized within the modal content or logic.\n\t * It provides flexibility for passing dynamic information to the modal window based on the specific use case or requirements.\n\t */\n\tdata?: any;\n}\n\n/**\n * Options that can be changed on an opened modal with `HubModalRef.update()` and `HubActiveModal.update()` methods.\n *\n * @since 14.2.0\n */\nexport type HubModalUpdatableOptions = Pick<\n\tHubModalOptions,\n\t| 'ariaLabelledBy'\n\t| 'ariaDescribedBy'\n\t| 'centered'\n\t| 'fullscreen'\n\t| 'backdropClass'\n\t| 'size'\n\t| 'windowClass'\n\t| 'modalDialogClass'\n>;\n\n/**\n * A configuration service for the [`HubModal`](#/components/modal/api#HubModal) service.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all modals used in the application.\n *\n * @since 3.1.0\n */\n@Injectable({ providedIn: 'root' })\nexport class HubModalConfig implements Required<HubModalOptions> {\n\t// private _hubConfig = inject(HubConfig);\n\tprivate _animation: boolean;\n\n\tariaLabelledBy: string;\n\tariaDescribedBy: string;\n\tbackdrop: boolean | 'static' = true;\n\tbeforeDismiss: () => boolean | Promise<boolean>;\n\tcentered: boolean;\n\tcontainer: string | HTMLElement;\n\tfullscreen: 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | boolean | string = false;\n\tinjector: Injector;\n\tkeyboard = true;\n\tscrollable: boolean;\n\tsize: 'sm' | 'lg' | 'xl' | string;\n\twindowClass: string;\n\tmodalDialogClass: string;\n\tbackdropClass: string;\n\theaderSelector: string;\n\tfooterSelector: string;\n\tdismissSelector: string = '[data-dismiss=\"modal\"]';\n\tcloseSelector: string = '[data-close=\"modal\"]';\n\tdata: any;\n\n\tget animation(): boolean {\n\t\treturn this._animation ?? true /* this._hubConfig.animation */;\n\t}\n\tset animation(animation: boolean) {\n\t\tthis._animation = animation;\n\t}\n}\n","import {\n\tComponent,\n\tElementRef,\n\tinject,\n\tInput,\n\tNgZone,\n\tOnInit,\n\tViewEncapsulation\n} from '@angular/core';\nimport { hubRunTransition, reflow } from 'ng-hub-ui-utils';\nimport { Observable } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\n@Component({\n\tselector: 'hub-modal-backdrop',\n\tstandalone: true,\n\tencapsulation: ViewEncapsulation.None,\n\ttemplate: '',\n\thost: {\n\t\t'[class]':\n\t\t\t'\"modal-backdrop\" + (backdropClass ? \" \" + backdropClass : \"\")',\n\t\t'[class.show]': '!animation',\n\t\t'[class.fade]': 'animation',\n\t\tstyle: 'z-index: 1055'\n\t}\n})\nexport class HubModalBackdrop implements OnInit {\n\tprivate _nativeElement = inject(ElementRef).nativeElement as HTMLElement;\n\tprivate _zone = inject(NgZone);\n\n\t@Input() animation: boolean;\n\t@Input() backdropClass: string;\n\n\tngOnInit() {\n\t\tthis._zone.onStable\n\t\t\t.asObservable()\n\t\t\t.pipe(take(1))\n\t\t\t.subscribe(() => {\n\t\t\t\thubRunTransition(\n\t\t\t\t\tthis._zone,\n\t\t\t\t\tthis._nativeElement,\n\t\t\t\t\t(element: HTMLElement, animation: boolean) => {\n\t\t\t\t\t\tif (animation) {\n\t\t\t\t\t\t\treflow(element);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telement.classList.add('show');\n\t\t\t\t\t},\n\t\t\t\t\t{ animation: this.animation, runningTransition: 'continue' }\n\t\t\t\t);\n\t\t\t});\n\t}\n\n\thide(): Observable<void> {\n\t\treturn hubRunTransition(\n\t\t\tthis._zone,\n\t\t\tthis._nativeElement,\n\t\t\t({ classList }) => classList.remove('show'),\n\t\t\t{\n\t\t\t\tanimation: this.animation,\n\t\t\t\trunningTransition: 'stop'\n\t\t\t}\n\t\t);\n\t}\n}\n","import { ComponentRef } from '@angular/core';\nimport { Observable, of, Subject, zip } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { HubModalBackdrop } from './modal-backdrop';\nimport { HubModalWindow } from './modal-window';\nimport { HubModalOptions, HubModalUpdatableOptions } from './modal-config';\nimport { ContentRef, isDefined, isPromise } from 'ng-hub-ui-utils';\n\n/**\n * A reference to the currently opened (active) modal.\n *\n * Instances of this class can be injected into your component passed as modal content.\n * So you can `.update()`, `.close()` or `.dismiss()` the modal window from your component.\n */\nexport class HubActiveModal {\n\t/**\n\t * Updates options of an opened modal.\n\t *\n\t * @since 14.2.0\n\t */\n\tupdate(options: HubModalUpdatableOptions): void {}\n\t/**\n\t * Closes the modal with an optional `result` value.\n\t *\n\t * The `HubModalRef.result` promise will be resolved with the provided value.\n\t */\n\tclose(result?: any): void {}\n\n\t/**\n\t * Dismisses the modal with an optional `reason` value.\n\t *\n\t * The `HubModalRef.result` promise will be rejected with the provided value.\n\t */\n\tdismiss(reason?: any): void {}\n}\n\nconst WINDOW_ATTRIBUTES: string[] = [\n\t'animation',\n\t'ariaLabelledBy',\n\t'ariaDescribedBy',\n\t'backdrop',\n\t'centered',\n\t'fullscreen',\n\t'keyboard',\n\t'scrollable',\n\t'size',\n\t'windowClass',\n\t'modalDialogClass'\n];\nconst BACKDROP_ATTRIBUTES: string[] = ['animation', 'backdropClass'];\n\n/**\n * A reference to the newly opened modal returned by the `HubModal.open()` method.\n */\nexport class HubModalRef {\n\tprivate _closed = new Subject<any>();\n\tprivate _dismissed = new Subject<any>();\n\tprivate _hidden = new Subject<void>();\n\tprivate _resolve!: (result?: any) => void;\n\tprivate _reject!: (reason?: any) => void;\n\n\tprivate _applyWindowOptions(\n\t\twindowInstance: HubModalWindow,\n\t\toptions: HubModalOptions\n\t): void {\n\t\tWINDOW_ATTRIBUTES.forEach((optionName: string) => {\n\t\t\tif (isDefined(options[optionName])) {\n\t\t\t\twindowInstance[optionName] = options[optionName];\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _applyBackdropOptions(\n\t\tbackdropInstance: HubModalBackdrop,\n\t\toptions: HubModalOptions\n\t): void {\n\t\tBACKDROP_ATTRIBUTES.forEach((optionName: string) => {\n\t\t\tif (isDefined(options[optionName])) {\n\t\t\t\tbackdropInstance[optionName] = options[optionName];\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Updates options of an opened modal.\n\t *\n\t * @since 14.2.0\n\t */\n\tupdate(options: HubModalUpdatableOptions): void {\n\t\tthis._applyWindowOptions(this._windowCmptRef.instance, options);\n\t\tif (this._backdropCmptRef && this._backdropCmptRef.instance) {\n\t\t\tthis._applyBackdropOptions(this._backdropCmptRef.instance, options);\n\t\t}\n\t}\n\n\t/**\n\t * The instance of a component used for the modal content.\n\t *\n\t * When a `TemplateRef` is used as the content or when the modal is closed, will return `undefined`.\n\t */\n\tget componentInstance(): any {\n\t\tif (this._contentRef && this._contentRef.componentRef) {\n\t\t\treturn this._contentRef.componentRef.instance;\n\t\t}\n\t}\n\n\t/**\n\t * The promise that is resolved when the modal is closed and rejected when the modal is dismissed.\n\t */\n\tresult: Promise<any>;\n\n\t/**\n\t * The observable that emits when the modal is closed via the `.close()` method.\n\t *\n\t * It will emit the result passed to the `.close()` method.\n\t *\n\t * @since 8.0.0\n\t */\n\tget closed(): Observable<any> {\n\t\treturn this._closed.asObservable().pipe(takeUntil(this._hidden));\n\t}\n\n\t/**\n\t * The observable that emits when the modal is dismissed via the `.dismiss()` method.\n\t *\n\t * It will emit the reason passed to the `.dismissed()` method by the user, or one of the internal\n\t * reasons like backdrop click or ESC key press.\n\t *\n\t * @since 8.0.0\n\t */\n\tget dismissed(): Observable<any> {\n\t\treturn this._dismissed.asObservable().pipe(takeUntil(this._hidden));\n\t}\n\n\t/**\n\t * The observable that emits when both modal window and backdrop are closed and animations were finished.\n\t * At this point modal and backdrop elements will be removed from the DOM tree.\n\t *\n\t * This observable will be completed after emitting.\n\t *\n\t * @since 8.0.0\n\t */\n\tget hidden(): Observable<void> {\n\t\treturn this._hidden.asObservable();\n\t}\n\n\t/**\n\t * The observable that emits when modal is fully visible and animation was finished.\n\t * Modal DOM element is always available synchronously after calling 'modal.open()' service.\n\t *\n\t * This observable will be completed after emitting.\n\t * It will not emit, if modal is closed before open animation is finished.\n\t *\n\t * @since 8.0.0\n\t */\n\tget shown(): Observable<void> {\n\t\treturn this._windowCmptRef.instance.shown.asObservable();\n\t}\n\n\tconstructor(\n\t\tprivate _windowCmptRef: ComponentRef<HubModalWindow>,\n\t\tprivate _contentRef: ContentRef,\n\t\tprivate _backdropCmptRef?: ComponentRef<HubModalBackdrop>,\n\t\tprivate _beforeDismiss?: () => boolean | Promise<boolean>\n\t) {\n\t\t_windowCmptRef.instance.dismissEvent.subscribe((reason: any) => {\n\t\t\tthis.dismiss(reason);\n\t\t});\n\n\t\tthis.result = new Promise((resolve, reject) => {\n\t\t\tthis._resolve = resolve;\n\t\t\tthis._reject = reject;\n\t\t});\n\t\tthis.result.then(null, () => {});\n\t}\n\n\t/**\n\t * Closes the modal with an optional `result` value.\n\t *\n\t * The `HubMobalRef.result` promise will be resolved with the provided value.\n\t */\n\tclose(result?: any): void {\n\t\tif (this._windowCmptRef) {\n\t\t\tthis._closed.next(result);\n\t\t\tthis._resolve(result);\n\t\t\tthis._removeModalElements();\n\t\t}\n\t}\n\n\tprivate _dismiss(reason?: any) {\n\t\tthis._dismissed.next(reason);\n\t\tthis._reject(reason);\n\t\tthis._removeModalElements();\n\t}\n\n\t/**\n\t * Dismisses the modal with an optional `reason` value.\n\t *\n\t * The `HubModalRef.result` promise will be rejected with the provided value.\n\t */\n\tdismiss(reason?: any): void {\n\t\tif (this._windowCmptRef) {\n\t\t\tif (!this._beforeDismiss) {\n\t\t\t\tthis._dismiss(reason);\n\t\t\t} else {\n\t\t\t\tconst dismiss = this._beforeDismiss();\n\t\t\t\tif (isPromise(dismiss)) {\n\t\t\t\t\tdismiss.then(\n\t\t\t\t\t\t(result) => {\n\t\t\t\t\t\t\tif (result !== false) {\n\t\t\t\t\t\t\t\tthis._dismiss(reason);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() => {}\n\t\t\t\t\t);\n\t\t\t\t} else if (dismiss !== false) {\n\t\t\t\t\tthis._dismiss(reason);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _removeModalElements() {\n\t\tconst windowTransition$ = this._windowCmptRef.instance.hide();\n\t\tconst backdropTransition$ = this._backdropCmptRef\n\t\t\t? this._backdropCmptRef.instance.hide()\n\t\t\t: of(undefined);\n\n\t\t// hiding window\n\t\twindowTransition$.subscribe(() => {\n\t\t\tconst { nativeElement } = this._windowCmptRef.location;\n\t\t\tnativeElement.parentNode.removeChild(nativeElement);\n\t\t\tthis._windowCmptRef.destroy();\n\t\t\tthis._contentRef?.viewRef?.destroy();\n\n\t\t\tthis._windowCmptRef = <any>null;\n\t\t\tthis._contentRef = <any>null;\n\t\t});\n\n\t\t// hiding backdrop\n\t\tbackdropTransition$.subscribe(() => {\n\t\t\tif (this._backdropCmptRef) {\n\t\t\t\tconst { nativeElement } = this._backdropCmptRef.location;\n\t\t\t\tnativeElement.parentNode.removeChild(nativeElement);\n\t\t\t\tthis._backdropCmptRef.destroy();\n\t\t\t\tthis._backdropCmptRef = <any>null;\n\t\t\t}\n\t\t});\n\n\t\t// all done\n\t\tzip(windowTransition$, backdropTransition$).subscribe(() => {\n\t\t\tthis._hidden.next();\n\t\t\tthis._hidden.complete();\n\t\t});\n\t}\n}\n","export enum ModalDismissReasons {\n\tBACKDROP_CLICK,\n\tESC,\n}\n","import { DOCUMENT, NgIf } from '@angular/common';\nimport {\n\tComponent,\n\tElementRef,\n\tEventEmitter,\n\tinject,\n\tInput,\n\tNgZone,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tViewChild,\n\tViewEncapsulation\n} from '@angular/core';\nimport { fromEvent, Observable, Subject, zip } from 'rxjs';\nimport { filter, switchMap, take, takeUntil, tap } from 'rxjs/operators';\nimport { ModalDismissReasons } from './modal-dismiss-reasons';\nimport {\n\tisString,\n\treflow,\n\tgetFocusableBoundaryElements,\n\thubRunTransition,\n\tTransitionOptions\n} from 'ng-hub-ui-utils';\n\n@Component({\n\tselector: 'hub-modal-window',\n\tstandalone: true,\n\timports: [NgIf],\n\thost: {\n\t\t'[class]': '\"modal d-block\" + (windowClass ? \" \" + windowClass : \"\")',\n\t\t'[class.fade]': 'animation',\n\t\trole: 'dialog',\n\t\ttabindex: '-1',\n\t\t'[attr.aria-modal]': 'true',\n\t\t'[attr.aria-labelledby]': 'ariaLabelledBy',\n\t\t'[attr.aria-describedby]': 'ariaDescribedBy'\n\t},\n\ttemplate: `\n\t\t<div\n\t\t\t#dialog\n\t\t\t[class]=\"\n\t\t\t\t'modal-dialog' +\n\t\t\t\t(size ? ' modal-' + size : '') +\n\t\t\t\t(centered ? ' modal-dialog-centered' : '') +\n\t\t\t\tfullscreenClass +\n\t\t\t\t(scrollable ? ' modal-dialog-scrollable' : '') +\n\t\t\t\t(modalDialogClass ? ' ' + modalDialogClass : '')\n\t\t\t\"\n\t\t\trole=\"document\"\n\t\t>\n\t\t\t<div class=\"modal-content\">\n\t\t\t\t<ng-container *ngIf=\"singleContent; else multipleContent\">\n\t\t\t\t\t<ng-content></ng-content>\n\t\t\t\t</ng-container>\n\t\t\t\t<ng-template #multipleContent>\n\t\t\t\t\t<div class=\"modal-header\">\n\t\t\t\t\t\t<ng-content />\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclass=\"btn-close\"\n\t\t\t\t\t\t\tdata-bs-dismiss=\"modal\"\n\t\t\t\t\t\t\taria-label=\"Close\"\n\t\t\t\t\t\t\t(click)=\"dismiss(null)\"\n\t\t\t\t\t\t></button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"modal-body\">\n\t\t\t\t\t\t<ng-content />\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"modal-footer\">\n\t\t\t\t\t\t<ng-content />\n\t\t\t\t\t</div>\n\t\t\t\t</ng-template>\n\t\t\t</div>\n\t\t</div>\n\t`,\n\tencapsulation: ViewEncapsulation.None,\n\tstyleUrl: './modal.scss'\n})\nexport class HubModalWindow implements OnInit, OnDestroy {\n\tprivate _document = inject(DOCUMENT);\n\tprivate _elRef = inject(ElementRef<HTMLElement>);\n\tprivate _zone = inject(NgZone);\n\n\tprivate _closed$ = new Subject<void>();\n\tprivate _elWithFocus: Element | null = null; // element that is focused prior to modal opening\n\n\t@ViewChild('dialog', { static: true })\n\tprivate _dialogEl: ElementRef<HTMLElement>;\n\n\t@Input() animation: boolean;\n\t@Input() ariaLabelledBy: string;\n\t@Input() ariaDescribedBy: string;\n\t@Input() backdrop: boolean | string = true;\n\t@Input() centered: string;\n\t@Input() fullscreen: string | boolean;\n\t@Input() keyboard = true;\n\t@Input() scrollable: string;\n\t@Input() size: string;\n\t@Input() windowClass: string;\n\t@Input() modalDialogClass: string;\n\n\tsingleContent!: boolean;\n\n\t@Output('dismiss') dismissEvent = new EventEmitter();\n\n\tshown = new Subject<void>();\n\thidden = new Subject<void>();\n\n\tget fullscreenClass(): string {\n\t\treturn this.fullscreen === true\n\t\t\t? ' modal-fullscreen'\n\t\t\t: isString(this.fullscreen)\n\t\t\t? ` modal-fullscreen-${this.fullscreen}-down`\n\t\t\t: '';\n\t}\n\n\tdismiss(reason): void {\n\t\tthis.dismissEvent.emit(reason);\n\t}\n\n\tngOnInit() {\n\t\tthis._elWithFocus = this._document.activeElement;\n\t\tthis._zone.onStable\n\t\t\t.asObservable()\n\t\t\t.pipe(take(1))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis._show();\n\t\t\t});\n\t}\n\n\tngOnDestroy() {\n\t\tthis._disableEventHandling();\n\t}\n\n\thide(): Observable<any> {\n\t\tconst { nativeElement } = this._elRef;\n\t\tconst context: TransitionOptions<any> = {\n\t\t\tanimation: this.animation,\n\t\t\trunningTransition: 'stop'\n\t\t};\n\n\t\tconst windowTransition$ = hubRunTransition(\n\t\t\tthis._zone,\n\t\t\tnativeElement,\n\t\t\t() => nativeElement.classList.remove('show'),\n\t\t\tcontext\n\t\t);\n\t\tconst dialogTransition$ = hubRunTransition(\n\t\t\tthis._zone,\n\t\t\tthis._dialogEl.nativeElement,\n\t\t\t() => {},\n\t\t\tcontext\n\t\t);\n\n\t\tconst transitions$ = zip(windowTransition$, dialogTransition$);\n\t\ttransitions$.subscribe(() => {\n\t\t\tthis.hidden.next();\n\t\t\tthis.hidden.complete();\n\t\t});\n\n\t\tthis._disableEventHandling();\n\t\tthis._restoreFocus();\n\n\t\treturn transitions$;\n\t}\n\n\tprivate _show() {\n\t\tconst context: TransitionOptions<any> = {\n\t\t\tanimation: this.animation,\n\t\t\trunningTransition: 'continue'\n\t\t};\n\n\t\tconst windowTransition$ = hubRunTransition(\n\t\t\tthis._zone,\n\t\t\tthis._elRef.nativeElement,\n\t\t\t(element: HTMLElement, animation: boolean) => {\n\t\t\t\tif (animation) {\n\t\t\t\t\treflow(element);\n\t\t\t\t}\n\t\t\t\telement.classList.add('show');\n\t\t\t},\n\t\t\tcontext\n\t\t);\n\t\tconst dialogTransition$ = hubRunTransition(\n\t\t\tthis._zone,\n\t\t\tthis._dialogEl.nativeElement,\n\t\t\t() => {},\n\t\t\tcontext\n\t\t);\n\n\t\tzip(windowTransition$, dialogTransition$).subscribe(() => {\n\t\t\tthis.shown.next();\n\t\t\tthis.shown.complete();\n\t\t});\n\n\t\tthis._enableEventHandling();\n\t\tthis._setFocus();\n\t}\n\n\tprivate _enableEventHandling() {\n\t\tconst { nativeElement } = this._elRef;\n\t\tthis._zone.runOutsideAngular(() => {\n\t\t\tfromEvent<KeyboardEvent>(nativeElement, 'keydown')\n\t\t\t\t.pipe(\n\t\t\t\t\ttakeUntil(this._closed$),\n\t\t\t\t\tfilter((e) => e.key === 'Escape')\n\t\t\t\t)\n\t\t\t\t.subscribe((event) => {\n\t\t\t\t\tif (this.keyboard) {\n\t\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\t\tif (!event.defaultPrevented) {\n\t\t\t\t\t\t\t\tthis._zone.run(() =>\n\t\t\t\t\t\t\t\t\tthis.dismiss(ModalDismissReasons.ESC)\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (this.backdrop === 'static') {\n\t\t\t\t\t\tthis._bumpBackdrop();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t// We're listening to 'mousedown' and 'mouseup' to prevent modal from closing when pressing the mouse\n\t\t\t// inside the modal dialog and releasing it outside\n\t\t\tlet preventClose = false;\n\t\t\tfromEvent<MouseEvent>(this._dialogEl.nativeElement, 'mousedown')\n\t\t\t\t.pipe(\n\t\t\t\t\ttakeUntil(this._closed$),\n\t\t\t\t\ttap(() => (preventClose = false)),\n\t\t\t\t\tswitchMap(() =>\n\t\t\t\t\t\tfromEvent<MouseEvent>(nativeElement, 'mouseup').pipe(\n\t\t\t\t\t\t\ttakeUntil(this._closed$),\n\t\t\t\t\t\t\ttake(1)\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t\tfilter(({ target }) => nativeElement === target)\n\t\t\t\t)\n\t\t\t\t.subscribe(() => {\n\t\t\t\t\tpreventClose = true;\n\t\t\t\t});\n\n\t\t\t// We're listening to 'click' to dismiss modal on modal window click, except when:\n\t\t\t// 1. clicking on modal dialog itself\n\t\t\t// 2. closing was prevented by mousedown/up handlers\n\t\t\t// 3. clicking on scrollbar when the viewport is too small and modal doesn't fit (click is not triggered at all)\n\t\t\tfromEvent<MouseEvent>(nativeElement, 'click')\n\t\t\t\t.pipe(takeUntil(this._closed$))\n\t\t\t\t.subscribe(({ target }) => {\n\t\t\t\t\tif (nativeElement === target) {\n\t\t\t\t\t\tif (this.backdrop === 'static') {\n\t\t\t\t\t\t\tthis._bumpBackdrop();\n\t\t\t\t\t\t} else if (this.backdrop === true && !preventClose) {\n\t\t\t\t\t\t\tthis._zone.run(() =>\n\t\t\t\t\t\t\t\tthis.dismiss(ModalDismissReasons.BACKDROP_CLICK)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tpreventClose = false;\n\t\t\t\t});\n\t\t});\n\t}\n\n\tprivate _disableEventHandling() {\n\t\tthis._closed$.next();\n\t}\n\n\tprivate _setFocus() {\n\t\tconst { nativeElement } = this._elRef;\n\t\tif (!nativeElement.contains(document.activeElement)) {\n\t\t\tconst autoFocusable = nativeElement.querySelector(\n\t\t\t\t`[hubAutofocus]`\n\t\t\t) as HTMLElement;\n\t\t\tconst firstFocusable =\n\t\t\t\tgetFocusableBoundaryElements(nativeElement)[0];\n\n\t\t\tconst elementToFocus =\n\t\t\t\tautoFocusable || firstFocusable || nativeElement;\n\t\t\telementToFocus.focus();\n\t\t}\n\t}\n\n\tprivate _restoreFocus() {\n\t\tconst body = this._document.body;\n\t\tconst elWithFocus = this._elWithFocus;\n\n\t\tlet elementToFocus;\n\t\tif (elWithFocus && elWithFocus['focus'] && body.contains(elWithFocus)) {\n\t\t\telementToFocus = elWithFocus;\n\t\t} else {\n\t\t\telementToFocus = body;\n\t\t}\n\t\tthis._zone.runOutsideAngular(() => {\n\t\t\tsetTimeout(() => elementToFocus.focus());\n\t\t\tthis._elWithFocus = null;\n\t\t});\n\t}\n\n\tprivate _bumpBackdrop() {\n\t\tif (this.backdrop === 'static') {\n\t\t\thubRunTransition(\n\t\t\t\tthis._zone,\n\t\t\t\tthis._elRef.nativeElement,\n\t\t\t\t({ classList }) => {\n\t\t\t\t\tclassList.add('modal-static');\n\t\t\t\t\treturn () => classList.remove('modal-static');\n\t\t\t\t},\n\t\t\t\t{ animation: this.animation, runningTransition: 'continue' }\n\t\t\t);\n\t\t}\n\t}\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n\tApplicationRef,\n\tComponentRef,\n\tcreateComponent,\n\tEnvironmentInjector,\n\tEventEmitter,\n\tinject,\n\tInjectable,\n\tInjector,\n\tNgZone,\n\tTemplateRef,\n\tType\n} from '@angular/core';\nimport {\n\tContentRef,\n\thubFocusTrap,\n\tisDefined,\n\tisString,\n\tScrollBar\n} from 'ng-hub-ui-utils';\nimport { Subject } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { HubModalBackdrop } from './modal-backdrop';\nimport { HubModalOptions, HubModalUpdatableOptions } from './modal-config';\nimport { HubActiveModal, HubModalRef } from './modal-ref';\nimport { HubModalWindow } from './modal-window';\n\n@Injectable({ providedIn: 'root' })\nexport class HubModalStack {\n\tprivate _applicationRef = inject(ApplicationRef);\n\tprivate _injector = inject(Injector);\n\tprivate _environmentInjector = inject(EnvironmentInjector);\n\tprivate _document = inject(DOCUMENT);\n\tprivate _scrollBar = inject(ScrollBar);\n\n\tprivate _activeWindowCmptHasChanged = new Subject<void>();\n\tprivate _ariaHiddenValues: Map<Element, string | null> = new Map();\n\tprivate _scrollBarRestoreFn: null | (() => void) = null;\n\tprivate _modalRefs: HubModalRef[] = [];\n\tprivate _windowCmpts: ComponentRef<HubModalWindow>[] = [];\n\tprivate _activeInstances: EventEmitter<HubModalRef[]> = new EventEmitter();\n\n\tconstructor() {\n\t\tconst ngZone = inject(NgZone);\n\n\t\t// Trap focus on active WindowCmpt\n\t\tthis._activeWindowCmptHasChanged.subscribe(() => {\n\t\t\tif (this._windowCmpts.length) {\n\t\t\t\tconst activeWindowCmpt =\n\t\t\t\t\tthis._windowCmpts[this._windowCmpts.length - 1];\n\t\t\t\thubFocusTrap(\n\t\t\t\t\tngZone,\n\t\t\t\t\tactiveWindowCmpt.location.nativeElement,\n\t\t\t\t\tthis._activeWindowCmptHasChanged\n\t\t\t\t);\n\t\t\t\tthis._revertAriaHidden();\n\t\t\t\tthis._setAriaHidden(activeWindowCmpt.location.nativeElement);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _restoreScrollBar() {\n\t\tconst scrollBarRestoreFn = this._scrollBarRestoreFn;\n\t\tif (scrollBarRestoreFn) {\n\t\t\tthis._scrollBarRestoreFn = null;\n\t\t\tscrollBarRestoreFn();\n\t\t}\n\t}\n\n\tprivate _hideScrollBar() {\n\t\tif (!this._scrollBarRestoreFn) {\n\t\t\tthis._scrollBarRestoreFn = this._scrollBar.hide();\n\t\t}\n\t}\n\n\topen(\n\t\tcontentInjector: Injector,\n\t\tcontent: any,\n\t\toptions: HubModalOptions\n\t): HubModalRef {\n\t\tconst containerEl =\n\t\t\toptions.container instanceof HTMLElement\n\t\t\t\t? options.container\n\t\t\t\t: isDefined(options.container)\n\t\t\t\t? this._document.querySelector(options.container!)\n\t\t\t\t: this._document.body;\n\n\t\tif (!containerEl) {\n\t\t\tthrow new Error(\n\t\t\t\t`The specified modal container \"${\n\t\t\t\t\toptions.container || 'body'\n\t\t\t\t}\" was not found in the DOM.`\n\t\t\t);\n\t\t}\n\n\t\tthis._hideScrollBar();\n\n\t\tconst activeModal = new HubActiveModal();\n\n\t\tcontentInjector = options.injector || contentInjector;\n\t\tconst environmentInjector =\n\t\t\tcontentInjector.get(EnvironmentInjector, null) ||\n\t\t\tthis._environmentInjector;\n\t\tconst contentRef = this._getContentRef(\n\t\t\tcontentInjector,\n\t\t\tenvironmentInjector,\n\t\t\tcontent,\n\t\t\tactiveModal,\n\t\t\toptions\n\t\t);\n\n\t\tconst backdropCmptRef: ComponentRef<HubModalBackdrop> | undefined =\n\t\t\toptions.backdrop !== false\n\t\t\t\t? this._attachBackdrop(containerEl)\n\t\t\t\t: undefined;\n\t\tconst windowCmptRef: ComponentRef<HubModalWindow> =\n\t\t\tthis._attachWindowComponent(containerEl, contentRef.nodes, options);\n\t\tconst hubModalRef: HubModalRef = new HubModalRef(\n\t\t\twindowCmptRef,\n\t\t\tcontentRef,\n\t\t\tbackdropCmptRef,\n\t\t\toptions.beforeDismiss\n\t\t);\n\n\t\tthis._registerModalRef(hubModalRef);\n\t\tthis._registerWindowCmpt(windowCmptRef);\n\n\t\t// We have to cleanup DOM after the last modal when BOTH 'hidden' was emitted and 'result' promise was resolved:\n\t\t// - with animations OFF, 'hidden' emits synchronously, then 'result' is resolved asynchronously\n\t\t// - with animations ON, 'result' is resolved asynchronously, then 'hidden' emits asynchronously\n\t\thubModalRef.hidden.pipe(take(1)).subscribe(() =>\n\t\t\tPromise.resolve(true).then(() => {\n\t\t\t\tif (!this._modalRefs.length) {\n\t\t\t\t\tthis._document.body.classList.remove('modal-open');\n\t\t\t\t\tthis._restoreScrollBar();\n\t\t\t\t\tthis._revertAriaHidden();\n\t\t\t\t}\n\t\t\t})\n\t\t);\n\n\t\tactiveModal.close = (result: any) => {\n\t\t\thubModalRef.close(result);\n\t\t};\n\t\tactiveModal.dismiss = (reason: any) => {\n\t\t\thubModalRef.dismiss(reason);\n\t\t};\n\n\t\tactiveModal.update = (options: HubModalUpdatableOptions) => {\n\t\t\thubModalRef.update(options);\n\t\t};\n\n\t\thubModalRef.update(options);\n\t\tif (this._modalRefs.length === 1) {\n\t\t\tthis._document.body.classList.add('modal-open');\n\t\t}\n\n\t\tif (backdropCmptRef && backdropCmptRef.instance) {\n\t\t\tbackdropCmptRef.changeDetectorRef.detectChanges();\n\t\t}\n\t\twindowCmptRef.changeDetectorRef.detectChanges();\n\t\treturn hubModalRef;\n\t}\n\n\tget activeInstances() {\n\t\treturn this._activeInstances;\n\t}\n\n\tdismissAll(reason?: any) {\n\t\tthis._modalRefs.forEach((hubModalRef) => hubModalRef.dismiss(reason));\n\t}\n\n\thasOpenModals(): boolean {\n\t\treturn this._modalRefs.length > 0;\n\t}\n\n\tprivate _attachBackdrop(\n\t\tcontainerEl: Element\n\t): ComponentRef<HubModalBackdrop> {\n\t\tlet backdropCmptRef = createComponent(HubModalBackdrop, {\n\t\t\tenvironmentInjector: this._applicationRef.injector,\n\t\t\telementInjector: this._injector\n\t\t});\n\t\tthis._applicationRef.attachView(backdropCmptRef.hostView);\n\t\tcontainerEl.appendChild(backdropCmptRef.location.nativeElement);\n\t\treturn backdropCmptRef;\n\t}\n\n\tprivate _attachWindowComponent(\n\t\tcontainerEl: Element,\n\t\t[headerNodes, bodyNodes, footerNodes]: Node[][],\n\t\toptions: HubModalOptions\n\t): ComponentRef<HubModalWindow> {\n\t\tconst singleContent =\n\t\t\t!options.headerSelector && !options.footerSelector;\n\t\tlet windowCmptRef = createComponent(HubModalWindow, {\n\t\t\tenvironmentInjector: this._applicationRef.injector,\n\t\t\telementInjector: this._injector,\n\t\t\tprojectableNodes: singleContent\n\t\t\t\t? [bodyNodes]\n\t\t\t\t: [[], headerNodes, bodyNodes, footerNodes]\n\t\t});\n\n\t\tObject.assign(windowCmptRef.instance, { singleContent });\n\n\t\tthis._applicationRef.attachView(windowCmptRef.hostView);\n\t\tcontainerEl.appendChild(windowCmptRef.location.nativeElement);\n\t\treturn windowCmptRef;\n\t}\n\n\tprivate _getContentRef(\n\t\tcontentInjector: Injector,\n\t\tenvironmentInjector: EnvironmentInjector,\n\t\tcontent: Type<any> | TemplateRef<any> | string,\n\t\tactiveModal: HubActiveModal,\n\t\toptions: HubModalOptions\n\t): ContentRef {\n\t\tif (!content) {\n\t\t\treturn new ContentRef([]);\n\t\t} else if (content instanceof TemplateRef) {\n\t\t\treturn this._createFromTemplateRef(content, activeModal, options);\n\t\t} else if (isString(content)) {\n\t\t\treturn this._createFromString(content);\n\t\t} else {\n\t\t\treturn this._createFromComponent(\n\t\t\t\tcontentInjector,\n\t\t\t\tenvironmentInjector,\n\t\t\t\tcontent,\n\t\t\t\tactiveModal,\n\t\t\t\toptions\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate _createFromTemplateRef(\n\t\ttemplateRef: TemplateRef<any>,\n\t\tactiveModal: HubActiveModal,\n\t\toptions: HubModalOptions\n\t): ContentRef {\n\t\tconst context = {\n\t\t\t$implicit: activeModal,\n\t\t\tclose(result) {\n\t\t\t\tactiveModal.close(result);\n\t\t\t},\n\t\t\tdismiss(reason) {\n\t\t\t\tactiveModal.dismiss(reason);\n\t\t\t}\n\t\t};\n\t\tconst viewRef = templateRef.createEmbeddedView(context);\n\t\tthis._applicationRef.attachView(viewRef);\n\n\t\tconst containerNode = document.createElement('ng-container');\n\t\tcontainerNode.append(...viewRef.rootNodes);\n\n\t\tthis._addDismissEventListener(containerNode, context as any, options);\n\t\tthis._addCloseEventListener(containerNode, context as any, options);\n\n\t\treturn new ContentRef(\n\t\t\t[\n\t\t\t\toptions.headerSelector\n\t\t\t\t\t? extractAndRemoveNodesBySelector(\n\t\t\t\t\t\t\tcontainerNode,\n\t\t\t\t\t\t\toptions.headerSelector\n\t\t\t\t\t )\n\t\t\t\t\t: [],\n\t\t\t\tcontainerNode.childNodes as any,\n\t\t\t\toptions.footerSelector\n\t\t\t\t\t? extractAndRemoveNodesBySelector(\n\t\t\t\t\t\t\tcontainerNode,\n\t\t\t\t\t\t\toptions.footerSelector\n\t\t\t\t\t )\n\t\t\t\t\t: []\n\t\t\t],\n\t\t\tviewRef\n\t\t);\n\t}\n\n\tprivate _createFromString(content: string): ContentRef {\n\t\tconst component = this._document.createTextNode(`${content}`);\n\t\treturn new ContentRef([[component]]);\n\t}\n\n\tprivate _createFromComponent(\n\t\tcontentInjector: Injector,\n\t\tenvironmentInjector: EnvironmentInjector,\n\t\tcomponentType: Type<any>,\n\t\tcontext: HubActiveModal,\n\t\toptions: HubModalOptions\n\t): ContentRef {\n\t\tconst elementInjector = Injector.create({\n\t\t\tproviders: [{ provide: HubActiveModal, useValue: context }],\n\t\t\tparent: contentInjector\n\t\t});\n\t\tconst componentRef = createComponent(componentType, {\n\t\t\tenvironmentInjector,\n\t\t\telementInjector\n\t\t});\n\n\t\tif (options.data) {\n\t\t\tObject.assign(componentRef.instance, {\n\t\t\t\tdata: options.data\n\t\t\t});\n\t\t}\n\n\t\tconst componentNativeEl: HTMLElement =\n\t\t\tcomponentRef.location.nativeElement;\n\t\tif (options.scrollable) {\n\t\t\tcomponentNativeEl.classList.add('component-host-scrollable');\n\t\t}\n\t\tthis._applicationRef.attachView(componentRef.hostView);\n\n\t\tthis._addDismissEventListener(componentNativeEl, context, options);\n\t\tthis._addCloseEventListener(componentNativeEl, context as any, options);\n\n\t\t// FIXME: we should here get rid of the component nativeElement\n\t\t// and use `[Array.from(componentNativeEl.childNodes)]` instead and remove the above CSS class.\n\t\treturn new ContentRef(\n\t\t\t[\n\t\t\t\toptions.headerSelector\n\t\t\t\t\t? extractAndRemoveNodesBySelector(\n\t\t\t\t\t\t\tcomponentNativeEl,\n\t\t\t\t\t\t\toptions.headerSelector\n\t\t\t\t\t )\n\t\t\t\t\t: [],\n\t\t\t\tcomponentNativeEl.childNodes as any,\n\t\t\t\toptions.footerSelector\n\t\t\t\t\t? extractAndRemoveNodesBySelector(\n\t\t\t\t\t\t\tcomponentNativeEl,\n\t\t\t\t\t\t\toptions.footerSelector\n\t\t\t\t\t )\n\t\t\t\t\t: []\n\t\t\t],\n\t\t\tcomponentRef.hostView,\n\t\t\tcomponentRef\n\t\t);\n\t}\n\n\tprivate _setAriaHidden(element: Element) {\n\t\tconst parent = element.parentElement;\n\t\tif (parent && element !== this._document.body) {\n\t\t\tArray.from(parent.children).forEach((sibling) => {\n\t\t\t\tif (sibling !== element && sibling.nodeName !== 'SCRIPT') {\n\t\t\t\t\tthis._ariaHiddenValues.set(\n\t\t\t\t\t\tsibling,\n\t\t\t\t\t\tsibling.getAttribute('aria-hidden')\n\t\t\t\t\t);\n\t\t\t\t\tsibling.setAttribute('aria-hidden', 'true');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis._setAriaHidden(parent);\n\t\t}\n\t}\n\n\tprivate _revertAriaHidden() {\n\t\tthis._ariaHiddenValues.forEach((value, element) => {\n\t\t\tif (value) {\n\t\t\t\telement.setAttribute('aria-hidden', value);\n\t\t\t} else {\n\t\t\t\telement.removeAttribute('aria-hidden');\n\t\t\t}\n\t\t});\n\t\tthis._ariaHiddenValues.clear();\n\t}\n\n\tprivate _registerModalRef(hubModalRef: HubModalRef) {\n\t\tconst unregisterModalRef = () => {\n\t\t\tconst index = this._modalRefs.indexOf(hubModalRef);\n\t\t\tif (index > -1) {\n\t\t\t\tthis._modalRefs.splice(index, 1);\n\t\t\t\tthis._activeInstances.emit(this._modalRefs);\n\t\t\t}\n\t\t};\n\t\tthis._modalRefs.push(hubModalRef);\n\t\tthis._activeInstances.emit(this._modalRefs);\n\t\thubModalRef.result.then(unregisterModalRef, unregisterModalRef);\n\t}\n\n\tprivate _registerWindowCmpt(hubWindowCmpt: ComponentRef<HubModalWindow>) {\n\t\tthis._windowCmpts.push(hubWindowCmpt);\n\t\tthis._activeWindowCmptHasChanged.next();\n\n\t\thubWindowCmpt.onDestroy(() => {\n\t\t\tconst index = this._windowCmpts.indexOf(hubWindowCmpt);\n\t\t\tif (index > -1) {\n\t\t\t\tthis._windowCmpts.splice(index, 1);\n\t\t\t\tthis._activeWindowCmptHasChanged.next();\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Attaches click event listeners to elements within a container based on a specified dismiss selector to dismiss a modal.\n\t *\n\t * @param {HTMLElement} container - The `container` parameter is an HTMLElement that represents the DOM element which contains the\n\t * modal content.\n\t * @param {HubActiveModal} context - The `context` parameter in the `_addDismissEventListener` function refers to the active modal\n\t * instance that is being displayed. It is used to call the `dismiss` method on the modal instance when a dismissible element is\n\t * clicked.\n\t * @param {HubModalOptions} options - The `options` parameter is an object that contains configuration options for the modal. It\n\t * may include properties such as `dismissSelector`, which is used to specify a CSS selector for elements that, when clicked, will\n\t * dismiss the modal by calling the `dismiss` method on the `context` object.\n\t */\n\tprivate _addDismissEventListener(\n\t\tcontainer: HTMLElement,\n\t\tcontext: HubActiveModal,\n\t\toptions: HubModalOptions\n\t) {\n\t\tif (options.dismissSelector) {\n\t\t\tconst dismissaable: NodeListOf<Element> =\n\t\t\t\tcontainer.querySelectorAll(options.dismissSelector);\n\t\t\tfor (const item of Array.from(dismissaable)) {\n\t\t\t\titem.addEventListener('click', () => context.dismiss());\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Attaches click event listeners to elements matching a specified selector to close a modal window.\n\t *\n\t * @param {HTMLElement} container - The `container` parameter is an HTMLElement that represents the DOM element which contains the\n\t * modal content.\n\t * @param {HubActiveModal} context - The `context` parameter in the `_addCloseEventListener` function is of type `HubActiveModal`.\n\t * It is used to reference the active modal instance within the function and call the `close()` method on it when a close event is\n\t * triggered.\n\t * @param {HubModalOptions} options - The `options` parameter is an object that contains configuration options for the modal. It\n\t * may include properties such as `closeSelector`, which is used to specify the selector for elements that can trigger the modal\n\t * to close when clicked.\n\t */\n\tprivate _addCloseEventListener(\n\t\tcontainer: HTMLElement,\n\t\tcontext: HubActiveModal,\n\t\toptions: HubModalOptions\n\t) {\n\t\tif (options.closeSelector) {\n\t\t\tconst dismissaable: NodeListOf<Element> =\n\t\t\t\tcontainer.querySelectorAll(options.closeSelector);\n\t\t\tfor (const item of Array.from(dismissaable)) {\n\t\t\t\tconst clickEventListeners = item.addEventListener('click', () =>\n\t\t\t\t\tcontext.close()\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Extracts child nodes matching a selector from a container element, removes those nodes from the DOM, and returns them as an array.\n *\n * @param {HTMLElement} container - The `container` parameter in the `extractAndRemoveNodesBySelector` function is an HTMLElement\n * that represents the parent element within which we want to search for nodes matching a specific selector and remove them.\n * @param {string} selector - The `selector` parameter in the `extractAndRemoveNodesBySelector` function is a string that\n * represents a CSS selector. This selector is used to query and select specific elements within the `container` HTMLElement.\n *\n * @returns An array of nodes that were extracted from the container element based on the provided selector, and then removes those\n * nodes from the DOM.\n */\nfunction extractAndRemoveNodesBySelector(\n\tcontainer: HTMLElement,\n\tselector: string\n): Array<Node> {\n\tlet containerNodes = container.querySelectorAll(selector);\n\n\tconst nodes = Array.from(containerNodes).reduce((acc, c) => {\n\t\treturn [...acc, ...Array.from(c.childNodes)];\n\t}, [] as Array<Node>);\n\n\t// Selecciona los nodos dentro del contenedor que coincidan con el selector\n\tconst nodesToRemove = container.querySelectorAll<HTMLElement>(selector);\n\n\t// Convertir NodeList a array y eliminar cada nodo del DOM\n\tArray.from(nodesToRemove).forEach((node) => node.remove());\n\treturn nodes;\n}\n","import { inject, Injectable, Injector } from '@angular/core';\n\nimport { HubModalConfig, HubModalOptions } from './modal-config';\nimport { HubModalRef } from './modal-ref';\nimport { HubModalStack } from './modal-stack';\n\n/**\n * A service for opening modal windows.\n *\n * Creating a modal is straightforward: create a component or a template and pass it as an argument to\n * the `.open()` method.\n */\n@Injectable({ providedIn: 'root' })\nexport class HubModal {\n\tprivate _injector = inject(Injector);\n\tprivate _modalStack = inject(HubModalStack);\n\tprivate _config = inject(HubModalConfig);\n\n\t/**\n\t * Opens a new modal window with the specified content and supplied options.\n\t *\n\t * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\n\t * then instances of those components can be injected with an instance of the `HubActiveModal` class. You can then\n\t * use `HubActiveModal` methods to close / dismiss modals from \"inside\" of your component.\n\t *\n\t * Also see the [`HubModalOptions`](#/components/modal/api#HubModalOptions) for the list of supported options.\n\t */\n\topen(content: any, options: HubModalOptions = {}): HubModalRef {\n\t\tconst combinedOptions = { ...this._config, animation: this._config.animation, ...options };\n\t\treturn this._modalStack.open(this._injector, content, combinedOptions);\n\t}\n\n\t/**\n\t * Returns an observable that holds the active modal instances.\n\t */\n\tget activeInstances() {\n\t\treturn this._modalStack.activeInstances;\n\t}\n\n\t/**\n\t * Dismisses all currently displayed modal windows with the supplied reason.\n\t *\n\t * @since 3.1.0\n\t */\n\tdismissAll(reason?: any) {\n\t\tthis._modalStack.dismissAll(reason);\n\t}\n\n\t/**\n\t * Indicates if there are currently any open modal windows in the application.\n\t *\n\t * @since 3.3.0\n\t */\n\thasOpenModals(): boolean {\n\t\treturn this._modalStack.hasOpenModals();\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { HubModal } from './modal';\nexport { HubModal } from './modal';\nexport {\n\tHubModalConfig,\n\tHubModalOptions,\n\tHubModalUpdatableOptions\n} from './modal-config';\nexport { ModalDismissReasons } from './modal-dismiss-reasons';\nexport { HubActiveModal, HubModalRef } from './modal-ref';\n\n@NgModule({ providers: [HubModal] })\nexport class HubModalModule {}\n","/*\n * Public API Surface of modal\n */\nexport {\n\tModalDismissReasons,\n\tHubActiveModal,\n\tHubModal,\n\tHubModalConfig,\n\tHubModalModule,\n\tHubModalOptions,\n\tHubModalUpdatableOptions,\n\tHubModalRef\n} from './lib/modal.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;AA6KA;;;;;;;AAOG;MAEU,cAAc,CAAA;AAD3B,IAAA,WAAA,GAAA;QAOC,IAAQ,CAAA,QAAA,GAAuB,IAAI,CAAC;QAIpC,IAAU,CAAA,UAAA,GAAyD,KAAK,CAAC;QAEzE,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;QAQhB,IAAe,CAAA,eAAA,GAAW,wBAAwB,CAAC;QACnD,IAAa,CAAA,aAAA,GAAW,sBAAsB,CAAC;AAS/C,KAAA;AANA,IAAA,IAAI,SAAS,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,iCAAiC;KAC/D;IACD,IAAI,SAAS,CAAC,SAAkB,EAAA;AAC/B,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;KAC5B;8GA7BW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAd,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADD,MAAM,EAAA,CAAA,CAAA,EAAA;;2FACnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;MC3JrB,gBAAgB,CAAA;AAb7B,IAAA,WAAA,GAAA;AAcS,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,aAA4B,CAAC;AACjE,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAmC/B,KAAA;IA9BA,QAAQ,GAAA;QACP,IAAI,CAAC,KAAK,CAAC,QAAQ;AACjB,aAAA,YAAY,EAAE;AACd,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACb,SAAS,CAAC,MAAK;AACf,YAAA,gBAAgB,CACf,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,cAAc,EACnB,CAAC,OAAoB,EAAE,SAAkB,KAAI;AAC5C,gBAAA,IAAI,SAAS,EAAE;oBACd,MAAM,CAAC,OAAO,CAAC,CAAC;AAChB,iBAAA;AACD,gBAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC/B,aAAC,EACD,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAC5D,CAAC;AACH,SAAC,CAAC,CAAC;KACJ;IAED,IAAI,GAAA;QACH,OAAO,gBAAgB,CACtB,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,cAAc,EACnB,CAAC,EAAE,SAAS,EAAE,KAAK,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAC3C;YACC,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,YAAA,iBAAiB,EAAE,MAAM;AACzB,SAAA,CACD,CAAC;KACF;8GApCW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,oVATlB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FASA,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAb5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;oBAChB,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,IAAI,EAAE;AACL,wBAAA,SAAS,EACR,+DAA+D;AAChE,wBAAA,cAAc,EAAE,YAAY;AAC5B,wBAAA,cAAc,EAAE,WAAW;AAC3B,wBAAA,KAAK,EAAE,eAAe;AACtB,qBAAA;AACD,iBAAA,CAAA;8BAKS,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;;;ACvBP;;;;;AAKG;MACU,cAAc,CAAA;AAC1B;;;;AAIG;IACH,MAAM,CAAC,OAAiC,EAAA,GAAU;AAClD;;;;AAIG;IACH,KAAK,CAAC,MAAY,EAAA,GAAU;AAE5B;;;;AAIG;IACH,OAAO,CAAC,MAAY,EAAA,GAAU;AAC9B,CAAA;AAED,MAAM,iBAAiB,GAAa;IACnC,WAAW;IACX,gBAAgB;IAChB,iBAAiB;IACjB,UAAU;IACV,UAAU;IACV,YAAY;IACZ,UAAU;IACV,YAAY;IACZ,MAAM;IACN,aAAa;IACb,kBAAkB;CAClB,CAAC;AACF,MAAM,mBAAmB,GAAa,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;AAErE;;AAEG;MACU,WAAW,CAAA;IAOf,mBAAmB,CAC1B,cAA8B,EAC9B,OAAwB,EAAA;AAExB,QAAA,iBAAiB,CAAC,OAAO,CAAC,CAAC,UAAkB,KAAI;AAChD,YAAA,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE;gBACnC,cAAc,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACjD,aAAA;AACF,SAAC,CAAC,CAAC;KACH;IAEO,qBAAqB,CAC5B,gBAAkC,EAClC,OAAwB,EAAA;AAExB,QAAA,mBAAmB,CAAC,OAAO,CAAC,CAAC,UAAkB,KAAI;AAClD,YAAA,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE;gBACnC,gBAAgB,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACnD,aAAA;AACF,SAAC,CAAC,CAAC;KACH;AAED;;;;AAIG;AACH,IAAA,MAAM,CAAC,OAAiC,EAAA;QACvC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChE,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;YAC5D,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACpE,SAAA;KACD;AAED;;;;AAIG;AACH,IAAA,IAAI,iBAAiB,GAAA;QACpB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;AACtD,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC;AAC9C,SAAA;KACD;AAOD;;;;;;AAMG;AACH,IAAA,IAAI,MAAM,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;KACjE;AAED;;;;;;;AAOG;AACH,IAAA,IAAI,SAAS,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;KACpE;AAED;;;;;;;AAOG;AACH,IAAA,IAAI,MAAM,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;KACnC;AAED;;;;;;;;AAQG;AACH,IAAA,IAAI,KAAK,GAAA;QACR,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;KACzD;AAED,IAAA,WAAA,CACS,cAA4C,EAC5C,WAAuB,EACvB,gBAAiD,EACjD,cAAiD,EAAA;QAHjD,IAAc,CAAA,cAAA,GAAd,cAAc,CAA8B;QAC5C,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;QACvB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAiC;QACjD,IAAc,CAAA,cAAA,GAAd,cAAc,CAAmC;AA5GlD,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAO,CAAC;AAC7B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAO,CAAC;AAChC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAQ,CAAC;QA4GrC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,MAAW,KAAI;AAC9D,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACtB,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AAC7C,YAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AACxB,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACvB,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAK,GAAG,CAAC,CAAC;KACjC;AAED;;;;AAIG;AACH,IAAA,KAAK,CAAC,MAAY,EAAA;QACjB,IAAI,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1B,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACtB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC5B,SAAA;KACD;AAEO,IAAA,QAAQ,CAAC,MAAY,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACrB,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC5B;AAED;;;;AAIG;AACH,IAAA,OAAO,CAAC,MAAY,EAAA;QACnB,IAAI,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACzB,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACtB,aAAA;AAAM,iBAAA;AACN,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACtC,gBAAA,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE;AACvB,oBAAA,OAAO,CAAC,IAAI,CACX,CAAC,MAAM,KAAI;wBACV,IAAI,MAAM,KAAK,KAAK,EAAE;AACrB,4BAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACtB,yBAAA;AACF,qBAAC,EACD,MAAO,GAAC,CACR,CAAC;AACF,iBAAA;qBAAM,IAAI,OAAO,KAAK,KAAK,EAAE;AAC7B,oBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACtB,iBAAA;AACD,aAAA;AACD,SAAA;KACD;IAEO,oBAAoB,GAAA;QAC3B,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC9D,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,gBAAgB;cAC9C,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE;AACvC,cAAE,EAAE,CAAC,SAAS,CAAC,CAAC;;AAGjB,QAAA,iBAAiB,CAAC,SAAS,CAAC,MAAK;YAChC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;AACvD,YAAA,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;AAC9B,YAAA,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAErC,YAAA,IAAI,CAAC,cAAc,GAAQ,IAAI,CAAC;AAChC,YAAA,IAAI,CAAC,WAAW,GAAQ,IAAI,CAAC;AAC9B,SAAC,CAAC,CAAC;;AAGH,QAAA,mBAAmB,CAAC,SAAS,CAAC,MAAK;YAClC,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBAC1B,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AACzD,gBAAA,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACpD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;AAChC,gBAAA,IAAI,CAAC,gBAAgB,GAAQ,IAAI,CAAC;AAClC,aAAA;AACF,SAAC,CAAC,CAAC;;QAGH,GAAG,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,SAAS,CAAC,MAAK;AAC1D,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AACzB,SAAC,CAAC,CAAC;KACH;AACD;;IC/PW,oBAGX;AAHD,CAAA,UAAY,mBAAmB,EAAA;AAC9B,IAAA,mBAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAc,CAAA;AACd,IAAA,mBAAA,CAAA,mBAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG,CAAA;AACJ,CAAC,EAHW,mBAAmB,KAAnB,mBAAmB,GAG9B,EAAA,CAAA,CAAA;;MC4EY,cAAc,CAAA;AAtD3B,IAAA,WAAA,GAAA;AAuDS,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC7B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,EAAC,UAAuB,EAAC,CAAC;AACzC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAEvB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;AAC/B,QAAA,IAAA,CAAA,YAAY,GAAmB,IAAI,CAAC;QAQnC,IAAQ,CAAA,QAAA,GAAqB,IAAI,CAAC;QAGlC,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;AAQN,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;AAErD,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,OAAO,EAAQ,CAAC;AAC5B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,OAAO,EAAQ,CAAC;AA4M7B,KAAA;AA1MA,IAAA,IAAI,eAAe,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI;AAC9B,cAAE,mBAAmB;AACrB,cAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;AAC3B,kBAAE,CAAA,kBAAA,EAAqB,IAAI,CAAC,UAAU,CAAO,KAAA,CAAA;kBAC3C,EAAE,CAAC;KACN;AAED,IAAA,OAAO,CAAC,MAAM,EAAA;AACb,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC/B;IAED,QAAQ,GAAA;QACP,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,QAAQ;AACjB,aAAA,YAAY,EAAE;AACd,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACb,SAAS,CAAC,MAAK;YACf,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,SAAC,CAAC,CAAC;KACJ;IAED,WAAW,GAAA;QACV,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC7B;IAED,IAAI,GAAA;AACH,QAAA,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;AACtC,QAAA,MAAM,OAAO,GAA2B;YACvC,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,YAAA,iBAAiB,EAAE,MAAM;SACzB,CAAC;QAEF,MAAM,iBAAiB,GAAG,gBAAgB,CACzC,IAAI,CAAC,KAAK,EACV,aAAa,EACb,MAAM,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAC5C,OAAO,CACP,CAAC;QACF,MAAM,iBAAiB,GAAG,gBAAgB,CACzC,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,SAAS,CAAC,aAAa,EAC5B,SAAQ,EACR,OAAO,CACP,CAAC;QAEF,MAAM,YAAY,GAAG,GAAG,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;AAC/D,QAAA,YAAY,CAAC,SAAS,CAAC,MAAK;AAC3B,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACnB,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;AACxB,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,aAAa,EAAE,CAAC;AAErB,QAAA,OAAO,YAAY,CAAC;KACpB;IAEO,KAAK,GAAA;AACZ,QAAA,MAAM,OAAO,GAA2B;YACvC,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,YAAA,iBAAiB,EAAE,UAAU;SAC7B,CAAC;AAEF,QAAA,MAAM,iBAAiB,GAAG,gBAAgB,CACzC,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,MAAM,CAAC,aAAa,EACzB,CAAC,OAAoB,EAAE,SAAkB,KAAI;AAC5C,YAAA,IAAI,SAAS,EAAE;gBACd,MAAM,CAAC,OAAO,CAAC,CAAC;AAChB,aAAA;AACD,YAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;SAC9B,EACD,OAAO,CACP,CAAC;QACF,MAAM,iBAAiB,GAAG,gBAAgB,CACzC,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,SAAS,CAAC,aAAa,EAC5B,SAAQ,EACR,OAAO,CACP,CAAC;QAEF,GAAG,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,SAAS,CAAC,MAAK;AACxD,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AAClB,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;AACvB,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;KACjB;IAEO,oBAAoB,GAAA;AAC3B,QAAA,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;AACtC,QAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAK;AACjC,YAAA,SAAS,CAAgB,aAAa,EAAE,SAAS,CAAC;iBAChD,IAAI,CACJ,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EACxB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,CACjC;AACA,iBAAA,SAAS,CAAC,CAAC,KAAK,KAAI;gBACpB,IAAI,IAAI,CAAC,QAAQ,EAAE;oBAClB,qBAAqB,CAAC,MAAK;AAC1B,wBAAA,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;AAC5B,4BAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MACd,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CACrC,CAAC;AACF,yBAAA;AACF,qBAAC,CAAC,CAAC;AACH,iBAAA;AAAM,qBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;oBACtC,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,iBAAA;AACF,aAAC,CAAC,CAAC;;;YAIJ,IAAI,YAAY,GAAG,KAAK,CAAC;YACzB,SAAS,CAAa,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,WAAW,CAAC;AAC9D,iBAAA,IAAI,CACJ,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EACxB,GAAG,CAAC,OAAO,YAAY,GAAG,KAAK,CAAC,CAAC,EACjC,SAAS,CAAC,MACT,SAAS,CAAa,aAAa,EAAE,SAAS,CAAC,CAAC,IAAI,CACnD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EACxB,IAAI,CAAC,CAAC,CAAC,CACP,CACD,EACD,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,aAAa,KAAK,MAAM,CAAC,CAChD;iBACA,SAAS,CAAC,MAAK;gBACf,YAAY,GAAG,IAAI,CAAC;AACrB,aAAC,CAAC,CAAC;;;;;AAMJ,YAAA,SAAS,CAAa,aAAa,EAAE,OAAO,CAAC;AAC3C,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,iBAAA,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,KAAI;gBACzB,IAAI,aAAa,KAAK,MAAM,EAAE;AAC7B,oBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;wBAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,qBAAA;yBAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE;AACnD,wBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MACd,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAChD,CAAC;AACF,qBAAA;AACD,iBAAA;gBAED,YAAY,GAAG,KAAK,CAAC;AACtB,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACH;IAEO,qBAAqB,GAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACrB;IAEO,SAAS,GAAA;AAChB,QAAA,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;YACpD,MAAM,aAAa,GAAG,aAAa,CAAC,aAAa,CAChD,CAAA,cAAA,CAAgB,CACD,CAAC;YACjB,MAAM,cAAc,GACnB,4BAA4B,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhD,YAAA,MAAM,cAAc,GACnB,aAAa,IAAI,cAAc,IAAI,aAAa,CAAC;YAClD,cAAc,CAAC,KAAK,EAAE,CAAC;AACvB,SAAA;KACD;IAEO,aAAa,GAAA;AACpB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AACjC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;AAEtC,QAAA,IAAI,cAAc,CAAC;AACnB,QAAA,IAAI,WAAW,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YACtE,cAAc,GAAG,WAAW,CAAC;AAC7B,SAAA;AAAM,aAAA;YACN,cAAc,GAAG,IAAI,CAAC;AACtB,SAAA;AACD,QAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAK;YACjC,UAAU,CAAC,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC;AACzC,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC1B,SAAC,CAAC,CAAC;KACH;IAEO,aAAa,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAC/B,YAAA,gBAAgB,CACf,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,MAAM,CAAC,aAAa,EACzB,CAAC,EAAE,SAAS,EAAE,KAAI;AACjB,gBAAA,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBAC9B,OAAO,MAAM,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAC/C,aAAC,EACD,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAC5D,CAAC;AACF,SAAA;KACD;8GAvOW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAzChB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,gEAAA,EAAA,YAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,mGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA/CS,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAmDF,cAAc,EAAA,UAAA,EAAA,CAAA;kBAtD1B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAChB,IAAI,EAAA,OAAA,EACP,CAAC,IAAI,CAAC,EACT,IAAA,EAAA;AACL,wBAAA,SAAS,EAAE,0DAA0D;AACrE,wBAAA,cAAc,EAAE,WAAW;AAC3B,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,QAAQ,EAAE,IAAI;AACd,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,wBAAwB,EAAE,gBAAgB;AAC1C,wBAAA,yBAAyB,EAAE,iBAAiB;qBAC5C,EACS,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqCT,EACc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,MAAA,EAAA,CAAA,mGAAA,CAAA,EAAA,CAAA;8BAY7B,SAAS,EAAA,CAAA;sBADhB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAG5B,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBAIa,YAAY,EAAA,CAAA;sBAA9B,MAAM;uBAAC,SAAS,CAAA;;;MC3EL,aAAa,CAAA;AAczB,IAAA,WAAA,GAAA;AAbQ,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACzC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC7B,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;AACnD,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC7B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAE/B,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,OAAO,EAAQ,CAAC;AAClD,QAAA,IAAA,CAAA,iBAAiB,GAAgC,IAAI,GAAG,EAAE,CAAC;QAC3D,IAAmB,CAAA,mBAAA,GAAwB,IAAI,CAAC;QAChD,IAAU,CAAA,UAAA,GAAkB,EAAE,CAAC;QAC/B,IAAY,CAAA,YAAA,GAAmC,EAAE,CAAC;AAClD,QAAA,IAAA,CAAA,gBAAgB,GAAgC,IAAI,YAAY,EAAE,CAAC;AAG1E,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;;AAG9B,QAAA,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC,MAAK;AAC/C,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AAC7B,gBAAA,MAAM,gBAAgB,GACrB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACjD,gBAAA,YAAY,CACX,MAAM,EACN,gBAAgB,CAAC,QAAQ,CAAC,aAAa,EACvC,IAAI,CAAC,2BAA2B,CAChC,CAAC;gBACF,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAC7D,aAAA;AACF,SAAC,CAAC,CAAC;KACH;IAEO,iBAAiB,GAAA;AACxB,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC;AACpD,QAAA,IAAI,kBAAkB,EAAE;AACvB,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAChC,YAAA,kBAAkB,EAAE,CAAC;AACrB,SAAA;KACD;IAEO,cAAc,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC9B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AAClD,SAAA;KACD;AAED,IAAA,IAAI,CACH,eAAyB,EACzB,OAAY,EACZ,OAAwB,EAAA;AAExB,QAAA,MAAM,WAAW,GAChB,OAAO,CAAC,SAAS,YAAY,WAAW;cACrC,OAAO,CAAC,SAAS;AACnB,cAAE,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC;kBAC5B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,SAAU,CAAC;AAClD,kBAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAExB,IAAI,CAAC,WAAW,EAAE;YACjB,MAAM,IAAI,KAAK,CACd,CACC,+BAAA,EAAA,OAAO,CAAC,SAAS,IAAI,MACtB,CAA6B,2BAAA,CAAA,CAC7B,CAAC;AACF,SAAA;QAED,IAAI,CAAC,cAAc,EAAE,CAAC;AAEtB,QAAA,MAAM,WAAW,GAAG,IAAI,cAAc,EAAE,CAAC;AAEzC,QAAA,eAAe,GAAG,OAAO,CAAC,QAAQ,IAAI,eAAe,CAAC;QACtD,MAAM,mBAAmB,GACxB,eAAe,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC;YAC9C,IAAI,CAAC,oBAAoB,CAAC;AAC3B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CACrC,eAAe,EACf,mBAAmB,EACnB,OAAO,EACP,WAAW,EACX,OAAO,CACP,CAAC;AAEF,QAAA,MAAM,eAAe,GACpB,OAAO,CAAC,QAAQ,KAAK,KAAK;AACzB,cAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;cACjC,SAAS,CAAC;AACd,QAAA,MAAM,aAAa,GAClB,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACrE,QAAA,MAAM,WAAW,GAAgB,IAAI,WAAW,CAC/C,aAAa,EACb,UAAU,EACV,eAAe,EACf,OAAO,CAAC,aAAa,CACrB,CAAC;AAEF,QAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;;;;QAKxC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAC1C,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAK;AAC/B,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;gBAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBACnD,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACzB,aAAA;SACD,CAAC,CACF,CAAC;AAEF,QAAA,WAAW,CAAC,KAAK,GAAG,CAAC,MAAW,KAAI;AACnC,YAAA,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC3B,SAAC,CAAC;AACF,QAAA,WAAW,CAAC,OAAO,GAAG,CAAC,MAAW,KAAI;AACrC,YAAA,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7B,SAAC,CAAC;AAEF,QAAA,WAAW,CAAC,MAAM,GAAG,CAAC,OAAiC,KAAI;AAC1D,YAAA,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC7B,SAAC,CAAC;AAEF,QAAA,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC5B,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAChD,SAAA;AAED,QAAA,IAAI,eAAe,IAAI,eAAe,CAAC,QAAQ,EAAE;AAChD,YAAA,eAAe,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;AAClD,SAAA;AACD,QAAA,aAAa,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;AAChD,QAAA,OAAO,WAAW,CAAC;KACnB;AAED,IAAA,IAAI,eAAe,GAAA;QAClB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAC7B;AAED,IAAA,UAAU,CAAC,MAAY,EAAA;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;KACtE;IAED,aAAa,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;KAClC;AAEO,IAAA,eAAe,CACtB,WAAoB,EAAA;AAEpB,QAAA,IAAI,eAAe,GAAG,eAAe,CAAC,gBAAgB,EAAE;AACvD,YAAA,mBAAmB,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ;YAClD,eAAe,EAAE,IAAI,CAAC,SAAS;AAC/B,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1D,WAAW,CAAC,WAAW,CAAC,eAAe,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAChE,QAAA,OAAO,eAAe,CAAC;KACvB;IAEO,sBAAsB,CAC7B,WAAoB,EACpB,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAW,EAC/C,OAAwB,EAAA;QAExB,MAAM,aAAa,GAClB,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;AACpD,QAAA,IAAI,aAAa,GAAG,eAAe,CAAC,cAAc,EAAE;AACnD,YAAA,mBAAmB,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ;YAClD,eAAe,EAAE,IAAI,CAAC,SAAS;AAC/B,YAAA,gBAAgB,EAAE,aAAa;kBAC5B,CAAC,SAAS,CAAC;kBACX,CAAC,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC;AAC5C,SAAA,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;QAEzD,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACxD,WAAW,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAC9D,QAAA,OAAO,aAAa,CAAC;KACrB;IAEO,cAAc,CACrB,eAAyB,EACzB,mBAAwC,EACxC,OAA8C,EAC9C,WAA2B,EAC3B,OAAwB,EAAA;QAExB,IAAI,CAAC,OAAO,EAAE;AACb,YAAA,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AAC1B,SAAA;aAAM,IAAI,OAAO,YAAY,WAAW,EAAE;YAC1C,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AAClE,SAAA;AAAM,aAAA,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC7B,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACvC,SAAA;AAAM,aAAA;AACN,YAAA,OAAO,IAAI,CAAC,oBAAoB,CAC/B,eAAe,EACf,mBAAmB,EACnB,OAAO,EACP,WAAW,EACX,OAAO,CACP,CAAC;AACF,SAAA;KACD;AAEO,IAAA,sBAAsB,CAC7B,WAA6B,EAC7B,WAA2B,EAC3B,OAAwB,EAAA;AAExB,QAAA,MAAM,OAAO,GAAG;AACf,YAAA,SAAS,EAAE,WAAW;AACtB,YAAA,KAAK,CAAC,MAAM,EAAA;AACX,gBAAA,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;aAC1B;AACD,YAAA,OAAO,CAAC,MAAM,EAAA;AACb,gBAAA,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAC5B;SACD,CAAC;QACF,MAAM,OAAO,GAAG,WAAW,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAEzC,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAC7D,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QAE3C,IAAI,CAAC,wBAAwB,CAAC,aAAa,EAAE,OAAc,EAAE,OAAO,CAAC,CAAC;QACtE,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE,OAAc,EAAE,OAAO,CAAC,CAAC;QAEpE,OAAO,IAAI,UAAU,CACpB;AACC,YAAA,OAAO,CAAC,cAAc;kBACnB,+BAA+B,CAC/B,aAAa,EACb,OAAO,CAAC,cAAc,CACrB;AACH,kBAAE,EAAE;AACL,YAAA,aAAa,CAAC,UAAiB;AAC/B,YAAA,OAAO,CAAC,cAAc;kBACnB,+BAA+B,CAC/B,aAAa,EACb,OAAO,CAAC,cAAc,CACrB;AACH,kBAAE,EAAE;SACL,EACD,OAAO,CACP,CAAC;KACF;AAEO,IAAA,iBAAiB,CAAC,OAAe,EAAA;AACxC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAG,EAAA,OAAO,CAAE,CAAA,CAAC,CAAC;QAC9D,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;KACrC;IAEO,oBAAoB,CAC3B,eAAyB,EACzB,mBAAwC,EACxC,aAAwB,EACxB,OAAuB,EACvB,OAAwB,EAAA;AAExB,QAAA,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC;YACvC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC3D,YAAA,MAAM,EAAE,eAAe;AACvB,SAAA,CAAC,CAAC;AACH,QAAA,MAAM,YAAY,GAAG,eAAe,CAAC,aAAa,EAAE;YACnD,mBAAmB;YACnB,eAAe;AACf,SAAA,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,IAAI,EAAE;AACjB,YAAA,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE;gBACpC,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,aAAA,CAAC,CAAC;AACH,SAAA;AAED,QAAA,MAAM,iBAAiB,GACtB,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC;QACrC,IAAI,OAAO,CAAC,UAAU,EAAE;AACvB,YAAA,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AAC7D,SAAA;QACD,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEvD,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACnE,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,OAAc,EAAE,OAAO,CAAC,CAAC;;;QAIxE,OAAO,IAAI,UAAU,CACpB;AACC,YAAA,OAAO,CAAC,cAAc;kBACnB,+BAA+B,CAC/B,iBAAiB,EACjB,OAAO,CAAC,cAAc,CACrB;AACH,kBAAE,EAAE;AACL,YAAA,iBAAiB,CAAC,UAAiB;AACnC,YAAA,OAAO,CAAC,cAAc;kBACnB,+BAA+B,CAC/B,iBAAiB,EACjB,OAAO,CAAC,cAAc,CACrB;AACH,kBAAE,EAAE;AACL,SAAA,EACD,YAAY,CAAC,QAAQ,EACrB,YAAY,CACZ,CAAC;KACF;AAEO,IAAA,cAAc,CAAC,OAAgB,EAAA;AACtC,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;QACrC,IAAI,MAAM,IAAI,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AAC9C,YAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;gBAC/C,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;AACzD,oBAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CACzB,OAAO,EACP,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CACnC,CAAC;AACF,oBAAA,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAC5C,iBAAA;AACF,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAC5B,SAAA;KACD;IAEO,iBAAiB,GAAA;QACxB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,OAAO,KAAI;AACjD,YAAA,IAAI,KAAK,EAAE;AACV,gBAAA,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AAC3C,aAAA;AAAM,iBAAA;AACN,gBAAA,OAAO,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;AACvC,aAAA;AACF,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;KAC/B;AAEO,IAAA,iBAAiB,CAAC,WAAwB,EAAA;QACjD,MAAM,kBAAkB,GAAG,MAAK;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACnD,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;gBACf,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBACjC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC5C,aAAA;AACF,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAClC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5C,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;KAChE;AAEO,IAAA,mBAAmB,CAAC,aAA2C,EAAA;AACtE,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE,CAAC;AAExC,QAAA,aAAa,CAAC,SAAS,CAAC,MAAK;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACvD,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;gBACf,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACnC,gBAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE,CAAC;AACxC,aAAA;AACF,SAAC,CAAC,CAAC;KACH;AAED;;;;;;;;;;;AAWG;AACK,IAAA,wBAAwB,CAC/B,SAAsB,EACtB,OAAuB,EACvB,OAAwB,EAAA;QAExB,IAAI,OAAO,CAAC,eAAe,EAAE;YAC5B,MAAM,YAAY,GACjB,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YACrD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AAC5C,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AACxD,aAAA;AACD,SAAA;KACD;AAED;;;;;;;;;;;AAWG;AACK,IAAA,sBAAsB,CAC7B,SAAsB,EACtB,OAAuB,EACvB,OAAwB,EAAA;QAExB,IAAI,OAAO,CAAC,aAAa,EAAE;YAC1B,MAAM,YAAY,GACjB,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YACnD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AAC5C,gBAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAC1D,OAAO,CAAC,KAAK,EAAE,CACf,CAAC;AACF,aAAA;AACD,SAAA;KACD;8GA9ZW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cADA,MAAM,EAAA,CAAA,CAAA,EAAA;;2FACnB,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;AAkalC;;;;;;;;;;AAUG;AACH,SAAS,+BAA+B,CACvC,SAAsB,EACtB,QAAgB,EAAA;IAEhB,IAAI,cAAc,GAAG,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AAE1D,IAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAI;AAC1D,QAAA,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;KAC7C,EAAE,EAAiB,CAAC,CAAC;;IAGtB,MAAM,aAAa,GAAG,SAAS,CAAC,gBAAgB,CAAc,QAAQ,CAAC,CAAC;;AAGxE,IAAA,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAC3D,IAAA,OAAO,KAAK,CAAC;AACd;;ACndA;;;;;AAKG;MAEU,QAAQ,CAAA;AADrB,IAAA,WAAA,GAAA;AAES,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC7B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AACpC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAwCzC,KAAA;AAtCA;;;;;;;;AAQG;AACH,IAAA,IAAI,CAAC,OAAY,EAAE,OAAA,GAA2B,EAAE,EAAA;AAC/C,QAAA,MAAM,eAAe,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,OAAO,EAAE,CAAC;AAC3F,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;KACvE;AAED;;AAEG;AACH,IAAA,IAAI,eAAe,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;KACxC;AAED;;;;AAIG;AACH,IAAA,UAAU,CAAC,MAAY,EAAA;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;KACpC;AAED;;;;AAIG;IACH,aAAa,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;KACxC;8GA1CW,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAR,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,QAAQ,cADK,MAAM,EAAA,CAAA,CAAA,EAAA;;2FACnB,QAAQ,EAAA,UAAA,EAAA,CAAA;kBADpB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;MCArB,cAAc,CAAA;8GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAd,cAAc,EAAA,CAAA,CAAA,EAAA;+GAAd,cAAc,EAAA,SAAA,EADJ,CAAC,QAAQ,CAAC,EAAA,CAAA,CAAA,EAAA;;2FACpB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAA;;;ACXnC;;AAEG;;ACFH;;AAEG;;;;"}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ng-hub-ui-modal",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.4",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": ">=16.0.0",
|
|
6
6
|
"@angular/core": ">=16.0.0",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"decoupled",
|
|
25
25
|
"independent"
|
|
26
26
|
],
|
|
27
|
-
"description": "
|
|
27
|
+
"description": "Standalone boomodalt",
|
|
28
28
|
"repository": {
|
|
29
29
|
"type": "git",
|
|
30
30
|
"url": "git+https://github.com/carlos-morcillo/ng-hub-ui-modal.git"
|
|
Binary file
|