@clr/angular 13.2.0 → 13.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,172 @@
1
+ /*
2
+ * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
3
+ * This software is released under MIT license.
4
+ * The full license information can be found in LICENSE in the root directory of this project.
5
+ */
6
+ import { Injectable } from '@angular/core';
7
+ import { fromEvent, Subject } from 'rxjs';
8
+ import { takeUntil } from 'rxjs/operators';
9
+ import * as i0 from "@angular/core";
10
+ export function getTabableItems(el) {
11
+ const tabableSelector = [
12
+ 'a[href]',
13
+ 'area[href]',
14
+ 'input:not([disabled])',
15
+ 'button:not([disabled])',
16
+ 'select:not([disabled])',
17
+ 'textarea:not([disabled])',
18
+ 'iframe',
19
+ 'object',
20
+ 'embed',
21
+ '*[tabindex]',
22
+ '*[contenteditable=true]',
23
+ '[role=button]:not([disabled])',
24
+ ].join(',');
25
+ return Array.from(el.querySelectorAll(tabableSelector));
26
+ }
27
+ export class KeyNavigationGridController {
28
+ constructor(zone) {
29
+ this.zone = zone;
30
+ this.listenersAdded = false;
31
+ this.destroy$ = new Subject();
32
+ this.config = {
33
+ keyGridRows: '[role=row]:not(.datagrid-placeholder)',
34
+ keyGridCells: '[role=gridcell]:not(.datagrid-hidden-column):not(.datagrid-placeholder-content), [role=columnheader]:not(.datagrid-hidden-column):not(.datagrid-placeholder-content), .datagrid-detail-caret',
35
+ keyGrid: '[role=grid]',
36
+ };
37
+ }
38
+ get grid() {
39
+ return this.host?.querySelector(this.config.keyGrid);
40
+ }
41
+ get rows() {
42
+ return this.host?.querySelectorAll(this.config.keyGridRows);
43
+ }
44
+ get cells() {
45
+ return this.host?.querySelectorAll(this.config.keyGridCells);
46
+ }
47
+ ngOnDestroy() {
48
+ this.destroy$.next();
49
+ this.destroy$.complete();
50
+ }
51
+ addListeners() {
52
+ if (this.listenersAdded) {
53
+ return;
54
+ }
55
+ this.zone.runOutsideAngular(() => {
56
+ fromEvent(this.grid, 'mousedown')
57
+ .pipe(takeUntil(this.destroy$))
58
+ .subscribe((e) => {
59
+ // preserve right click for context menus & keyboard mouse control https://apple.stackexchange.com/questions/32715/how-do-i-open-the-context-menu-from-a-mac-keyboard
60
+ if (e.buttons === 1 && !e.ctrlKey) {
61
+ const activeCell = this.cells
62
+ ? Array.from(this.cells).find(c => c === e.target || c === e.target.closest(this.config.keyGridCells))
63
+ : null;
64
+ if (activeCell) {
65
+ this.setActiveCell(activeCell);
66
+ }
67
+ }
68
+ });
69
+ fromEvent(this.grid, 'keydown')
70
+ .pipe(takeUntil(this.destroy$))
71
+ .subscribe((e) => {
72
+ // Skip column resize events
73
+ if (e.target.classList.contains('drag-handle') &&
74
+ (e.code === 'ArrowLeft' || e.code === 'ArrowRight')) {
75
+ return;
76
+ }
77
+ if (e.code === 'ArrowUp' ||
78
+ e.code === 'ArrowDown' ||
79
+ e.code === 'ArrowLeft' ||
80
+ e.code === 'ArrowRight' ||
81
+ e.code === 'End' ||
82
+ e.code === 'Home' ||
83
+ e.code === 'PageUp' ||
84
+ e.code === 'PageDown') {
85
+ const { x, y } = this.getNextItemCoordinate(e);
86
+ const activeItem = this.rows
87
+ ? Array.from(this.rows[y].querySelectorAll(this.config.keyGridCells))[x]
88
+ : null;
89
+ if (activeItem) {
90
+ this.setActiveCell(activeItem);
91
+ }
92
+ e.preventDefault();
93
+ }
94
+ });
95
+ });
96
+ this.listenersAdded = true;
97
+ }
98
+ initializeKeyGrid(host) {
99
+ this.host = host;
100
+ this.addListeners();
101
+ this.resetKeyGrid();
102
+ }
103
+ resetKeyGrid() {
104
+ this.cells?.forEach((i) => i.setAttribute('tabindex', '-1'));
105
+ const firstCell = this.cells ? this.cells[0] : null;
106
+ firstCell?.setAttribute('tabindex', '0');
107
+ }
108
+ setActiveCell(activeCell) {
109
+ const prior = this.cells ? Array.from(this.cells).find(c => c.getAttribute('tabindex') === '0') : null;
110
+ if (prior) {
111
+ prior.setAttribute('tabindex', '-1');
112
+ }
113
+ activeCell.setAttribute('tabindex', '0');
114
+ const items = getTabableItems(activeCell);
115
+ const item = activeCell.getAttribute('role') !== 'columnheader' && items[0] ? items[0] : activeCell;
116
+ item.focus();
117
+ }
118
+ getNextItemCoordinate(e) {
119
+ let currentCell = this.cells ? Array.from(this.cells).find(i => i.getAttribute('tabindex') === '0') : null;
120
+ if (e.code === 'Tab') {
121
+ currentCell = document.activeElement;
122
+ }
123
+ const currentRow = this.rows && currentCell ? Array.from(this.rows).find(r => r.contains(currentCell)) : null;
124
+ const numOfRows = this.rows ? this.rows.length - 1 : 0;
125
+ const numOfColumns = this.cells ? this.cells.length / this.rows.length - 1 : 0;
126
+ let x = currentRow && currentCell
127
+ ? Array.from(currentRow.querySelectorAll(this.config.keyGridCells)).indexOf(currentCell)
128
+ : 0;
129
+ let y = currentRow && currentCell && this.rows ? Array.from(this.rows).indexOf(currentRow) : 0;
130
+ const dir = this.host.dir;
131
+ const inlineStart = dir === 'rtl' ? 'ArrowRight' : 'ArrowLeft';
132
+ const inlineEnd = dir === 'rtl' ? 'ArrowLeft' : 'ArrowRight';
133
+ const itemsPerPage = Math.floor(this.host?.querySelector('.datagrid').clientHeight / this.rows[0].clientHeight) - 1 || 0;
134
+ if (e.code === 'ArrowUp' && y !== 0) {
135
+ y = y - 1;
136
+ }
137
+ else if (e.code === 'ArrowDown' && y < numOfRows) {
138
+ y = y + 1;
139
+ }
140
+ else if (e.code === inlineStart && x !== 0) {
141
+ x = x - 1;
142
+ }
143
+ else if (e.code === inlineEnd && x < numOfColumns) {
144
+ x = x + 1;
145
+ }
146
+ else if (e.code === 'End') {
147
+ x = numOfColumns;
148
+ if (e.ctrlKey) {
149
+ y = numOfRows;
150
+ }
151
+ }
152
+ else if (e.code === 'Home') {
153
+ x = 0;
154
+ if (e.ctrlKey) {
155
+ y = 0;
156
+ }
157
+ }
158
+ else if (e.code === 'PageUp') {
159
+ y = y - itemsPerPage > 0 ? y - itemsPerPage : 0;
160
+ }
161
+ else if (e.code === 'PageDown') {
162
+ y = y + itemsPerPage < numOfRows ? y + itemsPerPage : numOfRows;
163
+ }
164
+ return { x, y };
165
+ }
166
+ }
167
+ KeyNavigationGridController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: KeyNavigationGridController, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
168
+ KeyNavigationGridController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: KeyNavigationGridController });
169
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: KeyNavigationGridController, decorators: [{
170
+ type: Injectable
171
+ }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LW5hdmlnYXRpb24tZ3JpZC5jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvZGF0YS9kYXRhZ3JpZC91dGlscy9rZXktbmF2aWdhdGlvbi1ncmlkLmNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFM0MsTUFBTSxVQUFVLGVBQWUsQ0FBQyxFQUFlO0lBQzdDLE1BQU0sZUFBZSxHQUFHO1FBQ3RCLFNBQVM7UUFDVCxZQUFZO1FBQ1osdUJBQXVCO1FBQ3ZCLHdCQUF3QjtRQUN4Qix3QkFBd0I7UUFDeEIsMEJBQTBCO1FBQzFCLFFBQVE7UUFDUixRQUFRO1FBQ1IsT0FBTztRQUNQLGFBQWE7UUFDYix5QkFBeUI7UUFDekIsK0JBQStCO0tBQ2hDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ1osT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsQ0FBa0IsQ0FBQztBQUMzRSxDQUFDO0FBU0QsTUFBTSxPQUFPLDJCQUEyQjtJQTBCdEMsWUFBb0IsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7UUFYeEIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFJdkIsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFRL0IsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLFdBQVcsRUFBRSx1Q0FBdUM7WUFDcEQsWUFBWSxFQUNWLDhMQUE4TDtZQUNoTSxPQUFPLEVBQUUsYUFBYTtTQUN2QixDQUFDO0lBQ0osQ0FB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LENBQUM7U0FDakQ7YUFBTSxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFO1lBQ2hDLENBQUMsR0FBRyxDQUFDLEdBQUcsWUFBWSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1NBQ2pFO1FBRUQsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNsQixDQUFDOzt3SEF0S1UsMkJBQTJCOzRIQUEzQiwyQkFBMkI7MkZBQTNCLDJCQUEyQjtrQkFEdkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMiBWTXdhcmUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFiYWJsZUl0ZW1zKGVsOiBIVE1MRWxlbWVudCkge1xuICBjb25zdCB0YWJhYmxlU2VsZWN0b3IgPSBbXG4gICAgJ2FbaHJlZl0nLFxuICAgICdhcmVhW2hyZWZdJyxcbiAgICAnaW5wdXQ6bm90KFtkaXNhYmxlZF0pJyxcbiAgICAnYnV0dG9uOm5vdChbZGlzYWJsZWRdKScsXG4gICAgJ3NlbGVjdDpub3QoW2Rpc2FibGVkXSknLFxuICAgICd0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSknLFxuICAgICdpZnJhbWUnLFxuICAgICdvYmplY3QnLFxuICAgICdlbWJlZCcsXG4gICAgJypbdGFiaW5kZXhdJyxcbiAgICAnKltjb250ZW50ZWRpdGFibGU9dHJ1ZV0nLFxuICAgICdbcm9sZT1idXR0b25dOm5vdChbZGlzYWJsZWRdKScsXG4gIF0uam9pbignLCcpO1xuICByZXR1cm4gQXJyYXkuZnJvbShlbC5xdWVyeVNlbGVjdG9yQWxsKHRhYmFibGVTZWxlY3RvcikpIGFzIEhUTUxFbGVtZW50W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5TmF2aWdhdGlvbkdyaWRDb25maWcge1xuICBrZXlHcmlkOiBzdHJpbmc7XG4gIGtleUdyaWRSb3dzOiBzdHJpbmc7XG4gIGtleUdyaWRDZWxsczogc3RyaW5nO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgS2V5TmF2aWdhdGlvbkdyaWRDb250cm9sbGVyIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBnZXQgZ3JpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5ob3N0Py5xdWVyeVNlbGVjdG9yKHRoaXMuY29uZmlnLmtleUdyaWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgcm93cygpIHtcbiAgICByZXR1cm4gdGhpcy5ob3N0Py5xdWVyeVNlbGVjdG9yQWxsKHRoaXMuY29uZmlnLmtleUdyaWRSb3dzKSBhcyBOb2RlTGlzdE9mPEhUTUxFbGVtZW50PjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGNlbGxzKCkge1xuICAgIHJldHVybiB0aGlzLmhvc3Q/LnF1ZXJ5U2VsZWN0b3JBbGwodGhpcy5jb25maWcua2V5R3JpZENlbGxzKSBhcyBOb2RlTGlzdE9mPEhUTUxFbGVtZW50PjtcbiAgfVxuXG4gIHByaXZhdGUgY29uZmlnOiBLZXlOYXZpZ2F0aW9uR3JpZENvbmZpZztcblxuICBwcml2YXRlIGxpc3RlbmVyc0FkZGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBob3N0OiBIVE1MRWxlbWVudDtcblxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHpvbmU6IE5nWm9uZSkge1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAga2V5R3JpZFJvd3M6ICdbcm9sZT1yb3ddOm5vdCguZGF0YWdyaWQtcGxhY2Vob2xkZXIpJyxcbiAgICAgIGtleUdyaWRDZWxsczpcbiAgICAgICAgJ1tyb2xlPWdyaWRjZWxsXTpub3QoLmRhdGFncmlkLWhpZGRlbi1jb2x1bW4pOm5vdCguZGF0YWdyaWQtcGxhY2Vob2xkZXItY29udGVudCksIFtyb2xlPWNvbHVtbmhlYWRlcl06bm90KC5kYXRhZ3JpZC1oaWRkZW4tY29sdW1uKTpub3QoLmRhdGFncmlkLXBsYWNlaG9sZGVyLWNvbnRlbnQpLCAuZGF0YWdyaWQtZGV0YWlsLWNhcmV0JyxcbiAgICAgIGtleUdyaWQ6ICdbcm9sZT1ncmlkXScsXG4gICAgfTtcbiAgfVxuXG4gIGFkZExpc3RlbmVycygpIHtcbiAgICBpZiAodGhpcy5saXN0ZW5lcnNBZGRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBmcm9tRXZlbnQodGhpcy5ncmlkLCAnbW91c2Vkb3duJylcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgLy8gcHJlc2VydmUgcmlnaHQgY2xpY2sgZm9yIGNvbnRleHQgbWVudXMgJiBrZXlib2FyZCBtb3VzZSBjb250cm9sIGh0dHBzOi8vYXBwbGUuc3RhY2tleGNoYW5nZS5jb20vcXVlc3Rpb25zLzMyNzE1L2hvdy1kby1pLW9wZW4tdGhlLWNvbnRleHQtbWVudS1mcm9tLWEtbWFjLWtleWJvYXJkXG4gICAgICAgICAgaWYgKGUuYnV0dG9ucyA9PT0gMSAmJiAhZS5jdHJsS2V5KSB7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmVDZWxsID0gdGhpcy5jZWxsc1xuICAgICAgICAgICAgICA/IEFycmF5LmZyb20odGhpcy5jZWxscykuZmluZChcbiAgICAgICAgICAgICAgICAgIGMgPT4gYyA9PT0gZS50YXJnZXQgfHwgYyA9PT0gKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KHRoaXMuY29uZmlnLmtleUdyaWRDZWxscylcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICAgIGlmIChhY3RpdmVDZWxsKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlQ2VsbChhY3RpdmVDZWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICBmcm9tRXZlbnQodGhpcy5ncmlkLCAna2V5ZG93bicpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgLnN1YnNjcmliZSgoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgIC8vIFNraXAgY29sdW1uIHJlc2l6ZSBldmVudHNcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsYXNzTGlzdC5jb250YWlucygnZHJhZy1oYW5kbGUnKSAmJlxuICAgICAgICAgICAgKGUuY29kZSA9PT0gJ0Fycm93TGVmdCcgfHwgZS5jb2RlID09PSAnQXJyb3dSaWdodCcpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGUuY29kZSA9PT0gJ0Fycm93VXAnIHx8XG4gICAgICAgICAgICBlLmNvZGUgPT09ICdBcnJvd0Rvd24nIHx8XG4gICAgICAgICAgICBlLmNvZGUgPT09ICdBcnJvd0xlZnQnIHx8XG4gICAgICAgICAgICBlLmNvZGUgPT09ICdBcnJvd1JpZ2h0JyB8fFxuICAgICAgICAgICAgZS5jb2RlID09PSAnRW5kJyB8fFxuICAgICAgICAgICAgZS5jb2RlID09PSAnSG9tZScgfHxcbiAgICAgICAgICAgIGUuY29kZSA9PT0gJ1BhZ2VVcCcgfHxcbiAgICAgICAgICAgIGUuY29kZSA9PT0gJ1BhZ2VEb3duJ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgeyB4LCB5IH0gPSB0aGlzLmdldE5leHRJdGVtQ29vcmRpbmF0ZShlKTtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUl0ZW0gPSB0aGlzLnJvd3NcbiAgICAgICAgICAgICAgPyAoQXJyYXkuZnJvbSh0aGlzLnJvd3NbeV0ucXVlcnlTZWxlY3RvckFsbCh0aGlzLmNvbmZpZy5rZXlHcmlkQ2VsbHMpKVt4XSBhcyBIVE1MRWxlbWVudClcbiAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICAgICAgaWYgKGFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmVDZWxsKGFjdGl2ZUl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgdGhpcy5saXN0ZW5lcnNBZGRlZCA9IHRydWU7XG4gIH1cblxuICBpbml0aWFsaXplS2V5R3JpZChob3N0OiBIVE1MRWxlbWVudCkge1xuICAgIHRoaXMuaG9zdCA9IGhvc3Q7XG4gICAgdGhpcy5hZGRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnJlc2V0S2V5R3JpZCgpO1xuICB9XG5cbiAgcmVzZXRLZXlHcmlkKCkge1xuICAgIHRoaXMuY2VsbHM/LmZvckVhY2goKGk6IEhUTUxFbGVtZW50KSA9PiBpLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnLTEnKSk7XG4gICAgY29uc3QgZmlyc3RDZWxsID0gdGhpcy5jZWxscyA/IHRoaXMuY2VsbHNbMF0gOiBudWxsO1xuICAgIGZpcnN0Q2VsbD8uc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJyk7XG4gIH1cblxuICBwcml2YXRlIHNldEFjdGl2ZUNlbGwoYWN0aXZlQ2VsbDogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCBwcmlvciA9IHRoaXMuY2VsbHMgPyBBcnJheS5mcm9tKHRoaXMuY2VsbHMpLmZpbmQoYyA9PiBjLmdldEF0dHJpYnV0ZSgndGFiaW5kZXgnKSA9PT0gJzAnKSA6IG51bGw7XG5cbiAgICBpZiAocHJpb3IpIHtcbiAgICAgIHByaW9yLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnLTEnKTtcbiAgICB9XG5cbiAgICBhY3RpdmVDZWxsLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnMCcpO1xuXG4gICAgY29uc3QgaXRlbXMgPSBnZXRUYWJhYmxlSXRlbXMoYWN0aXZlQ2VsbCk7XG4gICAgY29uc3QgaXRlbSA9IGFjdGl2ZUNlbGwuZ2V0QXR0cmlidXRlKCdyb2xlJykgIT09ICdjb2x1bW5oZWFkZXInICYmIGl0ZW1zWzBdID8gaXRlbXNbMF0gOiBhY3RpdmVDZWxsO1xuICAgIGl0ZW0uZm9jdXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TmV4dEl0ZW1Db29yZGluYXRlKGU6IGFueSkge1xuICAgIGxldCBjdXJyZW50Q2VsbCA9IHRoaXMuY2VsbHMgPyBBcnJheS5mcm9tKHRoaXMuY2VsbHMpLmZpbmQoaSA9PiBpLmdldEF0dHJpYnV0ZSgndGFiaW5kZXgnKSA9PT0gJzAnKSA6IG51bGw7XG4gICAgaWYgKGUuY29kZSA9PT0gJ1RhYicpIHtcbiAgICAgIGN1cnJlbnRDZWxsID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudFJvdyA9IHRoaXMucm93cyAmJiBjdXJyZW50Q2VsbCA/IEFycmF5LmZyb20odGhpcy5yb3dzKS5maW5kKHIgPT4gci5jb250YWlucyhjdXJyZW50Q2VsbCkpIDogbnVsbDtcbiAgICBjb25zdCBudW1PZlJvd3MgPSB0aGlzLnJvd3MgPyB0aGlzLnJvd3MubGVuZ3RoIC0gMSA6IDA7XG4gICAgY29uc3QgbnVtT2ZDb2x1bW5zID0gdGhpcy5jZWxscyA/IHRoaXMuY2VsbHMubGVuZ3RoIC8gdGhpcy5yb3dzLmxlbmd0aCAtIDEgOiAwO1xuXG4gICAgbGV0IHggPVxuICAgICAgY3VycmVudFJvdyAmJiBjdXJyZW50Q2VsbFxuICAgICAgICA/IEFycmF5LmZyb20oY3VycmVudFJvdy5xdWVyeVNlbGVjdG9yQWxsKHRoaXMuY29uZmlnLmtleUdyaWRDZWxscykpLmluZGV4T2YoY3VycmVudENlbGwpXG4gICAgICAgIDogMDtcbiAgICBsZXQgeSA9IGN1cnJlbnRSb3cgJiYgY3VycmVudENlbGwgJiYgdGhpcy5yb3dzID8gQXJyYXkuZnJvbSh0aGlzLnJvd3MpLmluZGV4T2YoY3VycmVudFJvdykgOiAwO1xuXG4gICAgY29uc3QgZGlyID0gdGhpcy5ob3N0LmRpcjtcbiAgICBjb25zdCBpbmxpbmVTdGFydCA9IGRpciA9PT0gJ3J0bCcgPyAnQXJyb3dSaWdodCcgOiAnQXJyb3dMZWZ0JztcbiAgICBjb25zdCBpbmxpbmVFbmQgPSBkaXIgPT09ICdydGwnID8gJ0Fycm93TGVmdCcgOiAnQXJyb3dSaWdodCc7XG5cbiAgICBjb25zdCBpdGVtc1BlclBhZ2UgPVxuICAgICAgTWF0aC5mbG9vcih0aGlzLmhvc3Q/LnF1ZXJ5U2VsZWN0b3IoJy5kYXRhZ3JpZCcpLmNsaWVudEhlaWdodCAvIHRoaXMucm93c1swXS5jbGllbnRIZWlnaHQpIC0gMSB8fCAwO1xuXG4gICAgaWYgKGUuY29kZSA9PT0gJ0Fycm93VXAnICYmIHkgIT09IDApIHtcbiAgICAgIHkgPSB5IC0gMTtcbiAgICB9IGVsc2UgaWYgKGUuY29kZSA9PT0gJ0Fycm93RG93bicgJiYgeSA8IG51bU9mUm93cykge1xuICAgICAgeSA9IHkgKyAxO1xuICAgIH0gZWxzZSBpZiAoZS5jb2RlID09PSBpbmxpbmVTdGFydCAmJiB4ICE9PSAwKSB7XG4gICAgICB4ID0geCAtIDE7XG4gICAgfSBlbHNlIGlmIChlLmNvZGUgPT09IGlubGluZUVuZCAmJiB4IDwgbnVtT2ZDb2x1bW5zKSB7XG4gICAgICB4ID0geCArIDE7XG4gICAgfSBlbHNlIGlmIChlLmNvZGUgPT09ICdFbmQnKSB7XG4gICAgICB4ID0gbnVtT2ZDb2x1bW5zO1xuXG4gICAgICBpZiAoZS5jdHJsS2V5KSB7XG4gICAgICAgIHkgPSBudW1PZlJvd3M7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlLmNvZGUgPT09ICdIb21lJykge1xuICAgICAgeCA9IDA7XG5cbiAgICAgIGlmIChlLmN0cmxLZXkpIHtcbiAgICAgICAgeSA9IDA7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlLmNvZGUgPT09ICdQYWdlVXAnKSB7XG4gICAgICB5ID0geSAtIGl0ZW1zUGVyUGFnZSA+IDAgPyB5IC0gaXRlbXNQZXJQYWdlIDogMDtcbiAgICB9IGVsc2UgaWYgKGUuY29kZSA9PT0gJ1BhZ2VEb3duJykge1xuICAgICAgeSA9IHkgKyBpdGVtc1BlclBhZ2UgPCBudW1PZlJvd3MgPyB5ICsgaXRlbXNQZXJQYWdlIDogbnVtT2ZSb3dzO1xuICAgIH1cblxuICAgIHJldHVybiB7IHgsIHkgfTtcbiAgfVxufVxuIl19
@@ -298,7 +298,7 @@ ClrCombobox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "
298
298
  ClrPopoverToggleService,
299
299
  ClrPopoverEventsService,
300
300
  ClrPopoverPositionService,
301
- ], queries: [{ propertyName: "optionSelected", first: true, predicate: ClrOptionSelected, descendants: true }], viewQueries: [{ propertyName: "textbox", first: true, predicate: ["textboxInput"], descendants: true }, { propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--\n* Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n* This software is released under MIT license.\n* The full license information can be found in LICENSE in the root directory of this project.\n-->\n\n<!-- The (click) handler is needed to auto-focus on input field which can not currently occupy the whole\n width of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverAnchor\n (click)=\"focusInput()\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"invalid\"\n>\n <span\n *ngIf=\"multiSelect && optionSelectionService.selectionModel.model\"\n role=\"grid\"\n clrRovingTabindex\n [clrRovingTabindexDisabled]=\"control?.disabled\"\n clrDirection=\"both\"\n [attr.aria-label]=\"getSelectionAriaLabel()\"\n [attr.aria-disabled]=\"control?.disabled? true: null\"\n >\n <span *ngFor=\"let item of multiSelectModel; let i = index\" class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n <ng-container\n *ngIf=\"optionSelected\"\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n >\n </ng-container>\n </span>\n </span>\n <span role=\"gridcell\">\n <button\n clrKeyFocusItem\n type=\"button\"\n class=\"clr-combobox-remove-btn\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxDelete + ' ' + optionSelectionService.selectionModel.toString(displayField, i)\"\n (click)=\"unselect(item)\"\n >\n <cds-icon shape=\"window-close\" size=\"12\"></cds-icon>\n </button>\n </span>\n </span>\n </span>\n\n <span class=\"clr-combobox-input-wrapper\">\n <input\n #textboxInput\n type=\"text\"\n [id]=\"inputId()\"\n role=\"combobox\"\n class=\"clr-input clr-combobox-input\"\n [(ngModel)]=\"searchText\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n [attr.aria-expanded]=\"openState\"\n [attr.aria-owns]=\"ariaOwns\"\n aria-haspopup=\"listbox\"\n aria-autocomplete=\"list\"\n autocomplete=\"off\"\n [attr.aria-invalid]=\"control?.invalid? true: null\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-activedescendant]=\"getActiveDescendant()\"\n [attr.placeholder]=\"placeholder\"\n aria-multiline=\"false\"\n />\n </span>\n\n <!-- No click handler, as it uses the handler on the .clr-combobox-wrapper -->\n <button\n clrPopoverOpenCloseButton\n #trigger\n type=\"button\"\n class=\"clr-combobox-trigger\"\n tabindex=\"-1\"\n [disabled]=\"control?.disabled || null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxOpen\"\n >\n <cds-icon shape=\"angle\" direction=\"down\" size=\"12\"></cds-icon>\n </button>\n\n <div class=\"clr-focus-indicator\" [class.clr-focus]=\"focused\"></div>\n</div>\n\n<!-- Both close handlers are handled manually due to issues in Edge browser.\n Additionally 'outsideClickToClose' has complex handling that's necessary\n to be manual due to the component architecture -->\n<div role=\"dialog\" *clrPopoverContent=\"openState at smartPosition; outsideClickToClose: false; scrollToClose: false\">\n <ng-content></ng-content>\n</div>\n", components: [{ type: i10.ClrRovingTabindex, selector: "[clrRovingTabindex]", inputs: ["clrRovingTabindex", "clrRovingTabindexDisabled"] }], directives: [{ type: i11.ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i13.ClrKeyFocusItem, selector: "[clrKeyFocusItem]" }, { type: i12.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i14.CdsIconCustomTag, selector: "cds-icon" }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i15.ClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { type: i16.ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }] });
301
+ ], queries: [{ propertyName: "optionSelected", first: true, predicate: ClrOptionSelected, descendants: true }], viewQueries: [{ propertyName: "textbox", first: true, predicate: ["textboxInput"], descendants: true }, { propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--\n* Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n* This software is released under MIT license.\n* The full license information can be found in LICENSE in the root directory of this project.\n-->\n\n<!-- The (click) handler is needed to auto-focus on input field which can not currently occupy the whole\n width of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverAnchor\n (click)=\"focusInput()\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"invalid\"\n>\n <span\n *ngIf=\"multiSelect && optionSelectionService.selectionModel.model\"\n role=\"grid\"\n clrRovingTabindex\n [clrRovingTabindexDisabled]=\"control?.disabled\"\n clrDirection=\"both\"\n [attr.aria-label]=\"getSelectionAriaLabel()\"\n [attr.aria-disabled]=\"control?.disabled? true: null\"\n >\n <span *ngFor=\"let item of multiSelectModel; let i = index\" class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n <ng-container\n *ngIf=\"optionSelected\"\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n >\n </ng-container>\n </span>\n </span>\n <span role=\"gridcell\">\n <button\n clrKeyFocusItem\n type=\"button\"\n class=\"clr-combobox-remove-btn\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxDelete + ' ' + optionSelectionService.selectionModel.toString(displayField, i)\"\n (click)=\"unselect(item)\"\n >\n <cds-icon shape=\"window-close\" size=\"12\"></cds-icon>\n </button>\n </span>\n </span>\n </span>\n\n <span class=\"clr-combobox-input-wrapper\" role=\"combobox\">\n <input\n #textboxInput\n type=\"text\"\n [id]=\"inputId()\"\n class=\"clr-input clr-combobox-input\"\n [(ngModel)]=\"searchText\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n [attr.aria-expanded]=\"openState\"\n [attr.aria-owns]=\"ariaOwns\"\n aria-haspopup=\"listbox\"\n aria-autocomplete=\"list\"\n autocomplete=\"off\"\n [attr.aria-invalid]=\"control?.invalid? true: null\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-activedescendant]=\"getActiveDescendant()\"\n [attr.placeholder]=\"placeholder\"\n />\n </span>\n\n <!-- No click handler, as it uses the handler on the .clr-combobox-wrapper -->\n <button\n clrPopoverOpenCloseButton\n #trigger\n type=\"button\"\n class=\"clr-combobox-trigger\"\n tabindex=\"-1\"\n [disabled]=\"control?.disabled || null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxOpen\"\n >\n <cds-icon shape=\"angle\" direction=\"down\" size=\"12\"></cds-icon>\n </button>\n\n <div class=\"clr-focus-indicator\" [class.clr-focus]=\"focused\"></div>\n</div>\n\n<!-- Both close handlers are handled manually due to issues in Edge browser.\n Additionally 'outsideClickToClose' has complex handling that's necessary\n to be manual due to the component architecture -->\n<div role=\"dialog\" *clrPopoverContent=\"openState at smartPosition; outsideClickToClose: false; scrollToClose: false\">\n <ng-content></ng-content>\n</div>\n", components: [{ type: i10.ClrRovingTabindex, selector: "[clrRovingTabindex]", inputs: ["clrRovingTabindex", "clrRovingTabindexDisabled"] }], directives: [{ type: i11.ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i13.ClrKeyFocusItem, selector: "[clrKeyFocusItem]" }, { type: i12.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i14.CdsIconCustomTag, selector: "cds-icon" }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i15.ClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { type: i16.ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }] });
302
302
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrCombobox, decorators: [{
303
303
  type: Component,
304
304
  args: [{ selector: 'clr-combobox', providers: [
@@ -317,7 +317,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
317
317
  '[class.aria-required]': 'true',
318
318
  '[class.clr-combobox]': 'true',
319
319
  '[class.clr-combobox-disabled]': 'control?.disabled',
320
- }, template: "<!--\n* Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n* This software is released under MIT license.\n* The full license information can be found in LICENSE in the root directory of this project.\n-->\n\n<!-- The (click) handler is needed to auto-focus on input field which can not currently occupy the whole\n width of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverAnchor\n (click)=\"focusInput()\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"invalid\"\n>\n <span\n *ngIf=\"multiSelect && optionSelectionService.selectionModel.model\"\n role=\"grid\"\n clrRovingTabindex\n [clrRovingTabindexDisabled]=\"control?.disabled\"\n clrDirection=\"both\"\n [attr.aria-label]=\"getSelectionAriaLabel()\"\n [attr.aria-disabled]=\"control?.disabled? true: null\"\n >\n <span *ngFor=\"let item of multiSelectModel; let i = index\" class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n <ng-container\n *ngIf=\"optionSelected\"\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n >\n </ng-container>\n </span>\n </span>\n <span role=\"gridcell\">\n <button\n clrKeyFocusItem\n type=\"button\"\n class=\"clr-combobox-remove-btn\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxDelete + ' ' + optionSelectionService.selectionModel.toString(displayField, i)\"\n (click)=\"unselect(item)\"\n >\n <cds-icon shape=\"window-close\" size=\"12\"></cds-icon>\n </button>\n </span>\n </span>\n </span>\n\n <span class=\"clr-combobox-input-wrapper\">\n <input\n #textboxInput\n type=\"text\"\n [id]=\"inputId()\"\n role=\"combobox\"\n class=\"clr-input clr-combobox-input\"\n [(ngModel)]=\"searchText\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n [attr.aria-expanded]=\"openState\"\n [attr.aria-owns]=\"ariaOwns\"\n aria-haspopup=\"listbox\"\n aria-autocomplete=\"list\"\n autocomplete=\"off\"\n [attr.aria-invalid]=\"control?.invalid? true: null\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-activedescendant]=\"getActiveDescendant()\"\n [attr.placeholder]=\"placeholder\"\n aria-multiline=\"false\"\n />\n </span>\n\n <!-- No click handler, as it uses the handler on the .clr-combobox-wrapper -->\n <button\n clrPopoverOpenCloseButton\n #trigger\n type=\"button\"\n class=\"clr-combobox-trigger\"\n tabindex=\"-1\"\n [disabled]=\"control?.disabled || null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxOpen\"\n >\n <cds-icon shape=\"angle\" direction=\"down\" size=\"12\"></cds-icon>\n </button>\n\n <div class=\"clr-focus-indicator\" [class.clr-focus]=\"focused\"></div>\n</div>\n\n<!-- Both close handlers are handled manually due to issues in Edge browser.\n Additionally 'outsideClickToClose' has complex handling that's necessary\n to be manual due to the component architecture -->\n<div role=\"dialog\" *clrPopoverContent=\"openState at smartPosition; outsideClickToClose: false; scrollToClose: false\">\n <ng-content></ng-content>\n</div>\n" }]
320
+ }, template: "<!--\n* Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n* This software is released under MIT license.\n* The full license information can be found in LICENSE in the root directory of this project.\n-->\n\n<!-- The (click) handler is needed to auto-focus on input field which can not currently occupy the whole\n width of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverAnchor\n (click)=\"focusInput()\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"invalid\"\n>\n <span\n *ngIf=\"multiSelect && optionSelectionService.selectionModel.model\"\n role=\"grid\"\n clrRovingTabindex\n [clrRovingTabindexDisabled]=\"control?.disabled\"\n clrDirection=\"both\"\n [attr.aria-label]=\"getSelectionAriaLabel()\"\n [attr.aria-disabled]=\"control?.disabled? true: null\"\n >\n <span *ngFor=\"let item of multiSelectModel; let i = index\" class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n <ng-container\n *ngIf=\"optionSelected\"\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n >\n </ng-container>\n </span>\n </span>\n <span role=\"gridcell\">\n <button\n clrKeyFocusItem\n type=\"button\"\n class=\"clr-combobox-remove-btn\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxDelete + ' ' + optionSelectionService.selectionModel.toString(displayField, i)\"\n (click)=\"unselect(item)\"\n >\n <cds-icon shape=\"window-close\" size=\"12\"></cds-icon>\n </button>\n </span>\n </span>\n </span>\n\n <span class=\"clr-combobox-input-wrapper\" role=\"combobox\">\n <input\n #textboxInput\n type=\"text\"\n [id]=\"inputId()\"\n class=\"clr-input clr-combobox-input\"\n [(ngModel)]=\"searchText\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n [attr.aria-expanded]=\"openState\"\n [attr.aria-owns]=\"ariaOwns\"\n aria-haspopup=\"listbox\"\n aria-autocomplete=\"list\"\n autocomplete=\"off\"\n [attr.aria-invalid]=\"control?.invalid? true: null\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-activedescendant]=\"getActiveDescendant()\"\n [attr.placeholder]=\"placeholder\"\n />\n </span>\n\n <!-- No click handler, as it uses the handler on the .clr-combobox-wrapper -->\n <button\n clrPopoverOpenCloseButton\n #trigger\n type=\"button\"\n class=\"clr-combobox-trigger\"\n tabindex=\"-1\"\n [disabled]=\"control?.disabled || null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxOpen\"\n >\n <cds-icon shape=\"angle\" direction=\"down\" size=\"12\"></cds-icon>\n </button>\n\n <div class=\"clr-focus-indicator\" [class.clr-focus]=\"focused\"></div>\n</div>\n\n<!-- Both close handlers are handled manually due to issues in Edge browser.\n Additionally 'outsideClickToClose' has complex handling that's necessary\n to be manual due to the component architecture -->\n<div role=\"dialog\" *clrPopoverContent=\"openState at smartPosition; outsideClickToClose: false; scrollToClose: false\">\n <ng-content></ng-content>\n</div>\n" }]
321
321
  }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.Injector }, { type: i1.NgControl, decorators: [{
322
322
  type: Self
323
323
  }, {
@@ -357,4 +357,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
357
357
  type: Output,
358
358
  args: ['clrSelectionChange']
359
359
  }] } });
