@ngrdt/tabs 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/index.mjs +9 -0
- package/esm2022/lib/components/tab/rdt-tab.component.mjs +145 -0
- package/esm2022/lib/components/tab-container/rdt-tab-container.component.mjs +270 -0
- package/esm2022/lib/directives/rdt-destroy-inactive.directive.mjs +14 -0
- package/esm2022/lib/directives/rdt-tab-controller.directive.mjs +366 -0
- package/esm2022/lib/rdt-tabs-models.mjs +4 -0
- package/esm2022/lib/rdt-tabs.module.mjs +37 -0
- package/esm2022/lib/strategies/auto-rdt-tabs-shortcut-strategy.mjs +64 -0
- package/esm2022/lib/strategies/rdt-tabs-shortcut-strategy.mjs +3 -0
- package/esm2022/lib/strategies/static-rdt-tabs-shortcut-strategy.mjs +23 -0
- package/esm2022/ngrdt-tabs.mjs +5 -0
- package/fesm2022/ngrdt-tabs.mjs +906 -0
- package/fesm2022/ngrdt-tabs.mjs.map +1 -0
- package/lib/components/tab/rdt-tab.component.d.ts +38 -0
- package/lib/components/tab-container/rdt-tab-container.component.d.ts +52 -0
- package/lib/directives/rdt-destroy-inactive.directive.d.ts +7 -0
- package/lib/directives/rdt-tab-controller.directive.d.ts +87 -0
- package/lib/rdt-tabs-models.d.ts +11 -0
- package/lib/rdt-tabs.module.d.ts +11 -0
- package/lib/strategies/auto-rdt-tabs-shortcut-strategy.d.ts +11 -0
- package/lib/strategies/rdt-tabs-shortcut-strategy.d.ts +16 -0
- package/lib/strategies/static-rdt-tabs-shortcut-strategy.d.ts +12 -0
- package/package.json +25 -5
- package/eslint.config.js +0 -44
- package/jest.config.ts +0 -21
- package/ng-package.json +0 -7
- package/project.json +0 -36
- package/src/lib/components/tab/rdt-tab.component.html +0 -3
- package/src/lib/components/tab/rdt-tab.component.ts +0 -158
- package/src/lib/components/tab-container/rdt-tab-container.component.html +0 -29
- package/src/lib/components/tab-container/rdt-tab-container.component.scss +0 -155
- package/src/lib/components/tab-container/rdt-tab-container.component.ts +0 -315
- package/src/lib/directives/rdt-destroy-inactive.directive.ts +0 -8
- package/src/lib/directives/rdt-tab-controller.directive.ts +0 -440
- package/src/lib/rdt-tabs-models.ts +0 -12
- package/src/lib/rdt-tabs.module.ts +0 -24
- package/src/lib/strategies/auto-rdt-tabs-shortcut-strategy.ts +0 -81
- package/src/lib/strategies/rdt-tabs-shortcut-strategy.ts +0 -20
- package/src/lib/strategies/static-rdt-tabs-shortcut-strategy.ts +0 -30
- package/src/test-setup.ts +0 -8
- package/tsconfig.json +0 -28
- package/tsconfig.lib.json +0 -17
- package/tsconfig.lib.prod.json +0 -9
- package/tsconfig.spec.json +0 -16
- /package/{src/index.ts → index.d.ts} +0 -0
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
import { ContentChildren, DestroyRef, Directive, inject, Injector, Input, QueryList, } from '@angular/core';
|
|
2
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
3
|
+
import { canTransition$, RDT_GUARDED_COMPONENT, RdtContainerDirective, } from '@ngrdt/core';
|
|
4
|
+
import { RdtShortcutService } from '@ngrdt/shortcuts';
|
|
5
|
+
import { firstValueFrom, Subscription, takeWhile } from 'rxjs';
|
|
6
|
+
import { RdtTabContainerComponent } from '../components/tab-container/rdt-tab-container.component';
|
|
7
|
+
import { RdtTabComponent } from '../components/tab/rdt-tab.component';
|
|
8
|
+
import { AutoRdtTabsShortcutStrategy } from '../strategies/auto-rdt-tabs-shortcut-strategy';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@ngrdt/core";
|
|
11
|
+
export class RdtTabControllerDirective {
|
|
12
|
+
destroyRef = inject(DestroyRef);
|
|
13
|
+
injector = inject(Injector);
|
|
14
|
+
shortcutService = inject(RdtShortcutService);
|
|
15
|
+
shortcutSub = new Subscription();
|
|
16
|
+
// String value lets you use the directive without param.
|
|
17
|
+
set rdtTabController(value) {
|
|
18
|
+
if (value && typeof value !== 'string') {
|
|
19
|
+
this._strategy = value;
|
|
20
|
+
this.updateShortcuts();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
get tabContainers() {
|
|
24
|
+
return this.containerDirective
|
|
25
|
+
.getChildrenRecursive()
|
|
26
|
+
.filter((ch) => ch instanceof RdtTabContainerComponent);
|
|
27
|
+
}
|
|
28
|
+
get tabs() {
|
|
29
|
+
return this.containerDirective
|
|
30
|
+
.getChildrenRecursive()
|
|
31
|
+
.filter((ch) => ch instanceof RdtTabComponent);
|
|
32
|
+
}
|
|
33
|
+
childControllers;
|
|
34
|
+
get strategy() {
|
|
35
|
+
return this._strategy;
|
|
36
|
+
}
|
|
37
|
+
_strategy = new AutoRdtTabsShortcutStrategy();
|
|
38
|
+
_lastActiveTabContainer = null;
|
|
39
|
+
_contentWasInit = false;
|
|
40
|
+
get disabled() {
|
|
41
|
+
return this._disabled;
|
|
42
|
+
}
|
|
43
|
+
_disabled = false;
|
|
44
|
+
get shortcuts() {
|
|
45
|
+
return this._shortcuts;
|
|
46
|
+
}
|
|
47
|
+
set shortcuts(value) {
|
|
48
|
+
const oldSet = new Set(this._shortcuts.map((s) => s.hotkeysValue));
|
|
49
|
+
this._shortcuts = value;
|
|
50
|
+
if (oldSet.size !== value.length ||
|
|
51
|
+
value.some((s) => !oldSet.has(s.hotkeysValue))) {
|
|
52
|
+
this.bindAll();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
_shortcuts = [];
|
|
56
|
+
get activeContainer() {
|
|
57
|
+
return this._lastActiveTabContainer?.container;
|
|
58
|
+
}
|
|
59
|
+
containerDirective;
|
|
60
|
+
ngOnInit() {
|
|
61
|
+
this.containerDirective = this.injector.get(RdtContainerDirective, undefined, {
|
|
62
|
+
self: true,
|
|
63
|
+
});
|
|
64
|
+
this.updateShortcuts();
|
|
65
|
+
}
|
|
66
|
+
ngAfterContentInit() {
|
|
67
|
+
this.setDefaultActive();
|
|
68
|
+
this.disableSelfWhenChildCtrlExists();
|
|
69
|
+
this._contentWasInit = true;
|
|
70
|
+
if (this.tabs.length > 0) {
|
|
71
|
+
this.onTabChanges();
|
|
72
|
+
}
|
|
73
|
+
if (this.tabContainers.length > 0) {
|
|
74
|
+
this.onTabContainerChanges();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
ngOnDestroy() {
|
|
78
|
+
this.unbindAll();
|
|
79
|
+
this._shortcuts.length = 0;
|
|
80
|
+
}
|
|
81
|
+
getTabContainerIndex(cont) {
|
|
82
|
+
const level = this.getSameLevelContainers(cont);
|
|
83
|
+
return level.indexOf(cont);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Activates first parent container of current container
|
|
87
|
+
* that is not disabled and has any non disabled tabs.
|
|
88
|
+
*/
|
|
89
|
+
goLevelUp() {
|
|
90
|
+
let cont = this.activeContainer;
|
|
91
|
+
while (cont) {
|
|
92
|
+
cont = cont.parentTab?.tabContainer;
|
|
93
|
+
if (cont && !cont.disabled && cont.hasNonDisabledTabs) {
|
|
94
|
+
this.activateTabContainer(cont);
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Activates first container under current tab which
|
|
102
|
+
* is not disabled and has any non disabled tabs.
|
|
103
|
+
*/
|
|
104
|
+
goLevelDown() {
|
|
105
|
+
const cont = this.activeContainer;
|
|
106
|
+
if (!cont || cont.disabled) {
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
let tab = cont.tabsList.find((t) => t.stateId === cont.value);
|
|
110
|
+
if (!tab || tab.disabled) {
|
|
111
|
+
tab = cont.tabsList.find((t) => !t.disabled);
|
|
112
|
+
}
|
|
113
|
+
if (!tab) {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
const targetCont = tab.childContainers.find((c) => !c.disabled && c.hasNonDisabledTabs);
|
|
117
|
+
if (targetCont) {
|
|
118
|
+
this.activateTabContainer(targetCont);
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Activates next container on current level
|
|
125
|
+
* (under parent container of currently active container).
|
|
126
|
+
* Is cyclic.
|
|
127
|
+
*/
|
|
128
|
+
goToNextContainer() {
|
|
129
|
+
return this.goToAdjacentContainer(1);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Activates previous container on current level
|
|
133
|
+
* (under parent container of currently active container).
|
|
134
|
+
* Is cyclic.
|
|
135
|
+
*/
|
|
136
|
+
goToPrevContainer() {
|
|
137
|
+
return this.goToAdjacentContainer(-1);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Activates tab within active container at the index of argument.
|
|
141
|
+
*/
|
|
142
|
+
goToTabWithIndex(index) {
|
|
143
|
+
const cont = this.activeContainer;
|
|
144
|
+
if (!cont) {
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
const tab = cont.tabsList.get(index);
|
|
148
|
+
if (!tab) {
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
this.activateTab(tab);
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Activates next tab within active container. Is cyclic.
|
|
156
|
+
*/
|
|
157
|
+
goToNextTab() {
|
|
158
|
+
return this.goToAdjacentTab(1);
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Activates previous tab within active container. Is cyclic.
|
|
162
|
+
*/
|
|
163
|
+
goToPrevTab() {
|
|
164
|
+
return this.goToAdjacentTab(-1);
|
|
165
|
+
}
|
|
166
|
+
goToAdjacentContainer(dir) {
|
|
167
|
+
const cont = this.activeContainer;
|
|
168
|
+
if (!cont) {
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
const level = this.getSameLevelContainers(cont);
|
|
172
|
+
if (!level) {
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
const currentIndex = level.indexOf(cont);
|
|
176
|
+
if (currentIndex < 0) {
|
|
177
|
+
throw new Error('Current container is not within its own level?');
|
|
178
|
+
}
|
|
179
|
+
for (let i = (currentIndex + dir + level.length) % level.length; i !== currentIndex; i = (i + dir + level.length) % level.length) {
|
|
180
|
+
const next = level[i];
|
|
181
|
+
if (!next.disabled && next.hasNonDisabledTabs) {
|
|
182
|
+
this.activateTabContainer(next);
|
|
183
|
+
return true;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
goToAdjacentTab(dir) {
|
|
189
|
+
const cont = this.activeContainer;
|
|
190
|
+
if (!cont) {
|
|
191
|
+
return false;
|
|
192
|
+
}
|
|
193
|
+
const tabs = cont.tabsList.toArray();
|
|
194
|
+
const currentIndex = tabs.findIndex((tab) => tab.stateId === cont.value);
|
|
195
|
+
if (currentIndex < 0) {
|
|
196
|
+
throw new Error('Current tab is not found in its container?!');
|
|
197
|
+
}
|
|
198
|
+
for (let i = (currentIndex + dir + tabs.length) % tabs.length; i !== currentIndex; i = (i + dir + tabs.length) % tabs.length) {
|
|
199
|
+
const next = tabs[i];
|
|
200
|
+
if (!next.disabled) {
|
|
201
|
+
this.activateTab(next);
|
|
202
|
+
return true;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return false;
|
|
206
|
+
}
|
|
207
|
+
getSameLevelContainers(cont) {
|
|
208
|
+
if (cont.parentTab) {
|
|
209
|
+
return cont.parentTab.childContainers;
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
return this.tabContainers.filter((cont) => cont.isTopLevel);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
getTabByValue(value) {
|
|
216
|
+
for (const container of this.tabContainers) {
|
|
217
|
+
const tab = container.tabsList.find((ch) => ch.stateId === value);
|
|
218
|
+
if (tab) {
|
|
219
|
+
return tab;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
return null;
|
|
223
|
+
}
|
|
224
|
+
activateTabContainer(tabs, scrollIntoView = true) {
|
|
225
|
+
if (this._lastActiveTabContainer) {
|
|
226
|
+
this._lastActiveTabContainer.container.active = false;
|
|
227
|
+
}
|
|
228
|
+
tabs.active = true;
|
|
229
|
+
if (scrollIntoView) {
|
|
230
|
+
tabs.scrollIntoView();
|
|
231
|
+
}
|
|
232
|
+
this._lastActiveTabContainer = {
|
|
233
|
+
container: tabs,
|
|
234
|
+
timestamp: null,
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
activateTabContainerFromClick(tabs, timestamp) {
|
|
238
|
+
if (this._lastActiveTabContainer) {
|
|
239
|
+
if (this._lastActiveTabContainer.timestamp !== null &&
|
|
240
|
+
this._lastActiveTabContainer.timestamp >= timestamp) {
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
this._lastActiveTabContainer.container.active = false;
|
|
244
|
+
}
|
|
245
|
+
tabs.active = true;
|
|
246
|
+
this._lastActiveTabContainer = {
|
|
247
|
+
container: tabs,
|
|
248
|
+
timestamp,
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
async activateTab(tab) {
|
|
252
|
+
if (!this.canActivateTab(tab)) {
|
|
253
|
+
console.warn('Trying to activate disabled tab.');
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
const formsCheck = await this.canActivateTabForms(tab);
|
|
257
|
+
if (!formsCheck) {
|
|
258
|
+
console.warn('Trying to activate tab while current tab has unsaved forms');
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
let current = tab;
|
|
262
|
+
do {
|
|
263
|
+
const container = current.tabContainer;
|
|
264
|
+
container.value = current.stateId;
|
|
265
|
+
current = container.parentTab;
|
|
266
|
+
} while (current !== null);
|
|
267
|
+
}
|
|
268
|
+
canActivateTab(tab) {
|
|
269
|
+
let current = tab;
|
|
270
|
+
do {
|
|
271
|
+
const container = current.tabContainer;
|
|
272
|
+
if (current.disabled || container.disabled) {
|
|
273
|
+
return false;
|
|
274
|
+
}
|
|
275
|
+
current = container.parentTab;
|
|
276
|
+
} while (current !== null);
|
|
277
|
+
return true;
|
|
278
|
+
}
|
|
279
|
+
async canActivateTabForms(tab) {
|
|
280
|
+
const container = tab.tabContainer;
|
|
281
|
+
return firstValueFrom(canTransition$(container.activeTab?.contDir, tab?.contDir));
|
|
282
|
+
}
|
|
283
|
+
onTabChanges() {
|
|
284
|
+
this.updateShortcuts();
|
|
285
|
+
}
|
|
286
|
+
onTabContainerChanges() {
|
|
287
|
+
this.setDefaultActiveWhenAvailable();
|
|
288
|
+
}
|
|
289
|
+
disableSelfWhenChildCtrlExists() {
|
|
290
|
+
this.childControllers.changes
|
|
291
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
292
|
+
.subscribe((val) => {
|
|
293
|
+
this._disabled = val.length > 0;
|
|
294
|
+
if (this._disabled) {
|
|
295
|
+
this.unbindAll();
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
this.bindAll();
|
|
299
|
+
}
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
setDefaultActive() {
|
|
303
|
+
if (this.tabContainers) {
|
|
304
|
+
const defaultCont = this.tabContainers.find(this.canContainerBeDefault);
|
|
305
|
+
if (defaultCont) {
|
|
306
|
+
this.activateTabContainer(defaultCont, false);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
setDefaultActiveWhenAvailable() {
|
|
311
|
+
const active = this.activeContainer;
|
|
312
|
+
if (active && this.tabContainers.some((cont) => cont === active)) {
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
const newDefault = this.tabContainers.find(this.canContainerBeDefault);
|
|
316
|
+
if (newDefault) {
|
|
317
|
+
this.activateTabContainer(newDefault, false);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
canContainerBeDefault(c) {
|
|
321
|
+
return c.isTopLevel && !c.disabled && c.hasNonDisabledTabs;
|
|
322
|
+
}
|
|
323
|
+
updateShortcuts() {
|
|
324
|
+
this.shortcuts = this._strategy.updateShortcuts(this);
|
|
325
|
+
}
|
|
326
|
+
bindAll() {
|
|
327
|
+
this.shortcutSub.unsubscribe();
|
|
328
|
+
if (!this._disabled) {
|
|
329
|
+
this.shortcutSub = this.shortcutService
|
|
330
|
+
.listen(this._shortcuts)
|
|
331
|
+
.pipe(takeWhile(() => !this._disabled))
|
|
332
|
+
.subscribe((event) => {
|
|
333
|
+
this._strategy.onShortcut(event.shortcut, this);
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
unbindAll() {
|
|
338
|
+
this.shortcutSub.unsubscribe();
|
|
339
|
+
}
|
|
340
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RdtTabControllerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
341
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: RdtTabControllerDirective, selector: "[rdtTabController]", inputs: { rdtTabController: "rdtTabController" }, providers: [
|
|
342
|
+
{
|
|
343
|
+
provide: RDT_GUARDED_COMPONENT,
|
|
344
|
+
useExisting: RdtTabControllerDirective,
|
|
345
|
+
},
|
|
346
|
+
], queries: [{ propertyName: "childControllers", predicate: RdtTabControllerDirective, descendants: true }], hostDirectives: [{ directive: i1.RdtContainerDirective }], ngImport: i0 });
|
|
347
|
+
}
|
|
348
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RdtTabControllerDirective, decorators: [{
|
|
349
|
+
type: Directive,
|
|
350
|
+
args: [{
|
|
351
|
+
selector: '[rdtTabController]',
|
|
352
|
+
providers: [
|
|
353
|
+
{
|
|
354
|
+
provide: RDT_GUARDED_COMPONENT,
|
|
355
|
+
useExisting: RdtTabControllerDirective,
|
|
356
|
+
},
|
|
357
|
+
],
|
|
358
|
+
hostDirectives: [RdtContainerDirective],
|
|
359
|
+
}]
|
|
360
|
+
}], propDecorators: { rdtTabController: [{
|
|
361
|
+
type: Input
|
|
362
|
+
}], childControllers: [{
|
|
363
|
+
type: ContentChildren,
|
|
364
|
+
args: [RdtTabControllerDirective, { descendants: true }]
|
|
365
|
+
}] } });
|
|
366
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXRhYi1jb250cm9sbGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL0BuZ3JkdC90YWJzL3NyYy9saWIvZGlyZWN0aXZlcy9yZHQtdGFiLWNvbnRyb2xsZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFNBQVMsRUFDVCxNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFHTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUNMLGNBQWMsRUFDZCxxQkFBcUIsRUFDckIscUJBQXFCLEdBQ3RCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBZSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0NBQStDLENBQUM7OztBQWE1RixNQUFNLE9BQU8seUJBQXlCO0lBR25CLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1QixlQUFlLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDdEQsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFFekMseURBQXlEO0lBQ3pELElBQ0ksZ0JBQWdCLENBQUMsS0FBOEM7UUFDakUsSUFBSSxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBYyxhQUFhO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQjthQUMzQixvQkFBb0IsRUFBRTthQUN0QixNQUFNLENBQ0wsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsWUFBWSx3QkFBd0IsQ0FDTixDQUFDO0lBQy9DLENBQUM7SUFDRCxJQUFjLElBQUk7UUFDaEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCO2FBQzNCLG9CQUFvQixFQUFFO2FBQ3RCLE1BQU0sQ0FDTCxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxZQUFZLGVBQWUsQ0FDTixDQUFDO0lBQ3RDLENBQUM7SUFHUyxnQkFBZ0IsQ0FBd0M7SUFFbEUsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFDTyxTQUFTLEdBQ2YsSUFBSSwyQkFBMkIsRUFBRSxDQUFDO0lBRTVCLHVCQUF1QixHQUdwQixJQUFJLENBQUM7SUFFUixlQUFlLEdBQUcsS0FBSyxDQUFDO0lBRWhDLElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ08sU0FBUyxHQUFHLEtBQUssQ0FBQztJQUUxQixJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUNELElBQUksU0FBUyxDQUFDLEtBQW9CO1FBQ2hDLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxDQUFTLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUV4QixJQUNFLE1BQU0sQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLE1BQU07WUFDNUIsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUM5QyxDQUFDO1lBQ0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0lBQ08sVUFBVSxHQUFrQixFQUFFLENBQUM7SUFFdkMsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixFQUFFLFNBQVMsQ0FBQztJQUNqRCxDQUFDO0lBRVMsa0JBQWtCLENBQXlCO0lBRXJELFFBQVE7UUFDTixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQ3pDLHFCQUFxQixFQUNyQixTQUFTLEVBQ1Q7WUFDRSxJQUFJLEVBQUUsSUFBSTtTQUNYLENBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzVCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQy9CLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELG9CQUFvQixDQUFDLElBQThCO1FBQ2pELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVM7UUFDUCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDWixJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUM7WUFDcEMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUN0RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2hDLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXO1FBQ1QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUNsQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMzQixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDekIsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQ3pDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLGtCQUFrQixDQUMzQyxDQUFDO1FBQ0YsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN0QyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7T0FFRztJQUNILGdCQUFnQixDQUFDLEtBQWE7UUFDNUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUNsQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDVCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVPLHFCQUFxQixDQUFDLEdBQVc7UUFDdkMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUNsQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxJQUFJLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7UUFDcEUsQ0FBQztRQUNELEtBQ0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUMxRCxDQUFDLEtBQUssWUFBWSxFQUNsQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUMzQyxDQUFDO1lBQ0QsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUM5QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2hDLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxlQUFlLENBQUMsR0FBVztRQUNqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDckMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekUsSUFBSSxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFFRCxLQUNFLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFDeEQsQ0FBQyxLQUFLLFlBQVksRUFDbEIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFDekMsQ0FBQztZQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN2QixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sc0JBQXNCLENBQUMsSUFBOEI7UUFDM0QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQztRQUN4QyxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5RCxDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFhO1FBQ3pCLEtBQUssTUFBTSxTQUFTLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzNDLE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQ2xFLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ1IsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELG9CQUFvQixDQUFDLElBQThCLEVBQUUsY0FBYyxHQUFHLElBQUk7UUFDeEUsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDeEQsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksY0FBYyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hCLENBQUM7UUFFRCxJQUFJLENBQUMsdUJBQXVCLEdBQUc7WUFDN0IsU0FBUyxFQUFFLElBQUk7WUFDZixTQUFTLEVBQUUsSUFBSTtTQUNoQixDQUFDO0lBQ0osQ0FBQztJQUVELDZCQUE2QixDQUMzQixJQUE4QixFQUM5QixTQUFpQjtRQUVqQixJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQ2pDLElBQ0UsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsS0FBSyxJQUFJO2dCQUMvQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxJQUFJLFNBQVMsRUFDbkQsQ0FBQztnQkFDRCxPQUFPO1lBQ1QsQ0FBQztZQUVELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUN4RCxDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFFbkIsSUFBSSxDQUFDLHVCQUF1QixHQUFHO1lBQzdCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsU0FBUztTQUNWLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFvQjtRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzlCLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0NBQWtDLENBQUMsQ0FBQztZQUNqRCxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixPQUFPLENBQUMsSUFBSSxDQUNWLDREQUE0RCxDQUM3RCxDQUFDO1lBQ0YsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLE9BQU8sR0FBMkIsR0FBRyxDQUFDO1FBRTFDLEdBQUcsQ0FBQztZQUNGLE1BQU0sU0FBUyxHQUE2QixPQUFRLENBQUMsWUFBWSxDQUFDO1lBQ2xFLFNBQVMsQ0FBQyxLQUFLLEdBQUcsT0FBUSxDQUFDLE9BQU8sQ0FBQztZQUNuQyxPQUFPLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQztRQUNoQyxDQUFDLFFBQVEsT0FBTyxLQUFLLElBQUksRUFBRTtJQUM3QixDQUFDO0lBRUQsY0FBYyxDQUFDLEdBQW9CO1FBQ2pDLElBQUksT0FBTyxHQUEyQixHQUFHLENBQUM7UUFFMUMsR0FBRyxDQUFDO1lBQ0YsTUFBTSxTQUFTLEdBQTZCLE9BQU8sQ0FBQyxZQUFZLENBQUM7WUFDakUsSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDM0MsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBQ0QsT0FBTyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUM7UUFDaEMsQ0FBQyxRQUFRLE9BQU8sS0FBSyxJQUFJLEVBQUU7UUFFM0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLG1CQUFtQixDQUFDLEdBQW9CO1FBQzVDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUM7UUFDbkMsT0FBTyxjQUFjLENBQ25CLGNBQWMsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQzNELENBQUM7SUFDSixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQscUJBQXFCO1FBQ25CLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFTyw4QkFBOEI7UUFDcEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU87YUFDMUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN6QyxTQUFTLENBQUMsQ0FBQyxHQUF5QyxFQUFFLEVBQUU7WUFDdkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUVoQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUN4RSxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNoQixJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2hELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVPLDZCQUE2QjtRQUNuQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQ3BDLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNqRSxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsb0JBQW9CLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRU8scUJBQXFCLENBQUMsQ0FBMkI7UUFDdkQsT0FBTyxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsa0JBQWtCLENBQUM7SUFDN0QsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU8sT0FBTztRQUNiLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlO2lCQUNwQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztpQkFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDdEMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbEQsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0gsQ0FBQztJQUVPLFNBQVM7UUFDZixJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2pDLENBQUM7dUdBbGFVLHlCQUF5QjsyRkFBekIseUJBQXlCLCtGQVJ6QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxxQkFBcUI7Z0JBQzlCLFdBQVcsRUFBRSx5QkFBeUI7YUFDdkM7U0FDRiwyREFtQ2dCLHlCQUF5Qjs7MkZBaEMvQix5QkFBeUI7a0JBVnJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxxQkFBcUI7NEJBQzlCLFdBQVcsMkJBQTJCO3lCQUN2QztxQkFDRjtvQkFDRCxjQUFjLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztpQkFDeEM7OEJBV0ssZ0JBQWdCO3NCQURuQixLQUFLO2dCQXdCSSxnQkFBZ0I7c0JBRHpCLGVBQWU7dUJBQUMseUJBQXlCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBEZXN0cm95UmVmLFxuICBEaXJlY3RpdmUsXG4gIGluamVjdCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgUXVlcnlMaXN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7XG4gIGNhblRyYW5zaXRpb24kLFxuICBSRFRfR1VBUkRFRF9DT01QT05FTlQsXG4gIFJkdENvbnRhaW5lckRpcmVjdGl2ZSxcbn0gZnJvbSAnQG5ncmR0L2NvcmUnO1xuaW1wb3J0IHsgUmR0U2hvcnRjdXQsIFJkdFNob3J0Y3V0U2VydmljZSB9IGZyb20gJ0BuZ3JkdC9zaG9ydGN1dHMnO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20sIFN1YnNjcmlwdGlvbiwgdGFrZVdoaWxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSZHRUYWJDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL3RhYi1jb250YWluZXIvcmR0LXRhYi1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFJkdFRhYkNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvdGFiL3JkdC10YWIuY29tcG9uZW50JztcbmltcG9ydCB7IEF1dG9SZHRUYWJzU2hvcnRjdXRTdHJhdGVneSB9IGZyb20gJy4uL3N0cmF0ZWdpZXMvYXV0by1yZHQtdGFicy1zaG9ydGN1dC1zdHJhdGVneSc7XG5pbXBvcnQgeyBSZHRUYWJzU2hvcnRjdXRTdHJhdGVneSB9IGZyb20gJy4uL3N0cmF0ZWdpZXMvcmR0LXRhYnMtc2hvcnRjdXQtc3RyYXRlZ3knO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbcmR0VGFiQ29udHJvbGxlcl0nLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBSRFRfR1VBUkRFRF9DT01QT05FTlQsXG4gICAgICB1c2VFeGlzdGluZzogUmR0VGFiQ29udHJvbGxlckRpcmVjdGl2ZSxcbiAgICB9LFxuICBdLFxuICBob3N0RGlyZWN0aXZlczogW1JkdENvbnRhaW5lckRpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIFJkdFRhYkNvbnRyb2xsZXJEaXJlY3RpdmVcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveVxue1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcml2YXRlIHJlYWRvbmx5IHNob3J0Y3V0U2VydmljZSA9IGluamVjdChSZHRTaG9ydGN1dFNlcnZpY2UpO1xuICBwcml2YXRlIHNob3J0Y3V0U3ViID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIC8vIFN0cmluZyB2YWx1ZSBsZXRzIHlvdSB1c2UgdGhlIGRpcmVjdGl2ZSB3aXRob3V0IHBhcmFtLlxuICBASW5wdXQoKVxuICBzZXQgcmR0VGFiQ29udHJvbGxlcih2YWx1ZTogUmR0VGFic1Nob3J0Y3V0U3RyYXRlZ3kgfCBzdHJpbmcgfCBudWxsKSB7XG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuX3N0cmF0ZWd5ID0gdmFsdWU7XG4gICAgICB0aGlzLnVwZGF0ZVNob3J0Y3V0cygpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdGFiQ29udGFpbmVycygpIHtcbiAgICByZXR1cm4gdGhpcy5jb250YWluZXJEaXJlY3RpdmVcbiAgICAgIC5nZXRDaGlsZHJlblJlY3Vyc2l2ZSgpXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAoY2gpID0+IGNoIGluc3RhbmNlb2YgUmR0VGFiQ29udGFpbmVyQ29tcG9uZW50XG4gICAgICApIGFzIHVua25vd24gYXMgUmR0VGFiQ29udGFpbmVyQ29tcG9uZW50W107XG4gIH1cbiAgcHJvdGVjdGVkIGdldCB0YWJzKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRhaW5lckRpcmVjdGl2ZVxuICAgICAgLmdldENoaWxkcmVuUmVjdXJzaXZlKClcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIChjaCkgPT4gY2ggaW5zdGFuY2VvZiBSZHRUYWJDb21wb25lbnRcbiAgICAgICkgYXMgdW5rbm93biBhcyBSZHRUYWJDb21wb25lbnRbXTtcbiAgfVxuXG4gIEBDb250ZW50Q2hpbGRyZW4oUmR0VGFiQ29udHJvbGxlckRpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwcm90ZWN0ZWQgY2hpbGRDb250cm9sbGVycyE6IFF1ZXJ5TGlzdDxSZHRUYWJDb250cm9sbGVyRGlyZWN0aXZlPjtcblxuICBnZXQgc3RyYXRlZ3koKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0cmF0ZWd5O1xuICB9XG4gIHByaXZhdGUgX3N0cmF0ZWd5OiBSZHRUYWJzU2hvcnRjdXRTdHJhdGVneSA9XG4gICAgbmV3IEF1dG9SZHRUYWJzU2hvcnRjdXRTdHJhdGVneSgpO1xuXG4gIHByaXZhdGUgX2xhc3RBY3RpdmVUYWJDb250YWluZXI6IHtcbiAgICB0aW1lc3RhbXA6IG51bWJlciB8IG51bGw7XG4gICAgY29udGFpbmVyOiBSZHRUYWJDb250YWluZXJDb21wb25lbnQ7XG4gIH0gfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9jb250ZW50V2FzSW5pdCA9IGZhbHNlO1xuXG4gIGdldCBkaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICBnZXQgc2hvcnRjdXRzKCkge1xuICAgIHJldHVybiB0aGlzLl9zaG9ydGN1dHM7XG4gIH1cbiAgc2V0IHNob3J0Y3V0cyh2YWx1ZTogUmR0U2hvcnRjdXRbXSkge1xuICAgIGNvbnN0IG9sZFNldCA9IG5ldyBTZXQ8c3RyaW5nPih0aGlzLl9zaG9ydGN1dHMubWFwKChzKSA9PiBzLmhvdGtleXNWYWx1ZSkpO1xuICAgIHRoaXMuX3Nob3J0Y3V0cyA9IHZhbHVlO1xuXG4gICAgaWYgKFxuICAgICAgb2xkU2V0LnNpemUgIT09IHZhbHVlLmxlbmd0aCB8fFxuICAgICAgdmFsdWUuc29tZSgocykgPT4gIW9sZFNldC5oYXMocy5ob3RrZXlzVmFsdWUpKVxuICAgICkge1xuICAgICAgdGhpcy5iaW5kQWxsKCk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX3Nob3J0Y3V0czogUmR0U2hvcnRjdXRbXSA9IFtdO1xuXG4gIGdldCBhY3RpdmVDb250YWluZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xhc3RBY3RpdmVUYWJDb250YWluZXI/LmNvbnRhaW5lcjtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb250YWluZXJEaXJlY3RpdmUhOiBSZHRDb250YWluZXJEaXJlY3RpdmU7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jb250YWluZXJEaXJlY3RpdmUgPSB0aGlzLmluamVjdG9yLmdldChcbiAgICAgIFJkdENvbnRhaW5lckRpcmVjdGl2ZSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHtcbiAgICAgICAgc2VsZjogdHJ1ZSxcbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMudXBkYXRlU2hvcnRjdXRzKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy5zZXREZWZhdWx0QWN0aXZlKCk7XG4gICAgdGhpcy5kaXNhYmxlU2VsZldoZW5DaGlsZEN0cmxFeGlzdHMoKTtcbiAgICB0aGlzLl9jb250ZW50V2FzSW5pdCA9IHRydWU7XG4gICAgaWYgKHRoaXMudGFicy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLm9uVGFiQ2hhbmdlcygpO1xuICAgIH1cbiAgICBpZiAodGhpcy50YWJDb250YWluZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMub25UYWJDb250YWluZXJDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bmJpbmRBbGwoKTtcbiAgICB0aGlzLl9zaG9ydGN1dHMubGVuZ3RoID0gMDtcbiAgfVxuXG4gIGdldFRhYkNvbnRhaW5lckluZGV4KGNvbnQ6IFJkdFRhYkNvbnRhaW5lckNvbXBvbmVudCk6IG51bWJlciB7XG4gICAgY29uc3QgbGV2ZWwgPSB0aGlzLmdldFNhbWVMZXZlbENvbnRhaW5lcnMoY29udCk7XG4gICAgcmV0dXJuIGxldmVsLmluZGV4T2YoY29udCk7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGVzIGZpcnN0IHBhcmVudCBjb250YWluZXIgb2YgY3VycmVudCBjb250YWluZXJcbiAgICogdGhhdCBpcyBub3QgZGlzYWJsZWQgYW5kIGhhcyBhbnkgbm9uIGRpc2FibGVkIHRhYnMuXG4gICAqL1xuICBnb0xldmVsVXAoKTogYm9vbGVhbiB7XG4gICAgbGV0IGNvbnQgPSB0aGlzLmFjdGl2ZUNvbnRhaW5lcjtcbiAgICB3aGlsZSAoY29udCkge1xuICAgICAgY29udCA9IGNvbnQucGFyZW50VGFiPy50YWJDb250YWluZXI7XG4gICAgICBpZiAoY29udCAmJiAhY29udC5kaXNhYmxlZCAmJiBjb250Lmhhc05vbkRpc2FibGVkVGFicykge1xuICAgICAgICB0aGlzLmFjdGl2YXRlVGFiQ29udGFpbmVyKGNvbnQpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlcyBmaXJzdCBjb250YWluZXIgdW5kZXIgY3VycmVudCB0YWIgd2hpY2hcbiAgICogaXMgbm90IGRpc2FibGVkIGFuZCBoYXMgYW55IG5vbiBkaXNhYmxlZCB0YWJzLlxuICAgKi9cbiAgZ29MZXZlbERvd24oKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY29udCA9IHRoaXMuYWN0aXZlQ29udGFpbmVyO1xuICAgIGlmICghY29udCB8fCBjb250LmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGxldCB0YWIgPSBjb250LnRhYnNMaXN0LmZpbmQoKHQpID0+IHQuc3RhdGVJZCA9PT0gY29udC52YWx1ZSk7XG4gICAgaWYgKCF0YWIgfHwgdGFiLmRpc2FibGVkKSB7XG4gICAgICB0YWIgPSBjb250LnRhYnNMaXN0LmZpbmQoKHQpID0+ICF0LmRpc2FibGVkKTtcbiAgICB9XG4gICAgaWYgKCF0YWIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgdGFyZ2V0Q29udCA9IHRhYi5jaGlsZENvbnRhaW5lcnMuZmluZChcbiAgICAgIChjKSA9PiAhYy5kaXNhYmxlZCAmJiBjLmhhc05vbkRpc2FibGVkVGFic1xuICAgICk7XG4gICAgaWYgKHRhcmdldENvbnQpIHtcbiAgICAgIHRoaXMuYWN0aXZhdGVUYWJDb250YWluZXIodGFyZ2V0Q29udCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlcyBuZXh0IGNvbnRhaW5lciBvbiBjdXJyZW50IGxldmVsXG4gICAqICh1bmRlciBwYXJlbnQgY29udGFpbmVyIG9mIGN1cnJlbnRseSBhY3RpdmUgY29udGFpbmVyKS5cbiAgICogSXMgY3ljbGljLlxuICAgKi9cbiAgZ29Ub05leHRDb250YWluZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ29Ub0FkamFjZW50Q29udGFpbmVyKDEpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlcyBwcmV2aW91cyBjb250YWluZXIgb24gY3VycmVudCBsZXZlbFxuICAgKiAodW5kZXIgcGFyZW50IGNvbnRhaW5lciBvZiBjdXJyZW50bHkgYWN0aXZlIGNvbnRhaW5lcikuXG4gICAqIElzIGN5Y2xpYy5cbiAgICovXG4gIGdvVG9QcmV2Q29udGFpbmVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdvVG9BZGphY2VudENvbnRhaW5lcigtMSk7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGVzIHRhYiB3aXRoaW4gYWN0aXZlIGNvbnRhaW5lciBhdCB0aGUgaW5kZXggb2YgYXJndW1lbnQuXG4gICAqL1xuICBnb1RvVGFiV2l0aEluZGV4KGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBjb250ID0gdGhpcy5hY3RpdmVDb250YWluZXI7XG4gICAgaWYgKCFjb250KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHRhYiA9IGNvbnQudGFic0xpc3QuZ2V0KGluZGV4KTtcbiAgICBpZiAoIXRhYikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2YXRlVGFiKHRhYik7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGVzIG5leHQgdGFiIHdpdGhpbiBhY3RpdmUgY29udGFpbmVyLiBJcyBjeWNsaWMuXG4gICAqL1xuICBnb1RvTmV4dFRhYigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nb1RvQWRqYWNlbnRUYWIoMSk7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGVzIHByZXZpb3VzIHRhYiB3aXRoaW4gYWN0aXZlIGNvbnRhaW5lci4gSXMgY3ljbGljLlxuICAgKi9cbiAgZ29Ub1ByZXZUYWIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ29Ub0FkamFjZW50VGFiKC0xKTtcbiAgfVxuXG4gIHByaXZhdGUgZ29Ub0FkamFjZW50Q29udGFpbmVyKGRpcjogLTEgfCAxKSB7XG4gICAgY29uc3QgY29udCA9IHRoaXMuYWN0aXZlQ29udGFpbmVyO1xuICAgIGlmICghY29udCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGxldmVsID0gdGhpcy5nZXRTYW1lTGV2ZWxDb250YWluZXJzKGNvbnQpO1xuICAgIGlmICghbGV2ZWwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSBsZXZlbC5pbmRleE9mKGNvbnQpO1xuICAgIGlmIChjdXJyZW50SW5kZXggPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0N1cnJlbnQgY29udGFpbmVyIGlzIG5vdCB3aXRoaW4gaXRzIG93biBsZXZlbD8nKTtcbiAgICB9XG4gICAgZm9yIChcbiAgICAgIGxldCBpID0gKGN1cnJlbnRJbmRleCArIGRpciArIGxldmVsLmxlbmd0aCkgJSBsZXZlbC5sZW5ndGg7XG4gICAgICBpICE9PSBjdXJyZW50SW5kZXg7XG4gICAgICBpID0gKGkgKyBkaXIgKyBsZXZlbC5sZW5ndGgpICUgbGV2ZWwubGVuZ3RoXG4gICAgKSB7XG4gICAgICBjb25zdCBuZXh0ID0gbGV2ZWxbaV07XG4gICAgICBpZiAoIW5leHQuZGlzYWJsZWQgJiYgbmV4dC5oYXNOb25EaXNhYmxlZFRhYnMpIHtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZVRhYkNvbnRhaW5lcihuZXh0KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgZ29Ub0FkamFjZW50VGFiKGRpcjogLTEgfCAxKSB7XG4gICAgY29uc3QgY29udCA9IHRoaXMuYWN0aXZlQ29udGFpbmVyO1xuICAgIGlmICghY29udCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHRhYnMgPSBjb250LnRhYnNMaXN0LnRvQXJyYXkoKTtcbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0YWJzLmZpbmRJbmRleCgodGFiKSA9PiB0YWIuc3RhdGVJZCA9PT0gY29udC52YWx1ZSk7XG4gICAgaWYgKGN1cnJlbnRJbmRleCA8IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ3VycmVudCB0YWIgaXMgbm90IGZvdW5kIGluIGl0cyBjb250YWluZXI/IScpO1xuICAgIH1cblxuICAgIGZvciAoXG4gICAgICBsZXQgaSA9IChjdXJyZW50SW5kZXggKyBkaXIgKyB0YWJzLmxlbmd0aCkgJSB0YWJzLmxlbmd0aDtcbiAgICAgIGkgIT09IGN1cnJlbnRJbmRleDtcbiAgICAgIGkgPSAoaSArIGRpciArIHRhYnMubGVuZ3RoKSAlIHRhYnMubGVuZ3RoXG4gICAgKSB7XG4gICAgICBjb25zdCBuZXh0ID0gdGFic1tpXTtcbiAgICAgIGlmICghbmV4dC5kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLmFjdGl2YXRlVGFiKG5leHQpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTYW1lTGV2ZWxDb250YWluZXJzKGNvbnQ6IFJkdFRhYkNvbnRhaW5lckNvbXBvbmVudCkge1xuICAgIGlmIChjb250LnBhcmVudFRhYikge1xuICAgICAgcmV0dXJuIGNvbnQucGFyZW50VGFiLmNoaWxkQ29udGFpbmVycztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudGFiQ29udGFpbmVycy5maWx0ZXIoKGNvbnQpID0+IGNvbnQuaXNUb3BMZXZlbCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0VGFiQnlWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgZm9yIChjb25zdCBjb250YWluZXIgb2YgdGhpcy50YWJDb250YWluZXJzKSB7XG4gICAgICBjb25zdCB0YWIgPSBjb250YWluZXIudGFic0xpc3QuZmluZCgoY2gpID0+IGNoLnN0YXRlSWQgPT09IHZhbHVlKTtcbiAgICAgIGlmICh0YWIpIHtcbiAgICAgICAgcmV0dXJuIHRhYjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBhY3RpdmF0ZVRhYkNvbnRhaW5lcih0YWJzOiBSZHRUYWJDb250YWluZXJDb21wb25lbnQsIHNjcm9sbEludG9WaWV3ID0gdHJ1ZSkge1xuICAgIGlmICh0aGlzLl9sYXN0QWN0aXZlVGFiQ29udGFpbmVyKSB7XG4gICAgICB0aGlzLl9sYXN0QWN0aXZlVGFiQ29udGFpbmVyLmNvbnRhaW5lci5hY3RpdmUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0YWJzLmFjdGl2ZSA9IHRydWU7XG4gICAgaWYgKHNjcm9sbEludG9WaWV3KSB7XG4gICAgICB0YWJzLnNjcm9sbEludG9WaWV3KCk7XG4gICAgfVxuXG4gICAgdGhpcy5fbGFzdEFjdGl2ZVRhYkNvbnRhaW5lciA9IHtcbiAgICAgIGNvbnRhaW5lcjogdGFicyxcbiAgICAgIHRpbWVzdGFtcDogbnVsbCxcbiAgICB9O1xuICB9XG5cbiAgYWN0aXZhdGVUYWJDb250YWluZXJGcm9tQ2xpY2soXG4gICAgdGFiczogUmR0VGFiQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIHRpbWVzdGFtcDogbnVtYmVyXG4gICkge1xuICAgIGlmICh0aGlzLl9sYXN0QWN0aXZlVGFiQ29udGFpbmVyKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuX2xhc3RBY3RpdmVUYWJDb250YWluZXIudGltZXN0YW1wICE9PSBudWxsICYmXG4gICAgICAgIHRoaXMuX2xhc3RBY3RpdmVUYWJDb250YWluZXIudGltZXN0YW1wID49IHRpbWVzdGFtcFxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fbGFzdEFjdGl2ZVRhYkNvbnRhaW5lci5jb250YWluZXIuYWN0aXZlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGFicy5hY3RpdmUgPSB0cnVlO1xuXG4gICAgdGhpcy5fbGFzdEFjdGl2ZVRhYkNvbnRhaW5lciA9IHtcbiAgICAgIGNvbnRhaW5lcjogdGFicyxcbiAgICAgIHRpbWVzdGFtcCxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgYWN0aXZhdGVUYWIodGFiOiBSZHRUYWJDb21wb25lbnQpIHtcbiAgICBpZiAoIXRoaXMuY2FuQWN0aXZhdGVUYWIodGFiKSkge1xuICAgICAgY29uc29sZS53YXJuKCdUcnlpbmcgdG8gYWN0aXZhdGUgZGlzYWJsZWQgdGFiLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1zQ2hlY2sgPSBhd2FpdCB0aGlzLmNhbkFjdGl2YXRlVGFiRm9ybXModGFiKTtcbiAgICBpZiAoIWZvcm1zQ2hlY2spIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ1RyeWluZyB0byBhY3RpdmF0ZSB0YWIgd2hpbGUgY3VycmVudCB0YWIgaGFzIHVuc2F2ZWQgZm9ybXMnXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjdXJyZW50OiBSZHRUYWJDb21wb25lbnQgfCBudWxsID0gdGFiO1xuXG4gICAgZG8ge1xuICAgICAgY29uc3QgY29udGFpbmVyOiBSZHRUYWJDb250YWluZXJDb21wb25lbnQgPSBjdXJyZW50IS50YWJDb250YWluZXI7XG4gICAgICBjb250YWluZXIudmFsdWUgPSBjdXJyZW50IS5zdGF0ZUlkO1xuICAgICAgY3VycmVudCA9IGNvbnRhaW5lci5wYXJlbnRUYWI7XG4gICAgfSB3aGlsZSAoY3VycmVudCAhPT0gbnVsbCk7XG4gIH1cblxuICBjYW5BY3RpdmF0ZVRhYih0YWI6IFJkdFRhYkNvbXBvbmVudCkge1xuICAgIGxldCBjdXJyZW50OiBSZHRUYWJDb21wb25lbnQgfCBudWxsID0gdGFiO1xuXG4gICAgZG8ge1xuICAgICAgY29uc3QgY29udGFpbmVyOiBSZHRUYWJDb250YWluZXJDb21wb25lbnQgPSBjdXJyZW50LnRhYkNvbnRhaW5lcjtcbiAgICAgIGlmIChjdXJyZW50LmRpc2FibGVkIHx8IGNvbnRhaW5lci5kaXNhYmxlZCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBjdXJyZW50ID0gY29udGFpbmVyLnBhcmVudFRhYjtcbiAgICB9IHdoaWxlIChjdXJyZW50ICE9PSBudWxsKTtcblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgY2FuQWN0aXZhdGVUYWJGb3Jtcyh0YWI6IFJkdFRhYkNvbXBvbmVudCkge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRhYi50YWJDb250YWluZXI7XG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKFxuICAgICAgY2FuVHJhbnNpdGlvbiQoY29udGFpbmVyLmFjdGl2ZVRhYj8uY29udERpciwgdGFiPy5jb250RGlyKVxuICAgICk7XG4gIH1cblxuICBvblRhYkNoYW5nZXMoKSB7XG4gICAgdGhpcy51cGRhdGVTaG9ydGN1dHMoKTtcbiAgfVxuXG4gIG9uVGFiQ29udGFpbmVyQ2hhbmdlcygpIHtcbiAgICB0aGlzLnNldERlZmF1bHRBY3RpdmVXaGVuQXZhaWxhYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIGRpc2FibGVTZWxmV2hlbkNoaWxkQ3RybEV4aXN0cygpIHtcbiAgICB0aGlzLmNoaWxkQ29udHJvbGxlcnMuY2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKCh2YWw6IFF1ZXJ5TGlzdDxSZHRUYWJDb250cm9sbGVyRGlyZWN0aXZlPikgPT4ge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbC5sZW5ndGggPiAwO1xuXG4gICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCkge1xuICAgICAgICAgIHRoaXMudW5iaW5kQWxsKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5iaW5kQWxsKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREZWZhdWx0QWN0aXZlKCkge1xuICAgIGlmICh0aGlzLnRhYkNvbnRhaW5lcnMpIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRDb250ID0gdGhpcy50YWJDb250YWluZXJzLmZpbmQodGhpcy5jYW5Db250YWluZXJCZURlZmF1bHQpO1xuICAgICAgaWYgKGRlZmF1bHRDb250KSB7XG4gICAgICAgIHRoaXMuYWN0aXZhdGVUYWJDb250YWluZXIoZGVmYXVsdENvbnQsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldERlZmF1bHRBY3RpdmVXaGVuQXZhaWxhYmxlKCkge1xuICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuYWN0aXZlQ29udGFpbmVyO1xuICAgIGlmIChhY3RpdmUgJiYgdGhpcy50YWJDb250YWluZXJzLnNvbWUoKGNvbnQpID0+IGNvbnQgPT09IGFjdGl2ZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbmV3RGVmYXVsdCA9IHRoaXMudGFiQ29udGFpbmVycy5maW5kKHRoaXMuY2FuQ29udGFpbmVyQmVEZWZhdWx0KTtcbiAgICBpZiAobmV3RGVmYXVsdCkge1xuICAgICAgdGhpcy5hY3RpdmF0ZVRhYkNvbnRhaW5lcihuZXdEZWZhdWx0LCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjYW5Db250YWluZXJCZURlZmF1bHQoYzogUmR0VGFiQ29udGFpbmVyQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIGMuaXNUb3BMZXZlbCAmJiAhYy5kaXNhYmxlZCAmJiBjLmhhc05vbkRpc2FibGVkVGFicztcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU2hvcnRjdXRzKCkge1xuICAgIHRoaXMuc2hvcnRjdXRzID0gdGhpcy5fc3RyYXRlZ3kudXBkYXRlU2hvcnRjdXRzKHRoaXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBiaW5kQWxsKCkge1xuICAgIHRoaXMuc2hvcnRjdXRTdWIudW5zdWJzY3JpYmUoKTtcbiAgICBpZiAoIXRoaXMuX2Rpc2FibGVkKSB7XG4gICAgICB0aGlzLnNob3J0Y3V0U3ViID0gdGhpcy5zaG9ydGN1dFNlcnZpY2VcbiAgICAgICAgLmxpc3Rlbih0aGlzLl9zaG9ydGN1dHMpXG4gICAgICAgIC5waXBlKHRha2VXaGlsZSgoKSA9PiAhdGhpcy5fZGlzYWJsZWQpKVxuICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgIHRoaXMuX3N0cmF0ZWd5Lm9uU2hvcnRjdXQoZXZlbnQuc2hvcnRjdXQsIHRoaXMpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVuYmluZEFsbCgpIHtcbiAgICB0aGlzLnNob3J0Y3V0U3ViLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export var RdtTabMode;
|
|
2
|
+
(function (RdtTabMode) {
|
|
3
|
+
})(RdtTabMode || (RdtTabMode = {}));
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXRhYnMtbW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3RhYnMvc3JjL2xpYi9yZHQtdGFicy1tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsTUFBTSxDQUFOLElBQVksVUFBYTtBQUF6QixXQUFZLFVBQVU7QUFBRSxDQUFDLEVBQWIsVUFBVSxLQUFWLFVBQVUsUUFBRyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgUmR0VGFiQ29udGFpbmVyU3RhdGUge1xuICBpZDogYW55O1xuICB2YWx1ZTogYW55O1xuICB0YWJTdGF0ZXM6IFJkdFRhYlN0YXRlW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmR0VGFiU3RhdGUge1xuICBpZDogYW55O1xuICBjb250YWluZXJTdGF0ZXM6IFJkdFRhYkNvbnRhaW5lclN0YXRlW107XG59XG5cbmV4cG9ydCBlbnVtIFJkdFRhYk1vZGUge31cbiJdfQ==
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { RdtTabContainerComponent } from './components/tab-container/rdt-tab-container.component';
|
|
4
|
+
import { RdtTabComponent } from './components/tab/rdt-tab.component';
|
|
5
|
+
import { RdtDestroyInactiveDirective } from './directives/rdt-destroy-inactive.directive';
|
|
6
|
+
import { RdtTabControllerDirective } from './directives/rdt-tab-controller.directive';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class RdtTabsModule {
|
|
9
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RdtTabsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: RdtTabsModule, declarations: [RdtTabComponent,
|
|
11
|
+
RdtTabContainerComponent,
|
|
12
|
+
RdtTabControllerDirective,
|
|
13
|
+
RdtDestroyInactiveDirective], imports: [CommonModule], exports: [RdtTabComponent,
|
|
14
|
+
RdtTabContainerComponent,
|
|
15
|
+
RdtTabControllerDirective,
|
|
16
|
+
RdtDestroyInactiveDirective] });
|
|
17
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RdtTabsModule, imports: [CommonModule] });
|
|
18
|
+
}
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RdtTabsModule, decorators: [{
|
|
20
|
+
type: NgModule,
|
|
21
|
+
args: [{
|
|
22
|
+
declarations: [
|
|
23
|
+
RdtTabComponent,
|
|
24
|
+
RdtTabContainerComponent,
|
|
25
|
+
RdtTabControllerDirective,
|
|
26
|
+
RdtDestroyInactiveDirective,
|
|
27
|
+
],
|
|
28
|
+
exports: [
|
|
29
|
+
RdtTabComponent,
|
|
30
|
+
RdtTabContainerComponent,
|
|
31
|
+
RdtTabControllerDirective,
|
|
32
|
+
RdtDestroyInactiveDirective,
|
|
33
|
+
],
|
|
34
|
+
imports: [CommonModule],
|
|
35
|
+
}]
|
|
36
|
+
}] });
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXRhYnMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3RhYnMvc3JjL2xpYi9yZHQtdGFicy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDbEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOztBQWlCdEYsTUFBTSxPQUFPLGFBQWE7dUdBQWIsYUFBYTt3R0FBYixhQUFhLGlCQWJ0QixlQUFlO1lBQ2Ysd0JBQXdCO1lBQ3hCLHlCQUF5QjtZQUN6QiwyQkFBMkIsYUFRbkIsWUFBWSxhQUxwQixlQUFlO1lBQ2Ysd0JBQXdCO1lBQ3hCLHlCQUF5QjtZQUN6QiwyQkFBMkI7d0dBSWxCLGFBQWEsWUFGZCxZQUFZOzsyRkFFWCxhQUFhO2tCQWZ6QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixlQUFlO3dCQUNmLHdCQUF3Qjt3QkFDeEIseUJBQXlCO3dCQUN6QiwyQkFBMkI7cUJBQzVCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxlQUFlO3dCQUNmLHdCQUF3Qjt3QkFDeEIseUJBQXlCO3dCQUN6QiwyQkFBMkI7cUJBQzVCO29CQUNELE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJkdFRhYkNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWItY29udGFpbmVyL3JkdC10YWItY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZHRUYWJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFiL3JkdC10YWIuY29tcG9uZW50JztcbmltcG9ydCB7IFJkdERlc3Ryb3lJbmFjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9yZHQtZGVzdHJveS1pbmFjdGl2ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUmR0VGFiQ29udHJvbGxlckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9yZHQtdGFiLWNvbnRyb2xsZXIuZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgUmR0VGFiQ29tcG9uZW50LFxuICAgIFJkdFRhYkNvbnRhaW5lckNvbXBvbmVudCxcbiAgICBSZHRUYWJDb250cm9sbGVyRGlyZWN0aXZlLFxuICAgIFJkdERlc3Ryb3lJbmFjdGl2ZURpcmVjdGl2ZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFJkdFRhYkNvbXBvbmVudCxcbiAgICBSZHRUYWJDb250YWluZXJDb21wb25lbnQsXG4gICAgUmR0VGFiQ29udHJvbGxlckRpcmVjdGl2ZSxcbiAgICBSZHREZXN0cm95SW5hY3RpdmVEaXJlY3RpdmUsXG4gIF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBSZHRUYWJzTW9kdWxlIHt9XG4iXX0=
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { RdtShortcut } from '@ngrdt/shortcuts';
|
|
2
|
+
import { RdtTabsShortcutStrategy } from './rdt-tabs-shortcut-strategy';
|
|
3
|
+
const TAB_BASE = 'alt';
|
|
4
|
+
const TAB_KEY_SETS = [
|
|
5
|
+
['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'],
|
|
6
|
+
['+', 'ě', 'š', 'č', 'ř', 'ž', 'ý', 'á', 'í', 'é'],
|
|
7
|
+
];
|
|
8
|
+
const NEXT_CONTAINER = RdtShortcut.create('alt', 's');
|
|
9
|
+
const PREV_CONTAINER = RdtShortcut.create('alt', 'w');
|
|
10
|
+
const LEVEL_UP = RdtShortcut.create('ctrl', 'alt', 'up');
|
|
11
|
+
const LEVEL_DOWN = RdtShortcut.create('ctrl', 'alt', 'down');
|
|
12
|
+
const NEXT_TAB = RdtShortcut.create('ctrl', 'alt', 'right');
|
|
13
|
+
const PREV_TAB = RdtShortcut.create('ctrl', 'alt', 'left');
|
|
14
|
+
export class AutoRdtTabsShortcutStrategy extends RdtTabsShortcutStrategy {
|
|
15
|
+
updateShortcuts() {
|
|
16
|
+
return AutoRdtTabsShortcutStrategy.shortcuts;
|
|
17
|
+
}
|
|
18
|
+
onShortcut(shortcut, ctrl) {
|
|
19
|
+
const key = shortcut.lastKey;
|
|
20
|
+
if (!key) {
|
|
21
|
+
throw new Error('Key should not be undefined!');
|
|
22
|
+
}
|
|
23
|
+
const action = AutoRdtTabsShortcutStrategy.actions[key];
|
|
24
|
+
if (!action) {
|
|
25
|
+
throw new Error(`Unknown action for key ${key}`);
|
|
26
|
+
}
|
|
27
|
+
action(ctrl);
|
|
28
|
+
}
|
|
29
|
+
static generateActions() {
|
|
30
|
+
const actions = {
|
|
31
|
+
[LEVEL_UP.lastKey]: (ctrl) => ctrl.goLevelUp(),
|
|
32
|
+
[LEVEL_DOWN.lastKey]: (ctrl) => ctrl.goLevelDown(),
|
|
33
|
+
[NEXT_CONTAINER.lastKey]: (ctrl) => ctrl.goToNextContainer(),
|
|
34
|
+
[PREV_CONTAINER.lastKey]: (ctrl) => ctrl.goToPrevContainer(),
|
|
35
|
+
[NEXT_TAB.lastKey]: (ctrl) => ctrl.goToNextTab(),
|
|
36
|
+
[PREV_TAB.lastKey]: (ctrl) => ctrl.goToPrevTab(),
|
|
37
|
+
};
|
|
38
|
+
TAB_KEY_SETS.forEach((set) => {
|
|
39
|
+
set.forEach((char, i) => {
|
|
40
|
+
actions[char] = (ctrl) => ctrl.goToTabWithIndex(i);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
return actions;
|
|
44
|
+
}
|
|
45
|
+
static generateShortcuts() {
|
|
46
|
+
const shortcuts = [
|
|
47
|
+
LEVEL_UP,
|
|
48
|
+
LEVEL_DOWN,
|
|
49
|
+
NEXT_CONTAINER,
|
|
50
|
+
PREV_CONTAINER,
|
|
51
|
+
NEXT_TAB,
|
|
52
|
+
PREV_TAB,
|
|
53
|
+
];
|
|
54
|
+
TAB_KEY_SETS.forEach((set) => {
|
|
55
|
+
set.forEach((tabKey) => {
|
|
56
|
+
shortcuts.push(RdtShortcut.create(TAB_BASE, tabKey));
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
return shortcuts;
|
|
60
|
+
}
|
|
61
|
+
static shortcuts = AutoRdtTabsShortcutStrategy.generateShortcuts();
|
|
62
|
+
static actions = AutoRdtTabsShortcutStrategy.generateActions();
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1yZHQtdGFicy1zaG9ydGN1dC1zdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL0BuZ3JkdC90YWJzL3NyYy9saWIvc3RyYXRlZ2llcy9hdXRvLXJkdC10YWJzLXNob3J0Y3V0LXN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUV2RSxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDdkIsTUFBTSxZQUFZLEdBQUc7SUFDbkIsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDbEQsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7Q0FDbkQsQ0FBQztBQUNGLE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3RELE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3RELE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN6RCxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDN0QsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUs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QUFlLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJkdFNob3J0Y3V0IH0gZnJvbSAnQG5ncmR0L3Nob3J0Y3V0cyc7XG5pbXBvcnQgeyBSZHRUYWJDb250cm9sbGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9yZHQtdGFiLWNvbnRyb2xsZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFJkdFRhYnNTaG9ydGN1dFN0cmF0ZWd5IH0gZnJvbSAnLi9yZHQtdGFicy1zaG9ydGN1dC1zdHJhdGVneSc7XG5cbmNvbnN0IFRBQl9CQVNFID0gJ2FsdCc7XG5jb25zdCBUQUJfS0VZX1NFVFMgPSBbXG4gIFsnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnLCAnNycsICc4JywgJzknLCAnMCddLFxuICBbJysnLCAnxJsnLCAnxaEnLCAnxI0nLCAnxZknLCAnxb4nLCAnw70nLCAnw6EnLCAnw60nLCAnw6knXSxcbl07XG5jb25zdCBORVhUX0NPTlRBSU5FUiA9IFJkdFNob3J0Y3V0LmNyZWF0ZSgnYWx0JywgJ3MnKTtcbmNvbnN0IFBSRVZfQ09OVEFJTkVSID0gUmR0U2hvcnRjdXQuY3JlYXRlKCdhbHQnLCAndycpO1xuY29uc3QgTEVWRUxfVVAgPSBSZHRTaG9ydGN1dC5jcmVhdGUoJ2N0cmwnLCAnYWx0JywgJ3VwJyk7XG5jb25zdCBMRVZFTF9ET1dOID0gUmR0U2hvcnRjdXQuY3JlYXRlKCdjdHJsJywgJ2FsdCcsICdkb3duJyk7XG5jb25zdCBORVhUX1RBQiA9IFJkdFNob3J0Y3V0LmNyZWF0ZSgnY3RybCcsICdhbHQnLCAncmlnaHQnKTtcbmNvbnN0IFBSRVZfVEFCID0gUmR0U2hvcnRjdXQuY3JlYXRlKCdjdHJsJywgJ2FsdCcsICdsZWZ0Jyk7XG5cbmludGVyZmFjZSBSZHRTaG9ydGN1dEFjdGlvbnMge1xuICBba2V5OiBzdHJpbmddOiAoY3RybDogUmR0VGFiQ29udHJvbGxlckRpcmVjdGl2ZSkgPT4gYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIEF1dG9SZHRUYWJzU2hvcnRjdXRTdHJhdGVneSBleHRlbmRzIFJkdFRhYnNTaG9ydGN1dFN0cmF0ZWd5IHtcbiAgb3ZlcnJpZGUgdXBkYXRlU2hvcnRjdXRzKCk6IFJkdFNob3J0Y3V0W10ge1xuICAgIHJldHVybiBBdXRvUmR0VGFic1Nob3J0Y3V0U3RyYXRlZ3kuc2hvcnRjdXRzO1xuICB9XG5cbiAgb3ZlcnJpZGUgb25TaG9ydGN1dChcbiAgICBzaG9ydGN1dDogUmR0U2hvcnRjdXQsXG4gICAgY3RybDogUmR0VGFiQ29udHJvbGxlckRpcmVjdGl2ZVxuICApOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSBzaG9ydGN1dC5sYXN0S2V5O1xuICAgIGlmICgha2V5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0tleSBzaG91bGQgbm90IGJlIHVuZGVmaW5lZCEnKTtcbiAgICB9XG4gICAgY29uc3QgYWN0aW9uID0gQXV0b1JkdFRhYnNTaG9ydGN1dFN0cmF0ZWd5LmFjdGlvbnNba2V5XTtcbiAgICBpZiAoIWFjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGFjdGlvbiBmb3Iga2V5ICR7a2V5fWApO1xuICAgIH1cbiAgICBhY3Rpb24oY3RybCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZUFjdGlvbnMoKSB7XG4gICAgY29uc3QgYWN0aW9uczogUmR0U2hvcnRjdXRBY3Rpb25zID0ge1xuICAgICAgW0xFVkVMX1VQLmxhc3RLZXldOiAoY3RybCkgPT4gY3RybC5nb0xldmVsVXAoKSxcbiAgICAgIFtMRVZFTF9ET1dOLmxhc3RLZXldOiAoY3RybCkgPT4gY3RybC5nb0xldmVsRG93bigpLFxuICAgICAgW05FWFRfQ09OVEFJTkVSLmxhc3RLZXldOiAoY3RybCkgPT4gY3RybC5nb1RvTmV4dENvbnRhaW5lcigpLFxuICAgICAgW1BSRVZfQ09OVEFJTkVSLmxhc3RLZXldOiAoY3RybCkgPT4gY3RybC5nb1RvUHJldkNvbnRhaW5lcigpLFxuICAgICAgW05FWFRfVEFCLmxhc3RLZXldOiAoY3RybCkgPT4gY3RybC5nb1RvTmV4dFRhYigpLFxuICAgICAgW1BSRVZfVEFCLmxhc3RLZXldOiAoY3RybCkgPT4gY3RybC5nb1RvUHJldlRhYigpLFxuICAgIH07XG5cbiAgICBUQUJfS0VZX1NFVFMuZm9yRWFjaCgoc2V0KSA9PiB7XG4gICAgICBzZXQuZm9yRWFjaCgoY2hhciwgaSkgPT4ge1xuICAgICAgICBhY3Rpb25zW2NoYXJdID0gKGN0cmwpID0+IGN0cmwuZ29Ub1RhYldpdGhJbmRleChpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBhY3Rpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2VuZXJhdGVTaG9ydGN1dHMoKSB7XG4gICAgY29uc3Qgc2hvcnRjdXRzOiBSZHRTaG9ydGN1dFtdID0gW1xuICAgICAgTEVWRUxfVVAsXG4gICAgICBMRVZFTF9ET1dOLFxuICAgICAgTkVYVF9DT05UQUlORVIsXG4gICAgICBQUkVWX0NPTlRBSU5FUixcbiAgICAgIE5FWFRfVEFCLFxuICAgICAgUFJFVl9UQUIsXG4gICAgXTtcblxuICAgIFRBQl9LRVlfU0VUUy5mb3JFYWNoKChzZXQpID0+IHtcbiAgICAgIHNldC5mb3JFYWNoKCh0YWJLZXkpID0+IHtcbiAgICAgICAgc2hvcnRjdXRzLnB1c2goUmR0U2hvcnRjdXQuY3JlYXRlKFRBQl9CQVNFLCB0YWJLZXkpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNob3J0Y3V0cztcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHNob3J0Y3V0czogUmR0U2hvcnRjdXRbXSA9XG4gICAgQXV0b1JkdFRhYnNTaG9ydGN1dFN0cmF0ZWd5LmdlbmVyYXRlU2hvcnRjdXRzKCk7XG4gIHByaXZhdGUgc3RhdGljIGFjdGlvbnMgPSBBdXRvUmR0VGFic1Nob3J0Y3V0U3RyYXRlZ3kuZ2VuZXJhdGVBY3Rpb25zKCk7XG59XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export class RdtTabsShortcutStrategy {
|
|
2
|
+
}
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXRhYnMtc2hvcnRjdXQtc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvdGFicy9zcmMvbGliL3N0cmF0ZWdpZXMvcmR0LXRhYnMtc2hvcnRjdXQtc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFnQix1QkFBdUI7Q0FnQjVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmR0U2hvcnRjdXQgfSBmcm9tICdAbmdyZHQvc2hvcnRjdXRzJztcbmltcG9ydCB7IFJkdFRhYkNvbnRyb2xsZXJEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3JkdC10YWItY29udHJvbGxlci5kaXJlY3RpdmUnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmR0VGFic1Nob3J0Y3V0U3RyYXRlZ3kge1xuICAvKipcbiAgICogR2V0cyBjYWxsZWQgb25Jbml0IGFuZCB3aGVuZXZlciB0YWJzIGFyZSBhZGRlZC9yZW1vdmVkIGZyb20gQ29udHJvbGxlci5cbiAgICogQHBhcmFtIGN0cmwgQ29udHJvbGxlciB1c2luZyB0aGlzIHN0cmF0ZWd5LlxuICAgKiBAcmV0dXJucyBMaXN0IG9mIHNob3J0Y3V0cyB0byByZWdpc3Rlci5cbiAgICovXG4gIGFic3RyYWN0IHVwZGF0ZVNob3J0Y3V0cyhjdHJsOiBSZHRUYWJDb250cm9sbGVyRGlyZWN0aXZlKTogUmR0U2hvcnRjdXRbXTtcbiAgLyoqXG4gICAqIEdldHMgY2FsbGVkIHdoZW5ldmVyIGhvdGtleXMgZGV0ZWN0cyBvbmUgb2YgdGhlIHJlZ2lzdGVyZWQgc2hvcnRjdXRzLlxuICAgKiBAcGFyYW0gc2hvcnRjdXQgUmVnaXN0ZXJlZCBzaG9ydGN1dC5cbiAgICogQHBhcmFtIGN0cmwgQ29udHJvbGxlciB1c2luZyB0aGlzIHN0cmF0ZWd5LlxuICAgKi9cbiAgYWJzdHJhY3Qgb25TaG9ydGN1dChcbiAgICBzaG9ydGN1dDogUmR0U2hvcnRjdXQsXG4gICAgY3RybDogUmR0VGFiQ29udHJvbGxlckRpcmVjdGl2ZVxuICApOiB2b2lkO1xufVxuIl19
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export class StaticRdtTabsShortcutStrategy {
|
|
2
|
+
config;
|
|
3
|
+
constructor(config) {
|
|
4
|
+
this.config = config;
|
|
5
|
+
}
|
|
6
|
+
updateShortcuts() {
|
|
7
|
+
return Array.from(this.config.shortcuts.keys());
|
|
8
|
+
}
|
|
9
|
+
onShortcut(shortcut, ctrl) {
|
|
10
|
+
const value = this.config.shortcuts.get(shortcut);
|
|
11
|
+
const tab = ctrl.getTabByValue(value);
|
|
12
|
+
if (tab) {
|
|
13
|
+
ctrl.activateTab(tab);
|
|
14
|
+
ctrl.activateTabContainer(tab.tabContainer);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
console.warn(`Registered shortcut has been detected,
|
|
18
|
+
but there is no tab with appropriate value.
|
|
19
|
+
Shortcut: ${shortcut}, value: ${value}`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLXJkdC10YWJzLXNob3J0Y3V0LXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3RhYnMvc3JjL2xpYi9zdHJhdGVnaWVzL3N0YXRpYy1yZHQtdGFicy1zaG9ydGN1dC1zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLE9BQU8sNkJBQTZCO0lBQ3BCO0lBQXBCLFlBQW9CLE1BQTJCO1FBQTNCLFdBQU0sR0FBTixNQUFNLENBQXFCO0lBQUcsQ0FBQztJQUVuRCxlQUFlO1FBQ2IsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELFVBQVUsQ0FBQyxRQUFxQixFQUFFLElBQStCO1FBQy9ELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUUsQ0FBQztRQUNuRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLElBQUksR0FBRyxFQUFFLENBQUM7WUFDUixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDOUMsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLENBQUMsSUFBSSxDQUNWOztzQkFFYyxRQUFRLFlBQVksS0FBSyxFQUFFLENBQzFDLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmR0U2hvcnRjdXQgfSBmcm9tICdAbmdyZHQvc2hvcnRjdXRzJztcbmltcG9ydCB7IFJkdFRhYkNvbnRyb2xsZXJEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3JkdC10YWItY29udHJvbGxlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUmR0VGFic1Nob3J0Y3V0U3RyYXRlZ3kgfSBmcm9tICcuL3JkdC10YWJzLXNob3J0Y3V0LXN0cmF0ZWd5JztcblxuZXhwb3J0IGludGVyZmFjZSBTdGF0aWNSZHRUYWJzQ29uZmlnIHtcbiAgc2hvcnRjdXRzOiBNYXA8UmR0U2hvcnRjdXQsIHN0cmluZz47XG59XG5cbmV4cG9ydCBjbGFzcyBTdGF0aWNSZHRUYWJzU2hvcnRjdXRTdHJhdGVneSBpbXBsZW1lbnRzIFJkdFRhYnNTaG9ydGN1dFN0cmF0ZWd5IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25maWc6IFN0YXRpY1JkdFRhYnNDb25maWcpIHt9XG5cbiAgdXBkYXRlU2hvcnRjdXRzKCk6IFJkdFNob3J0Y3V0W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuY29uZmlnLnNob3J0Y3V0cy5rZXlzKCkpO1xuICB9XG5cbiAgb25TaG9ydGN1dChzaG9ydGN1dDogUmR0U2hvcnRjdXQsIGN0cmw6IFJkdFRhYkNvbnRyb2xsZXJEaXJlY3RpdmUpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuY29uZmlnLnNob3J0Y3V0cy5nZXQoc2hvcnRjdXQpITtcbiAgICBjb25zdCB0YWIgPSBjdHJsLmdldFRhYkJ5VmFsdWUodmFsdWUpO1xuICAgIGlmICh0YWIpIHtcbiAgICAgIGN0cmwuYWN0aXZhdGVUYWIodGFiKTtcbiAgICAgIGN0cmwuYWN0aXZhdGVUYWJDb250YWluZXIodGFiLnRhYkNvbnRhaW5lcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFJlZ2lzdGVyZWQgc2hvcnRjdXQgaGFzIGJlZW4gZGV0ZWN0ZWQsXG4gICAgICAgICAgYnV0IHRoZXJlIGlzIG5vIHRhYiB3aXRoIGFwcHJvcHJpYXRlIHZhbHVlLlxuICAgICAgICAgIFNob3J0Y3V0OiAke3Nob3J0Y3V0fSwgdmFsdWU6ICR7dmFsdWV9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdyZHQtdGFicy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0BuZ3JkdC90YWJzL3NyYy9uZ3JkdC10YWJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|