@stemy/backend 2.7.4 → 2.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/stemy-backend.umd.js +400 -222
- package/bundles/stemy-backend.umd.js.map +1 -1
- package/bundles/stemy-backend.umd.min.js +1 -1
- package/bundles/stemy-backend.umd.min.js.map +1 -1
- package/common-types.d.ts +17 -8
- package/esm2015/common-types.js +1 -1
- package/esm2015/services/assets.js +21 -4
- package/esm2015/services/configuration.js +4 -2
- package/esm2015/services/entities/asset.js +16 -21
- package/esm2015/services/entities/base-entity.js +37 -0
- package/esm2015/services/entities/lazy-asset.js +42 -45
- package/esm2015/services/entities/progress.js +72 -54
- package/esm2015/services/lazy-assets.js +9 -5
- package/esm2015/services/progresses.js +10 -6
- package/esm2015/utilities/di-container.js +4 -4
- package/esm2015/utilities/lazy-asset-generator.js +7 -2
- package/esm2015/utilities/tree.js +11 -7
- package/fesm2015/stemy-backend.js +231 -151
- package/fesm2015/stemy-backend.js.map +1 -1
- package/package.json +1 -1
- package/services/assets.d.ts +1 -0
- package/services/entities/asset.d.ts +6 -9
- package/services/entities/base-entity.d.ts +13 -0
- package/services/entities/lazy-asset.d.ts +6 -12
- package/services/entities/progress.d.ts +18 -20
- package/stemy-backend.metadata.json +1 -1
- package/utilities/di-container.d.ts +1 -1
- package/utilities/tree.d.ts +2 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { isString } from "../utils";
|
|
2
2
|
export class Tree {
|
|
3
|
-
constructor(container, path) {
|
|
3
|
+
constructor(container, exists, path) {
|
|
4
4
|
this.container = container;
|
|
5
|
+
this.exists = exists;
|
|
5
6
|
this.path = path;
|
|
6
7
|
this.map = new Map();
|
|
7
8
|
}
|
|
@@ -9,7 +10,7 @@ export class Tree {
|
|
|
9
10
|
return this.container.parent.tree;
|
|
10
11
|
}
|
|
11
12
|
resolveService() {
|
|
12
|
-
return this.container.resolve(this.path);
|
|
13
|
+
return !this.exists ? null : this.container.resolve(this.path);
|
|
13
14
|
}
|
|
14
15
|
resolveLeaves() {
|
|
15
16
|
let map;
|
|
@@ -50,7 +51,7 @@ export class Tree {
|
|
|
50
51
|
parentTree = parentTree.resolveAncestor(path);
|
|
51
52
|
}
|
|
52
53
|
catch (e) {
|
|
53
|
-
parentTree = new Tree(this.container, "");
|
|
54
|
+
parentTree = new Tree(this.container, false, "");
|
|
54
55
|
}
|
|
55
56
|
const pathParts = path.split(".");
|
|
56
57
|
let tree = this;
|
|
@@ -73,7 +74,7 @@ export class Tree {
|
|
|
73
74
|
}
|
|
74
75
|
resolvePath(path, throwError = true) {
|
|
75
76
|
const absolutePath = !this.path ? path : `${this.path}.${path}`;
|
|
76
|
-
let tree = new Tree(this.container, absolutePath);
|
|
77
|
+
let tree = new Tree(this.container, false, absolutePath);
|
|
77
78
|
try {
|
|
78
79
|
tree = this.resolveAncestor(path);
|
|
79
80
|
}
|
|
@@ -96,16 +97,19 @@ export class Tree {
|
|
|
96
97
|
return this;
|
|
97
98
|
}
|
|
98
99
|
const pathParts = path.split(".");
|
|
100
|
+
const maxIx = pathParts.length - 1;
|
|
99
101
|
let tree = this;
|
|
100
102
|
path = this.path;
|
|
101
|
-
for (let
|
|
103
|
+
for (let ix = 0; ix <= maxIx; ix++) {
|
|
104
|
+
const part = pathParts[ix];
|
|
102
105
|
if (!tree.map.has(part)) {
|
|
103
|
-
tree.map.set(part, new Tree(this.container, !path ? part : `${path}.${part}`));
|
|
106
|
+
tree.map.set(part, new Tree(this.container, false, !path ? part : `${path}.${part}`));
|
|
104
107
|
}
|
|
105
108
|
tree = tree.map.get(part);
|
|
109
|
+
tree.exists = tree.exists || ix == maxIx;
|
|
106
110
|
path = tree.path;
|
|
107
111
|
}
|
|
108
112
|
return this;
|
|
109
113
|
}
|
|
110
114
|
}
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlsaXRpZXMvdHJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRWxDLE1BQU0sT0FBTyxJQUFJO0lBUWIsWUFBc0IsU0FBK0IsRUFBVyxJQUFZO1FBQXRELGNBQVMsR0FBVCxTQUFTLENBQXNCO1FBQVcsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUN4RSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksR0FBRyxFQUFnQixDQUFDO0lBQ3ZDLENBQUM7SUFORCxJQUFjLFVBQVU7UUFDcEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDdEMsQ0FBQztJQU1ELGNBQWM7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsYUFBYTtRQUNULElBQUksR0FBdUIsQ0FBQztRQUM1QixJQUFJO1lBQ0EsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFELEdBQUcsR0FBRyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDcEM7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNSLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBaUIsQ0FBQztTQUNsQztRQUNELE1BQU0sT0FBTyxHQUFHLENBQUMsT0FBMEIsRUFBRSxJQUFZLEVBQUUsRUFBRTtZQUN6RCxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO2dCQUMxQixNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUs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LENBQUMsQ0FBQztZQUMxQixJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztTQUNwQjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SURlcGVuZGVuY3lDb250YWluZXIsIElUcmVlfSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcbmltcG9ydCB7aXNTdHJpbmd9IGZyb20gXCIuLi91dGlsc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFRyZWUgaW1wbGVtZW50cyBJVHJlZSB7XHJcblxyXG4gICAgcHJvdGVjdGVkIG1hcDogTWFwPHN0cmluZywgVHJlZT47XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldCBwYXJlbnRUcmVlKCk6IElUcmVlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXIucGFyZW50LnRyZWU7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGNvbnRhaW5lcjogSURlcGVuZGVuY3lDb250YWluZXIsIHJlYWRvbmx5IHBhdGg6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMubWFwID0gbmV3IE1hcDxzdHJpbmcsIFRyZWU+KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzb2x2ZVNlcnZpY2UoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXIucmVzb2x2ZSh0aGlzLnBhdGgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlc29sdmVMZWF2ZXMoKTogTWFwPHN0cmluZywgSVRyZWU+IHtcclxuICAgICAgICBsZXQgbWFwOiBNYXA8c3RyaW5nLCBJVHJlZT47XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgcGFyZW50VHJlZSA9IHRoaXMucGFyZW50VHJlZS5yZXNvbHZlUGF0aCh0aGlzLnBhdGgpO1xyXG4gICAgICAgICAgICBtYXAgPSBwYXJlbnRUcmVlLnJlc29sdmVMZWF2ZXMoKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBJVHJlZT4oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdmlzaXRvciA9ICh0cmVlTWFwOiBNYXA8c3RyaW5nLCBUcmVlPiwgcGF0aDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIHRyZWVNYXAuZm9yRWFjaCgodHJlZSwga2V5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJLZXkgPSAhcGF0aCA/IGtleSA6IGAke3BhdGh9LiR7a2V5fWA7XHJcbiAgICAgICAgICAgICAgICBpZiAodHJlZS5tYXAuc2l6ZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFwLnNldChzdWJLZXksIHRyZWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHZpc2l0b3IodHJlZS5tYXAsIHN1YktleSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdmlzaXRvcih0aGlzLm1hcCwgXCJcIik7XHJcbiAgICAgICAgcmV0dXJuIG1hcDtcclxuICAgIH1cclxuXHJcbiAgICByZXNvbHZlU2VydmljZXMoKTogTWFwPHN0cmluZywgYW55PiB7XHJcbiAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcclxuICAgICAgICB0aGlzLnJlc29sdmVMZWF2ZXMoKS5mb3JFYWNoKChsZWFmLCBrZXkpID0+IHtcclxuICAgICAgICAgICAgbWFwLnNldChrZXksIGxlYWYucmVzb2x2ZVNlcnZpY2UoKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIG1hcDtcclxuICAgIH1cclxuXHJcbiAgICByZXNvbHZlQW5jZXN0b3IocGF0aDogc3RyaW5nKTogSVRyZWUge1xyXG4gICAgICAgIGlmICghaXNTdHJpbmcocGF0aCkgfHwgcGF0aC5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHBhcmVudFRyZWU6IElUcmVlO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHBhcmVudFRyZWUgPSB0aGlzLnBhcmVudFRyZWUucmVzb2x2ZVBhdGgodGhpcy5wYXRoKTtcclxuICAgICAgICAgICAgcGFyZW50VHJlZSA9IHBhcmVudFRyZWUucmVzb2x2ZUFuY2VzdG9yKHBhdGgpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgcGFyZW50VHJlZSA9IG5ldyBUcmVlKHRoaXMuY29udGFpbmVyLCBcIlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcGF0aFBhcnRzID0gcGF0aC5zcGxpdChcIi5cIik7XHJcbiAgICAgICAgbGV0IHRyZWU6IFRyZWUgPSB0aGlzO1xyXG4gICAgICAgIGxldCBwcmV2aW91c1RyZWU6IFRyZWUgPSB0aGlzO1xyXG4gICAgICAgIGZvciAobGV0IHBhcnQgb2YgcGF0aFBhcnRzKSB7XHJcbiAgICAgICAgICAgIHRyZWUgPSB0cmVlLm1hcC5nZXQocGFydCk7XHJcbiAgICAgICAgICAgIGlmICghdHJlZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzVHJlZSA9PSB0aGlzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudFRyZWUucGF0aC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnRUcmVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFuY2VzdG9yICcke3BhdGh9JyBub3QgZm91bmQgaW4gY3VycmVudCB0cmVlOiAnJHt0aGlzLnBhdGh9J2ApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzVHJlZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwcmV2aW91c1RyZWUgPSB0cmVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcGFyZW50VHJlZS5wYXRoLmxlbmd0aCA+IHByZXZpb3VzVHJlZS5wYXRoLmxlbmd0aFxyXG4gICAgICAgICAgICA/IHBhcmVudFRyZWUgOiBwcmV2aW91c1RyZWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzb2x2ZVBhdGgocGF0aDogc3RyaW5nLCB0aHJvd0Vycm9yOiBib29sZWFuID0gdHJ1ZSk6IElUcmVlIHtcclxuICAgICAgICBjb25zdCBhYnNvbHV0ZVBhdGggPSAhdGhpcy5wYXRoID8gcGF0aCA6IGAke3RoaXMucGF0aH0uJHtwYXRofWA7XHJcbiAgICAgICAgbGV0IHRyZWU6IElUcmVlID0gbmV3IFRyZWUodGhpcy5jb250YWluZXIsIGFic29sdXRlUGF0aCk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdHJlZSA9IHRoaXMucmVzb2x2ZUFuY2VzdG9yKHBhdGgpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgaWYgKHRocm93RXJyb3IpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUGF0aCAnJHtwYXRofScgbm90IGZvdW5kIGluIGN1cnJlbnQgdHJlZTogJyR7dGhpcy5wYXRofSdgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdHJlZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRyZWUucGF0aCAhPT0gYWJzb2x1dGVQYXRoKSB7XHJcbiAgICAgICAgICAgIGlmICh0aHJvd0Vycm9yKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFBhdGggJyR7cGF0aH0nIG5vdCBmb3VuZCBpbiBjdXJyZW50IHRyZWU6ICcke3RoaXMucGF0aH0nYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRyZWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cmVlO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZFBhdGgocGF0aDogc3RyaW5nKTogdGhpcyB7XHJcbiAgICAgICAgaWYgKCFpc1N0cmluZyhwYXRoKSB8fCBwYXRoLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBwYXRoUGFydHMgPSBwYXRoLnNwbGl0KFwiLlwiKTtcclxuICAgICAgICBsZXQgdHJlZTogVHJlZSA9IHRoaXM7XHJcbiAgICAgICAgcGF0aCA9IHRoaXMucGF0aDtcclxuICAgICAgICBmb3IgKGxldCBwYXJ0IG9mIHBhdGhQYXJ0cykge1xyXG4gICAgICAgICAgICBpZiAoIXRyZWUubWFwLmhhcyhwYXJ0KSkge1xyXG4gICAgICAgICAgICAgICAgdHJlZS5tYXAuc2V0KHBhcnQsIG5ldyBUcmVlKHRoaXMuY29udGFpbmVyLCAhcGF0aCA/IHBhcnQgOiBgJHtwYXRofS4ke3BhcnR9YCkpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdHJlZSA9IHRyZWUubWFwLmdldChwYXJ0KTtcclxuICAgICAgICAgICAgcGF0aCA9IHRyZWUucGF0aDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlsaXRpZXMvdHJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRWxDLE1BQU0sT0FBTyxJQUFJO0lBUWIsWUFBc0IsU0FBK0IsRUFBWSxNQUFlLEVBQVcsSUFBWTtRQUFqRixjQUFTLEdBQVQsU0FBUyxDQUFzQjtRQUFZLFdBQU0sR0FBTixNQUFNLENBQVM7UUFBVyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ25HLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQWdCLENBQUM7SUFDdkMsQ0FBQztJQU5ELElBQWMsVUFBVTtRQUNwQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztJQUN0QyxDQUFDO0lBTUQsY0FBYztRQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsYUFBYTtRQUNULElBQUksR0FBdUIsQ0FBQztRQUM1QixJQUFJO1lBQ0EsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFELEdBQUcsR0FBRyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDcEM7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNSLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBaUIsQ0FBQztTQUNsQztRQUNELE1BQU0sT0FBTyxHQUFHLENBQUMsT0FBMEIsRUFBRSxJQUFZLEVBQUUsRUFBRTtZQUN6RCxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO2dC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Q0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQTthQUN4RjtZQUNELElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxJQUFJLEtBQUssQ0FBQztZQUN6QyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztTQUNwQjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SURlcGVuZGVuY3lDb250YWluZXIsIElUcmVlfSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcbmltcG9ydCB7aXNTdHJpbmd9IGZyb20gXCIuLi91dGlsc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFRyZWUgaW1wbGVtZW50cyBJVHJlZSB7XHJcblxyXG4gICAgcHJvdGVjdGVkIG1hcDogTWFwPHN0cmluZywgVHJlZT47XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldCBwYXJlbnRUcmVlKCk6IElUcmVlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXIucGFyZW50LnRyZWU7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGNvbnRhaW5lcjogSURlcGVuZGVuY3lDb250YWluZXIsIHByb3RlY3RlZCBleGlzdHM6IGJvb2xlYW4sIHJlYWRvbmx5IHBhdGg6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMubWFwID0gbmV3IE1hcDxzdHJpbmcsIFRyZWU+KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzb2x2ZVNlcnZpY2UoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gIXRoaXMuZXhpc3RzID8gbnVsbCA6IHRoaXMuY29udGFpbmVyLnJlc29sdmUodGhpcy5wYXRoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXNvbHZlTGVhdmVzKCk6IE1hcDxzdHJpbmcsIElUcmVlPiB7XHJcbiAgICAgICAgbGV0IG1hcDogTWFwPHN0cmluZywgSVRyZWU+O1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudFRyZWUgPSB0aGlzLnBhcmVudFRyZWUucmVzb2x2ZVBhdGgodGhpcy5wYXRoKTtcclxuICAgICAgICAgICAgbWFwID0gcGFyZW50VHJlZS5yZXNvbHZlTGVhdmVzKCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBtYXAgPSBuZXcgTWFwPHN0cmluZywgSVRyZWU+KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHZpc2l0b3IgPSAodHJlZU1hcDogTWFwPHN0cmluZywgVHJlZT4sIHBhdGg6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICB0cmVlTWFwLmZvckVhY2goKHRyZWUsIGtleSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3ViS2V5ID0gIXBhdGggPyBrZXkgOiBgJHtwYXRofS4ke2tleX1gO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRyZWUubWFwLnNpemUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcC5zZXQoc3ViS2V5LCB0cmVlKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2aXNpdG9yKHRyZWUubWFwLCBzdWJLZXkpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHZpc2l0b3IodGhpcy5tYXAsIFwiXCIpO1xyXG4gICAgICAgIHJldHVybiBtYXA7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzb2x2ZVNlcnZpY2VzKCk6IE1hcDxzdHJpbmcsIGFueT4ge1xyXG4gICAgICAgIGNvbnN0IG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XHJcbiAgICAgICAgdGhpcy5yZXNvbHZlTGVhdmVzKCkuZm9yRWFjaCgobGVhZiwga2V5KSA9PiB7XHJcbiAgICAgICAgICAgIG1hcC5zZXQoa2V5LCBsZWFmLnJlc29sdmVTZXJ2aWNlKCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBtYXA7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzb2x2ZUFuY2VzdG9yKHBhdGg6IHN0cmluZyk6IElUcmVlIHtcclxuICAgICAgICBpZiAoIWlzU3RyaW5nKHBhdGgpIHx8IHBhdGgubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBwYXJlbnRUcmVlOiBJVHJlZTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBwYXJlbnRUcmVlID0gdGhpcy5wYXJlbnRUcmVlLnJlc29sdmVQYXRoKHRoaXMucGF0aCk7XHJcbiAgICAgICAgICAgIHBhcmVudFRyZWUgPSBwYXJlbnRUcmVlLnJlc29sdmVBbmNlc3RvcihwYXRoKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHBhcmVudFRyZWUgPSBuZXcgVHJlZSh0aGlzLmNvbnRhaW5lciwgZmFsc2UsIFwiXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBwYXRoUGFydHMgPSBwYXRoLnNwbGl0KFwiLlwiKTtcclxuICAgICAgICBsZXQgdHJlZTogVHJlZSA9IHRoaXM7XHJcbiAgICAgICAgbGV0IHByZXZpb3VzVHJlZTogVHJlZSA9IHRoaXM7XHJcbiAgICAgICAgZm9yIChsZXQgcGFydCBvZiBwYXRoUGFydHMpIHtcclxuICAgICAgICAgICAgdHJlZSA9IHRyZWUubWFwLmdldChwYXJ0KTtcclxuICAgICAgICAgICAgaWYgKCF0cmVlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNUcmVlID09IHRoaXMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50VHJlZS5wYXRoLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudFRyZWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQW5jZXN0b3IgJyR7cGF0aH0nIG5vdCBmb3VuZCBpbiBjdXJyZW50IHRyZWU6ICcke3RoaXMucGF0aH0nYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJldmlvdXNUcmVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHByZXZpb3VzVHJlZSA9IHRyZWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBwYXJlbnRUcmVlLnBhdGgubGVuZ3RoID4gcHJldmlvdXNUcmVlLnBhdGgubGVuZ3RoXHJcbiAgICAgICAgICAgID8gcGFyZW50VHJlZSA6IHByZXZpb3VzVHJlZTtcclxuICAgIH1cclxuXHJcbiAgICByZXNvbHZlUGF0aChwYXRoOiBzdHJpbmcsIHRocm93RXJyb3I6IGJvb2xlYW4gPSB0cnVlKTogSVRyZWUge1xyXG4gICAgICAgIGNvbnN0IGFic29sdXRlUGF0aCA9ICF0aGlzLnBhdGggPyBwYXRoIDogYCR7dGhpcy5wYXRofS4ke3BhdGh9YDtcclxuICAgICAgICBsZXQgdHJlZTogSVRyZWUgPSBuZXcgVHJlZSh0aGlzLmNvbnRhaW5lciwgZmFsc2UsIGFic29sdXRlUGF0aCk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdHJlZSA9IHRoaXMucmVzb2x2ZUFuY2VzdG9yKHBhdGgpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgaWYgKHRocm93RXJyb3IpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUGF0aCAnJHtwYXRofScgbm90IGZvdW5kIGluIGN1cnJlbnQgdHJlZTogJyR7dGhpcy5wYXRofSdgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdHJlZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRyZWUucGF0aCAhPT0gYWJzb2x1dGVQYXRoKSB7XHJcbiAgICAgICAgICAgIGlmICh0aHJvd0Vycm9yKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFBhdGggJyR7cGF0aH0nIG5vdCBmb3VuZCBpbiBjdXJyZW50IHRyZWU6ICcke3RoaXMucGF0aH0nYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRyZWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cmVlO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZFBhdGgocGF0aDogc3RyaW5nKTogdGhpcyB7XHJcbiAgICAgICAgaWYgKCFpc1N0cmluZyhwYXRoKSB8fCBwYXRoLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBwYXRoUGFydHMgPSBwYXRoLnNwbGl0KFwiLlwiKTtcclxuICAgICAgICBjb25zdCBtYXhJeCA9IHBhdGhQYXJ0cy5sZW5ndGggLSAxO1xyXG4gICAgICAgIGxldCB0cmVlOiBUcmVlID0gdGhpcztcclxuICAgICAgICBwYXRoID0gdGhpcy5wYXRoO1xyXG4gICAgICAgIGZvciAobGV0IGl4ID0gMDsgaXggPD0gbWF4SXg7IGl4KyspIHtcclxuICAgICAgICAgICAgY29uc3QgcGFydCA9IHBhdGhQYXJ0c1tpeF07XHJcbiAgICAgICAgICAgIGlmICghdHJlZS5tYXAuaGFzKHBhcnQpKSB7XHJcbiAgICAgICAgICAgICAgICB0cmVlLm1hcC5zZXQocGFydCwgbmV3IFRyZWUodGhpcy5jb250YWluZXIsIGZhbHNlLCAhcGF0aCA/IHBhcnQgOiBgJHtwYXRofS4ke3BhcnR9YCkpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdHJlZSA9IHRyZWUubWFwLmdldChwYXJ0KTtcclxuICAgICAgICAgICAgdHJlZS5leGlzdHMgPSB0cmVlLmV4aXN0cyB8fCBpeCA9PSBtYXhJeDtcclxuICAgICAgICAgICAgcGF0aCA9IHRyZWUucGF0aDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcbn1cclxuIl19
|