360
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9mb3Jtcy9jb21ib2JveC9jb21ib2JveC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2Zvcm1zL2NvbWJvYm94L2NvbWJvYm94Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUVYLFNBQVMsRUFHVCxJQUFJLEVBQ0osUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUVaLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUVyRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUdoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDakYsT0FBTyxFQUFFLCtCQUErQixFQUF3QixNQUFNLDRDQUE0QyxDQUFDO0FBQ25ILE9BQU8sRUFBRSxzQkFBc0IsRUFB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QWdCO2dCQUVRLGFBQWE7c0JBQTVDLE1BQU07dUJBQUMsZUFBZTtnQkFHYyxrQkFBa0I7c0JBQXRELE1BQU07dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDIyIFZNd2FyZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBQTEFURk9STV9JRCxcbiAgUmVuZGVyZXIyLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIEluamVjdG9yLFxuICBTZWxmLFxuICBPcHRpb25hbCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBBZnRlckNvbnRlbnRJbml0LFxuICBJbmplY3QsXG4gIENoYW5nZURldGVjdG9yUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUE9QT1ZFUl9IT1NUX0FOQ0hPUiB9IGZyb20gJy4uLy4uL3BvcG92ZXIvY29tbW9uL3BvcG92ZXItaG9zdC1hbmNob3IudG9rZW4nO1xuXG5pbXBvcnQgeyBPcHRpb25TZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvb3B0aW9uLXNlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFdyYXBwZWRGb3JtQ29udHJvbCB9IGZyb20gJy4uL2NvbW1vbi93cmFwcGVkLWNvbnRyb2wnO1xuaW1wb3J0IHsgQ2xyQ29tYm9ib3hDb250YWluZXIgfSBmcm9tICcuL2NvbWJvYm94LWNvbnRhaW5lcic7XG5pbXBvcnQgeyBOZ0NvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ2xyT3B0aW9uU2VsZWN0ZWQgfSBmcm9tICcuL29wdGlvbi1zZWxlY3RlZC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ2xyQ29tbW9uU3RyaW5nc1NlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9pMThuL2NvbW1vbi1zdHJpbmdzLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBBcmlhU2VydmljZSB9IGZyb20gJy4uLy4uL3V0aWxzL2FyaWEvYXJpYS5zZXJ2aWNlJztcbmltcG9ydCB7IElGX0FDVElWRV9JRF9QUk9WSURFUiB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbmRpdGlvbmFsL2lmLWFjdGl2ZS5zZXJ2aWNlJztcbmltcG9ydCB7IE11bHRpU2VsZWN0Q29tYm9ib3hNb2RlbCB9IGZyb20gJy4vbW9kZWwvbXVsdGktc2VsZWN0LWNvbWJvYm94Lm1vZGVsJztcbmltcG9ydCB7IFNpbmdsZVNlbGVjdENvbWJvYm94TW9kZWwgfSBmcm9tICcuL21vZGVsL3NpbmdsZS1zZWxlY3QtY29tYm9ib3gubW9kZWwnO1xuaW1wb3J0IHsgQ09NQk9CT1hfRk9DVVNfSEFORExFUl9QUk9WSURFUiwgQ29tYm9ib3hGb2N1c0hhbmRsZXIgfSBmcm9tICcuL3Byb3ZpZGVycy9jb21ib2JveC1mb2N1cy1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRk9DVVNfU0VSVklDRV9QUk9WSURFUiB9IGZyb20gJy4uLy4uL3V0aWxzL2ZvY3VzL2ZvY3VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQkFDS1NQQUNFIH0gZnJvbSAnLi4vLi4vdXRpbHMva2V5LWNvZGVzL2tleS1jb2Rlcyc7XG5cbmltcG9ydCB7IENsclBvcG92ZXJQb3NpdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxzL3BvcG92ZXIvaW50ZXJmYWNlcy9wb3BvdmVyLXBvc2l0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDbHJBeGlzIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9lbnVtcy9heGlzLmVudW0nO1xuaW1wb3J0IHsgQ2xyQWxpZ25tZW50IH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9lbnVtcy9hbGlnbm1lbnQuZW51bSc7XG5pbXBvcnQgeyBDbHJTaWRlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9lbnVtcy9zaWRlLmVudW0nO1xuaW1wb3J0IHsgQ2xyUG9wb3ZlclRvZ2dsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9wb3BvdmVyL3Byb3ZpZGVycy9wb3BvdmVyLXRvZ2dsZS5zZXJ2aWNlJztcbmltcG9ydCB7IENsclBvcG92ZXJFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9wcm92aWRlcnMvcG9wb3Zlci1ldmVudHMuc2VydmljZSc7XG5pbXBvcnQgeyBDbHJQb3BvdmVyUG9zaXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9wcm92aWRlcnMvcG9wb3Zlci1wb3NpdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbWJvYm94Q29udGFpbmVyU2VydmljZSB9IGZyb20gJy4vcHJvdmlkZXJzL2NvbWJvYm94LWNvbnRhaW5lci5zZXJ2aWNlJztcbmltcG9ydCB7IExvYWRpbmdMaXN0ZW5lciB9IGZyb20gJy4uLy4uL3V0aWxzL2xvYWRpbmcvbG9hZGluZy1saXN0ZW5lcic7XG5pbXBvcnQgeyBDbHJMb2FkaW5nU3RhdGUgfSBmcm9tICcuLi8uLi91dGlscy9sb2FkaW5nL2xvYWRpbmcnO1xuaW1wb3J0IHsgQ29tYm9ib3hNb2RlbCB9IGZyb20gJy4vbW9kZWwvY29tYm9ib3gubW9kZWwnO1xuaW1wb3J0IHsgSWZDb250cm9sU3RhdGVTZXJ2aWNlLCBDT05UUk9MX1NUQVRFIH0gZnJvbSAnLi4vY29tbW9uL2lmLWNvbnRyb2wtc3RhdGUvaWYtY29udHJvbC1zdGF0ZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2xyLWNvbWJvYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbWJvYm94Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICBDbHJQb3BvdmVyVG9nZ2xlU2VydmljZSxcbiAgICB7IHByb3ZpZGU6IFBPUE9WRVJfSE9TVF9BTkNIT1IsIHVzZUV4aXN0aW5nOiBFbGVtZW50UmVmIH0sXG4gICAgT3B0aW9uU2VsZWN0aW9uU2VydmljZSxcbiAgICB7IHByb3ZpZGU6IExvYWRpbmdMaXN0ZW5lciwgdXNlRXhpc3Rpbmc6IENsckNvbWJvYm94IH0sXG4gICAgSUZfQUNUSVZFX0lEX1BST1ZJREVSLFxuICAgIEFyaWFTZXJ2aWNlLFxuICAgIEZPQ1VTX1NFUlZJQ0VfUFJPVklERVIsXG4gICAgQ09NQk9CT1hfRk9DVVNfSEFORExFUl9QUk9WSURFUixcbiAgICBDbHJQb3BvdmVyVG9nZ2xlU2VydmljZSxcbiAgICBDbHJQb3BvdmVyRXZlbnRzU2VydmljZSxcbiAgICBDbHJQb3BvdmVyUG9zaXRpb25TZXJ2aWNlLFxuICBdLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5hcmlhLXJlcXVpcmVkXSc6ICd0cnVlJyxcbiAgICAnW2NsYXNzLmNsci1jb21ib2JveF0nOiAndHJ1ZScsXG4gICAgJ1tjbGFzcy5jbHItY29tYm9ib3gtZGlzYWJsZWRdJzogJ2NvbnRyb2w/LmRpc2FibGVkJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQ2xyQ29tYm9ib3g8VD5cbiAgZXh0ZW5kcyBXcmFwcGVkRm9ybUNvbnRyb2w8Q2xyQ29tYm9ib3hDb250YWluZXI+XG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIExvYWRpbmdMaXN0ZW5lciwgQWZ0ZXJDb250ZW50SW5pdFxue1xuICBAVmlld0NoaWxkKCd0ZXh0Ym94SW5wdXQnKSB0ZXh0Ym94OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCd0cmlnZ2VyJykgdHJpZ2dlcjogRWxlbWVudFJlZjtcbiAgQENvbnRlbnRDaGlsZChDbHJPcHRpb25TZWxlY3RlZCkgb3B0aW9uU2VsZWN0ZWQ6IENsck9wdGlvblNlbGVjdGVkPFQ+O1xuXG4gIHByaXZhdGUgb25DaGFuZ2VDYWxsYmFjazogKG1vZGVsOiBUIHwgVFtdKSA9PiBhbnk7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGluZGV4ID0gMTtcblxuICBpbnZhbGlkID0gZmFsc2U7XG4gIGZvY3VzZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICB2Y3I6IFZpZXdDb250YWluZXJSZWYsXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBTZWxmKClcbiAgICBAT3B0aW9uYWwoKVxuICAgIHB1YmxpYyBjb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGVsOiBFbGVtZW50UmVmLFxuICAgIHB1YmxpYyBvcHRpb25TZWxlY3Rpb25TZXJ2aWNlOiBPcHRpb25TZWxlY3Rpb25TZXJ2aWNlPFQ+LFxuICAgIHB1YmxpYyBjb21tb25TdHJpbmdzOiBDbHJDb21tb25TdHJpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIHRvZ2dsZVNlcnZpY2U6IENsclBvcG92ZXJUb2dnbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9zaXRpb25TZXJ2aWNlOiBDbHJQb3BvdmVyUG9zaXRpb25TZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgY29udHJvbFN0YXRlU2VydmljZTogSWZDb250cm9sU3RhdGVTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgY29udGFpbmVyU2VydmljZTogQ29tYm9ib3hDb250YWluZXJTZXJ2aWNlLFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogYW55LFxuICAgIHByaXZhdGUgYXJpYVNlcnZpY2U6IEFyaWFTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9jdXNIYW5kbGVyOiBDb21ib2JveEZvY3VzSGFuZGxlcjxUPixcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgc3VwZXIodmNyLCBDbHJDb21ib2JveENvbnRhaW5lciwgaW5qZWN0b3IsIGNvbnRyb2wsIHJlbmRlcmVyLCBlbCk7XG4gICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgIGNvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuICAgIC8vIGRlZmF1bHQgdG8gU2luZ2xlU2VsZWN0Q29tYm9ib3hNb2RlbCwgaW4gY2FzZSB0aGUgb3B0aW9uYWwgaW5wdXQgW0Nsck11bHRpXSBpc24ndCB1c2VkXG4gICAgdGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsID0gbmV3IFNpbmdsZVNlbGVjdENvbWJvYm94TW9kZWw8VD4oKTtcbiAgICB0aGlzLnVwZGF0ZUNvbnRyb2xWYWx1ZSgpO1xuICB9XG5cbiAgZm9jdXNlZFBpbGw6IGFueTtcblxuICAvLyBPdmVycmlkZSB0aGUgaWQgb2YgV3JhcHBlZEZvcm1Db250cm9sLCBhcyB3ZSB3YW50IHRvIG1vdmUgaXQgdG8gdGhlIGVtYmVkZGVkIGlucHV0LlxuICAvLyBPdGhlcndpc2UgdGhlIGxhYmVsL2NvbXBvbmVudCBjb25uZWN0aW9uIGRvZXMgbm90IHdvcmsgYW5kIHNjcmVlbiByZWFkZXJzIGRvIG5vdCByZWFkIHRoZSBsYWJlbC5cbiAgb3ZlcnJpZGUgZ2V0IGlkKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xJZFNlcnZpY2UuaWQgKyAnLWNvbWJvYm94JztcbiAgfVxuXG4gIG92ZXJyaWRlIHNldCBpZChpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIuaWQgPSBpZDtcbiAgfVxuXG4gIGlucHV0SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sSWRTZXJ2aWNlLmlkO1xuICB9XG5cbiAgZ2V0IG9wZW5TdGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW47XG4gIH1cblxuICBwcml2YXRlIF9zZWFyY2hUZXh0ID0gJyc7XG5cbiAgc2V0IHNlYXJjaFRleHQodGV4dDogc3RyaW5nKSB7XG4gICAgLy8gaWYgaW5wdXQgdGV4dCBoYXMgY2hhbmdlZCBzaW5jZSBsYXN0IHRpbWUsIGZpcmUgYSBjaGFuZ2UgZXZlbnQgc28gYXBwbGljYXRpb24gY2FuIHJlYWN0IHRvIGl0XG4gICAgaWYgKHRleHQgIT09IHRoaXMuX3NlYXJjaFRleHQpIHtcbiAgICAgIHRoaXMuX3NlYXJjaFRleHQgPSB0ZXh0O1xuICAgICAgdGhpcy5jbHJJbnB1dENoYW5nZS5lbWl0KHRoaXMuc2VhcmNoVGV4dCk7XG4gICAgICB0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2UuY3VycmVudElucHV0ID0gdGhpcy5zZWFyY2hUZXh0O1xuICAgIH1cbiAgfVxuXG4gIGdldCBzZWFyY2hUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaFRleHQ7XG4gIH1cblxuICBnZXQgbXVsdGlTZWxlY3RNb2RlbCgpOiBUW10ge1xuICAgIGlmICghdGhpcy5tdWx0aVNlbGVjdCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ211bHRpU2VsZWN0TW9kZWwgaXMgbm90IGF2YWlsYWJsZSBpbiBzaW5nbGUgc2VsZWN0aW9uIGNvbnRleHQnKTtcbiAgICB9XG4gICAgcmV0dXJuICh0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uTW9kZWwgYXMgTXVsdGlTZWxlY3RDb21ib2JveE1vZGVsPFQ+KS5tb2RlbDtcbiAgfVxuXG4gIHB1YmxpYyBzbWFydFBvc2l0aW9uOiBDbHJQb3BvdmVyUG9zaXRpb24gPSB7XG4gICAgYXhpczogQ2xyQXhpcy5WRVJUSUNBTCxcbiAgICBzaWRlOiBDbHJTaWRlLkFGVEVSLFxuICAgIGFuY2hvcjogQ2xyQWxpZ25tZW50LlNUQVJULFxuICAgIGNvbnRlbnQ6IENsckFsaWdubWVudC5TVEFSVCxcbiAgfTtcblxuICBsb2FkaW5nU3RhdGVDaGFuZ2Uoc3RhdGU6IENsckxvYWRpbmdTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5sb2FkaW5nID0gc3RhdGUgPT09IENsckxvYWRpbmdTdGF0ZS5MT0FESU5HO1xuICAgIHRoaXMucG9zaXRpb25TZXJ2aWNlLnJlYWxpZ24oKTtcbiAgICBpZiAoc3RhdGUgIT09IENsckxvYWRpbmdTdGF0ZS5MT0FESU5HICYmIGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmZvY3VzRmlyc3RBY3RpdmUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2wgJiYgdGhpcy5jb250cm9sLmRpc2FibGVkO1xuICB9XG5cbiAgdW5zZWxlY3QoaXRlbTogVCkge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnVuc2VsZWN0KGl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgncGxhY2Vob2xkZXInKSBwbGFjZWhvbGRlciA9ICcnO1xuXG4gIEBJbnB1dCgnY2xyTXVsdGknKVxuICBzZXQgbXVsdGlTZWxlY3QodmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25Nb2RlbCA9IG5ldyBNdWx0aVNlbGVjdENvbWJvYm94TW9kZWw8VD4oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaW4gdGhlb3J5LCBzZXR0aW5nIHRoaXMgYWdhaW4gc2hvdWxkIG5vdCBjYXVzZSBlcnJvcnMgZXZlbiB0aG91Z2ggd2UgYWxyZWFkeSBzZXQgaXQgaW4gY29uc3RydWN0b3IsXG4gICAgICAvLyBzaW5jZSB0aGUgaW5pdGlhbCBjYWxsIHRvIHdyaXRlVmFsdWUgKGNhdXNlZCBieSBbbmdNb2RlbF0gaW5wdXQpIHNob3VsZCBoYXBwZW4gYWZ0ZXIgdGhpc1xuICAgICAgdGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsID0gbmV3IFNpbmdsZVNlbGVjdENvbWJvYm94TW9kZWw8VD4oKTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVDb250cm9sVmFsdWUoKTtcbiAgfVxuXG4gIGdldCBtdWx0aVNlbGVjdCgpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLm11bHRpc2VsZWN0YWJsZTtcbiAgfVxuXG4gIGdldCBhcmlhQ29udHJvbHMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hcmlhU2VydmljZS5hcmlhQ29udHJvbHM7XG4gIH1cblxuICBnZXQgYXJpYU93bnMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hcmlhU2VydmljZS5hcmlhT3ducztcbiAgfVxuXG4gIGdldCBhcmlhRGVzY3JpYmVkQnlTZWxlY3Rpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ3NlbGVjdGlvbi0nICsgdGhpcy5pZDtcbiAgfVxuXG4gIGdldCBkaXNwbGF5RmllbGQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLmRpc3BsYXlGaWVsZDtcbiAgfVxuXG4gIG9uQmx1cigpIHtcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrKCk7XG4gICAgaWYgKHRoaXMuY29udHJvbC5jb250cm9sLnVwZGF0ZU9uID09PSAnYmx1cicpIHtcbiAgICAgIHRoaXMuY29udHJvbC5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG4gICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gIH1cblxuICBvbkZvY3VzKCkge1xuICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7XG4gIH1cblxuICBnZXRTZWxlY3Rpb25BcmlhTGFiZWwoKSB7XG4gICAgaWYgKHRoaXMuY29udGFpbmVyU2VydmljZSAmJiB0aGlzLmNvbnRhaW5lclNlcnZpY2UubGFiZWxUZXh0KSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5jb250YWluZXJTZXJ2aWNlLmxhYmVsVGV4dH0gJHt0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5jb21ib2JveFNlbGVjdGlvbn1gO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jb21tb25TdHJpbmdzLmtleXMuY29tYm9ib3hTZWxlY3Rpb247XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgb25LZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIC8vIGlmIEJBQ0tTUEFDRSBpbiBtdWx0aXNlbGVjdCBtb2RlLCBkZWxldGUgdGhlIGxhc3QgcGlsbCBpZiB0ZXh0IGlzIGVtcHR5XG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IEJBQ0tTUEFDRSAmJiB0aGlzLm11bHRpU2VsZWN0ICYmIHRoaXMuX3NlYXJjaFRleHQubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBtdWx0aU1vZGVsOiBUW10gPSB0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uTW9kZWwubW9kZWwgYXMgVFtdO1xuICAgICAgaWYgKG11bHRpTW9kZWwgJiYgbXVsdGlNb2RlbC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IGxhc3RJdGVtOiBUID0gbXVsdGlNb2RlbFttdWx0aU1vZGVsLmxlbmd0aCAtIDFdO1xuICAgICAgICB0aGlzLmNvbnRyb2wuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgIHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS51bnNlbGVjdChsYXN0SXRlbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQE91dHB1dCgnY2xySW5wdXRDaGFuZ2UnKSBwdWJsaWMgY2xySW5wdXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KGZhbHNlKTtcblxuICBAT3V0cHV0KCdjbHJPcGVuQ2hhbmdlJykgcHVibGljIGNsck9wZW5DaGFuZ2U6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbkNoYW5nZTtcblxuICAvLyBUaGlzIG91dHB1dCBzaG91bGQgYmUgdXNlZCB0byBzZXQgdXAgYSBsaXZlIHJlZ2lvbiB1c2luZyBhcmlhLWxpdmUgYW5kIHBvcHVsYXRlIGl0IHdpdGggdXBkYXRlcyB0aGF0IHJlZmxlY3QgZWFjaCBjb21ib2JveCBjaGFuZ2VcbiAgQE91dHB1dCgnY2xyU2VsZWN0aW9uQ2hhbmdlJykgcHVibGljIGNsclNlbGVjdGlvbkNoYW5nZTogT2JzZXJ2YWJsZTxDb21ib2JveE1vZGVsPFQ+PiA9XG4gICAgdGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbkNoYW5nZWQ7XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplU3Vic2NyaXB0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25DaGFuZ2VkLnN1YnNjcmliZSgobmV3U2VsZWN0aW9uOiBDb21ib2JveE1vZGVsPFQ+KSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlSW5wdXRWYWx1ZShuZXdTZWxlY3Rpb24pO1xuICAgICAgICBpZiAodGhpcy5tdWx0aVNlbGVjdCkge1xuICAgICAgICAgIHRoaXMucG9zaXRpb25TZXJ2aWNlLnJlYWxpZ24oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMubXVsdGlTZWxlY3QgJiYgbmV3U2VsZWN0aW9uICYmICFuZXdTZWxlY3Rpb24uaXNFbXB0eSgpKSB7XG4gICAgICAgICAgdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUNvbnRyb2xWYWx1ZSgpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbkNoYW5nZS5zdWJzY3JpYmUob3BlbiA9PiB7XG4gICAgICAgIGlmIChvcGVuKSB7XG4gICAgICAgICAgdGhpcy5mb2N1c0ZpcnN0QWN0aXZlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubXVsdGlTZWxlY3QpIHtcbiAgICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSB0aGlzLmdldERpc3BsYXlOYW1lcyh0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uTW9kZWwubW9kZWwpWzBdIHx8ICcnO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMudG9nZ2xlU2VydmljZS5wb3BvdmVyQWxpZ25lZC5zdWJzY3JpYmUocG9wb3Zlck5vZGUgPT4ge1xuICAgICAgICAvLyBXaGVuIHVzZWQgb3V0c2lkZSBhIGNvbWJvYm94IGNvbnRhaW5lclxuICAgICAgICBpZiAoIXRoaXMuY29udGFpbmVyU2VydmljZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwb3BvdmVyOiBIVE1MRWxlbWVudCA9IHBvcG92ZXJOb2RlIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAvLyBVcGRhdGUgcG9zaXRpb24gaWYgcG9wb3ZlciBoaWRlcyB0aGUgbGFiZWxcbiAgICAgICAgaWYgKHBvcG92ZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIDwgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCkge1xuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUocG9wb3Zlck5vZGUsICd0b3AnLCBgJHtwb3BvdmVyLm9mZnNldFRvcCArIHRoaXMuY29udGFpbmVyU2VydmljZS5sYWJlbE9mZnNldH1weGApO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBpZiAodGhpcy5jb250cm9sU3RhdGVTZXJ2aWNlKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgdGhpcy5jb250cm9sU3RhdGVTZXJ2aWNlLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKGludmFsaWQgPT4ge1xuICAgICAgICAgIHRoaXMuaW52YWxpZCA9IGludmFsaWQgPT09IENPTlRST0xfU1RBVEUuSU5WQUxJRDtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgZm9jdXNGaXJzdEFjdGl2ZSgpIHtcbiAgICB0aGlzLmZvY3VzSGFuZGxlci5mb2N1c0ZpcnN0QWN0aXZlKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUlucHV0VmFsdWUobW9kZWw6IENvbWJvYm94TW9kZWw8VD4pIHtcbiAgICBpZiAoIXRoaXMubXVsdGlTZWxlY3QpIHtcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9IG1vZGVsLm1vZGVsID8gdGhpcy5nZXREaXNwbGF5TmFtZXMobW9kZWwubW9kZWwpWzBdIDogJyc7XG4gICAgICBpZiAodGhpcy5zZWFyY2hUZXh0KSB7XG4gICAgICAgIHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5jdXJyZW50SW5wdXQgPSB0aGlzLnNlYXJjaFRleHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb250cm9sVmFsdWUoKSB7XG4gICAgaWYgKHRoaXMub25DaGFuZ2VDYWxsYmFjaykge1xuICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25Nb2RlbC5tb2RlbCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW1wbGVtZW50YXRpb24gbWV0aG9kc1xuICB3cml0ZVZhbHVlKHZhbHVlOiBUIHwgVFtdKTogdm9pZCB7XG4gICAgdGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLm1vZGVsID0gdmFsdWU7XG4gICAgdGhpcy51cGRhdGVJbnB1dFZhbHVlKHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25Nb2RlbCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKG9uQ2hhbmdlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBvbkNoYW5nZTtcbiAgfVxuXG4gIGdldEFjdGl2ZURlc2NlbmRhbnQoKSB7XG4gICAgY29uc3QgbW9kZWwgPSB0aGlzLmZvY3VzSGFuZGxlci5wc2V1ZG9Gb2N1cy5tb2RlbDtcbiAgICByZXR1cm4gbW9kZWwgPyBtb2RlbC5pZCA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiBhbnk7XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gb25Ub3VjaGVkO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZSgpOiB2b2lkIHtcbiAgICAvLyBkbyBub3RoaW5nXG4gIH1cblxuICBmb2N1c0lucHV0KCkge1xuICAgIHRoaXMuZm9jdXNIYW5kbGVyLmZvY3VzSW5wdXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGlzcGxheU5hbWVzKG1vZGVsOiBUIHwgVFtdKSB7XG4gICAgaWYgKHRoaXMuZGlzcGxheUZpZWxkKSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkobW9kZWwpKSB7XG4gICAgICAgIG1vZGVsID0gW21vZGVsXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtb2RlbC5tYXAoaXRlbSA9PiAoaXRlbSA/IChpdGVtIGFzIGFueSlbdGhpcy5kaXNwbGF5RmllbGRdIDogbnVsbCkpO1xuICAgIH1cbiAgICByZXR1cm4gW3RoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25Nb2RlbC5tb2RlbF07XG4gIH1cblxuICAvLyBMaWZlY3ljbGUgbWV0aG9kc1xuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy5pbml0aWFsaXplU3Vic2NyaXB0aW9ucygpO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSB3aXRoIHByZXNlbGVjdGVkIHZhbHVlXG4gICAgaWYgKCF0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uTW9kZWwuaXNFbXB0eSgpKSB7XG4gICAgICB0aGlzLnVwZGF0ZUlucHV0VmFsdWUodGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5mb2N1c0hhbmRsZXIuY29tcG9uZW50Q2RSZWYgPSB0aGlzLmNkcjtcbiAgICB0aGlzLmZvY3VzSGFuZGxlci50ZXh0SW5wdXQgPSB0aGlzLnRleHRib3gubmF0aXZlRWxlbWVudDtcbiAgICB0aGlzLmZvY3VzSGFuZGxlci50cmlnZ2VyID0gdGhpcy50cmlnZ2VyLm5hdGl2ZUVsZW1lbnQ7XG4gICAgLy8gVGhlIHRleHQgaW5wdXQgaXMgdGhlIGFjdHVhbCBlbGVtZW50IHdlIGFyZSB3cmFwcGluZ1xuICAgIC8vIFRoaXMgYXNzaWdubWVudCBpcyBuZWVkZWQgYnkgdGhlIHdyYXBwZXIsIHNvIGl0IGNhbiBzZXRcbiAgICAvLyB0aGUgYXJpYSBwcm9wZXJ0aWVzIG9uIHRoZSBpbnB1dCBlbGVtZW50LCBub3Qgb24gdGhlIGNvbXBvbmVudC5cbiAgICB0aGlzLmVsID0gdGhpcy50ZXh0Ym94O1xuICB9XG59XG4iLCI8IS0tXG4qIENvcHlyaWdodCAoYykgMjAxNi0yMDIxIFZNd2FyZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4tLT5cblxuPCEtLSBUaGUgKGNsaWNrKSBoYW5kbGVyIGlzIG5lZWRlZCB0byBhdXRvLWZvY3VzIG9uIGlucHV0IGZpZWxkIHdoaWNoIGNhbiBub3QgY3VycmVudGx5IG9jY3VweSB0aGUgd2hvbGVcbiAgICAgd2lkdGggb2YgdGhlIGNvbXBvbmVudCwgYWZ0ZXIgYmVpbmcgd3JhcHBlZCB0byBhIG5ldyBsaW5lIC0tPlxuPGRpdlxuICBjbGFzcz1cImNsci1jb21ib2JveC13cmFwcGVyXCJcbiAgY2xyUG9wb3ZlckFuY2hvclxuICAoY2xpY2spPVwiZm9jdXNJbnB1dCgpXCJcbiAgW2NsYXNzLm11bHRpXT1cIm11bHRpU2VsZWN0XCJcbiAgW2NsYXNzLmludmFsaWRdPVwiaW52YWxpZFwiXG4+XG4gIDxzcGFuXG4gICAgKm5nSWY9XCJtdWx0aVNlbGVjdCAmJiBvcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLm1vZGVsXCJcbiAgICByb2xlPVwiZ3JpZFwiXG4gICAgY2xyUm92aW5nVGFiaW5kZXhcbiAgICBbY2xyUm92aW5nVGFiaW5kZXhEaXNhYmxlZF09XCJjb250cm9sPy5kaXNhYmxlZFwiXG4gICAgY2xyRGlyZWN0aW9uPVwiYm90aFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRTZWxlY3Rpb25BcmlhTGFiZWwoKVwiXG4gICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJjb250cm9sPy5kaXNhYmxlZD8gdHJ1ZTogbnVsbFwiXG4gID5cbiAgICA8c3BhbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBtdWx0aVNlbGVjdE1vZGVsOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJsYWJlbCBsYWJlbC1jb21ib2JveC1waWxsXCIgcm9sZT1cInJvd1wiPlxuICAgICAgPHNwYW4gcm9sZT1cImdyaWRjZWxsXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY2xyLWNvbWJvYm94LXBpbGwtY29udGVudFwiIGNscktleUZvY3VzSXRlbT5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cIm9wdGlvblNlbGVjdGVkXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9wdGlvblNlbGVjdGVkLnRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0OiBvcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLm1vZGVsW2ldfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiByb2xlPVwiZ3JpZGNlbGxcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNscktleUZvY3VzSXRlbVxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiY2xyLWNvbWJvYm94LXJlbW92ZS1idG5cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJjb250cm9sPy5kaXNhYmxlZD8gdHJ1ZTogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb21tb25TdHJpbmdzLmtleXMuY29tYm9ib3hEZWxldGUgKyAnICcgKyBvcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLnRvU3RyaW5nKGRpc3BsYXlGaWVsZCwgaSlcIlxuICAgICAgICAgIChjbGljayk9XCJ1bnNlbGVjdChpdGVtKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y2RzLWljb24gc2hhcGU9XCJ3aW5kb3ctY2xvc2VcIiBzaXplPVwiMTJcIj48L2Nkcy1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L3NwYW4+XG4gIDwvc3Bhbj5cblxuICA8c3BhbiBjbGFzcz1cImNsci1jb21ib2JveC1pbnB1dC13cmFwcGVyXCI+XG4gICAgPGlucHV0XG4gICAgICAjdGV4dGJveElucHV0XG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBbaWRdPVwiaW5wdXRJZCgpXCJcbiAgICAgIHJvbGU9XCJjb21ib2JveFwiXG4gICAgICBjbGFzcz1cImNsci1pbnB1dCBjbHItY29tYm9ib3gtaW5wdXRcIlxuICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCJcbiAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIlxuICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJvcGVuU3RhdGVcIlxuICAgICAgW2F0dHIuYXJpYS1vd25zXT1cImFyaWFPd25zXCJcbiAgICAgIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcbiAgICAgIGFyaWEtYXV0b2NvbXBsZXRlPVwibGlzdFwiXG4gICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImNvbnRyb2w/LmludmFsaWQ/IHRydWU6IG51bGxcIlxuICAgICAgW2Rpc2FibGVkXT1cImNvbnRyb2w/LmRpc2FibGVkPyB0cnVlOiBudWxsXCJcbiAgICAgIFthdHRyLmFyaWEtYWN0aXZlZGVzY2VuZGFudF09XCJnZXRBY3RpdmVEZXNjZW5kYW50KClcIlxuICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgYXJpYS1tdWx0aWxpbmU9XCJmYWxzZVwiXG4gICAgLz5cbiAgPC9zcGFuPlxuXG4gIDwhLS0gTm8gY2xpY2sgaGFuZGxlciwgYXMgaXQgdXNlcyB0aGUgaGFuZGxlciBvbiB0aGUgLmNsci1jb21ib2JveC13cmFwcGVyIC0tPlxuICA8YnV0dG9uXG4gICAgY2xyUG9wb3Zlck9wZW5DbG9zZUJ1dHRvblxuICAgICN0cmlnZ2VyXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJjbHItY29tYm9ib3gtdHJpZ2dlclwiXG4gICAgdGFiaW5kZXg9XCItMVwiXG4gICAgW2Rpc2FibGVkXT1cImNvbnRyb2w/LmRpc2FibGVkIHx8IG51bGxcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29tbW9uU3RyaW5ncy5rZXlzLmNvbWJvYm94T3BlblwiXG4gID5cbiAgICA8Y2RzLWljb24gc2hhcGU9XCJhbmdsZVwiIGRpcmVjdGlvbj1cImRvd25cIiBzaXplPVwiMTJcIj48L2Nkcy1pY29uPlxuICA8L2J1dHRvbj5cblxuICA8ZGl2IGNsYXNzPVwiY2xyLWZvY3VzLWluZGljYXRvclwiIFtjbGFzcy5jbHItZm9jdXNdPVwiZm9jdXNlZFwiPjwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gQm90aCBjbG9zZSBoYW5kbGVycyBhcmUgaGFuZGxlZCBtYW51YWxseSBkdWUgdG8gaXNzdWVzIGluIEVkZ2UgYnJvd3Nlci5cbiAgICAgQWRkaXRpb25hbGx5ICdvdXRzaWRlQ2xpY2tUb0Nsb3NlJyBoYXMgY29tcGxleCBoYW5kbGluZyB0aGF0J3MgbmVjZXNzYXJ5XG4gICAgIHRvIGJlIG1hbnVhbCBkdWUgdG8gdGhlIGNvbXBvbmVudCBhcmNoaXRlY3R1cmUgLS0+XG48ZGl2IHJvbGU9XCJkaWFsb2dcIiAqY2xyUG9wb3ZlckNvbnRlbnQ9XCJvcGVuU3RhdGUgYXQgc21hcnRQb3NpdGlvbjsgb3V0c2lkZUNsaWNrVG9DbG9zZTogZmFsc2U7IHNjcm9sbFRvQ2xvc2U6IGZhbHNlXCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
360
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9mb3Jtcy9jb21ib2JveC9jb21ib2JveC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2Zvcm1zL2NvbWJvYm94L2NvbWJvYm94Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUVYLFNBQVMsRUFHVCxJQUFJLEVBQ0osUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUVaLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUVyRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUdoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDakYsT0FBTyxFQUFFLCtCQUErQixFQUF3QixNQUFNLDRDQUE0QyxDQUFDO0FBQ25ILE9BQU8sRUFBRSxzQkFBc0IsRUFB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QWdCO2dCQUVRLGFBQWE7c0JBQTVDLE1BQU07dUJBQUMsZUFBZTtnQkFHYyxrQkFBa0I7c0JBQXRELE1BQU07dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDIyIFZNd2FyZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBQTEFURk9STV9JRCxcbiAgUmVuZGVyZXIyLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIEluamVjdG9yLFxuICBTZWxmLFxuICBPcHRpb25hbCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBBZnRlckNvbnRlbnRJbml0LFxuICBJbmplY3QsXG4gIENoYW5nZURldGVjdG9yUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUE9QT1ZFUl9IT1NUX0FOQ0hPUiB9IGZyb20gJy4uLy4uL3BvcG92ZXIvY29tbW9uL3BvcG92ZXItaG9zdC1hbmNob3IudG9rZW4nO1xuXG5pbXBvcnQgeyBPcHRpb25TZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvb3B0aW9uLXNlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFdyYXBwZWRGb3JtQ29udHJvbCB9IGZyb20gJy4uL2NvbW1vbi93cmFwcGVkLWNvbnRyb2wnO1xuaW1wb3J0IHsgQ2xyQ29tYm9ib3hDb250YWluZXIgfSBmcm9tICcuL2NvbWJvYm94LWNvbnRhaW5lcic7XG5pbXBvcnQgeyBOZ0NvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ2xyT3B0aW9uU2VsZWN0ZWQgfSBmcm9tICcuL29wdGlvbi1zZWxlY3RlZC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ2xyQ29tbW9uU3RyaW5nc1NlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9pMThuL2NvbW1vbi1zdHJpbmdzLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBBcmlhU2VydmljZSB9IGZyb20gJy4uLy4uL3V0aWxzL2FyaWEvYXJpYS5zZXJ2aWNlJztcbmltcG9ydCB7IElGX0FDVElWRV9JRF9QUk9WSURFUiB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbmRpdGlvbmFsL2lmLWFjdGl2ZS5zZXJ2aWNlJztcbmltcG9ydCB7IE11bHRpU2VsZWN0Q29tYm9ib3hNb2RlbCB9IGZyb20gJy4vbW9kZWwvbXVsdGktc2VsZWN0LWNvbWJvYm94Lm1vZGVsJztcbmltcG9ydCB7IFNpbmdsZVNlbGVjdENvbWJvYm94TW9kZWwgfSBmcm9tICcuL21vZGVsL3NpbmdsZS1zZWxlY3QtY29tYm9ib3gubW9kZWwnO1xuaW1wb3J0IHsgQ09NQk9CT1hfRk9DVVNfSEFORExFUl9QUk9WSURFUiwgQ29tYm9ib3hGb2N1c0hhbmRsZXIgfSBmcm9tICcuL3Byb3ZpZGVycy9jb21ib2JveC1mb2N1cy1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRk9DVVNfU0VSVklDRV9QUk9WSURFUiB9IGZyb20gJy4uLy4uL3V0aWxzL2ZvY3VzL2ZvY3VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQkFDS1NQQUNFIH0gZnJvbSAnLi4vLi4vdXRpbHMva2V5LWNvZGVzL2tleS1jb2Rlcyc7XG5cbmltcG9ydCB7IENsclBvcG92ZXJQb3NpdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxzL3BvcG92ZXIvaW50ZXJmYWNlcy9wb3BvdmVyLXBvc2l0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDbHJBeGlzIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9lbnVtcy9heGlzLmVudW0nO1xuaW1wb3J0IHsgQ2xyQWxpZ25tZW50IH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9lbnVtcy9hbGlnbm1lbnQuZW51bSc7XG5pbXBvcnQgeyBDbHJTaWRlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9lbnVtcy9zaWRlLmVudW0nO1xuaW1wb3J0IHsgQ2xyUG9wb3ZlclRvZ2dsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9wb3BvdmVyL3Byb3ZpZGVycy9wb3BvdmVyLXRvZ2dsZS5zZXJ2aWNlJztcbmltcG9ydCB7IENsclBvcG92ZXJFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9wcm92aWRlcnMvcG9wb3Zlci1ldmVudHMuc2VydmljZSc7XG5pbXBvcnQgeyBDbHJQb3BvdmVyUG9zaXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9wcm92aWRlcnMvcG9wb3Zlci1wb3NpdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbWJvYm94Q29udGFpbmVyU2VydmljZSB9IGZyb20gJy4vcHJvdmlkZXJzL2NvbWJvYm94LWNvbnRhaW5lci5zZXJ2aWNlJztcbmltcG9ydCB7IExvYWRpbmdMaXN0ZW5lciB9IGZyb20gJy4uLy4uL3V0aWxzL2xvYWRpbmcvbG9hZGluZy1saXN0ZW5lcic7XG5pbXBvcnQgeyBDbHJMb2FkaW5nU3RhdGUgfSBmcm9tICcuLi8uLi91dGlscy9sb2FkaW5nL2xvYWRpbmcnO1xuaW1wb3J0IHsgQ29tYm9ib3hNb2RlbCB9IGZyb20gJy4vbW9kZWwvY29tYm9ib3gubW9kZWwnO1xuaW1wb3J0IHsgSWZDb250cm9sU3RhdGVTZXJ2aWNlLCBDT05UUk9MX1NUQVRFIH0gZnJvbSAnLi4vY29tbW9uL2lmLWNvbnRyb2wtc3RhdGUvaWYtY29udHJvbC1zdGF0ZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2xyLWNvbWJvYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbWJvYm94Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICBDbHJQb3BvdmVyVG9nZ2xlU2VydmljZSxcbiAgICB7IHByb3ZpZGU6IFBPUE9WRVJfSE9TVF9BTkNIT1IsIHVzZUV4aXN0aW5nOiBFbGVtZW50UmVmIH0sXG4gICAgT3B0aW9uU2VsZWN0aW9uU2VydmljZSxcbiAgICB7IHByb3ZpZGU6IExvYWRpbmdMaXN0ZW5lciwgdXNlRXhpc3Rpbmc6IENsckNvbWJvYm94IH0sXG4gICAgSUZfQUNUSVZFX0lEX1BST1ZJREVSLFxuICAgIEFyaWFTZXJ2aWNlLFxuICAgIEZPQ1VTX1NFUlZJQ0VfUFJPVklERVIsXG4gICAgQ09NQk9CT1hfRk9DVVNfSEFORExFUl9QUk9WSURFUixcbiAgICBDbHJQb3BvdmVyVG9nZ2xlU2VydmljZSxcbiAgICBDbHJQb3BvdmVyRXZlbnRzU2VydmljZSxcbiAgICBDbHJQb3BvdmVyUG9zaXRpb25TZXJ2aWNlLFxuICBdLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5hcmlhLXJlcXVpcmVkXSc6ICd0cnVlJyxcbiAgICAnW2NsYXNzLmNsci1jb21ib2JveF0nOiAndHJ1ZScsXG4gICAgJ1tjbGFzcy5jbHItY29tYm9ib3gtZGlzYWJsZWRdJzogJ2NvbnRyb2w/LmRpc2FibGVkJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQ2xyQ29tYm9ib3g8VD5cbiAgZXh0ZW5kcyBXcmFwcGVkRm9ybUNvbnRyb2w8Q2xyQ29tYm9ib3hDb250YWluZXI+XG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIExvYWRpbmdMaXN0ZW5lciwgQWZ0ZXJDb250ZW50SW5pdFxue1xuICBAVmlld0NoaWxkKCd0ZXh0Ym94SW5wdXQnKSB0ZXh0Ym94OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCd0cmlnZ2VyJykgdHJpZ2dlcjogRWxlbWVudFJlZjtcbiAgQENvbnRlbnRDaGlsZChDbHJPcHRpb25TZWxlY3RlZCkgb3B0aW9uU2VsZWN0ZWQ6IENsck9wdGlvblNlbGVjdGVkPFQ+O1xuXG4gIHByaXZhdGUgb25DaGFuZ2VDYWxsYmFjazogKG1vZGVsOiBUIHwgVFtdKSA9PiBhbnk7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGluZGV4ID0gMTtcblxuICBpbnZhbGlkID0gZmFsc2U7XG4gIGZvY3VzZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICB2Y3I6IFZpZXdDb250YWluZXJSZWYsXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBTZWxmKClcbiAgICBAT3B0aW9uYWwoKVxuICAgIHB1YmxpYyBjb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGVsOiBFbGVtZW50UmVmLFxuICAgIHB1YmxpYyBvcHRpb25TZWxlY3Rpb25TZXJ2aWNlOiBPcHRpb25TZWxlY3Rpb25TZXJ2aWNlPFQ+LFxuICAgIHB1YmxpYyBjb21tb25TdHJpbmdzOiBDbHJDb21tb25TdHJpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIHRvZ2dsZVNlcnZpY2U6IENsclBvcG92ZXJUb2dnbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9zaXRpb25TZXJ2aWNlOiBDbHJQb3BvdmVyUG9zaXRpb25TZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgY29udHJvbFN0YXRlU2VydmljZTogSWZDb250cm9sU3RhdGVTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgY29udGFpbmVyU2VydmljZTogQ29tYm9ib3hDb250YWluZXJTZXJ2aWNlLFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogYW55LFxuICAgIHByaXZhdGUgYXJpYVNlcnZpY2U6IEFyaWFTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9jdXNIYW5kbGVyOiBDb21ib2JveEZvY3VzSGFuZGxlcjxUPixcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgc3VwZXIodmNyLCBDbHJDb21ib2JveENvbnRhaW5lciwgaW5qZWN0b3IsIGNvbnRyb2wsIHJlbmRlcmVyLCBlbCk7XG4gICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgIGNvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuICAgIC8vIGRlZmF1bHQgdG8gU2luZ2xlU2VsZWN0Q29tYm9ib3hNb2RlbCwgaW4gY2FzZSB0aGUgb3B0aW9uYWwgaW5wdXQgW0Nsck11bHRpXSBpc24ndCB1c2VkXG4gICAgdGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsID0gbmV3IFNpbmdsZVNlbGVjdENvbWJvYm94TW9kZWw8VD4oKTtcbiAgICB0aGlzLnVwZGF0ZUNvbnRyb2xWYWx1ZSgpO1xuICB9XG5cbiAgZm9jdXNlZFBpbGw6IGFueTtcblxuICAvLyBPdmVycmlkZSB0aGUgaWQgb2YgV3JhcHBlZEZvcm1Db250cm9sLCBhcyB3ZSB3YW50IHRvIG1vdmUgaXQgdG8gdGhlIGVtYmVkZGVkIGlucHV0LlxuICAvLyBPdGhlcndpc2UgdGhlIGxhYmVsL2NvbXBvbmVudCBjb25uZWN0aW9uIGRvZXMgbm90IHdvcmsgYW5kIHNjcmVlbiByZWFkZXJzIGRvIG5vdCByZWFkIHRoZSBsYWJlbC5cbiAgb3ZlcnJpZGUgZ2V0IGlkKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xJZFNlcnZpY2UuaWQgKyAnLWNvbWJvYm94JztcbiAgfVxuXG4gIG92ZXJyaWRlIHNldCBpZChpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIuaWQgPSBpZDtcbiAgfVxuXG4gIGlucHV0SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sSWRTZXJ2aWNlLmlkO1xuICB9XG5cbiAgZ2V0IG9wZW5TdGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW47XG4gIH1cblxuICBwcml2YXRlIF9zZWFyY2hUZXh0ID0gJyc7XG5cbiAgc2V0IHNlYXJjaFRleHQodGV4dDogc3RyaW5nKSB7XG4gICAgLy8gaWYgaW5wdXQgdGV4dCBoYXMgY2hhbmdlZCBzaW5jZSBsYXN0IHRpbWUsIGZpcmUgYSBjaGFuZ2UgZXZlbnQgc28gYXBwbGljYXRpb24gY2FuIHJlYWN0IHRvIGl0XG4gICAgaWYgKHRleHQgIT09IHRoaXMuX3NlYXJjaFRleHQpIHtcbiAgICAgIHRoaXMuX3NlYXJjaFRleHQgPSB0ZXh0O1xuICAgICAgdGhpcy5jbHJJbnB1dENoYW5nZS5lbWl0KHRoaXMuc2VhcmNoVGV4dCk7XG4gICAgICB0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2UuY3VycmVudElucHV0ID0gdGhpcy5zZWFyY2hUZXh0O1xuICAgIH1cbiAgfVxuXG4gIGdldCBzZWFyY2hUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaFRleHQ7XG4gIH1cblxuICBnZXQgbXVsdGlTZWxlY3RNb2RlbCgpOiBUW10ge1xuICAgIGlmICghdGhpcy5tdWx0aVNlbGVjdCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ211bHRpU2VsZWN0TW9kZWwgaXMgbm90IGF2YWlsYWJsZSBpbiBzaW5nbGUgc2VsZWN0aW9uIGNvbnRleHQnKTtcbiAgICB9XG4gICAgcmV0dXJuICh0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uTW9kZWwgYXMgTXVsdGlTZWxlY3RDb21ib2JveE1vZGVsPFQ+KS5tb2RlbDtcbiAgfVxuXG4gIHB1YmxpYyBzbWFydFBvc2l0aW9uOiBDbHJQb3BvdmVyUG9zaXRpb24gPSB7XG4gICAgYXhpczogQ2xyQXhpcy5WRVJUSUNBTCxcbiAgICBzaWRlOiBDbHJTaWRlLkFGVEVSLFxuICAgIGFuY2hvcjogQ2xyQWxpZ25tZW50LlNUQVJULFxuICAgIGNvbnRlbnQ6IENsckFsaWdubWVudC5TVEFSVCxcbiAgfTtcblxuICBsb2FkaW5nU3RhdGVDaGFuZ2Uoc3RhdGU6IENsckxvYWRpbmdTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5sb2FkaW5nID0gc3RhdGUgPT09IENsckxvYWRpbmdTdGF0ZS5MT0FESU5HO1xuICAgIHRoaXMucG9zaXRpb25TZXJ2aWNlLnJlYWxpZ24oKTtcbiAgICBpZiAoc3RhdGUgIT09IENsckxvYWRpbmdTdGF0ZS5MT0FESU5HICYmIGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmZvY3VzRmlyc3RBY3RpdmUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2wgJiYgdGhpcy5jb250cm9sLmRpc2FibGVkO1xuICB9XG5cbiAgdW5zZWxlY3QoaXRlbTogVCkge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnVuc2VsZWN0KGl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgncGxhY2Vob2xkZXInKSBwbGFjZWhvbGRlciA9ICcnO1xuXG4gIEBJbnB1dCgnY2xyTXVsdGknKVxuICBzZXQgbXVsdGlTZWxlY3QodmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25Nb2RlbCA9IG5ldyBNdWx0aVNlbGVjdENvbWJvYm94TW9kZWw8VD4oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaW4gdGhlb3J5LCBzZXR0aW5nIHRoaXMgYWdhaW4gc2hvdWxkIG5vdCBjYXVzZSBlcnJvcnMgZXZlbiB0aG91Z2ggd2UgYWxyZWFkeSBzZXQgaXQgaW4gY29uc3RydWN0b3IsXG4gICAgICAvLyBzaW5jZSB0aGUgaW5pdGlhbCBjYWxsIHRvIHdyaXRlVmFsdWUgKGNhdXNlZCBieSBbbmdNb2RlbF0gaW5wdXQpIHNob3VsZCBoYXBwZW4gYWZ0ZXIgdGhpc1xuICAgICAgdGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsID0gbmV3IFNpbmdsZVNlbGVjdENvbWJvYm94TW9kZWw8VD4oKTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVDb250cm9sVmFsdWUoKTtcbiAgfVxuXG4gIGdldCBtdWx0aVNlbGVjdCgpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLm11bHRpc2VsZWN0YWJsZTtcbiAgfVxuXG4gIGdldCBhcmlhQ29udHJvbHMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hcmlhU2VydmljZS5hcmlhQ29udHJvbHM7XG4gIH1cblxuICBnZXQgYXJpYU93bnMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hcmlhU2VydmljZS5hcmlhT3ducztcbiAgfVxuXG4gIGdldCBhcmlhRGVzY3JpYmVkQnlTZWxlY3Rpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ3NlbGVjdGlvbi0nICsgdGhpcy5pZDtcbiAgfVxuXG4gIGdldCBkaXNwbGF5RmllbGQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLmRpc3BsYXlGaWVsZDtcbiAgfVxuXG4gIG9uQmx1cigpIHtcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrKCk7XG4gICAgaWYgKHRoaXMuY29udHJvbC5jb250cm9sLnVwZGF0ZU9uID09PSAnYmx1cicpIHtcbiAgICAgIHRoaXMuY29udHJvbC5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG4gICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gIH1cblxuICBvbkZvY3VzKCkge1xuICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7XG4gIH1cblxuICBnZXRTZWxlY3Rpb25BcmlhTGFiZWwoKSB7XG4gICAgaWYgKHRoaXMuY29udGFpbmVyU2VydmljZSAmJiB0aGlzLmNvbnRhaW5lclNlcnZpY2UubGFiZWxUZXh0KSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5jb250YWluZXJTZXJ2aWNlLmxhYmVsVGV4dH0gJHt0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5jb21ib2JveFNlbGVjdGlvbn1gO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jb21tb25TdHJpbmdzLmtleXMuY29tYm9ib3hTZWxlY3Rpb247XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgb25LZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIC8vIGlmIEJBQ0tTUEFDRSBpbiBtdWx0aXNlbGVjdCBtb2RlLCBkZWxldGUgdGhlIGxhc3QgcGlsbCBpZiB0ZXh0IGlzIGVtcHR5XG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IEJBQ0tTUEFDRSAmJiB0aGlzLm11bHRpU2VsZWN0ICYmIHRoaXMuX3NlYXJjaFRleHQubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBtdWx0aU1vZGVsOiBUW10gPSB0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uTW9kZWwubW9kZWwgYXMgVFtdO1xuICAgICAgaWYgKG11bHRpTW9kZWwgJiYgbXVsdGlNb2RlbC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IGxhc3RJdGVtOiBUID0gbXVsdGlNb2RlbFttdWx0aU1vZGVsLmxlbmd0aCAtIDFdO1xuICAgICAgICB0aGlzLmNvbnRyb2wuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgIHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS51bnNlbGVjdChsYXN0SXRlbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQE91dHB1dCgnY2xySW5wdXRDaGFuZ2UnKSBwdWJsaWMgY2xySW5wdXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KGZhbHNlKTtcblxuICBAT3V0cHV0KCdjbHJPcGVuQ2hhbmdlJykgcHVibGljIGNsck9wZW5DaGFuZ2U6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbkNoYW5nZTtcblxuICAvLyBUaGlzIG91dHB1dCBzaG91bGQgYmUgdXNlZCB0byBzZXQgdXAgYSBsaXZlIHJlZ2lvbiB1c2luZyBhcmlhLWxpdmUgYW5kIHBvcHVsYXRlIGl0IHdpdGggdXBkYXRlcyB0aGF0IHJlZmxlY3QgZWFjaCBjb21ib2JveCBjaGFuZ2VcbiAgQE91dHB1dCgnY2xyU2VsZWN0aW9uQ2hhbmdlJykgcHVibGljIGNsclNlbGVjdGlvbkNoYW5nZTogT2JzZXJ2YWJsZTxDb21ib2JveE1vZGVsPFQ+PiA9XG4gICAgdGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbkNoYW5nZWQ7XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplU3Vic2NyaXB0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25DaGFuZ2VkLnN1YnNjcmliZSgobmV3U2VsZWN0aW9uOiBDb21ib2JveE1vZGVsPFQ+KSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlSW5wdXRWYWx1ZShuZXdTZWxlY3Rpb24pO1xuICAgICAgICBpZiAodGhpcy5tdWx0aVNlbGVjdCkge1xuICAgICAgICAgIHRoaXMucG9zaXRpb25TZXJ2aWNlLnJlYWxpZ24oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMubXVsdGlTZWxlY3QgJiYgbmV3U2VsZWN0aW9uICYmICFuZXdTZWxlY3Rpb24uaXNFbXB0eSgpKSB7XG4gICAgICAgICAgdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUNvbnRyb2xWYWx1ZSgpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbkNoYW5nZS5zdWJzY3JpYmUob3BlbiA9PiB7XG4gICAgICAgIGlmIChvcGVuKSB7XG4gICAgICAgICAgdGhpcy5mb2N1c0ZpcnN0QWN0aXZlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubXVsdGlTZWxlY3QpIHtcbiAgICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSB0aGlzLmdldERpc3BsYXlOYW1lcyh0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uTW9kZWwubW9kZWwpWzBdIHx8ICcnO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMudG9nZ2xlU2VydmljZS5wb3BvdmVyQWxpZ25lZC5zdWJzY3JpYmUocG9wb3Zlck5vZGUgPT4ge1xuICAgICAgICAvLyBXaGVuIHVzZWQgb3V0c2lkZSBhIGNvbWJvYm94IGNvbnRhaW5lclxuICAgICAgICBpZiAoIXRoaXMuY29udGFpbmVyU2VydmljZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwb3BvdmVyOiBIVE1MRWxlbWVudCA9IHBvcG92ZXJOb2RlIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAvLyBVcGRhdGUgcG9zaXRpb24gaWYgcG9wb3ZlciBoaWRlcyB0aGUgbGFiZWxcbiAgICAgICAgaWYgKHBvcG92ZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIDwgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCkge1xuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUocG9wb3Zlck5vZGUsICd0b3AnLCBgJHtwb3BvdmVyLm9mZnNldFRvcCArIHRoaXMuY29udGFpbmVyU2VydmljZS5sYWJlbE9mZnNldH1weGApO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBpZiAodGhpcy5jb250cm9sU3RhdGVTZXJ2aWNlKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgdGhpcy5jb250cm9sU3RhdGVTZXJ2aWNlLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKGludmFsaWQgPT4ge1xuICAgICAgICAgIHRoaXMuaW52YWxpZCA9IGludmFsaWQgPT09IENPTlRST0xfU1RBVEUuSU5WQUxJRDtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgZm9jdXNGaXJzdEFjdGl2ZSgpIHtcbiAgICB0aGlzLmZvY3VzSGFuZGxlci5mb2N1c0ZpcnN0QWN0aXZlKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUlucHV0VmFsdWUobW9kZWw6IENvbWJvYm94TW9kZWw8VD4pIHtcbiAgICBpZiAoIXRoaXMubXVsdGlTZWxlY3QpIHtcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9IG1vZGVsLm1vZGVsID8gdGhpcy5nZXREaXNwbGF5TmFtZXMobW9kZWwubW9kZWwpWzBdIDogJyc7XG4gICAgICBpZiAodGhpcy5zZWFyY2hUZXh0KSB7XG4gICAgICAgIHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5jdXJyZW50SW5wdXQgPSB0aGlzLnNlYXJjaFRleHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb250cm9sVmFsdWUoKSB7XG4gICAgaWYgKHRoaXMub25DaGFuZ2VDYWxsYmFjaykge1xuICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25Nb2RlbC5tb2RlbCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW1wbGVtZW50YXRpb24gbWV0aG9kc1xuICB3cml0ZVZhbHVlKHZhbHVlOiBUIHwgVFtdKTogdm9pZCB7XG4gICAgdGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLm1vZGVsID0gdmFsdWU7XG4gICAgdGhpcy51cGRhdGVJbnB1dFZhbHVlKHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25Nb2RlbCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKG9uQ2hhbmdlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBvbkNoYW5nZTtcbiAgfVxuXG4gIGdldEFjdGl2ZURlc2NlbmRhbnQoKSB7XG4gICAgY29uc3QgbW9kZWwgPSB0aGlzLmZvY3VzSGFuZGxlci5wc2V1ZG9Gb2N1cy5tb2RlbDtcbiAgICByZXR1cm4gbW9kZWwgPyBtb2RlbC5pZCA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiBhbnk7XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gb25Ub3VjaGVkO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZSgpOiB2b2lkIHtcbiAgICAvLyBkbyBub3RoaW5nXG4gIH1cblxuICBmb2N1c0lucHV0KCkge1xuICAgIHRoaXMuZm9jdXNIYW5kbGVyLmZvY3VzSW5wdXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGlzcGxheU5hbWVzKG1vZGVsOiBUIHwgVFtdKSB7XG4gICAgaWYgKHRoaXMuZGlzcGxheUZpZWxkKSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkobW9kZWwpKSB7XG4gICAgICAgIG1vZGVsID0gW21vZGVsXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtb2RlbC5tYXAoaXRlbSA9PiAoaXRlbSA/IChpdGVtIGFzIGFueSlbdGhpcy5kaXNwbGF5RmllbGRdIDogbnVsbCkpO1xuICAgIH1cbiAgICByZXR1cm4gW3RoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25Nb2RlbC5tb2RlbF07XG4gIH1cblxuICAvLyBMaWZlY3ljbGUgbWV0aG9kc1xuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy5pbml0aWFsaXplU3Vic2NyaXB0aW9ucygpO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSB3aXRoIHByZXNlbGVjdGVkIHZhbHVlXG4gICAgaWYgKCF0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uTW9kZWwuaXNFbXB0eSgpKSB7XG4gICAgICB0aGlzLnVwZGF0ZUlucHV0VmFsdWUodGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5mb2N1c0hhbmRsZXIuY29tcG9uZW50Q2RSZWYgPSB0aGlzLmNkcjtcbiAgICB0aGlzLmZvY3VzSGFuZGxlci50ZXh0SW5wdXQgPSB0aGlzLnRleHRib3gubmF0aXZlRWxlbWVudDtcbiAgICB0aGlzLmZvY3VzSGFuZGxlci50cmlnZ2VyID0gdGhpcy50cmlnZ2VyLm5hdGl2ZUVsZW1lbnQ7XG4gICAgLy8gVGhlIHRleHQgaW5wdXQgaXMgdGhlIGFjdHVhbCBlbGVtZW50IHdlIGFyZSB3cmFwcGluZ1xuICAgIC8vIFRoaXMgYXNzaWdubWVudCBpcyBuZWVkZWQgYnkgdGhlIHdyYXBwZXIsIHNvIGl0IGNhbiBzZXRcbiAgICAvLyB0aGUgYXJpYSBwcm9wZXJ0aWVzIG9uIHRoZSBpbnB1dCBlbGVtZW50LCBub3Qgb24gdGhlIGNvbXBvbmVudC5cbiAgICB0aGlzLmVsID0gdGhpcy50ZXh0Ym94O1xuICB9XG59XG4iLCI8IS0tXG4qIENvcHlyaWdodCAoYykgMjAxNi0yMDIxIFZNd2FyZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4tLT5cblxuPCEtLSBUaGUgKGNsaWNrKSBoYW5kbGVyIGlzIG5lZWRlZCB0byBhdXRvLWZvY3VzIG9uIGlucHV0IGZpZWxkIHdoaWNoIGNhbiBub3QgY3VycmVudGx5IG9jY3VweSB0aGUgd2hvbGVcbiAgICAgd2lkdGggb2YgdGhlIGNvbXBvbmVudCwgYWZ0ZXIgYmVpbmcgd3JhcHBlZCB0byBhIG5ldyBsaW5lIC0tPlxuPGRpdlxuICBjbGFzcz1cImNsci1jb21ib2JveC13cmFwcGVyXCJcbiAgY2xyUG9wb3ZlckFuY2hvclxuICAoY2xpY2spPVwiZm9jdXNJbnB1dCgpXCJcbiAgW2NsYXNzLm11bHRpXT1cIm11bHRpU2VsZWN0XCJcbiAgW2NsYXNzLmludmFsaWRdPVwiaW52YWxpZFwiXG4+XG4gIDxzcGFuXG4gICAgKm5nSWY9XCJtdWx0aVNlbGVjdCAmJiBvcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLm1vZGVsXCJcbiAgICByb2xlPVwiZ3JpZFwiXG4gICAgY2xyUm92aW5nVGFiaW5kZXhcbiAgICBbY2xyUm92aW5nVGFiaW5kZXhEaXNhYmxlZF09XCJjb250cm9sPy5kaXNhYmxlZFwiXG4gICAgY2xyRGlyZWN0aW9uPVwiYm90aFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRTZWxlY3Rpb25BcmlhTGFiZWwoKVwiXG4gICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJjb250cm9sPy5kaXNhYmxlZD8gdHJ1ZTogbnVsbFwiXG4gID5cbiAgICA8c3BhbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBtdWx0aVNlbGVjdE1vZGVsOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJsYWJlbCBsYWJlbC1jb21ib2JveC1waWxsXCIgcm9sZT1cInJvd1wiPlxuICAgICAgPHNwYW4gcm9sZT1cImdyaWRjZWxsXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY2xyLWNvbWJvYm94LXBpbGwtY29udGVudFwiIGNscktleUZvY3VzSXRlbT5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cIm9wdGlvblNlbGVjdGVkXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9wdGlvblNlbGVjdGVkLnRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0OiBvcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLm1vZGVsW2ldfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiByb2xlPVwiZ3JpZGNlbGxcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNscktleUZvY3VzSXRlbVxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiY2xyLWNvbWJvYm94LXJlbW92ZS1idG5cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJjb250cm9sPy5kaXNhYmxlZD8gdHJ1ZTogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb21tb25TdHJpbmdzLmtleXMuY29tYm9ib3hEZWxldGUgKyAnICcgKyBvcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLnRvU3RyaW5nKGRpc3BsYXlGaWVsZCwgaSlcIlxuICAgICAgICAgIChjbGljayk9XCJ1bnNlbGVjdChpdGVtKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y2RzLWljb24gc2hhcGU9XCJ3aW5kb3ctY2xvc2VcIiBzaXplPVwiMTJcIj48L2Nkcy1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L3NwYW4+XG4gIDwvc3Bhbj5cblxuICA8c3BhbiBjbGFzcz1cImNsci1jb21ib2JveC1pbnB1dC13cmFwcGVyXCIgcm9sZT1cImNvbWJvYm94XCI+XG4gICAgPGlucHV0XG4gICAgICAjdGV4dGJveElucHV0XG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBbaWRdPVwiaW5wdXRJZCgpXCJcbiAgICAgIGNsYXNzPVwiY2xyLWlucHV0IGNsci1jb21ib2JveC1pbnB1dFwiXG4gICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRcIlxuICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoKVwiXG4gICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIm9wZW5TdGF0ZVwiXG4gICAgICBbYXR0ci5hcmlhLW93bnNdPVwiYXJpYU93bnNcIlxuICAgICAgYXJpYS1oYXNwb3B1cD1cImxpc3Rib3hcIlxuICAgICAgYXJpYS1hdXRvY29tcGxldGU9XCJsaXN0XCJcbiAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiY29udHJvbD8uaW52YWxpZD8gdHJ1ZTogbnVsbFwiXG4gICAgICBbZGlzYWJsZWRdPVwiY29udHJvbD8uZGlzYWJsZWQ/IHRydWU6IG51bGxcIlxuICAgICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cImdldEFjdGl2ZURlc2NlbmRhbnQoKVwiXG4gICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgLz5cbiAgPC9zcGFuPlxuXG4gIDwhLS0gTm8gY2xpY2sgaGFuZGxlciwgYXMgaXQgdXNlcyB0aGUgaGFuZGxlciBvbiB0aGUgLmNsci1jb21ib2JveC13cmFwcGVyIC0tPlxuICA8YnV0dG9uXG4gICAgY2xyUG9wb3Zlck9wZW5DbG9zZUJ1dHRvblxuICAgICN0cmlnZ2VyXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJjbHItY29tYm9ib3gtdHJpZ2dlclwiXG4gICAgdGFiaW5kZXg9XCItMVwiXG4gICAgW2Rpc2FibGVkXT1cImNvbnRyb2w/LmRpc2FibGVkIHx8IG51bGxcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29tbW9uU3RyaW5ncy5rZXlzLmNvbWJvYm94T3BlblwiXG4gID5cbiAgICA8Y2RzLWljb24gc2hhcGU9XCJhbmdsZVwiIGRpcmVjdGlvbj1cImRvd25cIiBzaXplPVwiMTJcIj48L2Nkcy1pY29uPlxuICA8L2J1dHRvbj5cblxuICA8ZGl2IGNsYXNzPVwiY2xyLWZvY3VzLWluZGljYXRvclwiIFtjbGFzcy5jbHItZm9jdXNdPVwiZm9jdXNlZFwiPjwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gQm90aCBjbG9zZSBoYW5kbGVycyBhcmUgaGFuZGxlZCBtYW51YWxseSBkdWUgdG8gaXNzdWVzIGluIEVkZ2UgYnJvd3Nlci5cbiAgICAgQWRkaXRpb25hbGx5ICdvdXRzaWRlQ2xpY2tUb0Nsb3NlJyBoYXMgY29tcGxleCBoYW5kbGluZyB0aGF0J3MgbmVjZXNzYXJ5XG4gICAgIHRvIGJlIG1hbnVhbCBkdWUgdG8gdGhlIGNvbXBvbmVudCBhcmNoaXRlY3R1cmUgLS0+XG48ZGl2IHJvbGU9XCJkaWFsb2dcIiAqY2xyUG9wb3ZlckNvbnRlbnQ9XCJvcGVuU3RhdGUgYXQgc21hcnRQb3NpdGlvbjsgb3V0c2lkZUNsaWNrVG9DbG9zZTogZmFsc2U7IHNjcm9sbFRvQ2xvc2U6IGZhbHNlXCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
@@ -77,11 +77,7 @@ ClrPasswordContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
77
77
  class="clr-input-group-icon-action"
