@smarterplan/ngx-smarterplan-core 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/matterport-extensions/nest-thermostat/CanvasImage.mjs +51 -0
- package/esm2020/lib/matterport-extensions/nest-thermostat/CanvasRenderer.mjs +62 -0
- package/esm2020/lib/matterport-extensions/nest-thermostat/NestThermostat.mjs +158 -0
- package/esm2020/lib/matterport-extensions/nest-thermostat/PlaneRenderer.mjs +85 -0
- package/esm2020/lib/matterport-extensions/scene-component/SceneComponent.mjs +1 -1
- package/esm2020/lib/matterport-extensions/security-camera/SecurityCamera.mjs +22 -22
- package/esm2020/lib/services/matterport.service.mjs +39 -7
- package/esm2020/lib/services/models/object3D.service.mjs +1 -1
- package/esm2020/lib/services/models/poi.service.mjs +1 -1
- package/esm2020/lib/services/viewer.service.mjs +1 -1
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs +355 -28
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs +355 -28
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/lib/matterport-extensions/nest-thermostat/CanvasImage.d.ts +31 -0
- package/lib/matterport-extensions/nest-thermostat/CanvasImage.d.ts.map +1 -0
- package/lib/matterport-extensions/nest-thermostat/CanvasRenderer.d.ts +38 -0
- package/lib/matterport-extensions/nest-thermostat/CanvasRenderer.d.ts.map +1 -0
- package/lib/matterport-extensions/nest-thermostat/NestThermostat.d.ts +42 -0
- package/lib/matterport-extensions/nest-thermostat/NestThermostat.d.ts.map +1 -0
- package/lib/matterport-extensions/nest-thermostat/PlaneRenderer.d.ts +46 -0
- package/lib/matterport-extensions/nest-thermostat/PlaneRenderer.d.ts.map +1 -0
- package/lib/services/matterport.service.d.ts.map +1 -1
- package/package.json +1 -1
- package/esm2020/lib/matterport-extensions/common/src/SceneComponent.mjs +0 -128
- package/esm2020/lib/matterport-extensions/common/src/sdk-components/OrientedBox.mjs +0 -145
- package/esm2020/lib/matterport-extensions/core/src/index.mjs +0 -4
- package/esm2020/lib/matterport-extensions/core/src/observable/Observable.mjs +0 -167
- package/esm2020/lib/matterport-extensions/core/src/observable/ObservableValue.mjs +0 -38
- package/esm2020/lib/matterport-extensions/core/src/subscription/ISubscription.mjs +0 -2
- package/esm2020/lib/matterport-extensions/core/src/types.mjs +0 -2
- package/esm2020/lib/matterport-extensions/core/src/util/index.mjs +0 -165
- package/lib/matterport-extensions/common/src/SceneComponent.d.ts +0 -388
- package/lib/matterport-extensions/common/src/SceneComponent.d.ts.map +0 -1
- package/lib/matterport-extensions/common/src/sdk-components/OrientedBox.d.ts +0 -44
- package/lib/matterport-extensions/common/src/sdk-components/OrientedBox.d.ts.map +0 -1
- package/lib/matterport-extensions/core/src/index.d.ts +0 -4
- package/lib/matterport-extensions/core/src/index.d.ts.map +0 -1
- package/lib/matterport-extensions/core/src/observable/Observable.d.ts +0 -94
- package/lib/matterport-extensions/core/src/observable/Observable.d.ts.map +0 -1
- package/lib/matterport-extensions/core/src/observable/ObservableValue.d.ts +0 -21
- package/lib/matterport-extensions/core/src/observable/ObservableValue.d.ts.map +0 -1
- package/lib/matterport-extensions/core/src/subscription/ISubscription.d.ts +0 -26
- package/lib/matterport-extensions/core/src/subscription/ISubscription.d.ts.map +0 -1
- package/lib/matterport-extensions/core/src/types.d.ts +0 -10
- package/lib/matterport-extensions/core/src/types.d.ts.map +0 -1
- package/lib/matterport-extensions/core/src/util/index.d.ts +0 -31
- package/lib/matterport-extensions/core/src/util/index.d.ts.map +0 -1
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { SceneComponent } from './../scene-component/SceneComponent';
|
|
2
|
+
export class CanvasImage extends SceneComponent {
|
|
3
|
+
constructor() {
|
|
4
|
+
super(...arguments);
|
|
5
|
+
this.image = null;
|
|
6
|
+
this.inputs = {
|
|
7
|
+
src: null,
|
|
8
|
+
srcPosition: { x: 0, y: 0 },
|
|
9
|
+
srcSize: { w: 64, h: 64 },
|
|
10
|
+
destPosition: { x: 0, y: 0 },
|
|
11
|
+
destSize: { w: 64, h: 64 },
|
|
12
|
+
};
|
|
13
|
+
this.outputs = {
|
|
14
|
+
painter: null,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
onInit() {
|
|
18
|
+
this.outputs.painter = this;
|
|
19
|
+
this.maybeLoadImage();
|
|
20
|
+
}
|
|
21
|
+
onInputsUpdated() {
|
|
22
|
+
this.maybeLoadImage();
|
|
23
|
+
}
|
|
24
|
+
paint(context2d, size) {
|
|
25
|
+
if (!this.image) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
context2d.clearRect(0, 0, this.inputs.destSize.w, this.inputs.destSize.h);
|
|
29
|
+
if (this.image.width > 0) {
|
|
30
|
+
context2d.drawImage(this.image, this.inputs.srcPosition.x, this.inputs.srcPosition.y, this.inputs.srcSize.w, this.inputs.srcSize.h, this.inputs.destPosition.x, this.inputs.destPosition.y, this.inputs.destSize.w, this.inputs.destSize.h);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
maybeLoadImage() {
|
|
34
|
+
this.image = null;
|
|
35
|
+
if (this.inputs.src !== null && this.inputs.src !== '') {
|
|
36
|
+
const that = this;
|
|
37
|
+
this.image = new Image();
|
|
38
|
+
this.image.crossOrigin = 'anonymous';
|
|
39
|
+
this.image.src = this.inputs.src;
|
|
40
|
+
this.image.onload = function (event) {
|
|
41
|
+
// that.notify('paint.ready');
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
// this.notify('paint.ready');
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export const canvasImageType = 'mp.canvasImage';
|
|
48
|
+
export function makeCanvasImage() {
|
|
49
|
+
return new CanvasImage();
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FudmFzSW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL21hdHRlcnBvcnQtZXh0ZW5zaW9ucy9uZXN0LXRoZXJtb3N0YXQvQ2FudmFzSW1hZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixjQUFjLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQWVwRixNQUFNLE9BQU8sV0FBWSxTQUFRLGNBQWM7SUFBL0M7O1FBQ1UsVUFBSyxHQUE0QixJQUFJLENBQUM7UUFFckMsV0FBTSxHQUFXO1lBQ3hCLEdBQUcsRUFBRSxJQUFJO1lBQ1QsV0FBVyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQzNCLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUN6QixZQUFZLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDNUIsUUFBUSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO1NBQzNCLENBQUE7UUFFUSxZQUFPLEdBQUc7WUFDakIsT0FBTyxFQUFFLElBQUk7U0FDSCxDQUFDO0lBeUNmLENBQUM7SUF2Q1UsTUFBTTtRQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVRLGVBQWU7UUFDdEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBbUMsRUFBRSxJQUFVO1FBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2YsT0FBTztTQUNSO1FBRUQsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtZQUN4QixTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQ3BELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQ3RELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNuRDtJQUNILENBQUM7SUFFTyxjQUFjO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBRWxCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLEVBQUUsRUFBRTtZQUN0RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7WUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztZQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztZQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxVQUFTLEtBQVk7Z0JBQ3ZDLDhCQUE4QjtZQUNoQyxDQUFDLENBQUM7U0FDSDtRQUVELDhCQUE4QjtJQUNoQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsZ0JBQWdCLENBQUM7QUFDaEQsTUFBTSxVQUFVLGVBQWU7SUFDN0IsT0FBTyxJQUFJLFdBQVcsRUFBRSxDQUFDO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudE91dHB1dCwgU2NlbmVDb21wb25lbnR9IGZyb20gJy4vLi4vc2NlbmUtY29tcG9uZW50L1NjZW5lQ29tcG9uZW50JztcbmltcG9ydCB7SVBhaW50ZXIyZH0gZnJvbSBcIi4vQ2FudmFzUmVuZGVyZXJcIjtcbmltcG9ydCB7U2l6ZX0gZnJvbSBcIi4vUGxhbmVSZW5kZXJlclwiO1xudHlwZSBJbnB1dHMgPSB7XG4gIHNyYzogc3RyaW5nIHwgbnVsbDtcbiAgc3JjUG9zaXRpb246IHsgeDogbnVtYmVyLCB5OiBudW1iZXIgfTtcbiAgc3JjU2l6ZTogU2l6ZTtcbiAgZGVzdFBvc2l0aW9uOiB7IHg6IG51bWJlciwgeTogbnVtYmVyIH07XG4gIGRlc3RTaXplOiBTaXplO1xufTtcblxudHlwZSBPdXRwdXRzID0ge1xuICBwYWludGVyOiBJUGFpbnRlcjJkIHwgbnVsbDtcbn0gJiBDb21wb25lbnRPdXRwdXQ7XG5cbmV4cG9ydCBjbGFzcyBDYW52YXNJbWFnZSBleHRlbmRzIFNjZW5lQ29tcG9uZW50IGltcGxlbWVudHMgSVBhaW50ZXIyZCB7XG4gIHByaXZhdGUgaW1hZ2U6IEhUTUxJbWFnZUVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBvdmVycmlkZSBpbnB1dHM6IElucHV0cyA9IHtcbiAgICBzcmM6IG51bGwsXG4gICAgc3JjUG9zaXRpb246IHsgeDogMCwgeTogMCB9LFxuICAgIHNyY1NpemU6IHsgdzogNjQsIGg6IDY0IH0sXG4gICAgZGVzdFBvc2l0aW9uOiB7IHg6IDAsIHk6IDAgfSxcbiAgICBkZXN0U2l6ZTogeyB3OiA2NCwgaDogNjQgfSxcbiAgfVxuXG4gIG92ZXJyaWRlIG91dHB1dHMgPSB7XG4gICAgcGFpbnRlcjogbnVsbCxcbiAgfSBhcyBPdXRwdXRzO1xuXG4gIG92ZXJyaWRlIG9uSW5pdCgpIHtcbiAgICB0aGlzLm91dHB1dHMucGFpbnRlciA9IHRoaXM7XG4gICAgdGhpcy5tYXliZUxvYWRJbWFnZSgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgb25JbnB1dHNVcGRhdGVkKCkge1xuICAgIHRoaXMubWF5YmVMb2FkSW1hZ2UoKTtcbiAgfVxuXG4gIHBhaW50KGNvbnRleHQyZDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCBzaXplOiBTaXplKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmltYWdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29udGV4dDJkLmNsZWFyUmVjdCgwLCAwLCB0aGlzLmlucHV0cy5kZXN0U2l6ZS53LCB0aGlzLmlucHV0cy5kZXN0U2l6ZS5oKTtcbiAgICBpZiAodGhpcy5pbWFnZS53aWR0aCA+IDApIHtcbiAgICAgIGNvbnRleHQyZC5kcmF3SW1hZ2UodGhpcy5pbWFnZSxcbiAgICAgICAgdGhpcy5pbnB1dHMuc3JjUG9zaXRpb24ueCwgdGhpcy5pbnB1dHMuc3JjUG9zaXRpb24ueSxcbiAgICAgICAgdGhpcy5pbnB1dHMuc3JjU2l6ZS53LCB0aGlzLmlucHV0cy5zcmNTaXplLmgsXG4gICAgICAgIHRoaXMuaW5wdXRzLmRlc3RQb3NpdGlvbi54LCB0aGlzLmlucHV0cy5kZXN0UG9zaXRpb24ueSxcbiAgICAgICAgdGhpcy5pbnB1dHMuZGVzdFNpemUudywgdGhpcy5pbnB1dHMuZGVzdFNpemUuaCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXliZUxvYWRJbWFnZSgpIHtcbiAgICB0aGlzLmltYWdlID0gbnVsbDtcblxuICAgIGlmICh0aGlzLmlucHV0cy5zcmMgIT09IG51bGwgJiYgdGhpcy5pbnB1dHMuc3JjICE9PSAnJykge1xuICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICB0aGlzLmltYWdlID0gbmV3IEltYWdlKCk7XG4gICAgICB0aGlzLmltYWdlLmNyb3NzT3JpZ2luID0gJ2Fub255bW91cyc7XG4gICAgICB0aGlzLmltYWdlLnNyYyA9IHRoaXMuaW5wdXRzLnNyYztcbiAgICAgIHRoaXMuaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24oZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIC8vIHRoYXQubm90aWZ5KCdwYWludC5yZWFkeScpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyB0aGlzLm5vdGlmeSgncGFpbnQucmVhZHknKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgY2FudmFzSW1hZ2VUeXBlID0gJ21wLmNhbnZhc0ltYWdlJztcbmV4cG9ydCBmdW5jdGlvbiBtYWtlQ2FudmFzSW1hZ2UoKSB7XG4gIHJldHVybiBuZXcgQ2FudmFzSW1hZ2UoKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { SceneComponent } from '../scene-component/SceneComponent';
|
|
2
|
+
import { CanvasTexture } from 'three';
|
|
3
|
+
export class CanvasRenderer extends SceneComponent {
|
|
4
|
+
constructor() {
|
|
5
|
+
super(...arguments);
|
|
6
|
+
this.inputs = {
|
|
7
|
+
painter: null,
|
|
8
|
+
textureRes: { w: 1024, h: 1024 }, // dim for thermostat
|
|
9
|
+
};
|
|
10
|
+
this.outputs = {
|
|
11
|
+
texture: null,
|
|
12
|
+
};
|
|
13
|
+
this.events = {
|
|
14
|
+
repaint: true,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
onInit(ci) {
|
|
18
|
+
// set up canvas 2d context
|
|
19
|
+
this.canvas = document.createElement('canvas');
|
|
20
|
+
this.renderContext2D = this.canvas.getContext('2d');
|
|
21
|
+
this.outputs.texture = new CanvasTexture(this.canvas);
|
|
22
|
+
// this.inputs.painter = ci; // FOR TV ONLY
|
|
23
|
+
this.resize(this.inputs.textureRes);
|
|
24
|
+
this.repaint();
|
|
25
|
+
}
|
|
26
|
+
setCanvasNestThermostatPainter(sc) {
|
|
27
|
+
this.inputs.painter = sc;
|
|
28
|
+
}
|
|
29
|
+
onInputsUpdated(oldInputs) {
|
|
30
|
+
if (oldInputs.textureRes.w !== this.inputs.textureRes.w ||
|
|
31
|
+
oldInputs.textureRes.h !== this.inputs.textureRes.h) {
|
|
32
|
+
this.resize(this.inputs.textureRes);
|
|
33
|
+
}
|
|
34
|
+
if (oldInputs.painter !== this.inputs.painter) {
|
|
35
|
+
this.repaint();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
onEvent(eventType, _eventData) {
|
|
39
|
+
if (eventType === 'repaint') {
|
|
40
|
+
this.repaint();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
onDestroy() {
|
|
44
|
+
this.outputs.texture.dispose();
|
|
45
|
+
this.outputs.texture = null;
|
|
46
|
+
}
|
|
47
|
+
resize(size) {
|
|
48
|
+
this.canvas.width = size.w;
|
|
49
|
+
this.canvas.height = size.h;
|
|
50
|
+
}
|
|
51
|
+
repaint() {
|
|
52
|
+
if (this.inputs.painter) {
|
|
53
|
+
this.inputs.painter.paint(this.renderContext2D, this.inputs.textureRes);
|
|
54
|
+
this.outputs.texture.needsUpdate = true;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export const canvasRendererType = 'mp.canvasRenderer';
|
|
59
|
+
export function makeCanvasRenderer() {
|
|
60
|
+
return new CanvasRenderer();
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FudmFzUmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL21hdHRlcnBvcnQtZXh0ZW5zaW9ucy9uZXN0LXRoZXJtb3N0YXQvQ2FudmFzUmVuZGVyZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBbUIsTUFBTSxtQ0FBbUMsQ0FBQztBQUVwRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBcUJ0QyxNQUFNLE9BQU8sY0FBZSxTQUFRLGNBQWM7SUFBbEQ7O1FBSVcsV0FBTSxHQUFXO1lBQ3hCLE9BQU8sRUFBRSxJQUFJO1lBQ2IsVUFBVSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUscUJBQXFCO1NBQ3hELENBQUE7UUFFUSxZQUFPLEdBQUc7WUFDakIsT0FBTyxFQUFFLElBQUk7U0FDSCxDQUFDO1FBRUosV0FBTSxHQUFHO1lBQ2hCLE9BQU8sRUFBRSxJQUFJO1NBQ0osQ0FBQztJQW9EZCxDQUFDO0lBbERVLE1BQU0sQ0FBQyxFQUFnQjtRQUU5QiwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELDJDQUEyQztRQUUzQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCw4QkFBOEIsQ0FBQyxFQUFFO1FBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRVEsZUFBZSxDQUFDLFNBQWlCO1FBQ3hDLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNuRCxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUU7WUFDdkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3JDO1FBRUQsSUFBSSxTQUFTLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1lBQzdDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNoQjtJQUNILENBQUM7SUFFUSxPQUFPLENBQUMsU0FBaUIsRUFBRSxVQUFtQjtRQUNyRCxJQUFJLFNBQVMsS0FBSyxTQUFTLEVBQUU7WUFDM0IsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQztJQUVRLFNBQVM7UUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQzlCLENBQUM7SUFFTyxNQUFNLENBQUMsSUFBVTtRQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDeEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztTQUN6QztJQUNILENBQUM7Q0FFRjtBQU9ELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLG1CQUFtQixDQUFDO0FBQ3RELE1BQU0sVUFBVSxrQkFBa0I7SUFDaEMsT0FBTyxJQUFJLGNBQWMsRUFBRSxDQUFDO0FBQzlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY2VuZUNvbXBvbmVudCwgQ29tcG9uZW50T3V0cHV0IH0gZnJvbSAnLi4vc2NlbmUtY29tcG9uZW50L1NjZW5lQ29tcG9uZW50JztcbmltcG9ydCB0eXBlIHsgVGV4dHVyZSB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IENhbnZhc1RleHR1cmUgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBTaXplIH0gZnJvbSAnLi9QbGFuZVJlbmRlcmVyJztcbmltcG9ydCB7IENhbnZhc0ltYWdlIH0gZnJvbSAnLi9DYW52YXNJbWFnZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBhaW50ZXIyZCB7XG4gIHBhaW50KGNvbnRleHQyZDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCBzaXplOiBTaXplKTogdm9pZDtcbn1cblxudHlwZSBJbnB1dHMgPSB7XG4gIHBhaW50ZXI6IElQYWludGVyMmQgfCBudWxsO1xuICB0ZXh0dXJlUmVzOiBTaXplO1xufVxuXG50eXBlIE91dHB1dHMgPSB7XG4gIHRleHR1cmU6IFRleHR1cmUgfCBudWxsO1xufSAmIENvbXBvbmVudE91dHB1dDtcblxudHlwZSBFdmVudHMgPSB7XG4gIHJlcGFpbnQ6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY2xhc3MgQ2FudmFzUmVuZGVyZXIgZXh0ZW5kcyBTY2VuZUNvbXBvbmVudCB7XG4gIHByaXZhdGUgY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudDtcbiAgcHJpdmF0ZSByZW5kZXJDb250ZXh0MkQ6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDtcblxuICBvdmVycmlkZSBpbnB1dHM6IElucHV0cyA9IHtcbiAgICBwYWludGVyOiBudWxsLFxuICAgIHRleHR1cmVSZXM6IHsgdzogMTAyNCwgaDogMTAyNCB9LCAvLyBkaW0gZm9yIHRoZXJtb3N0YXRcbiAgfVxuXG4gIG92ZXJyaWRlIG91dHB1dHMgPSB7XG4gICAgdGV4dHVyZTogbnVsbCxcbiAgfSBhcyBPdXRwdXRzO1xuXG4gIG92ZXJyaWRlIGV2ZW50cyA9IHtcbiAgICByZXBhaW50OiB0cnVlLFxuICB9IGFzIEV2ZW50cztcblxuICBvdmVycmlkZSBvbkluaXQoY2k/OiBDYW52YXNJbWFnZSkge1xuXG4gICAgLy8gc2V0IHVwIGNhbnZhcyAyZCBjb250ZXh0XG4gICAgdGhpcy5jYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICB0aGlzLnJlbmRlckNvbnRleHQyRCA9IHRoaXMuY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgdGhpcy5vdXRwdXRzLnRleHR1cmUgPSBuZXcgQ2FudmFzVGV4dHVyZSh0aGlzLmNhbnZhcyk7XG4gICAgLy8gdGhpcy5pbnB1dHMucGFpbnRlciA9IGNpOyAvLyBGT1IgVFYgT05MWVxuXG4gICAgdGhpcy5yZXNpemUodGhpcy5pbnB1dHMudGV4dHVyZVJlcyk7XG4gICAgdGhpcy5yZXBhaW50KCk7XG4gIH1cblxuICBzZXRDYW52YXNOZXN0VGhlcm1vc3RhdFBhaW50ZXIoc2Mpe1xuICAgIHRoaXMuaW5wdXRzLnBhaW50ZXIgPSBzYztcbiAgfVxuXG4gIG92ZXJyaWRlIG9uSW5wdXRzVXBkYXRlZChvbGRJbnB1dHM6IElucHV0cykge1xuICAgIGlmIChvbGRJbnB1dHMudGV4dHVyZVJlcy53ICE9PSB0aGlzLmlucHV0cy50ZXh0dXJlUmVzLncgfHxcbiAgICAgICAgb2xkSW5wdXRzLnRleHR1cmVSZXMuaCAhPT0gdGhpcy5pbnB1dHMudGV4dHVyZVJlcy5oKSB7XG4gICAgICB0aGlzLnJlc2l6ZSh0aGlzLmlucHV0cy50ZXh0dXJlUmVzKTtcbiAgICB9XG5cbiAgICBpZiAob2xkSW5wdXRzLnBhaW50ZXIgIT09IHRoaXMuaW5wdXRzLnBhaW50ZXIpIHtcbiAgICAgIHRoaXMucmVwYWludCgpO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIG9uRXZlbnQoZXZlbnRUeXBlOiBzdHJpbmcsIF9ldmVudERhdGE6IHVua25vd24pIHtcbiAgICBpZiAoZXZlbnRUeXBlID09PSAncmVwYWludCcpIHtcbiAgICAgIHRoaXMucmVwYWludCgpO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIG9uRGVzdHJveSgpIHtcbiAgICB0aGlzLm91dHB1dHMudGV4dHVyZS5kaXNwb3NlKCk7XG4gICAgdGhpcy5vdXRwdXRzLnRleHR1cmUgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNpemUoc2l6ZTogU2l6ZSkge1xuICAgIHRoaXMuY2FudmFzLndpZHRoID0gc2l6ZS53O1xuICAgIHRoaXMuY2FudmFzLmhlaWdodCA9IHNpemUuaDtcbiAgfVxuXG4gIHB1YmxpYyByZXBhaW50KCkge1xuICAgIGlmICh0aGlzLmlucHV0cy5wYWludGVyKSB7XG4gICAgICB0aGlzLmlucHV0cy5wYWludGVyLnBhaW50KHRoaXMucmVuZGVyQ29udGV4dDJELCB0aGlzLmlucHV0cy50ZXh0dXJlUmVzKTtcbiAgICAgIHRoaXMub3V0cHV0cy50ZXh0dXJlLm5lZWRzVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDYW52YXNSZW5kZXJlciBleHRlbmRzIFNjZW5lQ29tcG9uZW50e1xuICBpbnB1dHM6IElucHV0cztcbiAgb3V0cHV0czogT3V0cHV0cztcbn1cblxuZXhwb3J0IGNvbnN0IGNhbnZhc1JlbmRlcmVyVHlwZSA9ICdtcC5jYW52YXNSZW5kZXJlcic7XG5leHBvcnQgZnVuY3Rpb24gbWFrZUNhbnZhc1JlbmRlcmVyKCkge1xuICByZXR1cm4gbmV3IENhbnZhc1JlbmRlcmVyKCk7XG59XG4iXX0=
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { SceneComponent } from '../scene-component/SceneComponent';
|
|
2
|
+
import { AnimationMixer, LoopOnce, AnimationClip, VectorKeyframeTrack, InterpolateSmooth, MeshBasicMaterial } from 'three';
|
|
3
|
+
const HoverEvent = 'hover';
|
|
4
|
+
const UnhoverEvent = 'unhover';
|
|
5
|
+
const RepaintEvent = 'repaint';
|
|
6
|
+
export class NestThermostat extends SceneComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
this.cv = null;
|
|
10
|
+
this.planeRenderer = null;
|
|
11
|
+
this.rootScene = null;
|
|
12
|
+
this.mixer = null;
|
|
13
|
+
this.onEnterClip = null;
|
|
14
|
+
this.mesh = null;
|
|
15
|
+
this.currentTime = 0;
|
|
16
|
+
this.nextUpdate = 0;
|
|
17
|
+
this.temperature = 0;
|
|
18
|
+
this.tempChangeRange = 5;
|
|
19
|
+
this.inputs = {
|
|
20
|
+
loadingState: 'Idle',
|
|
21
|
+
texture: null,
|
|
22
|
+
updateInterval: 1000,
|
|
23
|
+
};
|
|
24
|
+
this.outputs = {
|
|
25
|
+
painter: null,
|
|
26
|
+
visible: false,
|
|
27
|
+
};
|
|
28
|
+
this.events = {
|
|
29
|
+
[HoverEvent]: true,
|
|
30
|
+
[UnhoverEvent]: true,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
onInit(modelNode, plane, inputTexture) {
|
|
34
|
+
if (!this.context) {
|
|
35
|
+
this.context = {
|
|
36
|
+
root: modelNode
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
this.inputs.texture = inputTexture;
|
|
40
|
+
const root = this.context.root;
|
|
41
|
+
const THREE = this.context.three;
|
|
42
|
+
this.planeRenderer = plane;
|
|
43
|
+
this.planeRenderer.outputs.objectRoot.translateZ(0.05);
|
|
44
|
+
this.planeRenderer.outputs.objectRoot.translateY(0.4);
|
|
45
|
+
this.planeRenderer.outputs.objectRoot.scale.set(0.5, 0.5, 0.5);
|
|
46
|
+
// planeRenderer.inputs.localPosition.z = 0.05;
|
|
47
|
+
// planeRenderer.inputs.localPosition.y = 0.4;
|
|
48
|
+
// planeRenderer.inputs.localScale = {x: 0.5, y: 0.5, z: 0.5};
|
|
49
|
+
this.outputs.painter = this;
|
|
50
|
+
this.mixer = new AnimationMixer(this.planeRenderer.outputs.objectRoot);
|
|
51
|
+
const tm = 0.2;
|
|
52
|
+
const positionTrack = new VectorKeyframeTrack('.scale', [0, tm], [
|
|
53
|
+
0, 0, 0,
|
|
54
|
+
0.5, 0.5, 0.5
|
|
55
|
+
], InterpolateSmooth);
|
|
56
|
+
this.onEnterClip = new AnimationClip(null, tm, [positionTrack]);
|
|
57
|
+
}
|
|
58
|
+
onInputsUpdated() {
|
|
59
|
+
if (this.inputs.loadingState === 'Loaded') {
|
|
60
|
+
const lines = [];
|
|
61
|
+
//@ts-ignore
|
|
62
|
+
this.context.root.obj3D.traverse((obj) => {
|
|
63
|
+
// we dont want line segments, track them and remove them.
|
|
64
|
+
if (obj.type === 'LineSegments') {
|
|
65
|
+
lines.push(obj);
|
|
66
|
+
}
|
|
67
|
+
else if (obj.type === 'Mesh') {
|
|
68
|
+
this.mesh = obj;
|
|
69
|
+
const materials = this.mesh.material;
|
|
70
|
+
materials.forEach((m, idx) => {
|
|
71
|
+
if (m && m.map.source.data.outerHTML.indexOf('_5b76dbe388862300126c1e14') !== -1) {
|
|
72
|
+
const newMaterial = new MeshBasicMaterial({ map: this.inputs.texture });
|
|
73
|
+
this.mesh.material[idx] = newMaterial;
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
// remove the line segments.
|
|
79
|
+
lines.forEach((line) => {
|
|
80
|
+
line.parent.remove(line);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
onEvent(eventType, eventData) {
|
|
85
|
+
if (eventType === HoverEvent) {
|
|
86
|
+
const data = eventData;
|
|
87
|
+
if (data.hover) {
|
|
88
|
+
this.outputs.visible = true;
|
|
89
|
+
const onEnterAction = this.mixer.clipAction(this.onEnterClip);
|
|
90
|
+
onEnterAction.stop();
|
|
91
|
+
onEnterAction.loop = LoopOnce;
|
|
92
|
+
onEnterAction.clampWhenFinished = true;
|
|
93
|
+
onEnterAction.play();
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
this.outputs.visible = false;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
paint(context2d, size) {
|
|
101
|
+
const x = 490;
|
|
102
|
+
const y = 490;
|
|
103
|
+
context2d.fillStyle = 'black';
|
|
104
|
+
context2d.beginPath();
|
|
105
|
+
context2d.arc(x, y, 400, 0, Math.PI * 2);
|
|
106
|
+
context2d.fill();
|
|
107
|
+
context2d.fillStyle = '#CF5300';
|
|
108
|
+
context2d.beginPath();
|
|
109
|
+
context2d.arc(x, y, 300, 0, Math.PI * 2);
|
|
110
|
+
context2d.fill();
|
|
111
|
+
context2d.beginPath();
|
|
112
|
+
context2d.strokeStyle = 'orange';
|
|
113
|
+
context2d.arc(x, y, 240, 0.75 * Math.PI, 0.25 * Math.PI);
|
|
114
|
+
context2d.lineCap = 'butt';
|
|
115
|
+
context2d.lineWidth = 80;
|
|
116
|
+
context2d.stroke();
|
|
117
|
+
context2d.fillStyle = 'white';
|
|
118
|
+
context2d.font = '220px Arial';
|
|
119
|
+
context2d.fillText(`${this.temperature}`, x - 115, y + 75);
|
|
120
|
+
this.outputs.visible = true;
|
|
121
|
+
}
|
|
122
|
+
onTick(delta) {
|
|
123
|
+
this.currentTime += delta;
|
|
124
|
+
if (this.mixer) {
|
|
125
|
+
this.mixer.update(delta / 1000);
|
|
126
|
+
}
|
|
127
|
+
if (this.currentTime > this.nextUpdate) {
|
|
128
|
+
this.nextUpdate += this.inputs.updateInterval;
|
|
129
|
+
this.temperature += (Math.random() * this.tempChangeRange);
|
|
130
|
+
this.temperature = Math.trunc(this.temperature);
|
|
131
|
+
if (this.temperature > 99) {
|
|
132
|
+
this.temperature = 99;
|
|
133
|
+
this.tempChangeRange = -this.tempChangeRange;
|
|
134
|
+
}
|
|
135
|
+
if (this.temperature < 10) {
|
|
136
|
+
this.temperature = 10;
|
|
137
|
+
this.tempChangeRange = -this.tempChangeRange;
|
|
138
|
+
}
|
|
139
|
+
this.component.notify(RepaintEvent);
|
|
140
|
+
this.cv.repaint();
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
setComponent(component, plane, cv) {
|
|
144
|
+
component.onTick = this.onTick.bind(this);
|
|
145
|
+
// plane.onTick = this.onTick.bind(this);
|
|
146
|
+
this.cv = cv;
|
|
147
|
+
this.component = component;
|
|
148
|
+
this.context = component.context;
|
|
149
|
+
}
|
|
150
|
+
setRootScene(rootScene) {
|
|
151
|
+
this.rootScene = rootScene;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
export const nestThermostatType = 'mp.nestThermostat';
|
|
155
|
+
export const makeNestThermostat = function () {
|
|
156
|
+
return new NestThermostat();
|
|
157
|
+
};
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmVzdFRoZXJtb3N0YXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL21hdHRlcnBvcnQtZXh0ZW5zaW9ucy9uZXN0LXRoZXJtb3N0YXQvTmVzdFRoZXJtb3N0YXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGNBQWMsRUFBb0MsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRyxPQUFPLEVBRUwsY0FBYyxFQUVkLFFBQVEsRUFDUixhQUFhLEVBSWIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixpQkFBaUIsRUFFbEIsTUFBTSxPQUFPLENBQUM7QUFJZixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUM7QUFDM0IsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDO0FBQy9CLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQztBQWMvQixNQUFNLE9BQU8sY0FBZSxTQUFRLGNBQWM7SUFBbEQ7O1FBQ1UsT0FBRSxHQUEwQixJQUFJLENBQUM7UUFDakMsa0JBQWEsR0FBeUIsSUFBSSxDQUFDO1FBQzNDLGNBQVMsR0FBb0IsSUFBSSxDQUFDO1FBQ2xDLFVBQUssR0FBMEIsSUFBSSxDQUFDO1FBQ3BDLGdCQUFXLEdBQXlCLElBQUksQ0FBQztRQUN6QyxTQUFJLEdBQWdCLElBQUksQ0FBQztRQUN6QixnQkFBVyxHQUFXLENBQUMsQ0FBQztRQUN4QixlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBQ3ZCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBSTNCLFdBQU0sR0FBVztZQUN4QixZQUFZLEVBQUUsTUFBTTtZQUNwQixPQUFPLEVBQUUsSUFBSTtZQUNiLGNBQWMsRUFBRSxJQUFJO1NBQ3JCLENBQUE7UUFFUSxZQUFPLEdBQUc7WUFDakIsT0FBTyxFQUFFLElBQUk7WUFDYixPQUFPLEVBQUUsS0FBSztTQUNKLENB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QUUsQ0FBQztRQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQztJQUNuQyxDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQW1CO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLG1CQUFtQixDQUFDO0FBQ3RELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLE9BQU8sSUFBSSxjQUFjLEVBQUUsQ0FBQztBQUM5QixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1NjZW5lQ29tcG9uZW50LCBDb21wb25lbnRPdXRwdXQsIENvbXBvbmVudENvbnRleHR9IGZyb20gJy4uL3NjZW5lLWNvbXBvbmVudC9TY2VuZUNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBPYmplY3QzRCxcbiAgQW5pbWF0aW9uTWl4ZXIsXG4gIEFuaW1hdGlvbkFjdGlvbixcbiAgTG9vcE9uY2UsXG4gIEFuaW1hdGlvbkNsaXAsXG4gIE1lc2gsXG4gIFRleHR1cmUsXG4gIE1lc2hMYW1iZXJ0TWF0ZXJpYWwsXG4gIFZlY3RvcktleWZyYW1lVHJhY2ssXG4gIEludGVycG9sYXRlU21vb3RoLFxuICBNZXNoQmFzaWNNYXRlcmlhbCxcbiAgTGluZVNlZ21lbnRzXG59IGZyb20gJ3RocmVlJztcbmltcG9ydCB7Q2FudmFzUmVuZGVyZXIsIElQYWludGVyMmR9IGZyb20gJy4vQ2FudmFzUmVuZGVyZXInO1xuaW1wb3J0IHtQbGFuZVJlbmRlcmVyLCBTaXplfSBmcm9tICcuL1BsYW5lUmVuZGVyZXInO1xuXG5jb25zdCBIb3ZlckV2ZW50ID0gJ2hvdmVyJztcbmNvbnN0IFVuaG92ZXJFdmVudCA9ICd1bmhvdmVyJztcbmNvbnN0IFJlcGFpbnRFdmVudCA9ICdyZXBhaW50JztcblxudHlwZSBJbnB1dHMgPSB7XG4gIGxvYWRpbmdTdGF0ZTogc3RyaW5nO1xuICB0ZXh0dXJlOiBUZXh0dXJlIHwgbnVsbDtcbiAgdXBkYXRlSW50ZXJ2YWw6IG51bWJlcjtcbn1cblxudHlwZSBPdXRwdXRzID0ge1xuICBwYWludGVyOiBJUGFpbnRlcjJkIHwgbnVsbDtcbiAgdmlzaWJsZTogYm9vbGVhbjtcbn0gJiBDb21wb25lbnRPdXRwdXQ7XG5cblxuZXhwb3J0IGNsYXNzIE5lc3RUaGVybW9zdGF0IGV4dGVuZHMgU2NlbmVDb21wb25lbnQgaW1wbGVtZW50cyBJUGFpbnRlcjJkIHtcbiAgcHJpdmF0ZSBjdjogQ2FudmFzUmVuZGVyZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBwbGFuZVJlbmRlcmVyOiBQbGFuZVJlbmRlcmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgcm9vdFNjZW5lOiBPYmplY3QzRCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIG1peGVyOiBBbmltYXRpb25NaXhlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIG9uRW50ZXJDbGlwOiBBbmltYXRpb25DbGlwIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgbWVzaDogTWVzaCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGN1cnJlbnRUaW1lOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIG5leHRVcGRhdGU6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgdGVtcGVyYXR1cmU6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgdGVtcENoYW5nZVJhbmdlOiBudW1iZXIgPSA1O1xuICBwcml2YXRlIGNvbXBvbmVudDogU2NlbmVDb21wb25lbnQ7XG5cblxuICBvdmVycmlkZSBpbnB1dHM6IElucHV0cyA9IHtcbiAgICBsb2FkaW5nU3RhdGU6ICdJZGxlJyxcbiAgICB0ZXh0dXJlOiBudWxsLFxuICAgIHVwZGF0ZUludGVydmFsOiAxMDAwLFxuICB9XG5cbiAgb3ZlcnJpZGUgb3V0cHV0cyA9IHtcbiAgICBwYWludGVyOiBudWxsLFxuICAgIHZpc2libGU6IGZhbHNlLFxuICB9IGFzIE91dHB1dHM7XG5cbiAgb3ZlcnJpZGUgZXZlbnRzID0ge1xuICAgIFtIb3ZlckV2ZW50XTogdHJ1ZSxcbiAgICBbVW5ob3ZlckV2ZW50XTogdHJ1ZSxcbiAgfTtcblxuICBvdmVycmlkZSBvbkluaXQobW9kZWxOb2RlPzogYW55LCBwbGFuZT86IFBsYW5lUmVuZGVyZXIsIGlucHV0VGV4dHVyZT86IGFueSkge1xuICAgIGlmICghdGhpcy5jb250ZXh0KSB7XG4gICAgICB0aGlzLmNvbnRleHQgPSB7XG4gICAgICAgIHJvb3Q6IG1vZGVsTm9kZVxuICAgICAgfSBhcyBDb21wb25lbnRDb250ZXh0O1xuICAgIH1cbiAgICB0aGlzLmlucHV0cy50ZXh0dXJlID0gaW5wdXRUZXh0dXJlO1xuICAgIGNvbnN0IHJvb3QgPSB0aGlzLmNvbnRleHQucm9vdDtcbiAgICBjb25zdCBUSFJFRSA9IHRoaXMuY29udGV4dC50aHJlZTtcblxuICAgIHRoaXMucGxhbmVSZW5kZXJlciA9IHBsYW5lO1xuICAgIHRoaXMucGxhbmVSZW5kZXJlci5vdXRwdXRzLm9iamVjdFJvb3QudHJhbnNsYXRlWigwLjA1KTtcbiAgICB0aGlzLnBsYW5lUmVuZGVyZXIub3V0cHV0cy5vYmplY3RSb290LnRyYW5zbGF0ZVkoMC40KTtcbiAgICB0aGlzLnBsYW5lUmVuZGVyZXIub3V0cHV0cy5vYmplY3RSb290LnNjYWxlLnNldCgwLjUsIDAuNSwgMC41KTtcbiAgICAvLyBwbGFuZVJlbmRlcmVyLmlucHV0cy5sb2NhbFBvc2l0aW9uLnogPSAwLjA1O1xuICAgIC8vIHBsYW5lUmVuZGVyZXIuaW5wdXRzLmxvY2FsUG9zaXRpb24ueSA9IDAuNDtcbiAgICAvLyBwbGFuZVJlbmRlcmVyLmlucHV0cy5sb2NhbFNjYWxlID0ge3g6IDAuNSwgeTogMC41LCB6OiAwLjV9O1xuXG4gICAgdGhpcy5vdXRwdXRzLnBhaW50ZXIgPSB0aGlzO1xuXG4gICAgdGhpcy5taXhlciA9IG5ldyBBbmltYXRpb25NaXhlcih0aGlzLnBsYW5lUmVuZGVyZXIub3V0cHV0cy5vYmplY3RSb290KTtcblxuICAgIGNvbnN0IHRtID0gMC4yO1xuICAgIGNvbnN0IHBvc2l0aW9uVHJhY2sgPSBuZXcgVmVjdG9yS2V5ZnJhbWVUcmFjaygnLnNjYWxlJywgWzAsIHRtXSwgW1xuICAgICAgMCwgMCwgMCxcbiAgICAgIDAuNSwgMC41LCAwLjVcbiAgICBdLCBJbnRlcnBvbGF0ZVNtb290aCk7XG4gICAgdGhpcy5vbkVudGVyQ2xpcCA9IG5ldyBBbmltYXRpb25DbGlwKG51bGwsIHRtLCBbcG9zaXRpb25UcmFja10pO1xuICB9XG5cbiAgb3ZlcnJpZGUgb25JbnB1dHNVcGRhdGVkKCkge1xuICAgIGlmICh0aGlzLmlucHV0cy5sb2FkaW5nU3RhdGUgPT09ICdMb2FkZWQnKSB7XG4gICAgICBjb25zdCBsaW5lczogTGluZVNlZ21lbnRzW10gPSBbXTtcblxuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICB0aGlzLmNvbnRleHQucm9vdC5vYmozRC50cmF2ZXJzZSgob2JqOiBPYmplY3QzRCkgPT4ge1xuICAgICAgICAvLyB3ZSBkb250IHdhbnQgbGluZSBzZWdtZW50cywgdHJhY2sgdGhlbSBhbmQgcmVtb3ZlIHRoZW0uXG4gICAgICAgIGlmIChvYmoudHlwZSA9PT0gJ0xpbmVTZWdtZW50cycpIHtcbiAgICAgICAgICBsaW5lcy5wdXNoKG9iaiBhcyBMaW5lU2VnbWVudHMpO1xuICAgICAgICB9IGVsc2UgaWYgKG9iai50eXBlID09PSAnTWVzaCcpIHtcbiAgICAgICAgICB0aGlzLm1lc2ggPSBvYmogYXMgTWVzaDtcblxuICAgICAgICAgIGNvbnN0IG1hdGVyaWFscyA9IHRoaXMubWVzaC5tYXRlcmlhbCBhcyBNZXNoTGFtYmVydE1hdGVyaWFsO1xuICAgICAgICAgIG1hdGVyaWFscy5mb3JFYWNoKChtLCBpZHgpID0+IHtcbiAgICAgICAgICAgIGlmIChtICYmIG0ubWFwLnNvdXJjZS5kYXRhLm91dGVySFRNTC5pbmRleE9mKCdfNWI3NmRiZTM4ODg2MjMwMDEyNmMxZTE0JykgIT09IC0xKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld01hdGVyaWFsID0gbmV3IE1lc2hCYXNpY01hdGVyaWFsKHttYXA6IHRoaXMuaW5wdXRzLnRleHR1cmV9KTtcbiAgICAgICAgICAgICAgdGhpcy5tZXNoLm1hdGVyaWFsW2lkeF0gPSBuZXdNYXRlcmlhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuXG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyByZW1vdmUgdGhlIGxpbmUgc2VnbWVudHMuXG4gICAgICBsaW5lcy5mb3JFYWNoKChsaW5lOiBMaW5lU2VnbWVudHMpID0+IHtcbiAgICAgICAgbGluZS5wYXJlbnQucmVtb3ZlKGxpbmUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgb25FdmVudChldmVudFR5cGU6IHN0cmluZywgZXZlbnREYXRhOiB1bmtub3duKTogdm9pZCB7XG4gICAgaWYgKGV2ZW50VHlwZSA9PT0gSG92ZXJFdmVudCkge1xuICAgICAgY29uc3QgZGF0YTogYW55ID0gZXZlbnREYXRhO1xuICAgICAgaWYgKGRhdGEuaG92ZXIpIHtcbiAgICAgICAgdGhpcy5vdXRwdXRzLnZpc2libGUgPSB0cnVlO1xuICAgICAgICBjb25zdCBvbkVudGVyQWN0aW9uOiBBbmltYXRpb25BY3Rpb24gPSB0aGlzLm1peGVyLmNsaXBBY3Rpb24odGhpcy5vbkVudGVyQ2xpcCk7XG4gICAgICAgIG9uRW50ZXJBY3Rpb24uc3RvcCgpO1xuICAgICAgICBvbkVudGVyQWN0aW9uLmxvb3AgPSBMb29wT25jZTtcbiAgICAgICAgb25FbnRlckFjdGlvbi5jbGFtcFdoZW5GaW5pc2hlZCA9IHRydWU7XG4gICAgICAgIG9uRW50ZXJBY3Rpb24ucGxheSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vdXRwdXRzLnZpc2libGUgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwYWludChjb250ZXh0MmQ6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgc2l6ZTogU2l6ZSk6IHZvaWQge1xuICAgIGNvbnN0IHggPSA0OTA7XG4gICAgY29uc3QgeSA9IDQ5MDtcblxuICAgIGNvbnRleHQyZC5maWxsU3R5bGUgPSAnYmxhY2snO1xuICAgIGNvbnRleHQyZC5iZWdpblBhdGgoKTtcbiAgICBjb250ZXh0MmQuYXJjKHgsIHksIDQwMCwgMCwgTWF0aC5QSSAqIDIpO1xuICAgIGNvbnRleHQyZC5maWxsKCk7XG5cbiAgICBjb250ZXh0MmQuZmlsbFN0eWxlID0gJyNDRjUzMDAnO1xuICAgIGNvbnRleHQyZC5iZWdpblBhdGgoKTtcbiAgICBjb250ZXh0MmQuYXJjKHgsIHksIDMwMCwgMCwgTWF0aC5QSSAqIDIpO1xuICAgIGNvbnRleHQyZC5maWxsKCk7XG5cbiAgICBjb250ZXh0MmQuYmVnaW5QYXRoKCk7XG4gICAgY29udGV4dDJkLnN0cm9rZVN0eWxlID0gJ29yYW5nZSc7XG4gICAgY29udGV4dDJkLmFyYyh4LCB5LCAyNDAsIDAuNzUgKiBNYXRoLlBJLCAwLjI1ICogTWF0aC5QSSk7XG4gICAgY29udGV4dDJkLmxpbmVDYXAgPSAnYnV0dCc7XG4gICAgY29udGV4dDJkLmxpbmVXaWR0aCA9IDgwO1xuICAgIGNvbnRleHQyZC5zdHJva2UoKTtcblxuICAgIGNvbnRleHQyZC5maWxsU3R5bGUgPSAnd2hpdGUnO1xuICAgIGNvbnRleHQyZC5mb250ID0gJzIyMHB4IEFyaWFsJztcbiAgICBjb250ZXh0MmQuZmlsbFRleHQoYCR7dGhpcy50ZW1wZXJhdHVyZX1gLCB4IC0gMTE1LCB5ICsgNzUpO1xuICAgIHRoaXMub3V0cHV0cy52aXNpYmxlID0gdHJ1ZTtcbiAgfVxuXG4gIG92ZXJyaWRlIG9uVGljayhkZWx0YTogbnVtYmVyKSB7XG4gICAgdGhpcy5jdXJyZW50VGltZSArPSBkZWx0YTtcblxuICAgIGlmICh0aGlzLm1peGVyKSB7XG4gICAgICB0aGlzLm1peGVyLnVwZGF0ZShkZWx0YSAvIDEwMDApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmN1cnJlbnRUaW1lID4gdGhpcy5uZXh0VXBkYXRlKSB7XG4gICAgICB0aGlzLm5leHRVcGRhdGUgKz0gdGhpcy5pbnB1dHMudXBkYXRlSW50ZXJ2YWw7XG5cbiAgICAgIHRoaXMudGVtcGVyYXR1cmUgKz0gKE1hdGgucmFuZG9tKCkgKiB0aGlzLnRlbXBDaGFuZ2VSYW5nZSk7XG4gICAgICB0aGlzLnRlbXBlcmF0dXJlID0gTWF0aC50cnVuYyh0aGlzLnRlbXBlcmF0dXJlKTtcblxuICAgICAgaWYgKHRoaXMudGVtcGVyYXR1cmUgPiA5OSkge1xuICAgICAgICB0aGlzLnRlbXBlcmF0dXJlID0gOTk7XG4gICAgICAgIHRoaXMudGVtcENoYW5nZVJhbmdlID0gLXRoaXMudGVtcENoYW5nZVJhbmdlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudGVtcGVyYXR1cmUgPCAxMCkge1xuICAgICAgICB0aGlzLnRlbXBlcmF0dXJlID0gMTA7XG4gICAgICAgIHRoaXMudGVtcENoYW5nZVJhbmdlID0gLXRoaXMudGVtcENoYW5nZVJhbmdlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNvbXBvbmVudC5ub3RpZnkoUmVwYWludEV2ZW50KTtcbiAgICAgIHRoaXMuY3YucmVwYWludCgpXG4gICAgfVxuICB9XG5cbiAgc2V0Q29tcG9uZW50KGNvbXBvbmVudDogU2NlbmVDb21wb25lbnQsIHBsYW5lOiBQbGFuZVJlbmRlcmVyLCBjdjogQ2FudmFzUmVuZGVyZXIpIHtcbiAgICBjb21wb25lbnQub25UaWNrID0gdGhpcy5vblRpY2suYmluZCh0aGlzKTtcbiAgICAvLyBwbGFuZS5vblRpY2sgPSB0aGlzLm9uVGljay5iaW5kKHRoaXMpO1xuICAgIHRoaXMuY3YgPSBjdjtcbiAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICB0aGlzLmNvbnRleHQgPSBjb21wb25lbnQuY29udGV4dDtcbiAgfVxuXG4gIHNldFJvb3RTY2VuZShyb290U2NlbmU6IE9iamVjdDNEKSB7XG4gICAgdGhpcy5yb290U2NlbmUgPSByb290U2NlbmU7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IG5lc3RUaGVybW9zdGF0VHlwZSA9ICdtcC5uZXN0VGhlcm1vc3RhdCc7XG5leHBvcnQgY29uc3QgbWFrZU5lc3RUaGVybW9zdGF0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IE5lc3RUaGVybW9zdGF0KCk7XG59XG4iXX0=
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { SceneComponent, ComponentInteractionType, } from '../scene-component/SceneComponent';
|
|
2
|
+
import { Mesh, MeshBasicMaterial, Group, PlaneBufferGeometry } from 'three';
|
|
3
|
+
export class PlaneRenderer extends SceneComponent {
|
|
4
|
+
constructor() {
|
|
5
|
+
super(...arguments);
|
|
6
|
+
this.rootScene = null;
|
|
7
|
+
this.inputs = {
|
|
8
|
+
texture: null,
|
|
9
|
+
aspect: 1,
|
|
10
|
+
transparent: true,
|
|
11
|
+
visible: true,
|
|
12
|
+
opacity: 1,
|
|
13
|
+
polygonOffset: false,
|
|
14
|
+
polygonOffsetFactor: 0,
|
|
15
|
+
polygonOffsetUnits: 0,
|
|
16
|
+
localScale: { x: 1, y: 1, z: 1 },
|
|
17
|
+
localPosition: { x: 0, y: 0, z: 0 },
|
|
18
|
+
};
|
|
19
|
+
this.events = {
|
|
20
|
+
[ComponentInteractionType.CLICK]: true,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
onInit(modelNode, inputTexture) {
|
|
24
|
+
this.inputs.texture = inputTexture;
|
|
25
|
+
if (!this.context) {
|
|
26
|
+
this.context = {
|
|
27
|
+
root: modelNode
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
this.pivotNode = new Group();
|
|
31
|
+
this.mesh = new Mesh(new PlaneBufferGeometry(1.0, 1.0), new MeshBasicMaterial({
|
|
32
|
+
transparent: this.inputs.transparent,
|
|
33
|
+
map: this.inputs.texture,
|
|
34
|
+
opacity: this.inputs.opacity,
|
|
35
|
+
polygonOffset: this.inputs.polygonOffset,
|
|
36
|
+
polygonOffsetFactor: this.inputs.polygonOffsetFactor,
|
|
37
|
+
polygonOffsetUnits: this.inputs.polygonOffsetUnits,
|
|
38
|
+
}));
|
|
39
|
+
this.mesh.scale.set(this.inputs.localScale.x, this.inputs.localScale.y / this.inputs.aspect, this.inputs.localScale.z);
|
|
40
|
+
this.mesh.position.set(this.inputs.localPosition.x, this.inputs.localPosition.y, this.inputs.localPosition.z);
|
|
41
|
+
this.mesh.updateMatrixWorld();
|
|
42
|
+
this.pivotNode.add(this.mesh);
|
|
43
|
+
this.outputs.objectRoot = this.pivotNode;
|
|
44
|
+
this.outputs.collider = this.pivotNode;
|
|
45
|
+
this.mesh.visible = this.inputs.visible;
|
|
46
|
+
}
|
|
47
|
+
onEvent(eventType, eventData) {
|
|
48
|
+
this.notify(eventType, eventData);
|
|
49
|
+
}
|
|
50
|
+
onInputsUpdated(oldInputs) {
|
|
51
|
+
if (oldInputs.transparent !== this.inputs.transparent) {
|
|
52
|
+
this.mesh.material.transparent = this.inputs.transparent;
|
|
53
|
+
}
|
|
54
|
+
if (oldInputs.texture !== this.inputs.texture) {
|
|
55
|
+
const material = this.mesh.material;
|
|
56
|
+
material.map = this.inputs.texture;
|
|
57
|
+
material.needsUpdate = true;
|
|
58
|
+
}
|
|
59
|
+
if (oldInputs.visible !== this.inputs.visible) {
|
|
60
|
+
this.mesh.visible = this.inputs.visible;
|
|
61
|
+
}
|
|
62
|
+
if (oldInputs.polygonOffset !== this.inputs.polygonOffset) {
|
|
63
|
+
const material = this.mesh.material;
|
|
64
|
+
material.polygonOffset = this.inputs.polygonOffset;
|
|
65
|
+
material.polygonOffsetFactor = this.inputs.polygonOffsetFactor;
|
|
66
|
+
material.polygonOffsetUnits = this.inputs.polygonOffsetUnits;
|
|
67
|
+
}
|
|
68
|
+
this.mesh.scale.set(this.inputs.localScale.x, this.inputs.localScale.y / this.inputs.aspect, this.inputs.localScale.z);
|
|
69
|
+
this.mesh.position.set(this.inputs.localPosition.x, this.inputs.localPosition.y, this.inputs.localPosition.z);
|
|
70
|
+
}
|
|
71
|
+
onDestroy() {
|
|
72
|
+
this.outputs.collider = null;
|
|
73
|
+
this.outputs.objectRoot = null;
|
|
74
|
+
this.mesh.material.dispose();
|
|
75
|
+
this.mesh.geometry.dispose();
|
|
76
|
+
}
|
|
77
|
+
setRootScene(rootScene) {
|
|
78
|
+
this.rootScene = rootScene;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
export const planeRendererType = 'mp.planeRenderer';
|
|
82
|
+
export function makePlaneRenderer() {
|
|
83
|
+
return new PlaneRenderer();
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGxhbmVSZW5kZXJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvbWF0dGVycG9ydC1leHRlbnNpb25zL25lc3QtdGhlcm1vc3RhdC9QbGFuZVJlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQUUsd0JBQXdCLEdBQW9CLE1BQU0sbUNBQW1DLENBQUM7QUFDOUcsT0FBTyxFQUVMLElBQUksRUFDSixpQkFBaUIsRUFFakIsS0FBSyxFQUNMLG1CQUFtQixFQUNwQixNQUFNLE9BQU8sQ0FBQztBQWlCZixNQUFNLE9BQU8sYUFBYyxTQUFRLGNBQWM7SUFBakQ7O1FBQ1UsY0FBUyxHQUFvQixJQUFJLENBQUM7UUFJakMsV0FBTSxHQUFXO1lBQ3hCLE9BQU8sRUFBRSxJQUFJO1lBQ2IsTUFBTSxFQUFFLENBQUM7WUFDVCxXQUFXLEVBQUUsSUFBSTtZQUNqQixPQUFPLEVBQUUsSUFBSTtZQUNiLE9BQU8sRUFBRSxDQUFDO1lBQ1YsYUFBYSxFQUFFLEtBQUs7WUFDcEIsbUJBQW1CLEVBQUUsQ0FBQztZQUN0QixrQkFBa0IsRUFBRSxDQUFDO1lBQ3JCLFVBQVUsRUFBRSxFQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFDO1lBQzlCLGFBQWEsRUFBRSxFQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFDO1NBQ2xDLENBQUE7UUFFUSxXQUFNLEdBQUc7WUFDaEIsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJO1NBQ3ZDLENBQUM7SUEwRUosQ0FBQztJQXhFVSxNQUFNLENBQUMsU0FBZSxFQUFFLFlBQWtCO1FBQ2pELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxH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WSxDQUFDLFNBQW1CO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7Q0FFRjtBQU1ELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUFDO0FBRXBELE1BQU0sVUFBVSxpQkFBaUI7SUFDL0IsT0FBTyxJQUFJLGFBQWEsRUFBRSxDQUFDO0FBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1NjZW5lQ29tcG9uZW50LCBDb21wb25lbnRJbnRlcmFjdGlvblR5cGUsIENvbXBvbmVudENvbnRleHQsfSBmcm9tICcuLi9zY2VuZS1jb21wb25lbnQvU2NlbmVDb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgVGV4dHVyZSxcbiAgTWVzaCxcbiAgTWVzaEJhc2ljTWF0ZXJpYWwsXG4gIE9iamVjdDNELFxuICBHcm91cCxcbiAgUGxhbmVCdWZmZXJHZW9tZXRyeVxufSBmcm9tICd0aHJlZSc7XG5cbmV4cG9ydCB0eXBlIFNpemUgPSB7IHc6IG51bWJlcjsgaDogbnVtYmVyOyB9O1xuXG50eXBlIElucHV0cyA9IHtcbiAgdGV4dHVyZTogVGV4dHVyZSB8IG51bGw7XG4gIGFzcGVjdDogbnVtYmVyO1xuICB0cmFuc3BhcmVudDogYm9vbGVhbjtcbiAgdmlzaWJsZTogYm9vbGVhbjtcbiAgb3BhY2l0eTogbnVtYmVyO1xuICBwb2x5Z29uT2Zmc2V0OiBib29sZWFuO1xuICBwb2x5Z29uT2Zmc2V0RmFjdG9yOiBudW1iZXI7XG4gIHBvbHlnb25PZmZzZXRVbml0czogbnVtYmVyO1xuICBsb2NhbFNjYWxlOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXI7IH07XG4gIGxvY2FsUG9zaXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHo6IG51bWJlcjsgfTtcbn1cblxuZXhwb3J0IGNsYXNzIFBsYW5lUmVuZGVyZXIgZXh0ZW5kcyBTY2VuZUNvbXBvbmVudCBpbXBsZW1lbnRzIElQbGFuZVJlbmRlcmVyIHtcbiAgcHJpdmF0ZSByb290U2NlbmU6IE9iamVjdDNEIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgbWVzaDogTWVzaDtcbiAgcHJpdmF0ZSBwaXZvdE5vZGU6IE9iamVjdDNEO1xuXG4gIG92ZXJyaWRlIGlucHV0czogSW5wdXRzID0ge1xuICAgIHRleHR1cmU6IG51bGwsXG4gICAgYXNwZWN0OiAxLFxuICAgIHRyYW5zcGFyZW50OiB0cnVlLFxuICAgIHZpc2libGU6IHRydWUsXG4gICAgb3BhY2l0eTogMSxcbiAgICBwb2x5Z29uT2Zmc2V0OiBmYWxzZSxcbiAgICBwb2x5Z29uT2Zmc2V0RmFjdG9yOiAwLFxuICAgIHBvbHlnb25PZmZzZXRVbml0czogMCxcbiAgICBsb2NhbFNjYWxlOiB7eDogMSwgeTogMSwgejogMX0sXG4gICAgbG9jYWxQb3NpdGlvbjoge3g6IDAsIHk6IDAsIHo6IDB9LFxuICB9XG5cbiAgb3ZlcnJpZGUgZXZlbnRzID0ge1xuICAgIFtDb21wb25lbnRJbnRlcmFjdGlvblR5cGUuQ0xJQ0tdOiB0cnVlLFxuICB9O1xuXG4gIG92ZXJyaWRlIG9uSW5pdChtb2RlbE5vZGU/OiBhbnksIGlucHV0VGV4dHVyZT86IGFueSkge1xuICAgIHRoaXMuaW5wdXRzLnRleHR1cmUgPSBpbnB1dFRleHR1cmU7XG4gICAgaWYgKCF0aGlzLmNvbnRleHQpIHtcbiAgICAgIHRoaXMuY29udGV4dCA9IHtcbiAgICAgICAgcm9vdDogbW9kZWxOb2RlXG4gICAgICB9IGFzIENvbXBvbmVudENvbnRleHQ7XG4gICAgfVxuXG4gICAgdGhpcy5waXZvdE5vZGUgPSBuZXcgR3JvdXAoKTtcblxuICAgIHRoaXMubWVzaCA9IG5ldyBNZXNoKFxuICAgICAgbmV3IFBsYW5lQnVmZmVyR2VvbWV0cnkoMS4wLCAxLjApLFxuICAgICAgbmV3IE1lc2hCYXNpY01hdGVyaWFsKHtcbiAgICAgICAgdHJhbnNwYXJlbnQ6IHRoaXMuaW5wdXRzLnRyYW5zcGFyZW50LFxuICAgICAgICBtYXA6IHRoaXMuaW5wdXRzLnRleHR1cmUsXG4gICAgICAgIG9wYWNpdHk6IHRoaXMuaW5wdXRzLm9wYWNpdHksXG4gICAgICAgIHBvbHlnb25PZmZzZXQ6IHRoaXMuaW5wdXRzLnBvbHlnb25PZmZzZXQsXG4gICAgICAgIHBvbHlnb25PZmZzZXRGYWN0b3I6IHRoaXMuaW5wdXRzLnBvbHlnb25PZmZzZXRGYWN0b3IsXG4gICAgICAgIHBvbHlnb25PZmZzZXRVbml0czogdGhpcy5pbnB1dHMucG9seWdvbk9mZnNldFVuaXRzLFxuICAgICAgfSkpO1xuICAgIHRoaXMubWVzaC5zY2FsZS5zZXQodGhpcy5pbnB1dHMubG9jYWxTY2FsZS54LCB0aGlzLmlucHV0cy5sb2NhbFNjYWxlLnkgLyB0aGlzLmlucHV0cy5hc3BlY3QsIHRoaXMuaW5wdXRzLmxvY2FsU2NhbGUueik7XG4gICAgdGhpcy5tZXNoLnBvc2l0aW9uLnNldCh0aGlzLmlucHV0cy5sb2NhbFBvc2l0aW9uLngsIHRoaXMuaW5wdXRzLmxvY2FsUG9zaXRpb24ueSwgdGhpcy5pbnB1dHMubG9jYWxQb3NpdGlvbi56KTtcbiAgICB0aGlzLm1lc2gudXBkYXRlTWF0cml4V29ybGQoKTtcbiAgICB0aGlzLnBpdm90Tm9kZS5hZGQodGhpcy5tZXNoKTtcblxuICAgIHRoaXMub3V0cHV0cy5vYmplY3RSb290ID0gdGhpcy5waXZvdE5vZGU7XG4gICAgdGhpcy5vdXRwdXRzLmNvbGxpZGVyID0gdGhpcy5waXZvdE5vZGU7XG4gICAgdGhpcy5tZXNoLnZpc2libGUgPSB0aGlzLmlucHV0cy52aXNpYmxlO1xuICB9XG5cbiAgb3ZlcnJpZGUgb25FdmVudChldmVudFR5cGU6IHN0cmluZywgZXZlbnREYXRhOiB1bmtub3duKSB7XG4gICAgdGhpcy5ub3RpZnkoZXZlbnRUeXBlLCBldmVudERhdGEpO1xuICB9XG5cbiAgb3ZlcnJpZGUgb25JbnB1dHNVcGRhdGVkKG9sZElucHV0czogSW5wdXRzKSB7XG4gICAgaWYgKG9sZElucHV0cy50cmFuc3BhcmVudCAhPT0gdGhpcy5pbnB1dHMudHJhbnNwYXJlbnQpIHtcbiAgICAgICh0aGlzLm1lc2gubWF0ZXJpYWwgYXMgTWVzaEJhc2ljTWF0ZXJpYWwpLnRyYW5zcGFyZW50ID0gdGhpcy5pbnB1dHMudHJhbnNwYXJlbnQ7XG4gICAgfVxuXG4gICAgaWYgKG9sZElucHV0cy50ZXh0dXJlICE9PSB0aGlzLmlucHV0cy50ZXh0dXJlKSB7XG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHRoaXMubWVzaC5tYXRlcmlhbCBhcyBNZXNoQmFzaWNNYXRlcmlhbDtcbiAgICAgIG1hdGVyaWFsLm1hcCA9IHRoaXMuaW5wdXRzLnRleHR1cmU7XG4gICAgICBtYXRlcmlhbC5uZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKG9sZElucHV0cy52aXNpYmxlICE9PSB0aGlzLmlucHV0cy52aXNpYmxlKSB7XG4gICAgICB0aGlzLm1lc2gudmlzaWJsZSA9IHRoaXMuaW5wdXRzLnZpc2libGU7XG4gICAgfVxuXG4gICAgaWYgKG9sZElucHV0cy5wb2x5Z29uT2Zmc2V0ICE9PSB0aGlzLmlucHV0cy5wb2x5Z29uT2Zmc2V0KSB7XG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHRoaXMubWVzaC5tYXRlcmlhbCBhcyBNZXNoQmFzaWNNYXRlcmlhbDtcbiAgICAgIG1hdGVyaWFsLnBvbHlnb25PZmZzZXQgPSB0aGlzLmlucHV0cy5wb2x5Z29uT2Zmc2V0O1xuICAgICAgbWF0ZXJpYWwucG9seWdvbk9mZnNldEZhY3RvciA9IHRoaXMuaW5wdXRzLnBvbHlnb25PZmZzZXRGYWN0b3I7XG4gICAgICBtYXRlcmlhbC5wb2x5Z29uT2Zmc2V0VW5pdHMgPSB0aGlzLmlucHV0cy5wb2x5Z29uT2Zmc2V0VW5pdHM7XG4gICAgfVxuXG4gICAgdGhpcy5tZXNoLnNjYWxlLnNldCh0aGlzLmlucHV0cy5sb2NhbFNjYWxlLngsIHRoaXMuaW5wdXRzLmxvY2FsU2NhbGUueSAvIHRoaXMuaW5wdXRzLmFzcGVjdCwgdGhpcy5pbnB1dHMubG9jYWxTY2FsZS56KTtcbiAgICB0aGlzLm1lc2gucG9zaXRpb24uc2V0KHRoaXMuaW5wdXRzLmxvY2FsUG9zaXRpb24ueCwgdGhpcy5pbnB1dHMubG9jYWxQb3NpdGlvbi55LCB0aGlzLmlucHV0cy5sb2NhbFBvc2l0aW9uLnopO1xuICB9XG5cbiAgb3ZlcnJpZGUgb25EZXN0cm95KCkge1xuICAgIHRoaXMub3V0cHV0cy5jb2xsaWRlciA9IG51bGw7XG4gICAgdGhpcy5vdXRwdXRzLm9iamVjdFJvb3QgPSBudWxsO1xuXG4gICAgKHRoaXMubWVzaC5tYXRlcmlhbCBhcyBNZXNoQmFzaWNNYXRlcmlhbCkuZGlzcG9zZSgpO1xuICAgIHRoaXMubWVzaC5nZW9tZXRyeS5kaXNwb3NlKCk7XG4gIH1cblxuICBzZXRSb290U2NlbmUocm9vdFNjZW5lOiBPYmplY3QzRCkge1xuICAgIHRoaXMucm9vdFNjZW5lID0gcm9vdFNjZW5lO1xuICB9XG5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUGxhbmVSZW5kZXJlciBleHRlbmRzIFNjZW5lQ29tcG9uZW50IHtcbiAgaW5wdXRzOiBJbnB1dHM7XG59XG5cbmV4cG9ydCBjb25zdCBwbGFuZVJlbmRlcmVyVHlwZSA9ICdtcC5wbGFuZVJlbmRlcmVyJztcblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VQbGFuZVJlbmRlcmVyKCkge1xuICByZXR1cm4gbmV3IFBsYW5lUmVuZGVyZXIoKTtcbn1cbiJdfQ==
|
|
@@ -125,4 +125,4 @@ export var Keys;
|
|
|
125
125
|
Keys[Keys["ALT"] = 18] = "ALT";
|
|
126
126
|
Keys[Keys["CONTROL"] = 17] = "CONTROL";
|
|
127
127
|
})(Keys || (Keys = {}));
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVDb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL21hdHRlcnBvcnQtZXh0ZW5zaW9ucy9zY2VuZS1jb21wb25lbnQvU2NlbmVDb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7Ozs7R0FJRztBQUNILE1BQWUscUJBQXFCO0NBcURuQztBQUVELE1BQU0sT0FBZ0IsY0FBZSxTQUFRLHFCQUFxQjtDQWtEakU7QUFzREQ7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSx3QkFxQlg7QUFyQkQsV0FBWSx3QkFBd0I7SUFDbEMsbUJBQW1CO0lBQ25CLHVEQUEyQixDQUFBO0lBQzNCLG1CQUFtQjtJQUNuQix1REFBMkIsQ0FBQTtJQUMzQix3Q0FBd0M7SUFDeEMscURBQXlCLENBQUE7SUFDekIsaUVBQXFDLENBQUE7SUFDckMsNkRBQWlDLENBQUE7SUFDakMscUVBQXlDLENBQUE7SUFDekMseUVBQTZDLENBQUE7SUFDN0MseURBQTZCLENBQUE7SUFDN0IsbURBQXVCLENBQUE7SUFDdkIsNkVBQWlELENBQUE7SUFDakQseUVBQTZDLENBQUE7SUFDN0MsbUVBQXVDLENBQUE7SUFDdkMsMkVBQStDLENBQUE7SUFDL0MsdURBQTJCLENBQUE7SUFDM0IsK0RBQW1DLENBQUE7SUFDbkMseURBQTZCLENBQUE7SUFDN0IsaUVBQXFDLENBQUE7QUFDdkMsQ0FBQyxFQXJCVyx3QkFBd0IsS0FBeEIsd0JBQXdCLFFBcUJuQztBQUVELE1BQWUsdUJBQXVCO0NBR3JDO0FBSUQsTUFBTSxZQUFhLFNBQVEsdUJBQXVCO0NBQUk7QUF1RHRELE1BQU0sQ0FBTixJQUFZLGFBT1g7QUFQRCxXQUFZLGFBQWE7SUFDdkIsdURBQU8sQ0FBQTtJQUNQLHFEQUFNLENBQUE7SUFDTiwyREFBUyxDQUFBO0lBQ1QsaURBQUksQ0FBQTtJQUNKLHVEQUFPLENBQUE7SUFDUCxtREFBSyxDQUFBO0FBQ1AsQ0FBQyxFQVBXLGFBQWEsS0FBYixhQUFhLFFBT3hCO0FBRUQsTUFBTSxDQUFOLElBQVksaUJBUVg7QUFSRCxXQUFZLGlCQUFpQjtJQUMzQix5REFBSSxDQUFBO0lBQ0osK0RBQW9DLENBQUE7SUFDcEMsbUVBQXdDLENBQUE7SUFDeEMsNkRBQWtDLENBQUE7SUFDbEMseURBQThCLENBQUE7SUFDOUIsZ0VBQW9DLENBQUE7SUFDcEMsd0RBQW9DLENBQUE7QUFDdEMsQ0FBQyxFQVJXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFRNUI7QUFFRCxNQUFNLENBQU4sSUFBWSxhQUtYO0FBTEQsV0FBWSxhQUFhO0lBQ3ZCLGdDQUFlLENBQUE7SUFDZixnQ0FBZSxDQUFBO0lBQ2YsNEJBQVcsQ0FBQTtJQUNYLG9DQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFMVyxhQUFhLEtBQWIsYUFBYSxRQUt4QjtBQXVERCxNQUFNLENBQU4sSUFBWSxRQUlYO0FBSkQsV0FBWSxRQUFRO0lBQ2xCLHVDQUFJLENBQUE7SUFDSiw2Q0FBTyxDQUFBO0lBQ1AsbUNBQUUsQ0FBQTtBQUNKLENBQUMsRUFKVyxRQUFRLEtBQVIsUUFBUSxRQUluQjtBQUVELE1BQU0sQ0FBTixJQUFZLElBc0RYO0FBdERELFdBQVksSUFBSTtJQUNkLG9DQUFXLENBQUE7SUFDWCxnQ0FBUyxDQUFBO0lBQ1QsOEJBQVEsQ0FBQTtJQUNSLDhCQUFRLENBQUE7SUFDUixrQ0FBVSxDQUFBO0lBQ1YsZ0NBQVMsQ0FBQTtJQUNULGdDQUFTLENBQUE7SUFDVCw4QkFBUSxDQUFBO0lBQ1Isa0NBQVUsQ0FBQTtJQUNWLGtDQUFVLENBQUE7SUFDVixnQ0FBUyxDQUFBO0lBQ1QsMENBQWMsQ0FBQTtJQUNkLHNDQUFZLENBQUE7SUFDWiw0Q0FBZSxDQUFBO0lBQ2YsMENBQWMsQ0FBQTtJQUNkLDZCQUFPLENBQUE7SUFDUCwwQkFBTSxDQUFBO0lBQ04sMEJBQU0sQ0FBQTtJQUNOLDBCQUFNLENBQUE7SUFDTiwwQkFBTSxDQUFBO0lBQ04sMEJBQU0sQ0FBQTtJQUNOLDBCQUFNLENBQUE7SUFDTiwwQkFBTSxDQUFBO0lBQ04sMEJBQU0sQ0FBQTtJQUNOLDBCQUFNLENBQUE7SUFDTiwwQkFBTSxDQUFBO0lBQ04sMEJBQU0sQ0FBQTtJQUNOLDBCQUFNLENBQUE7SUFDTiwwQkFBTSxDQUFBO0lBQ04sMEJBQU0sQ0FBQTtJQUNOLDBCQUFNLENBQUE7SUFDTiwwQkFBTSxDQUFBO0lBQ04sMEJBQU0sQ0FBQTtJQUNOLDBCQUFNLENBQUE7SUFDTiwwQkFBTSxDQUFBO0lBQ04sMEJBQU0sQ0FBQTtJQUNOLDBCQUFNLENBQUE7SUFDTiwwQkFBTSxDQUFBO0lBQ04sMEJBQU0sQ0FBQTtJQUNOLDBCQUFNLENBQUE7SUFDTiwwQkFBTSxDQUFBO0lBQ04sMEJBQU0sQ0FBQTtJQUNOLGtDQUFVLENBQUE7SUFDVixvQ0FBVyxDQUFBO0lBQ1gsb0NBQVcsQ0FBQTtJQUNYLHlDQUFhLENBQUE7SUFDYiwyQ0FBZSxDQUFBO0lBQ2YsNkNBQWdCLENBQUE7SUFDaEIscURBQW9CLENBQUE7SUFDcEIsK0NBQWlCLENBQUE7SUFDakIsa0NBQVUsQ0FBQTtJQUNWLDhCQUFRLENBQUE7SUFDUixzQ0FBWSxDQUFBO0FBQ2QsQ0FBQyxFQXREVyxJQUFJLEtBQUosSUFBSSxRQXNEZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBUSFJFRSwgeyBTY2VuZSB9IGZyb20gJ3RocmVlJztcclxuaW1wb3J0IERpY3QgPSBOb2RlSlMuRGljdDtcclxuXHJcbi8qKlxyXG4gKiBUaGUgYmFzZSBvZiBhbGwgYFNjZW5lQ29tcG9uZW50YCBjcmVhdGVkIHdpdGggdGhlIHNkay5cclxuICogQWxsIHByb3BlcnRpZXMgb2YgdGhpcyBjbGFzcyBhcmUgYWx3YXlzIGF2YWlsYWJsZSB0byBhbGwgY29tcG9uZW50cyBnZW5lcmF0ZWQgdGhyb3VnaCB0aGUgc2RrLlxyXG4gKiBUaGVzZSBwcm9wZXJ0aWVzIHNob3VsZCBhbGwgYmUgY29uc2lkZXJlZCByZXNlcnZlZCBhbmQgc2hvdWxkIG5vdCBiZSBvdmVyd3JpdHRlbiBieSB0aGUgc3ViY2xhc3MuXHJcbiAqL1xyXG5hYnN0cmFjdCBjbGFzcyBTY2VuZUNvbXBvbmVudFByaXZhdGUge1xyXG4gIC8qKlxyXG4gICAqIEByZXNlcnZlZFxyXG4gICAqIFRoZSBuYW1lIHJlZ2lzdGVyZWQgdG8gdGhlIGZhY3RvcnkgdXNlZCB0byBnZW5lcmF0ZSB0aGlzIGNvbXBvbmVudC5cclxuICAgKi9cclxuICBkZWNsYXJlIHJlYWRvbmx5IGNvbXBvbmVudFR5cGU6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogQHJlc2VydmVkXHJcbiAgICogQSBkaWN0aW9uYXJ5IG9mIHByb3BlcnRpZXMgdGhhdCB0aGlzIGNvbXBvbmVudCBjb21wdXRlcy4gRXZlcnkgY29tcG9uZW50IGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSBgb3V0cHV0cy5jb2xsaWRlcmAgYW5kIGBvdXRwdXRzLm9iamVjdFJvb3RgLlxyXG4gICAqIFRoaXMgZGljdGlvbmFyeSBpcyBvYnNlcnZhYmxlIGFuZCBjYW4gYmUgdGhlIHNvdXJjZSBvZiBhIGJpbmQgdGFyZ2V0LlxyXG4gICAqXHJcbiAgICovXHJcbiAgZGVjbGFyZSBvdXRwdXRzOiBDb21wb25lbnRPdXRwdXQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIEByZXNlcnZlZFxyXG4gICAqIEEgZGljdGlvbmFyeSBvZiBldmVudHMgdGhhdCB3aWxsIGJlIGhhbmRsZWQgYnkgdGhpcyBjb21wb25lbnQncyBgb25FdmVudGAuIEV2ZXJ5IGNvbXBvbmVudCBpcyBndWFyYW50ZWVkIHRvIGhhdmUgYWxsIG9mIHRoZSBgSW50ZXJhY3Rpb25TZWxlY3Rpb25gIGtleXM6XHJcbiAgICogIGBldmVudHNbSW50ZXJhY3Rpb25TZWxlY3Rpb24uQ0xJQ0tdYCwgYGV2ZW50c1tJbnRlcmFjdGlvblNlbGVjdGlvbi5IT1ZFUl1gLCBgZXZlbnRzW0ludGVyYWN0aW9uU2VsZWN0aW9uLkRSQUddYFxyXG4gICAqIE5vdGU6IHJlZ2lzdGVyaW5nIHRvIHJlY2VpdmUgYEludGVyYWN0aW9uU2VsZWN0aW9uLkhPVkVSYCB3aWxsIHByb2R1Y2UgYm90aCBgSW50ZXJhY3Rpb25UeXBlLkhPVkVSYCBhbmQgYEludGVyYWN0aW9uVHlwZS5VTkhPVkVSYCBpbiBgb25FdmVudGAuXHJcbiAgICovXHJcbiAgZGVjbGFyZSBldmVudHM6IERpY3Q8Ym9vbGVhbj47XHJcblxyXG4gIC8qKlxyXG4gICAqIEByZXNlcnZlZFxyXG4gICAqIFRoZSBjb250ZXh0IHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgdW5kZXJseWluZyBmcmFtZXdvcmssIGUuZy4gVEhSRUUuanMuXHJcbiAgICovXHJcbiAgZGVjbGFyZSBjb250ZXh0OiBDb21wb25lbnRDb250ZXh0O1xyXG5cclxuICAvKipcclxuICAgKiBAcmVzZXJ2ZWRcclxuICAgKiBCaW5kcyBgdGhpc1twcm9wXWAgdG8gdGhlIG91dHB1dCBvZiBgc3JjW3NyY1Byb3BdYC5cclxuICAgKiBXaGVuIHRoZSB2YWx1ZSBvZiBgc3JjW3NyY1Byb3BdYCBjaGFuZ2VzLCB0aGUgdmFsdWUgaXMgcHJvcGFnYXRlZCBhbmQgc2V0cyBgdGhpc1twcm9wXWAgdG8gdGhlIHNhbWUgdmFsdWUgYXV0b21hdGljYWxseS5cclxuICAgKi9cclxuICBkZWNsYXJlIGJpbmQ6IChwcm9wOiBzdHJpbmcsIHNyYzogU2NlbmVDb21wb25lbnRbJ291dHB1dHMnIHwgJ2lucHV0cyddLCBzcmNQcm9wOiBrZXlvZiBTY2VuZUNvbXBvbmVudFsnb3V0cHV0cycgfCAnaW5wdXRzJ10pID0+IHZvaWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIEByZXNlcnZlZFxyXG4gICAqIE5vdGlmaWVzIHRoaXMgY29tcG9uZW50IG9mIGFuIGBldmVudFR5cGVgIHdoZW4gdGhlIGBzcmNgIENvbXBvbmVudCBjYWxscyBgbm90aWZ5YCB3aXRoIGEgYHNyY0V2ZW50VHlwZWAgZXZlbnRcclxuICAgKi9cclxuICBkZWNsYXJlIGJpbmRFdmVudDogKGV2ZW50VHlwZTogc3RyaW5nLCBzcmM6IFNjZW5lQ29tcG9uZW50LCBzcmNFdmVudFR5cGU6IHN0cmluZykgPT4gdm9pZDtcclxuXHJcbiAgLyoqXHJcbiAgICogQHJlc2VydmVkXHJcbiAgICogTm90aWZpZXMgYW55IGV2ZW50IGJpbmRpbmdzIG9mIGFuIGV2ZW50IHdpdGggYGV2ZW50VHlwZWAgYW5kIGRhdGEgYGV2ZW50RGF0YWBcclxuICAgKi9cclxuICBkZWNsYXJlIG5vdGlmeTogKGV2ZW50VHlwZTogc3RyaW5nLCBldmVudERhdGE/OiB1bmtub3duKSA9PiB2b2lkO1xyXG5cclxuICAvKipcclxuICAgKiBAcmVzZXJ2ZWRcclxuICAgKiBTcHkgb24gYSBjb21wb25lbnQncyBub3RpZnkgZnJvbSBvdXRzaWRlIG9mIHRoZSBjb21wb25lbnQgc3lzdGVtXHJcbiAgICovXHJcbiAgZGVjbGFyZSBzcHlPbkV2ZW50OiAoc3B5OiBJQ29tcG9uZW50RXZlbnRTcHkpID0+IElTdWJzY3JpcHRpb247XHJcbn1cclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTY2VuZUNvbXBvbmVudCBleHRlbmRzIFNjZW5lQ29tcG9uZW50UHJpdmF0ZSB7XHJcbiAgLyoqXHJcbiAgICogQW4gb3B0aW9uYWwgZGljdGlvbmFyeSBvZiBwcm9wZXJ0aWVzIHRoYXQgYWZmZWN0cyB0aGUgYmVoYXZpb3Igb2YgdGhlIGNvbXBvbmVudC5cclxuICAgKiBUaGUgcHJvcGVydGllcyBjYW4gYmUgY2hhbmdlZCBieSBhbiBleHRlcm5hbCBzb3VyY2UgYXQgYW55IHRpbWUuIEl0IGlzIHVwIHRvIHRoZSBjb21wb25lbnQgdG8gcmVzcG9uZCBhcHByb3ByaWF0ZWx5IHRvIHRoZSBjaGFuZ2VzLlxyXG4gICAqIFRoZSBpbnB1dCBwcm9wZXJ0aWVzIGNhbiBhbHNvIGJlIGJpbmQgdGFyZ2V0cyB0byBhbm90aGVyIG9ic2VydmFibGUgc291cmNlLCBlLmcuIHRoZSBvdXRwdXQgcHJvcGVydHkgb2YgYW5vdGhlciBjb21wb25lbnQuXHJcbiAgICovXHJcbiAgaW5wdXRzPzogRGljdDxhbnk+O1xyXG5cclxuICAvKipcclxuICAgKiBUaGlzIGV2ZW50IGlzIGNhbGxlZCBvbmNlIGFmdGVyIHRoZSBzY2VuZSBub2RlIGl0cyBhdHRhY2hlZCB0byBoYXMgc3RhcnRlZC5cclxuICAgKi9cclxuICBvbkluaXQ/KCk6IHZvaWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoaXMgZXZlbnQgaXMgY2FsbGVkIGF0IG1vc3Qgb25jZSBwZXIgZnJhbWUgd2hlbiB0aGVyZSBhcmUgZXZlbnRzIG9uIHRoaXMgY29tcG9uZW50LlxyXG4gICAqIEFueSBvZiB0aGUgaW50ZXJhY3Rpb24gdHlwZXMgc3BlY2lmaWVkIGluIGB0aGlzLmludGVyYWN0aW9uc2Agb3IgYSBjYWxsIHRvIG5vdGlmeSBmb3IgYSBib3VuZCBldmVudCB3aWxsIHRyaWdnZXIgdGhpcyBldmVudC5cclxuICAgKiBAcHJvcGVydHkge3N0cmluZyB8IENvbXBvbmVudEludGVyYWN0aW9uVHlwZX0gZXZlbnRUeXBlIFRoZSBldmVudCB0eXBlXHJcbiAgICogQHByb3BlcnR5IHt1bmtub3dufSBldmVudERhdGEgVGhlIGRhdGEgcGF5bG9hZCBvZiB0aGUgZXZlbnRcclxuICAgKi9cclxuICBvbkV2ZW50PyhldmVudFR5cGU6IHN0cmluZywgZXZlbnREYXRhOiB1bmtub3duKTogdm9pZDtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhpcyBldmVudCBpcyBjYWxsZWQgYWZ0ZXIgYW4gaW5wdXQgcHJvcGVydHkgaGFzIGNoYW5nZWQuXHJcbiAgICogSXQgd2lsbCBiZSBjYWxsZWQgYXQgbW9zdCBvbmNlIGEgZnJhbWUuXHJcbiAgICovXHJcbiAgb25JbnB1dHNVcGRhdGVkPyhwcmV2aW91c0lucHV0czogdGhpc1snaW5wdXRzJ10pOiB2b2lkO1xyXG5cclxuICAvKipcclxuICAgKiBUaGlzIGV2ZW50IGlzIGNhbGxlZCBvbmNlIGEgZnJhbWUgYWZ0ZXIgaW5wdXQgY2hhbmdlcyBoYXZlIGJlZW4gZGV0ZWN0ZWQuXHJcbiAgICovXHJcbiAgb25UaWNrPyh0aWNrRGVsdGE6IG51bWJlcik6IHZvaWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIEByZXNlcnZlZFxyXG4gICAqIEEgZGljdGlvbmFyeSBvZiBldmVudHMgdGhhdCB3aWxsIGJlIGhhbmRsZWQgYnkgdGhpcyBjb21wb25lbnQncyBgb25FdmVudGAuIEV2ZXJ5IGNvbXBvbmVudCBpcyBndWFyYW50ZWVkIHRvIGhhdmUgYWxsIG9mIHRoZSBgSW50ZXJhY3Rpb25TZWxlY3Rpb25gIGtleXM6XHJcbiAgICogIGBldmVudHNbSW50ZXJhY3Rpb25TZWxlY3Rpb24uQ0xJQ0tdYCwgYGV2ZW50c1tJbnRlcmFjdGlvblNlbGVjdGlvbi5IT1ZFUl1gLCBgZXZlbnRzW0ludGVyYWN0aW9uU2VsZWN0aW9uLkRSQUddYFxyXG4gICAqIE5vdGU6IHJlZ2lzdGVyaW5nIHRvIHJlY2VpdmUgYEludGVyYWN0aW9uU2VsZWN0aW9uLkhPVkVSYCB3aWxsIHByb2R1Y2UgYm90aCBgSW50ZXJhY3Rpb25UeXBlLkhPVkVSYCBhbmQgYEludGVyYWN0aW9uVHlwZS5VTkhPVkVSYCBpbiBgb25FdmVudGAuXHJcbiAgICovXHJcbiAgb3ZlcnJpZGUgZXZlbnRzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjtcclxuXHJcbiAgLyoqXHJcbiAgICogQHJlc2VydmVkXHJcbiAgICogQSBkaWN0aW9uYXJ5IG9mIGV2ZW50cyB0aGF0IHdpbGwgYmUgZW1pdHRlZCBieSB0aGlzIGNvbXBvbmVudC5cclxuICAgKi9cclxuICBlbWl0cz86IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+O1xyXG5cclxuICAvKipcclxuICAgKiBUaGlzIGV2ZW50IGlzIGNhbGxlZCBvbmNlIHJpZ2h0IGJlZm9yZSB0aGUgc2NlbmUgbm9kZSBoYXMgc3RvcHBlZC5cclxuICAgKi9cclxuICBvbkRlc3Ryb3k/KCk6IHZvaWQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBIG5vZGUgb2YgYSBzY2VuZSBncmFwaC5cclxuICogQWdncmVnYXRlcyBgU2NlbmVDb21wb25lbnRgIGFzIGNoaWxkcmVuLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBJU2NlbmVOb2RlIHtcclxuICAvKipcclxuICAgKiBBIGh1bWFuIHJlYWRhYmxlIG5hbWUgcHJvdmlkZWQgYnkgdGhlIHVzZXIuXHJcbiAgICovXHJcbiAgbmFtZTogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgcG9zaXRpb24gb2YgdGhlIG5vZGUuXHJcbiAgICogVGhlIHBvc2l0aW9uLCBxdWF0ZXJuaW9uLCBzY2FsZSB0cmFuc2Zvcm1zIGFyZSBhcHBsaWVkIGluIHNjYWxlLCBxdWF0ZXJuaW9uLCB0aGVuIHNjYWxlIG9yZGVyLiAoc2FtZSBhcyBUSFJFRS5qcylcclxuICAgKi9cclxuICByZWFkb25seSBwb3NpdGlvbjogVEhSRUUuVmVjdG9yMztcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIG9yaWVudGF0aW9uIG9mIHRoZSBub2RlLlxyXG4gICAqIFRoZSBwb3NpdGlvbiwgcXVhdGVybmlvbiwgc2NhbGUgdHJhbnNmb3JtcyBhcmUgYXBwbGllZCBpbiBzY2FsZSwgcXVhdGVybmlvbiwgdGhlbiBzY2FsZSBvcmRlci4gKHNhbWUgYXMgVEhSRUUuanMpXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgcXVhdGVybmlvbjogVEhSRUUuUXVhdGVybmlvbjtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHNjYWxlIG9mIHRoZSBub2RlLlxyXG4gICAqIFRoZSBwb3NpdGlvbiwgcXVhdGVybmlvbiwgc2NhbGUgdHJhbnNmb3JtcyBhcmUgYXBwbGllZCBpbiBzY2FsZSwgcXVhdGVybmlvbiwgdGhlbiBzY2FsZSBvcmRlci4gKHNhbWUgYXMgVEhSRUUuanMpXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgc2NhbGU6IFRIUkVFLlZlY3RvcjM7XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhbmQgYWRkIGEgY2hpbGQgY29tcG9uZW50IHRvIHRoaXMgbm9kZS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBmYWN0b3J5IFRoZSBuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmFjdG9yeSB0byBnZW5lcmF0ZSBhIGBTY2VuZUNvbXBvbmVudGBcclxuICAgKiBAcGFyYW0gaW5pdGlhbElucHV0cyBBbiBpbml0aWFsIHNldCBvZiBpbnB1dHMsIGltbWVkaWF0ZWx5IGF2YWlsYWJsZSB0byB0aGUgbmV3bHkgY3JlYXRlIGBTY2VuZUNvbXBvbmVudC5vbkluaXRgXHJcbiAgICovXHJcbiAgYWRkQ29tcG9uZW50KGZhY3Rvcnk6IHN0cmluZywgaW5pdGlhbElucHV0cz86IFNjZW5lQ29tcG9uZW50WydpbnB1dHMnXSk6IFNjZW5lQ29tcG9uZW50O1xyXG5cclxuICAvKipcclxuICAgKiBBbiBpdGVyYXRvciB0byBpdGVyYXRlIG92ZXIgdGhlIGNvbXBvbmVudHMgYWRkZWQgdG8gdGhpcyBub2RlIHVzaW5nIGEgZm9yLW9mIGxvb3AuXHJcbiAgICovXHJcbiAgY29tcG9uZW50SXRlcmF0b3IoKTogSXRlcmFibGVJdGVyYXRvcjxTY2VuZUNvbXBvbmVudD47XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0YXJ0IHRoZSBub2RlIGFuZCBpdHMgY29tcG9uZW50cy5cclxuICAgKi9cclxuICBzdGFydCgpOiB2b2lkO1xyXG5cclxuICAvKipcclxuICAgKiBTdG9wIHRoZSBub2RlIGFuZCBpdHMgY29tcG9uZW50cy5cclxuICAgKi9cclxuICBzdG9wKCk6IHZvaWQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUaGUgdHlwZXMgb2YgdGhlIEludGVyYWN0aW9uIGV2ZW50cyByZWNlaXZlZCBmcm9tIHRoZSByZWdpc3RlcmVkIGBJbnRlcmFjdGlvblNlbGVjdGlvbmBcclxuICovXHJcbmV4cG9ydCBlbnVtIENvbXBvbmVudEludGVyYWN0aW9uVHlwZSB7XHJcbiAgLyoqIENMSUNLIGV2ZW50cyAqL1xyXG4gIENMSUNLID0gJ0lOVEVSQUNUSU9OLkNMSUNLJyxcclxuICAvKiogSE9WRVIgZXZlbnRzICovXHJcbiAgSE9WRVIgPSAnSU5URVJBQ1RJT04uSE9WRVInLFxyXG4gIC8qKiBEUkFHIGV2ZW50cyAobW91c2Vkb3duIHRoZW4gbW92ZSkgKi9cclxuICBEUkFHID0gJ0lOVEVSQUNUSU9OLkRSQUcnLFxyXG4gIERSQUdfQkVHSU4gPSAnSU5URVJBQ1RJT04uRFJBR19CRUdJTicsXHJcbiAgRFJBR19FTkQgPSAnSU5URVJBQ1RJT04uRFJBR19FTkQnLFxyXG4gIFBPSU5URVJfTU9WRSA9ICdJTlRFUkFDVElPTi5QT0lOVEVSX01PVkUnLFxyXG4gIFBPSU5URVJfQlVUVE9OID0gJ0lOVEVSQUNUSU9OLlBPSU5URVJfQlVUVE9OJyxcclxuICBTQ1JPTEwgPSAnSU5URVJBQ1RJT04uU0NST0xMJyxcclxuICBLRVkgPSAnSU5URVJBQ1RJT04uS0VZJyxcclxuICBMT05HX1BSRVNTX1NUQVJUID0gJ0lOVEVSQUNUSU9OLkxPTkdfUFJFU1NfU1RBUlQnLFxyXG4gIExPTkdfUFJFU1NfRU5EID0gJ0lOVEVSQUNUSU9OLkxPTkdfUFJFU1NfRU5EJyxcclxuICBNVUxUSV9TV0lQRSA9ICdJTlRFUkFDVElPTi5NVUxUSV9TV0lQRScsXHJcbiAgTVVMVElfU1dJUEVfRU5EID0gJ0lOVEVSQUNUSU9OLk1VTFRJX1NXSVBFX0VORCcsXHJcbiAgUElOQ0ggPSAnSU5URVJBQ1RJT04uUElOQ0gnLFxyXG4gIFBJTkNIX0VORCA9ICdJTlRFUkFDVElPTi5QSU5DSF9FTkQnLFxyXG4gIFJPVEFURSA9ICdJTlRFUkFDVElPTi5ST1RBVEUnLFxyXG4gIFJPVEFURV9FTkQgPSAnSU5URVJBQ1RJT04uUk9UQVRFX0VORCcsXHJcbn1cclxuXHJcbmFic3RyYWN0IGNsYXNzIENvbXBvbmVudE91dHB1dFJlc2VydmVkIHtcclxuICBkZWNsYXJlIG9iamVjdFJvb3Q6IFRIUkVFLk9iamVjdDNEIHwgbnVsbDtcclxuICBkZWNsYXJlIGNvbGxpZGVyOiBUSFJFRS5PYmplY3QzRCB8IG51bGw7XHJcbn1cclxuXHJcbi8vIEhhY2sgYXJvdW5kIHRoZSB0eXBlIHN5c3RlbSB0byBnZXQgYSBjbGVhbmVyIGludGVyZmFjZSBhcm91bmQgYENvbXBvbmVudE91dHB1dGBcclxuaW50ZXJmYWNlIENvbXBvbmVudE91dCBleHRlbmRzIERpY3Q8YW55PiB7fVxyXG5jbGFzcyBDb21wb25lbnRPdXQgZXh0ZW5kcyBDb21wb25lbnRPdXRwdXRSZXNlcnZlZCAge31cclxuXHJcbi8qKlxyXG4gKiBBIGdlbmVyYWwtdXNlIGJhZyBvZiBwcm9wZXJ0aWVzLlxyXG4gKiBBdCBhIG1pbmltdW0sIGl0IGhhcyBgb2JqZWN0Um9vdGAgYW5kIGBjb2xsaWRlcmAgYXV0b21hdGljYWxseSBkZWZpbmVkLlxyXG4gKi9cclxuZXhwb3J0IHR5cGUgQ29tcG9uZW50T3V0cHV0ID0gQ29tcG9uZW50T3V0O1xyXG5cclxuLyoqXHJcbiAqIFRoZSBjb250ZXh0IG9mIGEgY29tcG9uZW50IChhdmFpbGFibGUgYXMgYHRoaXMuY29udGV4dGApIGluIGEgYFNjZW5lQ29tcG9uZW50YCBzdWJjbGFzcy5cclxuICogQWNjZXNzIHRvIHRoZSByb290IGBJU2NlbmVOb2RlYCBhbmQgdGhlIFRIUkVFLmpzIGFyZSBhdmFpbGFibGUuXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBDb21wb25lbnRDb250ZXh0ID0ge1xyXG4gIHRocmVlOiB0eXBlb2YgVEhSRUU7XHJcbiAgcm9vdDogSVNjZW5lTm9kZTtcclxuICByZW5kZXJlcjogVEhSRUUuV2ViR0xSZW5kZXJlcjtcclxuICB1c2VyOiBEaWN0PGFueT47XHJcbiAgc2NlbmU6IFNjZW5lO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIEEgcmF5Y2FzdCBpbnRlcnNlY3Rpb24gd2l0aCBhIG1lc2hcclxuICovXHJcbmV4cG9ydCB0eXBlIEludGVyc2VjdCA9IHtcclxuICBwb2ludDogVEhSRUUuVmVjdG9yMztcclxuICBub3JtYWw6IFRIUkVFLlZlY3RvcjM7XHJcbiAgY29sbGlkZXI6IFRIUkVFLk9iamVjdDNEO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIEEgc3B5IHRoYXQgY2FuIGJlIGF0dGFjaGVkIHRvIGEgY29tcG9uZW50IHVzaW5nIGBzcHlPbkV2ZW50YFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBJQ29tcG9uZW50RXZlbnRTcHk8VCA9IHVua25vd24+IHtcclxuICByZWFkb25seSBldmVudFR5cGU6IHN0cmluZztcclxuICBvbkV2ZW50KGV2ZW50RGF0YT86IFQpOiB2b2lkO1xyXG59XHJcblxyXG4vKipcclxuICogQW4gb2JqZWN0IHJlc3BvbnNpYmxlIGZvciByZW1vdmluZyBhIHNweSBmcm9tIGEgY29tcG9uZW50J3MgZXZlbnRcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmlwdGlvbiB7XHJcbiAgY2FuY2VsKCk6IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVZlY3RvcjIge1xyXG4gIHg6IG51bWJlcjtcclxuICB5OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVZlY3RvcjMge1xyXG4gIHg6IG51bWJlcjtcclxuICB5OiBudW1iZXI7XHJcbiAgejogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBQb2ludGVyQnV0dG9uIHtcclxuICBQUklNQVJZLFxyXG4gIE1JRERMRSxcclxuICBTRUNPTkRBUlksXHJcbiAgQkFDSyxcclxuICBGT1JXQVJELFxyXG4gIENPVU5ULFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBQb2ludGVyQnV0dG9uTWFzayB7XHJcbiAgTk9ORSxcclxuICBQUklNQVJZID0gMSA8PCBQb2ludGVyQnV0dG9uLlBSSU1BUlksXHJcbiAgU0VDT05EQVJZID0gMSA8PCBQb2ludGVyQnV0dG9uLlNFQ09OREFSWSxcclxuICBNSURETEUgPSAxIDw8IFBvaW50ZXJCdXR0b24uTUlERExFLFxyXG4gIEJBQ0sgPSAxIDw8IFBvaW50ZXJCdXR0b24uQkFDSyxcclxuICBGT1JXQVJEID0gMSA8PCBQb2ludGVyQnV0dG9uLkZPUldBUkQsXHJcbiAgQUxMID0gKDEgPDwgUG9pbnRlckJ1dHRvbi5DT1VOVCkgLSAxLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBQb2ludGVyRGV2aWNlIHtcclxuICBNT1VTRSA9ICdtb3VzZScsXHJcbiAgVE9VQ0ggPSAndG91Y2gnLFxyXG4gIFBFTiA9ICdwZW4nLFxyXG4gIEdBTUVQQUQgPSAnZ2FtZXBhZCcsXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBGaXJlZCBvbiBldmVyeSBtb3VzZSBkb3duLCBwcm92aWRlcyBjdXJyZW50IHBvc2l0aW9uL2J1dHRvbnMgZG93bi5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgRHJhZ0JlZ2luRXZlbnQge1xyXG4gIC8qKiBDdXJyZW50IHBvc2l0aW9uICovXHJcbiAgcmVhZG9ubHkgcG9zaXRpb246IElWZWN0b3IyO1xyXG4gIC8qKiBCdXR0b25zIGRvd24gZHVyaW5nIGV2ZW50ICovXHJcbiAgcmVhZG9ubHkgYnV0dG9uczogUG9pbnRlckJ1dHRvbk1hc2s7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBGaXJlZCBvbmx5IGFmdGVyIHRoZSBwb2ludGVyIGhhcyBtb3ZlZCBmYXIgZW5vdWdoIGZyb20gRHJhZ0JlZ2luRXZlbnRcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgRHJhZ0V2ZW50IHtcclxuICAvKiogQ3VycmVudCBwb3NpdGlvbiAqL1xyXG4gIHJlYWRvbmx5IHBvc2l0aW9uOiBJVmVjdG9yMjtcclxuICAvKiogRGVsdGEgbW92ZWQgc2luY2UgbGFzdCBkcmFnIGV2ZW50ICovXHJcbiAgcmVhZG9ubHkgZGVsdGE6IElWZWN0b3IyO1xyXG4gIC8qKiBCdXR0b25zIGRvd24gZHVyaW5nIGV2ZW50ICovXHJcbiAgcmVhZG9ubHkgYnV0dG9uczogUG9pbnRlckJ1dHRvbk1hc2s7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBGaXJlZCBvbiBldmVyeSBtb3VzZSB1cCwgaW5jbHVkZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgRHJhZ0JlZ2luIGFuZCBjdXJyZW50IHBvc2l0aW9uc1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBEcmFnRW5kRXZlbnQgZXh0ZW5kcyBEcmFnRXZlbnQge1xyXG4gIC8qKiBkdXJhdGlvbiBzaW5jZSBsYXN0IERyYWdFdmVudCAqL1xyXG4gIHJlYWRvbmx5IHRpbWVTaW5jZUxhc3RNb3ZlOiBudW1iZXI7XHJcblxyXG4gIC8qKiBUaGUgZGVsdGEgYmV0d2VlbiBwb3NpdGlvbiwgYW5kIHRoZSBwb3NpdGlvbiBmcm9tIERyYWdCZWdpbkV2ZW50ICovXHJcbiAgcmVhZG9ubHkgZnVsbERlbHRhOiBJVmVjdG9yMjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQb2ludGVyTW92ZUV2ZW50IHtcclxuICByZWFkb25seSBpZDogbnVtYmVyO1xyXG4gIHJlYWRvbmx5IHBvc2l0aW9uOiBJVmVjdG9yMjtcclxuICByZWFkb25seSBidXR0b25zOiBQb2ludGVyQnV0dG9uTWFzaztcclxuICByZWFkb25seSBkZXZpY2U6IFBvaW50ZXJEZXZpY2U7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUG9pbnRlckJ1dHRvbkV2ZW50IHtcclxuICByZWFkb25seSBpZDogbnVtYmVyO1xyXG4gIHJlYWRvbmx5IHBvc2l0aW9uOiBJVmVjdG9yMjtcclxuICByZWFkb25seSBidXR0b246IFBvaW50ZXJCdXR0b247XHJcbiAgcmVhZG9ubHkgZG93bjogYm9vbGVhbjtcclxuICByZWFkb25seSBkZXZpY2U6IFBvaW50ZXJEZXZpY2U7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2Nyb2xsRXZlbnQge1xyXG4gIHJlYWRvbmx5IHBvc2l0aW9uOiBJVmVjdG9yMjtcclxuICByZWFkb25seSBkZWx0YTogSVZlY3RvcjI7XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEtleVN0YXRlIHtcclxuICBET1dOLFxyXG4gIFBSRVNTRUQsXHJcbiAgVVAsXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEtleXN7XHJcbiAgRVNDQVBFID0gMjcsXHJcbiAgWkVSTyA9IDQ4LFxyXG4gIE9ORSA9IDQ5LFxyXG4gIFRXTyA9IDUwLFxyXG4gIFRIUkVFID0gNTEsXHJcbiAgRk9VUiA9IDUyLFxyXG4gIEZJVkUgPSA1MyxcclxuICBTSVggPSA1NCxcclxuICBTRVZFTiA9IDU1LFxyXG4gIEVJR0hUID0gNTYsXHJcbiAgTklORSA9IDU3LFxyXG4gIExFRlRBUlJPVyA9IDM3LFxyXG4gIFVQQVJST1cgPSAzOCxcclxuICBSSUdIVEFSUk9XID0gMzksXHJcbiAgRE9XTkFSUk9XID0gNDAsXHJcbiAgVEFCID0gOSxcclxuICBBID0gNjUsXHJcbiAgQiA9IDY2LFxyXG4gIEMgPSA2NyxcclxuICBEID0gNjgsXHJcbiAgRSA9IDY5LFxyXG4gIEYgPSA3MCxcclxuICBHID0gNzEsXHJcbiAgSCA9IDcyLFxyXG4gIEkgPSA3MyxcclxuICBKID0gNzQsXHJcbiAgSyA9IDc1LFxyXG4gIEwgPSA3NixcclxuICBNID0gNzcsXHJcbiAgTiA9IDc4LFxyXG4gIE8gPSA3OSxcclxuICBQID0gODAsXHJcbiAgUSA9IDgxLFxyXG4gIFIgPSA4MixcclxuICBTID0gODMsXHJcbiAgVCA9IDg0LFxyXG4gIFUgPSA4NSxcclxuICBWID0gODYsXHJcbiAgVyA9IDg3LFxyXG4gIFggPSA4OCxcclxuICBZID0gODksXHJcbiAgWiA9IDkwLFxyXG4gIFNQQUNFID0gMzIsXHJcbiAgUkVUVVJOID0gMTMsXHJcbiAgREVMRVRFID0gNDYsXHJcbiAgQkFDS1NQQUNFID0gOCxcclxuICBTRU1JQ09MT04gPSAxODYsXHJcbiAgUExVU0VRVUFMUyA9IDE4NyxcclxuICBEQVNIVU5ERVJTQ09SRSA9IDE4OSxcclxuICBPUEVOQlJBQ0tFVCA9IDIxOSxcclxuICBTSElGVCA9IDE2LFxyXG4gIEFMVCA9IDE4LFxyXG4gIENPTlRST0wgPSAxNyxcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBLZXlFdmVudCB7XHJcbiAga2V5OiBLZXlzO1xyXG4gIHN0YXRlOiBLZXlTdGF0ZTtcclxuICBtb2RpZmllcnM6IHtcclxuICAgIGFsdEtleTogYm9vbGVhbixcclxuICAgIHNoaWZ0S2V5OiBib29sZWFuLFxyXG4gICAgY3RybEtleTogYm9vbGVhblxyXG4gIH07XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTG9uZ1ByZXNzU3RhcnRFdmVudCB7XHJcbiAgcmVhZG9ubHkgcG9zaXRpb246IElWZWN0b3IyO1xyXG4gIHJlYWRvbmx5IGJ1dHRvbnM6IFBvaW50ZXJCdXR0b25NYXNrO1xyXG4gIHJlYWRvbmx5IHRocmVzaG9sZDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIExvbmdQcmVzc0VuZEV2ZW50IHt9XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE11bHRpU3dpcGVFdmVudCB7XHJcbiAgcmVhZG9ubHkgcG9pbnRlckNvdW50OiBudW1iZXI7XHJcbiAgcmVhZG9ubHkgcG9zaXRpb246IElWZWN0b3IyO1xyXG4gIHJlYWRvbmx5IGRlbHRhOiBJVmVjdG9yMjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNdWx0aVN3aXBlRW5kRXZlbnQgZXh0ZW5kcyBNdWx0aVN3aXBlRXZlbnQge1xyXG4gIHJlYWRvbmx5IHRpbWVTaW5jZUxhc3RNb3ZlOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGluY2hFdmVudCB7XHJcbiAgcmVhZG9ubHkgcGluY2hEZWx0YTogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBpbmNoRW5kRXZlbnQgZXh0ZW5kcyBQaW5jaEV2ZW50IHtcclxuICByZWFkb25seSB0aW1lU2luY2VMYXN0TW92ZTogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJvdGF0ZUV2ZW50IHtcclxuICByZWFkb25seSByb3RhdGVEZWx0YTogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJvdGF0ZUVuZEV2ZW50IGV4dGVuZHMgUm90YXRlRXZlbnQge1xyXG4gIHJlYWRvbmx5IHRpbWVTaW5jZUxhc3RNb3ZlOiBudW1iZXI7XHJcbn1cclxuIl19
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVDb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL21hdHRlcnBvcnQtZXh0ZW5zaW9ucy9zY2VuZS1jb21wb25lbnQvU2NlbmVDb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7Ozs7R0FJRztBQUNILE1BQWUscUJBQXFCO0NBcURuQztBQUVELE1BQU0sT0FBZ0IsY0FBZSxTQUFRLHFCQUFxQjtDQWtEakU7QUFzREQ7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSx3QkFxQlg7QUFyQkQsV0FBWSx3QkFBd0I7SUFDbEMsbUJBQW1CO0lBQ25CLHVEQUEyQixDQUFBO0lBQzNCLG1CQUFtQjtJQUNuQix1REFBMkIsQ0FBQTtJQUMzQix3Q0FBd0M7SUFDeEMscURBQXlCLENBQUE7SUFDekIsaUVBQXFDLENBQUE7SUFDckMsNkRBQWlDLENBQUE7SUFDakMscUVBQXlDLENBQUE7SUFDekMseUVBQTZDLENBQUE7SUFDN0MseURBQTZCLENBQUE7SUFDN0IsbURBQXVCLENBQUE7SUFDdkIsNkVBQWlELENBQUE7SUFDakQseUVBQTZDLENBQUE7SUFDN0MsbUVBQXVDLENBQUE7SUFDdkMsMkVBQStDLENBQUE7SUFDL0MsdURBQTJCLENBQUE7SUFDM0IsK0RBQW1DLENBQUE7SUFDbkMseURBQTZCLENBQUE7SUFDN0IsaUVBQXFDLENBQUE7QUFDdkMsQ0FBQyxFQXJCVyx3QkFBd0IsS0FBeEIsd0JBQXdCLFFBcUJuQztBQUVELE1BQWUsdUJBQXVCO0NBR3JDO0FBSUQsTUFBTSxZQUFhLFNBQVEsdUJBQXVCO0NBQUk7QUF1RHRELE1BQU0sQ0FBTixJQUFZLGFBT1g7QUFQRCxXQUFZLGFBQWE7SUFDdkIsdURBQU8sQ0FBQTtJQUNQLHFEQUFNLENBQUE7SUFDTiwyREFBUyxDQUFBO0lBQ1QsaURBQUksQ0FBQTtJQUNKLHVEQUFPLENBQUE7SUFDUCxtREFBSyxDQUFBO0FBQ1AsQ0FBQyxFQVBXLGFBQWEsS0FBYixhQUFhLFFBT3hCO0FBRUQsTUFBTSxDQUFOLElBQVksaUJBUVg7QUFSRCxXQUFZLGlCQUFpQjtJQUMzQix5REFBSSxDQUFBO0lBQ0osK0RBQW9DLENBQUE7SUFDcEMsbUVBQXdDLENBQUE7SUFDeEMsNkRBQWtDLENBQUE7SUFDbEMseURBQThCLENBQUE7SUFDOUIsZ0VBQW9DLENBQUE7SUFDcEMsd0RBQW9DLENBQUE7QUFDdEMsQ0FBQyxFQVJXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFRNUI7QUFFRCxNQUFNLENBQU4sSUFBWSxhQUtYO0FBTEQsV0FBWSxhQUFhO0lBQ3ZCLGdDQUFlLENBQUE7SUFDZixnQ0FBZSxDQUFBO0lBQ2YsNEJBQVcsQ0FBQTtJQUNYLG9DQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFMVyxhQUFhLEtBQWIsYUFBYSxRQUt4QjtBQXVERCxNQUFNLENBQU4sSUFBWSxRQUlYO0FBSkQsV0FBWSxRQUFRO0lBQ2xCLHVDQUFJLENBQUE7SUFDSiw2Q0FBTyxDQUFBO0lBQ1AsbUNBQUUsQ0FBQTtBQUNKLENBQUMsRUFKVyxRQUFRLEtBQVIsUUFBUSxRQUluQjtBQUVELE1BQU0sQ0FBTixJQUFZLElBc0RYO0FBdERELFdBQVksSUFBSTtJQUNkLG9DQUFXLENBQUE7SUFDWCxnQ0FBUyxDQUFBO0lBQ1QsOEJBQVEsQ0FBQTtJQUNSLDhCQUFRLENBQUE7SUFDUixrQ0FBVSxDQUFBO0lBQ1YsZ0NBQVMsQ0FBQTtJQUNULGdDQUFTLENBQUE7SUFDVCw4QkFBUSxDQUFBO0lBQ1Isa0NBQVUsQ0FBQTtJQUNWLGtDQUFVLENBQUE7SUFDVixnQ0FBUyxDQUFBO0lBQ1QsMENBQWMsQ0FBQTtJQUNkLHNDQUFZLENBQUE7SUFDWiw0Q0FBZSxDQUFBO0lBQ2YsMENBQWMsQ0FBQTtJQUNkLDZCQUFPLENBQUE7SUFDUCwwQkFBTSxDQUFBO0lBQ04sMEJBQU0sQ0FBQTtJQUNOLDBCQUFNLENBQUE7SUFDTiwwQkFBTSxDQUFBO0lBQ04sMEJBQU0sQ0FBQTtJQUNOLDBCQUFNLENBQUE7SUFDTiwwQkFBTSxDQUFBO0lBQ04sMEJBQU0sQ0FBQTtJQUNOLDBCQUFNLENBQUE7SUFDTiwwQkFBTSxDQUFBO0lBQ04sMEJBQU0sQ0FBQTtJQUNOLDBCQUFNLENBQUE7SUFDTiwwQkFBTSxDQUFBO0lBQ04sMEJBQU0sQ0FBQTtJQUNOLDBCQUFNLENBQUE7SUFDTiwwQkFBTSxDQUFBO0lBQ04sMEJBQU0sQ0FBQTtJQUNOLDBCQUFNLENBQUE7SUFDTiwwQkFBTSxDQUFBO0lBQ04sMEJBQU0sQ0FBQTtJQUNOLDBCQUFNLENBQUE7SUFDTiwwQkFBTSxDQUFBO0lBQ04sMEJBQU0sQ0FBQTtJQUNOLDBCQUFNLENBQUE7SUFDTiwwQkFBTSxDQUFBO0lBQ04sMEJBQU0sQ0FBQTtJQUNOLGtDQUFVLENBQUE7SUFDVixvQ0FBVyxDQUFBO0lBQ1gsb0NBQVcsQ0FBQTtJQUNYLHlDQUFhLENBQUE7SUFDYiwyQ0FBZSxDQUFBO0lBQ2YsNkNBQWdCLENBQUE7SUFDaEIscURBQW9CLENBQUE7SUFDcEIsK0NBQWlCLENBQUE7SUFDakIsa0NBQVUsQ0FBQTtJQUNWLDhCQUFRLENBQUE7SUFDUixzQ0FBWSxDQUFBO0FBQ2QsQ0FBQyxFQXREVyxJQUFJLEtBQUosSUFBSSxRQXNEZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBUSFJFRSwgeyBTY2VuZSB9IGZyb20gJ3RocmVlJztcbmltcG9ydCBEaWN0ID0gTm9kZUpTLkRpY3Q7XG5cbi8qKlxuICogVGhlIGJhc2Ugb2YgYWxsIGBTY2VuZUNvbXBvbmVudGAgY3JlYXRlZCB3aXRoIHRoZSBzZGsuXG4gKiBBbGwgcHJvcGVydGllcyBvZiB0aGlzIGNsYXNzIGFyZSBhbHdheXMgYXZhaWxhYmxlIHRvIGFsbCBjb21wb25lbnRzIGdlbmVyYXRlZCB0aHJvdWdoIHRoZSBzZGsuXG4gKiBUaGVzZSBwcm9wZXJ0aWVzIHNob3VsZCBhbGwgYmUgY29uc2lkZXJlZCByZXNlcnZlZCBhbmQgc2hvdWxkIG5vdCBiZSBvdmVyd3JpdHRlbiBieSB0aGUgc3ViY2xhc3MuXG4gKi9cbmFic3RyYWN0IGNsYXNzIFNjZW5lQ29tcG9uZW50UHJpdmF0ZSB7XG4gIC8qKlxuICAgKiBAcmVzZXJ2ZWRcbiAgICogVGhlIG5hbWUgcmVnaXN0ZXJlZCB0byB0aGUgZmFjdG9yeSB1c2VkIHRvIGdlbmVyYXRlIHRoaXMgY29tcG9uZW50LlxuICAgKi9cbiAgZGVjbGFyZSByZWFkb25seSBjb21wb25lbnRUeXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEByZXNlcnZlZFxuICAgKiBBIGRpY3Rpb25hcnkgb2YgcHJvcGVydGllcyB0aGF0IHRoaXMgY29tcG9uZW50IGNvbXB1dGVzLiBFdmVyeSBjb21wb25lbnQgaXMgZ3VhcmFudGVlZCB0byBoYXZlIGBvdXRwdXRzLmNvbGxpZGVyYCBhbmQgYG91dHB1dHMub2JqZWN0Um9vdGAuXG4gICAqIFRoaXMgZGljdGlvbmFyeSBpcyBvYnNlcnZhYmxlIGFuZCBjYW4gYmUgdGhlIHNvdXJjZSBvZiBhIGJpbmQgdGFyZ2V0LlxuICAgKlxuICAgKi9cbiAgZGVjbGFyZSBvdXRwdXRzOiBDb21wb25lbnRPdXRwdXQ7XG5cbiAgLyoqXG4gICAqIEByZXNlcnZlZFxuICAgKiBBIGRpY3Rpb25hcnkgb2YgZXZlbnRzIHRoYXQgd2lsbCBiZSBoYW5kbGVkIGJ5IHRoaXMgY29tcG9uZW50J3MgYG9uRXZlbnRgLiBFdmVyeSBjb21wb25lbnQgaXMgZ3VhcmFudGVlZCB0byBoYXZlIGFsbCBvZiB0aGUgYEludGVyYWN0aW9uU2VsZWN0aW9uYCBrZXlzOlxuICAgKiAgYGV2ZW50c1tJbnRlcmFjdGlvblNlbGVjdGlvbi5DTElDS11gLCBgZXZlbnRzW0ludGVyYWN0aW9uU2VsZWN0aW9uLkhPVkVSXWAsIGBldmVudHNbSW50ZXJhY3Rpb25TZWxlY3Rpb24uRFJBR11gXG4gICAqIE5vdGU6IHJlZ2lzdGVyaW5nIHRvIHJlY2VpdmUgYEludGVyYWN0aW9uU2VsZWN0aW9uLkhPVkVSYCB3aWxsIHByb2R1Y2UgYm90aCBgSW50ZXJhY3Rpb25UeXBlLkhPVkVSYCBhbmQgYEludGVyYWN0aW9uVHlwZS5VTkhPVkVSYCBpbiBgb25FdmVudGAuXG4gICAqL1xuICBkZWNsYXJlIGV2ZW50czogRGljdDxib29sZWFuPjtcblxuICAvKipcbiAgICogQHJlc2VydmVkXG4gICAqIFRoZSBjb250ZXh0IHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgdW5kZXJseWluZyBmcmFtZXdvcmssIGUuZy4gVEhSRUUuanMuXG4gICAqL1xuICBkZWNsYXJlIGNvbnRleHQ6IENvbXBvbmVudENvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEByZXNlcnZlZFxuICAgKiBCaW5kcyBgdGhpc1twcm9wXWAgdG8gdGhlIG91dHB1dCBvZiBgc3JjW3NyY1Byb3BdYC5cbiAgICogV2hlbiB0aGUgdmFsdWUgb2YgYHNyY1tzcmNQcm9wXWAgY2hhbmdlcywgdGhlIHZhbHVlIGlzIHByb3BhZ2F0ZWQgYW5kIHNldHMgYHRoaXNbcHJvcF1gIHRvIHRoZSBzYW1lIHZhbHVlIGF1dG9tYXRpY2FsbHkuXG4gICAqL1xuICBkZWNsYXJlIGJpbmQ6IChwcm9wOiBzdHJpbmcsIHNyYzogU2NlbmVDb21wb25lbnRbJ291dHB1dHMnIHwgJ2lucHV0cyddLCBzcmNQcm9wOiBrZXlvZiBTY2VuZUNvbXBvbmVudFsnb3V0cHV0cycgfCAnaW5wdXRzJ10pID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEByZXNlcnZlZFxuICAgKiBOb3RpZmllcyB0aGlzIGNvbXBvbmVudCBvZiBhbiBgZXZlbnRUeXBlYCB3aGVuIHRoZSBgc3JjYCBDb21wb25lbnQgY2FsbHMgYG5vdGlmeWAgd2l0aCBhIGBzcmNFdmVudFR5cGVgIGV2ZW50XG4gICAqL1xuICBkZWNsYXJlIGJpbmRFdmVudDogKGV2ZW50VHlwZTogc3RyaW5nLCBzcmM6IFNjZW5lQ29tcG9uZW50LCBzcmNFdmVudFR5cGU6IHN0cmluZykgPT4gdm9pZDtcblxuICAvKipcbiAgICogQHJlc2VydmVkXG4gICAqIE5vdGlmaWVzIGFueSBldmVudCBiaW5kaW5ncyBvZiBhbiBldmVudCB3aXRoIGBldmVudFR5cGVgIGFuZCBkYXRhIGBldmVudERhdGFgXG4gICAqL1xuICBkZWNsYXJlIG5vdGlmeTogKGV2ZW50VHlwZTogc3RyaW5nLCBldmVudERhdGE/OiB1bmtub3duKSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAcmVzZXJ2ZWRcbiAgICogU3B5IG9uIGEgY29tcG9uZW50J3Mgbm90aWZ5IGZyb20gb3V0c2lkZSBvZiB0aGUgY29tcG9uZW50IHN5c3RlbVxuICAgKi9cbiAgZGVjbGFyZSBzcHlPbkV2ZW50OiAoc3B5OiBJQ29tcG9uZW50RXZlbnRTcHkpID0+IElTdWJzY3JpcHRpb247XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTY2VuZUNvbXBvbmVudCBleHRlbmRzIFNjZW5lQ29tcG9uZW50UHJpdmF0ZSB7XG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBkaWN0aW9uYXJ5IG9mIHByb3BlcnRpZXMgdGhhdCBhZmZlY3RzIHRoZSBiZWhhdmlvciBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBUaGUgcHJvcGVydGllcyBjYW4gYmUgY2hhbmdlZCBieSBhbiBleHRlcm5hbCBzb3VyY2UgYXQgYW55IHRpbWUuIEl0IGlzIHVwIHRvIHRoZSBjb21wb25lbnQgdG8gcmVzcG9uZCBhcHByb3ByaWF0ZWx5IHRvIHRoZSBjaGFuZ2VzLlxuICAgKiBUaGUgaW5wdXQgcHJvcGVydGllcyBjYW4gYWxzbyBiZSBiaW5kIHRhcmdldHMgdG8gYW5vdGhlciBvYnNlcnZhYmxlIHNvdXJjZSwgZS5nLiB0aGUgb3V0cHV0IHByb3BlcnR5IG9mIGFub3RoZXIgY29tcG9uZW50LlxuICAgKi9cbiAgaW5wdXRzPzogRGljdDxhbnk+O1xuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IGlzIGNhbGxlZCBvbmNlIGFmdGVyIHRoZSBzY2VuZSBub2RlIGl0cyBhdHRhY2hlZCB0byBoYXMgc3RhcnRlZC5cbiAgICovXG4gIG9uSW5pdD8oKTogdm9pZDtcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyBjYWxsZWQgYXQgbW9zdCBvbmNlIHBlciBmcmFtZSB3aGVuIHRoZXJlIGFyZSBldmVudHMgb24gdGhpcyBjb21wb25lbnQuXG4gICAqIEFueSBvZiB0aGUgaW50ZXJhY3Rpb24gdHlwZXMgc3BlY2lmaWVkIGluIGB0aGlzLmludGVyYWN0aW9uc2Agb3IgYSBjYWxsIHRvIG5vdGlmeSBmb3IgYSBib3VuZCBldmVudCB3aWxsIHRyaWdnZXIgdGhpcyBldmVudC5cbiAgICogQHByb3BlcnR5IHtzdHJpbmcgfCBDb21wb25lbnRJbnRlcmFjdGlvblR5cGV9IGV2ZW50VHlwZSBUaGUgZXZlbnQgdHlwZVxuICAgKiBAcHJvcGVydHkge3Vua25vd259IGV2ZW50RGF0YSBUaGUgZGF0YSBwYXlsb2FkIG9mIHRoZSBldmVudFxuICAgKi9cbiAgb25FdmVudD8oZXZlbnRUeXBlOiBzdHJpbmcsIGV2ZW50RGF0YTogdW5rbm93bik6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgY2FsbGVkIGFmdGVyIGFuIGlucHV0IHByb3BlcnR5IGhhcyBjaGFuZ2VkLlxuICAgKiBJdCB3aWxsIGJlIGNhbGxlZCBhdCBtb3N0IG9uY2UgYSBmcmFtZS5cbiAgICovXG4gIG9uSW5wdXRzVXBkYXRlZD8ocHJldmlvdXNJbnB1dHM6IHRoaXNbJ2lucHV0cyddKTogdm9pZDtcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyBjYWxsZWQgb25jZSBhIGZyYW1lIGFmdGVyIGlucHV0IGNoYW5nZXMgaGF2ZSBiZWVuIGRldGVjdGVkLlxuICAgKi9cbiAgb25UaWNrPyh0aWNrRGVsdGE6IG51bWJlcik6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEByZXNlcnZlZFxuICAgKiBBIGRpY3Rpb25hcnkgb2YgZXZlbnRzIHRoYXQgd2lsbCBiZSBoYW5kbGVkIGJ5IHRoaXMgY29tcG9uZW50J3MgYG9uRXZlbnRgLiBFdmVyeSBjb21wb25lbnQgaXMgZ3VhcmFudGVlZCB0byBoYXZlIGFsbCBvZiB0aGUgYEludGVyYWN0aW9uU2VsZWN0aW9uYCBrZXlzOlxuICAgKiAgYGV2ZW50c1tJbnRlcmFjdGlvblNlbGVjdGlvbi5DTElDS11gLCBgZXZlbnRzW0ludGVyYWN0aW9uU2VsZWN0aW9uLkhPVkVSXWAsIGBldmVudHNbSW50ZXJhY3Rpb25TZWxlY3Rpb24uRFJBR11gXG4gICAqIE5vdGU6IHJlZ2lzdGVyaW5nIHRvIHJlY2VpdmUgYEludGVyYWN0aW9uU2VsZWN0aW9uLkhPVkVSYCB3aWxsIHByb2R1Y2UgYm90aCBgSW50ZXJhY3Rpb25UeXBlLkhPVkVSYCBhbmQgYEludGVyYWN0aW9uVHlwZS5VTkhPVkVSYCBpbiBgb25FdmVudGAuXG4gICAqL1xuICBvdmVycmlkZSBldmVudHM6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+O1xuXG4gIC8qKlxuICAgKiBAcmVzZXJ2ZWRcbiAgICogQSBkaWN0aW9uYXJ5IG9mIGV2ZW50cyB0aGF0IHdpbGwgYmUgZW1pdHRlZCBieSB0aGlzIGNvbXBvbmVudC5cbiAgICovXG4gIGVtaXRzPzogUmVjb3JkPHN0cmluZywgYm9vbGVhbj47XG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgY2FsbGVkIG9uY2UgcmlnaHQgYmVmb3JlIHRoZSBzY2VuZSBub2RlIGhhcyBzdG9wcGVkLlxuICAgKi9cbiAgb25EZXN0cm95PygpOiB2b2lkO1xufVxuXG4vKipcbiAqIEEgbm9kZSBvZiBhIHNjZW5lIGdyYXBoLlxuICogQWdncmVnYXRlcyBgU2NlbmVDb21wb25lbnRgIGFzIGNoaWxkcmVuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElTY2VuZU5vZGUge1xuICAvKipcbiAgICogQSBodW1hbiByZWFkYWJsZSBuYW1lIHByb3ZpZGVkIGJ5IHRoZSB1c2VyLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcG9zaXRpb24gb2YgdGhlIG5vZGUuXG4gICAqIFRoZSBwb3NpdGlvbiwgcXVhdGVybmlvbiwgc2NhbGUgdHJhbnNmb3JtcyBhcmUgYXBwbGllZCBpbiBzY2FsZSwgcXVhdGVybmlvbiwgdGhlbiBzY2FsZSBvcmRlci4gKHNhbWUgYXMgVEhSRUUuanMpXG4gICAqL1xuICByZWFkb25seSBwb3NpdGlvbjogVEhSRUUuVmVjdG9yMztcblxuICAvKipcbiAgICogVGhlIG9yaWVudGF0aW9uIG9mIHRoZSBub2RlLlxuICAgKiBUaGUgcG9zaXRpb24sIHF1YXRlcm5pb24sIHNjYWxlIHRyYW5zZm9ybXMgYXJlIGFwcGxpZWQgaW4gc2NhbGUsIHF1YXRlcm5pb24sIHRoZW4gc2NhbGUgb3JkZXIuIChzYW1lIGFzIFRIUkVFLmpzKVxuICAgKi9cbiAgcmVhZG9ubHkgcXVhdGVybmlvbjogVEhSRUUuUXVhdGVybmlvbjtcblxuICAvKipcbiAgICogVGhlIHNjYWxlIG9mIHRoZSBub2RlLlxuICAgKiBUaGUgcG9zaXRpb24sIHF1YXRlcm5pb24sIHNjYWxlIHRyYW5zZm9ybXMgYXJlIGFwcGxpZWQgaW4gc2NhbGUsIHF1YXRlcm5pb24sIHRoZW4gc2NhbGUgb3JkZXIuIChzYW1lIGFzIFRIUkVFLmpzKVxuICAgKi9cbiAgcmVhZG9ubHkgc2NhbGU6IFRIUkVFLlZlY3RvcjM7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbmQgYWRkIGEgY2hpbGQgY29tcG9uZW50IHRvIHRoaXMgbm9kZS5cbiAgICpcbiAgICogQHBhcmFtIGZhY3RvcnkgVGhlIG5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBmYWN0b3J5IHRvIGdlbmVyYXRlIGEgYFNjZW5lQ29tcG9uZW50YFxuICAgKiBAcGFyYW0gaW5pdGlhbElucHV0cyBBbiBpbml0aWFsIHNldCBvZiBpbnB1dHMsIGltbWVkaWF0ZWx5IGF2YWlsYWJsZSB0byB0aGUgbmV3bHkgY3JlYXRlIGBTY2VuZUNvbXBvbmVudC5vbkluaXRgXG4gICAqL1xuICBhZGRDb21wb25lbnQoZmFjdG9yeTogc3RyaW5nLCBpbml0aWFsSW5wdXRzPzogU2NlbmVDb21wb25lbnRbJ2lucHV0cyddKTogU2NlbmVDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIEFuIGl0ZXJhdG9yIHRvIGl0ZXJhdGUgb3ZlciB0aGUgY29tcG9uZW50cyBhZGRlZCB0byB0aGlzIG5vZGUgdXNpbmcgYSBmb3Itb2YgbG9vcC5cbiAgICovXG4gIGNvbXBvbmVudEl0ZXJhdG9yKCk6IEl0ZXJhYmxlSXRlcmF0b3I8U2NlbmVDb21wb25lbnQ+O1xuXG4gIC8qKlxuICAgKiBTdGFydCB0aGUgbm9kZSBhbmQgaXRzIGNvbXBvbmVudHMuXG4gICAqL1xuICBzdGFydCgpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBTdG9wIHRoZSBub2RlIGFuZCBpdHMgY29tcG9uZW50cy5cbiAgICovXG4gIHN0b3AoKTogdm9pZDtcbn1cblxuLyoqXG4gKiBUaGUgdHlwZXMgb2YgdGhlIEludGVyYWN0aW9uIGV2ZW50cyByZWNlaXZlZCBmcm9tIHRoZSByZWdpc3RlcmVkIGBJbnRlcmFjdGlvblNlbGVjdGlvbmBcbiAqL1xuZXhwb3J0IGVudW0gQ29tcG9uZW50SW50ZXJhY3Rpb25UeXBlIHtcbiAgLyoqIENMSUNLIGV2ZW50cyAqL1xuICBDTElDSyA9ICdJTlRFUkFDVElPTi5DTElDSycsXG4gIC8qKiBIT1ZFUiBldmVudHMgKi9cbiAgSE9WRVIgPSAnSU5URVJBQ1RJT04uSE9WRVInLFxuICAvKiogRFJBRyBldmVudHMgKG1vdXNlZG93biB0aGVuIG1vdmUpICovXG4gIERSQUcgPSAnSU5URVJBQ1RJT04uRFJBRycsXG4gIERSQUdfQkVHSU4gPSAnSU5URVJBQ1RJT04uRFJBR19CRUdJTicsXG4gIERSQUdfRU5EID0gJ0lOVEVSQUNUSU9OLkRSQUdfRU5EJyxcbiAgUE9JTlRFUl9NT1ZFID0gJ0lOVEVSQUNUSU9OLlBPSU5URVJfTU9WRScsXG4gIFBPSU5URVJfQlVUVE9OID0gJ0lOVEVSQUNUSU9OLlBPSU5URVJfQlVUVE9OJyxcbiAgU0NST0xMID0gJ0lOVEVSQUNUSU9OLlNDUk9MTCcsXG4gIEtFWSA9ICdJTlRFUkFDVElPTi5LRVknLFxuICBMT05HX1BSRVNTX1NUQVJUID0gJ0lOVEVSQUNUSU9OLkxPTkdfUFJFU1NfU1RBUlQnLFxuICBMT05HX1BSRVNTX0VORCA9ICdJTlRFUkFDVElPTi5MT05HX1BSRVNTX0VORCcsXG4gIE1VTFRJX1NXSVBFID0gJ0lOVEVSQUNUSU9OLk1VTFRJX1NXSVBFJyxcbiAgTVVMVElfU1dJUEVfRU5EID0gJ0lOVEVSQUNUSU9OLk1VTFRJX1NXSVBFX0VORCcsXG4gIFBJTkNIID0gJ0lOVEVSQUNUSU9OLlBJTkNIJyxcbiAgUElOQ0hfRU5EID0gJ0lOVEVSQUNUSU9OLlBJTkNIX0VORCcsXG4gIFJPVEFURSA9ICdJTlRFUkFDVElPTi5ST1RBVEUnLFxuICBST1RBVEVfRU5EID0gJ0lOVEVSQUNUSU9OLlJPVEFURV9FTkQnLFxufVxuXG5hYnN0cmFjdCBjbGFzcyBDb21wb25lbnRPdXRwdXRSZXNlcnZlZCB7XG4gIGRlY2xhcmUgb2JqZWN0Um9vdDogVEhSRUUuT2JqZWN0M0QgfCBudWxsO1xuICBkZWNsYXJlIGNvbGxpZGVyOiBUSFJFRS5PYmplY3QzRCB8IG51bGw7XG59XG5cbi8vIEhhY2sgYXJvdW5kIHRoZSB0eXBlIHN5c3RlbSB0byBnZXQgYSBjbGVhbmVyIGludGVyZmFjZSBhcm91bmQgYENvbXBvbmVudE91dHB1dGBcbmludGVyZmFjZSBDb21wb25lbnRPdXQgZXh0ZW5kcyBEaWN0PGFueT4ge31cbmNsYXNzIENvbXBvbmVudE91dCBleHRlbmRzIENvbXBvbmVudE91dHB1dFJlc2VydmVkICB7fVxuXG4vKipcbiAqIEEgZ2VuZXJhbC11c2UgYmFnIG9mIHByb3BlcnRpZXMuXG4gKiBBdCBhIG1pbmltdW0sIGl0IGhhcyBgb2JqZWN0Um9vdGAgYW5kIGBjb2xsaWRlcmAgYXV0b21hdGljYWxseSBkZWZpbmVkLlxuICovXG5leHBvcnQgdHlwZSBDb21wb25lbnRPdXRwdXQgPSBDb21wb25lbnRPdXQ7XG5cbi8qKlxuICogVGhlIGNvbnRleHQgb2YgYSBjb21wb25lbnQgKGF2YWlsYWJsZSBhcyBgdGhpcy5jb250ZXh0YCkgaW4gYSBgU2NlbmVDb21wb25lbnRgIHN1YmNsYXNzLlxuICogQWNjZXNzIHRvIHRoZSByb290IGBJU2NlbmVOb2RlYCBhbmQgdGhlIFRIUkVFLmpzIGFyZSBhdmFpbGFibGUuXG4gKi9cbmV4cG9ydCB0eXBlIENvbXBvbmVudENvbnRleHQgPSB7XG4gIHRocmVlOiB0eXBlb2YgVEhSRUU7XG4gIHJvb3Q6IElTY2VuZU5vZGU7XG4gIHJlbmRlcmVyOiBUSFJFRS5XZWJHTFJlbmRlcmVyO1xuICB1c2VyOiBEaWN0PGFueT47XG4gIHNjZW5lOiBTY2VuZTtcbn07XG5cbi8qKlxuICogQSByYXljYXN0IGludGVyc2VjdGlvbiB3aXRoIGEgbWVzaFxuICovXG5leHBvcnQgdHlwZSBJbnRlcnNlY3QgPSB7XG4gIHBvaW50OiBUSFJFRS5WZWN0b3IzO1xuICBub3JtYWw6IFRIUkVFLlZlY3RvcjM7XG4gIGNvbGxpZGVyOiBUSFJFRS5PYmplY3QzRDtcbn07XG5cbi8qKlxuICogQSBzcHkgdGhhdCBjYW4gYmUgYXR0YWNoZWQgdG8gYSBjb21wb25lbnQgdXNpbmcgYHNweU9uRXZlbnRgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbXBvbmVudEV2ZW50U3B5PFQgPSB1bmtub3duPiB7XG4gIHJlYWRvbmx5IGV2ZW50VHlwZTogc3RyaW5nO1xuICBvbkV2ZW50KGV2ZW50RGF0YT86IFQpOiB2b2lkO1xufVxuXG4vKipcbiAqIEFuIG9iamVjdCByZXNwb25zaWJsZSBmb3IgcmVtb3ZpbmcgYSBzcHkgZnJvbSBhIGNvbXBvbmVudCdzIGV2ZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmlwdGlvbiB7XG4gIGNhbmNlbCgpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElWZWN0b3IyIHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVZlY3RvcjMge1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbiAgejogbnVtYmVyO1xufVxuXG5leHBvcnQgZW51bSBQb2ludGVyQnV0dG9uIHtcbiAgUFJJTUFSWSxcbiAgTUlERExFLFxuICBTRUNPTkRBUlksXG4gIEJBQ0ssXG4gIEZPUldBUkQsXG4gIENPVU5ULFxufVxuXG5leHBvcnQgZW51bSBQb2ludGVyQnV0dG9uTWFzayB7XG4gIE5PTkUsXG4gIFBSSU1BUlkgPSAxIDw8IFBvaW50ZXJCdXR0b24uUFJJTUFSWSxcbiAgU0VDT05EQVJZID0gMSA8PCBQb2ludGVyQnV0dG9uLlNFQ09OREFSWSxcbiAgTUlERExFID0gMSA8PCBQb2ludGVyQnV0dG9uLk1JRERMRSxcbiAgQkFDSyA9IDEgPDwgUG9pbnRlckJ1dHRvbi5CQUNLLFxuICBGT1JXQVJEID0gMSA8PCBQb2ludGVyQnV0dG9uLkZPUldBUkQsXG4gIEFMTCA9ICgxIDw8IFBvaW50ZXJCdXR0b24uQ09VTlQpIC0gMSxcbn1cblxuZXhwb3J0IGVudW0gUG9pbnRlckRldmljZSB7XG4gIE1PVVNFID0gJ21vdXNlJyxcbiAgVE9VQ0ggPSAndG91Y2gnLFxuICBQRU4gPSAncGVuJyxcbiAgR0FNRVBBRCA9ICdnYW1lcGFkJyxcbn1cblxuLyoqXG4gKiBGaXJlZCBvbiBldmVyeSBtb3VzZSBkb3duLCBwcm92aWRlcyBjdXJyZW50IHBvc2l0aW9uL2J1dHRvbnMgZG93bi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEcmFnQmVnaW5FdmVudCB7XG4gIC8qKiBDdXJyZW50IHBvc2l0aW9uICovXG4gIHJlYWRvbmx5IHBvc2l0aW9uOiBJVmVjdG9yMjtcbiAgLyoqIEJ1dHRvbnMgZG93biBkdXJpbmcgZXZlbnQgKi9cbiAgcmVhZG9ubHkgYnV0dG9uczogUG9pbnRlckJ1dHRvbk1hc2s7XG59XG5cbi8qKlxuICogRmlyZWQgb25seSBhZnRlciB0aGUgcG9pbnRlciBoYXMgbW92ZWQgZmFyIGVub3VnaCBmcm9tIERyYWdCZWdpbkV2ZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRHJhZ0V2ZW50IHtcbiAgLyoqIEN1cnJlbnQgcG9zaXRpb24gKi9cbiAgcmVhZG9ubHkgcG9zaXRpb246IElWZWN0b3IyO1xuICAvKiogRGVsdGEgbW92ZWQgc2luY2UgbGFzdCBkcmFnIGV2ZW50ICovXG4gIHJlYWRvbmx5IGRlbHRhOiBJVmVjdG9yMjtcbiAgLyoqIEJ1dHRvbnMgZG93biBkdXJpbmcgZXZlbnQgKi9cbiAgcmVhZG9ubHkgYnV0dG9uczogUG9pbnRlckJ1dHRvbk1hc2s7XG59XG5cbi8qKlxuICogRmlyZWQgb24gZXZlcnkgbW91c2UgdXAsIGluY2x1ZGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIERyYWdCZWdpbiBhbmQgY3VycmVudCBwb3NpdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEcmFnRW5kRXZlbnQgZXh0ZW5kcyBEcmFnRXZlbnQge1xuICAvKiogZHVyYXRpb24gc2luY2UgbGFzdCBEcmFnRXZlbnQgKi9cbiAgcmVhZG9ubHkgdGltZVNpbmNlTGFzdE1vdmU6IG51bWJlcjtcblxuICAvKiogVGhlIGRlbHRhIGJldHdlZW4gcG9zaXRpb24sIGFuZCB0aGUgcG9zaXRpb24gZnJvbSBEcmFnQmVnaW5FdmVudCAqL1xuICByZWFkb25seSBmdWxsRGVsdGE6IElWZWN0b3IyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBvaW50ZXJNb3ZlRXZlbnQge1xuICByZWFkb25seSBpZDogbnVtYmVyO1xuICByZWFkb25seSBwb3NpdGlvbjogSVZlY3RvcjI7XG4gIHJlYWRvbmx5IGJ1dHRvbnM6IFBvaW50ZXJCdXR0b25NYXNrO1xuICByZWFkb25seSBkZXZpY2U6IFBvaW50ZXJEZXZpY2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9pbnRlckJ1dHRvbkV2ZW50IHtcbiAgcmVhZG9ubHkgaWQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgcG9zaXRpb246IElWZWN0b3IyO1xuICByZWFkb25seSBidXR0b246IFBvaW50ZXJCdXR0b247XG4gIHJlYWRvbmx5IGRvd246IGJvb2xlYW47XG4gIHJlYWRvbmx5IGRldmljZTogUG9pbnRlckRldmljZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY3JvbGxFdmVudCB7XG4gIHJlYWRvbmx5IHBvc2l0aW9uOiBJVmVjdG9yMjtcbiAgcmVhZG9ubHkgZGVsdGE6IElWZWN0b3IyO1xufVxuXG5leHBvcnQgZW51bSBLZXlTdGF0ZSB7XG4gIERPV04sXG4gIFBSRVNTRUQsXG4gIFVQLFxufVxuXG5leHBvcnQgZW51bSBLZXlze1xuICBFU0NBUEUgPSAyNyxcbiAgWkVSTyA9IDQ4LFxuICBPTkUgPSA0OSxcbiAgVFdPID0gNTAsXG4gIFRIUkVFID0gNTEsXG4gIEZPVVIgPSA1MixcbiAgRklWRSA9IDUzLFxuICBTSVggPSA1NCxcbiAgU0VWRU4gPSA1NSxcbiAgRUlHSFQgPSA1NixcbiAgTklORSA9IDU3LFxuICBMRUZUQVJST1cgPSAzNyxcbiAgVVBBUlJPVyA9IDM4LFxuICBSSUdIVEFSUk9XID0gMzksXG4gIERPV05BUlJPVyA9IDQwLFxuICBUQUIgPSA5LFxuICBBID0gNjUsXG4gIEIgPSA2NixcbiAgQyA9IDY3LFxuICBEID0gNjgsXG4gIEUgPSA2OSxcbiAgRiA9IDcwLFxuICBHID0gNzEsXG4gIEggPSA3MixcbiAgSSA9IDczLFxuICBKID0gNzQsXG4gIEsgPSA3NSxcbiAgTCA9IDc2LFxuICBNID0gNzcsXG4gIE4gPSA3OCxcbiAgTyA9IDc5LFxuICBQID0gODAsXG4gIFEgPSA4MSxcbiAgUiA9IDgyLFxuICBTID0gODMsXG4gIFQgPSA4NCxcbiAgVSA9IDg1LFxuICBWID0gODYsXG4gIFcgPSA4NyxcbiAgWCA9IDg4LFxuICBZID0gODksXG4gIFogPSA5MCxcbiAgU1BBQ0UgPSAzMixcbiAgUkVUVVJOID0gMTMsXG4gIERFTEVURSA9IDQ2LFxuICBCQUNLU1BBQ0UgPSA4LFxuICBTRU1JQ09MT04gPSAxODYsXG4gIFBMVVNFUVVBTFMgPSAxODcsXG4gIERBU0hVTkRFUlNDT1JFID0gMTg5LFxuICBPUEVOQlJBQ0tFVCA9IDIxOSxcbiAgU0hJRlQgPSAxNixcbiAgQUxUID0gMTgsXG4gIENPTlRST0wgPSAxNyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLZXlFdmVudCB7XG4gIGtleTogS2V5cztcbiAgc3RhdGU6IEtleVN0YXRlO1xuICBtb2RpZmllcnM6IHtcbiAgICBhbHRLZXk6IGJvb2xlYW4sXG4gICAgc2hpZnRLZXk6IGJvb2xlYW4sXG4gICAgY3RybEtleTogYm9vbGVhblxuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvbmdQcmVzc1N0YXJ0RXZlbnQge1xuICByZWFkb25seSBwb3NpdGlvbjogSVZlY3RvcjI7XG4gIHJlYWRvbmx5IGJ1dHRvbnM6IFBvaW50ZXJCdXR0b25NYXNrO1xuICByZWFkb25seSB0aHJlc2hvbGQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb25nUHJlc3NFbmRFdmVudCB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIE11bHRpU3dpcGVFdmVudCB7XG4gIHJlYWRvbmx5IHBvaW50ZXJDb3VudDogbnVtYmVyO1xuICByZWFkb25seSBwb3NpdGlvbjogSVZlY3RvcjI7XG4gIHJlYWRvbmx5IGRlbHRhOiBJVmVjdG9yMjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNdWx0aVN3aXBlRW5kRXZlbnQgZXh0ZW5kcyBNdWx0aVN3aXBlRXZlbnQge1xuICByZWFkb25seSB0aW1lU2luY2VMYXN0TW92ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBpbmNoRXZlbnQge1xuICByZWFkb25seSBwaW5jaERlbHRhOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGluY2hFbmRFdmVudCBleHRlbmRzIFBpbmNoRXZlbnQge1xuICByZWFkb25seSB0aW1lU2luY2VMYXN0TW92ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJvdGF0ZUV2ZW50IHtcbiAgcmVhZG9ubHkgcm90YXRlRGVsdGE6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSb3RhdGVFbmRFdmVudCBleHRlbmRzIFJvdGF0ZUV2ZW50IHtcbiAgcmVhZG9ubHkgdGltZVNpbmNlTGFzdE1vdmU6IG51bWJlcjtcbn1cbiJdfQ==
|