ng-virtual-list 17.12.4 → 17.12.8
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/lib/components/ng-list-item/const/index.mjs +2 -1
- package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.component.mjs +2 -5
- package/esm2022/lib/components/ng-prerender-container/core/prerender-track-box.mjs +4 -2
- package/esm2022/lib/components/ng-scroll-bar/ng-scroll-bar.component.mjs +6 -16
- package/esm2022/lib/components/ng-scroll-view/base/base-scroll-view.component.mjs +17 -3
- package/esm2022/lib/components/ng-scroll-view/ng-scroll-view.component.mjs +20 -10
- package/esm2022/lib/components/ng-scroller/ng-scroller.component.mjs +8 -12
- package/esm2022/lib/core/interfaces/metrics.mjs +1 -1
- package/esm2022/lib/core/interfaces/recalculate-metrics-options.mjs +1 -1
- package/esm2022/lib/core/track-box.mjs +17 -9
- package/esm2022/lib/directives/locale-sensitive/locale-sensitive.directive.mjs +7 -7
- package/esm2022/lib/models/render-item-config.model.mjs +1 -1
- package/esm2022/lib/models/render-item-measures.model.mjs +1 -1
- package/esm2022/lib/ng-virtual-list.component.mjs +91 -87
- package/esm2022/lib/utils/animator/animator.mjs +12 -6
- package/esm2022/lib/utils/animator/interfaces/animator-params.mjs +1 -1
- package/esm2022/lib/utils/animator/interfaces/animator-update-data.mjs +1 -1
- package/esm2022/lib/utils/animator/types/easing.mjs +1 -1
- package/esm2022/lib/utils/event-emitter/event-emitter.mjs +2 -2
- package/esm2022/lib/utils/event-emitter/interfaces/event-emitter.mjs +1 -1
- package/fesm2022/ng-virtual-list.mjs +177 -147
- package/fesm2022/ng-virtual-list.mjs.map +1 -1
- package/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.component.d.ts +1 -4
- package/lib/components/ng-prerender-container/core/prerender-track-box.d.ts +1 -1
- package/lib/components/ng-scroll-bar/ng-scroll-bar.component.d.ts +2 -7
- package/lib/components/ng-scroll-view/base/base-scroll-view.component.d.ts +8 -2
- package/lib/components/ng-scroll-view/ng-scroll-view.component.d.ts +5 -1
- package/lib/components/ng-scroller/ng-scroller.component.d.ts +2 -4
- package/lib/core/interfaces/metrics.d.ts +3 -1
- package/lib/core/interfaces/recalculate-metrics-options.d.ts +1 -0
- package/lib/core/track-box.d.ts +1 -1
- package/lib/directives/locale-sensitive/locale-sensitive.directive.d.ts +3 -3
- package/lib/models/render-item-config.model.d.ts +5 -1
- package/lib/models/render-item-measures.model.d.ts +5 -1
- package/lib/ng-virtual-list.component.d.ts +2 -3
- package/lib/utils/animator/animator.d.ts +1 -1
- package/lib/utils/animator/interfaces/animator-params.d.ts +1 -1
- package/lib/utils/animator/interfaces/animator-update-data.d.ts +1 -1
- package/lib/utils/animator/types/easing.d.ts +1 -1
- package/lib/utils/event-emitter/event-emitter.d.ts +1 -1
- package/lib/utils/event-emitter/interfaces/event-emitter.d.ts +1 -1
- package/package.json +1 -1
|
@@ -34,9 +34,10 @@ export const DEFAULT_TEMPLATE_CONTEXT = {
|
|
|
34
34
|
fullSize: false,
|
|
35
35
|
totalItems: 0,
|
|
36
36
|
grabbing: false,
|
|
37
|
+
inverted: false,
|
|
37
38
|
},
|
|
38
39
|
reseted: false,
|
|
39
40
|
index: -1,
|
|
40
41
|
api: null,
|
|
41
42
|
};
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLWxpc3QtaXRlbS9jb25zdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBR3BDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLEVBQ2xCLGVBQWUsR0FBRyxpQkFBaUIsRUFDbkMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUM5RCxrQkFBa0IsR0FBRyxlQUFlLEVBQ3BDLFFBQVEsR0FBRyxVQUFVLEVBQ3JCLGFBQWEsR0FBRyxHQUFHLEVBQ25CLE9BQU8sR0FBRyxTQUFTLEVBQ25CLFNBQVMsR0FBRyxHQUFHLEVBQ2YsWUFBWSxHQUFHLFdBQVcsRUFDMUIsVUFBVSxHQUFHLFNBQVMsRUFDdEIsYUFBYSxHQUFHLFlBQVksRUFDNUIsWUFBWSxHQUFHLFdBQVcsRUFDMUIsY0FBYyxHQUFHLFNBQVMsRUFDMUIsZUFBZSxHQUFHLFVBQVUsRUFDNUIsY0FBYyxHQUFHLFNBQVMsRUFDMUIsa0JBQWtCLEdBQUcsU0FBUyxFQUM5QixzQkFBc0IsR0FBRyxhQUFhLEVBQ3RDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQztBQUUzQixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBcUI7SUFDdEQsSUFBSSxFQUFFLFNBQVM7SUFDZixRQUFRLEVBQUUsU0FBUztJQUNuQixRQUFRLEVBQUUsU0FBUztJQUNuQixRQUFRLEVBQUUsSUFBSTtJQUNkLE1BQU0sRUFBRTtRQUNKLE9BQU8sRUFBRSxLQUFLO1FBQ2QsUUFBUSxFQUFFLEtBQUs7UUFDZixTQUFTLEVBQUUsS0FBSztRQUNoQixHQUFHLEVBQUUsS0FBSztRQUNWLEdBQUcsRUFBRSxLQUFLO1FBQ1YsSUFBSSxFQUFFLEtBQUs7UUFDWCxXQUFXLEVBQUUsS0FBSztRQUNsQixNQUFNLEVBQUUsQ0FBQztRQUNULFVBQVUsRUFBRSxLQUFLO1FBQ2pCLElBQUksRUFBRSxLQUFLO1FBQ1gsT0FBTyxFQUFFLEtBQUs7UUFDZCxVQUFVLEVBQUUsS0FBSztRQUNqQixVQUFVLEVBQUUsS0FBSztRQUNqQixPQUFPLEVBQUUsS0FBSztRQUNkLHdCQUF3QixFQUFFLEtBQUs7UUFDL0IsUUFBUSxFQUFFLENBQUM7UUFDWCxNQUFNLEVBQUUsR0FBRztRQUNYLFlBQVksRUFBRSxDQUFDO1FBQ2YsaUJBQWlCLEVBQUUsQ0FBQztRQUNwQixPQUFPLEVBQUUsQ0FBQztRQUNWLE9BQU8sRUFBRSxDQUFDO1FBQ1YsVUFBVSxFQUFFLEtBQUs7UUFDakIsZUFBZSxFQUFFLFFBQVE7UUFDekIsT0FBTyxFQUFFLEtBQUs7UUFDZCxNQUFNLEVBQUUsS0FBSztRQUNiLFFBQVEsRUFBRSxLQUFLO1FBQ2YsVUFBVSxFQUFFLENBQUM7UUFDYixRQUFRLEVBQUUsS0FBSztRQUNmLFFBQVEsRUFBRSxLQUFLO0tBQ2xCO0lBQ0QsT0FBTyxFQUFFLEtBQUs7SUFDZCxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ1QsR0FBRyxFQUFFLElBQUk7Q0FDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWF0cml4M2QgfSBmcm9tIFwiLi4vdXRpbHNcIjtcclxuaW1wb3J0IHsgSVRlbXBsYXRlQ29udGV4dCB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgSUQgPSAnaWQnLFxyXG4gICAgTkdWTF9WSVNJQklMSVRZID0gJ25ndmwtdmlzaWJpbGl0eScsXHJcbiAgICBNQVRSSVhfM0RfSElEREVOID0gbWF0cml4M2QoLTEwMDAsIC0xMDAwLCAwLCAxLCAxLCAxLCAwLCAwLCAwKSxcclxuICAgIEFUVFJfQVJFQV9TRUxFQ1RFRCA9ICdhcmVhLXNlbGVjdGVkJyxcclxuICAgIFBPU0lUSU9OID0gJ3Bvc2l0aW9uJyxcclxuICAgIFBPU0lUSU9OX1pFUk8gPSAnMCcsXHJcbiAgICBJVEVNX0lEID0gJ2l0ZW0taWQnLFxyXG4gICAgS0VZX1NQQUNFID0gJyAnLFxyXG4gICAgS0VZX0FSUl9MRUZUID0gJ0Fycm93TGVmdCcsXHJcbiAgICBLRVlfQVJSX1VQID0gJ0Fycm93VXAnLFxyXG4gICAgS0VZX0FSUl9SSUdIVCA9ICdBcnJvd1JpZ2h0JyxcclxuICAgIEtFWV9BUlJfRE9XTiA9ICdBcnJvd0Rvd24nLFxyXG4gICAgRVZFTlRfRk9DVVNfSU4gPSAnZm9jdXNpbicsXHJcbiAgICBFVkVOVF9GT0NVU19PVVQgPSAnZm9jdXNvdXQnLFxyXG4gICAgRVZFTlRfS0VZX0RPV04gPSAna2V5ZG93bicsXHJcbiAgICBDTEFTU19OQU1FX1NOQVBQRUQgPSAnc25hcHBlZCcsXHJcbiAgICBDTEFTU19OQU1FX1NOQVBQRURfT1VUID0gJ3NuYXBwZWQtb3V0JyxcclxuICAgIENMQVNTX05BTUVfRk9DVVMgPSAnZm9jdXMnO1xyXG5cclxuICAgIGV4cG9ydCBjb25zdCBERUZBVUxUX1RFTVBMQVRFX0NPTlRFWFQ6IElUZW1wbGF0ZUNvbnRleHQgPSB7XHJcbiAgICAgICAgZGF0YTogdW5kZWZpbmVkLFxyXG4gICAgICAgIHByZXZEYXRhOiB1bmRlZmluZWQsXHJcbiAgICAgICAgbmV4dERhdGE6IHVuZGVmaW5lZCxcclxuICAgICAgICBtZWFzdXJlczogbnVsbCxcclxuICAgICAgICBjb25maWc6IHtcclxuICAgICAgICAgICAgZm9jdXNlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgY29sbGFwc2VkOiBmYWxzZSxcclxuICAgICAgICAgICAgbmV3OiBmYWxzZSxcclxuICAgICAgICAgICAgb2RkOiBmYWxzZSxcclxuICAgICAgICAgICAgZXZlbjogZmFsc2UsXHJcbiAgICAgICAgICAgIGNvbGxhcHNhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgc3RpY2t5OiAwLFxyXG4gICAgICAgICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgc25hcDogZmFsc2UsXHJcbiAgICAgICAgICAgIHNuYXBwZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBzbmFwcGVkT3V0OiBmYWxzZSxcclxuICAgICAgICAgICAgaXNWZXJ0aWNhbDogZmFsc2UsXHJcbiAgICAgICAgICAgIGR5bmFtaWM6IGZhbHNlLFxyXG4gICAgICAgICAgICBpc1NuYXBwaW5nTWV0aG9kQWR2YW5jZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICB0YWJJbmRleDogMCxcclxuICAgICAgICAgICAgekluZGV4OiAnMCcsXHJcbiAgICAgICAgICAgIGxheW91dE9mZnNldDogMCxcclxuICAgICAgICAgICAgbGF5b3V0SW5kZXhPZmZzZXQ6IDAsXHJcbiAgICAgICAgICAgIG9wYWNpdHk6IDAsXHJcbiAgICAgICAgICAgIGRpdmlkZXM6IDAsXHJcbiAgICAgICAgICAgIHNuYXBUb0l0ZW06IGZhbHNlLFxyXG4gICAgICAgICAgICBzbmFwVG9JdGVtQWxpZ246IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICAgIGlzRmlyc3Q6IGZhbHNlLFxyXG4gICAgICAgICAgICBpc0xhc3Q6IGZhbHNlLFxyXG4gICAgICAgICAgICBmdWxsU2l6ZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHRvdGFsSXRlbXM6IDAsXHJcbiAgICAgICAgICAgIGdyYWJiaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgaW52ZXJ0ZWQ6IGZhbHNlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVzZXRlZDogZmFsc2UsXHJcbiAgICAgICAgaW5kZXg6IC0xLFxyXG4gICAgICAgIGFwaTogbnVsbCxcclxuICAgIH07XHJcbiJdfQ==
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core';
|
|
2
2
|
import { BehaviorSubject, combineLatest, from, takeUntil, tap } from 'rxjs';
|
|
3
|
-
import { TextDirections } from '../../../../enums';
|
|
4
3
|
import { BaseScrollView } from '../../../ng-scroll-view/base/base-scroll-view.component';
|
|
5
4
|
import { SCROLL_VIEW_INVERSION } from '../../../ng-scroll-view';
|
|
6
5
|
import { BEHAVIOR_INSTANT, DEFAULT_SCROLLBAR_ENABLED, LEFT_PROP_NAME, TOP_PROP_NAME } from '../../../../const';
|
|
@@ -14,14 +13,12 @@ import * as i2 from "../../../../directives/locale-sensitive/locale-sensitive.di
|
|
|
14
13
|
* NgPrerenderScrollerComponent
|
|
15
14
|
* Maximum performance for extremely large lists.
|
|
16
15
|
* It is based on algorithms for virtualization of screen objects.
|
|
17
|
-
* @link https://github.com/DjonnyX/ng-virtual-list/blob/
|
|
16
|
+
* @link https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.component.ts
|
|
18
17
|
* @author Evgenii Alexandrovich Grebennikov
|
|
19
18
|
* @email djonnyx@gmail.com
|
|
20
19
|
*/
|
|
21
20
|
export class NgPrerenderScrollerComponent extends BaseScrollView {
|
|
22
21
|
scrollBar;
|
|
23
|
-
_$langTextDir = new BehaviorSubject(TextDirections.LTR);
|
|
24
|
-
$langTextDir = this._$langTextDir.asObservable();
|
|
25
22
|
_$scrollbarEnabled = new BehaviorSubject(DEFAULT_SCROLLBAR_ENABLED);
|
|
26
23
|
$scrollbarEnabled = this._$scrollbarEnabled.asObservable();
|
|
27
24
|
set scrollbarEnabled(v) {
|
|
@@ -139,4 +136,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
139
136
|
}], classes: [{
|
|
140
137
|
type: Input
|
|
141
138
|
}] } });
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcHJlcmVuZGVyLXNjcm9sbGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLWNvbnRhaW5lci9jb21wb25lbnRzL25nLXByZXJlbmRlci1zY3JvbGxlci9uZy1wcmVyZW5kZXItc2Nyb2xsZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1wcmVyZW5kZXItY29udGFpbmVyL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLXNjcm9sbGVyL25nLXByZXJlbmRlci1zY3JvbGxlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN6RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUseUJBQXlCLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9HLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUNB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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmcm9tLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUZXh0RGlyZWN0aW9ucyB9IGZyb20gJy4uLy4uLy4uLy4uL2VudW1zJztcclxuaW1wb3J0IHsgVGV4dERpcmVjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzJztcclxuaW1wb3J0IHsgQmFzZVNjcm9sbFZpZXcgfSBmcm9tICcuLi8uLi8uLi9uZy1zY3JvbGwtdmlldy9iYXNlL2Jhc2Utc2Nyb2xsLXZpZXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU0NST0xMX1ZJRVdfSU5WRVJTSU9OIH0gZnJvbSAnLi4vLi4vLi4vbmctc2Nyb2xsLXZpZXcnO1xyXG5pbXBvcnQgeyBCRUhBVklPUl9JTlNUQU5ULCBERUZBVUxUX1NDUk9MTEJBUl9FTkFCTEVELCBMRUZUX1BST1BfTkFNRSwgVE9QX1BST1BfTkFNRSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbnN0JztcclxuaW1wb3J0IHsgTmdTY3JvbGxCYXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9uZy1zY3JvbGwtYmFyL25nLXNjcm9sbC1iYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2Nyb2xsQm94IH0gZnJvbSAnLi4vLi4vLi4vbmctc2Nyb2xsZXIvdXRpbHMnO1xyXG5pbXBvcnQgeyBTQ1JPTExfVklFV19OT1JNQUxJWkVfVkFMVUVfRlJPTV9aRVJPLCBTQ1JPTExfVklFV19PVkVSU0NST0xMX0VOQUJMRUQgfSBmcm9tICcuLi8uLi8uLi9uZy1zY3JvbGwtdmlldy9jb25zdCc7XHJcblxyXG4vKipcclxuICogTmdQcmVyZW5kZXJTY3JvbGxlckNvbXBvbmVudFxyXG4gKiBNYXhpbXVtIHBlcmZvcm1hbmNlIGZvciBleHRyZW1lbHkgbGFyZ2UgbGlzdHMuXHJcbiAqIEl0IGlzIGJhc2VkIG9uIGFsZ29yaXRobXMgZm9yIHZpcnR1YWxpemF0aW9uIG9mIHNjcmVlbiBvYmplY3RzLlxyXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vRGpvbm55WC9uZy12aXJ0dWFsLWxpc3QvYmxvYi8xNy54L3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLWNvbnRhaW5lci9jb21wb25lbnRzL25nLXByZXJlbmRlci1zY3JvbGxlci9uZy1wcmVyZW5kZXItc2Nyb2xsZXIuY29tcG9uZW50LnRzXHJcbiAqIEBhdXRob3IgRXZnZW5paSBBbGV4YW5kcm92aWNoIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ25nLXByZXJlbmRlci1zY3JvbGxlcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmctcHJlcmVuZGVyLXNjcm9sbGVyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuLi8uLi8uLi9uZy1zY3JvbGxlci9uZy1zY3JvbGxlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgeyBwcm92aWRlOiBTQ1JPTExfVklFV19JTlZFUlNJT04sIHVzZVZhbHVlOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogU0NST0xMX1ZJRVdfTk9STUFMSVpFX1ZBTFVFX0ZST01fWkVSTywgdXNlVmFsdWU6IHRydWUgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IFNDUk9MTF9WSUVXX09WRVJTQ1JPTExfRU5BQkxFRCwgdXNlVmFsdWU6IGZhbHNlIH0sXHJcbiAgICBdLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2UsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5nUHJlcmVuZGVyU2Nyb2xsZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2Nyb2xsVmlldyB7XHJcbiAgICBAVmlld0NoaWxkKCdzY3JvbGxCYXInLCB7IHJlYWQ6IE5nU2Nyb2xsQmFyQ29tcG9uZW50IH0pXHJcbiAgICBzY3JvbGxCYXI6IE5nU2Nyb2xsQmFyQ29tcG9uZW50IHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIHByb3RlY3RlZCBfJGxhbmdUZXh0RGlyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZXh0RGlyZWN0aW9uPihUZXh0RGlyZWN0aW9ucy5MVFIpO1xyXG4gICAgcmVhZG9ubHkgJGxhbmdUZXh0RGlyID0gdGhpcy5fJGxhbmdUZXh0RGlyLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAgIHByb3RlY3RlZCBfJHNjcm9sbGJhckVuYWJsZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KERFRkFVTFRfU0NST0xMQkFSX0VOQUJMRUQpO1xyXG4gICAgcmVhZG9ubHkgJHNjcm9sbGJhckVuYWJsZWQgPSB0aGlzLl8kc2Nyb2xsYmFyRW5hYmxlZC5hc09ic2VydmFibGUoKTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgc2Nyb2xsYmFyRW5hYmxlZCh2OiBib29sZWFuKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuXyRzY3JvbGxiYXJFbmFibGVkLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgICAgICAgdGhpcy5fJHNjcm9sbGJhckVuYWJsZWQubmV4dCh2KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBnZXQgc2Nyb2xsYmFyRW5hYmxlZCgpIHsgcmV0dXJuIHRoaXMuXyRzY3JvbGxiYXJFbmFibGVkLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgXyRjbGFzc2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IFtjTmFtZTogc3RyaW5nXTogYm9vbGVhbiB9Pih7fSk7XHJcbiAgICByZWFkb25seSAkY2xhc3NlcyA9IHRoaXMuXyRjbGFzc2VzLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgQElucHV0KClcclxuICAgIHNldCBjbGFzc2VzKHY6IHsgW2NOYW1lOiBzdHJpbmddOiBib29sZWFuIH0pIHtcclxuICAgICAgICBpZiAodGhpcy5fJGNsYXNzZXMuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICAgICAgICB0aGlzLl8kY2xhc3Nlcy5uZXh0KHYpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGdldCBjbGFzc2VzKCkgeyByZXR1cm4gdGhpcy5fJGNsYXNzZXMuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfJGFjdHVhbENsYXNzZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgW2NOYW1lOiBzdHJpbmddOiBib29sZWFuIH0+KHt9KTtcclxuICAgIHJlYWRvbmx5ICRhY3R1YWxDbGFzc2VzID0gdGhpcy5fJGFjdHVhbENsYXNzZXMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gICAgcHJvdGVjdGVkIF8kY29udGFpbmVyQ2xhc3NlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBbY05hbWU6IHN0cmluZ106IGJvb2xlYW4gfT4oe30pO1xyXG4gICAgcmVhZG9ubHkgJGNvbnRhaW5lckNsYXNzZXMgPSB0aGlzLl8kY29udGFpbmVyQ2xhc3Nlcy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgXyR0aHVtYlNpemUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XHJcbiAgICByZWFkb25seSAkdGh1bWJTaXplID0gdGhpcy5fJHRodW1iU2l6ZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgXyRzY3JvbGxiYXJTaG93ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgICByZWFkb25seSAkc2Nyb2xsYmFyU2hvdyA9IHRoaXMuXyRzY3JvbGxiYXJTaG93LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAgIG92ZXJyaWRlIHNldCB4KHY6IG51bWJlcikge1xyXG4gICAgICAgIGlmICh2ICE9PSB1bmRlZmluZWQgJiYgIU51bWJlci5pc05hTih2KSkge1xyXG4gICAgICAgICAgICB0aGlzLl94ID0gdGhpcy5fYWN0dWFsWCA9IHY7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG92ZXJyaWRlIGdldCB4KCkgeyByZXR1cm4gdGhpcy5feDsgfVxyXG5cclxuICAgIG92ZXJyaWRlIHNldCB5KHY6IG51bWJlcikge1xyXG4gICAgICAgIGlmICh2ICE9PSB1bmRlZmluZWQgJiYgIU51bWJlci5pc05hTih2KSkge1xyXG4gICAgICAgICAgICB0aGlzLl95ID0gdGhpcy5fYWN0dWFsWSA9IHY7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG92ZXJyaWRlIGdldCB5KCkgeyByZXR1cm4gdGhpcy5feTsgfVxyXG5cclxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBvblJlc2l6ZVZpZXdwb3J0KCkge1xyXG4gICAgICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy5zY3JvbGxWaWV3cG9ydD8ubmF0aXZlRWxlbWVudDtcclxuICAgICAgICBpZiAodmlld3BvcnQpIHtcclxuICAgICAgICAgICAgdGhpcy5fJHZpZXdwb3J0Qm91bmRzLm5leHQoeyB3aWR0aDogdmlld3BvcnQub2Zmc2V0V2lkdGgsIGhlaWdodDogdmlld3BvcnQub2Zmc2V0SGVpZ2h0IH0pO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgb25SZXNpemVDb250ZW50KCkge1xyXG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLnNjcm9sbENvbnRlbnQ/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgaWYgKGNvbnRlbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5fJGNvbnRlbnRCb3VuZHMubmV4dCh7IHdpZHRoOiBjb250ZW50Lm9mZnNldFdpZHRoLCBoZWlnaHQ6IGNvbnRlbnQub2Zmc2V0SGVpZ2h0IH0pO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9zY3JvbGxCb3ggPSBuZXcgU2Nyb2xsQm94KCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuXHJcbiAgICAgICAgY29uc3QgJGNsYXNzZXMgPSB0aGlzLiRjbGFzc2VzLFxyXG4gICAgICAgICAgICAkZGlyZWN0aW9uID0gdGhpcy4kZGlyZWN0aW9uO1xyXG5cclxuICAgICAgICBjb21iaW5lTGF0ZXN0KChbJGNsYXNzZXMsICRkaXJlY3Rpb25dKSkucGlwZShcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgICAgICAgIHRhcCgoW2NsYXNzZXMsIGRpcmVjdGlvbl0pID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuXyRhY3R1YWxDbGFzc2VzLm5leHQoeyAuLi5jbGFzc2VzLCBbZGlyZWN0aW9uXTogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAgICAgY29uc3QgJGNvbnRlbnRCb3VuZHMgPSB0aGlzLiRjb250ZW50Qm91bmRzLFxyXG4gICAgICAgICAgICAkdmlld3BvcnRCb3VuZHMgPSB0aGlzLiR2aWV3cG9ydEJvdW5kcyxcclxuICAgICAgICAgICAgJGlzVmVydGljYWwgPSB0aGlzLiRpc1ZlcnRpY2FsLFxyXG4gICAgICAgICAgICAkc2Nyb2xsYmFyRW5hYmxlZCA9IHRoaXMuJHNjcm9sbGJhckVuYWJsZWQ7XHJcblxyXG4gICAgICAgIGNvbWJpbmVMYXRlc3QoWyRkaXJlY3Rpb24sICRzY3JvbGxiYXJFbmFibGVkLCAkaXNWZXJ0aWNhbCwgJGNvbnRlbnRCb3VuZHMsICR2aWV3cG9ydEJvdW5kc10pLnBpcGUoXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICAgICAgICB0YXAoKFtkaXJlY3Rpb24sIHNjcm9sbGJhckVuYWJsZWRdKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl8kY29udGFpbmVyQ2xhc3Nlcy5uZXh0KHsgW2RpcmVjdGlvbl06IHRydWUsIGVuYWJsZWQ6IHNjcm9sbGJhckVuYWJsZWQsIHNjcm9sbGFibGU6IHNjcm9sbGJhckVuYWJsZWQgfSk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgICAgIGNvbnN0ICRzdGFydE9mZnNldCA9IHRoaXMuJHN0YXJ0T2Zmc2V0LFxyXG4gICAgICAgICAgICAkZW5kT2Zmc2V0ID0gdGhpcy4kZW5kT2Zmc2V0LFxyXG4gICAgICAgICAgICAkdGh1bWJTaXplID0gdGhpcy4kdGh1bWJTaXplO1xyXG5cclxuICAgICAgICBmcm9tKFskZW5kT2Zmc2V0LCAkc3RhcnRPZmZzZXQsICR0aHVtYlNpemUsICRpc1ZlcnRpY2FsXSkucGlwZShcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhcigpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgICAgICBjb25zdCAkdXBkYXRlU2Nyb2xsQmFyID0gdGhpcy4kdXBkYXRlU2Nyb2xsQmFyO1xyXG5cclxuICAgICAgICAkdXBkYXRlU2Nyb2xsQmFyLnBpcGUoXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTY3JvbGxCYXJIYW5kbGVyKHRydWUpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlU2Nyb2xsQmFySGFuZGxlcih1cGRhdGU6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHRoaXMuXyRkaXJlY3Rpb24uZ2V0VmFsdWUoKSxcclxuICAgICAgICAgICAgaXNWZXJ0aWNhbCA9IHRoaXMuXyRpc1ZlcnRpY2FsLmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gdGhpcy5fJHN0YXJ0T2Zmc2V0LmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgIGVuZE9mZnNldCA9IHRoaXMuXyRlbmRPZmZzZXQuZ2V0VmFsdWUoKSxcclxuICAgICAgICAgICAgc2Nyb2xsQ29udGVudCA9IHRoaXMuc2Nyb2xsQ29udGVudD8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCxcclxuICAgICAgICAgICAgc2Nyb2xsVmlld3BvcnQgPSB0aGlzLnNjcm9sbFZpZXdwb3J0Py5uYXRpdmVFbGVtZW50IGFzIEhUTUxEaXZFbGVtZW50LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0aHVtYlNpemUsXHJcbiAgICAgICAgICAgICAgICB0aHVtYlBvc2l0aW9uLFxyXG4gICAgICAgICAgICB9ID0gdGhpcy5fc2Nyb2xsQm94LmNhbGN1bGF0ZVNjcm9sbCh7XHJcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24sXHJcbiAgICAgICAgICAgICAgICB2aWV3cG9ydFdpZHRoOiBzY3JvbGxWaWV3cG9ydC5vZmZzZXRXaWR0aCwgdmlld3BvcnRIZWlnaHQ6IHNjcm9sbFZpZXdwb3J0Lm9mZnNldEhlaWdodCxcclxuICAgICAgICAgICAgICAgIGNvbnRlbnRXaWR0aDogc2Nyb2xsQ29udGVudC5vZmZzZXRXaWR0aCwgY29udGVudEhlaWdodDogc2Nyb2xsQ29udGVudC5vZmZzZXRIZWlnaHQsXHJcbiAgICAgICAgICAgICAgICBzdGFydE9mZnNldCxcclxuICAgICAgICAgICAgICAgIGVuZE9mZnNldCxcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uWDogdGhpcy5feCxcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uWTogdGhpcy5feSxcclxuICAgICAgICAgICAgICAgIG1pblNpemU6IDEsXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLl8kdGh1bWJTaXplLm5leHQodGh1bWJTaXplKTtcclxuICAgICAgICBpZiAodXBkYXRlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsQmFyPy5zY3JvbGwoe1xyXG4gICAgICAgICAgICAgICAgW2lzVmVydGljYWwgPyBUT1BfUFJPUF9OQU1FIDogTEVGVF9QUk9QX05BTUVdOiB0aHVtYlBvc2l0aW9uLCBmaXJlVXBkYXRlOiBmYWxzZSwgYmVoYXZpb3I6IEJFSEFWSU9SX0lOU1RBTlQsXHJcbiAgICAgICAgICAgICAgICB1c2VyQWN0aW9uOiBmYWxzZSwgYmxlbmRpbmc6IHRydWUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl8kc2Nyb2xsYmFyU2hvdy5uZXh0KHRoaXMuc2Nyb2xsYWJsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHVwZGF0ZVNjcm9sbEJhcigpIHtcclxuICAgICAgICB0aGlzLl8kdXBkYXRlU2Nyb2xsQmFyLm5leHQoKTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGxvY2FsZVNlbnNpdGl2ZSBbbGFuZ1RleHREaXJdPVwiKCRsYW5nVGV4dERpciB8IGFzeW5jKSFcIiBbbGlzdERpcl09XCIoJGRpcmVjdGlvbiB8IGFzeW5jKVwiIGNsYXNzPVwibmd2bF9fY29udGFpbmVyXCJcclxuICAgIFtuZ0NsYXNzXT1cIigkY29udGFpbmVyQ2xhc3NlcyB8IGFzeW5jKSFcIj5cclxuICAgIDxkaXYgI3Njcm9sbFZpZXdwb3J0IHBhcnQ9XCJzY3JvbGxlclwiIGNsYXNzPVwibmd2bF9fc2Nyb2xsZXJcIj5cclxuICAgICAgICA8ZGl2ICNzY3JvbGxDb250ZW50IHBhcnQ9XCJsaXN0XCIgY2xhc3M9XCJuZ3ZsX19saXN0XCIgW25nQ2xhc3NdPVwiKCRhY3R1YWxDbGFzc2VzIHwgYXN5bmMpXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcHJlcmVuZGVyLXNjcm9sbGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLWNvbnRhaW5lci9jb21wb25lbnRzL25nLXByZXJlbmRlci1zY3JvbGxlci9uZy1wcmVyZW5kZXItc2Nyb2xsZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1wcmVyZW5kZXItY29udGFpbmVyL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLXNjcm9sbGVyL25nLXByZXJlbmRlci1zY3JvbGxlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSx5QkFBeUIsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0csT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDdEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7O0FB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QUNwQyxDQUFDLENBQUM7UUFDUCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFUyxlQUFlO1FBQ3JCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNsQyxDQUFDO3dHQXZKUSw0QkFBNEI7NEZBQTVCLDRCQUE0QixzSEFSMUI7WUFDUCxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO1lBQ25ELEVBQUUsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7WUFDbEUsRUFBRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtTQUMvRCw2R0FLK0Isb0JBQW9CLG9EQ2hDeEQscWJBT007OzRGRHdCTyw0QkFBNEI7a0JBWnhDLFNBQVM7K0JBQ0ksdUJBQXVCLGFBR3RCO3dCQUNQLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7d0JBQ25ELEVBQUUsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7d0JBQ2xFLEVBQUUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7cUJBQy9ELGNBQ1csS0FBSyxtQkFDQSx1QkFBdUIsQ0FBQyxNQUFNO3dEQUkvQyxTQUFTO3NCQURSLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFO2dCQU1sRCxnQkFBZ0I7c0JBRG5CLEtBQUs7Z0JBV0YsT0FBTztzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZyb20sIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRleHREaXJlY3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vLi4vZW51bXMnO1xyXG5pbXBvcnQgeyBUZXh0RGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vdHlwZXMnO1xyXG5pbXBvcnQgeyBCYXNlU2Nyb2xsVmlldyB9IGZyb20gJy4uLy4uLy4uL25nLXNjcm9sbC12aWV3L2Jhc2UvYmFzZS1zY3JvbGwtdmlldy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTQ1JPTExfVklFV19JTlZFUlNJT04gfSBmcm9tICcuLi8uLi8uLi9uZy1zY3JvbGwtdmlldyc7XHJcbmltcG9ydCB7IEJFSEFWSU9SX0lOU1RBTlQsIERFRkFVTFRfU0NST0xMQkFSX0VOQUJMRUQsIExFRlRfUFJPUF9OQU1FLCBUT1BfUFJPUF9OQU1FIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29uc3QnO1xyXG5pbXBvcnQgeyBOZ1Njcm9sbEJhckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL25nLXNjcm9sbC1iYXIvbmctc2Nyb2xsLWJhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTY3JvbGxCb3ggfSBmcm9tICcuLi8uLi8uLi9uZy1zY3JvbGxlci91dGlscyc7XHJcbmltcG9ydCB7IFNDUk9MTF9WSUVXX05PUk1BTElaRV9WQUxVRV9GUk9NX1pFUk8sIFNDUk9MTF9WSUVXX09WRVJTQ1JPTExfRU5BQkxFRCB9IGZyb20gJy4uLy4uLy4uL25nLXNjcm9sbC12aWV3L2NvbnN0JztcclxuXHJcbi8qKlxyXG4gKiBOZ1ByZXJlbmRlclNjcm9sbGVyQ29tcG9uZW50XHJcbiAqIE1heGltdW0gcGVyZm9ybWFuY2UgZm9yIGV4dHJlbWVseSBsYXJnZSBsaXN0cy5cclxuICogSXQgaXMgYmFzZWQgb24gYWxnb3JpdGhtcyBmb3IgdmlydHVhbGl6YXRpb24gb2Ygc2NyZWVuIG9iamVjdHMuXHJcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Eam9ubnlYL25nLXZpcnR1YWwtbGlzdC9ibG9iLzE0LngvcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1wcmVyZW5kZXItY29udGFpbmVyL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLXNjcm9sbGVyL25nLXByZXJlbmRlci1zY3JvbGxlci5jb21wb25lbnQudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEFsZXhhbmRyb3ZpY2ggR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbmctcHJlcmVuZGVyLXNjcm9sbGVyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9uZy1wcmVyZW5kZXItc2Nyb2xsZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4uLy4uLy4uL25nLXNjcm9sbGVyL25nLXNjcm9sbGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7IHByb3ZpZGU6IFNDUk9MTF9WSUVXX0lOVkVSU0lPTiwgdXNlVmFsdWU6IGZhbHNlIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBTQ1JPTExfVklFV19OT1JNQUxJWkVfVkFMVUVfRlJPTV9aRVJPLCB1c2VWYWx1ZTogdHJ1ZSB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogU0NST0xMX1ZJRVdfT1ZFUlNDUk9MTF9FTkFCTEVELCB1c2VWYWx1ZTogZmFsc2UgfSxcclxuICAgIF0sXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmdQcmVyZW5kZXJTY3JvbGxlckNvbXBvbmVudCBleHRlbmRzIEJhc2VTY3JvbGxWaWV3IHtcclxuICAgIEBWaWV3Q2hpbGQoJ3Njcm9sbEJhcicsIHsgcmVhZDogTmdTY3JvbGxCYXJDb21wb25lbnQgfSlcclxuICAgIHNjcm9sbEJhcjogTmdTY3JvbGxCYXJDb21wb25lbnQgfCB1bmRlZmluZWQ7XHJcblxyXG4gICAgcHJvdGVjdGVkIF8kc2Nyb2xsYmFyRW5hYmxlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oREVGQVVMVF9TQ1JPTExCQVJfRU5BQkxFRCk7XHJcbiAgICByZWFkb25seSAkc2Nyb2xsYmFyRW5hYmxlZCA9IHRoaXMuXyRzY3JvbGxiYXJFbmFibGVkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgQElucHV0KClcclxuICAgIHNldCBzY3JvbGxiYXJFbmFibGVkKHY6IGJvb2xlYW4pIHtcclxuICAgICAgICBpZiAodGhpcy5fJHNjcm9sbGJhckVuYWJsZWQuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICAgICAgICB0aGlzLl8kc2Nyb2xsYmFyRW5hYmxlZC5uZXh0KHYpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGdldCBzY3JvbGxiYXJFbmFibGVkKCkgeyByZXR1cm4gdGhpcy5fJHNjcm9sbGJhckVuYWJsZWQuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfJGNsYXNzZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgW2NOYW1lOiBzdHJpbmddOiBib29sZWFuIH0+KHt9KTtcclxuICAgIHJlYWRvbmx5ICRjbGFzc2VzID0gdGhpcy5fJGNsYXNzZXMuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IGNsYXNzZXModjogeyBbY05hbWU6IHN0cmluZ106IGJvb2xlYW4gfSkge1xyXG4gICAgICAgIGlmICh0aGlzLl8kY2xhc3Nlcy5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgICAgICAgIHRoaXMuXyRjbGFzc2VzLm5leHQodik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZ2V0IGNsYXNzZXMoKSB7IHJldHVybiB0aGlzLl8kY2xhc3Nlcy5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF8kYWN0dWFsQ2xhc3NlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBbY05hbWU6IHN0cmluZ106IGJvb2xlYW4gfT4oe30pO1xyXG4gICAgcmVhZG9ubHkgJGFjdHVhbENsYXNzZXMgPSB0aGlzLl8kYWN0dWFsQ2xhc3Nlcy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgXyRjb250YWluZXJDbGFzc2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IFtjTmFtZTogc3RyaW5nXTogYm9vbGVhbiB9Pih7fSk7XHJcbiAgICByZWFkb25seSAkY29udGFpbmVyQ2xhc3NlcyA9IHRoaXMuXyRjb250YWluZXJDbGFzc2VzLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAgIHByb3RlY3RlZCBfJHRodW1iU2l6ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcclxuICAgIHJlYWRvbmx5ICR0aHVtYlNpemUgPSB0aGlzLl8kdGh1bWJTaXplLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAgIHByb3RlY3RlZCBfJHNjcm9sbGJhclNob3cgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHJlYWRvbmx5ICRzY3JvbGxiYXJTaG93ID0gdGhpcy5fJHNjcm9sbGJhclNob3cuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gICAgb3ZlcnJpZGUgc2V0IHgodjogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKHYgIT09IHVuZGVmaW5lZCAmJiAhTnVtYmVyLmlzTmFOKHYpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3ggPSB0aGlzLl9hY3R1YWxYID0gdjtcclxuXHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2Nyb2xsQmFyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgb3ZlcnJpZGUgZ2V0IHgoKSB7IHJldHVybiB0aGlzLl94OyB9XHJcblxyXG4gICAgb3ZlcnJpZGUgc2V0IHkodjogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKHYgIT09IHVuZGVmaW5lZCAmJiAhTnVtYmVyLmlzTmFOKHYpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3kgPSB0aGlzLl9hY3R1YWxZID0gdjtcclxuXHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2Nyb2xsQmFyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgb3ZlcnJpZGUgZ2V0IHkoKSB7IHJldHVybiB0aGlzLl95OyB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIG9uUmVzaXplVmlld3BvcnQoKSB7XHJcbiAgICAgICAgY29uc3Qgdmlld3BvcnQgPSB0aGlzLnNjcm9sbFZpZXdwb3J0Py5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIGlmICh2aWV3cG9ydCkge1xyXG4gICAgICAgICAgICB0aGlzLl8kdmlld3BvcnRCb3VuZHMubmV4dCh7IHdpZHRoOiB2aWV3cG9ydC5vZmZzZXRXaWR0aCwgaGVpZ2h0OiB2aWV3cG9ydC5vZmZzZXRIZWlnaHQgfSk7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2Nyb2xsQmFyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBvblJlc2l6ZUNvbnRlbnQoKSB7XHJcbiAgICAgICAgY29uc3QgY29udGVudCA9IHRoaXMuc2Nyb2xsQ29udGVudD8ubmF0aXZlRWxlbWVudDtcclxuICAgICAgICBpZiAoY29udGVudCkge1xyXG4gICAgICAgICAgICB0aGlzLl8kY29udGVudEJvdW5kcy5uZXh0KHsgd2lkdGg6IGNvbnRlbnQub2Zmc2V0V2lkdGgsIGhlaWdodDogY29udGVudC5vZmZzZXRIZWlnaHQgfSk7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2Nyb2xsQmFyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3Njcm9sbEJveCA9IG5ldyBTY3JvbGxCb3goKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG5cclxuICAgICAgICBjb25zdCAkY2xhc3NlcyA9IHRoaXMuJGNsYXNzZXMsXHJcbiAgICAgICAgICAgICRkaXJlY3Rpb24gPSB0aGlzLiRkaXJlY3Rpb247XHJcblxyXG4gICAgICAgIGNvbWJpbmVMYXRlc3QoKFskY2xhc3NlcywgJGRpcmVjdGlvbl0pKS5waXBlKFxyXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgICAgICAgdGFwKChbY2xhc3NlcywgZGlyZWN0aW9uXSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fJGFjdHVhbENsYXNzZXMubmV4dCh7IC4uLmNsYXNzZXMsIFtkaXJlY3Rpb25dOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgICAgICBjb25zdCAkY29udGVudEJvdW5kcyA9IHRoaXMuJGNvbnRlbnRCb3VuZHMsXHJcbiAgICAgICAgICAgICR2aWV3cG9ydEJvdW5kcyA9IHRoaXMuJHZpZXdwb3J0Qm91bmRzLFxyXG4gICAgICAgICAgICAkaXNWZXJ0aWNhbCA9IHRoaXMuJGlzVmVydGljYWwsXHJcbiAgICAgICAgICAgICRzY3JvbGxiYXJFbmFibGVkID0gdGhpcy4kc2Nyb2xsYmFyRW5hYmxlZDtcclxuXHJcbiAgICAgICAgY29tYmluZUxhdGVzdChbJGRpcmVjdGlvbiwgJHNjcm9sbGJhckVuYWJsZWQsICRpc1ZlcnRpY2FsLCAkY29udGVudEJvdW5kcywgJHZpZXdwb3J0Qm91bmRzXSkucGlwZShcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgICAgICAgIHRhcCgoW2RpcmVjdGlvbiwgc2Nyb2xsYmFyRW5hYmxlZF0pID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuXyRjb250YWluZXJDbGFzc2VzLm5leHQoeyBbZGlyZWN0aW9uXTogdHJ1ZSwgZW5hYmxlZDogc2Nyb2xsYmFyRW5hYmxlZCwgc2Nyb2xsYWJsZTogc2Nyb2xsYmFyRW5hYmxlZCB9KTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAgICAgY29uc3QgJHN0YXJ0T2Zmc2V0ID0gdGhpcy4kc3RhcnRPZmZzZXQsXHJcbiAgICAgICAgICAgICRlbmRPZmZzZXQgPSB0aGlzLiRlbmRPZmZzZXQsXHJcbiAgICAgICAgICAgICR0aHVtYlNpemUgPSB0aGlzLiR0aHVtYlNpemU7XHJcblxyXG4gICAgICAgIGZyb20oWyRlbmRPZmZzZXQsICRzdGFydE9mZnNldCwgJHRodW1iU2l6ZSwgJGlzVmVydGljYWxdKS5waXBlKFxyXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2Nyb2xsQmFyKCk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgICAgIGNvbnN0ICR1cGRhdGVTY3JvbGxCYXIgPSB0aGlzLiR1cGRhdGVTY3JvbGxCYXI7XHJcblxyXG4gICAgICAgICR1cGRhdGVTY3JvbGxCYXIucGlwZShcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhckhhbmRsZXIodHJ1ZSk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB1cGRhdGVTY3JvbGxCYXJIYW5kbGVyKHVwZGF0ZTogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gdGhpcy5fJGRpcmVjdGlvbi5nZXRWYWx1ZSgpLFxyXG4gICAgICAgICAgICBpc1ZlcnRpY2FsID0gdGhpcy5fJGlzVmVydGljYWwuZ2V0VmFsdWUoKSxcclxuICAgICAgICAgICAgc3RhcnRPZmZzZXQgPSB0aGlzLl8kc3RhcnRPZmZzZXQuZ2V0VmFsdWUoKSxcclxuICAgICAgICAgICAgZW5kT2Zmc2V0ID0gdGhpcy5fJGVuZE9mZnNldC5nZXRWYWx1ZSgpLFxyXG4gICAgICAgICAgICBzY3JvbGxDb250ZW50ID0gdGhpcy5zY3JvbGxDb250ZW50Py5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50LFxyXG4gICAgICAgICAgICBzY3JvbGxWaWV3cG9ydCA9IHRoaXMuc2Nyb2xsVmlld3BvcnQ/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTERpdkVsZW1lbnQsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHRodW1iU2l6ZSxcclxuICAgICAgICAgICAgICAgIHRodW1iUG9zaXRpb24sXHJcbiAgICAgICAgICAgIH0gPSB0aGlzLl9zY3JvbGxCb3guY2FsY3VsYXRlU2Nyb2xsKHtcclxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbixcclxuICAgICAgICAgICAgICAgIHZpZXdwb3J0V2lkdGg6IHNjcm9sbFZpZXdwb3J0Lm9mZnNldFdpZHRoLCB2aWV3cG9ydEhlaWdodDogc2Nyb2xsVmlld3BvcnQub2Zmc2V0SGVpZ2h0LFxyXG4gICAgICAgICAgICAgICAgY29udGVudFdpZHRoOiBzY3JvbGxDb250ZW50Lm9mZnNldFdpZHRoLCBjb250ZW50SGVpZ2h0OiBzY3JvbGxDb250ZW50Lm9mZnNldEhlaWdodCxcclxuICAgICAgICAgICAgICAgIHN0YXJ0T2Zmc2V0LFxyXG4gICAgICAgICAgICAgICAgZW5kT2Zmc2V0LFxyXG4gICAgICAgICAgICAgICAgcG9zaXRpb25YOiB0aGlzLl94LFxyXG4gICAgICAgICAgICAgICAgcG9zaXRpb25ZOiB0aGlzLl95LFxyXG4gICAgICAgICAgICAgICAgbWluU2l6ZTogMSxcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuXyR0aHVtYlNpemUubmV4dCh0aHVtYlNpemUpO1xyXG4gICAgICAgIGlmICh1cGRhdGUpIHtcclxuICAgICAgICAgICAgdGhpcy5zY3JvbGxCYXI/LnNjcm9sbCh7XHJcbiAgICAgICAgICAgICAgICBbaXNWZXJ0aWNhbCA/IFRPUF9QUk9QX05BTUUgOiBMRUZUX1BST1BfTkFNRV06IHRodW1iUG9zaXRpb24sIGZpcmVVcGRhdGU6IGZhbHNlLCBiZWhhdmlvcjogQkVIQVZJT1JfSU5TVEFOVCxcclxuICAgICAgICAgICAgICAgIHVzZXJBY3Rpb246IGZhbHNlLCBibGVuZGluZzogdHJ1ZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuXyRzY3JvbGxiYXJTaG93Lm5leHQodGhpcy5zY3JvbGxhYmxlKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgdXBkYXRlU2Nyb2xsQmFyKCkge1xyXG4gICAgICAgIHRoaXMuXyR1cGRhdGVTY3JvbGxCYXIubmV4dCgpO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgbG9jYWxlU2Vuc2l0aXZlIFtsYW5nVGV4dERpcl09XCIoJGxhbmdUZXh0RGlyIHwgYXN5bmMpIVwiIFtsaXN0RGlyXT1cIigkZGlyZWN0aW9uIHwgYXN5bmMpXCIgY2xhc3M9XCJuZ3ZsX19jb250YWluZXJcIlxyXG4gICAgW25nQ2xhc3NdPVwiKCRjb250YWluZXJDbGFzc2VzIHwgYXN5bmMpIVwiPlxyXG4gICAgPGRpdiAjc2Nyb2xsVmlld3BvcnQgcGFydD1cInNjcm9sbGVyXCIgY2xhc3M9XCJuZ3ZsX19zY3JvbGxlclwiPlxyXG4gICAgICAgIDxkaXYgI3Njcm9sbENvbnRlbnQgcGFydD1cImxpc3RcIiBjbGFzcz1cIm5ndmxfX2xpc3RcIiBbbmdDbGFzc109XCIoJGFjdHVhbENsYXNzZXMgfCBhc3luYylcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -10,6 +10,7 @@ const createItemData = (data, isVertical, bounds, boundsSize, dynamic, divides,
|
|
|
10
10
|
measures: {
|
|
11
11
|
position: 0,
|
|
12
12
|
scrollSize: 0,
|
|
13
|
+
maxScrollSize: 0,
|
|
13
14
|
size: itemSize,
|
|
14
15
|
row: {
|
|
15
16
|
size: itemSize,
|
|
@@ -69,6 +70,7 @@ const createItemData = (data, isVertical, bounds, boundsSize, dynamic, divides,
|
|
|
69
70
|
fullSize: false,
|
|
70
71
|
layoutIndexOffset: 0,
|
|
71
72
|
totalItems: 0,
|
|
73
|
+
inverted: false,
|
|
72
74
|
},
|
|
73
75
|
};
|
|
74
76
|
};
|
|
@@ -76,7 +78,7 @@ const createItemData = (data, isVertical, bounds, boundsSize, dynamic, divides,
|
|
|
76
78
|
* PrerenderTrackBox
|
|
77
79
|
* Maximum performance for extremely large lists.
|
|
78
80
|
* It is based on algorithms for virtualization of screen objects.
|
|
79
|
-
* @link https://github.com/DjonnyX/ng-virtual-list/blob/
|
|
81
|
+
* @link https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/prerender-container/core/prerender-track-box.ts
|
|
80
82
|
* @author Evgenii Alexandrovich Grebennikov
|
|
81
83
|
* @email djonnyx@gmail.com
|
|
82
84
|
*/
|
|
@@ -195,4 +197,4 @@ export class PrerenderTrackBox extends EventEmitter {
|
|
|
195
197
|
}
|
|
196
198
|
}
|
|
197
199
|
}
|
|
198
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcmVuZGVyLXRyYWNrLWJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLWNvbnRhaW5lci9jb3JlL3ByZXJlbmRlci10cmFjay1ib3gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsMEJBQTBCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5SSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHVCQUF1QixFQUE2QixNQUFNLFdBQVcsQ0FBQztBQUUvRSxNQUFNLGNBQWMsR0FBRyxDQUFDLElBQXNCLEVBQUUsVUFBbUIsRUFBRSxNQUFhLEVBQUUsVUFBa0IsRUFDbEcsT0FBZ0IsRUFBRSxPQUFlLEVBQUUsUUFBZ0IsRUFBRSxFQUFNLEVBQUUsS0FBYSxFQUEwQixFQUFFO0lBQ3RHLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBUSxFQUMvRCxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFRLENBQUM7SUFDbkUsT0FBTztRQUNILEtBQUs7UUFDTCxFQUFFO1FBQ0YsUUFBUSxFQUFFO1lBQ04sUUFBUSxFQUFFLENBQUM7WUFDWCxVQUFVLEVBQUUsQ0FBQztZQUNiLElBQUksRUFBRSxRQUFRO1lBQ2QsR0FBRyxFQUFFO2dCQUNE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aEMsQ0FBQztRQUVELElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQzVCLENBQUM7UUFFRCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMseUJBQXlCLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQztRQUMxQyxDQUFDO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSVJlbmRlclZpcnR1YWxMaXN0SXRlbSwgSVZpcnR1YWxMaXN0Q29sbGVjdGlvbiwgSVZpcnR1YWxMaXN0SXRlbSB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHNcIjtcclxuaW1wb3J0IHsgSWQgfSBmcm9tIFwiLi4vLi4vLi4vdHlwZXNcIjtcclxuaW1wb3J0IHsgSVNpemUgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgQ01hcCB9IGZyb20gXCIuLi8uLi8uLi91dGlscy9jbWFwXCI7XHJcbmltcG9ydCB7IFByZXJlbmRlckNhY2hlIH0gZnJvbSBcIi4uL3R5cGVzL2NhY2hlXCI7XHJcbmltcG9ydCB7IEJhc2VWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQgfSBmcm9tIFwiLi4vLi4vbmctbGlzdC1pdGVtL2Jhc2VcIjtcclxuaW1wb3J0IHsgSVByZXJlbmRlclRyYWNrQm94UmVmcmVzaFBhcmFtcyB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB7IERFRkFVTFRfRElWSURFUywgREVGQVVMVF9EWU5BTUlDX1NJWkUsIERFRkFVTFRfSVRFTV9TSVpFLCBERUZBVUxUX1NOQVBfVE9fSVRFTV9BTElHTiwgVFJBQ0tfQllfUFJPUEVSVFlfTkFNRSB9IGZyb20gXCIuLi8uLi8uLi9jb25zdFwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnQkMSB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvY29tcG9uZW50Lm1vZGVsXCI7XHJcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gXCIuLi8uLi8uLi91dGlscy9ldmVudC1lbWl0dGVyL2V2ZW50LWVtaXR0ZXJcIjtcclxuaW1wb3J0IHsgUHJlcmVuZGVyVHJhY2tCb3hFdmVudHMsIFByZXJlbmRlclRyYWNrQm94SGFuZGxlcnMgfSBmcm9tIFwiLi4vZXZlbnRzXCI7XHJcblxyXG5jb25zdCBjcmVhdGVJdGVtRGF0YSA9IChkYXRhOiBJVmlydHVhbExpc3RJdGVtLCBpc1ZlcnRpY2FsOiBib29sZWFuLCBib3VuZHM6IElTaXplLCBib3VuZHNTaXplOiBudW1iZXIsXHJcbiAgICBkeW5hbWljOiBib29sZWFuLCBkaXZpZGVzOiBudW1iZXIsIGl0ZW1TaXplOiBudW1iZXIsIGlkOiBJZCwgaW5kZXg6IG51bWJlcik6IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW0gPT4ge1xyXG4gICAgY29uc3QgdyA9IChpc1ZlcnRpY2FsID8gKGJvdW5kcy53aWR0aCAvIGRpdmlkZXMpIDogaXRlbVNpemUpIGFzIGFueSxcclxuICAgICAgICBoID0gKGlzVmVydGljYWwgPyBpdGVtU2l6ZSA6IChib3VuZHMuaGVpZ2h0IC8gZGl2aWRlcykpIGFzIGFueTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgaW5kZXgsXHJcbiAgICAgICAgaWQsXHJcbiAgICAgICAgbWVhc3VyZXM6IHtcclxuICAgICAgICAgICAgcG9zaXRpb246IDAsXHJcbiAgICAgICAgICAgIHNjcm9sbFNpemU6IDAsXHJcbiAgICAgICAgICAgIHNpemU6IGl0ZW1TaXplLFxyXG4gICAgICAgICAgICByb3c6IHtcclxuICAgICAgICAgICAgICAgIHNpemU6IGl0ZW1TaXplLFxyXG4gICAgICAgICAgICAgICAgb2RkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGV2ZW46IGZhbHNlXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGJvdW5kc1NpemUsXHJcbiAgICAgICAgICAgIGFic29sdXRlU3RhcnRQb3NpdGlvbjogMCxcclxuICAgICAgICAgICAgYWJzb2x1dGVTdGFydFBvc2l0aW9uUGVyY2VudDogMCxcclxuICAgICAgICAgICAgYWJzb2x1dGVFbmRQb3NpdGlvbjogMCxcclxuICAgICAgICAgICAgYWJzb2x1dGVFbmRQb3NpdGlvblBlcmNlbnQ6IDAsXHJcbiAgICAgICAgICAgIGRlbHRhOiAwLFxyXG4gICAgICAgICAgICB4OiAwLFxyXG4gICAgICAgICAgICB5OiAwLFxyXG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFg6IDAsXHJcbiAgICAgICAgICAgIHRyYW5zZm9ybWVkWTogMCxcclxuICAgICAgICAgICAgejogMCxcclxuICAgICAgICAgICAgcm90YXRpb25YOiAwLFxyXG4gICAgICAgICAgICByb3RhdGlvblk6IDAsXHJcbiAgICAgICAgICAgIHJvdGF0aW9uWjogMCxcclxuICAgICAgICAgICAgc2NhbGVYOiAwLFxyXG4gICAgICAgICAgICBzY2FsZVk6IDAsXHJcbiAgICAgICAgICAgIHNjYWxlWjogMCxcclxuICAgICAgICAgICAgd2lkdGg6IHcsXHJcbiAgICAgICAgICAgIGhlaWdodDogaCxcclxuICAgICAgICAgICAgbWluV2lkdGg6IDAsXHJcbiAgICAgICAgICAgIG1pbkhlaWdodDogMCxcclxuICAgICAgICAgICAgbWF4V2lkdGg6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLFxyXG4gICAgICAgICAgICBtYXhIZWlnaHQ6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLFxyXG4gICAgICAgICAgICBzY3JvbGxEaXJlY3Rpb246IDAsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBkYXRhLFxyXG4gICAgICAgIHByZXZpb3VzZURhdGE6IGRhdGEsXHJcbiAgICAgICAgbmV4dERhdGE6IGRhdGEsXHJcbiAgICAgICAgY29uZmlnOiB7XHJcbiAgICAgICAgICAgIG5ldzogZmFsc2UsXHJcbiAgICAgICAgICAgIG9kZDogZmFsc2UsXHJcbiAgICAgICAgICAgIGV2ZW46IGZhbHNlLFxyXG4gICAgICAgICAgICBjb2xsYXBzYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHN0aWNreTogMCxcclxuICAgICAgICAgICAgc2VsZWN0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHNuYXA6IGZhbHNlLFxyXG4gICAgICAgICAgICBzbmFwcGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgc25hcHBlZE91dDogZmFsc2UsXHJcbiAgICAgICAgICAgIGlzVmVydGljYWwsXHJcbiAgICAgICAgICAgIGR5bmFtaWMsXHJcbiAgICAgICAgICAgIGlzU25hcHBpbmdNZXRob2RBZHZhbmNlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIGRpdmlkZXM6IDEsXHJcbiAgICAgICAgICAgIHRhYkluZGV4OiAwLFxyXG4gICAgICAgICAgICBvcGFjaXR5OiAxLFxyXG4gICAgICAgICAgICB6SW5kZXg6IFwiMFwiLFxyXG4gICAgICAgICAgICBzbmFwVG9JdGVtOiBmYWxzZSxcclxuICAgICAgICAgICAgc25hcFRvSXRlbUFsaWduOiBERUZBVUxUX1NOQVBfVE9fSVRFTV9BTElHTixcclxuICAgICAgICAgICAgbGF5b3V0T2Zmc2V0OiAwLFxyXG4gICAgICAgICAgICBpc0ZpcnN0OiBmYWxzZSxcclxuICAgICAgICAgICAgaXNMYXN0OiBmYWxzZSxcclxuICAgICAgICAgICAgZnVsbFNpemU6IGZhbHNlLFxyXG4gICAgICAgICAgICBsYXlvdXRJbmRleE9mZnNldDogMCxcclxuICAgICAgICAgICAgdG90YWxJdGVtczogMCxcclxuICAgICAgICB9LFxyXG4gICAgfVxyXG59XHJcblxyXG4vKipcclxuICogUHJlcmVuZGVyVHJhY2tCb3hcclxuICogTWF4aW11bSBwZXJmb3JtYW5jZSBmb3IgZXh0cmVtZWx5IGxhcmdlIGxpc3RzLlxyXG4gKiBJdCBpcyBiYXNlZCBvbiBhbGdvcml0aG1zIGZvciB2aXJ0dWFsaXphdGlvbiBvZiBzY3JlZW4gb2JqZWN0cy5cclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTcueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9wcmVyZW5kZXItY29udGFpbmVyL2NvcmUvcHJlcmVuZGVyLXRyYWNrLWJveC50c1xyXG4gKiBAYXV0aG9yIEV2Z2VuaWkgQWxleGFuZHJvdmljaCBHcmViZW5uaWtvdlxyXG4gKiBAZW1haWwgZGpvbm55eEBnbWFpbC5jb21cclxuICovXHJcbmV4cG9ydCBjbGFzcyBQcmVyZW5kZXJUcmFja0JveCBleHRlbmRzIEV2ZW50RW1pdHRlcjxQcmVyZW5kZXJUcmFja0JveEV2ZW50cywgUHJlcmVuZGVyVHJhY2tCb3hIYW5kbGVycz4ge1xyXG4gICAgcHJpdmF0ZSBfbWFwOiBDTWFwPElkLCBJU2l6ZT4gfCBudWxsID0gbmV3IENNYXA8SWQsIElTaXplPigpO1xyXG5cclxuICAgIHByaXZhdGUgX2l0ZW1zOiBJVmlydHVhbExpc3RDb2xsZWN0aW9uIHwgbnVsbCA9IG5ldyBBcnJheTxJVmlydHVhbExpc3RJdGVtPigpO1xyXG5cclxuICAgIHByaXZhdGUgX2NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIHByaXZhdGUgX2NvbXBvbmVudENsYXNzOiBDb21wb25lbnQkMTxCYXNlVmlydHVhbExpc3RJdGVtQ29tcG9uZW50PiB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIHByaXZhdGUgX2NvbXBvbmVudHM6IEFycmF5PENvbXBvbmVudFJlZjxCYXNlVmlydHVhbExpc3RJdGVtQ29tcG9uZW50Pj4gfCBudWxsID0gbmV3IEFycmF5PENvbXBvbmVudFJlZjxCYXNlVmlydHVhbExpc3RJdGVtQ29tcG9uZW50Pj4oKTtcclxuXHJcbiAgICBwcml2YXRlIF9jb21wb25lbnRzUmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyIHwgbnVsbCA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29tcG9uZW50cyA9IHRoaXMuX2NvbXBvbmVudHM7XHJcbiAgICAgICAgaWYgKCEhY29tcG9uZW50cykge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbXAgb2YgY29tcG9uZW50cykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBjb21wLmluc3RhbmNlLmdldEJvdW5kcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbWFwPy5zZXQoY29tcC5pbnN0YW5jZS5pdGVtSWQhLCB7IHdpZHRoLCBoZWlnaHQgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaXNwYXRjaChQcmVyZW5kZXJUcmFja0JveEV2ZW50cy5SRVNJWkUsICh0aGlzLl9tYXA/LnRvT2JqZWN0KCkgfHwge30pKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHByaXZhdGUgX2FjdGl2ZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBnZXQgYWN0aXZlKCkgeyByZXR1cm4gdGhpcy5fYWN0aXZlOyB9XHJcblxyXG4gICAgcHJpdmF0ZSByZWZyZXNoKGNvbXBvbmVudENsYXNzOiBDb21wb25lbnQkMTxCYXNlVmlydHVhbExpc3RJdGVtQ29tcG9uZW50PiwgYm91bmRzOiBJU2l6ZSwgcGFyYW1zOiBJUHJlcmVuZGVyVHJhY2tCb3hSZWZyZXNoUGFyYW1zKSB7XHJcbiAgICAgICAgY29uc3QgaXNWZXJ0aWNhbCA9IHBhcmFtcy5pc1ZlcnRpY2FsID8/IHRydWUsXHJcbiAgICAgICAgICAgIGR5bmFtaWMgPSBwYXJhbXMuZHluYW1pYyA/PyBERUZBVUxUX0RZTkFNSUNfU0laRSxcclxuICAgICAgICAgICAgZGl2aWRlcyA9IHBhcmFtcy5kaXZpZGVzID8/IERFRkFVTFRfRElWSURFUyxcclxuICAgICAgICAgICAgaXRlbXNTaXplID0gcGFyYW1zLml0ZW1TaXplID8/IERFRkFVTFRfSVRFTV9TSVpFLFxyXG4gICAgICAgICAgICB0cmFja0J5ID0gcGFyYW1zLnRyYWNrQnkgPz8gVFJBQ0tfQllfUFJPUEVSVFlfTkFNRSxcclxuICAgICAgICAgICAgaXRlbVJlbmRlcmVyID0gcGFyYW1zLml0ZW1SZW5kZXJlcixcclxuICAgICAgICAgICAgYm91bmRzU2l6ZSA9IGlzVmVydGljYWwgPyBib3VuZHMuaGVpZ2h0IDogYm91bmRzLndpZHRoLFxyXG4gICAgICAgICAgICBpdGVtcyA9IHRoaXMuX2l0ZW1zLCBjb21wb25lbnRzID0gdGhpcy5fY29tcG9uZW50cyxcclxuICAgICAgICAgICAgcmVzaXplT2JzZXJ2ZXIgPSB0aGlzLl9jb21wb25lbnRzUmVzaXplT2JzZXJ2ZXI7XHJcblxyXG4gICAgICAgIGlmICghaXRlbXMgfHwgIWNvbXBvbmVudHMgfHwgIXRoaXMuX2NvbnRhaW5lcikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCB0b3RhbFNpemUgPSAwLCBqID0gMDtcclxuICAgICAgICBmb3IgKGxldCBpID0gaXRlbXMubGVuZ3RoIC0gMSwgbCA9IDA7IGkgPj0gbDsgaS0tKSB7XHJcbiAgICAgICAgICAgIGlmICh0b3RhbFNpemUgPiBib3VuZHNTaXplKSB7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNbaV07XHJcbiAgICAgICAgICAgIGlmICghIWl0ZW0pIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gaXRlbVt0cmFja0J5XSwgaW5kZXggPSBpdGVtcy5sZW5ndGggLSBpIC0gMTtcclxuICAgICAgICAgICAgICAgIGxldCBjb21wOiBDb21wb25lbnRSZWY8QmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudD47XHJcbiAgICAgICAgICAgICAgICBpZiAoY29tcG9uZW50cy5sZW5ndGggPD0gaikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbXAgPSB0aGlzLl9jb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudENsYXNzKTtcclxuICAgICAgICAgICAgICAgICAgICBjb21wLmluc3RhbmNlLnJlbmRlcmVyID0gaXRlbVJlbmRlcmVyO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghIXJlc2l6ZU9ic2VydmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUoY29tcC5pbnN0YW5jZS5lbGVtZW50KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cy5wdXNoKGNvbXApO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb21wID0gY29tcG9uZW50c1tqXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbXAuaW5zdGFuY2UuaXRlbSA9IGNyZWF0ZUl0ZW1EYXRhKGl0ZW0sIGlzVmVydGljYWwsIGJvdW5kcywgYm91bmRzU2l6ZSwgZHluYW1pYywgZGl2aWRlcywgaXRlbXNTaXplLCBpZCwgaW5kZXgpO1xyXG4gICAgICAgICAgICAgICAgY29tcC5pbnN0YW5jZS5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGNvbXAuaW5zdGFuY2UuZ2V0Qm91bmRzKCksXHJcbiAgICAgICAgICAgICAgICAgICAgdyA9IGlzVmVydGljYWwgPyB3aWR0aCA6IHdpZHRoIDwgaXRlbXNTaXplID8gaXRlbXNTaXplIDogd2lkdGgsXHJcbiAgICAgICAgICAgICAgICAgICAgaCA9IGlzVmVydGljYWwgPyBoZWlnaHQgPCBpdGVtc1NpemUgPyBpdGVtc1NpemUgOiBoZWlnaHQgOiBoZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICB0b3RhbFNpemUgKz0gaXNWZXJ0aWNhbCA/IGggOiB3O1xyXG4gICAgICAgICAgICAgICAgaisrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZShjb250YWluZXI6IFZpZXdDb250YWluZXJSZWYpIHtcclxuICAgICAgICB0aGlzLl9jb250YWluZXIgPSBjb250YWluZXI7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzZXQoY29tcG9uZW50Q2xhc3M6IENvbXBvbmVudCQxPEJhc2VWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQ+LCBpdGVtczogSVZpcnR1YWxMaXN0Q29sbGVjdGlvbixcclxuICAgICAgICBib3VuZHM6IElTaXplLCBwYXJhbXM6IElQcmVyZW5kZXJUcmFja0JveFJlZnJlc2hQYXJhbXMpIHtcclxuICAgICAgICB0aGlzLl9pdGVtcyA9IGl0ZW1zO1xyXG4gICAgICAgIHRoaXMuX2NvbXBvbmVudENsYXNzID0gY29tcG9uZW50Q2xhc3M7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKGNvbXBvbmVudENsYXNzLCBib3VuZHMsIHBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Q2FjaGUoKTogUHJlcmVuZGVyQ2FjaGUge1xyXG4gICAgICAgIHJldHVybiAhIXRoaXMuX21hcCA/IHRoaXMuX21hcC50b09iamVjdCgpIDoge307XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXIoKSB7XHJcbiAgICAgICAgaWYgKCEhdGhpcy5fbWFwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX21hcC5jbGVhcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbigpIHtcclxuICAgICAgICBpZiAodGhpcy5fYWN0aXZlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2FjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgY29tcG9uZW50cyA9IHRoaXMuX2NvbXBvbmVudHM7XHJcbiAgICAgICAgaWYgKCEhY29tcG9uZW50cykge1xyXG4gICAgICAgICAgICBjb25zdCBvYnNlcnZlciA9IHRoaXMuX2NvbXBvbmVudHNSZXNpemVPYnNlcnZlcjtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBjb21wIG9mIGNvbXBvbmVudHMpIHtcclxuICAgICAgICAgICAgICAgIGlmICghIWNvbXAgJiYgISFvYnNlcnZlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUoY29tcC5pbnN0YW5jZS5lbGVtZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvZmYoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9hY3RpdmUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKCEhdGhpcy5fY29tcG9uZW50c1Jlc2l6ZU9ic2VydmVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudHNSZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvdmVycmlkZSBkaXNwb3NlKCkge1xyXG4gICAgICAgIHN1cGVyLmRpc3Bvc2UoKTtcclxuXHJcbiAgICAgICAgaWYgKCEhdGhpcy5fbWFwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX21hcC5jbGVhcigpO1xyXG4gICAgICAgICAgICB0aGlzLl9tYXAgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCEhdGhpcy5faXRlbXMpIHtcclxuICAgICAgICAgICAgdGhpcy5faXRlbXMgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCEhdGhpcy5fY29tcG9uZW50Q2xhc3MpIHtcclxuICAgICAgICAgICAgdGhpcy5fY29tcG9uZW50Q2xhc3MgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCEhdGhpcy5fY29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lciA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoISF0aGlzLl9jb21wb25lbnRzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudHMgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCEhdGhpcy5fY29tcG9uZW50c1Jlc2l6ZU9ic2VydmVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudHNSZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudHNSZXNpemVPYnNlcnZlciA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcmVuZGVyLXRyYWNrLWJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLWNvbnRhaW5lci9jb3JlL3ByZXJlbmRlci10cmFjay1ib3gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsMEJBQTBCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5SSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHVCQUF1QixFQUE2QixNQUFNLFdBQVcsQ0FBQztBQUUvRSxNQUFNLGNBQWMsR0FBRyxDQUFDLElBQXNCLEVBQUUsVUFBbUIsRUFBRSxNQUFhLEVBQUUsVUFBa0IsRUFDbEcsT0FBZ0IsRUFBRSxPQUFlLEVBQUUsUUFBZ0IsRUFBRSxFQUFNLEVBQUUsS0FBYSxFQUEwQixFQUFFO0lBQ3RHLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBUSxFQUMvRCxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFRLENBQUM7SUFDbkUsT0FBTztRQUNILEtBQUs7UUFDTCxFQUFFO1FBQ0YsUUFBUSxFQUFFO1lBQ04sUUFBUSxFQUFFLENBQUM7WUFDWCxVQUFVLEVBQUUsQ0FBQztZQUNiLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLElBQUksRUFBRSxRQUFR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QztZQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUNoQyxDQUFDO1FBRUQsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQzNCLENBQUM7UUFFRCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDNUIsQ0FBQztRQUVELElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDO1FBQzFDLENBQUM7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBJUmVuZGVyVmlydHVhbExpc3RJdGVtLCBJVmlydHVhbExpc3RDb2xsZWN0aW9uLCBJVmlydHVhbExpc3RJdGVtIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVsc1wiO1xyXG5pbXBvcnQgeyBJZCB9IGZyb20gXCIuLi8uLi8uLi90eXBlc1wiO1xyXG5pbXBvcnQgeyBJU2l6ZSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBDTWFwIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL2NtYXBcIjtcclxuaW1wb3J0IHsgUHJlcmVuZGVyQ2FjaGUgfSBmcm9tIFwiLi4vdHlwZXMvY2FjaGVcIjtcclxuaW1wb3J0IHsgQmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9uZy1saXN0LWl0ZW0vYmFzZVwiO1xyXG5pbXBvcnQgeyBJUHJlcmVuZGVyVHJhY2tCb3hSZWZyZXNoUGFyYW1zIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcclxuaW1wb3J0IHsgREVGQVVMVF9ESVZJREVTLCBERUZBVUxUX0RZTkFNSUNfU0laRSwgREVGQVVMVF9JVEVNX1NJWkUsIERFRkFVTFRfU05BUF9UT19JVEVNX0FMSUdOLCBUUkFDS19CWV9QUk9QRVJUWV9OQU1FIH0gZnJvbSBcIi4uLy4uLy4uL2NvbnN0XCI7XHJcbmltcG9ydCB7IENvbXBvbmVudCQxIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9jb21wb25lbnQubW9kZWxcIjtcclxuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL2V2ZW50LWVtaXR0ZXIvZXZlbnQtZW1pdHRlclwiO1xyXG5pbXBvcnQgeyBQcmVyZW5kZXJUcmFja0JveEV2ZW50cywgUHJlcmVuZGVyVHJhY2tCb3hIYW5kbGVycyB9IGZyb20gXCIuLi9ldmVudHNcIjtcclxuXHJcbmNvbnN0IGNyZWF0ZUl0ZW1EYXRhID0gKGRhdGE6IElWaXJ0dWFsTGlzdEl0ZW0sIGlzVmVydGljYWw6IGJvb2xlYW4sIGJvdW5kczogSVNpemUsIGJvdW5kc1NpemU6IG51bWJlcixcclxuICAgIGR5bmFtaWM6IGJvb2xlYW4sIGRpdmlkZXM6IG51bWJlciwgaXRlbVNpemU6IG51bWJlciwgaWQ6IElkLCBpbmRleDogbnVtYmVyKTogSVJlbmRlclZpcnR1YWxMaXN0SXRlbSA9PiB7XHJcbiAgICBjb25zdCB3ID0gKGlzVmVydGljYWwgPyAoYm91bmRzLndpZHRoIC8gZGl2aWRlcykgOiBpdGVtU2l6ZSkgYXMgYW55LFxyXG4gICAgICAgIGggPSAoaXNWZXJ0aWNhbCA/IGl0ZW1TaXplIDogKGJvdW5kcy5oZWlnaHQgLyBkaXZpZGVzKSkgYXMgYW55O1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICBpZCxcclxuICAgICAgICBtZWFzdXJlczoge1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogMCxcclxuICAgICAgICAgICAgc2Nyb2xsU2l6ZTogMCxcclxuICAgICAgICAgICAgbWF4U2Nyb2xsU2l6ZTogMCxcclxuICAgICAgICAgICAgc2l6ZTogaXRlbVNpemUsXHJcbiAgICAgICAgICAgIHJvdzoge1xyXG4gICAgICAgICAgICAgICAgc2l6ZTogaXRlbVNpemUsXHJcbiAgICAgICAgICAgICAgICBvZGQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgZXZlbjogZmFsc2VcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYm91bmRzU2l6ZSxcclxuICAgICAgICAgICAgYWJzb2x1dGVTdGFydFBvc2l0aW9uOiAwLFxyXG4gICAgICAgICAgICBhYnNvbHV0ZVN0YXJ0UG9zaXRpb25QZXJjZW50OiAwLFxyXG4gICAgICAgICAgICBhYnNvbHV0ZUVuZFBvc2l0aW9uOiAwLFxyXG4gICAgICAgICAgICBhYnNvbHV0ZUVuZFBvc2l0aW9uUGVyY2VudDogMCxcclxuICAgICAgICAgICAgZGVsdGE6IDAsXHJcbiAgICAgICAgICAgIHg6IDAsXHJcbiAgICAgICAgICAgIHk6IDAsXHJcbiAgICAgICAgICAgIHRyYW5zZm9ybWVkWDogMCxcclxuICAgICAgICAgICAgdHJhbnNmb3JtZWRZOiAwLFxyXG4gICAgICAgICAgICB6OiAwLFxyXG4gICAgICAgICAgICByb3RhdGlvblg6IDAsXHJcbiAgICAgICAgICAgIHJvdGF0aW9uWTogMCxcclxuICAgICAgICAgICAgcm90YXRpb25aOiAwLFxyXG4gICAgICAgICAgICBzY2FsZVg6IDAsXHJcbiAgICAgICAgICAgIHNjYWxlWTogMCxcclxuICAgICAgICAgICAgc2NhbGVaOiAwLFxyXG4gICAgICAgICAgICB3aWR0aDogdyxcclxuICAgICAgICAgICAgaGVpZ2h0OiBoLFxyXG4gICAgICAgICAgICBtaW5XaWR0aDogMCxcclxuICAgICAgICAgICAgbWluSGVpZ2h0OiAwLFxyXG4gICAgICAgICAgICBtYXhXaWR0aDogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsXHJcbiAgICAgICAgICAgIG1heEhlaWdodDogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsXHJcbiAgICAgICAgICAgIHNjcm9sbERpcmVjdGlvbjogMCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGRhdGEsXHJcbiAgICAgICAgcHJldmlvdXNlRGF0YTogZGF0YSxcclxuICAgICAgICBuZXh0RGF0YTogZGF0YSxcclxuICAgICAgICBjb25maWc6IHtcclxuICAgICAgICAgICAgbmV3OiBmYWxzZSxcclxuICAgICAgICAgICAgb2RkOiBmYWxzZSxcclxuICAgICAgICAgICAgZXZlbjogZmFsc2UsXHJcbiAgICAgICAgICAgIGNvbGxhcHNhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgc3RpY2t5OiAwLFxyXG4gICAgICAgICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgc25hcDogZmFsc2UsXHJcbiAgICAgICAgICAgIHNuYXBwZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBzbmFwcGVkT3V0OiBmYWxzZSxcclxuICAgICAgICAgICAgaXNWZXJ0aWNhbCxcclxuICAgICAgICAgICAgZHluYW1pYyxcclxuICAgICAgICAgICAgaXNTbmFwcGluZ01ldGhvZEFkdmFuY2VkOiBmYWxzZSxcclxuICAgICAgICAgICAgZGl2aWRlczogMSxcclxuICAgICAgICAgICAgdGFiSW5kZXg6IDAsXHJcbiAgICAgICAgICAgIG9wYWNpdHk6IDEsXHJcbiAgICAgICAgICAgIHpJbmRleDogXCIwXCIsXHJcbiAgICAgICAgICAgIHNuYXBUb0l0ZW06IGZhbHNlLFxyXG4gICAgICAgICAgICBzbmFwVG9JdGVtQWxpZ246IERFRkFVTFRfU05BUF9UT19JVEVNX0FMSUdOLFxyXG4gICAgICAgICAgICBsYXlvdXRPZmZzZXQ6IDAsXHJcbiAgICAgICAgICAgIGlzRmlyc3Q6IGZhbHNlLFxyXG4gICAgICAgICAgICBpc0xhc3Q6IGZhbHNlLFxyXG4gICAgICAgICAgICBmdWxsU2l6ZTogZmFsc2UsXHJcbiAgICAgICAgICAgIGxheW91dEluZGV4T2Zmc2V0OiAwLFxyXG4gICAgICAgICAgICB0b3RhbEl0ZW1zOiAwLFxyXG4gICAgICAgICAgICBpbnZlcnRlZDogZmFsc2UsXHJcbiAgICAgICAgfSxcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFByZXJlbmRlclRyYWNrQm94XHJcbiAqIE1heGltdW0gcGVyZm9ybWFuY2UgZm9yIGV4dHJlbWVseSBsYXJnZSBsaXN0cy5cclxuICogSXQgaXMgYmFzZWQgb24gYWxnb3JpdGhtcyBmb3IgdmlydHVhbGl6YXRpb24gb2Ygc2NyZWVuIG9iamVjdHMuXHJcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Eam9ubnlYL25nLXZpcnR1YWwtbGlzdC9ibG9iLzE0LngvcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvcHJlcmVuZGVyLWNvbnRhaW5lci9jb3JlL3ByZXJlbmRlci10cmFjay1ib3gudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEFsZXhhbmRyb3ZpY2ggR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgUHJlcmVuZGVyVHJhY2tCb3ggZXh0ZW5kcyBFdmVudEVtaXR0ZXI8UHJlcmVuZGVyVHJhY2tCb3hFdmVudHMsIFByZXJlbmRlclRyYWNrQm94SGFuZGxlcnM+IHtcclxuICAgIHByaXZhdGUgX21hcDogQ01hcDxJZCwgSVNpemU+IHwgbnVsbCA9IG5ldyBDTWFwPElkLCBJU2l6ZT4oKTtcclxuXHJcbiAgICBwcml2YXRlIF9pdGVtczogSVZpcnR1YWxMaXN0Q29sbGVjdGlvbiB8IG51bGwgPSBuZXcgQXJyYXk8SVZpcnR1YWxMaXN0SXRlbT4oKTtcclxuXHJcbiAgICBwcml2YXRlIF9jb250YWluZXI6IFZpZXdDb250YWluZXJSZWYgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBwcml2YXRlIF9jb21wb25lbnRDbGFzczogQ29tcG9uZW50JDE8QmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudD4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBwcml2YXRlIF9jb21wb25lbnRzOiBBcnJheTxDb21wb25lbnRSZWY8QmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudD4+IHwgbnVsbCA9IG5ldyBBcnJheTxDb21wb25lbnRSZWY8QmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudD4+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfY29tcG9uZW50c1Jlc2l6ZU9ic2VydmVyOiBSZXNpemVPYnNlcnZlciB8IG51bGwgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudHMgPSB0aGlzLl9jb21wb25lbnRzO1xyXG4gICAgICAgIGlmICghIWNvbXBvbmVudHMpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBjb21wIG9mIGNvbXBvbmVudHMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gY29tcC5pbnN0YW5jZS5nZXRCb3VuZHMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX21hcD8uc2V0KGNvbXAuaW5zdGFuY2UuaXRlbUlkISwgeyB3aWR0aCwgaGVpZ2h0IH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGlzcGF0Y2goUHJlcmVuZGVyVHJhY2tCb3hFdmVudHMuUkVTSVpFLCAodGhpcy5fbWFwPy50b09iamVjdCgpIHx8IHt9KSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBwcml2YXRlIF9hY3RpdmU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgZ2V0IGFjdGl2ZSgpIHsgcmV0dXJuIHRoaXMuX2FjdGl2ZTsgfVxyXG5cclxuICAgIHByaXZhdGUgcmVmcmVzaChjb21wb25lbnRDbGFzczogQ29tcG9uZW50JDE8QmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudD4sIGJvdW5kczogSVNpemUsIHBhcmFtczogSVByZXJlbmRlclRyYWNrQm94UmVmcmVzaFBhcmFtcykge1xyXG4gICAgICAgIGNvbnN0IGlzVmVydGljYWwgPSBwYXJhbXMuaXNWZXJ0aWNhbCA/PyB0cnVlLFxyXG4gICAgICAgICAgICBkeW5hbWljID0gcGFyYW1zLmR5bmFtaWMgPz8gREVGQVVMVF9EWU5BTUlDX1NJWkUsXHJcbiAgICAgICAgICAgIGRpdmlkZXMgPSBwYXJhbXMuZGl2aWRlcyA/PyBERUZBVUxUX0RJVklERVMsXHJcbiAgICAgICAgICAgIGl0ZW1zU2l6ZSA9IHBhcmFtcy5pdGVtU2l6ZSA/PyBERUZBVUxUX0lURU1fU0laRSxcclxuICAgICAgICAgICAgdHJhY2tCeSA9IHBhcmFtcy50cmFja0J5ID8/IFRSQUNLX0JZX1BST1BFUlRZX05BTUUsXHJcbiAgICAgICAgICAgIGl0ZW1SZW5kZXJlciA9IHBhcmFtcy5pdGVtUmVuZGVyZXIsXHJcbiAgICAgICAgICAgIGJvdW5kc1NpemUgPSBpc1ZlcnRpY2FsID8gYm91bmRzLmhlaWdodCA6IGJvdW5kcy53aWR0aCxcclxuICAgICAgICAgICAgaXRlbXMgPSB0aGlzLl9pdGVtcywgY29tcG9uZW50cyA9IHRoaXMuX2NvbXBvbmVudHMsXHJcbiAgICAgICAgICAgIHJlc2l6ZU9ic2VydmVyID0gdGhpcy5fY29tcG9uZW50c1Jlc2l6ZU9ic2VydmVyO1xyXG5cclxuICAgICAgICBpZiAoIWl0ZW1zIHx8ICFjb21wb25lbnRzIHx8ICF0aGlzLl9jb250YWluZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdG90YWxTaXplID0gMCwgaiA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IGl0ZW1zLmxlbmd0aCAtIDEsIGwgPSAwOyBpID49IGw7IGktLSkge1xyXG4gICAgICAgICAgICBpZiAodG90YWxTaXplID4gYm91bmRzU2l6ZSkge1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zW2ldO1xyXG4gICAgICAgICAgICBpZiAoISFpdGVtKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpZCA9IGl0ZW1bdHJhY2tCeV0sIGluZGV4ID0gaXRlbXMubGVuZ3RoIC0gaSAtIDE7XHJcbiAgICAgICAgICAgICAgICBsZXQgY29tcDogQ29tcG9uZW50UmVmPEJhc2VWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQ+O1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMubGVuZ3RoIDw9IGopIHtcclxuICAgICAgICAgICAgICAgICAgICBjb21wID0gdGhpcy5fY29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRDbGFzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29tcC5pbnN0YW5jZS5yZW5kZXJlciA9IGl0ZW1SZW5kZXJlcjtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISFyZXNpemVPYnNlcnZlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGNvbXAuaW5zdGFuY2UuZWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHMucHVzaChjb21wKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29tcCA9IGNvbXBvbmVudHNbal07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb21wLmluc3RhbmNlLml0ZW0gPSBjcmVhdGVJdGVtRGF0YShpdGVtLCBpc1ZlcnRpY2FsLCBib3VuZHMsIGJvdW5kc1NpemUsIGR5bmFtaWMsIGRpdmlkZXMsIGl0ZW1zU2l6ZSwgaWQsIGluZGV4KTtcclxuICAgICAgICAgICAgICAgIGNvbXAuaW5zdGFuY2Uuc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBjb21wLmluc3RhbmNlLmdldEJvdW5kcygpLFxyXG4gICAgICAgICAgICAgICAgICAgIHcgPSBpc1ZlcnRpY2FsID8gd2lkdGggOiB3aWR0aCA8IGl0ZW1zU2l6ZSA/IGl0ZW1zU2l6ZSA6IHdpZHRoLFxyXG4gICAgICAgICAgICAgICAgICAgIGggPSBpc1ZlcnRpY2FsID8gaGVpZ2h0IDwgaXRlbXNTaXplID8gaXRlbXNTaXplIDogaGVpZ2h0IDogaGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgdG90YWxTaXplICs9IGlzVmVydGljYWwgPyBoIDogdztcclxuICAgICAgICAgICAgICAgIGorKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGUoY29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmKSB7XHJcbiAgICAgICAgdGhpcy5fY29udGFpbmVyID0gY29udGFpbmVyO1xyXG4gICAgfVxyXG5cclxuICAgIHJlc2V0KGNvbXBvbmVudENsYXNzOiBDb21wb25lbnQkMTxCYXNlVmlydHVhbExpc3RJdGVtQ29tcG9uZW50PiwgaXRlbXM6IElWaXJ0dWFsTGlzdENvbGxlY3Rpb24sXHJcbiAgICAgICAgYm91bmRzOiBJU2l6ZSwgcGFyYW1zOiBJUHJlcmVuZGVyVHJhY2tCb3hSZWZyZXNoUGFyYW1zKSB7XHJcbiAgICAgICAgdGhpcy5faXRlbXMgPSBpdGVtcztcclxuICAgICAgICB0aGlzLl9jb21wb25lbnRDbGFzcyA9IGNvbXBvbmVudENsYXNzO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaChjb21wb25lbnRDbGFzcywgYm91bmRzLCBwYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENhY2hlKCk6IFByZXJlbmRlckNhY2hlIHtcclxuICAgICAgICByZXR1cm4gISF0aGlzLl9tYXAgPyB0aGlzLl9tYXAudG9PYmplY3QoKSA6IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyKCkge1xyXG4gICAgICAgIGlmICghIXRoaXMuX21hcCkge1xyXG4gICAgICAgICAgICB0aGlzLl9tYXAuY2xlYXIoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb24oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudHMgPSB0aGlzLl9jb21wb25lbnRzO1xyXG4gICAgICAgIGlmICghIWNvbXBvbmVudHMpIHtcclxuICAgICAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSB0aGlzLl9jb21wb25lbnRzUmVzaXplT2JzZXJ2ZXI7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29tcCBvZiBjb21wb25lbnRzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoISFjb21wICYmICEhb2JzZXJ2ZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGNvbXAuaW5zdGFuY2UuZWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb2ZmKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5fYWN0aXZlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2FjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIGlmICghIXRoaXMuX2NvbXBvbmVudHNSZXNpemVPYnNlcnZlcikge1xyXG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnRzUmVzaXplT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb3ZlcnJpZGUgZGlzcG9zZSgpIHtcclxuICAgICAgICBzdXBlci5kaXNwb3NlKCk7XHJcblxyXG4gICAgICAgIGlmICghIXRoaXMuX21hcCkge1xyXG4gICAgICAgICAgICB0aGlzLl9tYXAuY2xlYXIoKTtcclxuICAgICAgICAgICAgdGhpcy5fbWFwID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghIXRoaXMuX2l0ZW1zKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1zID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghIXRoaXMuX2NvbXBvbmVudENsYXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudENsYXNzID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghIXRoaXMuX2NvbnRhaW5lcikge1xyXG4gICAgICAgICAgICB0aGlzLl9jb250YWluZXIgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCEhdGhpcy5fY29tcG9uZW50cykge1xyXG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnRzID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghIXRoaXMuX2NvbXBvbmVudHNSZXNpemVPYnNlcnZlcikge1xyXG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnRzUmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xyXG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnRzUmVzaXplT2JzZXJ2ZXIgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Component, ElementRef, EventEmitter, inject, Input, Output, TemplateRef, ViewChild } from '@angular/core';
|
|
2
2
|
import { BehaviorSubject, combineLatest, debounceTime, distinctUntilChanged, filter, fromEvent, of, startWith, Subject, switchMap, takeUntil, tap } from 'rxjs';
|
|
3
3
|
import { NgScrollView, SCROLL_VIEW_INVERSION } from '../ng-scroll-view';
|
|
4
|
-
import {
|
|
4
|
+
import { DEFAULT_OVERLAPPING_SCROLLBAR, DEFAULT_SCROLLBAR_INTERACTIVE, LEFT, POSITION, POSITION_ABSOLUTE, POSITION_RELATIVE, RIGHT, SIZE_100_PERSENT, SIZE_AUTO, UNSET, } from '../../const';
|
|
5
5
|
import { DEFAULT_SCROLLBAR_TEMPLATE_CONTEXT, DEFAULT_SIZE, DEFAULT_THICKNESS, HEIGHT, NONE, OPACITY, OPACITY_0, OPACITY_1, PX, TRANSITION, TRANSITION_FADE_IN, WIDTH, } from './const';
|
|
6
6
|
import { SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO, SCROLL_VIEW_OVERSCROLL_ENABLED } from '../ng-scroll-view/const';
|
|
7
7
|
import { NgScrollBarService } from './ng-scroll-bar.service';
|
|
@@ -14,7 +14,7 @@ import * as i1 from "@angular/common";
|
|
|
14
14
|
* ScrollBar component.
|
|
15
15
|
* Maximum performance for extremely large lists.
|
|
16
16
|
* It is based on algorithms for virtualization of screen objects.
|
|
17
|
-
* @link https://github.com/DjonnyX/ng-virtual-list/blob/
|
|
17
|
+
* @link https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/components/ng-scroll-bar/ng-scroll-bar.component.ts
|
|
18
18
|
* @author Evgenii Alexandrovich Grebennikov
|
|
19
19
|
* @email djonnyx@gmail.com
|
|
20
20
|
*/
|
|
@@ -61,7 +61,7 @@ export class NgScrollBarComponent extends NgScrollView {
|
|
|
61
61
|
this._$scrollbarMinSize.next(v);
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
-
get scrollbarMinSize() { return this._$
|
|
64
|
+
get scrollbarMinSize() { return this._$scrollbarMinSize.getValue(); }
|
|
65
65
|
_$prepared = new BehaviorSubject(false);
|
|
66
66
|
$prepared = this._$prepared.asObservable();
|
|
67
67
|
set prepared(v) {
|
|
@@ -70,14 +70,6 @@ export class NgScrollBarComponent extends NgScrollView {
|
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
get prepared() { return this._$prepared.getValue(); }
|
|
73
|
-
_$langTextDir = new BehaviorSubject(DEFAULT_LANG_TEXT_DIR);
|
|
74
|
-
$langTextDir = this._$langTextDir.asObservable();
|
|
75
|
-
set langTextDir(v) {
|
|
76
|
-
if (this._$langTextDir.getValue() !== v) {
|
|
77
|
-
this._$langTextDir.next(v);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
get langTextDir() { return this._$langTextDir.getValue(); }
|
|
81
73
|
_$interactive = new BehaviorSubject(DEFAULT_SCROLLBAR_INTERACTIVE);
|
|
82
74
|
$interactive = this._$interactive.asObservable();
|
|
83
75
|
set interactive(v) {
|
|
@@ -244,7 +236,7 @@ export class NgScrollBarComponent extends NgScrollView {
|
|
|
244
236
|
})).subscribe();
|
|
245
237
|
}
|
|
246
238
|
createDragEvent(userAction) {
|
|
247
|
-
const isVertical = this._$isVertical.getValue(), scrollSize = isVertical ? this.scrollHeight : this.scrollWidth, scrollPosition = isVertical ? this.
|
|
239
|
+
const isVertical = this._$isVertical.getValue(), scrollSize = isVertical ? this.scrollHeight : this.scrollWidth, scrollPosition = isVertical ? this.y : this.x, startOffset = this.startOffset, endOffset = this.endOffset, scrollContent = this.scrollContent?.nativeElement, scrollViewport = this.scrollViewport?.nativeElement;
|
|
248
240
|
if (!!scrollViewport && !!scrollContent) {
|
|
249
241
|
const contentSize = isVertical ? scrollContent.offsetHeight : scrollContent.offsetWidth, viewportSize = isVertical ? scrollViewport.offsetHeight : scrollViewport.offsetWidth, offsetSize = (scrollSize !== 0 ? (startOffset / scrollSize) : 0), positionSize = (scrollSize !== 0 ? (scrollPosition / scrollSize) : 0), maxSize = 1 - offsetSize, pos = (positionSize - offsetSize);
|
|
250
242
|
const event = {
|
|
@@ -272,7 +264,7 @@ export class NgScrollBarComponent extends NgScrollView {
|
|
|
272
264
|
this._scrollBarService.click(event);
|
|
273
265
|
}
|
|
274
266
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgScrollBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
275
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NgScrollBarComponent, selector: "ng-scroll-bar", inputs: { loading: "loading", thumbGradientPositions: "thumbGradientPositions", size: "size", thickness: "thickness", scrollbarMinSize: "scrollbarMinSize", prepared: "prepared",
|
|
267
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NgScrollBarComponent, selector: "ng-scroll-bar", inputs: { loading: "loading", thumbGradientPositions: "thumbGradientPositions", size: "size", thickness: "thickness", scrollbarMinSize: "scrollbarMinSize", prepared: "prepared", interactive: "interactive", overlapping: "overlapping", show: "show", params: "params", renderer: "renderer" }, outputs: { onDrag: "onDrag", onDragEnd: "onDragEnd" }, providers: [
|
|
276
268
|
{ provide: SCROLL_VIEW_INVERSION, useValue: true },
|
|
277
269
|
{ provide: SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO, useValue: false },
|
|
278
270
|
{ provide: SCROLL_VIEW_OVERSCROLL_ENABLED, useValue: false },
|
|
@@ -308,8 +300,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
308
300
|
type: Input
|
|
309
301
|
}], prepared: [{
|
|
310
302
|
type: Input
|
|
311
|
-
}], langTextDir: [{
|
|
312
|
-
type: Input
|
|
313
303
|
}], interactive: [{
|
|
314
304
|
type: Input
|
|
315
305
|
}], overlapping: [{
|
|
@@ -321,4 +311,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
321
311
|
}], renderer: [{
|
|
322
312
|
type: Input
|
|
323
313
|
}] } });
|
|
324
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2Nyb2xsLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbC1iYXIvbmctc2Nyb2xsLWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbC1iYXIvbmctc2Nyb2xsLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoSyxPQUFPLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFeEUsT0FBTyxFQUNMLHFCQUFxQixFQUFFLDZCQUE2QixFQUFFLDZCQUE2QixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQ3RILGlCQUFpQixFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsS0FBSyxHQUM3RCxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0wsa0NBQWtDLEVBQ2xDLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxVQUFV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LEVBQUUsOEJBQThCLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtZQUM1RCxrQkFBa0I7WUFDbEIsd0JBQXdCO1NBQ3pCLDBIQU1xQyxDQUFBLFdBQWdCLENBQUEsb0RDMUN4RCxpeUJBWWM7OzRGRDZCRCxvQkFBb0I7a0JBYmhDLFNBQVM7K0JBQ0UsZUFBZSxhQUNkO3dCQUNULEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7d0JBQ2xELEVBQUUsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7d0JBQ25FLEVBQUUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7d0JBQzVELGtCQUFrQjt3QkFDbEIsd0JBQXdCO3FCQUN6QixjQUNXLEtBQUs7d0RBTVAsZ0JBQWdCO3NCQUR6QixTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUEsV0FBZ0IsQ0FBQSxFQUFFO2dCQVdwRCxPQUFPO3NCQURWLEtBQUs7Z0JBT04sTUFBTTtzQkFETCxNQUFNO2dCQUlQLFNBQVM7c0JBRFIsTUFBTTtnQkFPSCxzQkFBc0I7c0JBRHpCLEtBQUs7Z0JBWUYsSUFBSTtzQkFEUCxLQUFLO2dCQVlGLFNBQVM7c0JBRFosS0FBSztnQkFZRixnQkFBZ0I7c0JBRG5CLEtBQUs7Z0JBWUYsUUFBUTtzQkFEWCxLQUFLO2dCQVlGLFdBQVc7c0JBRGQsS0FBSztnQkFZRixXQUFXO3NCQURkLEtBQUs7Z0JBWUYsV0FBVztzQkFEZCxLQUFLO2dCQVlGLElBQUk7c0JBRFAsS0FBSztnQkFZRixNQUFNO3NCQURULEtBQUs7Z0JBWUYsUUFBUTtzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgZnJvbUV2ZW50LCBvZiwgc3RhcnRXaXRoLCBTdWJqZWN0LCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEdyYWRpZW50Q29sb3JQb3NpdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcy9ncmFkaWVudC1jb2xvci1wb3NpdGlvbnMnO1xyXG5pbXBvcnQgeyBOZ1Njcm9sbFZpZXcsIFNDUk9MTF9WSUVXX0lOVkVSU0lPTiB9IGZyb20gJy4uL25nLXNjcm9sbC12aWV3JztcclxuaW1wb3J0IHsgSVNjcm9sbEJhckRyYWdFdmVudCwgSVNjcm9sbEJhclRlbXBsYXRlQ29udGV4dCB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7XHJcbiAgREVGQVVMVF9MQU5HX1RFWFRfRElSLCBERUZBVUxUX09WRVJMQVBQSU5HX1NDUk9MTEJBUiwgREVGQVVMVF9TQ1JPTExCQVJfSU5URVJBQ1RJVkUsIExFRlQsIFBPU0lUSU9OLCBQT1NJVElPTl9BQlNPTFVURSxcclxuICBQT1NJVElPTl9SRUxBVElWRSwgUklHSFQsIFNJWkVfMTAwX1BFUlNFTlQsIFNJWkVfQVVUTywgVU5TRVQsXHJcbn0gZnJvbSAnLi4vLi4vY29uc3QnO1xyXG5pbXBvcnQge1xyXG4gIERFRkFVTFRfU0NST0xMQkFSX1RFTVBMQVRFX0NPTlRFWFQsXHJcbiAgREVGQVVMVF9TSVpFLCBERUZBVUxUX1RISUNLTkVTUywgSEVJR0hULCBOT05FLCBPUEFDSVRZLCBPUEFDSVRZXzAsIE9QQUNJVFlfMSwgUFgsIFRSQU5TSVRJT04sIFRSQU5TSVRJT05fRkFERV9JTiwgV0lEVEgsXHJcbn0gZnJvbSAnLi9jb25zdCc7XHJcbmltcG9ydCB7IFNDUk9MTF9WSUVXX05PUk1BTElaRV9WQUxVRV9GUk9NX1pFUk8sIFNDUk9MTF9WSUVXX09WRVJTQ1JPTExfRU5BQkxFRCB9IGZyb20gJy4uL25nLXNjcm9sbC12aWV3L2NvbnN0JztcclxuaW1wb3J0IHsgTmdTY3JvbGxCYXJTZXJ2aWNlIH0gZnJvbSAnLi9uZy1zY3JvbGwtYmFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOZ1Njcm9sbEJhclB1YmxpY1NlcnZpY2UgfSBmcm9tICcuL25nLXNjcm9sbC1iYXItcHVibGljLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTY3JvbGxiYXJTdGF0ZXMgfSBmcm9tICcuL2VudW1zJztcclxuaW1wb3J0IHsgVGV4dERpcmVjdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzJztcclxuaW1wb3J0IHsgVGV4dERpcmVjdGlvbnMgfSBmcm9tICcuLi8uLi9lbnVtcyc7XHJcblxyXG4vKipcclxuICogU2Nyb2xsQmFyIGNvbXBvbmVudC5cclxuICogTWF4aW11bSBwZXJmb3JtYW5jZSBmb3IgZXh0cmVtZWx5IGxhcmdlIGxpc3RzLlxyXG4gKiBJdCBpcyBiYXNlZCBvbiBhbGdvcml0aG1zIGZvciB2aXJ0dWFsaXphdGlvbiBvZiBzY3JlZW4gb2JqZWN0cy5cclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTcueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbC1iYXIvbmctc2Nyb2xsLWJhci5jb21wb25lbnQudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEFsZXhhbmRyb3ZpY2ggR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25nLXNjcm9sbC1iYXInLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgeyBwcm92aWRlOiBTQ1JPTExfVklFV19JTlZFUlNJT04sIHVzZVZhbHVlOiB0cnVlIH0sXHJcbiAgICB7IHByb3ZpZGU6IFNDUk9MTF9WSUVXX05PUk1BTElaRV9WQUxVRV9GUk9NX1pFUk8sIHVzZVZhbHVlOiBmYWxzZSB9LFxyXG4gICAgeyBwcm92aWRlOiBTQ1JPTExfVklFV19PVkVSU0NST0xMX0VOQUJMRUQsIHVzZVZhbHVlOiBmYWxzZSB9LFxyXG4gICAgTmdTY3JvbGxCYXJTZXJ2aWNlLFxyXG4gICAgTmdTY3JvbGxCYXJQdWJsaWNTZXJ2aWNlLFxyXG4gIF0sXHJcbiAgc3RhbmRhbG9uZTogZmFsc2UsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25nLXNjcm9sbC1iYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25nLXNjcm9sbC1iYXIuY29tcG9uZW50LnNjc3MnLF1cclxufSlcclxuZXhwb3J0IGNsYXNzIE5nU2Nyb2xsQmFyQ29tcG9uZW50IGV4dGVuZHMgTmdTY3JvbGxWaWV3IHtcclxuICBAVmlld0NoaWxkKCdkZWZhdWx0UmVuZGVyZXInLCB7IHJlYWQ6IFRlbXBsYXRlUmVmPGFueT4gfSlcclxuICBwcm90ZWN0ZWQgX2RlZmF1bHRSZW5kZXJlcjogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgcHJvdGVjdGVkIF9zY3JvbGxCYXJTZXJ2aWNlID0gaW5qZWN0KE5nU2Nyb2xsQmFyU2VydmljZSk7XHJcblxyXG4gIHByaXZhdGUgX2FwaVNlcnZpY2UgPSBpbmplY3QoTmdTY3JvbGxCYXJQdWJsaWNTZXJ2aWNlKTtcclxuXHJcbiAgcHJpdmF0ZSBfJGxvYWRpbmcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICByZWFkb25seSAkbG9hZGluZyA9IHRoaXMuXyRsb2FkaW5nLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBsb2FkaW5nKHY6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuXyRsb2FkaW5nLm5leHQodik7XHJcbiAgfVxyXG4gIGdldCBsb2FkaW5nKCkgeyByZXR1cm4gdGhpcy5fJGxvYWRpbmcuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBAT3V0cHV0KClcclxuICBvbkRyYWcgPSBuZXcgRXZlbnRFbWl0dGVyPElTY3JvbGxCYXJEcmFnRXZlbnQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIG9uRHJhZ0VuZCA9IG5ldyBFdmVudEVtaXR0ZXI8SVNjcm9sbEJhckRyYWdFdmVudD4oKTtcclxuXHJcbiAgcHJpdmF0ZSBfJHRodW1iR3JhZGllbnRQb3NpdGlvbnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEdyYWRpZW50Q29sb3JQb3NpdGlvbnM+KFswLCAwXSk7XHJcbiAgcmVhZG9ubHkgJHRodW1iR3JhZGllbnRQb3NpdGlvbnMgPSB0aGlzLl8kdGh1bWJHcmFkaWVudFBvc2l0aW9ucy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgdGh1bWJHcmFkaWVudFBvc2l0aW9ucyh2OiBHcmFkaWVudENvbG9yUG9zaXRpb25zKSB7XHJcbiAgICBpZiAodGhpcy5fJHRodW1iR3JhZGllbnRQb3NpdGlvbnMuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICB0aGlzLl8kdGh1bWJHcmFkaWVudFBvc2l0aW9ucy5uZXh0KHYpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgdGh1bWJHcmFkaWVudFBvc2l0aW9ucygpIHsgcmV0dXJuIHRoaXMuXyR0aHVtYkdyYWRpZW50UG9zaXRpb25zLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJHNpemUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oREVGQVVMVF9TSVpFKTtcclxuICByZWFkb25seSAkc2l6ZSA9IHRoaXMuXyRzaXplLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBzaXplKHY6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMuXyRzaXplLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHNpemUubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHNpemUoKSB7IHJldHVybiB0aGlzLl8kc2l6ZS5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyR0aGlja25lc3MgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oREVGQVVMVF9USElDS05FU1MpO1xyXG4gIHJlYWRvbmx5ICR0aGlja25lc3MgPSB0aGlzLl8kdGhpY2tuZXNzLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCB0aGlja25lc3ModjogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5fJHRoaWNrbmVzcy5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuXyR0aGlja25lc3MubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHRoaWNrbmVzcygpIHsgcmV0dXJuIHRoaXMuXyR0aGlja25lc3MuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBwcml2YXRlIF8kc2Nyb2xsYmFyTWluU2l6ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcclxuICByZWFkb25seSAkc2Nyb2xsYmFyTWluU2l6ZSA9IHRoaXMuXyRzY3JvbGxiYXJNaW5TaXplLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBzY3JvbGxiYXJNaW5TaXplKHY6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMuXyRzY3JvbGxiYXJNaW5TaXplLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHNjcm9sbGJhck1pblNpemUubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHNjcm9sbGJhck1pblNpemUoKSB7IHJldHVybiB0aGlzLl8kZW5kT2Zmc2V0LmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJHByZXBhcmVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcmVhZG9ubHkgJHByZXBhcmVkID0gdGhpcy5fJHByZXBhcmVkLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBwcmVwYXJlZCh2OiBib29sZWFuKSB7XHJcbiAgICBpZiAodGhpcy5fJHByZXBhcmVkLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHByZXBhcmVkLm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBwcmVwYXJlZCgpIHsgcmV0dXJuIHRoaXMuXyRwcmVwYXJlZC5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRsYW5nVGV4dERpciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGV4dERpcmVjdGlvbj4oREVGQVVMVF9MQU5HX1RFWFRfRElSKTtcclxuICByZWFkb25seSAkbGFuZ1RleHREaXIgPSB0aGlzLl8kbGFuZ1RleHREaXIuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGxhbmdUZXh0RGlyKHY6IFRleHREaXJlY3Rpb24pIHtcclxuICAgIGlmICh0aGlzLl8kbGFuZ1RleHREaXIuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICB0aGlzLl8kbGFuZ1RleHREaXIubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IGxhbmdUZXh0RGlyKCkgeyByZXR1cm4gdGhpcy5fJGxhbmdUZXh0RGlyLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJGludGVyYWN0aXZlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihERUZBVUxUX1NDUk9MTEJBUl9JTlRFUkFDVElWRSk7XHJcbiAgcmVhZG9ubHkgJGludGVyYWN0aXZlID0gdGhpcy5fJGludGVyYWN0aXZlLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBpbnRlcmFjdGl2ZSh2OiBib29sZWFuKSB7XHJcbiAgICBpZiAodGhpcy5fJGludGVyYWN0aXZlLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJGludGVyYWN0aXZlLm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBpbnRlcmFjdGl2ZSgpIHsgcmV0dXJuIHRoaXMuXyRpbnRlcmFjdGl2ZS5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRvdmVybGFwcGluZyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oREVGQVVMVF9PVkVSTEFQUElOR19TQ1JPTExCQVIpO1xyXG4gIHJlYWRvbmx5ICRvdmVybGFwcGluZyA9IHRoaXMuXyRvdmVybGFwcGluZy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgb3ZlcmxhcHBpbmcodjogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuXyRvdmVybGFwcGluZy5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuXyRvdmVybGFwcGluZy5uZXh0KHYpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgb3ZlcmxhcHBpbmcoKSB7IHJldHVybiB0aGlzLl8kb3ZlcmxhcHBpbmcuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBwcml2YXRlIF8kc2hvdyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHJlYWRvbmx5ICRzaG93ID0gdGhpcy5fJHNob3cuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHNob3codjogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuXyRzaG93LmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHNob3cubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHNob3coKSB7IHJldHVybiB0aGlzLl8kc2hvdy5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRwYXJhbXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnkgfSB8IG51bGw+KHt9KTtcclxuICByZWFkb25seSAkcGFyYW1zID0gdGhpcy5fJHBhcmFtcy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgcGFyYW1zKHY6IHsgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnkgfSB8IG51bGwpIHtcclxuICAgIGlmICh0aGlzLl8kcGFyYW1zLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHBhcmFtcy5uZXh0KHYpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgcGFyYW1zKCkgeyByZXR1cm4gdGhpcy5fJHBhcmFtcy5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRyZW5kZXJlciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGVtcGxhdGVSZWY8YW55PiB8IG51bGw+KG51bGwpO1xyXG4gIHJlYWRvbmx5ICRyZW5kZXJlciA9IHRoaXMuXyRyZW5kZXJlci5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgcmVuZGVyZXIodjogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwpIHtcclxuICAgIGlmICh0aGlzLl8kcmVuZGVyZXIuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICB0aGlzLl8kcmVuZGVyZXIubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHJlbmRlcmVyKCkgeyByZXR1cm4gdGhpcy5fJHJlbmRlcmVyLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJHRodW1iUmVuZGVyZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPih0aGlzLl9kZWZhdWx0UmVuZGVyZXIgPz8gbnVsbCk7XHJcbiAgcmVhZG9ubHkgJHRodW1iUmVuZGVyZXIgPSB0aGlzLl8kdGh1bWJSZW5kZXJlci5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBfJGhvdmVyU3RhdGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICByZWFkb25seSAkaG92ZXJTdGF0ZSA9IHRoaXMuXyRob3ZlclN0YXRlLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kcHJlc3NlZFN0YXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcmVhZG9ubHkgJHByZXNzZWRTdGF0ZSA9IHRoaXMuXyRwcmVzc2VkU3RhdGUuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyR0ZW1wbGF0ZUNvbnRleHQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElTY3JvbGxCYXJUZW1wbGF0ZUNvbnRleHQ+KERFRkFVTFRfU0NST0xMQkFSX1RFTVBMQVRFX0NPTlRFWFQpO1xyXG4gIHJlYWRvbmx5ICR0ZW1wbGF0ZUNvbnRleHQgPSB0aGlzLl8kdGVtcGxhdGVDb250ZXh0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kc3R5bGVzID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IFtzdHlsZU5hbWU6IHN0cmluZ106IGFueSB9Pih7fSk7XHJcbiAgcmVhZG9ubHkgJHN0eWxlcyA9IHRoaXMuXyRzdHlsZXMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyR0aHVtYldpZHRoID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xyXG4gIHJlYWRvbmx5ICR0aHVtYldpZHRoID0gdGhpcy5fJHRodW1iV2lkdGguYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyR0aHVtYkhlaWdodCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcclxuICByZWFkb25seSAkdGh1bWJIZWlnaHQgPSB0aGlzLl8kdGh1bWJIZWlnaHQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyRzY3JvbGxpbmdDYW5jZWwgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByb3RlY3RlZCByZWFkb25seSAkc2Nyb2xsaW5nQ2FuY2VsID0gdGhpcy5fJHNjcm9sbGluZ0NhbmNlbC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBfZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG5cclxuICAgIGNvbnN0ICR0aHVtYldpZHRoID0gdGhpcy4kdGh1bWJXaWR0aCxcclxuICAgICAgJHRodW1iSGVpZ2h0ID0gdGhpcy4kdGh1bWJIZWlnaHQsXHJcbiAgICAgICR0aHVtYkdyYWRpZW50UG9zaXRpb25zID0gdGhpcy4kdGh1bWJHcmFkaWVudFBvc2l0aW9ucyxcclxuICAgICAgJHBhcmFtcyA9IHRoaXMuJHBhcmFtcztcclxuXHJcbiAgICBjb21iaW5lTGF0ZXN0KFskdGh1bWJXaWR0aCwgJHRodW1iSGVpZ2h0LCAkdGh1bWJHcmFkaWVudFBvc2l0aW9ucywgJHBhcmFtc10pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICBkZWJvdW5jZVRpbWUoMCksXHJcbiAgICAgIHRhcCgoW3RodW1iV2lkdGgsIHRodW1iSGVpZ2h0LCB0aHVtYkdyYWRpZW50UG9zaXRpb25zLCBwYXJhbXNdKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29udGV4dDogSVNjcm9sbEJhclRlbXBsYXRlQ29udGV4dCA9IHtcclxuICAgICAgICAgIGFwaTogdGhpcy5fYXBpU2VydmljZSxcclxuICAgICAgICAgIHdpZHRoOiB0aHVtYldpZHRoLFxyXG4gICAgICAgICAgaGVpZ2h0OiB0aHVtYkhlaWdodCxcclxuICAgICAgICAgIGZpbGxQb3NpdGlvbnM6IHRodW1iR3JhZGllbnRQb3NpdGlvbnMsXHJcbiAgICAgICAgICBwYXJhbXM6IHBhcmFtcyA/PyB7fSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuXyR0ZW1wbGF0ZUNvbnRleHQubmV4dChjb250ZXh0KTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbnN0ICRyZW5kZXJlciA9IHRoaXMuJHJlbmRlcmVyLnBpcGUoXHJcbiAgICAgIHN0YXJ0V2l0aChudWxsKSxcclxuICAgICksXHJcbiAgICAgICRkZWZhdWx0UmVuZGVyZXIgPSBvZih0aGlzLl9kZWZhdWx0UmVuZGVyZXIpO1xyXG5cclxuICAgIGNvbWJpbmVMYXRlc3QoWyRyZW5kZXJlciwgJGRlZmF1bHRSZW5kZXJlcl0pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICBzd2l0Y2hNYXAoKFtyZW5kZXJlciwgZGVmYXVsdFJlbmRlcmVyXSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBvZigocmVuZGVyZXIgPz8gZGVmYXVsdFJlbmRlcmVyKSA/PyBudWxsKTtcclxuICAgICAgfSksXHJcbiAgICAgIGRlYm91bmNlVGltZSgwKSxcclxuICAgICAgdGFwKHYgPT4ge1xyXG4gICAgICAgIHRoaXMuXyR0aHVtYlJlbmRlcmVyLm5leHQodik7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb25zdCAkcHJlcGFyZWQgPSB0aGlzLiRwcmVwYXJlZDtcclxuICAgICRwcmVwYXJlZC5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgZmlsdGVyKHYgPT4gISF2KSxcclxuICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICB0aGlzLnNjcm9sbExpbWl0cygpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaENvb3JkaW5hdGUodGhpcy5feCwgdGhpcy5feSk7XHJcbiAgICAgICAgdGhpcy5maXJlU2Nyb2xsRXZlbnQoZmFsc2UpO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy4kaXNWZXJ0aWNhbCwgdGhpcy4kdGhpY2tuZXNzLCB0aGlzLiRzaXplXSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIHRhcCgoW2lzVmVydGljYWwsIHRoaWNrbmVzcywgc2l6ZV0pID0+IHtcclxuICAgICAgICB0aGlzLl8kdGh1bWJXaWR0aC5uZXh0KGlzVmVydGljYWwgPyB0aGlja25lc3MgOiBzaXplKTtcclxuICAgICAgICB0aGlzLl8kdGh1bWJIZWlnaHQubmV4dChpc1ZlcnRpY2FsID8gc2l6ZSA6IHRoaWNrbmVzcyk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xyXG5cclxuICAgIGNvbnN0ICR3aGVlbCA9IHRoaXMuJHdoZWVsO1xyXG4gICAgJHdoZWVsLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICBkZWJvdW5jZVRpbWUoMTAwKSxcclxuICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICBjb25zdCBldmVudCA9IHRoaXMuY3JlYXRlRHJhZ0V2ZW50KHRydWUpO1xyXG4gICAgICAgIGlmICghIWV2ZW50KSB7XHJcbiAgICAgICAgICB0aGlzLm9uRHJhZ0VuZC5lbWl0KGV2ZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb25zdCAkcG9pbnRlckRvd24gPSBmcm9tRXZlbnQ8UG9pbnRlckV2ZW50Pih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdwb2ludGVyZG93bicpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgKSwgJHBvaW50ZXJVcCA9IGZyb21FdmVudDxQb2ludGVyRXZlbnQ+KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3BvaW50ZXJ1cCcpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgKSwgJGRvY1BvaW50ZXJVcCA9IGZyb21FdmVudDxQb2ludGVyRXZlbnQ+KGRvY3VtZW50LCAncG9pbnRlcnVwJykucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICApLCAkcG9pbnRlckVudGVyID0gZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAncG9pbnRlcmVudGVyJykucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICApLCAkcG9pbnRlckxlYXZlID0gZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAncG9pbnRlcmxlYXZlJykucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICApO1xyXG5cclxuICAgICRwb2ludGVyRG93bi5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgdGFwKGUgPT4ge1xyXG4gICAgICAgIHRoaXMuXyRwcmVzc2VkU3RhdGUubmV4dCh0aGlzLnRodW1iSGl0KGUuY2xpZW50WCwgZS5jbGllbnRZKSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb21iaW5lTGF0ZXN0KFskZG9jUG9pbnRlclVwLCAkcG9pbnRlclVwXSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fJHByZXNzZWRTdGF0ZS5uZXh0KGZhbHNlKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgICRwb2ludGVyRW50ZXIucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fJGhvdmVyU3RhdGUubmV4dCh0cnVlKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgICRwb2ludGVyTGVhdmUucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fJGhvdmVyU3RhdGUubmV4dChmYWxzZSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb25zdCAkcHJlc3NlZFN0YXRlID0gdGhpcy4kcHJlc3NlZFN0YXRlLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgKSwgJGhvdmVyU3RhdGUgPSB0aGlzLiRob3ZlclN0YXRlLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgKTtcclxuXHJcbiAgICBjb21iaW5lTGF0ZXN0KFtcclxuICAgICAgJHByZXNzZWRTdGF0ZSwgJGhvdmVyU3RhdGUsXHJcbiAgICBdKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgZGVib3VuY2VUaW1lKDApLFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICB0YXAoKFtwcmVzc2VkLCBob3Zlcl0pID0+IHtcclxuICAgICAgICBpZiAocHJlc3NlZCkge1xyXG4gICAgICAgICAgdGhpcy5fc2Nyb2xsQmFyU2VydmljZS5zdGF0ZSA9IFNjcm9sbGJhclN0YXRlcy5QUkVTU0VEO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaG92ZXIpIHtcclxuICAgICAgICAgIHRoaXMuX3Njcm9sbEJhclNlcnZpY2Uuc3RhdGUgPSBTY3JvbGxiYXJTdGF0ZXMuSE9WRVI7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3Njcm9sbEJhclNlcnZpY2Uuc3RhdGUgPSBTY3JvbGxiYXJTdGF0ZXMuTk9STUFMO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMuJHNpemUucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIHRhcCh2ID0+IHtcclxuICAgICAgICB0aGlzLnRvdGFsU2l6ZSA9IHY7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICB0aGlzLiRpbnRlcmFjdGl2ZS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgdGFwKHYgPT4ge1xyXG4gICAgICAgIHRoaXMuaW50ZXJhY3RpdmUgPSB2O1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy4kc2hvdywgdGhpcy4kaXNWZXJ0aWNhbCwgdGhpcy4kdGhpY2tuZXNzXSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIHRhcCgoW3Nob3csIGlzVmVydGljYWwsIHRoaWNrbmVzc10pID0+IHtcclxuICAgICAgICBjb25zdCBzaXplUHJvcE5hbWUgPSBpc1ZlcnRpY2FsID8gV0lEVEggOiBIRUlHSFQ7XHJcbiAgICAgICAgdGhpcy5fJHN0eWxlcy5uZXh0KHtcclxuICAgICAgICAgIFtzaXplUHJvcE5hbWVdOiBgJHtzaG93ID8gdGhpY2tuZXNzIDogMH0ke1BYfWAsXHJcbiAgICAgICAgICBbT1BBQ0lUWV06IHNob3cgPyBPUEFDSVRZXzEgOiBPUEFDSVRZXzAsIFtUUkFOU0lUSU9OXTogc2hvdyA/IFRSQU5TSVRJT05fRkFERV9JTiA6IE5PTkUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb25zdCAkb3ZlcmxhcHBpbmcgPSB0aGlzLiRvdmVybGFwcGluZywgJGxhbmdUZXh0RGlyID0gdGhpcy4kbGFuZ1RleHREaXI7XHJcbiAgICBjb21iaW5lTGF0ZXN0KFskb3ZlcmxhcHBpbmcsICRsYW5nVGV4dERpcl0pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICB0YXAoKFtvdmVybGFwcGluZywgbGFuZ1RleHREaXJdKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZWwgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgaWYgKCEhZWwpIHtcclxuICAgICAgICAgIGVsLnN0eWxlW1BPU0lUSU9OXSA9IG92ZXJsYXBwaW5nID8gUE9TSVRJT05fQUJTT0xVVEUgOiBQT1NJVElPTl9SRUxBVElWRTtcclxuICAgICAgICAgIGVsLnN0eWxlW0xFRlRdID0gb3ZlcmxhcHBpbmcgJiYgbGFuZ1RleHREaXIgPT09IFRleHREaXJlY3Rpb25zLlJUTCA/ICcwJyA6IFVOU0VUO1xyXG4gICAgICAgICAgZWwuc3R5bGVbUklHSFRdID0gb3ZlcmxhcHBpbmcgJiYgbGFuZ1RleHREaXIgPT09IFRleHREaXJlY3Rpb25zLkxUUiA/ICcwJyA6IFVOU0VUO1xyXG4gICAgICAgICAgZWwuc3R5bGVbV0lEVEhdID0gb3ZlcmxhcHBpbmcgPyBTSVpFX0FVVE8gOiBTSVpFXzEwMF9QRVJTRU5UO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMuJHNjcm9sbC5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgdGFwKHYgPT4ge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50ID0gdGhpcy5jcmVhdGVEcmFnRXZlbnQodik7XHJcbiAgICAgICAgaWYgKCEhZXZlbnQpIHtcclxuICAgICAgICAgIHRoaXMub25EcmFnLmVtaXQoZXZlbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbnN0ICRzY3JvbGxFbmQgPSB0aGlzLiRzY3JvbGxFbmQ7XHJcbiAgICAkc2Nyb2xsRW5kLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICB0YXAodXNlckFjdGlvbiA9PiB7XHJcbiAgICAgICAgY29uc3QgZXZlbnQgPSB0aGlzLmNyZWF0ZURyYWdFdmVudCh1c2VyQWN0aW9uKTtcclxuICAgICAgICBpZiAoISFldmVudCkge1xyXG4gICAgICAgICAgdGhpcy5vbkRyYWdFbmQuZW1pdChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29uc3QgJHJlbmRlcmVyID0gdGhpcy4kcmVuZGVyZXIsICRkZWZhdWx0UmVuZGVyZXIgPSBvZih0aGlzLl9kZWZhdWx0UmVuZGVyZXIpO1xyXG4gICAgY29tYmluZUxhdGVzdChbJHJlbmRlcmVyLCAkZGVmYXVsdFJlbmRlcmVyXSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRlYm91bmNlVGltZSgwKSxcclxuICAgICAgdGFwKChbcmVuZGVyZXIsIGRlZmF1bHRSZW5kZXJlcl0pID0+IHtcclxuICAgICAgICB0aGlzLl8kdGh1bWJSZW5kZXJlci5uZXh0KHJlbmRlcmVyIHx8IGRlZmF1bHRSZW5kZXJlciB8fCBudWxsKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVEcmFnRXZlbnQodXNlckFjdGlvbjogYm9vbGVhbikge1xyXG4gICAgY29uc3QgaXNWZXJ0aWNhbCA9IHRoaXMuXyRpc1ZlcnRpY2FsLmdldFZhbHVlKCksIHNjcm9sbFNpemUgPSBpc1ZlcnRpY2FsID8gdGhpcy5zY3JvbGxIZWlnaHQgOiB0aGlzLnNjcm9sbFdpZHRoLFxyXG4gICAgICBzY3JvbGxQb3NpdGlvbiA9IGlzVmVydGljYWwgPyB0aGlzLnNjcm9sbFRvcCA6IHRoaXMuc2Nyb2xsTGVmdCxcclxuICAgICAgc3RhcnRPZmZzZXQgPSB0aGlzLnN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQgPSB0aGlzLmVuZE9mZnNldCxcclxuICAgICAgc2Nyb2xsQ29udGVudCA9IHRoaXMuc2Nyb2xsQ29udGVudD8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCxcclxuICAgICAgc2Nyb2xsVmlld3BvcnQgPSB0aGlzLnNjcm9sbFZpZXdwb3J0Py5uYXRpdmVFbGVtZW50IGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gICAgaWYgKCEhc2Nyb2xsVmlld3BvcnQgJiYgISFzY3JvbGxDb250ZW50KSB7XHJcbiAgICAgIGNvbnN0IGNvbnRlbnRTaXplID0gaXNWZXJ0aWNhbCA/IHNjcm9sbENvbnRlbnQub2Zmc2V0SGVpZ2h0IDogc2Nyb2xsQ29udGVudC5vZmZzZXRXaWR0aCxcclxuICAgICAgICB2aWV3cG9ydFNpemUgPSBpc1ZlcnRpY2FsID8gc2Nyb2xsVmlld3BvcnQub2Zmc2V0SGVpZ2h0IDogc2Nyb2xsVmlld3BvcnQub2Zmc2V0V2lkdGgsXHJcbiAgICAgICAgb2Zmc2V0U2l6ZSA9IChzY3JvbGxTaXplICE9PSAwID8gKHN0YXJ0T2Zmc2V0IC8gc2Nyb2xsU2l6ZSkgOiAwKSxcclxuICAgICAgICBwb3NpdGlvblNpemUgPSAoc2Nyb2xsU2l6ZSAhPT0gMCA/IChzY3JvbGxQb3NpdGlvbiAvIHNjcm9sbFNpemUpIDogMCksXHJcbiAgICAgICAgbWF4U2l6ZSA9IDEgLSBvZmZzZXRTaXplLFxyXG4gICAgICAgIHBvcyA9IChwb3NpdGlvblNpemUgLSBvZmZzZXRTaXplKTtcclxuICAgICAgY29uc3QgZXZlbnQ6IElTY3JvbGxCYXJEcmFnRXZlbnQgPSB7XHJcbiAgICAgICAgcG9zaXRpb246IHBvcyAvIG1heFNpemUsXHJcbiAgICAgICAgbWluOiBzY3JvbGxTaXplICE9PSAwID8gKHN0YXJ0T2Zmc2V0IC8gc2Nyb2xsU2l6ZSkgOiAwLFxyXG4gICAgICAgIG1heDogc2Nyb2xsU2l6ZSAhPT0gMCA/ICgodmlld3BvcnRTaXplIC0gZW5kT2Zmc2V0IC0gY29udGVudFNpemUpIC8gc2Nyb2xsU2l6ZSkgOiAwLFxyXG4gICAgICAgIGFuaW1hdGlvbjogIXRoaXMuX2lzTW92aW5nLFxyXG4gICAgICAgIHVzZXJBY3Rpb24sXHJcbiAgICAgIH07XHJcbiAgICAgIHJldHVybiBldmVudDtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0aHVtYkhpdCh4OiBudW1iZXIsIHk6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgdGh1bWIgPSB0aGlzLnNjcm9sbENvbnRlbnQ/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBpZiAoISF0aHVtYikge1xyXG4gICAgICBjb25zdCB7IHg6IHRYLCB5OiB0WSwgd2lkdGg6IHRXaWR0aCwgaGVpZ2h0OiB0SGVpZ2h0IH0gPSB0aHVtYi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgaWYgKCh4ID49IHRYICYmIHggPD0gdFggKyB0V2lkdGgpICYmICh5ID49IHRZICYmIHkgPD0gdFkgKyB0SGVpZ2h0KSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjbGljayhldmVudDogUG9pbnRlckV2ZW50IHwgTW91c2VFdmVudCkge1xyXG4gICAgdGhpcy5fc2Nyb2xsQmFyU2VydmljZS5jbGljayhldmVudCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgI3Njcm9sbFZpZXdwb3J0IGNsYXNzPVwidHJhY2tcIiBwYXJ0PVwic2Nyb2xsYmFyLXRyYWNrXCIgW25nU3R5bGVdPVwiJHN0eWxlcyB8IGFzeW5jXCJcclxuICAgIFtuZ0NsYXNzXT1cIntncmFiYmluZzogJGdyYWJiaW5nIHwgYXN5bmN9XCI+XHJcbiAgICA8ZGl2ICNzY3JvbGxDb250ZW50IGNsYXNzPVwidGh1bWJcIiBwYXJ0PVwic2Nyb2xsYmFyLXRodW1iXCIgW2NsYXNzLmhvcml6b250YWxdPVwiKCRpc1ZlcnRpY2FsIHwgYXN5bmMpISA9PSBmYWxzZVwiXHJcbiAgICAgICAgKHBvaW50ZXJkb3duKT1cImNsaWNrKCRldmVudClcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIigkdGh1bWJSZW5kZXJlciB8IGFzeW5jKSFcIlxyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiKCR0ZW1wbGF0ZUNvbnRleHQgfCBhc3luYykhXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2RlZmF1bHRSZW5kZXJlciBsZXQtYXBpPVwiYXBpXCIgbGV0LXdpZHRoPVwid2lkdGhcIiBsZXQtaGVpZ2h0PVwiaGVpZ2h0XCIgbGV0LWZpbGxQb3NpdGlvbnM9XCJmaWxsUG9zaXRpb25zXCJcclxuICAgIGxldC1wYXJhbXM9XCJwYXJhbXNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGFwZVwiIHBhcnQ9XCJzY3JvbGxiYXItdGh1bWJfX3NoYXBlXCIgW3N0eWxlLndpZHRoLnB4XT1cIndpZHRoXCIgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRcIj48L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
314
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2Nyb2xsLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbC1iYXIvbmctc2Nyb2xsLWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbC1iYXIvbmctc2Nyb2xsLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoSyxPQUFPLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFeEUsT0FBTyxFQUNMLDZCQUE2QixFQUFFLDZCQUE2QixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQy9GLGlCQUFpQixFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsS0FBSyxHQUM3RCxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0wsa0NBQWtDLEVBQ2xDLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsa0JBQWtC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cUJBQ3pCLGNBQ1csS0FBSzt3REFNUCxnQkFBZ0I7c0JBRHpCLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQSxXQUFnQixDQUFBLEVBQUU7Z0JBV3BELE9BQU87c0JBRFYsS0FBSztnQkFPTixNQUFNO3NCQURMLE1BQU07Z0JBSVAsU0FBUztzQkFEUixNQUFNO2dCQU9ILHNCQUFzQjtzQkFEekIsS0FBSztnQkFZRixJQUFJO3NCQURQLEtBQUs7Z0JBWUYsU0FBUztzQkFEWixLQUFLO2dCQVlGLGdCQUFnQjtzQkFEbkIsS0FBSztnQkFZRixRQUFRO3NCQURYLEtBQUs7Z0JBWUYsV0FBVztzQkFEZCxLQUFLO2dCQVlGLFdBQVc7c0JBRGQsS0FBSztnQkFZRixJQUFJO3NCQURQLEtBQUs7Z0JBWUYsTUFBTTtzQkFEVCxLQUFLO2dCQVlGLFFBQVE7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIGZyb21FdmVudCwgb2YsIHN0YXJ0V2l0aCwgU3ViamVjdCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBHcmFkaWVudENvbG9yUG9zaXRpb25zIH0gZnJvbSAnLi4vLi4vdHlwZXMvZ3JhZGllbnQtY29sb3ItcG9zaXRpb25zJztcclxuaW1wb3J0IHsgTmdTY3JvbGxWaWV3LCBTQ1JPTExfVklFV19JTlZFUlNJT04gfSBmcm9tICcuLi9uZy1zY3JvbGwtdmlldyc7XHJcbmltcG9ydCB7IElTY3JvbGxCYXJEcmFnRXZlbnQsIElTY3JvbGxCYXJUZW1wbGF0ZUNvbnRleHQgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQge1xyXG4gIERFRkFVTFRfT1ZFUkxBUFBJTkdfU0NST0xMQkFSLCBERUZBVUxUX1NDUk9MTEJBUl9JTlRFUkFDVElWRSwgTEVGVCwgUE9TSVRJT04sIFBPU0lUSU9OX0FCU09MVVRFLFxyXG4gIFBPU0lUSU9OX1JFTEFUSVZFLCBSSUdIVCwgU0laRV8xMDBfUEVSU0VOVCwgU0laRV9BVVRPLCBVTlNFVCxcclxufSBmcm9tICcuLi8uLi9jb25zdCc7XHJcbmltcG9ydCB7XHJcbiAgREVGQVVMVF9TQ1JPTExCQVJfVEVNUExBVEVfQ09OVEVYVCxcclxuICBERUZBVUxUX1NJWkUsIERFRkFVTFRfVEhJQ0tORVNTLCBIRUlHSFQsIE5PTkUsIE9QQUNJVFksIE9QQUNJVFlfMCwgT1BBQ0lUWV8xLCBQWCwgVFJBTlNJVElPTiwgVFJBTlNJVElPTl9GQURFX0lOLCBXSURUSCxcclxufSBmcm9tICcuL2NvbnN0JztcclxuaW1wb3J0IHsgU0NST0xMX1ZJRVdfTk9STUFMSVpFX1ZBTFVFX0ZST01fWkVSTywgU0NST0xMX1ZJRVdfT1ZFUlNDUk9MTF9FTkFCTEVEIH0gZnJvbSAnLi4vbmctc2Nyb2xsLXZpZXcvY29uc3QnO1xyXG5pbXBvcnQgeyBOZ1Njcm9sbEJhclNlcnZpY2UgfSBmcm9tICcuL25nLXNjcm9sbC1iYXIuc2VydmljZSc7XHJcbmltcG9ydCB7IE5nU2Nyb2xsQmFyUHVibGljU2VydmljZSB9IGZyb20gJy4vbmctc2Nyb2xsLWJhci1wdWJsaWMuc2VydmljZSc7XHJcbmltcG9ydCB7IFNjcm9sbGJhclN0YXRlcyB9IGZyb20gJy4vZW51bXMnO1xyXG5pbXBvcnQgeyBUZXh0RGlyZWN0aW9ucyB9IGZyb20gJy4uLy4uL2VudW1zJztcclxuXHJcbi8qKlxyXG4gKiBTY3JvbGxCYXIgY29tcG9uZW50LlxyXG4gKiBNYXhpbXVtIHBlcmZvcm1hbmNlIGZvciBleHRyZW1lbHkgbGFyZ2UgbGlzdHMuXHJcbiAqIEl0IGlzIGJhc2VkIG9uIGFsZ29yaXRobXMgZm9yIHZpcnR1YWxpemF0aW9uIG9mIHNjcmVlbiBvYmplY3RzLlxyXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vRGpvbm55WC9uZy12aXJ0dWFsLWxpc3QvYmxvYi8xNC54L3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctc2Nyb2xsLWJhci9uZy1zY3JvbGwtYmFyLmNvbXBvbmVudC50c1xyXG4gKiBAYXV0aG9yIEV2Z2VuaWkgQWxleGFuZHJvdmljaCBHcmViZW5uaWtvdlxyXG4gKiBAZW1haWwgZGpvbm55eEBnbWFpbC5jb21cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmctc2Nyb2xsLWJhcicsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7IHByb3ZpZGU6IFNDUk9MTF9WSUVXX0lOVkVSU0lPTiwgdXNlVmFsdWU6IHRydWUgfSxcclxuICAgIHsgcHJvdmlkZTogU0NST0xMX1ZJRVdfTk9STUFMSVpFX1ZBTFVFX0ZST01fWkVSTywgdXNlVmFsdWU6IGZhbHNlIH0sXHJcbiAgICB7IHByb3ZpZGU6IFNDUk9MTF9WSUVXX09WRVJTQ1JPTExfRU5BQkxFRCwgdXNlVmFsdWU6IGZhbHNlIH0sXHJcbiAgICBOZ1Njcm9sbEJhclNlcnZpY2UsXHJcbiAgICBOZ1Njcm9sbEJhclB1YmxpY1NlcnZpY2UsXHJcbiAgXSxcclxuICBzdGFuZGFsb25lOiBmYWxzZSxcclxuICB0ZW1wbGF0ZVVybDogJy4vbmctc2Nyb2xsLWJhci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbmctc2Nyb2xsLWJhci5jb21wb25lbnQuc2NzcycsXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmdTY3JvbGxCYXJDb21wb25lbnQgZXh0ZW5kcyBOZ1Njcm9sbFZpZXcge1xyXG4gIEBWaWV3Q2hpbGQoJ2RlZmF1bHRSZW5kZXJlcicsIHsgcmVhZDogVGVtcGxhdGVSZWY8YW55PiB9KVxyXG4gIHByb3RlY3RlZCBfZGVmYXVsdFJlbmRlcmVyOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG5cclxuICBwcm90ZWN0ZWQgX3Njcm9sbEJhclNlcnZpY2UgPSBpbmplY3QoTmdTY3JvbGxCYXJTZXJ2aWNlKTtcclxuXHJcbiAgcHJpdmF0ZSBfYXBpU2VydmljZSA9IGluamVjdChOZ1Njcm9sbEJhclB1YmxpY1NlcnZpY2UpO1xyXG5cclxuICBwcml2YXRlIF8kbG9hZGluZyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHJlYWRvbmx5ICRsb2FkaW5nID0gdGhpcy5fJGxvYWRpbmcuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGxvYWRpbmcodjogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fJGxvYWRpbmcubmV4dCh2KTtcclxuICB9XHJcbiAgZ2V0IGxvYWRpbmcoKSB7IHJldHVybiB0aGlzLl8kbG9hZGluZy5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIG9uRHJhZyA9IG5ldyBFdmVudEVtaXR0ZXI8SVNjcm9sbEJhckRyYWdFdmVudD4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgb25EcmFnRW5kID0gbmV3IEV2ZW50RW1pdHRlcjxJU2Nyb2xsQmFyRHJhZ0V2ZW50PigpO1xyXG5cclxuICBwcml2YXRlIF8kdGh1bWJHcmFkaWVudFBvc2l0aW9ucyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8R3JhZGllbnRDb2xvclBvc2l0aW9ucz4oWzAsIDBdKTtcclxuICByZWFkb25seSAkdGh1bWJHcmFkaWVudFBvc2l0aW9ucyA9IHRoaXMuXyR0aHVtYkdyYWRpZW50UG9zaXRpb25zLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCB0aHVtYkdyYWRpZW50UG9zaXRpb25zKHY6IEdyYWRpZW50Q29sb3JQb3NpdGlvbnMpIHtcclxuICAgIGlmICh0aGlzLl8kdGh1bWJHcmFkaWVudFBvc2l0aW9ucy5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuXyR0aHVtYkdyYWRpZW50UG9zaXRpb25zLm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCB0aHVtYkdyYWRpZW50UG9zaXRpb25zKCkgeyByZXR1cm4gdGhpcy5fJHRodW1iR3JhZGllbnRQb3NpdGlvbnMuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBwcml2YXRlIF8kc2l6ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPihERUZBVUxUX1NJWkUpO1xyXG4gIHJlYWRvbmx5ICRzaXplID0gdGhpcy5fJHNpemUuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHNpemUodjogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5fJHNpemUuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICB0aGlzLl8kc2l6ZS5uZXh0KHYpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgc2l6ZSgpIHsgcmV0dXJuIHRoaXMuXyRzaXplLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJHRoaWNrbmVzcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPihERUZBVUxUX1RISUNLTkVTUyk7XHJcbiAgcmVhZG9ubHkgJHRoaWNrbmVzcyA9IHRoaXMuXyR0aGlja25lc3MuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHRoaWNrbmVzcyh2OiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLl8kdGhpY2tuZXNzLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHRoaWNrbmVzcy5uZXh0KHYpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgdGhpY2tuZXNzKCkgeyByZXR1cm4gdGhpcy5fJHRoaWNrbmVzcy5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRzY3JvbGxiYXJNaW5TaXplID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xyXG4gIHJlYWRvbmx5ICRzY3JvbGxiYXJNaW5TaXplID0gdGhpcy5fJHNjcm9sbGJhck1pblNpemUuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHNjcm9sbGJhck1pblNpemUodjogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5fJHNjcm9sbGJhck1pblNpemUuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICB0aGlzLl8kc2Nyb2xsYmFyTWluU2l6ZS5uZXh0KHYpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgc2Nyb2xsYmFyTWluU2l6ZSgpIHsgcmV0dXJuIHRoaXMuXyRzY3JvbGxiYXJNaW5TaXplLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJHByZXBhcmVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcmVhZG9ubHkgJHByZXBhcmVkID0gdGhpcy5fJHByZXBhcmVkLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBwcmVwYXJlZCh2OiBib29sZWFuKSB7XHJcbiAgICBpZiAodGhpcy5fJHByZXBhcmVkLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHByZXBhcmVkLm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBwcmVwYXJlZCgpIHsgcmV0dXJuIHRoaXMuXyRwcmVwYXJlZC5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRpbnRlcmFjdGl2ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oREVGQVVMVF9TQ1JPTExCQVJfSU5URVJBQ1RJVkUpO1xyXG4gIHJlYWRvbmx5ICRpbnRlcmFjdGl2ZSA9IHRoaXMuXyRpbnRlcmFjdGl2ZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgaW50ZXJhY3RpdmUodjogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuXyRpbnRlcmFjdGl2ZS5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuXyRpbnRlcmFjdGl2ZS5uZXh0KHYpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgaW50ZXJhY3RpdmUoKSB7IHJldHVybiB0aGlzLl8kaW50ZXJhY3RpdmUuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBwcml2YXRlIF8kb3ZlcmxhcHBpbmcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KERFRkFVTFRfT1ZFUkxBUFBJTkdfU0NST0xMQkFSKTtcclxuICByZWFkb25seSAkb3ZlcmxhcHBpbmcgPSB0aGlzLl8kb3ZlcmxhcHBpbmcuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IG92ZXJsYXBwaW5nKHY6IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aGlzLl8kb3ZlcmxhcHBpbmcuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICB0aGlzLl8kb3ZlcmxhcHBpbmcubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IG92ZXJsYXBwaW5nKCkgeyByZXR1cm4gdGhpcy5fJG92ZXJsYXBwaW5nLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJHNob3cgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICByZWFkb25seSAkc2hvdyA9IHRoaXMuXyRzaG93LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBzaG93KHY6IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aGlzLl8kc2hvdy5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuXyRzaG93Lm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBzaG93KCkgeyByZXR1cm4gdGhpcy5fJHNob3cuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBwcml2YXRlIF8kcGFyYW1zID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IFtwcm9wTmFtZTogc3RyaW5nXTogYW55IH0gfCBudWxsPih7fSk7XHJcbiAgcmVhZG9ubHkgJHBhcmFtcyA9IHRoaXMuXyRwYXJhbXMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHBhcmFtcyh2OiB7IFtwcm9wTmFtZTogc3RyaW5nXTogYW55IH0gfCBudWxsKSB7XHJcbiAgICBpZiAodGhpcy5fJHBhcmFtcy5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuXyRwYXJhbXMubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHBhcmFtcygpIHsgcmV0dXJuIHRoaXMuXyRwYXJhbXMuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBwcml2YXRlIF8kcmVuZGVyZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPihudWxsKTtcclxuICByZWFkb25seSAkcmVuZGVyZXIgPSB0aGlzLl8kcmVuZGVyZXIuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHJlbmRlcmVyKHY6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsKSB7XHJcbiAgICBpZiAodGhpcy5fJHJlbmRlcmVyLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHJlbmRlcmVyLm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCByZW5kZXJlcigpIHsgcmV0dXJuIHRoaXMuXyRyZW5kZXJlci5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyR0aHVtYlJlbmRlcmVyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbD4odGhpcy5fZGVmYXVsdFJlbmRlcmVyID8/IG51bGwpO1xyXG4gIHJlYWRvbmx5ICR0aHVtYlJlbmRlcmVyID0gdGhpcy5fJHRodW1iUmVuZGVyZXIuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyRob3ZlclN0YXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcmVhZG9ubHkgJGhvdmVyU3RhdGUgPSB0aGlzLl8kaG92ZXJTdGF0ZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBfJHByZXNzZWRTdGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHJlYWRvbmx5ICRwcmVzc2VkU3RhdGUgPSB0aGlzLl8kcHJlc3NlZFN0YXRlLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kdGVtcGxhdGVDb250ZXh0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJU2Nyb2xsQmFyVGVtcGxhdGVDb250ZXh0PihERUZBVUxUX1NDUk9MTEJBUl9URU1QTEFURV9DT05URVhUKTtcclxuICByZWFkb25seSAkdGVtcGxhdGVDb250ZXh0ID0gdGhpcy5fJHRlbXBsYXRlQ29udGV4dC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBfJHN0eWxlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBbc3R5bGVOYW1lOiBzdHJpbmddOiBhbnkgfT4oe30pO1xyXG4gIHJlYWRvbmx5ICRzdHlsZXMgPSB0aGlzLl8kc3R5bGVzLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kdGh1bWJXaWR0aCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcclxuICByZWFkb25seSAkdGh1bWJXaWR0aCA9IHRoaXMuXyR0aHVtYldpZHRoLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kdGh1bWJIZWlnaHQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XHJcbiAgcmVhZG9ubHkgJHRodW1iSGVpZ2h0ID0gdGhpcy5fJHRodW1iSGVpZ2h0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kc2Nyb2xsaW5nQ2FuY2VsID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgJHNjcm9sbGluZ0NhbmNlbCA9IHRoaXMuXyRzY3JvbGxpbmdDYW5jZWwuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgX2VsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuXHJcbiAgICBjb25zdCAkdGh1bWJXaWR0aCA9IHRoaXMuJHRodW1iV2lkdGgsXHJcbiAgICAgICR0aHVtYkhlaWdodCA9IHRoaXMuJHRodW1iSGVpZ2h0LFxyXG4gICAgICAkdGh1bWJHcmFkaWVudFBvc2l0aW9ucyA9IHRoaXMuJHRodW1iR3JhZGllbnRQb3NpdGlvbnMsXHJcbiAgICAgICRwYXJhbXMgPSB0aGlzLiRwYXJhbXM7XHJcblxyXG4gICAgY29tYmluZUxhdGVzdChbJHRodW1iV2lkdGgsICR0aHVtYkhlaWdodCwgJHRodW1iR3JhZGllbnRQb3NpdGlvbnMsICRwYXJhbXNdKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgZGVib3VuY2VUaW1lKDApLFxyXG4gICAgICB0YXAoKFt0aHVtYldpZHRoLCB0aHVtYkhlaWdodCwgdGh1bWJHcmFkaWVudFBvc2l0aW9ucywgcGFyYW1zXSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbnRleHQ6IElTY3JvbGxCYXJUZW1wbGF0ZUNvbnRleHQgPSB7XHJcbiAgICAgICAgICBhcGk6IHRoaXMuX2FwaVNlcnZpY2UsXHJcbiAgICAgICAgICB3aWR0aDogdGh1bWJXaWR0aCxcclxuICAgICAgICAgIGhlaWdodDogdGh1bWJIZWlnaHQsXHJcbiAgICAgICAgICBmaWxsUG9zaXRpb25zOiB0aHVtYkdyYWRpZW50UG9zaXRpb25zLFxyXG4gICAgICAgICAgcGFyYW1zOiBwYXJhbXMgPz8ge30sXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLl8kdGVtcGxhdGVDb250ZXh0Lm5leHQoY29udGV4dCk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb25zdCAkcmVuZGVyZXIgPSB0aGlzLiRyZW5kZXJlci5waXBlKFxyXG4gICAgICBzdGFydFdpdGgobnVsbCksXHJcbiAgICApLFxyXG4gICAgICAkZGVmYXVsdFJlbmRlcmVyID0gb2YodGhpcy5fZGVmYXVsdFJlbmRlcmVyKTtcclxuXHJcbiAgICBjb21iaW5lTGF0ZXN0KFskcmVuZGVyZXIsICRkZWZhdWx0UmVuZGVyZXJdKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgc3dpdGNoTWFwKChbcmVuZGVyZXIsIGRlZmF1bHRSZW5kZXJlcl0pID0+IHtcclxuICAgICAgICByZXR1cm4gb2YoKHJlbmRlcmVyID8/IGRlZmF1bHRSZW5kZXJlcikgPz8gbnVsbCk7XHJcbiAgICAgIH0pLFxyXG4gICAgICBkZWJvdW5jZVRpbWUoMCksXHJcbiAgICAgIHRhcCh2ID0+IHtcclxuICAgICAgICB0aGlzLl8kdGh1bWJSZW5kZXJlci5uZXh0KHYpO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29uc3QgJHByZXBhcmVkID0gdGhpcy4kcHJlcGFyZWQ7XHJcbiAgICAkcHJlcGFyZWQucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGZpbHRlcih2ID0+ICEhdiksXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxMaW1pdHMoKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2hDb29yZGluYXRlKHRoaXMuX3gsIHRoaXMuX3kpO1xyXG4gICAgICAgIHRoaXMuZmlyZVNjcm9sbEV2ZW50KGZhbHNlKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuJGlzVmVydGljYWwsIHRoaXMuJHRoaWNrbmVzcywgdGhpcy4kc2l6ZV0pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICB0YXAoKFtpc1ZlcnRpY2FsLCB0aGlja25lc3MsIHNpemVdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fJHRodW1iV2lkdGgubmV4dChpc1ZlcnRpY2FsID8gdGhpY2tuZXNzIDogc2l6ZSk7XHJcbiAgICAgICAgdGhpcy5fJHRodW1iSGVpZ2h0Lm5leHQoaXNWZXJ0aWNhbCA/IHNpemUgOiB0aGlja25lc3MpO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcclxuXHJcbiAgICBjb25zdCAkd2hlZWwgPSB0aGlzLiR3aGVlbDtcclxuICAgICR3aGVlbC5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgZGVib3VuY2VUaW1lKDEwMCksXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZXZlbnQgPSB0aGlzLmNyZWF0ZURyYWdFdmVudCh0cnVlKTtcclxuICAgICAgICBpZiAoISFldmVudCkge1xyXG4gICAgICAgICAgdGhpcy5vbkRyYWdFbmQuZW1pdChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29uc3QgJHBvaW50ZXJEb3duID0gZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAncG9pbnRlcmRvd24nKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICksICRwb2ludGVyVXAgPSBmcm9tRXZlbnQ8UG9pbnRlckV2ZW50Pih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdwb2ludGVydXAnKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICksICRkb2NQb2ludGVyVXAgPSBmcm9tRXZlbnQ8UG9pbnRlckV2ZW50Pihkb2N1bWVudCwgJ3BvaW50ZXJ1cCcpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgKSwgJHBvaW50ZXJFbnRlciA9IGZyb21FdmVudDxQb2ludGVyRXZlbnQ+KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3BvaW50ZXJlbnRlcicpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgKSwgJHBvaW50ZXJMZWF2ZSA9IGZyb21FdmVudDxQb2ludGVyRXZlbnQ+KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3BvaW50ZXJsZWF2ZScpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgKTtcclxuXHJcbiAgICAkcG9pbnRlckRvd24ucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIHRhcChlID0+IHtcclxuICAgICAgICB0aGlzLl8kcHJlc3NlZFN0YXRlLm5leHQodGhpcy50aHVtYkhpdChlLmNsaWVudFgsIGUuY2xpZW50WSkpO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29tYmluZUxhdGVzdChbJGRvY1BvaW50ZXJVcCwgJHBvaW50ZXJVcF0pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuXyRwcmVzc2VkU3RhdGUubmV4dChmYWxzZSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAkcG9pbnRlckVudGVyLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuXyRob3ZlclN0YXRlLm5leHQodHJ1ZSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAkcG9pbnRlckxlYXZlLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuXyRob3ZlclN0YXRlLm5leHQoZmFsc2UpO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29uc3QgJHByZXNzZWRTdGF0ZSA9IHRoaXMuJHByZXNzZWRTdGF0ZS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICksICRob3ZlclN0YXRlID0gdGhpcy4kaG92ZXJTdGF0ZS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICk7XHJcblxyXG4gICAgY29tYmluZUxhdGVzdChbXHJcbiAgICAgICRwcmVzc2VkU3RhdGUsICRob3ZlclN0YXRlLFxyXG4gICAgXSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRlYm91bmNlVGltZSgwKSxcclxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgdGFwKChbcHJlc3NlZCwgaG92ZXJdKSA9PiB7XHJcbiAgICAgICAgaWYgKHByZXNzZWQpIHtcclxuICAgICAgICAgIHRoaXMuX3Njcm9sbEJhclNlcnZpY2Uuc3RhdGUgPSBTY3JvbGxiYXJTdGF0ZXMuUFJFU1NFRDtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9IGVsc2UgaWYgKGhvdmVyKSB7XHJcbiAgICAgICAgICB0aGlzLl9zY3JvbGxCYXJTZXJ2aWNlLnN0YXRlID0gU2Nyb2xsYmFyU3RhdGVzLkhPVkVSO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9zY3JvbGxCYXJTZXJ2aWNlLnN0YXRlID0gU2Nyb2xsYmFyU3RhdGVzLk5PUk1BTDtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICB0aGlzLiRzaXplLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICB0YXAodiA9PiB7XHJcbiAgICAgICAgdGhpcy50b3RhbFNpemUgPSB2O1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgdGhpcy4kaW50ZXJhY3RpdmUucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIHRhcCh2ID0+IHtcclxuICAgICAgICB0aGlzLmludGVyYWN0aXZlID0gdjtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuJHNob3csIHRoaXMuJGlzVmVydGljYWwsIHRoaXMuJHRoaWNrbmVzc10pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICB0YXAoKFtzaG93LCBpc1ZlcnRpY2FsLCB0aGlja25lc3NdKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc2l6ZVByb3BOYW1lID0gaXNWZXJ0aWNhbCA/IFdJRFRIIDogSEVJR0hUO1xyXG4gICAgICAgIHRoaXMuXyRzdHlsZXMubmV4dCh7XHJcbiAgICAgICAgICBbc2l6ZVByb3BOYW1lXTogYCR7c2hvdyA/IHRoaWNrbmVzcyA6IDB9JHtQWH1gLFxyXG4gICAgICAgICAgW09QQUNJVFldOiBzaG93ID8gT1BBQ0lUWV8xIDogT1BBQ0lUWV8wLCBbVFJBTlNJVElPTl06IHNob3cgPyBUUkFOU0lUSU9OX0ZBREVfSU4gOiBOT05FLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29uc3QgJG92ZXJsYXBwaW5nID0gdGhpcy4kb3ZlcmxhcHBpbmcsICRsYW5nVGV4dERpciA9IHRoaXMuJGxhbmdUZXh0RGlyO1xyXG4gICAgY29tYmluZUxhdGVzdChbJG92ZXJsYXBwaW5nLCAkbGFuZ1RleHREaXJdKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgdGFwKChbb3ZlcmxhcHBpbmcsIGxhbmdUZXh0RGlyXSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGVsID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIGlmICghIWVsKSB7XHJcbiAgICAgICAgICBlbC5zdHlsZVtQT1NJVElPTl0gPSBvdmVybGFwcGluZyA/IFBPU0lUSU9OX0FCU09MVVRFIDogUE9TSVRJT05fUkVMQVRJVkU7XHJcbiAgICAgICAgICBlbC5zdHlsZVtMRUZUXSA9IG92ZXJsYXBwaW5nICYmIGxhbmdUZXh0RGlyID09PSBUZXh0RGlyZWN0aW9ucy5SVEwgPyAnMCcgOiBVTlNFVDtcclxuICAgICAgICAgIGVsLnN0eWxlW1JJR0hUXSA9IG92ZXJsYXBwaW5nICYmIGxhbmdUZXh0RGlyID09PSBUZXh0RGlyZWN0aW9ucy5MVFIgPyAnMCcgOiBVTlNFVDtcclxuICAgICAgICAgIGVsLnN0eWxlW1dJRFRIXSA9IG92ZXJsYXBwaW5nID8gU0laRV9BVVRPIDogU0laRV8xMDBfUEVSU0VOVDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICB0aGlzLiRzY3JvbGwucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIHRhcCh2ID0+IHtcclxuICAgICAgICBjb25zdCBldmVudCA9IHRoaXMuY3JlYXRlRHJhZ0V2ZW50KHYpO1xyXG4gICAgICAgIGlmICghIWV2ZW50KSB7XHJcbiAgICAgICAgICB0aGlzLm9uRHJhZy5lbWl0KGV2ZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb25zdCAkc2Nyb2xsRW5kID0gdGhpcy4kc2Nyb2xsRW5kO1xyXG4gICAgJHNjcm9sbEVuZC5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgdGFwKHVzZXJBY3Rpb24gPT4ge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50ID0gdGhpcy5jcmVhdGVEcmFnRXZlbnQodXNlckFjdGlvbik7XHJcbiAgICAgICAgaWYgKCEhZXZlbnQpIHtcclxuICAgICAgICAgIHRoaXMub25EcmFnRW5kLmVtaXQoZXZlbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbnN0ICRyZW5kZXJlciA9IHRoaXMuJHJlbmRlcmVyLCAkZGVmYXVsdFJlbmRlcmVyID0gb2YodGhpcy5fZGVmYXVsdFJlbmRlcmVyKTtcclxuICAgIGNvbWJpbmVMYXRlc3QoWyRyZW5kZXJlciwgJGRlZmF1bHRSZW5kZXJlcl0pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICBkZWJvdW5jZVRpbWUoMCksXHJcbiAgICAgIHRhcCgoW3JlbmRlcmVyLCBkZWZhdWx0UmVuZGVyZXJdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fJHRodW1iUmVuZGVyZXIubmV4dChyZW5kZXJlciB8fCBkZWZhdWx0UmVuZGVyZXIgfHwgbnVsbCk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRHJhZ0V2ZW50KHVzZXJBY3Rpb246IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IGlzVmVydGljYWwgPSB0aGlzLl8kaXNWZXJ0aWNhbC5nZXRWYWx1ZSgpLCBzY3JvbGxTaXplID0gaXNWZXJ0aWNhbCA/IHRoaXMuc2Nyb2xsSGVpZ2h0IDogdGhpcy5zY3JvbGxXaWR0aCxcclxuICAgICAgc2Nyb2xsUG9zaXRpb24gPSBpc1ZlcnRpY2FsID8gdGhpcy55IDogdGhpcy54LFxyXG4gICAgICBzdGFydE9mZnNldCA9IHRoaXMuc3RhcnRPZmZzZXQsIGVuZE9mZnNldCA9IHRoaXMuZW5kT2Zmc2V0LFxyXG4gICAgICBzY3JvbGxDb250ZW50ID0gdGhpcy5zY3JvbGxDb250ZW50Py5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50LFxyXG4gICAgICBzY3JvbGxWaWV3cG9ydCA9IHRoaXMuc2Nyb2xsVmlld3BvcnQ/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgICBpZiAoISFzY3JvbGxWaWV3cG9ydCAmJiAhIXNjcm9sbENvbnRlbnQpIHtcclxuICAgICAgY29uc3QgY29udGVudFNpemUgPSBpc1ZlcnRpY2FsID8gc2Nyb2xsQ29udGVudC5vZmZzZXRIZWlnaHQgOiBzY3JvbGxDb250ZW50Lm9mZnNldFdpZHRoLFxyXG4gICAgICAgIHZpZXdwb3J0U2l6ZSA9IGlzVmVydGljYWwgPyBzY3JvbGxWaWV3cG9ydC5vZmZzZXRIZWlnaHQgOiBzY3JvbGxWaWV3cG9ydC5vZmZzZXRXaWR0aCxcclxuICAgICAgICBvZmZzZXRTaXplID0gKHNjcm9sbFNpemUgIT09IDAgPyAoc3RhcnRPZmZzZXQgLyBzY3JvbGxTaXplKSA6IDApLFxyXG4gICAgICAgIHBvc2l0aW9uU2l6ZSA9IChzY3JvbGxTaXplICE9PSAwID8gKHNjcm9sbFBvc2l0aW9uIC8gc2Nyb2xsU2l6ZSkgOiAwKSxcclxuICAgICAgICBtYXhTaXplID0gMSAtIG9mZnNldFNpemUsXHJcbiAgICAgICAgcG9zID0gKHBvc2l0aW9uU2l6ZSAtIG9mZnNldFNpemUpO1xyXG4gICAgICBjb25zdCBldmVudDogSVNjcm9sbEJhckRyYWdFdmVudCA9IHtcclxuICAgICAgICBwb3NpdGlvbjogcG9zIC8gbWF4U2l6ZSxcclxuICAgICAgICBtaW46IHNjcm9sbFNpemUgIT09IDAgPyAoc3RhcnRPZmZzZXQgLyBzY3JvbGxTaXplKSA6IDAsXHJcbiAgICAgICAgbWF4OiBzY3JvbGxTaXplICE9PSAwID8gKCh2aWV3cG9ydFNpemUgLSBlbmRPZmZzZXQgLSBjb250ZW50U2l6ZSkgLyBzY3JvbGxTaXplKSA6IDAsXHJcbiAgICAgICAgYW5pbWF0aW9uOiAhdGhpcy5faXNNb3ZpbmcsXHJcbiAgICAgICAgdXNlckFjdGlvbixcclxuICAgICAgfTtcclxuICAgICAgcmV0dXJuIGV2ZW50O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRodW1iSGl0KHg6IG51bWJlciwgeTogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCB0aHVtYiA9IHRoaXMuc2Nyb2xsQ29udGVudD8ubmF0aXZlRWxlbWVudDtcclxuICAgIGlmICghIXRodW1iKSB7XHJcbiAgICAgIGNvbnN0IHsgeDogdFgsIHk6IHRZLCB3aWR0aDogdFdpZHRoLCBoZWlnaHQ6IHRIZWlnaHQgfSA9IHRodW1iLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICBpZiAoKHggPj0gdFggJiYgeCA8PSB0WCArIHRXaWR0aCkgJiYgKHkgPj0gdFkgJiYgeSA8PSB0WSArIHRIZWlnaHQpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNsaWNrKGV2ZW50OiBQb2ludGVyRXZlbnQgfCBNb3VzZUV2ZW50KSB7XHJcbiAgICB0aGlzLl9zY3JvbGxCYXJTZXJ2aWNlLmNsaWNrKGV2ZW50KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAjc2Nyb2xsVmlld3BvcnQgY2xhc3M9XCJ0cmFja1wiIHBhcnQ9XCJzY3JvbGxiYXItdHJhY2tcIiBbbmdTdHlsZV09XCIkc3R5bGVzIHwgYXN5bmNcIlxyXG4gICAgW25nQ2xhc3NdPVwie2dyYWJiaW5nOiAkZ3JhYmJpbmcgfCBhc3luY31cIj5cclxuICAgIDxkaXYgI3Njcm9sbENvbnRlbnQgY2xhc3M9XCJ0aHVtYlwiIHBhcnQ9XCJzY3JvbGxiYXItdGh1bWJcIiBbY2xhc3MuaG9yaXpvbnRhbF09XCIoJGlzVmVydGljYWwgfCBhc3luYykhID09IGZhbHNlXCJcclxuICAgICAgICAocG9pbnRlcmRvd24pPVwiY2xpY2soJGV2ZW50KVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiKCR0aHVtYlJlbmRlcmVyIHwgYXN5bmMpIVwiXHJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCIoJHRlbXBsYXRlQ29udGV4dCB8IGFzeW5jKSFcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFJlbmRlcmVyIGxldC1hcGk9XCJhcGlcIiBsZXQtd2lkdGg9XCJ3aWR0aFwiIGxldC1oZWlnaHQ9XCJoZWlnaHRcIiBsZXQtZmlsbFBvc2l0aW9ucz1cImZpbGxQb3NpdGlvbnNcIlxyXG4gICAgbGV0LXBhcmFtcz1cInBhcmFtc1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNoYXBlXCIgcGFydD1cInNjcm9sbGJhci10aHVtYl9fc2hhcGVcIiBbc3R5bGUud2lkdGgucHhdPVwid2lkdGhcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlaWdodFwiPjwvZGl2PlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|