@payloadcms/db-postgres 0.7.1 → 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/count.d.ts +3 -0
- package/dist/count.d.ts.map +1 -0
- package/dist/count.js +68 -0
- package/dist/create.d.ts.map +1 -1
- package/dist/create.js +7 -9
- package/dist/createGlobal.d.ts +1 -1
- package/dist/createGlobal.d.ts.map +1 -1
- package/dist/createGlobal.js +8 -10
- package/dist/createGlobalVersion.d.ts +1 -1
- package/dist/createGlobalVersion.d.ts.map +1 -1
- package/dist/createGlobalVersion.js +12 -14
- package/dist/createVersion.d.ts.map +1 -1
- package/dist/createVersion.js +22 -19
- package/dist/deleteMany.js +6 -8
- package/dist/deleteOne.d.ts.map +1 -1
- package/dist/deleteOne.js +6 -3
- package/dist/deleteVersions.d.ts.map +1 -1
- package/dist/deleteVersions.js +7 -8
- package/dist/find/buildFindManyArgs.js +3 -3
- package/dist/find/findMany.js +2 -2
- package/dist/find/traverseFields.d.ts.map +1 -1
- package/dist/find/traverseFields.js +23 -11
- package/dist/find.d.ts.map +1 -1
- package/dist/find.js +10 -11
- package/dist/findGlobal.d.ts.map +1 -1
- package/dist/findGlobal.js +7 -9
- package/dist/findGlobalVersions.d.ts.map +1 -1
- package/dist/findGlobalVersions.js +7 -8
- package/dist/findOne.d.ts +1 -1
- package/dist/findOne.d.ts.map +1 -1
- package/dist/findOne.js +9 -10
- package/dist/findVersions.d.ts.map +1 -1
- package/dist/findVersions.js +7 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +28 -15
- package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
- package/dist/queries/getTableColumnFromPath.js +148 -42
- package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
- package/dist/queries/sanitizeQueryValue.js +5 -2
- package/dist/queryDrafts.d.ts.map +1 -1
- package/dist/queryDrafts.js +7 -8
- package/dist/schema/build.d.ts +2 -1
- package/dist/schema/build.d.ts.map +1 -1
- package/dist/schema/build.js +19 -14
- package/dist/schema/getTableName.d.ts +32 -0
- package/dist/schema/getTableName.d.ts.map +1 -0
- package/dist/schema/getTableName.js +43 -0
- package/dist/schema/traverseFields.d.ts +2 -1
- package/dist/schema/traverseFields.d.ts.map +1 -1
- package/dist/schema/traverseFields.js +54 -18
- package/dist/schema/validateExistingBlockIsIdentical.d.ts +2 -1
- package/dist/schema/validateExistingBlockIsIdentical.d.ts.map +1 -1
- package/dist/schema/validateExistingBlockIsIdentical.js +14 -8
- package/dist/transform/write/blocks.d.ts +2 -2
- package/dist/transform/write/blocks.d.ts.map +1 -1
- package/dist/transform/write/blocks.js +4 -4
- package/dist/transform/write/traverseFields.d.ts +2 -2
- package/dist/transform/write/traverseFields.d.ts.map +1 -1
- package/dist/transform/write/traverseFields.js +34 -25
- package/dist/types.d.ts +13 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/update.d.ts.map +1 -1
- package/dist/update.js +7 -4
- package/dist/updateGlobal.d.ts +1 -1
- package/dist/updateGlobal.d.ts.map +1 -1
- package/dist/updateGlobal.js +9 -11
- package/dist/updateGlobalVersion.d.ts.map +1 -1
- package/dist/updateGlobalVersion.js +9 -5
- package/dist/updateVersion.d.ts.map +1 -1
- package/dist/updateVersion.js +9 -5
- package/dist/upsertRow/index.d.ts.map +1 -1
- package/dist/upsertRow/index.js +7 -6
- package/dist/upsertRow/insertArrays.d.ts.map +1 -1
- package/dist/upsertRow/insertArrays.js +3 -3
- package/dist/upsertRow/types.d.ts +1 -1
- package/dist/upsertRow/types.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/init.js
CHANGED
@@ -10,13 +10,8 @@ Object.defineProperty(exports, "init", {
|
|
10
10
|
});
|
11
11
|
const _pgcore = require("drizzle-orm/pg-core");
|
12
12
|
const _versions = require("payload/versions");
|
13
|
-
const _tosnakecase = /*#__PURE__*/ _interop_require_default(require("to-snake-case"));
|
14
13
|
const _build = require("./schema/build");
|
15
|
-
|
16
|
-
return obj && obj.__esModule ? obj : {
|
17
|
-
default: obj
|
18
|
-
};
|
19
|
-
}
|
14
|
+
const _getTableName = require("./schema/getTableName");
|
20
15
|
const init = async function init() {
|
21
16
|
if (this.schemaName) {
|
22
17
|
this.pgSchema = (0, _pgcore.pgSchema)(this.schemaName);
|
@@ -29,7 +24,10 @@ const init = async function init() {
|
|
29
24
|
this.enums.enum__locales = (0, _pgcore.pgEnum)('_locales', this.payload.config.localization.locales.map(({ code })=>code));
|
30
25
|
}
|
31
26
|
this.payload.config.collections.forEach((collection)=>{
|
32
|
-
const tableName = (0,
|
27
|
+
const tableName = (0, _getTableName.getTableName)({
|
28
|
+
adapter: this,
|
29
|
+
config: collection
|
30
|
+
});
|
33
31
|
(0, _build.buildTable)({
|
34
32
|
adapter: this,
|
35
33
|
buildNumbers: true,
|
@@ -39,10 +37,15 @@ const init = async function init() {
|
|
39
37
|
disableUnique: false,
|
40
38
|
fields: collection.fields,
|
41
39
|
tableName,
|
42
|
-
timestamps: collection.timestamps
|
40
|
+
timestamps: collection.timestamps,
|
41
|
+
versions: false
|
43
42
|
});
|
44
43
|
if (collection.versions) {
|
45
|
-
const versionsTableName =
|
44
|
+
const versionsTableName = (0, _getTableName.getTableName)({
|
45
|
+
adapter: this,
|
46
|
+
config: collection,
|
47
|
+
versions: true
|
48
|
+
});
|
46
49
|
const versionFields = (0, _versions.buildVersionCollectionFields)(collection);
|
47
50
|
(0, _build.buildTable)({
|
48
51
|
adapter: this,
|
@@ -53,12 +56,16 @@ const init = async function init() {
|
|
53
56
|
disableUnique: true,
|
54
57
|
fields: versionFields,
|
55
58
|
tableName: versionsTableName,
|
56
|
-
timestamps: true
|
59
|
+
timestamps: true,
|
60
|
+
versions: true
|
57
61
|
});
|
58
62
|
}
|
59
63
|
});
|
60
64
|
this.payload.config.globals.forEach((global)=>{
|
61
|
-
const tableName = (0,
|
65
|
+
const tableName = (0, _getTableName.getTableName)({
|
66
|
+
adapter: this,
|
67
|
+
config: global
|
68
|
+
});
|
62
69
|
(0, _build.buildTable)({
|
63
70
|
adapter: this,
|
64
71
|
buildNumbers: true,
|
@@ -68,10 +75,15 @@ const init = async function init() {
|
|
68
75
|
disableUnique: false,
|
69
76
|
fields: global.fields,
|
70
77
|
tableName,
|
71
|
-
timestamps: false
|
78
|
+
timestamps: false,
|
79
|
+
versions: false
|
72
80
|
});
|
73
81
|
if (global.versions) {
|
74
|
-
const versionsTableName =
|
82
|
+
const versionsTableName = (0, _getTableName.getTableName)({
|
83
|
+
adapter: this,
|
84
|
+
config: global,
|
85
|
+
versions: true
|
86
|
+
});
|
75
87
|
const versionFields = (0, _versions.buildVersionGlobalFields)(global);
|
76
88
|
(0, _build.buildTable)({
|
77
89
|
adapter: this,
|
@@ -82,10 +94,11 @@ const init = async function init() {
|
|
82
94
|
disableUnique: true,
|
83
95
|
fields: versionFields,
|
84
96
|
tableName: versionsTableName,
|
85
|
-
timestamps: true
|
97
|
+
timestamps: true,
|
98
|
+
versions: true
|
86
99
|
});
|
87
100
|
}
|
88
101
|
});
|
89
102
|
};
|
90
103
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbml0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG5pbXBvcnQgdHlwZSB7IEluaXQgfSBmcm9tICdwYXlsb2FkL2RhdGFiYXNlJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHsgcGdFbnVtLCBwZ1NjaGVtYSwgcGdUYWJsZSB9IGZyb20gJ2RyaXp6bGUtb3JtL3BnLWNvcmUnXG5pbXBvcnQgeyBidWlsZFZlcnNpb25Db2xsZWN0aW9uRmllbGRzLCBidWlsZFZlcnNpb25HbG9iYWxGaWVsZHMgfSBmcm9tICdwYXlsb2FkL3ZlcnNpb25zJ1xuXG5pbXBvcnQgdHlwZSB7IFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4vdHlwZXMnXG5cbmltcG9ydCB7IGJ1aWxkVGFibGUgfSBmcm9tICcuL3NjaGVtYS9idWlsZCdcbmltcG9ydCB7IGdldFRhYmxlTmFtZSB9IGZyb20gJy4vc2NoZW1hL2dldFRhYmxlTmFtZSdcblxuZXhwb3J0IGNvbnN0IGluaXQ6IEluaXQgPSBhc3luYyBmdW5jdGlvbiBpbml0KHRoaXM6IFBvc3RncmVzQWRhcHRlcikge1xuICBpZiAodGhpcy5zY2hlbWFOYW1lKSB7XG4gICAgdGhpcy5wZ1NjaGVtYSA9IHBnU2NoZW1hKHRoaXMuc2NoZW1hTmFtZSlcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnBnU2NoZW1hID0geyB0YWJsZTogcGdUYWJsZSB9XG4gIH1cblxuICBpZiAodGhpcy5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICB0aGlzLmVudW1zLmVudW1fX2xvY2FsZXMgPSBwZ0VudW0oXG4gICAgICAnX2xvY2FsZXMnLFxuICAgICAgdGhpcy5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24ubG9jYWxlcy5tYXAoKHsgY29kZSB9KSA9PiBjb2RlKSBhcyBbc3RyaW5nLCAuLi5zdHJpbmdbXV0sXG4gICAgKVxuICB9XG5cbiAgdGhpcy5wYXlsb2FkLmNvbmZpZy5jb2xsZWN0aW9ucy5mb3JFYWNoKChjb2xsZWN0aW9uOiBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnKSA9PiB7XG4gICAgY29uc3QgdGFibGVOYW1lID0gZ2V0VGFibGVOYW1lKHtcbiAgICAgIGFkYXB0ZXI6IHRoaXMsXG4gICAgICBjb25maWc6IGNvbGxlY3Rpb24sXG4gICAgfSlcblxuICAgIGJ1aWxkVGFibGUoe1xuICAgICAgYWRhcHRlcjogdGhpcyxcbiAgICAgIGJ1aWxkTnVtYmVyczogdHJ1ZSxcbiAgICAgIGJ1aWxkUmVsYXRpb25zaGlwczogdHJ1ZSxcbiAgICAgIGJ1aWxkVGV4dHM6IHRydWUsXG4gICAgICBkaXNhYmxlTm90TnVsbDogISFjb2xsZWN0aW9uPy52ZXJzaW9ucz8uZHJhZnRzLFxuICAgICAgZGlzYWJsZVVuaXF1ZTogZmFsc2UsXG4gICAgICBmaWVsZHM6IGNvbGxlY3Rpb24uZmllbGRzLFxuICAgICAgdGFibGVOYW1lLFxuICAgICAgdGltZXN0YW1wczogY29sbGVjdGlvbi50aW1lc3RhbXBzLFxuICAgICAgdmVyc2lvbnM6IGZhbHNlLFxuICAgIH0pXG5cbiAgICBpZiAoY29sbGVjdGlvbi52ZXJzaW9ucykge1xuICAgICAgY29uc3QgdmVyc2lvbnNUYWJsZU5hbWUgPSBnZXRUYWJsZU5hbWUoe1xuICAgICAgICBhZGFwdGVyOiB0aGlzLFxuICAgICAgICBjb25maWc6IGNvbGxlY3Rpb24sXG4gICAgICAgIHZlcnNpb25zOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIGNvbnN0IHZlcnNpb25GaWVsZHMgPSBidWlsZFZlcnNpb25Db2xsZWN0aW9uRmllbGRzKGNvbGxlY3Rpb24pXG5cbiAgICAgIGJ1aWxkVGFibGUoe1xuICAgICAgICBhZGFwdGVyOiB0aGlzLFxuICAgICAgICBidWlsZE51bWJlcnM6IHRydWUsXG4gICAgICAgIGJ1aWxkUmVsYXRpb25zaGlwczogdHJ1ZSxcbiAgICAgICAgYnVpbGRUZXh0czogdHJ1ZSxcbiAgICAgICAgZGlzYWJsZU5vdE51bGw6ICEhY29sbGVjdGlvbi52ZXJzaW9ucz8uZHJhZnRzLFxuICAgICAgICBkaXNhYmxlVW5pcXVlOiB0cnVlLFxuICAgICAgICBmaWVsZHM6IHZlcnNpb25GaWVsZHMsXG4gICAgICAgIHRhYmxlTmFtZTogdmVyc2lvbnNUYWJsZU5hbWUsXG4gICAgICAgIHRpbWVzdGFtcHM6IHRydWUsXG4gICAgICAgIHZlcnNpb25zOiB0cnVlLFxuICAgICAgfSlcbiAgICB9XG4gIH0pXG5cbiAgdGhpcy5wYXlsb2FkLmNvbmZpZy5nbG9iYWxzLmZvckVhY2goKGdsb2JhbCkgPT4ge1xuICAgIGNvbnN0IHRhYmxlTmFtZSA9IGdldFRhYmxlTmFtZSh7IGFkYXB0ZXI6IHRoaXMsIGNvbmZpZzogZ2xvYmFsIH0pXG5cbiAgICBidWlsZFRhYmxlKHtcbiAgICAgIGFkYXB0ZXI6IHRoaXMsXG4gICAgICBidWlsZE51bWJlcnM6IHRydWUsXG4gICAgICBidWlsZFJlbGF0aW9uc2hpcHM6IHRydWUsXG4gICAgICBidWlsZFRleHRzOiB0cnVlLFxuICAgICAgZGlzYWJsZU5vdE51bGw6ICEhZ2xvYmFsPy52ZXJzaW9ucz8uZHJhZnRzLFxuICAgICAgZGlzYWJsZVVuaXF1ZTogZmFsc2UsXG4gICAgICBmaWVsZHM6IGdsb2JhbC5maWVsZHMsXG4gICAgICB0YWJsZU5hbWUsXG4gICAgICB0aW1lc3RhbXBzOiBmYWxzZSxcbiAgICAgIHZlcnNpb25zOiBmYWxzZSxcbiAgICB9KVxuXG4gICAgaWYgKGdsb2JhbC52ZXJzaW9ucykge1xuICAgICAgY29uc3QgdmVyc2lvbnNUYWJsZU5hbWUgPSBnZXRUYWJsZU5hbWUoeyBhZGFwdGVyOiB0aGlzLCBjb25maWc6IGdsb2JhbCwgdmVyc2lvbnM6IHRydWUgfSlcbiAgICAgIGNvbnN0IHZlcnNpb25GaWVsZHMgPSBidWlsZFZlcnNpb25HbG9iYWxGaWVsZHMoZ2xvYmFsKVxuXG4gICAgICBidWlsZFRhYmxlKHtcbiAgICAgICAgYWRhcHRlcjogdGhpcyxcbiAgICAgICAgYnVpbGROdW1iZXJzOiB0cnVlLFxuICAgICAgICBidWlsZFJlbGF0aW9uc2hpcHM6IHRydWUsXG4gICAgICAgIGJ1aWxkVGV4dHM6IHRydWUsXG4gICAgICAgIGRpc2FibGVOb3ROdWxsOiAhIWdsb2JhbC52ZXJzaW9ucz8uZHJhZnRzLFxuICAgICAgICBkaXNhYmxlVW5pcXVlOiB0cnVlLFxuICAgICAgICBmaWVsZHM6IHZlcnNpb25GaWVsZHMsXG4gICAgICAgIHRhYmxlTmFtZTogdmVyc2lvbnNUYWJsZU5hbWUsXG4gICAgICAgIHRpbWVzdGFtcHM6IHRydWUsXG4gICAgICAgIHZlcnNpb25zOiB0cnVlLFxuICAgICAgfSlcbiAgICB9XG4gIH0pXG59XG4iXSwibmFtZXMiOlsiaW5pdCIsInNjaGVtYU5hbWUiLCJwZ1NjaGVtYSIsInRhYmxlIiwicGdUYWJsZSIsInBheWxvYWQiLCJjb25maWciLCJsb2NhbGl6YXRpb24iLCJlbnVtcyIsImVudW1fX2xvY2FsZXMiLCJwZ0VudW0iLCJsb2NhbGVzIiwibWFwIiwiY29kZSIsImNvbGxlY3Rpb25zIiwiZm9yRWFjaCIsImNvbGxlY3Rpb24iLCJ0YWJsZU5hbWUiLCJnZXRUYWJsZU5hbWUiLCJhZGFwdGVyIiwiYnVpbGRUYWJsZSIsImJ1aWxkTnVtYmVycyIsImJ1aWxkUmVsYXRpb25zaGlwcyIsImJ1aWxkVGV4dHMiLCJkaXNhYmxlTm90TnVsbCIsInZlcnNpb25zIiwiZHJhZnRzIiwiZGlzYWJsZVVuaXF1ZSIsImZpZWxkcyIsInRpbWVzdGFtcHMiLCJ2ZXJzaW9uc1RhYmxlTmFtZSIsInZlcnNpb25GaWVsZHMiLCJidWlsZFZlcnNpb25Db2xsZWN0aW9uRmllbGRzIiwiZ2xvYmFscyIsImdsb2JhbCIsImJ1aWxkVmVyc2lvbkdsb2JhbEZpZWxkcyJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7OytCQVl2QkE7OztlQUFBQTs7O3dCQVI2QjswQkFDNkI7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
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"getTableColumnFromPath.d.ts","sourceRoot":"","sources":["../../src/queries/getTableColumnFromPath.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAe,UAAU,EAAa,MAAM,eAAe,CAAA;AAUlG,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC5E,OAAO,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;
|
1
|
+
{"version":3,"file":"getTableColumnFromPath.d.ts","sourceRoot":"","sources":["../../src/queries/getTableColumnFromPath.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAe,UAAU,EAAa,MAAM,eAAe,CAAA;AAUlG,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC5E,OAAO,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAI1E,KAAK,UAAU,GAAG;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;IAC7C,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED,KAAK,WAAW,GAAG;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,UAAU,EAAE,CAAA;IACzB,KAAK,EAAE,kBAAkB,CAAA;IACzB,uBAAuB,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAA;IAClD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,SAAS,CAAC,EAAE,GAAG,CAAA;IACf,KAAK,EAAE,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;CAC9C,CAAA;AAED,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,UAAU,CAAC,EAAE,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;IACnD,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAA;IAC1B,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,WAAW,EAAE,qBAAqB,CAAA;IAClC,KAAK,EAAE,eAAe,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AACD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,2RAiBhC,IAAI,KAAG,WA4gBT,CAAA"}
|
@@ -15,6 +15,7 @@ const _types = require("payload/types");
|
|
15
15
|
const _utilities = require("payload/utilities");
|
16
16
|
const _tosnakecase = /*#__PURE__*/ _interop_require_default(require("to-snake-case"));
|
17
17
|
const _uuid = require("uuid");
|
18
|
+
const _getTableName = require("../schema/getTableName");
|
18
19
|
function _interop_require_default(obj) {
|
19
20
|
return obj && obj.__esModule ? obj : {
|
20
21
|
default: obj
|
@@ -121,7 +122,13 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
|
|
121
122
|
case 'group':
|
122
123
|
{
|
123
124
|
if (locale && field.localized && adapter.payload.config.localization) {
|
124
|
-
newTableName =
|
125
|
+
newTableName = (0, _getTableName.getTableName)({
|
126
|
+
adapter,
|
127
|
+
config: field,
|
128
|
+
locales: true,
|
129
|
+
parentTableName: tableName,
|
130
|
+
prefix: `${tableName}_`
|
131
|
+
});
|
125
132
|
joins[tableName] = (0, _drizzleorm.eq)(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID);
|
126
133
|
if (locale !== 'all') {
|
127
134
|
constraints.push({
|
@@ -150,9 +157,80 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
|
|
150
157
|
value
|
151
158
|
});
|
152
159
|
}
|
160
|
+
case 'select':
|
161
|
+
{
|
162
|
+
if (field.hasMany) {
|
163
|
+
newTableName = (0, _getTableName.getTableName)({
|
164
|
+
adapter,
|
165
|
+
config: field,
|
166
|
+
parentTableName: `${tableName}_${tableNameSuffix}`,
|
167
|
+
prefix: `${tableName}_${tableNameSuffix}`
|
168
|
+
});
|
169
|
+
if (locale && field.localized && adapter.payload.config.localization) {
|
170
|
+
joins[newTableName] = (0, _drizzleorm.and)((0, _drizzleorm.eq)(adapter.tables[tableName].id, adapter.tables[newTableName].parent), (0, _drizzleorm.eq)(adapter.tables[newTableName]._locale, locale));
|
171
|
+
if (locale !== 'all') {
|
172
|
+
constraints.push({
|
173
|
+
columnName: '_locale',
|
174
|
+
table: adapter.tables[newTableName],
|
175
|
+
value: locale
|
176
|
+
});
|
177
|
+
}
|
178
|
+
} else {
|
179
|
+
joins[newTableName] = (0, _drizzleorm.eq)(adapter.tables[tableName].id, adapter.tables[newTableName].parent);
|
180
|
+
}
|
181
|
+
return {
|
182
|
+
columnName: 'value',
|
183
|
+
constraints,
|
184
|
+
field,
|
185
|
+
table: adapter.tables[newTableName]
|
186
|
+
};
|
187
|
+
}
|
188
|
+
break;
|
189
|
+
}
|
190
|
+
case 'text':
|
191
|
+
case 'number':
|
192
|
+
{
|
193
|
+
if (field.hasMany) {
|
194
|
+
let tableType = 'texts';
|
195
|
+
let columnName = 'text';
|
196
|
+
if (field.type === 'number') {
|
197
|
+
tableType = 'numbers';
|
198
|
+
columnName = 'number';
|
199
|
+
}
|
200
|
+
newTableName = `${tableName}_${tableType}`;
|
201
|
+
const joinConstraints = [
|
202
|
+
(0, _drizzleorm.eq)(adapter.tables[tableName].id, adapter.tables[newTableName].parent),
|
203
|
+
(0, _drizzleorm.eq)(adapter.tables[newTableName].path, `${constraintPath}${field.name}`)
|
204
|
+
];
|
205
|
+
if (locale && field.localized && adapter.payload.config.localization) {
|
206
|
+
joins[newTableName] = (0, _drizzleorm.and)(...joinConstraints, (0, _drizzleorm.eq)(adapter.tables[newTableName]._locale, locale));
|
207
|
+
if (locale !== 'all') {
|
208
|
+
constraints.push({
|
209
|
+
columnName: 'locale',
|
210
|
+
table: adapter.tables[newTableName],
|
211
|
+
value: locale
|
212
|
+
});
|
213
|
+
}
|
214
|
+
} else {
|
215
|
+
joins[newTableName] = (0, _drizzleorm.and)(...joinConstraints);
|
216
|
+
}
|
217
|
+
return {
|
218
|
+
columnName,
|
219
|
+
constraints,
|
220
|
+
field,
|
221
|
+
table: adapter.tables[newTableName]
|
222
|
+
};
|
223
|
+
}
|
224
|
+
break;
|
225
|
+
}
|
153
226
|
case 'array':
|
154
227
|
{
|
155
|
-
newTableName =
|
228
|
+
newTableName = (0, _getTableName.getTableName)({
|
229
|
+
adapter,
|
230
|
+
config: field,
|
231
|
+
parentTableName: `${tableName}_${tableNameSuffix}`,
|
232
|
+
prefix: `${tableName}_${tableNameSuffix}`
|
233
|
+
});
|
156
234
|
constraintPath = `${constraintPath}${field.name}.%.`;
|
157
235
|
if (locale && field.localized && adapter.payload.config.localization) {
|
158
236
|
joins[newTableName] = (0, _drizzleorm.and)((0, _drizzleorm.eq)(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID), (0, _drizzleorm.eq)(adapter.tables[newTableName]._locale, locale));
|
@@ -194,7 +272,12 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
|
|
194
272
|
];
|
195
273
|
blockTypes.forEach((blockType)=>{
|
196
274
|
const block = field.blocks.find((block)=>block.slug === blockType);
|
197
|
-
newTableName =
|
275
|
+
newTableName = (0, _getTableName.getTableName)({
|
276
|
+
adapter,
|
277
|
+
config: block,
|
278
|
+
parentTableName: tableName,
|
279
|
+
prefix: `${tableName}_blocks_`
|
280
|
+
});
|
198
281
|
joins[newTableName] = (0, _drizzleorm.eq)(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID);
|
199
282
|
constraints.push({
|
200
283
|
columnName: '_path',
|
@@ -210,7 +293,12 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
|
|
210
293
|
};
|
211
294
|
}
|
212
295
|
const hasBlockField = field.blocks.some((block)=>{
|
213
|
-
newTableName =
|
296
|
+
newTableName = (0, _getTableName.getTableName)({
|
297
|
+
adapter,
|
298
|
+
config: block,
|
299
|
+
parentTableName: tableName,
|
300
|
+
prefix: `${tableName}_blocks_`
|
301
|
+
});
|
214
302
|
constraintPath = `${constraintPath}${field.name}.%.`;
|
215
303
|
let result;
|
216
304
|
const blockConstraints = [];
|
@@ -273,21 +361,39 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
|
|
273
361
|
case 'upload':
|
274
362
|
{
|
275
363
|
let relationshipFields;
|
276
|
-
const relationTableName = `${rootTableName}
|
364
|
+
const relationTableName = `${rootTableName}${adapter.relationshipsSuffix}`;
|
277
365
|
const newCollectionPath = pathSegments.slice(1).join('.');
|
278
366
|
const aliasRelationshipTableName = (0, _uuid.v4)();
|
279
367
|
const aliasRelationshipTable = (0, _pgcore.alias)(adapter.tables[relationTableName], aliasRelationshipTableName);
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
368
|
+
if (locale && field.localized && adapter.payload.config.localization) {
|
369
|
+
joinAliases.push({
|
370
|
+
condition: (0, _drizzleorm.and)((0, _drizzleorm.eq)((aliasTable || adapter.tables[rootTableName]).id, aliasRelationshipTable.parent), (0, _drizzleorm.eq)(aliasRelationshipTable.locale, locale), (0, _drizzleorm.like)(aliasRelationshipTable.path, `${constraintPath}${field.name}`)),
|
371
|
+
table: aliasRelationshipTable
|
372
|
+
});
|
373
|
+
if (locale !== 'all') {
|
374
|
+
constraints.push({
|
375
|
+
columnName: 'locale',
|
376
|
+
table: aliasRelationshipTable,
|
377
|
+
value: locale
|
378
|
+
});
|
379
|
+
}
|
380
|
+
} else {
|
381
|
+
// Join in the relationships table
|
382
|
+
joinAliases.push({
|
383
|
+
condition: (0, _drizzleorm.and)((0, _drizzleorm.eq)((aliasTable || adapter.tables[rootTableName]).id, aliasRelationshipTable.parent), (0, _drizzleorm.like)(aliasRelationshipTable.path, `${constraintPath}${field.name}`)),
|
384
|
+
table: aliasRelationshipTable
|
385
|
+
});
|
386
|
+
}
|
285
387
|
selectFields[`${relationTableName}.path`] = aliasRelationshipTable.path;
|
286
388
|
let newAliasTable;
|
287
389
|
if (typeof field.relationTo === 'string') {
|
288
|
-
|
390
|
+
const relationshipConfig = adapter.payload.collections[field.relationTo].config;
|
391
|
+
newTableName = (0, _getTableName.getTableName)({
|
392
|
+
adapter,
|
393
|
+
config: relationshipConfig
|
394
|
+
});
|
289
395
|
// parent to relationship join table
|
290
|
-
relationshipFields =
|
396
|
+
relationshipFields = relationshipConfig.fields;
|
291
397
|
newAliasTable = (0, _pgcore.alias)(adapter.tables[newTableName], (0, _tosnakecase.default)((0, _uuid.v4)()));
|
292
398
|
joinAliases.push({
|
293
399
|
condition: (0, _drizzleorm.eq)(newAliasTable.id, aliasRelationshipTable[`${field.relationTo}ID`]),
|
@@ -302,7 +408,10 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
|
|
302
408
|
};
|
303
409
|
}
|
304
410
|
} else if (newCollectionPath === 'value') {
|
305
|
-
const tableColumnsNames = field.relationTo.map((relationTo)=>`"${aliasRelationshipTableName}"."${(0,
|
411
|
+
const tableColumnsNames = field.relationTo.map((relationTo)=>`"${aliasRelationshipTableName}"."${(0, _getTableName.getTableName)({
|
412
|
+
adapter,
|
413
|
+
config: adapter.payload.collections[relationTo].config
|
414
|
+
})}_id"`);
|
306
415
|
return {
|
307
416
|
constraints,
|
308
417
|
field,
|
@@ -342,38 +451,35 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
|
|
342
451
|
value
|
343
452
|
});
|
344
453
|
}
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
});
|
361
|
-
}
|
362
|
-
}
|
363
|
-
const targetTable = aliasTable || adapter.tables[newTableName];
|
364
|
-
selectFields[`${newTableName}.${columnPrefix}${field.name}`] = targetTable[`${columnPrefix}${field.name}`];
|
365
|
-
return {
|
366
|
-
columnName: `${columnPrefix}${field.name}`,
|
367
|
-
constraints,
|
368
|
-
field,
|
369
|
-
pathSegments,
|
370
|
-
table: targetTable
|
371
|
-
};
|
372
|
-
}
|
454
|
+
}
|
455
|
+
if ((0, _types.fieldAffectsData)(field)) {
|
456
|
+
if (field.localized && adapter.payload.config.localization) {
|
457
|
+
// If localized, we go to localized table and set aliasTable to undefined
|
458
|
+
// so it is not picked up below to be used as targetTable
|
459
|
+
newTableName = `${tableName}${adapter.localesSuffix}`;
|
460
|
+
const parentTable = aliasTable || adapter.tables[tableName];
|
461
|
+
joins[newTableName] = (0, _drizzleorm.eq)(parentTable.id, adapter.tables[newTableName]._parentID);
|
462
|
+
aliasTable = undefined;
|
463
|
+
if (locale !== 'all') {
|
464
|
+
constraints.push({
|
465
|
+
columnName: '_locale',
|
466
|
+
table: adapter.tables[newTableName],
|
467
|
+
value: locale
|
468
|
+
});
|
373
469
|
}
|
470
|
+
}
|
471
|
+
const targetTable = aliasTable || adapter.tables[newTableName];
|
472
|
+
selectFields[`${newTableName}.${columnPrefix}${field.name}`] = targetTable[`${columnPrefix}${field.name}`];
|
473
|
+
return {
|
474
|
+
columnName: `${columnPrefix}${field.name}`,
|
475
|
+
constraints,
|
476
|
+
field,
|
477
|
+
pathSegments,
|
478
|
+
table: targetTable
|
479
|
+
};
|
374
480
|
}
|
375
481
|
}
|
376
482
|
throw new _errors.APIError(`Cannot find field for path at ${fieldPath}`);
|
377
483
|
};
|
378
484
|
|
379
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyaWVzL2dldFRhYmxlQ29sdW1uRnJvbVBhdGgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgU1FMIH0gZnJvbSAnZHJpenpsZS1vcm0nXG5pbXBvcnQgdHlwZSB7IFBnVGFibGVXaXRoQ29sdW1ucyB9IGZyb20gJ2RyaXp6bGUtb3JtL3BnLWNvcmUnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBGaWVsZEFmZmVjdGluZ0RhdGEsIE51bWJlckZpZWxkLCBUYWJBc0ZpZWxkLCBUZXh0RmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBhbmQsIGVxLCBsaWtlLCBzcWwgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7IGFsaWFzIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB7IEFQSUVycm9yIH0gZnJvbSAncGF5bG9hZC9lcnJvcnMnXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lIH0gZnJvbSAncGF5bG9hZC90eXBlcydcbmltcG9ydCB7IGZsYXR0ZW5Ub3BMZXZlbEZpZWxkcyB9IGZyb20gJ3BheWxvYWQvdXRpbGl0aWVzJ1xuaW1wb3J0IHRvU25ha2VDYXNlIGZyb20gJ3RvLXNuYWtlLWNhc2UnXG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCdcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1uLCBHZW5lcmljVGFibGUsIFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBCdWlsZFF1ZXJ5Sm9pbkFsaWFzZXMsIEJ1aWxkUXVlcnlKb2lucyB9IGZyb20gJy4vYnVpbGRRdWVyeSdcblxudHlwZSBDb25zdHJhaW50ID0ge1xuICBjb2x1bW5OYW1lOiBzdHJpbmdcbiAgdGFibGU6IEdlbmVyaWNUYWJsZSB8IFBnVGFibGVXaXRoQ29sdW1uczxhbnk+XG4gIHZhbHVlOiB1bmtub3duXG59XG5cbnR5cGUgVGFibGVDb2x1bW4gPSB7XG4gIGNvbHVtbk5hbWU/OiBzdHJpbmdcbiAgY29uc3RyYWludHM6IENvbnN0cmFpbnRbXVxuICBmaWVsZDogRmllbGRBZmZlY3RpbmdEYXRhXG4gIGdldE5vdE51bGxDb2x1bW5CeVZhbHVlPzogKHZhbDogdW5rbm93bikgPT4gc3RyaW5nXG4gIHBhdGhTZWdtZW50cz86IHN0cmluZ1tdXG4gIHJhd0NvbHVtbj86IFNRTFxuICB0YWJsZTogR2VuZXJpY1RhYmxlIHwgUGdUYWJsZVdpdGhDb2x1bW5zPGFueT5cbn1cblxudHlwZSBBcmdzID0ge1xuICBhZGFwdGVyOiBQb3N0Z3Jlc0FkYXB0ZXJcbiAgYWxpYXNUYWJsZT86IEdlbmVyaWNUYWJsZSB8IFBnVGFibGVXaXRoQ29sdW1uczxhbnk+XG4gIGNvbGxlY3Rpb25QYXRoOiBzdHJpbmdcbiAgY29sdW1uUHJlZml4Pzogc3RyaW5nXG4gIGNvbnN0cmFpbnRQYXRoPzogc3RyaW5nXG4gIGNvbnN0cmFpbnRzPzogQ29uc3RyYWludFtdXG4gIGZpZWxkczogKEZpZWxkIHwgVGFiQXNGaWVsZClbXVxuICBqb2luQWxpYXNlczogQnVpbGRRdWVyeUpvaW5BbGlhc2VzXG4gIGpvaW5zOiBCdWlsZFF1ZXJ5Sm9pbnNcbiAgbG9jYWxlPzogc3RyaW5nXG4gIHBhdGhTZWdtZW50czogc3RyaW5nW11cbiAgcm9vdFRhYmxlTmFtZT86IHN0cmluZ1xuICBzZWxlY3RGaWVsZHM6IFJlY29yZDxzdHJpbmcsIEdlbmVyaWNDb2x1bW4+XG4gIHRhYmxlTmFtZTogc3RyaW5nXG4gIC8qKlxuICAgKiBJZiBjcmVhdGluZyBhIG5ldyB0YWJsZSBuYW1lIGZvciBhcnJheXMgYW5kIGJsb2NrcywgdGhpcyBzdWZmaXggc2hvdWxkIGJlIGFwcGVuZGVkIHRvIHRoZSB0YWJsZSBuYW1lXG4gICAqL1xuICB0YWJsZU5hbWVTdWZmaXg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSByYXcgdmFsdWUgb2YgdGhlIHF1ZXJ5IGJlZm9yZSBzYW5pdGl6YXRpb25cbiAgICovXG4gIHZhbHVlOiB1bmtub3duXG59XG4vKipcbiAqIFRyYW5zZm9ybXMgcGF0aCB0byB0YWJsZSBhbmQgY29sdW1uIG5hbWVcbiAqIEFkZHMgdGFibGVzIHRvIGBqb2luYFxuICogQHJldHVybnMgVGFibGVDb2x1bW5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldFRhYmxlQ29sdW1uRnJvbVBhdGggPSAoe1xuICBhZGFwdGVyLFxuICBhbGlhc1RhYmxlLFxuICBjb2xsZWN0aW9uUGF0aCxcbiAgY29sdW1uUHJlZml4ID0gJycsXG4gIGNvbnN0cmFpbnRQYXRoOiBpbmNvbWluZ0NvbnN0cmFpbnRQYXRoLFxuICBjb25zdHJhaW50cyA9IFtdLFxuICBmaWVsZHMsXG4gIGpvaW5BbGlhc2VzLFxuICBqb2lucyxcbiAgbG9jYWxlOiBpbmNvbWluZ0xvY2FsZSxcbiAgcGF0aFNlZ21lbnRzOiBpbmNvbWluZ1NlZ21lbnRzLFxuICByb290VGFibGVOYW1lOiBpbmNvbWluZ1Jvb3RUYWJsZU5hbWUsXG4gIHNlbGVjdEZpZWxkcyxcbiAgdGFibGVOYW1lLFxuICB0YWJsZU5hbWVTdWZmaXggPSAnJyxcbiAgdmFsdWUsXG59OiBBcmdzKTogVGFibGVDb2x1bW4gPT4ge1xuICBjb25zdCBmaWVsZFBhdGggPSBpbmNvbWluZ1NlZ21lbnRzWzBdXG4gIGxldCBsb2NhbGUgPSBpbmNvbWluZ0xvY2FsZVxuICBjb25zdCByb290VGFibGVOYW1lID0gaW5jb21pbmdSb290VGFibGVOYW1lIHx8IHRhYmxlTmFtZVxuICBsZXQgY29uc3RyYWludFBhdGggPSBpbmNvbWluZ0NvbnN0cmFpbnRQYXRoIHx8ICcnXG5cbiAgY29uc3QgZmllbGQgPSBmbGF0dGVuVG9wTGV2ZWxGaWVsZHMoZmllbGRzIGFzIEZpZWxkW10pLmZpbmQoXG4gICAgKGZpZWxkVG9GaW5kKSA9PiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkVG9GaW5kKSAmJiBmaWVsZFRvRmluZC5uYW1lID09PSBmaWVsZFBhdGgsXG4gICkgYXMgRmllbGQgfCBUYWJBc0ZpZWxkXG4gIGxldCBuZXdUYWJsZU5hbWUgPSB0YWJsZU5hbWVcblxuICBpZiAoIWZpZWxkICYmIGZpZWxkUGF0aCA9PT0gJ2lkJykge1xuICAgIHNlbGVjdEZpZWxkcy5pZCA9IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uaWRcbiAgICByZXR1cm4ge1xuICAgICAgY29sdW1uTmFtZTogJ2lkJyxcbiAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgZmllbGQ6IHtcbiAgICAgICAgbmFtZTogJ2lkJyxcbiAgICAgICAgdHlwZTogYWRhcHRlci5pZFR5cGUgPT09ICd1dWlkJyA/ICd0ZXh0JyA6ICdudW1iZXInLFxuICAgICAgfSBhcyBUZXh0RmllbGQgfCBOdW1iZXJGaWVsZCxcbiAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgIH1cbiAgfVxuXG4gIGlmIChmaWVsZCkge1xuICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IFsuLi5pbmNvbWluZ1NlZ21lbnRzXVxuXG4gICAgLy8gSWYgbmV4dCBzZWdtZW50IGlzIGEgbG9jYWxlLFxuICAgIC8vIHdlIG5lZWQgdG8gdGFrZSBpdCBvdXQgYW5kIHVzZSBpdCBhcyB0aGUgbG9jYWxlIGZyb20gdGhpcyBwb2ludCBvblxuICAgIGlmICgnbG9jYWxpemVkJyBpbiBmaWVsZCAmJiBmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgIGNvbnN0IG1hdGNoZWRMb2NhbGUgPSBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbi5sb2NhbGVDb2Rlcy5maW5kKFxuICAgICAgICAobG9jYWxlKSA9PiBsb2NhbGUgPT09IHBhdGhTZWdtZW50c1sxXSxcbiAgICAgIClcblxuICAgICAgaWYgKG1hdGNoZWRMb2NhbGUpIHtcbiAgICAgICAgbG9jYWxlID0gbWF0Y2hlZExvY2FsZVxuICAgICAgICBwYXRoU2VnbWVudHMuc3BsaWNlKDEsIDEpXG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICBjYXNlICd0YWJzJzoge1xuICAgICAgICByZXR1cm4gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBhbGlhc1RhYmxlLFxuICAgICAgICAgIGNvbGxlY3Rpb25QYXRoLFxuICAgICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgICBjb25zdHJhaW50UGF0aCxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLnRhYnMubWFwKCh0YWIpID0+ICh7XG4gICAgICAgICAgICAuLi50YWIsXG4gICAgICAgICAgICB0eXBlOiAndGFiJyxcbiAgICAgICAgICB9KSksXG4gICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgam9pbnMsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgIHRhYmxlTmFtZVN1ZmZpeCxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3RhYic6IHtcbiAgICAgICAgaWYgKHRhYkhhc05hbWUoZmllbGQpKSB7XG4gICAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgIGFsaWFzVGFibGUsXG4gICAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICAgIGNvbHVtblByZWZpeDogYCR7Y29sdW1uUHJlZml4fSR7ZmllbGQubmFtZX1fYCxcbiAgICAgICAgICAgIGNvbnN0cmFpbnRQYXRoOiBgJHtjb25zdHJhaW50UGF0aH0ke2ZpZWxkLm5hbWV9LmAsXG4gICAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgICBqb2lucyxcbiAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICAgIHNlbGVjdEZpZWxkcyxcbiAgICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgICAgdGFibGVOYW1lU3VmZml4OiBgJHt0YWJsZU5hbWVTdWZmaXh9JHt0b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1fYCxcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYWxpYXNUYWJsZSxcbiAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICBjb2x1bW5QcmVmaXgsXG4gICAgICAgICAgY29uc3RyYWludFBhdGgsXG4gICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgam9pbnMsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgIHRhYmxlTmFtZVN1ZmZpeCxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY2FzZSAnZ3JvdXAnOiB7XG4gICAgICAgIGlmIChsb2NhbGUgJiYgZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgbmV3VGFibGVOYW1lID0gYCR7dGFibGVOYW1lfV9sb2NhbGVzYFxuXG4gICAgICAgICAgam9pbnNbdGFibGVOYW1lXSA9IGVxKFxuICAgICAgICAgICAgYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXS5pZCxcbiAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX3BhcmVudElELFxuICAgICAgICAgIClcbiAgICAgICAgICBpZiAobG9jYWxlICE9PSAnYWxsJykge1xuICAgICAgICAgICAgY29uc3RyYWludHMucHVzaCh7XG4gICAgICAgICAgICAgIGNvbHVtbk5hbWU6ICdfbG9jYWxlJyxcbiAgICAgICAgICAgICAgdGFibGU6IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0sXG4gICAgICAgICAgICAgIHZhbHVlOiBsb2NhbGUsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBhbGlhc1RhYmxlLFxuICAgICAgICAgIGNvbGxlY3Rpb25QYXRoLFxuICAgICAgICAgIGNvbHVtblByZWZpeDogYCR7Y29sdW1uUHJlZml4fSR7ZmllbGQubmFtZX1fYCxcbiAgICAgICAgICBjb25zdHJhaW50UGF0aDogYCR7Y29uc3RyYWludFBhdGh9JHtmaWVsZC5uYW1lfS5gLFxuICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgIGpvaW5BbGlhc2VzLFxuICAgICAgICAgIGpvaW5zLFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBwYXRoU2VnbWVudHM6IHBhdGhTZWdtZW50cy5zbGljZSgxKSxcbiAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgIHNlbGVjdEZpZWxkcyxcbiAgICAgICAgICB0YWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICB0YWJsZU5hbWVTdWZmaXg6IGAke3RhYmxlTmFtZVN1ZmZpeH0ke3RvU25ha2VDYXNlKGZpZWxkLm5hbWUpfV9gLFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjYXNlICdhcnJheSc6IHtcbiAgICAgICAgbmV3VGFibGVOYW1lID0gYCR7dGFibGVOYW1lfV8ke3RhYmxlTmFtZVN1ZmZpeH0ke3RvU25ha2VDYXNlKGZpZWxkLm5hbWUpfWBcbiAgICAgICAgY29uc3RyYWludFBhdGggPSBgJHtjb25zdHJhaW50UGF0aH0ke2ZpZWxkLm5hbWV9LiUuYFxuICAgICAgICBpZiAobG9jYWxlICYmIGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgIGpvaW5zW25ld1RhYmxlTmFtZV0gPSBhbmQoXG4gICAgICAgICAgICBlcShhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkLCBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9wYXJlbnRJRCksXG4gICAgICAgICAgICBlcShhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9sb2NhbGUsIGxvY2FsZSksXG4gICAgICAgICAgKVxuICAgICAgICAgIGlmIChsb2NhbGUgIT09ICdhbGwnKSB7XG4gICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgY29sdW1uTmFtZTogJ19sb2NhbGUnLFxuICAgICAgICAgICAgICB0YWJsZTogYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSxcbiAgICAgICAgICAgICAgdmFsdWU6IGxvY2FsZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGpvaW5zW25ld1RhYmxlTmFtZV0gPSBlcShcbiAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsXG4gICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9wYXJlbnRJRCxcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgY29sbGVjdGlvblBhdGgsXG4gICAgICAgICAgY29uc3RyYWludFBhdGgsXG4gICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgam9pbnMsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjYXNlICdibG9ja3MnOiB7XG4gICAgICAgIGxldCBibG9ja1RhYmxlQ29sdW1uOiBUYWJsZUNvbHVtblxuICAgICAgICBsZXQgbmV3VGFibGVOYW1lOiBzdHJpbmdcblxuICAgICAgICAvLyBoYW5kbGUgYmxvY2tUeXBlIHF1ZXJpZXNcbiAgICAgICAgaWYgKHBhdGhTZWdtZW50c1sxXSA9PT0gJ2Jsb2NrVHlwZScpIHtcbiAgICAgICAgICAvLyBmaW5kIHRoZSBibG9jayBjb25maWcgdXNpbmcgdGhlIHZhbHVlXG4gICAgICAgICAgY29uc3QgYmxvY2tUeXBlcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdXG4gICAgICAgICAgYmxvY2tUeXBlcy5mb3JFYWNoKChibG9ja1R5cGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrID0gZmllbGQuYmxvY2tzLmZpbmQoKGJsb2NrKSA9PiBibG9jay5zbHVnID09PSBibG9ja1R5cGUpXG4gICAgICAgICAgICBuZXdUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X2Jsb2Nrc18ke3RvU25ha2VDYXNlKGJsb2NrLnNsdWcpfWBcbiAgICAgICAgICAgIGpvaW5zW25ld1RhYmxlTmFtZV0gPSBlcShcbiAgICAgICAgICAgICAgYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXS5pZCxcbiAgICAgICAgICAgICAgYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXS5fcGFyZW50SUQsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgY29sdW1uTmFtZTogJ19wYXRoJyxcbiAgICAgICAgICAgICAgdGFibGU6IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0sXG4gICAgICAgICAgICAgIHZhbHVlOiBwYXRoU2VnbWVudHNbMF0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0pXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICBnZXROb3ROdWxsQ29sdW1uQnlWYWx1ZTogKCkgPT4gJ2lkJyxcbiAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGhhc0Jsb2NrRmllbGQgPSBmaWVsZC5ibG9ja3Muc29tZSgoYmxvY2spID0+IHtcbiAgICAgICAgICBuZXdUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X2Jsb2Nrc18ke3RvU25ha2VDYXNlKGJsb2NrLnNsdWcpfWBcbiAgICAgICAgICBjb25zdHJhaW50UGF0aCA9IGAke2NvbnN0cmFpbnRQYXRofSR7ZmllbGQubmFtZX0uJS5gXG4gICAgICAgICAgbGV0IHJlc3VsdFxuICAgICAgICAgIGNvbnN0IGJsb2NrQ29uc3RyYWludHMgPSBbXVxuICAgICAgICAgIGNvbnN0IGJsb2NrU2VsZWN0RmllbGRzID0ge31cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzdWx0ID0gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICAgIGNvbGxlY3Rpb25QYXRoLFxuICAgICAgICAgICAgICBjb25zdHJhaW50UGF0aCxcbiAgICAgICAgICAgICAgY29uc3RyYWludHM6IGJsb2NrQ29uc3RyYWludHMsXG4gICAgICAgICAgICAgIGZpZWxkczogYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICAgICAgam9pbnMsXG4gICAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgICAgIHNlbGVjdEZpZWxkczogYmxvY2tTZWxlY3RGaWVsZHMsXG4gICAgICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgZmluZSwgbm90IGV2ZXJ5IGJsb2NrIHdpbGwgaGF2ZSB0aGUgZmllbGRcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgICBibG9ja1RhYmxlQ29sdW1uID0gcmVzdWx0XG4gICAgICAgICAgY29uc3RyYWludHMgPSBjb25zdHJhaW50cy5jb25jYXQoYmxvY2tDb25zdHJhaW50cylcbiAgICAgICAgICBzZWxlY3RGaWVsZHMgPSB7IC4uLnNlbGVjdEZpZWxkcywgLi4uYmxvY2tTZWxlY3RGaWVsZHMgfVxuICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgICAgIGpvaW5zW25ld1RhYmxlTmFtZV0gPSBhbmQoXG4gICAgICAgICAgICAgIGVxKGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX3BhcmVudElEKSxcbiAgICAgICAgICAgICAgZXEoYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXS5fbG9jYWxlLCBsb2NhbGUpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICBjb2x1bW5OYW1lOiAnX2xvY2FsZScsXG4gICAgICAgICAgICAgICAgdGFibGU6IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0sXG4gICAgICAgICAgICAgICAgdmFsdWU6IGxvY2FsZSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgam9pbnNbbmV3VGFibGVOYW1lXSA9IGVxKFxuICAgICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkLFxuICAgICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9wYXJlbnRJRCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGhhc0Jsb2NrRmllbGQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29sdW1uTmFtZTogYmxvY2tUYWJsZUNvbHVtbi5jb2x1bW5OYW1lLFxuICAgICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgICBmaWVsZDogYmxvY2tUYWJsZUNvbHVtbi5maWVsZCxcbiAgICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgICAgcmF3Q29sdW1uOiBibG9ja1RhYmxlQ29sdW1uLnJhd0NvbHVtbixcbiAgICAgICAgICAgIHRhYmxlOiBibG9ja1RhYmxlQ29sdW1uLnRhYmxlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyZWxhdGlvbnNoaXAnOlxuICAgICAgY2FzZSAndXBsb2FkJzoge1xuICAgICAgICBsZXQgcmVsYXRpb25zaGlwRmllbGRzXG4gICAgICAgIGNvbnN0IHJlbGF0aW9uVGFibGVOYW1lID0gYCR7cm9vdFRhYmxlTmFtZX1fcmVsc2BcbiAgICAgICAgY29uc3QgbmV3Q29sbGVjdGlvblBhdGggPSBwYXRoU2VnbWVudHMuc2xpY2UoMSkuam9pbignLicpXG4gICAgICAgIGNvbnN0IGFsaWFzUmVsYXRpb25zaGlwVGFibGVOYW1lID0gdXVpZCgpXG4gICAgICAgIGNvbnN0IGFsaWFzUmVsYXRpb25zaGlwVGFibGUgPSBhbGlhcyhcbiAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tyZWxhdGlvblRhYmxlTmFtZV0sXG4gICAgICAgICAgYWxpYXNSZWxhdGlvbnNoaXBUYWJsZU5hbWUsXG4gICAgICAgIClcblxuICAgICAgICAvLyBKb2luIGluIHRoZSByZWxhdGlvbnNoaXBzIHRhYmxlXG4gICAgICAgIGpvaW5BbGlhc2VzLnB1c2goe1xuICAgICAgICAgIGNvbmRpdGlvbjogYW5kKFxuICAgICAgICAgICAgZXEoKGFsaWFzVGFibGUgfHwgYWRhcHRlci50YWJsZXNbcm9vdFRhYmxlTmFtZV0pLmlkLCBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlLnBhcmVudCksXG4gICAgICAgICAgICBsaWtlKGFsaWFzUmVsYXRpb25zaGlwVGFibGUucGF0aCwgYCR7Y29uc3RyYWludFBhdGh9JHtmaWVsZC5uYW1lfWApLFxuICAgICAgICAgICksXG4gICAgICAgICAgdGFibGU6IGFsaWFzUmVsYXRpb25zaGlwVGFibGUsXG4gICAgICAgIH0pXG5cbiAgICAgICAgc2VsZWN0RmllbGRzW2Ake3JlbGF0aW9uVGFibGVOYW1lfS5wYXRoYF0gPSBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlLnBhdGhcblxuICAgICAgICBsZXQgbmV3QWxpYXNUYWJsZVxuXG4gICAgICAgIGlmICh0eXBlb2YgZmllbGQucmVsYXRpb25UbyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBuZXdUYWJsZU5hbWUgPSBgJHt0b1NuYWtlQ2FzZShmaWVsZC5yZWxhdGlvblRvKX1gXG4gICAgICAgICAgLy8gcGFyZW50IHRvIHJlbGF0aW9uc2hpcCBqb2luIHRhYmxlXG4gICAgICAgICAgcmVsYXRpb25zaGlwRmllbGRzID0gYWRhcHRlci5wYXlsb2FkLmNvbGxlY3Rpb25zW2ZpZWxkLnJlbGF0aW9uVG9dLmNvbmZpZy5maWVsZHNcblxuICAgICAgICAgIG5ld0FsaWFzVGFibGUgPSBhbGlhcyhhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLCB0b1NuYWtlQ2FzZSh1dWlkKCkpKVxuXG4gICAgICAgICAgam9pbkFsaWFzZXMucHVzaCh7XG4gICAgICAgICAgICBjb25kaXRpb246IGVxKG5ld0FsaWFzVGFibGUuaWQsIGFsaWFzUmVsYXRpb25zaGlwVGFibGVbYCR7ZmllbGQucmVsYXRpb25Ub31JRGBdKSxcbiAgICAgICAgICAgIHRhYmxlOiBuZXdBbGlhc1RhYmxlLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBpZiAobmV3Q29sbGVjdGlvblBhdGggPT09ICcnIHx8IG5ld0NvbGxlY3Rpb25QYXRoID09PSAnaWQnKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBjb2x1bW5OYW1lOiBgJHtmaWVsZC5yZWxhdGlvblRvfUlEYCxcbiAgICAgICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICB0YWJsZTogYWxpYXNSZWxhdGlvbnNoaXBUYWJsZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobmV3Q29sbGVjdGlvblBhdGggPT09ICd2YWx1ZScpIHtcbiAgICAgICAgICBjb25zdCB0YWJsZUNvbHVtbnNOYW1lcyA9IGZpZWxkLnJlbGF0aW9uVG8ubWFwKFxuICAgICAgICAgICAgKHJlbGF0aW9uVG8pID0+IGBcIiR7YWxpYXNSZWxhdGlvbnNoaXBUYWJsZU5hbWV9XCIuXCIke3RvU25ha2VDYXNlKHJlbGF0aW9uVG8pfV9pZFwiYCxcbiAgICAgICAgICApXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICByYXdDb2x1bW46IHNxbC5yYXcoYENPQUxFU0NFKCR7dGFibGVDb2x1bW5zTmFtZXMuam9pbignLCAnKX0pYCksXG4gICAgICAgICAgICB0YWJsZTogYWxpYXNSZWxhdGlvbnNoaXBUYWJsZSxcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobmV3Q29sbGVjdGlvblBhdGggPT09ICdyZWxhdGlvblRvJykge1xuICAgICAgICAgIGNvbnN0IHJlbGF0aW9uVG8gPSBBcnJheS5pc0FycmF5KGZpZWxkLnJlbGF0aW9uVG8pID8gZmllbGQucmVsYXRpb25UbyA6IFtmaWVsZC5yZWxhdGlvblRvXVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICBnZXROb3ROdWxsQ29sdW1uQnlWYWx1ZTogKHZhbCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBtYXRjaGVkUmVsYXRpb24gPSByZWxhdGlvblRvLmZpbmQoKHJlbGF0aW9uKSA9PiByZWxhdGlvbiA9PT0gdmFsKVxuICAgICAgICAgICAgICBpZiAobWF0Y2hlZFJlbGF0aW9uKSByZXR1cm4gYCR7bWF0Y2hlZFJlbGF0aW9ufUlEYFxuICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGFibGU6IGFsaWFzUmVsYXRpb25zaGlwVGFibGUsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBBUElFcnJvcignTm90IHN1cHBvcnRlZCcpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBhbGlhc1RhYmxlOiBuZXdBbGlhc1RhYmxlLFxuICAgICAgICAgIGNvbGxlY3Rpb25QYXRoOiBuZXdDb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBmaWVsZHM6IHJlbGF0aW9uc2hpcEZpZWxkcyxcbiAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICBqb2lucyxcbiAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgIHNlbGVjdEZpZWxkcyxcbiAgICAgICAgICB0YWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkpIHtcbiAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgICAvLyBJZiBsb2NhbGl6ZWQsIHdlIGdvIHRvIGxvY2FsaXplZCB0YWJsZSBhbmQgc2V0IGFsaWFzVGFibGUgdG8gdW5kZWZpbmVkXG4gICAgICAgICAgICAvLyBzbyBpdCBpcyBub3QgcGlja2VkIHVwIGJlbG93IHRvIGJlIHVzZWQgYXMgdGFyZ2V0VGFibGVcbiAgICAgICAgICAgIG5ld1RhYmxlTmFtZSA9IGAke3RhYmxlTmFtZX1fbG9jYWxlc2BcblxuICAgICAgICAgICAgY29uc3QgcGFyZW50VGFibGUgPSBhbGlhc1RhYmxlIHx8IGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV1cblxuICAgICAgICAgICAgam9pbnNbbmV3VGFibGVOYW1lXSA9IGVxKHBhcmVudFRhYmxlLmlkLCBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9wYXJlbnRJRClcblxuICAgICAgICAgICAgYWxpYXNUYWJsZSA9IHVuZGVmaW5lZFxuXG4gICAgICAgICAgICBpZiAobG9jYWxlICE9PSAnYWxsJykge1xuICAgICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICBjb2x1bW5OYW1lOiAnX2xvY2FsZScsXG4gICAgICAgICAgICAgICAgdGFibGU6IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0sXG4gICAgICAgICAgICAgICAgdmFsdWU6IGxvY2FsZSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB0YXJnZXRUYWJsZSA9IGFsaWFzVGFibGUgfHwgYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXVxuXG4gICAgICAgICAgc2VsZWN0RmllbGRzW2Ake25ld1RhYmxlTmFtZX0uJHtjb2x1bW5QcmVmaXh9JHtmaWVsZC5uYW1lfWBdID1cbiAgICAgICAgICAgIHRhcmdldFRhYmxlW2Ake2NvbHVtblByZWZpeH0ke2ZpZWxkLm5hbWV9YF1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb2x1bW5OYW1lOiBgJHtjb2x1bW5QcmVmaXh9JHtmaWVsZC5uYW1lfWAsXG4gICAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgcGF0aFNlZ21lbnRzLFxuICAgICAgICAgICAgdGFibGU6IHRhcmdldFRhYmxlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRocm93IG5ldyBBUElFcnJvcihgQ2Fubm90IGZpbmQgZmllbGQgZm9yIHBhdGggYXQgJHtmaWVsZFBhdGh9YClcbn1cbiJdLCJuYW1lcyI6WyJnZXRUYWJsZUNvbHVtbkZyb21QYXRoIiwiYWRhcHRlciIsImFsaWFzVGFibGUiLCJjb2xsZWN0aW9uUGF0aCIsImNvbHVtblByZWZpeCIsImNvbnN0cmFpbnRQYXRoIiwiaW5jb21pbmdDb25zdHJhaW50UGF0aCIsImNvbnN0cmFpbnRzIiwiZmllbGRzIiwiam9pbkFsaWFzZXMiLCJqb2lucyIsImxvY2FsZSIsImluY29taW5nTG9jYWxlIiwicGF0aFNlZ21lbnRzIiwiaW5jb21pbmdTZWdtZW50cyIsInJvb3RUYWJsZU5hbWUiLCJpbmNvbWluZ1Jvb3RUYWJsZU5hbWUiLCJzZWxlY3RGaWVsZHMiLCJ0YWJsZU5hbWUiLCJ0YWJsZU5hbWVTdWZmaXgiLCJ2YWx1ZSIsImZpZWxkUGF0aCIsImZpZWxkIiwiZmxhdHRlblRvcExldmVsRmllbGRzIiwiZmluZCIsImZpZWxkVG9GaW5kIiwiZmllbGRBZmZlY3RzRGF0YSIsIm5hbWUiLCJuZXdUYWJsZU5hbWUiLCJpZCIsInRhYmxlcyIsImNvbHVtbk5hbWUiLCJ0eXBlIiwiaWRUeXBlIiwidGFibGUiLCJsb2NhbGl6ZWQiLCJwYXlsb2FkIiwiY29uZmlnIiwibG9jYWxpemF0aW9uIiwibWF0Y2hlZExvY2FsZSIsImxvY2FsZUNvZGVzIiwic3BsaWNlIiwidGFicyIsIm1hcCIsInRhYiIsInNsaWNlIiwidGFiSGFzTmFtZSIsInRvU25ha2VDYXNlIiwiZXEiLCJfcGFyZW50SUQiLCJwdXNoIiwiYW5kIiwiX2xvY2FsZSIsImJsb2NrVGFibGVDb2x1bW4iLCJibG9ja1R5cGVzIiwiQXJyYXkiLCJpc0FycmF5IiwiZm9yRWFjaCIsImJsb2NrVHlwZSIsImJsb2NrIiwiYmxvY2tzIiwic2x1ZyIsImdldE5vdE51bGxDb2x1bW5CeVZhbHVlIiwiaGFzQmxvY2tGaWVsZCIsInNvbWUiLCJyZXN1bHQiLCJibG9ja0NvbnN0cmFpbnRzIiwiYmxvY2tTZWxlY3RGaWVsZHMiLCJlcnJvciIsImNvbmNhdCIsInJhd0NvbHVtbiIsInJlbGF0aW9uc2hpcEZpZWxkcyIsInJlbGF0aW9uVGFibGVOYW1lIiwibmV3Q29sbGVjdGlvblBhdGgiLCJqb2luIiwiYWxpYXNSZWxhdGlvbnNoaXBUYWJsZU5hbWUiLCJ1dWlkIiwiYWxpYXNSZWxhdGlvbnNoaXBUYWJsZSIsImFsaWFzIiwiY29uZGl0aW9uIiwicGFyZW50IiwibGlrZSIsInBhdGgiLCJuZXdBbGlhc1RhYmxlIiwicmVsYXRpb25UbyIsImNvbGxlY3Rpb25zIiwidGFibGVDb2x1bW5zTmFtZXMiLCJzcWwiLCJyYXciLCJ2YWwiLCJtYXRjaGVkUmVsYXRpb24iLCJyZWxhdGlvbiIsInVuZGVmaW5lZCIsIkFQSUVycm9yIiwicGFyZW50VGFibGUiLCJ0YXJnZXRUYWJsZSJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7OytCQTZEdkJBOzs7ZUFBQUE7Ozs0QkF4RHNCO3dCQUNiO3dCQUNHO3VCQUNvQjsyQkFDUDtvRUFDZDtzQkFDRzs7Ozs7O0FBa0RwQixNQUFNQSx5QkFBeUIsQ0FBQyxFQUNyQ0MsT0FBTyxFQUNQQyxVQUFVLEVBQ1ZDLGNBQWMsRUFDZEMsZUFBZSxFQUFFLEVBQ2pCQyxnQkFBZ0JDLHNCQUFzQixFQUN0Q0MsY0FBYyxFQUFFLEVBQ2hCQyxNQUFNLEVBQ05DLFdBQVcsRUFDWEMsS0FBSyxFQUNMQyxRQUFRQyxjQUFjLEVBQ3RCQyxjQUFjQyxnQkFBZ0IsRUFDOUJDLGVBQWVDLHFC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
|
485
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyaWVzL2dldFRhYmxlQ29sdW1uRnJvbVBhdGgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgU1FMIH0gZnJvbSAnZHJpenpsZS1vcm0nXG5pbXBvcnQgdHlwZSB7IFBnVGFibGVXaXRoQ29sdW1ucyB9IGZyb20gJ2RyaXp6bGUtb3JtL3BnLWNvcmUnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBGaWVsZEFmZmVjdGluZ0RhdGEsIE51bWJlckZpZWxkLCBUYWJBc0ZpZWxkLCBUZXh0RmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBhbmQsIGVxLCBsaWtlLCBzcWwgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7IGFsaWFzIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB7IEFQSUVycm9yIH0gZnJvbSAncGF5bG9hZC9lcnJvcnMnXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lIH0gZnJvbSAncGF5bG9hZC90eXBlcydcbmltcG9ydCB7IGZsYXR0ZW5Ub3BMZXZlbEZpZWxkcyB9IGZyb20gJ3BheWxvYWQvdXRpbGl0aWVzJ1xuaW1wb3J0IHRvU25ha2VDYXNlIGZyb20gJ3RvLXNuYWtlLWNhc2UnXG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCdcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1uLCBHZW5lcmljVGFibGUsIFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBCdWlsZFF1ZXJ5Sm9pbkFsaWFzZXMsIEJ1aWxkUXVlcnlKb2lucyB9IGZyb20gJy4vYnVpbGRRdWVyeSdcblxuaW1wb3J0IHsgZ2V0VGFibGVOYW1lIH0gZnJvbSAnLi4vc2NoZW1hL2dldFRhYmxlTmFtZSdcblxudHlwZSBDb25zdHJhaW50ID0ge1xuICBjb2x1bW5OYW1lOiBzdHJpbmdcbiAgdGFibGU6IEdlbmVyaWNUYWJsZSB8IFBnVGFibGVXaXRoQ29sdW1uczxhbnk+XG4gIHZhbHVlOiB1bmtub3duXG59XG5cbnR5cGUgVGFibGVDb2x1bW4gPSB7XG4gIGNvbHVtbk5hbWU/OiBzdHJpbmdcbiAgY29uc3RyYWludHM6IENvbnN0cmFpbnRbXVxuICBmaWVsZDogRmllbGRBZmZlY3RpbmdEYXRhXG4gIGdldE5vdE51bGxDb2x1bW5CeVZhbHVlPzogKHZhbDogdW5rbm93bikgPT4gc3RyaW5nXG4gIHBhdGhTZWdtZW50cz86IHN0cmluZ1tdXG4gIHJhd0NvbHVtbj86IFNRTFxuICB0YWJsZTogR2VuZXJpY1RhYmxlIHwgUGdUYWJsZVdpdGhDb2x1bW5zPGFueT5cbn1cblxudHlwZSBBcmdzID0ge1xuICBhZGFwdGVyOiBQb3N0Z3Jlc0FkYXB0ZXJcbiAgYWxpYXNUYWJsZT86IEdlbmVyaWNUYWJsZSB8IFBnVGFibGVXaXRoQ29sdW1uczxhbnk+XG4gIGNvbGxlY3Rpb25QYXRoOiBzdHJpbmdcbiAgY29sdW1uUHJlZml4Pzogc3RyaW5nXG4gIGNvbnN0cmFpbnRQYXRoPzogc3RyaW5nXG4gIGNvbnN0cmFpbnRzPzogQ29uc3RyYWludFtdXG4gIGZpZWxkczogKEZpZWxkIHwgVGFiQXNGaWVsZClbXVxuICBqb2luQWxpYXNlczogQnVpbGRRdWVyeUpvaW5BbGlhc2VzXG4gIGpvaW5zOiBCdWlsZFF1ZXJ5Sm9pbnNcbiAgbG9jYWxlPzogc3RyaW5nXG4gIHBhdGhTZWdtZW50czogc3RyaW5nW11cbiAgcm9vdFRhYmxlTmFtZT86IHN0cmluZ1xuICBzZWxlY3RGaWVsZHM6IFJlY29yZDxzdHJpbmcsIEdlbmVyaWNDb2x1bW4+XG4gIHRhYmxlTmFtZTogc3RyaW5nXG4gIC8qKlxuICAgKiBJZiBjcmVhdGluZyBhIG5ldyB0YWJsZSBuYW1lIGZvciBhcnJheXMgYW5kIGJsb2NrcywgdGhpcyBzdWZmaXggc2hvdWxkIGJlIGFwcGVuZGVkIHRvIHRoZSB0YWJsZSBuYW1lXG4gICAqL1xuICB0YWJsZU5hbWVTdWZmaXg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSByYXcgdmFsdWUgb2YgdGhlIHF1ZXJ5IGJlZm9yZSBzYW5pdGl6YXRpb25cbiAgICovXG4gIHZhbHVlOiB1bmtub3duXG59XG4vKipcbiAqIFRyYW5zZm9ybXMgcGF0aCB0byB0YWJsZSBhbmQgY29sdW1uIG5hbWVcbiAqIEFkZHMgdGFibGVzIHRvIGBqb2luYFxuICogQHJldHVybnMgVGFibGVDb2x1bW5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldFRhYmxlQ29sdW1uRnJvbVBhdGggPSAoe1xuICBhZGFwdGVyLFxuICBhbGlhc1RhYmxlLFxuICBjb2xsZWN0aW9uUGF0aCxcbiAgY29sdW1uUHJlZml4ID0gJycsXG4gIGNvbnN0cmFpbnRQYXRoOiBpbmNvbWluZ0NvbnN0cmFpbnRQYXRoLFxuICBjb25zdHJhaW50cyA9IFtdLFxuICBmaWVsZHMsXG4gIGpvaW5BbGlhc2VzLFxuICBqb2lucyxcbiAgbG9jYWxlOiBpbmNvbWluZ0xvY2FsZSxcbiAgcGF0aFNlZ21lbnRzOiBpbmNvbWluZ1NlZ21lbnRzLFxuICByb290VGFibGVOYW1lOiBpbmNvbWluZ1Jvb3RUYWJsZU5hbWUsXG4gIHNlbGVjdEZpZWxkcyxcbiAgdGFibGVOYW1lLFxuICB0YWJsZU5hbWVTdWZmaXggPSAnJyxcbiAgdmFsdWUsXG59OiBBcmdzKTogVGFibGVDb2x1bW4gPT4ge1xuICBjb25zdCBmaWVsZFBhdGggPSBpbmNvbWluZ1NlZ21lbnRzWzBdXG4gIGxldCBsb2NhbGUgPSBpbmNvbWluZ0xvY2FsZVxuICBjb25zdCByb290VGFibGVOYW1lID0gaW5jb21pbmdSb290VGFibGVOYW1lIHx8IHRhYmxlTmFtZVxuICBsZXQgY29uc3RyYWludFBhdGggPSBpbmNvbWluZ0NvbnN0cmFpbnRQYXRoIHx8ICcnXG5cbiAgY29uc3QgZmllbGQgPSBmbGF0dGVuVG9wTGV2ZWxGaWVsZHMoZmllbGRzIGFzIEZpZWxkW10pLmZpbmQoXG4gICAgKGZpZWxkVG9GaW5kKSA9PiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkVG9GaW5kKSAmJiBmaWVsZFRvRmluZC5uYW1lID09PSBmaWVsZFBhdGgsXG4gICkgYXMgRmllbGQgfCBUYWJBc0ZpZWxkXG4gIGxldCBuZXdUYWJsZU5hbWUgPSB0YWJsZU5hbWVcblxuICBpZiAoIWZpZWxkICYmIGZpZWxkUGF0aCA9PT0gJ2lkJykge1xuICAgIHNlbGVjdEZpZWxkcy5pZCA9IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uaWRcbiAgICByZXR1cm4ge1xuICAgICAgY29sdW1uTmFtZTogJ2lkJyxcbiAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgZmllbGQ6IHtcbiAgICAgICAgbmFtZTogJ2lkJyxcbiAgICAgICAgdHlwZTogYWRhcHRlci5pZFR5cGUgPT09ICd1dWlkJyA/ICd0ZXh0JyA6ICdudW1iZXInLFxuICAgICAgfSBhcyBOdW1iZXJGaWVsZCB8IFRleHRGaWVsZCxcbiAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgIH1cbiAgfVxuXG4gIGlmIChmaWVsZCkge1xuICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IFsuLi5pbmNvbWluZ1NlZ21lbnRzXVxuXG4gICAgLy8gSWYgbmV4dCBzZWdtZW50IGlzIGEgbG9jYWxlLFxuICAgIC8vIHdlIG5lZWQgdG8gdGFrZSBpdCBvdXQgYW5kIHVzZSBpdCBhcyB0aGUgbG9jYWxlIGZyb20gdGhpcyBwb2ludCBvblxuICAgIGlmICgnbG9jYWxpemVkJyBpbiBmaWVsZCAmJiBmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgIGNvbnN0IG1hdGNoZWRMb2NhbGUgPSBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbi5sb2NhbGVDb2Rlcy5maW5kKFxuICAgICAgICAobG9jYWxlKSA9PiBsb2NhbGUgPT09IHBhdGhTZWdtZW50c1sxXSxcbiAgICAgIClcblxuICAgICAgaWYgKG1hdGNoZWRMb2NhbGUpIHtcbiAgICAgICAgbG9jYWxlID0gbWF0Y2hlZExvY2FsZVxuICAgICAgICBwYXRoU2VnbWVudHMuc3BsaWNlKDEsIDEpXG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICBjYXNlICd0YWJzJzoge1xuICAgICAgICByZXR1cm4gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBhbGlhc1RhYmxlLFxuICAgICAgICAgIGNvbGxlY3Rpb25QYXRoLFxuICAgICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgICBjb25zdHJhaW50UGF0aCxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLnRhYnMubWFwKCh0YWIpID0+ICh7XG4gICAgICAgICAgICAuLi50YWIsXG4gICAgICAgICAgICB0eXBlOiAndGFiJyxcbiAgICAgICAgICB9KSksXG4gICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgam9pbnMsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgIHRhYmxlTmFtZVN1ZmZpeCxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3RhYic6IHtcbiAgICAgICAgaWYgKHRhYkhhc05hbWUoZmllbGQpKSB7XG4gICAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgIGFsaWFzVGFibGUsXG4gICAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICAgIGNvbHVtblByZWZpeDogYCR7Y29sdW1uUHJlZml4fSR7ZmllbGQubmFtZX1fYCxcbiAgICAgICAgICAgIGNvbnN0cmFpbnRQYXRoOiBgJHtjb25zdHJhaW50UGF0aH0ke2ZpZWxkLm5hbWV9LmAsXG4gICAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgICBqb2lucyxcbiAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICAgIHNlbGVjdEZpZWxkcyxcbiAgICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgICAgdGFibGVOYW1lU3VmZml4OiBgJHt0YWJsZU5hbWVTdWZmaXh9JHt0b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1fYCxcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYWxpYXNUYWJsZSxcbiAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICBjb2x1bW5QcmVmaXgsXG4gICAgICAgICAgY29uc3RyYWludFBhdGgsXG4gICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgam9pbnMsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgIHRhYmxlTmFtZVN1ZmZpeCxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY2FzZSAnZ3JvdXAnOiB7XG4gICAgICAgIGlmIChsb2NhbGUgJiYgZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgbmV3VGFibGVOYW1lID0gZ2V0VGFibGVOYW1lKHtcbiAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICBjb25maWc6IGZpZWxkLFxuICAgICAgICAgICAgbG9jYWxlczogdHJ1ZSxcbiAgICAgICAgICAgIHBhcmVudFRhYmxlTmFtZTogdGFibGVOYW1lLFxuICAgICAgICAgICAgcHJlZml4OiBgJHt0YWJsZU5hbWV9X2AsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGpvaW5zW3RhYmxlTmFtZV0gPSBlcShcbiAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsXG4gICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9wYXJlbnRJRCxcbiAgICAgICAgICApXG4gICAgICAgICAgaWYgKGxvY2FsZSAhPT0gJ2FsbCcpIHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgICBjb2x1bW5OYW1lOiAnX2xvY2FsZScsXG4gICAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYWxpYXNUYWJsZSxcbiAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICBjb2x1bW5QcmVmaXg6IGAke2NvbHVtblByZWZpeH0ke2ZpZWxkLm5hbWV9X2AsXG4gICAgICAgICAgY29uc3RyYWludFBhdGg6IGAke2NvbnN0cmFpbnRQYXRofSR7ZmllbGQubmFtZX0uYCxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICBqb2lucyxcbiAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICBzZWxlY3RGaWVsZHMsXG4gICAgICAgICAgdGFibGVOYW1lOiBuZXdUYWJsZU5hbWUsXG4gICAgICAgICAgdGFibGVOYW1lU3VmZml4OiBgJHt0YWJsZU5hbWVTdWZmaXh9JHt0b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1fYCxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY2FzZSAnc2VsZWN0Jzoge1xuICAgICAgICBpZiAoZmllbGQuaGFzTWFueSkge1xuICAgICAgICAgIG5ld1RhYmxlTmFtZSA9IGdldFRhYmxlTmFtZSh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgY29uZmlnOiBmaWVsZCxcbiAgICAgICAgICAgIHBhcmVudFRhYmxlTmFtZTogYCR7dGFibGVOYW1lfV8ke3RhYmxlTmFtZVN1ZmZpeH1gLFxuICAgICAgICAgICAgcHJlZml4OiBgJHt0YWJsZU5hbWV9XyR7dGFibGVOYW1lU3VmZml4fWAsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGlmIChsb2NhbGUgJiYgZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgICBqb2luc1tuZXdUYWJsZU5hbWVdID0gYW5kKFxuICAgICAgICAgICAgICBlcShhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkLCBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLnBhcmVudCksXG4gICAgICAgICAgICAgIGVxKGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX2xvY2FsZSwgbG9jYWxlKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGlmIChsb2NhbGUgIT09ICdhbGwnKSB7XG4gICAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIGNvbHVtbk5hbWU6ICdfbG9jYWxlJyxcbiAgICAgICAgICAgICAgICB0YWJsZTogYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBqb2luc1tuZXdUYWJsZU5hbWVdID0gZXEoXG4gICAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsXG4gICAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0ucGFyZW50LFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb2x1bW5OYW1lOiAndmFsdWUnLFxuICAgICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICd0ZXh0JzpcbiAgICAgIGNhc2UgJ251bWJlcic6IHtcbiAgICAgICAgaWYgKGZpZWxkLmhhc01hbnkpIHtcbiAgICAgICAgICBsZXQgdGFibGVUeXBlID0gJ3RleHRzJ1xuICAgICAgICAgIGxldCBjb2x1bW5OYW1lID0gJ3RleHQnXG4gICAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICB0YWJsZVR5cGUgPSAnbnVtYmVycydcbiAgICAgICAgICAgIGNvbHVtbk5hbWUgPSAnbnVtYmVyJ1xuICAgICAgICAgIH1cbiAgICAgICAgICBuZXdUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9XyR7dGFibGVUeXBlfWBcbiAgICAgICAgICBjb25zdCBqb2luQ29uc3RyYWludHMgPSBbXG4gICAgICAgICAgICBlcShhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkLCBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLnBhcmVudCksXG4gICAgICAgICAgICBlcShhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLnBhdGgsIGAke2NvbnN0cmFpbnRQYXRofSR7ZmllbGQubmFtZX1gKSxcbiAgICAgICAgICBdXG5cbiAgICAgICAgICBpZiAobG9jYWxlICYmIGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgICAgam9pbnNbbmV3VGFibGVOYW1lXSA9IGFuZChcbiAgICAgICAgICAgICAgLi4uam9pbkNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgICBlcShhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9sb2NhbGUsIGxvY2FsZSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBpZiAobG9jYWxlICE9PSAnYWxsJykge1xuICAgICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICBjb2x1bW5OYW1lOiAnbG9jYWxlJyxcbiAgICAgICAgICAgICAgICB0YWJsZTogYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBqb2luc1tuZXdUYWJsZU5hbWVdID0gYW5kKC4uLmpvaW5Db25zdHJhaW50cylcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29sdW1uTmFtZSxcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICB0YWJsZTogYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnYXJyYXknOiB7XG4gICAgICAgIG5ld1RhYmxlTmFtZSA9IGdldFRhYmxlTmFtZSh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBjb25maWc6IGZpZWxkLFxuICAgICAgICAgIHBhcmVudFRhYmxlTmFtZTogYCR7dGFibGVOYW1lfV8ke3RhYmxlTmFtZVN1ZmZpeH1gLFxuICAgICAgICAgIHByZWZpeDogYCR7dGFibGVOYW1lfV8ke3RhYmxlTmFtZVN1ZmZpeH1gLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdHJhaW50UGF0aCA9IGAke2NvbnN0cmFpbnRQYXRofSR7ZmllbGQubmFtZX0uJS5gXG4gICAgICAgIGlmIChsb2NhbGUgJiYgZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgam9pbnNbbmV3VGFibGVOYW1lXSA9IGFuZChcbiAgICAgICAgICAgIGVxKGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX3BhcmVudElEKSxcbiAgICAgICAgICAgIGVxKGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX2xvY2FsZSwgbG9jYWxlKSxcbiAgICAgICAgICApXG4gICAgICAgICAgaWYgKGxvY2FsZSAhPT0gJ2FsbCcpIHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgICBjb2x1bW5OYW1lOiAnX2xvY2FsZScsXG4gICAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgam9pbnNbbmV3VGFibGVOYW1lXSA9IGVxKFxuICAgICAgICAgICAgYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXS5pZCxcbiAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX3BhcmVudElELFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICBjb25zdHJhaW50UGF0aCxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICBqb2lucyxcbiAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICBzZWxlY3RGaWVsZHMsXG4gICAgICAgICAgdGFibGVOYW1lOiBuZXdUYWJsZU5hbWUsXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2Jsb2Nrcyc6IHtcbiAgICAgICAgbGV0IGJsb2NrVGFibGVDb2x1bW46IFRhYmxlQ29sdW1uXG4gICAgICAgIGxldCBuZXdUYWJsZU5hbWU6IHN0cmluZ1xuXG4gICAgICAgIC8vIGhhbmRsZSBibG9ja1R5cGUgcXVlcmllc1xuICAgICAgICBpZiAocGF0aFNlZ21lbnRzWzFdID09PSAnYmxvY2tUeXBlJykge1xuICAgICAgICAgIC8vIGZpbmQgdGhlIGJsb2NrIGNvbmZpZyB1c2luZyB0aGUgdmFsdWVcbiAgICAgICAgICBjb25zdCBibG9ja1R5cGVzID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV1cbiAgICAgICAgICBibG9ja1R5cGVzLmZvckVhY2goKGJsb2NrVHlwZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYmxvY2sgPSBmaWVsZC5ibG9ja3MuZmluZCgoYmxvY2spID0+IGJsb2NrLnNsdWcgPT09IGJsb2NrVHlwZSlcbiAgICAgICAgICAgIG5ld1RhYmxlTmFtZSA9IGdldFRhYmxlTmFtZSh7XG4gICAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICAgIGNvbmZpZzogYmxvY2ssXG4gICAgICAgICAgICAgIHBhcmVudFRhYmxlTmFtZTogdGFibGVOYW1lLFxuICAgICAgICAgICAgICBwcmVmaXg6IGAke3RhYmxlTmFtZX1fYmxvY2tzX2AsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgam9pbnNbbmV3VGFibGVOYW1lXSA9IGVxKFxuICAgICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkLFxuICAgICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9wYXJlbnRJRCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgICBjb2x1bW5OYW1lOiAnX3BhdGgnLFxuICAgICAgICAgICAgICB0YWJsZTogYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSxcbiAgICAgICAgICAgICAgdmFsdWU6IHBhdGhTZWdtZW50c1swXSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgIGdldE5vdE51bGxDb2x1bW5CeVZhbHVlOiAoKSA9PiAnaWQnLFxuICAgICAgICAgICAgdGFibGU6IGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0sXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaGFzQmxvY2tGaWVsZCA9IGZpZWxkLmJsb2Nrcy5zb21lKChibG9jaykgPT4ge1xuICAgICAgICAgIG5ld1RhYmxlTmFtZSA9IGdldFRhYmxlTmFtZSh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgY29uZmlnOiBibG9jayxcbiAgICAgICAgICAgIHBhcmVudFRhYmxlTmFtZTogdGFibGVOYW1lLFxuICAgICAgICAgICAgcHJlZml4OiBgJHt0YWJsZU5hbWV9X2Jsb2Nrc19gLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgY29uc3RyYWludFBhdGggPSBgJHtjb25zdHJhaW50UGF0aH0ke2ZpZWxkLm5hbWV9LiUuYFxuICAgICAgICAgIGxldCByZXN1bHRcbiAgICAgICAgICBjb25zdCBibG9ja0NvbnN0cmFpbnRzID0gW11cbiAgICAgICAgICBjb25zdCBibG9ja1NlbGVjdEZpZWxkcyA9IHt9XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICAgICAgY29uc3RyYWludFBhdGgsXG4gICAgICAgICAgICAgIGNvbnN0cmFpbnRzOiBibG9ja0NvbnN0cmFpbnRzLFxuICAgICAgICAgICAgICBmaWVsZHM6IGJsb2NrLmZpZWxkcyxcbiAgICAgICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgICAgIGpvaW5zLFxuICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgICAgICBzZWxlY3RGaWVsZHM6IGJsb2NrU2VsZWN0RmllbGRzLFxuICAgICAgICAgICAgICB0YWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAvLyB0aGlzIGlzIGZpbmUsIG5vdCBldmVyeSBibG9jayB3aWxsIGhhdmUgdGhlIGZpZWxkXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgICAgYmxvY2tUYWJsZUNvbHVtbiA9IHJlc3VsdFxuICAgICAgICAgIGNvbnN0cmFpbnRzID0gY29uc3RyYWludHMuY29uY2F0KGJsb2NrQ29uc3RyYWludHMpXG4gICAgICAgICAgc2VsZWN0RmllbGRzID0geyAuLi5zZWxlY3RGaWVsZHMsIC4uLmJsb2NrU2VsZWN0RmllbGRzIH1cbiAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgICBqb2luc1tuZXdUYWJsZU5hbWVdID0gYW5kKFxuICAgICAgICAgICAgICBlcShhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkLCBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9wYXJlbnRJRCksXG4gICAgICAgICAgICAgIGVxKGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX2xvY2FsZSwgbG9jYWxlKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaCh7XG4gICAgICAgICAgICAgICAgY29sdW1uTmFtZTogJ19sb2NhbGUnLFxuICAgICAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBsb2NhbGUsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGpvaW5zW25ld1RhYmxlTmFtZV0gPSBlcShcbiAgICAgICAgICAgICAgYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXS5pZCxcbiAgICAgICAgICAgICAgYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXS5fcGFyZW50SUQsXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChoYXNCbG9ja0ZpZWxkKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbHVtbk5hbWU6IGJsb2NrVGFibGVDb2x1bW4uY29sdW1uTmFtZSxcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgZmllbGQ6IGJsb2NrVGFibGVDb2x1bW4uZmllbGQsXG4gICAgICAgICAgICBwYXRoU2VnbWVudHM6IHBhdGhTZWdtZW50cy5zbGljZSgxKSxcbiAgICAgICAgICAgIHJhd0NvbHVtbjogYmxvY2tUYWJsZUNvbHVtbi5yYXdDb2x1bW4sXG4gICAgICAgICAgICB0YWJsZTogYmxvY2tUYWJsZUNvbHVtbi50YWJsZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncmVsYXRpb25zaGlwJzpcbiAgICAgIGNhc2UgJ3VwbG9hZCc6IHtcbiAgICAgICAgbGV0IHJlbGF0aW9uc2hpcEZpZWxkc1xuICAgICAgICBjb25zdCByZWxhdGlvblRhYmxlTmFtZSA9IGAke3Jvb3RUYWJsZU5hbWV9JHthZGFwdGVyLnJlbGF0aW9uc2hpcHNTdWZmaXh9YFxuICAgICAgICBjb25zdCBuZXdDb2xsZWN0aW9uUGF0aCA9IHBhdGhTZWdtZW50cy5zbGljZSgxKS5qb2luKCcuJylcbiAgICAgICAgY29uc3QgYWxpYXNSZWxhdGlvbnNoaXBUYWJsZU5hbWUgPSB1dWlkKClcbiAgICAgICAgY29uc3QgYWxpYXNSZWxhdGlvbnNoaXBUYWJsZSA9IGFsaWFzKFxuICAgICAgICAgIGFkYXB0ZXIudGFibGVzW3JlbGF0aW9uVGFibGVOYW1lXSxcbiAgICAgICAgICBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlTmFtZSxcbiAgICAgICAgKVxuXG4gICAgICAgIGlmIChsb2NhbGUgJiYgZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgam9pbkFsaWFzZXMucHVzaCh7XG4gICAgICAgICAgICBjb25kaXRpb246IGFuZChcbiAgICAgICAgICAgICAgZXEoKGFsaWFzVGFibGUgfHwgYWRhcHRlci50YWJsZXNbcm9vdFRhYmxlTmFtZV0pLmlkLCBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlLnBhcmVudCksXG4gICAgICAgICAgICAgIGVxKGFsaWFzUmVsYXRpb25zaGlwVGFibGUubG9jYWxlLCBsb2NhbGUpLFxuICAgICAgICAgICAgICBsaWtlKGFsaWFzUmVsYXRpb25zaGlwVGFibGUucGF0aCwgYCR7Y29uc3RyYWludFBhdGh9JHtmaWVsZC5uYW1lfWApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRhYmxlOiBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgaWYgKGxvY2FsZSAhPT0gJ2FsbCcpIHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgICBjb2x1bW5OYW1lOiAnbG9jYWxlJyxcbiAgICAgICAgICAgICAgdGFibGU6IGFsaWFzUmVsYXRpb25zaGlwVGFibGUsXG4gICAgICAgICAgICAgIHZhbHVlOiBsb2NhbGUsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBKb2luIGluIHRoZSByZWxhdGlvbnNoaXBzIHRhYmxlXG4gICAgICAgICAgam9pbkFsaWFzZXMucHVzaCh7XG4gICAgICAgICAgICBjb25kaXRpb246IGFuZChcbiAgICAgICAgICAgICAgZXEoKGFsaWFzVGFibGUgfHwgYWRhcHRlci50YWJsZXNbcm9vdFRhYmxlTmFtZV0pLmlkLCBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlLnBhcmVudCksXG4gICAgICAgICAgICAgIGxpa2UoYWxpYXNSZWxhdGlvbnNoaXBUYWJsZS5wYXRoLCBgJHtjb25zdHJhaW50UGF0aH0ke2ZpZWxkLm5hbWV9YCksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGFibGU6IGFsaWFzUmVsYXRpb25zaGlwVGFibGUsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGVjdEZpZWxkc1tgJHtyZWxhdGlvblRhYmxlTmFtZX0ucGF0aGBdID0gYWxpYXNSZWxhdGlvbnNoaXBUYWJsZS5wYXRoXG5cbiAgICAgICAgbGV0IG5ld0FsaWFzVGFibGVcblxuICAgICAgICBpZiAodHlwZW9mIGZpZWxkLnJlbGF0aW9uVG8gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwQ29uZmlnID0gYWRhcHRlci5wYXlsb2FkLmNvbGxlY3Rpb25zW2ZpZWxkLnJlbGF0aW9uVG9dLmNvbmZpZ1xuICAgICAgICAgIG5ld1RhYmxlTmFtZSA9IGdldFRhYmxlTmFtZSh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgY29uZmlnOiByZWxhdGlvbnNoaXBDb25maWcsXG4gICAgICAgICAgfSlcbiAgICAgICAgICAvLyBwYXJlbnQgdG8gcmVsYXRpb25zaGlwIGpvaW4gdGFibGVcbiAgICAgICAgICByZWxhdGlvbnNoaXBGaWVsZHMgPSByZWxhdGlvbnNoaXBDb25maWcuZmllbGRzXG5cbiAgICAgICAgICBuZXdBbGlhc1RhYmxlID0gYWxpYXMoYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSwgdG9TbmFrZUNhc2UodXVpZCgpKSlcblxuICAgICAgICAgIGpvaW5BbGlhc2VzLnB1c2goe1xuICAgICAgICAgICAgY29uZGl0aW9uOiBlcShuZXdBbGlhc1RhYmxlLmlkLCBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlW2Ake2ZpZWxkLnJlbGF0aW9uVG99SURgXSksXG4gICAgICAgICAgICB0YWJsZTogbmV3QWxpYXNUYWJsZSxcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgaWYgKG5ld0NvbGxlY3Rpb25QYXRoID09PSAnJyB8fCBuZXdDb2xsZWN0aW9uUGF0aCA9PT0gJ2lkJykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgY29sdW1uTmFtZTogYCR7ZmllbGQucmVsYXRpb25Ub31JRGAsXG4gICAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgdGFibGU6IGFsaWFzUmVsYXRpb25zaGlwVGFibGUsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKG5ld0NvbGxlY3Rpb25QYXRoID09PSAndmFsdWUnKSB7XG4gICAgICAgICAgY29uc3QgdGFibGVDb2x1bW5zTmFtZXMgPSBmaWVsZC5yZWxhdGlvblRvLm1hcChcbiAgICAgICAgICAgIChyZWxhdGlvblRvKSA9PlxuICAgICAgICAgICAgICBgXCIke2FsaWFzUmVsYXRpb25zaGlwVGFibGVOYW1lfVwiLlwiJHtnZXRUYWJsZU5hbWUoe1xuICAgICAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICAgICAgY29uZmlnOiBhZGFwdGVyLnBheWxvYWQuY29sbGVjdGlvbnNbcmVsYXRpb25Ub10uY29uZmlnLFxuICAgICAgICAgICAgICB9KX1faWRcImAsXG4gICAgICAgICAgKVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgcmF3Q29sdW1uOiBzcWwucmF3KGBDT0FMRVNDRSgke3RhYmxlQ29sdW1uc05hbWVzLmpvaW4oJywgJyl9KWApLFxuICAgICAgICAgICAgdGFibGU6IGFsaWFzUmVsYXRpb25zaGlwVGFibGUsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKG5ld0NvbGxlY3Rpb25QYXRoID09PSAncmVsYXRpb25UbycpIHtcbiAgICAgICAgICBjb25zdCByZWxhdGlvblRvID0gQXJyYXkuaXNBcnJheShmaWVsZC5yZWxhdGlvblRvKSA/IGZpZWxkLnJlbGF0aW9uVG8gOiBbZmllbGQucmVsYXRpb25Ub11cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgZ2V0Tm90TnVsbENvbHVtbkJ5VmFsdWU6ICh2YWwpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbWF0Y2hlZFJlbGF0aW9uID0gcmVsYXRpb25Uby5maW5kKChyZWxhdGlvbikgPT4gcmVsYXRpb24gPT09IHZhbClcbiAgICAgICAgICAgICAgaWYgKG1hdGNoZWRSZWxhdGlvbikgcmV0dXJuIGAke21hdGNoZWRSZWxhdGlvbn1JRGBcbiAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRhYmxlOiBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQVBJRXJyb3IoJ05vdCBzdXBwb3J0ZWQnKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYWxpYXNUYWJsZTogbmV3QWxpYXNUYWJsZSxcbiAgICAgICAgICBjb2xsZWN0aW9uUGF0aDogbmV3Q29sbGVjdGlvblBhdGgsXG4gICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgZmllbGRzOiByZWxhdGlvbnNoaXBGaWVsZHMsXG4gICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgam9pbnMsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICBzZWxlY3RGaWVsZHMsXG4gICAgICAgICAgdGFibGVOYW1lOiBuZXdUYWJsZU5hbWUsXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpKSB7XG4gICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgIC8vIElmIGxvY2FsaXplZCwgd2UgZ28gdG8gbG9jYWxpemVkIHRhYmxlIGFuZCBzZXQgYWxpYXNUYWJsZSB0byB1bmRlZmluZWRcbiAgICAgICAgLy8gc28gaXQgaXMgbm90IHBpY2tlZCB1cCBiZWxvdyB0byBiZSB1c2VkIGFzIHRhcmdldFRhYmxlXG4gICAgICAgIG5ld1RhYmxlTmFtZSA9IGAke3RhYmxlTmFtZX0ke2FkYXB0ZXIubG9jYWxlc1N1ZmZpeH1gXG5cbiAgICAgICAgY29uc3QgcGFyZW50VGFibGUgPSBhbGlhc1RhYmxlIHx8IGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV1cblxuICAgICAgICBqb2luc1tuZXdUYWJsZU5hbWVdID0gZXEocGFyZW50VGFibGUuaWQsIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX3BhcmVudElEKVxuXG4gICAgICAgIGFsaWFzVGFibGUgPSB1bmRlZmluZWRcblxuICAgICAgICBpZiAobG9jYWxlICE9PSAnYWxsJykge1xuICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgY29sdW1uTmFtZTogJ19sb2NhbGUnLFxuICAgICAgICAgICAgdGFibGU6IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0sXG4gICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgdGFyZ2V0VGFibGUgPSBhbGlhc1RhYmxlIHx8IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV1cblxuICAgICAgc2VsZWN0RmllbGRzW2Ake25ld1RhYmxlTmFtZX0uJHtjb2x1bW5QcmVmaXh9JHtmaWVsZC5uYW1lfWBdID1cbiAgICAgICAgdGFyZ2V0VGFibGVbYCR7Y29sdW1uUHJlZml4fSR7ZmllbGQubmFtZX1gXVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2x1bW5OYW1lOiBgJHtjb2x1bW5QcmVmaXh9JHtmaWVsZC5uYW1lfWAsXG4gICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICBmaWVsZCxcbiAgICAgICAgcGF0aFNlZ21lbnRzLFxuICAgICAgICB0YWJsZTogdGFyZ2V0VGFibGUsXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IEFQSUVycm9yKGBDYW5ub3QgZmluZCBmaWVsZCBmb3IgcGF0aCBhdCAke2ZpZWxkUGF0aH1gKVxufVxuIl0sIm5hbWVzIjpbImdldFRhYmxlQ29sdW1uRnJvbVBhdGgiLCJhZGFwdGVyIiwiYWxpYXNUYWJsZSIsImNvbGxlY3Rpb25QYXRoIiwiY29sdW1uUHJlZml4IiwiY29uc3RyYWludFBhdGgiLCJpbmNvbWluZ0NvbnN0cmFpbnRQYXRoIiwiY29uc3RyYWludHMiLCJmaWVsZHMiLCJqb2luQWxpYXNlcyIsImpvaW5zIiwibG9jYWxlIiwiaW5jb21pbmdMb2NhbGUiLCJwYXRoU2VnbWVudHMiLCJpbmNvbWluZ1NlZ21lbnRzIiwicm9vdFRhYmxlTmFtZSIsImluY29taW5nUm9vdFRhYmxlTmFtZSIsInNlbGVjdEZpZWxkcyIsInRhYmxlTmFtZSIsInRhYmxlTmFtZVN1ZmZpeCIsInZhbHVlIiwiZmllbGRQYXRoIiwiZmllbGQiLCJmbGF0dGVuVG9wTGV2ZWxGaWVsZHMiLCJmaW5kIiwiZmllbGRUb0ZpbmQiLCJmaWVsZEFmZmVjdHNEYXRhIiwibmFtZSIsIm5ld1RhYmxlTmFtZSIsImlkIiwidGFibGVzIiwiY29sdW1uTmFtZSIsInR5cGUiLCJpZFR5cGUiLCJ0YWJsZSIsImxvY2FsaXplZCIsInBheWxvYWQiLCJjb25maWciLCJsb2NhbGl6YXRpb24iLCJtYXRjaGVkTG9jYWxlIiwibG9jYWxlQ29kZXMiLCJzcGxpY2UiLCJ0YWJzIiwibWFwIiwidGFiIiwic2xpY2UiLCJ0YWJIYXNOYW1lIiwidG9TbmFrZUNhc2UiLCJnZXRUYWJsZU5hbWUiLCJsb2NhbGVzIiwicGFyZW50VGFibGVOYW1lIiwicHJlZml4IiwiZXEiLCJfcGFyZW50SUQiLCJwdXNoIiwiaGFzTWFueSIsImFuZCIsInBhcmVudCIsIl9sb2NhbGUiLCJ0YWJsZVR5cGUiLCJqb2luQ29uc3RyYWludHMiLCJwYXRoIiwiYmxvY2tUYWJsZUNvbHVtbiIsImJsb2NrVHlwZXMiLCJBcnJheSIsImlzQXJyYXkiLCJmb3JFYWNoIiwiYmxvY2tUeXBlIiwiYmxvY2siLCJibG9ja3MiLCJzbHVnIiwiZ2V0Tm90TnVsbENvbHVtbkJ5VmFsdWUiLCJoYXNCbG9ja0ZpZWxkIiwic29tZSIsInJlc3VsdCIsImJsb2NrQ29uc3RyYWludHMiLCJibG9ja1NlbGVjdEZpZWxkcyIsImVycm9yIiwiY29uY2F0IiwicmF3Q29sdW1uIiwicmVsYXRpb25zaGlwRmllbGRzIiwicmVsYXRpb25UYWJsZU5hbWUiLCJyZWxhdGlvbnNoaXBzU3VmZml4IiwibmV3Q29sbGVjdGlvblBhdGgiLCJqb2luIiwiYWxpYXNSZWxhdGlvbnNoaXBUYWJsZU5hbWUiLCJ1dWlkIiwiYWxpYXNSZWxhdGlvbnNoaXBUYWJsZSIsImFsaWFzIiwiY29uZGl0aW9uIiwibGlrZSIsIm5ld0FsaWFzVGFibGUiLCJyZWxhdGlvblRvIiwicmVsYXRpb25zaGlwQ29uZmlnIiwiY29sbGVjdGlvbnMiLCJ0YWJsZUNvbHVtbnNOYW1lcyIsInNxbCIsInJhdyIsInZhbCIsIm1hdGNoZWRSZWxhdGlvbiIsInJlbGF0aW9uIiwidW5kZWZpbmVkIiwiQVBJRXJyb3IiLCJsb2NhbGVzU3VmZml4IiwicGFyZW50VGFibGUiLCJ0YXJnZXRUYWJsZSJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7OytCQStEdkJBOzs7ZUFBQUE7Ozs0QkExRHNCO3dCQUNiO3dCQUNHO3VCQUNvQjsyQkFDUDtvRUFDZDtzQkFDRzs4QkFLRTs7Ozs7O0FBK0N0QixNQUFNQSx5QkFBeUIsQ0FBQyxFQUNyQ0MsT0FBTyxFQUNQQyxVQUFVLEVBQ1ZDLGNBQWMsRUFDZEMsZUFBZSxFQUFFLEVBQ2pCQyxnQkFBZ0JDLHNCQUFzQixFQUN0Q0MsY0FBYyxFQUFFLEVBQ2hCQyxNQUFNLEVBQ05DLFdBQVcsRUFDWEMsS0FBSyxFQUNMQyxRQUFRQyxjQUFjLEVBQ3RCQyxjQUFjQyxnQkFBZ0IsRUFDOUJDLGVBQWVDLHFCQUFxQixFQUNwQ0MsWUFBWSxFQUNaQyxTQUFTLEVBQ1RDLGtCQUFrQixFQUFFLEVBQ3BCQyxLQUFLLEVBQ0E7SUFDTCxNQUFNQyxZQUFZUCxnQkFBZ0IsQ0FBQyxFQUFFO0lBQ3JDLElBQUlILFNBQVNDO0lBQ2IsTUFBTUcsZ0JBQWdCQyx5QkFBeUJFO0lBQy9DLElBQUliLGlCQUFpQkMsMEJBQTBCO0lBRS9DLE1BQU1nQixRQUFRQyxJQUFBQSxnQ0FBcUIsRUFBQ2YsUUFBbUJnQixJQUFJLENBQ3pELENBQUNDLGNBQWdCQyxJQUFBQSx1QkFBZ0IsRUFBQ0QsZ0JBQWdCQSxZQUFZRSxJQUFJLEtBQUtOO0lBRXpFLElBQUlPLGVBQWVWO0lBRW5CLElBQUksQ0FBQ0ksU0FBU0QsY0FBYyxNQUFNO1FBQ2hDSixhQUFhWSxFQUFFLEdBQUc1QixRQUFRNkIsTUFBTSxDQUFDRixhQUFhLENBQUNDLEVBQUU7UUFDakQsT0FBTztZQUNMRSxZQUFZ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
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"sanitizeQueryValue.d.ts","sourceRoot":"","sources":["../../src/queries/sanitizeQueryValue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,UAAU,EAAoB,MAAM,eAAe,CAAA;AAG7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE/C,KAAK,sBAAsB,GAAG;IAC5B,OAAO,EAAE,eAAe,CAAA;IACxB,KAAK,EAAE,KAAK,GAAG,UAAU,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;IACtB,GAAG,EAAE,GAAG,CAAA;CACT,CAAA;AAED,eAAO,MAAM,kBAAkB,oEAM5B,sBAAsB;cAAe,MAAM;WAAS,OAAO;
|
1
|
+
{"version":3,"file":"sanitizeQueryValue.d.ts","sourceRoot":"","sources":["../../src/queries/sanitizeQueryValue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,UAAU,EAAoB,MAAM,eAAe,CAAA;AAG7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE/C,KAAK,sBAAsB,GAAG;IAC5B,OAAO,EAAE,eAAe,CAAA;IACxB,KAAK,EAAE,KAAK,GAAG,UAAU,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;IACtB,GAAG,EAAE,GAAG,CAAA;CACT,CAAA;AAED,eAAO,MAAM,kBAAkB,oEAM5B,sBAAsB;cAAe,MAAM;WAAS,OAAO;CAyF7D,CAAA"}
|