78
78
  type="button"
79
79
  >
80
- <cds-icon
81
- status="info"
82
- [attr.shape]="show ? 'eye-hide' : 'eye'"
83
- [attr.title]="show ? commonStrings.keys.hide : commonStrings.keys.show"
84
- ></cds-icon>
80
+ <cds-icon status="info" [attr.shape]="show ? 'eye-hide' : 'eye'"></cds-icon>
85
81
  <span class="clr-sr-only">{{
86
82
  show ? commonStrings.keys.passwordHide : commonStrings.keys.passwordShow
87
83
  }}</span>
@@ -125,11 +121,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
125
121
  class="clr-input-group-icon-action"
126
122
  type="button"
127
123
  >
128
- <cds-icon
129
- status="info"
130
- [attr.shape]="show ? 'eye-hide' : 'eye'"
131
- [attr.title]="show ? commonStrings.keys.hide : commonStrings.keys.show"
132
- ></cds-icon>
124
+ <cds-icon status="info" [attr.shape]="show ? 'eye-hide' : 'eye'"></cds-icon>
133
125
  <span class="clr-sr-only">{{
134
126
  show ? commonStrings.keys.passwordHide : commonStrings.keys.passwordShow
135
127
  }}</span>
@@ -178,4 +170,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
178
170
  type: Input,
