dcl-npc-toolkit 1.0.9 → 1.0.10-20230523134956.commit-0a9ee1c
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/README.md +14 -3
- package/dist/bubble.d.ts +1 -1
- package/dist/bubble.js +14 -4
- package/dist/components.d.ts +5 -0
- package/dist/components.js +10 -5
- package/dist/dialog.js +1 -1
- package/dist/npc.d.ts +2 -2
- package/dist/npc.js +29 -15
- package/dist/systems.d.ts +1 -0
- package/dist/systems.js +19 -3
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -43,13 +43,22 @@ npm i dcl-npc-toolkit -B
|
|
|
43
43
|
|
|
44
44
|
```
|
|
45
45
|
|
|
46
|
+
2. Install the dependent sdk utils library as an npm bundle. Run this command in your scene's project folder:
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
npm i @dcl-sdk/utils -B
|
|
53
|
+
|
|
54
|
+
```
|
|
46
55
|
|
|
47
56
|
|
|
48
|
-
|
|
57
|
+
3. Run `dcl start` or `dcl build` so the dependencies are correctly installed.
|
|
49
58
|
|
|
50
59
|
|
|
51
60
|
|
|
52
|
-
|
|
61
|
+
4. Import the library into the scene's script. Add this line at the start of your `game.ts` file, or any other TypeScript files that require it:
|
|
53
62
|
|
|
54
63
|
|
|
55
64
|
|
|
@@ -61,7 +70,7 @@ import * as npc from 'dcl-npc-toolkit'
|
|
|
61
70
|
|
|
62
71
|
|
|
63
72
|
|
|
64
|
-
|
|
73
|
+
5. In your TypeScript file, call the `create` function passing it a `TransformType` and a `NPCData` object. The `NPCData` object requires a minimum of a `NPCType` and a function to trigger when the NPC is activated:
|
|
65
74
|
|
|
66
75
|
|
|
67
76
|
|
|
@@ -218,6 +227,8 @@ To configure other properties of an NPC, add a fourth argument as an `NPCData` o
|
|
|
218
227
|
- `walkingSpeed`: _(number)_ Speed of the NPC when walking. By default _2_.
|
|
219
228
|
|
|
220
229
|
- `path`: _(Vector3)_ Default path to walk. If a value is provided for this field on NPC initialization, the NPC will walk over this path in loop from the start.
|
|
230
|
+
- `bubbleHeight`: _(number)_ The height at which to display the speech bubble above the head of the NPC.
|
|
231
|
+
- `textBubble`: _(boolean)_ If true, NPC starts with a speech bubble object ready to be accessed from the start. Otherwise, they text bubble is only built on the first call to `talkBubble()` on the NPC.
|
|
221
232
|
|
|
222
233
|
- `noUI`: _(boolean)_ If true, no UI object is built for UI dialogs for this NPC. This may help optimize the scene if this feature is not used.
|
|
223
234
|
|
package/dist/bubble.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { Dialog } from './types';
|
|
|
3
3
|
export declare let bubblesTexture: string;
|
|
4
4
|
export declare let bubbles: Map<Entity, any>;
|
|
5
5
|
export declare function createDialogBubble(npc: Entity, height?: number, sound?: string): void;
|
|
6
|
-
export declare function openBubble(npc: Entity, dialog: Dialog[],
|
|
6
|
+
export declare function openBubble(npc: Entity, dialog: Dialog[], startIndex?: number | string): void;
|
|
7
7
|
export declare function closeBubble(npc: Entity): void;
|
|
8
8
|
export declare function closeBubbleEndAll(npc: Entity): void;
|
|
9
9
|
export declare function next(npc: Entity): void;
|
package/dist/bubble.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AudioSource, Billboard, engine, Material, MeshRenderer, TextShape, Transform, VisibilityComponent } from '@dcl/sdk/ecs';
|
|
2
2
|
import { Color4, Vector3 } from '@dcl/sdk/math';
|
|
3
|
-
import { addLineBreak } from './dialog';
|
|
3
|
+
import { addLineBreak, findDialogByName } from './dialog';
|
|
4
4
|
import { IsTypingBubble } from './components';
|
|
5
5
|
export let bubblesTexture = 'https://decentraland.org/images/ui/dialog-bubbles.png';
|
|
6
6
|
export let bubbles = new Map();
|
|
@@ -88,10 +88,20 @@ export function createDialogBubble(npc, height, sound) {
|
|
|
88
88
|
soundPlayer: sound ? engine.addEntity() : undefined,
|
|
89
89
|
});
|
|
90
90
|
}
|
|
91
|
-
export function openBubble(npc, dialog,
|
|
91
|
+
export function openBubble(npc, dialog, startIndex) {
|
|
92
92
|
let bubble = bubbles.get(npc);
|
|
93
93
|
bubble.script = dialog.slice();
|
|
94
|
-
|
|
94
|
+
let index;
|
|
95
|
+
if (!startIndex) {
|
|
96
|
+
index = 0;
|
|
97
|
+
}
|
|
98
|
+
else if (typeof startIndex === 'number') {
|
|
99
|
+
index = startIndex;
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
index = findDialogByName(dialog, startIndex);
|
|
103
|
+
}
|
|
104
|
+
bubble.index = index;
|
|
95
105
|
let currentText = dialog[bubble.index] ? dialog[bubble.index] : { text: '' };
|
|
96
106
|
bubble.currentText = currentText;
|
|
97
107
|
if (currentText.audio) {
|
|
@@ -343,4 +353,4 @@ export function getBubbleTextLength(text) {
|
|
|
343
353
|
return 40;
|
|
344
354
|
}
|
|
345
355
|
}
|
|
346
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnViYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2J1YmJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQVksV0FBVyxFQUFlLFNBQVMsRUFBaUIsTUFBTSxFQUEyQyxRQUFRLEVBQWMsWUFBWSxFQUFtQyxTQUFTLEVBQUMsU0FBUyxFQUFpQixtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUcxUSxPQUFPLEVBQVMsTUFBTSxFQUFjLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFpQixNQUFNLFVBQVUsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRTdDLE1BQU0sQ0FBQyxJQUFJLGNBQWMsR0FBRyx1REFBdUQsQ0FBQTtBQUVuRixNQUFNLENBQUMsSUFBSSxPQUFPLEdBQXFCLElBQUksR0FBRyxFQUFFLENBQUE7QUFFaEQsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFBO0FBQ2hCLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQTtBQUVoQixJQUFJLG9CQUFvQixHQUFHLENBQUMsQ0FBQTtBQUM1QixJQUFJLHFCQUFxQixHQUFHLEVBQUUsQ0FBQTtBQUM5QixJQUFJLG1CQUFtQixHQUFHLEVBQUUsQ0FBQTtBQUM1QixJQUFJLG1CQUFtQixHQUFHLEdBQUcsQ0FBQTtBQUU3QixJQUFJLGtCQUFrQixHQUFHLEdBQUcsQ0FBQTtBQUM1QixJQUFJLG1CQUFtQixHQUFHLEdBQUcsQ0FBQTtBQUM3QixJQUFJLGlCQUFpQixHQUFHLEdBQUcsQ0FBQTtBQUMzQixJQUFJLGlCQUFpQixHQUFHLEdBQUcsQ0FBQTtBQUUzQixJQUFJLGtCQUFrQixHQUFHLENBQUMsR0FBRyxDQUFBO0FBQzdCLElBQUksbUJBQW1CLEdBQUcsQ0FBQyxHQUFHLENBQUE7QUFDOUIsSUFBSSxpQkFBaUIsR0FBRyxDQUFDLENBQUE7QUFDekIsSUFBSSxpQkFBaUIsR0FBRyxHQUFHLENBQUE7QUFFM0IsSUFBSSxvQkFBb0IsR0FBRyxHQUFHLENBQUE7QUFDOUIsSUFBSSxxQkFBcUIsR0FBRyxHQUFHLENBQUE7QUFDL0IsSUFBSSxtQkFBbUIsR0FBRyxDQUFDLENBQUE7QUFDM0IsSUFBSSxtQkFBbUIsR0FBRyxHQUFHLENBQUE7QUFFN0IsSUFBSSxZQUFZLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQTtBQUM5QixJQUFJLFlBQVksR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFBO0FBRTdCLElBQUksYUFBYSxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUE7QUFDL0IsSUFBSSxhQUFhLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQTtBQUU5QixJQUFJLFdBQVcsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFBO0FBQzdCLElBQUksV0FBVyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUE7QUFFN0IsSUFBSSxXQUFXLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQTtBQUM3QixJQUFJLFdBQVcsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFBO0FBRTdCLElBQUksY0FBYyxHQUFHLEdBQUcsQ0FBQTtBQUl4QixNQUFNLFVBQVUsa0JBQWtCLENBQUMsR0FBVSxFQUFFLE1BQWMsRUFBRSxLQUFhO0lBQ3hFLElBQUksV0FBVyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUE7SUFFbEQsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFBO0lBQzdCLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFDO1FBQ2xCLGFBQWEsR0FBbUI7S0FDbkMsQ0FBQyxDQUFBO0lBRUYsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUM7UUFDbEIsTUFBTSxFQUFDLEdBQUc7S0FDYixDQUFDLENBQUE7SUFFRixJQUFJLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUE7SUFDbEMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUM7UUFDdkIsTUFBTSxFQUFDLElBQUk7UUFDWCxRQUFRLEVBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBQyxXQUFXLEVBQUMsQ0FBQyxDQUFDO0tBQzVELENBQUMsQ0FBQTtJQUVGLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQTtJQUM5QixTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBQztRQUNuQixNQUFNLEVBQUMsU0FBUztRQUNoQixLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQztLQUUvQixDQUFDLENBQUE7SUFDRixZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssRUFDdkIsWUFBWSxDQUNaLGFBQWEsQ0FBQyxNQUFNLEVBQ3BCLElBQUksRUFDSixJQUFJLENBQ0wsQ0FBQyxDQUFBO0lBRUosbUJBQW1CLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFBO0lBRW5ELFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUU7UUFDN0IsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQy9CLEdBQUcsRUFBRSxjQUFjO1NBQ3BCLENBQUM7S0FDSCxDQUFDLENBQUE7SUFFSixJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUE7SUFDN0IsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUM7UUFDbEIsUUFBUSxFQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQztRQUN6QyxNQUFNLEVBQUMsU0FBUztLQUNuQixDQUFDLENBQUE7SUFDRixTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRTtRQUNuQixJQUFJLEVBQUMsRUFBRTtRQUNQLFFBQVEsRUFBQyxRQUFRO1FBQ2pCLElBQUksR0FBbUI7UUFDdkIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDO1FBQ2pDLFNBQVMsR0FBZ0M7S0FDNUMsQ0FBQyxDQUFBO0lBQ0YsbUJBQW1CLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFBO0lBRWxELE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1FBQ2IsU0FBUyxFQUFDLFNBQVM7UUFDbkIsS0FBSyxFQUFDLEtBQUs7UUFDWCxJQUFJLEVBQUMsSUFBSTtRQUNULFdBQVcsRUFBRSxXQUFXO1FBQ3hCLFlBQVksRUFBQyxLQUFLO1FBQ2xCLE1BQU0sRUFBQyxLQUFLO1FBQ1osV0FBVyxFQUFDLEVBQUU7UUFDZCxZQUFZLEVBQUMsQ0FBQztRQUNkLFFBQVEsRUFBQyxFQUFFO1FBQ1gsS0FBSyxFQUFDLENBQUM7UUFDUCxLQUFLLEVBQUMsRUFBRTtRQUNSLE1BQU0sRUFBQyxFQUFFO1FBQ1QsS0FBSyxFQUFDLENBQUM7UUFDUCxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDaEMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO0tBQ3RELENBQUMsQ0FBQTtBQUNOLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLEdBQVUsRUFBRSxNQUFlLEVBQUUsS0FBYTtJQUNqRSxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRTdCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQzlCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUVoQyxJQUFJLFdBQVcsR0FBVyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQTtJQUNwRixNQUFNLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQTtJQUVoQyxJQUFJLFdBQVcsQ0FBQyxLQUFLLEVBQUU7UUFDbkIsV0FBVyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFO1lBQzVDLFlBQVksRUFBRSxXQUFXLENBQUMsS0FBSztZQUMvQixJQUFJLEVBQUUsS0FBSztZQUNYLE9BQU8sRUFBRSxLQUFLO1NBQ2pCLENBQUMsQ0FBQTtRQUNGLElBQUksS0FBSyxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQ3RELEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFBO1FBQ2xCLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO0tBQ3ZCO1NBQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ3JCLFdBQVcsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtZQUM1QyxZQUFZLEVBQUUsTUFBTSxDQUFDLEtBQUs7WUFDMUIsSUFBSSxFQUFFLEtBQUs7WUFDWCxPQUFPLEVBQUUsS0FBSztTQUNqQixDQUFDLENBQUE7UUFDRixJQUFJLEtBQUssR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUN0RCxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQTtRQUNsQixLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQTtLQUN2QjtJQUVELElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUE7SUFDdEIsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFBO0lBQzVGLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFBO0lBQ3ZHLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFckYsbUJBQW1CLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO0lBRTNELElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsbUJBQW1CLEVBQUU7UUFDL0MsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLG1CQUFtQixDQUFDLENBQUE7S0FDL0M7SUFFSCxXQUFXLENBQ1AsR0FBRyxFQUNILFdBQVcsQ0FBQyxJQUFJLEVBQ2hCLE1BQU0sQ0FBQyxLQUFLLEVBQ1osV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUNuRCxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQzVELENBQUE7SUFFRCxZQUFZLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDMUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNyQyxNQUFNLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQTtBQUM5QixDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUFVO0lBQ2xDLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDekIsTUFBTSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUE7SUFDM0IsTUFBTSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUE7SUFDckIsTUFBTSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUE7SUFDdkIsTUFBTSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUE7SUFDdkIsTUFBTSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUE7SUFDcEIsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUE7SUFDaEIsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUE7SUFDaEIsTUFBTSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUE7SUFDbEIsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUE7SUFDbEIsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUE7SUFDakIsTUFBTSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUE7SUFDekIsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQTtJQUMzQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUE7SUFDM0QsbUJBQW1CLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFBO0FBQ3BFLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsR0FBVTtJQUN4QyxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzdCLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRTtRQUNyQixNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtRQUNsQixXQUFXLENBQUMsR0FBRyxDQUFDLENBQUE7S0FDbkI7QUFDSCxDQUFDO0FBRUgsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFBO0FBRXhCLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBQTtBQUV6QixTQUFTLFdBQVcsQ0FBQyxHQUFVLEVBQUUsSUFBVyxFQUFFLE1BQWEsRUFBRSxNQUFjLEVBQUUsS0FBYTtJQUN0RixJQUFJLFVBQVUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2pDLFVBQVUsQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNsRixVQUFVLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQTtJQUN4QixVQUFVLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQTtJQUN2QixVQUFVLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQTtJQUMzQixVQUFVLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQTtJQUMzQixVQUFVLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQTtJQUNwQixVQUFVLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQTtJQUN0QixVQUFVLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUE7SUFDckQsVUFBVSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFBO0lBRWhELFVBQVUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQTtJQUU1QyxJQUFHLFVBQVUsQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFDO1FBQ3JCLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQTtLQUNoQjtTQUNHO1FBQ0EsSUFBRyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUM7WUFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO1lBQ3RDLGNBQWMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7U0FDN0I7S0FDSjtBQUNMLENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FBQyxHQUFVO0lBQ3hCLElBQUksVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDakMsVUFBVSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUE7SUFDekIsVUFBVSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUE7SUFDcEIsVUFBVSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQTtJQUNwRCxVQUFVLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUE7QUFDaEQsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLEdBQVUsRUFBRSxVQUFpQjtJQUMvQyxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRTdCLElBQUksVUFBVSxHQUFHLG9CQUFvQixFQUFFO1FBQ25DLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssRUFDOUIsWUFBWSxDQUNaLGFBQWEsQ0FBQyxLQUFLLEVBQ25CLElBQUksRUFDSixJQUFJLENBQ0wsQ0FBQyxDQUFBO1FBRUosU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUE7UUFDekQsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUE7UUFDekQsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxrQkFBa0IsQ0FBQTtRQUN0RSxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLEdBQUcsa0JBQWtCLENBQUE7UUFDM0YsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLG9CQUFvQixDQUFBO0tBQy9EO1NBQU0sSUFBSSxVQUFVLEdBQUcscUJBQXFCLEVBQUU7UUFDN0MsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUM5QixZQUFZLENBQ1osYUFBYSxDQUFDLE1BQU0sRUFDcEIsSUFBSSxFQUNKLElBQUksQ0FDTCxDQUFDLENBQUE7UUFFSixTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQTtRQUMxRCxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQTtRQUMxRCxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLG1CQUFtQixDQUFBO1FBQ3ZFLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQTtRQUM1RixTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcscUJBQXFCLENBQUE7S0FDaEU7U0FBTSxJQUFJLFVBQVUsR0FBRyxtQkFBbUIsRUFBRTtRQUMzQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQzlCLFlBQVksQ0FDWixhQUFhLENBQUMsSUFBSSxFQUNsQixJQUFJLEVBQ0osSUFBSSxDQUNMLENBQUMsQ0FBQTtRQUVKLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFBO1FBQ3hELFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFBO1FBQ3hELFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUE7UUFDckUsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxHQUFHLGlCQUFpQixDQUFBO1FBQzFGLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRyxtQkFBbUIsQ0FBQTtLQUM5RDtTQUFNO1FBQ0wsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUM5QixZQUFZLENBQ1osYUFBYSxDQUFDLElBQUksRUFDbEIsSUFBSSxFQUNKLElBQUksQ0FDTCxDQUFDLENBQUE7UUFDSixTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQTtRQUN4RCxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQTtRQUN4RCxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFBO1FBQ3JFLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQTtRQUMxRixTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsbUJBQW1CLENBQUE7S0FDOUQ7QUFDUCxDQUFDO0FBR0QsU0FBUyxrQkFBa0IsQ0FBQyxHQUFVLEVBQUUsTUFBYztJQUNsRCxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzdCLElBQUksV0FBVyxHQUFXLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQzdDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUN2QixDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUE7SUFHaEIsSUFBSSxLQUFLLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQTtJQUUzRSxJQUFJLFdBQVcsQ0FBQyxPQUFPLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO1FBQzFELEtBQUssSUFBSSxFQUFFLENBQUE7S0FDWjtTQUFNLElBQUksV0FBVyxDQUFDLE9BQU8sSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7UUFDakUsS0FBSyxJQUFJLEVBQUUsQ0FBQTtLQUNaO0lBQ0QsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRO1FBQ2pFLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUTtRQUN0QixDQUFDLENBQUMsUUFBUSxDQUFBO0lBRVYsbUJBQW1CLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO0lBQzFELFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFBO0lBRXBELElBQUksV0FBVyxDQUFDLEtBQUssRUFBRTtRQUNuQixXQUFXLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUU7WUFDNUMsWUFBWSxFQUFFLFdBQVcsQ0FBQyxLQUFLO1lBQy9CLElBQUksRUFBRSxLQUFLO1lBQ1gsT0FBTyxFQUFFLEtBQUs7U0FDakIsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxLQUFLLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDdEQsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUE7UUFDbEIsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUE7S0FDdkI7U0FBTSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUU7UUFDckIsV0FBVyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFO1lBQzVDLFlBQVksRUFBRSxNQUFNLENBQUMsS0FBSztZQUMxQixJQUFJLEVBQUUsS0FBSztZQUNYLE9BQU8sRUFBRSxLQUFLO1NBQ2pCLENBQUMsQ0FBQTtRQUNGLElBQUksS0FBSyxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQ3RELEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFBO1FBQ2xCLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO0tBQ3ZCO0FBRUgsQ0FBQztBQUdILE1BQU0sVUFBVSxJQUFJLENBQUMsR0FBVTtJQUMzQixJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRTdCLElBQUcsTUFBTSxDQUFDLFlBQVksRUFBQztRQUNyQixJQUFJLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUU3QyxJQUFHLENBQUMsV0FBVyxFQUFDO1lBQ2QsV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBQyxDQUFDLENBQUMsQ0FBQTtTQUM1QztRQUVDLElBQUksV0FBVyxDQUFDLGVBQWUsRUFBRTtZQUMvQixXQUFXLENBQUMsZUFBZSxFQUFFLENBQUE7U0FDOUI7UUFFRCxJQUFJLFdBQVcsQ0FBQyxhQUFhLEVBQUU7WUFDN0IsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ2hCLE9BQU07U0FDUDtRQUdBLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUdmLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUV6QyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLG1CQUFtQixFQUFFO1lBQ2pELFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFBO1NBQy9DO1FBRUQsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQTtRQUUzQyxZQUFZLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFFMUMsV0FBVyxDQUNQLEdBQUcsRUFDSCxXQUFXLENBQUMsSUFBSSxFQUNoQixNQUFNLENBQUMsS0FBSyxFQUNaLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFDbkQsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUM1RCxDQUFBO1FBQ0gsa0JBQWtCLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtLQUN0QztBQUdILENBQUM7QUFFSCxTQUFTLFlBQVksQ0FDcEIsT0FBcUIsRUFDckIsS0FBYSxFQUNiLEtBQWE7SUFFYixPQUFPLE1BQU0sQ0FDTixFQUFDLENBQUMsRUFBRyxPQUFPLENBQUMsVUFBVyxHQUFHLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLFNBQVUsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsS0FBSyxFQUFDLEVBQ2pHLEVBQUMsQ0FBQyxFQUFHLENBQUMsT0FBTyxDQUFDLFVBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsU0FBVSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsR0FBRyxLQUFLLEVBQUMsRUFDekgsRUFBQyxDQUFDLEVBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxFQUFHLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxTQUFVLENBQUMsR0FBRyxLQUFLLEVBQUMsRUFDbkcsRUFBQyxDQUFDLEVBQUcsT0FBTyxDQUFDLFVBQVcsR0FBRyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxTQUFVLENBQUMsR0FBRyxLQUFLLEVBQUMsQ0FDaEYsQ0FBQTtBQUNBLENBQUM7QUFFSCxTQUFTLE1BQU0sQ0FDZCxLQUFVLEVBQ1YsS0FBVSxFQUNWLEtBQVUsRUFDVixLQUFVO0lBR1YsT0FBTztRQUNMLEtBQUssQ0FBQyxDQUFDO1FBQ1AsS0FBSyxDQUFDLENBQUM7UUFFUCxLQUFLLENBQUMsQ0FBQztRQUNQLEtBQUssQ0FBQyxDQUFDO1FBRVAsS0FBSyxDQUFDLENBQUM7UUFDUCxLQUFLLENBQUMsQ0FBQztRQUVQLEtBQUssQ0FBQyxDQUFDO1FBQ1AsS0FBSyxDQUFDLENBQUM7UUFFUCxLQUFLLENBQUMsQ0FBQztRQUNQLEtBQUssQ0FBQyxDQUFDO1FBRVAsS0FBSyxDQUFDLENBQUM7UUFDUCxLQUFLLENBQUMsQ0FBQztRQUVQLEtBQUssQ0FBQyxDQUFDO1FBQ1AsS0FBSyxDQUFDLENBQUM7UUFFUCxLQUFLLENBQUMsQ0FBQztRQUNQLEtBQUssQ0FBQyxDQUFDO0tBQ1IsQ0FBQTtBQUNBLENBQUM7QUFFRCxJQUFJLGFBQWEsR0FBTztJQUN0QixLQUFLLEVBQUU7UUFDTCxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDcEIsWUFBWSxFQUFFLEVBQUUsR0FBRyxDQUFDO1FBQ3BCLFVBQVUsRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUNuQixTQUFTLEVBQUUsR0FBRyxHQUFHLENBQUM7S0FDbkI7SUFDRCxNQUFNLEVBQUU7UUFDTixXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDcEIsWUFBWSxFQUFFLEVBQUUsR0FBRyxDQUFDO1FBQ3BCLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQztRQUNqQixTQUFTLEVBQUUsR0FBRyxHQUFHLENBQUM7S0FDbkI7SUFDRCxJQUFJLEVBQUU7UUFDSixXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDcEIsWUFBWSxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBQ3JCLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQztRQUNqQixTQUFTLEVBQUUsR0FBRyxHQUFHLENBQUM7S0FDbkI7SUFDRCxJQUFJLEVBQUU7UUFDSixXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDcEIsWUFBWSxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBQ3JCLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQztRQUNqQixTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7S0FDakI7Q0FDSixDQUFBO0FBR0QsTUFBTSxVQUFVLG1CQUFtQixDQUFDLElBQVc7SUFDM0MsSUFBRyxJQUFJLENBQUMsTUFBTSxJQUFJLG1CQUFtQixFQUFDO1FBQ2xDLE9BQU8sRUFBRSxDQUFBO0tBQ1o7U0FDSSxJQUFHLElBQUksQ0FBQyxNQUFNLElBQUksbUJBQW1CLEVBQUM7UUFDdkMsT0FBTyxFQUFFLENBQUE7S0FDWjtTQUNJLElBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxxQkFBcUIsRUFBQztRQUN6QyxPQUFPLEVBQUUsQ0FBQTtLQUNaO1NBQ0ksSUFBRyxJQUFJLENBQUMsTUFBTSxJQUFJLG9CQUFvQixFQUFDO1FBQ3hDLE9BQU8sRUFBRSxDQUFBO0tBQ1o7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBBbmltYXRvciwgQXVkaW9Tb3VyY2UsIEF2YXRhclNoYXBlLCBCaWxsYm9hcmQsIEJpbGxib2FyZE1vZGUsIGVuZ2luZSwgRW50aXR5LCBGb250LCBHbHRmQ29udGFpbmVyLCBJbnB1dEFjdGlvbixNYXRlcmlhbCxNZXNoQ29sbGlkZXIsTWVzaFJlbmRlcmVyLHBvaW50ZXJFdmVudHNTeXN0ZW0sVGV4dEFsaWduTW9kZSxUZXh0U2hhcGUsVHJhbnNmb3JtLCBUcmFuc2Zvcm1UeXBlLCBWaXNpYmlsaXR5Q29tcG9uZW50IH0gZnJvbSAnQGRjbC9zZGsvZWNzJ1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnQGRjbC1zZGsvdXRpbHMnXG5pbXBvcnQgeyBEaWFsb2csIEltYWdlU2VjdGlvbiB9IGZyb20gJy4vdHlwZXMnXG5pbXBvcnQgeyBDb2xvcjMsQ29sb3I0LCBRdWF0ZXJuaW9uLCBWZWN0b3IzIH0gZnJvbSAnQGRjbC9zZGsvbWF0aCdcbmltcG9ydCB7IGFkZExpbmVCcmVhaywgYWRkTGluZUJyZWFrcyB9IGZyb20gJy4vZGlhbG9nJ1xuaW1wb3J0IHsgSXNUeXBpbmdCdWJibGUgfSBmcm9tICcuL2NvbXBvbmVudHMnXG5cbmV4cG9ydCBsZXQgYnViYmxlc1RleHR1cmUgPSAnaHR0cHM6Ly9kZWNlbnRyYWxhbmQub3JnL2ltYWdlcy91aS9kaWFsb2ctYnViYmxlcy5wbmcnXG5cbmV4cG9ydCBsZXQgYnViYmxlczogTWFwPEVudGl0eSwgYW55PiA9IG5ldyBNYXAoKVxuXG5sZXQgdGV4dFNpemUgPSAxXG5sZXQgdGV4dFlQb3MgPSAwICAgIFxuXG5sZXQgbWF4TGVuZ3RoU2hvcnRCdWJibGUgPSA4XG5sZXQgbWF4TGVuZ3RoTm9ybWFsQnViYmxlID0gMjVcbmxldCBtYXhMZW5ndGhMb25nQnViYmxlID0gNTBcbmxldCBtYXhMZW5ndGhIdWdlQnViYmxlID0gMTAwXG5cbmxldCBzaG9ydEJ1YmJsZVhPZmZzZXQgPSAwLjFcbmxldCBub3JtYWxCdWJibGVYT2Zmc2V0ID0gMC41XG5sZXQgbG9uZ0J1YmJsZVhPZmZzZXQgPSAwLjhcbmxldCBodWdlQnViYmxlWE9mZnNldCA9IDAuOFxuXG5sZXQgc2hvcnRCdWJibGVZT2Zmc2V0ID0gLTAuMlxubGV0IG5vcm1hbEJ1YmJsZVlPZmZzZXQgPSAtMC4yXG5sZXQgbG9uZ0J1YmJsZVlPZmZzZXQgPSAwXG5sZXQgaHVnZUJ1YmJsZVlPZmZzZXQgPSAwLjJcblxubGV0IHNob3J0QnViYmxlVGV4dFdpZHRoID0gMC43XG5sZXQgbm9ybWFsQnViYmxlVGV4dFdpZHRoID0gMS41XG5sZXQgbG9uZ0J1YmJsZVRleHRXaWR0aCA9IDJcbmxldCBodWdlQnViYmxlVGV4dFdpZHRoID0gMS41XG5cbmxldCBzaG9ydEJ1YmJsZVggPSAxMTYgKiAwLjAwNVxubGV0IHNob3J0QnViYmxlWSA9IDg0ICogMC4wMDVcblxubGV0IG5vcm1hbEJ1YmJsZVggPSAyODYgKiAwLjAwNVxubGV0IG5vcm1hbEJ1YmJsZVkgPSA4NCAqIDAuMDA1XG5cbmxldCBsb25nQnViYmxlWCA9IDQ5NyAqIDAuMDA1XG5sZXQgbG9uZ0J1YmJsZVkgPSAxNTMgKiAwLjAwNVxuXG5sZXQgaHVnZUJ1YmJsZVggPSA0OTcgKiAwLjAwNVxubGV0IGh1Z2VCdWJibGVZID0gMjM5ICogMC4wMDVcblxubGV0IGRlZmF1bHRZT2Zmc2V0ID0gMi41XG5cblxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGlhbG9nQnViYmxlKG5wYzpFbnRpdHksIGhlaWdodD86bnVtYmVyLCBzb3VuZD86c3RyaW5nKXtcbiAgICBsZXQgYmFzZVlPZmZzZXQgPSBoZWlnaHQgPyBoZWlnaHQgOiBkZWZhdWx0WU9mZnNldFxuXG4gICAgbGV0IHJvb3QgPSBlbmdpbmUuYWRkRW50aXR5KClcbiAgICBCaWxsYm9hcmQuY3JlYXRlKHJvb3Qse1xuICAgICAgICBiaWxsYm9hcmRNb2RlOkJpbGxib2FyZE1vZGUuQk1fWVxuICAgIH0pXG5cbiAgICBUcmFuc2Zvcm0uY3JlYXRlKHJvb3Qse1xuICAgICAgICBwYXJlbnQ6bnBjXG4gICAgfSlcblxuICAgIGxldCBjb250YWluZXIgPSBlbmdpbmUuYWRkRW50aXR5KClcbiAgICBUcmFuc2Zvcm0uY3JlYXRlKGNvbnRhaW5lcix7XG4gICAgICAgIHBhcmVudDpyb290LFxuICAgICAgICBwb3NpdGlvbjpWZWN0b3IzLmNyZWF0ZShzaG9ydEJ1YmJsZVhPZmZzZXQsYmFzZVlPZmZzZXQsMClcbiAgICB9KVxuXG4gICAgbGV0IHBhbmVsID0gZW5naW5lLmFkZEVudGl0eSgpXG4gICAgVHJhbnNmb3JtLmNyZWF0ZShwYW5lbCx7XG4gICAgICAgIHBhcmVudDpjb250YWluZXIsXG4gICAgICAgIHNjYWxlOiBWZWN0b3IzLmNyZWF0ZSgyLDEsMSksXG4gICAgICAgIC8vcm90YXRpb246UXVhdGVybmlvbi5mcm9tRXVsZXJEZWdyZWVzKDAsMCw5MClcbiAgICB9KVxuICAgIE1lc2hSZW5kZXJlci5zZXRQbGFuZShwYW5lbCxcbiAgICAgICAgc2V0VVZTZWN0aW9uKFxuICAgICAgICBidWJibGVPcHRpb25zLm5vcm1hbCxcbiAgICAgICAgMTAyNCxcbiAgICAgICAgMTAyNFxuICAgICAgKSlcblxuICAgIFZpc2liaWxpdHlDb21wb25lbnQuY3JlYXRlKHBhbmVsLCB7dmlzaWJsZTogZmFsc2V9KVxuXG4gICAgTWF0ZXJpYWwuc2V0QmFzaWNNYXRlcmlhbChwYW5lbCwge1xuICAgICAgICB0ZXh0dXJlOiBNYXRlcmlhbC5UZXh0dXJlLkNvbW1vbih7XG4gICAgICAgICAgc3JjOiBidWJibGVzVGV4dHVyZVxuICAgICAgICB9KVxuICAgICAgfSlcblxuICAgIGxldCB0ZXh0ID0gZW5naW5lLmFkZEVudGl0eSgpXG4gICAgVHJhbnNmb3JtLmNyZWF0ZSh0ZXh0LHtcbiAgICAgICAgcG9zaXRpb246VmVjdG9yMy5jcmVhdGUoMCx0ZXh0WVBvcywgLS4wNSksXG4gICAgICAgIHBhcmVudDpjb250YWluZXJcbiAgICB9KVxuICAgIFRleHRTaGFwZS5jcmVhdGUodGV4dCwge1xuICAgICAgICB0ZXh0OlwiXCIsIFxuICAgICAgICBmb250U2l6ZTp0ZXh0U2l6ZSxcbiAgICAgICAgZm9udDogRm9udC5GX1NBTlNfU0VSSUYsXG4gICAgICAgIHRleHRDb2xvcjogQ29sb3I0LmNyZWF0ZSgwLDAsMCwxKSxcbiAgICAgICAgdGV4dEFsaWduOlRleHRBbGlnbk1vZGUuVEFNX01JRERMRV9DRU5URVJcbiAgICB9KVxuICAgIFZpc2liaWxpdHlDb21wb25lbnQuY3JlYXRlKHRleHQsIHt2aXNpYmxlOiBmYWxzZX0pXG5cbiAgICBidWJibGVzLnNldChucGMsIHtcbiAgICAgICAgY29udGFpbmVyOmNvbnRhaW5lcixcbiAgICAgICAgcGFuZWw6cGFuZWwsXG4gICAgICAgIHRleHQ6dGV4dCxcbiAgICAgICAgYmFzZVlPZmZzZXQ6IGJhc2VZT2Zmc2V0LFxuICAgICAgICBpc0J1YmJsZU9wZW46ZmFsc2UsXG4gICAgICAgIHR5cGluZzpmYWxzZSxcbiAgICAgICAgdmlzaWJsZVRleHQ6XCJcIixcbiAgICAgICAgdmlzaWJsZUNoYXJzOjAsXG4gICAgICAgIGZ1bGxUZXh0OlwiXCIsXG4gICAgICAgIHRpbWVyOjAsXG4gICAgICAgIHNwZWVkOjMwLFxuICAgICAgICBzY3JpcHQ6W10sXG4gICAgICAgIGluZGV4OjAsXG4gICAgICAgIHNvdW5kOiBzb3VuZCA/IHNvdW5kIDogdW5kZWZpbmVkLFxuICAgICAgICBzb3VuZFBsYXllcjogc291bmQgPyBlbmdpbmUuYWRkRW50aXR5KCkgOiB1bmRlZmluZWQsXG4gICAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9wZW5CdWJibGUobnBjOkVudGl0eSwgZGlhbG9nOkRpYWxvZ1tdLCBzdGFydD86bnVtYmVyKXtcbiAgICBsZXQgYnViYmxlID0gYnViYmxlcy5nZXQobnBjKVxuXG4gICAgYnViYmxlLnNjcmlwdCA9IGRpYWxvZy5zbGljZSgpXG4gICAgYnViYmxlLmluZGV4ID0gc3RhcnQgPyBzdGFydCA6IDBcbiAgICBcbiAgICBsZXQgY3VycmVudFRleHQ6IERpYWxvZyA9IGRpYWxvZ1tidWJibGUuaW5kZXhdID8gZGlhbG9nW2J1YmJsZS5pbmRleF0gOiB7IHRleHQ6ICcnIH1cbiAgICBidWJibGUuY3VycmVudFRleHQgPSBjdXJyZW50VGV4dFxuXG4gICAgaWYgKGN1cnJlbnRUZXh0LmF1ZGlvKSB7XG4gICAgICAgIEF1ZGlvU291cmNlLmNyZWF0ZU9yUmVwbGFjZShidWJibGUuc291bmRQbGF5ZXIsIHtcbiAgICAgICAgICAgIGF1ZGlvQ2xpcFVybDogY3VycmVudFRleHQuYXVkaW8sXG4gICAgICAgICAgICBsb29wOiBmYWxzZSxcbiAgICAgICAgICAgIHBsYXlpbmc6IGZhbHNlXG4gICAgICAgIH0pXG4gICAgICAgIGxldCBhdWRpbyA9IEF1ZGlvU291cmNlLmdldE11dGFibGUoYnViYmxlLnNvdW5kUGxheWVyKVxuICAgICAgICBhdWRpby52b2x1bWUgPSAwLjVcbiAgICAgICAgYXVkaW8ucGxheWluZyA9IHRydWVcbiAgICB9IGVsc2UgaWYgKGJ1YmJsZS5zb3VuZCkge1xuICAgICAgICBBdWRpb1NvdXJjZS5jcmVhdGVPclJlcGxhY2UoYnViYmxlLnNvdW5kUGxheWVyLCB7XG4gICAgICAgICAgICBhdWRpb0NsaXBVcmw6IGJ1YmJsZS5zb3VuZCxcbiAgICAgICAgICAgIGxvb3A6IGZhbHNlLFxuICAgICAgICAgICAgcGxheWluZzogZmFsc2VcbiAgICAgICAgfSlcbiAgICAgICAgbGV0IGF1ZGlvID0gQXVkaW9Tb3VyY2UuZ2V0TXV0YWJsZShidWJibGUuc291bmRQbGF5ZXIpXG4gICAgICAgIGF1ZGlvLnZvbHVtZSA9IDAuNVxuICAgICAgICBhdWRpby5wbGF5aW5nID0gdHJ1ZVxuICAgIH1cblxuICAgIGxldCB0ZXh0ID0gYnViYmxlLnRleHRcbiAgICBUZXh0U2hhcGUuZ2V0TXV0YWJsZSh0ZXh0KS5mb250U2l6ZSA9IGN1cnJlbnRUZXh0LmZvbnRTaXplID8gY3VycmVudFRleHQuZm9udFNpemUgOiB0ZXh0U2l6ZVxuICAgIFRyYW5zZm9ybS5nZXRNdXRhYmxlKHRleHQpLnBvc2l0aW9uLnkgPSBjdXJyZW50VGV4dC5vZmZzZXRZID8gY3VycmVudFRleHQub2Zmc2V0WSArIHRleHRZUG9zIDogdGV4dFlQb3NcbiAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZSh0ZXh0KS5wb3NpdGlvbi54ID0gY3VycmVudFRleHQub2Zmc2V0WCA/IGN1cnJlbnRUZXh0Lm9mZnNldFggOiAwXG5cbiAgICBWaXNpYmlsaXR5Q29tcG9uZW50LmdldE11dGFibGUoYnViYmxlLnBhbmVsKS52aXNpYmxlID0gdHJ1ZVxuXG4gICAgaWYgKGN1cnJlbnRUZXh0LnRleHQubGVuZ3RoIDwgbWF4TGVuZ3RoSHVnZUJ1YmJsZSkge1xuICAgICAgICBjdXJyZW50VGV4dC50ZXh0LnNsaWNlKDAsIG1heExlbmd0aEh1Z2VCdWJibGUpXG4gICAgICB9XG5cbiAgICBiZWdpblR5cGluZyhcbiAgICAgICAgbnBjLFxuICAgICAgICBjdXJyZW50VGV4dC50ZXh0LFxuICAgICAgICBidWJibGUuaW5kZXgsXG4gICAgICAgIGN1cnJlbnRUZXh0LnRpbWVPbiA/IGN1cnJlbnRUZXh0LnRpbWVPbiA6IHVuZGVmaW5lZCxcbiAgICAgICAgY3VycmVudFRleHQudHlwZVNwZWVkID8gY3VycmVudFRleHQudHlwZVNwZWVkIDogdW5kZWZpbmVkIFxuICAgIClcblxuICAgIGFkanVzdEJ1YmJsZShucGMsIGN1cnJlbnRUZXh0LnRleHQubGVuZ3RoKVxuICAgIGxheW91dERpYWxvZ1dpbmRvdyhucGMsIGJ1YmJsZS5pbmRleClcbiAgICBidWJibGUuaXNCdWJibGVPcGVuID0gdHJ1ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VCdWJibGUobnBjOkVudGl0eSl7XG4gICAgbGV0IGJ1YmJsZSA9IGJ1YmJsZXMuZ2V0KG5wYylcbiAgICAgICAgYnViYmxlLmlzQnViYmxlT3BlbiA9IGZhbHNlXG4gICAgICAgIGJ1YmJsZS50eXBpbmcgPSBmYWxzZVxuICAgICAgICBidWJibGUudmlzaWJsZVRleHQgPSBcIlwiXG4gICAgICAgIGJ1YmJsZS52aXNpYmxlQ2hhcnMgPSAwXG4gICAgICAgIGJ1YmJsZS5mdWxsVGV4dCA9IFwiXCJcbiAgICAgICAgYnViYmxlLnRpbWVyID0gMFxuICAgICAgICBidWJibGUuaW5kZXggPSAwXG4gICAgICAgIGJ1YmJsZS5zY3JpcHQgPSBbXVxuICAgICAgICBidWJibGUuYnV0dG9ucyA9IDBcbiAgICAgICAgYnViYmxlLm1hcmdpbiA9IDBcbiAgICAgICAgYnViYmxlLmN1cnJlbnRUZXh0ID0gbnVsbFxuICAgICAgICBUZXh0U2hhcGUuZ2V0TXV0YWJsZShidWJibGUudGV4dCkudGV4dCA9IFwiXCJcbiAgICAgICAgVmlzaWJpbGl0eUNvbXBvbmVudC5nZXRNdXRhYmxlKGJ1YmJsZS50ZXh0KS52aXNpYmxlID0gZmFsc2VcbiAgICAgICAgVmlzaWJpbGl0eUNvbXBvbmVudC5nZXRNdXRhYmxlKGJ1YmJsZS5wYW5lbCkudmlzaWJsZSA9IGZhbHNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbG9zZUJ1YmJsZUVuZEFsbChucGM6RW50aXR5KTogdm9pZCB7XG4gICAgbGV0IGJ1YmJsZSA9IGJ1YmJsZXMuZ2V0KG5wYylcbiAgICBpZiAoYnViYmxlLmlzQnViYmxlT3Blbikge1xuICAgICAgICBidWJibGUuZG9uZSA9IHRydWVcbiAgICAgICAgY2xvc2VCdWJibGUobnBjKVxuICAgIH1cbiAgfVxuXG5jb25zdCBERUZBVUxUX1NQRUVEID0gNDVcblxuY29uc3QgREVGQVVMVF9USU1FX09OID0gM1xuXG5mdW5jdGlvbiBiZWdpblR5cGluZyhucGM6RW50aXR5LCB0ZXh0OnN0cmluZywgdGV4dElkOm51bWJlciwgdGltZU9uPzpudW1iZXIsIHNwZWVkPzpudW1iZXIpe1xuICAgIGxldCBkaWFsb2dEYXRhID0gYnViYmxlcy5nZXQobnBjKVxuICAgIGRpYWxvZ0RhdGEuZnVsbFRleHQgPSBhZGRMaW5lQnJlYWsoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0udGV4dCwgdHJ1ZSlcbiAgICBkaWFsb2dEYXRhLnR5cGluZyA9IHRydWVcbiAgICBkaWFsb2dEYXRhLmRvbmUgPSBmYWxzZVxuICAgIGRpYWxvZ0RhdGEudmlzaWJsZVRleHQgPSBcIlwiXG4gICAgZGlhbG9nRGF0YS52aXNpYmxlQ2hhcnMgPSAwXG4gICAgZGlhbG9nRGF0YS50aW1lciA9IDBcbiAgICBkaWFsb2dEYXRhLmJ1dHRvbnMgPSAwXG4gICAgZGlhbG9nRGF0YS50aW1lT24gPSB0aW1lT24gPyB0aW1lT24gOiBERUZBVUxUX1RJTUVfT05cbiAgICBkaWFsb2dEYXRhLnNwZWVkID0gc3BlZWQgPyBzcGVlZCA6IERFRkFVTFRfU1BFRURcblxuICAgIGRpYWxvZ0RhdGEub3BlblRpbWUgPSBNYXRoLmZsb29yKERhdGUubm93KCkpXG5cbiAgICBpZihkaWFsb2dEYXRhLnNwZWVkIDw9IDApe1xuICAgICAgICBydXNoVGV4dChucGMpXG4gICAgfVxuICAgIGVsc2V7XG4gICAgICAgIGlmKCFJc1R5cGluZ0J1YmJsZS5oYXMobnBjKSl7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnY3JlYXRpbmcgdHlwdWluZyBidWJibGUnKVxuICAgICAgICAgICAgSXNUeXBpbmdCdWJibGUuY3JlYXRlKG5wYylcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcnVzaFRleHQobnBjOkVudGl0eSl7XG4gICAgbGV0IGRpYWxvZ0RhdGEgPSBidWJibGVzLmdldChucGMpXG4gICAgZGlhbG9nRGF0YS50eXBpbmcgPSBmYWxzZVxuICAgIGRpYWxvZ0RhdGEudGltZXIgPSAwXG4gICAgZGlhbG9nRGF0YS52aXNpYmxlQ2hhcnMgPSBkaWFsb2dEYXRhLmZ1bGxUZXh0Lmxlbmd0aFxuICAgIGRpYWxvZ0RhdGEudmlzaWJsZVRleHQgPSBkaWFsb2dEYXRhLmZ1bGxUZXh0XG59XG5cbmZ1bmN0aW9uIGFkanVzdEJ1YmJsZShucGM6RW50aXR5LCB0ZXh0TGVuZ3RoOm51bWJlcil7XG4gICAgbGV0IGJ1YmJsZSA9IGJ1YmJsZXMuZ2V0KG5wYylcblxuICAgIGlmICh0ZXh0TGVuZ3RoIDwgbWF4TGVuZ3RoU2hvcnRCdWJibGUpIHtcbiAgICAgICAgTWVzaFJlbmRlcmVyLnNldFBsYW5lKGJ1YmJsZS5wYW5lbCxcbiAgICAgICAgICAgIHNldFVWU2VjdGlvbihcbiAgICAgICAgICAgIGJ1YmJsZU9wdGlvbnMuc2hvcnQsXG4gICAgICAgICAgICAxMDI0LFxuICAgICAgICAgICAgMTAyNFxuICAgICAgICAgICkpXG5cbiAgICAgICAgVHJhbnNmb3JtLmdldE11dGFibGUoYnViYmxlLnBhbmVsKS5zY2FsZS54ID0gc2hvcnRCdWJibGVYXG4gICAgICAgIFRyYW5zZm9ybS5nZXRNdXRhYmxlKGJ1YmJsZS5wYW5lbCkuc2NhbGUueSA9IHNob3J0QnViYmxlWVxuICAgICAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZShidWJibGUuY29udGFpbmVyKS5wb3NpdGlvbi54ID0gc2hvcnRCdWJibGVYT2Zmc2V0XG4gICAgICAgIFRyYW5zZm9ybS5nZXRNdXRhYmxlKGJ1YmJsZS5jb250YWluZXIpLnBvc2l0aW9uLnkgPSBidWJibGUuYmFzZVlPZmZzZXQgKyBzaG9ydEJ1YmJsZVlPZmZzZXRcbiAgICAgICAgVGV4dFNoYXBlLmdldE11dGFibGUoYnViYmxlLnRleHQpLndpZHRoID0gc2hvcnRCdWJibGVUZXh0V2lkdGhcbiAgICAgIH0gZWxzZSBpZiAodGV4dExlbmd0aCA8IG1heExlbmd0aE5vcm1hbEJ1YmJsZSkge1xuICAgICAgICBNZXNoUmVuZGVyZXIuc2V0UGxhbmUoYnViYmxlLnBhbmVsLFxuICAgICAgICAgICAgc2V0VVZTZWN0aW9uKFxuICAgICAgICAgICAgYnViYmxlT3B0aW9ucy5ub3JtYWwsXG4gICAgICAgICAgICAxMDI0LFxuICAgICAgICAgICAgMTAyNFxuICAgICAgICAgICkpXG5cbiAgICAgICAgVHJhbnNmb3JtLmdldE11dGFibGUoYnViYmxlLnBhbmVsKS5zY2FsZS54ID0gbm9ybWFsQnViYmxlWFxuICAgICAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZShidWJibGUucGFuZWwpLnNjYWxlLnkgPSBub3JtYWxCdWJibGVZXG4gICAgICAgIFRyYW5zZm9ybS5nZXRNdXRhYmxlKGJ1YmJsZS5jb250YWluZXIpLnBvc2l0aW9uLnggPSBub3JtYWxCdWJibGVYT2Zmc2V0XG4gICAgICAgIFRyYW5zZm9ybS5nZXRNdXRhYmxlKGJ1YmJsZS5jb250YWluZXIpLnBvc2l0aW9uLnkgPSBidWJibGUuYmFzZVlPZmZzZXQgKyBub3JtYWxCdWJibGVZT2Zmc2V0XG4gICAgICAgIFRleHRTaGFwZS5nZXRNdXRhYmxlKGJ1YmJsZS50ZXh0KS53aWR0aCA9IG5vcm1hbEJ1YmJsZVRleHRXaWR0aFxuICAgICAgfSBlbHNlIGlmICh0ZXh0TGVuZ3RoIDwgbWF4TGVuZ3RoTG9uZ0J1YmJsZSkge1xuICAgICAgICBNZXNoUmVuZGVyZXIuc2V0UGxhbmUoYnViYmxlLnBhbmVsLFxuICAgICAgICAgICAgc2V0VVZTZWN0aW9uKFxuICAgICAgICAgICAgYnViYmxlT3B0aW9ucy5sb25nLFxuICAgICAgICAgICAgMTAyNCxcbiAgICAgICAgICAgIDEwMjRcbiAgICAgICAgICApKVxuXG4gICAgICAgIFRyYW5zZm9ybS5nZXRNdXRhYmxlKGJ1YmJsZS5wYW5lbCkuc2NhbGUueCA9IGxvbmdCdWJibGVYXG4gICAgICAgIFRyYW5zZm9ybS5nZXRNdXRhYmxlKGJ1YmJsZS5wYW5lbCkuc2NhbGUueSA9IGxvbmdCdWJibGVZXG4gICAgICAgIFRyYW5zZm9ybS5nZXRNdXRhYmxlKGJ1YmJsZS5jb250YWluZXIpLnBvc2l0aW9uLnggPSBsb25nQnViYmxlWE9mZnNldFxuICAgICAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZShidWJibGUuY29udGFpbmVyKS5wb3NpdGlvbi55ID0gYnViYmxlLmJhc2VZT2Zmc2V0ICsgbG9uZ0J1YmJsZVlPZmZzZXRcbiAgICAgICAgVGV4dFNoYXBlLmdldE11dGFibGUoYnViYmxlLnRleHQpLndpZHRoID0gbG9uZ0J1YmJsZVRleHRXaWR0aFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgTWVzaFJlbmRlcmVyLnNldFBsYW5lKGJ1YmJsZS5wYW5lbCxcbiAgICAgICAgICAgIHNldFVWU2VjdGlvbihcbiAgICAgICAgICAgIGJ1YmJsZU9wdGlvbnMuaHVnZSxcbiAgICAgICAgICAgIDEwMjQsXG4gICAgICAgICAgICAxMDI0XG4gICAgICAgICAgKSlcbiAgICAgICAgVHJhbnNmb3JtLmdldE11dGFibGUoYnViYmxlLnBhbmVsKS5zY2FsZS54ID0gaHVnZUJ1YmJsZVhcbiAgICAgICAgVHJhbnNmb3JtLmdldE11dGFibGUoYnViYmxlLnBhbmVsKS5zY2FsZS55ID0gaHVnZUJ1YmJsZVlcbiAgICAgICAgVHJhbnNmb3JtLmdldE11dGFibGUoYnViYmxlLmNvbnRhaW5lcikucG9zaXRpb24ueCA9IGh1Z2VCdWJibGVYT2Zmc2V0XG4gICAgICAgIFRyYW5zZm9ybS5nZXRNdXRhYmxlKGJ1YmJsZS5jb250YWluZXIpLnBvc2l0aW9uLnkgPSBidWJibGUuYmFzZVlPZmZzZXQgKyBodWdlQnViYmxlWU9mZnNldFxuICAgICAgICBUZXh0U2hhcGUuZ2V0TXV0YWJsZShidWJibGUudGV4dCkud2lkdGggPSBodWdlQnViYmxlVGV4dFdpZHRoXG4gICAgICB9XG59XG5cbi8vIEFkZHMgdGhlIGJ1dHRvbnMgb3IgbW91c2UgaWNvbiBkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2Ygd2luZG93XG5mdW5jdGlvbiBsYXlvdXREaWFsb2dXaW5kb3cobnBjOkVudGl0eSwgdGV4dElkOiBudW1iZXIpOiB2b2lkIHtcbiAgICBsZXQgYnViYmxlID0gYnViYmxlcy5nZXQobnBjKVxuICAgIGxldCBjdXJyZW50VGV4dDogRGlhbG9nID0gYnViYmxlLnNjcmlwdFt0ZXh0SWRdXG4gICAgICA/IGJ1YmJsZS5zY3JpcHRbdGV4dElkXVxuICAgICAgOiB7IHRleHQ6ICcnIH1cblxuICAgIC8vIFVwZGF0ZSB0ZXh0XG4gICAgbGV0IHRleHRZID0gY3VycmVudFRleHQub2Zmc2V0WSA/IGN1cnJlbnRUZXh0Lm9mZnNldFkgKyB0ZXh0WVBvcyA6IHRleHRZUG9zXG5cbiAgICBpZiAoY3VycmVudFRleHQuYnV0dG9ucyAmJiBjdXJyZW50VGV4dC5idXR0b25zLmxlbmd0aCA+PSAzKSB7XG4gICAgICB0ZXh0WSArPSA1MFxuICAgIH0gZWxzZSBpZiAoY3VycmVudFRleHQuYnV0dG9ucyAmJiBjdXJyZW50VGV4dC5idXR0b25zLmxlbmd0aCA+PSAxKSB7XG4gICAgICB0ZXh0WSArPSAyNFxuICAgIH1cbiAgICBUZXh0U2hhcGUuZ2V0TXV0YWJsZShidWJibGUudGV4dCkuZm9udFNpemUgPSBjdXJyZW50VGV4dC5mb250U2l6ZVxuICAgID8gY3VycmVudFRleHQuZm9udFNpemVcbiAgICA6IHRleHRTaXplXG4gICAgXG4gICAgVmlzaWJpbGl0eUNvbXBvbmVudC5nZXRNdXRhYmxlKGJ1YmJsZS50ZXh0KS52aXNpYmxlID0gdHJ1ZVxuICAgIFRyYW5zZm9ybS5nZXRNdXRhYmxlKGJ1YmJsZS50ZXh0KS5wb3NpdGlvbi55ID0gdGV4dFlcblxuICAgIGlmIChjdXJyZW50VGV4dC5hdWRpbykge1xuICAgICAgICBBdWRpb1NvdXJjZS5jcmVhdGVPclJlcGxhY2UoYnViYmxlLnNvdW5kUGxheWVyLCB7XG4gICAgICAgICAgICBhdWRpb0NsaXBVcmw6IGN1cnJlbnRUZXh0LmF1ZGlvLFxuICAgICAgICAgICAgbG9vcDogZmFsc2UsXG4gICAgICAgICAgICBwbGF5aW5nOiBmYWxzZVxuICAgICAgICB9KVxuICAgICAgICBsZXQgYXVkaW8gPSBBdWRpb1NvdXJjZS5nZXRNdXRhYmxlKGJ1YmJsZS5zb3VuZFBsYXllcilcbiAgICAgICAgYXVkaW8udm9sdW1lID0gMC41XG4gICAgICAgIGF1ZGlvLnBsYXlpbmcgPSB0cnVlXG4gICAgfSBlbHNlIGlmIChidWJibGUuc291bmQpIHtcbiAgICAgICAgQXVkaW9Tb3VyY2UuY3JlYXRlT3JSZXBsYWNlKGJ1YmJsZS5zb3VuZFBsYXllciwge1xuICAgICAgICAgICAgYXVkaW9DbGlwVXJsOiBidWJibGUuc291bmQsXG4gICAgICAgICAgICBsb29wOiBmYWxzZSxcbiAgICAgICAgICAgIHBsYXlpbmc6IGZhbHNlXG4gICAgICAgIH0pXG4gICAgICAgIGxldCBhdWRpbyA9IEF1ZGlvU291cmNlLmdldE11dGFibGUoYnViYmxlLnNvdW5kUGxheWVyKVxuICAgICAgICBhdWRpby52b2x1bWUgPSAwLjVcbiAgICAgICAgYXVkaW8ucGxheWluZyA9IHRydWVcbiAgICB9XG5cbiAgfVxuXG4vLyBQcm9ncmVzc2VzIHRleHRcbmV4cG9ydCBmdW5jdGlvbiBuZXh0KG5wYzpFbnRpdHkpOiB2b2lkIHtcbiAgICBsZXQgYnViYmxlID0gYnViYmxlcy5nZXQobnBjKVxuXG4gICAgaWYoYnViYmxlLmlzQnViYmxlT3Blbil7XG4gICAgICBsZXQgY3VycmVudFRleHQgPSBidWJibGUuc2NyaXB0W2J1YmJsZS5pbmRleF1cblxuICAgICAgaWYoIWN1cnJlbnRUZXh0KXtcbiAgICAgICAgY3VycmVudFRleHQgPSBidWJibGUuc2NyaXB0W2J1YmJsZS5pbmRleC0xXVxuICAgICAgfVxuICAgIFxuICAgICAgICBpZiAoY3VycmVudFRleHQudHJpZ2dlcmVkQnlOZXh0KSB7XG4gICAgICAgICAgY3VycmVudFRleHQudHJpZ2dlcmVkQnlOZXh0KClcbiAgICAgICAgfVxuICAgIFxuICAgICAgICBpZiAoY3VycmVudFRleHQuaXNFbmRPZkRpYWxvZykge1xuICAgICAgICAgIGNsb3NlQnViYmxlKG5wYylcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgIFxuICAgICAgIC8vIFVwZGF0ZSBhY3RpdmUgdGV4dFxuICAgICAgICAgYnViYmxlLmluZGV4KytcbiAgICBcbiAgICAgICAgLy8gVXBkYXRlIGFjdGl2ZSB0ZXh0IHdpdGggbmV3IGFjdGl2ZSB0ZXh0XG4gICAgICAgIGN1cnJlbnRUZXh0ID0gYnViYmxlLnNjcmlwdFtidWJibGUuaW5kZXhdXG4gICAgXG4gICAgICAgIGlmIChjdXJyZW50VGV4dC50ZXh0Lmxlbmd0aCA8IG1heExlbmd0aEh1Z2VCdWJibGUpIHtcbiAgICAgICAgICBjdXJyZW50VGV4dC50ZXh0LnNsaWNlKDAsIG1heExlbmd0aEh1Z2VCdWJibGUpXG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgVGV4dFNoYXBlLmdldE11dGFibGUoYnViYmxlLnRleHQpLnRleHQgPSBcIlwiXG4gICAgXG4gICAgICAgIGFkanVzdEJ1YmJsZShucGMsIGN1cnJlbnRUZXh0LnRleHQubGVuZ3RoKVxuICAgIFxuICAgICAgICBiZWdpblR5cGluZyhcbiAgICAgICAgICAgIG5wYyxcbiAgICAgICAgICAgIGN1cnJlbnRUZXh0LnRleHQsXG4gICAgICAgICAgICBidWJibGUuaW5kZXgsXG4gICAgICAgICAgICBjdXJyZW50VGV4dC50aW1lT24gPyBjdXJyZW50VGV4dC50aW1lT24gOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBjdXJyZW50VGV4dC50eXBlU3BlZWQgPyBjdXJyZW50VGV4dC50eXBlU3BlZWQgOiB1bmRlZmluZWQgXG4gICAgICAgIClcbiAgICAgIGxheW91dERpYWxvZ1dpbmRvdyhucGMsIGJ1YmJsZS5pbmRleClcbiAgICB9XG5cbiAgICBcbiAgfVxuXG5mdW5jdGlvbiBzZXRVVlNlY3Rpb24oXG5cdHNlY3Rpb246IEltYWdlU2VjdGlvbixcblx0c2l6ZVg6IG51bWJlcixcblx0c2l6ZVk6IG51bWJlclxuICApIHtcblx0cmV0dXJuIHNldFVWcyhcbiAgICAgICAge3g6ICBzZWN0aW9uLnNvdXJjZUxlZnQhIC8gc2l6ZVgsIHk6IChzaXplWSAtIHNlY3Rpb24uc291cmNlVG9wISAtIHNlY3Rpb24uc291cmNlSGVpZ2h0KSAvIHNpemVZfSxcbiAgICAgICAge3g6ICAoc2VjdGlvbi5zb3VyY2VMZWZ0ISArIHNlY3Rpb24uc291cmNlV2lkdGgpIC8gc2l6ZVgsIHk6IChzaXplWSAtIHNlY3Rpb24uc291cmNlVG9wISAtIHNlY3Rpb24uc291cmNlSGVpZ2h0KSAvIHNpemVZfSxcbiAgICAgICAge3g6ICAoc2VjdGlvbi5zb3VyY2VMZWZ0ISArIHNlY3Rpb24uc291cmNlV2lkdGgpIC8gc2l6ZVgsIHk6ICAoc2l6ZVkgLSBzZWN0aW9uLnNvdXJjZVRvcCEpIC8gc2l6ZVl9LFxuICAgICAgICB7eDogIHNlY3Rpb24uc291cmNlTGVmdCEgLyBzaXplWCwgeTogKHNpemVZIC0gc2VjdGlvbi5zb3VyY2VUb3AhKSAvIHNpemVZfSxcblx0KVxuICB9XG5cbmZ1bmN0aW9uIHNldFVWcyhcblx0X3V2MDA6IGFueSxcblx0X3V2MTA6IGFueSxcblx0X3V2MTE6IGFueSxcblx0X3V2MDE6IGFueVxuICApIHtcblxuXHRyZXR1cm4gW1xuXHQgIF91djAwLngsXG5cdCAgX3V2MDAueSxcbiAgXG5cdCAgX3V2MTAueCxcblx0ICBfdXYxMC55LFxuICBcblx0ICBfdXYxMS54LFxuXHQgIF91djExLnksXG4gIFxuXHQgIF91djAxLngsXG5cdCAgX3V2MDEueSxcblx0ICAvLy0tLS1cblx0ICBfdXYwMC54LFxuXHQgIF91djAwLnksXG4gIFxuXHQgIF91djEwLngsXG5cdCAgX3V2MTAueSxcbiAgXG5cdCAgX3V2MTEueCxcblx0ICBfdXYxMS55LFxuICBcblx0ICBfdXYwMS54LFxuXHQgIF91djAxLnksXG5cdF1cbiAgfVxuXG4gIGxldCBidWJibGVPcHRpb25zOmFueSA9IHtcbiAgICBzaG9ydDoge1xuICAgICAgc291cmNlV2lkdGg6IDExNiAqIDIsXG4gICAgICBzb3VyY2VIZWlnaHQ6IDg0ICogMixcbiAgICAgIHNvdXJjZUxlZnQ6IDMwNSAqIDIsXG4gICAgICBzb3VyY2VUb3A6IDQxNyAqIDIsXG4gICAgfSxcbiAgICBub3JtYWw6IHtcbiAgICAgIHNvdXJjZVdpZHRoOiAyODYgKiAyLFxuICAgICAgc291cmNlSGVpZ2h0OiA4NCAqIDIsXG4gICAgICBzb3VyY2VMZWZ0OiA4ICogMixcbiAgICAgIHNvdXJjZVRvcDogNDE3ICogMixcbiAgICB9LFxuICAgIGxvbmc6IHtcbiAgICAgIHNvdXJjZVdpZHRoOiA0OTcgKiAyLFxuICAgICAgc291cmNlSGVpZ2h0OiAxNTMgKiAyLFxuICAgICAgc291cmNlTGVmdDogNiAqIDIsXG4gICAgICBzb3VyY2VUb3A6IDI1NCAqIDIsXG4gICAgfSxcbiAgICBodWdlOiB7XG4gICAgICBzb3VyY2VXaWR0aDogNDk3ICogMixcbiAgICAgIHNvdXJjZUhlaWdodDogMjM5ICogMixcbiAgICAgIHNvdXJjZUxlZnQ6IDYgKiAyLFxuICAgICAgc291cmNlVG9wOiA3ICogMixcbiAgICB9LFxufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRCdWJibGVUZXh0TGVuZ3RoKHRleHQ6c3RyaW5nKXtcbiAgICBpZih0ZXh0Lmxlbmd0aCA+PSBtYXhMZW5ndGhIdWdlQnViYmxlKXtcbiAgICAgICAgcmV0dXJuIDQwXG4gICAgfVxuICAgIGVsc2UgaWYodGV4dC5sZW5ndGggPj0gbWF4TGVuZ3RoTG9uZ0J1YmJsZSl7XG4gICAgICAgIHJldHVybiA0MFxuICAgIH1cbiAgICBlbHNlIGlmKHRleHQubGVuZ3RoID49IG1heExlbmd0aE5vcm1hbEJ1YmJsZSl7XG4gICAgICAgIHJldHVybiA0MFxuICAgIH1cbiAgICBlbHNlIGlmKHRleHQubGVuZ3RoID49IG1heExlbmd0aFNob3J0QnViYmxlKXtcbiAgICAgICAgcmV0dXJuIDQwXG4gICAgfVxuICB9Il19
|
|
356
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnViYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2J1YmJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQVksV0FBVyxFQUFlLFNBQVMsRUFBaUIsTUFBTSxFQUEyQyxRQUFRLEVBQWMsWUFBWSxFQUFtQyxTQUFTLEVBQUMsU0FBUyxFQUFpQixtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUcxUSxPQUFPLEVBQVMsTUFBTSxFQUFjLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFpQixnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUN4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRTdDLE1BQU0sQ0FBQyxJQUFJLGNBQWMsR0FBRyx1REFBdUQsQ0FBQTtBQUVuRixNQUFNLENBQUMsSUFBSSxPQUFPLEdBQXFCLElBQUksR0FBRyxFQUFFLENBQUE7QUFFaEQsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFBO0FBQ2hCLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQTtBQUVoQixJQUFJLG9CQUFvQixHQUFHLENBQUMsQ0FBQTtBQUM1QixJQUFJLHFCQUFxQixHQUFHLEVBQUUsQ0FBQTtBQUM5QixJQUFJLG1CQUFtQixHQUFHLEVBQUUsQ0FBQTtBQUM1QixJQUFJLG1CQUFtQixHQUFHLEdBQUcsQ0FBQTtBQUU3QixJQUFJLGtCQUFrQixHQUFHLEdBQUcsQ0FBQTtBQUM1QixJQUFJLG1CQUFtQixHQUFHLEdBQUcsQ0FBQTtBQUM3QixJQUFJLGlCQUFpQixHQUFHLEdBQUcsQ0FBQTtBQUMzQixJQUFJLGlCQUFpQixHQUFHLEdBQUcsQ0FBQTtBQUUzQixJQUFJLGtCQUFrQixHQUFHLENBQUMsR0FBRyxDQUFBO0FBQzdCLElBQUksbUJBQW1CLEdBQUcsQ0FBQyxHQUFHLENBQUE7QUFDOUIsSUFBSSxpQkFBaUIsR0FBRyxDQUFDLENBQUE7QUFDekIs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LE1BQU0sSUFBSSxvQkFBb0IsRUFBQztRQUN4QyxPQUFPLEVBQUUsQ0FBQTtLQUNaO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgQW5pbWF0b3IsIEF1ZGlvU291cmNlLCBBdmF0YXJTaGFwZSwgQmlsbGJvYXJkLCBCaWxsYm9hcmRNb2RlLCBlbmdpbmUsIEVudGl0eSwgRm9udCwgR2x0ZkNvbnRhaW5lciwgSW5wdXRBY3Rpb24sTWF0ZXJpYWwsTWVzaENvbGxpZGVyLE1lc2hSZW5kZXJlcixwb2ludGVyRXZlbnRzU3lzdGVtLFRleHRBbGlnbk1vZGUsVGV4dFNoYXBlLFRyYW5zZm9ybSwgVHJhbnNmb3JtVHlwZSwgVmlzaWJpbGl0eUNvbXBvbmVudCB9IGZyb20gJ0BkY2wvc2RrL2VjcydcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gJ0BkY2wtc2RrL3V0aWxzJ1xuaW1wb3J0IHsgRGlhbG9nLCBJbWFnZVNlY3Rpb24gfSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IHsgQ29sb3IzLENvbG9yNCwgUXVhdGVybmlvbiwgVmVjdG9yMyB9IGZyb20gJ0BkY2wvc2RrL21hdGgnXG5pbXBvcnQgeyBhZGRMaW5lQnJlYWssIGFkZExpbmVCcmVha3MsIGZpbmREaWFsb2dCeU5hbWUgfSBmcm9tICcuL2RpYWxvZydcbmltcG9ydCB7IElzVHlwaW5nQnViYmxlIH0gZnJvbSAnLi9jb21wb25lbnRzJ1xuXG5leHBvcnQgbGV0IGJ1YmJsZXNUZXh0dXJlID0gJ2h0dHBzOi8vZGVjZW50cmFsYW5kLm9yZy9pbWFnZXMvdWkvZGlhbG9nLWJ1YmJsZXMucG5nJ1xuXG5leHBvcnQgbGV0IGJ1YmJsZXM6IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcblxubGV0IHRleHRTaXplID0gMVxubGV0IHRleHRZUG9zID0gMCAgICBcblxubGV0IG1heExlbmd0aFNob3J0QnViYmxlID0gOFxubGV0IG1heExlbmd0aE5vcm1hbEJ1YmJsZSA9IDI1XG5sZXQgbWF4TGVuZ3RoTG9uZ0J1YmJsZSA9IDUwXG5sZXQgbWF4TGVuZ3RoSHVnZUJ1YmJsZSA9IDEwMFxuXG5sZXQgc2hvcnRCdWJibGVYT2Zmc2V0ID0gMC4xXG5sZXQgbm9ybWFsQnViYmxlWE9mZnNldCA9IDAuNVxubGV0IGxvbmdCdWJibGVYT2Zmc2V0ID0gMC44XG5sZXQgaHVnZUJ1YmJsZVhPZmZzZXQgPSAwLjhcblxubGV0IHNob3J0QnViYmxlWU9mZnNldCA9IC0wLjJcbmxldCBub3JtYWxCdWJibGVZT2Zmc2V0ID0gLTAuMlxubGV0IGxvbmdCdWJibGVZT2Zmc2V0ID0gMFxubGV0IGh1Z2VCdWJibGVZT2Zmc2V0ID0gMC4yXG5cbmxldCBzaG9ydEJ1YmJsZVRleHRXaWR0aCA9IDAuN1xubGV0IG5vcm1hbEJ1YmJsZVRleHRXaWR0aCA9IDEuNVxubGV0IGxvbmdCdWJibGVUZXh0V2lkdGggPSAyXG5sZXQgaHVnZUJ1YmJsZVRleHRXaWR0aCA9IDEuNVxuXG5sZXQgc2hvcnRCdWJibGVYID0gMTE2ICogMC4wMDVcbmxldCBzaG9ydEJ1YmJsZVkgPSA4NCAqIDAuMDA1XG5cbmxldCBub3JtYWxCdWJibGVYID0gMjg2ICogMC4wMDVcbmxldCBub3JtYWxCdWJibGVZID0gODQgKiAwLjAwNVxuXG5sZXQgbG9uZ0J1YmJsZVggPSA0OTcgKiAwLjAwNVxubGV0IGxvbmdCdWJibGVZID0gMTUzICogMC4wMDVcblxubGV0IGh1Z2VCdWJibGVYID0gNDk3ICogMC4wMDVcbmxldCBodWdlQnViYmxlWSA9IDIzOSAqIDAuMDA1XG5cbmxldCBkZWZhdWx0WU9mZnNldCA9IDIuNVxuXG5cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURpYWxvZ0J1YmJsZShucGM6RW50aXR5LCBoZWlnaHQ/Om51bWJlciwgc291bmQ/OnN0cmluZyl7XG4gICAgbGV0IGJhc2VZT2Zmc2V0ID0gaGVpZ2h0ID8gaGVpZ2h0IDogZGVmYXVsdFlPZmZzZXRcblxuICAgIGxldCByb290ID0gZW5naW5lLmFkZEVudGl0eSgpXG4gICAgQmlsbGJvYXJkLmNyZWF0ZShyb290LHtcbiAgICAgICAgYmlsbGJvYXJkTW9kZTpCaWxsYm9hcmRNb2RlLkJNX1lcbiAgICB9KVxuXG4gICAgVHJhbnNmb3JtLmNyZWF0ZShyb290LHtcbiAgICAgICAgcGFyZW50Om5wY1xuICAgIH0pXG5cbiAgICBsZXQgY29udGFpbmVyID0gZW5naW5lLmFkZEVudGl0eSgpXG4gICAgVHJhbnNmb3JtLmNyZWF0ZShjb250YWluZXIse1xuICAgICAgICBwYXJlbnQ6cm9vdCxcbiAgICAgICAgcG9zaXRpb246VmVjdG9yMy5jcmVhdGUoc2hvcnRCdWJibGVYT2Zmc2V0LGJhc2VZT2Zmc2V0LDApXG4gICAgfSlcblxuICAgIGxldCBwYW5lbCA9IGVuZ2luZS5hZGRFbnRpdHkoKVxuICAgIFRyYW5zZm9ybS5jcmVhdGUocGFuZWwse1xuICAgICAgICBwYXJlbnQ6Y29udGFpbmVyLFxuICAgICAgICBzY2FsZTogVmVjdG9yMy5jcmVhdGUoMiwxLDEpLFxuICAgICAgICAvL3JvdGF0aW9uOlF1YXRlcm5pb24uZnJvbUV1bGVyRGVncmVlcygwLDAsOTApXG4gICAgfSlcbiAgICBNZXNoUmVuZGVyZXIuc2V0UGxhbmUocGFuZWwsXG4gICAgICAgIHNldFVWU2VjdGlvbihcbiAgICAgICAgYnViYmxlT3B0aW9ucy5ub3JtYWwsXG4gICAgICAgIDEwMjQsXG4gICAgICAgIDEwMjRcbiAgICAgICkpXG5cbiAgICBWaXNpYmlsaXR5Q29tcG9uZW50LmNyZWF0ZShwYW5lbCwge3Zpc2libGU6IGZhbHNlfSlcblxuICAgIE1hdGVyaWFsLnNldEJhc2ljTWF0ZXJpYWwocGFuZWwsIHtcbiAgICAgICAgdGV4dHVyZTogTWF0ZXJpYWwuVGV4dHVyZS5Db21tb24oe1xuICAgICAgICAgIHNyYzogYnViYmxlc1RleHR1cmVcbiAgICAgICAgfSlcbiAgICAgIH0pXG5cbiAgICBsZXQgdGV4dCA9IGVuZ2luZS5hZGRFbnRpdHkoKVxuICAgIFRyYW5zZm9ybS5jcmVhdGUodGV4dCx7XG4gICAgICAgIHBvc2l0aW9uOlZlY3RvcjMuY3JlYXRlKDAsdGV4dFlQb3MsIC0uMDUpLFxuICAgICAgICBwYXJlbnQ6Y29udGFpbmVyXG4gICAgfSlcbiAgICBUZXh0U2hhcGUuY3JlYXRlKHRleHQsIHtcbiAgICAgICAgdGV4dDpcIlwiLCBcbiAgICAgICAgZm9udFNpemU6dGV4dFNpemUsXG4gICAgICAgIGZvbnQ6IEZvbnQuRl9TQU5TX1NFUklGLFxuICAgICAgICB0ZXh0Q29sb3I6IENvbG9yNC5jcmVhdGUoMCwwLDAsMSksXG4gICAgICAgIHRleHRBbGlnbjpUZXh0QWxpZ25Nb2RlLlRBTV9NSURETEVfQ0VOVEVSXG4gICAgfSlcbiAgICBWaXNpYmlsaXR5Q29tcG9uZW50LmNyZWF0ZSh0ZXh0LCB7dmlzaWJsZTogZmFsc2V9KVxuXG4gICAgYnViYmxlcy5zZXQobnBjLCB7XG4gICAgICAgIGNvbnRhaW5lcjpjb250YWluZXIsXG4gICAgICAgIHBhbmVsOnBhbmVsLFxuICAgICAgICB0ZXh0OnRleHQsXG4gICAgICAgIGJhc2VZT2Zmc2V0OiBiYXNlWU9mZnNldCxcbiAgICAgICAgaXNCdWJibGVPcGVuOmZhbHNlLFxuICAgICAgICB0eXBpbmc6ZmFsc2UsXG4gICAgICAgIHZpc2libGVUZXh0OlwiXCIsXG4gICAgICAgIHZpc2libGVDaGFyczowLFxuICAgICAgICBmdWxsVGV4dDpcIlwiLFxuICAgICAgICB0aW1lcjowLFxuICAgICAgICBzcGVlZDozMCxcbiAgICAgICAgc2NyaXB0OltdLFxuICAgICAgICBpbmRleDowLFxuICAgICAgICBzb3VuZDogc291bmQgPyBzb3VuZCA6IHVuZGVmaW5lZCxcbiAgICAgICAgc291bmRQbGF5ZXI6IHNvdW5kID8gZW5naW5lLmFkZEVudGl0eSgpIDogdW5kZWZpbmVkLFxuICAgIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvcGVuQnViYmxlKG5wYzpFbnRpdHksIGRpYWxvZzpEaWFsb2dbXSwgc3RhcnRJbmRleD86bnVtYmVyIHwgc3RyaW5nKXtcbiAgICBsZXQgYnViYmxlID0gYnViYmxlcy5nZXQobnBjKVxuXG4gICAgYnViYmxlLnNjcmlwdCA9IGRpYWxvZy5zbGljZSgpXG4gICAgbGV0IGluZGV4OmFueVxuICAgIGlmICghc3RhcnRJbmRleCkge1xuICAgICAgaW5kZXggPSAwXG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygc3RhcnRJbmRleCA9PT0gJ251bWJlcicpIHtcbiAgICAgIGluZGV4ID0gc3RhcnRJbmRleFxuICAgIH0gZWxzZSB7XG4gICAgICBpbmRleCA9IGZpbmREaWFsb2dCeU5hbWUoZGlhbG9nLCBzdGFydEluZGV4KVxuICAgIH1cblxuICAgIGJ1YmJsZS5pbmRleCA9IGluZGV4XG4gICAgXG4gICAgbGV0IGN1cnJlbnRUZXh0OiBEaWFsb2cgPSBkaWFsb2dbYnViYmxlLmluZGV4XSA/IGRpYWxvZ1tidWJibGUuaW5kZXhdIDogeyB0ZXh0OiAnJyB9XG4gICAgYnViYmxlLmN1cnJlbnRUZXh0ID0gY3VycmVudFRleHRcblxuICAgIGlmIChjdXJyZW50VGV4dC5hdWRpbykge1xuICAgICAgICBBdWRpb1NvdXJjZS5jcmVhdGVPclJlcGxhY2UoYnViYmxlLnNvdW5kUGxheWVyLCB7XG4gICAgICAgICAgICBhdWRpb0NsaXBVcmw6IGN1cnJlbnRUZXh0LmF1ZGlvLFxuICAgICAgICAgICAgbG9vcDogZmFsc2UsXG4gICAgICAgICAgICBwbGF5aW5nOiBmYWxzZVxuICAgICAgICB9KVxuICAgICAgICBsZXQgYXVkaW8gPSBBdWRpb1NvdXJjZS5nZXRNdXRhYmxlKGJ1YmJsZS5zb3VuZFBsYXllcilcbiAgICAgICAgYXVkaW8udm9sdW1lID0gMC41XG4gICAgICAgIGF1ZGlvLnBsYXlpbmcgPSB0cnVlXG4gICAgfSBlbHNlIGlmIChidWJibGUuc291bmQpIHtcbiAgICAgICAgQXVkaW9Tb3VyY2UuY3JlYXRlT3JSZXBsYWNlKGJ1YmJsZS5zb3VuZFBsYXllciwge1xuICAgICAgICAgICAgYXVkaW9DbGlwVXJsOiBidWJibGUuc291bmQsXG4gICAgICAgICAgICBsb29wOiBmYWxzZSxcbiAgICAgICAgICAgIHBsYXlpbmc6IGZhbHNlXG4gICAgICAgIH0pXG4gICAgICAgIGxldCBhdWRpbyA9IEF1ZGlvU291cmNlLmdldE11dGFibGUoYnViYmxlLnNvdW5kUGxheWVyKVxuICAgICAgICBhdWRpby52b2x1bWUgPSAwLjVcbiAgICAgICAgYXVkaW8ucGxheWluZyA9IHRydWVcbiAgICB9XG5cbiAgICBsZXQgdGV4dCA9IGJ1YmJsZS50ZXh0XG4gICAgVGV4dFNoYXBlLmdldE11dGFibGUodGV4dCkuZm9udFNpemUgPSBjdXJyZW50VGV4dC5mb250U2l6ZSA/IGN1cnJlbnRUZXh0LmZvbnRTaXplIDogdGV4dFNpemVcbiAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZSh0ZXh0KS5wb3NpdGlvbi55ID0gY3VycmVudFRleHQub2Zmc2V0WSA/IGN1cnJlbnRUZXh0Lm9mZnNldFkgKyB0ZXh0WVBvcyA6IHRleHRZUG9zXG4gICAgVHJhbnNmb3JtLmdldE11dGFibGUodGV4dCkucG9zaXRpb24ueCA9IGN1cnJlbnRUZXh0Lm9mZnNldFggPyBjdXJyZW50VGV4dC5vZmZzZXRYIDogMFxuXG4gICAgVmlzaWJpbGl0eUNvbXBvbmVudC5nZXRNdXRhYmxlKGJ1YmJsZS5wYW5lbCkudmlzaWJsZSA9IHRydWVcblxuICAgIGlmIChjdXJyZW50VGV4dC50ZXh0Lmxlbmd0aCA8IG1heExlbmd0aEh1Z2VCdWJibGUpIHtcbiAgICAgICAgY3VycmVudFRleHQudGV4dC5zbGljZSgwLCBtYXhMZW5ndGhIdWdlQnViYmxlKVxuICAgICAgfVxuXG4gICAgYmVnaW5UeXBpbmcoXG4gICAgICAgIG5wYyxcbiAgICAgICAgY3VycmVudFRleHQudGV4dCxcbiAgICAgICAgYnViYmxlLmluZGV4LFxuICAgICAgICBjdXJyZW50VGV4dC50aW1lT24gPyBjdXJyZW50VGV4dC50aW1lT24gOiB1bmRlZmluZWQsXG4gICAgICAgIGN1cnJlbnRUZXh0LnR5cGVTcGVlZCA/IGN1cnJlbnRUZXh0LnR5cGVTcGVlZCA6IHVuZGVmaW5lZCBcbiAgICApXG5cbiAgICBhZGp1c3RCdWJibGUobnBjLCBjdXJyZW50VGV4dC50ZXh0Lmxlbmd0aClcbiAgICBsYXlvdXREaWFsb2dXaW5kb3cobnBjLCBidWJibGUuaW5kZXgpXG4gICAgYnViYmxlLmlzQnViYmxlT3BlbiA9IHRydWVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsb3NlQnViYmxlKG5wYzpFbnRpdHkpe1xuICAgIGxldCBidWJibGUgPSBidWJibGVzLmdldChucGMpXG4gICAgICAgIGJ1YmJsZS5pc0J1YmJsZU9wZW4gPSBmYWxzZVxuICAgICAgICBidWJibGUudHlwaW5nID0gZmFsc2VcbiAgICAgICAgYnViYmxlLnZpc2libGVUZXh0ID0gXCJcIlxuICAgICAgICBidWJibGUudmlzaWJsZUNoYXJzID0gMFxuICAgICAgICBidWJibGUuZnVsbFRleHQgPSBcIlwiXG4gICAgICAgIGJ1YmJsZS50aW1lciA9IDBcbiAgICAgICAgYnViYmxlLmluZGV4ID0gMFxuICAgICAgICBidWJibGUuc2NyaXB0ID0gW11cbiAgICAgICAgYnViYmxlLmJ1dHRvbnMgPSAwXG4gICAgICAgIGJ1YmJsZS5tYXJnaW4gPSAwXG4gICAgICAgIGJ1YmJsZS5jdXJyZW50VGV4dCA9IG51bGxcbiAgICAgICAgVGV4dFNoYXBlLmdldE11dGFibGUoYnViYmxlLnRleHQpLnRleHQgPSBcIlwiXG4gICAgICAgIFZpc2liaWxpdHlDb21wb25lbnQuZ2V0TXV0YWJsZShidWJibGUudGV4dCkudmlzaWJsZSA9IGZhbHNlXG4gICAgICAgIFZpc2liaWxpdHlDb21wb25lbnQuZ2V0TXV0YWJsZShidWJibGUucGFuZWwpLnZpc2libGUgPSBmYWxzZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VCdWJibGVFbmRBbGwobnBjOkVudGl0eSk6IHZvaWQge1xuICAgIGxldCBidWJibGUgPSBidWJibGVzLmdldChucGMpXG4gICAgaWYgKGJ1YmJsZS5pc0J1YmJsZU9wZW4pIHtcbiAgICAgICAgYnViYmxlLmRvbmUgPSB0cnVlXG4gICAgICAgIGNsb3NlQnViYmxlKG5wYylcbiAgICB9XG4gIH1cblxuY29uc3QgREVGQVVMVF9TUEVFRCA9IDQ1XG5cbmNvbnN0IERFRkFVTFRfVElNRV9PTiA9IDNcblxuZnVuY3Rpb24gYmVnaW5UeXBpbmcobnBjOkVudGl0eSwgdGV4dDpzdHJpbmcsIHRleHRJZDpudW1iZXIsIHRpbWVPbj86bnVtYmVyLCBzcGVlZD86bnVtYmVyKXtcbiAgICBsZXQgZGlhbG9nRGF0YSA9IGJ1YmJsZXMuZ2V0KG5wYylcbiAgICBkaWFsb2dEYXRhLmZ1bGxUZXh0ID0gYWRkTGluZUJyZWFrKGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLnRleHQsIHRydWUpXG4gICAgZGlhbG9nRGF0YS50eXBpbmcgPSB0cnVlXG4gICAgZGlhbG9nRGF0YS5kb25lID0gZmFsc2VcbiAgICBkaWFsb2dEYXRhLnZpc2libGVUZXh0ID0gXCJcIlxuICAgIGRpYWxvZ0RhdGEudmlzaWJsZUNoYXJzID0gMFxuICAgIGRpYWxvZ0RhdGEudGltZXIgPSAwXG4gICAgZGlhbG9nRGF0YS5idXR0b25zID0gMFxuICAgIGRpYWxvZ0RhdGEudGltZU9uID0gdGltZU9uID8gdGltZU9uIDogREVGQVVMVF9USU1FX09OXG4gICAgZGlhbG9nRGF0YS5zcGVlZCA9IHNwZWVkID8gc3BlZWQgOiBERUZBVUxUX1NQRUVEXG5cbiAgICBkaWFsb2dEYXRhLm9wZW5UaW1lID0gTWF0aC5mbG9vcihEYXRlLm5vdygpKVxuXG4gICAgaWYoZGlhbG9nRGF0YS5zcGVlZCA8PSAwKXtcbiAgICAgICAgcnVzaFRleHQobnBjKVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgICBpZighSXNUeXBpbmdCdWJibGUuaGFzKG5wYykpe1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ2NyZWF0aW5nIHR5cHVpbmcgYnViYmxlJylcbiAgICAgICAgICAgIElzVHlwaW5nQnViYmxlLmNyZWF0ZShucGMpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJ1c2hUZXh0KG5wYzpFbnRpdHkpe1xuICAgIGxldCBkaWFsb2dEYXRhID0gYnViYmxlcy5nZXQobnBjKVxuICAgIGRpYWxvZ0RhdGEudHlwaW5nID0gZmFsc2VcbiAgICBkaWFsb2dEYXRhLnRpbWVyID0gMFxuICAgIGRpYWxvZ0RhdGEudmlzaWJsZUNoYXJzID0gZGlhbG9nRGF0YS5mdWxsVGV4dC5sZW5ndGhcbiAgICBkaWFsb2dEYXRhLnZpc2libGVUZXh0ID0gZGlhbG9nRGF0YS5mdWxsVGV4dFxufVxuXG5mdW5jdGlvbiBhZGp1c3RCdWJibGUobnBjOkVudGl0eSwgdGV4dExlbmd0aDpudW1iZXIpe1xuICAgIGxldCBidWJibGUgPSBidWJibGVzLmdldChucGMpXG5cbiAgICBpZiAodGV4dExlbmd0aCA8IG1heExlbmd0aFNob3J0QnViYmxlKSB7XG4gICAgICAgIE1lc2hSZW5kZXJlci5zZXRQbGFuZShidWJibGUucGFuZWwsXG4gICAgICAgICAgICBzZXRVVlNlY3Rpb24oXG4gICAgICAgICAgICBidWJibGVPcHRpb25zLnNob3J0LFxuICAgICAgICAgICAgMTAyNCxcbiAgICAgICAgICAgIDEwMjRcbiAgICAgICAgICApKVxuXG4gICAgICAgIFRyYW5zZm9ybS5nZXRNdXRhYmxlKGJ1YmJsZS5wYW5lbCkuc2NhbGUueCA9IHNob3J0QnViYmxlWFxuICAgICAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZShidWJibGUucGFuZWwpLnNjYWxlLnkgPSBzaG9ydEJ1YmJsZVlcbiAgICAgICAgVHJhbnNmb3JtLmdldE11dGFibGUoYnViYmxlLmNvbnRhaW5lcikucG9zaXRpb24ueCA9IHNob3J0QnViYmxlWE9mZnNldFxuICAgICAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZShidWJibGUuY29udGFpbmVyKS5wb3NpdGlvbi55ID0gYnViYmxlLmJhc2VZT2Zmc2V0ICsgc2hvcnRCdWJibGVZT2Zmc2V0XG4gICAgICAgIFRleHRTaGFwZS5nZXRNdXRhYmxlKGJ1YmJsZS50ZXh0KS53aWR0aCA9IHNob3J0QnViYmxlVGV4dFdpZHRoXG4gICAgICB9IGVsc2UgaWYgKHRleHRMZW5ndGggPCBtYXhMZW5ndGhOb3JtYWxCdWJibGUpIHtcbiAgICAgICAgTWVzaFJlbmRlcmVyLnNldFBsYW5lKGJ1YmJsZS5wYW5lbCxcbiAgICAgICAgICAgIHNldFVWU2VjdGlvbihcbiAgICAgICAgICAgIGJ1YmJsZU9wdGlvbnMubm9ybWFsLFxuICAgICAgICAgICAgMTAyNCxcbiAgICAgICAgICAgIDEwMjRcbiAgICAgICAgICApKVxuXG4gICAgICAgIFRyYW5zZm9ybS5nZXRNdXRhYmxlKGJ1YmJsZS5wYW5lbCkuc2NhbGUueCA9IG5vcm1hbEJ1YmJsZVhcbiAgICAgICAgVHJhbnNmb3JtLmdldE11dGFibGUoYnViYmxlLnBhbmVsKS5zY2FsZS55ID0gbm9ybWFsQnViYmxlWVxuICAgICAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZShidWJibGUuY29udGFpbmVyKS5wb3NpdGlvbi54ID0gbm9ybWFsQnViYmxlWE9mZnNldFxuICAgICAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZShidWJibGUuY29udGFpbmVyKS5wb3NpdGlvbi55ID0gYnViYmxlLmJhc2VZT2Zmc2V0ICsgbm9ybWFsQnViYmxlWU9mZnNldFxuICAgICAgICBUZXh0U2hhcGUuZ2V0TXV0YWJsZShidWJibGUudGV4dCkud2lkdGggPSBub3JtYWxCdWJibGVUZXh0V2lkdGhcbiAgICAgIH0gZWxzZSBpZiAodGV4dExlbmd0aCA8IG1heExlbmd0aExvbmdCdWJibGUpIHtcbiAgICAgICAgTWVzaFJlbmRlcmVyLnNldFBsYW5lKGJ1YmJsZS5wYW5lbCxcbiAgICAgICAgICAgIHNldFVWU2VjdGlvbihcbiAgICAgICAgICAgIGJ1YmJsZU9wdGlvbnMubG9uZyxcbiAgICAgICAgICAgIDEwMjQsXG4gICAgICAgICAgICAxMDI0XG4gICAgICAgICAgKSlcblxuICAgICAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZShidWJibGUucGFuZWwpLnNjYWxlLnggPSBsb25nQnViYmxlWFxuICAgICAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZShidWJibGUucGFuZWwpLnNjYWxlLnkgPSBsb25nQnViYmxlWVxuICAgICAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZShidWJibGUuY29udGFpbmVyKS5wb3NpdGlvbi54ID0gbG9uZ0J1YmJsZVhPZmZzZXRcbiAgICAgICAgVHJhbnNmb3JtLmdldE11dGFibGUoYnViYmxlLmNvbnRhaW5lcikucG9zaXRpb24ueSA9IGJ1YmJsZS5iYXNlWU9mZnNldCArIGxvbmdCdWJibGVZT2Zmc2V0XG4gICAgICAgIFRleHRTaGFwZS5nZXRNdXRhYmxlKGJ1YmJsZS50ZXh0KS53aWR0aCA9IGxvbmdCdWJibGVUZXh0V2lkdGhcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIE1lc2hSZW5kZXJlci5zZXRQbGFuZShidWJibGUucGFuZWwsXG4gICAgICAgICAgICBzZXRVVlNlY3Rpb24oXG4gICAgICAgICAgICBidWJibGVPcHRpb25zLmh1Z2UsXG4gICAgICAgICAgICAxMDI0LFxuICAgICAgICAgICAgMTAyNFxuICAgICAgICAgICkpXG4gICAgICAgIFRyYW5zZm9ybS5nZXRNdXRhYmxlKGJ1YmJsZS5wYW5lbCkuc2NhbGUueCA9IGh1Z2VCdWJibGVYXG4gICAgICAgIFRyYW5zZm9ybS5nZXRNdXRhYmxlKGJ1YmJsZS5wYW5lbCkuc2NhbGUueSA9IGh1Z2VCdWJibGVZXG4gICAgICAgIFRyYW5zZm9ybS5nZXRNdXRhYmxlKGJ1YmJsZS5jb250YWluZXIpLnBvc2l0aW9uLnggPSBodWdlQnViYmxlWE9mZnNldFxuICAgICAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZShidWJibGUuY29udGFpbmVyKS5wb3NpdGlvbi55ID0gYnViYmxlLmJhc2VZT2Zmc2V0ICsgaHVnZUJ1YmJsZVlPZmZzZXRcbiAgICAgICAgVGV4dFNoYXBlLmdldE11dGFibGUoYnViYmxlLnRleHQpLndpZHRoID0gaHVnZUJ1YmJsZVRleHRXaWR0aFxuICAgICAgfVxufVxuXG4vLyBBZGRzIHRoZSBidXR0b25zIG9yIG1vdXNlIGljb24gZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIHdpbmRvd1xuZnVuY3Rpb24gbGF5b3V0RGlhbG9nV2luZG93KG5wYzpFbnRpdHksIHRleHRJZDogbnVtYmVyKTogdm9pZCB7XG4gICAgbGV0IGJ1YmJsZSA9IGJ1YmJsZXMuZ2V0KG5wYylcbiAgICBsZXQgY3VycmVudFRleHQ6IERpYWxvZyA9IGJ1YmJsZS5zY3JpcHRbdGV4dElkXVxuICAgICAgPyBidWJibGUuc2NyaXB0W3RleHRJZF1cbiAgICAgIDogeyB0ZXh0OiAnJyB9XG5cbiAgICAvLyBVcGRhdGUgdGV4dFxuICAgIGxldCB0ZXh0WSA9IGN1cnJlbnRUZXh0Lm9mZnNldFkgPyBjdXJyZW50VGV4dC5vZmZzZXRZICsgdGV4dFlQb3MgOiB0ZXh0WVBvc1xuXG4gICAgaWYgKGN1cnJlbnRUZXh0LmJ1dHRvbnMgJiYgY3VycmVudFRleHQuYnV0dG9ucy5sZW5ndGggPj0gMykge1xuICAgICAgdGV4dFkgKz0gNTBcbiAgICB9IGVsc2UgaWYgKGN1cnJlbnRUZXh0LmJ1dHRvbnMgJiYgY3VycmVudFRleHQuYnV0dG9ucy5sZW5ndGggPj0gMSkge1xuICAgICAgdGV4dFkgKz0gMjRcbiAgICB9XG4gICAgVGV4dFNoYXBlLmdldE11dGFibGUoYnViYmxlLnRleHQpLmZvbnRTaXplID0gY3VycmVudFRleHQuZm9udFNpemVcbiAgICA/IGN1cnJlbnRUZXh0LmZvbnRTaXplXG4gICAgOiB0ZXh0U2l6ZVxuICAgIFxuICAgIFZpc2liaWxpdHlDb21wb25lbnQuZ2V0TXV0YWJsZShidWJibGUudGV4dCkudmlzaWJsZSA9IHRydWVcbiAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZShidWJibGUudGV4dCkucG9zaXRpb24ueSA9IHRleHRZXG5cbiAgICBpZiAoY3VycmVudFRleHQuYXVkaW8pIHtcbiAgICAgICAgQXVkaW9Tb3VyY2UuY3JlYXRlT3JSZXBsYWNlKGJ1YmJsZS5zb3VuZFBsYXllciwge1xuICAgICAgICAgICAgYXVkaW9DbGlwVXJsOiBjdXJyZW50VGV4dC5hdWRpbyxcbiAgICAgICAgICAgIGxvb3A6IGZhbHNlLFxuICAgICAgICAgICAgcGxheWluZzogZmFsc2VcbiAgICAgICAgfSlcbiAgICAgICAgbGV0IGF1ZGlvID0gQXVkaW9Tb3VyY2UuZ2V0TXV0YWJsZShidWJibGUuc291bmRQbGF5ZXIpXG4gICAgICAgIGF1ZGlvLnZvbHVtZSA9IDAuNVxuICAgICAgICBhdWRpby5wbGF5aW5nID0gdHJ1ZVxuICAgIH0gZWxzZSBpZiAoYnViYmxlLnNvdW5kKSB7XG4gICAgICAgIEF1ZGlvU291cmNlLmNyZWF0ZU9yUmVwbGFjZShidWJibGUuc291bmRQbGF5ZXIsIHtcbiAgICAgICAgICAgIGF1ZGlvQ2xpcFVybDogYnViYmxlLnNvdW5kLFxuICAgICAgICAgICAgbG9vcDogZmFsc2UsXG4gICAgICAgICAgICBwbGF5aW5nOiBmYWxzZVxuICAgICAgICB9KVxuICAgICAgICBsZXQgYXVkaW8gPSBBdWRpb1NvdXJjZS5nZXRNdXRhYmxlKGJ1YmJsZS5zb3VuZFBsYXllcilcbiAgICAgICAgYXVkaW8udm9sdW1lID0gMC41XG4gICAgICAgIGF1ZGlvLnBsYXlpbmcgPSB0cnVlXG4gICAgfVxuXG4gIH1cblxuLy8gUHJvZ3Jlc3NlcyB0ZXh0XG5leHBvcnQgZnVuY3Rpb24gbmV4dChucGM6RW50aXR5KTogdm9pZCB7XG4gICAgbGV0IGJ1YmJsZSA9IGJ1YmJsZXMuZ2V0KG5wYylcblxuICAgIGlmKGJ1YmJsZS5pc0J1YmJsZU9wZW4pe1xuICAgICAgbGV0IGN1cnJlbnRUZXh0ID0gYnViYmxlLnNjcmlwdFtidWJibGUuaW5kZXhdXG5cbiAgICAgIGlmKCFjdXJyZW50VGV4dCl7XG4gICAgICAgIGN1cnJlbnRUZXh0ID0gYnViYmxlLnNjcmlwdFtidWJibGUuaW5kZXgtMV1cbiAgICAgIH1cbiAgICBcbiAgICAgICAgaWYgKGN1cnJlbnRUZXh0LnRyaWdnZXJlZEJ5TmV4dCkge1xuICAgICAgICAgIGN1cnJlbnRUZXh0LnRyaWdnZXJlZEJ5TmV4dCgpXG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmlzRW5kT2ZEaWFsb2cpIHtcbiAgICAgICAgICBjbG9zZUJ1YmJsZShucGMpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICBcbiAgICAgICAvLyBVcGRhdGUgYWN0aXZlIHRleHRcbiAgICAgICAgIGJ1YmJsZS5pbmRleCsrXG4gICAgXG4gICAgICAgIC8vIFVwZGF0ZSBhY3RpdmUgdGV4dCB3aXRoIG5ldyBhY3RpdmUgdGV4dFxuICAgICAgICBjdXJyZW50VGV4dCA9IGJ1YmJsZS5zY3JpcHRbYnViYmxlLmluZGV4XVxuICAgIFxuICAgICAgICBpZiAoY3VycmVudFRleHQudGV4dC5sZW5ndGggPCBtYXhMZW5ndGhIdWdlQnViYmxlKSB7XG4gICAgICAgICAgY3VycmVudFRleHQudGV4dC5zbGljZSgwLCBtYXhMZW5ndGhIdWdlQnViYmxlKVxuICAgICAgICB9XG4gICAgXG4gICAgICAgIFRleHRTaGFwZS5nZXRNdXRhYmxlKGJ1YmJsZS50ZXh0KS50ZXh0ID0gXCJcIlxuICAgIFxuICAgICAgICBhZGp1c3RCdWJibGUobnBjLCBjdXJyZW50VGV4dC50ZXh0Lmxlbmd0aClcbiAgICBcbiAgICAgICAgYmVnaW5UeXBpbmcoXG4gICAgICAgICAgICBucGMsXG4gICAgICAgICAgICBjdXJyZW50VGV4dC50ZXh0LFxuICAgICAgICAgICAgYnViYmxlLmluZGV4LFxuICAgICAgICAgICAgY3VycmVudFRleHQudGltZU9uID8gY3VycmVudFRleHQudGltZU9uIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY3VycmVudFRleHQudHlwZVNwZWVkID8gY3VycmVudFRleHQudHlwZVNwZWVkIDogdW5kZWZpbmVkIFxuICAgICAgICApXG4gICAgICBsYXlvdXREaWFsb2dXaW5kb3cobnBjLCBidWJibGUuaW5kZXgpXG4gICAgfVxuXG4gICAgXG4gIH1cblxuZnVuY3Rpb24gc2V0VVZTZWN0aW9uKFxuXHRzZWN0aW9uOiBJbWFnZVNlY3Rpb24sXG5cdHNpemVYOiBudW1iZXIsXG5cdHNpemVZOiBudW1iZXJcbiAgKSB7XG5cdHJldHVybiBzZXRVVnMoXG4gICAgICAgIHt4OiAgc2VjdGlvbi5zb3VyY2VMZWZ0ISAvIHNpemVYLCB5OiAoc2l6ZVkgLSBzZWN0aW9uLnNvdXJjZVRvcCEgLSBzZWN0aW9uLnNvdXJjZUhlaWdodCkgLyBzaXplWX0sXG4gICAgICAgIHt4OiAgKHNlY3Rpb24uc291cmNlTGVmdCEgKyBzZWN0aW9uLnNvdXJjZVdpZHRoKSAvIHNpemVYLCB5OiAoc2l6ZVkgLSBzZWN0aW9uLnNvdXJjZVRvcCEgLSBzZWN0aW9uLnNvdXJjZUhlaWdodCkgLyBzaXplWX0sXG4gICAgICAgIHt4OiAgKHNlY3Rpb24uc291cmNlTGVmdCEgKyBzZWN0aW9uLnNvdXJjZVdpZHRoKSAvIHNpemVYLCB5OiAgKHNpemVZIC0gc2VjdGlvbi5zb3VyY2VUb3AhKSAvIHNpemVZfSxcbiAgICAgICAge3g6ICBzZWN0aW9uLnNvdXJjZUxlZnQhIC8gc2l6ZVgsIHk6IChzaXplWSAtIHNlY3Rpb24uc291cmNlVG9wISkgLyBzaXplWX0sXG5cdClcbiAgfVxuXG5mdW5jdGlvbiBzZXRVVnMoXG5cdF91djAwOiBhbnksXG5cdF91djEwOiBhbnksXG5cdF91djExOiBhbnksXG5cdF91djAxOiBhbnlcbiAgKSB7XG5cblx0cmV0dXJuIFtcblx0ICBfdXYwMC54LFxuXHQgIF91djAwLnksXG4gIFxuXHQgIF91djEwLngsXG5cdCAgX3V2MTAueSxcbiAgXG5cdCAgX3V2MTEueCxcblx0ICBfdXYxMS55LFxuICBcblx0ICBfdXYwMS54LFxuXHQgIF91djAxLnksXG5cdCAgLy8tLS0tXG5cdCAgX3V2MDAueCxcblx0ICBfdXYwMC55LFxuICBcblx0ICBfdXYxMC54LFxuXHQgIF91djEwLnksXG4gIFxuXHQgIF91djExLngsXG5cdCAgX3V2MTEueSxcbiAgXG5cdCAgX3V2MDEueCxcblx0ICBfdXYwMS55LFxuXHRdXG4gIH1cblxuICBsZXQgYnViYmxlT3B0aW9uczphbnkgPSB7XG4gICAgc2hvcnQ6IHtcbiAgICAgIHNvdXJjZVdpZHRoOiAxMTYgKiAyLFxuICAgICAgc291cmNlSGVpZ2h0OiA4NCAqIDIsXG4gICAgICBzb3VyY2VMZWZ0OiAzMDUgKiAyLFxuICAgICAgc291cmNlVG9wOiA0MTcgKiAyLFxuICAgIH0sXG4gICAgbm9ybWFsOiB7XG4gICAgICBzb3VyY2VXaWR0aDogMjg2ICogMixcbiAgICAgIHNvdXJjZUhlaWdodDogODQgKiAyLFxuICAgICAgc291cmNlTGVmdDogOCAqIDIsXG4gICAgICBzb3VyY2VUb3A6IDQxNyAqIDIsXG4gICAgfSxcbiAgICBsb25nOiB7XG4gICAgICBzb3VyY2VXaWR0aDogNDk3ICogMixcbiAgICAgIHNvdXJjZUhlaWdodDogMTUzICogMixcbiAgICAgIHNvdXJjZUxlZnQ6IDYgKiAyLFxuICAgICAgc291cmNlVG9wOiAyNTQgKiAyLFxuICAgIH0sXG4gICAgaHVnZToge1xuICAgICAgc291cmNlV2lkdGg6IDQ5NyAqIDIsXG4gICAgICBzb3VyY2VIZWlnaHQ6IDIzOSAqIDIsXG4gICAgICBzb3VyY2VMZWZ0OiA2ICogMixcbiAgICAgIHNvdXJjZVRvcDogNyAqIDIsXG4gICAgfSxcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QnViYmxlVGV4dExlbmd0aCh0ZXh0OnN0cmluZyl7XG4gICAgaWYodGV4dC5sZW5ndGggPj0gbWF4TGVuZ3RoSHVnZUJ1YmJsZSl7XG4gICAgICAgIHJldHVybiA0MFxuICAgIH1cbiAgICBlbHNlIGlmKHRleHQubGVuZ3RoID49IG1heExlbmd0aExvbmdCdWJibGUpe1xuICAgICAgICByZXR1cm4gNDBcbiAgICB9XG4gICAgZWxzZSBpZih0ZXh0Lmxlbmd0aCA+PSBtYXhMZW5ndGhOb3JtYWxCdWJibGUpe1xuICAgICAgICByZXR1cm4gNDBcbiAgICB9XG4gICAgZWxzZSBpZih0ZXh0Lmxlbmd0aCA+PSBtYXhMZW5ndGhTaG9ydEJ1YmJsZSl7XG4gICAgICAgIHJldHVybiA0MFxuICAgIH1cbiAgfSJdfQ==
|
package/dist/components.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
export declare const IsFollowingPath: import("@dcl/sdk/ecs").MapComponentDefinition<import("@dcl/sdk/ecs").MapResult<{}>>;
|
|
2
2
|
export declare const IsTypingDialog: import("@dcl/sdk/ecs").MapComponentDefinition<import("@dcl/sdk/ecs").MapResult<{}>>;
|
|
3
3
|
export declare const IsTypingBubble: import("@dcl/sdk/ecs").MapComponentDefinition<import("@dcl/sdk/ecs").MapResult<{}>>;
|
|
4
|
+
export declare const TrackUserFlag: import("@dcl/sdk/ecs").MapComponentDefinition<import("@dcl/sdk/ecs").MapResult<{
|
|
5
|
+
lockXZRotation: import("@dcl/sdk/ecs").ISchema<boolean>;
|
|
6
|
+
active: import("@dcl/sdk/ecs").ISchema<boolean>;
|
|
7
|
+
rotSpeed: import("@dcl/sdk/ecs").ISchema<number>;
|
|
8
|
+
}>>;
|
package/dist/components.js
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
import { engine } from "@dcl/sdk/ecs";
|
|
2
|
-
export const IsFollowingPath = engine.defineComponent("isFollowingPath", {});
|
|
3
|
-
export const IsTypingDialog = engine.defineComponent("isTypingDialog", {});
|
|
4
|
-
export const IsTypingBubble = engine.defineComponent("isTypingBubble", {});
|
|
5
|
-
|
|
1
|
+
import { Schemas, engine } from "@dcl/sdk/ecs";
|
|
2
|
+
export const IsFollowingPath = engine.defineComponent("npcutils::isFollowingPath", {});
|
|
3
|
+
export const IsTypingDialog = engine.defineComponent("npcutils::isTypingDialog", {});
|
|
4
|
+
export const IsTypingBubble = engine.defineComponent("npcutils::isTypingBubble", {});
|
|
5
|
+
export const TrackUserFlag = engine.defineComponent("npcutils::trackUserFlag", {
|
|
6
|
+
lockXZRotation: Schemas.Boolean,
|
|
7
|
+
active: Schemas.Boolean,
|
|
8
|
+
rotSpeed: Schemas.Number
|
|
9
|
+
});
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb25lbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQWEsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRXpELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLDJCQUEyQixFQUFFLEVBQUUsQ0FBQyxDQUFBO0FBQ3RGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLDBCQUEwQixFQUFFLEVBQUUsQ0FBQyxDQUFBO0FBQ3BGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLDBCQUEwQixFQUFFLEVBQUUsQ0FBQyxDQUFBO0FBRXBGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUNsRCx5QkFBeUIsRUFDekI7SUFDQyxjQUFjLEVBQUUsT0FBTyxDQUFDLE9BQU87SUFDL0IsTUFBTSxFQUFFLE9BQU8sQ0FBQyxPQUFPO0lBQ2pCLFFBQVEsRUFBRSxPQUFPLENBQUMsTUFBTTtDQUM5QixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY2hlbWFzLCBUcmFuc2Zvcm0sIGVuZ2luZSB9IGZyb20gXCJAZGNsL3Nkay9lY3NcIlxuXG5leHBvcnQgY29uc3QgSXNGb2xsb3dpbmdQYXRoID0gZW5naW5lLmRlZmluZUNvbXBvbmVudChcIm5wY3V0aWxzOjppc0ZvbGxvd2luZ1BhdGhcIiwge30pXG5leHBvcnQgY29uc3QgSXNUeXBpbmdEaWFsb2cgPSBlbmdpbmUuZGVmaW5lQ29tcG9uZW50KFwibnBjdXRpbHM6OmlzVHlwaW5nRGlhbG9nXCIsIHt9KVxuZXhwb3J0IGNvbnN0IElzVHlwaW5nQnViYmxlID0gZW5naW5lLmRlZmluZUNvbXBvbmVudChcIm5wY3V0aWxzOjppc1R5cGluZ0J1YmJsZVwiLCB7fSlcblxuZXhwb3J0IGNvbnN0IFRyYWNrVXNlckZsYWcgPSBlbmdpbmUuZGVmaW5lQ29tcG9uZW50KFxuXHRcIm5wY3V0aWxzOjp0cmFja1VzZXJGbGFnXCIsXG5cdHtcblx0XHRsb2NrWFpSb3RhdGlvbjogU2NoZW1hcy5Cb29sZWFuLFxuXHRcdGFjdGl2ZTogU2NoZW1hcy5Cb29sZWFuLFxuICAgICAgICByb3RTcGVlZDogU2NoZW1hcy5OdW1iZXJcblx0fSlcblxuXG4iXX0=
|
package/dist/dialog.js
CHANGED
|
@@ -375,4 +375,4 @@ export function findDialogByName(dialogs, name) {
|
|
|
375
375
|
}
|
|
376
376
|
return 0;
|
|
377
377
|
}
|
|
378
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2RpYWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssS0FBSyxNQUFNLGdCQUFnQixDQUFBO0FBRXZDLE9BQU8sRUFBRSxXQUFXLEVBQVUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5QyxPQUFPLEVBQXFCLFFBQVEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHL0MsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQXFCLElBQUksR0FBRyxFQUFFLENBQUE7QUFDN0QsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQXFCLElBQUksR0FBRyxFQUFFLENBQUE7QUFFakUsTUFBTSxDQUFOLElBQVksV0FNVDtBQU5ILFdBQVksV0FBVztJQUNuQixtREFBVyxDQUFBO0lBQ1gsaURBQVUsQ0FBQTtJQUNWLDZDQUFRLENBQUE7SUFDUixtREFBVyxDQUFBO0lBQ1gsbURBQVcsQ0FBQTtBQUNiLENBQUMsRUFOUyxXQUFXLEtBQVgsV0FBVyxRQU1wQjtBQUVILE1BQU0sQ0FBQyxJQUFJLGlCQUFpQixHQUFHLElBQUksQ0FBQTtBQUVuQyxJQUFJLFlBQVksR0FBRyxDQUFDLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQTtBQUMxQyxJQUFJLFlBQVksR0FBRyxFQUFFLEdBQUcsaUJBQWlCLENBQUE7QUFFekMsSUFBSSxTQUFTLEdBQUcsR0FBRyxHQUFHLGlCQUFpQixDQUFBO0FBQ3ZDLElBQUksU0FBUyxHQUFHLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQTtBQUV0QyxJQUFJLGFBQWEsR0FBRyxHQUFHLEdBQUcsaUJBQWlCLENBQUE7QUFDM0MsSUFBSSxVQUFVLEdBQUcsR0FBRyxHQUFHLGlCQUFpQixDQUFBO0FBRXhDLElBQUksUUFBUSxHQUFHLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQTtBQUNyQyxJQUFJLFFBQVEsR0FBRyxFQUFFLEdBQUcsaUJBQWlCLENBQUE7QUFFckMsSUFBSSxXQUFXLEdBQUcsR0FBRyxHQUFFLGlCQUFpQixDQUFBO0FBQ3hDLElBQUksWUFBWSxHQUFHLEVBQUUsR0FBRSxpQkFBaUIsQ0FBQTtBQUd4QyxJQUFJLGNBQWMsR0FBRyxFQUFFLEdBQUcsaUJBQWlCLENBQUE7QUFFM0MsSUFBSSxXQUFXLEdBQUcsR0FBRyxHQUFHLGlCQUFpQixDQUFBO0FBQ3pDLElBQUksV0FBVyxHQUFHLENBQUMsRUFBRSxHQUFHLGlCQUFpQixDQUFBO0FBQ3pDLElBQUksV0FBVyxHQUFHLENBQUMsRUFBRSxHQUFHLGlCQUFpQixDQUFBO0FBQ3pDLElBQUksV0FBVyxHQUFHLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQTtBQUV6QyxJQUFJLFdBQVcsR0FBRyxDQUFDLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQTtBQUN6QyxJQUFJLFdBQVcsR0FBRyxDQUFDLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQTtBQUN6QyxJQUFJLFlBQVksR0FBRyxDQUFDLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQTtBQUMxQyxJQUFJLFlBQVksR0FBRyxDQUFDLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQTtBQUMxQyxJQUFJLFdBQVcsR0FBRyxDQUFDLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQTtBQUN6QyxJQUFJLFdBQVcsR0FBRyxDQUFDLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQTtBQUV6QyxJQUFJLGNBQWMsR0FBRyxDQUFDLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQTtBQUM3QyxJQUFJLGNBQWMsR0FBRyxDQUFDLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQTtBQUU3QyxJQUFJLGVBQWUsR0FBRyxFQUFFLEdB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LFVBQVUsQ0FBQyxNQUFjO0lBQ3ZDLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUE7QUFDL0MsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxPQUFpQixFQUFFLElBQVk7SUFDOUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDdkMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxFQUFFO1lBQzlDLE9BQU8sQ0FBQyxDQUFBO1NBQ1Q7S0FDRjtJQUNELE9BQU8sQ0FBQyxDQUFBO0FBQ1YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWxzIGZyb20gJ0BkY2wtc2RrL3V0aWxzJ1xuXG5pbXBvcnQgeyBBdWRpb1NvdXJjZSwgRW50aXR5LCBlbmdpbmUgfSBmcm9tIFwiQGRjbC9zZGsvZWNzXCI7XG5pbXBvcnQgeyBhY3RpdmVOUEMsIG5wY0RhdGFDb21wb25lbnQgfSBmcm9tIFwiLi9ucGNcIjtcbmltcG9ydCB7IElzVHlwaW5nRGlhbG9nIH0gZnJvbSBcIi4vY29tcG9uZW50c1wiO1xuaW1wb3J0IHsgaGFuZGxlRGlhbG9nVHlwaW5nIH0gZnJvbSBcIi4vc3lzdGVtc1wiO1xuaW1wb3J0IHsgRGlhbG9nLCBJbWFnZURhdGEsIE5QQ1N0YXRlIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IGxpZ2h0VGhlbWUsIHNlY3Rpb24gfSBmcm9tICcuL3VpJztcbmltcG9ydCB7IGdldEJ1YmJsZVRleHRMZW5ndGggfSBmcm9tICcuL2J1YmJsZSc7XG5cblxuZXhwb3J0IGNvbnN0IG5wY0RpYWxvZ0NvbXBvbmVudDogTWFwPEVudGl0eSwgYW55PiA9IG5ldyBNYXAoKVxuZXhwb3J0IGNvbnN0IG5wY0RpYWxvZ1R5cGluZ1N5c3RlbXM6IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcblxuZXhwb3J0IGVudW0gQ29uZmlybU1vZGUge1xuICAgIENvbmZpcm0gPSAwLFxuICAgIENhbmNlbCA9IDEsXG4gICAgTmV4dCA9IDIsXG4gICAgQnV0dG9uMyA9IDMsXG4gICAgQnV0dG9uNCA9IDRcbiAgfVxuXG5leHBvcnQgbGV0IFVJc2NhbGVNdWx0aXBsaWVyID0gMC43NVxuXG5sZXQgcG9ydHJhaXRYUG9zID0gLTUwICogVUlzY2FsZU11bHRpcGxpZXIgXG5sZXQgcG9ydHJhaXRZUG9zID0gMjAgKiBVSXNjYWxlTXVsdGlwbGllclxuXG5sZXQgaW1hZ2VYUG9zID0gMzUwICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBpbWFnZVlQb3MgPSA1MCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmxldCBwb3J0cmFpdFNjYWxlID0gMjU2ICogVUlzY2FsZU11bHRpcGxpZXIgXG5sZXQgaW1hZ2VTY2FsZSA9IDI1NiAqIFVJc2NhbGVNdWx0aXBsaWVyIFxuXG5sZXQgdGV4dFNpemUgPSAyNCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgdGV4dFlQb3MgPSAxMCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmxldCBidXR0b25XaWR0aCA9IDE3NCogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBidXR0b25IZWlnaHQgPSA0NiogVUlzY2FsZU11bHRpcGxpZXJcblxuXG5sZXQgYnV0dG9uVGV4dFNpemUgPSAyMCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmxldCBidXR0b24xWFBvcyA9IDE1MCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uMlhQb3MgPSAtODAgKiBVSXNjYWxlTXVsdGlwbGllclxubGV0IGJ1dHRvbjNYUG9zID0gLTgwICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBidXR0b240WFBvcyA9IDE1MCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmxldCBidXR0b24xWVBvcyA9IC02NSAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uMllQb3MgPSAtNjUgKiBVSXNjYWxlTXVsdGlwbGllclxubGV0IGJ1dHRvbjFZUG9zNCA9IC0yMCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uMllQb3M0ID0gLTIwICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBidXR0b24zWVBvcyA9IC04MCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uNFlQb3MgPSAtODAgKiBVSXNjYWxlTXVsdGlwbGllclxuXG5sZXQgc2tpcEJ1dHRvblhQb3MgPSAtMzAwICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBza2lwQnV0dG9uWVBvcyA9IC0xMDAgKiBVSXNjYWxlTXVsdGlwbGllclxuXG5sZXQgYnV0dG9uSWNvbldpZHRoID0gMjYgKiBVSXNjYWxlTXVsdGlwbGllclxubGV0IGJ1dHRvbkljb25IZWlnaHQgPSAyNiAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmV4cG9ydCBmdW5jdGlvbiBhZGREaWFsb2cobnBjOkVudGl0eSwgc291bmQ/OnN0cmluZywgZGVmYXVsdFBvcnRyYWl0PzpJbWFnZURhdGEpe1xuICAgIGNvbnNvbGUubG9nKCdhZGRpbmcgZGlhbG9nIGZvciBucGMnLCBucGMpXG4gICAgbnBjRGlhbG9nQ29tcG9uZW50LnNldChucGMsIHtcbiAgICAgICAgdHlwaW5nOnRydWUsXG4gICAgICAgIHZpc2libGU6ZmFsc2UsXG4gICAgICAgIHZpc2libGVUZXh0OlwiXCIsXG4gICAgICAgIHZpc2libGVDaGFyczowLFxuICAgICAgICBmdWxsVGV4dDpcIlwiLFxuICAgICAgICB0aW1lcjowLFxuICAgICAgICBzcGVlZDozMCxcbiAgICAgICAgb3JpZ2luYWxTY3JpcHQ6W10sXG4gICAgICAgIHNjcmlwdDpbXSxcbiAgICAgICAgaW5kZXg6MCxcbiAgICAgICAgc291bmQ6IHNvdW5kID8gc291bmQgOiB1bmRlZmluZWQsXG4gICAgICAgIHNvdW5kUGxheWVyOiBzb3VuZCA/IGVuZ2luZS5hZGRFbnRpdHkoKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZm9udFNpemU6MjIsXG4gICAgICAgIGlzUXVlc3Rpb246ZmFsc2UsXG4gICAgICAgIGJ1dHRvbnM6MCxcbiAgICAgICAgZGVmYXVsdFBvcnRyYWl0OiBkZWZhdWx0UG9ydHJhaXQgPyBkZWZhdWx0UG9ydHJhaXQgOiBudWxsLFxuICAgICAgICBkZWZhdWx0UG9ydHJhaXRUZXh0dXJlOiBkZWZhdWx0UG9ydHJhaXQgPyBkZWZhdWx0UG9ydHJhaXQucGF0aCA6IGxpZ2h0VGhlbWUsXG4gICAgICAgIHBvcnRyYWl0V2lkdGg6IGRlZmF1bHRQb3J0cmFpdCAmJiBkZWZhdWx0UG9ydHJhaXQud2lkdGggPyBkZWZhdWx0UG9ydHJhaXQud2lkdGggKiBVSXNjYWxlTXVsdGlwbGllciA6IHBvcnRyYWl0U2NhbGUsXG4gICAgICAgIHBvcnRyYWl0SGVpZ2h0OiBkZWZhdWx0UG9ydHJhaXQgJiYgZGVmYXVsdFBvcnRyYWl0LmhlaWdodCA/IGRlZmF1bHRQb3J0cmFpdC5oZWlnaHQgKiBVSXNjYWxlTXVsdGlwbGllciA6IHBvcnRyYWl0U2NhbGUsXG4gICAgICAgIHBvcnRyYWl0WDogZGVmYXVsdFBvcnRyYWl0ICYmIGRlZmF1bHRQb3J0cmFpdC5vZmZzZXRYID8gZGVmYXVsdFBvcnRyYWl0Lm9mZnNldFggKiBVSXNjYWxlTXVsdGlwbGllciArIHBvcnRyYWl0WFBvcyA6IHBvcnRyYWl0WFBvcyxcbiAgICAgICAgcG9ydHJhaXRZOiAgZGVmYXVsdFBvcnRyYWl0ICYmIGRlZmF1bHRQb3J0cmFpdC5vZmZzZXRZID8gZGVmYXVsdFBvcnRyYWl0Lm9mZnNldFkgKiBVSXNjYWxlTXVsdGlwbGllciArIHBvcnRyYWl0WVBvcyA6IHBvcnRyYWl0WVBvcyxcbiAgICAgICAgZGlzcGxheVBvcnRyYWl0OmZhbHNlXG4gICAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3BsYXlQb3J0cmFpdCgpe1xuICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5kaXNwbGF5UG9ydHJhaXRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc2l0aW9uUG9ydGFpdFgoKXtcbiAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gXCJcIiA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkucG9ydHJhaXRYXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3NpdGlvblBvcnRhaXRZKCl7XG4gIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLnBvcnRyYWl0WVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9ydHJhaXRXaWR0aCgpe1xuICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5wb3J0cmFpdFdpZHRoXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3J0cmFpdEhlaWdodCgpe1xuICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5wb3J0cmFpdEhlaWdodFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9ydHJhaXQoKXtcbiAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gXCJcIiA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuZGVmYXVsdFBvcnRyYWl0VGV4dHVyZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGV4dCgpe1xuICAgIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLnZpc2libGVUZXh0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRCdXR0b25UZXh0KGJ1dHRvbjpudW1iZXIpe1xuICAgIGxldCB0ZXh0ID0gXCJcIlxuXG4gICAgaWYoYWN0aXZlTlBDICE9IDAgJiYgbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSl7XG4gICAgICAgIGxldCBkaWFsb2dEYXRhID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KVxuICAgICAgICBpZihkaWFsb2dEYXRhLmlzUXVlc3Rpb24gJiYgZGlhbG9nRGF0YS5idXR0b25zID4gYnV0dG9uKXtcbiAgICAgICAgICAgIHRleHQgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5idXR0b25zW2J1dHRvbl0ubGFiZWxcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGV4dFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9udFNpemUoKXtcbiAgICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyAyMiA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuZm9udFNpemVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3BsYXlEaWFsb2coKXtcbiAgICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBmYWxzZSA6ICBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLnZpc2libGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3BsYXlCdXR0b24oYnV0dG9uOm51bWJlcil7XG4gICAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gZmFsc2UgOiAgbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5pc1F1ZXN0aW9uICYmIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuYnV0dG9ucyA+PSBidXR0b25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3BsYXlGaXJzdEJ1dHRvbkNvbnRhaW5lcigpe1xuICAgIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IGZhbHNlIDogIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuaXNRdWVzdGlvbiAmJiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLmJ1dHRvbnMgPj0gMVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheVNlY29uZEJ1dHRvbkNvbnRhaW5lcigpe1xuICAgIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IGZhbHNlIDogIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuaXNRdWVzdGlvbiAmJiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLmJ1dHRvbnMgPj0gM1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGV4dFBvc2l0aW9uKCl7XG4gICAgLy9jb25zb2xlLmxvZyhucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLmJ1dHRvbnMpXG4gICAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8ge3RvcDowfSA6IHt0b3A6bnBjRGF0YUNvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkubWFyZ2lufVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnV0dG9uQ2xpY2soYnV0dG9uOm51bWJlcil7XG4gICAgaWYoYWN0aXZlTlBDICE9IDAgJiYgbnBjRGF0YUNvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkpe1xuICAgICAgICBjb25maXJtVGV4dChhY3RpdmVOUEMgYXMgRW50aXR5LCBidXR0b24pXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VEaWFsb2cobnBjOkVudGl0eSl7XG4gICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYylcbiAgICBkaWFsb2dEYXRhLnZpc2libGUgPSBmYWxzZVxuICAgIGRpYWxvZ0RhdGEudHlwaW5nID0gZmFsc2VcbiAgICBkaWFsb2dEYXRhLnZpc2libGVUZXh0ID0gXCJcIlxuICAgIGRpYWxvZ0RhdGEudmlzaWJsZUNoYXJzID0gMFxuICAgIGRpYWxvZ0RhdGEuZnVsbFRleHQgPSBcIlwiXG4gICAgZGlhbG9nRGF0YS50aW1lciA9IDBcbiAgICBkaWFsb2dEYXRhLmluZGV4ID0gMFxuICAgIGRpYWxvZ0RhdGEuc2NyaXB0Lmxlbmd0aCA9IDBcbiAgICBkaWFsb2dEYXRhLmJ1dHRvbnMgPSAwXG4gICAgZGlhbG9nRGF0YS5tYXJnaW4gPSAwXG4gICAgZGlhbG9nRGF0YS5kaXNwbGF5UG9ydHJhaXQgPSBmYWxzZVxuICAgIGNvbnNvbGUubG9nKCdkaWFsb2cgZGF0YSBpcyBub3cgJywgZGlhbG9nRGF0YSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhbGsobnBjOkVudGl0eSwgZGlhbG9nOkRpYWxvZ1tdLCBzdGFydEluZGV4PzpudW1iZXIgfCBzdHJpbmcsIGR1cmF0aW9uPzpudW1iZXIpe1xuICAgIG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykuaW50cm9kdWNlZCA9IHRydWVcbiAgICBpZihucGNEaWFsb2dDb21wb25lbnQuaGFzKG5wYykpe1xuICAgICAgICBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLnN0YXRlID0gTlBDU3RhdGUuVEFMS0lOR1xuXG4gICAgICAgIGxldCBpbmRleDphbnlcblxuICAgICAgICBpZiAoIXN0YXJ0SW5kZXgpIHtcbiAgICAgICAgICBpbmRleCA9IDBcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygc3RhcnRJbmRleCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICBpbmRleCA9IHN0YXJ0SW5kZXhcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbmRleCA9IGZpbmREaWFsb2dCeU5hbWUoZGlhbG9nLCBzdGFydEluZGV4KVxuICAgICAgICB9XG5cbiAgICAgICAgb3BlbkRpYWxvZyhucGMsZGlhbG9nLCBpbmRleClcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvcGVuRGlhbG9nKG5wYzpFbnRpdHksIGRpYWxvZzpEaWFsb2dbXSwgc3RhcnRJbmRleDpudW1iZXIpe1xuICAgIGNvbnNvbGUubG9nKCdzY3JpcHQgdG8gdGFsayBpcycsIGRpYWxvZylcbiAgICBsZXQgZGlhbG9nRGF0YSA9IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQobnBjKVxuICAgIGRpYWxvZ0RhdGEuc2NyaXB0ID0gZGlhbG9nLnNsaWNlKClcbiAgICBkaWFsb2dEYXRhLmluZGV4ID0gc3RhcnRJbmRleFxuXG4gICAgY29uc29sZS5sb2coJ2RpYWxvZyBkYXRhIGlzIG5vdycsIGRpYWxvZ0RhdGEpXG4gICAgXG4gICAgbGV0IGN1cnJlbnRUZXh0OiBEaWFsb2cgPSBkaWFsb2dbc3RhcnRJbmRleF0gPyBkaWFsb2dbc3RhcnRJbmRleF0gOiB7IHRleHQ6ICcnIH1cblxuICAgIGlmIChjdXJyZW50VGV4dC5hdWRpbykge1xuICAgICAgICBBdWRpb1NvdXJjZS5jcmVhdGVPclJlcGxhY2UoZGlhbG9nRGF0YS5zb3VuZFBsYXllciwge1xuICAgICAgICAgICAgYXVkaW9DbGlwVXJsOiBjdXJyZW50VGV4dC5hdWRpbyxcbiAgICAgICAgICAgIGxvb3A6IGZhbHNlLFxuICAgICAgICAgICAgcGxheWluZzogZmFsc2VcbiAgICAgICAgfSlcbiAgICAgICAgbGV0IGF1ZGlvID0gQXVkaW9Tb3VyY2UuZ2V0TXV0YWJsZShkaWFsb2dEYXRhLnNvdW5kUGxheWVyKVxuICAgICAgICBhdWRpby52b2x1bWUgPSAwLjVcbiAgICAgICAgYXVkaW8ucGxheWluZyA9IHRydWVcbiAgICB9IGVsc2UgaWYgKGRpYWxvZ0RhdGEuc291bmQpIHtcbiAgICAgICAgQXVkaW9Tb3VyY2UuY3JlYXRlT3JSZXBsYWNlKGRpYWxvZ0RhdGEuc291bmRQbGF5ZXIsIHtcbiAgICAgICAgICAgIGF1ZGlvQ2xpcFVybDogZGlhbG9nRGF0YS5zb3VuZCxcbiAgICAgICAgICAgIGxvb3A6IGZhbHNlLFxuICAgICAgICAgICAgcGxheWluZzogZmFsc2VcbiAgICAgICAgfSlcbiAgICAgICAgbGV0IGF1ZGlvID0gQXVkaW9Tb3VyY2UuZ2V0TXV0YWJsZShkaWFsb2dEYXRhLnNvdW5kUGxheWVyKVxuICAgICAgICBhdWRpby52b2x1bWUgPSAwLjVcbiAgICAgICAgYXVkaW8ucGxheWluZyA9IHRydWVcbiAgICB9XG5cbiAgICAvL1RPRE9cbiAgICAvL3NldCBwb3J0cmFpdFxuICAgIC8vc2V0IGltYWdlIG9uIHRoZSByaWdodFxuICAgIC8vc2V0IHRleHRcbiAgICAvL2dsb2JhbCBidXR0b24gYWN0aW9uc1xuXG4gICAgYmVnaW5UeXBpbmcobnBjKVxufSBcblxuZXhwb3J0IGZ1bmN0aW9uIGFkZExpbmVCcmVhayh0ZXh0OnN0cmluZywgYnViYmxlPzpib29sZWFuKXtcbiAgcmV0dXJuIGxpbmVCcmVhayh0ZXh0LCBidWJibGU/IGdldEJ1YmJsZVRleHRMZW5ndGgodGV4dCkhIDogNDUpXG59XG5cbmZ1bmN0aW9uIGJlZ2luVHlwaW5nKG5wYzpFbnRpdHkpe1xuICAgIGxldCBkaWFsb2dEYXRhID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpXG4gICAgZGlhbG9nRGF0YS5mdWxsVGV4dCA9IGFkZExpbmVCcmVhayhkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS50ZXh0KSAvL2RpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLnRleHRcbiAgICBkaWFsb2dEYXRhLnZpc2libGUgPSB0cnVlXG4gICAgZGlhbG9nRGF0YS50eXBpbmcgPSB0cnVlXG4gICAgZGlhbG9nRGF0YS52aXNpYmxlVGV4dCA9IFwiXCJcbiAgICBkaWFsb2dEYXRhLnZpc2libGVDaGFycyA9IDBcbiAgICBkaWFsb2dEYXRhLnRpbWVyID0gMFxuICAgIGRpYWxvZ0RhdGEuaXNRdWVzdGlvbiA9IGZhbHNlXG4gICAgZGlhbG9nRGF0YS5idXR0b25zID0gMFxuXG4gICAgbGV0IGN1cnJlbnRUZXh0OiBEaWFsb2cgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XSA/IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdIDogeyB0ZXh0OiAnJyB9XG4gICAgaWYoY3VycmVudFRleHQucG9ydHJhaXQpe1xuICAgICAgZGlhbG9nRGF0YS5kZWZhdWx0UG9ydHJhaXRUZXh0dXJlID0gY3VycmVudFRleHQucG9ydHJhaXQucGF0aFxuXG4gICAgICBkaWFsb2dEYXRhLnBvcnRyYWl0WCA9IGN1cnJlbnRUZXh0LnBvcnRyYWl0Lm9mZnNldFhcbiAgICAgID8gY3VycmVudFRleHQucG9ydHJhaXQub2Zmc2V0WCAqIFVJc2NhbGVNdWx0aXBsaWVyICsgcG9ydHJhaXRYUG9zXG4gICAgICA6IHBvcnRyYWl0WFBvc1xuXG4gICAgICBkaWFsb2dEYXRhLnBvcnRyYWl0WSA9IGN1cnJlbnRUZXh0LnBvcnRyYWl0Lm9mZnNldFlcbiAgICAgID8gY3VycmVudFRleHQucG9ydHJhaXQub2Zmc2V0WSAqIFVJc2NhbGVNdWx0aXBsaWVyICsgcG9ydHJhaXRZUG9zXG4gICAgICA6IHBvcnRyYWl0WVBvc1xuXG4gICAgICBkaWFsb2dEYXRhLnBvcnRyYWl0V2lkdGggPSBjdXJyZW50VGV4dC5wb3J0cmFpdC53aWR0aCA/IGN1cnJlbnRUZXh0LnBvcnRyYWl0LndpZHRoICogVUlzY2FsZU11bHRpcGxpZXIgOiBwb3J0cmFpdFNjYWxlXG5cbiAgICAgIGRpYWxvZ0RhdGEucG9ydHJhaXRIZWlnaHQgPSBjdXJyZW50VGV4dC5wb3J0cmFpdC5oZWlnaHQgPyBjdXJyZW50VGV4dC5wb3J0cmFpdC5oZWlnaHQgKiBVSXNjYWxlTXVsdGlwbGllciA6IHBvcnRyYWl0U2NhbGVcbiAgICAgIGRpYWxvZ0RhdGEuZGlzcGxheVBvcnRyYWl0ID0gdHJ1ZVxuICAgIH1lbHNlIGlmKGRpYWxvZ0RhdGEuZGVmYXVsdFBvcnRyYWl0KXtcbiAgICAgIGRpYWxvZ0RhdGEuZGlzcGxheVBvcnRyYWl0ID0gdHJ1ZVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgZGlhbG9nRGF0YS5kaXNwbGF5UG9ydHJhaXQgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmKGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmlzUXVlc3Rpb24pe1xuICAgICAgICBkaWFsb2dEYXRhLmJ1dHRvbnMgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5idXR0b25zLmxlbmd0aFxuICAgICAgICBpZihkaWFsb2dEYXRhLmJ1dHRvbnMgPj0gMyl7XG4gICAgICAgICAgICBkaWFsb2dEYXRhLm1hcmdpbiA9IC0zMDBcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmKGRpYWxvZ0RhdGEuYnV0dG9ucyA+PTEpe1xuICAgICAgICAgICAgZGlhbG9nRGF0YS5tYXJnaW4gPSAtMzAwXG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZyhkaWFsb2dEYXRhKVxuICAgICAgICB1dGlscy50aW1lcnMuc2V0VGltZW91dChcbiAgICAgICAgICAgIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzZXR0aW5nIHF1ZXN0aW9uIHRvIHRydWUnKVxuICAgICAgICAgICAgICAgIGRpYWxvZ0RhdGEuaXNRdWVzdGlvbiA9IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICA3MDBcbiAgICAgICAgICApXG4gICAgfVxuXG4gICAgZGlhbG9nRGF0YS5vcGVuVGltZSA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSlcbiAgICBpZihkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5mb250U2l6ZSl7XG4gICAgICAgIGRpYWxvZ0RhdGEuZm9udFNpemUgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5mb250U2l6ZVxuICAgIH1cbiAgICBcbiAgICBpZihkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5oYXNPd25Qcm9wZXJ0eShcInR5cGVTcGVlZFwiKSl7XG4gICAgICAgIGRpYWxvZ0RhdGEuc3BlZWQgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS50eXBlU3BlZWRcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgICAgZGlhbG9nRGF0YS5zcGVlZCA9IDMwXG4gICAgfVxuXG4gICAgaWYoZGlhbG9nRGF0YS5zcGVlZCA8PSAwKXtcbiAgICAgICAgcnVzaFRleHQobnBjKVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgICBpZighSXNUeXBpbmdEaWFsb2cuaGFzKG5wYykpe1xuICAgICAgICAgICAgSXNUeXBpbmdEaWFsb2cuY3JlYXRlKG5wYylcbiAgICAgICAgfVxuICAgIFxuICAgICAgICAvLyBpZighbnBjRGlhbG9nVHlwaW5nU3lzdGVtcy5oYXMobnBjKSl7XG4gICAgICAgIC8vICAgICBucGNEaWFsb2dUeXBpbmdTeXN0ZW1zLnNldChucGMsZW5naW5lLmFkZFN5c3RlbShoYW5kbGVEaWFsb2dUeXBpbmcpKVxuICAgICAgICAvLyB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkTGluZUJyZWFrcyhkaWFsb2c6RGlhbG9nW10sIGJ1YmJsZT86Ym9vbGVhbil7XG4gICAgbGV0IGNsZWFuZWQ6RGlhbG9nW10gPSBkaWFsb2cuc2xpY2UoKVxuICAgIGNsZWFuZWQuZm9yRWFjaCgoZCk9PntcbiAgICAgIGQudGV4dCA9IGxpbmVCcmVhayhkLnRleHQsIGJ1YmJsZT8gZ2V0QnViYmxlVGV4dExlbmd0aChkLnRleHQpISA6IDUwKVxuICAgIH0pXG4gICAgcmV0dXJuIGNsZWFuZWRcbn1cblxuZnVuY3Rpb24gbGluZUJyZWFrKHRleHQ6IHN0cmluZywgbWF4TGluZUxlbmd0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCB3b3JkcyA9IHRleHQuc3BsaXQoJyAnKTtcbiAgICBsZXQgY3VycmVudExpbmUgPSAnJztcbiAgICBjb25zdCBsaW5lcyA9IFtdO1xuICBcbiAgICBmb3IgKGNvbnN0IHdvcmQgb2Ygd29yZHMpIHtcbiAgICAgIGlmIChjdXJyZW50TGluZS5sZW5ndGggKyB3b3JkLmxlbmd0aCArIDEgPD0gbWF4TGluZUxlbmd0aCkge1xuICAgICAgICBjdXJyZW50TGluZSArPSBgJHt3b3JkfSBgO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGluZXMucHVzaChjdXJyZW50TGluZS50cmltKCkpO1xuICAgICAgICBjdXJyZW50TGluZSA9IGAke3dvcmR9IGA7XG4gICAgICB9XG4gICAgfVxuICAgIGxpbmVzLnB1c2goY3VycmVudExpbmUudHJpbSgpKTtcbiAgICByZXR1cm4gbGluZXMuam9pbignXFxuJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVEaWFsb2dDbGljaygpe1xuICAgIGxldCBucGMgPSBhY3RpdmVOUEMgYXMgRW50aXR5XG4gICAgaWYobnBjRGlhbG9nQ29tcG9uZW50LmhhcyhucGMpKXtcbiAgICAgICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYylcbiAgICAgICAgaWYoIWRpYWxvZ0RhdGEudmlzaWJsZSB8fCAoTWF0aC5mbG9vcihEYXRlLm5vdygpKSAtIGRpYWxvZ0RhdGEub3BlblRpbWUgIDwgMTAwKSkgcmV0dXJuXG4gICAgICAgIFxuICAgICAgICBpZihkaWFsb2dEYXRhLnR5cGluZyl7XG4gICAgICAgICAgICBydXNoVGV4dChucGMpXG4gICAgICAgIH1cbiAgICAgICAgZWxzZXtcbiAgICAgICAgICAgIGNvbmZpcm1UZXh0KG5wYywgQ29uZmlybU1vZGUuTmV4dClcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcnVzaFRleHQobnBjOkVudGl0eSl7XG4gICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYylcbiAgICBkaWFsb2dEYXRhLnR5cGluZyA9IGZhbHNlXG4gICAgZGlhbG9nRGF0YS50aW1lciA9IDBcbiAgICBkaWFsb2dEYXRhLnZpc2libGVDaGFycyA9IGRpYWxvZ0RhdGEuZnVsbFRleHQubGVuZ3RoXG4gICAgZGlhbG9nRGF0YS52aXNpYmxlVGV4dCA9IGRpYWxvZ0RhdGEuZnVsbFRleHRcbiAgICAvL2VuZ2luZS5yZW1vdmVTeXN0ZW0obnBjRGlhbG9nVHlwaW5nU3lzdGVtcy5nZXQobnBjKSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpcm1UZXh0KG5wYzpFbnRpdHksIG1vZGU6IENvbmZpcm1Nb2RlKTogdm9pZCB7XG4gICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYylcbiAgICBkaWFsb2dEYXRhLm9wZW5UaW1lID0gTWF0aC5mbG9vcihEYXRlLm5vdygpKVxuXG4gICAgbGV0IGN1cnJlbnRUZXh0ID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF1cbiAgICAvLyBVcGRhdGUgYWN0aXZlIHRleHRcbiAgICBpZiAobW9kZSA9PSBDb25maXJtTW9kZS5OZXh0KSB7XG4gICAgICAgIGlmICghY3VycmVudFRleHQuaXNRdWVzdGlvbikge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRUZXh0LnRyaWdnZXJlZEJ5TmV4dCkge1xuICAgICAgICAgICAgY3VycmVudFRleHQudHJpZ2dlcmVkQnlOZXh0KClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjdXJyZW50VGV4dC5pc0VuZE9mRGlhbG9nKSB7XG4gICAgICAgICAgICBjbG9zZURpYWxvZyhucGMpXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRpYWxvZ0RhdGEuaW5kZXgrK1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1vZGUgPT0gQ29uZmlybU1vZGUuQ29uZmlybSkge1xuICAgICAgICBpZiAoY3VycmVudFRleHQuYnV0dG9ucyAmJiBjdXJyZW50VGV4dC5idXR0b25zLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBjdXJyZW50VGV4dC5idXR0b25zWzBdLmdvVG9EaWFsb2cgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBkaWFsb2dEYXRhLmluZGV4ID0gY3VycmVudFRleHQuYnV0dG9uc1swXS5nb1RvRGlhbG9nXG4gICAgICAgICAgfSBcblxuICAgICAgICAgIC8vVE9ET1xuICAgICAgICAgIC8vYWxsb3cgZGlhbG9ncyB0byBiZSBpbmRleCBieSBuYW1lXG4gICAgICAgIC8vICAgZWxzZSB7XG4gICAgICAgIC8vICAgICB0aGlzLmFjdGl2ZVRleHRJZCA9IGZpbmREaWFsb2dCeU5hbWUodGhpcy5OUENTY3JpcHQsIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMF0uZ29Ub0RpYWxvZylcbiAgICAgICAgLy8gICB9XG4gICAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmJ1dHRvbnNbMF0udHJpZ2dlcmVkQWN0aW9ucykge1xuICAgICAgICAgICAgY3VycmVudFRleHQuYnV0dG9uc1swXS50cmlnZ2VyZWRBY3Rpb25zKClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kZSA9PSBDb25maXJtTW9kZS5DYW5jZWwpIHtcbiAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmJ1dHRvbnMgJiYgY3VycmVudFRleHQuYnV0dG9ucy5sZW5ndGggPj0gMSkge1xuICAgICAgICAgIGlmICh0eXBlb2YgY3VycmVudFRleHQuYnV0dG9uc1sxXS5nb1RvRGlhbG9nID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgZGlhbG9nRGF0YS5pbmRleCA9IGN1cnJlbnRUZXh0LmJ1dHRvbnNbMV0uZ29Ub0RpYWxvZ1xuICAgICAgICAgIH0gXG5cbiAgICAgICAgICAvL1RPRE9cbiAgICAgICAgICAvL2FsbG93IGRpYWxvZ3MgdG8gYmUgaW5kZXggYnkgbmFtZVxuICAgICAgICAvLyAgIGVsc2Uge1xuICAgICAgICAvLyAgICAgdGhpcy5hY3RpdmVUZXh0SWQgPSBmaW5kRGlhbG9nQnlOYW1lKHRoaXMuTlBDU2NyaXB0LCBjdXJyZW50VGV4dC5idXR0b25zWzBdLmdvVG9EaWFsb2cpXG4gICAgICAgIC8vICAgfVxuICAgICAgICAgIGlmIChjdXJyZW50VGV4dC5idXR0b25zWzFdLnRyaWdnZXJlZEFjdGlvbnMpIHtcbiAgICAgICAgICAgIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMV0udHJpZ2dlcmVkQWN0aW9ucygpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1vZGUgPT0gQ29uZmlybU1vZGUuQnV0dG9uMykge1xuICAgICAgICBpZiAoY3VycmVudFRleHQuYnV0dG9ucyAmJiBjdXJyZW50VGV4dC5idXR0b25zLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBjdXJyZW50VGV4dC5idXR0b25zWzJdLmdvVG9EaWFsb2cgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBkaWFsb2dEYXRhLmluZGV4ID0gY3VycmVudFRleHQuYnV0dG9uc1syXS5nb1RvRGlhbG9nXG4gICAgICAgICAgfSBcblxuICAgICAgICAgIC8vVE9ET1xuICAgICAgICAgIC8vYWxsb3cgZGlhbG9ncyB0byBiZSBpbmRleCBieSBuYW1lXG4gICAgICAgIC8vICAgZWxzZSB7XG4gICAgICAgIC8vICAgICB0aGlzLmFjdGl2ZVRleHRJZCA9IGZpbmREaWFsb2dCeU5hbWUodGhpcy5OUENTY3JpcHQsIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMF0uZ29Ub0RpYWxvZylcbiAgICAgICAgLy8gICB9XG4gICAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmJ1dHRvbnNbMl0udHJpZ2dlcmVkQWN0aW9ucykge1xuICAgICAgICAgICAgY3VycmVudFRleHQuYnV0dG9uc1syXS50cmlnZ2VyZWRBY3Rpb25zKClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kZSA9PSBDb25maXJtTW9kZS5CdXR0b240KSB7XG4gICAgICAgIGlmIChjdXJyZW50VGV4dC5idXR0b25zICYmIGN1cnJlbnRUZXh0LmJ1dHRvbnMubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGN1cnJlbnRUZXh0LmJ1dHRvbnNbM10uZ29Ub0RpYWxvZyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGRpYWxvZ0RhdGEuaW5kZXggPSBjdXJyZW50VGV4dC5idXR0b25zWzNdLmdvVG9EaWFsb2dcbiAgICAgICAgICB9IFxuXG4gICAgICAgICAgLy9UT0RPXG4gICAgICAgICAgLy9hbGxvdyBkaWFsb2dzIHRvIGJlIGluZGV4IGJ5IG5hbWVcbiAgICAgICAgLy8gICBlbHNlIHtcbiAgICAgICAgLy8gICAgIHRoaXMuYWN0aXZlVGV4dElkID0gZmluZERpYWxvZ0J5TmFtZSh0aGlzLk5QQ1NjcmlwdCwgY3VycmVudFRleHQuYnV0dG9uc1swXS5nb1RvRGlhbG9nKVxuICAgICAgICAvLyAgIH1cbiAgICAgICAgICBpZiAoY3VycmVudFRleHQuYnV0dG9uc1szXS50cmlnZ2VyZWRBY3Rpb25zKSB7XG4gICAgICAgICAgICBjdXJyZW50VGV4dC5idXR0b25zWzNdLnRyaWdnZXJlZEFjdGlvbnMoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgYmVnaW5UeXBpbmcobnBjKVxufVxuXG5leHBvcnQgdHlwZSBJbWFnZUF0bGFzRGF0YSA9IHtcbiAgICBhdGxhc1dpZHRoOiBudW1iZXI7XG4gICAgYXRsYXNIZWlnaHQ6IG51bWJlcjtcbiAgICBzb3VyY2VXaWR0aDogbnVtYmVyO1xuICAgIHNvdXJjZUhlaWdodDogbnVtYmVyO1xuICAgIHNvdXJjZUxlZnQ6IG51bWJlcjtcbiAgICBzb3VyY2VUb3A6IG51bWJlcjtcbiAgfVxuICBcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEltYWdlQXRsYXNNYXBwaW5nKGRhdGE/OiBJbWFnZUF0bGFzRGF0YSk6IG51bWJlcltdIHtcbiAgICBpZiAoIWRhdGEpIHJldHVybiBbXVxuICBcbiAgICBjb25zdCB7XG4gICAgICBhdGxhc1dpZHRoLFxuICAgICAgYXRsYXNIZWlnaHQsXG4gICAgICBzb3VyY2VXaWR0aCxcbiAgICAgIHNvdXJjZUhlaWdodCxcbiAgICAgIHNvdXJjZVRvcCxcbiAgICAgIHNvdXJjZUxlZnQsXG4gICAgfSA9IGRhdGFcbiAgXG4gICAgcmV0dXJuIFtcbiAgICAgIHNvdXJjZUxlZnQgLyBhdGxhc1dpZHRoLCAoYXRsYXNIZWlnaHQgLSBzb3VyY2VUb3AgLSBzb3VyY2VIZWlnaHQpIC8gYXRsYXNIZWlnaHQsXG4gICAgICBzb3VyY2VMZWZ0IC8gYXRsYXNXaWR0aCwgKGF0bGFzSGVpZ2h0IC0gc291cmNlVG9wKSAvIGF0bGFzSGVpZ2h0LFxuICAgICAgKHNvdXJjZUxlZnQgKyBzb3VyY2VXaWR0aCkgLyBhdGxhc1dpZHRoLCAoYXRsYXNIZWlnaHQgLSBzb3VyY2VUb3ApIC8gYXRsYXNIZWlnaHQsXG4gICAgICAoc291cmNlTGVmdCArIHNvdXJjZVdpZHRoKSAvIGF0bGFzV2lkdGgsIChhdGxhc0hlaWdodCAtIHNvdXJjZVRvcCAtIHNvdXJjZUhlaWdodCkgLyBhdGxhc0hlaWdodCxcbiAgICBdXG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gcmVhbFdpZHRoKHdpZHRoPzpudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB3aWR0aCA/IHdpZHRoIDogc2VjdGlvbi5zb3VyY2VXaWR0aFxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIHJlYWxIZWlnaHQoaGVpZ2h0PzpudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBoZWlnaHQgPyBoZWlnaHQgOiBzZWN0aW9uLnNvdXJjZUhlaWdodFxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGZpbmREaWFsb2dCeU5hbWUoZGlhbG9nczogRGlhbG9nW10sIG5hbWU6IHN0cmluZykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlhbG9ncy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGRpYWxvZ3NbaV0ubmFtZSAmJiBkaWFsb2dzW2ldLm5hbWUgPT0gbmFtZSkge1xuICAgICAgICByZXR1cm4gaVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gMFxuICB9XG4gICJdfQ==
|
|
378
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2RpYWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssS0FBSyxNQUFNLGdCQUFnQixDQUFBO0FBRXZDLE9BQU8sRUFBRSxXQUFXLEVBQVUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5QyxPQUFPLEVBQXFCLFFBQVEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHL0MsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQXFCLElBQUksR0FBRyxFQUFFLENBQUE7QUFDN0QsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQXFCLElBQUksR0FBRyxFQUFFLENBQUE7QUFFakUsTUFBTSxDQUFOLElBQVksV0FNVDtBQU5ILFdBQVksV0FBVztJQUNuQixtREFBVyxDQUFBO0lBQ1gsaURBQVUsQ0FBQTtJQUNWLDZDQUFRLENBQUE7SUFDUixtREFBVyxDQUFBO0lBQ1gsbURBQVcsQ0FBQTtBQUNiLENBQUMsRUFOUyxXQUFXLEtBQVgsV0FBVyxRQU1wQjtBQUVILE1BQU0sQ0FBQyxJQUFJLGlCQUFpQixHQUFHLElBQUksQ0FBQTtBQUVuQyxJQUFJLFlBQVksR0FBRyxDQUFDLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQTtBQUMxQyxJQUFJLFlBQVksR0FBRyxFQUFFLEdBQUcsaUJBQWlCLENBQUE7QUFFekMsSUFBSSxTQUFTLEdBQUcsR0FBRyxHQUFHLGlCQUFpQixDQUFBO0FBQ3ZDLElBQUksU0FBUyxHQUFHLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQTtBQUV0QyxJQUFJLGFBQWEsR0FBRyxHQUFHLEdBQUcsaUJBQWlCLENBQUE7QUFDM0MsSUFBSSxVQUFVLEdBQUcsR0FBRyxHQUFHLGlCQUFpQixDQUFBO0FBRXhDLElBQUksUUFBUSxHQUFHLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQTtBQUNyQyxJQUFJLFFBQVEsR0FBRyxFQUFFLEdBQUcsaUJBQWlCLENBQUE7QUFFckMsSUFBSSxXQUFXLEdBQUcsR0FBRyxHQUFFLGlCQUFpQixDQUFBO0FBQ3hDLElBQUksWUFBWSxHQUFHLEVBQUUsR0FBRSxpQkFBaUIsQ0FBQTtBQUd4QyxJQUFJLGNBQWMsR0FBRyxFQUFFLEdBQUcsaUJBQWlCLENBQUE7QUFFM0MsSUFBSSxXQUFXLEdBQUcsR0FBRyxHQUFHLGlCQUFpQixDQUFBO0FBQ3pDLElBQUksV0FBVyxHQUFHLENBQUMsRUFBRSxHQUFHLGlCQUFpQixDQUFBO0FBQ3pDLElBQUksV0FBVyxHQUFHLENBQUMsRUFBRSxHQUFHLGlCQUFpQixDQUFBO0FBQ3pDLElBQUksV0FBVyxHQUFHLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQTtBQUV6QyxJQUFJLFdBQVcsR0FBRyxDQUFDLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQTtBQUN6QyxJQUFJLFdBQVcsR0FBRyxDQUFDLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQTtBQUN6QyxJQUFJLFlBQVksR0FBRyxDQUFDLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQTtBQUMxQyxJQUFJLFlBQVksR0FBRyxDQUFDLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQTtBQUMxQyxJQUFJLFdBQVcsR0FBRyxDQUFDLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQTtBQUN6QyxJQUFJLFdBQVcsR0FBRyxDQUFDLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQTtBQUV6QyxJQUFJLGNBQWMsR0FBRyxDQUFDLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQTtBQUM3QyxJQUFJLGNBQWMsR0FBRyxDQUFDLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQTtBQUU3QyxJQUFJLGVBQWUsR0FBRyxFQUFFLEdB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LFVBQVUsQ0FBQyxNQUFjO0lBQ3ZDLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUE7QUFDL0MsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxPQUFpQixFQUFFLElBQVk7SUFDOUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDdkMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxFQUFFO1lBQzlDLE9BQU8sQ0FBQyxDQUFBO1NBQ1Q7S0FDRjtJQUNELE9BQU8sQ0FBQyxDQUFBO0FBQ1YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWxzIGZyb20gJ0BkY2wtc2RrL3V0aWxzJ1xuXG5pbXBvcnQgeyBBdWRpb1NvdXJjZSwgRW50aXR5LCBlbmdpbmUgfSBmcm9tIFwiQGRjbC9zZGsvZWNzXCI7XG5pbXBvcnQgeyBhY3RpdmVOUEMsIG5wY0RhdGFDb21wb25lbnQgfSBmcm9tIFwiLi9ucGNcIjtcbmltcG9ydCB7IElzVHlwaW5nRGlhbG9nIH0gZnJvbSBcIi4vY29tcG9uZW50c1wiO1xuaW1wb3J0IHsgaGFuZGxlRGlhbG9nVHlwaW5nIH0gZnJvbSBcIi4vc3lzdGVtc1wiO1xuaW1wb3J0IHsgRGlhbG9nLCBJbWFnZURhdGEsIE5QQ1N0YXRlIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IGxpZ2h0VGhlbWUsIHNlY3Rpb24gfSBmcm9tICcuL3VpJztcbmltcG9ydCB7IGdldEJ1YmJsZVRleHRMZW5ndGggfSBmcm9tICcuL2J1YmJsZSc7XG5cblxuZXhwb3J0IGNvbnN0IG5wY0RpYWxvZ0NvbXBvbmVudDogTWFwPEVudGl0eSwgYW55PiA9IG5ldyBNYXAoKVxuZXhwb3J0IGNvbnN0IG5wY0RpYWxvZ1R5cGluZ1N5c3RlbXM6IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcblxuZXhwb3J0IGVudW0gQ29uZmlybU1vZGUge1xuICAgIENvbmZpcm0gPSAwLFxuICAgIENhbmNlbCA9IDEsXG4gICAgTmV4dCA9IDIsXG4gICAgQnV0dG9uMyA9IDMsXG4gICAgQnV0dG9uNCA9IDRcbiAgfVxuXG5leHBvcnQgbGV0IFVJc2NhbGVNdWx0aXBsaWVyID0gMC43NVxuXG5sZXQgcG9ydHJhaXRYUG9zID0gLTUwICogVUlzY2FsZU11bHRpcGxpZXIgXG5sZXQgcG9ydHJhaXRZUG9zID0gMjAgKiBVSXNjYWxlTXVsdGlwbGllclxuXG5sZXQgaW1hZ2VYUG9zID0gMzUwICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBpbWFnZVlQb3MgPSA1MCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmxldCBwb3J0cmFpdFNjYWxlID0gMjU2ICogVUlzY2FsZU11bHRpcGxpZXIgXG5sZXQgaW1hZ2VTY2FsZSA9IDI1NiAqIFVJc2NhbGVNdWx0aXBsaWVyIFxuXG5sZXQgdGV4dFNpemUgPSAyNCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgdGV4dFlQb3MgPSAxMCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmxldCBidXR0b25XaWR0aCA9IDE3NCogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBidXR0b25IZWlnaHQgPSA0NiogVUlzY2FsZU11bHRpcGxpZXJcblxuXG5sZXQgYnV0dG9uVGV4dFNpemUgPSAyMCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmxldCBidXR0b24xWFBvcyA9IDE1MCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uMlhQb3MgPSAtODAgKiBVSXNjYWxlTXVsdGlwbGllclxubGV0IGJ1dHRvbjNYUG9zID0gLTgwICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBidXR0b240WFBvcyA9IDE1MCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmxldCBidXR0b24xWVBvcyA9IC02NSAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uMllQb3MgPSAtNjUgKiBVSXNjYWxlTXVsdGlwbGllclxubGV0IGJ1dHRvbjFZUG9zNCA9IC0yMCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uMllQb3M0ID0gLTIwICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBidXR0b24zWVBvcyA9IC04MCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uNFlQb3MgPSAtODAgKiBVSXNjYWxlTXVsdGlwbGllclxuXG5sZXQgc2tpcEJ1dHRvblhQb3MgPSAtMzAwICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBza2lwQnV0dG9uWVBvcyA9IC0xMDAgKiBVSXNjYWxlTXVsdGlwbGllclxuXG5sZXQgYnV0dG9uSWNvbldpZHRoID0gMjYgKiBVSXNjYWxlTXVsdGlwbGllclxubGV0IGJ1dHRvbkljb25IZWlnaHQgPSAyNiAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmV4cG9ydCBmdW5jdGlvbiBhZGREaWFsb2cobnBjOkVudGl0eSwgc291bmQ/OnN0cmluZywgZGVmYXVsdFBvcnRyYWl0PzpJbWFnZURhdGEpe1xuICAgIGNvbnNvbGUubG9nKCdhZGRpbmcgZGlhbG9nIGZvciBucGMnLCBucGMpXG4gICAgbnBjRGlhbG9nQ29tcG9uZW50LnNldChucGMsIHtcbiAgICAgICAgdHlwaW5nOnRydWUsXG4gICAgICAgIHZpc2libGU6ZmFsc2UsXG4gICAgICAgIHZpc2libGVUZXh0OlwiXCIsXG4gICAgICAgIHZpc2libGVDaGFyczowLFxuICAgICAgICBmdWxsVGV4dDpcIlwiLFxuICAgICAgICB0aW1lcjowLFxuICAgICAgICBzcGVlZDozMCxcbiAgICAgICAgb3JpZ2luYWxTY3JpcHQ6W10sXG4gICAgICAgIHNjcmlwdDpbXSxcbiAgICAgICAgaW5kZXg6MCxcbiAgICAgICAgc291bmQ6IHNvdW5kID8gc291bmQgOiB1bmRlZmluZWQsXG4gICAgICAgIHNvdW5kUGxheWVyOiBzb3VuZCA/IGVuZ2luZS5hZGRFbnRpdHkoKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZm9udFNpemU6MjIsXG4gICAgICAgIGlzUXVlc3Rpb246ZmFsc2UsXG4gICAgICAgIGJ1dHRvbnM6MCxcbiAgICAgICAgZGVmYXVsdFBvcnRyYWl0OiBkZWZhdWx0UG9ydHJhaXQgPyBkZWZhdWx0UG9ydHJhaXQgOiBudWxsLFxuICAgICAgICBkZWZhdWx0UG9ydHJhaXRUZXh0dXJlOiBkZWZhdWx0UG9ydHJhaXQgPyBkZWZhdWx0UG9ydHJhaXQucGF0aCA6IGxpZ2h0VGhlbWUsXG4gICAgICAgIHBvcnRyYWl0V2lkdGg6IGRlZmF1bHRQb3J0cmFpdCAmJiBkZWZhdWx0UG9ydHJhaXQud2lkdGggPyBkZWZhdWx0UG9ydHJhaXQud2lkdGggKiBVSXNjYWxlTXVsdGlwbGllciA6IHBvcnRyYWl0U2NhbGUsXG4gICAgICAgIHBvcnRyYWl0SGVpZ2h0OiBkZWZhdWx0UG9ydHJhaXQgJiYgZGVmYXVsdFBvcnRyYWl0LmhlaWdodCA/IGRlZmF1bHRQb3J0cmFpdC5oZWlnaHQgKiBVSXNjYWxlTXVsdGlwbGllciA6IHBvcnRyYWl0U2NhbGUsXG4gICAgICAgIHBvcnRyYWl0WDogZGVmYXVsdFBvcnRyYWl0ICYmIGRlZmF1bHRQb3J0cmFpdC5vZmZzZXRYID8gZGVmYXVsdFBvcnRyYWl0Lm9mZnNldFggKiBVSXNjYWxlTXVsdGlwbGllciArIHBvcnRyYWl0WFBvcyA6IHBvcnRyYWl0WFBvcyxcbiAgICAgICAgcG9ydHJhaXRZOiAgZGVmYXVsdFBvcnRyYWl0ICYmIGRlZmF1bHRQb3J0cmFpdC5vZmZzZXRZID8gZGVmYXVsdFBvcnRyYWl0Lm9mZnNldFkgKiBVSXNjYWxlTXVsdGlwbGllciArIHBvcnRyYWl0WVBvcyA6IHBvcnRyYWl0WVBvcyxcbiAgICAgICAgZGlzcGxheVBvcnRyYWl0OmZhbHNlXG4gICAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3BsYXlQb3J0cmFpdCgpe1xuICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5kaXNwbGF5UG9ydHJhaXRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc2l0aW9uUG9ydGFpdFgoKXtcbiAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gXCJcIiA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkucG9ydHJhaXRYXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3NpdGlvblBvcnRhaXRZKCl7XG4gIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLnBvcnRyYWl0WVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9ydHJhaXRXaWR0aCgpe1xuICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5wb3J0cmFpdFdpZHRoXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3J0cmFpdEhlaWdodCgpe1xuICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5wb3J0cmFpdEhlaWdodFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9ydHJhaXQoKXtcbiAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gXCJcIiA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuZGVmYXVsdFBvcnRyYWl0VGV4dHVyZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGV4dCgpe1xuICAgIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLnZpc2libGVUZXh0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRCdXR0b25UZXh0KGJ1dHRvbjpudW1iZXIpe1xuICAgIGxldCB0ZXh0ID0gXCJcIlxuXG4gICAgaWYoYWN0aXZlTlBDICE9IDAgJiYgbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSl7XG4gICAgICAgIGxldCBkaWFsb2dEYXRhID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KVxuICAgICAgICBpZihkaWFsb2dEYXRhLmlzUXVlc3Rpb24gJiYgZGlhbG9nRGF0YS5idXR0b25zID4gYnV0dG9uKXtcbiAgICAgICAgICAgIHRleHQgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5idXR0b25zW2J1dHRvbl0ubGFiZWxcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGV4dFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9udFNpemUoKXtcbiAgICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyAyMiA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuZm9udFNpemVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3BsYXlEaWFsb2coKXtcbiAgICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBmYWxzZSA6ICBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLnZpc2libGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3BsYXlCdXR0b24oYnV0dG9uOm51bWJlcil7XG4gICAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gZmFsc2UgOiAgbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5pc1F1ZXN0aW9uICYmIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuYnV0dG9ucyA+PSBidXR0b25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3BsYXlGaXJzdEJ1dHRvbkNvbnRhaW5lcigpe1xuICAgIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IGZhbHNlIDogIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuaXNRdWVzdGlvbiAmJiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLmJ1dHRvbnMgPj0gMVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheVNlY29uZEJ1dHRvbkNvbnRhaW5lcigpe1xuICAgIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IGZhbHNlIDogIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuaXNRdWVzdGlvbiAmJiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLmJ1dHRvbnMgPj0gM1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGV4dFBvc2l0aW9uKCl7XG4gICAgLy9jb25zb2xlLmxvZyhucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLmJ1dHRvbnMpXG4gICAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8ge3RvcDowfSA6IHt0b3A6bnBjRGF0YUNvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkubWFyZ2lufVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnV0dG9uQ2xpY2soYnV0dG9uOm51bWJlcil7XG4gICAgaWYoYWN0aXZlTlBDICE9IDAgJiYgbnBjRGF0YUNvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkpe1xuICAgICAgICBjb25maXJtVGV4dChhY3RpdmVOUEMgYXMgRW50aXR5LCBidXR0b24pXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VEaWFsb2cobnBjOkVudGl0eSl7XG4gICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYylcbiAgICBkaWFsb2dEYXRhLnZpc2libGUgPSBmYWxzZVxuICAgIGRpYWxvZ0RhdGEudHlwaW5nID0gZmFsc2VcbiAgICBkaWFsb2dEYXRhLnZpc2libGVUZXh0ID0gXCJcIlxuICAgIGRpYWxvZ0RhdGEudmlzaWJsZUNoYXJzID0gMFxuICAgIGRpYWxvZ0RhdGEuZnVsbFRleHQgPSBcIlwiXG4gICAgZGlhbG9nRGF0YS50aW1lciA9IDBcbiAgICBkaWFsb2dEYXRhLmluZGV4ID0gMFxuICAgIGRpYWxvZ0RhdGEuc2NyaXB0Lmxlbmd0aCA9IDBcbiAgICBkaWFsb2dEYXRhLmJ1dHRvbnMgPSAwXG4gICAgZGlhbG9nRGF0YS5tYXJnaW4gPSAwXG4gICAgZGlhbG9nRGF0YS5kaXNwbGF5UG9ydHJhaXQgPSBmYWxzZVxuICAgIGNvbnNvbGUubG9nKCdkaWFsb2cgZGF0YSBpcyBub3cgJywgZGlhbG9nRGF0YSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhbGsobnBjOkVudGl0eSwgZGlhbG9nOkRpYWxvZ1tdLCBzdGFydEluZGV4PzpudW1iZXIgfCBzdHJpbmcsIGR1cmF0aW9uPzpudW1iZXIpe1xuICAgIG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykuaW50cm9kdWNlZCA9IHRydWVcbiAgICBpZihucGNEaWFsb2dDb21wb25lbnQuaGFzKG5wYykpe1xuICAgICAgICBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLnN0YXRlID0gTlBDU3RhdGUuVEFMS0lOR1xuXG4gICAgICAgIGxldCBpbmRleDphbnlcblxuICAgICAgICBpZiAoIXN0YXJ0SW5kZXgpIHtcbiAgICAgICAgICBpbmRleCA9IDBcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygc3RhcnRJbmRleCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICBpbmRleCA9IHN0YXJ0SW5kZXhcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbmRleCA9IGZpbmREaWFsb2dCeU5hbWUoZGlhbG9nLCBzdGFydEluZGV4KVxuICAgICAgICB9XG5cbiAgICAgICAgb3BlbkRpYWxvZyhucGMsZGlhbG9nLCBpbmRleClcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvcGVuRGlhbG9nKG5wYzpFbnRpdHksIGRpYWxvZzpEaWFsb2dbXSwgc3RhcnRJbmRleDpudW1iZXIpe1xuICAgIGNvbnNvbGUubG9nKCdzY3JpcHQgdG8gdGFsayBpcycsIGRpYWxvZylcbiAgICBsZXQgZGlhbG9nRGF0YSA9IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQobnBjKVxuICAgIGRpYWxvZ0RhdGEuc2NyaXB0ID0gZGlhbG9nLnNsaWNlKClcbiAgICBkaWFsb2dEYXRhLmluZGV4ID0gc3RhcnRJbmRleFxuXG4gICAgY29uc29sZS5sb2coJ2RpYWxvZyBkYXRhIGlzIG5vdycsIGRpYWxvZ0RhdGEpXG4gICAgXG4gICAgbGV0IGN1cnJlbnRUZXh0OiBEaWFsb2cgPSBkaWFsb2dbc3RhcnRJbmRleF0gPyBkaWFsb2dbc3RhcnRJbmRleF0gOiB7IHRleHQ6ICcnIH1cblxuICAgIGlmIChjdXJyZW50VGV4dC5hdWRpbykge1xuICAgICAgICBBdWRpb1NvdXJjZS5jcmVhdGVPclJlcGxhY2UoZGlhbG9nRGF0YS5zb3VuZFBsYXllciwge1xuICAgICAgICAgICAgYXVkaW9DbGlwVXJsOiBjdXJyZW50VGV4dC5hdWRpbyxcbiAgICAgICAgICAgIGxvb3A6IGZhbHNlLFxuICAgICAgICAgICAgcGxheWluZzogZmFsc2VcbiAgICAgICAgfSlcbiAgICAgICAgbGV0IGF1ZGlvID0gQXVkaW9Tb3VyY2UuZ2V0TXV0YWJsZShkaWFsb2dEYXRhLnNvdW5kUGxheWVyKVxuICAgICAgICBhdWRpby52b2x1bWUgPSAwLjVcbiAgICAgICAgYXVkaW8ucGxheWluZyA9IHRydWVcbiAgICB9IGVsc2UgaWYgKGRpYWxvZ0RhdGEuc291bmQpIHtcbiAgICAgICAgQXVkaW9Tb3VyY2UuY3JlYXRlT3JSZXBsYWNlKGRpYWxvZ0RhdGEuc291bmRQbGF5ZXIsIHtcbiAgICAgICAgICAgIGF1ZGlvQ2xpcFVybDogZGlhbG9nRGF0YS5zb3VuZCxcbiAgICAgICAgICAgIGxvb3A6IGZhbHNlLFxuICAgICAgICAgICAgcGxheWluZzogZmFsc2VcbiAgICAgICAgfSlcbiAgICAgICAgbGV0IGF1ZGlvID0gQXVkaW9Tb3VyY2UuZ2V0TXV0YWJsZShkaWFsb2dEYXRhLnNvdW5kUGxheWVyKVxuICAgICAgICBhdWRpby52b2x1bWUgPSAwLjVcbiAgICAgICAgYXVkaW8ucGxheWluZyA9IHRydWVcbiAgICB9XG5cbiAgICAvL1RPRE9cbiAgICAvL3NldCBpbWFnZSBvbiB0aGUgcmlnaHRcbiAgICAvL3NldCB0ZXh0XG4gICAgYmVnaW5UeXBpbmcobnBjKVxufSBcblxuZXhwb3J0IGZ1bmN0aW9uIGFkZExpbmVCcmVhayh0ZXh0OnN0cmluZywgYnViYmxlPzpib29sZWFuKXtcbiAgcmV0dXJuIGxpbmVCcmVhayh0ZXh0LCBidWJibGU/IGdldEJ1YmJsZVRleHRMZW5ndGgodGV4dCkhIDogNDUpXG59XG5cbmZ1bmN0aW9uIGJlZ2luVHlwaW5nKG5wYzpFbnRpdHkpe1xuICAgIGxldCBkaWFsb2dEYXRhID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpXG4gICAgZGlhbG9nRGF0YS5mdWxsVGV4dCA9IGFkZExpbmVCcmVhayhkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS50ZXh0KSAvL2RpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLnRleHRcbiAgICBkaWFsb2dEYXRhLnZpc2libGUgPSB0cnVlXG4gICAgZGlhbG9nRGF0YS50eXBpbmcgPSB0cnVlXG4gICAgZGlhbG9nRGF0YS52aXNpYmxlVGV4dCA9IFwiXCJcbiAgICBkaWFsb2dEYXRhLnZpc2libGVDaGFycyA9IDBcbiAgICBkaWFsb2dEYXRhLnRpbWVyID0gMFxuICAgIGRpYWxvZ0RhdGEuaXNRdWVzdGlvbiA9IGZhbHNlXG4gICAgZGlhbG9nRGF0YS5idXR0b25zID0gMFxuXG4gICAgbGV0IGN1cnJlbnRUZXh0OiBEaWFsb2cgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XSA/IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdIDogeyB0ZXh0OiAnJyB9XG4gICAgaWYoY3VycmVudFRleHQucG9ydHJhaXQpe1xuICAgICAgZGlhbG9nRGF0YS5kZWZhdWx0UG9ydHJhaXRUZXh0dXJlID0gY3VycmVudFRleHQucG9ydHJhaXQucGF0aFxuXG4gICAgICBkaWFsb2dEYXRhLnBvcnRyYWl0WCA9IGN1cnJlbnRUZXh0LnBvcnRyYWl0Lm9mZnNldFhcbiAgICAgID8gY3VycmVudFRleHQucG9ydHJhaXQub2Zmc2V0WCAqIFVJc2NhbGVNdWx0aXBsaWVyICsgcG9ydHJhaXRYUG9zXG4gICAgICA6IHBvcnRyYWl0WFBvc1xuXG4gICAgICBkaWFsb2dEYXRhLnBvcnRyYWl0WSA9IGN1cnJlbnRUZXh0LnBvcnRyYWl0Lm9mZnNldFlcbiAgICAgID8gY3VycmVudFRleHQucG9ydHJhaXQub2Zmc2V0WSAqIFVJc2NhbGVNdWx0aXBsaWVyICsgcG9ydHJhaXRZUG9zXG4gICAgICA6IHBvcnRyYWl0WVBvc1xuXG4gICAgICBkaWFsb2dEYXRhLnBvcnRyYWl0V2lkdGggPSBjdXJyZW50VGV4dC5wb3J0cmFpdC53aWR0aCA/IGN1cnJlbnRUZXh0LnBvcnRyYWl0LndpZHRoICogVUlzY2FsZU11bHRpcGxpZXIgOiBwb3J0cmFpdFNjYWxlXG5cbiAgICAgIGRpYWxvZ0RhdGEucG9ydHJhaXRIZWlnaHQgPSBjdXJyZW50VGV4dC5wb3J0cmFpdC5oZWlnaHQgPyBjdXJyZW50VGV4dC5wb3J0cmFpdC5oZWlnaHQgKiBVSXNjYWxlTXVsdGlwbGllciA6IHBvcnRyYWl0U2NhbGVcbiAgICAgIGRpYWxvZ0RhdGEuZGlzcGxheVBvcnRyYWl0ID0gdHJ1ZVxuICAgIH1lbHNlIGlmKGRpYWxvZ0RhdGEuZGVmYXVsdFBvcnRyYWl0KXtcbiAgICAgIGRpYWxvZ0RhdGEuZGlzcGxheVBvcnRyYWl0ID0gdHJ1ZVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgZGlhbG9nRGF0YS5kaXNwbGF5UG9ydHJhaXQgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmKGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmlzUXVlc3Rpb24pe1xuICAgICAgICBkaWFsb2dEYXRhLmJ1dHRvbnMgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5idXR0b25zLmxlbmd0aFxuICAgICAgICBpZihkaWFsb2dEYXRhLmJ1dHRvbnMgPj0gMyl7XG4gICAgICAgICAgICBkaWFsb2dEYXRhLm1hcmdpbiA9IC0zMDBcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmKGRpYWxvZ0RhdGEuYnV0dG9ucyA+PTEpe1xuICAgICAgICAgICAgZGlhbG9nRGF0YS5tYXJnaW4gPSAtMzAwXG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZyhkaWFsb2dEYXRhKVxuICAgICAgICB1dGlscy50aW1lcnMuc2V0VGltZW91dChcbiAgICAgICAgICAgIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzZXR0aW5nIHF1ZXN0aW9uIHRvIHRydWUnKVxuICAgICAgICAgICAgICAgIGRpYWxvZ0RhdGEuaXNRdWVzdGlvbiA9IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICA3MDBcbiAgICAgICAgICApXG4gICAgfVxuXG4gICAgZGlhbG9nRGF0YS5vcGVuVGltZSA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSlcbiAgICBpZihkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5mb250U2l6ZSl7XG4gICAgICAgIGRpYWxvZ0RhdGEuZm9udFNpemUgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5mb250U2l6ZVxuICAgIH1cbiAgICBcbiAgICBpZihkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5oYXNPd25Qcm9wZXJ0eShcInR5cGVTcGVlZFwiKSl7XG4gICAgICAgIGRpYWxvZ0RhdGEuc3BlZWQgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS50eXBlU3BlZWRcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgICAgZGlhbG9nRGF0YS5zcGVlZCA9IDMwXG4gICAgfVxuXG4gICAgaWYoZGlhbG9nRGF0YS5zcGVlZCA8PSAwKXtcbiAgICAgICAgcnVzaFRleHQobnBjKVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgICBpZighSXNUeXBpbmdEaWFsb2cuaGFzKG5wYykpe1xuICAgICAgICAgICAgSXNUeXBpbmdEaWFsb2cuY3JlYXRlKG5wYylcbiAgICAgICAgfVxuICAgIFxuICAgICAgICAvLyBpZighbnBjRGlhbG9nVHlwaW5nU3lzdGVtcy5oYXMobnBjKSl7XG4gICAgICAgIC8vICAgICBucGNEaWFsb2dUeXBpbmdTeXN0ZW1zLnNldChucGMsZW5naW5lLmFkZFN5c3RlbShoYW5kbGVEaWFsb2dUeXBpbmcpKVxuICAgICAgICAvLyB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkTGluZUJyZWFrcyhkaWFsb2c6RGlhbG9nW10sIGJ1YmJsZT86Ym9vbGVhbil7XG4gICAgbGV0IGNsZWFuZWQ6RGlhbG9nW10gPSBkaWFsb2cuc2xpY2UoKVxuICAgIGNsZWFuZWQuZm9yRWFjaCgoZCk9PntcbiAgICAgIGQudGV4dCA9IGxpbmVCcmVhayhkLnRleHQsIGJ1YmJsZT8gZ2V0QnViYmxlVGV4dExlbmd0aChkLnRleHQpISA6IDUwKVxuICAgIH0pXG4gICAgcmV0dXJuIGNsZWFuZWRcbn1cblxuZnVuY3Rpb24gbGluZUJyZWFrKHRleHQ6IHN0cmluZywgbWF4TGluZUxlbmd0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCB3b3JkcyA9IHRleHQuc3BsaXQoJyAnKTtcbiAgICBsZXQgY3VycmVudExpbmUgPSAnJztcbiAgICBjb25zdCBsaW5lcyA9IFtdO1xuICBcbiAgICBmb3IgKGNvbnN0IHdvcmQgb2Ygd29yZHMpIHtcbiAgICAgIGlmIChjdXJyZW50TGluZS5sZW5ndGggKyB3b3JkLmxlbmd0aCArIDEgPD0gbWF4TGluZUxlbmd0aCkge1xuICAgICAgICBjdXJyZW50TGluZSArPSBgJHt3b3JkfSBgO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGluZXMucHVzaChjdXJyZW50TGluZS50cmltKCkpO1xuICAgICAgICBjdXJyZW50TGluZSA9IGAke3dvcmR9IGA7XG4gICAgICB9XG4gICAgfVxuICAgIGxpbmVzLnB1c2goY3VycmVudExpbmUudHJpbSgpKTtcbiAgICByZXR1cm4gbGluZXMuam9pbignXFxuJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVEaWFsb2dDbGljaygpe1xuICAgIGxldCBucGMgPSBhY3RpdmVOUEMgYXMgRW50aXR5XG4gICAgaWYobnBjRGlhbG9nQ29tcG9uZW50LmhhcyhucGMpKXtcbiAgICAgICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYylcbiAgICAgICAgaWYoIWRpYWxvZ0RhdGEudmlzaWJsZSB8fCAoTWF0aC5mbG9vcihEYXRlLm5vdygpKSAtIGRpYWxvZ0RhdGEub3BlblRpbWUgIDwgMTAwKSkgcmV0dXJuXG4gICAgICAgIFxuICAgICAgICBpZihkaWFsb2dEYXRhLnR5cGluZyl7XG4gICAgICAgICAgICBydXNoVGV4dChucGMpXG4gICAgICAgIH1cbiAgICAgICAgZWxzZXtcbiAgICAgICAgICAgIGNvbmZpcm1UZXh0KG5wYywgQ29uZmlybU1vZGUuTmV4dClcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcnVzaFRleHQobnBjOkVudGl0eSl7XG4gICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYylcbiAgICBkaWFsb2dEYXRhLnR5cGluZyA9IGZhbHNlXG4gICAgZGlhbG9nRGF0YS50aW1lciA9IDBcbiAgICBkaWFsb2dEYXRhLnZpc2libGVDaGFycyA9IGRpYWxvZ0RhdGEuZnVsbFRleHQubGVuZ3RoXG4gICAgZGlhbG9nRGF0YS52aXNpYmxlVGV4dCA9IGRpYWxvZ0RhdGEuZnVsbFRleHRcbiAgICAvL2VuZ2luZS5yZW1vdmVTeXN0ZW0obnBjRGlhbG9nVHlwaW5nU3lzdGVtcy5nZXQobnBjKSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpcm1UZXh0KG5wYzpFbnRpdHksIG1vZGU6IENvbmZpcm1Nb2RlKTogdm9pZCB7XG4gICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYylcbiAgICBkaWFsb2dEYXRhLm9wZW5UaW1lID0gTWF0aC5mbG9vcihEYXRlLm5vdygpKVxuXG4gICAgbGV0IGN1cnJlbnRUZXh0ID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF1cbiAgICAvLyBVcGRhdGUgYWN0aXZlIHRleHRcbiAgICBpZiAobW9kZSA9PSBDb25maXJtTW9kZS5OZXh0KSB7XG4gICAgICAgIGlmICghY3VycmVudFRleHQuaXNRdWVzdGlvbikge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRUZXh0LnRyaWdnZXJlZEJ5TmV4dCkge1xuICAgICAgICAgICAgY3VycmVudFRleHQudHJpZ2dlcmVkQnlOZXh0KClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjdXJyZW50VGV4dC5pc0VuZE9mRGlhbG9nKSB7XG4gICAgICAgICAgICBjbG9zZURpYWxvZyhucGMpXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRpYWxvZ0RhdGEuaW5kZXgrK1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1vZGUgPT0gQ29uZmlybU1vZGUuQ29uZmlybSkge1xuICAgICAgICBpZiAoY3VycmVudFRleHQuYnV0dG9ucyAmJiBjdXJyZW50VGV4dC5idXR0b25zLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBjdXJyZW50VGV4dC5idXR0b25zWzBdLmdvVG9EaWFsb2cgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBkaWFsb2dEYXRhLmluZGV4ID0gY3VycmVudFRleHQuYnV0dG9uc1swXS5nb1RvRGlhbG9nXG4gICAgICAgICAgfSBcblxuICAgICAgICAgIC8vVE9ET1xuICAgICAgICAgIC8vYWxsb3cgZGlhbG9ncyB0byBiZSBpbmRleCBieSBuYW1lXG4gICAgICAgIC8vICAgZWxzZSB7XG4gICAgICAgIC8vICAgICB0aGlzLmFjdGl2ZVRleHRJZCA9IGZpbmREaWFsb2dCeU5hbWUodGhpcy5OUENTY3JpcHQsIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMF0uZ29Ub0RpYWxvZylcbiAgICAgICAgLy8gICB9XG4gICAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmJ1dHRvbnNbMF0udHJpZ2dlcmVkQWN0aW9ucykge1xuICAgICAgICAgICAgY3VycmVudFRleHQuYnV0dG9uc1swXS50cmlnZ2VyZWRBY3Rpb25zKClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kZSA9PSBDb25maXJtTW9kZS5DYW5jZWwpIHtcbiAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmJ1dHRvbnMgJiYgY3VycmVudFRleHQuYnV0dG9ucy5sZW5ndGggPj0gMSkge1xuICAgICAgICAgIGlmICh0eXBlb2YgY3VycmVudFRleHQuYnV0dG9uc1sxXS5nb1RvRGlhbG9nID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgZGlhbG9nRGF0YS5pbmRleCA9IGN1cnJlbnRUZXh0LmJ1dHRvbnNbMV0uZ29Ub0RpYWxvZ1xuICAgICAgICAgIH0gXG5cbiAgICAgICAgICAvL1RPRE9cbiAgICAgICAgICAvL2FsbG93IGRpYWxvZ3MgdG8gYmUgaW5kZXggYnkgbmFtZVxuICAgICAgICAvLyAgIGVsc2Uge1xuICAgICAgICAvLyAgICAgdGhpcy5hY3RpdmVUZXh0SWQgPSBmaW5kRGlhbG9nQnlOYW1lKHRoaXMuTlBDU2NyaXB0LCBjdXJyZW50VGV4dC5idXR0b25zWzBdLmdvVG9EaWFsb2cpXG4gICAgICAgIC8vICAgfVxuICAgICAgICAgIGlmIChjdXJyZW50VGV4dC5idXR0b25zWzFdLnRyaWdnZXJlZEFjdGlvbnMpIHtcbiAgICAgICAgICAgIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMV0udHJpZ2dlcmVkQWN0aW9ucygpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1vZGUgPT0gQ29uZmlybU1vZGUuQnV0dG9uMykge1xuICAgICAgICBpZiAoY3VycmVudFRleHQuYnV0dG9ucyAmJiBjdXJyZW50VGV4dC5idXR0b25zLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBjdXJyZW50VGV4dC5idXR0b25zWzJdLmdvVG9EaWFsb2cgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBkaWFsb2dEYXRhLmluZGV4ID0gY3VycmVudFRleHQuYnV0dG9uc1syXS5nb1RvRGlhbG9nXG4gICAgICAgICAgfSBcblxuICAgICAgICAgIC8vVE9ET1xuICAgICAgICAgIC8vYWxsb3cgZGlhbG9ncyB0byBiZSBpbmRleCBieSBuYW1lXG4gICAgICAgIC8vICAgZWxzZSB7XG4gICAgICAgIC8vICAgICB0aGlzLmFjdGl2ZVRleHRJZCA9IGZpbmREaWFsb2dCeU5hbWUodGhpcy5OUENTY3JpcHQsIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMF0uZ29Ub0RpYWxvZylcbiAgICAgICAgLy8gICB9XG4gICAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmJ1dHRvbnNbMl0udHJpZ2dlcmVkQWN0aW9ucykge1xuICAgICAgICAgICAgY3VycmVudFRleHQuYnV0dG9uc1syXS50cmlnZ2VyZWRBY3Rpb25zKClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kZSA9PSBDb25maXJtTW9kZS5CdXR0b240KSB7XG4gICAgICAgIGlmIChjdXJyZW50VGV4dC5idXR0b25zICYmIGN1cnJlbnRUZXh0LmJ1dHRvbnMubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGN1cnJlbnRUZXh0LmJ1dHRvbnNbM10uZ29Ub0RpYWxvZyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGRpYWxvZ0RhdGEuaW5kZXggPSBjdXJyZW50VGV4dC5idXR0b25zWzNdLmdvVG9EaWFsb2dcbiAgICAgICAgICB9IFxuXG4gICAgICAgICAgLy9UT0RPXG4gICAgICAgICAgLy9hbGxvdyBkaWFsb2dzIHRvIGJlIGluZGV4IGJ5IG5hbWVcbiAgICAgICAgLy8gICBlbHNlIHtcbiAgICAgICAgLy8gICAgIHRoaXMuYWN0aXZlVGV4dElkID0gZmluZERpYWxvZ0J5TmFtZSh0aGlzLk5QQ1NjcmlwdCwgY3VycmVudFRleHQuYnV0dG9uc1swXS5nb1RvRGlhbG9nKVxuICAgICAgICAvLyAgIH1cbiAgICAgICAgICBpZiAoY3VycmVudFRleHQuYnV0dG9uc1szXS50cmlnZ2VyZWRBY3Rpb25zKSB7XG4gICAgICAgICAgICBjdXJyZW50VGV4dC5idXR0b25zWzNdLnRyaWdnZXJlZEFjdGlvbnMoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgYmVnaW5UeXBpbmcobnBjKVxufVxuXG5leHBvcnQgdHlwZSBJbWFnZUF0bGFzRGF0YSA9IHtcbiAgICBhdGxhc1dpZHRoOiBudW1iZXI7XG4gICAgYXRsYXNIZWlnaHQ6IG51bWJlcjtcbiAgICBzb3VyY2VXaWR0aDogbnVtYmVyO1xuICAgIHNvdXJjZUhlaWdodDogbnVtYmVyO1xuICAgIHNvdXJjZUxlZnQ6IG51bWJlcjtcbiAgICBzb3VyY2VUb3A6IG51bWJlcjtcbiAgfVxuICBcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEltYWdlQXRsYXNNYXBwaW5nKGRhdGE/OiBJbWFnZUF0bGFzRGF0YSk6IG51bWJlcltdIHtcbiAgICBpZiAoIWRhdGEpIHJldHVybiBbXVxuICBcbiAgICBjb25zdCB7XG4gICAgICBhdGxhc1dpZHRoLFxuICAgICAgYXRsYXNIZWlnaHQsXG4gICAgICBzb3VyY2VXaWR0aCxcbiAgICAgIHNvdXJjZUhlaWdodCxcbiAgICAgIHNvdXJjZVRvcCxcbiAgICAgIHNvdXJjZUxlZnQsXG4gICAgfSA9IGRhdGFcbiAgXG4gICAgcmV0dXJuIFtcbiAgICAgIHNvdXJjZUxlZnQgLyBhdGxhc1dpZHRoLCAoYXRsYXNIZWlnaHQgLSBzb3VyY2VUb3AgLSBzb3VyY2VIZWlnaHQpIC8gYXRsYXNIZWlnaHQsXG4gICAgICBzb3VyY2VMZWZ0IC8gYXRsYXNXaWR0aCwgKGF0bGFzSGVpZ2h0IC0gc291cmNlVG9wKSAvIGF0bGFzSGVpZ2h0LFxuICAgICAgKHNvdXJjZUxlZnQgKyBzb3VyY2VXaWR0aCkgLyBhdGxhc1dpZHRoLCAoYXRsYXNIZWlnaHQgLSBzb3VyY2VUb3ApIC8gYXRsYXNIZWlnaHQsXG4gICAgICAoc291cmNlTGVmdCArIHNvdXJjZVdpZHRoKSAvIGF0bGFzV2lkdGgsIChhdGxhc0hlaWdodCAtIHNvdXJjZVRvcCAtIHNvdXJjZUhlaWdodCkgLyBhdGxhc0hlaWdodCxcbiAgICBdXG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gcmVhbFdpZHRoKHdpZHRoPzpudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB3aWR0aCA/IHdpZHRoIDogc2VjdGlvbi5zb3VyY2VXaWR0aFxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIHJlYWxIZWlnaHQoaGVpZ2h0PzpudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBoZWlnaHQgPyBoZWlnaHQgOiBzZWN0aW9uLnNvdXJjZUhlaWdodFxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGZpbmREaWFsb2dCeU5hbWUoZGlhbG9nczogRGlhbG9nW10sIG5hbWU6IHN0cmluZykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlhbG9ncy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGRpYWxvZ3NbaV0ubmFtZSAmJiBkaWFsb2dzW2ldLm5hbWUgPT0gbmFtZSkge1xuICAgICAgICByZXR1cm4gaVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gMFxuICB9XG4gICJdfQ==
|
package/dist/npc.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export declare function activate(npc: Entity): void;
|
|
|
13
13
|
export declare function handleWalkAway(npc: Entity): void;
|
|
14
14
|
export declare function playAnimation(npc: Entity, anim: string, noLoop?: boolean, duration?: number): void;
|
|
15
15
|
export declare function changeIdleAnim(npc: Entity, animation: string, play?: boolean): void;
|
|
16
|
-
export declare function talkBubble(npc: Entity, script: Dialog[], startIndex?: number): void;
|
|
16
|
+
export declare function talkBubble(npc: Entity, script: Dialog[], startIndex?: number | string): void;
|
|
17
17
|
export declare function createDialogWindow(defaultPortrait?: ImageData, sound?: string): Entity;
|
|
18
18
|
export declare function openDialogWindow(npc: Entity, dialog: Dialog[], startIndex?: number | string): void;
|
|
19
|
-
export declare function closeDialogWindow(): void;
|
|
19
|
+
export declare function closeDialogWindow(window: Entity): void;
|
package/dist/npc.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Animator, AvatarShape,
|
|
1
|
+
import { Animator, AvatarShape, engine, GltfContainer, MeshCollider, MeshRenderer, pointerEventsSystem, Transform } from '@dcl/sdk/ecs';
|
|
2
2
|
import { Color3, Quaternion, Vector3 } from '@dcl/sdk/math';
|
|
3
3
|
import { NPCPathType, NPCState, NPCType } from './types';
|
|
4
4
|
import * as utils from '@dcl-sdk/utils';
|
|
5
|
-
import { IsFollowingPath } from './components';
|
|
6
|
-
import { handleBubbletyping, handleDialogTyping, handlePathTimes } from './systems';
|
|
5
|
+
import { IsFollowingPath, TrackUserFlag } from './components';
|
|
6
|
+
import { faceUserSystem, handleBubbletyping, handleDialogTyping, handlePathTimes } from './systems';
|
|
7
7
|
import { addDialog, closeDialog, findDialogByName, npcDialogComponent, openDialog } from './dialog';
|
|
8
8
|
import { bubbles, closeBubble, createDialogBubble, openBubble } from './bubble';
|
|
9
9
|
export const walkingTimers = new Map();
|
|
@@ -13,6 +13,7 @@ export let blankDialog = 0;
|
|
|
13
13
|
engine.addSystem(handlePathTimes);
|
|
14
14
|
engine.addSystem(handleDialogTyping);
|
|
15
15
|
engine.addSystem(handleBubbletyping);
|
|
16
|
+
engine.addSystem(faceUserSystem);
|
|
16
17
|
const isCooldown = new Map();
|
|
17
18
|
const onActivateCbs = new Map();
|
|
18
19
|
const onWalkAwayCbs = new Map();
|
|
@@ -33,7 +34,7 @@ export function create(transform, data) {
|
|
|
33
34
|
introduced: false,
|
|
34
35
|
inCooldown: false,
|
|
35
36
|
coolDownDuration: data && data.coolDownDuration ? data.coolDownDuration : 5,
|
|
36
|
-
faceUser: data.faceUser,
|
|
37
|
+
faceUser: data && data.faceUser ? data.faceUser : undefined,
|
|
37
38
|
walkingSpeed: 2,
|
|
38
39
|
walkingAnim: data && data.walkingAnim ? data.walkingAnim : undefined,
|
|
39
40
|
pathData: data.pathData ? data.pathData : undefined,
|
|
@@ -44,13 +45,16 @@ export function create(transform, data) {
|
|
|
44
45
|
idleAnim: data && data.idleAnim ? data.idleAnim : "Idle",
|
|
45
46
|
bubbleHeight: data && data.textBubble && data.bubbleHeight ? data.bubbleHeight : undefined,
|
|
46
47
|
bubbleSound: data.dialogSound ? data.dialogSound : undefined,
|
|
47
|
-
hasBubble: data && data.textBubble ? true : false
|
|
48
|
+
hasBubble: data && data.textBubble ? true : false,
|
|
49
|
+
turnSpeed: data && data.turningSpeed ? data.turningSpeed : 2
|
|
48
50
|
});
|
|
49
51
|
if (data && data.noUI) { }
|
|
50
|
-
else if (data && data.portrait) {
|
|
51
|
-
else {
|
|
52
|
+
else if (data && data.portrait) {
|
|
52
53
|
addDialog(npc, data && data.dialogSound ? data.dialogSound : undefined, typeof data.portrait === `string` ? { path: data.portrait } : data.portrait);
|
|
53
54
|
}
|
|
55
|
+
else {
|
|
56
|
+
addDialog(npc, data && data.dialogSound ? data.dialogSound : undefined);
|
|
57
|
+
}
|
|
54
58
|
if (data && data.textBubble) {
|
|
55
59
|
createDialogBubble(npc, npcDataComponent.get(npc).bubbleHeight);
|
|
56
60
|
}
|
|
@@ -191,7 +195,9 @@ export function followPath(npc, data) {
|
|
|
191
195
|
if (data) {
|
|
192
196
|
npcData.pathData = data;
|
|
193
197
|
if (npcData.faceUser) {
|
|
194
|
-
|
|
198
|
+
if (TrackUserFlag.has(npc)) {
|
|
199
|
+
TrackUserFlag.deleteFrom(npc);
|
|
200
|
+
}
|
|
195
201
|
}
|
|
196
202
|
if (data.startingPoint) {
|
|
197
203
|
data.path?.splice(0, data.startingPoint - 1);
|
|
@@ -304,8 +310,10 @@ export function activate(npc) {
|
|
|
304
310
|
onActivateCbs.get(npc)();
|
|
305
311
|
let npcData = npcDataComponent.get(npc);
|
|
306
312
|
if (npcData.faceUser) {
|
|
307
|
-
|
|
308
|
-
|
|
313
|
+
TrackUserFlag.create(npc, {
|
|
314
|
+
lockXZRotation: true,
|
|
315
|
+
active: true,
|
|
316
|
+
rotSpeed: npcData.turnSpeed
|
|
309
317
|
});
|
|
310
318
|
}
|
|
311
319
|
isCooldown.set(npc, true);
|
|
@@ -313,8 +321,8 @@ export function activate(npc) {
|
|
|
313
321
|
utils.timers.setTimeout(function () {
|
|
314
322
|
isCooldown.delete(npc);
|
|
315
323
|
npcDataComponent.get(npc).inCooldown = false;
|
|
316
|
-
if (
|
|
317
|
-
|
|
324
|
+
if (TrackUserFlag.has(npc)) {
|
|
325
|
+
TrackUserFlag.deleteFrom(npc);
|
|
318
326
|
}
|
|
319
327
|
}, 1000 * npcData.coolDownDuration);
|
|
320
328
|
console.log('activated npc,', npcDataComponent.get(npc));
|
|
@@ -326,7 +334,9 @@ function endInteraction(npc) {
|
|
|
326
334
|
closeDialog(npc);
|
|
327
335
|
}
|
|
328
336
|
if (npcData.faceUser) {
|
|
329
|
-
|
|
337
|
+
if (TrackUserFlag.has(npc)) {
|
|
338
|
+
TrackUserFlag.deleteFrom(npc);
|
|
339
|
+
}
|
|
330
340
|
}
|
|
331
341
|
console.log('ending interaction', npcData, bubbles.get(npc));
|
|
332
342
|
if (npcData.hasBubble && bubbles.get(npc).isBubbleOpen) {
|
|
@@ -407,6 +417,10 @@ export function openDialogWindow(npc, dialog, startIndex) {
|
|
|
407
417
|
openDialog(npc, dialog, index);
|
|
408
418
|
}
|
|
409
419
|
}
|
|
410
|
-
export function closeDialogWindow() {
|
|
420
|
+
export function closeDialogWindow(window) {
|
|
421
|
+
let dialog = npcDialogComponent.get(window);
|
|
422
|
+
if (window) {
|
|
423
|
+
closeDialog(dialog);
|
|
424
|
+
}
|
|
411
425
|
}
|
|
412
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL25wYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQWlCLE1BQU0sRUFBVSxhQUFhLEVBQWMsWUFBWSxFQUFDLFlBQVksRUFBQyxtQkFBbUIsRUFBQyxTQUFTLEVBQWlCLE1BQU0sY0FBYyxDQUFBO0FBQ2pNLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMzRCxPQUFPLEVBQThDLFdBQVcsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFlLE1BQU0sU0FBUyxDQUFDO0FBQ2xILE9BQU8sS0FBSyxLQUFLLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwRyxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFaEYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUF1QixJQUFJLEdBQUcsRUFBRSxDQUFBO0FBQzFELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFxQixJQUFJLEdBQUcsRUFBRSxDQUFBO0FBQzNELE1BQU0sQ0FBQyxJQUFJLFNBQVMsR0FBVSxDQUFDLENBQUE7QUFDL0IsTUFBTSxDQUFDLElBQUksV0FBVyxHQUFVLENBQUMsQ0FBQTtBQUVqQyxNQUFNLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFBO0FBQ2pDLE1BQU0sQ0FBQyxTQUFTLENBQUMs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VSxFQUFFO1lBQ2YsS0FBSyxHQUFHLENBQUMsQ0FBQTtTQUNWO2FBQU0sSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUU7WUFDekMsS0FBSyxHQUFHLFVBQVUsQ0FBQTtTQUNuQjthQUFNO1lBQ0wsS0FBSyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQTtTQUM3QztRQUNELFVBQVUsQ0FBQyxHQUFHLEVBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFBO0tBQ2hDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUI7QUFFakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdEVjcyBmcm9tICdAZGNsL3Nkay9yZWFjdC1lY3MnXG5pbXBvcnQgeyBBbmltYXRvciwgQXZhdGFyU2hhcGUsIEJpbGxib2FyZCwgQmlsbGJvYXJkTW9kZSwgZW5naW5lLCBFbnRpdHksIEdsdGZDb250YWluZXIsIElucHV0QWN0aW9uLE1lc2hDb2xsaWRlcixNZXNoUmVuZGVyZXIscG9pbnRlckV2ZW50c1N5c3RlbSxUcmFuc2Zvcm0sIFRyYW5zZm9ybVR5cGUgfSBmcm9tICdAZGNsL3Nkay9lY3MnXG5pbXBvcnQgeyBDb2xvcjMsIFF1YXRlcm5pb24sIFZlY3RvcjMgfSBmcm9tICdAZGNsL3Nkay9tYXRoJ1xuaW1wb3J0IHsgRGlhbG9nLCBGb2xsb3dQYXRoRGF0YSwgSW1hZ2VEYXRhLCBOUENEYXRhLCBOUENQYXRoVHlwZSwgTlBDU3RhdGUsIE5QQ1R5cGUsIFRyaWdnZXJEYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tICdAZGNsLXNkay91dGlscydcbmltcG9ydCB7IElzRm9sbG93aW5nUGF0aCB9IGZyb20gJy4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBoYW5kbGVCdWJibGV0eXBpbmcsIGhhbmRsZURpYWxvZ1R5cGluZywgaGFuZGxlUGF0aFRpbWVzIH0gZnJvbSAnLi9zeXN0ZW1zJztcbmltcG9ydCB7IGFkZERpYWxvZywgY2xvc2VEaWFsb2csIGZpbmREaWFsb2dCeU5hbWUsIG5wY0RpYWxvZ0NvbXBvbmVudCwgb3BlbkRpYWxvZyB9IGZyb20gJy4vZGlhbG9nJztcbmltcG9ydCB7IGJ1YmJsZXMsIGNsb3NlQnViYmxlLCBjcmVhdGVEaWFsb2dCdWJibGUsIG9wZW5CdWJibGUgfSBmcm9tICcuL2J1YmJsZSc7XG5cbmV4cG9ydCBjb25zdCB3YWxraW5nVGltZXJzOiBNYXA8RW50aXR5LG51bWJlcj4gPSBuZXcgTWFwKClcbmV4cG9ydCBjb25zdCBucGNEYXRhQ29tcG9uZW50OiBNYXA8RW50aXR5LCBhbnk+ID0gbmV3IE1hcCgpXG5leHBvcnQgbGV0IGFjdGl2ZU5QQzpudW1iZXIgPSAwXG5leHBvcnQgbGV0IGJsYW5rRGlhbG9nOm51bWJlciA9IDBcblxuZW5naW5lLmFkZFN5c3RlbShoYW5kbGVQYXRoVGltZXMpXG5lbmdpbmUuYWRkU3lzdGVtKGhhbmRsZURpYWxvZ1R5cGluZylcbmVuZ2luZS5hZGRTeXN0ZW0oaGFuZGxlQnViYmxldHlwaW5nKVxuXG5jb25zdCBpc0Nvb2xkb3duOiBNYXA8RW50aXR5LCBhbnk+ID0gbmV3IE1hcCgpXG5jb25zdCBvbkFjdGl2YXRlQ2JzOiBNYXA8RW50aXR5LCBhbnk+ID0gbmV3IE1hcCgpXG5jb25zdCBvbldhbGtBd2F5Q2JzOiBNYXA8RW50aXR5LCBhbnk+ID0gbmV3IE1hcCgpXG5jb25zdCBhbmltVGltZXJzOiBNYXA8RW50aXR5LGFueT4gPSBuZXcgTWFwKClcbmNvbnN0IHBvaW50UmVhY2hlZENhbGxiYWNrczogTWFwPEVudGl0eSwgYW55PiA9IG5ldyBNYXAoKVxuY29uc3Qgb25GaW5pc2hDYWxsYmFja3M6IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dEZWJ1ZyhkZWJ1Zzpib29sZWFuKXtcbiAgICB1dGlscy50cmlnZ2Vycy5lbmFibGVEZWJ1Z0RyYXcoZGVidWcpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXRhKG5wYzpFbnRpdHkpe1xuICAgIHJldHVybiBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGUoXG4gICAgdHJhbnNmb3JtOiBhbnksXG4gICAgZGF0YTogTlBDRGF0YVxuKXtcbiAgICBsZXQgbnBjID0gZW5naW5lLmFkZEVudGl0eSgpXG5cbiAgICBsZXQgdDpUcmFuc2Zvcm1UeXBlID0ge3Bvc2l0aW9uOiB0cmFuc2Zvcm0ucG9zaXRpb24gPyB0cmFuc2Zvcm0ucG9zaXRpb24gOiBWZWN0b3IzLmNyZWF0ZSgwLDAsMCksIHJvdGF0aW9uOiB0cmFuc2Zvcm0ucm90YXRpb24gPyB0cmFuc2Zvcm0ucm90YXRpb24gOiBRdWF0ZXJuaW9uLlplcm8oKSwgc2NhbGU6IHRyYW5zZm9ybS5zY2FsZSA/IHRyYW5zZm9ybS5zY2FsZSA6IFZlY3RvcjMuT25lKCl9XG4gICAgVHJhbnNmb3JtLmNyZWF0ZShucGMsIHQpXG5cbiAgICBucGNEYXRhQ29tcG9uZW50LnNldChucGMse1xuICAgICAgICBpbnRyb2R1Y2VkOiBmYWxzZSxcbiAgICAgICAgaW5Db29sZG93bjogZmFsc2UsXG4gICAgICAgIGNvb2xEb3duRHVyYXRpb246IGRhdGEgJiYgZGF0YS5jb29sRG93bkR1cmF0aW9uID8gZGF0YS5jb29sRG93bkR1cmF0aW9uIDogNSxcbiAgICAgICAgZmFjZVVzZXI6ZGF0YS5mYWNlVXNlcixcbiAgICAgICAgd2Fsa2luZ1NwZWVkOjIsXG4gICAgICAgIHdhbGtpbmdBbmltOiBkYXRhICYmIGRhdGEud2Fsa2luZ0FuaW0gPyBkYXRhLndhbGtpbmdBbmltIDogdW5kZWZpbmVkLFxuICAgICAgICBwYXRoRGF0YTogZGF0YS5wYXRoRGF0YSA/IGRhdGEucGF0aERhdGEgOiB1bmRlZmluZWQsXG4gICAgICAgIGN1cnJlbnRQYXRoRGF0YTogW10sXG4gICAgICAgIG1hbnVhbFN0b3A6ZmFsc2UsXG4gICAgICAgIHBhdGhJbmRleDowLFxuICAgICAgICBzdGF0ZTpOUENTdGF0ZS5TVEFORElORyxcbiAgICAgICAgaWRsZUFuaW06IGRhdGEgJiYgZGF0YS5pZGxlQW5pbSA/IGRhdGEuaWRsZUFuaW0gOiBcIklkbGVcIixcbiAgICAgICAgYnViYmxlSGVpZ2h0OiBkYXRhICYmIGRhdGEudGV4dEJ1YmJsZSAmJiBkYXRhLmJ1YmJsZUhlaWdodCA/IGRhdGEuYnViYmxlSGVpZ2h0IDogdW5kZWZpbmVkLFxuICAgICAgICBidWJibGVTb3VuZDogZGF0YS5kaWFsb2dTb3VuZCA/IGRhdGEuZGlhbG9nU291bmQgOiB1bmRlZmluZWQsXG4gICAgICAgIGhhc0J1YmJsZTogZGF0YSAmJiBkYXRhLnRleHRCdWJibGUgPyB0cnVlIDogZmFsc2VcbiAgICB9KVxuXG4gICAgaWYoZGF0YSAmJiBkYXRhLm5vVUkpe31cbiAgICBlbHNlIGlmKGRhdGEgJiYgZGF0YS5wb3J0cmFpdCl7fVxuICAgIGVsc2V7XG4gICAgICAgIGFkZERpYWxvZyhucGMsIGRhdGEgJiYgZGF0YS5kaWFsb2dTb3VuZCA/IGRhdGEuZGlhbG9nU291bmQgOiB1bmRlZmluZWQsIHR5cGVvZiBkYXRhLnBvcnRyYWl0ID09PSBgc3RyaW5nYCA/IHsgcGF0aDogZGF0YS5wb3J0cmFpdCB9IDogZGF0YS5wb3J0cmFpdCxcbiAgICAgICAgKVxuICAgIH1cblxuICAgIGlmIChkYXRhICYmIGRhdGEudGV4dEJ1YmJsZSkge1xuICAgICAgICBjcmVhdGVEaWFsb2dCdWJibGUobnBjLCBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLmJ1YmJsZUhlaWdodClcbiAgICAgIH1cblxuICAgIG9uQWN0aXZhdGVDYnMuc2V0KG5wYywgKCk9PntcbiAgICAgICAgZGF0YS5vbkFjdGl2YXRlKClcbiAgICB9KVxuXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5oYXNPd25Qcm9wZXJ0eShcIm9uV2Fsa0F3YXlcIikpIHtcbiAgICAgICAgb25XYWxrQXdheUNicy5zZXQobnBjLCAoKT0+e1xuICAgICAgICAgICAgaWYoIWRhdGEgfHwgIWRhdGEuY29udGludWVPbldhbGtBd2F5KXtcbiAgICAgICAgICAgICAgICBpZihucGNEaWFsb2dDb21wb25lbnQuaGFzKG5wYykpe1xuICAgICAgICAgICAgICAgICAgICBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYykudmlzaWJsZSA9IGZhbHNlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZXtcbiAgICAgICAgICAgICAgICBpZihucGNEaWFsb2dDb21wb25lbnQuaGFzKG5wYykpe1xuICAgICAgICAgICAgICAgICAgICBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYykudmlzaWJsZSA9IGZhbHNlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGF0YS5vbldhbGtBd2F5ISgpXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgYWRkTlBDQm9uZXMobnBjLCBkYXRhKVxuICAgIGFkZENsaWNrUmVhY3Rpb25zKG5wYywgZGF0YSlcbiAgICBhZGRUcmlnZ2VyQXJlYShucGMsIGRhdGEpXG4gICAgXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5wYXRoRGF0YSAmJiBkYXRhLnBhdGhEYXRhLnNwZWVkKSB7XG4gICAgICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgICAgICBucGNEYXRhLndhbGtpbmdTcGVlZCA9IGRhdGEucGF0aERhdGEuc3BlZWRcbiAgICB9XG5cbiAgICBpZiAoZGF0YSAmJiBkYXRhLmNvb2xEb3duRHVyYXRpb24pIHtcbiAgICAgICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgICAgIG5wY0RhdGEuY29vbERvd25EdXJhdGlvbiA9IGRhdGEuY29vbERvd25EdXJhdGlvblxuICAgIH1cblxuICAgIGlmIChkYXRhICYmIGRhdGEucGF0aERhdGEpe1xuICAgICAgICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICAgICAgLy9ucGNEYXRhLmN1cnJlbnRQYXRoRGF0YSA9IG5wY0RhdGEucGF0aERhdGFcbiAgICAgICAgZm9sbG93UGF0aChucGMsIG5wY0RhdGEucGF0aERhdGEpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5wY1xufVxuXG5mdW5jdGlvbiBhZGROUENCb25lcyhucGM6RW50aXR5LCBkYXRhOk5QQ0RhdGEpe1xuICAgIHN3aXRjaChkYXRhLnR5cGUpe1xuICAgICAgICBjYXNlIE5QQ1R5cGUuQVZBVEFSOlxuICAgICAgICAgICAgQXZhdGFyU2hhcGUuY3JlYXRlKG5wYywge1xuICAgICAgICAgICAgICAgIGlkOiBcIm5wY1wiLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwiTlBDXCIsXG4gICAgICAgICAgICAgICAgYm9keVNoYXBlOlwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOkJhc2VNYWxlXCIsXG4gICAgICAgICAgICAgICAgZW1vdGVzOiBbXSxcbiAgICAgICAgICAgICAgICB3ZWFyYWJsZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgXCJ1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6Zl9leWVzXzAwXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOmZfZXllYnJvd3NfMDBcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6Zl9tb3V0aF8wMFwiLFxuICAgICAgICAgICAgICAgICAgICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpjb21meV9zcG9ydF9zYW5kYWxzXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOnNvY2Nlcl9wYW50c1wiLFxuICAgICAgICAgICAgICAgICAgICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczplbGVnYW50X3N3ZWF0ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIE5QQ1R5cGUuQ1VTVE9NOlxuICAgICAgICAgICAgR2x0ZkNvbnRhaW5lci5jcmVhdGUobnBjLCB7IFxuICAgICAgICAgICAgICAgIHNyYzogZGF0YSAmJiBkYXRhLm1vZGVsID8gZGF0YS5tb2RlbCA6IFwiXCIgXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgQW5pbWF0b3IuY3JlYXRlKG5wYywge1xuICAgICAgICAgICAgICAgIHN0YXRlczpbe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOmRhdGEgJiYgZGF0YS5pZGxlQW5pbSA/IGRhdGEuaWRsZUFuaW0gOiAnSWRsZScsXG4gICAgICAgICAgICAgICAgICAgIGNsaXA6ZGF0YSAmJiBkYXRhLmlkbGVBbmltID8gZGF0YS5pZGxlQW5pbSA6ICdJZGxlJyxcbiAgICAgICAgICAgICAgICAgICAgbG9vcDp0cnVlXG4gICAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgICAgICAgICAgbnBjRGF0YS5pZGxlQW5pbSA9IGRhdGEgJiYgZGF0YS5pZGxlQW5pbSA/IGRhdGEuaWRsZUFuaW0gOiAnSWRsZSdcbiAgICAgICAgICAgIG5wY0RhdGEubGFzdFBsYXllZEFuaW0gPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLmlkbGVBbmltXG5cbiAgICAgICAgICAgIEFuaW1hdG9yLnBsYXlTaW5nbGVBbmltYXRpb24obnBjLCBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLmlkbGVBbmltKVxuXG5cbiAgICAgICAgICAgIGlmIChkYXRhICYmIGRhdGEud2Fsa2luZ0FuaW0pIHtcbiAgICAgICAgICAgICAgICBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLndhbGtpbmdBbmltID0gZGF0YS53YWxraW5nQW5pbVxuICAgICAgICAgICAgICAgIGxldCBhbmltYXRpb25zID0gQW5pbWF0b3IuZ2V0TXV0YWJsZShucGMpXG4gICAgICAgICAgICAgICAgYW5pbWF0aW9ucy5zdGF0ZXMucHVzaCh7bmFtZTpkYXRhLndhbGtpbmdBbmltLCBjbGlwOiBkYXRhLndhbGtpbmdBbmltLCBsb29wOnRydWV9KVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIE5QQ1R5cGUuQkxBTks6XG4gICAgICAgICAgICBNZXNoUmVuZGVyZXIuc2V0Qm94KG5wYylcbiAgICAgICAgICAgIE1lc2hDb2xsaWRlci5zZXRCb3gobnBjKVxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGFkZENsaWNrUmVhY3Rpb25zKG5wYzpFbnRpdHksIGRhdGE6TlBDRGF0YSl7XG4gICAgbGV0IGFjdGl2YXRlQnV0dG9uID0gZGF0YSAmJiBkYXRhLm9ubHlDbGlja1RyaWdnZXIgPyBJbnB1dEFjdGlvbi5JQV9QT0lOVEVSIDogSW5wdXRBY3Rpb24uSUFfUFJJTUFSWVxuXG4gICAgcG9pbnRlckV2ZW50c1N5c3RlbS5vblBvaW50ZXJEb3duKFxuICAgICAgICBucGMsXG4gICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChpc0Nvb2xkb3duLmhhcyhucGMpIHx8IChucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYykudmlzaWJsZSkpIHJldHVyblxuICAgICAgICAgICAgYWN0aXZhdGUobnBjKVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBidXR0b246IGFjdGl2YXRlQnV0dG9uLFxuICAgICAgICAgICAgaG92ZXJUZXh0OiBkYXRhICYmIGRhdGEuaG92ZXJUZXh0ID8gZGF0YS5ob3ZlclRleHQgOiAnVGFsaycsXG4gICAgICAgICAgICBzaG93RmVlZGJhY2s6IGRhdGEgJiYgZGF0YS5vbmx5RXh0ZXJuYWxUcmlnZ2VyID8gZmFsc2UgOiB0cnVlLFxuICAgICAgICB9XG4gICAgICAgIClcblxuICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLm9ubHlFeHRlcm5hbFRyaWdnZXIpIHtcbiAgICAgICAgcG9pbnRlckV2ZW50c1N5c3RlbS5yZW1vdmVPblBvaW50ZXJEb3duKG5wYylcbiAgICAgICAgfSBcbn1cblxuZnVuY3Rpb24gYWRkVHJpZ2dlckFyZWEobnBjOkVudGl0eSwgZGF0YTpOUENEYXRhKXtcblxuICAgICAgICBsZXQgdHJpZ2dlckRhdGE6IFRyaWdnZXJEYXRhID0ge31cblxuICAgICAgICBpZiAoIWRhdGEgfHwgKGRhdGEgJiYgIWRhdGEub25seUV4dGVybmFsVHJpZ2dlciAmJiAhZGF0YS5vbmx5Q2xpY2tUcmlnZ2VyICYmICFkYXRhLm9ubHlFVHJpZ2dlcikpe1xuICAgICAgICBvbkFjdGl2YXRlQ2JzLnNldChucGMsICgpPT57XG4gICAgICAgICAgICBpZiAoaXNDb29sZG93bi5oYXMobnBjKSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKG5wYywgJyBpbiBjb29sZG93bicpXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9IFxuICAgICAgICAgICAgZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgKG5wY0RpYWxvZ0NvbXBvbmVudC5oYXMobnBjKSAmJiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYykudmlzaWJsZSkgfHxcbiAgICAgICAgICAgICAgICAoZGF0YSAmJiBkYXRhLm9ubHlFeHRlcm5hbFRyaWdnZXIpIHx8XG4gICAgICAgICAgICAgICAgKGRhdGEgJiYgZGF0YS5vbmx5Q2xpY2tUcmlnZ2VyKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkYXRhLm9uQWN0aXZhdGUoKVxuICAgICAgICB9KVxuICAgICAgICB0cmlnZ2VyRGF0YS5vbkNhbWVyYUVudGVyID0gb25BY3RpdmF0ZUNicy5nZXQobnBjKVxuICAgICAgICB9XG5cbiAgICAvLyB3aGVuIGV4aXRpbmcgdHJpZ2dlclxuICAgIGlmICghZGF0YSB8fCAoZGF0YSAmJiAhZGF0YS5jb250aW51ZU9uV2Fsa0F3YXkpKSB7XG4gICAgICAgIHRyaWdnZXJEYXRhLm9uQ2FtZXJhRXhpdCA9ICgpID0+IHtcbiAgICAgICAgICAgIGhhbmRsZVdhbGtBd2F5KG5wYylcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHdoZW4gZW50ZXJpbmcgdHJpZ2dlclxuICAgIGlmIChcbiAgICAgICAgIWRhdGEgfHxcbiAgICAgICAgKGRhdGEgJiYgIWRhdGEub25seUV4dGVybmFsVHJpZ2dlciAmJiAhZGF0YS5vbmx5Q2xpY2tUcmlnZ2VyICYmICFkYXRhLm9ubHlFVHJpZ2dlcilcbiAgICApIHtcbiAgICAgICAgdHJpZ2dlckRhdGEub25DYW1lcmFFbnRlciA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChpc0Nvb2xkb3duLmhhcyhucGMpKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2cobnBjLCAnIGluIGNvb2xkb3duJylcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH0gXG4gICAgICAgICAgICAvLyBlbHNlIGlmIChcbiAgICAgICAgICAgIC8vICAgICAodGhpcy5kaWFsb2cgJiYgdGhpcy5kaWFsb2cuaXNEaWFsb2dPcGVuKSB8fFxuICAgICAgICAgICAgLy8gICAgIChkYXRhICYmIGRhdGEub25seUV4dGVybmFsVHJpZ2dlcikgfHxcbiAgICAgICAgICAgIC8vICAgICAoZGF0YSAmJiBkYXRhLm9ubHlDbGlja1RyaWdnZXIpXG4gICAgICAgICAgICAvLyApIHtcbiAgICAgICAgICAgIC8vICAgICByZXR1cm5cbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIGFjdGl2YXRlKG5wYylcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGFkZCB0cmlnZ2VyXG4gICAgaWYgKHRyaWdnZXJEYXRhLm9uQ2FtZXJhRW50ZXIgfHwgdHJpZ2dlckRhdGEub25DYW1lcmFFeGl0KSB7XG4gICAgICAgIHV0aWxzLnRyaWdnZXJzLmFkZFRyaWdnZXIobnBjLDI1NCwxLFt7dHlwZTonc3BoZXJlJywgcG9zaXRpb246IFZlY3RvcjMuWmVybygpLCByYWRpdXM6IGRhdGEucmVhY3REaXN0YW5jZSAhPSB1bmRlZmluZWQgPyBkYXRhLnJlYWN0RGlzdGFuY2UgOiA2fV0sIHRyaWdnZXJEYXRhLm9uQ2FtZXJhRW50ZXIgPyB0cmlnZ2VyRGF0YS5vbkNhbWVyYUVudGVyIDogdW5kZWZpbmVkLCB0cmlnZ2VyRGF0YS5vbkNhbWVyYUV4aXQgPyB0cmlnZ2VyRGF0YS5vbkNhbWVyYUV4aXQgOiB1bmRlZmluZWQsIENvbG9yMy5SZWQoKSlcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb2xsb3dQYXRoKG5wYzpFbnRpdHksIGRhdGE/OkZvbGxvd1BhdGhEYXRhKXtcbiAgICAgICAgXG4gICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgbGV0IHBhdGg6YW55W10gPVtdXG5cbiAgICBpZihkYXRhKXtcbiAgICAgICAgbnBjRGF0YS5wYXRoRGF0YSA9IGRhdGFcblxuICAgICAgICBpZihucGNEYXRhLmZhY2VVc2VyKXtcbiAgICAgICAgICAgIEJpbGxib2FyZC5kZWxldGVGcm9tKG5wYylcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKGRhdGEuc3RhcnRpbmdQb2ludCl7XG4gICAgICAgICAgICBkYXRhLnBhdGg/LnNwbGljZSgwLGRhdGEuc3RhcnRpbmdQb2ludCAtIDEpXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcG9zID0gVHJhbnNmb3JtLmdldChucGMpLnBvc2l0aW9uXG4gICAgICAgIHBhdGgucHVzaChWZWN0b3IzLmNyZWF0ZShwb3MueCwgcG9zLnksIHBvcy56KSlcbiAgICAgICAgZGF0YS5wYXRoPy5mb3JFYWNoKChwKT0+e1xuICAgICAgICAgICAgcGF0aC5wdXNoKHApXG4gICAgICAgIH0pXG5cbiAgICAgICAgb25GaW5pc2hDYWxsYmFja3Muc2V0KG5wYywoKT0+e1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ29uIGZpbmlzaGVkIGNhbGxiYWNrJylcbiAgICAgICAgICAgIGlmKGRhdGEgJiYgZGF0YS5vbkZpbmlzaENhbGxiYWNrICYmICFkYXRhLmxvb3Ape1xuICAgICAgICAgICAgICAgIGRhdGEub25GaW5pc2hDYWxsYmFja1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RvcFBhdGgobnBjKVxuICAgICAgICB9KVxuXG4gICAgICAgIHBvaW50UmVhY2hlZENhbGxiYWNrcy5zZXQobnBjLCAoKT0+e1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ29uIHBvaW50IHJlYWNoZWQgY2FsbGJhY2snKVxuICAgICAgICAgICAgbGV0IGRhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgICAgICAgICBkYXRhLnBhdGhJbmRleCArPSAxXG4gICAgICAgICAgICBkYXRhLm9uUmVhY2hlZFBvaW50Q2FsbGJhY2sgPyBkYXRhLm9uUmVhY2hlZFBvaW50Q2FsbGJhY2sgOiB1bmRlZmluZWRcbiAgICAgICAgfSlcbiAgICAgICAgd2Fsa05QQyhucGMsIG5wY0RhdGEsIGRhdGEucGF0aFR5cGUhLCBkYXRhLnRvdGFsRHVyYXRpb24sIHBhdGgsIHBvaW50UmVhY2hlZENhbGxiYWNrcy5nZXQobnBjKSwgb25GaW5pc2hDYWxsYmFja3MuZ2V0KG5wYykpXG4gICAgfWVsc2V7XG4gICAgICAgIGlmKG5wY0RhdGEubWFudWFsU3RvcCl7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnd2UgaGF2ZSBtYW51YWwgc3RvcCwgbmVlZCB0byBwaWNrIGJhY2sgdXAgd2hlcmUgd2UgbGVmdCBvZmYnKVxuICAgICAgICB9XG4gICAgICAgIGVsc2V7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnd2UgYXJlIHRyeWluZyB0byBmb2xsb3cgYSBwYXRoIHdpdG91dCBzdGFydGluZyBvbmUgcHJpb3InKVxuICAgICAgICB9XG4gICAgfVxuICAgIH1cbi8vXG5mdW5jdGlvbiB3YWxrTlBDKG5wYzpFbnRpdHksIG5wY0RhdGE6YW55LCB0eXBlOk5QQ1BhdGhUeXBlLCBkdXJhdGlvbjpudW1iZXIsIHBhdGg6VmVjdG9yM1tdLCBwb2ludFJlYWNoZWRDYWxsYmFjaz86YW55LCBmaW5pc2hlZENhbGxiYWNrPzphbnkpe1xuICAgIC8vXG4gICAgaWYoSXNGb2xsb3dpbmdQYXRoLmhhcyhucGMpKXtcbiAgICAgICAgSXNGb2xsb3dpbmdQYXRoLmRlbGV0ZUZyb20obnBjKVxuICAgICAgICB3YWxraW5nVGltZXJzLmRlbGV0ZShucGMpXG4gICAgfVxuICAgIElzRm9sbG93aW5nUGF0aC5jcmVhdGUobnBjKVxuXG4gICAgaWYodHlwZSl7XG4gICAgICAgIGlmKHR5cGU9PSBOUENQYXRoVHlwZS5SSUdJRF9QQVRIKXtcbiAgICAgICAgICAgIHV0aWxzLnBhdGhzLnN0YXJ0U3RyYWlnaHRQYXRoKG5wYywgcGF0aCwgZHVyYXRpb24sdHJ1ZSxcbiAgICAgICAgICAgICAgICAoKT0+e2ZpbmlzaGVkQ2FsbGJhY2soKX0sICgpPT57cG9pbnRSZWFjaGVkQ2FsbGJhY2soKX0pXG4gICAgICAgIH1cbiAgICAgICAgZWxzZXtcbiAgICAgICAgICAgIHV0aWxzLnBhdGhzLnN0YXJ0U21vb3RoUGF0aChucGMsIHBhdGgsIGR1cmF0aW9uLCAzMCwgdHJ1ZSwgXG4gICAgICAgICAgICAgICAgKCk9PntmaW5pc2hlZENhbGxiYWNrKCl9LCAoKT0+e3BvaW50UmVhY2hlZENhbGxiYWNrKCl9KVxuICAgICAgICAgICAgfVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgICB1dGlscy5wYXRocy5zdGFydFNtb290aFBhdGgobnBjLCBwYXRoLCBkdXJhdGlvbiwgMjAsIHRydWUsIFxuICAgICAgICAgICAgKCk9PntmaW5pc2hlZENhbGxiYWNrKCl9LCAoKT0+e3BvaW50UmVhY2hlZENhbGxiYWNrKCl9KVxuICAgIH0gICBcblxuICAgIGlmIChucGNEYXRhLndhbGtpbmdBbmltKSB7XG4gICAgICAgIC8vIGlmICh0aGlzLmVuZEFuaW1UaW1lci5oYXNDb21wb25lbnQoTlBDRGVsYXkpKSB7XG4gICAgICAgIC8vICAgdGhpcy5lbmRBbmltVGltZXIucmVtb3ZlQ29tcG9uZW50KE5QQ0RlbGF5KVxuICAgICAgICAvLyB9XG4gICAgICAgIEFuaW1hdG9yLnBsYXlTaW5nbGVBbmltYXRpb24obnBjLCBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLndhbGtpbmdBbmltLCB0cnVlKVxuICAgICAgICBucGNEYXRhLmxhc3RQbGF5ZWRBbmltID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS53YWxraW5nQW5pbVxuICAgICAgfVxuICAgIG5wY0RhdGEuc3RhdGUgPSBOUENTdGF0ZS5GT0xMT1dQQVRIXG4gICAgY29uc29sZS5sb2coJ2RlYnVnIGhlcmUnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RvcFdhbGtpbmcobnBjOkVudGl0eSwgZHVyYXRpb24/OiBudW1iZXIsIGZpbmlzaGVkPzpib29sZWFuKSB7XG4gICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgbnBjRGF0YS5zdGF0ZSA9IE5QQ1N0YXRlLlNUQU5ESU5HXG4gICAgbnBjRGF0YS5tYW51YWxTdG9wID0gdHJ1ZVxuXG4gICAgc3RvcFBhdGgobnBjKVxuXG4gICAgaWYgKGR1cmF0aW9uKSB7XG4gICAgICAgIHV0aWxzLnRpbWVycy5zZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICAvL2lmICh0aGlzLmRpYWxvZyAmJiB0aGlzLmRpYWxvZy5pc0RpYWxvZ09wZW4pIHJldHVyblxuICAgICAgICAgICAgaWYobnBjRGF0YS5wYXRoKXtcbiAgICAgICAgICAgICAgICBBbmltYXRvci5zdG9wQWxsQW5pbWF0aW9ucyhucGMsIHRydWUpXG4gICAgICAgICAgICAgICAgaWYobnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS53YWxraW5nQW5pbSl7XG4gICAgICAgICAgICAgICAgICAgIEFuaW1hdG9yLnBsYXlTaW5nbGVBbmltYXRpb24obnBjLCBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLndhbGtpbmdBbmltLHRydWUpXG4gICAgICAgICAgICAgICAgICAgIG5wY0RhdGEubGFzdFBsYXllZEFuaW0gPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLndhbGtpbmdBbmltXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBkdXJhdGlvbiA9IG5wY0RhdGEucGF0aERhdGEudG90YWxEdXJhdGlvblxuICAgICAgICAgICAgICAgIGxldCBjdXJyZW50VGltZXI6bnVtYmVyID0gd2Fsa2luZ1RpbWVycy5nZXQobnBjKSFcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnY3VycmVudCB0aW1lIGlzJywgY3VycmVudFRpbWVyKVxuICAgICAgICAgICAgICAgIGlmKGN1cnJlbnRUaW1lcil7XG4gICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uIC09IGN1cnJlbnRUaW1lclxuICAgICAgICAgICAgICAgIH1cbiAgICBcbiAgICAgICAgICAgICAgICBsZXQgcGF0aDphbnlbXSA9IFtdXG4gICAgICAgICAgICAgICAgbnBjRGF0YS5wYXRoRGF0YS5wYXRoLmZvckVhY2goKHA6YW55KT0+e1xuICAgICAgICAgICAgICAgICAgICBwYXRoLnB1c2gocClcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIHBhdGguc3BsaWNlKDAsbnBjRGF0YS5wYXRoSW5kZXgpXG4gICAgXG4gICAgICAgICAgICAgICAgbGV0IHBvcyA9IFRyYW5zZm9ybS5nZXQobnBjKS5wb3NpdGlvblxuICAgICAgICAgICAgICAgIHBhdGgudW5zaGlmdChWZWN0b3IzLmNyZWF0ZShwb3MueCwgcG9zLnksIHBvcy56KSlcbiAgICBcbiAgICAgICAgICAgICAgICBucGNEYXRhLm1hbnVhbFN0b3AgPSBmYWxzZVxuICAgICAgICAgICAgICAgIHdhbGtOUEMobnBjLG5wY0RhdGEsIG5wY0RhdGEucGF0aERhdGEucGF0aFR5cGUsIGR1cmF0aW9uLCBwYXRoLCBwb2ludFJlYWNoZWRDYWxsYmFja3MuZ2V0KG5wYyksIG9uRmluaXNoQ2FsbGJhY2tzLmdldChucGMpKSAgICBcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LGR1cmF0aW9uICogMTAwMClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHN0b3BQYXRoKG5wYzpFbnRpdHkpe1xuICAgIHV0aWxzLnBhdGhzLnN0b3BQYXRoKG5wYylcbiAgICBJc0ZvbGxvd2luZ1BhdGguZGVsZXRlRnJvbShucGMpXG5cbiAgICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICBpZiAobnBjRGF0YS53YWxraW5nQW5pbSkge1xuICAgICAgICBBbmltYXRvci5wbGF5U2luZ2xlQW5pbWF0aW9uKG5wYywgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS53YWxraW5nQW5pbSlcbiAgICAgICAgbnBjRGF0YS5sYXN0UGxheWVkQW5pbSA9IG5wY0RhdGEuaWRsZUFuaW1cbiAgICB9XG5cbiAgICBpZighbnBjRGF0YS5tYW51YWxTdG9wKXtcbiAgICAgICAgaWYobnBjRGF0YS5wYXRoRGF0YS5sb29wKXtcbiAgICAgICAgICAgIG5wY0RhdGEucGF0aEluZGV4ID0gMFxuICAgICAgICAgICAgd2Fsa2luZ1RpbWVycy5kZWxldGUobnBjKVxuICAgICAgICAgICAgY29uc29sZS5sb2coJ3dlIGFyZSBsb29waW5nIHBhdGgnLCBucGNEYXRhKVxuICAgICAgICAgICAgZm9sbG93UGF0aChucGMsIG5wY0RhdGEucGF0aERhdGEpXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhucGNEYXRhKVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIENhbGxzIHRoZSBOUEMncyBhY3RpdmF0aW9uIGZ1bmN0aW9uIChzZXQgb24gTlBDIGRlZmluaXRpb24pLiBJZiBOUEMgaGFzIGBmYWNlVXNlcmAgPSB0cnVlLCBpdCB3aWxsIHJvdGF0ZSB0byBmYWNlIHRoZSBwbGF5ZXIuIEl0IHN0YXJ0cyBhIGNvb2xkb3duIGNvdW50ZXIgdG8gYXZvaWQgcmVhY3RpdmF0aW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aXZhdGUobnBjOkVudGl0eSkge1xuICAgIGFjdGl2ZU5QQyA9IG5wY1xuICAgIG9uQWN0aXZhdGVDYnMuZ2V0KG5wYykoKVxuXG4gICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgaWYgKG5wY0RhdGEuZmFjZVVzZXIpIHtcbiAgICAgICAgQmlsbGJvYXJkLmNyZWF0ZShucGMsIHtcbiAgICAgICAgICAgIGJpbGxib2FyZE1vZGU6QmlsbGJvYXJkTW9kZS5CTV9ZXG4gICAgICAgIH0pXG4gICAgfVxuICAgIGlzQ29vbGRvd24uc2V0KG5wYywgdHJ1ZSlcbiAgICBucGNEYXRhLmluQ29vbGRvd24gPSB0cnVlXG5cbiAgICB1dGlscy50aW1lcnMuc2V0VGltZW91dChcbiAgICAgICAgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBpc0Nvb2xkb3duLmRlbGV0ZShucGMpXG4gICAgICAgICAgICBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLmluQ29vbGRvd24gPSBmYWxzZVxuICAgICAgICAgICAgaWYoQmlsbGJvYXJkLmhhcyhucGMpKXtcbiAgICAgICAgICAgICAgICBCaWxsYm9hcmQuZGVsZXRlRnJvbShucGMpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIDEwMDAgKiBucGNEYXRhLmNvb2xEb3duRHVyYXRpb25cbiAgICApXG4gICAgY29uc29sZS5sb2coJ2FjdGl2YXRlZCBucGMsJywgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKSlcbn1cblxuZnVuY3Rpb24gZW5kSW50ZXJhY3Rpb24obnBjOkVudGl0eSkge1xuICAgICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICAgbnBjRGF0YS5zdGF0ZSA9IE5QQ1N0YXRlLlNUQU5ESU5HXG5cbiAgICAgICAgaWYgKG5wY0RpYWxvZ0NvbXBvbmVudC5oYXMobnBjKSAmJiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYykudmlzaWJsZSkge1xuICAgICAgICAgICAgY2xvc2VEaWFsb2cobnBjKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYobnBjRGF0YS5mYWNlVXNlcil7XG4gICAgICAgICAgICBCaWxsYm9hcmQuZGVsZXRlRnJvbShucGMpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZygnZW5kaW5nIGludGVyYWN0aW9uJywgbnBjRGF0YSwgYnViYmxlcy5nZXQobnBjKSlcbiAgICAgICAgaWYobnBjRGF0YS5oYXNCdWJibGUgJiYgYnViYmxlcy5nZXQobnBjKS5pc0J1YmJsZU9wZW4pe1xuICAgICAgICAgICAgY2xvc2VCdWJibGUobnBjKVxuICAgICAgICB9XG59XG5cbi8qKlxuICogRW5kcyBpbnRlcmFjdGlvbiBhbmQgY2FsbHMgdGhlIG9uV2Fsa0F3YXkgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZVdhbGtBd2F5KG5wYzpFbnRpdHkpIHtcbiAgICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICBpZiAobnBjRGF0YS5zdGF0ZSA9PSBOUENTdGF0ZS5GT0xMT1dQQVRIKSB7XG4gICAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGVuZEludGVyYWN0aW9uKG5wYylcblxuICAgIGlmIChvbldhbGtBd2F5Q2JzLmdldChucGMpKSB7XG4gICAgICAgIG9uV2Fsa0F3YXlDYnMuZ2V0KG5wYykoKVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBsYXlBbmltYXRpb24obnBjOkVudGl0eSwgYW5pbTpzdHJpbmcsIG5vTG9vcD86Ym9vbGVhbiwgZHVyYXRpb24/Om51bWJlcil7XG4gICAgbGV0IGFuaW1hdGlvbnMgPSBBbmltYXRvci5nZXRNdXRhYmxlKG5wYylcbiAgICBpZihhbmltYXRpb25zLnN0YXRlcy5maWx0ZXIoKGFuaW1hdGlvbik9PiBhbmltYXRpb24ubmFtZSA9PT0gYW5pbSkubGVuZ3RoID09IDApe1xuICAgICAgICBhbmltYXRpb25zLnN0YXRlcy5wdXNoKHtuYW1lOmFuaW0sIGNsaXA6YW5pbSwgbG9vcDogbm9Mb29wPyBmYWxzZSA6IHRydWV9KVxuICAgIH1cblxuICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgIGlmKG5wY0RhdGEuc3RhdGUgPT0gTlBDU3RhdGUuRk9MTE9XUEFUSCl7XG4gICAgICAgIHV0aWxzLnBhdGhzLnN0b3BQYXRoKG5wYylcbiAgICB9XG5cbiAgICBpZihhbmltVGltZXJzLmhhcyhucGMpKXtcbiAgICAgICAgdXRpbHMudGltZXJzLmNsZWFyVGltZW91dChhbmltVGltZXJzLmdldChucGMpKVxuICAgICAgICBhbmltVGltZXJzLmRlbGV0ZShucGMpXG4gICAgfVxuXG4gICAgQW5pbWF0b3Iuc3RvcEFsbEFuaW1hdGlvbnMobnBjLCB0cnVlKVxuICAgIEFuaW1hdG9yLnBsYXlTaW5nbGVBbmltYXRpb24obnBjLCBhbmltLCB0cnVlKVxuICAgIGlmKGR1cmF0aW9uKXtcbiAgICAgICAgY29uc29sZS5sb2coJ2hhdmUgYSBkdXJhdGlvbiB0byBwbGF5IGFuaW1hdGlvbicpXG4gICAgICAgIGFuaW1UaW1lcnMuc2V0KG5wYywgdXRpbHMudGltZXJzLnNldFRpbWVvdXQoKCk9PntcbiAgICAgICAgICAgIGFuaW1UaW1lcnMuZGVsZXRlKG5wYylcbiAgICAgICAgICAgIEFuaW1hdG9yLnN0b3BBbGxBbmltYXRpb25zKG5wYywgdHJ1ZSlcbiAgICAgICAgICAgIGlmKG5wY0RhdGEuaWRsZUFuaW0pe1xuICAgICAgICAgICAgICAgIEFuaW1hdG9yLnBsYXlTaW5nbGVBbmltYXRpb24obnBjLCBucGNEYXRhLmlkbGVBbmltKVxuICAgICAgICAgICAgICAgIG5wY0RhdGEubGFzdFBsYXllZEFuaW0gPSBucGNEYXRhLmlkbGVBbmltXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDEwMDAgKiBkdXJhdGlvbikpLy9cbiAgICB9IFxuXG4gICAgbnBjRGF0YS5sYXN0UGxheWVkQW5pbSA9IGFuaW1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoYW5nZUlkbGVBbmltKG5wYzpFbnRpdHksIGFuaW1hdGlvbjpzdHJpbmcsIHBsYXk/OmJvb2xlYW4pe1xuICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgIG5wY0RhdGEuaWRsZUFuaW0gPSBhbmltYXRpb25cblxuICAgIGxldCBhbmltYXRpb25zID0gQW5pbWF0b3IuZ2V0TXV0YWJsZShucGMpXG4gICAgaWYoYW5pbWF0aW9ucy5zdGF0ZXMuZmlsdGVyKChhbmltKT0+IGFuaW0ubmFtZSA9PT0gYW5pbWF0aW9uKS5sZW5ndGggPT0gMCl7XG4gICAgICAgIGFuaW1hdGlvbnMuc3RhdGVzLnB1c2goe25hbWU6YW5pbWF0aW9uLCBjbGlwOmFuaW1hdGlvbiwgbG9vcDogdHJ1ZX0pXG4gICAgfVxuXG4gICAgaWYocGxheSl7XG4gICAgICAgIHBsYXlBbmltYXRpb24obnBjLCBhbmltYXRpb24sIHRydWUpXG4gICAgICAgIG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykubGFzdFBsYXllZEFuaW0gPSBhbmltYXRpb25cbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWxrQnViYmxlKG5wYzpFbnRpdHksIHNjcmlwdDpEaWFsb2dbXSwgc3RhcnRJbmRleD86bnVtYmVyKXtcbiAgICBvcGVuQnViYmxlKG5wYywgc2NyaXB0LHN0YXJ0SW5kZXgpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEaWFsb2dXaW5kb3coZGVmYXVsdFBvcnRyYWl0PzpJbWFnZURhdGEsIHNvdW5kPzpzdHJpbmcpe1xuICAgIGxldCBkaWFsb2cgPSBlbmdpbmUuYWRkRW50aXR5KClcbiAgICBhZGREaWFsb2coZGlhbG9nLHNvdW5kLCBkZWZhdWx0UG9ydHJhaXQpXG4gICAgcmV0dXJuIGRpYWxvZ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb3BlbkRpYWxvZ1dpbmRvdyhucGM6RW50aXR5LCBkaWFsb2c6RGlhbG9nW10sIHN0YXJ0SW5kZXg/Om51bWJlciB8IHN0cmluZyl7XG4gICAgYWN0aXZlTlBDID0gbnBjXG5cbiAgICBpZihucGNEaWFsb2dDb21wb25lbnQuaGFzKG5wYykpe1xuICAgICAgICBsZXQgaW5kZXg6YW55XG4gICAgICAgIGlmICghc3RhcnRJbmRleCkge1xuICAgICAgICAgIGluZGV4ID0gMFxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBzdGFydEluZGV4ID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIGluZGV4ID0gc3RhcnRJbmRleFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGluZGV4ID0gZmluZERpYWxvZ0J5TmFtZShkaWFsb2csIHN0YXJ0SW5kZXgpXG4gICAgICAgIH1cbiAgICAgICAgb3BlbkRpYWxvZyhucGMsZGlhbG9nLCBpbmRleClcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbG9zZURpYWxvZ1dpbmRvdygpe1xuXG59Il19
|
|
426
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL25wYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQVUsYUFBYSxFQUFjLFlBQVksRUFBQyxZQUFZLEVBQUMsbUJBQW1CLEVBQUMsU0FBUyxFQUFpQixNQUFNLGNBQWMsQ0FBQTtBQUN2SyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDM0QsT0FBTyxFQUE4QyxXQUFXLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBZSxNQUFNLFNBQVMsQ0FBQztBQUNsSCxPQUFPLEtBQUssS0FBSyxNQUFNLGdCQUFnQixDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwRyxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFaEYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUF1QixJQUFJLEdBQUcsRUFBRSxDQUFBO0FBQzFELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFxQixJQUFJLEdBQUcsRUFBRSxDQUFBO0FBQzNELE1BQU0sQ0FBQyxJQUFJLFNBQVMsR0FBVSxDQUFDLENBQUE7QUFDL0IsTUFBTSxDQUFDLElBQUksV0FBVyxHQUFVLENBQUMsQ0FBQTtBQUVqQyxNQUFNLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFBO0FBQ2pDLE1BQU0sQ0FBQyxT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ICdAZGNsL3Nkay9yZWFjdC1lY3MnXG5pbXBvcnQgeyBBbmltYXRvciwgQXZhdGFyU2hhcGUsIGVuZ2luZSwgRW50aXR5LCBHbHRmQ29udGFpbmVyLCBJbnB1dEFjdGlvbixNZXNoQ29sbGlkZXIsTWVzaFJlbmRlcmVyLHBvaW50ZXJFdmVudHNTeXN0ZW0sVHJhbnNmb3JtLCBUcmFuc2Zvcm1UeXBlIH0gZnJvbSAnQGRjbC9zZGsvZWNzJ1xuaW1wb3J0IHsgQ29sb3IzLCBRdWF0ZXJuaW9uLCBWZWN0b3IzIH0gZnJvbSAnQGRjbC9zZGsvbWF0aCdcbmltcG9ydCB7IERpYWxvZywgRm9sbG93UGF0aERhdGEsIEltYWdlRGF0YSwgTlBDRGF0YSwgTlBDUGF0aFR5cGUsIE5QQ1N0YXRlLCBOUENUeXBlLCBUcmlnZ2VyRGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnQGRjbC1zZGsvdXRpbHMnXG5pbXBvcnQgeyBJc0ZvbGxvd2luZ1BhdGgsIFRyYWNrVXNlckZsYWcgfSBmcm9tICcuL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgZmFjZVVzZXJTeXN0ZW0sIGhhbmRsZUJ1YmJsZXR5cGluZywgaGFuZGxlRGlhbG9nVHlwaW5nLCBoYW5kbGVQYXRoVGltZXMgfSBmcm9tICcuL3N5c3RlbXMnO1xuaW1wb3J0IHsgYWRkRGlhbG9nLCBjbG9zZURpYWxvZywgZmluZERpYWxvZ0J5TmFtZSwgbnBjRGlhbG9nQ29tcG9uZW50LCBvcGVuRGlhbG9nIH0gZnJvbSAnLi9kaWFsb2cnO1xuaW1wb3J0IHsgYnViYmxlcywgY2xvc2VCdWJibGUsIGNyZWF0ZURpYWxvZ0J1YmJsZSwgb3BlbkJ1YmJsZSB9IGZyb20gJy4vYnViYmxlJztcblxuZXhwb3J0IGNvbnN0IHdhbGtpbmdUaW1lcnM6IE1hcDxFbnRpdHksbnVtYmVyPiA9IG5ldyBNYXAoKVxuZXhwb3J0IGNvbnN0IG5wY0RhdGFDb21wb25lbnQ6IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcbmV4cG9ydCBsZXQgYWN0aXZlTlBDOm51bWJlciA9IDBcbmV4cG9ydCBsZXQgYmxhbmtEaWFsb2c6bnVtYmVyID0gMFxuXG5lbmdpbmUuYWRkU3lzdGVtKGhhbmRsZVBhdGhUaW1lcylcbmVuZ2luZS5hZGRTeXN0ZW0oaGFuZGxlRGlhbG9nVHlwaW5nKVxuZW5naW5lLmFkZFN5c3RlbShoYW5kbGVCdWJibGV0eXBpbmcpXG5lbmdpbmUuYWRkU3lzdGVtKGZhY2VVc2VyU3lzdGVtKVxuXG5jb25zdCBpc0Nvb2xkb3duOiBNYXA8RW50aXR5LCBhbnk+ID0gbmV3IE1hcCgpXG5jb25zdCBvbkFjdGl2YXRlQ2JzOiBNYXA8RW50aXR5LCBhbnk+ID0gbmV3IE1hcCgpXG5jb25zdCBvbldhbGtBd2F5Q2JzOiBNYXA8RW50aXR5LCBhbnk+ID0gbmV3IE1hcCgpXG5jb25zdCBhbmltVGltZXJzOiBNYXA8RW50aXR5LGFueT4gPSBuZXcgTWFwKClcbmNvbnN0IHBvaW50UmVhY2hlZENhbGxiYWNrczogTWFwPEVudGl0eSwgYW55PiA9IG5ldyBNYXAoKVxuY29uc3Qgb25GaW5pc2hDYWxsYmFja3M6IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dEZWJ1ZyhkZWJ1Zzpib29sZWFuKXtcbiAgICB1dGlscy50cmlnZ2Vycy5lbmFibGVEZWJ1Z0RyYXcoZGVidWcpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXRhKG5wYzpFbnRpdHkpe1xuICAgIHJldHVybiBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGUoXG4gICAgdHJhbnNmb3JtOiBhbnksXG4gICAgZGF0YTogTlBDRGF0YVxuKXtcbiAgICBsZXQgbnBjID0gZW5naW5lLmFkZEVudGl0eSgpXG5cbiAgICBsZXQgdDpUcmFuc2Zvcm1UeXBlID0ge3Bvc2l0aW9uOiB0cmFuc2Zvcm0ucG9zaXRpb24gPyB0cmFuc2Zvcm0ucG9zaXRpb24gOiBWZWN0b3IzLmNyZWF0ZSgwLDAsMCksIHJvdGF0aW9uOiB0cmFuc2Zvcm0ucm90YXRpb24gPyB0cmFuc2Zvcm0ucm90YXRpb24gOiBRdWF0ZXJuaW9uLlplcm8oKSwgc2NhbGU6IHRyYW5zZm9ybS5zY2FsZSA/IHRyYW5zZm9ybS5zY2FsZSA6IFZlY3RvcjMuT25lKCl9XG4gICAgVHJhbnNmb3JtLmNyZWF0ZShucGMsIHQpXG5cbiAgICBucGNEYXRhQ29tcG9uZW50LnNldChucGMse1xuICAgICAgICBpbnRyb2R1Y2VkOiBmYWxzZSxcbiAgICAgICAgaW5Db29sZG93bjogZmFsc2UsXG4gICAgICAgIGNvb2xEb3duRHVyYXRpb246IGRhdGEgJiYgZGF0YS5jb29sRG93bkR1cmF0aW9uID8gZGF0YS5jb29sRG93bkR1cmF0aW9uIDogNSxcbiAgICAgICAgZmFjZVVzZXI6IGRhdGEgJiYgZGF0YS5mYWNlVXNlciA/IGRhdGEuZmFjZVVzZXIgOiB1bmRlZmluZWQsXG4gICAgICAgIHdhbGtpbmdTcGVlZDoyLFxuICAgICAgICB3YWxraW5nQW5pbTogZGF0YSAmJiBkYXRhLndhbGtpbmdBbmltID8gZGF0YS53YWxraW5nQW5pbSA6IHVuZGVmaW5lZCxcbiAgICAgICAgcGF0aERhdGE6IGRhdGEucGF0aERhdGEgPyBkYXRhLnBhdGhEYXRhIDogdW5kZWZpbmVkLFxuICAgICAgICBjdXJyZW50UGF0aERhdGE6IFtdLFxuICAgICAgICBtYW51YWxTdG9wOmZhbHNlLFxuICAgICAgICBwYXRoSW5kZXg6MCxcbiAgICAgICAgc3RhdGU6TlBDU3RhdGUuU1RBTkRJTkcsXG4gICAgICAgIGlkbGVBbmltOiBkYXRhICYmIGRhdGEuaWRsZUFuaW0gPyBkYXRhLmlkbGVBbmltIDogXCJJZGxlXCIsXG4gICAgICAgIGJ1YmJsZUhlaWdodDogZGF0YSAmJiBkYXRhLnRleHRCdWJibGUgJiYgZGF0YS5idWJibGVIZWlnaHQgPyBkYXRhLmJ1YmJsZUhlaWdodCA6IHVuZGVmaW5lZCxcbiAgICAgICAgYnViYmxlU291bmQ6IGRhdGEuZGlhbG9nU291bmQgPyBkYXRhLmRpYWxvZ1NvdW5kIDogdW5kZWZpbmVkLFxuICAgICAgICBoYXNCdWJibGU6IGRhdGEgJiYgZGF0YS50ZXh0QnViYmxlID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICB0dXJuU3BlZWQ6IGRhdGEgJiYgZGF0YS50dXJuaW5nU3BlZWQgPyBkYXRhLnR1cm5pbmdTcGVlZCA6IDJcbiAgICB9KVxuXG4gICAgaWYoZGF0YSAmJiBkYXRhLm5vVUkpe31cbiAgICBlbHNlIGlmKGRhdGEgJiYgZGF0YS5wb3J0cmFpdCl7XG4gICAgICAgICAgICBhZGREaWFsb2cobnBjLCBkYXRhICYmIGRhdGEuZGlhbG9nU291bmQgPyBkYXRhLmRpYWxvZ1NvdW5kIDogdW5kZWZpbmVkLCB0eXBlb2YgZGF0YS5wb3J0cmFpdCA9PT0gYHN0cmluZ2AgPyB7IHBhdGg6IGRhdGEucG9ydHJhaXQgfSA6IGRhdGEucG9ydHJhaXQpXG4gICAgICAgIH1cbiAgICBlbHNle1xuICAgICAgICBhZGREaWFsb2cobnBjLCBkYXRhICYmIGRhdGEuZGlhbG9nU291bmQgPyBkYXRhLmRpYWxvZ1NvdW5kIDogdW5kZWZpbmVkKVxuICAgIH1cblxuICAgIGlmIChkYXRhICYmIGRhdGEudGV4dEJ1YmJsZSkge1xuICAgICAgICBjcmVhdGVEaWFsb2dCdWJibGUobnBjLCBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLmJ1YmJsZUhlaWdodClcbiAgICAgIH1cblxuICAgIG9uQWN0aXZhdGVDYnMuc2V0KG5wYywgKCk9PntcbiAgICAgICAgZGF0YS5vbkFjdGl2YXRlKClcbiAgICB9KVxuXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5oYXNPd25Qcm9wZXJ0eShcIm9uV2Fsa0F3YXlcIikpIHtcbiAgICAgICAgb25XYWxrQXdheUNicy5zZXQobnBjLCAoKT0+e1xuICAgICAgICAgICAgaWYoIWRhdGEgfHwgIWRhdGEuY29udGludWVPbldhbGtBd2F5KXtcbiAgICAgICAgICAgICAgICBpZihucGNEaWFsb2dDb21wb25lbnQuaGFzKG5wYykpe1xuICAgICAgICAgICAgICAgICAgICBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYykudmlzaWJsZSA9IGZhbHNlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZXtcbiAgICAgICAgICAgICAgICBpZihucGNEaWFsb2dDb21wb25lbnQuaGFzKG5wYykpe1xuICAgICAgICAgICAgICAgICAgICBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYykudmlzaWJsZSA9IGZhbHNlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGF0YS5vbldhbGtBd2F5ISgpXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgYWRkTlBDQm9uZXMobnBjLCBkYXRhKVxuICAgIGFkZENsaWNrUmVhY3Rpb25zKG5wYywgZGF0YSlcbiAgICBhZGRUcmlnZ2VyQXJlYShucGMsIGRhdGEpXG4gICAgXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5wYXRoRGF0YSAmJiBkYXRhLnBhdGhEYXRhLnNwZWVkKSB7XG4gICAgICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgICAgICBucGNEYXRhLndhbGtpbmdTcGVlZCA9IGRhdGEucGF0aERhdGEuc3BlZWRcbiAgICB9XG5cbiAgICBpZiAoZGF0YSAmJiBkYXRhLmNvb2xEb3duRHVyYXRpb24pIHtcbiAgICAgICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgICAgIG5wY0RhdGEuY29vbERvd25EdXJhdGlvbiA9IGRhdGEuY29vbERvd25EdXJhdGlvblxuICAgIH1cblxuICAgIGlmIChkYXRhICYmIGRhdGEucGF0aERhdGEpe1xuICAgICAgICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICAgICAgLy9ucGNEYXRhLmN1cnJlbnRQYXRoRGF0YSA9IG5wY0RhdGEucGF0aERhdGFcbiAgICAgICAgZm9sbG93UGF0aChucGMsIG5wY0RhdGEucGF0aERhdGEpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5wY1xufVxuXG5mdW5jdGlvbiBhZGROUENCb25lcyhucGM6RW50aXR5LCBkYXRhOk5QQ0RhdGEpe1xuICAgIHN3aXRjaChkYXRhLnR5cGUpe1xuICAgICAgICBjYXNlIE5QQ1R5cGUuQVZBVEFSOlxuICAgICAgICAgICAgQXZhdGFyU2hhcGUuY3JlYXRlKG5wYywge1xuICAgICAgICAgICAgICAgIGlkOiBcIm5wY1wiLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwiTlBDXCIsXG4gICAgICAgICAgICAgICAgYm9keVNoYXBlOlwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOkJhc2VNYWxlXCIsXG4gICAgICAgICAgICAgICAgZW1vdGVzOiBbXSxcbiAgICAgICAgICAgICAgICB3ZWFyYWJsZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgXCJ1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6Zl9leWVzXzAwXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOmZfZXllYnJvd3NfMDBcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6Zl9tb3V0aF8wMFwiLFxuICAgICAgICAgICAgICAgICAgICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpjb21meV9zcG9ydF9zYW5kYWxzXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOnNvY2Nlcl9wYW50c1wiLFxuICAgICAgICAgICAgICAgICAgICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczplbGVnYW50X3N3ZWF0ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIE5QQ1R5cGUuQ1VTVE9NOlxuICAgICAgICAgICAgR2x0ZkNvbnRhaW5lci5jcmVhdGUobnBjLCB7IFxuICAgICAgICAgICAgICAgIHNyYzogZGF0YSAmJiBkYXRhLm1vZGVsID8gZGF0YS5tb2RlbCA6IFwiXCIgXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgQW5pbWF0b3IuY3JlYXRlKG5wYywge1xuICAgICAgICAgICAgICAgIHN0YXRlczpbe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOmRhdGEgJiYgZGF0YS5pZGxlQW5pbSA/IGRhdGEuaWRsZUFuaW0gOiAnSWRsZScsXG4gICAgICAgICAgICAgICAgICAgIGNsaXA6ZGF0YSAmJiBkYXRhLmlkbGVBbmltID8gZGF0YS5pZGxlQW5pbSA6ICdJZGxlJyxcbiAgICAgICAgICAgICAgICAgICAgbG9vcDp0cnVlXG4gICAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgICAgICAgICAgbnBjRGF0YS5pZGxlQW5pbSA9IGRhdGEgJiYgZGF0YS5pZGxlQW5pbSA/IGRhdGEuaWRsZUFuaW0gOiAnSWRsZSdcbiAgICAgICAgICAgIG5wY0RhdGEubGFzdFBsYXllZEFuaW0gPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLmlkbGVBbmltXG5cbiAgICAgICAgICAgIEFuaW1hdG9yLnBsYXlTaW5nbGVBbmltYXRpb24obnBjLCBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLmlkbGVBbmltKVxuXG5cbiAgICAgICAgICAgIGlmIChkYXRhICYmIGRhdGEud2Fsa2luZ0FuaW0pIHtcbiAgICAgICAgICAgICAgICBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLndhbGtpbmdBbmltID0gZGF0YS53YWxraW5nQW5pbVxuICAgICAgICAgICAgICAgIGxldCBhbmltYXRpb25zID0gQW5pbWF0b3IuZ2V0TXV0YWJsZShucGMpXG4gICAgICAgICAgICAgICAgYW5pbWF0aW9ucy5zdGF0ZXMucHVzaCh7bmFtZTpkYXRhLndhbGtpbmdBbmltLCBjbGlwOiBkYXRhLndhbGtpbmdBbmltLCBsb29wOnRydWV9KVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIE5QQ1R5cGUuQkxBTks6XG4gICAgICAgICAgICBNZXNoUmVuZGVyZXIuc2V0Qm94KG5wYylcbiAgICAgICAgICAgIE1lc2hDb2xsaWRlci5zZXRCb3gobnBjKVxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGFkZENsaWNrUmVhY3Rpb25zKG5wYzpFbnRpdHksIGRhdGE6TlBDRGF0YSl7XG4gICAgbGV0IGFjdGl2YXRlQnV0dG9uID0gZGF0YSAmJiBkYXRhLm9ubHlDbGlja1RyaWdnZXIgPyBJbnB1dEFjdGlvbi5JQV9QT0lOVEVSIDogSW5wdXRBY3Rpb24uSUFfUFJJTUFSWVxuXG4gICAgcG9pbnRlckV2ZW50c1N5c3RlbS5vblBvaW50ZXJEb3duKFxuICAgICAgICBucGMsXG4gICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChpc0Nvb2xkb3duLmhhcyhucGMpIHx8IChucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYykudmlzaWJsZSkpIHJldHVyblxuICAgICAgICAgICAgYWN0aXZhdGUobnBjKVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBidXR0b246IGFjdGl2YXRlQnV0dG9uLFxuICAgICAgICAgICAgaG92ZXJUZXh0OiBkYXRhICYmIGRhdGEuaG92ZXJUZXh0ID8gZGF0YS5ob3ZlclRleHQgOiAnVGFsaycsXG4gICAgICAgICAgICBzaG93RmVlZGJhY2s6IGRhdGEgJiYgZGF0YS5vbmx5RXh0ZXJuYWxUcmlnZ2VyID8gZmFsc2UgOiB0cnVlLFxuICAgICAgICB9XG4gICAgICAgIClcblxuICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLm9ubHlFeHRlcm5hbFRyaWdnZXIpIHtcbiAgICAgICAgcG9pbnRlckV2ZW50c1N5c3RlbS5yZW1vdmVPblBvaW50ZXJEb3duKG5wYylcbiAgICAgICAgfSBcbn1cblxuZnVuY3Rpb24gYWRkVHJpZ2dlckFyZWEobnBjOkVudGl0eSwgZGF0YTpOUENEYXRhKXtcblxuICAgICAgICBsZXQgdHJpZ2dlckRhdGE6IFRyaWdnZXJEYXRhID0ge31cblxuICAgICAgICBpZiAoIWRhdGEgfHwgKGRhdGEgJiYgIWRhdGEub25seUV4dGVybmFsVHJpZ2dlciAmJiAhZGF0YS5vbmx5Q2xpY2tUcmlnZ2VyICYmICFkYXRhLm9ubHlFVHJpZ2dlcikpe1xuICAgICAgICBvbkFjdGl2YXRlQ2JzLnNldChucGMsICgpPT57XG4gICAgICAgICAgICBpZiAoaXNDb29sZG93bi5oYXMobnBjKSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKG5wYywgJyBpbiBjb29sZG93bicpXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9IFxuICAgICAgICAgICAgZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgKG5wY0RpYWxvZ0NvbXBvbmVudC5oYXMobnBjKSAmJiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYykudmlzaWJsZSkgfHxcbiAgICAgICAgICAgICAgICAoZGF0YSAmJiBkYXRhLm9ubHlFeHRlcm5hbFRyaWdnZXIpIHx8XG4gICAgICAgICAgICAgICAgKGRhdGEgJiYgZGF0YS5vbmx5Q2xpY2tUcmlnZ2VyKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkYXRhLm9uQWN0aXZhdGUoKVxuICAgICAgICB9KVxuICAgICAgICB0cmlnZ2VyRGF0YS5vbkNhbWVyYUVudGVyID0gb25BY3RpdmF0ZUNicy5nZXQobnBjKVxuICAgICAgICB9XG5cbiAgICAvLyB3aGVuIGV4aXRpbmcgdHJpZ2dlclxuICAgIGlmICghZGF0YSB8fCAoZGF0YSAmJiAhZGF0YS5jb250aW51ZU9uV2Fsa0F3YXkpKSB7XG4gICAgICAgIHRyaWdnZXJEYXRhLm9uQ2FtZXJhRXhpdCA9ICgpID0+IHtcbiAgICAgICAgICAgIGhhbmRsZVdhbGtBd2F5KG5wYylcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHdoZW4gZW50ZXJpbmcgdHJpZ2dlclxuICAgIGlmIChcbiAgICAgICAgIWRhdGEgfHxcbiAgICAgICAgKGRhdGEgJiYgIWRhdGEub25seUV4dGVybmFsVHJpZ2dlciAmJiAhZGF0YS5vbmx5Q2xpY2tUcmlnZ2VyICYmICFkYXRhLm9ubHlFVHJpZ2dlcilcbiAgICApIHtcbiAgICAgICAgdHJpZ2dlckRhdGEub25DYW1lcmFFbnRlciA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChpc0Nvb2xkb3duLmhhcyhucGMpKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2cobnBjLCAnIGluIGNvb2xkb3duJylcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH0gXG4gICAgICAgICAgICAvLyBlbHNlIGlmIChcbiAgICAgICAgICAgIC8vICAgICAodGhpcy5kaWFsb2cgJiYgdGhpcy5kaWFsb2cuaXNEaWFsb2dPcGVuKSB8fFxuICAgICAgICAgICAgLy8gICAgIChkYXRhICYmIGRhdGEub25seUV4dGVybmFsVHJpZ2dlcikgfHxcbiAgICAgICAgICAgIC8vICAgICAoZGF0YSAmJiBkYXRhLm9ubHlDbGlja1RyaWdnZXIpXG4gICAgICAgICAgICAvLyApIHtcbiAgICAgICAgICAgIC8vICAgICByZXR1cm5cbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIGFjdGl2YXRlKG5wYylcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGFkZCB0cmlnZ2VyXG4gICAgaWYgKHRyaWdnZXJEYXRhLm9uQ2FtZXJhRW50ZXIgfHwgdHJpZ2dlckRhdGEub25DYW1lcmFFeGl0KSB7XG4gICAgICAgIHV0aWxzLnRyaWdnZXJzLmFkZFRyaWdnZXIobnBjLDI1NCwxLFt7dHlwZTonc3BoZXJlJywgcG9zaXRpb246IFZlY3RvcjMuWmVybygpLCByYWRpdXM6IGRhdGEucmVhY3REaXN0YW5jZSAhPSB1bmRlZmluZWQgPyBkYXRhLnJlYWN0RGlzdGFuY2UgOiA2fV0sIHRyaWdnZXJEYXRhLm9uQ2FtZXJhRW50ZXIgPyB0cmlnZ2VyRGF0YS5vbkNhbWVyYUVudGVyIDogdW5kZWZpbmVkLCB0cmlnZ2VyRGF0YS5vbkNhbWVyYUV4aXQgPyB0cmlnZ2VyRGF0YS5vbkNhbWVyYUV4aXQgOiB1bmRlZmluZWQsIENvbG9yMy5SZWQoKSlcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb2xsb3dQYXRoKG5wYzpFbnRpdHksIGRhdGE/OkZvbGxvd1BhdGhEYXRhKXtcbiAgICAgICAgXG4gICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgbGV0IHBhdGg6YW55W10gPVtdXG5cbiAgICBpZihkYXRhKXtcbiAgICAgICAgbnBjRGF0YS5wYXRoRGF0YSA9IGRhdGFcblxuICAgICAgICBpZihucGNEYXRhLmZhY2VVc2VyKXtcbiAgICAgICAgICAgIGlmKFRyYWNrVXNlckZsYWcuaGFzKG5wYykpe1xuICAgICAgICAgICAgICAgIFRyYWNrVXNlckZsYWcuZGVsZXRlRnJvbShucGMpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZihkYXRhLnN0YXJ0aW5nUG9pbnQpe1xuICAgICAgICAgICAgZGF0YS5wYXRoPy5zcGxpY2UoMCxkYXRhLnN0YXJ0aW5nUG9pbnQgLSAxKVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHBvcyA9IFRyYW5zZm9ybS5nZXQobnBjKS5wb3NpdGlvblxuICAgICAgICBwYXRoLnB1c2goVmVjdG9yMy5jcmVhdGUocG9zLngsIHBvcy55LCBwb3MueikpXG4gICAgICAgIGRhdGEucGF0aD8uZm9yRWFjaCgocCk9PntcbiAgICAgICAgICAgIHBhdGgucHVzaChwKVxuICAgICAgICB9KVxuXG4gICAgICAgIG9uRmluaXNoQ2FsbGJhY2tzLnNldChucGMsKCk9PntcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdvbiBmaW5pc2hlZCBjYWxsYmFjaycpXG4gICAgICAgICAgICBpZihkYXRhICYmIGRhdGEub25GaW5pc2hDYWxsYmFjayAmJiAhZGF0YS5sb29wKXtcbiAgICAgICAgICAgICAgICBkYXRhLm9uRmluaXNoQ2FsbGJhY2tcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0b3BQYXRoKG5wYylcbiAgICAgICAgfSlcblxuICAgICAgICBwb2ludFJlYWNoZWRDYWxsYmFja3Muc2V0KG5wYywgKCk9PntcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdvbiBwb2ludCByZWFjaGVkIGNhbGxiYWNrJylcbiAgICAgICAgICAgIGxldCBkYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgICAgICAgICAgZGF0YS5wYXRoSW5kZXggKz0gMVxuICAgICAgICAgICAgZGF0YS5vblJlYWNoZWRQb2ludENhbGxiYWNrID8gZGF0YS5vblJlYWNoZWRQb2ludENhbGxiYWNrIDogdW5kZWZpbmVkXG4gICAgICAgIH0pXG4gICAgICAgIHdhbGtOUEMobnBjLCBucGNEYXRhLCBkYXRhLnBhdGhUeXBlISwgZGF0YS50b3RhbER1cmF0aW9uLCBwYXRoLCBwb2ludFJlYWNoZWRDYWxsYmFja3MuZ2V0KG5wYyksIG9uRmluaXNoQ2FsbGJhY2tzLmdldChucGMpKVxuICAgIH1lbHNle1xuICAgICAgICBpZihucGNEYXRhLm1hbnVhbFN0b3Ape1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ3dlIGhhdmUgbWFudWFsIHN0b3AsIG5lZWQgdG8gcGljayBiYWNrIHVwIHdoZXJlIHdlIGxlZnQgb2ZmJylcbiAgICAgICAgfVxuICAgICAgICBlbHNle1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ3dlIGFyZSB0cnlpbmcgdG8gZm9sbG93IGEgcGF0aCB3aXRvdXQgc3RhcnRpbmcgb25lIHByaW9yJylcbiAgICAgICAgfVxuICAgIH1cbiAgICB9XG5cbmZ1bmN0aW9uIHdhbGtOUEMobnBjOkVudGl0eSwgbnBjRGF0YTphbnksIHR5cGU6TlBDUGF0aFR5cGUsIGR1cmF0aW9uOm51bWJlciwgcGF0aDpWZWN0b3IzW10sIHBvaW50UmVhY2hlZENhbGxiYWNrPzphbnksIGZpbmlzaGVkQ2FsbGJhY2s/OmFueSl7XG4gICAgXG4gICAgaWYoSXNGb2xsb3dpbmdQYXRoLmhhcyhucGMpKXtcbiAgICAgICAgSXNGb2xsb3dpbmdQYXRoLmRlbGV0ZUZyb20obnBjKVxuICAgICAgICB3YWxraW5nVGltZXJzLmRlbGV0ZShucGMpXG4gICAgfVxuICAgIElzRm9sbG93aW5nUGF0aC5jcmVhdGUobnBjKVxuXG4gICAgaWYodHlwZSl7XG4gICAgICAgIGlmKHR5cGU9PSBOUENQYXRoVHlwZS5SSUdJRF9QQVRIKXtcbiAgICAgICAgICAgIHV0aWxzLnBhdGhzLnN0YXJ0U3RyYWlnaHRQYXRoKG5wYywgcGF0aCwgZHVyYXRpb24sdHJ1ZSxcbiAgICAgICAgICAgICAgICAoKT0+e2ZpbmlzaGVkQ2FsbGJhY2soKX0sICgpPT57cG9pbnRSZWFjaGVkQ2FsbGJhY2soKX0pXG4gICAgICAgIH1cbiAgICAgICAgZWxzZXtcbiAgICAgICAgICAgIHV0aWxzLnBhdGhzLnN0YXJ0U21vb3RoUGF0aChucGMsIHBhdGgsIGR1cmF0aW9uLCAzMCwgdHJ1ZSwgXG4gICAgICAgICAgICAgICAgKCk9PntmaW5pc2hlZENhbGxiYWNrKCl9LCAoKT0+e3BvaW50UmVhY2hlZENhbGxiYWNrKCl9KVxuICAgICAgICAgICAgfVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgICB1dGlscy5wYXRocy5zdGFydFNtb290aFBhdGgobnBjLCBwYXRoLCBkdXJhdGlvbiwgMjAsIHRydWUsIFxuICAgICAgICAgICAgKCk9PntmaW5pc2hlZENhbGxiYWNrKCl9LCAoKT0+e3BvaW50UmVhY2hlZENhbGxiYWNrKCl9KVxuICAgIH0gICBcblxuICAgIGlmIChucGNEYXRhLndhbGtpbmdBbmltKSB7XG4gICAgICAgIEFuaW1hdG9yLnBsYXlTaW5nbGVBbmltYXRpb24obnBjLCBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLndhbGtpbmdBbmltLCB0cnVlKVxuICAgICAgICBucGNEYXRhLmxhc3RQbGF5ZWRBbmltID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS53YWxraW5nQW5pbVxuICAgICAgfVxuICAgIG5wY0RhdGEuc3RhdGUgPSBOUENTdGF0ZS5GT0xMT1dQQVRIXG4gICAgY29uc29sZS5sb2coJ2RlYnVnIGhlcmUnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RvcFdhbGtpbmcobnBjOkVudGl0eSwgZHVyYXRpb24/OiBudW1iZXIsIGZpbmlzaGVkPzpib29sZWFuKSB7XG4gICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgbnBjRGF0YS5zdGF0ZSA9IE5QQ1N0YXRlLlNUQU5ESU5HXG4gICAgbnBjRGF0YS5tYW51YWxTdG9wID0gdHJ1ZVxuXG4gICAgc3RvcFBhdGgobnBjKVxuXG4gICAgaWYgKGR1cmF0aW9uKSB7XG4gICAgICAgIHV0aWxzLnRpbWVycy5zZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICAvL2lmICh0aGlzLmRpYWxvZyAmJiB0aGlzLmRpYWxvZy5pc0RpYWxvZ09wZW4pIHJldHVyblxuICAgICAgICAgICAgaWYobnBjRGF0YS5wYXRoKXtcbiAgICAgICAgICAgICAgICBBbmltYXRvci5zdG9wQWxsQW5pbWF0aW9ucyhucGMsIHRydWUpXG4gICAgICAgICAgICAgICAgaWYobnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS53YWxraW5nQW5pbSl7XG4gICAgICAgICAgICAgICAgICAgIEFuaW1hdG9yLnBsYXlTaW5nbGVBbmltYXRpb24obnBjLCBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLndhbGtpbmdBbmltLHRydWUpXG4gICAgICAgICAgICAgICAgICAgIG5wY0RhdGEubGFzdFBsYXllZEFuaW0gPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLndhbGtpbmdBbmltXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBkdXJhdGlvbiA9IG5wY0RhdGEucGF0aERhdGEudG90YWxEdXJhdGlvblxuICAgICAgICAgICAgICAgIGxldCBjdXJyZW50VGltZXI6bnVtYmVyID0gd2Fsa2luZ1RpbWVycy5nZXQobnBjKSFcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnY3VycmVudCB0aW1lIGlzJywgY3VycmVudFRpbWVyKVxuICAgICAgICAgICAgICAgIGlmKGN1cnJlbnRUaW1lcil7XG4gICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uIC09IGN1cnJlbnRUaW1lclxuICAgICAgICAgICAgICAgIH1cbiAgICBcbiAgICAgICAgICAgICAgICBsZXQgcGF0aDphbnlbXSA9IFtdXG4gICAgICAgICAgICAgICAgbnBjRGF0YS5wYXRoRGF0YS5wYXRoLmZvckVhY2goKHA6YW55KT0+e1xuICAgICAgICAgICAgICAgICAgICBwYXRoLnB1c2gocClcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIHBhdGguc3BsaWNlKDAsbnBjRGF0YS5wYXRoSW5kZXgpXG4gICAgXG4gICAgICAgICAgICAgICAgbGV0IHBvcyA9IFRyYW5zZm9ybS5nZXQobnBjKS5wb3NpdGlvblxuICAgICAgICAgICAgICAgIHBhdGgudW5zaGlmdChWZWN0b3IzLmNyZWF0ZShwb3MueCwgcG9zLnksIHBvcy56KSlcbiAgICBcbiAgICAgICAgICAgICAgICBucGNEYXRhLm1hbnVhbFN0b3AgPSBmYWxzZVxuICAgICAgICAgICAgICAgIHdhbGtOUEMobnBjLG5wY0RhdGEsIG5wY0RhdGEucGF0aERhdGEucGF0aFR5cGUsIGR1cmF0aW9uLCBwYXRoLCBwb2ludFJlYWNoZWRDYWxsYmFja3MuZ2V0KG5wYyksIG9uRmluaXNoQ2FsbGJhY2tzLmdldChucGMpKSAgICBcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LGR1cmF0aW9uICogMTAwMClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHN0b3BQYXRoKG5wYzpFbnRpdHkpe1xuICAgIHV0aWxzLnBhdGhzLnN0b3BQYXRoKG5wYylcbiAgICBJc0ZvbGxvd2luZ1BhdGguZGVsZXRlRnJvbShucGMpXG5cbiAgICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICBpZiAobnBjRGF0YS53YWxraW5nQW5pbSkge1xuICAgICAgICBBbmltYXRvci5wbGF5U2luZ2xlQW5pbWF0aW9uKG5wYywgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS53YWxraW5nQW5pbSlcbiAgICAgICAgbnBjRGF0YS5sYXN0UGxheWVkQW5pbSA9IG5wY0RhdGEuaWRsZUFuaW1cbiAgICB9XG5cbiAgICBpZighbnBjRGF0YS5tYW51YWxTdG9wKXtcbiAgICAgICAgaWYobnBjRGF0YS5wYXRoRGF0YS5sb29wKXtcbiAgICAgICAgICAgIG5wY0RhdGEucGF0aEluZGV4ID0gMFxuICAgICAgICAgICAgd2Fsa2luZ1RpbWVycy5kZWxldGUobnBjKVxuICAgICAgICAgICAgY29uc29sZS5sb2coJ3dlIGFyZSBsb29waW5nIHBhdGgnLCBucGNEYXRhKVxuICAgICAgICAgICAgZm9sbG93UGF0aChucGMsIG5wY0RhdGEucGF0aERhdGEpXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhucGNEYXRhKVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIENhbGxzIHRoZSBOUEMncyBhY3RpdmF0aW9uIGZ1bmN0aW9uIChzZXQgb24gTlBDIGRlZmluaXRpb24pLiBJZiBOUEMgaGFzIGBmYWNlVXNlcmAgPSB0cnVlLCBpdCB3aWxsIHJvdGF0ZSB0byBmYWNlIHRoZSBwbGF5ZXIuIEl0IHN0YXJ0cyBhIGNvb2xkb3duIGNvdW50ZXIgdG8gYXZvaWQgcmVhY3RpdmF0aW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aXZhdGUobnBjOkVudGl0eSkge1xuICAgIGFjdGl2ZU5QQyA9IG5wY1xuICAgIG9uQWN0aXZhdGVDYnMuZ2V0KG5wYykoKVxuXG4gICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgaWYgKG5wY0RhdGEuZmFjZVVzZXIpIHtcbiAgICAgICAgVHJhY2tVc2VyRmxhZy5jcmVhdGUobnBjLHtcbiAgICAgICAgICAgIGxvY2tYWlJvdGF0aW9uOnRydWUsXG4gICAgICAgICAgICBhY3RpdmU6dHJ1ZSxcbiAgICAgICAgICAgIHJvdFNwZWVkOm5wY0RhdGEudHVyblNwZWVkXG4gICAgICAgIH0pXG4gICAgfVxuICAgIGlzQ29vbGRvd24uc2V0KG5wYywgdHJ1ZSlcbiAgICBucGNEYXRhLmluQ29vbGRvd24gPSB0cnVlXG5cbiAgICB1dGlscy50aW1lcnMuc2V0VGltZW91dChcbiAgICAgICAgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBpc0Nvb2xkb3duLmRlbGV0ZShucGMpXG4gICAgICAgICAgICBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLmluQ29vbGRvd24gPSBmYWxzZVxuICAgICAgICAgICAgaWYoVHJhY2tVc2VyRmxhZy5oYXMobnBjKSl7XG4gICAgICAgICAgICAgICAgVHJhY2tVc2VyRmxhZy5kZWxldGVGcm9tKG5wYylcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuICAgICAgICAxMDAwICogbnBjRGF0YS5jb29sRG93bkR1cmF0aW9uXG4gICAgKVxuICAgIGNvbnNvbGUubG9nKCdhY3RpdmF0ZWQgbnBjLCcsIG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykpXG59XG5cbmZ1bmN0aW9uIGVuZEludGVyYWN0aW9uKG5wYzpFbnRpdHkpIHtcbiAgICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgIG5wY0RhdGEuc3RhdGUgPSBOUENTdGF0ZS5TVEFORElOR1xuXG4gICAgICAgIGlmIChucGNEaWFsb2dDb21wb25lbnQuaGFzKG5wYykgJiYgbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpLnZpc2libGUpIHtcbiAgICAgICAgICAgIGNsb3NlRGlhbG9nKG5wYylcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKG5wY0RhdGEuZmFjZVVzZXIpe1xuICAgICAgICAgICAgaWYoVHJhY2tVc2VyRmxhZy5oYXMobnBjKSl7XG4gICAgICAgICAgICAgICAgVHJhY2tVc2VyRmxhZy5kZWxldGVGcm9tKG5wYylcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKCdlbmRpbmcgaW50ZXJhY3Rpb24nLCBucGNEYXRhLCBidWJibGVzLmdldChucGMpKVxuICAgICAgICBpZihucGNEYXRhLmhhc0J1YmJsZSAmJiBidWJibGVzLmdldChucGMpLmlzQnViYmxlT3Blbil7XG4gICAgICAgICAgICBjbG9zZUJ1YmJsZShucGMpXG4gICAgICAgIH1cbn1cblxuLyoqXG4gKiBFbmRzIGludGVyYWN0aW9uIGFuZCBjYWxscyB0aGUgb25XYWxrQXdheSBmdW5jdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlV2Fsa0F3YXkobnBjOkVudGl0eSkge1xuICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgIGlmIChucGNEYXRhLnN0YXRlID09IE5QQ1N0YXRlLkZPTExPV1BBVEgpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZW5kSW50ZXJhY3Rpb24obnBjKVxuXG4gICAgaWYgKG9uV2Fsa0F3YXlDYnMuZ2V0KG5wYykpIHtcbiAgICAgICAgb25XYWxrQXdheUNicy5nZXQobnBjKSgpXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGxheUFuaW1hdGlvbihucGM6RW50aXR5LCBhbmltOnN0cmluZywgbm9Mb29wPzpib29sZWFuLCBkdXJhdGlvbj86bnVtYmVyKXtcbiAgICBsZXQgYW5pbWF0aW9ucyA9IEFuaW1hdG9yLmdldE11dGFibGUobnBjKVxuICAgIGlmKGFuaW1hdGlvbnMuc3RhdGVzLmZpbHRlcigoYW5pbWF0aW9uKT0+IGFuaW1hdGlvbi5uYW1lID09PSBhbmltKS5sZW5ndGggPT0gMCl7XG4gICAgICAgIGFuaW1hdGlvbnMuc3RhdGVzLnB1c2goe25hbWU6YW5pbSwgY2xpcDphbmltLCBsb29wOiBub0xvb3A/IGZhbHNlIDogdHJ1ZX0pXG4gICAgfVxuXG4gICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgaWYobnBjRGF0YS5zdGF0ZSA9PSBOUENTdGF0ZS5GT0xMT1dQQVRIKXtcbiAgICAgICAgdXRpbHMucGF0aHMuc3RvcFBhdGgobnBjKVxuICAgIH1cblxuICAgIGlmKGFuaW1UaW1lcnMuaGFzKG5wYykpe1xuICAgICAgICB1dGlscy50aW1lcnMuY2xlYXJUaW1lb3V0KGFuaW1UaW1lcnMuZ2V0KG5wYykpXG4gICAgICAgIGFuaW1UaW1lcnMuZGVsZXRlKG5wYylcbiAgICB9XG5cbiAgICBBbmltYXRvci5zdG9wQWxsQW5pbWF0aW9ucyhucGMsIHRydWUpXG4gICAgQW5pbWF0b3IucGxheVNpbmdsZUFuaW1hdGlvbihucGMsIGFuaW0sIHRydWUpXG4gICAgaWYoZHVyYXRpb24pe1xuICAgICAgICBjb25zb2xlLmxvZygnaGF2ZSBhIGR1cmF0aW9uIHRvIHBsYXkgYW5pbWF0aW9uJylcbiAgICAgICAgYW5pbVRpbWVycy5zZXQobnBjLCB1dGlscy50aW1lcnMuc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgYW5pbVRpbWVycy5kZWxldGUobnBjKVxuICAgICAgICAgICAgQW5pbWF0b3Iuc3RvcEFsbEFuaW1hdGlvbnMobnBjLCB0cnVlKVxuICAgICAgICAgICAgaWYobnBjRGF0YS5pZGxlQW5pbSl7XG4gICAgICAgICAgICAgICAgQW5pbWF0b3IucGxheVNpbmdsZUFuaW1hdGlvbihucGMsIG5wY0RhdGEuaWRsZUFuaW0pXG4gICAgICAgICAgICAgICAgbnBjRGF0YS5sYXN0UGxheWVkQW5pbSA9IG5wY0RhdGEuaWRsZUFuaW1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwMCAqIGR1cmF0aW9uKSkvL1xuICAgIH0gXG5cbiAgICBucGNEYXRhLmxhc3RQbGF5ZWRBbmltID0gYW5pbVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hhbmdlSWRsZUFuaW0obnBjOkVudGl0eSwgYW5pbWF0aW9uOnN0cmluZywgcGxheT86Ym9vbGVhbil7XG4gICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgbnBjRGF0YS5pZGxlQW5pbSA9IGFuaW1hdGlvblxuXG4gICAgbGV0IGFuaW1hdGlvbnMgPSBBbmltYXRvci5nZXRNdXRhYmxlKG5wYylcbiAgICBpZihhbmltYXRpb25zLnN0YXRlcy5maWx0ZXIoKGFuaW0pPT4gYW5pbS5uYW1lID09PSBhbmltYXRpb24pLmxlbmd0aCA9PSAwKXtcbiAgICAgICAgYW5pbWF0aW9ucy5zdGF0ZXMucHVzaCh7bmFtZTphbmltYXRpb24sIGNsaXA6YW5pbWF0aW9uLCBsb29wOiB0cnVlfSlcbiAgICB9XG5cbiAgICBpZihwbGF5KXtcbiAgICAgICAgcGxheUFuaW1hdGlvbihucGMsIGFuaW1hdGlvbiwgdHJ1ZSlcbiAgICAgICAgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5sYXN0UGxheWVkQW5pbSA9IGFuaW1hdGlvblxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhbGtCdWJibGUobnBjOkVudGl0eSwgc2NyaXB0OkRpYWxvZ1tdLCBzdGFydEluZGV4PzpudW1iZXIgfCBzdHJpbmcpe1xuICAgIG9wZW5CdWJibGUobnBjLCBzY3JpcHQsc3RhcnRJbmRleClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURpYWxvZ1dpbmRvdyhkZWZhdWx0UG9ydHJhaXQ/OkltYWdlRGF0YSwgc291bmQ/OnN0cmluZyl7XG4gICAgbGV0IGRpYWxvZyA9IGVuZ2luZS5hZGRFbnRpdHkoKVxuICAgIGFkZERpYWxvZyhkaWFsb2csc291bmQsIGRlZmF1bHRQb3J0cmFpdClcbiAgICByZXR1cm4gZGlhbG9nXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvcGVuRGlhbG9nV2luZG93KG5wYzpFbnRpdHksIGRpYWxvZzpEaWFsb2dbXSwgc3RhcnRJbmRleD86bnVtYmVyIHwgc3RyaW5nKXtcbiAgICBhY3RpdmVOUEMgPSBucGNcblxuICAgIGlmKG5wY0RpYWxvZ0NvbXBvbmVudC5oYXMobnBjKSl7XG4gICAgICAgIGxldCBpbmRleDphbnlcbiAgICAgICAgaWYgKCFzdGFydEluZGV4KSB7XG4gICAgICAgICAgaW5kZXggPSAwXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHN0YXJ0SW5kZXggPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgaW5kZXggPSBzdGFydEluZGV4XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5kZXggPSBmaW5kRGlhbG9nQnlOYW1lKGRpYWxvZywgc3RhcnRJbmRleClcbiAgICAgICAgfVxuICAgICAgICBvcGVuRGlhbG9nKG5wYyxkaWFsb2csIGluZGV4KVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsb3NlRGlhbG9nV2luZG93KHdpbmRvdzpFbnRpdHkpe1xuICAgIGxldCBkaWFsb2cgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KHdpbmRvdylcbiAgICBpZih3aW5kb3cpe1xuICAgICAgICBjbG9zZURpYWxvZyhkaWFsb2cpXG4gICAgfVxufSJdfQ==
|
package/dist/systems.d.ts
CHANGED
package/dist/systems.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { TextShape, engine } from "@dcl/sdk/ecs";
|
|
2
|
-
import { IsFollowingPath, IsTypingBubble, IsTypingDialog } from "./components";
|
|
1
|
+
import { TextShape, Transform, engine } from "@dcl/sdk/ecs";
|
|
2
|
+
import { IsFollowingPath, IsTypingBubble, IsTypingDialog, TrackUserFlag } from "./components";
|
|
3
3
|
import { walkingTimers } from "./npc";
|
|
4
4
|
import { npcDialogComponent } from "./dialog";
|
|
5
5
|
import { bubbles, next } from "./bubble";
|
|
6
|
+
import { Quaternion, Vector3 } from "@dcl/sdk/math";
|
|
6
7
|
export function handlePathTimes(dt) {
|
|
7
8
|
for (const [entity] of engine.getEntitiesWith(IsFollowingPath)) {
|
|
8
9
|
if (walkingTimers.has(entity)) {
|
|
@@ -63,4 +64,19 @@ export function handleBubbletyping(dt) {
|
|
|
63
64
|
}
|
|
64
65
|
}
|
|
65
66
|
}
|
|
66
|
-
|
|
67
|
+
export function faceUserSystem(dt) {
|
|
68
|
+
for (const [entity, track] of engine.getEntitiesWith(TrackUserFlag)) {
|
|
69
|
+
if (track.active) {
|
|
70
|
+
const player = Transform.get(engine.PlayerEntity);
|
|
71
|
+
let lookAtTarget = Vector3.create(player.position.x, player.position.y, player.position.z);
|
|
72
|
+
let direction = Vector3.subtract(lookAtTarget, Transform.get(entity).position);
|
|
73
|
+
let transform = Transform.getMutable(entity);
|
|
74
|
+
transform.rotation = Quaternion.slerp(transform.rotation, Quaternion.lookRotation(direction), dt * track.rotSpeed);
|
|
75
|
+
if (track.lockXZRotation) {
|
|
76
|
+
transform.rotation.x = 0;
|
|
77
|
+
transform.rotation.z = 0;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zeXN0ZW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDdEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBELE1BQU0sVUFBVSxlQUFlLENBQUMsRUFBUztJQUNyQyxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxFQUFFO1FBQzVELElBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBQztZQUN6QixJQUFJLE9BQU8sR0FBVSxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBRSxDQUFBO1lBQy9DLE9BQU8sSUFBSSxFQUFFLENBQUE7WUFDYixhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBRSxHQUFHLEVBQUUsQ0FBQyxDQUFBO1NBQzdEO2FBQ0c7WUFDQSxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQTtTQUNoQztLQUNKO0FBQ0gsQ0FBQztBQUVILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxFQUFTO0lBQ3hDLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxlQUFl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LENBQUM7QUFFSCxNQUFNLFVBQVUsY0FBYyxDQUFDLEVBQVU7SUFDdkMsS0FBSyxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEVBQUU7UUFDbkUsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ2hCLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO1lBQ2pELElBQUksWUFBWSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUMxRixJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBRTlFLElBQUksU0FBUyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDNUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBRWxILElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRTtnQkFDeEIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUN4QixTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7YUFDekI7U0FDRjtLQUNGO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRleHRTaGFwZSwgVHJhbnNmb3JtLCBlbmdpbmUgfSBmcm9tIFwiQGRjbC9zZGsvZWNzXCI7XG5pbXBvcnQgeyBJc0ZvbGxvd2luZ1BhdGgsIElzVHlwaW5nQnViYmxlLCBJc1R5cGluZ0RpYWxvZywgVHJhY2tVc2VyRmxhZyB9IGZyb20gXCIuL2NvbXBvbmVudHNcIjtcbmltcG9ydCB7IHdhbGtpbmdUaW1lcnMgfSBmcm9tIFwiLi9ucGNcIjtcbmltcG9ydCB7IG5wY0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gXCIuL2RpYWxvZ1wiO1xuaW1wb3J0IHsgYnViYmxlcywgbmV4dCB9IGZyb20gXCIuL2J1YmJsZVwiO1xuaW1wb3J0IHsgUXVhdGVybmlvbiwgVmVjdG9yMyB9IGZyb20gXCJAZGNsL3Nkay9tYXRoXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVQYXRoVGltZXMoZHQ6bnVtYmVyKSB7XG4gICAgZm9yIChjb25zdCBbZW50aXR5XSBvZiBlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKElzRm9sbG93aW5nUGF0aCkpIHtcbiAgICAgICAgaWYod2Fsa2luZ1RpbWVycy5oYXMoZW50aXR5KSl7XG4gICAgICAgICAgICBsZXQgZWxhcHNlZDpudW1iZXIgPSB3YWxraW5nVGltZXJzLmdldChlbnRpdHkpIVxuICAgICAgICAgICAgZWxhcHNlZCArPSBkdFxuICAgICAgICAgICAgd2Fsa2luZ1RpbWVycy5zZXQoZW50aXR5LCB3YWxraW5nVGltZXJzLmdldChlbnRpdHkpISArIGR0KVxuICAgICAgICB9XG4gICAgICAgIGVsc2V7XG4gICAgICAgICAgICB3YWxraW5nVGltZXJzLnNldChlbnRpdHksIGR0KVxuICAgICAgICB9XG4gICAgfVxuICB9XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVEaWFsb2dUeXBpbmcoZHQ6bnVtYmVyKSB7XG4gICAgZm9yIChjb25zdCBbZW50aXR5XSBvZiBlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKElzVHlwaW5nRGlhbG9nKSkge1xuICAgICAgICBsZXQgZGlhbG9nRGF0YSA9IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoZW50aXR5KVxuICAgICAgICBpZighZGlhbG9nRGF0YS50eXBpbmcpe1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBkaWFsb2dEYXRhLnRpbWVyICs9IGR0XG4gICAgICAgIGlmIChkaWFsb2dEYXRhLnRpbWVyID49IDIgLyBkaWFsb2dEYXRhLnNwZWVkKSB7XG4gICAgICAgICAgICBsZXQgY2hhcnNUb0FkZCA9IE1hdGguZmxvb3IoZGlhbG9nRGF0YS50aW1lciAvICgxIC8gZGlhbG9nRGF0YS5zcGVlZCkpXG4gICAgICAgICAgICBkaWFsb2dEYXRhLnRpbWVyID0gMFxuXG4gICAgICAgICAgICBkaWFsb2dEYXRhLnZpc2libGVDaGFycyArPSBjaGFyc1RvQWRkXG5cbiAgICAgICAgICAgIGlmIChkaWFsb2dEYXRhLnZpc2libGVDaGFycyA+PSBkaWFsb2dEYXRhLmZ1bGxUZXh0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGRpYWxvZ0RhdGEudHlwaW5nID0gZmFsc2VcbiAgICAgICAgICAgICAgICBkaWFsb2dEYXRhLnZpc2libGVDaGFycyA9IGRpYWxvZ0RhdGEuZnVsbFRleHQubGVuZ3RoXG4gICAgICAgICAgICAgICAgSXNUeXBpbmdEaWFsb2cuZGVsZXRlRnJvbShlbnRpdHkpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRpYWxvZ0RhdGEudmlzaWJsZVRleHQgPSBkaWFsb2dEYXRhLmZ1bGxUZXh0LnN1YnN0cigwLCBkaWFsb2dEYXRhLnZpc2libGVDaGFycylcbiAgICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBoYW5kbGVCdWJibGV0eXBpbmcoZHQ6bnVtYmVyKSB7XG4gICAgZm9yIChjb25zdCBbZW50aXR5XSBvZiBlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKElzVHlwaW5nQnViYmxlKSkge1xuICAgICAgICBsZXQgZGlhbG9nRGF0YSA9IGJ1YmJsZXMuZ2V0KGVudGl0eSlcbiAgICAgICAgaWYoZGlhbG9nRGF0YS5kb25lKXtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgZGlhbG9nRGF0YS50aW1lciArPSBkdFxuXG4gICAgICAgIGlmICghZGlhbG9nRGF0YS50eXBpbmcpIHtcbiAgICAgICAgICAgIGlmIChkaWFsb2dEYXRhLnRpbWVyID4gZGlhbG9nRGF0YS50aW1lT24pIHtcbiAgICAgICAgICAgICAgICAvL2RpYWxvZ0RhdGEuaXNCdWJibGVPcGVuID0gZmFsc2VcbiAgICAgICAgICAgICAgICBkaWFsb2dEYXRhLmRvbmUgPSB0cnVlXG4gICAgICAgICAgICAgICAgZGlhbG9nRGF0YS50eXBpbmcgPSBmYWxzZVxuICAgICAgICAgICAgICAgIGRpYWxvZ0RhdGEudGltZXIgPSAwXG4gICAgICAgICAgICAgICAgbmV4dChlbnRpdHkpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgIGVsc2UgaWYgKGRpYWxvZ0RhdGEudGltZXIgPj0gMiAvIGRpYWxvZ0RhdGEuc3BlZWQpIHtcbiAgICAgICAgICAgIGxldCBjaGFyc1RvQWRkID0gTWF0aC5mbG9vcihkaWFsb2dEYXRhLnRpbWVyIC8gKDEgLyBkaWFsb2dEYXRhLnNwZWVkKSlcbiAgICAgICAgICAgIGRpYWxvZ0RhdGEudGltZXIgPSAwXG4gICAgICAgICAgICBkaWFsb2dEYXRhLnZpc2libGVDaGFycyArPSBjaGFyc1RvQWRkXG4gICAgICAgIFxuICAgICAgICAgICAgaWYgKGRpYWxvZ0RhdGEudmlzaWJsZUNoYXJzID49IGRpYWxvZ0RhdGEuZnVsbFRleHQubGVuZ3RoIHx8IGRpYWxvZ0RhdGEuZG9uZSkge1xuICAgICAgICAgICAgICAgIGRpYWxvZ0RhdGEudHlwaW5nID0gZmFsc2VcbiAgICAgICAgICAgICAgICBkaWFsb2dEYXRhLnZpc2libGVDaGFycyA9IGRpYWxvZ0RhdGEuZnVsbFRleHQubGVuZ3RoXG4gICAgICAgICAgICAgICAgSXNUeXBpbmdEaWFsb2cuZGVsZXRlRnJvbShlbnRpdHkpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBUZXh0U2hhcGUuZ2V0TXV0YWJsZShkaWFsb2dEYXRhLnRleHQpLnRleHQgPSBkaWFsb2dEYXRhLmZ1bGxUZXh0LnN1YnN0cigwLCBkaWFsb2dEYXRhLnZpc2libGVDaGFycylcbiAgICAgICAgfVxuICAgIH1cbiAgfVxuXG5leHBvcnQgZnVuY3Rpb24gZmFjZVVzZXJTeXN0ZW0oZHQ6IG51bWJlcikge1xuICBmb3IgKGNvbnN0IFtlbnRpdHksIHRyYWNrXSBvZiBlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKFRyYWNrVXNlckZsYWcpKSB7XG4gICAgaWYgKHRyYWNrLmFjdGl2ZSkge1xuICAgICAgY29uc3QgcGxheWVyID0gVHJhbnNmb3JtLmdldChlbmdpbmUuUGxheWVyRW50aXR5KVxuICAgICAgbGV0IGxvb2tBdFRhcmdldCA9IFZlY3RvcjMuY3JlYXRlKHBsYXllci5wb3NpdGlvbi54LCBwbGF5ZXIucG9zaXRpb24ueSwgcGxheWVyLnBvc2l0aW9uLnopXG4gICAgICBsZXQgZGlyZWN0aW9uID0gVmVjdG9yMy5zdWJ0cmFjdChsb29rQXRUYXJnZXQsIFRyYW5zZm9ybS5nZXQoZW50aXR5KS5wb3NpdGlvbilcblxuICAgICAgbGV0IHRyYW5zZm9ybSA9IFRyYW5zZm9ybS5nZXRNdXRhYmxlKGVudGl0eSlcbiAgICAgIHRyYW5zZm9ybS5yb3RhdGlvbiA9IFF1YXRlcm5pb24uc2xlcnAodHJhbnNmb3JtLnJvdGF0aW9uLCBRdWF0ZXJuaW9uLmxvb2tSb3RhdGlvbihkaXJlY3Rpb24pLCBkdCAqIHRyYWNrLnJvdFNwZWVkKVxuXG4gICAgICBpZiAodHJhY2subG9ja1haUm90YXRpb24pIHtcbiAgICAgICAgdHJhbnNmb3JtLnJvdGF0aW9uLnggPSAwXG4gICAgICAgIHRyYW5zZm9ybS5yb3RhdGlvbi56ID0gMFxuICAgICAgfVxuICAgIH1cbiAgfVxufSJdfQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dcl-npc-toolkit",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.10-20230523134956.commit-0a9ee1c",
|
|
4
4
|
"description": "A collection of tools for creating Non-Player-Characters (NPCs). These are capable of having conversations with the player, and play different animations.",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"typings": "./dist/index.d.ts",
|
|
@@ -33,5 +33,5 @@
|
|
|
33
33
|
"files": [
|
|
34
34
|
"dist"
|
|
35
35
|
],
|
|
36
|
-
"commit": "
|
|
36
|
+
"commit": "0a9ee1cedb433c0eb35b64578267bcf9f9ce5eb6"
|
|
37
37
|
}
|