@kulupu-linku/sona 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.js +130 -75
- package/dist/index.js +6 -6
- package/dist/lib/client.d.ts +34 -26
- package/dist/lib/client.test.d.ts +4 -3
- package/dist/lib/index.d.ts +22 -21
- package/dist/lib/types.d.ts +2 -1
- package/dist/lib/utils.d.ts +3 -2
- package/dist/server/index.d.ts +465 -372
- package/dist/server/utils.d.ts +3 -2
- package/dist/server/v1/index.d.ts +464 -372
- package/dist/server/versioning.d.ts +495 -403
- package/generated/sign.json +0 -4
- package/generated/signs.json +0 -4
- package/package.json +2 -2
package/dist/client.js
CHANGED
|
@@ -1,105 +1,160 @@
|
|
|
1
|
-
var
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
var y = Object.defineProperty;
|
|
2
|
+
var w = (e, t, r) => t in e ? y(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r;
|
|
3
|
+
var c = (e, t, r) => (w(e, typeof t != "symbol" ? t + "" : t, r), r);
|
|
4
|
+
var v = (e, t, r = {}) => {
|
|
5
|
+
let i = `${e}=${t}`;
|
|
6
|
+
if (e.startsWith("__Secure-") && !r.secure)
|
|
7
|
+
throw new Error("__Secure- Cookie must have Secure attributes");
|
|
8
|
+
if (e.startsWith("__Host-")) {
|
|
9
|
+
if (!r.secure)
|
|
10
|
+
throw new Error("__Host- Cookie must have Secure attributes");
|
|
11
|
+
if (r.path !== "/")
|
|
12
|
+
throw new Error('__Host- Cookie must have Path attributes with "/"');
|
|
13
|
+
if (r.domain)
|
|
14
|
+
throw new Error("__Host- Cookie must not have Domain attributes");
|
|
8
15
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
if (r && typeof r.maxAge == "number" && r.maxAge >= 0) {
|
|
17
|
+
if (r.maxAge > 3456e4)
|
|
18
|
+
throw new Error(
|
|
19
|
+
"Cookies Max-Age SHOULD NOT be greater than 400 days (34560000 seconds) in duration."
|
|
20
|
+
);
|
|
21
|
+
i += `; Max-Age=${Math.floor(r.maxAge)}`;
|
|
22
|
+
}
|
|
23
|
+
if (r.domain && r.prefix !== "host" && (i += `; Domain=${r.domain}`), r.path && (i += `; Path=${r.path}`), r.expires) {
|
|
24
|
+
if (r.expires.getTime() - Date.now() > 3456e7)
|
|
25
|
+
throw new Error(
|
|
26
|
+
"Cookies Expires SHOULD NOT be greater than 400 days (34560000 seconds) in the future."
|
|
27
|
+
);
|
|
28
|
+
i += `; Expires=${r.expires.toUTCString()}`;
|
|
29
|
+
}
|
|
30
|
+
if (r.httpOnly && (i += "; HttpOnly"), r.secure && (i += "; Secure"), r.sameSite && (i += `; SameSite=${r.sameSite}`), r.partitioned) {
|
|
31
|
+
if (!r.secure)
|
|
32
|
+
throw new Error("Partitioned Cookie must have Secure attributes");
|
|
33
|
+
i += "; Partitioned";
|
|
34
|
+
}
|
|
35
|
+
return i;
|
|
36
|
+
}, p = (e, t, r) => (t = encodeURIComponent(t), v(e, t, r)), x = (e, t) => (e = e.replace(/\/+$/, ""), e = e + "/", t = t.replace(/^\/+/, ""), e + t), m = (e, t) => {
|
|
37
|
+
for (const [r, i] of Object.entries(t)) {
|
|
38
|
+
const a = new RegExp("/:" + r + "(?:{[^/]+})?");
|
|
39
|
+
e = e.replace(a, `/${i}`);
|
|
21
40
|
}
|
|
22
41
|
return e;
|
|
42
|
+
}, P = (e, t) => {
|
|
43
|
+
switch (t) {
|
|
44
|
+
case "ws":
|
|
45
|
+
return e.replace(/^http/, "ws");
|
|
46
|
+
case "http":
|
|
47
|
+
return e.replace(/^ws/, "http");
|
|
48
|
+
}
|
|
49
|
+
}, k = (e) => e.replace(/\/index$/, "");
|
|
50
|
+
function u(e) {
|
|
51
|
+
return typeof e == "object" && e !== null && !Array.isArray(e);
|
|
23
52
|
}
|
|
24
|
-
|
|
53
|
+
function d(e, t) {
|
|
54
|
+
if (!u(e) && !u(t))
|
|
55
|
+
return t;
|
|
56
|
+
const r = { ...e };
|
|
57
|
+
for (const i in t) {
|
|
58
|
+
const a = t[i];
|
|
59
|
+
u(r[i]) && u(a) ? r[i] = d(r[i], a) : r[i] = a;
|
|
60
|
+
}
|
|
61
|
+
return r;
|
|
62
|
+
}
|
|
63
|
+
var l = (e, t) => new Proxy(() => {
|
|
25
64
|
}, {
|
|
26
|
-
get(
|
|
27
|
-
if (!(typeof
|
|
28
|
-
return l(
|
|
65
|
+
get(i, a) {
|
|
66
|
+
if (!(typeof a != "string" || a === "then"))
|
|
67
|
+
return l(e, [...t, a]);
|
|
29
68
|
},
|
|
30
|
-
apply(
|
|
31
|
-
return
|
|
32
|
-
path:
|
|
33
|
-
args:
|
|
69
|
+
apply(i, a, s) {
|
|
70
|
+
return e({
|
|
71
|
+
path: t,
|
|
72
|
+
args: s
|
|
34
73
|
});
|
|
35
74
|
}
|
|
36
|
-
}),
|
|
37
|
-
constructor(
|
|
38
|
-
this
|
|
75
|
+
}), _ = class {
|
|
76
|
+
constructor(e, t) {
|
|
77
|
+
c(this, "url");
|
|
78
|
+
c(this, "method");
|
|
79
|
+
c(this, "queryParams");
|
|
80
|
+
c(this, "pathParams", {});
|
|
81
|
+
c(this, "rBody");
|
|
82
|
+
c(this, "cType");
|
|
83
|
+
c(this, "fetch", async (e, t) => {
|
|
39
84
|
if (e) {
|
|
40
85
|
if (e.query) {
|
|
41
|
-
for (const [
|
|
42
|
-
if (
|
|
43
|
-
if (this.queryParams || (this.queryParams = new URLSearchParams()), Array.isArray(
|
|
44
|
-
for (const f of
|
|
45
|
-
this.queryParams.append(
|
|
86
|
+
for (const [o, n] of Object.entries(e.query))
|
|
87
|
+
if (n !== void 0)
|
|
88
|
+
if (this.queryParams || (this.queryParams = new URLSearchParams()), Array.isArray(n))
|
|
89
|
+
for (const f of n)
|
|
90
|
+
this.queryParams.append(o, f);
|
|
46
91
|
else
|
|
47
|
-
this.queryParams.set(
|
|
92
|
+
this.queryParams.set(o, n);
|
|
48
93
|
}
|
|
49
94
|
if (e.form) {
|
|
50
|
-
const
|
|
51
|
-
for (const [
|
|
52
|
-
|
|
53
|
-
this.rBody =
|
|
95
|
+
const o = new FormData();
|
|
96
|
+
for (const [n, f] of Object.entries(e.form))
|
|
97
|
+
o.append(n, f);
|
|
98
|
+
this.rBody = o;
|
|
54
99
|
}
|
|
55
100
|
e.json && (this.rBody = JSON.stringify(e.json), this.cType = "application/json"), e.param && (this.pathParams = e.param);
|
|
56
101
|
}
|
|
57
|
-
let
|
|
58
|
-
const
|
|
102
|
+
let r = this.method.toUpperCase();
|
|
103
|
+
const i = {
|
|
59
104
|
...(e == null ? void 0 : e.header) ?? {},
|
|
60
|
-
...
|
|
105
|
+
...typeof (t == null ? void 0 : t.headers) == "function" ? await t.headers() : t != null && t.headers ? t.headers : {}
|
|
61
106
|
};
|
|
62
107
|
if (e != null && e.cookie) {
|
|
63
|
-
const
|
|
64
|
-
for (const [
|
|
65
|
-
|
|
66
|
-
|
|
108
|
+
const o = [];
|
|
109
|
+
for (const [n, f] of Object.entries(e.cookie))
|
|
110
|
+
o.push(p(n, f, { path: "/" }));
|
|
111
|
+
i.Cookie = o.join(",");
|
|
67
112
|
}
|
|
68
|
-
this.cType && (
|
|
69
|
-
const
|
|
70
|
-
let
|
|
71
|
-
|
|
113
|
+
this.cType && (i["Content-Type"] = this.cType);
|
|
114
|
+
const a = new Headers(i ?? void 0);
|
|
115
|
+
let s = this.url;
|
|
116
|
+
s = k(s), s = m(s, this.pathParams), this.queryParams && (s = s + "?" + this.queryParams.toString()), r = this.method.toUpperCase();
|
|
117
|
+
const h = !(r === "GET" || r === "HEAD");
|
|
118
|
+
return ((t == null ? void 0 : t.fetch) || fetch)(s, {
|
|
72
119
|
body: h ? this.rBody : void 0,
|
|
73
|
-
method:
|
|
74
|
-
headers:
|
|
120
|
+
method: r,
|
|
121
|
+
headers: a
|
|
75
122
|
});
|
|
76
|
-
}
|
|
123
|
+
});
|
|
124
|
+
this.url = e, this.method = t;
|
|
125
|
+
}
|
|
126
|
+
}, C = (e, t) => l((r) => {
|
|
127
|
+
const i = [...r.path];
|
|
128
|
+
let a = "";
|
|
129
|
+
if (/^\$/.test(i[i.length - 1])) {
|
|
130
|
+
const n = i.pop();
|
|
131
|
+
n && (a = n.replace(/^\$/, ""));
|
|
77
132
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
if (
|
|
82
|
-
const
|
|
83
|
-
|
|
133
|
+
const s = i.join("/"), h = x(e, s);
|
|
134
|
+
if (a === "url")
|
|
135
|
+
return r.args[0] && r.args[0].param ? new URL(m(h, r.args[0].param)) : new URL(h);
|
|
136
|
+
if (a === "ws") {
|
|
137
|
+
const n = P(
|
|
138
|
+
r.args[0] && r.args[0].param ? m(h, r.args[0].param) : h,
|
|
139
|
+
"ws"
|
|
140
|
+
);
|
|
141
|
+
return new WebSocket(n);
|
|
84
142
|
}
|
|
85
|
-
const
|
|
86
|
-
if (
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
i ?? (i = {});
|
|
91
|
-
const a = y(i, { ...e.args[1] ?? {} });
|
|
92
|
-
return m.fetch(e.args[0], a);
|
|
143
|
+
const o = new _(h, a);
|
|
144
|
+
if (a) {
|
|
145
|
+
t ?? (t = {});
|
|
146
|
+
const n = d(t, { ...r.args[1] ?? {} });
|
|
147
|
+
return o.fetch(r.args[0], n);
|
|
93
148
|
}
|
|
94
|
-
return
|
|
149
|
+
return o;
|
|
95
150
|
}, []);
|
|
96
|
-
const
|
|
97
|
-
const { baseUrl:
|
|
98
|
-
return
|
|
99
|
-
fetch:
|
|
151
|
+
const b = (e) => {
|
|
152
|
+
const { baseUrl: t = "https://api.linku.la", fetch: r = global.fetch } = e;
|
|
153
|
+
return C(t, {
|
|
154
|
+
fetch: r
|
|
100
155
|
});
|
|
101
156
|
};
|
|
102
157
|
export {
|
|
103
|
-
|
|
158
|
+
b as client
|
|
104
159
|
};
|
|
105
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlcyI6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vaG9ub0A0LjAuMTAvbm9kZV9tb2R1bGVzL2hvbm8vZGlzdC91dGlscy9jb29raWUuanMiLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vaG9ub0A0LjAuMTAvbm9kZV9tb2R1bGVzL2hvbm8vZGlzdC9jbGllbnQvdXRpbHMuanMiLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vaG9ub0A0LjAuMTAvbm9kZV9tb2R1bGVzL2hvbm8vZGlzdC9jbGllbnQvY2xpZW50LmpzIiwiLi4vc3JjL2xpYi9jbGllbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL3V0aWxzL2Nvb2tpZS50c1xuaW1wb3J0IHsgZGVjb2RlVVJJQ29tcG9uZW50XyB9IGZyb20gXCIuL3VybC5qc1wiO1xudmFyIGFsZ29yaXRobSA9IHsgbmFtZTogXCJITUFDXCIsIGhhc2g6IFwiU0hBLTI1NlwiIH07XG52YXIgZ2V0Q3J5cHRvS2V5ID0gYXN5bmMgKHNlY3JldCkgPT4ge1xuICBjb25zdCBzZWNyZXRCdWYgPSB0eXBlb2Ygc2VjcmV0ID09PSBcInN0cmluZ1wiID8gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHNlY3JldCkgOiBzZWNyZXQ7XG4gIHJldHVybiBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleShcInJhd1wiLCBzZWNyZXRCdWYsIGFsZ29yaXRobSwgZmFsc2UsIFtcInNpZ25cIiwgXCJ2ZXJpZnlcIl0pO1xufTtcbnZhciBtYWtlU2lnbmF0dXJlID0gYXN5bmMgKHZhbHVlLCBzZWNyZXQpID0+IHtcbiAgY29uc3Qga2V5ID0gYXdhaXQgZ2V0Q3J5cHRvS2V5KHNlY3JldCk7XG4gIGNvbnN0IHNpZ25hdHVyZSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuc2lnbihhbGdvcml0aG0ubmFtZSwga2V5LCBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodmFsdWUpKTtcbiAgcmV0dXJuIGJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZSguLi5uZXcgVWludDhBcnJheShzaWduYXR1cmUpKSk7XG59O1xudmFyIHZlcmlmeVNpZ25hdHVyZSA9IGFzeW5jIChiYXNlNjRTaWduYXR1cmUsIHZhbHVlLCBzZWNyZXQpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzaWduYXR1cmVCaW5TdHIgPSBhdG9iKGJhc2U2NFNpZ25hdHVyZSk7XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gbmV3IFVpbnQ4QXJyYXkoc2lnbmF0dXJlQmluU3RyLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHNpZ25hdHVyZUJpblN0ci5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgc2lnbmF0dXJlW2ldID0gc2lnbmF0dXJlQmluU3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCBjcnlwdG8uc3VidGxlLnZlcmlmeShhbGdvcml0aG0sIHNlY3JldCwgc2lnbmF0dXJlLCBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodmFsdWUpKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcbnZhciB2YWxpZENvb2tpZU5hbWVSZWdFeCA9IC9eW1xcdyEjJCUmJyouXmB8fistXSskLztcbnZhciB2YWxpZENvb2tpZVZhbHVlUmVnRXggPSAvXlsgISMtOjwtW1xcXS1+XSokLztcbnZhciBwYXJzZSA9IChjb29raWUsIG5hbWUpID0+IHtcbiAgY29uc3QgcGFpcnMgPSBjb29raWUudHJpbSgpLnNwbGl0KFwiO1wiKTtcbiAgcmV0dXJuIHBhaXJzLnJlZHVjZSgocGFyc2VkQ29va2llLCBwYWlyU3RyKSA9PiB7XG4gICAgcGFpclN0ciA9IHBhaXJTdHIudHJpbSgpO1xuICAgIGNvbnN0IHZhbHVlU3RhcnRQb3MgPSBwYWlyU3RyLmluZGV4T2YoXCI9XCIpO1xuICAgIGlmICh2YWx1ZVN0YXJ0UG9zID09PSAtMSkge1xuICAgICAgcmV0dXJuIHBhcnNlZENvb2tpZTtcbiAgICB9XG4gICAgY29uc3QgY29va2llTmFtZSA9IHBhaXJTdHIuc3Vic3RyaW5nKDAsIHZhbHVlU3RhcnRQb3MpLnRyaW0oKTtcbiAgICBpZiAobmFtZSAmJiBuYW1lICE9PSBjb29raWVOYW1lIHx8ICF2YWxpZENvb2tpZU5hbWVSZWdFeC50ZXN0KGNvb2tpZU5hbWUpKSB7XG4gICAgICByZXR1cm4gcGFyc2VkQ29va2llO1xuICAgIH1cbiAgICBsZXQgY29va2llVmFsdWUgPSBwYWlyU3RyLnN1YnN0cmluZyh2YWx1ZVN0YXJ0UG9zICsgMSkudHJpbSgpO1xuICAgIGlmIChjb29raWVWYWx1ZS5zdGFydHNXaXRoKCdcIicpICYmIGNvb2tpZVZhbHVlLmVuZHNXaXRoKCdcIicpKSB7XG4gICAgICBjb29raWVWYWx1ZSA9IGNvb2tpZVZhbHVlLnNsaWNlKDEsIC0xKTtcbiAgICB9XG4gICAgaWYgKHZhbGlkQ29va2llVmFsdWVSZWdFeC50ZXN0KGNvb2tpZVZhbHVlKSkge1xuICAgICAgcGFyc2VkQ29va2llW2Nvb2tpZU5hbWVdID0gZGVjb2RlVVJJQ29tcG9uZW50Xyhjb29raWVWYWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZWRDb29raWU7XG4gIH0sIHt9KTtcbn07XG52YXIgcGFyc2VTaWduZWQgPSBhc3luYyAoY29va2llLCBzZWNyZXQsIG5hbWUpID0+IHtcbiAgY29uc3QgcGFyc2VkQ29va2llID0ge307XG4gIGNvbnN0IHNlY3JldEtleSA9IGF3YWl0IGdldENyeXB0b0tleShzZWNyZXQpO1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwYXJzZShjb29raWUsIG5hbWUpKSkge1xuICAgIGNvbnN0IHNpZ25hdHVyZVN0YXJ0UG9zID0gdmFsdWUubGFzdEluZGV4T2YoXCIuXCIpO1xuICAgIGlmIChzaWduYXR1cmVTdGFydFBvcyA8IDEpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBzaWduZWRWYWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCBzaWduYXR1cmVTdGFydFBvcyk7XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gdmFsdWUuc3Vic3RyaW5nKHNpZ25hdHVyZVN0YXJ0UG9zICsgMSk7XG4gICAgaWYgKHNpZ25hdHVyZS5sZW5ndGggIT09IDQ0IHx8ICFzaWduYXR1cmUuZW5kc1dpdGgoXCI9XCIpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgaXNWZXJpZmllZCA9IGF3YWl0IHZlcmlmeVNpZ25hdHVyZShzaWduYXR1cmUsIHNpZ25lZFZhbHVlLCBzZWNyZXRLZXkpO1xuICAgIHBhcnNlZENvb2tpZVtrZXldID0gaXNWZXJpZmllZCA/IHNpZ25lZFZhbHVlIDogZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHBhcnNlZENvb2tpZTtcbn07XG52YXIgX3NlcmlhbGl6ZSA9IChuYW1lLCB2YWx1ZSwgb3B0ID0ge30pID0+IHtcbiAgbGV0IGNvb2tpZSA9IGAke25hbWV9PSR7dmFsdWV9YDtcbiAgaWYgKG9wdCAmJiB0eXBlb2Ygb3B0Lm1heEFnZSA9PT0gXCJudW1iZXJcIiAmJiBvcHQubWF4QWdlID49IDApIHtcbiAgICBjb29raWUgKz0gYDsgTWF4LUFnZT0ke01hdGguZmxvb3Iob3B0Lm1heEFnZSl9YDtcbiAgfVxuICBpZiAob3B0LmRvbWFpbikge1xuICAgIGNvb2tpZSArPSBgOyBEb21haW49JHtvcHQuZG9tYWlufWA7XG4gIH1cbiAgaWYgKG9wdC5wYXRoKSB7XG4gICAgY29va2llICs9IGA7IFBhdGg9JHtvcHQucGF0aH1gO1xuICB9XG4gIGlmIChvcHQuZXhwaXJlcykge1xuICAgIGNvb2tpZSArPSBgOyBFeHBpcmVzPSR7b3B0LmV4cGlyZXMudG9VVENTdHJpbmcoKX1gO1xuICB9XG4gIGlmIChvcHQuaHR0cE9ubHkpIHtcbiAgICBjb29raWUgKz0gXCI7IEh0dHBPbmx5XCI7XG4gIH1cbiAgaWYgKG9wdC5zZWN1cmUpIHtcbiAgICBjb29raWUgKz0gXCI7IFNlY3VyZVwiO1xuICB9XG4gIGlmIChvcHQuc2FtZVNpdGUpIHtcbiAgICBjb29raWUgKz0gYDsgU2FtZVNpdGU9JHtvcHQuc2FtZVNpdGV9YDtcbiAgfVxuICBpZiAob3B0LnBhcnRpdGlvbmVkKSB7XG4gICAgY29va2llICs9IFwiOyBQYXJ0aXRpb25lZFwiO1xuICB9XG4gIHJldHVybiBjb29raWU7XG59O1xudmFyIHNlcmlhbGl6ZSA9IChuYW1lLCB2YWx1ZSwgb3B0ID0ge30pID0+IHtcbiAgdmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpO1xuICByZXR1cm4gX3NlcmlhbGl6ZShuYW1lLCB2YWx1ZSwgb3B0KTtcbn07XG52YXIgc2VyaWFsaXplU2lnbmVkID0gYXN5bmMgKG5hbWUsIHZhbHVlLCBzZWNyZXQsIG9wdCA9IHt9KSA9PiB7XG4gIGNvbnN0IHNpZ25hdHVyZSA9IGF3YWl0IG1ha2VTaWduYXR1cmUodmFsdWUsIHNlY3JldCk7XG4gIHZhbHVlID0gYCR7dmFsdWV9LiR7c2lnbmF0dXJlfWA7XG4gIHZhbHVlID0gZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKTtcbiAgcmV0dXJuIF9zZXJpYWxpemUobmFtZSwgdmFsdWUsIG9wdCk7XG59O1xuZXhwb3J0IHtcbiAgcGFyc2UsXG4gIHBhcnNlU2lnbmVkLFxuICBzZXJpYWxpemUsXG4gIHNlcmlhbGl6ZVNpZ25lZFxufTtcbiIsIi8vIHNyYy9jbGllbnQvdXRpbHMudHNcbnZhciBtZXJnZVBhdGggPSAoYmFzZSwgcGF0aCkgPT4ge1xuICBiYXNlID0gYmFzZS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpO1xuICBiYXNlID0gYmFzZSArIFwiL1wiO1xuICBwYXRoID0gcGF0aC5yZXBsYWNlKC9eXFwvKy8sIFwiXCIpO1xuICByZXR1cm4gYmFzZSArIHBhdGg7XG59O1xudmFyIHJlcGxhY2VVcmxQYXJhbSA9ICh1cmxTdHJpbmcsIHBhcmFtcykgPT4ge1xuICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhwYXJhbXMpKSB7XG4gICAgY29uc3QgcmVnID0gbmV3IFJlZ0V4cChcIi86XCIgKyBrICsgXCIoPzp7W14vXSt9KT9cIik7XG4gICAgdXJsU3RyaW5nID0gdXJsU3RyaW5nLnJlcGxhY2UocmVnLCBgLyR7dn1gKTtcbiAgfVxuICByZXR1cm4gdXJsU3RyaW5nO1xufTtcbnZhciByZW1vdmVJbmRleFN0cmluZyA9ICh1cmxTdGluZykgPT4ge1xuICByZXR1cm4gdXJsU3RpbmcucmVwbGFjZSgvXFwvaW5kZXgkLywgXCIvXCIpO1xufTtcbmZ1bmN0aW9uIGlzT2JqZWN0KGl0ZW0pIHtcbiAgcmV0dXJuIHR5cGVvZiBpdGVtID09PSBcIm9iamVjdFwiICYmIGl0ZW0gIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkoaXRlbSk7XG59XG5mdW5jdGlvbiBkZWVwTWVyZ2UodGFyZ2V0LCBzb3VyY2UpIHtcbiAgaWYgKCFpc09iamVjdCh0YXJnZXQpICYmICFpc09iamVjdChzb3VyY2UpKSB7XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuICBjb25zdCBtZXJnZWQgPSB7IC4uLnRhcmdldCB9O1xuICBmb3IgKGNvbnN0IGtleSBpbiBzb3VyY2UpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHNvdXJjZVtrZXldO1xuICAgIGlmIChpc09iamVjdChtZXJnZWRba2V5XSkgJiYgaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICBtZXJnZWRba2V5XSA9IGRlZXBNZXJnZShtZXJnZWRba2V5XSwgdmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtZXJnZWRba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbWVyZ2VkO1xufVxuZXhwb3J0IHtcbiAgZGVlcE1lcmdlLFxuICBtZXJnZVBhdGgsXG4gIHJlbW92ZUluZGV4U3RyaW5nLFxuICByZXBsYWNlVXJsUGFyYW1cbn07XG4iLCIvLyBzcmMvY2xpZW50L2NsaWVudC50c1xuaW1wb3J0IHsgc2VyaWFsaXplIH0gZnJvbSBcIi4uL3V0aWxzL2Nvb2tpZS5qc1wiO1xuaW1wb3J0IHsgZGVlcE1lcmdlLCBtZXJnZVBhdGgsIHJlbW92ZUluZGV4U3RyaW5nLCByZXBsYWNlVXJsUGFyYW0gfSBmcm9tIFwiLi91dGlscy5qc1wiO1xudmFyIGNyZWF0ZVByb3h5ID0gKGNhbGxiYWNrLCBwYXRoKSA9PiB7XG4gIGNvbnN0IHByb3h5ID0gbmV3IFByb3h5KCgpID0+IHtcbiAgfSwge1xuICAgIGdldChfb2JqLCBrZXkpIHtcbiAgICAgIGlmICh0eXBlb2Yga2V5ICE9PSBcInN0cmluZ1wiIHx8IGtleSA9PT0gXCJ0aGVuXCIpIHtcbiAgICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjcmVhdGVQcm94eShjYWxsYmFjaywgWy4uLnBhdGgsIGtleV0pO1xuICAgIH0sXG4gICAgYXBwbHkoXzEsIF8yLCBhcmdzKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soe1xuICAgICAgICBwYXRoLFxuICAgICAgICBhcmdzXG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcHJveHk7XG59O1xudmFyIENsaWVudFJlcXVlc3RJbXBsID0gY2xhc3Mge1xuICBjb25zdHJ1Y3Rvcih1cmwsIG1ldGhvZCkge1xuICAgIHRoaXMucXVlcnlQYXJhbXMgPSB2b2lkIDA7XG4gICAgdGhpcy5wYXRoUGFyYW1zID0ge307XG4gICAgdGhpcy5jVHlwZSA9IHZvaWQgMDtcbiAgICB0aGlzLmZldGNoID0gKGFyZ3MsIG9wdCkgPT4ge1xuICAgICAgaWYgKGFyZ3MpIHtcbiAgICAgICAgaWYgKGFyZ3MucXVlcnkpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhhcmdzLnF1ZXJ5KSkge1xuICAgICAgICAgICAgaWYgKHYgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucXVlcnlQYXJhbXMgfHwgKHRoaXMucXVlcnlQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCkpO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodikpIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCB2MiBvZiB2KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeVBhcmFtcy5hcHBlbmQoaywgdjIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnNldChrLCB2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFyZ3MuZm9ybSkge1xuICAgICAgICAgIGNvbnN0IGZvcm0gPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhhcmdzLmZvcm0pKSB7XG4gICAgICAgICAgICBmb3JtLmFwcGVuZChrLCB2KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5yQm9keSA9IGZvcm07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFyZ3MuanNvbikge1xuICAgICAgICAgIHRoaXMuckJvZHkgPSBKU09OLnN0cmluZ2lmeShhcmdzLmpzb24pO1xuICAgICAgICAgIHRoaXMuY1R5cGUgPSBcImFwcGxpY2F0aW9uL2pzb25cIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXJncy5wYXJhbSkge1xuICAgICAgICAgIHRoaXMucGF0aFBhcmFtcyA9IGFyZ3MucGFyYW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxldCBtZXRob2RVcHBlckNhc2UgPSB0aGlzLm1ldGhvZC50b1VwcGVyQ2FzZSgpO1xuICAgICAgbGV0IHNldEJvZHkgPSAhKG1ldGhvZFVwcGVyQ2FzZSA9PT0gXCJHRVRcIiB8fCBtZXRob2RVcHBlckNhc2UgPT09IFwiSEVBRFwiKTtcbiAgICAgIGNvbnN0IGhlYWRlclZhbHVlcyA9IHtcbiAgICAgICAgLi4uYXJncz8uaGVhZGVyID8/IHt9LFxuICAgICAgICAuLi5vcHQ/LmhlYWRlcnMgPyBvcHQuaGVhZGVycyA6IHt9XG4gICAgICB9O1xuICAgICAgaWYgKGFyZ3M/LmNvb2tpZSkge1xuICAgICAgICBjb25zdCBjb29raWVzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGFyZ3MuY29va2llKSkge1xuICAgICAgICAgIGNvb2tpZXMucHVzaChzZXJpYWxpemUoa2V5LCB2YWx1ZSwgeyBwYXRoOiBcIi9cIiB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgaGVhZGVyVmFsdWVzW1wiQ29va2llXCJdID0gY29va2llcy5qb2luKFwiLFwiKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmNUeXBlKSB7XG4gICAgICAgIGhlYWRlclZhbHVlc1tcIkNvbnRlbnQtVHlwZVwiXSA9IHRoaXMuY1R5cGU7XG4gICAgICB9XG4gICAgICBjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMoaGVhZGVyVmFsdWVzID8/IHZvaWQgMCk7XG4gICAgICBsZXQgdXJsID0gdGhpcy51cmw7XG4gICAgICB1cmwgPSByZW1vdmVJbmRleFN0cmluZyh1cmwpO1xuICAgICAgdXJsID0gcmVwbGFjZVVybFBhcmFtKHVybCwgdGhpcy5wYXRoUGFyYW1zKTtcbiAgICAgIGlmICh0aGlzLnF1ZXJ5UGFyYW1zKSB7XG4gICAgICAgIHVybCA9IHVybCArIFwiP1wiICsgdGhpcy5xdWVyeVBhcmFtcy50b1N0cmluZygpO1xuICAgICAgfVxuICAgICAgbWV0aG9kVXBwZXJDYXNlID0gdGhpcy5tZXRob2QudG9VcHBlckNhc2UoKTtcbiAgICAgIHNldEJvZHkgPSAhKG1ldGhvZFVwcGVyQ2FzZSA9PT0gXCJHRVRcIiB8fCBtZXRob2RVcHBlckNhc2UgPT09IFwiSEVBRFwiKTtcbiAgICAgIHJldHVybiAob3B0Py5mZXRjaCB8fCBmZXRjaCkodXJsLCB7XG4gICAgICAgIGJvZHk6IHNldEJvZHkgPyB0aGlzLnJCb2R5IDogdm9pZCAwLFxuICAgICAgICBtZXRob2Q6IG1ldGhvZFVwcGVyQ2FzZSxcbiAgICAgICAgaGVhZGVyc1xuICAgICAgfSk7XG4gICAgfTtcbiAgICB0aGlzLnVybCA9IHVybDtcbiAgICB0aGlzLm1ldGhvZCA9IG1ldGhvZDtcbiAgfVxufTtcbnZhciBoYyA9IChiYXNlVXJsLCBvcHRpb25zKSA9PiBjcmVhdGVQcm94eSgob3B0cykgPT4ge1xuICBjb25zdCBwYXJ0cyA9IFsuLi5vcHRzLnBhdGhdO1xuICBsZXQgbWV0aG9kID0gXCJcIjtcbiAgaWYgKC9eXFwkLy50ZXN0KHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdKSkge1xuICAgIGNvbnN0IGxhc3QgPSBwYXJ0cy5wb3AoKTtcbiAgICBpZiAobGFzdCkge1xuICAgICAgbWV0aG9kID0gbGFzdC5yZXBsYWNlKC9eXFwkLywgXCJcIik7XG4gICAgfVxuICB9XG4gIGNvbnN0IHBhdGggPSBwYXJ0cy5qb2luKFwiL1wiKTtcbiAgY29uc3QgdXJsID0gbWVyZ2VQYXRoKGJhc2VVcmwsIHBhdGgpO1xuICBpZiAobWV0aG9kID09PSBcInVybFwiKSB7XG4gICAgaWYgKG9wdHMuYXJnc1swXSAmJiBvcHRzLmFyZ3NbMF0ucGFyYW0pIHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHJlcGxhY2VVcmxQYXJhbSh1cmwsIG9wdHMuYXJnc1swXS5wYXJhbSkpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFVSTCh1cmwpO1xuICB9XG4gIGNvbnN0IHJlcSA9IG5ldyBDbGllbnRSZXF1ZXN0SW1wbCh1cmwsIG1ldGhvZCk7XG4gIGlmIChtZXRob2QpIHtcbiAgICBvcHRpb25zID8/IChvcHRpb25zID0ge30pO1xuICAgIGNvbnN0IGFyZ3MgPSBkZWVwTWVyZ2Uob3B0aW9ucywgeyAuLi5vcHRzLmFyZ3NbMV0gPz8ge30gfSk7XG4gICAgcmV0dXJuIHJlcS5mZXRjaChvcHRzLmFyZ3NbMF0sIGFyZ3MpO1xuICB9XG4gIHJldHVybiByZXE7XG59LCBbXSk7XG5leHBvcnQge1xuICBoY1xufTtcbiIsImltcG9ydCB7IGhjIH0gZnJvbSBcImhvbm8vY2xpZW50XCI7XG5pbXBvcnQgdHlwZSB7IEFwcFR5cGUgfSBmcm9tIFwiJHNlcnZlclwiO1xuXG5leHBvcnQgY29uc3QgY2xpZW50ID0gKGFyZ3M/OiB7XG5cdGJhc2VVcmw/OiBzdHJpbmc7XG5cdGZldGNoPzogdHlwZW9mIGZldGNoO1xufSkgPT4ge1xuXHRjb25zdCB7IGJhc2VVcmwsIGZldGNoIH0gPSBhcmdzO1xuXHRyZXR1cm4gaGM8QXBwVHlwZT4oYmFzZVVybCwge1xuXHRcdGZldGNoXG5cdH0pO1xufTtcblxuZXhwb3J0IHR5cGUgQXBpVHlwZSA9IEFwcFR5cGU7XG4iXSwibmFtZXMiOlsiX3NlcmlhbGl6ZSIsIm5hbWUiLCJ2YWx1ZSIsIm9wdCIsImNvb2tpZSIsInNlcmlhbGl6ZSIsIm1lcmdlUGF0aCIsImJhc2UiLCJwYXRoIiwicmVwbGFjZVVybFBhcmFtIiwidXJsU3RyaW5nIiwicGFyYW1zIiwiayIsInYiLCJyZWciLCJyZW1vdmVJbmRleFN0cmluZyIsInVybFN0aW5nIiwiaXNPYmplY3QiLCJpdGVtIiwiZGVlcE1lcmdlIiwidGFyZ2V0Iiwic291cmNlIiwibWVyZ2VkIiwia2V5IiwiY3JlYXRlUHJveHkiLCJjYWxsYmFjayIsIl9vYmoiLCJfMSIsIl8yIiwiYXJncyIsIkNsaWVudFJlcXVlc3RJbXBsIiwidXJsIiwibWV0aG9kIiwidjIiLCJmb3JtIiwibWV0aG9kVXBwZXJDYXNlIiwic2V0Qm9keSIsImhlYWRlclZhbHVlcyIsImNvb2tpZXMiLCJoZWFkZXJzIiwiaGMiLCJiYXNlVXJsIiwib3B0aW9ucyIsIm9wdHMiLCJwYXJ0cyIsImxhc3QiLCJyZXEiLCJjbGllbnQiLCJmZXRjaCJdLCJtYXBwaW5ncyI6IkFBa0VBLElBQUlBLElBQWEsQ0FBQ0MsR0FBTUMsR0FBT0MsSUFBTSxDQUFBLE1BQU87QUFDMUMsTUFBSUMsSUFBUyxHQUFHSCxDQUFJLElBQUlDLENBQUs7QUFDN0IsU0FBSUMsS0FBTyxPQUFPQSxFQUFJLFVBQVcsWUFBWUEsRUFBSSxVQUFVLE1BQ3pEQyxL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LEdBQzNCQSxJQUFNdEIsRUFBZ0JzQixHQUFLLEtBQUssVUFBVSxHQUN0QyxLQUFLLGdCQUNQQSxJQUFNQSxJQUFNLE1BQU0sS0FBSyxZQUFZLFNBQVEsSUFFN0NJLElBQWtCLEtBQUssT0FBTyxlQUM5QkMsSUFBVSxFQUFFRCxNQUFvQixTQUFTQSxNQUFvQixXQUNyRGhDLEtBQUEsZ0JBQUFBLEVBQUssVUFBUyxPQUFPNEIsR0FBSztBQUFBLFFBQ2hDLE1BQU1LLElBQVUsS0FBSyxRQUFRO0FBQUEsUUFDN0IsUUFBUUQ7QUFBQSxRQUNSLFNBQUFJO0FBQUEsTUFDUixDQUFPO0FBQUEsSUFDUCxHQUNJLEtBQUssTUFBTVIsR0FDWCxLQUFLLFNBQVNDO0FBQUEsRUFDZjtBQUNILEdBQ0lRLElBQUssQ0FBQ0MsR0FBU0MsTUFBWWxCLEVBQVksQ0FBQ21CLE1BQVM7QUFDbkQsUUFBTUMsSUFBUSxDQUFDLEdBQUdELEVBQUssSUFBSTtBQUMzQixNQUFJWCxJQUFTO0FBQ2IsTUFBSSxNQUFNLEtBQUtZLEVBQU1BLEVBQU0sU0FBUyxDQUFDLENBQUMsR0FBRztBQUN2QyxVQUFNQyxJQUFPRCxFQUFNO0FBQ25CLElBQUlDLE1BQ0ZiLElBQVNhLEVBQUssUUFBUSxPQUFPLEVBQUU7QUFBQSxFQUVsQztBQUNELFFBQU1yQyxJQUFPb0MsRUFBTSxLQUFLLEdBQUcsR0FDckJiLElBQU16QixFQUFVbUMsR0FBU2pDLENBQUk7QUFDbkMsTUFBSXdCLE1BQVc7QUFDYixXQUFJVyxFQUFLLEtBQUssQ0FBQyxLQUFLQSxFQUFLLEtBQUssQ0FBQyxFQUFFLFFBQ3hCLElBQUksSUFBSWxDLEVBQWdCc0IsR0FBS1ksRUFBSyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsSUFFbEQsSUFBSSxJQUFJWixDQUFHO0FBRXBCLFFBQU1lLElBQU0sSUFBSWhCLEVBQWtCQyxHQUFLQyxDQUFNO0FBQzdDLE1BQUlBLEdBQVE7QUFDVixJQUFBVSxNQUFZQSxJQUFVLENBQUE7QUFDdEIsVUFBTWIsSUFBT1YsRUFBVXVCLEdBQVMsRUFBRSxHQUFHQyxFQUFLLEtBQUssQ0FBQyxLQUFLLENBQUUsRUFBQSxDQUFFO0FBQ3pELFdBQU9HLEVBQUksTUFBTUgsRUFBSyxLQUFLLENBQUMsR0FBR2QsQ0FBSTtBQUFBLEVBQ3BDO0FBQ0QsU0FBT2lCO0FBQ1QsR0FBRyxFQUFFO0FDbEhRLE1BQUFDLElBQVMsQ0FBQ2xCLE1BR2pCO0FBQ0MsUUFBQSxFQUFFLFNBQUFZLEdBQVMsT0FBQU8sRUFBVSxJQUFBbkI7QUFDM0IsU0FBT1csRUFBWUMsR0FBUztBQUFBLElBQzNCLE9BQUFPO0FBQUEsRUFBQSxDQUNBO0FBQ0Y7IiwieF9nb29nbGVfaWdub3JlTGlzdCI6WzAsMSwyXX0=
|
|
160
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlcyI6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vaG9ub0A0LjIuNC9ub2RlX21vZHVsZXMvaG9uby9kaXN0L3V0aWxzL2Nvb2tpZS5qcyIsIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9ob25vQDQuMi40L25vZGVfbW9kdWxlcy9ob25vL2Rpc3QvY2xpZW50L3V0aWxzLmpzIiwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2hvbm9ANC4yLjQvbm9kZV9tb2R1bGVzL2hvbm8vZGlzdC9jbGllbnQvY2xpZW50LmpzIiwiLi4vc3JjL2xpYi9jbGllbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL3V0aWxzL2Nvb2tpZS50c1xuaW1wb3J0IHsgZGVjb2RlVVJJQ29tcG9uZW50XyB9IGZyb20gXCIuL3VybC5qc1wiO1xudmFyIGFsZ29yaXRobSA9IHsgbmFtZTogXCJITUFDXCIsIGhhc2g6IFwiU0hBLTI1NlwiIH07XG52YXIgZ2V0Q3J5cHRvS2V5ID0gYXN5bmMgKHNlY3JldCkgPT4ge1xuICBjb25zdCBzZWNyZXRCdWYgPSB0eXBlb2Ygc2VjcmV0ID09PSBcInN0cmluZ1wiID8gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHNlY3JldCkgOiBzZWNyZXQ7XG4gIHJldHVybiBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleShcInJhd1wiLCBzZWNyZXRCdWYsIGFsZ29yaXRobSwgZmFsc2UsIFtcInNpZ25cIiwgXCJ2ZXJpZnlcIl0pO1xufTtcbnZhciBtYWtlU2lnbmF0dXJlID0gYXN5bmMgKHZhbHVlLCBzZWNyZXQpID0+IHtcbiAgY29uc3Qga2V5ID0gYXdhaXQgZ2V0Q3J5cHRvS2V5KHNlY3JldCk7XG4gIGNvbnN0IHNpZ25hdHVyZSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuc2lnbihhbGdvcml0aG0ubmFtZSwga2V5LCBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodmFsdWUpKTtcbiAgcmV0dXJuIGJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZSguLi5uZXcgVWludDhBcnJheShzaWduYXR1cmUpKSk7XG59O1xudmFyIHZlcmlmeVNpZ25hdHVyZSA9IGFzeW5jIChiYXNlNjRTaWduYXR1cmUsIHZhbHVlLCBzZWNyZXQpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzaWduYXR1cmVCaW5TdHIgPSBhdG9iKGJhc2U2NFNpZ25hdHVyZSk7XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gbmV3IFVpbnQ4QXJyYXkoc2lnbmF0dXJlQmluU3RyLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHNpZ25hdHVyZUJpblN0ci5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgc2lnbmF0dXJlW2ldID0gc2lnbmF0dXJlQmluU3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCBjcnlwdG8uc3VidGxlLnZlcmlmeShhbGdvcml0aG0sIHNlY3JldCwgc2lnbmF0dXJlLCBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodmFsdWUpKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcbnZhciB2YWxpZENvb2tpZU5hbWVSZWdFeCA9IC9eW1xcdyEjJCUmJyouXmB8fistXSskLztcbnZhciB2YWxpZENvb2tpZVZhbHVlUmVnRXggPSAvXlsgISMtOjwtW1xcXS1+XSokLztcbnZhciBwYXJzZSA9IChjb29raWUsIG5hbWUpID0+IHtcbiAgY29uc3QgcGFpcnMgPSBjb29raWUudHJpbSgpLnNwbGl0KFwiO1wiKTtcbiAgcmV0dXJuIHBhaXJzLnJlZHVjZSgocGFyc2VkQ29va2llLCBwYWlyU3RyKSA9PiB7XG4gICAgcGFpclN0ciA9IHBhaXJTdHIudHJpbSgpO1xuICAgIGNvbnN0IHZhbHVlU3RhcnRQb3MgPSBwYWlyU3RyLmluZGV4T2YoXCI9XCIpO1xuICAgIGlmICh2YWx1ZVN0YXJ0UG9zID09PSAtMSkge1xuICAgICAgcmV0dXJuIHBhcnNlZENvb2tpZTtcbiAgICB9XG4gICAgY29uc3QgY29va2llTmFtZSA9IHBhaXJTdHIuc3Vic3RyaW5nKDAsIHZhbHVlU3RhcnRQb3MpLnRyaW0oKTtcbiAgICBpZiAobmFtZSAmJiBuYW1lICE9PSBjb29raWVOYW1lIHx8ICF2YWxpZENvb2tpZU5hbWVSZWdFeC50ZXN0KGNvb2tpZU5hbWUpKSB7XG4gICAgICByZXR1cm4gcGFyc2VkQ29va2llO1xuICAgIH1cbiAgICBsZXQgY29va2llVmFsdWUgPSBwYWlyU3RyLnN1YnN0cmluZyh2YWx1ZVN0YXJ0UG9zICsgMSkudHJpbSgpO1xuICAgIGlmIChjb29raWVWYWx1ZS5zdGFydHNXaXRoKCdcIicpICYmIGNvb2tpZVZhbHVlLmVuZHNXaXRoKCdcIicpKSB7XG4gICAgICBjb29raWVWYWx1ZSA9IGNvb2tpZVZhbHVlLnNsaWNlKDEsIC0xKTtcbiAgICB9XG4gICAgaWYgKHZhbGlkQ29va2llVmFsdWVSZWdFeC50ZXN0KGNvb2tpZVZhbHVlKSkge1xuICAgICAgcGFyc2VkQ29va2llW2Nvb2tpZU5hbWVdID0gZGVjb2RlVVJJQ29tcG9uZW50Xyhjb29raWVWYWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZWRDb29raWU7XG4gIH0sIHt9KTtcbn07XG52YXIgcGFyc2VTaWduZWQgPSBhc3luYyAoY29va2llLCBzZWNyZXQsIG5hbWUpID0+IHtcbiAgY29uc3QgcGFyc2VkQ29va2llID0ge307XG4gIGNvbnN0IHNlY3JldEtleSA9IGF3YWl0IGdldENyeXB0b0tleShzZWNyZXQpO1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwYXJzZShjb29raWUsIG5hbWUpKSkge1xuICAgIGNvbnN0IHNpZ25hdHVyZVN0YXJ0UG9zID0gdmFsdWUubGFzdEluZGV4T2YoXCIuXCIpO1xuICAgIGlmIChzaWduYXR1cmVTdGFydFBvcyA8IDEpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBzaWduZWRWYWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCBzaWduYXR1cmVTdGFydFBvcyk7XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gdmFsdWUuc3Vic3RyaW5nKHNpZ25hdHVyZVN0YXJ0UG9zICsgMSk7XG4gICAgaWYgKHNpZ25hdHVyZS5sZW5ndGggIT09IDQ0IHx8ICFzaWduYXR1cmUuZW5kc1dpdGgoXCI9XCIpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgaXNWZXJpZmllZCA9IGF3YWl0IHZlcmlmeVNpZ25hdHVyZShzaWduYXR1cmUsIHNpZ25lZFZhbHVlLCBzZWNyZXRLZXkpO1xuICAgIHBhcnNlZENvb2tpZVtrZXldID0gaXNWZXJpZmllZCA/IHNpZ25lZFZhbHVlIDogZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHBhcnNlZENvb2tpZTtcbn07XG52YXIgX3NlcmlhbGl6ZSA9IChuYW1lLCB2YWx1ZSwgb3B0ID0ge30pID0+IHtcbiAgbGV0IGNvb2tpZSA9IGAke25hbWV9PSR7dmFsdWV9YDtcbiAgaWYgKG5hbWUuc3RhcnRzV2l0aChcIl9fU2VjdXJlLVwiKSAmJiAhb3B0LnNlY3VyZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIl9fU2VjdXJlLSBDb29raWUgbXVzdCBoYXZlIFNlY3VyZSBhdHRyaWJ1dGVzXCIpO1xuICB9XG4gIGlmIChuYW1lLnN0YXJ0c1dpdGgoXCJfX0hvc3QtXCIpKSB7XG4gICAgaWYgKCFvcHQuc2VjdXJlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJfX0hvc3QtIENvb2tpZSBtdXN0IGhhdmUgU2VjdXJlIGF0dHJpYnV0ZXNcIik7XG4gICAgfVxuICAgIGlmIChvcHQucGF0aCAhPT0gXCIvXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignX19Ib3N0LSBDb29raWUgbXVzdCBoYXZlIFBhdGggYXR0cmlidXRlcyB3aXRoIFwiL1wiJyk7XG4gICAgfVxuICAgIGlmIChvcHQuZG9tYWluKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJfX0hvc3QtIENvb2tpZSBtdXN0IG5vdCBoYXZlIERvbWFpbiBhdHRyaWJ1dGVzXCIpO1xuICAgIH1cbiAgfVxuICBpZiAob3B0ICYmIHR5cGVvZiBvcHQubWF4QWdlID09PSBcIm51bWJlclwiICYmIG9wdC5tYXhBZ2UgPj0gMCkge1xuICAgIGlmIChvcHQubWF4QWdlID4gMzQ1NmU0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiQ29va2llcyBNYXgtQWdlIFNIT1VMRCBOT1QgYmUgZ3JlYXRlciB0aGFuIDQwMCBkYXlzICgzNDU2MDAwMCBzZWNvbmRzKSBpbiBkdXJhdGlvbi5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgY29va2llICs9IGA7IE1heC1BZ2U9JHtNYXRoLmZsb29yKG9wdC5tYXhBZ2UpfWA7XG4gIH1cbiAgaWYgKG9wdC5kb21haW4gJiYgb3B0LnByZWZpeCAhPT0gXCJob3N0XCIpIHtcbiAgICBjb29raWUgKz0gYDsgRG9tYWluPSR7b3B0LmRvbWFpbn1gO1xuICB9XG4gIGlmIChvcHQucGF0aCkge1xuICAgIGNvb2tpZSArPSBgOyBQYXRoPSR7b3B0LnBhdGh9YDtcbiAgfVxuICBpZiAob3B0LmV4cGlyZXMpIHtcbiAgICBpZiAob3B0LmV4cGlyZXMuZ2V0VGltZSgpIC0gRGF0ZS5ub3coKSA+IDM0NTZlNykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkNvb2tpZXMgRXhwaXJlcyBTSE9VTEQgTk9UIGJlIGdyZWF0ZXIgdGhhbiA0MDAgZGF5cyAoMzQ1NjAwMDAgc2Vjb25kcykgaW4gdGhlIGZ1dHVyZS5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgY29va2llICs9IGA7IEV4cGlyZXM9JHtvcHQuZXhwaXJlcy50b1VUQ1N0cmluZygpfWA7XG4gIH1cbiAgaWYgKG9wdC5odHRwT25seSkge1xuICAgIGNvb2tpZSArPSBcIjsgSHR0cE9ubHlcIjtcbiAgfVxuICBpZiAob3B0LnNlY3VyZSkge1xuICAgIGNvb2tpZSArPSBcIjsgU2VjdXJlXCI7XG4gIH1cbiAgaWYgKG9wdC5zYW1lU2l0ZSkge1xuICAgIGNvb2tpZSArPSBgOyBTYW1lU2l0ZT0ke29wdC5zYW1lU2l0ZX1gO1xuICB9XG4gIGlmIChvcHQucGFydGl0aW9uZWQpIHtcbiAgICBpZiAoIW9wdC5zZWN1cmUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhcnRpdGlvbmVkIENvb2tpZSBtdXN0IGhhdmUgU2VjdXJlIGF0dHJpYnV0ZXNcIik7XG4gICAgfVxuICAgIGNvb2tpZSArPSBcIjsgUGFydGl0aW9uZWRcIjtcbiAgfVxuICByZXR1cm4gY29va2llO1xufTtcbnZhciBzZXJpYWxpemUgPSAobmFtZSwgdmFsdWUsIG9wdCkgPT4ge1xuICB2YWx1ZSA9IGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSk7XG4gIHJldHVybiBfc2VyaWFsaXplKG5hbWUsIHZhbHVlLCBvcHQpO1xufTtcbnZhciBzZXJpYWxpemVTaWduZWQgPSBhc3luYyAobmFtZSwgdmFsdWUsIHNlY3JldCwgb3B0ID0ge30pID0+IHtcbiAgY29uc3Qgc2lnbmF0dXJlID0gYXdhaXQgbWFrZVNpZ25hdHVyZSh2YWx1ZSwgc2VjcmV0KTtcbiAgdmFsdWUgPSBgJHt2YWx1ZX0uJHtzaWduYXR1cmV9YDtcbiAgdmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpO1xuICByZXR1cm4gX3NlcmlhbGl6ZShuYW1lLCB2YWx1ZSwgb3B0KTtcbn07XG5leHBvcnQge1xuICBwYXJzZSxcbiAgcGFyc2VTaWduZWQsXG4gIHNlcmlhbGl6ZSxcbiAgc2VyaWFsaXplU2lnbmVkXG59O1xuIiwiLy8gc3JjL2NsaWVudC91dGlscy50c1xudmFyIG1lcmdlUGF0aCA9IChiYXNlLCBwYXRoKSA9PiB7XG4gIGJhc2UgPSBiYXNlLnJlcGxhY2UoL1xcLyskLywgXCJcIik7XG4gIGJhc2UgPSBiYXNlICsgXCIvXCI7XG4gIHBhdGggPSBwYXRoLnJlcGxhY2UoL15cXC8rLywgXCJcIik7XG4gIHJldHVybiBiYXNlICsgcGF0aDtcbn07XG52YXIgcmVwbGFjZVVybFBhcmFtID0gKHVybFN0cmluZywgcGFyYW1zKSA9PiB7XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHBhcmFtcykpIHtcbiAgICBjb25zdCByZWcgPSBuZXcgUmVnRXhwKFwiLzpcIiArIGsgKyBcIig/OntbXi9dK30pP1wiKTtcbiAgICB1cmxTdHJpbmcgPSB1cmxTdHJpbmcucmVwbGFjZShyZWcsIGAvJHt2fWApO1xuICB9XG4gIHJldHVybiB1cmxTdHJpbmc7XG59O1xudmFyIHJlcGxhY2VVcmxQcm90b2NvbCA9ICh1cmxTdHJpbmcsIHByb3RvY29sKSA9PiB7XG4gIHN3aXRjaCAocHJvdG9jb2wpIHtcbiAgICBjYXNlIFwid3NcIjpcbiAgICAgIHJldHVybiB1cmxTdHJpbmcucmVwbGFjZSgvXmh0dHAvLCBcIndzXCIpO1xuICAgIGNhc2UgXCJodHRwXCI6XG4gICAgICByZXR1cm4gdXJsU3RyaW5nLnJlcGxhY2UoL153cy8sIFwiaHR0cFwiKTtcbiAgfVxufTtcbnZhciByZW1vdmVJbmRleFN0cmluZyA9ICh1cmxTdGluZykgPT4ge1xuICByZXR1cm4gdXJsU3RpbmcucmVwbGFjZSgvXFwvaW5kZXgkLywgXCJcIik7XG59O1xuZnVuY3Rpb24gaXNPYmplY3QoaXRlbSkge1xuICByZXR1cm4gdHlwZW9mIGl0ZW0gPT09IFwib2JqZWN0XCIgJiYgaXRlbSAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShpdGVtKTtcbn1cbmZ1bmN0aW9uIGRlZXBNZXJnZSh0YXJnZXQsIHNvdXJjZSkge1xuICBpZiAoIWlzT2JqZWN0KHRhcmdldCkgJiYgIWlzT2JqZWN0KHNvdXJjZSkpIHtcbiAgICByZXR1cm4gc291cmNlO1xuICB9XG4gIGNvbnN0IG1lcmdlZCA9IHsgLi4udGFyZ2V0IH07XG4gIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgIGNvbnN0IHZhbHVlID0gc291cmNlW2tleV07XG4gICAgaWYgKGlzT2JqZWN0KG1lcmdlZFtrZXldKSAmJiBpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgIG1lcmdlZFtrZXldID0gZGVlcE1lcmdlKG1lcmdlZFtrZXldLCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lcmdlZFtrZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBtZXJnZWQ7XG59XG5leHBvcnQge1xuICBkZWVwTWVyZ2UsXG4gIG1lcmdlUGF0aCxcbiAgcmVtb3ZlSW5kZXhTdHJpbmcsXG4gIHJlcGxhY2VVcmxQYXJhbSxcbiAgcmVwbGFjZVVybFByb3RvY29sXG59O1xuIiwiLy8gc3JjL2NsaWVudC9jbGllbnQudHNcbmltcG9ydCB7IHNlcmlhbGl6ZSB9IGZyb20gXCIuLi91dGlscy9jb29raWUuanNcIjtcbmltcG9ydCB7XG4gIGRlZXBNZXJnZSxcbiAgbWVyZ2VQYXRoLFxuICByZW1vdmVJbmRleFN0cmluZyxcbiAgcmVwbGFjZVVybFBhcmFtLFxuICByZXBsYWNlVXJsUHJvdG9jb2xcbn0gZnJvbSBcIi4vdXRpbHMuanNcIjtcbnZhciBjcmVhdGVQcm94eSA9IChjYWxsYmFjaywgcGF0aCkgPT4ge1xuICBjb25zdCBwcm94eSA9IG5ldyBQcm94eSgoKSA9PiB7XG4gIH0sIHtcbiAgICBnZXQoX29iaiwga2V5KSB7XG4gICAgICBpZiAodHlwZW9mIGtleSAhPT0gXCJzdHJpbmdcIiB8fCBrZXkgPT09IFwidGhlblwiKSB7XG4gICAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgICB9XG4gICAgICByZXR1cm4gY3JlYXRlUHJveHkoY2FsbGJhY2ssIFsuLi5wYXRoLCBrZXldKTtcbiAgICB9LFxuICAgIGFwcGx5KF8xLCBfMiwgYXJncykge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKHtcbiAgICAgICAgcGF0aCxcbiAgICAgICAgYXJnc1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHByb3h5O1xufTtcbnZhciBDbGllbnRSZXF1ZXN0SW1wbCA9IGNsYXNzIHtcbiAgdXJsO1xuICBtZXRob2Q7XG4gIHF1ZXJ5UGFyYW1zID0gdm9pZCAwO1xuICBwYXRoUGFyYW1zID0ge307XG4gIHJCb2R5O1xuICBjVHlwZSA9IHZvaWQgMDtcbiAgY29uc3RydWN0b3IodXJsLCBtZXRob2QpIHtcbiAgICB0aGlzLnVybCA9IHVybDtcbiAgICB0aGlzLm1ldGhvZCA9IG1ldGhvZDtcbiAgfVxuICBmZXRjaCA9IGFzeW5jIChhcmdzLCBvcHQpID0+IHtcbiAgICBpZiAoYXJncykge1xuICAgICAgaWYgKGFyZ3MucXVlcnkpIHtcbiAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoYXJncy5xdWVyeSkpIHtcbiAgICAgICAgICBpZiAodiA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5xdWVyeVBhcmFtcyB8fD0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHYpKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHYyIG9mIHYpIHtcbiAgICAgICAgICAgICAgdGhpcy5xdWVyeVBhcmFtcy5hcHBlbmQoaywgdjIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnNldChrLCB2KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChhcmdzLmZvcm0pIHtcbiAgICAgICAgY29uc3QgZm9ybSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhhcmdzLmZvcm0pKSB7XG4gICAgICAgICAgZm9ybS5hcHBlbmQoaywgdik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yQm9keSA9IGZvcm07XG4gICAgICB9XG4gICAgICBpZiAoYXJncy5qc29uKSB7XG4gICAgICAgIHRoaXMuckJvZHkgPSBKU09OLnN0cmluZ2lmeShhcmdzLmpzb24pO1xuICAgICAgICB0aGlzLmNUeXBlID0gXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gICAgICB9XG4gICAgICBpZiAoYXJncy5wYXJhbSkge1xuICAgICAgICB0aGlzLnBhdGhQYXJhbXMgPSBhcmdzLnBhcmFtO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgbWV0aG9kVXBwZXJDYXNlID0gdGhpcy5tZXRob2QudG9VcHBlckNhc2UoKTtcbiAgICBjb25zdCBoZWFkZXJWYWx1ZXMgPSB7XG4gICAgICAuLi5hcmdzPy5oZWFkZXIgPz8ge30sXG4gICAgICAuLi50eXBlb2Ygb3B0Py5oZWFkZXJzID09PSBcImZ1bmN0aW9uXCIgPyBhd2FpdCBvcHQuaGVhZGVycygpIDogb3B0Py5oZWFkZXJzID8gb3B0LmhlYWRlcnMgOiB7fVxuICAgIH07XG4gICAgaWYgKGFyZ3M/LmNvb2tpZSkge1xuICAgICAgY29uc3QgY29va2llcyA9IFtdO1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoYXJncy5jb29raWUpKSB7XG4gICAgICAgIGNvb2tpZXMucHVzaChzZXJpYWxpemUoa2V5LCB2YWx1ZSwgeyBwYXRoOiBcIi9cIiB9KSk7XG4gICAgICB9XG4gICAgICBoZWFkZXJWYWx1ZXNbXCJDb29raWVcIl0gPSBjb29raWVzLmpvaW4oXCIsXCIpO1xuICAgIH1cbiAgICBpZiAodGhpcy5jVHlwZSkge1xuICAgICAgaGVhZGVyVmFsdWVzW1wiQ29udGVudC1UeXBlXCJdID0gdGhpcy5jVHlwZTtcbiAgICB9XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKGhlYWRlclZhbHVlcyA/PyB2b2lkIDApO1xuICAgIGxldCB1cmwgPSB0aGlzLnVybDtcbiAgICB1cmwgPSByZW1vdmVJbmRleFN0cmluZyh1cmwpO1xuICAgIHVybCA9IHJlcGxhY2VVcmxQYXJhbSh1cmwsIHRoaXMucGF0aFBhcmFtcyk7XG4gICAgaWYgKHRoaXMucXVlcnlQYXJhbXMpIHtcbiAgICAgIHVybCA9IHVybCArIFwiP1wiICsgdGhpcy5xdWVyeVBhcmFtcy50b1N0cmluZygpO1xuICAgIH1cbiAgICBtZXRob2RVcHBlckNhc2UgPSB0aGlzLm1ldGhvZC50b1VwcGVyQ2FzZSgpO1xuICAgIGNvbnN0IHNldEJvZHkgPSAhKG1ldGhvZFVwcGVyQ2FzZSA9PT0gXCJHRVRcIiB8fCBtZXRob2RVcHBlckNhc2UgPT09IFwiSEVBRFwiKTtcbiAgICByZXR1cm4gKG9wdD8uZmV0Y2ggfHwgZmV0Y2gpKHVybCwge1xuICAgICAgYm9keTogc2V0Qm9keSA/IHRoaXMuckJvZHkgOiB2b2lkIDAsXG4gICAgICBtZXRob2Q6IG1ldGhvZFVwcGVyQ2FzZSxcbiAgICAgIGhlYWRlcnNcbiAgICB9KTtcbiAgfTtcbn07XG52YXIgaGMgPSAoYmFzZVVybCwgb3B0aW9ucykgPT4gY3JlYXRlUHJveHkoKG9wdHMpID0+IHtcbiAgY29uc3QgcGFydHMgPSBbLi4ub3B0cy5wYXRoXTtcbiAgbGV0IG1ldGhvZCA9IFwiXCI7XG4gIGlmICgvXlxcJC8udGVzdChwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXSkpIHtcbiAgICBjb25zdCBsYXN0ID0gcGFydHMucG9wKCk7XG4gICAgaWYgKGxhc3QpIHtcbiAgICAgIG1ldGhvZCA9IGxhc3QucmVwbGFjZSgvXlxcJC8sIFwiXCIpO1xuICAgIH1cbiAgfVxuICBjb25zdCBwYXRoID0gcGFydHMuam9pbihcIi9cIik7XG4gIGNvbnN0IHVybCA9IG1lcmdlUGF0aChiYXNlVXJsLCBwYXRoKTtcbiAgaWYgKG1ldGhvZCA9PT0gXCJ1cmxcIikge1xuICAgIGlmIChvcHRzLmFyZ3NbMF0gJiYgb3B0cy5hcmdzWzBdLnBhcmFtKSB7XG4gICAgICByZXR1cm4gbmV3IFVSTChyZXBsYWNlVXJsUGFyYW0odXJsLCBvcHRzLmFyZ3NbMF0ucGFyYW0pKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBVUkwodXJsKTtcbiAgfVxuICBpZiAobWV0aG9kID09PSBcIndzXCIpIHtcbiAgICBjb25zdCB0YXJnZXRVcmwgPSByZXBsYWNlVXJsUHJvdG9jb2woXG4gICAgICBvcHRzLmFyZ3NbMF0gJiYgb3B0cy5hcmdzWzBdLnBhcmFtID8gcmVwbGFjZVVybFBhcmFtKHVybCwgb3B0cy5hcmdzWzBdLnBhcmFtKSA6IHVybCxcbiAgICAgIFwid3NcIlxuICAgICk7XG4gICAgcmV0dXJuIG5ldyBXZWJTb2NrZXQodGFyZ2V0VXJsKTtcbiAgfVxuICBjb25zdCByZXEgPSBuZXcgQ2xpZW50UmVxdWVzdEltcGwodXJsLCBtZXRob2QpO1xuICBpZiAobWV0aG9kKSB7XG4gICAgb3B0aW9ucyA/Pz0ge307XG4gICAgY29uc3QgYXJncyA9IGRlZXBNZXJnZShvcHRpb25zLCB7IC4uLm9wdHMuYXJnc1sxXSA/PyB7fSB9KTtcbiAgICByZXR1cm4gcmVxLmZldGNoKG9wdHMuYXJnc1swXSwgYXJncyk7XG4gIH1cbiAgcmV0dXJuIHJlcTtcbn0sIFtdKTtcbmV4cG9ydCB7XG4gIGhjXG59O1xuIiwiaW1wb3J0IHsgaGMgfSBmcm9tIFwiaG9uby9jbGllbnRcIjtcbmltcG9ydCB0eXBlIHsgQXBwVHlwZSB9IGZyb20gXCIkc2VydmVyXCI7XG5cbmV4cG9ydCBjb25zdCBjbGllbnQgPSAoYXJncz86IHsgYmFzZVVybD86IHN0cmluZzsgZmV0Y2g/OiAodHlwZW9mIGdsb2JhbClbXCJmZXRjaFwiXSB9KSA9PiB7XG5cdGNvbnN0IHsgYmFzZVVybCA9IFwiaHR0cHM6Ly9hcGkubGlua3UubGFcIiwgZmV0Y2ggPSBnbG9iYWwuZmV0Y2ggfSA9IGFyZ3M7XG5cdHJldHVybiBoYzxBcHBUeXBlPihiYXNlVXJsLCB7XG5cdFx0ZmV0Y2gsXG5cdH0pO1xufTtcblxuZXhwb3J0IHR5cGUgQXBpVHlwZSA9IEFwcFR5cGU7XG4iXSwibmFtZXMiOlsiX3NlcmlhbGl6ZSIsIm5hbWUiLCJ2YWx1ZSIsIm9wdCIsImNvb2tpZSIsInNlcmlhbGl6ZSIsIm1lcmdlUGF0aCIsImJhc2UiLCJwYXRoIiwicmVwbGFjZVVybFBhcmFtIiwidXJsU3RyaW5nIiwicGFyYW1zIiwiayIsInYiLCJyZWciLCJyZXBsYWNlVXJsUHJvdG9jb2wiLCJwcm90b2NvbCIsInJlbW92ZUluZGV4U3RyaW5nIiwidXJsU3RpbmciLCJpc09iamVjdCIsIml0ZW0iLCJkZWVwTWVyZ2UiLCJ0YXJnZXQiLCJzb3VyY2UiLCJtZXJnZWQiLCJrZXkiLCJjcmVhdGVQcm94eSIsImNhbGxiYWNrIiwiX29iaiIsIl8xIiwiXzIiLCJhcmdzIiwiQ2xpZW50UmVxdWVzdEltcGwiLCJ1cmwiLCJtZXRob2QiLCJfX3B1YmxpY0ZpZWxkIiwidjIiLCJmb3JtIiwibWV0aG9kVXBwZXJDYXNlIiwiaGVhZGVyVmFsdWVzIiwiY29va2llcyIsImhlYWRlcnMiLCJzZXRCb2R5IiwiaGMiLCJiYXNlVXJsIiwib3B0aW9ucyIsIm9wdHMiLCJwYXJ0cyIsImxhc3QiLCJ0YXJnZXRVcmwiLCJyZXEiLCJjbGllbnQiLCJmZXRjaCJdLCJtYXBwaW5ncyI6Ijs7O0FBa0VBLElBQUlBLElBQWEsQ0FBQ0MsR0FBTUMsR0FBT0MsSUFBTSxDQUFBLE1BQU87QUFDMUMsTUFBSUMsSUFBUyxHQUFHSCxDQUFJLElBQUlDLENBQUs7QUFDN0IsTUFBSUQsRUFBSyxXQUFXLFdBQVcsS0FBSyxDQUFDRSxFQUFJO0FBQ3ZDLFVBQU0sSUFBSSxNQUFNLDhDQUE4QztBQUVoRSxNQUFJRixFQUFLLFdBQVcsU0FBUyxHQUFHO0FBQzlCLFFBQUksQ0FBQ0UsRUFBSTtBQUNQLFlBQU0sSUFBSSxNQUFNLDRDQUE0QztBQUU5RCxRQUFJQSxFQUFJLFNBQVM7QUFDZixZQUFNLElBQUksTUFBTSxtREFBbUQ7QUFFckUsUUFBSUEsRUFBSTtBQUNOLFlBQU0sSUFBSSxNQUFNLGdEQUFnRDtBQUFBLEVBRW5FO0FBQ0QsTUFBSUEsS0FBTyxPQUFPQSxFQUFJLFVBQVcsWUFBWUEsRUFBSSxVQUFVLEdBQUc7QUFDNUQsUUFBSUEsRUFBSSxTQUFTO0FBQ2YsWUFBTSxJQUFJO0FBQUEsUUFDUjtBQUFBLE1BQ1I7QUFFSSxJQUFBQyxLQUFVLGFBQWEsS0FBSyxNQUFNRCxFQUFJLE1B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
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { z as e, B as
|
|
1
|
+
import { z as e, B as o, C as n, U as t, W as r } from "./utils-CnA4OULt.js";
|
|
2
2
|
const s = e.string().regex(/^20\d{2}-(0[1-9]|1[0-2])$/g), a = e.object({
|
|
3
3
|
id: e.string().min(1).describe(
|
|
4
4
|
'A unique identifier for the word. Usually the word but may have an integer added in case of a word with multiple definitions (like "we")'
|
|
5
5
|
),
|
|
6
6
|
author_verbatim: e.string().describe("The author's original definition, taken verbatim in their words"),
|
|
7
7
|
author_verbatim_source: e.string().describe("Where the author's original definition is located (usually Discord)"),
|
|
8
|
-
book:
|
|
9
|
-
coined_era:
|
|
8
|
+
book: o.describe("Which official Toki Pona book was this word featured in, if any."),
|
|
9
|
+
coined_era: n.or(e.literal("")).describe(
|
|
10
10
|
"When this word was coined (relative to the publication dates of the official Toki Pona books, if known)"
|
|
11
11
|
),
|
|
12
12
|
coined_year: e.string().describe("The year when this word was coined (if known)"),
|
|
@@ -99,8 +99,8 @@ const s = e.string().regex(/^20\d{2}-(0[1-9]|1[0-2])$/g), a = e.object({
|
|
|
99
99
|
)
|
|
100
100
|
}).describe("Scripts for representing a sign as characters."),
|
|
101
101
|
video: e.object({
|
|
102
|
-
gif: e.string().describe("A link to a gif of the sign being signed."),
|
|
103
|
-
mp4: e.string().describe("a link to an mp4 of the sign being signed.")
|
|
102
|
+
gif: e.string().optional().describe("A link to a gif of the sign being signed."),
|
|
103
|
+
mp4: e.string().optional().describe("a link to an mp4 of the sign being signed.")
|
|
104
104
|
}).describe("Videos of the sign being performed, by format.")
|
|
105
105
|
}).describe("Unlocalized info on a Luka Pona sign"), b = e.object({
|
|
106
106
|
id: e.string().describe("A globally unique name for the sign which is also a gloss."),
|
|
@@ -220,4 +220,4 @@ export {
|
|
|
220
220
|
a as Word,
|
|
221
221
|
m as Words
|
|
222
222
|
};
|
|
223
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9saWIvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7IEJvb2ssIENvaW5lZEVyYSwgVXNhZ2VDYXRlZ29yeSwgV3JpdGluZ1N5c3RlbSB9IGZyb20gXCIkbGliL3V0aWxzXCI7XG5cbmV4cG9ydCB0eXBlICogZnJvbSBcIiRsaWIvdHlwZXNcIjtcblxuY29uc3QgWWVhck1vbnRoID0gei5zdHJpbmcoKS5yZWdleCgvXjIwXFxkezJ9LSgwWzEtOV18MVswLTJdKSQvZyk7XG4vLyBXb3JkIGRhdGFcbmV4cG9ydCBjb25zdCBXb3JkID0gelxuXHQub2JqZWN0KHtcblx0XHRpZDogelxuXHRcdFx0LnN0cmluZygpXG5cdFx0XHQubWluKDEpXG5cdFx0XHQuZGVzY3JpYmUoXG5cdFx0XHRcdGBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgd29yZC4gVXN1YWxseSB0aGUgd29yZCBidXQgbWF5IGhhdmUgYW4gaW50ZWdlciBhZGRlZCBpbiBjYXNlIG9mIGEgd29yZCB3aXRoIG11bHRpcGxlIGRlZmluaXRpb25zIChsaWtlIFwid2VcIilgLFxuXHRcdFx0KSxcblx0XHRhdXRob3JfdmVyYmF0aW06IHpcblx0XHRcdC5zdHJpbmcoKVxuXHRcdFx0LmRlc2NyaWJlKFwiVGhlIGF1dGhvcidzIG9yaWdpbmFsIGRlZmluaXRpb24sIHRha2VuIHZlcmJhdGltIGluIHRoZWlyIHdvcmRzXCIpLFxuXHRcdGF1dGhvcl92ZXJiYXRpbV9zb3VyY2U6IHpcblx0XHRcdC5zdHJpbmcoKVxuXHRcdFx0LmRlc2NyaWJlKFwiV2hlcmUgdGhlIGF1dGhvcidzIG9yaWdpbmFsIGRlZmluaXRpb24gaXMgbG9jYXRlZCAodXN1YWxseSBEaXNjb3JkKVwiKSxcblx0XHRib29rOiBCb29rLmRlc2NyaWJlKFwiV2hpY2ggb2ZmaWNpYWwgVG9raSBQb25hIGJvb2sgd2FzIHRoaXMgd29yZCBmZWF0dXJlZCBpbiwgaWYgYW55LlwiKSxcblx0XHRjb2luZWRfZXJhOiBDb2luZWRFcmEub3Ioei5saXRlcmFsKFwiXCIpKS5kZXNjcmliZShcblx0XHRcdFwiV2hlbiB0aGlzIHdvcmQgd2FzIGNvaW5lZCAocmVsYXRpdmUgdG8gdGhlIHB1YmxpY2F0aW9uIGRhdGVzIG9mIHRoZSBvZmZpY2lhbCBUb2tpIFBvbmEgYm9va3MsIGlmIGtub3duKVwiLFxuXHRcdCksXG5cdFx0Y29pbmVkX3llYXI6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJUaGUgeWVhciB3aGVuIHRoaXMgd29yZCB3YXMgY29pbmVkIChpZiBrbm93bilcIiksXG5cdFx0Y3JlYXRvcjogei5hcnJheSh6LnN0cmluZygpKS5kZXNjcmliZShcIlRoZSBwZXJzb24gd2hvIGNyZWF0ZWQgdGhpcyB3b3JkIChpZiBrbm93bilcIiksXG5cdFx0a3VfZGF0YTogelxuXHRcdFx0LnJlY29yZChcblx0XHRcdFx0ei5zdHJpbmcoKS5taW4oMSkuZGVzY3JpYmUoXCJBIHRyYW5zbGF0aW9uIG9mIHRoZSB3b3JkIGludG8gRW5nbGlzaCBwcm9wb3NlZCBpbiBrdVwiKSxcblx0XHRcdFx0elxuXHRcdFx0XHRcdC5udW1iZXIoKVxuXHRcdFx0XHRcdC5taW4oMClcblx0XHRcdFx0XHQubWF4KDEwMClcblx0XHRcdFx0XHQuZGVzY3JpYmUoXG5cdFx0XHRcdFx0XHRcIlRoZSBwZXJjZW50YWdlIG9mIGt1IHN1cnZleSByZXNwb25kZW50cyB3aG8gcmVwb3J0IHRoaXMgdHJhbnNsYXRpb24gYXMgYWNjdXJhdGUgdG8gdGhlaXIgdXNhZ2UuXCIsXG5cdFx0XHRcdFx0KSxcblx0XHRcdClcblx0XHRcdC5vcHRpb25hbCgpXG5cdFx0XHQuZGVzY3JpYmUoXG5cdFx0XHRcdFwiVGhlIHVzYWdlIGRhdGEgb2YgdGhlIHdvcmQgYXMgZGVzY3JpYmVkIGluIGt1ICh0aGUgb2ZmaWNpYWwgVG9raSBQb25hIGRpY3Rpb25hcnkpXCIsXG5cdFx0XHQpLFxuXHRcdHNlZV9hbHNvOiB6LmFycmF5KHouc3RyaW5nKCkpLmRlc2NyaWJlKFwiQSBsaXN0IG9mIHJlbGF0ZWQgd29yZHNcIiksXG5cdFx0cmVzb3VyY2VzOiB6XG5cdFx0XHQub2JqZWN0KHtcblx0XHRcdFx0c29uYV9wb25hOiB6XG5cdFx0XHRcdFx0LnN0cmluZygpXG5cdFx0XHRcdFx0LnVybCgpXG5cdFx0XHRcdFx0Lm9wdGlvbmFsKClcblx0XHRcdFx0XHQuZGVzY3JpYmUoXG5cdFx0XHRcdFx0XHRcIkEgbGluayB0byB0aGUgd29yZCdzIHBhZ2Ugb24gc29uYS5wb25hLmxhLCBhIFRva2kgUG9uYSB3aWtpLiBNYXkgcmVkaXJlY3QgZm9yIHdvcmRzIHdpdGggcmVmZXJlbmNlcyBidXQgbm8gZGVkaWNhdGVkIHBhZ2UuXCIsXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0bGlwYW1hbmthX3NlbWFudGljOiB6XG5cdFx0XHRcdFx0LnN0cmluZygpXG5cdFx0XHRcdFx0LnVybCgpXG5cdFx0XHRcdFx0Lm9wdGlvbmFsKClcblx0XHRcdFx0XHQuZGVzY3JpYmUoXCJBIGxpbmsgdG8gbGlwYW1hbmthJ3MgZGVzY3JpcHRpb24gb2YgdGhlIHdvcmQncyBzZW1hbnRpYyBzcGFjZS5cIiksXG5cdFx0XHR9KVxuXHRcdFx0Lm9wdGlvbmFsKClcblx0XHRcdC5kZXNjcmliZShcIk5vbi1MaW5rdSByZXNvdXJjZXMgcmVsYXRlZCB0byB0aGUgc3BlY2lmaWMgd29yZCwgc3VjaCBhcyB3aWtpIGxpbmtzLlwiKSxcblx0XHRyZXByZXNlbnRhdGlvbnM6IHpcblx0XHRcdC5vYmplY3Qoe1xuXHRcdFx0XHRzaXRlbGVuX2Vtb3NpOiB6XG5cdFx0XHRcdFx0LnN0cmluZygpXG5cdFx0XHRcdFx0LmVtb2ppKClcblx0XHRcdFx0XHQub3B0aW9uYWwoKVxuXHRcdFx0XHRcdC5kZXNjcmliZShcblx0XHRcdFx0XHRcdFwiVGhlIHNpdGVsZW4gZW1vc2kgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB3b3JkLCBhIHNjcmlwdCBmb3Igd3JpdGluZyBUb2tpIFBvbmEgdXNpbmcgZW1vamlcIixcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRzaXRlbGVuX2plbG86IHpcblx0XHRcdFx0XHQuYXJyYXkoei5zdHJpbmcoKS5lbW9qaSgpKVxuXHRcdFx0XHRcdC5taW4oMSlcblx0XHRcdFx0XHQub3B0aW9uYWwoKVxuXHRcdFx0XHRcdC5kZXNjcmliZShcIk9uZSBvciBtb3JlIGV4YW1wbGUgZW1vamlzIGZvciBob3cgdGhlIHdvcmQgY2FuIGJlIHdyaXR0ZW4gaW4gc2l0ZWxlbiBqZWxvXCIpLFxuXHRcdFx0XHRsaWdhdHVyZXM6IHpcblx0XHRcdFx0XHQuYXJyYXkoei5zdHJpbmcoKS5taW4oMSkpXG5cdFx0XHRcdFx0Lm9wdGlvbmFsKClcblx0XHRcdFx0XHQuZGVzY3JpYmUoXG5cdFx0XHRcdFx0XHRcIkEgbGlzdCBvZiBzaXRlbGVuIExhc2luYSByZXByZXNlbnRhdGlvbnMgb2YgdGhlIHdvcmQsIHVzZWQgYnkgbGlnYXR1cmUgZm9udHMgdG8gdmlzdWFsbHkgY29udmVydCBsYXRpbiBjaGFyYWN0ZXJzIGludG8gc2l0ZWxlbiBwb25hXCIsXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0c2l0ZWxlbl9zaXRlbGVuOiB6XG5cdFx0XHRcdFx0LnN0cmluZygpXG5cdFx0XHRcdFx0LnVybCgpXG5cdFx0XHRcdFx0Lm9wdGlvbmFsKClcblx0XHRcdFx0XHQuZGVzY3JpYmUoXCJBIFVSTCBwb2ludGluZyB0byBhbiBpbWFnZSBvZiB0aGlzIHdvcmQncyBzaXRlbGVuIHNpdGVsZW4gaGllcm9nbHlwaGljIGJsb2NrXCIpLFxuXHRcdFx0XHR1Y3N1cjogelxuXHRcdFx0XHRcdC5zdHJpbmcoKVxuXHRcdFx0XHRcdC5yZWdleCgvXlVcXCtbXFxkYS1mQS1GXXs0LDZ9JC9nKVxuXHRcdFx0XHRcdC5vcHRpb25hbCgpXG5cdFx0XHRcdFx0LmRlc2NyaWJlKFxuXHRcdFx0XHRcdFx0XCJUaGUgd29yZCdzIFVDU1VSIGNvZGVwb2ludCwgYXMgZGVmaW5lZCBpbiBodHRwczovL3d3dy5rcmVhdGl2ZWtvcnAuY29tL3Vjc3VyL2NoYXJ0cy9zaXRlbGVuLmh0bWxcIixcblx0XHRcdFx0XHQpLFxuXHRcdFx0fSlcblx0XHRcdC5vcHRpb25hbCgpXG5cdFx0XHQuZGVzY3JpYmUoXCJXYXlzIG9mIHJlcHJlc2VudGluZyB0aGlzIHdvcmQgaW4gdGhlIHJlYWwgd29ybGQsIHZpYSB0ZXh0L2NvbXB1dGVyc1wiKSxcblx0XHRzb3VyY2VfbGFuZ3VhZ2U6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJUaGUgbGFuZ3VhZ2UgdGhpcyB3b3JkIG9yaWdpbmF0ZWQgZnJvbVwiKSxcblx0XHR1c2FnZV9jYXRlZ29yeTogVXNhZ2VDYXRlZ29yeS5kZXNjcmliZShcblx0XHRcdFwiVGhlIHdvcmQncyB1c2FnZSBjYXRlZ29yeSwgYWNjb3JkaW5nIHRvIGEgc3VydmV5IHBlcmZvcm1lZCBieSB0aGUgTGlua3UgUHJvamVjdFwiLFxuXHRcdCksXG5cdFx0d29yZDogelxuXHRcdFx0LnN0cmluZygpXG5cdFx0XHQuZGVzY3JpYmUoYFRoZSB3b3JkJ3MgYWN0dWFsIHRleHQsIGluIGNhc2Ugb2YgYSB3b3JkIHdpdGggbXVsdGlwbGUgZGVmaW5pdGlvbnMgKGxpa2UgXCJ3ZVwiKWApLFxuXHRcdGRlcHJlY2F0ZWQ6IHpcblx0XHRcdC5ib29sZWFuKClcblx0XHRcdC5kZXNjcmliZShcIldoZXRoZXIgb3Igbm90IHRoZSB3b3JkIGlzIGNvbnNpZGVyZWQgZGVwcmVjYXRlZCBieSBpdHMgYXV0aG9yLlwiKSxcblx0XHRldHltb2xvZ3k6IHpcblx0XHRcdC5hcnJheShcblx0XHRcdFx0ei5vYmplY3Qoe1xuXHRcdFx0XHRcdHdvcmQ6IHpcblx0XHRcdFx0XHRcdC5zdHJpbmcoKVxuXHRcdFx0XHRcdFx0Lm9wdGlvbmFsKClcblx0XHRcdFx0XHRcdC5kZXNjcmliZShcblx0XHRcdFx0XHRcdFx0XCJPbmUgb2YgdGhlIHJvb3Qgd29yZHMgb2YgdGhpcyB3b3JkLCBhcyB3cml0dGVuIG91dCBpbiBpdHMgbGFuZ3VhZ2Ugb2Ygb3JpZ2luXCIsXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGFsdDogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKGBBIGxhdGluaXplZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgXCJ3b3JkXCIgZmllbGRgKSxcblx0XHRcdFx0fSksXG5cdFx0XHQpXG5cdFx0XHQuZGVzY3JpYmUoXCJVbmxvY2FsaXplZCBldHltb2xvZ2ljYWwgdmFsdWVzIHJlZ2FyZGluZyB0aGlzIHdvcmQncyBvcmlnaW5cIiksXG5cdFx0YXVkaW86IHouYXJyYXkoXG5cdFx0XHR6XG5cdFx0XHRcdC5vYmplY3Qoe1xuXHRcdFx0XHRcdGF1dGhvcjogei5zdHJpbmcoKS5kZXNjcmliZShcIlRoZSBhdXRob3Igb2YgdGhlIGF1ZGlvIGZpbGUgaW4gYGxpbmtgLlwiKSxcblx0XHRcdFx0XHRsaW5rOiB6XG5cdFx0XHRcdFx0XHQuc3RyaW5nKClcblx0XHRcdFx0XHRcdC51cmwoKVxuXHRcdFx0XHRcdFx0LmRlc2NyaWJlKFwiQSBsaW5rIHRvIHRoZSBhdWRpbyBmaWxlIGZvciB0aGUgd29yZCwgcHJvbm91bmNlZCBieSBgYXV0aG9yYC5cIiksXG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5kZXNjcmliZShcIkF1ZGlvIGZpbGVzIG9mIHRoZSB3b3JkcyBwcm9ub3VuY2VkIG91dCBsb3VkXCIpLFxuXHRcdCksXG5cdFx0cHVfdmVyYmF0aW06IHpcblx0XHRcdC5vYmplY3Qoe1xuXHRcdFx0XHRlbjogei5zdHJpbmcoKS5kZXNjcmliZShcIlRoZSBvcmlnaW5hbCBkZWZpbml0aW9uIGluIHRoZSBFbmdsaXNoIHZlcnNpb24gb2YgcHVcIiksXG5cdFx0XHRcdGZyOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVGhlIG9yaWdpbmFsIGRlZmluaXRpb24gaW4gdGhlIEZyZW5jaCB2ZXJzaW9uIG9mIHB1XCIpLFxuXHRcdFx0XHRkZTogei5zdHJpbmcoKS5kZXNjcmliZShcIlRoZSBvcmlnaW5hbCBkZWZpbml0aW9uIGluIHRoZSBHZXJtYW4gdmVyc2lvbiBvZiBwdVwiKSxcblx0XHRcdFx0ZW86IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJUaGUgb3JpZ2luYWwgZGVmaW5pdGlvbiBpbiB0aGUgRXNwZXJhbnRvIHZlcnNpb24gb2YgcHVcIiksXG5cdFx0XHR9KVxuXHRcdFx0Lm9wdGlvbmFsKClcblx0XHRcdC5kZXNjcmliZShcIlRoZSBvcmlnaW5hbCBkZWZpbml0aW9uIG9mIHRoZSB3b3JkIGluIHB1LCB0aGUgZmlyc3Qgb2ZmaWNpYWwgVG9raSBQb25hIGJvb2tcIiksXG5cdFx0dXNhZ2U6IHpcblx0XHRcdC5yZWNvcmQoei5zdHJpbmcoKS5yZWdleCgvXjIwXFxkezJ9LSgwWzEtOV18MVswLTJdKSQvZyksIHoubnVtYmVyKCkubWluKDApLm1heCgxMDApKVxuXHRcdFx0LmRlc2NyaWJlKFxuXHRcdFx0XHRcIlRoZSBwZXJjZW50YWdlIG9mIHBlb3BsZSBpbiB0aGUgVG9raSBQb25hIGNvbW11bml0eSB3aG8gdXNlIHRoaXMgd29yZCwgYWNjb3JkaW5nIHRvIHN1cnZleXMgcGVyZm9ybWVkIGJ5IHRoZSBMaW5rdSBQcm9qZWN0XCIsXG5cdFx0XHQpLFxuXHR9KVxuXHQuZGVzY3JpYmUoXCJHZW5lcmFsIGluZm8gb24gYSBUb2tpIFBvbmEgd29yZFwiKTtcblxuZXhwb3J0IHR5cGUgV29yZCA9IHouaW5mZXI8dHlwZW9mIFdvcmQ+O1xuXG5leHBvcnQgY29uc3QgQ29tbWVudGFyeVRyYW5zbGF0aW9uID0gelxuXHQucmVjb3JkKHouc3RyaW5nKCkubWluKDEpLCB6LnN0cmluZygpKVxuXHQuZGVzY3JpYmUoXCJMb2NhbGl6ZWQgY29tbWVudGFyeSByZWdhcmRpbmcgVG9raSBQb25hIHdvcmRzXCIpO1xuXG5leHBvcnQgdHlwZSBDb21tZW50YXJ5VHJhbnNsYXRpb24gPSB6LmluZmVyPHR5cGVvZiBDb21tZW50YXJ5VHJhbnNsYXRpb24+O1xuXG5leHBvcnQgY29uc3QgRGVmaW5pdGlvblRyYW5zbGF0aW9uID0gelxuXHQucmVjb3JkKHouc3RyaW5nKCkubWluKDEpLCB6LnN0cmluZygpLm1pbigxKSlcblx0LmRlc2NyaWJlKFwiTG9jYWxpemVkIGRlZmluaXRpb25zIG9mIFRva2kgUG9uYSB3b3Jkc1wiKTtcblxuZXhwb3J0IHR5cGUgRGVmaW5pdGlvblRyYW5zbGF0aW9uID0gei5pbmZlcjx0eXBlb2YgRGVmaW5pdGlvblRyYW5zbGF0aW9uPjtcblxuZXhwb3J0IGNvbnN0IFNpdGVsZW5Qb25hVHJhbnNsYXRpb24gPSB6XG5cdC5yZWNvcmQoei5zdHJpbmcoKS5taW4oMSksIHouc3RyaW5nKCkpXG5cdC5kZXNjcmliZShcIkxvY2FsaXplZCBkZXNjcmlwdGlvbnMgb2YgdGhlIG9yaWdpbnMgb2YgdGhlIHNpdGVsZW4gcG9uYSBnbHlwaHMgZm9yIFRva2kgUG9uYSB3b3Jkc1wiKTtcblxuZXhwb3J0IHR5cGUgU2l0ZWxlblBvbmFUcmFuc2xhdGlvbiA9IHouaW5mZXI8dHlwZW9mIFNpdGVsZW5Qb25hVHJhbnNsYXRpb24+O1xuXG5leHBvcnQgY29uc3QgRXR5bW9sb2d5VHJhbnNsYXRpb24gPSB6XG5cdC5yZWNvcmQoXG5cdFx0ei5zdHJpbmcoKS5taW4oMSksXG5cdFx0ei5hcnJheShcblx0XHRcdHoub2JqZWN0KHtcblx0XHRcdFx0ZGVmaW5pdGlvbjogelxuXHRcdFx0XHRcdC5zdHJpbmcoKVxuXHRcdFx0XHRcdC5vcHRpb25hbCgpXG5cdFx0XHRcdFx0LmRlc2NyaWJlKFwiVGhlIGxvY2FsaXplZCBkZWZpbml0aW9uIG9mIHRoZSByb290IHdvcmQgaW4gaXRzIG9yaWdpbiBsYW5ndWFnZVwiKSxcblx0XHRcdFx0bGFuZ3VhZ2U6IHpcblx0XHRcdFx0XHQuc3RyaW5nKClcblx0XHRcdFx0XHQuZGVzY3JpYmUoXCJUaGUgbG9jYWxpemVkIG5hbWUgb2YgdGhlIGxhbmd1YWdlIHRoaXMgd29yZCBvcmlnaW5hdGVkIGZyb21cIiksXG5cdFx0XHR9KSxcblx0XHQpLFxuXHQpXG5cdC5kZXNjcmliZShcIkxvY2FsaXplZCBldHltb2xvZ2ljYWwgdmFsdWVzIGZvciBUb2tpIFBvbmEgd29yZHNcIik7XG5cbmV4cG9ydCB0eXBlIEV0eW1vbG9neVRyYW5zbGF0aW9uID0gei5pbmZlcjx0eXBlb2YgRXR5bW9sb2d5VHJhbnNsYXRpb24+O1xuXG5leHBvcnQgY29uc3QgU2lnbiA9IHpcblx0Lm9iamVjdCh7XG5cdFx0ZGVmaW5pdGlvbjogei5zdHJpbmcoKS5kZXNjcmliZShcIlRoZSBkZWZpbml0aW9uIG9mIHRoZSBzaWduIGFzIGEgc2luZ2xlIHRva2kgcG9uYSB3b3JkLlwiKSxcblx0XHRpZDogei5zdHJpbmcoKS5kZXNjcmliZShcIkEgZ2xvYmFsbHkgdW5pcXVlIG5hbWUgZm9yIHRoZSBzaWduIHdoaWNoIGlzIGFsc28gYSBnbG9zcy5cIiksXG5cdFx0aXNfdHdvX2hhbmRlZDogei5ib29sZWFuKCkuZGVzY3JpYmUoXCJXaGV0aGVyIHRoZSBzaWduIGlzIHR3by1oYW5kZWQgb3Igbm90LlwiKSxcblx0XHRuZXdfZ2xvc3M6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJUaGUgbW9yZSByZWNlbnQsIHByZWZlcnJlZCBnbG9zcyBmb3IgdGhpcyBzaWduLlwiKSxcblx0XHRvbGRfZ2xvc3M6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJUaGUgb2xkZXIgZ2xvc3MgZm9yIHRoaXMgc2lnbiwgc2ltaWxhciB0byBgaWRgLlwiKSxcblx0XHRldHltb2xvZ3k6IHpcblx0XHRcdC5hcnJheShcblx0XHRcdFx0ei5vYmplY3Qoe1xuXHRcdFx0XHRcdGxhbmd1YWdlOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVGhlIGxhbmd1YWdlIG9mIHRoZSBzaWduLlwiKSxcblx0XHRcdFx0XHRzaWduOiB6XG5cdFx0XHRcdFx0XHQuc3RyaW5nKClcblx0XHRcdFx0XHRcdC5vcHRpb25hbCgpXG5cdFx0XHRcdFx0XHQuZGVzY3JpYmUoXG5cdFx0XHRcdFx0XHRcdFwiVGhlIG5hbWUgb2YgdGhlIHNpZ24gc3VjaCB0aGF0IGl0IGNvdWxkIGJlIGZvdW5kIGluIGEgc2lnbiBsYW5ndWFnZSBkaWN0aW9uYXJ5LlwiLFxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0fSksXG5cdFx0XHQpXG5cdFx0XHQuZGVzY3JpYmUoXCJVbmxvY2FsaXplZCBldHltb2xvZ2ljYWwgdmFsdWVzIHJlZ2FyZGluZyB0aGlzIHNpZ24ncyBvcmlnaW5cIiksXG5cdFx0c2lnbndyaXRpbmc6IHpcblx0XHRcdC5vYmplY3Qoe1xuXHRcdFx0XHRmc3c6IHpcblx0XHRcdFx0XHQuc3RyaW5nKClcblx0XHRcdFx0XHQuZGVzY3JpYmUoXG5cdFx0XHRcdFx0XHRcIlRoZSBbRm9ybWFsIFNpZ25Xcml0aW5nXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TaWduV3JpdGluZykgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNpZ24uXCIsXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0c3d1OiB6XG5cdFx0XHRcdFx0LnN0cmluZygpXG5cdFx0XHRcdFx0LmRlc2NyaWJlKFxuXHRcdFx0XHRcdFx0XCJUaGUgW1NpZ25Xcml0aW5nIHdpdGggVW5pY29kZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2lnbldyaXRpbmcpIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzaWduLlwiLFxuXHRcdFx0XHRcdCksXG5cdFx0XHR9KVxuXHRcdFx0LmRlc2NyaWJlKFwiU2NyaXB0cyBmb3IgcmVwcmVzZW50aW5nIGEgc2lnbiBhcyBjaGFyYWN0ZXJzLlwiKSxcblx0XHR2aWRlbzogelxuXHRcdFx0Lm9iamVjdCh7XG5cdFx0XHRcdGdpZjogei5zdHJpbmcoKS5kZXNjcmliZShcIkEgbGluayB0byBhIGdpZiBvZiB0aGUgc2lnbiBiZWluZyBzaWduZWQuXCIpLFxuXHRcdFx0XHRtcDQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJhIGxpbmsgdG8gYW4gbXA0IG9mIHRoZSBzaWduIGJlaW5nIHNpZ25lZC5cIiksXG5cdFx0XHR9KVxuXHRcdFx0LmRlc2NyaWJlKFwiVmlkZW9zIG9mIHRoZSBzaWduIGJlaW5nIHBlcmZvcm1lZCwgYnkgZm9ybWF0LlwiKSxcblx0fSlcblx0LmRlc2NyaWJlKFwiVW5sb2NhbGl6ZWQgaW5mbyBvbiBhIEx1a2EgUG9uYSBzaWduXCIpO1xuXG5leHBvcnQgdHlwZSBTaWduID0gei5pbmZlcjx0eXBlb2YgU2lnbj47XG5cbmV4cG9ydCBjb25zdCBGaW5nZXJzcGVsbGluZ1NpZ24gPSB6XG5cdC5vYmplY3Qoe1xuXHRcdGlkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiQSBnbG9iYWxseSB1bmlxdWUgbmFtZSBmb3IgdGhlIHNpZ24gd2hpY2ggaXMgYWxzbyBhIGdsb3NzLlwiKSxcblx0XHRpc190d29faGFuZGVkOiB6LmJvb2xlYW4oKS5kZXNjcmliZShcIldoZXRoZXIgdGhlIHNpZ24gaXMgdHdvLWhhbmRlZCBvciBub3QuXCIpLFxuXHRcdGV0eW1vbG9neTogelxuXHRcdFx0LmFycmF5KFxuXHRcdFx0XHR6Lm9iamVjdCh7XG5cdFx0XHRcdFx0bGFuZ3VhZ2U6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJUaGUgbGFuZ3VhZ2Ugb2YgdGhlIHNpZ24uXCIpLFxuXHRcdFx0XHRcdHNpZ246IHpcblx0XHRcdFx0XHRcdC5zdHJpbmcoKVxuXHRcdFx0XHRcdFx0LmRlc2NyaWJlKFxuXHRcdFx0XHRcdFx0XHRcIlRoZSBuYW1lIG9mIHRoZSBzaWduIHN1Y2ggdGhhdCBpdCBjb3VsZCBiZSBmb3VuZCBpbiBhIHNpZ24gbGFuZ3VhZ2UgZGljdGlvbmFyeS5cIixcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdH0pLFxuXHRcdFx0KVxuXHRcdFx0LmRlc2NyaWJlKFwiVW5sb2NhbGl6ZWQgZXR5bW9sb2dpY2FsIHZhbHVlcyByZWdhcmRpbmcgdGhpcyBzaWduJ3Mgb3JpZ2luXCIpLFxuXHRcdHNpZ253cml0aW5nOiB6XG5cdFx0XHQub2JqZWN0KHtcblx0XHRcdFx0ZnN3OiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVGhlIEZvcm1hbCBTaWduIFdyaXRpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNpZ24uXCIpLFxuXHRcdFx0XHRzd3U6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJUaGUgU2lnbiBXcml0aW5nIHdpdGggVW5pY29kZSByZXByZXNlbnRhdGlvbiBvZiBodGUgc2lnbi5cIiksXG5cdFx0XHR9KVxuXHRcdFx0LmRlc2NyaWJlKFwiU2NyaXB0cyBmb3IgcmVwcmVzZW50aW5nIGEgc2lnbiBhcyBjaGFyYWN0ZXJzLlwiKSxcblx0XHR2aWRlbzogelxuXHRcdFx0Lm9iamVjdCh7XG5cdFx0XHRcdGdpZjogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQSBsaW5rIHRvIGEgZ2lmIG9mIHRoZSBzaWduIGJlaW5nIHNpZ25lZC5cIiksXG5cdFx0XHRcdG1wNDogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiYSBsaW5rIHRvIGFuIG1wNCBvZiB0aGUgc2lnbiBiZWluZyBzaWduZWQuXCIpLFxuXHRcdFx0fSlcblx0XHRcdC5kZXNjcmliZShcIlZpZGVvcyBvZiB0aGUgc2lnbiBiZWluZyBwZXJmb3JtZWQsIGJ5IGZvcm1hdC5cIiksXG5cdH0pXG5cdC5kZXNjcmliZShcIlVubG9jYWxpemVkIGluZm8gb24gYSBmaW5nZXJzcGVsbGluZyBzaWduLlwiKTtcblxuZXhwb3J0IHR5cGUgRmluZ2Vyc3BlbGxpbmdTaWduID0gei5pbmZlcjx0eXBlb2YgRmluZ2Vyc3BlbGxpbmdTaWduPjtcblxuZXhwb3J0IGNvbnN0IFBhcmFtZXRlcnNUcmFuc2xhdGlvbiA9IHpcblx0LnJlY29yZChcblx0XHR6LnN0cmluZygpLm1pbigxKSxcblx0XHR6Lm9iamVjdCh7XG5cdFx0XHRoYW5kc2hhcGU6IHpcblx0XHRcdFx0LnN0cmluZygpXG5cdFx0XHRcdC5vcHRpb25hbCgpXG5cdFx0XHRcdC5kZXNjcmliZShcblx0XHRcdFx0XHRcIlRoZSBzaGFwZSBvZiB0aGUgaGFuZCB3aGVuIHNpZ25pbmcsIGlkZW50aWZpZWQgYnkgaXRzIG5hbWUgaW4gQVNMLiBTaG91bGQgbm90IGJlIHRyYW5zbGF0ZWQgaW4gYW55IGxhbmd1YWdlIG90aGVyIHRoYW4gVG9raSBQb25hXCIsXG5cdFx0XHRcdCksXG5cdFx0XHRtb3ZlbWVudDogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIG1vdGlvbiBvZiB0aGUgaGFuZCB3aGVuIHNpZ25pbmcuXCIpLFxuXHRcdFx0cGxhY2VtZW50OiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaGUgcGxhY2VtZW50IG9mIHRoZSBoYW5kIHdoZW4gc2lnbmluZy5cIiksXG5cdFx0XHRvcmllbnRhdGlvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIG9yaWVudGF0aW9uIG9mIHRoZSBoYW5kIHdoZW4gc2lnbmluZy5cIiksXG5cdFx0fSksXG5cdClcblx0LmRlc2NyaWJlKFwiUGFydGx5IGxvY2FsaXplZCBkZXNjcmlwdGlvbnMgb2YgaG93IGEgc2lnbiBpcyBzaWduZWQuXCIpO1xuXG5leHBvcnQgdHlwZSBQYXJhbWV0ZXJzVHJhbnNsYXRpb24gPSB6LmluZmVyPHR5cGVvZiBQYXJhbWV0ZXJzVHJhbnNsYXRpb24+O1xuXG5leHBvcnQgY29uc3QgSWNvblRyYW5zbGF0aW9uID0gelxuXHQucmVjb3JkKHouc3RyaW5nKCkubWluKDEpLCB6LnN0cmluZygpKVxuXHQuZGVzY3JpYmUoXCJMb2NhbGl6ZWQgZGVzY3JpcHRpb25zIG9mIHRoZSB0aGluZyBhIHNpZ24gcmVwcmVzZW50cy5cIik7XG5cbmV4cG9ydCB0eXBlIEljb25UcmFuc2xhdGlvbiA9IHouaW5mZXI8dHlwZW9mIEljb25UcmFuc2xhdGlvbj47XG5cbmV4cG9ydCBjb25zdCBGb250ID0gelxuXHQub2JqZWN0KHtcblx0XHRpZDogei5zdHJpbmcoKS5taW4oMSkuZGVzY3JpYmUoXCJUaGUgZm9udCdzIHVuaXF1ZSBJRCwgaWRlbnRpZnlpbmcgaXQgYW1vbmcgb3RoZXIgZm9udHNcIiksXG5cdFx0Y3JlYXRvcjogei5hcnJheSh6LnN0cmluZygpKS5kZXNjcmliZShcImEgbGlzdCBvZiB0aGlzIGZvbnQncyBjcmVhdG9yc1wiKSxcblx0XHRmZWF0dXJlczogei5hcnJheSh6LnN0cmluZygpKS5kZXNjcmliZShcImEgbGlzdCBvZiBmZWF0dXJlcyB0aGlzIGZvbnQgc3VwcG9ydHNcIiksXG5cdFx0ZmlsZW5hbWU6IHpcblx0XHRcdC5zdHJpbmcoKVxuXHRcdFx0LnJlZ2V4KC9eKD86LitcXC4odHRmfG90Znx3b2ZmMnx3b2ZmKSk/JC8pXG5cdFx0XHQuZGVzY3JpYmUoXCJ0aGUgbmFtZSBvZiB0aGUgZmlsZSB0aGlzIGZvbnQgaXMgc3RvcmVkIGluIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9saXB1LWxpbmt1L2lqb1wiKSxcblx0XHRsYXN0X3VwZGF0ZWQ6IFllYXJNb250aC5vcHRpb25hbCgpLmRlc2NyaWJlKFwidGhlIHJvdWdoIGRhdGUgb2YgdGhpcyBmb250J3MgbGFzdCB1cGRhdGVcIiksXG5cdFx0bGljZW5zZTogelxuXHRcdFx0LnN0cmluZygpXG5cdFx0XHQuZGVzY3JpYmUoXCJhbiBTUERYIGV4cHJlc3Npb24gZGVzY3JpYmluZyB0aGlzIGZvbnQncyBsaWNlbnNlOiBodHRwczovL3NwZHgub3JnL2xpY2Vuc2VzL1wiKSxcblx0XHRsaWdhdHVyZXM6IHouYm9vbGVhbigpLmRlc2NyaWJlKFwid2hldGhlciB0aGlzIGZvbnQgc3VwcG9ydHMgbGlnYXR1cmVzXCIpLFxuXHRcdG5hbWU6IHouc3RyaW5nKCkubWluKDEpLmRlc2NyaWJlKFwidGhpcyBmb250J3MgbmFtZVwiKSxcblx0XHRzdHlsZTogei5zdHJpbmcoKS5taW4oMSkuZGVzY3JpYmUoXCJ0aGUgZ2VuZXJhbCBzdHlsZSBvZiB0aGlzIGZvbnRcIiksXG5cdFx0dWNzdXI6IHpcblx0XHRcdC5ib29sZWFuKClcblx0XHRcdC5kZXNjcmliZShcblx0XHRcdFx0XCJ3aGV0aGVyIHRoaXMgZm9udCBjb25mb3JtcyB0byB0aGUgVUNTVVIgc3RhbmRhcmQ6IGh0dHBzOi8vd3d3LmtyZWF0aXZla29ycC5jb20vdWNzdXIvY2hhcnRzL3NpdGVsZW4uaHRtbFwiLFxuXHRcdFx0KSxcblx0XHR2ZXJzaW9uOiB6LnN0cmluZygpLmRlc2NyaWJlKFwidGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGlzIGZvbnRcIiksXG5cdFx0d3JpdGluZ19zeXN0ZW06IFdyaXRpbmdTeXN0ZW0uZGVzY3JpYmUoXCJ0aGUgd3JpdGluZyBzeXN0ZW0gdGhpcyBmb250IHVzZXMgYXMgaXRzIHNjcmlwdFwiKSxcblx0XHRsaW5rczogei5vYmplY3Qoe1xuXHRcdFx0Zm9udGZpbGU6IHpcblx0XHRcdFx0LnN0cmluZygpXG5cdFx0XHRcdC51cmwoKVxuXHRcdFx0XHQub3B0aW9uYWwoKVxuXHRcdFx0XHQuZGVzY3JpYmUoXG5cdFx0XHRcdFx0XCJhIGxpbmsgdG8gdGhlIGZvbnQgZmlsZSBwdWJsaXNoZWQgYnkgdGhlIG9yaWdpbmFsIGF1dGhvciAobm90IHRoZSBtaXJyb3Igb24gdGhlIExpbmt1IFByb2plY3QncyBHaXRIdWIpXCIsXG5cdFx0XHRcdCksXG5cdFx0XHRyZXBvOiB6XG5cdFx0XHRcdC5zdHJpbmcoKVxuXHRcdFx0XHQudXJsKClcblx0XHRcdFx0Lm9wdGlvbmFsKClcblx0XHRcdFx0LmRlc2NyaWJlKFxuXHRcdFx0XHRcdFwiYSBsaW5rIHRvIGEgd2ViIGhvc3RlZCByZXBvc2l0b3J5IG9mIHRoaXMgZm9udCdzIHNvdXJjZSBmaWxlcyAodXN1YWxseSBob3N0ZWQgb24gR2l0SHViIG9yIEdpdExhYilcIixcblx0XHRcdFx0KSxcblx0XHRcdHdlYnBhZ2U6IHpcblx0XHRcdFx0LnN0cmluZygpXG5cdFx0XHRcdC51cmwoKVxuXHRcdFx0XHQub3B0aW9uYWwoKVxuXHRcdFx0XHQuZGVzY3JpYmUoXG5cdFx0XHRcdFx0XCJhIGxpbmsgdG8gdGhpcyBmb250J3MgaG9tZSBwYWdlLCB1c3VhbGx5IHNob3djYXNpbmcgaXRzIGZlYXR1cmVzIGFuZCB1c2FnZS9pbnN0YWxsYXRpb25cIixcblx0XHRcdFx0KSxcblx0XHR9KSxcblx0fSlcblx0LmRlc2NyaWJlKFwiSW5mbyBvbiBhIGZvbnQgZm9yIFRva2kgUG9uYVwiKTtcbmV4cG9ydCB0eXBlIEZvbnQgPSB6LmluZmVyPHR5cGVvZiBGb250PjtcblxuZXhwb3J0IGNvbnN0IFdvcmRzID0gelxuXHQucmVjb3JkKFxuXHRcdHouc3RyaW5nKCkubWluKDEpLFxuXHRcdFdvcmQuZXh0ZW5kKHtcblx0XHRcdHRyYW5zbGF0aW9uczogei5yZWNvcmQoXG5cdFx0XHRcdHoub2JqZWN0KHtcblx0XHRcdFx0XHRjb21tZW50YXJ5OiBDb21tZW50YXJ5VHJhbnNsYXRpb24udmFsdWVTY2hlbWEsXG5cdFx0XHRcdFx0ZGVmaW5pdGlvbjogRGVmaW5pdGlvblRyYW5zbGF0aW9uLnZhbHVlU2NoZW1hLFxuXHRcdFx0XHRcdGV0eW1vbG9neTogRXR5bW9sb2d5VHJhbnNsYXRpb24udmFsdWVTY2hlbWEsXG5cdFx0XHRcdFx0c3BfZXR5bW9sb2d5OiBTaXRlbGVuUG9uYVRyYW5zbGF0aW9uLnZhbHVlU2NoZW1hLFxuXHRcdFx0XHR9KSxcblx0XHRcdCksXG5cdFx0fSksXG5cdClcblx0LmRlc2NyaWJlKFwiQSByYXcgZGF0YSBvYmplY3QgY29udGFpbmluZyBkaWN0aW9uYXJ5IGluZm8gYWJvdXQgVG9raSBQb25hIHdvcmRzXCIpO1xuZXhwb3J0IHR5cGUgV29yZHMgPSB6LmluZmVyPHR5cGVvZiBXb3Jkcz47XG5leHBvcnQgdHlwZSBMb2NhbGl6ZWRXb3JkID0gV29yZHNbc3RyaW5nXTtcblxuZXhwb3J0IGNvbnN0IFNpZ25zID0gelxuXHQucmVjb3JkKFxuXHRcdHouc3RyaW5nKCkubWluKDEpLFxuXHRcdFNpZ24uZXh0ZW5kKHtcblx0XHRcdHRyYW5zbGF0aW9uczogei5yZWNvcmQoXG5cdFx0XHRcdHoub2JqZWN0KHtcblx0XHRcdFx0XHRwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzVHJhbnNsYXRpb24udmFsdWVTY2hlbWEsXG5cdFx0XHRcdFx0aWNvbnM6IEljb25UcmFuc2xhdGlvbi52YWx1ZVNjaGVtYSxcblx0XHRcdFx0fSksXG5cdFx0XHQpLFxuXHRcdH0pLFxuXHQpXG5cdC5kZXNjcmliZShcIkEgcmF3IGRhdGEgb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgTHVrYSBQb25hIHNpZ25zXCIpO1xuZXhwb3J0IHR5cGUgU2lnbnMgPSB6LmluZmVyPHR5cGVvZiBTaWducz47XG5leHBvcnQgdHlwZSBMb2NhbGl6ZWRTaWduID0gU2lnbnNbc3RyaW5nXTtcblxuZXhwb3J0IGNvbnN0IEZpbmdlcnNwZWxsaW5nID0gelxuXHQucmVjb3JkKFxuXHRcdHouc3RyaW5nKCkubWluKDEpLFxuXHRcdEZpbmdlcnNwZWxsaW5nU2lnbi5leHRlbmQoe1xuXHRcdFx0dHJhbnNsYXRpb25zOiB6LnJlY29yZCh6Lm9iamVjdCh7IHBhcmFtZXRlcnM6IFBhcmFtZXRlcnNUcmFuc2xhdGlvbi52YWx1ZVNjaGVtYSB9KSksXG5cdFx0fSksXG5cdClcblx0LmRlc2NyaWJlKFwiQSByYXcgZGF0YSBvYmplY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCBMdWthIFBvbmEgZmluZ2Vyc3BlbGxpbmcgc2lnbnNcIik7XG5leHBvcnQgdHlwZSBGaW5nZXJzcGVsbGluZyA9IHouaW5mZXI8dHlwZW9mIEZpbmdlcnNwZWxsaW5nPjtcbmV4cG9ydCB0eXBlIExvY2FsaXplZEZpbmdlcnNwZWxsaW5nU2lnbiA9IEZpbmdlcnNwZWxsaW5nW3N0cmluZ107XG5cbmV4cG9ydCBjb25zdCBGb250cyA9IHpcblx0LnJlY29yZChGb250KVxuXHQuZGVzY3JpYmUoXCJBIHJhdyBkYXRhIG9iamVjdCBjb250YWluaW5nIGFsbCB0aGUgZm9udHMgZGF0YSBpbiBzb25hXCIpO1xuZXhwb3J0IHR5cGUgRm9udHMgPSB6LmluZmVyPHR5cGVvZiBGb250cz47XG5cbmV4cG9ydCBjb25zdCBMYW5ndWFnZXMgPSB6LnJlY29yZChcblx0elxuXHRcdC5zdHJpbmcoKVxuXHRcdC5taW4oMilcblx0XHQuZGVzY3JpYmUoXCJUaGUgbGFuZ3VhZ2UgY29kZSB1c2VkIGJ5IENyb3dkaW4uIEFwcHJveGltYXRlcyAyIGxldHRlciBjb2RlIC0+IDMgbGV0dGVyIGNvZGUuXCIpLFxuXHR6XG5cdFx0Lm9iamVjdCh7XG5cdFx0XHRpZDogelxuXHRcdFx0XHQuc3RyaW5nKClcblx0XHRcdFx0Lm1pbigyKVxuXHRcdFx0XHQuZGVzY3JpYmUoXG5cdFx0XHRcdFx0XCJUaGUgbGFuZ3VhZ2UgY29kZSB1c2VkIGJ5IENyb3dkaW4uIEFwcHJveGltYXRlcyAyIGxldHRlciBjb2RlIC0+IDMgbGV0dGVyIGNvZGUuXCIsXG5cdFx0XHRcdCksXG5cdFx0XHRsb2NhbGU6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJUaGUgbG9jYWxlIGNvZGUgY29ycmVzcG9uZGluZyB0byB0aGUgbGFuZ3VhZ2UuXCIpLFxuXHRcdFx0ZGlyZWN0aW9uOiB6XG5cdFx0XHRcdC51bmlvbihbei5saXRlcmFsKFwibHRyXCIpLCB6LmxpdGVyYWwoXCJydGxcIildKVxuXHRcdFx0XHQuZGVzY3JpYmUoXCJUaGUgZGlyZWN0aW9uIG9mIHRoZSBsYW5ndWFnZSdzIHNjcmlwdC5cIiksXG5cdFx0XHRuYW1lOiB6Lm9iamVjdCh7XG5cdFx0XHRcdGVuOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVGhlIG5hbWUgb2YgdGhlIGxhbmd1YWdlIGluIEVuZ2xpc2guXCIpLFxuXHRcdFx0XHQvLyBUaGVzZSBhcmUgb3B0aW9uYWwgYmVjYXVzZSB3ZSBjYW4gYWRkIGEgbGFuZ3VhZ2UgdmlhIENyb3dkaW4gYW5kIENyb3dkaW4gZG9lc24ndCBwcm92aWRlIHRoZXNlLlxuXHRcdFx0XHQvLyBEb3duc3RyZWFtIHByb2plY3RzIHNob3VsZCBwcmVmZXIgZW5kb255bSBvdmVyIG5hbWVfZW4gaWYgYm90aCBhcmUgYXZhaWxhYmxlLlxuXHRcdFx0XHR0b2s6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSBuYW1lIG9mIHRoZSBsYW5ndWFnZSBpbiBUb2tpIFBvbmEuXCIpLFxuXHRcdFx0XHRlbmRvbnltOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaGUgbmFtZSBvZiB0aGUgbGFuZ3VhZ2UgaW4gdGhhdCBsYW5ndWFnZS5cIiksXG5cdFx0XHR9KSxcblx0XHRcdC8vIFRPRE86IGNvbXBsZXRpb24gcGVyY2VudGFnZSBvbiBhIHBlci1maWxlIGJhc2lzP1xuXHRcdFx0Ly8gd2UgYWxzbyBjYXJlIGFib3V0IGNvbXBsZXRpb24gd2l0aGluIHVzYWdlIGNhdGVnb3JpZXMsIHNpbmNlIHRoZSBtb3N0IGltcG9ydGFudCB3b3JkcyBhcmUgY29yZSt3aWRlc3ByZWFkK2NvbW1vblxuXHRcdH0pXG5cdFx0LmRlc2NyaWJlKFwiVGhlIGxhbmd1YWdlcyBvZmZlcmVkIGJ5IHNvbmEgTGlua3UuXCIpLFxuKTtcbmV4cG9ydCB0eXBlIExhbmd1YWdlcyA9IHouaW5mZXI8dHlwZW9mIExhbmd1YWdlcz47XG5leHBvcnQgdHlwZSBMYW5ndWFnZSA9IExhbmd1YWdlc1tzdHJpbmddO1xuIl0sIm5hbWVzIjpbIlllYXJNb250aCIsInoiLCJXb3JkIiwiQm9vayIsIkNvaW5lZEVyYSIsIlVzYWdlQ2F0ZWdvcnkiLCJDb21tZW50YXJ5VHJhbnNsYXRpb24iLCJEZWZpbml0aW9uVHJhbnNsYXRpb24iLCJTaXRlbGVuUG9uYVRyYW5zbGF0aW9uIiwiRXR5bW9sb2d5VHJhbnNsYXRpb24iLCJTaWduIiwiRmluZ2Vyc3BlbGxpbmdTaWduIiwiUGFyYW1ldGVyc1RyYW5zbGF0aW9uIiwiSWNvblRyYW5zbGF0aW9uIiwiRm9udCIsIldyaXRpbmdTeXN0ZW0iLCJXb3JkcyIsIlNpZ25zIiwiRmluZ2Vyc3BlbGxpbmciLCJGb250cyIsIkxhbmd1YWdlcyJdLCJtYXBwaW5ncyI6IjtBQUtBLE1BQU1BLElBQVlDLEVBQUUsT0FBTyxFQUFFLE1BQU0sNEJBQTRCLEdBRWxEQyxJQUFPRCxFQUNsQixPQUFPO0FBQUEsRUFDUCxJQUFJQSxFQUNGLE9BQUEsRUFDQSxJQUFJLENB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
|
|
223
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9saWIvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7IEJvb2ssIENvaW5lZEVyYSwgVXNhZ2VDYXRlZ29yeSwgV3JpdGluZ1N5c3RlbSB9IGZyb20gXCIkbGliL3V0aWxzXCI7XG5cbmV4cG9ydCB0eXBlICogZnJvbSBcIiRsaWIvdHlwZXNcIjtcblxuY29uc3QgWWVhck1vbnRoID0gei5zdHJpbmcoKS5yZWdleCgvXjIwXFxkezJ9LSgwWzEtOV18MVswLTJdKSQvZyk7XG4vLyBXb3JkIGRhdGFcbmV4cG9ydCBjb25zdCBXb3JkID0gelxuXHQub2JqZWN0KHtcblx0XHRpZDogelxuXHRcdFx0LnN0cmluZygpXG5cdFx0XHQubWluKDEpXG5cdFx0XHQuZGVzY3JpYmUoXG5cdFx0XHRcdGBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgd29yZC4gVXN1YWxseSB0aGUgd29yZCBidXQgbWF5IGhhdmUgYW4gaW50ZWdlciBhZGRlZCBpbiBjYXNlIG9mIGEgd29yZCB3aXRoIG11bHRpcGxlIGRlZmluaXRpb25zIChsaWtlIFwid2VcIilgLFxuXHRcdFx0KSxcblx0XHRhdXRob3JfdmVyYmF0aW06IHpcblx0XHRcdC5zdHJpbmcoKVxuXHRcdFx0LmRlc2NyaWJlKFwiVGhlIGF1dGhvcidzIG9yaWdpbmFsIGRlZmluaXRpb24sIHRha2VuIHZlcmJhdGltIGluIHRoZWlyIHdvcmRzXCIpLFxuXHRcdGF1dGhvcl92ZXJiYXRpbV9zb3VyY2U6IHpcblx0XHRcdC5zdHJpbmcoKVxuXHRcdFx0LmRlc2NyaWJlKFwiV2hlcmUgdGhlIGF1dGhvcidzIG9yaWdpbmFsIGRlZmluaXRpb24gaXMgbG9jYXRlZCAodXN1YWxseSBEaXNjb3JkKVwiKSxcblx0XHRib29rOiBCb29rLmRlc2NyaWJlKFwiV2hpY2ggb2ZmaWNpYWwgVG9raSBQb25hIGJvb2sgd2FzIHRoaXMgd29yZCBmZWF0dXJlZCBpbiwgaWYgYW55LlwiKSxcblx0XHRjb2luZWRfZXJhOiBDb2luZWRFcmEub3Ioei5saXRlcmFsKFwiXCIpKS5kZXNjcmliZShcblx0XHRcdFwiV2hlbiB0aGlzIHdvcmQgd2FzIGNvaW5lZCAocmVsYXRpdmUgdG8gdGhlIHB1YmxpY2F0aW9uIGRhdGVzIG9mIHRoZSBvZmZpY2lhbCBUb2tpIFBvbmEgYm9va3MsIGlmIGtub3duKVwiLFxuXHRcdCksXG5cdFx0Y29pbmVkX3llYXI6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJUaGUgeWVhciB3aGVuIHRoaXMgd29yZCB3YXMgY29pbmVkIChpZiBrbm93bilcIiksXG5cdFx0Y3JlYXRvcjogei5hcnJheSh6LnN0cmluZygpKS5kZXNjcmliZShcIlRoZSBwZXJzb24gd2hvIGNyZWF0ZWQgdGhpcyB3b3JkIChpZiBrbm93bilcIiksXG5cdFx0a3VfZGF0YTogelxuXHRcdFx0LnJlY29yZChcblx0XHRcdFx0ei5zdHJpbmcoKS5taW4oMSkuZGVzY3JpYmUoXCJBIHRyYW5zbGF0aW9uIG9mIHRoZSB3b3JkIGludG8gRW5nbGlzaCBwcm9wb3NlZCBpbiBrdVwiKSxcblx0XHRcdFx0elxuXHRcdFx0XHRcdC5udW1iZXIoKVxuXHRcdFx0XHRcdC5taW4oMClcblx0XHRcdFx0XHQubWF4KDEwMClcblx0XHRcdFx0XHQuZGVzY3JpYmUoXG5cdFx0XHRcdFx0XHRcIlRoZSBwZXJjZW50YWdlIG9mIGt1IHN1cnZleSByZXNwb25kZW50cyB3aG8gcmVwb3J0IHRoaXMgdHJhbnNsYXRpb24gYXMgYWNjdXJhdGUgdG8gdGhlaXIgdXNhZ2UuXCIsXG5cdFx0XHRcdFx0KSxcblx0XHRcdClcblx0XHRcdC5vcHRpb25hbCgpXG5cdFx0XHQuZGVzY3JpYmUoXG5cdFx0XHRcdFwiVGhlIHVzYWdlIGRhdGEgb2YgdGhlIHdvcmQgYXMgZGVzY3JpYmVkIGluIGt1ICh0aGUgb2ZmaWNpYWwgVG9raSBQb25hIGRpY3Rpb25hcnkpXCIsXG5cdFx0XHQpLFxuXHRcdHNlZV9hbHNvOiB6LmFycmF5KHouc3RyaW5nKCkpLmRlc2NyaWJlKFwiQSBsaXN0IG9mIHJlbGF0ZWQgd29yZHNcIiksXG5cdFx0cmVzb3VyY2VzOiB6XG5cdFx0XHQub2JqZWN0KHtcblx0XHRcdFx0c29uYV9wb25hOiB6XG5cdFx0XHRcdFx0LnN0cmluZygpXG5cdFx0XHRcdFx0LnVybCgpXG5cdFx0XHRcdFx0Lm9wdGlvbmFsKClcblx0XHRcdFx0XHQuZGVzY3JpYmUoXG5cdFx0XHRcdFx0XHRcIkEgbGluayB0byB0aGUgd29yZCdzIHBhZ2Ugb24gc29uYS5wb25hLmxhLCBhIFRva2kgUG9uYSB3aWtpLiBNYXkgcmVkaXJlY3QgZm9yIHdvcmRzIHdpdGggcmVmZXJlbmNlcyBidXQgbm8gZGVkaWNhdGVkIHBhZ2UuXCIsXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0bGlwYW1hbmthX3NlbWFudGljOiB6XG5cdFx0XHRcdFx0LnN0cmluZygpXG5cdFx0XHRcdFx0LnVybCgpXG5cdFx0XHRcdFx0Lm9wdGlvbmFsKClcblx0XHRcdFx0XHQuZGVzY3JpYmUoXCJBIGxpbmsgdG8gbGlwYW1hbmthJ3MgZGVzY3JpcHRpb24gb2YgdGhlIHdvcmQncyBzZW1hbnRpYyBzcGFjZS5cIiksXG5cdFx0XHR9KVxuXHRcdFx0Lm9wdGlvbmFsKClcblx0XHRcdC5kZXNjcmliZShcIk5vbi1MaW5rdSByZXNvdXJjZXMgcmVsYXRlZCB0byB0aGUgc3BlY2lmaWMgd29yZCwgc3VjaCBhcyB3aWtpIGxpbmtzLlwiKSxcblx0XHRyZXByZXNlbnRhdGlvbnM6IHpcblx0XHRcdC5vYmplY3Qoe1xuXHRcdFx0XHRzaXRlbGVuX2Vtb3NpOiB6XG5cdFx0XHRcdFx0LnN0cmluZygpXG5cdFx0XHRcdFx0LmVtb2ppKClcblx0XHRcdFx0XHQub3B0aW9uYWwoKVxuXHRcdFx0XHRcdC5kZXNjcmliZShcblx0XHRcdFx0XHRcdFwiVGhlIHNpdGVsZW4gZW1vc2kgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB3b3JkLCBhIHNjcmlwdCBmb3Igd3JpdGluZyBUb2tpIFBvbmEgdXNpbmcgZW1vamlcIixcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRzaXRlbGVuX2plbG86IHpcblx0XHRcdFx0XHQuYXJyYXkoei5zdHJpbmcoKS5lbW9qaSgpKVxuXHRcdFx0XHRcdC5taW4oMSlcblx0XHRcdFx0XHQub3B0aW9uYWwoKVxuXHRcdFx0XHRcdC5kZXNjcmliZShcIk9uZSBvciBtb3JlIGV4YW1wbGUgZW1vamlzIGZvciBob3cgdGhlIHdvcmQgY2FuIGJlIHdyaXR0ZW4gaW4gc2l0ZWxlbiBqZWxvXCIpLFxuXHRcdFx0XHRsaWdhdHVyZXM6IHpcblx0XHRcdFx0XHQuYXJyYXkoei5zdHJpbmcoKS5taW4oMSkpXG5cdFx0XHRcdFx0Lm9wdGlvbmFsKClcblx0XHRcdFx0XHQuZGVzY3JpYmUoXG5cdFx0XHRcdFx0XHRcIkEgbGlzdCBvZiBzaXRlbGVuIExhc2luYSByZXByZXNlbnRhdGlvbnMgb2YgdGhlIHdvcmQsIHVzZWQgYnkgbGlnYXR1cmUgZm9udHMgdG8gdmlzdWFsbHkgY29udmVydCBsYXRpbiBjaGFyYWN0ZXJzIGludG8gc2l0ZWxlbiBwb25hXCIsXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0c2l0ZWxlbl9zaXRlbGVuOiB6XG5cdFx0XHRcdFx0LnN0cmluZygpXG5cdFx0XHRcdFx0LnVybCgpXG5cdFx0XHRcdFx0Lm9wdGlvbmFsKClcblx0XHRcdFx0XHQuZGVzY3JpYmUoXCJBIFVSTCBwb2ludGluZyB0byBhbiBpbWFnZSBvZiB0aGlzIHdvcmQncyBzaXRlbGVuIHNpdGVsZW4gaGllcm9nbHlwaGljIGJsb2NrXCIpLFxuXHRcdFx0XHR1Y3N1cjogelxuXHRcdFx0XHRcdC5zdHJpbmcoKVxuXHRcdFx0XHRcdC5yZWdleCgvXlVcXCtbXFxkYS1mQS1GXXs0LDZ9JC9nKVxuXHRcdFx0XHRcdC5vcHRpb25hbCgpXG5cdFx0XHRcdFx0LmRlc2NyaWJlKFxuXHRcdFx0XHRcdFx0XCJUaGUgd29yZCdzIFVDU1VSIGNvZGVwb2ludCwgYXMgZGVmaW5lZCBpbiBodHRwczovL3d3dy5rcmVhdGl2ZWtvcnAuY29tL3Vjc3VyL2NoYXJ0cy9zaXRlbGVuLmh0bWxcIixcblx0XHRcdFx0XHQpLFxuXHRcdFx0fSlcblx0XHRcdC5vcHRpb25hbCgpXG5cdFx0XHQuZGVzY3JpYmUoXCJXYXlzIG9mIHJlcHJlc2VudGluZyB0aGlzIHdvcmQgaW4gdGhlIHJlYWwgd29ybGQsIHZpYSB0ZXh0L2NvbXB1dGVyc1wiKSxcblx0XHRzb3VyY2VfbGFuZ3VhZ2U6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJUaGUgbGFuZ3VhZ2UgdGhpcyB3b3JkIG9yaWdpbmF0ZWQgZnJvbVwiKSxcblx0XHR1c2FnZV9jYXRlZ29yeTogVXNhZ2VDYXRlZ29yeS5kZXNjcmliZShcblx0XHRcdFwiVGhlIHdvcmQncyB1c2FnZSBjYXRlZ29yeSwgYWNjb3JkaW5nIHRvIGEgc3VydmV5IHBlcmZvcm1lZCBieSB0aGUgTGlua3UgUHJvamVjdFwiLFxuXHRcdCksXG5cdFx0d29yZDogelxuXHRcdFx0LnN0cmluZygpXG5cdFx0XHQuZGVzY3JpYmUoYFRoZSB3b3JkJ3MgYWN0dWFsIHRleHQsIGluIGNhc2Ugb2YgYSB3b3JkIHdpdGggbXVsdGlwbGUgZGVmaW5pdGlvbnMgKGxpa2UgXCJ3ZVwiKWApLFxuXHRcdGRlcHJlY2F0ZWQ6IHpcblx0XHRcdC5ib29sZWFuKClcblx0XHRcdC5kZXNjcmliZShcIldoZXRoZXIgb3Igbm90IHRoZSB3b3JkIGlzIGNvbnNpZGVyZWQgZGVwcmVjYXRlZCBieSBpdHMgYXV0aG9yLlwiKSxcblx0XHRldHltb2xvZ3k6IHpcblx0XHRcdC5hcnJheShcblx0XHRcdFx0ei5vYmplY3Qoe1xuXHRcdFx0XHRcdHdvcmQ6IHpcblx0XHRcdFx0XHRcdC5zdHJpbmcoKVxuXHRcdFx0XHRcdFx0Lm9wdGlvbmFsKClcblx0XHRcdFx0XHRcdC5kZXNjcmliZShcblx0XHRcdFx0XHRcdFx0XCJPbmUgb2YgdGhlIHJvb3Qgd29yZHMgb2YgdGhpcyB3b3JkLCBhcyB3cml0dGVuIG91dCBpbiBpdHMgbGFuZ3VhZ2Ugb2Ygb3JpZ2luXCIsXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGFsdDogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKGBBIGxhdGluaXplZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgXCJ3b3JkXCIgZmllbGRgKSxcblx0XHRcdFx0fSksXG5cdFx0XHQpXG5cdFx0XHQuZGVzY3JpYmUoXCJVbmxvY2FsaXplZCBldHltb2xvZ2ljYWwgdmFsdWVzIHJlZ2FyZGluZyB0aGlzIHdvcmQncyBvcmlnaW5cIiksXG5cdFx0YXVkaW86IHouYXJyYXkoXG5cdFx0XHR6XG5cdFx0XHRcdC5vYmplY3Qoe1xuXHRcdFx0XHRcdGF1dGhvcjogei5zdHJpbmcoKS5kZXNjcmliZShcIlRoZSBhdXRob3Igb2YgdGhlIGF1ZGlvIGZpbGUgaW4gYGxpbmtgLlwiKSxcblx0XHRcdFx0XHRsaW5rOiB6XG5cdFx0XHRcdFx0XHQuc3RyaW5nKClcblx0XHRcdFx0XHRcdC51cmwoKVxuXHRcdFx0XHRcdFx0LmRlc2NyaWJlKFwiQSBsaW5rIHRvIHRoZSBhdWRpbyBmaWxlIGZvciB0aGUgd29yZCwgcHJvbm91bmNlZCBieSBgYXV0aG9yYC5cIiksXG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5kZXNjcmliZShcIkF1ZGlvIGZpbGVzIG9mIHRoZSB3b3JkcyBwcm9ub3VuY2VkIG91dCBsb3VkXCIpLFxuXHRcdCksXG5cdFx0cHVfdmVyYmF0aW06IHpcblx0XHRcdC5vYmplY3Qoe1xuXHRcdFx0XHRlbjogei5zdHJpbmcoKS5kZXNjcmliZShcIlRoZSBvcmlnaW5hbCBkZWZpbml0aW9uIGluIHRoZSBFbmdsaXNoIHZlcnNpb24gb2YgcHVcIiksXG5cdFx0XHRcdGZyOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVGhlIG9yaWdpbmFsIGRlZmluaXRpb24gaW4gdGhlIEZyZW5jaCB2ZXJzaW9uIG9mIHB1XCIpLFxuXHRcdFx0XHRkZTogei5zdHJpbmcoKS5kZXNjcmliZShcIlRoZSBvcmlnaW5hbCBkZWZpbml0aW9uIGluIHRoZSBHZXJtYW4gdmVyc2lvbiBvZiBwdVwiKSxcblx0XHRcdFx0ZW86IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJUaGUgb3JpZ2luYWwgZGVmaW5pdGlvbiBpbiB0aGUgRXNwZXJhbnRvIHZlcnNpb24gb2YgcHVcIiksXG5cdFx0XHR9KVxuXHRcdFx0Lm9wdGlvbmFsKClcblx0XHRcdC5kZXNjcmliZShcIlRoZSBvcmlnaW5hbCBkZWZpbml0aW9uIG9mIHRoZSB3b3JkIGluIHB1LCB0aGUgZmlyc3Qgb2ZmaWNpYWwgVG9raSBQb25hIGJvb2tcIiksXG5cdFx0dXNhZ2U6IHpcblx0XHRcdC5yZWNvcmQoei5zdHJpbmcoKS5yZWdleCgvXjIwXFxkezJ9LSgwWzEtOV18MVswLTJdKSQvZyksIHoubnVtYmVyKCkubWluKDApLm1heCgxMDApKVxuXHRcdFx0LmRlc2NyaWJlKFxuXHRcdFx0XHRcIlRoZSBwZXJjZW50YWdlIG9mIHBlb3BsZSBpbiB0aGUgVG9raSBQb25hIGNvbW11bml0eSB3aG8gdXNlIHRoaXMgd29yZCwgYWNjb3JkaW5nIHRvIHN1cnZleXMgcGVyZm9ybWVkIGJ5IHRoZSBMaW5rdSBQcm9qZWN0XCIsXG5cdFx0XHQpLFxuXHR9KVxuXHQuZGVzY3JpYmUoXCJHZW5lcmFsIGluZm8gb24gYSBUb2tpIFBvbmEgd29yZFwiKTtcblxuZXhwb3J0IHR5cGUgV29yZCA9IHouaW5mZXI8dHlwZW9mIFdvcmQ+O1xuXG5leHBvcnQgY29uc3QgQ29tbWVudGFyeVRyYW5zbGF0aW9uID0gelxuXHQucmVjb3JkKHouc3RyaW5nKCkubWluKDEpLCB6LnN0cmluZygpKVxuXHQuZGVzY3JpYmUoXCJMb2NhbGl6ZWQgY29tbWVudGFyeSByZWdhcmRpbmcgVG9raSBQb25hIHdvcmRzXCIpO1xuXG5leHBvcnQgdHlwZSBDb21tZW50YXJ5VHJhbnNsYXRpb24gPSB6LmluZmVyPHR5cGVvZiBDb21tZW50YXJ5VHJhbnNsYXRpb24+O1xuXG5leHBvcnQgY29uc3QgRGVmaW5pdGlvblRyYW5zbGF0aW9uID0gelxuXHQucmVjb3JkKHouc3RyaW5nKCkubWluKDEpLCB6LnN0cmluZygpLm1pbigxKSlcblx0LmRlc2NyaWJlKFwiTG9jYWxpemVkIGRlZmluaXRpb25zIG9mIFRva2kgUG9uYSB3b3Jkc1wiKTtcblxuZXhwb3J0IHR5cGUgRGVmaW5pdGlvblRyYW5zbGF0aW9uID0gei5pbmZlcjx0eXBlb2YgRGVmaW5pdGlvblRyYW5zbGF0aW9uPjtcblxuZXhwb3J0IGNvbnN0IFNpdGVsZW5Qb25hVHJhbnNsYXRpb24gPSB6XG5cdC5yZWNvcmQoei5zdHJpbmcoKS5taW4oMSksIHouc3RyaW5nKCkpXG5cdC5kZXNjcmliZShcIkxvY2FsaXplZCBkZXNjcmlwdGlvbnMgb2YgdGhlIG9yaWdpbnMgb2YgdGhlIHNpdGVsZW4gcG9uYSBnbHlwaHMgZm9yIFRva2kgUG9uYSB3b3Jkc1wiKTtcblxuZXhwb3J0IHR5cGUgU2l0ZWxlblBvbmFUcmFuc2xhdGlvbiA9IHouaW5mZXI8dHlwZW9mIFNpdGVsZW5Qb25hVHJhbnNsYXRpb24+O1xuXG5leHBvcnQgY29uc3QgRXR5bW9sb2d5VHJhbnNsYXRpb24gPSB6XG5cdC5yZWNvcmQoXG5cdFx0ei5zdHJpbmcoKS5taW4oMSksXG5cdFx0ei5hcnJheShcblx0XHRcdHoub2JqZWN0KHtcblx0XHRcdFx0ZGVmaW5pdGlvbjogelxuXHRcdFx0XHRcdC5zdHJpbmcoKVxuXHRcdFx0XHRcdC5vcHRpb25hbCgpXG5cdFx0XHRcdFx0LmRlc2NyaWJlKFwiVGhlIGxvY2FsaXplZCBkZWZpbml0aW9uIG9mIHRoZSByb290IHdvcmQgaW4gaXRzIG9yaWdpbiBsYW5ndWFnZVwiKSxcblx0XHRcdFx0bGFuZ3VhZ2U6IHpcblx0XHRcdFx0XHQuc3RyaW5nKClcblx0XHRcdFx0XHQuZGVzY3JpYmUoXCJUaGUgbG9jYWxpemVkIG5hbWUgb2YgdGhlIGxhbmd1YWdlIHRoaXMgd29yZCBvcmlnaW5hdGVkIGZyb21cIiksXG5cdFx0XHR9KSxcblx0XHQpLFxuXHQpXG5cdC5kZXNjcmliZShcIkxvY2FsaXplZCBldHltb2xvZ2ljYWwgdmFsdWVzIGZvciBUb2tpIFBvbmEgd29yZHNcIik7XG5cbmV4cG9ydCB0eXBlIEV0eW1vbG9neVRyYW5zbGF0aW9uID0gei5pbmZlcjx0eXBlb2YgRXR5bW9sb2d5VHJhbnNsYXRpb24+O1xuXG5leHBvcnQgY29uc3QgU2lnbiA9IHpcblx0Lm9iamVjdCh7XG5cdFx0ZGVmaW5pdGlvbjogei5zdHJpbmcoKS5kZXNjcmliZShcIlRoZSBkZWZpbml0aW9uIG9mIHRoZSBzaWduIGFzIGEgc2luZ2xlIHRva2kgcG9uYSB3b3JkLlwiKSxcblx0XHRpZDogei5zdHJpbmcoKS5kZXNjcmliZShcIkEgZ2xvYmFsbHkgdW5pcXVlIG5hbWUgZm9yIHRoZSBzaWduIHdoaWNoIGlzIGFsc28gYSBnbG9zcy5cIiksXG5cdFx0aXNfdHdvX2hhbmRlZDogei5ib29sZWFuKCkuZGVzY3JpYmUoXCJXaGV0aGVyIHRoZSBzaWduIGlzIHR3by1oYW5kZWQgb3Igbm90LlwiKSxcblx0XHRuZXdfZ2xvc3M6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJUaGUgbW9yZSByZWNlbnQsIHByZWZlcnJlZCBnbG9zcyBmb3IgdGhpcyBzaWduLlwiKSxcblx0XHRvbGRfZ2xvc3M6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJUaGUgb2xkZXIgZ2xvc3MgZm9yIHRoaXMgc2lnbiwgc2ltaWxhciB0byBgaWRgLlwiKSxcblx0XHRldHltb2xvZ3k6IHpcblx0XHRcdC5hcnJheShcblx0XHRcdFx0ei5vYmplY3Qoe1xuXHRcdFx0XHRcdGxhbmd1YWdlOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVGhlIGxhbmd1YWdlIG9mIHRoZSBzaWduLlwiKSxcblx0XHRcdFx0XHRzaWduOiB6XG5cdFx0XHRcdFx0XHQuc3RyaW5nKClcblx0XHRcdFx0XHRcdC5vcHRpb25hbCgpXG5cdFx0XHRcdFx0XHQuZGVzY3JpYmUoXG5cdFx0XHRcdFx0XHRcdFwiVGhlIG5hbWUgb2YgdGhlIHNpZ24gc3VjaCB0aGF0IGl0IGNvdWxkIGJlIGZvdW5kIGluIGEgc2lnbiBsYW5ndWFnZSBkaWN0aW9uYXJ5LlwiLFxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0fSksXG5cdFx0XHQpXG5cdFx0XHQuZGVzY3JpYmUoXCJVbmxvY2FsaXplZCBldHltb2xvZ2ljYWwgdmFsdWVzIHJlZ2FyZGluZyB0aGlzIHNpZ24ncyBvcmlnaW5cIiksXG5cdFx0c2lnbndyaXRpbmc6IHpcblx0XHRcdC5vYmplY3Qoe1xuXHRcdFx0XHRmc3c6IHpcblx0XHRcdFx0XHQuc3RyaW5nKClcblx0XHRcdFx0XHQuZGVzY3JpYmUoXG5cdFx0XHRcdFx0XHRcIlRoZSBbRm9ybWFsIFNpZ25Xcml0aW5nXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TaWduV3JpdGluZykgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNpZ24uXCIsXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0c3d1OiB6XG5cdFx0XHRcdFx0LnN0cmluZygpXG5cdFx0XHRcdFx0LmRlc2NyaWJlKFxuXHRcdFx0XHRcdFx0XCJUaGUgW1NpZ25Xcml0aW5nIHdpdGggVW5pY29kZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2lnbldyaXRpbmcpIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzaWduLlwiLFxuXHRcdFx0XHRcdCksXG5cdFx0XHR9KVxuXHRcdFx0LmRlc2NyaWJlKFwiU2NyaXB0cyBmb3IgcmVwcmVzZW50aW5nIGEgc2lnbiBhcyBjaGFyYWN0ZXJzLlwiKSxcblx0XHR2aWRlbzogelxuXHRcdFx0Lm9iamVjdCh7XG5cdFx0XHRcdGdpZjogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQSBsaW5rIHRvIGEgZ2lmIG9mIHRoZSBzaWduIGJlaW5nIHNpZ25lZC5cIiksXG5cdFx0XHRcdG1wNDogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiYSBsaW5rIHRvIGFuIG1wNCBvZiB0aGUgc2lnbiBiZWluZyBzaWduZWQuXCIpLFxuXHRcdFx0fSlcblx0XHRcdC5kZXNjcmliZShcIlZpZGVvcyBvZiB0aGUgc2lnbiBiZWluZyBwZXJmb3JtZWQsIGJ5IGZvcm1hdC5cIiksXG5cdH0pXG5cdC5kZXNjcmliZShcIlVubG9jYWxpemVkIGluZm8gb24gYSBMdWthIFBvbmEgc2lnblwiKTtcblxuZXhwb3J0IHR5cGUgU2lnbiA9IHouaW5mZXI8dHlwZW9mIFNpZ24+O1xuXG5leHBvcnQgY29uc3QgRmluZ2Vyc3BlbGxpbmdTaWduID0gelxuXHQub2JqZWN0KHtcblx0XHRpZDogei5zdHJpbmcoKS5kZXNjcmliZShcIkEgZ2xvYmFsbHkgdW5pcXVlIG5hbWUgZm9yIHRoZSBzaWduIHdoaWNoIGlzIGFsc28gYSBnbG9zcy5cIiksXG5cdFx0aXNfdHdvX2hhbmRlZDogei5ib29sZWFuKCkuZGVzY3JpYmUoXCJXaGV0aGVyIHRoZSBzaWduIGlzIHR3by1oYW5kZWQgb3Igbm90LlwiKSxcblx0XHRldHltb2xvZ3k6IHpcblx0XHRcdC5hcnJheShcblx0XHRcdFx0ei5vYmplY3Qoe1xuXHRcdFx0XHRcdGxhbmd1YWdlOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVGhlIGxhbmd1YWdlIG9mIHRoZSBzaWduLlwiKSxcblx0XHRcdFx0XHRzaWduOiB6XG5cdFx0XHRcdFx0XHQuc3RyaW5nKClcblx0XHRcdFx0XHRcdC5kZXNjcmliZShcblx0XHRcdFx0XHRcdFx0XCJUaGUgbmFtZSBvZiB0aGUgc2lnbiBzdWNoIHRoYXQgaXQgY291bGQgYmUgZm91bmQgaW4gYSBzaWduIGxhbmd1YWdlIGRpY3Rpb25hcnkuXCIsXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHR9KSxcblx0XHRcdClcblx0XHRcdC5kZXNjcmliZShcIlVubG9jYWxpemVkIGV0eW1vbG9naWNhbCB2YWx1ZXMgcmVnYXJkaW5nIHRoaXMgc2lnbidzIG9yaWdpblwiKSxcblx0XHRzaWdud3JpdGluZzogelxuXHRcdFx0Lm9iamVjdCh7XG5cdFx0XHRcdGZzdzogei5zdHJpbmcoKS5kZXNjcmliZShcIlRoZSBGb3JtYWwgU2lnbiBXcml0aW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzaWduLlwiKSxcblx0XHRcdFx0c3d1OiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVGhlIFNpZ24gV3JpdGluZyB3aXRoIFVuaWNvZGUgcmVwcmVzZW50YXRpb24gb2YgaHRlIHNpZ24uXCIpLFxuXHRcdFx0fSlcblx0XHRcdC5kZXNjcmliZShcIlNjcmlwdHMgZm9yIHJlcHJlc2VudGluZyBhIHNpZ24gYXMgY2hhcmFjdGVycy5cIiksXG5cdFx0dmlkZW86IHpcblx0XHRcdC5vYmplY3Qoe1xuXHRcdFx0XHRnaWY6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkEgbGluayB0byBhIGdpZiBvZiB0aGUgc2lnbiBiZWluZyBzaWduZWQuXCIpLFxuXHRcdFx0XHRtcDQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcImEgbGluayB0byBhbiBtcDQgb2YgdGhlIHNpZ24gYmVpbmcgc2lnbmVkLlwiKSxcblx0XHRcdH0pXG5cdFx0XHQuZGVzY3JpYmUoXCJWaWRlb3Mgb2YgdGhlIHNpZ24gYmVpbmcgcGVyZm9ybWVkLCBieSBmb3JtYXQuXCIpLFxuXHR9KVxuXHQuZGVzY3JpYmUoXCJVbmxvY2FsaXplZCBpbmZvIG9uIGEgZmluZ2Vyc3BlbGxpbmcgc2lnbi5cIik7XG5cbmV4cG9ydCB0eXBlIEZpbmdlcnNwZWxsaW5nU2lnbiA9IHouaW5mZXI8dHlwZW9mIEZpbmdlcnNwZWxsaW5nU2lnbj47XG5cbmV4cG9ydCBjb25zdCBQYXJhbWV0ZXJzVHJhbnNsYXRpb24gPSB6XG5cdC5yZWNvcmQoXG5cdFx0ei5zdHJpbmcoKS5taW4oMSksXG5cdFx0ei5vYmplY3Qoe1xuXHRcdFx0aGFuZHNoYXBlOiB6XG5cdFx0XHRcdC5zdHJpbmcoKVxuXHRcdFx0XHQub3B0aW9uYWwoKVxuXHRcdFx0XHQuZGVzY3JpYmUoXG5cdFx0XHRcdFx0XCJUaGUgc2hhcGUgb2YgdGhlIGhhbmQgd2hlbiBzaWduaW5nLCBpZGVudGlmaWVkIGJ5IGl0cyBuYW1lIGluIEFTTC4gU2hvdWxkIG5vdCBiZSB0cmFuc2xhdGVkIGluIGFueSBsYW5ndWFnZSBvdGhlciB0aGFuIFRva2kgUG9uYVwiLFxuXHRcdFx0XHQpLFxuXHRcdFx0bW92ZW1lbnQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSBtb3Rpb24gb2YgdGhlIGhhbmQgd2hlbiBzaWduaW5nLlwiKSxcblx0XHRcdHBsYWNlbWVudDogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIHBsYWNlbWVudCBvZiB0aGUgaGFuZCB3aGVuIHNpZ25pbmcuXCIpLFxuXHRcdFx0b3JpZW50YXRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSBvcmllbnRhdGlvbiBvZiB0aGUgaGFuZCB3aGVuIHNpZ25pbmcuXCIpLFxuXHRcdH0pLFxuXHQpXG5cdC5kZXNjcmliZShcIlBhcnRseSBsb2NhbGl6ZWQgZGVzY3JpcHRpb25zIG9mIGhvdyBhIHNpZ24gaXMgc2lnbmVkLlwiKTtcblxuZXhwb3J0IHR5cGUgUGFyYW1ldGVyc1RyYW5zbGF0aW9uID0gei5pbmZlcjx0eXBlb2YgUGFyYW1ldGVyc1RyYW5zbGF0aW9uPjtcblxuZXhwb3J0IGNvbnN0IEljb25UcmFuc2xhdGlvbiA9IHpcblx0LnJlY29yZCh6LnN0cmluZygpLm1pbigxKSwgei5zdHJpbmcoKSlcblx0LmRlc2NyaWJlKFwiTG9jYWxpemVkIGRlc2NyaXB0aW9ucyBvZiB0aGUgdGhpbmcgYSBzaWduIHJlcHJlc2VudHMuXCIpO1xuXG5leHBvcnQgdHlwZSBJY29uVHJhbnNsYXRpb24gPSB6LmluZmVyPHR5cGVvZiBJY29uVHJhbnNsYXRpb24+O1xuXG5leHBvcnQgY29uc3QgRm9udCA9IHpcblx0Lm9iamVjdCh7XG5cdFx0aWQ6IHouc3RyaW5nKCkubWluKDEpLmRlc2NyaWJlKFwiVGhlIGZvbnQncyB1bmlxdWUgSUQsIGlkZW50aWZ5aW5nIGl0IGFtb25nIG90aGVyIGZvbnRzXCIpLFxuXHRcdGNyZWF0b3I6IHouYXJyYXkoei5zdHJpbmcoKSkuZGVzY3JpYmUoXCJhIGxpc3Qgb2YgdGhpcyBmb250J3MgY3JlYXRvcnNcIiksXG5cdFx0ZmVhdHVyZXM6IHouYXJyYXkoei5zdHJpbmcoKSkuZGVzY3JpYmUoXCJhIGxpc3Qgb2YgZmVhdHVyZXMgdGhpcyBmb250IHN1cHBvcnRzXCIpLFxuXHRcdGZpbGVuYW1lOiB6XG5cdFx0XHQuc3RyaW5nKClcblx0XHRcdC5yZWdleCgvXig/Oi4rXFwuKHR0ZnxvdGZ8d29mZjJ8d29mZikpPyQvKVxuXHRcdFx0LmRlc2NyaWJlKFwidGhlIG5hbWUgb2YgdGhlIGZpbGUgdGhpcyBmb250IGlzIHN0b3JlZCBpbiBhdCBodHRwczovL2dpdGh1Yi5jb20vbGlwdS1saW5rdS9pam9cIiksXG5cdFx0bGFzdF91cGRhdGVkOiBZZWFyTW9udGgub3B0aW9uYWwoKS5kZXNjcmliZShcInRoZSByb3VnaCBkYXRlIG9mIHRoaXMgZm9udCdzIGxhc3QgdXBkYXRlXCIpLFxuXHRcdGxpY2Vuc2U6IHpcblx0XHRcdC5zdHJpbmcoKVxuXHRcdFx0LmRlc2NyaWJlKFwiYW4gU1BEWCBleHByZXNzaW9uIGRlc2NyaWJpbmcgdGhpcyBmb250J3MgbGljZW5zZTogaHR0cHM6Ly9zcGR4Lm9yZy9saWNlbnNlcy9cIiksXG5cdFx0bGlnYXR1cmVzOiB6LmJvb2xlYW4oKS5kZXNjcmliZShcIndoZXRoZXIgdGhpcyBmb250IHN1cHBvcnRzIGxpZ2F0dXJlc1wiKSxcblx0XHRuYW1lOiB6LnN0cmluZygpLm1pbigxKS5kZXNjcmliZShcInRoaXMgZm9udCdzIG5hbWVcIiksXG5cdFx0c3R5bGU6IHouc3RyaW5nKCkubWluKDEpLmRlc2NyaWJlKFwidGhlIGdlbmVyYWwgc3R5bGUgb2YgdGhpcyBmb250XCIpLFxuXHRcdHVjc3VyOiB6XG5cdFx0XHQuYm9vbGVhbigpXG5cdFx0XHQuZGVzY3JpYmUoXG5cdFx0XHRcdFwid2hldGhlciB0aGlzIGZvbnQgY29uZm9ybXMgdG8gdGhlIFVDU1VSIHN0YW5kYXJkOiBodHRwczovL3d3dy5rcmVhdGl2ZWtvcnAuY29tL3Vjc3VyL2NoYXJ0cy9zaXRlbGVuLmh0bWxcIixcblx0XHRcdCksXG5cdFx0dmVyc2lvbjogei5zdHJpbmcoKS5kZXNjcmliZShcInRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhpcyBmb250XCIpLFxuXHRcdHdyaXRpbmdfc3lzdGVtOiBXcml0aW5nU3lzdGVtLmRlc2NyaWJlKFwidGhlIHdyaXRpbmcgc3lzdGVtIHRoaXMgZm9udCB1c2VzIGFzIGl0cyBzY3JpcHRcIiksXG5cdFx0bGlua3M6IHoub2JqZWN0KHtcblx0XHRcdGZvbnRmaWxlOiB6XG5cdFx0XHRcdC5zdHJpbmcoKVxuXHRcdFx0XHQudXJsKClcblx0XHRcdFx0Lm9wdGlvbmFsKClcblx0XHRcdFx0LmRlc2NyaWJlKFxuXHRcdFx0XHRcdFwiYSBsaW5rIHRvIHRoZSBmb250IGZpbGUgcHVibGlzaGVkIGJ5IHRoZSBvcmlnaW5hbCBhdXRob3IgKG5vdCB0aGUgbWlycm9yIG9uIHRoZSBMaW5rdSBQcm9qZWN0J3MgR2l0SHViKVwiLFxuXHRcdFx0XHQpLFxuXHRcdFx0cmVwbzogelxuXHRcdFx0XHQuc3RyaW5nKClcblx0XHRcdFx0LnVybCgpXG5cdFx0XHRcdC5vcHRpb25hbCgpXG5cdFx0XHRcdC5kZXNjcmliZShcblx0XHRcdFx0XHRcImEgbGluayB0byBhIHdlYiBob3N0ZWQgcmVwb3NpdG9yeSBvZiB0aGlzIGZvbnQncyBzb3VyY2UgZmlsZXMgKHVzdWFsbHkgaG9zdGVkIG9uIEdpdEh1YiBvciBHaXRMYWIpXCIsXG5cdFx0XHRcdCksXG5cdFx0XHR3ZWJwYWdlOiB6XG5cdFx0XHRcdC5zdHJpbmcoKVxuXHRcdFx0XHQudXJsKClcblx0XHRcdFx0Lm9wdGlvbmFsKClcblx0XHRcdFx0LmRlc2NyaWJlKFxuXHRcdFx0XHRcdFwiYSBsaW5rIHRvIHRoaXMgZm9udCdzIGhvbWUgcGFnZSwgdXN1YWxseSBzaG93Y2FzaW5nIGl0cyBmZWF0dXJlcyBhbmQgdXNhZ2UvaW5zdGFsbGF0aW9uXCIsXG5cdFx0XHRcdCksXG5cdFx0fSksXG5cdH0pXG5cdC5kZXNjcmliZShcIkluZm8gb24gYSBmb250IGZvciBUb2tpIFBvbmFcIik7XG5leHBvcnQgdHlwZSBGb250ID0gei5pbmZlcjx0eXBlb2YgRm9udD47XG5cbmV4cG9ydCBjb25zdCBXb3JkcyA9IHpcblx0LnJlY29yZChcblx0XHR6LnN0cmluZygpLm1pbigxKSxcblx0XHRXb3JkLmV4dGVuZCh7XG5cdFx0XHR0cmFuc2xhdGlvbnM6IHoucmVjb3JkKFxuXHRcdFx0XHR6Lm9iamVjdCh7XG5cdFx0XHRcdFx0Y29tbWVudGFyeTogQ29tbWVudGFyeVRyYW5zbGF0aW9uLnZhbHVlU2NoZW1hLFxuXHRcdFx0XHRcdGRlZmluaXRpb246IERlZmluaXRpb25UcmFuc2xhdGlvbi52YWx1ZVNjaGVtYSxcblx0XHRcdFx0XHRldHltb2xvZ3k6IEV0eW1vbG9neVRyYW5zbGF0aW9uLnZhbHVlU2NoZW1hLFxuXHRcdFx0XHRcdHNwX2V0eW1vbG9neTogU2l0ZWxlblBvbmFUcmFuc2xhdGlvbi52YWx1ZVNjaGVtYSxcblx0XHRcdFx0fSksXG5cdFx0XHQpLFxuXHRcdH0pLFxuXHQpXG5cdC5kZXNjcmliZShcIkEgcmF3IGRhdGEgb2JqZWN0IGNvbnRhaW5pbmcgZGljdGlvbmFyeSBpbmZvIGFib3V0IFRva2kgUG9uYSB3b3Jkc1wiKTtcbmV4cG9ydCB0eXBlIFdvcmRzID0gei5pbmZlcjx0eXBlb2YgV29yZHM+O1xuZXhwb3J0IHR5cGUgTG9jYWxpemVkV29yZCA9IFdvcmRzW3N0cmluZ107XG5cbmV4cG9ydCBjb25zdCBTaWducyA9IHpcblx0LnJlY29yZChcblx0XHR6LnN0cmluZygpLm1pbigxKSxcblx0XHRTaWduLmV4dGVuZCh7XG5cdFx0XHR0cmFuc2xhdGlvbnM6IHoucmVjb3JkKFxuXHRcdFx0XHR6Lm9iamVjdCh7XG5cdFx0XHRcdFx0cGFyYW1ldGVyczogUGFyYW1ldGVyc1RyYW5zbGF0aW9uLnZhbHVlU2NoZW1hLFxuXHRcdFx0XHRcdGljb25zOiBJY29uVHJhbnNsYXRpb24udmFsdWVTY2hlbWEsXG5cdFx0XHRcdH0pLFxuXHRcdFx0KSxcblx0XHR9KSxcblx0KVxuXHQuZGVzY3JpYmUoXCJBIHJhdyBkYXRhIG9iamVjdCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IEx1a2EgUG9uYSBzaWduc1wiKTtcbmV4cG9ydCB0eXBlIFNpZ25zID0gei5pbmZlcjx0eXBlb2YgU2lnbnM+O1xuZXhwb3J0IHR5cGUgTG9jYWxpemVkU2lnbiA9IFNpZ25zW3N0cmluZ107XG5cbmV4cG9ydCBjb25zdCBGaW5nZXJzcGVsbGluZyA9IHpcblx0LnJlY29yZChcblx0XHR6LnN0cmluZygpLm1pbigxKSxcblx0XHRGaW5nZXJzcGVsbGluZ1NpZ24uZXh0ZW5kKHtcblx0XHRcdHRyYW5zbGF0aW9uczogei5yZWNvcmQoei5vYmplY3QoeyBwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzVHJhbnNsYXRpb24udmFsdWVTY2hlbWEgfSkpLFxuXHRcdH0pLFxuXHQpXG5cdC5kZXNjcmliZShcIkEgcmF3IGRhdGEgb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgTHVrYSBQb25hIGZpbmdlcnNwZWxsaW5nIHNpZ25zXCIpO1xuZXhwb3J0IHR5cGUgRmluZ2Vyc3BlbGxpbmcgPSB6LmluZmVyPHR5cGVvZiBGaW5nZXJzcGVsbGluZz47XG5leHBvcnQgdHlwZSBMb2NhbGl6ZWRGaW5nZXJzcGVsbGluZ1NpZ24gPSBGaW5nZXJzcGVsbGluZ1tzdHJpbmddO1xuXG5leHBvcnQgY29uc3QgRm9udHMgPSB6XG5cdC5yZWNvcmQoRm9udClcblx0LmRlc2NyaWJlKFwiQSByYXcgZGF0YSBvYmplY3QgY29udGFpbmluZyBhbGwgdGhlIGZvbnRzIGRhdGEgaW4gc29uYVwiKTtcbmV4cG9ydCB0eXBlIEZvbnRzID0gei5pbmZlcjx0eXBlb2YgRm9udHM+O1xuXG5leHBvcnQgY29uc3QgTGFuZ3VhZ2VzID0gei5yZWNvcmQoXG5cdHpcblx0XHQuc3RyaW5nKClcblx0XHQubWluKDIpXG5cdFx0LmRlc2NyaWJlKFwiVGhlIGxhbmd1YWdlIGNvZGUgdXNlZCBieSBDcm93ZGluLiBBcHByb3hpbWF0ZXMgMiBsZXR0ZXIgY29kZSAtPiAzIGxldHRlciBjb2RlLlwiKSxcblx0elxuXHRcdC5vYmplY3Qoe1xuXHRcdFx0aWQ6IHpcblx0XHRcdFx0LnN0cmluZygpXG5cdFx0XHRcdC5taW4oMilcblx0XHRcdFx0LmRlc2NyaWJlKFxuXHRcdFx0XHRcdFwiVGhlIGxhbmd1YWdlIGNvZGUgdXNlZCBieSBDcm93ZGluLiBBcHByb3hpbWF0ZXMgMiBsZXR0ZXIgY29kZSAtPiAzIGxldHRlciBjb2RlLlwiLFxuXHRcdFx0XHQpLFxuXHRcdFx0bG9jYWxlOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVGhlIGxvY2FsZSBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGxhbmd1YWdlLlwiKSxcblx0XHRcdGRpcmVjdGlvbjogelxuXHRcdFx0XHQudW5pb24oW3oubGl0ZXJhbChcImx0clwiKSwgei5saXRlcmFsKFwicnRsXCIpXSlcblx0XHRcdFx0LmRlc2NyaWJlKFwiVGhlIGRpcmVjdGlvbiBvZiB0aGUgbGFuZ3VhZ2UncyBzY3JpcHQuXCIpLFxuXHRcdFx0bmFtZTogei5vYmplY3Qoe1xuXHRcdFx0XHRlbjogei5zdHJpbmcoKS5kZXNjcmliZShcIlRoZSBuYW1lIG9mIHRoZSBsYW5ndWFnZSBpbiBFbmdsaXNoLlwiKSxcblx0XHRcdFx0Ly8gVGhlc2UgYXJlIG9wdGlvbmFsIGJlY2F1c2Ugd2UgY2FuIGFkZCBhIGxhbmd1YWdlIHZpYSBDcm93ZGluIGFuZCBDcm93ZGluIGRvZXNuJ3QgcHJvdmlkZSB0aGVzZS5cblx0XHRcdFx0Ly8gRG93bnN0cmVhbSBwcm9qZWN0cyBzaG91bGQgcHJlZmVyIGVuZG9ueW0gb3ZlciBuYW1lX2VuIGlmIGJvdGggYXJlIGF2YWlsYWJsZS5cblx0XHRcdFx0dG9rOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaGUgbmFtZSBvZiB0aGUgbGFuZ3VhZ2UgaW4gVG9raSBQb25hLlwiKSxcblx0XHRcdFx0ZW5kb255bTogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIG5hbWUgb2YgdGhlIGxhbmd1YWdlIGluIHRoYXQgbGFuZ3VhZ2UuXCIpLFxuXHRcdFx0fSksXG5cdFx0XHQvLyBUT0RPOiBjb21wbGV0aW9uIHBlcmNlbnRhZ2Ugb24gYSBwZXItZmlsZSBiYXNpcz9cblx0XHRcdC8vIHdlIGFsc28gY2FyZSBhYm91dCBjb21wbGV0aW9uIHdpdGhpbiB1c2FnZSBjYXRlZ29yaWVzLCBzaW5jZSB0aGUgbW9zdCBpbXBvcnRhbnQgd29yZHMgYXJlIGNvcmUrd2lkZXNwcmVhZCtjb21tb25cblx0XHR9KVxuXHRcdC5kZXNjcmliZShcIlRoZSBsYW5ndWFnZXMgb2ZmZXJlZCBieSBzb25hIExpbmt1LlwiKSxcbik7XG5leHBvcnQgdHlwZSBMYW5ndWFnZXMgPSB6LmluZmVyPHR5cGVvZiBMYW5ndWFnZXM+O1xuZXhwb3J0IHR5cGUgTGFuZ3VhZ2UgPSBMYW5ndWFnZXNbc3RyaW5nXTtcbiJdLCJuYW1lcyI6WyJZZWFyTW9udGgiLCJ6IiwiV29yZCIsIkJvb2siLCJDb2luZWRFcmEiLCJVc2FnZUNhdGVnb3J5IiwiQ29tbWVudGFyeVRyYW5zbGF0aW9uIiwiRGVmaW5pdGlvblRyYW5zbGF0aW9uIiwiU2l0ZWxlblBvbmFUcmFuc2xhdGlvbiIsIkV0eW1vbG9neVRyYW5zbGF0aW9uIiwiU2lnbiIsIkZpbmdlcnNwZWxsaW5nU2lnbiIsIlBhcmFtZXRlcnNUcmFuc2xhdGlvbiIsIkljb25UcmFuc2xhdGlvbiIsIkZvbnQiLCJXcml0aW5nU3lzdGVtIiwiV29yZHMiLCJTaWducyIsIkZpbmdlcnNwZWxsaW5nIiwiRm9udHMiLCJMYW5ndWFnZXMiXSwibWFwcGluZ3MiOiI7QUFLQSxNQUFNQSxJQUFZQyxFQUFFLE9BQU8sRUFBRSxNQUFNLDRCQUE0QixHQUVsREMsSUFBT0QsRUFDbEIsT0FBTztBQUFBLEVBQ1AsSUFBSUEs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
|