179
171
  args: ['clrToggle']
180
172
  }] } });
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvZm9ybXMvcGFzc3dvcmQvcGFzc3dvcmQtY29udGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUUxRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQzs7Ozs7Ozs7Ozs7O0FBRTVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBMkIsU0FBUyxDQUFDLENBQUM7QUFDdEYsTUFBTSxVQUFVLG9CQUFvQjtJQUNsQyxPQUFPLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFDRCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLG9CQUFvQixFQUFFLENBQUM7QUE4RHJHLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxvQkFBb0I7SUFnQjVELFlBQ0UscUJBQTRDLEVBQ2hDLGFBQTRCLEVBQ3hDLG1CQUF3QyxFQUN4QyxnQkFBa0MsRUFDM0IsWUFBMEIsRUFDRCxhQUF1QyxFQUNoRSxhQUFzQztRQUU3QyxLQUFLLENBQUMscUJBQXFCLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFKNUUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDRCxrQkFBYSxHQUFiLGFBQWEsQ0FBMEI7UUFDaEUsa0JBQWEsR0FBYixhQUFhLENBQXlCO1FBdEIvQyxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2IsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUNOLFlBQU8sR0FBRyxJQUFJLENBQUM7UUF3QnJCLCtEQUErRDtRQUMvRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzlDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBNUJELElBQ0ksU0FBUyxDQUFDLEtBQWM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUNELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBcUJELE1BQU07UUFDSixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQzs7aUhBdENVLG9CQUFvQixtTUFzQnJCLGNBQWM7cUdBdEJiLG9CQUFvQix1T0FUcEI7UUFDVCxnQkFBZ0I7UUFDaEIsZ0JBQWdCO1FBQ2hCLG1CQUFtQjtRQUNuQixZQUFZO1FBQ1osdUJBQXVCO1FBQ3ZCLHFCQUFxQjtLQUN0QixpREF4RFM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQ1Q7MkZBZVUsb0JBQW9CO2tCQTVEaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQ1Q7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLDBCQUEwQixFQUFFLE1BQU07d0JBQ2xDLG1DQUFtQyxFQUFFLG1CQUFtQjt3QkFDeEQsaUJBQWlCLEVBQUUsV0FBVztxQkFDL0I7b0JBQ0QsU0FBUyxFQUFFO3dCQUNULGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBQ25CLFlBQVk7d0JBQ1osdUJBQXVCO3dCQUN2QixxQkFBcUI7cUJBQ3RCO2lCQUNGOzswQkFtQkksUUFBUTs7MEJBSVIsTUFBTTsyQkFBQyxjQUFjO2tGQWhCcEIsU0FBUztzQkFEWixLQUFLO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgVk13YXJlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgSW5wdXQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQ29udHJvbENsYXNzU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi9wcm92aWRlcnMvY29udHJvbC1jbGFzcy5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRyb2xJZFNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vcHJvdmlkZXJzL2NvbnRyb2wtaWQuc2VydmljZSc7XG5pbXBvcnQgeyBGb2N1c1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vcHJvdmlkZXJzL2ZvY3VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi9wcm92aWRlcnMvbGF5b3V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgTmdDb250cm9sU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi9wcm92aWRlcnMvbmctY29udHJvbC5zZXJ2aWNlJztcbmltcG9ydCB7IENsckNvbW1vblN0cmluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvaTE4bi9jb21tb24tc3RyaW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IENsckFic3RyYWN0Q29udGFpbmVyIH0gZnJvbSAnLi4vY29tbW9uL2Fic3RyYWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgeyBJZkNvbnRyb2xTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vaWYtY29udHJvbC1zdGF0ZS9pZi1jb250cm9sLXN0YXRlLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgVE9HR0xFX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48QmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+Pih1bmRlZmluZWQpO1xuZXhwb3J0IGZ1bmN0aW9uIFRvZ2dsZVNlcnZpY2VGYWN0b3J5KCkge1xuICByZXR1cm4gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG59XG5leHBvcnQgY29uc3QgVE9HR0xFX1NFUlZJQ0VfUFJPVklERVIgPSB7IHByb3ZpZGU6IFRPR0dMRV9TRVJWSUNFLCB1c2VGYWN0b3J5OiBUb2dnbGVTZXJ2aWNlRmFjdG9yeSB9O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbHItcGFzc3dvcmQtY29udGFpbmVyJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJsYWJlbFwiPjwvbmctY29udGVudD5cbiAgICA8bGFiZWwgKm5nSWY9XCIhbGFiZWwgJiYgYWRkR3JpZCgpXCI+PC9sYWJlbD5cbiAgICA8ZGl2IGNsYXNzPVwiY2xyLWNvbnRyb2wtY29udGFpbmVyXCIgW25nQ2xhc3NdPVwiY29udHJvbENsYXNzKClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjbHItaW5wdXQtd3JhcHBlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2xyLWlucHV0LWdyb3VwXCIgW2NsYXNzLmNsci1mb2N1c109XCJmb2N1c1wiPlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjbHJQYXNzd29yZF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJjbHJUb2dnbGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZSgpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb250cm9sPy5kaXNhYmxlZFwiXG4gICAgICAgICAgICBjbGFzcz1cImNsci1pbnB1dC1ncm91cC1pY29uLWFjdGlvblwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Y2RzLWljb25cbiAgICAgICAgICAgICAgc3RhdHVzPVwiaW5mb1wiXG4gICAgICAgICAgICAgIFthdHRyLnNoYXBlXT1cInNob3cgPyAnZXllLWhpZGUnIDogJ2V5ZSdcIlxuICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJzaG93ID8gY29tbW9uU3RyaW5ncy5rZXlzLmhpZGUgOiBjb21tb25TdHJpbmdzLmtleXMuc2hvd1wiXG4gICAgICAgICAgICA+PC9jZHMtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2xyLXNyLW9ubHlcIj57e1xuICAgICAgICAgICAgICBzaG93ID8gY29tbW9uU3RyaW5ncy5rZXlzLnBhc3N3b3JkSGlkZSA6IGNvbW1vblN0cmluZ3Mua2V5cy5wYXNzd29yZFNob3dcbiAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGNkcy1pY29uXG4gICAgICAgICAgKm5nSWY9XCJzaG93SW52YWxpZFwiXG4gICAgICAgICAgY2xhc3M9XCJjbHItdmFsaWRhdGUtaWNvblwiXG4gICAgICAgICAgc3RhdHVzPVwiZGFuZ2VyXCJcbiAgICAgICAgICBzaGFwZT1cImV4Y2xhbWF0aW9uLWNpcmNsZVwiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgPjwvY2RzLWljb24+XG4gICAgICAgIDxjZHMtaWNvblxuICAgICAgICAgICpuZ0lmPVwic2hvd1ZhbGlkXCJcbiAgICAgICAgICBjbGFzcz1cImNsci12YWxpZGF0ZS1pY29uXCJcbiAgICAgICAgICBzaGFwZT1cImNoZWNrLWNpcmNsZVwiXG4gICAgICAgICAgc3RhdHVzPVwic3VjY2Vzc1wiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgPjwvY2RzLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci1jb250cm9sLWhlbHBlclwiICpuZ0lmPVwic2hvd0hlbHBlclwiPjwvbmctY29udGVudD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci1jb250cm9sLWVycm9yXCIgKm5nSWY9XCJzaG93SW52YWxpZFwiPjwvbmctY29udGVudD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci1jb250cm9sLXN1Y2Nlc3NcIiAqbmdJZj1cInNob3dWYWxpZFwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MuY2xyLWZvcm0tY29udHJvbF0nOiAndHJ1ZScsXG4gICAgJ1tjbGFzcy5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkXSc6ICdjb250cm9sPy5kaXNhYmxlZCcsXG4gICAgJ1tjbGFzcy5jbHItcm93XSc6ICdhZGRHcmlkKCknLFxuICB9LFxuICBwcm92aWRlcnM6IFtcbiAgICBOZ0NvbnRyb2xTZXJ2aWNlLFxuICAgIENvbnRyb2xJZFNlcnZpY2UsXG4gICAgQ29udHJvbENsYXNzU2VydmljZSxcbiAgICBGb2N1c1NlcnZpY2UsXG4gICAgVE9HR0xFX1NFUlZJQ0VfUFJPVklERVIsXG4gICAgSWZDb250cm9sU3RhdGVTZXJ2aWNlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDbHJQYXNzd29yZENvbnRhaW5lciBleHRlbmRzIENsckFic3RyYWN0Q29udGFpbmVyIHtcbiAgc2hvdyA9IGZhbHNlO1xuICBmb2N1cyA9IGZhbHNlO1xuICBwcml2YXRlIF90b2dnbGUgPSB0cnVlO1xuXG4gIEBJbnB1dCgnY2xyVG9nZ2xlJylcbiAgc2V0IGNsclRvZ2dsZShzdGF0ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3RvZ2dsZSA9IHN0YXRlO1xuICAgIGlmICghc3RhdGUpIHtcbiAgICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICBnZXQgY2xyVG9nZ2xlKCkge1xuICAgIHJldHVybiB0aGlzLl90b2dnbGU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBpZkNvbnRyb2xTdGF0ZVNlcnZpY2U6IElmQ29udHJvbFN0YXRlU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxuICAgIGNvbnRyb2xDbGFzc1NlcnZpY2U6IENvbnRyb2xDbGFzc1NlcnZpY2UsXG4gICAgbmdDb250cm9sU2VydmljZTogTmdDb250cm9sU2VydmljZSxcbiAgICBwdWJsaWMgZm9jdXNTZXJ2aWNlOiBGb2N1c1NlcnZpY2UsXG4gICAgQEluamVjdChUT0dHTEVfU0VSVklDRSkgcHJpdmF0ZSB0b2dnbGVTZXJ2aWNlOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4sXG4gICAgcHVibGljIGNvbW1vblN0cmluZ3M6IENsckNvbW1vblN0cmluZ3NTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGlmQ29udHJvbFN0YXRlU2VydmljZSwgbGF5b3V0U2VydmljZSwgY29udHJvbENsYXNzU2VydmljZSwgbmdDb250cm9sU2VydmljZSk7XG5cbiAgICAvKiBUaGUgdW5zdWJzY3JpYmUgaXMgaGFuZGxlIGluc2lkZSB0aGUgQ2xyQWJzdHJhY3RDb250YWluZXIgKi9cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuZm9jdXNTZXJ2aWNlLmZvY3VzQ2hhbmdlLnN1YnNjcmliZShzdGF0ZSA9PiB7XG4gICAgICAgIHRoaXMuZm9jdXMgPSBzdGF0ZTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHRvZ2dsZSgpIHtcbiAgICB0aGlzLnNob3cgPSAhdGhpcy5zaG93O1xuICAgIHRoaXMudG9nZ2xlU2VydmljZS5uZXh0KHRoaXMuc2hvdyk7XG4gIH1cbn1cbiJdfQ==
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvZm9ybXMvcGFzc3dvcmQvcGFzc3dvcmQtY29udGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUUxRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQzs7Ozs7Ozs7Ozs7O0FBRTVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBMkIsU0FBUyxDQUFDLENBQUM7QUFDdEYsTUFBTSxVQUFVLG9CQUFvQjtJQUNsQyxPQUFPLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFDRCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLG9CQUFvQixFQUFFLENBQUM7QUEwRHJHLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxvQkFBb0I7SUFnQjVELFlBQ0UscUJBQTRDLEVBQ2hDLGFBQTRCLEVBQ3hDLG1CQUF3QyxFQUN4QyxnQkFBa0MsRUFDM0IsWUFBMEIsRUFDRCxhQUF1QyxFQUNoRSxhQUFzQztRQUU3QyxLQUFLLENBQUMscUJBQXFCLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFKNUUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDRCxrQkFBYSxHQUFiLGFBQWEsQ0FBMEI7UUFDaEUsa0JBQWEsR0FBYixhQUFhLENBQXlCO1FBdEIvQyxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2IsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUNOLFlBQU8sR0FBRyxJQUFJLENBQUM7UUF3QnJCLCtEQUErRDtRQUMvRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzlDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBNUJELElBQ0ksU0FBUyxDQUFDLEtBQWM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUNELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBcUJELE1BQU07UUFDSixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQzs7aUhBdENVLG9CQUFvQixtTUFzQnJCLGNBQWM7cUdBdEJiLG9CQUFvQix1T0FUcEI7UUFDVCxnQkFBZ0I7UUFDaEIsZ0JBQWdCO1FBQ2hCLG1CQUFtQjtRQUNuQixZQUFZO1FBQ1osdUJBQXVCO1FBQ3ZCLHFCQUFxQjtLQUN0QixpREFwRFM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVDVDsyRkFlVSxvQkFBb0I7a0JBeERoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUNUO29CQUNELElBQUksRUFBRTt3QkFDSiwwQkFBMEIsRUFBRSxNQUFNO3dCQUNsQyxtQ0FBbUMsRUFBRSxtQkFBbUI7d0JBQ3hELGlCQUFpQixFQUFFLFdBQVc7cUJBQy9CO29CQUNELFNBQVMsRUFBRTt3QkFDVCxnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQixZQUFZO3dCQUNaLHVCQUF1Qjt3QkFDdkIscUJBQXFCO3FCQUN0QjtpQkFDRjs7MEJBbUJJLFFBQVE7OzBCQUlSLE1BQU07MkJBQUMsY0FBYztrRkFoQnBCLFNBQVM7c0JBRFosS0FBSzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDIyIFZNd2FyZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5qZWN0aW9uVG9rZW4sIElucHV0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IENvbnRyb2xDbGFzc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vcHJvdmlkZXJzL2NvbnRyb2wtY2xhc3Muc2VydmljZSc7XG5pbXBvcnQgeyBDb250cm9sSWRTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3Byb3ZpZGVycy9jb250cm9sLWlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9jdXNTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3Byb3ZpZGVycy9mb2N1cy5zZXJ2aWNlJztcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vcHJvdmlkZXJzL2xheW91dC5zZXJ2aWNlJztcbmltcG9ydCB7IE5nQ29udHJvbFNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vcHJvdmlkZXJzL25nLWNvbnRyb2wuc2VydmljZSc7XG5pbXBvcnQgeyBDbHJDb21tb25TdHJpbmdzU2VydmljZSB9IGZyb20gJy4uLy4uL3V0aWxzL2kxOG4vY29tbW9uLXN0cmluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBDbHJBYnN0cmFjdENvbnRhaW5lciB9IGZyb20gJy4uL2NvbW1vbi9hYnN0cmFjdC1jb250YWluZXInO1xuaW1wb3J0IHsgSWZDb250cm9sU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL2lmLWNvbnRyb2wtc3RhdGUvaWYtY29udHJvbC1zdGF0ZS5zZXJ2aWNlJztcblxuZXhwb3J0IGNvbnN0IFRPR0dMRV9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPEJlaGF2aW9yU3ViamVjdDxib29sZWFuPj4odW5kZWZpbmVkKTtcbmV4cG9ydCBmdW5jdGlvbiBUb2dnbGVTZXJ2aWNlRmFjdG9yeSgpIHtcbiAgcmV0dXJuIG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xufVxuZXhwb3J0IGNvbnN0IFRPR0dMRV9TRVJWSUNFX1BST1ZJREVSID0geyBwcm92aWRlOiBUT0dHTEVfU0VSVklDRSwgdXNlRmFjdG9yeTogVG9nZ2xlU2VydmljZUZhY3RvcnkgfTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2xyLXBhc3N3b3JkLWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibGFiZWxcIj48L25nLWNvbnRlbnQ+XG4gICAgPGxhYmVsICpuZ0lmPVwiIWxhYmVsICYmIGFkZEdyaWQoKVwiPjwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImNsci1jb250cm9sLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cImNvbnRyb2xDbGFzcygpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2xyLWlucHV0LXdyYXBwZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNsci1pbnB1dC1ncm91cFwiIFtjbGFzcy5jbHItZm9jdXNdPVwiZm9jdXNcIj5cbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbY2xyUGFzc3dvcmRdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiY2xyVG9nZ2xlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGUoKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29udHJvbD8uZGlzYWJsZWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJjbHItaW5wdXQtZ3JvdXAtaWNvbi1hY3Rpb25cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGNkcy1pY29uIHN0YXR1cz1cImluZm9cIiBbYXR0ci5zaGFwZV09XCJzaG93ID8gJ2V5ZS1oaWRlJyA6ICdleWUnXCI+PC9jZHMtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2xyLXNyLW9ubHlcIj57e1xuICAgICAgICAgICAgICBzaG93ID8gY29tbW9uU3RyaW5ncy5rZXlzLnBhc3N3b3JkSGlkZSA6IGNvbW1vblN0cmluZ3Mua2V5cy5wYXNzd29yZFNob3dcbiAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGNkcy1pY29uXG4gICAgICAgICAgKm5nSWY9XCJzaG93SW52YWxpZFwiXG4gICAgICAgICAgY2xhc3M9XCJjbHItdmFsaWRhdGUtaWNvblwiXG4gICAgICAgICAgc3RhdHVzPVwiZGFuZ2VyXCJcbiAgICAgICAgICBzaGFwZT1cImV4Y2xhbWF0aW9uLWNpcmNsZVwiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgPjwvY2RzLWljb24+XG4gICAgICAgIDxjZHMtaWNvblxuICAgICAgICAgICpuZ0lmPVwic2hvd1ZhbGlkXCJcbiAgICAgICAgICBjbGFzcz1cImNsci12YWxpZGF0ZS1pY29uXCJcbiAgICAgICAgICBzaGFwZT1cImNoZWNrLWNpcmNsZVwiXG4gICAgICAgICAgc3RhdHVzPVwic3VjY2Vzc1wiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgPjwvY2RzLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci1jb250cm9sLWhlbHBlclwiICpuZ0lmPVwic2hvd0hlbHBlclwiPjwvbmctY29udGVudD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci1jb250cm9sLWVycm9yXCIgKm5nSWY9XCJzaG93SW52YWxpZFwiPjwvbmctY29udGVudD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci1jb250cm9sLXN1Y2Nlc3NcIiAqbmdJZj1cInNob3dWYWxpZFwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MuY2xyLWZvcm0tY29udHJvbF0nOiAndHJ1ZScsXG4gICAgJ1tjbGFzcy5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkXSc6ICdjb250cm9sPy5kaXNhYmxlZCcsXG4gICAgJ1tjbGFzcy5jbHItcm93XSc6ICdhZGRHcmlkKCknLFxuICB9LFxuICBwcm92aWRlcnM6IFtcbiAgICBOZ0NvbnRyb2xTZXJ2aWNlLFxuICAgIENvbnRyb2xJZFNlcnZpY2UsXG4gICAgQ29udHJvbENsYXNzU2VydmljZSxcbiAgICBGb2N1c1NlcnZpY2UsXG4gICAgVE9HR0xFX1NFUlZJQ0VfUFJPVklERVIsXG4gICAgSWZDb250cm9sU3RhdGVTZXJ2aWNlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDbHJQYXNzd29yZENvbnRhaW5lciBleHRlbmRzIENsckFic3RyYWN0Q29udGFpbmVyIHtcbiAgc2hvdyA9IGZhbHNlO1xuICBmb2N1cyA9IGZhbHNlO1xuICBwcml2YXRlIF90b2dnbGUgPSB0cnVlO1xuXG4gIEBJbnB1dCgnY2xyVG9nZ2xlJylcbiAgc2V0IGNsclRvZ2dsZShzdGF0ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3RvZ2dsZSA9IHN0YXRlO1xuICAgIGlmICghc3RhdGUpIHtcbiAgICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICBnZXQgY2xyVG9nZ2xlKCkge1xuICAgIHJldHVybiB0aGlzLl90b2dnbGU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBpZkNvbnRyb2xTdGF0ZVNlcnZpY2U6IElmQ29udHJvbFN0YXRlU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxuICAgIGNvbnRyb2xDbGFzc1NlcnZpY2U6IENvbnRyb2xDbGFzc1NlcnZpY2UsXG4gICAgbmdDb250cm9sU2VydmljZTogTmdDb250cm9sU2VydmljZSxcbiAgICBwdWJsaWMgZm9jdXNTZXJ2aWNlOiBGb2N1c1NlcnZpY2UsXG4gICAgQEluamVjdChUT0dHTEVfU0VSVklDRSkgcHJpdmF0ZSB0b2dnbGVTZXJ2aWNlOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4sXG4gICAgcHVibGljIGNvbW1vblN0cmluZ3M6IENsckNvbW1vblN0cmluZ3NTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGlmQ29udHJvbFN0YXRlU2VydmljZSwgbGF5b3V0U2VydmljZSwgY29udHJvbENsYXNzU2VydmljZSwgbmdDb250cm9sU2VydmljZSk7XG5cbiAgICAvKiBUaGUgdW5zdWJzY3JpYmUgaXMgaGFuZGxlIGluc2lkZSB0aGUgQ2xyQWJzdHJhY3RDb250YWluZXIgKi9cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuZm9jdXNTZXJ2aWNlLmZvY3VzQ2hhbmdlLnN1YnNjcmliZShzdGF0ZSA9PiB7XG4gICAgICAgIHRoaXMuZm9jdXMgPSBzdGF0ZTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHRvZ2dsZSgpIHtcbiAgICB0aGlzLnNob3cgPSAhdGhpcy5zaG93O1xuICAgIHRoaXMudG9nZ2xlU2VydmljZS5uZXh0KHRoaXMuc2hvdyk7XG4gIH1cbn1cbiJdfQ==
@@ -131,7 +131,7 @@ export class ClrNavLevel extends FocusTrap {
131
131
  if (current === navHost) {
132
132
  return;
133
133
  }
134
- else if (current.classList.contains('nav-link')) {
134
+ else if (current.classList.contains('nav-link') && this._document.body.clientWidth < LARGE_BREAKPOINT) {
135
135
  this.close();
136
136
  return;
137
137
  }
@@ -180,4 +180,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
180
180
  type: HostListener,
181
181
  args: ['click', ['$event.target']]
182
182
  }] } });
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LWxldmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvbGF5b3V0L25hdi9uYXYtbGV2ZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixNQUFNLEVBRU4sS0FBSyxFQUVMLFdBQVcsR0FFWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBb0IsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkQsT0FBTyx3REFBd0QsQ0FBQzs7O0FBRWhFLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxRQUFrQixFQUFFLFNBQWlCLEVBQUUsRUFBRTtJQUNyRSxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDM0UsY0FBYyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDL0MsY0FBYyxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDckQsY0FBYyxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbkQsY0FBYyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDOUM7O09BRUc7SUFDSCxjQUFjLENBQUMsWUFBWSxDQUFDLFFBQVEs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QUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3pHLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDOzt3R0E5S1UsV0FBVyxrQkFVWixXQUFXOzRGQVZWLFdBQVc7MkZBQVgsV0FBVztrQkFEdkIsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRTs7MEJBV3JDLE1BQU07MkJBQUMsV0FBVzs4SkFURyxNQUFNO3NCQUE3QixLQUFLO3VCQUFDLGVBQWU7Z0JBRXRCLG9CQUFvQjtzQkFEbkIsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBb0d2QixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWlDekMsWUFBWTtzQkFEWCxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMiBWTXdhcmUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cblxuaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBQTEFURk9STV9JRCxcbiAgUmVuZGVyZXIyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUmVzcG9uc2l2ZU5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvcmVzcG9uc2l2ZS1uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVzcG9uc2l2ZU5hdkNvZGVzIH0gZnJvbSAnLi9yZXNwb25zaXZlLW5hdi1jb2Rlcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExBUkdFX0JSRUFLUE9JTlQgfSBmcm9tICcuLi8uLi91dGlscy9icmVha3BvaW50cy9icmVha3BvaW50cyc7XG5pbXBvcnQgeyBGb2N1c1RyYXAsIEZvY3VzVHJhcEVsZW1lbnQgfSBmcm9tICcuLi8uLi91dGlscy9mb2N1cy10cmFwL2ZvY3VzLXRyYXAnO1xuaW1wb3J0IHsgY29tbW9uU3RyaW5nc0RlZmF1bHQgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgJ0BjZHMvY29yZS9pbnRlcm5hbC1jb21wb25lbnRzL2Nsb3NlLWJ1dHRvbi9yZWdpc3Rlci5qcyc7XG5cbmNvbnN0IGNyZWF0ZUNkc0Nsb3NlQnV0dG9uID0gKGRvY3VtZW50OiBEb2N1bWVudCwgYXJpYUxhYmVsOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgY2RzQ2xvc2VCdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjZHMtaW50ZXJuYWwtY2xvc2UtYnV0dG9uJyk7XG4gIGNkc0Nsb3NlQnV0dG9uLnNldEF0dHJpYnV0ZSgnaWNvbi1zaXplJywgJzMyJyk7XG4gIGNkc0Nsb3NlQnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIGFyaWFMYWJlbCk7XG4gIGNkc0Nsb3NlQnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICBjZHNDbG9zZUJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnYnV0dG9uJyk7XG4gIC8qKlxuICAgKiBUaGUgYnV0dG9uIGlzIGhpZGRlbiBieSBkZWZhdWx0IGJhc2VkIG9uIG91ciBEZXNrdG9wLWZpcnN0IGFwcHJvYWNoLlxuICAgKi9cbiAgY2RzQ2xvc2VCdXR0b24uc2V0QXR0cmlidXRlKCdoaWRkZW4nLCAndHJ1ZScpO1xuICBjZHNDbG9zZUJ1dHRvbi5jbGFzc05hbWUgPSAnY2xyLW5hdi1jbG9zZSc7XG4gIHJldHVybiBjZHNDbG9zZUJ1dHRvbjtcbn07XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tjbHItbmF2LWxldmVsXScgfSlcbmV4cG9ydCBjbGFzcyBDbHJOYXZMZXZlbCBleHRlbmRzIEZvY3VzVHJhcCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgnY2xyLW5hdi1sZXZlbCcpIF9sZXZlbDogbnVtYmVyO1xuICBASW5wdXQoJ2Nsb3NlQXJpYUxhYmVsJylcbiAgY2xvc2VCdXR0b25BcmlhTGFiZWw6IHN0cmluZztcblxuICBwcml2YXRlIF9zdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIF9pc09wZW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwbGF0Zm9ybUlkOiBhbnksXG4gICAgcHJpdmF0ZSByZXNwb25zaXZlTmF2U2VydmljZTogUmVzcG9uc2l2ZU5hdmlnYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxGb2N1c1RyYXBFbGVtZW50PixcbiAgICByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIGluamVjdG9yOiBJbmplY3RvclxuICApIHtcbiAgICBzdXBlcihyZW5kZXJlciwgaW5qZWN0b3IsIHBsYXRmb3JtSWQsIGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG5cbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIocGxhdGZvcm1JZCkpIHtcbiAgICAgIHRoaXMuX2RvY3VtZW50ID0gaW5qZWN0b3IuZ2V0KERPQ1VNRU5UKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSByZXNwb25zaXZlTmF2U2VydmljZS5uYXZDb250cm9sXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKHggPT4geC5uYXZMZXZlbCA9PT0gdGhpcy5sZXZlbCksXG4gICAgICAgIGZpbHRlcihcbiAgICAgICAgICAoeyBjb250cm9sQ29kZSB9KSA9PlxuICAgICAgICAgICAgKGNvbnRyb2xDb2RlID09PSBSZXNwb25zaXZlTmF2Q29kZXMuTkFWX09QRU4gJiYgIXRoaXMuaXNPcGVuKSB8fFxuICAgICAgICAgICAgKGNvbnRyb2xDb2RlID09PSBSZXNwb25zaXZlTmF2Q29kZXMuTkFWX0NMT1NFICYmIHRoaXMuaXNPcGVuKVxuICAgICAgICApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh7IGNvbnRyb2xDb2RlIH0pID0+IHtcbiAgICAgICAgaWYgKGNvbnRyb2xDb2RlID09PSBSZXNwb25zaXZlTmF2Q29kZXMuTkFWX09QRU4pIHtcbiAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICByZXNwb25zaXZlTmF2U2VydmljZS5uYXZDb250cm9sXG4gICAgICAgIC5waXBlKGZpbHRlcigoeyBjb250cm9sQ29kZSB9KSA9PiBjb250cm9sQ29kZSA9PT0gUmVzcG9uc2l2ZU5hdkNvZGVzLk5BVl9DTE9TRV9BTEwpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xvc2UoKSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKCF0aGlzLmNsb3NlQnV0dG9uQXJpYUxhYmVsKSB7XG4gICAgICB0aGlzLmNsb3NlQnV0dG9uQXJpYUxhYmVsID1cbiAgICAgICAgdGhpcy5fbGV2ZWwgPT09IFJlc3BvbnNpdmVOYXZDb2Rlcy5OQVZfTEVWRUxfMVxuICAgICAgICAgID8gY29tbW9uU3RyaW5nc0RlZmF1bHQucmVzcG9uc2l2ZU5hdlRvZ2dsZUNsb3NlXG4gICAgICAgICAgOiBjb21tb25TdHJpbmdzRGVmYXVsdC5yZXNwb25zaXZlTmF2T3ZlcmZsb3dDbG9zZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sZXZlbCAhPT0gUmVzcG9uc2l2ZU5hdkNvZGVzLk5BVl9MRVZFTF8xICYmIHRoaXMubGV2ZWwgIT09IFJlc3BvbnNpdmVOYXZDb2Rlcy5OQVZfTEVWRUxfMikge1xuICAgICAgY29uc29sZS5lcnJvcignTmF2IExldmVsIGNhbiBvbmx5IGJlIDEgb3IgMicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnJlc3BvbnNpdmVOYXZTZXJ2aWNlLnJlZ2lzdGVyTmF2KHRoaXMubGV2ZWwpO1xuICAgIHRoaXMuYWRkTmF2Q2xhc3ModGhpcy5sZXZlbCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgY29uc3QgY2xvc2VCdXR0b24gPSBjcmVhdGVDZHNDbG9zZUJ1dHRvbih0aGlzLl9kb2N1bWVudCwgdGhpcy5jbG9zZUJ1dHRvbkFyaWFMYWJlbCk7XG4gICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oY2xvc2VCdXR0b24sICdjbGljaycsIHRoaXMuY2xvc2UuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGNsb3NlQnV0dG9uLCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5maXJzdENoaWxkKTsgLy8gQWRkaW5nIHRoZSBidXR0b24gYXQgdGhlIHRvcCBvZiB0aGUgbmF2XG5cbiAgICBpZiAodGhpcy5fZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCA8IExBUkdFX0JSRUFLUE9JTlQpIHtcbiAgICAgIC8qKlxuICAgICAgICogQ2xvc2UgaWYgdGhlIGRvY3VtZW50IGJvZHkgaXMgc21hbGxlciB0aGFuIHRoZSBsYXJnZSBicmVha3BvaW50IGZvciBleGFtcGxlOlxuICAgICAgICogLSBSZWZyZXNoaW5nIHRoZSBwYWdlXG4gICAgICAgKiAtIEJyb3dzZXIgd2luZG93IHNpemUgaXMgY2hhbmdlZCB3aGVuIG9wZW5pbmcgdGhlIGFwcGxpY2FpdG9uXG4gICAgICAgKiAtIEJyb3dzZXIgem9vbSBpcyB0dXJuZWQgb24gYW5kIHpvb21lZCB0byBhIHNpemUgdGhhdCBtYWtlcyB0aGUgZG9jdW1lbnQgc21hbGxlciB0aGFuIHRoZSBsYXJnZSBicmVha3BvaW50XG4gICAgICAgKi9cbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBhZGROYXZDbGFzcyhsZXZlbDogbnVtYmVyKSB7XG4gICAgY29uc3QgbmF2SG9zdENsYXNzTGlzdCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdDtcbiAgICBpZiAobGV2ZWwgPT09IFJlc3BvbnNpdmVOYXZDb2Rlcy5OQVZfTEVWRUxfMSkge1xuICAgICAgbmF2SG9zdENsYXNzTGlzdC5hZGQoUmVzcG9uc2l2ZU5hdkNvZGVzLk5BVl9DTEFTU19MRVZFTF8xKTtcbiAgICB9IGVsc2UgaWYgKGxldmVsID09PSBSZXNwb25zaXZlTmF2Q29kZXMuTkFWX0xFVkVMXzIpIHtcbiAgICAgIG5hdkhvc3RDbGFzc0xpc3QuYWRkKFJlc3BvbnNpdmVOYXZDb2Rlcy5OQVZfQ0xBU1NfTEVWRUxfMik7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGxldmVsKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2xldmVsO1xuICB9XG5cbiAgLy8gZ2V0dGVyIHRvIGFjY2VzcyB0aGUgcmVzcG9uc2l2ZSBuYXZpZ2F0aW9uIGNvZGVzIGZyb20gdGhlIHRlbXBsYXRlXG4gIGdldCByZXNwb25zaXZlTmF2Q29kZXMoKTogUmVzcG9uc2l2ZU5hdkNvZGVzIHtcbiAgICByZXR1cm4gUmVzcG9uc2l2ZU5hdkNvZGVzO1xuICB9XG5cbiAgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNPcGVuO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gIG9uUmVzaXplKGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBXaW5kb3c7XG5cbiAgICBpZiAodGFyZ2V0LmlubmVyV2lkdGggPCBMQVJHRV9CUkVBS1BPSU5UICYmIHRoaXMuaXNPcGVuKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zaG93TmF2aWdhdGlvbigpO1xuICB9XG5cbiAgb3BlbigpOiB2b2lkIHtcbiAgICB0aGlzLl9pc09wZW4gPSB0cnVlO1xuICAgIHRoaXMuc2hvd05hdmlnYXRpb24oKTtcbiAgICB0aGlzLmVuYWJsZUZvY3VzVHJhcCgpO1xuICAgIHRoaXMuc2hvd0Nsb3NlQnV0dG9uKCk7XG4gICAgdGhpcy5yZXNwb25zaXZlTmF2U2VydmljZS5zZW5kQ29udHJvbE1lc3NhZ2UoUmVzcG9uc2l2ZU5hdkNvZGVzLk5BVl9PUEVOLCB0aGlzLmxldmVsKTtcbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2lzT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuaGlkZU5hdmlnYXRpb24oKTtcbiAgICB0aGlzLnJlbW92ZUZvY3VzVHJhcCgpO1xuICAgIHRoaXMuaGlkZUNsb3NlQnV0dG9uKCk7XG4gICAgdGhpcy5yZXNwb25zaXZlTmF2U2VydmljZS5zZW5kQ29udHJvbE1lc3NhZ2UoUmVzcG9uc2l2ZU5hdkNvZGVzLk5BVl9DTE9TRSwgdGhpcy5sZXZlbCk7XG4gIH1cblxuICAvLyBUT0RPOiBGaWd1cmUgb3V0IHdoYXRzIHRoZSBiZXN0IHdheSB0byBkbyB0aGlzLiBQb3NzaWJsZSBtZXRob2RzXG4gIC8vIDEuIEhvc3RMaXN0ZW5lciAoY3VycmVudCBzb2x1dGlvbilcbiAgLy8gMi4gRGlyZWN0aXZlcyBvbiB0aGUgLm5hdi1saW5rIGNsYXNzLiBXZSBkaXNjdXNzZWQgb24gbW92aW5nIGF3YXkgZnJvbSBjbGFzcyBzZWxlY3RvcnMgYnV0IEkgZm9yZ2V0IHRoZSByZWFzb25cbiAgLy8gd2h5XG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pXG4gIG9uTW91c2VDbGljayh0YXJnZXQ6IGFueSkge1xuICAgIGxldCBjdXJyZW50OiBhbnkgPSB0YXJnZXQ7IC8vIEdldCB0aGUgZWxlbWVudCBpbiB0aGUgRE9NIG9uIHdoaWNoIHRoZSBtb3VzZSB3YXMgY2xpY2tlZFxuICAgIGNvbnN0IG5hdkhvc3Q6IGFueSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50OyAvLyBHZXQgdGhlIGN1cnJlbnQgbmF2IG5hdGl2ZSBIVE1MIGVsZW1lbnRcblxuICAgIC8vIFN0YXJ0IGNoZWNraW5nIGlmIGN1cnJlbnQgYW5kIG5hdkhvc3QgYXJlIGVxdWFsLlxuICAgIC8vIElmIG5vdCB0cmF2ZXJzZSB0byB0aGUgcGFyZW50Tm9kZSBhbmQgY2hlY2sgYWdhaW4uXG4gICAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAgIGlmIChjdXJyZW50ID09PSBuYXZIb3N0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSBpZiAoY3VycmVudC5jbGFzc0xpc3QuY29udGFpbnMoJ25hdi1saW5rJykpIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjdXJyZW50ID0gY3VycmVudC5wYXJlbnROb2RlO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoaWRlTmF2aWdhdGlvbigpIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2hpZGRlbicsICd0cnVlJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2hvd05hdmlnYXRpb24oKSB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdhcmlhLWhpZGRlbicsICdmYWxzZScpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnaGlkZGVuJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGlkZUNsb3NlQnV0dG9uKCkge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jbHItbmF2LWNsb3NlJyksICdoaWRkZW4nLCAndHJ1ZScpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNob3dDbG9zZUJ1dHRvbigpIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuY2xyLW5hdi1jbG9zZScpLCAnYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuY2xyLW5hdi1jbG9zZScpLCAnaGlkZGVuJyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnJlc3BvbnNpdmVOYXZTZXJ2aWNlLnVucmVnaXN0ZXJOYXYodGhpcy5sZXZlbCk7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiJdfQ==
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LWxldmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvbGF5b3V0L25hdi9uYXYtbGV2ZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixNQUFNLEVBRU4sS0FBSyxFQUVMLFdBQVcsR0FFWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBb0IsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkQsT0FBTyx3REFBd0QsQ0FBQzs7O0FBRWhFLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxRQUFrQixFQUFFLFNBQWlCLEVBQUUsRUFBRTtJQUNyRSxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDM0UsY0FBYyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDL0MsY0FBYyxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDckQsY0FBYyxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbkQsY0FBYyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDOUM7O09BRUc7SUFDSCxjQUFjLENBQUMsWUFBWSxDQUFDLFFBQVEs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QUNsSCxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN6RyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7d0dBOUtVLFdBQVcsa0JBVVosV0FBVzs0RkFWVixXQUFXOzJGQUFYLFdBQVc7a0JBRHZCLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUU7OzBCQVdyQyxNQUFNOzJCQUFDLFdBQVc7OEpBVEcsTUFBTTtzQkFBN0IsS0FBSzt1QkFBQyxlQUFlO2dCQUV0QixvQkFBb0I7c0JBRG5CLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQW9HdkIsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFpQ3pDLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgVk13YXJlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgUExBVEZPUk1fSUQsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFJlc3BvbnNpdmVOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4vcHJvdmlkZXJzL3Jlc3BvbnNpdmUtbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFJlc3BvbnNpdmVOYXZDb2RlcyB9IGZyb20gJy4vcmVzcG9uc2l2ZS1uYXYtY29kZXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMQVJHRV9CUkVBS1BPSU5UIH0gZnJvbSAnLi4vLi4vdXRpbHMvYnJlYWtwb2ludHMvYnJlYWtwb2ludHMnO1xuaW1wb3J0IHsgRm9jdXNUcmFwLCBGb2N1c1RyYXBFbGVtZW50IH0gZnJvbSAnLi4vLi4vdXRpbHMvZm9jdXMtdHJhcC9mb2N1cy10cmFwJztcbmltcG9ydCB7IGNvbW1vblN0cmluZ3NEZWZhdWx0IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0ICdAY2RzL2NvcmUvaW50ZXJuYWwtY29tcG9uZW50cy9jbG9zZS1idXR0b24vcmVnaXN0ZXIuanMnO1xuXG5jb25zdCBjcmVhdGVDZHNDbG9zZUJ1dHRvbiA9IChkb2N1bWVudDogRG9jdW1lbnQsIGFyaWFMYWJlbDogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGNkc0Nsb3NlQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2RzLWludGVybmFsLWNsb3NlLWJ1dHRvbicpO1xuICBjZHNDbG9zZUJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2ljb24tc2l6ZScsICczMicpO1xuICBjZHNDbG9zZUJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCBhcmlhTGFiZWwpO1xuICBjZHNDbG9zZUJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcbiAgY2RzQ2xvc2VCdXR0b24uc2V0QXR0cmlidXRlKCd0eXBlJywgJ2J1dHRvbicpO1xuICAvKipcbiAgICogVGhlIGJ1dHRvbiBpcyBoaWRkZW4gYnkgZGVmYXVsdCBiYXNlZCBvbiBvdXIgRGVza3RvcC1maXJzdCBhcHByb2FjaC5cbiAgICovXG4gIGNkc0Nsb3NlQnV0dG9uLnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgJ3RydWUnKTtcbiAgY2RzQ2xvc2VCdXR0b24uY2xhc3NOYW1lID0gJ2Nsci1uYXYtY2xvc2UnO1xuICByZXR1cm4gY2RzQ2xvc2VCdXR0b247XG59O1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbY2xyLW5hdi1sZXZlbF0nIH0pXG5leHBvcnQgY2xhc3MgQ2xyTmF2TGV2ZWwgZXh0ZW5kcyBGb2N1c1RyYXAgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoJ2Nsci1uYXYtbGV2ZWwnKSBfbGV2ZWw6IG51bWJlcjtcbiAgQElucHV0KCdjbG9zZUFyaWFMYWJlbCcpXG4gIGNsb3NlQnV0dG9uQXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBfaXNPcGVuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcGxhdGZvcm1JZDogYW55LFxuICAgIHByaXZhdGUgcmVzcG9uc2l2ZU5hdlNlcnZpY2U6IFJlc3BvbnNpdmVOYXZpZ2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8Rm9jdXNUcmFwRWxlbWVudD4sXG4gICAgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7XG4gICAgc3VwZXIocmVuZGVyZXIsIGluamVjdG9yLCBwbGF0Zm9ybUlkLCBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpKSB7XG4gICAgICB0aGlzLl9kb2N1bWVudCA9IGluamVjdG9yLmdldChET0NVTUVOVCk7XG4gICAgfVxuXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uID0gcmVzcG9uc2l2ZU5hdlNlcnZpY2UubmF2Q29udHJvbFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcih4ID0+IHgubmF2TGV2ZWwgPT09IHRoaXMubGV2ZWwpLFxuICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgKHsgY29udHJvbENvZGUgfSkgPT5cbiAgICAgICAgICAgIChjb250cm9sQ29kZSA9PT0gUmVzcG9uc2l2ZU5hdkNvZGVzLk5BVl9PUEVOICYmICF0aGlzLmlzT3BlbikgfHxcbiAgICAgICAgICAgIChjb250cm9sQ29kZSA9PT0gUmVzcG9uc2l2ZU5hdkNvZGVzLk5BVl9DTE9TRSAmJiB0aGlzLmlzT3BlbilcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoeyBjb250cm9sQ29kZSB9KSA9PiB7XG4gICAgICAgIGlmIChjb250cm9sQ29kZSA9PT0gUmVzcG9uc2l2ZU5hdkNvZGVzLk5BVl9PUEVOKSB7XG4gICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgcmVzcG9uc2l2ZU5hdlNlcnZpY2UubmF2Q29udHJvbFxuICAgICAgICAucGlwZShmaWx0ZXIoKHsgY29udHJvbENvZGUgfSkgPT4gY29udHJvbENvZGUgPT09IFJlc3BvbnNpdmVOYXZDb2Rlcy5OQVZfQ0xPU0VfQUxMKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlKCkpXG4gICAgKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghdGhpcy5jbG9zZUJ1dHRvbkFyaWFMYWJlbCkge1xuICAgICAgdGhpcy5jbG9zZUJ1dHRvbkFyaWFMYWJlbCA9XG4gICAgICAgIHRoaXMuX2xldmVsID09PSBSZXNwb25zaXZlTmF2Q29kZXMuTkFWX0xFVkVMXzFcbiAgICAgICAgICA/IGNvbW1vblN0cmluZ3NEZWZhdWx0LnJlc3BvbnNpdmVOYXZUb2dnbGVDbG9zZVxuICAgICAgICAgIDogY29tbW9uU3RyaW5nc0RlZmF1bHQucmVzcG9uc2l2ZU5hdk92ZXJmbG93Q2xvc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGV2ZWwgIT09IFJlc3BvbnNpdmVOYXZDb2Rlcy5OQVZfTEVWRUxfMSAmJiB0aGlzLmxldmVsICE9PSBSZXNwb25zaXZlTmF2Q29kZXMuTkFWX0xFVkVMXzIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ05hdiBMZXZlbCBjYW4gb25seSBiZSAxIG9yIDInKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5yZXNwb25zaXZlTmF2U2VydmljZS5yZWdpc3Rlck5hdih0aGlzLmxldmVsKTtcbiAgICB0aGlzLmFkZE5hdkNsYXNzKHRoaXMubGV2ZWwpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IGNsb3NlQnV0dG9uID0gY3JlYXRlQ2RzQ2xvc2VCdXR0b24odGhpcy5fZG9jdW1lbnQsIHRoaXMuY2xvc2VCdXR0b25BcmlhTGFiZWwpO1xuICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGNsb3NlQnV0dG9uLCAnY2xpY2snLCB0aGlzLmNsb3NlLmJpbmQodGhpcykpO1xuICAgIHRoaXMucmVuZGVyZXIuaW5zZXJ0QmVmb3JlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBjbG9zZUJ1dHRvbiwgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZmlyc3RDaGlsZCk7IC8vIEFkZGluZyB0aGUgYnV0dG9uIGF0IHRoZSB0b3Agb2YgdGhlIG5hdlxuXG4gICAgaWYgKHRoaXMuX2RvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggPCBMQVJHRV9CUkVBS1BPSU5UKSB7XG4gICAgICAvKipcbiAgICAgICAqIENsb3NlIGlmIHRoZSBkb2N1bWVudCBib2R5IGlzIHNtYWxsZXIgdGhhbiB0aGUgbGFyZ2UgYnJlYWtwb2ludCBmb3IgZXhhbXBsZTpcbiAgICAgICAqIC0gUmVmcmVzaGluZyB0aGUgcGFnZVxuICAgICAgICogLSBCcm93c2VyIHdpbmRvdyBzaXplIGlzIGNoYW5nZWQgd2hlbiBvcGVuaW5nIHRoZSBhcHBsaWNhaXRvblxuICAgICAgICogLSBCcm93c2VyIHpvb20gaXMgdHVybmVkIG9uIGFuZCB6b29tZWQgdG8gYSBzaXplIHRoYXQgbWFrZXMgdGhlIGRvY3VtZW50IHNtYWxsZXIgdGhhbiB0aGUgbGFyZ2UgYnJlYWtwb2ludFxuICAgICAgICovXG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgYWRkTmF2Q2xhc3MobGV2ZWw6IG51bWJlcikge1xuICAgIGNvbnN0IG5hdkhvc3RDbGFzc0xpc3QgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3Q7XG4gICAgaWYgKGxldmVsID09PSBSZXNwb25zaXZlTmF2Q29kZXMuTkFWX0xFVkVMXzEpIHtcbiAgICAgIG5hdkhvc3RDbGFzc0xpc3QuYWRkKFJlc3BvbnNpdmVOYXZDb2Rlcy5OQVZfQ0xBU1NfTEVWRUxfMSk7XG4gICAgfSBlbHNlIGlmIChsZXZlbCA9PT0gUmVzcG9uc2l2ZU5hdkNvZGVzLk5BVl9MRVZFTF8yKSB7XG4gICAgICBuYXZIb3N0Q2xhc3NMaXN0LmFkZChSZXNwb25zaXZlTmF2Q29kZXMuTkFWX0NMQVNTX0xFVkVMXzIpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBsZXZlbCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9sZXZlbDtcbiAgfVxuXG4gIC8vIGdldHRlciB0byBhY2Nlc3MgdGhlIHJlc3BvbnNpdmUgbmF2aWdhdGlvbiBjb2RlcyBmcm9tIHRoZSB0ZW1wbGF0ZVxuICBnZXQgcmVzcG9uc2l2ZU5hdkNvZGVzKCk6IFJlc3BvbnNpdmVOYXZDb2RlcyB7XG4gICAgcmV0dXJuIFJlc3BvbnNpdmVOYXZDb2RlcztcbiAgfVxuXG4gIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzT3BlbjtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICBvblJlc2l6ZShldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgV2luZG93O1xuXG4gICAgaWYgKHRhcmdldC5pbm5lcldpZHRoIDwgTEFSR0VfQlJFQUtQT0lOVCAmJiB0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd05hdmlnYXRpb24oKTtcbiAgfVxuXG4gIG9wZW4oKTogdm9pZCB7XG4gICAgdGhpcy5faXNPcGVuID0gdHJ1ZTtcbiAgICB0aGlzLnNob3dOYXZpZ2F0aW9uKCk7XG4gICAgdGhpcy5lbmFibGVGb2N1c1RyYXAoKTtcbiAgICB0aGlzLnNob3dDbG9zZUJ1dHRvbigpO1xuICAgIHRoaXMucmVzcG9uc2l2ZU5hdlNlcnZpY2Uuc2VuZENvbnRyb2xNZXNzYWdlKFJlc3BvbnNpdmVOYXZDb2Rlcy5OQVZfT1BFTiwgdGhpcy5sZXZlbCk7XG4gIH1cblxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9pc09wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmhpZGVOYXZpZ2F0aW9uKCk7XG4gICAgdGhpcy5yZW1vdmVGb2N1c1RyYXAoKTtcbiAgICB0aGlzLmhpZGVDbG9zZUJ1dHRvbigpO1xuICAgIHRoaXMucmVzcG9uc2l2ZU5hdlNlcnZpY2Uuc2VuZENvbnRyb2xNZXNzYWdlKFJlc3BvbnNpdmVOYXZDb2Rlcy5OQVZfQ0xPU0UsIHRoaXMubGV2ZWwpO1xuICB9XG5cbiAgLy8gVE9ETzogRmlndXJlIG91dCB3aGF0cyB0aGUgYmVzdCB3YXkgdG8gZG8gdGhpcy4gUG9zc2libGUgbWV0aG9kc1xuICAvLyAxLiBIb3N0TGlzdGVuZXIgKGN1cnJlbnQgc29sdXRpb24pXG4gIC8vIDIuIERpcmVjdGl2ZXMgb24gdGhlIC5uYXYtbGluayBjbGFzcy4gV2UgZGlzY3Vzc2VkIG9uIG1vdmluZyBhd2F5IGZyb20gY2xhc3Mgc2VsZWN0b3JzIGJ1dCBJIGZvcmdldCB0aGUgcmVhc29uXG4gIC8vIHdoeVxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50LnRhcmdldCddKVxuICBvbk1vdXNlQ2xpY2sodGFyZ2V0OiBhbnkpIHtcbiAgICBsZXQgY3VycmVudDogYW55ID0gdGFyZ2V0OyAvLyBHZXQgdGhlIGVsZW1lbnQgaW4gdGhlIERPTSBvbiB3aGljaCB0aGUgbW91c2Ugd2FzIGNsaWNrZWRcbiAgICBjb25zdCBuYXZIb3N0OiBhbnkgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDsgLy8gR2V0IHRoZSBjdXJyZW50IG5hdiBuYXRpdmUgSFRNTCBlbGVtZW50XG5cbiAgICAvLyBTdGFydCBjaGVja2luZyBpZiBjdXJyZW50IGFuZCBuYXZIb3N0IGFyZSBlcXVhbC5cbiAgICAvLyBJZiBub3QgdHJhdmVyc2UgdG8gdGhlIHBhcmVudE5vZGUgYW5kIGNoZWNrIGFnYWluLlxuICAgIHdoaWxlIChjdXJyZW50KSB7XG4gICAgICBpZiAoY3VycmVudCA9PT0gbmF2SG9zdCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKGN1cnJlbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCduYXYtbGluaycpICYmIHRoaXMuX2RvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggPCBMQVJHRV9CUkVBS1BPSU5UKSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY3VycmVudCA9IGN1cnJlbnQucGFyZW50Tm9kZTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGlkZU5hdmlnYXRpb24oKSB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdhcmlhLWhpZGRlbicsICd0cnVlJyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdoaWRkZW4nLCAndHJ1ZScpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNob3dOYXZpZ2F0aW9uKCkge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2hpZGRlbicpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhpZGVDbG9zZUJ1dHRvbigpIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuY2xyLW5hdi1jbG9zZScpLCAnaGlkZGVuJywgJ3RydWUnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzaG93Q2xvc2VCdXR0b24oKSB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmNsci1uYXYtY2xvc2UnKSwgJ2FyaWEtaGlkZGVuJywgJ2ZhbHNlJyk7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmNsci1uYXYtY2xvc2UnKSwgJ2hpZGRlbicpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5yZXNwb25zaXZlTmF2U2VydmljZS51bnJlZ2lzdGVyTmF2KHRoaXMubGV2ZWwpO1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0=