@jsprismarine/client 0.4.4 → 0.4.5-unstable-20240619005403
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/CHANGELOG.md +48 -37
- package/dist/index.cjs.cjs +2 -3
- package/dist/index.es.js +2 -3
- package/package.json +7 -10
package/CHANGELOG.md
CHANGED
|
@@ -1,87 +1,98 @@
|
|
|
1
1
|
# @jsprismarine/client
|
|
2
2
|
|
|
3
|
+
## 0.4.5-unstable-20240619005403
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`204a9b4`](https://github.com/JSPrismarine/JSPrismarine/commit/204a9b4c142fe89d5d63e2f72ba3cb89f9b375e3) Thanks [@filiphsps](https://github.com/filiphsps)! - Upgrade turbo to v2.
|
|
8
|
+
|
|
9
|
+
- Updated dependencies [[`204a9b4`](https://github.com/JSPrismarine/JSPrismarine/commit/204a9b4c142fe89d5d63e2f72ba3cb89f9b375e3)]:
|
|
10
|
+
- @jsprismarine/prismarine@0.4.5-unstable-20240619005403
|
|
11
|
+
- @jsprismarine/logger@0.4.5-unstable-20240619005403
|
|
12
|
+
- @jsprismarine/raknet@0.4.5-unstable-20240619005403
|
|
13
|
+
|
|
3
14
|
## 0.4.4
|
|
4
15
|
|
|
5
16
|
### Patch Changes
|
|
6
17
|
|
|
7
|
-
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
18
|
+
- Updated dependencies [[`adffd12`](https://github.com/JSPrismarine/JSPrismarine/commit/adffd12b09d07dc878a2e01cd795c3056317946a), [`2b5bc2f`](https://github.com/JSPrismarine/JSPrismarine/commit/2b5bc2fbffe777c329fd5684e342050cd2e13c43), [`07bc6d0`](https://github.com/JSPrismarine/JSPrismarine/commit/07bc6d0920e48b2fa593b346ac73949517c0fb7a), [`4f8bf3f`](https://github.com/JSPrismarine/JSPrismarine/commit/4f8bf3f367d42dbd710cf353c075e25bcb5370f7), [`07bc6d0`](https://github.com/JSPrismarine/JSPrismarine/commit/07bc6d0920e48b2fa593b346ac73949517c0fb7a)]:
|
|
19
|
+
- @jsprismarine/prismarine@0.4.4
|
|
20
|
+
- @jsprismarine/raknet@0.4.4
|
|
21
|
+
- @jsprismarine/logger@0.4.4
|
|
11
22
|
|
|
12
23
|
## 0.4.3
|
|
13
24
|
|
|
14
25
|
### Patch Changes
|
|
15
26
|
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
27
|
+
- Updated dependencies [[`b0a232b`](https://github.com/JSPrismarine/JSPrismarine/commit/b0a232b9be5d6456c33d5300582a0c7e33d76a6e)]:
|
|
28
|
+
- @jsprismarine/prismarine@0.4.3
|
|
29
|
+
- @jsprismarine/logger@0.4.3
|
|
30
|
+
- @jsprismarine/raknet@0.4.3
|
|
20
31
|
|
|
21
32
|
## 0.4.2
|
|
22
33
|
|
|
23
34
|
### Patch Changes
|
|
24
35
|
|
|
25
|
-
-
|
|
36
|
+
- [#1315](https://github.com/JSPrismarine/JSPrismarine/pull/1315) [`941fb74`](https://github.com/JSPrismarine/JSPrismarine/commit/941fb74a7818afd21e87804f62e004cf8465e0c4) Thanks [@filiphsps](https://github.com/filiphsps)! - Add `@jsprismarine/logger` package.
|
|
26
37
|
|
|
27
|
-
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
38
|
+
- Updated dependencies [[`384f571`](https://github.com/JSPrismarine/JSPrismarine/commit/384f5716d593f2f3bac4a9521578d32107e671a8), [`7d7283b`](https://github.com/JSPrismarine/JSPrismarine/commit/7d7283ba87e6fc030d25be8a2a542745a5c94745), [`a66c1b9`](https://github.com/JSPrismarine/JSPrismarine/commit/a66c1b981698fa26570bb0fd9ebf667240a172b7), [`b54350e`](https://github.com/JSPrismarine/JSPrismarine/commit/b54350eb6341fc487b05781b149c148bae3a5f55), [`941fb74`](https://github.com/JSPrismarine/JSPrismarine/commit/941fb74a7818afd21e87804f62e004cf8465e0c4)]:
|
|
39
|
+
- @jsprismarine/prismarine@0.4.2
|
|
40
|
+
- @jsprismarine/logger@0.4.2
|
|
41
|
+
- @jsprismarine/raknet@0.4.2
|
|
31
42
|
|
|
32
43
|
## 0.4.1
|
|
33
44
|
|
|
34
45
|
### Patch Changes
|
|
35
46
|
|
|
36
|
-
-
|
|
37
|
-
|
|
38
|
-
|
|
47
|
+
- Updated dependencies [[`44c25e1`](https://github.com/JSPrismarine/JSPrismarine/commit/44c25e132b55174a1e57aee9152e6fbb73c90cf6), [`8bc4525`](https://github.com/JSPrismarine/JSPrismarine/commit/8bc452534b5048b71a08e509d2823203bf07a407), [`e1ba6e7`](https://github.com/JSPrismarine/JSPrismarine/commit/e1ba6e71a2757cd6bba00c95d15d0d672c8cf476), [`69dae84`](https://github.com/JSPrismarine/JSPrismarine/commit/69dae84d2fde2bb754442f58a85dc4a865e28966)]:
|
|
48
|
+
- @jsprismarine/prismarine@0.4.1
|
|
49
|
+
- @jsprismarine/raknet@0.4.1
|
|
39
50
|
|
|
40
51
|
## 0.4.0
|
|
41
52
|
|
|
42
53
|
### Patch Changes
|
|
43
54
|
|
|
44
|
-
-
|
|
55
|
+
- [#1279](https://github.com/JSPrismarine/JSPrismarine/pull/1279) [`4ca96b5`](https://github.com/JSPrismarine/JSPrismarine/commit/4ca96b59696dbe67e39b7f46d85fe421a74d23d5) Thanks [@filiphsps](https://github.com/filiphsps)! - Add Codecov bundler plugin to vite.
|
|
45
56
|
|
|
46
|
-
-
|
|
47
|
-
|
|
48
|
-
|
|
57
|
+
- Updated dependencies [[`4ca96b5`](https://github.com/JSPrismarine/JSPrismarine/commit/4ca96b59696dbe67e39b7f46d85fe421a74d23d5), [`fad26e2`](https://github.com/JSPrismarine/JSPrismarine/commit/fad26e2affc095a94cfaed417891bbc9605af589), [`91b556d`](https://github.com/JSPrismarine/JSPrismarine/commit/91b556de0064b8e670ea46b61f0c51817ea7b425), [`c7965d4`](https://github.com/JSPrismarine/JSPrismarine/commit/c7965d446ce591b29e71a75bfed0ae6ca5ef91cb)]:
|
|
58
|
+
- @jsprismarine/prismarine@0.4.0
|
|
59
|
+
- @jsprismarine/raknet@0.4.0
|
|
49
60
|
|
|
50
61
|
## 0.3.0
|
|
51
62
|
|
|
52
63
|
### Patch Changes
|
|
53
64
|
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
|
|
65
|
+
- Updated dependencies []:
|
|
66
|
+
- @jsprismarine/prismarine@0.3.0
|
|
67
|
+
- @jsprismarine/raknet@0.3.0
|
|
57
68
|
|
|
58
69
|
## 0.2.0
|
|
59
70
|
|
|
60
71
|
### Patch Changes
|
|
61
72
|
|
|
62
|
-
-
|
|
73
|
+
- [#1259](https://github.com/JSPrismarine/JSPrismarine/pull/1259) [`c9d207f`](https://github.com/JSPrismarine/JSPrismarine/commit/c9d207f03417a8961557d569ec60b1091e9114c1) Thanks [@renovate](https://github.com/apps/renovate)! - Deps: Update dependency @types/node to v20.12.3.
|
|
63
74
|
|
|
64
|
-
-
|
|
65
|
-
|
|
66
|
-
|
|
75
|
+
- Updated dependencies [[`f7e0fc4`](https://github.com/JSPrismarine/JSPrismarine/commit/f7e0fc414117553581aa246eedd3861b2122eadf), [`c9d207f`](https://github.com/JSPrismarine/JSPrismarine/commit/c9d207f03417a8961557d569ec60b1091e9114c1), [`6477e70`](https://github.com/JSPrismarine/JSPrismarine/commit/6477e7079ef9f8eca981f4ab539b7045ee514e2f), [`6001709`](https://github.com/JSPrismarine/JSPrismarine/commit/6001709dcfddb12e6ddf0c8fe919cabacb5d6122)]:
|
|
76
|
+
- @jsprismarine/prismarine@0.2.0
|
|
77
|
+
- @jsprismarine/raknet@0.2.0
|
|
67
78
|
|
|
68
79
|
## 0.1.1
|
|
69
80
|
|
|
70
81
|
### Patch Changes
|
|
71
82
|
|
|
72
|
-
-
|
|
83
|
+
- [`80e23e1`](https://github.com/JSPrismarine/JSPrismarine/commit/80e23e17c0111eac2df98f73cdeec5730bd9abf5) Thanks [@filiphsps](https://github.com/filiphsps)! - Include CHANGELOG.md with releases.
|
|
73
84
|
|
|
74
|
-
-
|
|
75
|
-
|
|
76
|
-
|
|
85
|
+
- Updated dependencies [[`323a666`](https://github.com/JSPrismarine/JSPrismarine/commit/323a666b2d4b82e399ff21711ff8cc7ca6f520dd), [`491b688`](https://github.com/JSPrismarine/JSPrismarine/commit/491b688adc0c38426b767646b6cc748b8e774e30), [`20a8ea4`](https://github.com/JSPrismarine/JSPrismarine/commit/20a8ea47c25eaf21548f1994bf915c4c22a0f395), [`7073f41`](https://github.com/JSPrismarine/JSPrismarine/commit/7073f414487b7403765686b05d04f99c6878d88a), [`cdecbaa`](https://github.com/JSPrismarine/JSPrismarine/commit/cdecbaaf823a6f2db15e1793b50da9925deb3716), [`80e23e1`](https://github.com/JSPrismarine/JSPrismarine/commit/80e23e17c0111eac2df98f73cdeec5730bd9abf5), [`c6a627d`](https://github.com/JSPrismarine/JSPrismarine/commit/c6a627da60bae29bd0e6dfead9d44dddbeb0dafd)]:
|
|
86
|
+
- @jsprismarine/prismarine@0.1.1
|
|
87
|
+
- @jsprismarine/raknet@0.1.1
|
|
77
88
|
|
|
78
89
|
## 0.1.0
|
|
79
90
|
|
|
80
91
|
### Patch Changes
|
|
81
92
|
|
|
82
|
-
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
-
|
|
86
|
-
|
|
87
|
-
|
|
93
|
+
- [#1226](https://github.com/JSPrismarine/JSPrismarine/pull/1226) [`20b3cb1`](https://github.com/JSPrismarine/JSPrismarine/commit/20b3cb1ee1e2a2c5c45275f9c2a23c9c2507dcf5) Thanks [@filiphsps](https://github.com/filiphsps)! - - Migrated to vite.
|
|
94
|
+
- The build system has been refactored to support both esm and cjs.
|
|
95
|
+
- Releases are now managed by changeset.
|
|
96
|
+
- Updated dependencies [[`20b3cb1`](https://github.com/JSPrismarine/JSPrismarine/commit/20b3cb1ee1e2a2c5c45275f9c2a23c9c2507dcf5)]:
|
|
97
|
+
- @jsprismarine/prismarine@0.1.0
|
|
98
|
+
- @jsprismarine/raknet@0.1.0
|
package/dist/index.cjs.cjs
CHANGED
|
@@ -148,8 +148,7 @@ class Client extends node_events.EventEmitter {
|
|
|
148
148
|
this.socket.on("message", (buffer) => {
|
|
149
149
|
void this.handle(buffer);
|
|
150
150
|
});
|
|
151
|
-
if (this.connection)
|
|
152
|
-
throw new Error("Already connected/connecting to server.");
|
|
151
|
+
if (this.connection) throw new Error("Already connected/connecting to server.");
|
|
153
152
|
this.logger.info("JSPrismarine client is now attempting to connect...");
|
|
154
153
|
const timer = setIntervalAsync.setIntervalAsync(async () => {
|
|
155
154
|
if (this.closed) {
|
|
@@ -272,4 +271,4 @@ class Client extends node_events.EventEmitter {
|
|
|
272
271
|
}
|
|
273
272
|
|
|
274
273
|
exports.default = Client;
|
|
275
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzLmNqcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3NldC1pbnRlcnZhbC1hc3luY0AzLjAuMy9ub2RlX21vZHVsZXMvc2V0LWludGVydmFsLWFzeW5jL2Rpc3Qvc2V0LWludGVydmFsLWFzeW5jLXRpbWVyLmNqcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9zZXQtaW50ZXJ2YWwtYXN5bmNAMy4wLjMvbm9kZV9tb2R1bGVzL3NldC1pbnRlcnZhbC1hc3luYy9kaXN0L2NsZWFyLWludGVydmFsLWFzeW5jLmNqcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9zZXQtaW50ZXJ2YWwtYXN5bmNAMy4wLjMvbm9kZV9tb2R1bGVzL3NldC1pbnRlcnZhbC1hc3luYy9kaXN0L2R5bmFtaWMvc2V0LWludGVydmFsLWFzeW5jLmNqcyIsIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuU2V0SW50ZXJ2YWxBc3luY1RpbWVyID0gdm9pZCAwO1xuY29uc3QgTUlOX0lOVEVSVkFMX01TID0gMTA7XG5jb25zdCBNQVhfSU5URVJWQUxfTVMgPSAyMTQ3NDgzNjQ3O1xuY2xhc3MgU2V0SW50ZXJ2YWxBc3luY1RpbWVyIHtcbiAgICAjdGltZW91dCA9IHVuZGVmaW5lZDtcbiAgICAjcHJvbWlzZSA9IHVuZGVmaW5lZDtcbiAgICAjc3RvcHBlZCA9IGZhbHNlO1xuICAgIHN0YXRpYyBzdGFydFRpbWVyKHN0cmF0ZWd5LCBoYW5kbGVyLCBpbnRlcnZhbE1zLCAuLi5oYW5kbGVyQXJncykge1xuICAgICAgICBpbnRlcnZhbE1zID0gTWF0aC5taW4oTWF0aC5tYXgoTWF0aC50cnVuYyhpbnRlcnZhbE1zKSwgTUlOX0lOVEVSVkFMX01TKSwgTUFYX0lOVEVSVkFMX01TKTtcbiAgICAgICAgY29uc3QgdGltZXIgPSBuZXcgU2V0SW50ZXJ2YWxBc3luY1RpbWVyKCk7XG4gICAgICAgIHRpbWVyLiNzY2hlZHVsZVRpbWVvdXQoc3RyYXRlZ3ksIGhhbmRsZXIsIGludGVydmFsTXMsIGludGVydmFsTXMsIC4uLmhhbmRsZXJBcmdzKTtcbiAgICAgICAgcmV0dXJuIHRpbWVyO1xuICAgIH1cbiAgICBzdGF0aWMgYXN5bmMgc3RvcFRpbWVyKHRpbWVyKSB7XG4gICAgICAgIHRpbWVyLiNzdG9wcGVkID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRpbWVyLiN0aW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIuI3RpbWVvdXQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aW1lci4jcHJvbWlzZSkge1xuICAgICAgICAgICAgYXdhaXQgdGltZXIuI3Byb21pc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgI3NjaGVkdWxlVGltZW91dChzdHJhdGVneSwgaGFuZGxlciwgaW50ZXJ2YWxNcywgZGVsYXlNcywgLi4uaGFuZGxlckFyZ3MpIHtcbiAgICAgICAgdGhpcy4jdGltZW91dCA9IHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy4jdGltZW91dCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuI3Byb21pc2UgPSB0aGlzLiNydW5IYW5kbGVyQW5kU2NoZWR1bGVUaW1lb3V0KHN0cmF0ZWd5LCBoYW5kbGVyLCBpbnRlcnZhbE1zLCAuLi5oYW5kbGVyQXJncyk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLiNwcm9taXNlO1xuICAgICAgICAgICAgdGhpcy4jcHJvbWlzZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfSwgZGVsYXlNcyk7XG4gICAgfVxuICAgIGFzeW5jICNydW5IYW5kbGVyQW5kU2NoZWR1bGVUaW1lb3V0KHN0cmF0ZWd5LCBoYW5kbGVyLCBpbnRlcnZhbE1zLCAuLi5oYW5kbGVyQXJncykge1xuICAgICAgICBjb25zdCBzdGFydFRpbWVNcyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgaGFuZGxlciguLi5oYW5kbGVyQXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuI3N0b3BwZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBleGVjdXRpb25UaW1lTXMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHN0YXJ0VGltZU1zO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlbGF5TXMgPSBzdHJhdGVneSA9PT0gXCJkeW5hbWljXCJcbiAgICAgICAgICAgICAgICAgICAgPyBpbnRlcnZhbE1zID4gZXhlY3V0aW9uVGltZU1zXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGludGVydmFsTXMgLSBleGVjdXRpb25UaW1lTXNcbiAgICAgICAgICAgICAgICAgICAgICAgIDogMFxuICAgICAgICAgICAgICAgICAgICA6IGludGVydmFsTXM7XG4gICAgICAgICAgICAgICAgdGhpcy4jc2NoZWR1bGVUaW1lb3V0KHN0cmF0ZWd5LCBoYW5kbGVyLCBpbnRlcnZhbE1zLCBkZWxheU1zLCAuLi5oYW5kbGVyQXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnRzLlNldEludGVydmFsQXN5bmNUaW1lciA9IFNldEludGVydmFsQXN5bmNUaW1lcjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5jbGVhckludGVydmFsQXN5bmMgPSB2b2lkIDA7XG5jb25zdCBzZXRfaW50ZXJ2YWxfYXN5bmNfdGltZXJfY2pzXzEgPSByZXF1aXJlKFwiLi9zZXQtaW50ZXJ2YWwtYXN5bmMtdGltZXIuY2pzXCIpO1xuLyoqXG4gKiBTdG9wcyBhbiBleGVjdXRpb24gY3ljbGUgc3RhcnRlZCBieSBzZXRJbnRlcnZhbEFzeW5jLlxuICogQW55IG9uZ29pbmcgZnVuY3Rpb24gZXhlY3V0aW9ucyB3aWxsIHJ1biB1bnRpbCBjb21wbGV0aW9uLFxuICogYnV0IGFsbCBmdXR1cmUgb25lcyB3aWxsIGJlIGNhbmNlbGxlZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gY2xlYXJJbnRlcnZhbEFzeW5jKHRpbWVyKSB7XG4gICAgaWYgKCEodGltZXIgaW5zdGFuY2VvZiBzZXRfaW50ZXJ2YWxfYXN5bmNfdGltZXJfY2pzXzEuU2V0SW50ZXJ2YWxBc3luY1RpbWVyKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRmlyc3QgYXJndW1lbnQgaXMgbm90IGFuIGluc3RhbmNlIG9mIFNldEludGVydmFsQXN5bmNUaW1lclwiKTtcbiAgICB9XG4gICAgYXdhaXQgc2V0X2ludGVydmFsX2FzeW5jX3RpbWVyX2Nqc18xLlNldEludGVydmFsQXN5bmNUaW1lci5zdG9wVGltZXIodGltZXIpO1xufVxuZXhwb3J0cy5jbGVhckludGVydmFsQXN5bmMgPSBjbGVhckludGVydmFsQXN5bmM7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuc2V0SW50ZXJ2YWxBc3luYyA9IGV4cG9ydHMuY2xlYXJJbnRlcnZhbEFzeW5jID0gdm9pZCAwO1xuY29uc3QgY2xlYXJfaW50ZXJ2YWxfYXN5bmNfY2pzXzEgPSByZXF1aXJlKFwiLi4vY2xlYXItaW50ZXJ2YWwtYXN5bmMuY2pzXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiY2xlYXJJbnRlcnZhbEFzeW5jXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBjbGVhcl9pbnRlcnZhbF9hc3luY19janNfMS5jbGVhckludGVydmFsQXN5bmM7IH0gfSk7XG5jb25zdCBzZXRfaW50ZXJ2YWxfYXN5bmNfdGltZXJfY2pzXzEgPSByZXF1aXJlKFwiLi4vc2V0LWludGVydmFsLWFzeW5jLXRpbWVyLmNqc1wiKTtcbi8qKlxuICogRXhlY3V0ZXMgdGhlIGdpdmVuIGhhbmRsZXIgYXQgZml4ZWQgaW50ZXJ2YWxzLCB3aGlsZSBwcmV2ZW50aW5nXG4gKiBtdWx0aXBsZSBjb25jdXJyZW50IGV4ZWN1dGlvbnMuIFRoZSBoYW5kbGVyIHdpbGwgbmV2ZXIgYmUgZXhlY3V0ZWRcbiAqIGNvbmN1cnJlbnRseSBtb3JlIHRoYW4gb25jZSBpbiBhbnkgZ2l2ZW4gbW9tZW50LCBwcm92aWRpbmcgYSBmaXhlZFxuICogdGltZSBpbnRlcnZhbCBiZXR3ZWVuIHRoZSBlbmQgb2YgYSBnaXZlbiBleGVjdXRpb24gYW5kIHRoZSBzdGFydCBvZlxuICogdGhlIGZvbGxvd2luZyBvbmUuXG4gKi9cbmZ1bmN0aW9uIHNldEludGVydmFsQXN5bmMoaGFuZGxlciwgaW50ZXJ2YWxNcywgLi4uaGFuZGxlckFyZ3MpIHtcbiAgICBpZiAoISh0eXBlb2YgaGFuZGxlciA9PT0gXCJmdW5jdGlvblwiKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRmlyc3QgYXJndW1lbnQgaXMgbm90IGEgZnVuY3Rpb25cIik7XG4gICAgfVxuICAgIGlmICghKHR5cGVvZiBpbnRlcnZhbE1zID09PSBcIm51bWJlclwiKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU2Vjb25kIGFyZ3VtZW50IGlzIG5vdCBhIG51bWJlclwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHNldF9pbnRlcnZhbF9hc3luY190aW1lcl9janNfMS5TZXRJbnRlcnZhbEFzeW5jVGltZXIuc3RhcnRUaW1lcihcImR5bmFtaWNcIiwgaGFuZGxlciwgaW50ZXJ2YWxNcywgLi4uaGFuZGxlckFyZ3MpO1xufVxuZXhwb3J0cy5zZXRJbnRlcnZhbEFzeW5jID0gc2V0SW50ZXJ2YWxBc3luYztcbiIsImltcG9ydCB7IExvZ2dlciB9IGZyb20gJ0Bqc3ByaXNtYXJpbmUvbG9nZ2VyJztcbmltcG9ydCB7IFByb3RvY29sIGFzIEpTUFByb3RvY29sIH0gZnJvbSAnQGpzcHJpc21hcmluZS9wcmlzbWFyaW5lJztcbmltcG9ydCB7IENvbm5lY3Rpb25Qcmlvcml0eSwgSW5ldEFkZHJlc3MsIE1lc3NhZ2VJZGVudGlmaWVycywgUHJvdG9jb2wsIFJha05ldFNlc3Npb24gfSBmcm9tICdAanNwcmlzbWFyaW5lL3Jha25ldCc7XG5pbXBvcnQgQ3J5cHRvLCB7IHJhbmRvbUJ5dGVzIH0gZnJvbSAnbm9kZTpjcnlwdG8nO1xuaW1wb3J0IERncmFtLCB7IHR5cGUgU29ja2V0IH0gZnJvbSAnbm9kZTpkZ3JhbSc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdub2RlOmV2ZW50cyc7XG5pbXBvcnQgeyBjbGVhckludGVydmFsQXN5bmMsIHNldEludGVydmFsQXN5bmMgfSBmcm9tICdzZXQtaW50ZXJ2YWwtYXN5bmMvZHluYW1pYyc7XG5cbi8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xNTI3ODIwLzMxNDI1NTNcbmNvbnN0IGdldFJhbmRvbUludCA9IChtaW46IG51bWJlciwgbWF4OiBudW1iZXIpID0+IHtcbiAgICBtaW4gPSBNYXRoLmNlaWwobWluKTtcbiAgICBtYXggPSBNYXRoLmZsb29yKG1heCk7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4gKyAxKSkgKyBtaW47XG59O1xuXG4vLyBNaW5lY3JhZnQgcmVsYXRlZCBwcm90b2NvbFxuY29uc3QgUFJPVE9DT0wgPSAxMDtcblxuLy8gTWF4IG5ldCB0cmFuc2ZlciB1bml0XG5jb25zdCBERUZfTVRVX1NJWkUgPSAxNDU1O1xuXG4vLyBSYWtuZXQgdGlja3NcbmNvbnN0IFJBS05FVF9UUFMgPSAxMDA7XG5jb25zdCBSQUtORVRfVElDS19MRU5HVEggPSAxIC8gUkFLTkVUX1RQUztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2xpZW50IGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgICBwcml2YXRlIGNsaWVudEdVSUQgPSBDcnlwdG8ucmFuZG9tQnl0ZXMoOCkucmVhZEJpZ0ludDY0QkUoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IG5ldyBMb2dnZXIoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFkZHJlc3M6IEluZXRBZGRyZXNzO1xuICAgIHByaXZhdGUgdGFyZ2V0QWRkcmVzcyE6IEluZXRBZGRyZXNzO1xuICAgIHByaXZhdGUgY29ubmVjdGlvbjogUmFrTmV0U2Vzc2lvbiB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc29ja2V0ID0gRGdyYW0uY3JlYXRlU29ja2V0KHsgdHlwZTogJ3VkcDQnIH0pO1xuICAgIHByaXZhdGUgZ2V0IGNsb3NlZCgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29ubmVjdGluZyA9IGZhbHNlO1xuICAgIHByaXZhdGUgY29ubmVjdGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBvZmZsaW5lSGFuZGxlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgbG9naW5IYW5kbGVkID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuYWRkcmVzcyA9IG5ldyBJbmV0QWRkcmVzcygnMC4wLjAuMCcsIGdldFJhbmRvbUludCg0NjAwMCwgNDk5OTkpKTtcbiAgICAgICAgdGhpcy5zb2NrZXQuYmluZCh0aGlzLmFkZHJlc3MuZ2V0UG9ydCgpLCB0aGlzLmFkZHJlc3MuZ2V0QWRkcmVzcygpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgcGFja2V0IGxpc3RlbmVyIG9uIGdpdmVuIGFkZHJlc3MgYW5kIHBvcnQuXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIGNvbm5lY3QoYWRkcmVzcyA9ICcwLjAuMC4wJywgcG9ydCA9IDE5MTMyKSB7XG4gICAgICAgIHRoaXMudGFyZ2V0QWRkcmVzcyA9IG5ldyBJbmV0QWRkcmVzcyhhZGRyZXNzLCBwb3J0KTtcblxuICAgICAgICB0aGlzLnNvY2tldC5vbignbWVzc2FnZScsIChidWZmZXI6IEJ1ZmZlcikgPT4ge1xuICAgICAgICAgICAgdm9pZCB0aGlzLmhhbmRsZShidWZmZXIpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uKSB0aHJvdyBuZXcgRXJyb3IoJ0FscmVhZHkgY29ubmVjdGVkL2Nvbm5lY3RpbmcgdG8gc2VydmVyLicpO1xuXG4gICAgICAgIHRoaXMubG9nZ2VyLmluZm8oJ0pTUHJpc21hcmluZSBjbGllbnQgaXMgbm93IGF0dGVtcHRpbmcgdG8gY29ubmVjdC4uLicpO1xuXG4gICAgICAgIGNvbnN0IHRpbWVyID0gc2V0SW50ZXJ2YWxBc3luYyhhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5jbG9zZWQpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBjbGVhckludGVydmFsQXN5bmModGltZXIpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gU2VuZCBhIGNsaWVudCBwYWNrZXQgdG8gdGhlIHNlcnZlclxuICAgICAgICAgICAgLy8gc28gdGhlIHNlcnZlciBnb2VzIGluIHRhcmdldCBtb2RlXG4gICAgICAgICAgICAvLyBhbmQgdGhlIGxvZ2luIHByb2Nlc3Mgc3RhcnRzXG4gICAgICAgICAgICBpZiAoIXRoaXMuY29ubmVjdGluZykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBrID0gbmV3IFByb3RvY29sLlVuY29ubmVjdGVkUGluZygpO1xuICAgICAgICAgICAgICAgIHBrLnRpbWVzdGFtcCA9IEJpZ0ludChEYXRlLm5vdygpKTtcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBjYW4gYmUgb21pdHRlZC4uLiBway4gPSB0aGlzLmNsaWVudEdVSUQ7XG4gICAgICAgICAgICAgICAgcGsuZW5jb2RlKCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zZW5kQnVmZmVyKHBrLmdldEJ1ZmZlcigpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuY29ubmVjdGVkICYmICF0aGlzLmxvZ2luSGFuZGxlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBrID0gbmV3IEpTUFByb3RvY29sLlBhY2tldHMuTG9naW5QYWNrZXQoKTtcbiAgICAgICAgICAgICAgICBway5lbmNvZGUoKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHNlbmRQayA9IG5ldyBQcm90b2NvbC5GcmFtZSgpO1xuICAgICAgICAgICAgICAgIHNlbmRQay5yZWxpYWJpbGl0eSA9IDA7XG4gICAgICAgICAgICAgICAgc2VuZFBrLmNvbnRlbnQgPSBway5nZXRCdWZmZXIoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbiEuc2VuZEZyYW1lKHNlbmRQaywgQ29ubmVjdGlvblByaW9yaXR5Lk5PUk1BTCk7IC8vIFBhY2tldCBuZWVkcyB0byBiZSBzcGxpdHRlZFxuICAgICAgICAgICAgICAgIHRoaXMubG9naW5IYW5kbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uPy51cGRhdGUoRGF0ZS5ub3coKSk7XG4gICAgICAgIH0sIFJBS05FVF9USUNLX0xFTkdUSCAqIDEwMDApO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGhhbmRsZShidWZmZXI6IEJ1ZmZlcikge1xuICAgICAgICBjb25zdCBoZWFkZXIgPSBidWZmZXIucmVhZFVJbnQ4KCk7IC8vIFJlYWQgcGFja2V0IGhlYWRlclxuXG4gICAgICAgIGlmICh0aGlzLmNvbm5lY3Rpb24gJiYgdGhpcy5vZmZsaW5lSGFuZGxlZCkge1xuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLmhhbmRsZShidWZmZXIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGJ1ZjtcbiAgICAgICAgc3dpdGNoIChoZWFkZXIpIHtcbiAgICAgICAgICAgIGNhc2UgTWVzc2FnZUlkZW50aWZpZXJzLlVOQ09OTkVDVEVEX1BPTkc6XG4gICAgICAgICAgICAgICAgYnVmID0gdGhpcy5oYW5kbGVVbmNvbm5lY3RlZFBvbmcoYnVmZmVyKTtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnNlbmRCdWZmZXIoYnVmKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTWVzc2FnZUlkZW50aWZpZXJzLk9QRU5fQ09OTkVDVElPTl9SRVBMWV8xOlxuICAgICAgICAgICAgICAgIGJ1ZiA9IHRoaXMuaGFuZGxlT3BlbkNvbm5lY3Rpb25SZXBseTEoYnVmZmVyKTtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnNlbmRCdWZmZXIoYnVmKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTWVzc2FnZUlkZW50aWZpZXJzLk9QRU5fQ09OTkVDVElPTl9SRVBMWV8yOlxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlT3BlbkNvbm5lY3Rpb25SZXBseTIoYnVmZmVyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIud2FybihgVW5oYW5kbGVkIG9mZmxpbmUgcGFja2V0IElEOiAke2hlYWRlcn1gLCAnQ2xpZW50L2hhbmRsZScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZVVuY29ubmVjdGVkUG9uZyhidWZmZXI6IEJ1ZmZlcikge1xuICAgICAgICAvLyBEZWNvZGUgc2VydmVyIHBhY2tldFxuICAgICAgICBjb25zdCBkZWNvZGVkUGFja2V0ID0gbmV3IFByb3RvY29sLlVuY29ubmVjdGVkUG9uZyhidWZmZXIpO1xuICAgICAgICBkZWNvZGVkUGFja2V0LmRlY29kZSgpO1xuXG4gICAgICAgIC8vIENoZWNrIHBhY2tldCB2YWxpZGl0eVxuICAgICAgICAvLyBUbyByZWZhY3RvclxuICAgICAgICBpZiAoIWRlY29kZWRQYWNrZXQuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlY2VpdmVkIGFuIGludmFsaWQgb2ZmbGluZSBtZXNzYWdlJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBFbmNvZGUgcmVzcG9uc2VcbiAgICAgICAgY29uc3QgcGFja2V0ID0gbmV3IFByb3RvY29sLk9wZW5Db25uZWN0aW9uUmVxdWVzdDEoKTtcbiAgICAgICAgcGFja2V0LnByb3RvY29sID0gUFJPVE9DT0w7XG4gICAgICAgIHBhY2tldC5tdHVTaXplID0gREVGX01UVV9TSVpFO1xuICAgICAgICBwYWNrZXQuZW5jb2RlKCk7XG5cbiAgICAgICAgLy8gVXBkYXRlIHNlc3Npb24gc3RhdHVzXG4gICAgICAgIC8vIHRoaXMuc3RhdHVzID0gQ29ubmVjdGlvblN0YXR1cy5UYXJnZXR0ZWQ7XG5cbiAgICAgICAgcmV0dXJuIHBhY2tldC5nZXRCdWZmZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlT3BlbkNvbm5lY3Rpb25SZXBseTEoYnVmZmVyOiBCdWZmZXIpIHtcbiAgICAgICAgLy8gRGVjb2RlIHNlcnZlciBwYWNrZXRcbiAgICAgICAgY29uc3QgZGVjb2RlZFBhY2tldCA9IG5ldyBQcm90b2NvbC5PcGVuQ29ubmVjdGlvblJlcGx5MShidWZmZXIpO1xuICAgICAgICBkZWNvZGVkUGFja2V0LmRlY29kZSgpO1xuXG4gICAgICAgIC8vIENoZWNrIHBhY2tldCB2YWxpZGl0eVxuICAgICAgICAvLyBUbyByZWZhY3RvclxuICAgICAgICBpZiAoIWRlY29kZWRQYWNrZXQuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlY2VpdmVkIGFuIGludmFsaWQgb2ZmbGluZSBtZXNzYWdlJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBFbmNvZGUgcmVzcG9uc2VcbiAgICAgICAgY29uc3QgcGFja2V0ID0gbmV3IFByb3RvY29sLk9wZW5Db25uZWN0aW9uUmVxdWVzdDIoKTtcbiAgICAgICAgcGFja2V0LnNlcnZlckFkZHJlc3MgPSB0aGlzLnRhcmdldEFkZHJlc3M7XG4gICAgICAgIHBhY2tldC5tdHVTaXplID0gREVGX01UVV9TSVpFO1xuICAgICAgICBwYWNrZXQuY2xpZW50R1VJRCA9IHRoaXMuY2xpZW50R1VJRDtcbiAgICAgICAgcGFja2V0LmVuY29kZSgpO1xuXG4gICAgICAgIC8vIFVwZGF0ZSBzZXNzaW9uIHN0YXR1c1xuICAgICAgICB0aGlzLmNvbm5lY3RpbmcgPSB0cnVlO1xuICAgICAgICAvLyBUaGlzLnN0YXR1cyA9IENvbm5lY3Rpb25TdGF0dXMuQ29ubmVjdGVkO1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb24gPSBuZXcgUmFrTmV0U2Vzc2lvbihcbiAgICAgICAgICAgIHRoaXMgYXMgYW55LFxuICAgICAgICAgICAgREVGX01UVV9TSVpFLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHRoaXMuYWRkcmVzcy5nZXRBZGRyZXNzKCksXG4gICAgICAgICAgICAgICAgcG9ydDogdGhpcy5hZGRyZXNzLmdldFBvcnQoKSxcbiAgICAgICAgICAgICAgICBmYW1pbHk6ICdJUHY0JyxcbiAgICAgICAgICAgICAgICBzaXplOiAwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmFuZG9tQnl0ZXMoOCkucmVhZEJpZ0ludDY0QkUoKVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBwYWNrZXQuZ2V0QnVmZmVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZU9wZW5Db25uZWN0aW9uUmVwbHkyKGJ1ZmZlcjogQnVmZmVyKSB7XG4gICAgICAgIC8vIERlY29kZSBzZXJ2ZXIgcGFja2V0XG4gICAgICAgIGNvbnN0IGRlY29kZWRQYWNrZXQgPSBuZXcgUHJvdG9jb2wuT3BlbkNvbm5lY3Rpb25SZXBseTIoYnVmZmVyKTtcbiAgICAgICAgZGVjb2RlZFBhY2tldC5kZWNvZGUoKTtcblxuICAgICAgICAvLyBDaGVjayBwYWNrZXQgdmFsaWRpdHlcbiAgICAgICAgLy8gVG8gcmVmYWN0b3JcbiAgICAgICAgaWYgKCFkZWNvZGVkUGFja2V0LmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZWNlaXZlZCBhbiBpbnZhbGlkIG9mZmxpbmUgbWVzc2FnZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRW5jb2RlIHJlc3BvbnNlIChlbmNhcHN1bGF0ZWQpXG4gICAgICAgIGNvbnN0IHBhY2tldCA9IG5ldyBQcm90b2NvbC5Db25uZWN0aW9uUmVxdWVzdCgpO1xuICAgICAgICBwYWNrZXQuY2xpZW50R1VJRCA9IHRoaXMuY2xpZW50R1VJRDtcbiAgICAgICAgcGFja2V0LnJlcXVlc3RUaW1lc3RhbXAgPSBCaWdJbnQoRGF0ZS5ub3coKSk7XG4gICAgICAgIHBhY2tldC5lbmNvZGUoKTtcblxuICAgICAgICBjb25zdCBzZW5kUGFja2V0ID0gbmV3IFByb3RvY29sLkZyYW1lKCk7XG4gICAgICAgIHNlbmRQYWNrZXQucmVsaWFiaWxpdHkgPSAwO1xuICAgICAgICBzZW5kUGFja2V0LmNvbnRlbnQgPSBwYWNrZXQuZ2V0QnVmZmVyKCk7XG5cbiAgICAgICAgdGhpcy5jb25uZWN0aW9uPy5zZW5kRnJhbWUoc2VuZFBhY2tldCwgQ29ubmVjdGlvblByaW9yaXR5Lk5PUk1BTCk7XG5cbiAgICAgICAgdGhpcy5vZmZsaW5lSGFuZGxlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuY29ubmVjdGVkID0gdHJ1ZTsgLy8gU2hvdWxkIGJlLi4uIHdlIGNhbid0IHJlbHkgb24gaXRcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZW5kcyB0aGUgYnVmZmVyIHRvIHRoZSBzZXJ2ZXJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBidWZmZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgc2VuZEJ1ZmZlcihidWZmZXI6IEJ1ZmZlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLnNvY2tldC5zZW5kKGJ1ZmZlciwgMCwgYnVmZmVyLmJ5dGVMZW5ndGgsIHRoaXMudGFyZ2V0QWRkcmVzcy5nZXRQb3J0KCksIHRoaXMudGFyZ2V0QWRkcmVzcy5nZXRBZGRyZXNzKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTb2NrZXQoKTogU29ja2V0IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc29ja2V0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBZGRyZXNzKCk6IEluZXRBZGRyZXNzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkcmVzcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVtb3ZlQ29ubmVjdGlvbihfY29ubmVjdGlvbjogUmFrTmV0U2Vzc2lvbiwgX3JlYXNvbj86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbImNsZWFySW50ZXJ2YWxBc3luY18xIiwicmVxdWlyZSQkMCIsInJlcXVpcmUkJDEiLCJFdmVudEVtaXR0ZXIiLCJDcnlwdG8iLCJMb2dnZXIiLCJEZ3JhbSIsIkluZXRBZGRyZXNzIiwic2V0SW50ZXJ2YWxBc3luYyIsImNsZWFySW50ZXJ2YWxBc3luYyIsIlByb3RvY29sIiwiSlNQUHJvdG9jb2wiLCJDb25uZWN0aW9uUHJpb3JpdHkiLCJNZXNzYWdlSWRlbnRpZmllcnMiLCJSYWtOZXRTZXNzaW9uIiwicmFuZG9tQnl0ZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBTSxDQUFDLGNBQWMsQ0FBQyxxQkFBTyxFQUFFLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFD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
|
|
274
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzLmNqcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3NldC1pbnRlcnZhbC1hc3luY0AzLjAuMy9ub2RlX21vZHVsZXMvc2V0LWludGVydmFsLWFzeW5jL2Rpc3Qvc2V0LWludGVydmFsLWFzeW5jLXRpbWVyLmNqcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9zZXQtaW50ZXJ2YWwtYXN5bmNAMy4wLjMvbm9kZV9tb2R1bGVzL3NldC1pbnRlcnZhbC1hc3luYy9kaXN0L2NsZWFyLWludGVydmFsLWFzeW5jLmNqcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9zZXQtaW50ZXJ2YWwtYXN5bmNAMy4wLjMvbm9kZV9tb2R1bGVzL3NldC1pbnRlcnZhbC1hc3luYy9kaXN0L2R5bmFtaWMvc2V0LWludGVydmFsLWFzeW5jLmNqcyIsIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuU2V0SW50ZXJ2YWxBc3luY1RpbWVyID0gdm9pZCAwO1xuY29uc3QgTUlOX0lOVEVSVkFMX01TID0gMTA7XG5jb25zdCBNQVhfSU5URVJWQUxfTVMgPSAyMTQ3NDgzNjQ3O1xuY2xhc3MgU2V0SW50ZXJ2YWxBc3luY1RpbWVyIHtcbiAgICAjdGltZW91dCA9IHVuZGVmaW5lZDtcbiAgICAjcHJvbWlzZSA9IHVuZGVmaW5lZDtcbiAgICAjc3RvcHBlZCA9IGZhbHNlO1xuICAgIHN0YXRpYyBzdGFydFRpbWVyKHN0cmF0ZWd5LCBoYW5kbGVyLCBpbnRlcnZhbE1zLCAuLi5oYW5kbGVyQXJncykge1xuICAgICAgICBpbnRlcnZhbE1zID0gTWF0aC5taW4oTWF0aC5tYXgoTWF0aC50cnVuYyhpbnRlcnZhbE1zKSwgTUlOX0lOVEVSVkFMX01TKSwgTUFYX0lOVEVSVkFMX01TKTtcbiAgICAgICAgY29uc3QgdGltZXIgPSBuZXcgU2V0SW50ZXJ2YWxBc3luY1RpbWVyKCk7XG4gICAgICAgIHRpbWVyLiNzY2hlZHVsZVRpbWVvdXQoc3RyYXRlZ3ksIGhhbmRsZXIsIGludGVydmFsTXMsIGludGVydmFsTXMsIC4uLmhhbmRsZXJBcmdzKTtcbiAgICAgICAgcmV0dXJuIHRpbWVyO1xuICAgIH1cbiAgICBzdGF0aWMgYXN5bmMgc3RvcFRpbWVyKHRpbWVyKSB7XG4gICAgICAgIHRpbWVyLiNzdG9wcGVkID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRpbWVyLiN0aW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIuI3RpbWVvdXQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aW1lci4jcHJvbWlzZSkge1xuICAgICAgICAgICAgYXdhaXQgdGltZXIuI3Byb21pc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgI3NjaGVkdWxlVGltZW91dChzdHJhdGVneSwgaGFuZGxlciwgaW50ZXJ2YWxNcywgZGVsYXlNcywgLi4uaGFuZGxlckFyZ3MpIHtcbiAgICAgICAgdGhpcy4jdGltZW91dCA9IHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy4jdGltZW91dCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuI3Byb21pc2UgPSB0aGlzLiNydW5IYW5kbGVyQW5kU2NoZWR1bGVUaW1lb3V0KHN0cmF0ZWd5LCBoYW5kbGVyLCBpbnRlcnZhbE1zLCAuLi5oYW5kbGVyQXJncyk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLiNwcm9taXNlO1xuICAgICAgICAgICAgdGhpcy4jcHJvbWlzZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfSwgZGVsYXlNcyk7XG4gICAgfVxuICAgIGFzeW5jICNydW5IYW5kbGVyQW5kU2NoZWR1bGVUaW1lb3V0KHN0cmF0ZWd5LCBoYW5kbGVyLCBpbnRlcnZhbE1zLCAuLi5oYW5kbGVyQXJncykge1xuICAgICAgICBjb25zdCBzdGFydFRpbWVNcyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgaGFuZGxlciguLi5oYW5kbGVyQXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuI3N0b3BwZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBleGVjdXRpb25UaW1lTXMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHN0YXJ0VGltZU1zO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlbGF5TXMgPSBzdHJhdGVneSA9PT0gXCJkeW5hbWljXCJcbiAgICAgICAgICAgICAgICAgICAgPyBpbnRlcnZhbE1zID4gZXhlY3V0aW9uVGltZU1zXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGludGVydmFsTXMgLSBleGVjdXRpb25UaW1lTXNcbiAgICAgICAgICAgICAgICAgICAgICAgIDogMFxuICAgICAgICAgICAgICAgICAgICA6IGludGVydmFsTXM7XG4gICAgICAgICAgICAgICAgdGhpcy4jc2NoZWR1bGVUaW1lb3V0KHN0cmF0ZWd5LCBoYW5kbGVyLCBpbnRlcnZhbE1zLCBkZWxheU1zLCAuLi5oYW5kbGVyQXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnRzLlNldEludGVydmFsQXN5bmNUaW1lciA9IFNldEludGVydmFsQXN5bmNUaW1lcjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5jbGVhckludGVydmFsQXN5bmMgPSB2b2lkIDA7XG5jb25zdCBzZXRfaW50ZXJ2YWxfYXN5bmNfdGltZXJfY2pzXzEgPSByZXF1aXJlKFwiLi9zZXQtaW50ZXJ2YWwtYXN5bmMtdGltZXIuY2pzXCIpO1xuLyoqXG4gKiBTdG9wcyBhbiBleGVjdXRpb24gY3ljbGUgc3RhcnRlZCBieSBzZXRJbnRlcnZhbEFzeW5jLlxuICogQW55IG9uZ29pbmcgZnVuY3Rpb24gZXhlY3V0aW9ucyB3aWxsIHJ1biB1bnRpbCBjb21wbGV0aW9uLFxuICogYnV0IGFsbCBmdXR1cmUgb25lcyB3aWxsIGJlIGNhbmNlbGxlZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gY2xlYXJJbnRlcnZhbEFzeW5jKHRpbWVyKSB7XG4gICAgaWYgKCEodGltZXIgaW5zdGFuY2VvZiBzZXRfaW50ZXJ2YWxfYXN5bmNfdGltZXJfY2pzXzEuU2V0SW50ZXJ2YWxBc3luY1RpbWVyKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRmlyc3QgYXJndW1lbnQgaXMgbm90IGFuIGluc3RhbmNlIG9mIFNldEludGVydmFsQXN5bmNUaW1lclwiKTtcbiAgICB9XG4gICAgYXdhaXQgc2V0X2ludGVydmFsX2FzeW5jX3RpbWVyX2Nqc18xLlNldEludGVydmFsQXN5bmNUaW1lci5zdG9wVGltZXIodGltZXIpO1xufVxuZXhwb3J0cy5jbGVhckludGVydmFsQXN5bmMgPSBjbGVhckludGVydmFsQXN5bmM7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuc2V0SW50ZXJ2YWxBc3luYyA9IGV4cG9ydHMuY2xlYXJJbnRlcnZhbEFzeW5jID0gdm9pZCAwO1xuY29uc3QgY2xlYXJfaW50ZXJ2YWxfYXN5bmNfY2pzXzEgPSByZXF1aXJlKFwiLi4vY2xlYXItaW50ZXJ2YWwtYXN5bmMuY2pzXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiY2xlYXJJbnRlcnZhbEFzeW5jXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBjbGVhcl9pbnRlcnZhbF9hc3luY19janNfMS5jbGVhckludGVydmFsQXN5bmM7IH0gfSk7XG5jb25zdCBzZXRfaW50ZXJ2YWxfYXN5bmNfdGltZXJfY2pzXzEgPSByZXF1aXJlKFwiLi4vc2V0LWludGVydmFsLWFzeW5jLXRpbWVyLmNqc1wiKTtcbi8qKlxuICogRXhlY3V0ZXMgdGhlIGdpdmVuIGhhbmRsZXIgYXQgZml4ZWQgaW50ZXJ2YWxzLCB3aGlsZSBwcmV2ZW50aW5nXG4gKiBtdWx0aXBsZSBjb25jdXJyZW50IGV4ZWN1dGlvbnMuIFRoZSBoYW5kbGVyIHdpbGwgbmV2ZXIgYmUgZXhlY3V0ZWRcbiAqIGNvbmN1cnJlbnRseSBtb3JlIHRoYW4gb25jZSBpbiBhbnkgZ2l2ZW4gbW9tZW50LCBwcm92aWRpbmcgYSBmaXhlZFxuICogdGltZSBpbnRlcnZhbCBiZXR3ZWVuIHRoZSBlbmQgb2YgYSBnaXZlbiBleGVjdXRpb24gYW5kIHRoZSBzdGFydCBvZlxuICogdGhlIGZvbGxvd2luZyBvbmUuXG4gKi9cbmZ1bmN0aW9uIHNldEludGVydmFsQXN5bmMoaGFuZGxlciwgaW50ZXJ2YWxNcywgLi4uaGFuZGxlckFyZ3MpIHtcbiAgICBpZiAoISh0eXBlb2YgaGFuZGxlciA9PT0gXCJmdW5jdGlvblwiKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRmlyc3QgYXJndW1lbnQgaXMgbm90IGEgZnVuY3Rpb25cIik7XG4gICAgfVxuICAgIGlmICghKHR5cGVvZiBpbnRlcnZhbE1zID09PSBcIm51bWJlclwiKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU2Vjb25kIGFyZ3VtZW50IGlzIG5vdCBhIG51bWJlclwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHNldF9pbnRlcnZhbF9hc3luY190aW1lcl9janNfMS5TZXRJbnRlcnZhbEFzeW5jVGltZXIuc3RhcnRUaW1lcihcImR5bmFtaWNcIiwgaGFuZGxlciwgaW50ZXJ2YWxNcywgLi4uaGFuZGxlckFyZ3MpO1xufVxuZXhwb3J0cy5zZXRJbnRlcnZhbEFzeW5jID0gc2V0SW50ZXJ2YWxBc3luYztcbiIsImltcG9ydCB7IExvZ2dlciB9IGZyb20gJ0Bqc3ByaXNtYXJpbmUvbG9nZ2VyJztcbmltcG9ydCB7IFByb3RvY29sIGFzIEpTUFByb3RvY29sIH0gZnJvbSAnQGpzcHJpc21hcmluZS9wcmlzbWFyaW5lJztcbmltcG9ydCB7IENvbm5lY3Rpb25Qcmlvcml0eSwgSW5ldEFkZHJlc3MsIE1lc3NhZ2VJZGVudGlmaWVycywgUHJvdG9jb2wsIFJha05ldFNlc3Npb24gfSBmcm9tICdAanNwcmlzbWFyaW5lL3Jha25ldCc7XG5pbXBvcnQgQ3J5cHRvLCB7IHJhbmRvbUJ5dGVzIH0gZnJvbSAnbm9kZTpjcnlwdG8nO1xuaW1wb3J0IERncmFtLCB7IHR5cGUgU29ja2V0IH0gZnJvbSAnbm9kZTpkZ3JhbSc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdub2RlOmV2ZW50cyc7XG5pbXBvcnQgeyBjbGVhckludGVydmFsQXN5bmMsIHNldEludGVydmFsQXN5bmMgfSBmcm9tICdzZXQtaW50ZXJ2YWwtYXN5bmMvZHluYW1pYyc7XG5cbi8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xNTI3ODIwLzMxNDI1NTNcbmNvbnN0IGdldFJhbmRvbUludCA9IChtaW46IG51bWJlciwgbWF4OiBudW1iZXIpID0+IHtcbiAgICBtaW4gPSBNYXRoLmNlaWwobWluKTtcbiAgICBtYXggPSBNYXRoLmZsb29yKG1heCk7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4gKyAxKSkgKyBtaW47XG59O1xuXG4vLyBNaW5lY3JhZnQgcmVsYXRlZCBwcm90b2NvbFxuY29uc3QgUFJPVE9DT0wgPSAxMDtcblxuLy8gTWF4IG5ldCB0cmFuc2ZlciB1bml0XG5jb25zdCBERUZfTVRVX1NJWkUgPSAxNDU1O1xuXG4vLyBSYWtuZXQgdGlja3NcbmNvbnN0IFJBS05FVF9UUFMgPSAxMDA7XG5jb25zdCBSQUtORVRfVElDS19MRU5HVEggPSAxIC8gUkFLTkVUX1RQUztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2xpZW50IGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgICBwcml2YXRlIGNsaWVudEdVSUQgPSBDcnlwdG8ucmFuZG9tQnl0ZXMoOCkucmVhZEJpZ0ludDY0QkUoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IG5ldyBMb2dnZXIoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFkZHJlc3M6IEluZXRBZGRyZXNzO1xuICAgIHByaXZhdGUgdGFyZ2V0QWRkcmVzcyE6IEluZXRBZGRyZXNzO1xuICAgIHByaXZhdGUgY29ubmVjdGlvbjogUmFrTmV0U2Vzc2lvbiB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc29ja2V0ID0gRGdyYW0uY3JlYXRlU29ja2V0KHsgdHlwZTogJ3VkcDQnIH0pO1xuICAgIHByaXZhdGUgZ2V0IGNsb3NlZCgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29ubmVjdGluZyA9IGZhbHNlO1xuICAgIHByaXZhdGUgY29ubmVjdGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBvZmZsaW5lSGFuZGxlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgbG9naW5IYW5kbGVkID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuYWRkcmVzcyA9IG5ldyBJbmV0QWRkcmVzcygnMC4wLjAuMCcsIGdldFJhbmRvbUludCg0NjAwMCwgNDk5OTkpKTtcbiAgICAgICAgdGhpcy5zb2NrZXQuYmluZCh0aGlzLmFkZHJlc3MuZ2V0UG9ydCgpLCB0aGlzLmFkZHJlc3MuZ2V0QWRkcmVzcygpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgcGFja2V0IGxpc3RlbmVyIG9uIGdpdmVuIGFkZHJlc3MgYW5kIHBvcnQuXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIGNvbm5lY3QoYWRkcmVzcyA9ICcwLjAuMC4wJywgcG9ydCA9IDE5MTMyKSB7XG4gICAgICAgIHRoaXMudGFyZ2V0QWRkcmVzcyA9IG5ldyBJbmV0QWRkcmVzcyhhZGRyZXNzLCBwb3J0KTtcblxuICAgICAgICB0aGlzLnNvY2tldC5vbignbWVzc2FnZScsIChidWZmZXI6IEJ1ZmZlcikgPT4ge1xuICAgICAgICAgICAgdm9pZCB0aGlzLmhhbmRsZShidWZmZXIpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uKSB0aHJvdyBuZXcgRXJyb3IoJ0FscmVhZHkgY29ubmVjdGVkL2Nvbm5lY3RpbmcgdG8gc2VydmVyLicpO1xuXG4gICAgICAgIHRoaXMubG9nZ2VyLmluZm8oJ0pTUHJpc21hcmluZSBjbGllbnQgaXMgbm93IGF0dGVtcHRpbmcgdG8gY29ubmVjdC4uLicpO1xuXG4gICAgICAgIGNvbnN0IHRpbWVyID0gc2V0SW50ZXJ2YWxBc3luYyhhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5jbG9zZWQpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBjbGVhckludGVydmFsQXN5bmModGltZXIpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gU2VuZCBhIGNsaWVudCBwYWNrZXQgdG8gdGhlIHNlcnZlclxuICAgICAgICAgICAgLy8gc28gdGhlIHNlcnZlciBnb2VzIGluIHRhcmdldCBtb2RlXG4gICAgICAgICAgICAvLyBhbmQgdGhlIGxvZ2luIHByb2Nlc3Mgc3RhcnRzXG4gICAgICAgICAgICBpZiAoIXRoaXMuY29ubmVjdGluZykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBrID0gbmV3IFByb3RvY29sLlVuY29ubmVjdGVkUGluZygpO1xuICAgICAgICAgICAgICAgIHBrLnRpbWVzdGFtcCA9IEJpZ0ludChEYXRlLm5vdygpKTtcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBjYW4gYmUgb21pdHRlZC4uLiBway4gPSB0aGlzLmNsaWVudEdVSUQ7XG4gICAgICAgICAgICAgICAgcGsuZW5jb2RlKCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zZW5kQnVmZmVyKHBrLmdldEJ1ZmZlcigpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuY29ubmVjdGVkICYmICF0aGlzLmxvZ2luSGFuZGxlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBrID0gbmV3IEpTUFByb3RvY29sLlBhY2tldHMuTG9naW5QYWNrZXQoKTtcbiAgICAgICAgICAgICAgICBway5lbmNvZGUoKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHNlbmRQayA9IG5ldyBQcm90b2NvbC5GcmFtZSgpO1xuICAgICAgICAgICAgICAgIHNlbmRQay5yZWxpYWJpbGl0eSA9IDA7XG4gICAgICAgICAgICAgICAgc2VuZFBrLmNvbnRlbnQgPSBway5nZXRCdWZmZXIoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbiEuc2VuZEZyYW1lKHNlbmRQaywgQ29ubmVjdGlvblByaW9yaXR5Lk5PUk1BTCk7IC8vIFBhY2tldCBuZWVkcyB0byBiZSBzcGxpdHRlZFxuICAgICAgICAgICAgICAgIHRoaXMubG9naW5IYW5kbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uPy51cGRhdGUoRGF0ZS5ub3coKSk7XG4gICAgICAgIH0sIFJBS05FVF9USUNLX0xFTkdUSCAqIDEwMDApO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGhhbmRsZShidWZmZXI6IEJ1ZmZlcikge1xuICAgICAgICBjb25zdCBoZWFkZXIgPSBidWZmZXIucmVhZFVJbnQ4KCk7IC8vIFJlYWQgcGFja2V0IGhlYWRlclxuXG4gICAgICAgIGlmICh0aGlzLmNvbm5lY3Rpb24gJiYgdGhpcy5vZmZsaW5lSGFuZGxlZCkge1xuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLmhhbmRsZShidWZmZXIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGJ1ZjtcbiAgICAgICAgc3dpdGNoIChoZWFkZXIpIHtcbiAgICAgICAgICAgIGNhc2UgTWVzc2FnZUlkZW50aWZpZXJzLlVOQ09OTkVDVEVEX1BPTkc6XG4gICAgICAgICAgICAgICAgYnVmID0gdGhpcy5oYW5kbGVVbmNvbm5lY3RlZFBvbmcoYnVmZmVyKTtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnNlbmRCdWZmZXIoYnVmKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTWVzc2FnZUlkZW50aWZpZXJzLk9QRU5fQ09OTkVDVElPTl9SRVBMWV8xOlxuICAgICAgICAgICAgICAgIGJ1ZiA9IHRoaXMuaGFuZGxlT3BlbkNvbm5lY3Rpb25SZXBseTEoYnVmZmVyKTtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnNlbmRCdWZmZXIoYnVmKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTWVzc2FnZUlkZW50aWZpZXJzLk9QRU5fQ09OTkVDVElPTl9SRVBMWV8yOlxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlT3BlbkNvbm5lY3Rpb25SZXBseTIoYnVmZmVyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIud2FybihgVW5oYW5kbGVkIG9mZmxpbmUgcGFja2V0IElEOiAke2hlYWRlcn1gLCAnQ2xpZW50L2hhbmRsZScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZVVuY29ubmVjdGVkUG9uZyhidWZmZXI6IEJ1ZmZlcikge1xuICAgICAgICAvLyBEZWNvZGUgc2VydmVyIHBhY2tldFxuICAgICAgICBjb25zdCBkZWNvZGVkUGFja2V0ID0gbmV3IFByb3RvY29sLlVuY29ubmVjdGVkUG9uZyhidWZmZXIpO1xuICAgICAgICBkZWNvZGVkUGFja2V0LmRlY29kZSgpO1xuXG4gICAgICAgIC8vIENoZWNrIHBhY2tldCB2YWxpZGl0eVxuICAgICAgICAvLyBUbyByZWZhY3RvclxuICAgICAgICBpZiAoIWRlY29kZWRQYWNrZXQuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlY2VpdmVkIGFuIGludmFsaWQgb2ZmbGluZSBtZXNzYWdlJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBFbmNvZGUgcmVzcG9uc2VcbiAgICAgICAgY29uc3QgcGFja2V0ID0gbmV3IFByb3RvY29sLk9wZW5Db25uZWN0aW9uUmVxdWVzdDEoKTtcbiAgICAgICAgcGFja2V0LnByb3RvY29sID0gUFJPVE9DT0w7XG4gICAgICAgIHBhY2tldC5tdHVTaXplID0gREVGX01UVV9TSVpFO1xuICAgICAgICBwYWNrZXQuZW5jb2RlKCk7XG5cbiAgICAgICAgLy8gVXBkYXRlIHNlc3Npb24gc3RhdHVzXG4gICAgICAgIC8vIHRoaXMuc3RhdHVzID0gQ29ubmVjdGlvblN0YXR1cy5UYXJnZXR0ZWQ7XG5cbiAgICAgICAgcmV0dXJuIHBhY2tldC5nZXRCdWZmZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlT3BlbkNvbm5lY3Rpb25SZXBseTEoYnVmZmVyOiBCdWZmZXIpIHtcbiAgICAgICAgLy8gRGVjb2RlIHNlcnZlciBwYWNrZXRcbiAgICAgICAgY29uc3QgZGVjb2RlZFBhY2tldCA9IG5ldyBQcm90b2NvbC5PcGVuQ29ubmVjdGlvblJlcGx5MShidWZmZXIpO1xuICAgICAgICBkZWNvZGVkUGFja2V0LmRlY29kZSgpO1xuXG4gICAgICAgIC8vIENoZWNrIHBhY2tldCB2YWxpZGl0eVxuICAgICAgICAvLyBUbyByZWZhY3RvclxuICAgICAgICBpZiAoIWRlY29kZWRQYWNrZXQuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlY2VpdmVkIGFuIGludmFsaWQgb2ZmbGluZSBtZXNzYWdlJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBFbmNvZGUgcmVzcG9uc2VcbiAgICAgICAgY29uc3QgcGFja2V0ID0gbmV3IFByb3RvY29sLk9wZW5Db25uZWN0aW9uUmVxdWVzdDIoKTtcbiAgICAgICAgcGFja2V0LnNlcnZlckFkZHJlc3MgPSB0aGlzLnRhcmdldEFkZHJlc3M7XG4gICAgICAgIHBhY2tldC5tdHVTaXplID0gREVGX01UVV9TSVpFO1xuICAgICAgICBwYWNrZXQuY2xpZW50R1VJRCA9IHRoaXMuY2xpZW50R1VJRDtcbiAgICAgICAgcGFja2V0LmVuY29kZSgpO1xuXG4gICAgICAgIC8vIFVwZGF0ZSBzZXNzaW9uIHN0YXR1c1xuICAgICAgICB0aGlzLmNvbm5lY3RpbmcgPSB0cnVlO1xuICAgICAgICAvLyBUaGlzLnN0YXR1cyA9IENvbm5lY3Rpb25TdGF0dXMuQ29ubmVjdGVkO1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb24gPSBuZXcgUmFrTmV0U2Vzc2lvbihcbiAgICAgICAgICAgIHRoaXMgYXMgYW55LFxuICAgICAgICAgICAgREVGX01UVV9TSVpFLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHRoaXMuYWRkcmVzcy5nZXRBZGRyZXNzKCksXG4gICAgICAgICAgICAgICAgcG9ydDogdGhpcy5hZGRyZXNzLmdldFBvcnQoKSxcbiAgICAgICAgICAgICAgICBmYW1pbHk6ICdJUHY0JyxcbiAgICAgICAgICAgICAgICBzaXplOiAwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmFuZG9tQnl0ZXMoOCkucmVhZEJpZ0ludDY0QkUoKVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBwYWNrZXQuZ2V0QnVmZmVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZU9wZW5Db25uZWN0aW9uUmVwbHkyKGJ1ZmZlcjogQnVmZmVyKSB7XG4gICAgICAgIC8vIERlY29kZSBzZXJ2ZXIgcGFja2V0XG4gICAgICAgIGNvbnN0IGRlY29kZWRQYWNrZXQgPSBuZXcgUHJvdG9jb2wuT3BlbkNvbm5lY3Rpb25SZXBseTIoYnVmZmVyKTtcbiAgICAgICAgZGVjb2RlZFBhY2tldC5kZWNvZGUoKTtcblxuICAgICAgICAvLyBDaGVjayBwYWNrZXQgdmFsaWRpdHlcbiAgICAgICAgLy8gVG8gcmVmYWN0b3JcbiAgICAgICAgaWYgKCFkZWNvZGVkUGFja2V0LmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZWNlaXZlZCBhbiBpbnZhbGlkIG9mZmxpbmUgbWVzc2FnZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRW5jb2RlIHJlc3BvbnNlIChlbmNhcHN1bGF0ZWQpXG4gICAgICAgIGNvbnN0IHBhY2tldCA9IG5ldyBQcm90b2NvbC5Db25uZWN0aW9uUmVxdWVzdCgpO1xuICAgICAgICBwYWNrZXQuY2xpZW50R1VJRCA9IHRoaXMuY2xpZW50R1VJRDtcbiAgICAgICAgcGFja2V0LnJlcXVlc3RUaW1lc3RhbXAgPSBCaWdJbnQoRGF0ZS5ub3coKSk7XG4gICAgICAgIHBhY2tldC5lbmNvZGUoKTtcblxuICAgICAgICBjb25zdCBzZW5kUGFja2V0ID0gbmV3IFByb3RvY29sLkZyYW1lKCk7XG4gICAgICAgIHNlbmRQYWNrZXQucmVsaWFiaWxpdHkgPSAwO1xuICAgICAgICBzZW5kUGFja2V0LmNvbnRlbnQgPSBwYWNrZXQuZ2V0QnVmZmVyKCk7XG5cbiAgICAgICAgdGhpcy5jb25uZWN0aW9uPy5zZW5kRnJhbWUoc2VuZFBhY2tldCwgQ29ubmVjdGlvblByaW9yaXR5Lk5PUk1BTCk7XG5cbiAgICAgICAgdGhpcy5vZmZsaW5lSGFuZGxlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuY29ubmVjdGVkID0gdHJ1ZTsgLy8gU2hvdWxkIGJlLi4uIHdlIGNhbid0IHJlbHkgb24gaXRcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZW5kcyB0aGUgYnVmZmVyIHRvIHRoZSBzZXJ2ZXJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBidWZmZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgc2VuZEJ1ZmZlcihidWZmZXI6IEJ1ZmZlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLnNvY2tldC5zZW5kKGJ1ZmZlciwgMCwgYnVmZmVyLmJ5dGVMZW5ndGgsIHRoaXMudGFyZ2V0QWRkcmVzcy5nZXRQb3J0KCksIHRoaXMudGFyZ2V0QWRkcmVzcy5nZXRBZGRyZXNzKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTb2NrZXQoKTogU29ja2V0IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc29ja2V0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBZGRyZXNzKCk6IEluZXRBZGRyZXNzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkcmVzcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVtb3ZlQ29ubmVjdGlvbihfY29ubmVjdGlvbjogUmFrTmV0U2Vzc2lvbiwgX3JlYXNvbj86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbImNsZWFySW50ZXJ2YWxBc3luY18xIiwicmVxdWlyZSQkMCIsInJlcXVpcmUkJDEiLCJFdmVudEVtaXR0ZXIiLCJDcnlwdG8iLCJMb2dnZXIiLCJEZ3JhbSIsIkluZXRBZGRyZXNzIiwic2V0SW50ZXJ2YWxBc3luYyIsImNsZWFySW50ZXJ2YWxBc3luYyIsIlByb3RvY29sIiwiSlNQUHJvdG9jb2wiLCJDb25uZWN0aW9uUHJpb3JpdHkiLCJNZXNzYWdlSWRlbnRpZmllcnMiLCJSYWtOZXRTZXNzaW9uIiwicmFuZG9tQnl0ZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBTSxDQUFDLGNBQWMsQ0FBQyxxQkFBTyxFQUFFLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFD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
|
package/dist/index.es.js
CHANGED
|
@@ -139,8 +139,7 @@ class Client extends EventEmitter {
|
|
|
139
139
|
this.socket.on("message", (buffer) => {
|
|
140
140
|
void this.handle(buffer);
|
|
141
141
|
});
|
|
142
|
-
if (this.connection)
|
|
143
|
-
throw new Error("Already connected/connecting to server.");
|
|
142
|
+
if (this.connection) throw new Error("Already connected/connecting to server.");
|
|
144
143
|
this.logger.info("JSPrismarine client is now attempting to connect...");
|
|
145
144
|
const timer = setIntervalAsync.setIntervalAsync(async () => {
|
|
146
145
|
if (this.closed) {
|
|
@@ -263,4 +262,4 @@ class Client extends EventEmitter {
|
|
|
263
262
|
}
|
|
264
263
|
|
|
265
264
|
export { Client as default };
|
|
266
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9zZXQtaW50ZXJ2YWwtYXN5bmNAMy4wLjMvbm9kZV9tb2R1bGVzL3NldC1pbnRlcnZhbC1hc3luYy9kaXN0L3NldC1pbnRlcnZhbC1hc3luYy10aW1lci5janMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vc2V0LWludGVydmFsLWFzeW5jQDMuMC4zL25vZGVfbW9kdWxlcy9zZXQtaW50ZXJ2YWwtYXN5bmMvZGlzdC9jbGVhci1pbnRlcnZhbC1hc3luYy5janMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vc2V0LWludGVydmFsLWFzeW5jQDMuMC4zL25vZGVfbW9kdWxlcy9zZXQtaW50ZXJ2YWwtYXN5bmMvZGlzdC9keW5hbWljL3NldC1pbnRlcnZhbC1hc3luYy5janMiLCIuLi9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlNldEludGVydmFsQXN5bmNUaW1lciA9IHZvaWQgMDtcbmNvbnN0IE1JTl9JTlRFUlZBTF9NUyA9IDEwO1xuY29uc3QgTUFYX0lOVEVSVkFMX01TID0gMjE0NzQ4MzY0NztcbmNsYXNzIFNldEludGVydmFsQXN5bmNUaW1lciB7XG4gICAgI3RpbWVvdXQgPSB1bmRlZmluZWQ7XG4gICAgI3Byb21pc2UgPSB1bmRlZmluZWQ7XG4gICAgI3N0b3BwZWQgPSBmYWxzZTtcbiAgICBzdGF0aWMgc3RhcnRUaW1lcihzdHJhdGVneSwgaGFuZGxlciwgaW50ZXJ2YWxNcywgLi4uaGFuZGxlckFyZ3MpIHtcbiAgICAgICAgaW50ZXJ2YWxNcyA9IE1hdGgubWluKE1hdGgubWF4KE1hdGgudHJ1bmMoaW50ZXJ2YWxNcyksIE1JTl9JTlRFUlZBTF9NUyksIE1BWF9JTlRFUlZBTF9NUyk7XG4gICAgICAgIGNvbnN0IHRpbWVyID0gbmV3IFNldEludGVydmFsQXN5bmNUaW1lcigpO1xuICAgICAgICB0aW1lci4jc2NoZWR1bGVUaW1lb3V0KHN0cmF0ZWd5LCBoYW5kbGVyLCBpbnRlcnZhbE1zLCBpbnRlcnZhbE1zLCAuLi5oYW5kbGVyQXJncyk7XG4gICAgICAgIHJldHVybiB0aW1lcjtcbiAgICB9XG4gICAgc3RhdGljIGFzeW5jIHN0b3BUaW1lcih0aW1lcikge1xuICAgICAgICB0aW1lci4jc3RvcHBlZCA9IHRydWU7XG4gICAgICAgIGlmICh0aW1lci4jdGltZW91dCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyLiN0aW1lb3V0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGltZXIuI3Byb21pc2UpIHtcbiAgICAgICAgICAgIGF3YWl0IHRpbWVyLiNwcm9taXNlO1xuICAgICAgICB9XG4gICAgfVxuICAgICNzY2hlZHVsZVRpbWVvdXQoc3RyYXRlZ3ksIGhhbmRsZXIsIGludGVydmFsTXMsIGRlbGF5TXMsIC4uLmhhbmRsZXJBcmdzKSB7XG4gICAgICAgIHRoaXMuI3RpbWVvdXQgPSBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuI3RpbWVvdXQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLiNwcm9taXNlID0gdGhpcy4jcnVuSGFuZGxlckFuZFNjaGVkdWxlVGltZW91dChzdHJhdGVneSwgaGFuZGxlciwgaW50ZXJ2YWxNcywgLi4uaGFuZGxlckFyZ3MpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy4jcHJvbWlzZTtcbiAgICAgICAgICAgIHRoaXMuI3Byb21pc2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIH0sIGRlbGF5TXMpO1xuICAgIH1cbiAgICBhc3luYyAjcnVuSGFuZGxlckFuZFNjaGVkdWxlVGltZW91dChzdHJhdGVneSwgaGFuZGxlciwgaW50ZXJ2YWxNcywgLi4uaGFuZGxlckFyZ3MpIHtcbiAgICAgICAgY29uc3Qgc3RhcnRUaW1lTXMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IGhhbmRsZXIoLi4uaGFuZGxlckFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLiNzdG9wcGVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhlY3V0aW9uVGltZU1zID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLSBzdGFydFRpbWVNcztcbiAgICAgICAgICAgICAgICBjb25zdCBkZWxheU1zID0gc3RyYXRlZ3kgPT09IFwiZHluYW1pY1wiXG4gICAgICAgICAgICAgICAgICAgID8gaW50ZXJ2YWxNcyA+IGV4ZWN1dGlvblRpbWVNc1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBpbnRlcnZhbE1zIC0gZXhlY3V0aW9uVGltZU1zXG4gICAgICAgICAgICAgICAgICAgICAgICA6IDBcbiAgICAgICAgICAgICAgICAgICAgOiBpbnRlcnZhbE1zO1xuICAgICAgICAgICAgICAgIHRoaXMuI3NjaGVkdWxlVGltZW91dChzdHJhdGVneSwgaGFuZGxlciwgaW50ZXJ2YWxNcywgZGVsYXlNcywgLi4uaGFuZGxlckFyZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5TZXRJbnRlcnZhbEFzeW5jVGltZXIgPSBTZXRJbnRlcnZhbEFzeW5jVGltZXI7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuY2xlYXJJbnRlcnZhbEFzeW5jID0gdm9pZCAwO1xuY29uc3Qgc2V0X2ludGVydmFsX2FzeW5jX3RpbWVyX2Nqc18xID0gcmVxdWlyZShcIi4vc2V0LWludGVydmFsLWFzeW5jLXRpbWVyLmNqc1wiKTtcbi8qKlxuICogU3RvcHMgYW4gZXhlY3V0aW9uIGN5Y2xlIHN0YXJ0ZWQgYnkgc2V0SW50ZXJ2YWxBc3luYy5cbiAqIEFueSBvbmdvaW5nIGZ1bmN0aW9uIGV4ZWN1dGlvbnMgd2lsbCBydW4gdW50aWwgY29tcGxldGlvbixcbiAqIGJ1dCBhbGwgZnV0dXJlIG9uZXMgd2lsbCBiZSBjYW5jZWxsZWQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNsZWFySW50ZXJ2YWxBc3luYyh0aW1lcikge1xuICAgIGlmICghKHRpbWVyIGluc3RhbmNlb2Ygc2V0X2ludGVydmFsX2FzeW5jX3RpbWVyX2Nqc18xLlNldEludGVydmFsQXN5bmNUaW1lcikpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBTZXRJbnRlcnZhbEFzeW5jVGltZXJcIik7XG4gICAgfVxuICAgIGF3YWl0IHNldF9pbnRlcnZhbF9hc3luY190aW1lcl9janNfMS5TZXRJbnRlcnZhbEFzeW5jVGltZXIuc3RvcFRpbWVyKHRpbWVyKTtcbn1cbmV4cG9ydHMuY2xlYXJJbnRlcnZhbEFzeW5jID0gY2xlYXJJbnRlcnZhbEFzeW5jO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnNldEludGVydmFsQXN5bmMgPSBleHBvcnRzLmNsZWFySW50ZXJ2YWxBc3luYyA9IHZvaWQgMDtcbmNvbnN0IGNsZWFyX2ludGVydmFsX2FzeW5jX2Nqc18xID0gcmVxdWlyZShcIi4uL2NsZWFyLWludGVydmFsLWFzeW5jLmNqc1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImNsZWFySW50ZXJ2YWxBc3luY1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gY2xlYXJfaW50ZXJ2YWxfYXN5bmNfY2pzXzEuY2xlYXJJbnRlcnZhbEFzeW5jOyB9IH0pO1xuY29uc3Qgc2V0X2ludGVydmFsX2FzeW5jX3RpbWVyX2Nqc18xID0gcmVxdWlyZShcIi4uL3NldC1pbnRlcnZhbC1hc3luYy10aW1lci5janNcIik7XG4vKipcbiAqIEV4ZWN1dGVzIHRoZSBnaXZlbiBoYW5kbGVyIGF0IGZpeGVkIGludGVydmFscywgd2hpbGUgcHJldmVudGluZ1xuICogbXVsdGlwbGUgY29uY3VycmVudCBleGVjdXRpb25zLiBUaGUgaGFuZGxlciB3aWxsIG5ldmVyIGJlIGV4ZWN1dGVkXG4gKiBjb25jdXJyZW50bHkgbW9yZSB0aGFuIG9uY2UgaW4gYW55IGdpdmVuIG1vbWVudCwgcHJvdmlkaW5nIGEgZml4ZWRcbiAqIHRpbWUgaW50ZXJ2YWwgYmV0d2VlbiB0aGUgZW5kIG9mIGEgZ2l2ZW4gZXhlY3V0aW9uIGFuZCB0aGUgc3RhcnQgb2ZcbiAqIHRoZSBmb2xsb3dpbmcgb25lLlxuICovXG5mdW5jdGlvbiBzZXRJbnRlcnZhbEFzeW5jKGhhbmRsZXIsIGludGVydmFsTXMsIC4uLmhhbmRsZXJBcmdzKSB7XG4gICAgaWYgKCEodHlwZW9mIGhhbmRsZXIgPT09IFwiZnVuY3Rpb25cIikpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhIGZ1bmN0aW9uXCIpO1xuICAgIH1cbiAgICBpZiAoISh0eXBlb2YgaW50ZXJ2YWxNcyA9PT0gXCJudW1iZXJcIikpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlNlY29uZCBhcmd1bWVudCBpcyBub3QgYSBudW1iZXJcIik7XG4gICAgfVxuICAgIHJldHVybiBzZXRfaW50ZXJ2YWxfYXN5bmNfdGltZXJfY2pzXzEuU2V0SW50ZXJ2YWxBc3luY1RpbWVyLnN0YXJ0VGltZXIoXCJkeW5hbWljXCIsIGhhbmRsZXIsIGludGVydmFsTXMsIC4uLmhhbmRsZXJBcmdzKTtcbn1cbmV4cG9ydHMuc2V0SW50ZXJ2YWxBc3luYyA9IHNldEludGVydmFsQXN5bmM7XG4iLCJpbXBvcnQgeyBMb2dnZXIgfSBmcm9tICdAanNwcmlzbWFyaW5lL2xvZ2dlcic7XG5pbXBvcnQgeyBQcm90b2NvbCBhcyBKU1BQcm90b2NvbCB9IGZyb20gJ0Bqc3ByaXNtYXJpbmUvcHJpc21hcmluZSc7XG5pbXBvcnQgeyBDb25uZWN0aW9uUHJpb3JpdHksIEluZXRBZGRyZXNzLCBNZXNzYWdlSWRlbnRpZmllcnMsIFByb3RvY29sLCBSYWtOZXRTZXNzaW9uIH0gZnJvbSAnQGpzcHJpc21hcmluZS9yYWtuZXQnO1xuaW1wb3J0IENyeXB0bywgeyByYW5kb21CeXRlcyB9IGZyb20gJ25vZGU6Y3J5cHRvJztcbmltcG9ydCBEZ3JhbSwgeyB0eXBlIFNvY2tldCB9IGZyb20gJ25vZGU6ZGdyYW0nO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnbm9kZTpldmVudHMnO1xuaW1wb3J0IHsgY2xlYXJJbnRlcnZhbEFzeW5jLCBzZXRJbnRlcnZhbEFzeW5jIH0gZnJvbSAnc2V0LWludGVydmFsLWFzeW5jL2R5bmFtaWMnO1xuXG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTUyNzgyMC8zMTQyNTUzXG5jb25zdCBnZXRSYW5kb21JbnQgPSAobWluOiBudW1iZXIsIG1heDogbnVtYmVyKSA9PiB7XG4gICAgbWluID0gTWF0aC5jZWlsKG1pbik7XG4gICAgbWF4ID0gTWF0aC5mbG9vcihtYXgpO1xuICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluICsgMSkpICsgbWluO1xufTtcblxuLy8gTWluZWNyYWZ0IHJlbGF0ZWQgcHJvdG9jb2xcbmNvbnN0IFBST1RPQ09MID0gMTA7XG5cbi8vIE1heCBuZXQgdHJhbnNmZXIgdW5pdFxuY29uc3QgREVGX01UVV9TSVpFID0gMTQ1NTtcblxuLy8gUmFrbmV0IHRpY2tzXG5jb25zdCBSQUtORVRfVFBTID0gMTAwO1xuY29uc3QgUkFLTkVUX1RJQ0tfTEVOR1RIID0gMSAvIFJBS05FVF9UUFM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENsaWVudCBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gICAgcHJpdmF0ZSBjbGllbnRHVUlEID0gQ3J5cHRvLnJhbmRvbUJ5dGVzKDgpLnJlYWRCaWdJbnQ2NEJFKCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBuZXcgTG9nZ2VyKCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhZGRyZXNzOiBJbmV0QWRkcmVzcztcbiAgICBwcml2YXRlIHRhcmdldEFkZHJlc3MhOiBJbmV0QWRkcmVzcztcbiAgICBwcml2YXRlIGNvbm5lY3Rpb246IFJha05ldFNlc3Npb24gfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNvY2tldCA9IERncmFtLmNyZWF0ZVNvY2tldCh7IHR5cGU6ICd1ZHA0JyB9KTtcbiAgICBwcml2YXRlIGdldCBjbG9zZWQoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbm5lY3RpbmcgPSBmYWxzZTtcbiAgICBwcml2YXRlIGNvbm5lY3RlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgb2ZmbGluZUhhbmRsZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIGxvZ2luSGFuZGxlZCA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmFkZHJlc3MgPSBuZXcgSW5ldEFkZHJlc3MoJzAuMC4wLjAnLCBnZXRSYW5kb21JbnQoNDYwMDAsIDQ5OTk5KSk7XG4gICAgICAgIHRoaXMuc29ja2V0LmJpbmQodGhpcy5hZGRyZXNzLmdldFBvcnQoKSwgdGhpcy5hZGRyZXNzLmdldEFkZHJlc3MoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHBhY2tldCBsaXN0ZW5lciBvbiBnaXZlbiBhZGRyZXNzIGFuZCBwb3J0LlxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBjb25uZWN0KGFkZHJlc3MgPSAnMC4wLjAuMCcsIHBvcnQgPSAxOTEzMikge1xuICAgICAgICB0aGlzLnRhcmdldEFkZHJlc3MgPSBuZXcgSW5ldEFkZHJlc3MoYWRkcmVzcywgcG9ydCk7XG5cbiAgICAgICAgdGhpcy5zb2NrZXQub24oJ21lc3NhZ2UnLCAoYnVmZmVyOiBCdWZmZXIpID0+IHtcbiAgICAgICAgICAgIHZvaWQgdGhpcy5oYW5kbGUoYnVmZmVyKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuY29ubmVjdGlvbikgdGhyb3cgbmV3IEVycm9yKCdBbHJlYWR5IGNvbm5lY3RlZC9jb25uZWN0aW5nIHRvIHNlcnZlci4nKTtcblxuICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKCdKU1ByaXNtYXJpbmUgY2xpZW50IGlzIG5vdyBhdHRlbXB0aW5nIHRvIGNvbm5lY3QuLi4nKTtcblxuICAgICAgICBjb25zdCB0aW1lciA9IHNldEludGVydmFsQXN5bmMoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgY2xlYXJJbnRlcnZhbEFzeW5jKHRpbWVyKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFNlbmQgYSBjbGllbnQgcGFja2V0IHRvIHRoZSBzZXJ2ZXJcbiAgICAgICAgICAgIC8vIHNvIHRoZSBzZXJ2ZXIgZ29lcyBpbiB0YXJnZXQgbW9kZVxuICAgICAgICAgICAgLy8gYW5kIHRoZSBsb2dpbiBwcm9jZXNzIHN0YXJ0c1xuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbm5lY3RpbmcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwayA9IG5ldyBQcm90b2NvbC5VbmNvbm5lY3RlZFBpbmcoKTtcbiAgICAgICAgICAgICAgICBway50aW1lc3RhbXAgPSBCaWdJbnQoRGF0ZS5ub3coKSk7XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogY2FuIGJlIG9taXR0ZWQuLi4gcGsuID0gdGhpcy5jbGllbnRHVUlEO1xuICAgICAgICAgICAgICAgIHBrLmVuY29kZSgpO1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2VuZEJ1ZmZlcihway5nZXRCdWZmZXIoKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNvbm5lY3RlZCAmJiAhdGhpcy5sb2dpbkhhbmRsZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwayA9IG5ldyBKU1BQcm90b2NvbC5QYWNrZXRzLkxvZ2luUGFja2V0KCk7XG4gICAgICAgICAgICAgICAgcGsuZW5jb2RlKCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzZW5kUGsgPSBuZXcgUHJvdG9jb2wuRnJhbWUoKTtcbiAgICAgICAgICAgICAgICBzZW5kUGsucmVsaWFiaWxpdHkgPSAwO1xuICAgICAgICAgICAgICAgIHNlbmRQay5jb250ZW50ID0gcGsuZ2V0QnVmZmVyKCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24hLnNlbmRGcmFtZShzZW5kUGssIENvbm5lY3Rpb25Qcmlvcml0eS5OT1JNQUwpOyAvLyBQYWNrZXQgbmVlZHMgdG8gYmUgc3BsaXR0ZWRcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2luSGFuZGxlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbj8udXBkYXRlKERhdGUubm93KCkpO1xuICAgICAgICB9LCBSQUtORVRfVElDS19MRU5HVEggKiAxMDAwKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBoYW5kbGUoYnVmZmVyOiBCdWZmZXIpIHtcbiAgICAgICAgY29uc3QgaGVhZGVyID0gYnVmZmVyLnJlYWRVSW50OCgpOyAvLyBSZWFkIHBhY2tldCBoZWFkZXJcblxuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uICYmIHRoaXMub2ZmbGluZUhhbmRsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5oYW5kbGUoYnVmZmVyKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBidWY7XG4gICAgICAgIHN3aXRjaCAoaGVhZGVyKSB7XG4gICAgICAgICAgICBjYXNlIE1lc3NhZ2VJZGVudGlmaWVycy5VTkNPTk5FQ1RFRF9QT05HOlxuICAgICAgICAgICAgICAgIGJ1ZiA9IHRoaXMuaGFuZGxlVW5jb25uZWN0ZWRQb25nKGJ1ZmZlcik7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zZW5kQnVmZmVyKGJ1Zik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE1lc3NhZ2VJZGVudGlmaWVycy5PUEVOX0NPTk5FQ1RJT05fUkVQTFlfMTpcbiAgICAgICAgICAgICAgICBidWYgPSB0aGlzLmhhbmRsZU9wZW5Db25uZWN0aW9uUmVwbHkxKGJ1ZmZlcik7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zZW5kQnVmZmVyKGJ1Zik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE1lc3NhZ2VJZGVudGlmaWVycy5PUEVOX0NPTk5FQ1RJT05fUkVQTFlfMjpcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZU9wZW5Db25uZWN0aW9uUmVwbHkyKGJ1ZmZlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLndhcm4oYFVuaGFuZGxlZCBvZmZsaW5lIHBhY2tldCBJRDogJHtoZWFkZXJ9YCwgJ0NsaWVudC9oYW5kbGUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVVbmNvbm5lY3RlZFBvbmcoYnVmZmVyOiBCdWZmZXIpIHtcbiAgICAgICAgLy8gRGVjb2RlIHNlcnZlciBwYWNrZXRcbiAgICAgICAgY29uc3QgZGVjb2RlZFBhY2tldCA9IG5ldyBQcm90b2NvbC5VbmNvbm5lY3RlZFBvbmcoYnVmZmVyKTtcbiAgICAgICAgZGVjb2RlZFBhY2tldC5kZWNvZGUoKTtcblxuICAgICAgICAvLyBDaGVjayBwYWNrZXQgdmFsaWRpdHlcbiAgICAgICAgLy8gVG8gcmVmYWN0b3JcbiAgICAgICAgaWYgKCFkZWNvZGVkUGFja2V0LmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZWNlaXZlZCBhbiBpbnZhbGlkIG9mZmxpbmUgbWVzc2FnZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRW5jb2RlIHJlc3BvbnNlXG4gICAgICAgIGNvbnN0IHBhY2tldCA9IG5ldyBQcm90b2NvbC5PcGVuQ29ubmVjdGlvblJlcXVlc3QxKCk7XG4gICAgICAgIHBhY2tldC5wcm90b2NvbCA9IFBST1RPQ09MO1xuICAgICAgICBwYWNrZXQubXR1U2l6ZSA9IERFRl9NVFVfU0laRTtcbiAgICAgICAgcGFja2V0LmVuY29kZSgpO1xuXG4gICAgICAgIC8vIFVwZGF0ZSBzZXNzaW9uIHN0YXR1c1xuICAgICAgICAvLyB0aGlzLnN0YXR1cyA9IENvbm5lY3Rpb25TdGF0dXMuVGFyZ2V0dGVkO1xuXG4gICAgICAgIHJldHVybiBwYWNrZXQuZ2V0QnVmZmVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZU9wZW5Db25uZWN0aW9uUmVwbHkxKGJ1ZmZlcjogQnVmZmVyKSB7XG4gICAgICAgIC8vIERlY29kZSBzZXJ2ZXIgcGFja2V0XG4gICAgICAgIGNvbnN0IGRlY29kZWRQYWNrZXQgPSBuZXcgUHJvdG9jb2wuT3BlbkNvbm5lY3Rpb25SZXBseTEoYnVmZmVyKTtcbiAgICAgICAgZGVjb2RlZFBhY2tldC5kZWNvZGUoKTtcblxuICAgICAgICAvLyBDaGVjayBwYWNrZXQgdmFsaWRpdHlcbiAgICAgICAgLy8gVG8gcmVmYWN0b3JcbiAgICAgICAgaWYgKCFkZWNvZGVkUGFja2V0LmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZWNlaXZlZCBhbiBpbnZhbGlkIG9mZmxpbmUgbWVzc2FnZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRW5jb2RlIHJlc3BvbnNlXG4gICAgICAgIGNvbnN0IHBhY2tldCA9IG5ldyBQcm90b2NvbC5PcGVuQ29ubmVjdGlvblJlcXVlc3QyKCk7XG4gICAgICAgIHBhY2tldC5zZXJ2ZXJBZGRyZXNzID0gdGhpcy50YXJnZXRBZGRyZXNzO1xuICAgICAgICBwYWNrZXQubXR1U2l6ZSA9IERFRl9NVFVfU0laRTtcbiAgICAgICAgcGFja2V0LmNsaWVudEdVSUQgPSB0aGlzLmNsaWVudEdVSUQ7XG4gICAgICAgIHBhY2tldC5lbmNvZGUoKTtcblxuICAgICAgICAvLyBVcGRhdGUgc2Vzc2lvbiBzdGF0dXNcbiAgICAgICAgdGhpcy5jb25uZWN0aW5nID0gdHJ1ZTtcbiAgICAgICAgLy8gVGhpcy5zdGF0dXMgPSBDb25uZWN0aW9uU3RhdHVzLkNvbm5lY3RlZDtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uID0gbmV3IFJha05ldFNlc3Npb24oXG4gICAgICAgICAgICB0aGlzIGFzIGFueSxcbiAgICAgICAgICAgIERFRl9NVFVfU0laRSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiB0aGlzLmFkZHJlc3MuZ2V0QWRkcmVzcygpLFxuICAgICAgICAgICAgICAgIHBvcnQ6IHRoaXMuYWRkcmVzcy5nZXRQb3J0KCksXG4gICAgICAgICAgICAgICAgZmFtaWx5OiAnSVB2NCcsXG4gICAgICAgICAgICAgICAgc2l6ZTogMFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJhbmRvbUJ5dGVzKDgpLnJlYWRCaWdJbnQ2NEJFKClcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gcGFja2V0LmdldEJ1ZmZlcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVPcGVuQ29ubmVjdGlvblJlcGx5MihidWZmZXI6IEJ1ZmZlcikge1xuICAgICAgICAvLyBEZWNvZGUgc2VydmVyIHBhY2tldFxuICAgICAgICBjb25zdCBkZWNvZGVkUGFja2V0ID0gbmV3IFByb3RvY29sLk9wZW5Db25uZWN0aW9uUmVwbHkyKGJ1ZmZlcik7XG4gICAgICAgIGRlY29kZWRQYWNrZXQuZGVjb2RlKCk7XG5cbiAgICAgICAgLy8gQ2hlY2sgcGFja2V0IHZhbGlkaXR5XG4gICAgICAgIC8vIFRvIHJlZmFjdG9yXG4gICAgICAgIGlmICghZGVjb2RlZFBhY2tldC5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVjZWl2ZWQgYW4gaW52YWxpZCBvZmZsaW5lIG1lc3NhZ2UnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEVuY29kZSByZXNwb25zZSAoZW5jYXBzdWxhdGVkKVxuICAgICAgICBjb25zdCBwYWNrZXQgPSBuZXcgUHJvdG9jb2wuQ29ubmVjdGlvblJlcXVlc3QoKTtcbiAgICAgICAgcGFja2V0LmNsaWVudEdVSUQgPSB0aGlzLmNsaWVudEdVSUQ7XG4gICAgICAgIHBhY2tldC5yZXF1ZXN0VGltZXN0YW1wID0gQmlnSW50KERhdGUubm93KCkpO1xuICAgICAgICBwYWNrZXQuZW5jb2RlKCk7XG5cbiAgICAgICAgY29uc3Qgc2VuZFBhY2tldCA9IG5ldyBQcm90b2NvbC5GcmFtZSgpO1xuICAgICAgICBzZW5kUGFja2V0LnJlbGlhYmlsaXR5ID0gMDtcbiAgICAgICAgc2VuZFBhY2tldC5jb250ZW50ID0gcGFja2V0LmdldEJ1ZmZlcigpO1xuXG4gICAgICAgIHRoaXMuY29ubmVjdGlvbj8uc2VuZEZyYW1lKHNlbmRQYWNrZXQsIENvbm5lY3Rpb25Qcmlvcml0eS5OT1JNQUwpO1xuXG4gICAgICAgIHRoaXMub2ZmbGluZUhhbmRsZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmNvbm5lY3RlZCA9IHRydWU7IC8vIFNob3VsZCBiZS4uLiB3ZSBjYW4ndCByZWx5IG9uIGl0XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VuZHMgdGhlIGJ1ZmZlciB0byB0aGUgc2VydmVyXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYnVmZmVyXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIHNlbmRCdWZmZXIoYnVmZmVyOiBCdWZmZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5zb2NrZXQuc2VuZChidWZmZXIsIDAsIGJ1ZmZlci5ieXRlTGVuZ3RoLCB0aGlzLnRhcmdldEFkZHJlc3MuZ2V0UG9ydCgpLCB0aGlzLnRhcmdldEFkZHJlc3MuZ2V0QWRkcmVzcygpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U29ja2V0KCk6IFNvY2tldCB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvY2tldDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QWRkcmVzcygpOiBJbmV0QWRkcmVzcyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZHJlc3M7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlbW92ZUNvbm5lY3Rpb24oX2Nvbm5lY3Rpb246IFJha05ldFNlc3Npb24sIF9yZWFzb24/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6WyJjbGVhckludGVydmFsQXN5bmNfMSIsInJlcXVpcmUkJDAiLCJyZXF1aXJlJCQxIiwic2V0SW50ZXJ2YWxBc3luYyIsImNsZWFySW50ZXJ2YWxBc3luYyIsIkpTUFByb3RvY29sIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUNBLE1BQU0sQ0FBQyxjQUFjLENBQUMscUJBQU8sRUFBRSxZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNqQyxxQkFBQSxDQUFBLHFCQUFBLEdBQUcsS0FBSyxFQUFFO0FBQ3ZDLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztBQUMzQixNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUM7QUFDbkMsTUFBTSxxQkFBcUIsQ0FBQztBQUM1QixJQUFJLFFBQVEsR0FBRyxTQUFT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
|
|
265
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9zZXQtaW50ZXJ2YWwtYXN5bmNAMy4wLjMvbm9kZV9tb2R1bGVzL3NldC1pbnRlcnZhbC1hc3luYy9kaXN0L3NldC1pbnRlcnZhbC1hc3luYy10aW1lci5janMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vc2V0LWludGVydmFsLWFzeW5jQDMuMC4zL25vZGVfbW9kdWxlcy9zZXQtaW50ZXJ2YWwtYXN5bmMvZGlzdC9jbGVhci1pbnRlcnZhbC1hc3luYy5janMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vc2V0LWludGVydmFsLWFzeW5jQDMuMC4zL25vZGVfbW9kdWxlcy9zZXQtaW50ZXJ2YWwtYXN5bmMvZGlzdC9keW5hbWljL3NldC1pbnRlcnZhbC1hc3luYy5janMiLCIuLi9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlNldEludGVydmFsQXN5bmNUaW1lciA9IHZvaWQgMDtcbmNvbnN0IE1JTl9JTlRFUlZBTF9NUyA9IDEwO1xuY29uc3QgTUFYX0lOVEVSVkFMX01TID0gMjE0NzQ4MzY0NztcbmNsYXNzIFNldEludGVydmFsQXN5bmNUaW1lciB7XG4gICAgI3RpbWVvdXQgPSB1bmRlZmluZWQ7XG4gICAgI3Byb21pc2UgPSB1bmRlZmluZWQ7XG4gICAgI3N0b3BwZWQgPSBmYWxzZTtcbiAgICBzdGF0aWMgc3RhcnRUaW1lcihzdHJhdGVneSwgaGFuZGxlciwgaW50ZXJ2YWxNcywgLi4uaGFuZGxlckFyZ3MpIHtcbiAgICAgICAgaW50ZXJ2YWxNcyA9IE1hdGgubWluKE1hdGgubWF4KE1hdGgudHJ1bmMoaW50ZXJ2YWxNcyksIE1JTl9JTlRFUlZBTF9NUyksIE1BWF9JTlRFUlZBTF9NUyk7XG4gICAgICAgIGNvbnN0IHRpbWVyID0gbmV3IFNldEludGVydmFsQXN5bmNUaW1lcigpO1xuICAgICAgICB0aW1lci4jc2NoZWR1bGVUaW1lb3V0KHN0cmF0ZWd5LCBoYW5kbGVyLCBpbnRlcnZhbE1zLCBpbnRlcnZhbE1zLCAuLi5oYW5kbGVyQXJncyk7XG4gICAgICAgIHJldHVybiB0aW1lcjtcbiAgICB9XG4gICAgc3RhdGljIGFzeW5jIHN0b3BUaW1lcih0aW1lcikge1xuICAgICAgICB0aW1lci4jc3RvcHBlZCA9IHRydWU7XG4gICAgICAgIGlmICh0aW1lci4jdGltZW91dCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyLiN0aW1lb3V0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGltZXIuI3Byb21pc2UpIHtcbiAgICAgICAgICAgIGF3YWl0IHRpbWVyLiNwcm9taXNlO1xuICAgICAgICB9XG4gICAgfVxuICAgICNzY2hlZHVsZVRpbWVvdXQoc3RyYXRlZ3ksIGhhbmRsZXIsIGludGVydmFsTXMsIGRlbGF5TXMsIC4uLmhhbmRsZXJBcmdzKSB7XG4gICAgICAgIHRoaXMuI3RpbWVvdXQgPSBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuI3RpbWVvdXQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLiNwcm9taXNlID0gdGhpcy4jcnVuSGFuZGxlckFuZFNjaGVkdWxlVGltZW91dChzdHJhdGVneSwgaGFuZGxlciwgaW50ZXJ2YWxNcywgLi4uaGFuZGxlckFyZ3MpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy4jcHJvbWlzZTtcbiAgICAgICAgICAgIHRoaXMuI3Byb21pc2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIH0sIGRlbGF5TXMpO1xuICAgIH1cbiAgICBhc3luYyAjcnVuSGFuZGxlckFuZFNjaGVkdWxlVGltZW91dChzdHJhdGVneSwgaGFuZGxlciwgaW50ZXJ2YWxNcywgLi4uaGFuZGxlckFyZ3MpIHtcbiAgICAgICAgY29uc3Qgc3RhcnRUaW1lTXMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IGhhbmRsZXIoLi4uaGFuZGxlckFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLiNzdG9wcGVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhlY3V0aW9uVGltZU1zID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLSBzdGFydFRpbWVNcztcbiAgICAgICAgICAgICAgICBjb25zdCBkZWxheU1zID0gc3RyYXRlZ3kgPT09IFwiZHluYW1pY1wiXG4gICAgICAgICAgICAgICAgICAgID8gaW50ZXJ2YWxNcyA+IGV4ZWN1dGlvblRpbWVNc1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBpbnRlcnZhbE1zIC0gZXhlY3V0aW9uVGltZU1zXG4gICAgICAgICAgICAgICAgICAgICAgICA6IDBcbiAgICAgICAgICAgICAgICAgICAgOiBpbnRlcnZhbE1zO1xuICAgICAgICAgICAgICAgIHRoaXMuI3NjaGVkdWxlVGltZW91dChzdHJhdGVneSwgaGFuZGxlciwgaW50ZXJ2YWxNcywgZGVsYXlNcywgLi4uaGFuZGxlckFyZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5TZXRJbnRlcnZhbEFzeW5jVGltZXIgPSBTZXRJbnRlcnZhbEFzeW5jVGltZXI7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuY2xlYXJJbnRlcnZhbEFzeW5jID0gdm9pZCAwO1xuY29uc3Qgc2V0X2ludGVydmFsX2FzeW5jX3RpbWVyX2Nqc18xID0gcmVxdWlyZShcIi4vc2V0LWludGVydmFsLWFzeW5jLXRpbWVyLmNqc1wiKTtcbi8qKlxuICogU3RvcHMgYW4gZXhlY3V0aW9uIGN5Y2xlIHN0YXJ0ZWQgYnkgc2V0SW50ZXJ2YWxBc3luYy5cbiAqIEFueSBvbmdvaW5nIGZ1bmN0aW9uIGV4ZWN1dGlvbnMgd2lsbCBydW4gdW50aWwgY29tcGxldGlvbixcbiAqIGJ1dCBhbGwgZnV0dXJlIG9uZXMgd2lsbCBiZSBjYW5jZWxsZWQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNsZWFySW50ZXJ2YWxBc3luYyh0aW1lcikge1xuICAgIGlmICghKHRpbWVyIGluc3RhbmNlb2Ygc2V0X2ludGVydmFsX2FzeW5jX3RpbWVyX2Nqc18xLlNldEludGVydmFsQXN5bmNUaW1lcikpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBTZXRJbnRlcnZhbEFzeW5jVGltZXJcIik7XG4gICAgfVxuICAgIGF3YWl0IHNldF9pbnRlcnZhbF9hc3luY190aW1lcl9janNfMS5TZXRJbnRlcnZhbEFzeW5jVGltZXIuc3RvcFRpbWVyKHRpbWVyKTtcbn1cbmV4cG9ydHMuY2xlYXJJbnRlcnZhbEFzeW5jID0gY2xlYXJJbnRlcnZhbEFzeW5jO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnNldEludGVydmFsQXN5bmMgPSBleHBvcnRzLmNsZWFySW50ZXJ2YWxBc3luYyA9IHZvaWQgMDtcbmNvbnN0IGNsZWFyX2ludGVydmFsX2FzeW5jX2Nqc18xID0gcmVxdWlyZShcIi4uL2NsZWFyLWludGVydmFsLWFzeW5jLmNqc1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImNsZWFySW50ZXJ2YWxBc3luY1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gY2xlYXJfaW50ZXJ2YWxfYXN5bmNfY2pzXzEuY2xlYXJJbnRlcnZhbEFzeW5jOyB9IH0pO1xuY29uc3Qgc2V0X2ludGVydmFsX2FzeW5jX3RpbWVyX2Nqc18xID0gcmVxdWlyZShcIi4uL3NldC1pbnRlcnZhbC1hc3luYy10aW1lci5janNcIik7XG4vKipcbiAqIEV4ZWN1dGVzIHRoZSBnaXZlbiBoYW5kbGVyIGF0IGZpeGVkIGludGVydmFscywgd2hpbGUgcHJldmVudGluZ1xuICogbXVsdGlwbGUgY29uY3VycmVudCBleGVjdXRpb25zLiBUaGUgaGFuZGxlciB3aWxsIG5ldmVyIGJlIGV4ZWN1dGVkXG4gKiBjb25jdXJyZW50bHkgbW9yZSB0aGFuIG9uY2UgaW4gYW55IGdpdmVuIG1vbWVudCwgcHJvdmlkaW5nIGEgZml4ZWRcbiAqIHRpbWUgaW50ZXJ2YWwgYmV0d2VlbiB0aGUgZW5kIG9mIGEgZ2l2ZW4gZXhlY3V0aW9uIGFuZCB0aGUgc3RhcnQgb2ZcbiAqIHRoZSBmb2xsb3dpbmcgb25lLlxuICovXG5mdW5jdGlvbiBzZXRJbnRlcnZhbEFzeW5jKGhhbmRsZXIsIGludGVydmFsTXMsIC4uLmhhbmRsZXJBcmdzKSB7XG4gICAgaWYgKCEodHlwZW9mIGhhbmRsZXIgPT09IFwiZnVuY3Rpb25cIikpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhIGZ1bmN0aW9uXCIpO1xuICAgIH1cbiAgICBpZiAoISh0eXBlb2YgaW50ZXJ2YWxNcyA9PT0gXCJudW1iZXJcIikpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlNlY29uZCBhcmd1bWVudCBpcyBub3QgYSBudW1iZXJcIik7XG4gICAgfVxuICAgIHJldHVybiBzZXRfaW50ZXJ2YWxfYXN5bmNfdGltZXJfY2pzXzEuU2V0SW50ZXJ2YWxBc3luY1RpbWVyLnN0YXJ0VGltZXIoXCJkeW5hbWljXCIsIGhhbmRsZXIsIGludGVydmFsTXMsIC4uLmhhbmRsZXJBcmdzKTtcbn1cbmV4cG9ydHMuc2V0SW50ZXJ2YWxBc3luYyA9IHNldEludGVydmFsQXN5bmM7XG4iLCJpbXBvcnQgeyBMb2dnZXIgfSBmcm9tICdAanNwcmlzbWFyaW5lL2xvZ2dlcic7XG5pbXBvcnQgeyBQcm90b2NvbCBhcyBKU1BQcm90b2NvbCB9IGZyb20gJ0Bqc3ByaXNtYXJpbmUvcHJpc21hcmluZSc7XG5pbXBvcnQgeyBDb25uZWN0aW9uUHJpb3JpdHksIEluZXRBZGRyZXNzLCBNZXNzYWdlSWRlbnRpZmllcnMsIFByb3RvY29sLCBSYWtOZXRTZXNzaW9uIH0gZnJvbSAnQGpzcHJpc21hcmluZS9yYWtuZXQnO1xuaW1wb3J0IENyeXB0bywgeyByYW5kb21CeXRlcyB9IGZyb20gJ25vZGU6Y3J5cHRvJztcbmltcG9ydCBEZ3JhbSwgeyB0eXBlIFNvY2tldCB9IGZyb20gJ25vZGU6ZGdyYW0nO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnbm9kZTpldmVudHMnO1xuaW1wb3J0IHsgY2xlYXJJbnRlcnZhbEFzeW5jLCBzZXRJbnRlcnZhbEFzeW5jIH0gZnJvbSAnc2V0LWludGVydmFsLWFzeW5jL2R5bmFtaWMnO1xuXG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTUyNzgyMC8zMTQyNTUzXG5jb25zdCBnZXRSYW5kb21JbnQgPSAobWluOiBudW1iZXIsIG1heDogbnVtYmVyKSA9PiB7XG4gICAgbWluID0gTWF0aC5jZWlsKG1pbik7XG4gICAgbWF4ID0gTWF0aC5mbG9vcihtYXgpO1xuICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluICsgMSkpICsgbWluO1xufTtcblxuLy8gTWluZWNyYWZ0IHJlbGF0ZWQgcHJvdG9jb2xcbmNvbnN0IFBST1RPQ09MID0gMTA7XG5cbi8vIE1heCBuZXQgdHJhbnNmZXIgdW5pdFxuY29uc3QgREVGX01UVV9TSVpFID0gMTQ1NTtcblxuLy8gUmFrbmV0IHRpY2tzXG5jb25zdCBSQUtORVRfVFBTID0gMTAwO1xuY29uc3QgUkFLTkVUX1RJQ0tfTEVOR1RIID0gMSAvIFJBS05FVF9UUFM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENsaWVudCBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gICAgcHJpdmF0ZSBjbGllbnRHVUlEID0gQ3J5cHRvLnJhbmRvbUJ5dGVzKDgpLnJlYWRCaWdJbnQ2NEJFKCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBuZXcgTG9nZ2VyKCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhZGRyZXNzOiBJbmV0QWRkcmVzcztcbiAgICBwcml2YXRlIHRhcmdldEFkZHJlc3MhOiBJbmV0QWRkcmVzcztcbiAgICBwcml2YXRlIGNvbm5lY3Rpb246IFJha05ldFNlc3Npb24gfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNvY2tldCA9IERncmFtLmNyZWF0ZVNvY2tldCh7IHR5cGU6ICd1ZHA0JyB9KTtcbiAgICBwcml2YXRlIGdldCBjbG9zZWQoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbm5lY3RpbmcgPSBmYWxzZTtcbiAgICBwcml2YXRlIGNvbm5lY3RlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgb2ZmbGluZUhhbmRsZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIGxvZ2luSGFuZGxlZCA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmFkZHJlc3MgPSBuZXcgSW5ldEFkZHJlc3MoJzAuMC4wLjAnLCBnZXRSYW5kb21JbnQoNDYwMDAsIDQ5OTk5KSk7XG4gICAgICAgIHRoaXMuc29ja2V0LmJpbmQodGhpcy5hZGRyZXNzLmdldFBvcnQoKSwgdGhpcy5hZGRyZXNzLmdldEFkZHJlc3MoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHBhY2tldCBsaXN0ZW5lciBvbiBnaXZlbiBhZGRyZXNzIGFuZCBwb3J0LlxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBjb25uZWN0KGFkZHJlc3MgPSAnMC4wLjAuMCcsIHBvcnQgPSAxOTEzMikge1xuICAgICAgICB0aGlzLnRhcmdldEFkZHJlc3MgPSBuZXcgSW5ldEFkZHJlc3MoYWRkcmVzcywgcG9ydCk7XG5cbiAgICAgICAgdGhpcy5zb2NrZXQub24oJ21lc3NhZ2UnLCAoYnVmZmVyOiBCdWZmZXIpID0+IHtcbiAgICAgICAgICAgIHZvaWQgdGhpcy5oYW5kbGUoYnVmZmVyKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuY29ubmVjdGlvbikgdGhyb3cgbmV3IEVycm9yKCdBbHJlYWR5IGNvbm5lY3RlZC9jb25uZWN0aW5nIHRvIHNlcnZlci4nKTtcblxuICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKCdKU1ByaXNtYXJpbmUgY2xpZW50IGlzIG5vdyBhdHRlbXB0aW5nIHRvIGNvbm5lY3QuLi4nKTtcblxuICAgICAgICBjb25zdCB0aW1lciA9IHNldEludGVydmFsQXN5bmMoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgY2xlYXJJbnRlcnZhbEFzeW5jKHRpbWVyKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFNlbmQgYSBjbGllbnQgcGFja2V0IHRvIHRoZSBzZXJ2ZXJcbiAgICAgICAgICAgIC8vIHNvIHRoZSBzZXJ2ZXIgZ29lcyBpbiB0YXJnZXQgbW9kZVxuICAgICAgICAgICAgLy8gYW5kIHRoZSBsb2dpbiBwcm9jZXNzIHN0YXJ0c1xuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbm5lY3RpbmcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwayA9IG5ldyBQcm90b2NvbC5VbmNvbm5lY3RlZFBpbmcoKTtcbiAgICAgICAgICAgICAgICBway50aW1lc3RhbXAgPSBCaWdJbnQoRGF0ZS5ub3coKSk7XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogY2FuIGJlIG9taXR0ZWQuLi4gcGsuID0gdGhpcy5jbGllbnRHVUlEO1xuICAgICAgICAgICAgICAgIHBrLmVuY29kZSgpO1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2VuZEJ1ZmZlcihway5nZXRCdWZmZXIoKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNvbm5lY3RlZCAmJiAhdGhpcy5sb2dpbkhhbmRsZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwayA9IG5ldyBKU1BQcm90b2NvbC5QYWNrZXRzLkxvZ2luUGFja2V0KCk7XG4gICAgICAgICAgICAgICAgcGsuZW5jb2RlKCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzZW5kUGsgPSBuZXcgUHJvdG9jb2wuRnJhbWUoKTtcbiAgICAgICAgICAgICAgICBzZW5kUGsucmVsaWFiaWxpdHkgPSAwO1xuICAgICAgICAgICAgICAgIHNlbmRQay5jb250ZW50ID0gcGsuZ2V0QnVmZmVyKCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24hLnNlbmRGcmFtZShzZW5kUGssIENvbm5lY3Rpb25Qcmlvcml0eS5OT1JNQUwpOyAvLyBQYWNrZXQgbmVlZHMgdG8gYmUgc3BsaXR0ZWRcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2luSGFuZGxlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbj8udXBkYXRlKERhdGUubm93KCkpO1xuICAgICAgICB9LCBSQUtORVRfVElDS19MRU5HVEggKiAxMDAwKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBoYW5kbGUoYnVmZmVyOiBCdWZmZXIpIHtcbiAgICAgICAgY29uc3QgaGVhZGVyID0gYnVmZmVyLnJlYWRVSW50OCgpOyAvLyBSZWFkIHBhY2tldCBoZWFkZXJcblxuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uICYmIHRoaXMub2ZmbGluZUhhbmRsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5oYW5kbGUoYnVmZmVyKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBidWY7XG4gICAgICAgIHN3aXRjaCAoaGVhZGVyKSB7XG4gICAgICAgICAgICBjYXNlIE1lc3NhZ2VJZGVudGlmaWVycy5VTkNPTk5FQ1RFRF9QT05HOlxuICAgICAgICAgICAgICAgIGJ1ZiA9IHRoaXMuaGFuZGxlVW5jb25uZWN0ZWRQb25nKGJ1ZmZlcik7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zZW5kQnVmZmVyKGJ1Zik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE1lc3NhZ2VJZGVudGlmaWVycy5PUEVOX0NPTk5FQ1RJT05fUkVQTFlfMTpcbiAgICAgICAgICAgICAgICBidWYgPSB0aGlzLmhhbmRsZU9wZW5Db25uZWN0aW9uUmVwbHkxKGJ1ZmZlcik7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zZW5kQnVmZmVyKGJ1Zik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE1lc3NhZ2VJZGVudGlmaWVycy5PUEVOX0NPTk5FQ1RJT05fUkVQTFlfMjpcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZU9wZW5Db25uZWN0aW9uUmVwbHkyKGJ1ZmZlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLndhcm4oYFVuaGFuZGxlZCBvZmZsaW5lIHBhY2tldCBJRDogJHtoZWFkZXJ9YCwgJ0NsaWVudC9oYW5kbGUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVVbmNvbm5lY3RlZFBvbmcoYnVmZmVyOiBCdWZmZXIpIHtcbiAgICAgICAgLy8gRGVjb2RlIHNlcnZlciBwYWNrZXRcbiAgICAgICAgY29uc3QgZGVjb2RlZFBhY2tldCA9IG5ldyBQcm90b2NvbC5VbmNvbm5lY3RlZFBvbmcoYnVmZmVyKTtcbiAgICAgICAgZGVjb2RlZFBhY2tldC5kZWNvZGUoKTtcblxuICAgICAgICAvLyBDaGVjayBwYWNrZXQgdmFsaWRpdHlcbiAgICAgICAgLy8gVG8gcmVmYWN0b3JcbiAgICAgICAgaWYgKCFkZWNvZGVkUGFja2V0LmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZWNlaXZlZCBhbiBpbnZhbGlkIG9mZmxpbmUgbWVzc2FnZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRW5jb2RlIHJlc3BvbnNlXG4gICAgICAgIGNvbnN0IHBhY2tldCA9IG5ldyBQcm90b2NvbC5PcGVuQ29ubmVjdGlvblJlcXVlc3QxKCk7XG4gICAgICAgIHBhY2tldC5wcm90b2NvbCA9IFBST1RPQ09MO1xuICAgICAgICBwYWNrZXQubXR1U2l6ZSA9IERFRl9NVFVfU0laRTtcbiAgICAgICAgcGFja2V0LmVuY29kZSgpO1xuXG4gICAgICAgIC8vIFVwZGF0ZSBzZXNzaW9uIHN0YXR1c1xuICAgICAgICAvLyB0aGlzLnN0YXR1cyA9IENvbm5lY3Rpb25TdGF0dXMuVGFyZ2V0dGVkO1xuXG4gICAgICAgIHJldHVybiBwYWNrZXQuZ2V0QnVmZmVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZU9wZW5Db25uZWN0aW9uUmVwbHkxKGJ1ZmZlcjogQnVmZmVyKSB7XG4gICAgICAgIC8vIERlY29kZSBzZXJ2ZXIgcGFja2V0XG4gICAgICAgIGNvbnN0IGRlY29kZWRQYWNrZXQgPSBuZXcgUHJvdG9jb2wuT3BlbkNvbm5lY3Rpb25SZXBseTEoYnVmZmVyKTtcbiAgICAgICAgZGVjb2RlZFBhY2tldC5kZWNvZGUoKTtcblxuICAgICAgICAvLyBDaGVjayBwYWNrZXQgdmFsaWRpdHlcbiAgICAgICAgLy8gVG8gcmVmYWN0b3JcbiAgICAgICAgaWYgKCFkZWNvZGVkUGFja2V0LmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZWNlaXZlZCBhbiBpbnZhbGlkIG9mZmxpbmUgbWVzc2FnZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRW5jb2RlIHJlc3BvbnNlXG4gICAgICAgIGNvbnN0IHBhY2tldCA9IG5ldyBQcm90b2NvbC5PcGVuQ29ubmVjdGlvblJlcXVlc3QyKCk7XG4gICAgICAgIHBhY2tldC5zZXJ2ZXJBZGRyZXNzID0gdGhpcy50YXJnZXRBZGRyZXNzO1xuICAgICAgICBwYWNrZXQubXR1U2l6ZSA9IERFRl9NVFVfU0laRTtcbiAgICAgICAgcGFja2V0LmNsaWVudEdVSUQgPSB0aGlzLmNsaWVudEdVSUQ7XG4gICAgICAgIHBhY2tldC5lbmNvZGUoKTtcblxuICAgICAgICAvLyBVcGRhdGUgc2Vzc2lvbiBzdGF0dXNcbiAgICAgICAgdGhpcy5jb25uZWN0aW5nID0gdHJ1ZTtcbiAgICAgICAgLy8gVGhpcy5zdGF0dXMgPSBDb25uZWN0aW9uU3RhdHVzLkNvbm5lY3RlZDtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uID0gbmV3IFJha05ldFNlc3Npb24oXG4gICAgICAgICAgICB0aGlzIGFzIGFueSxcbiAgICAgICAgICAgIERFRl9NVFVfU0laRSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiB0aGlzLmFkZHJlc3MuZ2V0QWRkcmVzcygpLFxuICAgICAgICAgICAgICAgIHBvcnQ6IHRoaXMuYWRkcmVzcy5nZXRQb3J0KCksXG4gICAgICAgICAgICAgICAgZmFtaWx5OiAnSVB2NCcsXG4gICAgICAgICAgICAgICAgc2l6ZTogMFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJhbmRvbUJ5dGVzKDgpLnJlYWRCaWdJbnQ2NEJFKClcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gcGFja2V0LmdldEJ1ZmZlcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVPcGVuQ29ubmVjdGlvblJlcGx5MihidWZmZXI6IEJ1ZmZlcikge1xuICAgICAgICAvLyBEZWNvZGUgc2VydmVyIHBhY2tldFxuICAgICAgICBjb25zdCBkZWNvZGVkUGFja2V0ID0gbmV3IFByb3RvY29sLk9wZW5Db25uZWN0aW9uUmVwbHkyKGJ1ZmZlcik7XG4gICAgICAgIGRlY29kZWRQYWNrZXQuZGVjb2RlKCk7XG5cbiAgICAgICAgLy8gQ2hlY2sgcGFja2V0IHZhbGlkaXR5XG4gICAgICAgIC8vIFRvIHJlZmFjdG9yXG4gICAgICAgIGlmICghZGVjb2RlZFBhY2tldC5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVjZWl2ZWQgYW4gaW52YWxpZCBvZmZsaW5lIG1lc3NhZ2UnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEVuY29kZSByZXNwb25zZSAoZW5jYXBzdWxhdGVkKVxuICAgICAgICBjb25zdCBwYWNrZXQgPSBuZXcgUHJvdG9jb2wuQ29ubmVjdGlvblJlcXVlc3QoKTtcbiAgICAgICAgcGFja2V0LmNsaWVudEdVSUQgPSB0aGlzLmNsaWVudEdVSUQ7XG4gICAgICAgIHBhY2tldC5yZXF1ZXN0VGltZXN0YW1wID0gQmlnSW50KERhdGUubm93KCkpO1xuICAgICAgICBwYWNrZXQuZW5jb2RlKCk7XG5cbiAgICAgICAgY29uc3Qgc2VuZFBhY2tldCA9IG5ldyBQcm90b2NvbC5GcmFtZSgpO1xuICAgICAgICBzZW5kUGFja2V0LnJlbGlhYmlsaXR5ID0gMDtcbiAgICAgICAgc2VuZFBhY2tldC5jb250ZW50ID0gcGFja2V0LmdldEJ1ZmZlcigpO1xuXG4gICAgICAgIHRoaXMuY29ubmVjdGlvbj8uc2VuZEZyYW1lKHNlbmRQYWNrZXQsIENvbm5lY3Rpb25Qcmlvcml0eS5OT1JNQUwpO1xuXG4gICAgICAgIHRoaXMub2ZmbGluZUhhbmRsZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmNvbm5lY3RlZCA9IHRydWU7IC8vIFNob3VsZCBiZS4uLiB3ZSBjYW4ndCByZWx5IG9uIGl0XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VuZHMgdGhlIGJ1ZmZlciB0byB0aGUgc2VydmVyXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYnVmZmVyXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIHNlbmRCdWZmZXIoYnVmZmVyOiBCdWZmZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5zb2NrZXQuc2VuZChidWZmZXIsIDAsIGJ1ZmZlci5ieXRlTGVuZ3RoLCB0aGlzLnRhcmdldEFkZHJlc3MuZ2V0UG9ydCgpLCB0aGlzLnRhcmdldEFkZHJlc3MuZ2V0QWRkcmVzcygpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U29ja2V0KCk6IFNvY2tldCB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvY2tldDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QWRkcmVzcygpOiBJbmV0QWRkcmVzcyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZHJlc3M7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlbW92ZUNvbm5lY3Rpb24oX2Nvbm5lY3Rpb246IFJha05ldFNlc3Npb24sIF9yZWFzb24/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6WyJjbGVhckludGVydmFsQXN5bmNfMSIsInJlcXVpcmUkJDAiLCJyZXF1aXJlJCQxIiwic2V0SW50ZXJ2YWxBc3luYyIsImNsZWFySW50ZXJ2YWxBc3luYyIsIkpTUFByb3RvY29sIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUNBLE1BQU0sQ0FBQyxjQUFjLENBQUMscUJBQU8sRUFBRSxZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNqQyxxQkFBQSxDQUFBLHFCQUFBLEdBQUcsS0FBSyxFQUFFO0FBQ3ZDLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztBQUMzQixNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUM7QUFDbkMsTUFBTSxxQkFBcUIsQ0FBQztBQUM1QixJQUFJLFFBQVEsR0FBRyxTQUFT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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jsprismarine/client",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.5-unstable-20240619005403",
|
|
4
4
|
"description": "Minecraft: Bedrock Edition RakNet client",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"type": "module",
|
|
@@ -14,10 +14,7 @@
|
|
|
14
14
|
"types": "./dist/index.d.ts",
|
|
15
15
|
"exports": {
|
|
16
16
|
".": {
|
|
17
|
-
"import":
|
|
18
|
-
"./src/index.ts",
|
|
19
|
-
"./dist/index.es.js"
|
|
20
|
-
],
|
|
17
|
+
"import": "./dist/index.es.js",
|
|
21
18
|
"module": "./dist/index.es.js",
|
|
22
19
|
"require": "./dist/index.cjs.cjs",
|
|
23
20
|
"types": "./dist/index.d.ts"
|
|
@@ -43,17 +40,17 @@
|
|
|
43
40
|
"homepage": "https://github.com/JSPrismarine/JSPrismarine/tree/master/packages/client",
|
|
44
41
|
"devDependencies": {
|
|
45
42
|
"@types/node": "20.12.7",
|
|
46
|
-
"glob": "10.
|
|
43
|
+
"glob": "10.4.1",
|
|
47
44
|
"rimraf": "5.0.7",
|
|
48
45
|
"typescript": "5.4.5",
|
|
49
|
-
"vite": "5.
|
|
46
|
+
"vite": "5.3.1",
|
|
50
47
|
"vitest": "1.6.0"
|
|
51
48
|
},
|
|
52
49
|
"dependencies": {
|
|
53
50
|
"set-interval-async": "3.0.3",
|
|
54
|
-
"@jsprismarine/logger": "0.4.
|
|
55
|
-
"@jsprismarine/prismarine": "0.4.
|
|
56
|
-
"@jsprismarine/raknet": "0.4.
|
|
51
|
+
"@jsprismarine/logger": "0.4.5-unstable-20240619005403",
|
|
52
|
+
"@jsprismarine/prismarine": "0.4.5-unstable-20240619005403",
|
|
53
|
+
"@jsprismarine/raknet": "0.4.5-unstable-20240619005403"
|
|
57
54
|
},
|
|
58
55
|
"scripts": {
|
|
59
56
|
"clean": "rimraf dist jsp *.tsbuildinfo vite.config.ts.timestamp-* .tsup .turbo",
|