angular-three-postprocessing 2.14.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/angular-three-postprocessing-n8ao.mjs +3 -4
- package/fesm2022/angular-three-postprocessing-n8ao.mjs.map +1 -1
- package/fesm2022/angular-three-postprocessing.mjs +93 -121
- package/fesm2022/angular-three-postprocessing.mjs.map +1 -1
- package/lib/effects/tone-mapping.d.ts +1 -1
- package/package.json +3 -7
- package/esm2022/angular-three-postprocessing.mjs +0 -5
- package/esm2022/index.mjs +0 -4
- package/esm2022/lib/effect-composer.mjs +0 -187
- package/esm2022/lib/effect.mjs +0 -49
- package/esm2022/lib/effects/ascii.mjs +0 -124
- package/esm2022/lib/effects/bloom.mjs +0 -39
- package/esm2022/lib/effects/brightness-contrast.mjs +0 -38
- package/esm2022/lib/effects/chromatic-abberation.mjs +0 -38
- package/esm2022/lib/effects/color-average.mjs +0 -33
- package/esm2022/lib/effects/color-depth.mjs +0 -38
- package/esm2022/lib/effects/depth-of-field.mjs +0 -50
- package/esm2022/lib/effects/depth.mjs +0 -38
- package/esm2022/lib/effects/dot-screen.mjs +0 -38
- package/esm2022/lib/effects/fxaa.mjs +0 -38
- package/esm2022/lib/effects/glitch.mjs +0 -59
- package/esm2022/lib/effects/god-rays.mjs +0 -41
- package/esm2022/lib/effects/grid.mjs +0 -42
- package/esm2022/lib/effects/hue-saturation.mjs +0 -38
- package/esm2022/lib/effects/index.mjs +0 -29
- package/esm2022/lib/effects/lens-flare.mjs +0 -195
- package/esm2022/lib/effects/lut.mjs +0 -50
- package/esm2022/lib/effects/noise.mjs +0 -39
- package/esm2022/lib/effects/outline.mjs +0 -146
- package/esm2022/lib/effects/pixelation.mjs +0 -34
- package/esm2022/lib/effects/scanline.mjs +0 -43
- package/esm2022/lib/effects/sepia.mjs +0 -38
- package/esm2022/lib/effects/shock-wave.mjs +0 -38
- package/esm2022/lib/effects/smaa.mjs +0 -38
- package/esm2022/lib/effects/tilt-shift-2.mjs +0 -121
- package/esm2022/lib/effects/tilt-shift.mjs +0 -39
- package/esm2022/lib/effects/tone-mapping.mjs +0 -81
- package/esm2022/lib/effects/vignette.mjs +0 -38
- package/esm2022/lib/effects/water.mjs +0 -64
- package/esm2022/n8ao/angular-three-postprocessing-n8ao.mjs +0 -5
- package/esm2022/n8ao/index.mjs +0 -2
- package/esm2022/n8ao/lib/n8ao.mjs +0 -82
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
// @ts-expect-error - n8ao is not typed
|
|
2
|
-
import { N8AOPostPass } from 'n8ao';
|
|
3
|
-
import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, inject, input, } from '@angular/core';
|
|
4
|
-
import { applyProps, NgtArgs, pick } from 'angular-three';
|
|
5
|
-
import { NgtpEffectComposer } from 'angular-three-postprocessing';
|
|
6
|
-
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
const defaultOptions = {
|
|
9
|
-
aoSamples: 16,
|
|
10
|
-
aoRadius: 5.0,
|
|
11
|
-
aoTones: 0.0,
|
|
12
|
-
denoiseSamples: 8,
|
|
13
|
-
denoiseRadius: 12,
|
|
14
|
-
distanceFalloff: 1.0,
|
|
15
|
-
intensity: 5,
|
|
16
|
-
denoiseIterations: 2.0,
|
|
17
|
-
renderMode: 0,
|
|
18
|
-
biasOffset: 0.0,
|
|
19
|
-
biasMultiplier: 0.0,
|
|
20
|
-
color: 'black',
|
|
21
|
-
gammaCorrection: true,
|
|
22
|
-
logarithmicDepthBuffer: false,
|
|
23
|
-
screenSpaceRadius: false,
|
|
24
|
-
halfRes: false,
|
|
25
|
-
depthAwareUpsampling: true,
|
|
26
|
-
colorMultiply: true,
|
|
27
|
-
transparencyAware: false,
|
|
28
|
-
accumulate: false,
|
|
29
|
-
};
|
|
30
|
-
export class NgtpN8AO {
|
|
31
|
-
constructor() {
|
|
32
|
-
this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
|
|
33
|
-
this.quality = pick(this.options, 'quality');
|
|
34
|
-
this.effectComposer = inject(NgtpEffectComposer);
|
|
35
|
-
this.effect = computed(() => {
|
|
36
|
-
const [scene, camera] = [this.effectComposer.scene(), this.effectComposer.camera()];
|
|
37
|
-
return new N8AOPostPass(scene, camera);
|
|
38
|
-
});
|
|
39
|
-
effect(() => {
|
|
40
|
-
const n8aoEffect = this.effect();
|
|
41
|
-
if (!n8aoEffect)
|
|
42
|
-
return;
|
|
43
|
-
const { quality: _, ...configurations } = this.options();
|
|
44
|
-
applyProps(n8aoEffect.configuration, configurations);
|
|
45
|
-
});
|
|
46
|
-
effect(() => {
|
|
47
|
-
this.setQualityEffect();
|
|
48
|
-
});
|
|
49
|
-
effect((onCleanup) => {
|
|
50
|
-
const effect = this.effect();
|
|
51
|
-
onCleanup(() => effect.dispose());
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
setQualityEffect() {
|
|
55
|
-
const effect = this.effect();
|
|
56
|
-
if (!effect)
|
|
57
|
-
return;
|
|
58
|
-
const quality = this.quality();
|
|
59
|
-
if (!quality)
|
|
60
|
-
return;
|
|
61
|
-
const titleCaseQuality = quality.charAt(0).toUpperCase() + quality.slice(1);
|
|
62
|
-
effect.setQuality(titleCaseQuality);
|
|
63
|
-
}
|
|
64
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtpN8AO, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
65
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.11", type: NgtpN8AO, isStandalone: true, selector: "ngtp-n8ao", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
66
|
-
<ngt-primitive *args="[effect()]" />
|
|
67
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
68
|
-
}
|
|
69
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtpN8AO, decorators: [{
|
|
70
|
-
type: Component,
|
|
71
|
-
args: [{
|
|
72
|
-
selector: 'ngtp-n8ao',
|
|
73
|
-
standalone: true,
|
|
74
|
-
template: `
|
|
75
|
-
<ngt-primitive *args="[effect()]" />
|
|
76
|
-
`,
|
|
77
|
-
imports: [NgtArgs],
|
|
78
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
79
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
80
|
-
}]
|
|
81
|
-
}], ctorParameters: () => [] });
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibjhhby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcG9zdHByb2Nlc3Npbmcvbjhhby9zcmMvbGliL244YW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdUNBQXVDO0FBQ3ZDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUNOLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLHNCQUFzQixFQUN0QixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssR0FDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQTJCdkQsTUFBTSxjQUFjLEdBQW9CO0lBQ3ZDLFNBQVMsRUFBRSxFQUFFO0lBQ2IsUUFBUSxFQUFFLEdBQUc7SUFDYixPQUFPLEVBQUUsR0FBRztJQUNaLGNBQWMsRUFBRSxDQUFDO0lBQ2pCLGFBQWEsRUFBRSxFQUFFO0lBQ2pCLGVBQWUsRUFBRSxHQUFHO0lBQ3BCLFNBQVMsRUFBRSxDQUFDO0lBQ1osaUJBQWlCLEVBQUUsR0FBRztJQUN0QixVQUFVLEVBQUUsQ0FBQztJQUNiLFVBQVUsRUFBRSxHQUFHO0lBQ2YsY0FBYyxFQUFFLEdBQUc7SUFDbkIsS0FBSyxFQUFFLE9BQU87SUFDZCxlQUFlLEVBQUUsSUFBSTtJQUNyQixzQkFBc0IsRUFBRSxLQUFLO0lBQzdCLGlCQUFpQixFQUFFLEtBQUs7SUFDeEIsT0FBTyxFQUFFLEtBQUs7SUFDZCxvQkFBb0IsRUFBRSxJQUFJO0lBQzFCLGFBQWEsRUFBRSxJQUFJO0lBQ25CLGlCQUFpQixFQUFFLEtBQUs7SUFDeEIsVUFBVSxFQUFFLEtBQUs7Q0FDakIsQ0FBQztBQVlGLE1BQU0sT0FBTyxRQUFRO0lBWXBCO1FBWEEsWUFBTyxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVwRSxZQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFeEMsbUJBQWMsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUVwRCxXQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN0QixNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDcEYsT0FBTyxJQUFJLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7UUFHRixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxVQUFVO2dCQUFFLE9BQU87WUFFeEIsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsR0FBRyxjQUFjLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDekQsVUFBVSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNwQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0IsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVPLGdCQUFnQjtRQUN2QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBRXBCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTztZQUFFLE9BQU87UUFFckIsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7K0dBeENXLFFBQVE7bUdBQVIsUUFBUSwrTUFQVjs7RUFFVCw0REFDUyxPQUFPOzs0RkFJTCxRQUFRO2tCQVZwQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxXQUFXO29CQUNyQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOztFQUVUO29CQUNELE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztvQkFDbEIsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUMvQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1leHBlY3QtZXJyb3IgLSBuOGFvIGlzIG5vdCB0eXBlZFxuaW1wb3J0IHsgTjhBT1Bvc3RQYXNzIH0gZnJvbSAnbjhhbyc7XG5cbmltcG9ydCB7XG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdGNvbXB1dGVkLFxuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRlZmZlY3QsXG5cdGluamVjdCxcblx0aW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYXBwbHlQcm9wcywgTmd0QXJncywgcGljayB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgTmd0cEVmZmVjdENvbXBvc2VyIH0gZnJvbSAnYW5ndWxhci10aHJlZS1wb3N0cHJvY2Vzc2luZyc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQgeyBDb2xvclJlcHJlc2VudGF0aW9uIH0gZnJvbSAndGhyZWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHBOOEFPT3B0aW9ucyB7XG5cdGFvUmFkaXVzOiBudW1iZXI7XG5cdGFvVG9uZXM6IG51bWJlcjtcblx0ZGlzdGFuY2VGYWxsb2ZmOiBudW1iZXI7XG5cdGludGVuc2l0eTogbnVtYmVyO1xuXHRiaWFzT2Zmc2V0OiBudW1iZXI7XG5cdGJpYXNNdWx0aXBsaWVyOiBudW1iZXI7XG5cdGFvU2FtcGxlczogbnVtYmVyO1xuXHRkZW5vaXNlU2FtcGxlczogbnVtYmVyO1xuXHRkZW5vaXNlUmFkaXVzOiBudW1iZXI7XG5cdGNvbG9yOiBDb2xvclJlcHJlc2VudGF0aW9uO1xuXHRoYWxmUmVzOiBib29sZWFuO1xuXHRkZXB0aEF3YXJlVXBzYW1wbGluZzogYm9vbGVhbjtcblx0c2NyZWVuU3BhY2VSYWRpdXM6IGJvb2xlYW47XG5cdHJlbmRlck1vZGU6IDAgfCAxIHwgMiB8IDMgfCA0O1xuXHRkZW5vaXNlSXRlcmF0aW9uczogbnVtYmVyO1xuXHR0cmFuc3BhcmVuY3lBd2FyZTogYm9vbGVhbjtcblx0Z2FtbWFDb3JyZWN0aW9uOiBib29sZWFuO1xuXHRsb2dhcml0aG1pY0RlcHRoQnVmZmVyOiBib29sZWFuO1xuXHRjb2xvck11bHRpcGx5OiBib29sZWFuO1xuXHRhY2N1bXVsYXRlOiBib29sZWFuO1xuXHRxdWFsaXR5PzogJ3BlcmZvcm1hbmNlJyB8ICdsb3cnIHwgJ21lZGl1bScgfCAnaGlnaCcgfCAndWx0cmEnO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0cE44QU9PcHRpb25zID0ge1xuXHRhb1NhbXBsZXM6IDE2LFxuXHRhb1JhZGl1czogNS4wLFxuXHRhb1RvbmVzOiAwLjAsXG5cdGRlbm9pc2VTYW1wbGVzOiA4LFxuXHRkZW5vaXNlUmFkaXVzOiAxMixcblx0ZGlzdGFuY2VGYWxsb2ZmOiAxLjAsXG5cdGludGVuc2l0eTogNSxcblx0ZGVub2lzZUl0ZXJhdGlvbnM6IDIuMCxcblx0cmVuZGVyTW9kZTogMCxcblx0Ymlhc09mZnNldDogMC4wLFxuXHRiaWFzTXVsdGlwbGllcjogMC4wLFxuXHRjb2xvcjogJ2JsYWNrJyxcblx0Z2FtbWFDb3JyZWN0aW9uOiB0cnVlLFxuXHRsb2dhcml0aG1pY0RlcHRoQnVmZmVyOiBmYWxzZSxcblx0c2NyZWVuU3BhY2VSYWRpdXM6IGZhbHNlLFxuXHRoYWxmUmVzOiBmYWxzZSxcblx0ZGVwdGhBd2FyZVVwc2FtcGxpbmc6IHRydWUsXG5cdGNvbG9yTXVsdGlwbHk6IHRydWUsXG5cdHRyYW5zcGFyZW5jeUF3YXJlOiBmYWxzZSxcblx0YWNjdW11bGF0ZTogZmFsc2UsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RwLW44YW8nLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcHJpbWl0aXZlICphcmdzPVwiW2VmZmVjdCgpXVwiIC8+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RBcmdzXSxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmd0cE44QU8ge1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cblx0cHJpdmF0ZSBxdWFsaXR5ID0gcGljayh0aGlzLm9wdGlvbnMsICdxdWFsaXR5Jyk7XG5cblx0cHJpdmF0ZSBlZmZlY3RDb21wb3NlciA9IGluamVjdChOZ3RwRWZmZWN0Q29tcG9zZXIpO1xuXG5cdGVmZmVjdCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBbc2NlbmUsIGNhbWVyYV0gPSBbdGhpcy5lZmZlY3RDb21wb3Nlci5zY2VuZSgpLCB0aGlzLmVmZmVjdENvbXBvc2VyLmNhbWVyYSgpXTtcblx0XHRyZXR1cm4gbmV3IE44QU9Qb3N0UGFzcyhzY2VuZSwgY2FtZXJhKTtcblx0fSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IG44YW9FZmZlY3QgPSB0aGlzLmVmZmVjdCgpO1xuXHRcdFx0aWYgKCFuOGFvRWZmZWN0KSByZXR1cm47XG5cblx0XHRcdGNvbnN0IHsgcXVhbGl0eTogXywgLi4uY29uZmlndXJhdGlvbnMgfSA9IHRoaXMub3B0aW9ucygpO1xuXHRcdFx0YXBwbHlQcm9wcyhuOGFvRWZmZWN0LmNvbmZpZ3VyYXRpb24sIGNvbmZpZ3VyYXRpb25zKTtcblx0XHR9KTtcblxuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHR0aGlzLnNldFF1YWxpdHlFZmZlY3QoKTtcblx0XHR9KTtcblxuXHRcdGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRjb25zdCBlZmZlY3QgPSB0aGlzLmVmZmVjdCgpO1xuXHRcdFx0b25DbGVhbnVwKCgpID0+IGVmZmVjdC5kaXNwb3NlKCkpO1xuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBzZXRRdWFsaXR5RWZmZWN0KCkge1xuXHRcdGNvbnN0IGVmZmVjdCA9IHRoaXMuZWZmZWN0KCk7XG5cdFx0aWYgKCFlZmZlY3QpIHJldHVybjtcblxuXHRcdGNvbnN0IHF1YWxpdHkgPSB0aGlzLnF1YWxpdHkoKTtcblx0XHRpZiAoIXF1YWxpdHkpIHJldHVybjtcblxuXHRcdGNvbnN0IHRpdGxlQ2FzZVF1YWxpdHkgPSBxdWFsaXR5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcXVhbGl0eS5zbGljZSgxKTtcblx0XHRlZmZlY3Quc2V0UXVhbGl0eSh0aXRsZUNhc2VRdWFsaXR5KTtcblx0fVxufVxuIl19
|