@kontur.candy/tools 2.174.0 → 2.175.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/CHANGELOG.md +14 -1
- package/distr/Common/FormPathUtils.js +15 -0
- package/distr/Common/WellKnownDirectories.js +13 -0
- package/distr/Tools/src/BuildTasks/Form/CompileForm.js +3 -3
- package/distr/Tools/src/BuildTasks/Form/GenerateForm.js +3 -2
- package/distr/Tools/src/BuildTasks/Form/WriteAttachmentPathFiles.js +3 -3
- package/distr/Tools/src/BuildTasks/Form/WriteFLangNormalizationFiles.js +3 -3
- package/distr/Tools/src/BuildTasks/ReadFormSource.js +3 -2
- package/distr/Tools/src/BuildTasks/ResolveFormInfo.js +3 -4
- package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +13 -9
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js +59 -115
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js +34 -7
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js +2 -2
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsFromResourcesController.js +2 -2
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js +5 -2
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js +76 -30
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/RunFormCompilationViaWebpackDevServer.js +3 -6
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js +211 -16
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/GlobToRegexp.js +7 -1
- package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js +10 -6
- package/distr/Tools/src/CLICommands/FormStats/RunFormStats.js +4 -2
- package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js +3 -2
- package/distr/Tools/src/CLICommands/Localization/RunLocalization.js +3 -2
- package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js +8 -4
- package/distr/Tools/src/Commons/FormGlobsUtils.js +80 -2
- package/distr/Tools/src/Commons/TasksCore/DirectoryEntriesProducer.js +12 -4
- package/distr/Tools/src/Commons/TasksCore/Observe.js +5 -1
- package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js +4 -4
- package/package.json +1 -1
package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js
CHANGED
|
@@ -7,38 +7,233 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.FarmDirectory = void 0;
|
|
8
8
|
var _path = _interopRequireDefault(require("path"));
|
|
9
9
|
var _fs = require("fs");
|
|
10
|
+
var _fsExtra = require("fs-extra");
|
|
11
|
+
var _pLimit = _interopRequireDefault(require("p-limit"));
|
|
10
12
|
var _FormGlobsUtils = require("../../../../Commons/FormGlobsUtils");
|
|
11
13
|
var _FsUtils = require("../../../../Commons/FsUtils");
|
|
12
|
-
var _PathPattern = require("../../../../Commons/PathPattern");
|
|
13
14
|
var _TypingUtils = require("../../../../../../Common/TypingUtils");
|
|
15
|
+
var _ExtractGfvsFromFileName = require("../../../../Commons/ExtractGfvsFromFileName");
|
|
16
|
+
var _WellKnownDirectories = require("../../../../../../Common/WellKnownDirectories");
|
|
14
17
|
class FarmDirectory {
|
|
15
18
|
constructor(farmDirectory) {
|
|
16
19
|
this.farmDirectory = void 0;
|
|
20
|
+
this.gfvToPathMap = void 0;
|
|
21
|
+
this.allGfvInfos = void 0;
|
|
22
|
+
this.ensureGfvDirectoriesUpdated = void 0;
|
|
17
23
|
this.farmDirectory = farmDirectory;
|
|
24
|
+
const updateGfvDirectoriesLimit = (0, _pLimit.default)(1);
|
|
25
|
+
this.ensureGfvDirectoriesUpdated = async () => {
|
|
26
|
+
if (this.allGfvInfos == undefined || this.gfvToPathMap == undefined) {
|
|
27
|
+
await updateGfvDirectoriesLimit(async () => {
|
|
28
|
+
if (this.allGfvInfos == undefined || this.gfvToPathMap == undefined) {
|
|
29
|
+
await this.updateGfvDirectories();
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
setTimeout(() => {
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
36
|
+
updateGfvDirectoriesLimit(() => this.updateGfvDirectories());
|
|
37
|
+
}, 60000);
|
|
18
38
|
}
|
|
19
|
-
async
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
39
|
+
async updateGfvDirectories() {
|
|
40
|
+
this.allGfvInfos = await _FormGlobsUtils.FormGlobs.enumerateFormsInRepository(_path.default.join(this.farmDirectory, ".."));
|
|
41
|
+
this.gfvToPathMap = new Map(this.allGfvInfos.map(x => [x.gfv, x.formPath]));
|
|
42
|
+
}
|
|
43
|
+
async getAllPicklists() {
|
|
44
|
+
return await (0, _FsUtils.globAsync)("*", {
|
|
45
|
+
cwd: _path.default.join(this.farmDirectory, "picklists")
|
|
23
46
|
});
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
gfv: (_pattern$execStrict$g = pattern.execStrict(x)["gfv"]) !== null && _pattern$execStrict$g !== void 0 ? _pattern$execStrict$g : (0, _TypingUtils.reject)()
|
|
29
|
-
};
|
|
47
|
+
}
|
|
48
|
+
async getFormDirectory() {
|
|
49
|
+
return await (0, _FsUtils.globAsync)("*", {
|
|
50
|
+
cwd: _path.default.join(this.farmDirectory, "picklists")
|
|
30
51
|
});
|
|
31
52
|
}
|
|
53
|
+
async getAllFormJsonFiles() {
|
|
54
|
+
const formGfvPaths = await this.enumerateAllGfvs();
|
|
55
|
+
return formGfvPaths.map(x => ({
|
|
56
|
+
gfv: x.gfv
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
async enumerateAllGfvs() {
|
|
60
|
+
var _this$allGfvInfos;
|
|
61
|
+
await this.ensureGfvDirectoriesUpdated();
|
|
62
|
+
return (_this$allGfvInfos = this.allGfvInfos) !== null && _this$allGfvInfos !== void 0 ? _this$allGfvInfos : (0, _TypingUtils.reject)();
|
|
63
|
+
}
|
|
64
|
+
async getGfvToPathMap() {
|
|
65
|
+
var _this$gfvToPathMap;
|
|
66
|
+
await this.ensureGfvDirectoriesUpdated();
|
|
67
|
+
return (_this$gfvToPathMap = this.gfvToPathMap) !== null && _this$gfvToPathMap !== void 0 ? _this$gfvToPathMap : (0, _TypingUtils.reject)();
|
|
68
|
+
}
|
|
69
|
+
async getAllGfvs() {
|
|
70
|
+
const formGfvPaths = await this.enumerateAllGfvs();
|
|
71
|
+
return formGfvPaths.map(x => x.gfv);
|
|
72
|
+
}
|
|
32
73
|
async resolveFormGlobs(formGlobs) {
|
|
74
|
+
await this.ensureGfvDirectoriesUpdated();
|
|
33
75
|
return _FormGlobsUtils.FormGlobs.resolveGlobsToGfvs(await _FormGlobsUtils.FormGlobs.resolveSpecifiers(formGlobs, this.farmDirectory), this.farmDirectory);
|
|
34
76
|
}
|
|
35
|
-
getFormJsonPath(gfv) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
77
|
+
async getFormJsonPath(gfv) {
|
|
78
|
+
var _this$gfvToPathMap2;
|
|
79
|
+
await this.ensureGfvDirectoriesUpdated();
|
|
80
|
+
const formDirPath = ((_this$gfvToPathMap2 = this.gfvToPathMap) !== null && _this$gfvToPathMap2 !== void 0 ? _this$gfvToPathMap2 : (0, _TypingUtils.reject)()).get(gfv);
|
|
81
|
+
if (formDirPath != undefined && (0, _fs.existsSync)(_path.default.join(formDirPath, _WellKnownDirectories.WellKnownDirectories.FormJsonFileName))) {
|
|
82
|
+
return _path.default.join(formDirPath, _WellKnownDirectories.WellKnownDirectories.FormJsonFileName);
|
|
83
|
+
}
|
|
84
|
+
return undefined;
|
|
85
|
+
}
|
|
86
|
+
async getAllConverterFilePaths() {
|
|
87
|
+
const result = [];
|
|
88
|
+
for (const gfvInfo of await this.enumerateAllGfvs()) {
|
|
89
|
+
result.push(...(await (0, _FsUtils.globAsync)("converters/*", {
|
|
90
|
+
cwd: gfvInfo.formPath
|
|
91
|
+
})));
|
|
92
|
+
}
|
|
93
|
+
return result;
|
|
94
|
+
}
|
|
95
|
+
async getConverterFilePathByFileNameOrUndefined(filename) {
|
|
96
|
+
const gfvToPathMap = await this.getGfvToPathMap();
|
|
97
|
+
for (const gfv of (0, _ExtractGfvsFromFileName.extractGfvsFromFileName)(filename)) {
|
|
98
|
+
const formPath = gfvToPathMap.get(gfv);
|
|
99
|
+
if (formPath == undefined) {
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
const filePath = _path.default.join(formPath, "converters", filename);
|
|
103
|
+
if (await (0, _fsExtra.pathExists)(filePath)) {
|
|
104
|
+
return filePath;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return undefined;
|
|
108
|
+
}
|
|
109
|
+
async getAllSchemasFilePaths() {
|
|
110
|
+
const result = [];
|
|
111
|
+
for (const gfvInfo of await this.enumerateAllGfvs()) {
|
|
112
|
+
result.push(...(await (0, _FsUtils.globAsync)("schemas/*", {
|
|
113
|
+
cwd: gfvInfo.formPath
|
|
114
|
+
})));
|
|
115
|
+
}
|
|
116
|
+
return result;
|
|
117
|
+
}
|
|
118
|
+
async getSchemaFilePathByFileNameOrUndefined(filename) {
|
|
119
|
+
for (const gfvInfo of await this.enumerateAllGfvs()) {
|
|
120
|
+
const filePath = _path.default.join(gfvInfo.formPath, "schemas", filename);
|
|
121
|
+
if (await (0, _fsExtra.pathExists)(filePath)) {
|
|
122
|
+
return filePath;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return undefined;
|
|
126
|
+
}
|
|
127
|
+
async getAllNormalizeFilePaths() {
|
|
128
|
+
const result = [];
|
|
129
|
+
for (const gfvInfo of await this.enumerateAllGfvs()) {
|
|
130
|
+
result.push(...(await (0, _FsUtils.globAsync)("normalize/*", {
|
|
131
|
+
cwd: gfvInfo.formPath
|
|
132
|
+
})));
|
|
133
|
+
}
|
|
134
|
+
return result;
|
|
135
|
+
}
|
|
136
|
+
async getNormalizeFilePathByFileNameOrUndefined(filename) {
|
|
137
|
+
for (const gfvInfo of await this.enumerateAllGfvs()) {
|
|
138
|
+
const filePath = _path.default.join(gfvInfo.formPath, "normalize", filename);
|
|
139
|
+
if (await (0, _fsExtra.pathExists)(filePath)) {
|
|
140
|
+
return filePath;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return undefined;
|
|
144
|
+
}
|
|
145
|
+
async getAllUnmapFilePaths() {
|
|
146
|
+
const result = [];
|
|
147
|
+
for (const gfvInfo of await this.enumerateAllGfvs()) {
|
|
148
|
+
result.push(...(await (0, _FsUtils.globAsync)("unmap/*", {
|
|
149
|
+
cwd: gfvInfo.formPath
|
|
150
|
+
})));
|
|
151
|
+
}
|
|
152
|
+
return result;
|
|
153
|
+
}
|
|
154
|
+
async getUnmapFilePathByFileNameOrUndefined(filename) {
|
|
155
|
+
for (const gfvInfo of await this.enumerateAllGfvs()) {
|
|
156
|
+
const filePath = _path.default.join(gfvInfo.formPath, "unmap", filename);
|
|
157
|
+
if (await (0, _fsExtra.pathExists)(filePath)) {
|
|
158
|
+
return filePath;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return undefined;
|
|
162
|
+
}
|
|
163
|
+
async getAllMapFilePaths() {
|
|
164
|
+
const result = [];
|
|
165
|
+
for (const gfvInfo of await this.enumerateAllGfvs()) {
|
|
166
|
+
result.push(...(await (0, _FsUtils.globAsync)("map/*", {
|
|
167
|
+
cwd: gfvInfo.formPath
|
|
168
|
+
})));
|
|
169
|
+
}
|
|
170
|
+
return result;
|
|
171
|
+
}
|
|
172
|
+
async getMapFilePathByFileNameOrUndefined(filename) {
|
|
173
|
+
for (const gfvInfo of await this.enumerateAllGfvs()) {
|
|
174
|
+
const filePath = _path.default.join(gfvInfo.formPath, "map", filename);
|
|
175
|
+
if (await (0, _fsExtra.pathExists)(filePath)) {
|
|
176
|
+
return filePath;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return undefined;
|
|
180
|
+
}
|
|
181
|
+
async getAllPatchFilePaths() {
|
|
182
|
+
const result = [];
|
|
183
|
+
for (const gfvInfo of await this.enumerateAllGfvs()) {
|
|
184
|
+
result.push(...(await (0, _FsUtils.globAsync)("patch/*", {
|
|
185
|
+
cwd: gfvInfo.formPath
|
|
186
|
+
})));
|
|
187
|
+
}
|
|
188
|
+
return result;
|
|
189
|
+
}
|
|
190
|
+
async getPatchFilePathByFileNameOrUndefined(filename) {
|
|
191
|
+
for (const gfvInfo of await this.enumerateAllGfvs()) {
|
|
192
|
+
const filePath = _path.default.join(gfvInfo.formPath, "patch", filename);
|
|
193
|
+
if (await (0, _fsExtra.pathExists)(filePath)) {
|
|
194
|
+
return filePath;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
return undefined;
|
|
198
|
+
}
|
|
199
|
+
async getAllMergersFilePaths() {
|
|
200
|
+
const result = [];
|
|
201
|
+
for (const gfvInfo of await this.enumerateAllGfvs()) {
|
|
202
|
+
result.push(...(await (0, _FsUtils.globAsync)("mergers/*", {
|
|
203
|
+
cwd: gfvInfo.formPath
|
|
204
|
+
})));
|
|
205
|
+
}
|
|
206
|
+
return result;
|
|
207
|
+
}
|
|
208
|
+
async getMergersFilePathByFileNameOrUndefined(filename) {
|
|
209
|
+
for (const gfvInfo of await this.enumerateAllGfvs()) {
|
|
210
|
+
const filePath = _path.default.join(gfvInfo.formPath, "mergers", filename);
|
|
211
|
+
if (await (0, _fsExtra.pathExists)(filePath)) {
|
|
212
|
+
return filePath;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return undefined;
|
|
216
|
+
}
|
|
217
|
+
async getAllPresentationsFileNames() {
|
|
218
|
+
const result = [];
|
|
219
|
+
for (const gfvInfo of await this.enumerateAllGfvs()) {
|
|
220
|
+
if (await (0, _fsExtra.pathExists)(_path.default.join(gfvInfo.formPath, "presentations.json"))) {
|
|
221
|
+
result.push(`${gfvInfo.gfv}.presentations.json`);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
return result;
|
|
225
|
+
}
|
|
226
|
+
async getPresentationsFilePathByGfvOrUndefined(gfv) {
|
|
227
|
+
for (const gfvInfo of await this.enumerateAllGfvs()) {
|
|
228
|
+
if (gfvInfo.gfv === gfv) {
|
|
229
|
+
const filePath = _path.default.join(gfvInfo.formPath, "presentations.json");
|
|
230
|
+
if (await (0, _fsExtra.pathExists)(filePath)) {
|
|
231
|
+
return filePath;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
39
234
|
}
|
|
40
235
|
return undefined;
|
|
41
236
|
}
|
|
42
237
|
}
|
|
43
238
|
exports.FarmDirectory = FarmDirectory;
|
|
44
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2ZzIiwiX0Zvcm1HbG9ic1V0aWxzIiwiX0ZzVXRpbHMiLCJfUGF0aFBhdHRlcm4iLCJfVHlwaW5nVXRpbHMiLCJGYXJtRGlyZWN0b3J5IiwiY29uc3RydWN0b3IiLCJmYXJtRGlyZWN0b3J5IiwiZ2V0QWxsRm9ybUpzb25GaWxlcyIsInBhdHRlcm4iLCJQYXRoUGF0dGVybiIsImZpbGVzIiwiZ2xvYkFzeW5jIiwiY3dkIiwibWFwIiwieCIsIl9wYXR0ZXJuJGV4ZWNTdHJpY3QkZyIsInJlbGF0aXZlUGF0aCIsImdmdiIsImV4ZWNTdHJpY3QiLCJyZWplY3QiLCJyZXNvbHZlRm9ybUdsb2JzIiwiZm9ybUdsb2JzIiwiRm9ybUdsb2JzIiwicmVzb2x2ZUdsb2JzVG9HZnZzIiwicmVzb2x2ZVNwZWNpZmllcnMiLCJnZXRGb3JtSnNvblBhdGgiLCJmb3JtRGlyUGF0aCIsInBhdGgiLCJqb2luIiwiZXhpc3RzU3luYyIsInVuZGVmaW5lZCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvQ0xJQ29tbWFuZHMvQnVpbGRTZXJ2ZXIvUmVzb3VyY2VzQ29udHJvbGxlcnMvRGlyZWN0b3JpZXMvRmFybURpcmVjdG9yeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gXCJmc1wiO1xuXG5pbXBvcnQgeyBGb3JtR2xvYnMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9ucy9Gb3JtR2xvYnNVdGlsc1wiO1xuaW1wb3J0IHsgZ2xvYkFzeW5jIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbnMvRnNVdGlsc1wiO1xuaW1wb3J0IHsgUGF0aFBhdHRlcm4gfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9ucy9QYXRoUGF0dGVyblwiO1xuaW1wb3J0IHsgcmVqZWN0IH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL0NvbW1vbi9UeXBpbmdVdGlsc1wiO1xuXG5pbnRlcmZhY2UgRmFybUZpbGVJbmZvIHtcbiAgICByZWxhdGl2ZVBhdGg6IHN0cmluZztcbiAgICBnZnY6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEZhcm1EaXJlY3Rvcnkge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmFybURpcmVjdG9yeTogc3RyaW5nO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGZhcm1EaXJlY3Rvcnk6IHN0cmluZykge1xuICAgICAgICB0aGlzLmZhcm1EaXJlY3RvcnkgPSBmYXJtRGlyZWN0b3J5O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxGb3JtSnNvbkZpbGVzKCk6IFByb21pc2U8RmFybUZpbGVJbmZvW10+IHtcbiAgICAgICAgY29uc3QgcGF0dGVybiA9IG5ldyBQYXRoUGF0dGVybihcImZvcm1zL3tnZnZ9L2Zvcm0uanNvblwiKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSBhd2FpdCBnbG9iQXN5bmMoXCJmb3Jtcy8qL2Zvcm0uanNvblwiLCB7IGN3ZDogdGhpcy5mYXJtRGlyZWN0b3J5IH0pO1xuICAgICAgICByZXR1cm4gZmlsZXMubWFwKHggPT4gKHtcbiAgICAgICAgICAgIHJlbGF0aXZlUGF0aDogeCxcbiAgICAgICAgICAgIGdmdjogcGF0dGVybi5leGVjU3RyaWN0KHgpW1wiZ2Z2XCJdID8/IHJlamVjdCgpLFxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlc29sdmVGb3JtR2xvYnMoZm9ybUdsb2JzOiBzdHJpbmdbXSk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIEZvcm1HbG9icy5yZXNvbHZlR2xvYnNUb0dmdnMoXG4gICAgICAgICAgICBhd2FpdCBGb3JtR2xvYnMucmVzb2x2ZVNwZWNpZmllcnMoZm9ybUdsb2JzLCB0aGlzLmZhcm1EaXJlY3RvcnkpLFxuICAgICAgICAgICAgdGhpcy5mYXJtRGlyZWN0b3J5XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZvcm1Kc29uUGF0aChnZnY6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gcGF0aC5qb2luKHRoaXMuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYpO1xuICAgICAgICBpZiAoZXhpc3RzU3luYyhwYXRoLmpvaW4oZm9ybURpclBhdGgsIFwiZm9ybS5qc29uXCIpKSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJmb3JtLmpzb25cIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxHQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxlQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxZQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxZQUFBLEdBQUFMLE9BQUE7QUFPTyxNQUFNTSxhQUFhLENBQUM7RUFHaEJDLFdBQVdBLENBQUNDLGFBQXFCLEVBQUU7SUFBQSxLQUZ6QkEsYUFBYTtJQUcxQixJQUFJLENBQUNBLGFBQWEsR0FBR0EsYUFBYTtFQUN0QztFQUVBLE1BQWFDLG1CQUFtQkEsQ0FBQSxFQUE0QjtJQUN4RCxNQUFNQyxPQUFPLEdBQUcsSUFBSUMsd0JBQVcsQ0FBQyx1QkFBdUIsQ0FBQztJQUN4RCxNQUFNQyxLQUFLLEdBQUcsTUFBTSxJQUFBQyxrQkFBUyxFQUFDLG1CQUFtQixFQUFFO01BQUVDLEdBQUcsRUFBRSxJQUFJLENBQUNOO0lBQWMsQ0FBQyxDQUFDO0lBQy9FLE9BQU9JLEtBQUssQ0FBQ0csR0FBRyxDQUFDQyxDQUFDO01BQUEsSUFBQUMscUJBQUE7TUFBQSxPQUFLO1FBQ25CQyxZQUFZLEVBQUVGLENBQUM7UUFDZkcsR0FBRyxHQUFBRixxQkFBQSxHQUFFUCxPQUFPLENBQUNVLFVBQVUsQ0FBQ0osQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGNBQUFDLHFCQUFBLGNBQUFBLHFCQUFBLEdBQUksSUFBQUksbUJBQU0sRUFBQztNQUNoRCxDQUFDO0lBQUEsQ0FBQyxDQUFDO0VBQ1A7RUFFQSxNQUFhQyxnQkFBZ0JBLENBQUNDLFNBQW1CLEVBQXFCO0lBQ2xFLE9BQU9DLHlCQUFTLENBQUNDLGtCQUFrQixDQUMvQixNQUFNRCx5QkFBUyxDQUFDRSxpQkFBaUIsQ0FBQ0gsU0FBUyxFQUFFLElBQUksQ0FBQ2YsYUFBYSxDQUFDLEVBQ2hFLElBQUksQ0FBQ0EsYUFDVCxDQUFDO0VBQ0w7RUFFT21CLGVBQWVBLENBQUNSLEdBQVcsRUFBc0I7SUFDcEQsTUFBTVMsV0FBVyxHQUFHQyxhQUFJLENBQUNDLElBQUksQ0FBQyxJQUFJLENBQUN0QixhQUFhLEVBQUUsT0FBTyxFQUFFVyxHQUFHLENBQUM7SUFDL0QsSUFBSSxJQUFBWSxjQUFVLEVBQUNGLGFBQUksQ0FBQ0MsSUFBSSxDQUFDRixXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUMsRUFBRTtNQUNqRCxPQUFPQyxhQUFJLENBQUNDLElBQUksQ0FBQ0YsV0FBVyxFQUFFLFdBQVcsQ0FBQztJQUM5QztJQUNBLE9BQU9JLFNBQVM7RUFDcEI7QUFDSjtBQUFDQyxPQUFBLENBQUEzQixhQUFBLEdBQUFBLGFBQUEifQ==
|
|
239
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2ZzIiwiX2ZzRXh0cmEiLCJfcExpbWl0IiwiX0Zvcm1HbG9ic1V0aWxzIiwiX0ZzVXRpbHMiLCJfVHlwaW5nVXRpbHMiLCJfRXh0cmFjdEdmdnNGcm9tRmlsZU5hbWUiLCJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJGYXJtRGlyZWN0b3J5IiwiY29uc3RydWN0b3IiLCJmYXJtRGlyZWN0b3J5IiwiZ2Z2VG9QYXRoTWFwIiwiYWxsR2Z2SW5mb3MiLCJlbnN1cmVHZnZEaXJlY3Rvcmllc1VwZGF0ZWQiLCJ1cGRhdGVHZnZEaXJlY3Rvcmllc0xpbWl0IiwicExpbWl0IiwidW5kZWZpbmVkIiwidXBkYXRlR2Z2RGlyZWN0b3JpZXMiLCJzZXRUaW1lb3V0IiwiRm9ybUdsb2JzIiwiZW51bWVyYXRlRm9ybXNJblJlcG9zaXRvcnkiLCJwYXRoIiwiam9pbiIsIk1hcCIsIm1hcCIsIngiLCJnZnYiLCJmb3JtUGF0aCIsImdldEFsbFBpY2tsaXN0cyIsImdsb2JBc3luYyIsImN3ZCIsImdldEZvcm1EaXJlY3RvcnkiLCJnZXRBbGxGb3JtSnNvbkZpbGVzIiwiZm9ybUdmdlBhdGhzIiwiZW51bWVyYXRlQWxsR2Z2cyIsIl90aGlzJGFsbEdmdkluZm9zIiwicmVqZWN0IiwiZ2V0R2Z2VG9QYXRoTWFwIiwiX3RoaXMkZ2Z2VG9QYXRoTWFwIiwiZ2V0QWxsR2Z2cyIsInJlc29sdmVGb3JtR2xvYnMiLCJmb3JtR2xvYnMiLCJyZXNvbHZlR2xvYnNUb0dmdnMiLCJyZXNvbHZlU3BlY2lmaWVycyIsImdldEZvcm1Kc29uUGF0aCIsIl90aGlzJGdmdlRvUGF0aE1hcDIiLCJmb3JtRGlyUGF0aCIsImdldCIsImV4aXN0c1N5bmMiLCJXZWxsS25vd25EaXJlY3RvcmllcyIsIkZvcm1Kc29uRmlsZU5hbWUiLCJnZXRBbGxDb252ZXJ0ZXJGaWxlUGF0aHMiLCJyZXN1bHQiLCJnZnZJbmZvIiwicHVzaCIsImdldENvbnZlcnRlckZpbGVQYXRoQnlGaWxlTmFtZU9yVW5kZWZpbmVkIiwiZmlsZW5hbWUiLCJleHRyYWN0R2Z2c0Zyb21GaWxlTmFtZSIsImZpbGVQYXRoIiwicGF0aEV4aXN0cyIsImdldEFsbFNjaGVtYXNGaWxlUGF0aHMiLCJnZXRTY2hlbWFGaWxlUGF0aEJ5RmlsZU5hbWVPclVuZGVmaW5lZCIsImdldEFsbE5vcm1hbGl6ZUZpbGVQYXRocyIsImdldE5vcm1hbGl6ZUZpbGVQYXRoQnlGaWxlTmFtZU9yVW5kZWZpbmVkIiwiZ2V0QWxsVW5tYXBGaWxlUGF0aHMiLCJnZXRVbm1hcEZpbGVQYXRoQnlGaWxlTmFtZU9yVW5kZWZpbmVkIiwiZ2V0QWxsTWFwRmlsZVBhdGhzIiwiZ2V0TWFwRmlsZVBhdGhCeUZpbGVOYW1lT3JVbmRlZmluZWQiLCJnZXRBbGxQYXRjaEZpbGVQYXRocyIsImdldFBhdGNoRmlsZVBhdGhCeUZpbGVOYW1lT3JVbmRlZmluZWQiLCJnZXRBbGxNZXJnZXJzRmlsZVBhdGhzIiwiZ2V0TWVyZ2Vyc0ZpbGVQYXRoQnlGaWxlTmFtZU9yVW5kZWZpbmVkIiwiZ2V0QWxsUHJlc2VudGF0aW9uc0ZpbGVOYW1lcyIsImdldFByZXNlbnRhdGlvbnNGaWxlUGF0aEJ5R2Z2T3JVbmRlZmluZWQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL0NMSUNvbW1hbmRzL0J1aWxkU2VydmVyL1Jlc291cmNlc0NvbnRyb2xsZXJzL0RpcmVjdG9yaWVzL0Zhcm1EaXJlY3RvcnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tIFwiZnNcIjtcblxuaW1wb3J0IHsgcGF0aEV4aXN0cyB9IGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IHBMaW1pdCBmcm9tIFwicC1saW1pdFwiO1xuXG5pbXBvcnQgeyBGb3JtR2xvYnMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9ucy9Gb3JtR2xvYnNVdGlsc1wiO1xuaW1wb3J0IHsgZ2xvYkFzeW5jIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbnMvRnNVdGlsc1wiO1xuaW1wb3J0IHsgcmVqZWN0IH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL0NvbW1vbi9UeXBpbmdVdGlsc1wiO1xuaW1wb3J0IHsgZXh0cmFjdEdmdnNGcm9tRmlsZU5hbWUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9ucy9FeHRyYWN0R2Z2c0Zyb21GaWxlTmFtZVwiO1xuaW1wb3J0IHsgV2VsbEtub3duRGlyZWN0b3JpZXMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vQ29tbW9uL1dlbGxLbm93bkRpcmVjdG9yaWVzXCI7XG5cbmludGVyZmFjZSBGYXJtRmlsZUluZm8ge1xuICAgIGdmdjogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgRmFybURpcmVjdG9yeSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmYXJtRGlyZWN0b3J5OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBnZnZUb1BhdGhNYXA6IHVuZGVmaW5lZCB8IE1hcDxzdHJpbmcsIHN0cmluZz47XG4gICAgcHJpdmF0ZSBhbGxHZnZJbmZvcz86IEFycmF5PHsgZ2Z2OiBzdHJpbmc7IGZvcm1QYXRoOiBzdHJpbmc7IGZvcm1SZWxhdGl2ZVBhdGg6IHN0cmluZyB9PjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVuc3VyZUdmdkRpcmVjdG9yaWVzVXBkYXRlZDogKCkgPT4gUHJvbWlzZTx2b2lkPjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihmYXJtRGlyZWN0b3J5OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5mYXJtRGlyZWN0b3J5ID0gZmFybURpcmVjdG9yeTtcbiAgICAgICAgY29uc3QgdXBkYXRlR2Z2RGlyZWN0b3JpZXNMaW1pdCA9IHBMaW1pdCgxKTtcbiAgICAgICAgdGhpcy5lbnN1cmVHZnZEaXJlY3Rvcmllc1VwZGF0ZWQgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5hbGxHZnZJbmZvcyA9PSB1bmRlZmluZWQgfHwgdGhpcy5nZnZUb1BhdGhNYXAgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdXBkYXRlR2Z2RGlyZWN0b3JpZXNMaW1pdChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmFsbEdmdkluZm9zID09IHVuZGVmaW5lZCB8fCB0aGlzLmdmdlRvUGF0aE1hcCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMudXBkYXRlR2Z2RGlyZWN0b3JpZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZmxvYXRpbmctcHJvbWlzZXNcbiAgICAgICAgICAgIHVwZGF0ZUdmdkRpcmVjdG9yaWVzTGltaXQoKCkgPT4gdGhpcy51cGRhdGVHZnZEaXJlY3RvcmllcygpKTtcbiAgICAgICAgfSwgNjAwMDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgdXBkYXRlR2Z2RGlyZWN0b3JpZXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuYWxsR2Z2SW5mb3MgPSBhd2FpdCBGb3JtR2xvYnMuZW51bWVyYXRlRm9ybXNJblJlcG9zaXRvcnkocGF0aC5qb2luKHRoaXMuZmFybURpcmVjdG9yeSwgXCIuLlwiKSk7XG4gICAgICAgIHRoaXMuZ2Z2VG9QYXRoTWFwID0gbmV3IE1hcCh0aGlzLmFsbEdmdkluZm9zLm1hcCh4ID0+IFt4LmdmdiwgeC5mb3JtUGF0aF0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsUGlja2xpc3RzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGdsb2JBc3luYyhcIipcIiwgeyBjd2Q6IHBhdGguam9pbih0aGlzLmZhcm1EaXJlY3RvcnksIFwicGlja2xpc3RzXCIpIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtRGlyZWN0b3J5KCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGdsb2JBc3luYyhcIipcIiwgeyBjd2Q6IHBhdGguam9pbih0aGlzLmZhcm1EaXJlY3RvcnksIFwicGlja2xpc3RzXCIpIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxGb3JtSnNvbkZpbGVzKCk6IFByb21pc2U8RmFybUZpbGVJbmZvW10+IHtcbiAgICAgICAgY29uc3QgZm9ybUdmdlBhdGhzID0gYXdhaXQgdGhpcy5lbnVtZXJhdGVBbGxHZnZzKCk7XG4gICAgICAgIHJldHVybiBmb3JtR2Z2UGF0aHMubWFwKHggPT4gKHtcbiAgICAgICAgICAgIGdmdjogeC5nZnYsXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGVudW1lcmF0ZUFsbEdmdnMoKTogUHJvbWlzZTxBcnJheTx7IGdmdjogc3RyaW5nOyBmb3JtUGF0aDogc3RyaW5nOyBmb3JtUmVsYXRpdmVQYXRoOiBzdHJpbmcgfT4+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5lbnN1cmVHZnZEaXJlY3Rvcmllc1VwZGF0ZWQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxsR2Z2SW5mb3MgPz8gcmVqZWN0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBnZXRHZnZUb1BhdGhNYXAoKTogUHJvbWlzZTxNYXA8c3RyaW5nLCBzdHJpbmc+PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuZW5zdXJlR2Z2RGlyZWN0b3JpZXNVcGRhdGVkKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmdmdlRvUGF0aE1hcCA/PyByZWplY3QoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsR2Z2cygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IGZvcm1HZnZQYXRocyA9IGF3YWl0IHRoaXMuZW51bWVyYXRlQWxsR2Z2cygpO1xuICAgICAgICByZXR1cm4gZm9ybUdmdlBhdGhzLm1hcCh4ID0+IHguZ2Z2KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVzb2x2ZUZvcm1HbG9icyhmb3JtR2xvYnM6IHN0cmluZ1tdKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmVuc3VyZUdmdkRpcmVjdG9yaWVzVXBkYXRlZCgpO1xuICAgICAgICByZXR1cm4gRm9ybUdsb2JzLnJlc29sdmVHbG9ic1RvR2Z2cyhcbiAgICAgICAgICAgIGF3YWl0IEZvcm1HbG9icy5yZXNvbHZlU3BlY2lmaWVycyhmb3JtR2xvYnMsIHRoaXMuZmFybURpcmVjdG9yeSksXG4gICAgICAgICAgICB0aGlzLmZhcm1EaXJlY3RvcnlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0Rm9ybUpzb25QYXRoKGdmdjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5lbnN1cmVHZnZEaXJlY3Rvcmllc1VwZGF0ZWQoKTtcbiAgICAgICAgY29uc3QgZm9ybURpclBhdGggPSAodGhpcy5nZnZUb1BhdGhNYXAgPz8gcmVqZWN0KCkpLmdldChnZnYpO1xuICAgICAgICBpZiAoZm9ybURpclBhdGggIT0gdW5kZWZpbmVkICYmIGV4aXN0c1N5bmMocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXRoLmpvaW4oZm9ybURpclBhdGgsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbENvbnZlcnRlckZpbGVQYXRocygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGdmdkluZm8gb2YgYXdhaXQgdGhpcy5lbnVtZXJhdGVBbGxHZnZzKCkpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLihhd2FpdCBnbG9iQXN5bmMoXCJjb252ZXJ0ZXJzLypcIiwgeyBjd2Q6IGdmdkluZm8uZm9ybVBhdGggfSkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRDb252ZXJ0ZXJGaWxlUGF0aEJ5RmlsZU5hbWVPclVuZGVmaW5lZChmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgZ2Z2VG9QYXRoTWFwID0gYXdhaXQgdGhpcy5nZXRHZnZUb1BhdGhNYXAoKTtcbiAgICAgICAgZm9yIChjb25zdCBnZnYgb2YgZXh0cmFjdEdmdnNGcm9tRmlsZU5hbWUoZmlsZW5hbWUpKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtUGF0aCA9IGdmdlRvUGF0aE1hcC5nZXQoZ2Z2KTtcbiAgICAgICAgICAgIGlmIChmb3JtUGF0aCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKGZvcm1QYXRoLCBcImNvbnZlcnRlcnNcIiwgZmlsZW5hbWUpO1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMoZmlsZVBhdGgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbGVQYXRoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbFNjaGVtYXNGaWxlUGF0aHMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBnZnZJbmZvIG9mIGF3YWl0IHRoaXMuZW51bWVyYXRlQWxsR2Z2cygpKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCguLi4oYXdhaXQgZ2xvYkFzeW5jKFwic2NoZW1hcy8qXCIsIHsgY3dkOiBnZnZJbmZvLmZvcm1QYXRoIH0pKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0U2NoZW1hRmlsZVBhdGhCeUZpbGVOYW1lT3JVbmRlZmluZWQoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGZvciAoY29uc3QgZ2Z2SW5mbyBvZiBhd2FpdCB0aGlzLmVudW1lcmF0ZUFsbEdmdnMoKSkge1xuICAgICAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4oZ2Z2SW5mby5mb3JtUGF0aCwgXCJzY2hlbWFzXCIsIGZpbGVuYW1lKTtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKGZpbGVQYXRoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmaWxlUGF0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxOb3JtYWxpemVGaWxlUGF0aHMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBnZnZJbmZvIG9mIGF3YWl0IHRoaXMuZW51bWVyYXRlQWxsR2Z2cygpKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCguLi4oYXdhaXQgZ2xvYkFzeW5jKFwibm9ybWFsaXplLypcIiwgeyBjd2Q6IGdmdkluZm8uZm9ybVBhdGggfSkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXROb3JtYWxpemVGaWxlUGF0aEJ5RmlsZU5hbWVPclVuZGVmaW5lZChmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgZm9yIChjb25zdCBnZnZJbmZvIG9mIGF3YWl0IHRoaXMuZW51bWVyYXRlQWxsR2Z2cygpKSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbihnZnZJbmZvLmZvcm1QYXRoLCBcIm5vcm1hbGl6ZVwiLCBmaWxlbmFtZSk7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmaWxlUGF0aCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsZVBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsVW5tYXBGaWxlUGF0aHMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBnZnZJbmZvIG9mIGF3YWl0IHRoaXMuZW51bWVyYXRlQWxsR2Z2cygpKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCguLi4oYXdhaXQgZ2xvYkFzeW5jKFwidW5tYXAvKlwiLCB7IGN3ZDogZ2Z2SW5mby5mb3JtUGF0aCB9KSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldFVubWFwRmlsZVBhdGhCeUZpbGVOYW1lT3JVbmRlZmluZWQoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGZvciAoY29uc3QgZ2Z2SW5mbyBvZiBhd2FpdCB0aGlzLmVudW1lcmF0ZUFsbEdmdnMoKSkge1xuICAgICAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4oZ2Z2SW5mby5mb3JtUGF0aCwgXCJ1bm1hcFwiLCBmaWxlbmFtZSk7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmaWxlUGF0aCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsZVBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsTWFwRmlsZVBhdGhzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgICAgIGZvciAoY29uc3QgZ2Z2SW5mbyBvZiBhd2FpdCB0aGlzLmVudW1lcmF0ZUFsbEdmdnMoKSkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4uKGF3YWl0IGdsb2JBc3luYyhcIm1hcC8qXCIsIHsgY3dkOiBnZnZJbmZvLmZvcm1QYXRoIH0pKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0TWFwRmlsZVBhdGhCeUZpbGVOYW1lT3JVbmRlZmluZWQoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGZvciAoY29uc3QgZ2Z2SW5mbyBvZiBhd2FpdCB0aGlzLmVudW1lcmF0ZUFsbEdmdnMoKSkge1xuICAgICAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4oZ2Z2SW5mby5mb3JtUGF0aCwgXCJtYXBcIiwgZmlsZW5hbWUpO1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMoZmlsZVBhdGgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbGVQYXRoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbFBhdGNoRmlsZVBhdGhzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgICAgIGZvciAoY29uc3QgZ2Z2SW5mbyBvZiBhd2FpdCB0aGlzLmVudW1lcmF0ZUFsbEdmdnMoKSkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4uKGF3YWl0IGdsb2JBc3luYyhcInBhdGNoLypcIiwgeyBjd2Q6IGdmdkluZm8uZm9ybVBhdGggfSkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRQYXRjaEZpbGVQYXRoQnlGaWxlTmFtZU9yVW5kZWZpbmVkKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBmb3IgKGNvbnN0IGdmdkluZm8gb2YgYXdhaXQgdGhpcy5lbnVtZXJhdGVBbGxHZnZzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKGdmdkluZm8uZm9ybVBhdGgsIFwicGF0Y2hcIiwgZmlsZW5hbWUpO1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMoZmlsZVBhdGgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbGVQYXRoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbE1lcmdlcnNGaWxlUGF0aHMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBnZnZJbmZvIG9mIGF3YWl0IHRoaXMuZW51bWVyYXRlQWxsR2Z2cygpKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCguLi4oYXdhaXQgZ2xvYkFzeW5jKFwibWVyZ2Vycy8qXCIsIHsgY3dkOiBnZnZJbmZvLmZvcm1QYXRoIH0pKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0TWVyZ2Vyc0ZpbGVQYXRoQnlGaWxlTmFtZU9yVW5kZWZpbmVkKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBmb3IgKGNvbnN0IGdmdkluZm8gb2YgYXdhaXQgdGhpcy5lbnVtZXJhdGVBbGxHZnZzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKGdmdkluZm8uZm9ybVBhdGgsIFwibWVyZ2Vyc1wiLCBmaWxlbmFtZSk7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmaWxlUGF0aCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsZVBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsUHJlc2VudGF0aW9uc0ZpbGVOYW1lcygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGdmdkluZm8gb2YgYXdhaXQgdGhpcy5lbnVtZXJhdGVBbGxHZnZzKCkpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKHBhdGguam9pbihnZnZJbmZvLmZvcm1QYXRoLCBcInByZXNlbnRhdGlvbnMuanNvblwiKSkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChgJHtnZnZJbmZvLmdmdn0ucHJlc2VudGF0aW9ucy5qc29uYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0UHJlc2VudGF0aW9uc0ZpbGVQYXRoQnlHZnZPclVuZGVmaW5lZChnZnY6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGZvciAoY29uc3QgZ2Z2SW5mbyBvZiBhd2FpdCB0aGlzLmVudW1lcmF0ZUFsbEdmdnMoKSkge1xuICAgICAgICAgICAgaWYgKGdmdkluZm8uZ2Z2ID09PSBnZnYpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbihnZnZJbmZvLmZvcm1QYXRoLCBcInByZXNlbnRhdGlvbnMuanNvblwiKTtcbiAgICAgICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmaWxlUGF0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbGVQYXRoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEdBQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLFFBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLE9BQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFJLGVBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFFBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFlBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLHdCQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxxQkFBQSxHQUFBUixPQUFBO0FBTU8sTUFBTVMsYUFBYSxDQUFDO0VBTWhCQyxXQUFXQSxDQUFDQyxhQUFxQixFQUFFO0lBQUEsS0FMekJBLGFBQWE7SUFBQSxLQUN0QkMsWUFBWTtJQUFBLEtBQ1pDLFdBQVc7SUFBQSxLQUNGQywyQkFBMkI7SUFHeEMsSUFBSSxDQUFDSCxhQUFhLEdBQUdBLGFBQWE7SUFDbEMsTUFBTUkseUJBQXlCLEdBQUcsSUFBQUMsZUFBTSxFQUFDLENBQUMs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
|
|
@@ -13,10 +13,16 @@ function globToRegexp(inputGlob) {
|
|
|
13
13
|
}
|
|
14
14
|
return "[^\\/]*?";
|
|
15
15
|
}
|
|
16
|
+
if (x === "**") {
|
|
17
|
+
if (index === pathTokens.length - 1) {
|
|
18
|
+
return ".*$";
|
|
19
|
+
}
|
|
20
|
+
return ".*?";
|
|
21
|
+
}
|
|
16
22
|
if (x.includes("*")) {
|
|
17
23
|
return x.replace("*", "[^\\/]*?");
|
|
18
24
|
}
|
|
19
25
|
return x;
|
|
20
26
|
}).join("[\\/\\\\]"));
|
|
21
27
|
}
|
|
22
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnbG9iVG9SZWdleHAiLCJpbnB1dEdsb2IiLCJwYXRoVG9rZW5zIiwic3BsaXQiLCJSZWdFeHAiLCJtYXAiLCJ4IiwiaW5kZXgiLCJsZW5ndGgiLCJpbmNsdWRlcyIsInJlcGxhY2UiLCJqb2luIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL0NMSUNvbW1hbmRzL0J1aWxkU2VydmVyL1Jlc291cmNlc0NvbnRyb2xsZXJzL0dsb2JUb1JlZ2V4cC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2xvYlRvUmVnZXhwKGlucHV0R2xvYjogc3RyaW5nKTogUmVnRXhwIHtcbiAgICBjb25zdCBwYXRoVG9rZW5zID0gaW5wdXRHbG9iLnNwbGl0KFwiL1wiKTtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChcbiAgICAgICAgXCJeXCIgK1xuICAgICAgICAgICAgcGF0aFRva2Vuc1xuICAgICAgICAgICAgICAgIC5tYXAoKHgsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh4ID09PSBcIipcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSBwYXRoVG9rZW5zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCIuKiRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcIlteXFxcXC9dKj9cIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoeCA9PT0gXCIqKlwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IHBhdGhUb2tlbnMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcIi4qJFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiLio/XCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHguaW5jbHVkZXMoXCIqXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geC5yZXBsYWNlKFwiKlwiLCBcIlteXFxcXC9dKj9cIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuam9pbihcIltcXFxcL1xcXFxcXFxcXVwiKVxuICAgICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFPLFNBQVNBLFlBQVlBLENBQUNDLFNBQWlCLEVBQVU7RUFDcEQsTUFBTUMsVUFBVSxHQUFHRCxTQUFTLENBQUNFLEtBQUssQ0FBQyxHQUFHLENBQUM7RUFDdkMsT0FBTyxJQUFJQyxNQUFNLENBQ2IsR0FBRyxHQUNDRixVQUFVLENBQ0xHLEdBQUcsQ0FBQyxDQUFDQyxDQUFDLEVBQUVDLEtBQUssS0FBSztJQUNmLElBQUlELENBQUMsS0FBSyxHQUFHLEVBQUU7TUFDWCxJQUFJQyxLQUFLLEtBQUtMLFVBQVUsQ0FBQ00sTUFBTSxHQUFHLENBQUMsRUFBRTtRQUNqQyxPQUFPLEtBQUs7TUFDaEI7TUFDQSxPQUFPLFVBQVU7SUFDckI7SUFDQSxJQUFJRixDQUFDLEtBQUssSUFBSSxFQUFFO01BQ1osSUFBSUMsS0FBSyxLQUFLTCxVQUFVLENBQUNNLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDakMsT0FBTyxLQUFLO01BQ2hCO01BQ0EsT0FBTyxLQUFLO0lBQ2hCO0lBQ0EsSUFBSUYsQ0FBQyxDQUFDRyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7TUFDakIsT0FBT0gsQ0FBQyxDQUFDSSxPQUFPLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQztJQUNyQztJQUNBLE9BQU9KLENBQUM7RUFDWixDQUFDLENBQUMsQ0FDREssSUFBSSxDQUFDLFdBQVcsQ0FDN0IsQ0FBQztBQUNMIn0=
|
|
@@ -24,6 +24,8 @@ var _Observe = require("../../Commons/TasksCore/Observe");
|
|
|
24
24
|
var _TimingUtils = require("../../Commons/TimingUtils");
|
|
25
25
|
var _WriteAttachmentPathFiles = require("../../BuildTasks/Form/WriteAttachmentPathFiles");
|
|
26
26
|
var _getRngSchemaFilename = require("../../../../Common/getRngSchemaFilename");
|
|
27
|
+
var _FormPathUtils = require("../../../../Common/FormPathUtils");
|
|
28
|
+
var _WellKnownDirectories = require("../../../../Common/WellKnownDirectories");
|
|
27
29
|
async function runDevBuild(context, options, engineDirectory, resourcesDirectory, farmDirectory, candyModulesDirectory, hlFarmDirectoryPath) {
|
|
28
30
|
const devBuildOptions = options;
|
|
29
31
|
const engineWebpackConfigTask = await (0, _EngineStructureUtils.createEngineWebpackConfigTask)(engineDirectory);
|
|
@@ -32,6 +34,7 @@ async function runDevBuild(context, options, engineDirectory, resourcesDirectory
|
|
|
32
34
|
const buildClientJsChain = clientWebpackConfigTask.chainWith(p => new _BuildClientJsTask.BuildClientJsTask(p, resourcesDirectory));
|
|
33
35
|
const staticResourcesChain = _Observe.Observe.files(_path.default.join(__dirname, "..", "..", "StaticFilesForResourcesDir"), "*.js").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("STATICS"), x, _path.default.join(resourcesDirectory, "public", "scripts")));
|
|
34
36
|
const pickListsChain = _Observe.Observe.files(_path.default.join(farmDirectory, "picklists"), "*.json").do(x => _FSTask.FSTask.copyRecursively(context.logger.withPrefix("PICKLISTS"), x, _path.default.join(resourcesDirectory, "picklists")));
|
|
37
|
+
const repositoryRoot = _path.default.join(farmDirectory, "..");
|
|
35
38
|
const formGlobs = await _FormGlobsUtils.FormGlobs.validateGlobs(await _FormGlobsUtils.FormGlobs.resolveSpecifiers(options.formGlobs, farmDirectory), farmDirectory);
|
|
36
39
|
|
|
37
40
|
/** Конвертеры описи для форм, которые пока не реализованы на кенди, сама механика описи перенесена в формы в кенди апи, поэтому они должны быть в candy.resources
|
|
@@ -41,11 +44,12 @@ async function runDevBuild(context, options, engineDirectory, resourcesDirectory
|
|
|
41
44
|
if (formGlobs[0] === "*") {
|
|
42
45
|
resourcesExternalConvertersChain = _Observe.Observe.files(_path.default.join(farmDirectory, "externalConverters"), "*.xslt").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("EXTERNAL-CONVERTERS"), x, _path.default.join(resourcesDirectory, "converters")));
|
|
43
46
|
}
|
|
44
|
-
const buildFormsChain = _Observe.Observe.
|
|
45
|
-
const
|
|
46
|
-
const
|
|
47
|
+
const buildFormsChain = _Observe.Observe.formDirectories(repositoryRoot, formGlobs).splitToParallelChains(x => x, x => x, async formRelativePath => {
|
|
48
|
+
const gfv = (0, _FormPathUtils.extractGfvFromFormPath)(formRelativePath);
|
|
49
|
+
const formDirPath = _path.default.join(repositoryRoot, formRelativePath);
|
|
50
|
+
const formSchemasDirPath = _path.default.join(formDirPath, "schemas");
|
|
47
51
|
const rngSchemaMask = `*${(0, _getRngSchemaFilename.getRngSchemaFilename)(formSchemasDirPath, gfv)}`;
|
|
48
|
-
return _Observe.Observe.file(_path.default.join(formDirPath,
|
|
52
|
+
return _Observe.Observe.file(_path.default.join(formDirPath, _WellKnownDirectories.WellKnownDirectories.FormJsonFileName)).transform(formJsonFile => (0, _ResolveFormInfo.resolveFormInfo)(formJsonFile, formDirPath, engineDirectory)).transform(async x => ({
|
|
49
53
|
...x,
|
|
50
54
|
generatorSource: (0, _PublishedVersionUtils.resolveLocalGeneratorSource)(engineDirectory),
|
|
51
55
|
engineSource: (0, _PublishedVersionUtils.resolveLocalEngineSource)(engineDirectory)
|
|
@@ -63,7 +67,7 @@ async function runDevBuild(context, options, engineDirectory, resourcesDirectory
|
|
|
63
67
|
skipCodeReformatting: options.skipGeneratedCodeReformatting,
|
|
64
68
|
resourcesHash: fi.dependenciesHash
|
|
65
69
|
});
|
|
66
|
-
}).attach(async fi => _Observe.Observe.files(_path.default.join(formDirPath, "form"), "**/*")).do(fi => (0, _CompileForm.compileForm)(fi.formName, fi.themes, farmDirectory, resourcesDirectory, fi.dependenciesHash, options.buildDebugOnly)).do(fi => (0, _WriteFLangNormalizationFiles.writeFLangNormalizationFiles)(fi.formName, farmDirectory, resourcesDirectory)).do(fi => (0, _WriteAttachmentPathFiles.writeAttachmentPathFiles)(fi.formName, farmDirectory, resourcesDirectory)).do(fi => (0, _WriteFormMeta.writeFormMeta)(resourcesDirectory, gfv, fi.engineSource, fi.dependenciesHash, fi.themes)).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "schemas"), rngSchemaMask).do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("SCHEMAS"), x, _path.default.join(resourcesDirectory, "schemas")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "converters"), "*").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("CONVERTERS"), x, _path.default.join(resourcesDirectory, "converters")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "mergers"), "*").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("MERGERS"), x, _path.default.join(resourcesDirectory, "mergers")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "normalize"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("NORMALIZE"), x, _path.default.join(resourcesDirectory, "normalize")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "patch"), "*.xslt").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("PATCH"), x, _path.default.join(resourcesDirectory, "patch")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "map"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("MAP"), x, _path.default.join(resourcesDirectory, "map")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "unmap"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("UNMAP"), x, _path.default.join(resourcesDirectory, "unmap"))));
|
|
70
|
+
}).attach(async fi => _Observe.Observe.files(_path.default.join(formDirPath, "form"), "**/*")).do(fi => (0, _CompileForm.compileForm)(fi.formName, fi.themes, farmDirectory, formDirPath, resourcesDirectory, fi.dependenciesHash, options.buildDebugOnly)).do(fi => (0, _WriteFLangNormalizationFiles.writeFLangNormalizationFiles)(fi.formName, farmDirectory, formDirPath, resourcesDirectory)).do(fi => (0, _WriteAttachmentPathFiles.writeAttachmentPathFiles)(fi.formName, farmDirectory, formDirPath, resourcesDirectory)).do(fi => (0, _WriteFormMeta.writeFormMeta)(resourcesDirectory, gfv, fi.engineSource, fi.dependenciesHash, fi.themes)).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "schemas"), rngSchemaMask).do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("SCHEMAS"), x, _path.default.join(resourcesDirectory, "schemas")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "converters"), "*").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("CONVERTERS"), x, _path.default.join(resourcesDirectory, "converters")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "mergers"), "*").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("MERGERS"), x, _path.default.join(resourcesDirectory, "mergers")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "normalize"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("NORMALIZE"), x, _path.default.join(resourcesDirectory, "normalize")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "patch"), "*.xslt").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("PATCH"), x, _path.default.join(resourcesDirectory, "patch")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "map"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("MAP"), x, _path.default.join(resourcesDirectory, "map")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "unmap"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("UNMAP"), x, _path.default.join(resourcesDirectory, "unmap"))));
|
|
67
71
|
});
|
|
68
72
|
if (devBuildOptions.watch) {
|
|
69
73
|
const stopObserve1 = await buildEngineChain.observe();
|
|
@@ -98,4 +102,4 @@ async function runDevBuild(context, options, engineDirectory, resourcesDirectory
|
|
|
98
102
|
console.log(`${_chalk.default.greenBright("Build success")} Total time: ${(0, _TimingUtils.printTime)(totalTime)}`);
|
|
99
103
|
}
|
|
100
104
|
}
|
|
101
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NoYWxrIiwiX0J1aWxkQ2xpZW50SnNUYXNrIiwiX0J1aWxkTG9jYWxFbmdpbmVUYXNrIiwiX0VuZ2luZVN0cnVjdHVyZVV0aWxzIiwiX0NvbXBpbGVGb3JtIiwiX0dlbmVyYXRlRm9ybSIsIl9Xcml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzIiwiX0ZTVGFzayIsIl9BY3F1aXJlRm9ybUdlbmVyYXRvciIsIl9QdWJsaXNoZWRWZXJzaW9uVXRpbHMiLCJfUmVzb2x2ZUZvcm1JbmZvIiwiX1dyaXRlRm9ybU1ldGEiLCJfRm9ybUdsb2JzVXRpbHMiLCJfU3RhdGljTG9nZ2VyIiwiX09ic2VydmUiLCJfVGltaW5nVXRpbHMiLCJfV3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIiwiX2dldFJuZ1NjaGVtYUZpbGVuYW1lIiwicnVuRGV2QnVpbGQiLCJjb250ZXh0Iiwib3B0aW9ucyIsImVuZ2luZURpcmVjdG9yeSIsInJlc291cmNlc0RpcmVjdG9yeSIsImZhcm1EaXJlY3RvcnkiLCJjYW5keU1vZHVsZXNEaXJlY3RvcnkiLCJobEZhcm1EaXJlY3RvcnlQYXRoIiwiZGV2QnVpbGRPcHRpb25zIiwiZW5naW5lV2VicGFja0NvbmZpZ1Rhc2siLCJjcmVhdGVFbmdpbmVXZWJwYWNrQ29uZmlnVGFzayIsImJ1aWxkRW5naW5lQ2hhaW4iLCJjaGFpbldpdGgiLCJwIiwiQnVpbGRMb2NhbEVuZ2luZVRhc2siLCJidWlsZERlYnVnT25seSIsImNsaWVudFdlYnBhY2tDb25maWdUYXNrIiwiY3JlYXRlQ2xpZW50V2VicGFja0NvbmZpZ1Rhc2siLCJidWlsZENsaWVudEpzQ2hhaW4iLCJCdWlsZENsaWVudEpzVGFzayIsInN0YXRpY1Jlc291cmNlc0NoYWluIiwiT2JzZXJ2ZSIsImZpbGVzIiwicGF0aCIsImpvaW4iLCJfX2Rpcm5hbWUiLCJkbyIsIngiLCJGU1Rhc2siLCJjb3B5UmVjdXJzaXZlbHkiLCJnZXRMb2dnZXIiLCJ3aXRoUHJlZml4IiwicGlja0xpc3RzQ2hhaW4iLCJsb2dnZXIiLCJmb3JtR2xvYnMiLCJGb3JtR2xvYnMiLCJ2YWxpZGF0ZUdsb2JzIiwicmVzb2x2ZVNwZWNpZmllcnMiLCJyZXNvdXJjZXNFeHRlcm5hbENvbnZlcnRlcnNDaGFpbiIsImVtcHR5IiwiYnVpbGRGb3Jtc0NoYWluIiwiZGlyZWN0b3J5Iiwic3BsaXRUb1BhcmFsbGVsQ2hhaW5zIiwiZ2Z2IiwiZm9ybURpclBhdGgiLCJmb3JtU2NoZW1hc0RpclBhdGgiLCJybmdTY2hlbWFNYXNrIiwiZ2V0Um5nU2NoZW1hRmlsZW5hbWUiLCJmaWxlIiwidHJhbnNmb3JtIiwiZm9ybUpzb25GaWxlIiwicmVzb2x2ZUZvcm1JbmZvIiwiZ2VuZXJhdG9yU291cmNlIiwicmVzb2x2ZUxvY2FsR2VuZXJhdG9yU291cmNlIiwiZW5naW5lU291cmNlIiwicmVzb2x2ZUxvY2FsRW5naW5lU291cmNlIiwiYXR0YWNoIiwiZmkiLCJnZW5lcmF0b3JGYWN0b3J5IiwidW5kZWZpbmVkIiwieSIsImdlbmVyYXRvciIsImdldEdlbmVyYXRvclNvdXJjZUtleSIsImZvcm1Tb3VyY2VzUGF0aCIsImRlcGVuZGVuY2llc0hhc2giLCJnZXRBbGxEZXBlbmRlbmNpZXNIYXNoIiwic2tpcEdlbmVyYXRpb24iLCJnZW5lcmF0ZUZvcm0iLCJza2lwQ29kZVJlZm9ybWF0dGluZyIsInNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nIiwicmVzb3VyY2VzSGFzaCIsImNvbXBpbGVGb3JtIiwiZm9ybU5hbWUiLCJ0aGVtZXMiLCJ3cml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzIiwid3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIiwid3JpdGVGb3JtTWV0YSIsIndhdGNoIiwic3RvcE9ic2VydmUxIiwib2JzZXJ2ZSIsInN0b3BPYnNlcnZlMiIsInN0b3BPYnNlcnZlMyIsInN0b3BPYnNlcnZlNCIsInN0b3BPYnNlcnZlNSIsInN0b3BPYnNlcnZlNiIsIndhaXRGb3JFeGl0Iiwic3RhcnREYXRlIiwiRGF0ZSIsIm5vdyIsIlByb21pc2UiLCJhbGwiLCJjdXJyZW50VmFsdWUiLCJlIiwiY29udGludWVPbkVycm9yIiwiZXJyb3IiLCJ0b3RhbFRpbWUiLCJjb25zb2xlIiwibG9nIiwiY2hhbGsiLCJncmVlbkJyaWdodCIsInByaW50VGltZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9EZXZCdWlsZC9SdW5EZXZCdWlsZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5cbmltcG9ydCB7IEJ1aWxkQ2xpZW50SnNUYXNrIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvQ2xpZW50SlMvQnVpbGRDbGllbnRKc1Rhc2tcIjtcbmltcG9ydCB7IEJ1aWxkTG9jYWxFbmdpbmVUYXNrIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRW5naW5lL0J1aWxkTG9jYWxFbmdpbmVUYXNrXCI7XG5pbXBvcnQgeyBjcmVhdGVDbGllbnRXZWJwYWNrQ29uZmlnVGFzaywgY3JlYXRlRW5naW5lV2VicGFja0NvbmZpZ1Rhc2sgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9FbmdpbmVTdHJ1Y3R1cmVVdGlsc1wiO1xuaW1wb3J0IHsgY29tcGlsZUZvcm0gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0NvbXBpbGVGb3JtXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZUZvcm0gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0dlbmVyYXRlRm9ybVwiO1xuaW1wb3J0IHsgd3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vV3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlc1wiO1xuaW1wb3J0IHsgRlNUYXNrIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRlNUYXNrXCI7XG5pbXBvcnQgeyBnZW5lcmF0b3JGYWN0b3J5LCBnZXRHZW5lcmF0b3JTb3VyY2VLZXkgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9HZW5lcmF0b3IvQWNxdWlyZUZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7IHJlc29sdmVMb2NhbEVuZ2luZVNvdXJjZSwgcmVzb2x2ZUxvY2FsR2VuZXJhdG9yU291cmNlIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUHVibGlzaGVkVmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyByZXNvbHZlRm9ybUluZm8gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9SZXNvbHZlRm9ybUluZm9cIjtcbmltcG9ydCB7IHdyaXRlRm9ybU1ldGEgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Xcml0ZUZvcm1NZXRhXCI7XG5pbXBvcnQgeyBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvQ29uc29sZUFwcGxpY2F0aW9uL0NvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHRcIjtcbmltcG9ydCB7IEZvcm1HbG9icyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0Zvcm1HbG9ic1V0aWxzXCI7XG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL1N0YXRpY0xvZ2dlclwiO1xuaW1wb3J0IHsgT2JzZXJ2ZSB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9PYnNlcnZlXCI7XG5pbXBvcnQgeyBwcmludFRpbWUgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UaW1pbmdVdGlsc1wiO1xuaW1wb3J0IHsgd3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Xcml0ZUF0dGFjaG1lbnRQYXRoRmlsZXNcIjtcbmltcG9ydCB7IENoYWluYWJsZVZhbHVlUHJvZHVjZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvQ2hhaW5hYmxlVmFsdWVQcm9kdWNlclwiO1xuaW1wb3J0IHsgRW1wdHlQcm9kdWNlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9FbXB0eVByb2R1Y2VyXCI7XG5pbXBvcnQgeyBnZXRSbmdTY2hlbWFGaWxlbmFtZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vZ2V0Um5nU2NoZW1hRmlsZW5hbWVcIjtcblxuaW1wb3J0IHsgRGV2ZWxvcG1lbnRCdWlsZE9wdGlvbnMgfSBmcm9tIFwiLi9EZXZCdWlsZE9wdGlvbnNcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkRldkJ1aWxkKFxuICAgIGNvbnRleHQ6IENvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHQsXG4gICAgb3B0aW9uczogRGV2ZWxvcG1lbnRCdWlsZE9wdGlvbnMsXG4gICAgZW5naW5lRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgcmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZmFybURpcmVjdG9yeTogc3RyaW5nLFxuICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nLFxuICAgIGhsRmFybURpcmVjdG9yeVBhdGg6IHN0cmluZ1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZGV2QnVpbGRPcHRpb25zID0gb3B0aW9ucztcblxuICAgIGNvbnN0IGVuZ2luZVdlYnBhY2tDb25maWdUYXNrID0gYXdhaXQgY3JlYXRlRW5naW5lV2VicGFja0NvbmZpZ1Rhc2soZW5naW5lRGlyZWN0b3J5KTtcbiAgICBjb25zdCBidWlsZEVuZ2luZUNoYWluID0gZW5naW5lV2VicGFja0NvbmZpZ1Rhc2suY2hhaW5XaXRoKFxuICAgICAgICBwID0+IG5ldyBCdWlsZExvY2FsRW5naW5lVGFzayhwLCByZXNvdXJjZXNEaXJlY3RvcnksIG9wdGlvbnMuYnVpbGREZWJ1Z09ubHkpXG4gICAgKTtcblxuICAgIGNvbnN0IGNsaWVudFdlYnBhY2tDb25maWdUYXNrID0gYXdhaXQgY3JlYXRlQ2xpZW50V2VicGFja0NvbmZpZ1Rhc2soZW5naW5lRGlyZWN0b3J5KTtcbiAgICBjb25zdCBidWlsZENsaWVudEpzQ2hhaW4gPSBjbGllbnRXZWJwYWNrQ29uZmlnVGFzay5jaGFpbldpdGgocCA9PiBuZXcgQnVpbGRDbGllbnRKc1Rhc2socCwgcmVzb3VyY2VzRGlyZWN0b3J5KSk7XG5cbiAgICBjb25zdCBzdGF0aWNSZXNvdXJjZXNDaGFpbiA9IE9ic2VydmUuZmlsZXMoXG4gICAgICAgIHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi5cIiwgXCIuLlwiLCBcIlN0YXRpY0ZpbGVzRm9yUmVzb3VyY2VzRGlyXCIpLFxuICAgICAgICBcIiouanNcIlxuICAgICkuZG8oeCA9PlxuICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJTVEFUSUNTXCIpLCB4LCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInB1YmxpY1wiLCBcInNjcmlwdHNcIikpXG4gICAgKTtcblxuICAgIGNvbnN0IHBpY2tMaXN0c0NoYWluID0gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJwaWNrbGlzdHNcIiksIFwiKi5qc29uXCIpLmRvKHggPT5cbiAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KFwiUElDS0xJU1RTXCIpLCB4LCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInBpY2tsaXN0c1wiKSlcbiAgICApO1xuXG4gICAgY29uc3QgZm9ybUdsb2JzID0gYXdhaXQgRm9ybUdsb2JzLnZhbGlkYXRlR2xvYnMoXG4gICAgICAgIGF3YWl0IEZvcm1HbG9icy5yZXNvbHZlU3BlY2lmaWVycyhvcHRpb25zLmZvcm1HbG9icywgZmFybURpcmVjdG9yeSksXG4gICAgICAgIGZhcm1EaXJlY3RvcnlcbiAgICApO1xuXG4gICAgLyoqINCa0L7QvdCy0LXRgNGC0LXRgNGLINC+0L/QuNGB0Lgg0LTQu9GPINGE0L7RgNC8LCDQutC+0YLQvtGA0YvQtSDQv9C+0LrQsCDQvdC1INGA0LXQsNC70LjQt9C+0LLQsNC90Ysg0L3QsCDQutC10L3QtNC4LCDRgdCw0LzQsCDQvNC10YXQsNC90LjQutCwINC+0L/QuNGB0Lgg0L/QtdGA0LXQvdC10YHQtdC90LAg0LIg0YTQvtGA0LzRiyDQsiDQutC10L3QtNC4INCw0L/QuCwg0L/QvtGN0YLQvtC80YMg0L7QvdC4INC00L7Qu9C20L3RiyDQsdGL0YLRjCDQsiBjYW5keS5yZXNvdXJjZXNcbiAgICAgKiAg0KDQtdCw0LvQuNC30YPQtdGC0YHRjyDRgtC+0LvRjNC60L4g0L/RgNC4INC+0LHRidC10Lwg0LHQuNC70LTQtSDRhNC+0YDQvDogY2FuZHkgYnVpbGQgKlxuICAgICAqICovXG4gICAgbGV0IHJlc291cmNlc0V4dGVybmFsQ29udmVydGVyc0NoYWluOiBDaGFpbmFibGVWYWx1ZVByb2R1Y2VyPHN0cmluZz4gfCBFbXB0eVByb2R1Y2VyID0gT2JzZXJ2ZS5lbXB0eSgpO1xuICAgIGlmIChmb3JtR2xvYnNbMF0gPT09IFwiKlwiKSB7XG4gICAgICAgIHJlc291cmNlc0V4dGVybmFsQ29udmVydGVyc0NoYWluID0gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJleHRlcm5hbENvbnZlcnRlcnNcIiksIFwiKi54c2x0XCIpLmRvKFxuICAgICAgICAgICAgeCA9PlxuICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJFWFRFUk5BTC1DT05WRVJURVJTXCIpLFxuICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcImNvbnZlcnRlcnNcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgYnVpbGRGb3Jtc0NoYWluID0gT2JzZXJ2ZS5kaXJlY3RvcnkocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiksIGZvcm1HbG9icykuc3BsaXRUb1BhcmFsbGVsQ2hhaW5zKFxuICAgICAgICB4ID0+IHgsXG4gICAgICAgIHggPT4geCxcbiAgICAgICAgZ2Z2ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gcGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2KTtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1TY2hlbWFzRGlyUGF0aCA9IHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdiwgXCJzY2hlbWFzXCIpO1xuICAgICAgICAgICAgY29uc3Qgcm5nU2NoZW1hTWFzayA9IGAqJHtnZXRSbmdTY2hlbWFGaWxlbmFtZShmb3JtU2NoZW1hc0RpclBhdGgsIGdmdil9YDtcblxuICAgICAgICAgICAgcmV0dXJuIE9ic2VydmUuZmlsZShwYXRoLmpvaW4oZm9ybURpclBhdGgsIFwiZm9ybS5qc29uXCIpKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oZm9ybUpzb25GaWxlID0+IHJlc29sdmVGb3JtSW5mbyhmb3JtSnNvbkZpbGUsIGZvcm1EaXJQYXRoLCBlbmdpbmVEaXJlY3RvcnkpKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgeCA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAuLi54LFxuICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IHJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZShlbmdpbmVEaXJlY3RvcnkpLFxuICAgICAgICAgICAgICAgICAgICBlbmdpbmVTb3VyY2U6IHJlc29sdmVMb2NhbEVuZ2luZVNvdXJjZShlbmdpbmVEaXJlY3RvcnkpLFxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IGdlbmVyYXRvckZhY3RvcnkoZmkuZ2VuZXJhdG9yU291cmNlLCBjYW5keU1vZHVsZXNEaXJlY3RvcnksIGZhbHNlLCB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyAoZmksIHkpID0+ICh7IC4uLmZpLCBnZW5lcmF0b3I6IHkgfSksXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IGdldEdlbmVyYXRvclNvdXJjZUtleShmaS5nZW5lcmF0b3JTb3VyY2UpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiLi4vLi4vY29udHJvbHMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzY2hlbWFzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic3VnYXIvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJjb250cm9scy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImF1dG9jYWxjLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaGVscGVycy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInZhbGlkYXRpb25zLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibG9jYWxpemF0aW9uLyoqLypcIlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgZmkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llc0hhc2g6IGF3YWl0IGZpLmdlbmVyYXRvci5nZXRBbGxEZXBlbmRlbmNpZXNIYXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURpclBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgaGxGYXJtRGlyZWN0b3J5UGF0aFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnNraXBHZW5lcmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZUZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtU291cmNlc1BhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgaGxGYXJtRGlyZWN0b3J5UGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwQ29kZVJlZm9ybWF0dGluZzogb3B0aW9ucy5za2lwR2VuZXJhdGVkQ29kZVJlZm9ybWF0dGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNIYXNoOiBmaS5kZXBlbmRlbmNpZXNIYXNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PiBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJmb3JtXCIpLCBcIioqLypcIikpXG4gICAgICAgICAgICAgICAgLmRvKGZpID0+XG4gICAgICAgICAgICAgICAgICAgIGNvbXBpbGVGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS50aGVtZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuYnVpbGREZWJ1Z09ubHlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZG8oZmkgPT4gd3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyhmaS5mb3JtTmFtZSwgZmFybURpcmVjdG9yeSwgcmVzb3VyY2VzRGlyZWN0b3J5KSlcbiAgICAgICAgICAgICAgICAuZG8oZmkgPT4gd3JpdGVBdHRhY2htZW50UGF0aEZpbGVzKGZpLmZvcm1OYW1lLCBmYXJtRGlyZWN0b3J5LCByZXNvdXJjZXNEaXJlY3RvcnkpKVxuICAgICAgICAgICAgICAgIC5kbyhmaSA9PiB3cml0ZUZvcm1NZXRhKHJlc291cmNlc0RpcmVjdG9yeSwgZ2Z2LCBmaS5lbmdpbmVTb3VyY2UsIGZpLmRlcGVuZGVuY2llc0hhc2gsIGZpLnRoZW1lcykpXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwic2NoZW1hc1wiKSwgcm5nU2NoZW1hTWFzaykuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiU0NIRU1BU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwic2NoZW1hc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcImNvbnZlcnRlcnNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJDT05WRVJURVJTXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJjb252ZXJ0ZXJzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibWVyZ2Vyc1wiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIk1FUkdFUlNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcIm1lcmdlcnNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJub3JtYWxpemVcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTk9STUFMSVpFXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJub3JtYWxpemVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJwYXRjaFwiKSwgXCIqLnhzbHRcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiUEFUQ0hcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInBhdGNoXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibWFwXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIk1BUFwiKSwgeCwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJtYXBcIikpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwidW5tYXBcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiVU5NQVBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInVubWFwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgKTtcblxuICAgIGlmIChkZXZCdWlsZE9wdGlvbnMud2F0Y2gpIHtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUxID0gYXdhaXQgYnVpbGRFbmdpbmVDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMiA9IGF3YWl0IGJ1aWxkQ2xpZW50SnNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMyA9IGF3YWl0IHN0YXRpY1Jlc291cmNlc0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmU0ID0gYXdhaXQgYnVpbGRGb3Jtc0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmU1ID0gYXdhaXQgcGlja0xpc3RzQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTYgPSBhd2FpdCByZXNvdXJjZXNFeHRlcm5hbENvbnZlcnRlcnNDaGFpbi5vYnNlcnZlKCk7XG5cbiAgICAgICAgYXdhaXQgY29udGV4dC53YWl0Rm9yRXhpdCgpO1xuXG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlMSgpO1xuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTIoKTtcbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUzKCk7XG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlNCgpO1xuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTUoKTtcbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmU2KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gRGF0ZS5ub3coKTtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgYnVpbGRFbmdpbmVDaGFpbi5jdXJyZW50VmFsdWUsXG4gICAgICAgICAgICBidWlsZENsaWVudEpzQ2hhaW4uY3VycmVudFZhbHVlLFxuICAgICAgICAgICAgc3RhdGljUmVzb3VyY2VzQ2hhaW4uY3VycmVudFZhbHVlLFxuICAgICAgICAgICAgcmVzb3VyY2VzRXh0ZXJuYWxDb252ZXJ0ZXJzQ2hhaW4uY3VycmVudFZhbHVlLFxuICAgICAgICAgICAgKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBwaWNrTGlzdHNDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGJ1aWxkRm9ybXNDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5jb250aW51ZU9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKCksXG4gICAgICAgIF0pO1xuICAgICAgICBjb25zdCB0b3RhbFRpbWUgPSBEYXRlLm5vdygpIC0gc3RhcnREYXRlO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmxvZyhgJHtjaGFsay5ncmVlbkJyaWdodChcIkJ1aWxkIHN1Y2Nlc3NcIil9IFRvdGFsIHRpbWU6ICR7cHJpbnRUaW1lKHRvdGFsVGltZSl9YCk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsS0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsTUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUUsa0JBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLHFCQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxxQkFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssWUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sYUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sNkJBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLE9BQUEsR0FB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
|
|
105
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NoYWxrIiwiX0J1aWxkQ2xpZW50SnNUYXNrIiwiX0J1aWxkTG9jYWxFbmdpbmVUYXNrIiwiX0VuZ2luZVN0cnVjdHVyZVV0aWxzIiwiX0NvbXBpbGVGb3JtIiwiX0dlbmVyYXRlRm9ybSIsIl9Xcml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzIiwiX0ZTVGFzayIsIl9BY3F1aXJlRm9ybUdlbmVyYXRvciIsIl9QdWJsaXNoZWRWZXJzaW9uVXRpbHMiLCJfUmVzb2x2ZUZvcm1JbmZvIiwiX1dyaXRlRm9ybU1ldGEiLCJfRm9ybUdsb2JzVXRpbHMiLCJfU3RhdGljTG9nZ2VyIiwiX09ic2VydmUiLCJfVGltaW5nVXRpbHMiLCJfV3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIiwiX2dldFJuZ1NjaGVtYUZpbGVuYW1lIiwiX0Zvcm1QYXRoVXRpbHMiLCJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJydW5EZXZCdWlsZCIsImNvbnRleHQiLCJvcHRpb25zIiwiZW5naW5lRGlyZWN0b3J5IiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZmFybURpcmVjdG9yeSIsImNhbmR5TW9kdWxlc0RpcmVjdG9yeSIsImhsRmFybURpcmVjdG9yeVBhdGgiLCJkZXZCdWlsZE9wdGlvbnMiLCJlbmdpbmVXZWJwYWNrQ29uZmlnVGFzayIsImNyZWF0ZUVuZ2luZVdlYnBhY2tDb25maWdUYXNrIiwiYnVpbGRFbmdpbmVDaGFpbiIsImNoYWluV2l0aCIsInAiLCJCdWlsZExvY2FsRW5naW5lVGFzayIsImJ1aWxkRGVidWdPbmx5IiwiY2xpZW50V2VicGFja0NvbmZpZ1Rhc2siLCJjcmVhdGVDbGllbnRXZWJwYWNrQ29uZmlnVGFzayIsImJ1aWxkQ2xpZW50SnNDaGFpbiIsIkJ1aWxkQ2xpZW50SnNUYXNrIiwic3RhdGljUmVzb3VyY2VzQ2hhaW4iLCJPYnNlcnZlIiwiZmlsZXMiLCJwYXRoIiwiam9pbiIsIl9fZGlybmFtZSIsImRvIiwieCIsIkZTVGFzayIsImNvcHlSZWN1cnNpdmVseSIsImdldExvZ2dlciIsIndpdGhQcmVmaXgiLCJwaWNrTGlzdHNDaGFpbiIsImxvZ2dlciIsInJlcG9zaXRvcnlSb290IiwiZm9ybUdsb2JzIiwiRm9ybUdsb2JzIiwidmFsaWRhdGVHbG9icyIsInJlc29sdmVTcGVjaWZpZXJzIiwicmVzb3VyY2VzRXh0ZXJuYWxDb252ZXJ0ZXJzQ2hhaW4iLCJlbXB0eSIsImJ1aWxkRm9ybXNDaGFpbiIsImZvcm1EaXJlY3RvcmllcyIsInNwbGl0VG9QYXJhbGxlbENoYWlucyIsImZvcm1SZWxhdGl2ZVBhdGgiLCJnZnYiLCJleHRyYWN0R2Z2RnJvbUZvcm1QYXRoIiwiZm9ybURpclBhdGgiLCJmb3JtU2NoZW1hc0RpclBhdGgiLCJybmdTY2hlbWFNYXNrIiwiZ2V0Um5nU2NoZW1hRmlsZW5hbWUiLCJmaWxlIiwiV2VsbEtub3duRGlyZWN0b3JpZXMiLCJGb3JtSnNvbkZpbGVOYW1lIiwidHJhbnNmb3JtIiwiZm9ybUpzb25GaWxlIiwicmVzb2x2ZUZvcm1JbmZvIiwiZ2VuZXJhdG9yU291cmNlIiwicmVzb2x2ZUxvY2FsR2VuZXJhdG9yU291cmNlIiwiZW5naW5lU291cmNlIiwicmVzb2x2ZUxvY2FsRW5naW5lU291cmNlIiwiYXR0YWNoIiwiZmkiLCJnZW5lcmF0b3JGYWN0b3J5IiwidW5kZWZpbmVkIiwieSIsImdlbmVyYXRvciIsImdldEdlbmVyYXRvclNvdXJjZUtleSIsImZvcm1Tb3VyY2VzUGF0aCIsImRlcGVuZGVuY2llc0hhc2giLCJnZXRBbGxEZXBlbmRlbmNpZXNIYXNoIiwic2tpcEdlbmVyYXRpb24iLCJnZW5lcmF0ZUZvcm0iLCJza2lwQ29kZVJlZm9ybWF0dGluZyIsInNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nIiwicmVzb3VyY2VzSGFzaCIsImNvbXBpbGVGb3JtIiwiZm9ybU5hbWUiLCJ0aGVtZXMiLCJ3cml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzIiwid3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIiwid3JpdGVGb3JtTWV0YSIsIndhdGNoIiwic3RvcE9ic2VydmUxIiwib2JzZXJ2ZSIsInN0b3BPYnNlcnZlMiIsInN0b3BPYnNlcnZlMyIsInN0b3BPYnNlcnZlNCIsInN0b3BPYnNlcnZlNSIsInN0b3BPYnNlcnZlNiIsIndhaXRGb3JFeGl0Iiwic3RhcnREYXRlIiwiRGF0ZSIsIm5vdyIsIlByb21pc2UiLCJhbGwiLCJjdXJyZW50VmFsdWUiLCJlIiwiY29udGludWVPbkVycm9yIiwiZXJyb3IiLCJ0b3RhbFRpbWUiLCJjb25zb2xlIiwibG9nIiwiY2hhbGsiLCJncmVlbkJyaWdodCIsInByaW50VGltZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9EZXZCdWlsZC9SdW5EZXZCdWlsZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5cbmltcG9ydCB7IEJ1aWxkQ2xpZW50SnNUYXNrIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvQ2xpZW50SlMvQnVpbGRDbGllbnRKc1Rhc2tcIjtcbmltcG9ydCB7IEJ1aWxkTG9jYWxFbmdpbmVUYXNrIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRW5naW5lL0J1aWxkTG9jYWxFbmdpbmVUYXNrXCI7XG5pbXBvcnQgeyBjcmVhdGVDbGllbnRXZWJwYWNrQ29uZmlnVGFzaywgY3JlYXRlRW5naW5lV2VicGFja0NvbmZpZ1Rhc2sgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9FbmdpbmVTdHJ1Y3R1cmVVdGlsc1wiO1xuaW1wb3J0IHsgY29tcGlsZUZvcm0gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0NvbXBpbGVGb3JtXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZUZvcm0gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0dlbmVyYXRlRm9ybVwiO1xuaW1wb3J0IHsgd3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vV3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlc1wiO1xuaW1wb3J0IHsgRlNUYXNrIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRlNUYXNrXCI7XG5pbXBvcnQgeyBnZW5lcmF0b3JGYWN0b3J5LCBnZXRHZW5lcmF0b3JTb3VyY2VLZXkgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9HZW5lcmF0b3IvQWNxdWlyZUZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7IHJlc29sdmVMb2NhbEVuZ2luZVNvdXJjZSwgcmVzb2x2ZUxvY2FsR2VuZXJhdG9yU291cmNlIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUHVibGlzaGVkVmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyByZXNvbHZlRm9ybUluZm8gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9SZXNvbHZlRm9ybUluZm9cIjtcbmltcG9ydCB7IHdyaXRlRm9ybU1ldGEgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Xcml0ZUZvcm1NZXRhXCI7XG5pbXBvcnQgeyBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvQ29uc29sZUFwcGxpY2F0aW9uL0NvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHRcIjtcbmltcG9ydCB7IEZvcm1HbG9icyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0Zvcm1HbG9ic1V0aWxzXCI7XG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL1N0YXRpY0xvZ2dlclwiO1xuaW1wb3J0IHsgT2JzZXJ2ZSB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9PYnNlcnZlXCI7XG5pbXBvcnQgeyBwcmludFRpbWUgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UaW1pbmdVdGlsc1wiO1xuaW1wb3J0IHsgd3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Xcml0ZUF0dGFjaG1lbnRQYXRoRmlsZXNcIjtcbmltcG9ydCB7IENoYWluYWJsZVZhbHVlUHJvZHVjZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvQ2hhaW5hYmxlVmFsdWVQcm9kdWNlclwiO1xuaW1wb3J0IHsgRW1wdHlQcm9kdWNlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9FbXB0eVByb2R1Y2VyXCI7XG5pbXBvcnQgeyBnZXRSbmdTY2hlbWFGaWxlbmFtZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vZ2V0Um5nU2NoZW1hRmlsZW5hbWVcIjtcbmltcG9ydCB7IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGggfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL0Zvcm1QYXRoVXRpbHNcIjtcbmltcG9ydCB7IFdlbGxLbm93bkRpcmVjdG9yaWVzIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9XZWxsS25vd25EaXJlY3Rvcmllc1wiO1xuXG5pbXBvcnQgeyBEZXZlbG9wbWVudEJ1aWxkT3B0aW9ucyB9IGZyb20gXCIuL0RldkJ1aWxkT3B0aW9uc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuRGV2QnVpbGQoXG4gICAgY29udGV4dDogQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCxcbiAgICBvcHRpb25zOiBEZXZlbG9wbWVudEJ1aWxkT3B0aW9ucyxcbiAgICBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgY2FuZHlNb2R1bGVzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgaGxGYXJtRGlyZWN0b3J5UGF0aDogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBkZXZCdWlsZE9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgY29uc3QgZW5naW5lV2VicGFja0NvbmZpZ1Rhc2sgPSBhd2FpdCBjcmVhdGVFbmdpbmVXZWJwYWNrQ29uZmlnVGFzayhlbmdpbmVEaXJlY3RvcnkpO1xuICAgIGNvbnN0IGJ1aWxkRW5naW5lQ2hhaW4gPSBlbmdpbmVXZWJwYWNrQ29uZmlnVGFzay5jaGFpbldpdGgoXG4gICAgICAgIHAgPT4gbmV3IEJ1aWxkTG9jYWxFbmdpbmVUYXNrKHAsIHJlc291cmNlc0RpcmVjdG9yeSwgb3B0aW9ucy5idWlsZERlYnVnT25seSlcbiAgICApO1xuXG4gICAgY29uc3QgY2xpZW50V2VicGFja0NvbmZpZ1Rhc2sgPSBhd2FpdCBjcmVhdGVDbGllbnRXZWJwYWNrQ29uZmlnVGFzayhlbmdpbmVEaXJlY3RvcnkpO1xuICAgIGNvbnN0IGJ1aWxkQ2xpZW50SnNDaGFpbiA9IGNsaWVudFdlYnBhY2tDb25maWdUYXNrLmNoYWluV2l0aChwID0+IG5ldyBCdWlsZENsaWVudEpzVGFzayhwLCByZXNvdXJjZXNEaXJlY3RvcnkpKTtcblxuICAgIGNvbnN0IHN0YXRpY1Jlc291cmNlc0NoYWluID0gT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLlwiLCBcIi4uXCIsIFwiU3RhdGljRmlsZXNGb3JSZXNvdXJjZXNEaXJcIiksXG4gICAgICAgIFwiKi5qc1wiXG4gICAgKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNUQVRJQ1NcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicHVibGljXCIsIFwic2NyaXB0c1wiKSlcbiAgICApO1xuXG4gICAgY29uc3QgcGlja0xpc3RzQ2hhaW4gPSBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcInBpY2tsaXN0c1wiKSwgXCIqLmpzb25cIikuZG8oeCA9PlxuICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoXCJQSUNLTElTVFNcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicGlja2xpc3RzXCIpKVxuICAgICk7XG5cbiAgICBjb25zdCByZXBvc2l0b3J5Um9vdCA9IHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcIi4uXCIpO1xuICAgIGNvbnN0IGZvcm1HbG9icyA9IGF3YWl0IEZvcm1HbG9icy52YWxpZGF0ZUdsb2JzKFxuICAgICAgICBhd2FpdCBGb3JtR2xvYnMucmVzb2x2ZVNwZWNpZmllcnMob3B0aW9ucy5mb3JtR2xvYnMsIGZhcm1EaXJlY3RvcnkpLFxuICAgICAgICBmYXJtRGlyZWN0b3J5XG4gICAgKTtcblxuICAgIC8qKiDQmtC+0L3QstC10YDRgtC10YDRiyDQvtC/0LjRgdC4INC00LvRjyDRhNC+0YDQvCwg0LrQvtGC0L7RgNGL0LUg0L/QvtC60LAg0L3QtSDRgNC10LDQu9C40LfQvtCy0LDQvdGLINC90LAg0LrQtdC90LTQuCwg0YHQsNC80LAg0LzQtdGF0LDQvdC40LrQsCDQvtC/0LjRgdC4INC/0LXRgNC10L3QtdGB0LXQvdCwINCyINGE0L7RgNC80Ysg0LIg0LrQtdC90LTQuCDQsNC/0LgsINC/0L7RjdGC0L7QvNGDINC+0L3QuCDQtNC+0LvQttC90Ysg0LHRi9GC0Ywg0LIgY2FuZHkucmVzb3VyY2VzXG4gICAgICogINCg0LXQsNC70LjQt9GD0LXRgtGB0Y8g0YLQvtC70YzQutC+INC/0YDQuCDQvtCx0YnQtdC8INCx0LjQu9C00LUg0YTQvtGA0Lw6IGNhbmR5IGJ1aWxkICpcbiAgICAgKiAqL1xuICAgIGxldCByZXNvdXJjZXNFeHRlcm5hbENvbnZlcnRlcnNDaGFpbjogQ2hhaW5hYmxlVmFsdWVQcm9kdWNlcjxzdHJpbmc+IHwgRW1wdHlQcm9kdWNlciA9IE9ic2VydmUuZW1wdHkoKTtcbiAgICBpZiAoZm9ybUdsb2JzWzBdID09PSBcIipcIikge1xuICAgICAgICByZXNvdXJjZXNFeHRlcm5hbENvbnZlcnRlcnNDaGFpbiA9IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZXh0ZXJuYWxDb252ZXJ0ZXJzXCIpLCBcIioueHNsdFwiKS5kbyhcbiAgICAgICAgICAgIHggPT5cbiAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiRVhURVJOQUwtQ09OVkVSVEVSU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJjb252ZXJ0ZXJzXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGJ1aWxkRm9ybXNDaGFpbiA9IE9ic2VydmUuZm9ybURpcmVjdG9yaWVzKHJlcG9zaXRvcnlSb290LCBmb3JtR2xvYnMpLnNwbGl0VG9QYXJhbGxlbENoYWlucyhcbiAgICAgICAgeCA9PiB4LFxuICAgICAgICB4ID0+IHgsXG4gICAgICAgIGFzeW5jIGZvcm1SZWxhdGl2ZVBhdGggPT4ge1xuICAgICAgICAgICAgY29uc3QgZ2Z2ID0gZXh0cmFjdEdmdkZyb21Gb3JtUGF0aChmb3JtUmVsYXRpdmVQYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gcGF0aC5qb2luKHJlcG9zaXRvcnlSb290LCBmb3JtUmVsYXRpdmVQYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1TY2hlbWFzRGlyUGF0aCA9IHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJzY2hlbWFzXCIpO1xuICAgICAgICAgICAgY29uc3Qgcm5nU2NoZW1hTWFzayA9IGAqJHtnZXRSbmdTY2hlbWFGaWxlbmFtZShmb3JtU2NoZW1hc0RpclBhdGgsIGdmdil9YDtcblxuICAgICAgICAgICAgcmV0dXJuIE9ic2VydmUuZmlsZShwYXRoLmpvaW4oZm9ybURpclBhdGgsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oZm9ybUpzb25GaWxlID0+IHJlc29sdmVGb3JtSW5mbyhmb3JtSnNvbkZpbGUsIGZvcm1EaXJQYXRoLCBlbmdpbmVEaXJlY3RvcnkpKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgeCA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAuLi54LFxuICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IHJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZShlbmdpbmVEaXJlY3RvcnkpLFxuICAgICAgICAgICAgICAgICAgICBlbmdpbmVTb3VyY2U6IHJlc29sdmVMb2NhbEVuZ2luZVNvdXJjZShlbmdpbmVEaXJlY3RvcnkpLFxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IGdlbmVyYXRvckZhY3RvcnkoZmkuZ2VuZXJhdG9yU291cmNlLCBjYW5keU1vZHVsZXNEaXJlY3RvcnksIGZhbHNlLCB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyAoZmksIHkpID0+ICh7IC4uLmZpLCBnZW5lcmF0b3I6IHkgfSksXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IGdldEdlbmVyYXRvclNvdXJjZUtleShmaS5nZW5lcmF0b3JTb3VyY2UpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiLi4vLi4vY29udHJvbHMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzY2hlbWFzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic3VnYXIvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJjb250cm9scy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImF1dG9jYWxjLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaGVscGVycy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInZhbGlkYXRpb25zLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibG9jYWxpemF0aW9uLyoqLypcIlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgZmkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llc0hhc2g6IGF3YWl0IGZpLmdlbmVyYXRvci5nZXRBbGxEZXBlbmRlbmNpZXNIYXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURpclBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgaGxGYXJtRGlyZWN0b3J5UGF0aFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnNraXBHZW5lcmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZUZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtU291cmNlc1BhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgaGxGYXJtRGlyZWN0b3J5UGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwQ29kZVJlZm9ybWF0dGluZzogb3B0aW9ucy5za2lwR2VuZXJhdGVkQ29kZVJlZm9ybWF0dGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNIYXNoOiBmaS5kZXBlbmRlbmNpZXNIYXNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PiBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJmb3JtXCIpLCBcIioqLypcIikpXG4gICAgICAgICAgICAgICAgLmRvKGZpID0+XG4gICAgICAgICAgICAgICAgICAgIGNvbXBpbGVGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS50aGVtZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURpclBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5kZXBlbmRlbmNpZXNIYXNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5idWlsZERlYnVnT25seVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5kbyhmaSA9PiB3cml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzKGZpLmZvcm1OYW1lLCBmYXJtRGlyZWN0b3J5LCBmb3JtRGlyUGF0aCwgcmVzb3VyY2VzRGlyZWN0b3J5KSlcbiAgICAgICAgICAgICAgICAuZG8oZmkgPT4gd3JpdGVBdHRhY2htZW50UGF0aEZpbGVzKGZpLmZvcm1OYW1lLCBmYXJtRGlyZWN0b3J5LCBmb3JtRGlyUGF0aCwgcmVzb3VyY2VzRGlyZWN0b3J5KSlcbiAgICAgICAgICAgICAgICAuZG8oZmkgPT4gd3JpdGVGb3JtTWV0YShyZXNvdXJjZXNEaXJlY3RvcnksIGdmdiwgZmkuZW5naW5lU291cmNlLCBmaS5kZXBlbmRlbmNpZXNIYXNoLCBmaS50aGVtZXMpKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInNjaGVtYXNcIiksIHJuZ1NjaGVtYU1hc2spLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNDSEVNQVNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInNjaGVtYXNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJjb252ZXJ0ZXJzXCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiQ09OVkVSVEVSU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwiY29udmVydGVyc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIm1lcmdlcnNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJNRVJHRVJTXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJtZXJnZXJzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibm9ybWFsaXplXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIk5PUk1BTElaRVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwibm9ybWFsaXplXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwicGF0Y2hcIiksIFwiKi54c2x0XCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlBBVENIXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwYXRjaFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIm1hcFwiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJNQVBcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwibWFwXCIpKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInVubWFwXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlVOTUFQXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJ1bm1hcFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBpZiAoZGV2QnVpbGRPcHRpb25zLndhdGNoKSB7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMSA9IGF3YWl0IGJ1aWxkRW5naW5lQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTIgPSBhd2FpdCBidWlsZENsaWVudEpzQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTMgPSBhd2FpdCBzdGF0aWNSZXNvdXJjZXNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlNCA9IGF3YWl0IGJ1aWxkRm9ybXNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlNSA9IGF3YWl0IHBpY2tMaXN0c0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmU2ID0gYXdhaXQgcmVzb3VyY2VzRXh0ZXJuYWxDb252ZXJ0ZXJzQ2hhaW4ub2JzZXJ2ZSgpO1xuXG4gICAgICAgIGF3YWl0IGNvbnRleHQud2FpdEZvckV4aXQoKTtcblxuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTEoKTtcbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUyKCk7XG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlMygpO1xuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTQoKTtcbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmU1KCk7XG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlNigpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IERhdGUubm93KCk7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgIGJ1aWxkRW5naW5lQ2hhaW4uY3VycmVudFZhbHVlLFxuICAgICAgICAgICAgYnVpbGRDbGllbnRKc0NoYWluLmN1cnJlbnRWYWx1ZSxcbiAgICAgICAgICAgIHN0YXRpY1Jlc291cmNlc0NoYWluLmN1cnJlbnRWYWx1ZSxcbiAgICAgICAgICAgIHJlc291cmNlc0V4dGVybmFsQ29udmVydGVyc0NoYWluLmN1cnJlbnRWYWx1ZSxcbiAgICAgICAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgcGlja0xpc3RzQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBidWlsZEZvcm1zQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuY29udGludWVPbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSgpLFxuICAgICAgICBdKTtcbiAgICAgICAgY29uc3QgdG90YWxUaW1lID0gRGF0ZS5ub3coKSAtIHN0YXJ0RGF0ZTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS5sb2coYCR7Y2hhbGsuZ3JlZW5CcmlnaHQoXCJCdWlsZCBzdWNjZXNzXCIpfSBUb3RhbCB0aW1lOiAke3ByaW50VGltZSh0b3RhbFRpbWUpfWApO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLE1BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFFLGtCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxxQkFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUkscUJBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFlBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLGFBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLDZCQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxPQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxxQkFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsc0JBQUEsR0FBQVYsT0FBQTtBQUNBLElBQUFXLGdCQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxjQUFBLEdBQUFaLE9BQUE7QUFFQSxJQUFBYSxlQUFBLEdBQUFiLE9BQUE7QUFDQSxJQUFBYyxhQUFBLEdBQUFkLE9BQUE7QUFDQSxJQUFBZSxRQUFBLEdBQUFmLE9BQUE7QUFDQSxJQUFBZ0IsWUFBQSxHQUFBaEIsT0FBQTtBQUNBLElBQUFpQix5QkFBQSxHQUFBakIsT0FBQTtBQUdBLElBQUFrQixxQkFBQSxHQUFBbEIsT0FBQTtBQUNBLElBQUFtQixjQUFBLEdBQUFuQixPQUFBO0FBQ0EsSUFBQW9CLHFCQUFBLEdBQUFwQixPQUFBO0FBSU8sZUFBZXFCLFdBQVdBLENBQzdCQyxPQUFrQyxFQUNs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
|
|
@@ -9,6 +9,7 @@ var _path = _interopRequireDefault(require("path"));
|
|
|
9
9
|
var _ResolveFormInfo = require("../../BuildTasks/ResolveFormInfo");
|
|
10
10
|
var _FormGlobsUtils = require("../../Commons/FormGlobsUtils");
|
|
11
11
|
var _IterableUtils = require("../../../../Common/IterableUtils");
|
|
12
|
+
var _WellKnownDirectories = require("../../../../Common/WellKnownDirectories");
|
|
12
13
|
async function runFormStats(context, options, farmDirectory) {
|
|
13
14
|
const formGlobs = await _FormGlobsUtils.FormGlobs.validateGlobs(await _FormGlobsUtils.FormGlobs.resolveSpecifiers(options.formGlobs, farmDirectory), farmDirectory);
|
|
14
15
|
const gfvs = await _FormGlobsUtils.FormGlobs.resolveGlobsToGfvs(formGlobs, farmDirectory);
|
|
@@ -16,7 +17,8 @@ async function runFormStats(context, options, farmDirectory) {
|
|
|
16
17
|
for (const gfv of gfvs) {
|
|
17
18
|
try {
|
|
18
19
|
var _engineToGfvMap$engin, _engineToGfvMap$engin2;
|
|
19
|
-
|
|
20
|
+
// TODO
|
|
21
|
+
const formJsonContent = await (0, _ResolveFormInfo.readFormConfig)(_path.default.join(farmDirectory, "forms", gfv, _WellKnownDirectories.WellKnownDirectories.FormJsonFileName), context.logger);
|
|
20
22
|
let engineBranch;
|
|
21
23
|
if (formJsonContent.mode === "copy-legacy-prebuilt-resources") {
|
|
22
24
|
engineBranch = "LegacyCopyPrebuilt";
|
|
@@ -43,4 +45,4 @@ async function runFormStats(context, options, farmDirectory) {
|
|
|
43
45
|
context.logger.log(` ${gfvs.join(", ")}`);
|
|
44
46
|
}
|
|
45
47
|
}
|
|
46
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX1Jlc29sdmVGb3JtSW5mbyIsIl9Gb3JtR2xvYnNVdGlscyIsIl9JdGVyYWJsZVV0aWxzIiwiX1dlbGxLbm93bkRpcmVjdG9yaWVzIiwicnVuRm9ybVN0YXRzIiwiY29udGV4dCIsIm9wdGlvbnMiLCJmYXJtRGlyZWN0b3J5IiwiZm9ybUdsb2JzIiwiRm9ybUdsb2JzIiwidmFsaWRhdGVHbG9icyIsInJlc29sdmVTcGVjaWZpZXJzIiwiZ2Z2cyIsInJlc29sdmVHbG9ic1RvR2Z2cyIsImVuZ2luZVRvR2Z2TWFwIiwiZ2Z2IiwiX2VuZ2luZVRvR2Z2TWFwJGVuZ2luIiwiX2VuZ2luZVRvR2Z2TWFwJGVuZ2luMiIsImZvcm1Kc29uQ29udGVudCIsInJlYWRGb3JtQ29uZmlnIiwicGF0aCIsImpvaW4iLCJXZWxsS25vd25EaXJlY3RvcmllcyIsIkZvcm1Kc29uRmlsZU5hbWUiLCJsb2dnZXIiLCJlbmdpbmVCcmFuY2giLCJtb2RlIiwiX2Zvcm1Kc29uQ29udGVudCRkZXBlIiwiX2Zvcm1Kc29uQ29udGVudCRkZXBlMiIsImRlcGVuZGVuY2llcyIsImVuZ2luZSIsInB1c2giLCJlIiwiZW5naW5lR2Z2cyIsIml0ZXJhdGVFbnRyaWVzIiwibG9nIiwibGVuZ3RoIiwiT2JqZWN0Iiwia2V5cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9Gb3JtU3RhdHMvUnVuRm9ybVN0YXRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IHJlYWRGb3JtQ29uZmlnIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvQ29uc29sZUFwcGxpY2F0aW9uL0NvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHRcIjtcbmltcG9ydCB7IEZvcm1HbG9icyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0Zvcm1HbG9ic1V0aWxzXCI7XG5pbXBvcnQgeyBpdGVyYXRlRW50cmllcyB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vSXRlcmFibGVVdGlsc1wiO1xuXG5pbXBvcnQgeyBGb3JtU3RhdHNPcHRpb25zIH0gZnJvbSBcIi4vRm9ybVN0YXRzT3B0aW9uc1wiO1xuaW1wb3J0IHsgV2VsbEtub3duRGlyZWN0b3JpZXMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL1dlbGxLbm93bkRpcmVjdG9yaWVzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5Gb3JtU3RhdHMoXG4gICAgY29udGV4dDogQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCxcbiAgICBvcHRpb25zOiBGb3JtU3RhdHNPcHRpb25zLFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZ1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZm9ybUdsb2JzID0gYXdhaXQgRm9ybUdsb2JzLnZhbGlkYXRlR2xvYnMoXG4gICAgICAgIGF3YWl0IEZvcm1HbG9icy5yZXNvbHZlU3BlY2lmaWVycyhvcHRpb25zLmZvcm1HbG9icywgZmFybURpcmVjdG9yeSksXG4gICAgICAgIGZhcm1EaXJlY3RvcnlcbiAgICApO1xuICAgIGNvbnN0IGdmdnMgPSBhd2FpdCBGb3JtR2xvYnMucmVzb2x2ZUdsb2JzVG9HZnZzKGZvcm1HbG9icywgZmFybURpcmVjdG9yeSk7XG5cbiAgICBjb25zdCBlbmdpbmVUb0dmdk1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge307XG4gICAgZm9yIChjb25zdCBnZnYgb2YgZ2Z2cykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gVE9ET1xuICAgICAgICAgICAgY29uc3QgZm9ybUpzb25Db250ZW50ID0gYXdhaXQgcmVhZEZvcm1Db25maWcoXG4gICAgICAgICAgICAgICAgcGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2LCBXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lKSxcbiAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlclxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGxldCBlbmdpbmVCcmFuY2g6IHN0cmluZztcbiAgICAgICAgICAgIGlmIChmb3JtSnNvbkNvbnRlbnQubW9kZSA9PT0gXCJjb3B5LWxlZ2FjeS1wcmVidWlsdC1yZXNvdXJjZXNcIikge1xuICAgICAgICAgICAgICAgIGVuZ2luZUJyYW5jaCA9IFwiTGVnYWN5Q29weVByZWJ1aWx0XCI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1Kc29uQ29udGVudC5tb2RlID09PSBcIm5vLWVkaXRvclwiKSB7XG4gICAgICAgICAgICAgICAgZW5naW5lQnJhbmNoID0gXCJOb0VkaXRvclwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBlbmdpbmVCcmFuY2ggPSBmb3JtSnNvbkNvbnRlbnQuZGVwZW5kZW5jaWVzPy5lbmdpbmUgPz8gXCJVbmtub3duXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbmdpbmVUb0dmdk1hcFtlbmdpbmVCcmFuY2hdID0gZW5naW5lVG9HZnZNYXBbZW5naW5lQnJhbmNoXSA/PyBbXTtcbiAgICAgICAgICAgIGVuZ2luZVRvR2Z2TWFwW2VuZ2luZUJyYW5jaF0/LnB1c2goZ2Z2KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgZW5naW5lVG9HZnZNYXBbXCJVbmtub3duXCJdID0gZW5naW5lVG9HZnZNYXBbXCJVbmtub3duXCJdIHx8IFtdO1xuICAgICAgICAgICAgZW5naW5lVG9HZnZNYXBbXCJVbmtub3duXCJdLnB1c2goZ2Z2KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgW2VuZ2luZSwgZW5naW5lR2Z2c10gb2YgaXRlcmF0ZUVudHJpZXMoZW5naW5lVG9HZnZNYXApKSB7XG4gICAgICAgIGNvbnRleHQubG9nZ2VyLmxvZyhlbmdpbmUpO1xuICAgICAgICBjb250ZXh0LmxvZ2dlci5sb2coYCAgJHtlbmdpbmVHZnZzLmxlbmd0aH0gZm9ybXNgKTtcbiAgICB9XG4gICAgY29udGV4dC5sb2dnZXIubG9nKFwiXCIpO1xuICAgIGZvciAoY29uc3QgZW5naW5lIG9mIE9iamVjdC5rZXlzKGVuZ2luZVRvR2Z2TWFwKSkge1xuICAgICAgICBjb250ZXh0LmxvZ2dlci5sb2coZW5naW5lKTtcbiAgICAgICAgY29udGV4dC5sb2dnZXIubG9nKGAgICR7Z2Z2cy5qb2luKFwiLCBcIil9YCk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsS0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsZ0JBQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLGVBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLGNBQUEsR0FBQUgsT0FBQTtBQUdBLElBQUFJLHFCQUFBLEdBQUFKLE9BQUE7QUFFTyxlQUFlSyxZQUFZQSxDQUM5QkMsT0FBa0MsRUFDbENDLE9BQXlCLEVBQ3pCQyxhQUFxQixFQUNSO0VBQ2IsTUFBTUMsU0FBUyxHQUFHLE1BQU1DLHlCQUFTLENBQUNDLGFBQWEsQ0FDM0MsTUFBTUQseUJBQVMsQ0FBQ0UsaUJBQWlCLENBQUNMLE9BQU8sQ0FBQ0UsU0FBUyxFQUFFRCxhQUFhLENBQUMsRUFDbkVBLGFBQ0osQ0FBQztFQUNELE1BQU1LLElBQUksR0FBRyxNQUFNSCx5QkFBUyxDQUFDSSxrQkFBa0IsQ0FBQ0wsU0FBUyxFQUFFRCxhQUFhLENBQUM7RUFFekUsTUFBTU8sY0FBd0MsR0FBRyxDQUFDLENBQUM7RUFDbkQsS0FBSyxNQUFNQyxHQUFHLElBQUlILElBQUksRUFBRTtJQUNwQixJQUFJO01BQUEsSUFBQUkscUJBQUEsRUFBQUMsc0JBQUE7TUFDQTtNQUNBLE1BQU1DLGVBQWUsR0FBRyxNQUFNLElBQUFDLCtCQUFjLEVBQ3hDQyxhQUFJLENBQUNDLElBQUksQ0FBQ2QsYUFBYSxFQUFFLE9BQU8sRUFBRVEsR0FBRyxFQUFFTywwQ0FBb0IsQ0FBQ0MsZ0JBQWdCLENBQUMsRUFDN0VsQixPQUFPLENBQUNtQixNQUNaLENBQUM7TUFDRCxJQUFJQyxZQUFvQjtNQUN4QixJQUFJUCxlQUFlLENBQUNRLElBQUksS0FBSyxnQ0FBZ0MsRUFBRTtRQUMzREQsWUFBWSxHQUFHLG9CQUFvQjtNQUN2QyxDQUFDLE1BQU0sSUFBSVAsZUFBZSxDQUFDUSxJQUFJLEtBQUssV0FBVyxFQUFFO1FBQzdDRCxZQUFZLEdBQUcsVUFBVTtNQUM3QixDQUFDLE1BQU07UUFBQSxJQUFBRSxxQkFBQSxFQUFBQyxzQkFBQTtRQUNISCxZQUFZLElBQUFFLHFCQUFBLElBQUFDLHNCQUFBLEdBQUdWLGVBQWUsQ0FBQ1csWUFBWSxjQUFBRCxzQkFBQSx1QkFBNUJBLHNCQUFBLENBQThCRSxNQUFNLGNBQUFILHFCQUFBLGNBQUFBLHFCQUFBLEdBQUksU0FBUztNQUNwRTtNQUNBYixjQUFjLENBQUNXLFlBQVksQ0FBQyxJQUFBVCxxQkFBQSxHQUFHRixjQUFjLENBQUNXLFlBQVksQ0FBQyxjQUFBVCxxQkFBQSxjQUFBQSxxQkFBQSxHQUFJLEVBQUU7TUFDakUsQ0FBQUMsc0JBQUEsR0FBQUgsY0FBYyxDQUFDVyxZQUFZLENBQUMsY0FBQVIsc0JBQUEsdUJBQTVCQSxzQkFBQSxDQUE4QmMsSUFBSSxDQUFDaEIsR0FBRyxDQUFDO0lBQzNDLENBQUMsQ0FBQyxPQUFPaUIsQ0FBQyxFQUFFO01BQ1JsQixjQUFjLENBQUMsU0FBUyxDQUFDLEdBQUdBLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFO01BQzNEQSxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUNpQixJQUFJLENBQUNoQixHQUFHLENBQUM7SUFDdkM7RUFDSjtFQUVBLEtBQUssTUFBTSxDQUFDZSxNQUFNLEVBQUVHLFVBQVUsQ0FBQyxJQUFJLElBQUFDLDZCQUFjLEVBQUNwQixjQUFjLENBQUMsRUFBRTtJQUMvRFQsT0FBTyxDQUFDbUIsTUFBTSxDQUFDVyxHQUFHLENBQUNMLE1BQU0sQ0FBQztJQUMxQnpCLE9BQU8sQ0FBQ21CLE1BQU0sQ0FBQ1csR0FBRyxDQUFFLEtBQUlGLFVBQVUsQ0FBQ0csTUFBTyxRQUFPLENBQUM7RUFDdEQ7RUFDQS9CLE9BQU8sQ0FBQ21CLE1BQU0sQ0FBQ1csR0FBRyxDQUFDLEVBQUUsQ0FBQztFQUN0QixLQUFLLE1BQU1MLE1BQU0sSUFBSU8sTUFBTSxDQUFDQyxJQUFJLENBQUN4QixjQUFjLENBQUMsRUFBRTtJQUM5Q1QsT0FBTyxDQUFDbUIsTUFBTSxDQUFDVyxHQUFHLENBQUNMLE1BQU0sQ0FBQztJQUMxQnpCLE9BQU8sQ0FBQ21CLE1BQU0sQ0FBQ1csR0FBRyxDQUFFLEtBQUl2QixJQUFJLENBQUNTLElBQUksQ0FBQyxJQUFJLENBQUUsRUFBQyxDQUFDO0VBQzlDO0FBQ0oifQ==
|