@kontur.candy/tools 2.189.0 → 2.189.1

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.
@@ -11,6 +11,6 @@ const testKonturApiPicklist = exports.testKonturApiPicklist = testKonturApi + "/
11
11
  const localCandyApi = exports.localCandyApi = candyApiUrlAtHost("localhost.testkontur.ru");
12
12
  const localNidus = exports.localNidus = `https://localhost.testkontur.ru:8099/nidus`;
13
13
  function candyApiUrlAtHost(host) {
14
- return `https://${host}:9090`;
14
+ return `https://${host}:21090`;
15
15
  }
16
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0ZXN0S29udHVyQXBpIiwiZXhwb3J0cyIsInRlc3RLb250dXJBcGlDYW5keSIsInRlc3RLb250dXJBcGlQaWNrbGlzdCIsImxvY2FsQ2FuZHlBcGkiLCJjYW5keUFwaVVybEF0SG9zdCIsImxvY2FsTmlkdXMiLCJob3N0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vQ29tbW9uL0VuZFBvaW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdGVzdEtvbnR1ckFwaSA9IFwiaHR0cHM6Ly9hcGkudGVzdGtvbnR1ci5ydVwiO1xuXG5leHBvcnQgY29uc3QgdGVzdEtvbnR1ckFwaUNhbmR5ID0gdGVzdEtvbnR1ckFwaSArIFwiL2NhbmR5XCI7XG5cbmV4cG9ydCBjb25zdCB0ZXN0S29udHVyQXBpUGlja2xpc3QgPSB0ZXN0S29udHVyQXBpICsgXCIvcGlja2xpc3RcIjtcblxuZXhwb3J0IGNvbnN0IGxvY2FsQ2FuZHlBcGkgPSBjYW5keUFwaVVybEF0SG9zdChcImxvY2FsaG9zdC50ZXN0a29udHVyLnJ1XCIpO1xuXG5leHBvcnQgY29uc3QgbG9jYWxOaWR1cyA9IGBodHRwczovL2xvY2FsaG9zdC50ZXN0a29udHVyLnJ1OjgwOTkvbmlkdXNgO1xuXG5leHBvcnQgZnVuY3Rpb24gY2FuZHlBcGlVcmxBdEhvc3QoaG9zdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYGh0dHBzOi8vJHtob3N0fTo5MDkwYDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFPLE1BQU1BLGFBQWEsR0FBQUMsT0FBQSxDQUFBRCxhQUFBLEdBQUcsMkJBQTJCO0FBRWpELE1BQU1FLGtCQUFrQixHQUFBRCxPQUFBLENBQUFDLGtCQUFBLEdBQUdGLGFBQWEsR0FBRyxRQUFRO0FBRW5ELE1BQU1HLHFCQUFxQixHQUFBRixPQUFBLENBQUFFLHFCQUFBLEdBQUdILGFBQWEsR0FBRyxXQUFXO0FBRXpELE1BQU1JLGFBQWEsR0FBQUgsT0FBQSxDQUFBRyxhQUFBLEdBQUdDLGlCQUFpQixDQUFDLHlCQUF5QixDQUFDO0FBRWxFLE1BQU1DLFVBQVUsR0FBQUwsT0FBQSxDQUFBSyxVQUFBLEdBQUcsNENBQTRDO0FBRS9ELFNBQVNELGlCQUFpQkEsQ0FBQ0UsSUFBWSxFQUFVO0VBQ3BELE9BQU8sV0FBV0EsSUFBSSxPQUFPO0FBQ2pDIiwiaWdub3JlTGlzdCI6W119
16
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0ZXN0S29udHVyQXBpIiwiZXhwb3J0cyIsInRlc3RLb250dXJBcGlDYW5keSIsInRlc3RLb250dXJBcGlQaWNrbGlzdCIsImxvY2FsQ2FuZHlBcGkiLCJjYW5keUFwaVVybEF0SG9zdCIsImxvY2FsTmlkdXMiLCJob3N0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vQ29tbW9uL0VuZFBvaW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdGVzdEtvbnR1ckFwaSA9IFwiaHR0cHM6Ly9hcGkudGVzdGtvbnR1ci5ydVwiO1xuXG5leHBvcnQgY29uc3QgdGVzdEtvbnR1ckFwaUNhbmR5ID0gdGVzdEtvbnR1ckFwaSArIFwiL2NhbmR5XCI7XG5cbmV4cG9ydCBjb25zdCB0ZXN0S29udHVyQXBpUGlja2xpc3QgPSB0ZXN0S29udHVyQXBpICsgXCIvcGlja2xpc3RcIjtcblxuZXhwb3J0IGNvbnN0IGxvY2FsQ2FuZHlBcGkgPSBjYW5keUFwaVVybEF0SG9zdChcImxvY2FsaG9zdC50ZXN0a29udHVyLnJ1XCIpO1xuXG5leHBvcnQgY29uc3QgbG9jYWxOaWR1cyA9IGBodHRwczovL2xvY2FsaG9zdC50ZXN0a29udHVyLnJ1OjgwOTkvbmlkdXNgO1xuXG5leHBvcnQgZnVuY3Rpb24gY2FuZHlBcGlVcmxBdEhvc3QoaG9zdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYGh0dHBzOi8vJHtob3N0fToyMTA5MGA7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBTyxNQUFNQSxhQUFhLEdBQUFDLE9BQUEsQ0FBQUQsYUFBQSxHQUFHLDJCQUEyQjtBQUVqRCxNQUFNRSxrQkFBa0IsR0FBQUQsT0FBQSxDQUFBQyxrQkFBQSxHQUFHRixhQUFhLEdBQUcsUUFBUTtBQUVuRCxNQUFNRyxxQkFBcUIsR0FBQUYsT0FBQSxDQUFBRSxxQkFBQSxHQUFHSCxhQUFhLEdBQUcsV0FBVztBQUV6RCxNQUFNSSxhQUFhLEdBQUFILE9BQUEsQ0FBQUcsYUFBQSxHQUFHQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FBQztBQUVsRSxNQUFNQyxVQUFVLEdBQUFMLE9BQUEsQ0FBQUssVUFBQSxHQUFHLDRDQUE0QztBQUUvRCxTQUFTRCxpQkFBaUJBLENBQUNFLElBQVksRUFBVTtFQUNwRCxPQUFPLFdBQVdBLElBQUksUUFBUTtBQUNsQyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"EndPoints.js","names":["testKonturApi","exports","testKonturApiCandy","testKonturApiPicklist","localCandyApi","candyApiUrlAtHost","localNidus","host"],"sources":["../../../Common/EndPoints.ts"],"sourcesContent":["export const testKonturApi = \"https://api.testkontur.ru\";\n\nexport const testKonturApiCandy = testKonturApi + \"/candy\";\n\nexport const testKonturApiPicklist = testKonturApi + \"/picklist\";\n\nexport const localCandyApi = candyApiUrlAtHost(\"localhost.testkontur.ru\");\n\nexport const localNidus = `https://localhost.testkontur.ru:8099/nidus`;\n\nexport function candyApiUrlAtHost(host: string): string {\n return `https://${host}:9090`;\n}\n"],"mappings":";;;;;;;AAAO,MAAMA,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAG,2BAA2B;AAEjD,MAAME,kBAAkB,GAAAD,OAAA,CAAAC,kBAAA,GAAGF,aAAa,GAAG,QAAQ;AAEnD,MAAMG,qBAAqB,GAAAF,OAAA,CAAAE,qBAAA,GAAGH,aAAa,GAAG,WAAW;AAEzD,MAAMI,aAAa,GAAAH,OAAA,CAAAG,aAAA,GAAGC,iBAAiB,CAAC,yBAAyB,CAAC;AAElE,MAAMC,UAAU,GAAAL,OAAA,CAAAK,UAAA,GAAG,4CAA4C;AAE/D,SAASD,iBAAiBA,CAACE,IAAY,EAAU;EACpD,OAAO,WAAWA,IAAI,OAAO;AACjC","ignoreList":[]}
1
+ {"version":3,"file":"EndPoints.js","names":["testKonturApi","exports","testKonturApiCandy","testKonturApiPicklist","localCandyApi","candyApiUrlAtHost","localNidus","host"],"sources":["../../../Common/EndPoints.ts"],"sourcesContent":["export const testKonturApi = \"https://api.testkontur.ru\";\n\nexport const testKonturApiCandy = testKonturApi + \"/candy\";\n\nexport const testKonturApiPicklist = testKonturApi + \"/picklist\";\n\nexport const localCandyApi = candyApiUrlAtHost(\"localhost.testkontur.ru\");\n\nexport const localNidus = `https://localhost.testkontur.ru:8099/nidus`;\n\nexport function candyApiUrlAtHost(host: string): string {\n return `https://${host}:21090`;\n}\n"],"mappings":";;;;;;;AAAO,MAAMA,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAG,2BAA2B;AAEjD,MAAME,kBAAkB,GAAAD,OAAA,CAAAC,kBAAA,GAAGF,aAAa,GAAG,QAAQ;AAEnD,MAAMG,qBAAqB,GAAAF,OAAA,CAAAE,qBAAA,GAAGH,aAAa,GAAG,WAAW;AAEzD,MAAMI,aAAa,GAAAH,OAAA,CAAAG,aAAA,GAAGC,iBAAiB,CAAC,yBAAyB,CAAC;AAElE,MAAMC,UAAU,GAAAL,OAAA,CAAAK,UAAA,GAAG,4CAA4C;AAE/D,SAASD,iBAAiBA,CAACE,IAAY,EAAU;EACpD,OAAO,WAAWA,IAAI,QAAQ;AAClC","ignoreList":[]}
@@ -117,7 +117,11 @@ let BuildServerBackendResourcesController = exports.BuildServerBackendResourcesC
117
117
  throw new _NotFoundWebError.NotFoundWebError("File not found", false);
118
118
  }
119
119
  async getFLangNormalizeFile(gfv) {
120
- return new _StreamResultHandler.StreamResult(await this.generatedServerSideSourcesProvider.getNormalizationFileContent(gfv));
120
+ const stream = await this.generatedServerSideSourcesProvider.getNormalizationFileContent(gfv);
121
+ if (stream == null) {
122
+ throw new _NotFoundWebError.NotFoundWebError("File not found", false);
123
+ }
124
+ return new _StreamResultHandler.StreamResult(stream);
121
125
  }
122
126
  async getAllAttachmentPathsFileNames() {
123
127
  const flangFiles = await this.generatedServerSideSourcesProvider.getAllAttachmentPathFileNames();
@@ -163,4 +167,4 @@ let BuildServerBackendResourcesController = exports.BuildServerBackendResourcesC
163
167
  throw new _NotFoundWebError.NotFoundWebError("File not found", false);
164
168
  }
165
169
  }, ((0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllGfvs", [_dec], Object.getOwnPropertyDescriptor(_class.prototype, "getAllGfvs"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllPicklists", [_dec2], Object.getOwnPropertyDescriptor(_class.prototype, "getAllPicklists"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getPicklists", [_dec3], Object.getOwnPropertyDescriptor(_class.prototype, "getPicklists"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllConvertersFiles", [_dec4], Object.getOwnPropertyDescriptor(_class.prototype, "getAllConvertersFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getConverterFile", [_dec5], Object.getOwnPropertyDescriptor(_class.prototype, "getConverterFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllMergersFiles", [_dec6], Object.getOwnPropertyDescriptor(_class.prototype, "getAllMergersFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getMergerFile", [_dec7], Object.getOwnPropertyDescriptor(_class.prototype, "getMergerFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllSchemasFiles", [_dec8], Object.getOwnPropertyDescriptor(_class.prototype, "getAllSchemasFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFormSchemas", [_dec9], Object.getOwnPropertyDescriptor(_class.prototype, "getFormSchemas"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllFormPresentations", [_dec10], Object.getOwnPropertyDescriptor(_class.prototype, "getAllFormPresentations"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFormPresentations", [_dec11], Object.getOwnPropertyDescriptor(_class.prototype, "getFormPresentations"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllNormalizeFiles", [_dec12], Object.getOwnPropertyDescriptor(_class.prototype, "getAllNormalizeFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getNormalizeFile", [_dec13], Object.getOwnPropertyDescriptor(_class.prototype, "getNormalizeFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFLangNormalizeFile", [_dec14], Object.getOwnPropertyDescriptor(_class.prototype, "getFLangNormalizeFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllAttachmentPathsFileNames", [_dec15], Object.getOwnPropertyDescriptor(_class.prototype, "getAllAttachmentPathsFileNames"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAttachmentPathFile", [_dec16], Object.getOwnPropertyDescriptor(_class.prototype, "getAttachmentPathFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllUnmapFiles", [_dec17], Object.getOwnPropertyDescriptor(_class.prototype, "getAllUnmapFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getUnmapFile", [_dec18], Object.getOwnPropertyDescriptor(_class.prototype, "getUnmapFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllMapFiles", [_dec19], Object.getOwnPropertyDescriptor(_class.prototype, "getAllMapFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getMapFile", [_dec20], Object.getOwnPropertyDescriptor(_class.prototype, "getMapFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllPatchFiles", [_dec21], Object.getOwnPropertyDescriptor(_class.prototype, "getAllPatchFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getPatchFile", [_dec22], Object.getOwnPropertyDescriptor(_class.prototype, "getPatchFile"), _class.prototype)), _class));
166
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnMiLCJyZXF1aXJlIiwicGF0aCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2ZzRXh0cmEiLCJfbG9kYXNoIiwiX01ldGhvZHMiLCJfTm90Rm91bmRXZWJFcnJvciIsIl9QYXJhbXMiLCJfUmVzdWx0cyIsIl9TdHJlYW1SZXN1bHRIYW5kbGVyIiwiX1NpbmdsZXRvbkNvbnRyb2xsZXIiLCJfRmFybURpcmVjdG9yeSIsIl9kZWMiLCJfZGVjMiIsIl9kZWMzIiwiX2RlYzQiLCJfZGVjNSIsIl9kZWM2IiwiX2RlYzciLCJfZGVjOCIsIl9kZWM5IiwiX2RlYzEwIiwiX2RlYzExIiwiX2RlYzEyIiwiX2RlYzEzIiwiX2RlYzE0IiwiX2RlYzE1IiwiX2RlYzE2IiwiX2RlYzE3IiwiX2RlYzE4IiwiX2RlYzE5IiwiX2RlYzIwIiwiX2RlYzIxIiwiX2RlYzIyIiwiX2NsYXNzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiQnVpbGRTZXJ2ZXJCYWNrZW5kUmVzb3VyY2VzQ29udHJvbGxlciIsImV4cG9ydHMiLCJodHRwR2V0IiwiaHR0cFJldHVybiIsIkpzb24iLCJQbGFpblRleHQiLCJTdHJlYW1XaXRoTWltZSIsImh0dHBVcmxQYXJhbSIsImh0dHBUeXBlIiwiU3RyaW5nIiwiU3RyZWFtIiwiU2luZ2xldG9uQ29udHJvbGxlciIsImNvbnN0cnVjdG9yIiwiYWxsRmFybUNvbmZpZyIsImZsYW5nTm9ybWFsaXphdGlvblNvdXJjZXNQcm92aWRlciIsImdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIiLCJhbGxTY2hlbWFzRmlsZXMiLCJyZXNldEFsbFNjaGVtYUZpbGVzRGVib3VuY2VkIiwiYWxsRmFybURpcmVjdG9yaWVzIiwibWFwIiwiRmFybURpcmVjdG9yeSIsImZhcm1EaXJlY3RvcnkiLCJkZWJvdW5jZSIsInVuZGVmaW5lZCIsImdldEFsbEdmdnMiLCJQcm9taXNlIiwiYWxsIiwieCIsImZsYXQiLCJnZXRBbGxQaWNrbGlzdHMiLCJqb2luIiwiZ2V0UGlja2xpc3RzIiwicGlja2xpc3RGaWxlbmFtZSIsImFsbEZpbGVQYXRoIiwicGF0aEZpbGUiLCJwYXRoRXhpc3RzIiwiY3JlYXRlUmVhZFN0cmVhbSIsIkVycm9yIiwiZ2V0QWxsQ29udmVydGVyc0ZpbGVzIiwiZmxhdE1hcCIsImdldEFsbENvbnZlcnRlckZpbGVQYXRocyIsImJhc2VuYW1lIiwiZ2V0Q29udmVydGVyRmlsZSIsImZpbGVuYW1lIiwiZmlsZVBhdGgiLCJnZXRDb252ZXJ0ZXJGaWxlUGF0aEJ5RmlsZU5hbWVPclVuZGVmaW5lZCIsIkZpbGVTdHJlYW1SZXN1bHQiLCJOb3RGb3VuZFdlYkVycm9yIiwiZ2V0QWxsTWVyZ2Vyc0ZpbGVzIiwiZ2V0QWxsTWVyZ2Vyc0ZpbGVQYXRocyIsImdldE1lcmdlckZpbGUiLCJnZXRNZXJnZXJzRmlsZVBhdGhCeUZpbGVOYW1lT3JVbmRlZmluZWQiLCJnZXRBbGxTY2hlbWFzRmlsZXMiLCJnZXRBbGxTY2hlbWFzRmlsZVBhdGhzIiwiZ2V0Rm9ybVNjaGVtYXMiLCJnZXRTY2hlbWFGaWxlUGF0aEJ5RmlsZU5hbWVPclVuZGVmaW5lZCIsImdldEFsbEZvcm1QcmVzZW50YXRpb25zIiwiZ2V0QWxsUHJlc2VudGF0aW9uc0ZpbGVOYW1lcyIsImdldEZvcm1QcmVzZW50YXRpb25zIiwiZ2Z2IiwiZ2V0UHJlc2VudGF0aW9uc0ZpbGVQYXRoQnlHZnZPclVuZGVmaW5lZCIsImdldEFsbE5vcm1hbGl6ZUZpbGVzIiwiZmlsZXMiLCJnZXRBbGxOb3JtYWxpemVGaWxlUGF0aHMiLCJmbGFuZ0ZpbGVzIiwiZ2V0QWxsTm9ybWFsaXphdGlvbkZpbGVOYW1lcyIsImdldE5vcm1hbGl6ZUZpbGUiLCJnZXROb3JtYWxpemVGaWxlUGF0aEJ5RmlsZU5hbWVPclVuZGVmaW5lZCIsImdldEZMYW5nTm9ybWFsaXplRmlsZSIsIlN0cmVhbVJlc3VsdCIsImdldE5vcm1hbGl6YXRpb25GaWxlQ29udGVudCIsImdldEFsbEF0dGFjaG1lbnRQYXRoc0ZpbGVOYW1lcyIsImdldEFsbEF0dGFjaG1lbnRQYXRoRmlsZU5hbWVzIiwiZ2V0QXR0YWNobWVudFBhdGhGaWxlIiwiZ2V0QXR0YWNobWVudFBhdGhzRmlsZUNvbnRlbnQiLCJnZXRBbGxVbm1hcEZpbGVzIiwiZ2V0QWxsVW5tYXBGaWxlUGF0aHMiLCJnZXRVbm1hcEZpbGUiLCJnZXRVbm1hcEZpbGVQYXRoQnlGaWxlTmFtZU9yVW5kZWZpbmVkIiwiZ2V0QWxsTWFwRmlsZXMiLCJnZXRBbGxNYXBGaWxlUGF0aHMiLCJnZXRNYXBGaWxlIiwiZ2V0TWFwRmlsZVBhdGhCeUZpbGVOYW1lT3JVbmRlZmluZWQiLCJnZXRBbGxQYXRjaEZpbGVzIiwiZ2V0QWxsUGF0Y2hGaWxlUGF0aHMiLCJnZXRQYXRjaEZpbGUiLCJnZXRQYXRjaEZpbGVQYXRoQnlGaWxlTmFtZU9yVW5kZWZpbmVkIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcjIiLCJwcm90b3R5cGUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvQ0xJQ29tbWFuZHMvQnVpbGRTZXJ2ZXIvUmVzb3VyY2VzQ29udHJvbGxlcnMvQnVpbGRTZXJ2ZXJCYWNrZW5kUmVzb3VyY2VzQ29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVSZWFkU3RyZWFtLCBSZWFkU3RyZWFtIH0gZnJvbSBcImZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IHBhdGhFeGlzdHMgfSBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCBfLCB7IGRlYm91bmNlIH0gZnJvbSBcImxvZGFzaFwiO1xuaW1wb3J0IHsgRmFybUNvbmZpZyB9IGZyb20gXCJUb29scy9zcmMvQ2FuZHlDTElcIjtcblxuaW1wb3J0IHsgaHR0cEdldCB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9NZXRob2RzXCI7XG5pbXBvcnQgeyBOb3RGb3VuZFdlYkVycm9yIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL05vdEZvdW5kV2ViRXJyb3JcIjtcbmltcG9ydCB7IGh0dHBUeXBlLCBodHRwVXJsUGFyYW0gfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUGFyYW1zXCI7XG5pbXBvcnQgeyBodHRwUmV0dXJuIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1Jlc3VsdHNcIjtcbmltcG9ydCB7XG4gICAgRmlsZVN0cmVhbVJlc3VsdCxcbiAgICBTdHJlYW1SZXN1bHQsXG59IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9SZXN1bHRzL1N0cmVhbVJlc3VsdEhhbmRsZXJcIjtcbmltcG9ydCB7IFNpbmdsZXRvbkNvbnRyb2xsZXIgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0V4cHJlc3NXcmFwcGVyL1NpbmdsZXRvbkNvbnRyb2xsZXJcIjtcblxuaW1wb3J0IHsgSUdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIgfSBmcm9tIFwiLi9JR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlclwiO1xuaW1wb3J0IHsgRmFybURpcmVjdG9yeSB9IGZyb20gXCIuL0RpcmVjdG9yaWVzL0Zhcm1EaXJlY3RvcnlcIjtcblxuZXhwb3J0IGNsYXNzIEJ1aWxkU2VydmVyQmFja2VuZFJlc291cmNlc0NvbnRyb2xsZXIgZXh0ZW5kcyBTaW5nbGV0b25Db250cm9sbGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXI6IElHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyO1xuICAgIHByaXZhdGUgYWxsU2NoZW1hc0ZpbGVzOiB1bmRlZmluZWQgfCBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSByZXNldEFsbFNjaGVtYUZpbGVzRGVib3VuY2VkOiAoKSA9PiB2b2lkO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsRmFybURpcmVjdG9yaWVzOiBGYXJtRGlyZWN0b3J5W107XG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGxGYXJtQ29uZmlnOiBGYXJtQ29uZmlnW107XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIGFsbEZhcm1Db25maWc6IEZhcm1Db25maWdbXSxcbiAgICAgICAgZmxhbmdOb3JtYWxpemF0aW9uU291cmNlc1Byb3ZpZGVyOiBJR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlclxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIgPSBmbGFuZ05vcm1hbGl6YXRpb25Tb3VyY2VzUHJvdmlkZXI7XG4gICAgICAgIHRoaXMuYWxsRmFybUNvbmZpZyA9IGFsbEZhcm1Db25maWc7XG4gICAgICAgIHRoaXMuYWxsRmFybURpcmVjdG9yaWVzID0gYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBuZXcgRmFybURpcmVjdG9yeShpLmZhcm1EaXJlY3RvcnkpKTtcbiAgICAgICAgdGhpcy5yZXNldEFsbFNjaGVtYUZpbGVzRGVib3VuY2VkID0gZGVib3VuY2UoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hbGxTY2hlbWFzRmlsZXMgPSB1bmRlZmluZWQ7XG4gICAgICAgIH0sIDUwMDApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL2dmdnNcIiwgaHR0cFJldHVybi5Kc29uKVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxHZnZzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmFsbEZhcm1EaXJlY3Rvcmllcy5tYXAoeCA9PiB4LmdldEFsbEdmdnMoKSkpKS5mbGF0KCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvcGlja2xpc3RzXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxQaWNrbGlzdHMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmFsbEZhcm1EaXJlY3Rvcmllcy5tYXAoeCA9PiB4LmdldEFsbFBpY2tsaXN0cygpKSkpLmZsYXQoKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFxuICAgICAgICBcIi9waWNrbGlzdHMvOnBpY2tsaXN0RmlsZW5hbWVcIixcbiAgICAgICAgaHR0cFJldHVybi5TdHJlYW1XaXRoTWltZShcImFwcGxpY2F0aW9uL2pzb25cIiksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcInBpY2tsaXN0RmlsZW5hbWVcIiwgaHR0cFR5cGUuU3RyaW5nKVxuICAgIClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0UGlja2xpc3RzKHBpY2tsaXN0RmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8UmVhZFN0cmVhbT4ge1xuICAgICAgICBjb25zdCBhbGxGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5LCBcInBpY2tsaXN0c1wiLCBwaWNrbGlzdEZpbGVuYW1lKSk7XG4gICAgICAgIGZvciAoY29uc3QgcGF0aEZpbGUgb2YgYWxsRmlsZVBhdGgpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKHBhdGhGaWxlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZWFkU3RyZWFtKHBhdGhGaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBFcnJvcihgbm90IGZvdW5kIHBpY2tsaXN0RmlsZW5hbWUgJHtwaWNrbGlzdEZpbGVuYW1lfWApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL2NvbnZlcnRlcnNcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbENvbnZlcnRlcnNGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gKGF3YWl0IFByb21pc2UuYWxsKHRoaXMuYWxsRmFybURpcmVjdG9yaWVzLmZsYXRNYXAoeCA9PiB4LmdldEFsbENvbnZlcnRlckZpbGVQYXRocygpKSkpXG4gICAgICAgICAgICAuZmxhdCgpXG4gICAgICAgICAgICAubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSlcbiAgICAgICAgICAgIC5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL2NvbnZlcnRlcnMvOmZpbGVuYW1lXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJmaWxlbmFtZVwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRDb252ZXJ0ZXJGaWxlKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgZm9yIChjb25zdCBmYXJtRGlyZWN0b3J5IG9mIHRoaXMuYWxsRmFybURpcmVjdG9yaWVzKSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlUGF0aCA9IGF3YWl0IGZhcm1EaXJlY3RvcnkuZ2V0Q29udmVydGVyRmlsZVBhdGhCeUZpbGVOYW1lT3JVbmRlZmluZWQoZmlsZW5hbWUpO1xuICAgICAgICAgICAgaWYgKGZpbGVQYXRoICE9IG51bGwgJiYgKGF3YWl0IHBhdGhFeGlzdHMoZmlsZVBhdGgpKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChmaWxlUGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRXZWJFcnJvcihcIkZpbGUgbm90IGZvdW5kXCIsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9tZXJnZXJzXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxNZXJnZXJzRmlsZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmFsbEZhcm1EaXJlY3Rvcmllcy5mbGF0TWFwKHggPT4geC5nZXRBbGxNZXJnZXJzRmlsZVBhdGhzKCkpKSlcbiAgICAgICAgICAgIC5mbGF0KClcbiAgICAgICAgICAgIC5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKVxuICAgICAgICAgICAgLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvbWVyZ2Vycy86ZmlsZW5hbWVcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImZpbGVuYW1lXCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldE1lcmdlckZpbGUoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBmb3IgKGNvbnN0IGZhcm1EaXJlY3Rvcnkgb2YgdGhpcy5hbGxGYXJtRGlyZWN0b3JpZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVQYXRoID0gYXdhaXQgZmFybURpcmVjdG9yeS5nZXRNZXJnZXJzRmlsZVBhdGhCeUZpbGVOYW1lT3JVbmRlZmluZWQoZmlsZW5hbWUpO1xuICAgICAgICAgICAgaWYgKGZpbGVQYXRoICE9IG51bGwgJiYgKGF3YWl0IHBhdGhFeGlzdHMoZmlsZVBhdGgpKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChmaWxlUGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRXZWJFcnJvcihcIkZpbGUgbm90IGZvdW5kXCIsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9zY2hlbWFzXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxTY2hlbWFzRmlsZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgaWYgKHRoaXMuYWxsU2NoZW1hc0ZpbGVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYWxsU2NoZW1hc0ZpbGVzID0gKGF3YWl0IFByb21pc2UuYWxsKHRoaXMuYWxsRmFybURpcmVjdG9yaWVzLmZsYXRNYXAoeCA9PiB4LmdldEFsbFNjaGVtYXNGaWxlUGF0aHMoKSkpKVxuICAgICAgICAgICAgICAgIC5mbGF0KClcbiAgICAgICAgICAgICAgICAubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSlcbiAgICAgICAgICAgICAgICAuam9pbihcIlxcblwiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlc2V0QWxsU2NoZW1hRmlsZXNEZWJvdW5jZWQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxsU2NoZW1hc0ZpbGVzO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3NjaGVtYXMvOmZpbGVuYW1lXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJmaWxlbmFtZVwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtU2NoZW1hcyhmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGZvciAoY29uc3QgZmFybURpcmVjdG9yeSBvZiB0aGlzLmFsbEZhcm1EaXJlY3Rvcmllcykge1xuICAgICAgICAgICAgY29uc3QgZmlsZVBhdGggPSBhd2FpdCBmYXJtRGlyZWN0b3J5LmdldFNjaGVtYUZpbGVQYXRoQnlGaWxlTmFtZU9yVW5kZWZpbmVkKGZpbGVuYW1lKTtcbiAgICAgICAgICAgIGlmIChmaWxlUGF0aCAhPSBudWxsICYmIChhd2FpdCBwYXRoRXhpc3RzKGZpbGVQYXRoKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQoZmlsZVBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kV2ViRXJyb3IoXCJGaWxlIG5vdCBmb3VuZFwiLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvcHJlc2VudGF0aW9uc1wiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsRm9ybVByZXNlbnRhdGlvbnMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmFsbEZhcm1EaXJlY3Rvcmllcy5mbGF0TWFwKHggPT4geC5nZXRBbGxQcmVzZW50YXRpb25zRmlsZU5hbWVzKCkpKSlcbiAgICAgICAgICAgIC5mbGF0KClcbiAgICAgICAgICAgIC5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKVxuICAgICAgICAgICAgLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvcHJlc2VudGF0aW9ucy86Z2Z2LnByZXNlbnRhdGlvbnMuanNvblwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldEZvcm1QcmVzZW50YXRpb25zKGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGZvciAoY29uc3QgZmFybURpcmVjdG9yeSBvZiB0aGlzLmFsbEZhcm1EaXJlY3Rvcmllcykge1xuICAgICAgICAgICAgY29uc3QgZmlsZVBhdGggPSBhd2FpdCBmYXJtRGlyZWN0b3J5LmdldFByZXNlbnRhdGlvbnNGaWxlUGF0aEJ5R2Z2T3JVbmRlZmluZWQoZ2Z2KTtcbiAgICAgICAgICAgIGlmIChmaWxlUGF0aCAhPSBudWxsICYmIChhd2FpdCBwYXRoRXhpc3RzKGZpbGVQYXRoKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQoZmlsZVBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kV2ViRXJyb3IoXCJGaWxlIG5vdCBmb3VuZFwiLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvbm9ybWFsaXplXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxOb3JtYWxpemVGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmFsbEZhcm1EaXJlY3Rvcmllcy5mbGF0TWFwKHggPT4geC5nZXRBbGxOb3JtYWxpemVGaWxlUGF0aHMoKSkpKS5mbGF0KCk7XG4gICAgICAgIGNvbnN0IGZsYW5nRmlsZXMgPSBhd2FpdCB0aGlzLmdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIuZ2V0QWxsTm9ybWFsaXphdGlvbkZpbGVOYW1lcygpO1xuICAgICAgICByZXR1cm4gWy4uLmZpbGVzLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpLCAuLi5mbGFuZ0ZpbGVzXS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL25vcm1hbGl6ZS86Z2Z2LnhtbFwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldE5vcm1hbGl6ZUZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgZm9yIChjb25zdCBmYXJtRGlyZWN0b3J5IG9mIHRoaXMuYWxsRmFybURpcmVjdG9yaWVzKSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlUGF0aCA9IGF3YWl0IGZhcm1EaXJlY3RvcnkuZ2V0Tm9ybWFsaXplRmlsZVBhdGhCeUZpbGVOYW1lT3JVbmRlZmluZWQoYCR7Z2Z2fS54bWxgKTtcbiAgICAgICAgICAgIGlmIChmaWxlUGF0aCAhPSBudWxsICYmIChhd2FpdCBwYXRoRXhpc3RzKGZpbGVQYXRoKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQoZmlsZVBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kV2ViRXJyb3IoXCJGaWxlIG5vdCBmb3VuZFwiLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvbm9ybWFsaXplLzpnZnYubm9ybWFsaXplXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RkxhbmdOb3JtYWxpemVGaWxlKGdmdjogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW1SZXN1bHQoYXdhaXQgdGhpcy5nZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyLmdldE5vcm1hbGl6YXRpb25GaWxlQ29udGVudChnZnYpKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9hdHRhY2htZW50cGF0aHNcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbEF0dGFjaG1lbnRQYXRoc0ZpbGVOYW1lcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBmbGFuZ0ZpbGVzID0gYXdhaXQgdGhpcy5nZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyLmdldEFsbEF0dGFjaG1lbnRQYXRoRmlsZU5hbWVzKCk7XG4gICAgICAgIHJldHVybiBmbGFuZ0ZpbGVzLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvYXR0YWNobWVudHBhdGhzLzpnZnYuanNvblwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldEF0dGFjaG1lbnRQYXRoRmlsZShnZnY6IHN0cmluZyk6IFByb21pc2U8U3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiBuZXcgU3RyZWFtUmVzdWx0KGF3YWl0IHRoaXMuZ2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlci5nZXRBdHRhY2htZW50UGF0aHNGaWxlQ29udGVudChnZnYpKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi91bm1hcFwiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsVW5tYXBGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gKGF3YWl0IFByb21pc2UuYWxsKHRoaXMuYWxsRmFybURpcmVjdG9yaWVzLmZsYXRNYXAoeCA9PiB4LmdldEFsbFVubWFwRmlsZVBhdGhzKCkpKSlcbiAgICAgICAgICAgIC5mbGF0KClcbiAgICAgICAgICAgIC5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKVxuICAgICAgICAgICAgLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvdW5tYXAvOmZpbGVuYW1lXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJmaWxlbmFtZVwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRVbm1hcEZpbGUoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBmb3IgKGNvbnN0IGZhcm1EaXJlY3Rvcnkgb2YgdGhpcy5hbGxGYXJtRGlyZWN0b3JpZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVQYXRoID0gYXdhaXQgZmFybURpcmVjdG9yeS5nZXRVbm1hcEZpbGVQYXRoQnlGaWxlTmFtZU9yVW5kZWZpbmVkKGZpbGVuYW1lKTtcbiAgICAgICAgICAgIGlmIChmaWxlUGF0aCAhPSBudWxsICYmIChhd2FpdCBwYXRoRXhpc3RzKGZpbGVQYXRoKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQoZmlsZVBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kV2ViRXJyb3IoXCJGaWxlIG5vdCBmb3VuZFwiLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvbWFwXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxNYXBGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gKGF3YWl0IFByb21pc2UuYWxsKHRoaXMuYWxsRmFybURpcmVjdG9yaWVzLmZsYXRNYXAoeCA9PiB4LmdldEFsbE1hcEZpbGVQYXRocygpKSkpXG4gICAgICAgICAgICAuZmxhdCgpXG4gICAgICAgICAgICAubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSlcbiAgICAgICAgICAgIC5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL21hcC86ZmlsZW5hbWVcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImZpbGVuYW1lXCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldE1hcEZpbGUoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBmb3IgKGNvbnN0IGZhcm1EaXJlY3Rvcnkgb2YgdGhpcy5hbGxGYXJtRGlyZWN0b3JpZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVQYXRoID0gYXdhaXQgZmFybURpcmVjdG9yeS5nZXRNYXBGaWxlUGF0aEJ5RmlsZU5hbWVPclVuZGVmaW5lZChmaWxlbmFtZSk7XG4gICAgICAgICAgICBpZiAoZmlsZVBhdGggIT0gbnVsbCAmJiAoYXdhaXQgcGF0aEV4aXN0cyhmaWxlUGF0aCkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KGZpbGVQYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZFdlYkVycm9yKFwiRmlsZSBub3QgZm91bmRcIiwgZmFsc2UpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3BhdGNoXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxQYXRjaEZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5hbGxGYXJtRGlyZWN0b3JpZXMuZmxhdE1hcCh4ID0+IHguZ2V0QWxsUGF0Y2hGaWxlUGF0aHMoKSkpKVxuICAgICAgICAgICAgLmZsYXQoKVxuICAgICAgICAgICAgLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpXG4gICAgICAgICAgICAuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9wYXRjaC86ZmlsZW5hbWVcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRQYXRjaEZpbGUoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBmb3IgKGNvbnN0IGZhcm1EaXJlY3Rvcnkgb2YgdGhpcy5hbGxGYXJtRGlyZWN0b3JpZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVQYXRoID0gYXdhaXQgZmFybURpcmVjdG9yeS5nZXRQYXRjaEZpbGVQYXRoQnlGaWxlTmFtZU9yVW5kZWZpbmVkKGZpbGVuYW1lKTtcbiAgICAgICAgICAgIGlmIChmaWxlUGF0aCAhPSBudWxsICYmIChhd2FpdCBwYXRoRXhpc3RzKGZpbGVQYXRoKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQoZmlsZVBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kV2ViRXJyb3IoXCJGaWxlIG5vdCBmb3VuZFwiLCBmYWxzZSk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLEdBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLElBQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFHLFFBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUosT0FBQTtBQUdBLElBQUFLLFFBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLGlCQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxPQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxRQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxvQkFBQSxHQUFBVCxPQUFBO0FBSUEsSUFBQVUsb0JBQUEsR0FBQVYsT0FBQTtBQUdBLElBQUFXLGNBQUEsR0FBQVgsT0FBQTtBQUE0RCxJQUFBWSxJQUFBLEVBQUFDLEtBQUEsRUFBQUMsS0FBQSxFQUFBQyxLQUFBLEVBQUFDLEtBQUEsRUFBQUMsS0FBQSxFQUFBQyxLQUFBLEVBQUFDLEtBQUEsRUFBQUMsS0FBQSxFQUFBQyxNQUFBLEVBQUFDLE1BQUEsRUFBQUMsTUFBQSxFQUFBQyxNQUFBLEVBQUFDLE1BQUEsRUFBQUMsTUFBQSxFQUFBQyxNQUFBLEVBQUFDLE1BQUEsRUFBQUMsTUFBQSxFQUFBQyxNQUFBLEVBQUFDLE1BQUEsRUFBQUMsTUFBQSxFQUFBQyxNQUFBLEVBQUFDLE1BQUE7QUFBQSxTQUFBQyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FB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SCxLQUFBLEdBQUE2QixNQUFBLENBQUFFLHdCQUFBLENBQUFmLE1BQUEsQ0FBQTZHLFNBQUEsb0JBQUE3RyxNQUFBLENBQUE2RyxTQUFBLE9BQUFELDBCQUFBLENBQUFyRyxPQUFBLEVBQUFQLE1BQUEsQ0FBQTZHLFNBQUEseUJBQUE1SCxLQUFBLEdBQUE0QixNQUFBLENBQUFFLHdCQUFBLENBQUFmLE1BQUEsQ0FBQTZHLFNBQUEseUJBQUE3RyxNQUFBLENBQUE2RyxTQUFBLE9BQUFELDBCQUFBLENBQUFyRyxPQUFBLEVBQUFQLE1BQUEsQ0FBQTZHLFNBQUEscUJBQUEzSCxLQUFBLEdBQUEyQixNQUFBLENBQUFFLHdCQUFBLENBQUFmLE1BQUEsQ0FBQTZHLFNBQUEscUJBQUE3RyxNQUFBLENBQUE2RyxTQUFBLE9BQUFELDBCQUFBLENBQUFyRyxPQUFBLEVBQUFQLE1BQUEsQ0FBQTZHLFNBQUEsOEJBQUExSCxNQUFBLEdBQUEwQixNQUFBLENBQUFFLHdCQUFBLENBQUFmLE1BQUEsQ0FBQTZHLFNBQUEsOEJBQUE3RyxNQUFBLENBQUE2RyxTQUFBLE9BQUFELDBCQUFBLENBQUFyRyxPQUFBLEVBQUFQLE1BQUEsQ0FBQTZHLFNBQUEsMkJBQUF6SCxNQUFBLEdBQUF5QixNQUFBLENBQUFFLHdCQUFBLENBQUFmLE1BQUEsQ0FBQTZHLFNBQUEsMkJBQUE3RyxNQUFBLENBQUE2RyxTQUFBLE9BQUFELDBCQUFBLENBQUFyRyxPQUFBLEVBQUFQLE1BQUEsQ0FBQTZHLFNBQUEsMkJBQUF4SCxNQUFBLEdBQUF3QixNQUFBLENBQUFFLHdCQUFBLENBQUFmLE1BQUEsQ0FBQTZHLFNBQUEsMkJBQUE3RyxNQUFBLENBQUE2RyxTQUFBLE9BQUFELDBCQUFBLENBQUFyRyxPQUFBLEVBQUFQLE1BQUEsQ0FBQTZHLFNBQUEsdUJBQUF2SCxNQUFBLEdBQUF1QixNQUFBLENBQUFFLHdCQUFBLENBQUFmLE1BQUEsQ0FBQTZHLFNBQUEsdUJBQUE3RyxNQUFBLENBQUE2RyxTQUFBLE9BQUFELDBCQUFBLENBQUFyRyxPQUFBLEVBQUFQLE1BQUEsQ0FBQTZHLFNBQUEsNEJBQUF0SCxNQUFBLEdBQUFzQixNQUFBLENBQUFFLHdCQUFBLENBQUFmLE1BQUEsQ0FBQTZHLFNBQUEsNEJBQUE3RyxNQUFBLENBQUE2RyxTQUFBLE9BQUFELDBCQUFBLENBQUFyRyxPQUFBLEVBQUFQLE1BQUEsQ0FBQTZHLFNBQUEscUNBQUFySCxNQUFBLEdBQUFxQixNQUFBLENBQUFFLHdCQUFBLENBQUFmLE1BQUEsQ0FBQTZHLFNBQUEscUNBQUE3RyxNQUFBLENBQUE2RyxTQUFBLE9BQUFELDBCQUFBLENBQUFyRyxPQUFBLEVBQUFQLE1BQUEsQ0FBQTZHLFNBQUEsNEJBQUFwSCxNQUFBLEdBQUFvQixNQUFBLENBQUFFLHdCQUFBLENBQUFmLE1BQUEsQ0FBQTZHLFNBQUEsNEJBQUE3RyxNQUFBLENBQUE2RyxTQUFBLE9BQUFELDBCQUFBLENBQUFyRyxPQUFBLEVBQUFQLE1BQUEsQ0FBQTZHLFNBQUEsdUJBQUFuSCxNQUFBLEdBQUFtQixNQUFBLENBQUFFLHdCQUFBLENBQUFmLE1BQUEsQ0FBQTZHLFNBQUEsdUJBQUE3RyxNQUFBLENBQUE2RyxTQUFBLE9BQUFELDBCQUFBLENBQUFyRyxPQUFBLEVBQUFQLE1BQUEsQ0FBQTZHLFNBQUEsbUJBQUFsSCxNQUFBLEdBQUFrQixNQUFBLENBQUFFLHdCQUFBLENBQUFmLE1BQUEsQ0FBQTZHLFNBQUEsbUJBQUE3RyxNQUFBLENBQUE2RyxTQUFBLE9BQUFELDBCQUFBLENBQUFyRyxPQUFBLEVBQUFQLE1BQUEsQ0FBQTZHLFNBQUEscUJBQUFqSCxNQUFBLEdBQUFpQixNQUFBLENBQUFFLHdCQUFBLENBQUFmLE1BQUEsQ0FBQTZHLFNBQUEscUJBQUE3RyxNQUFBLENBQUE2RyxTQUFBLE9BQUFELDBCQUFBLENBQUFyRyxPQUFBLEVBQUFQLE1BQUEsQ0FBQTZHLFNBQUEsaUJBQUFoSCxNQUFBLEdBQUFnQixNQUFBLENBQUFFLHdCQUFBLENBQUFmLE1BQUEsQ0FBQTZHLFNBQUEsaUJBQUE3RyxNQUFBLENBQUE2RyxTQUFBLE9BQUFELDBCQUFBLENBQUFyRyxPQUFBLEVBQUFQLE1BQUEsQ0FBQTZHLFNBQUEsdUJBQUEvRyxNQUFBLEdBQUFlLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWYsTUFBQSxDQUFBNkcsU0FBQSx1QkFBQTdHLE1BQUEsQ0FBQTZHLFNBQUEsT0FBQUQsMEJBQUEsQ0FBQXJHLE9BQUEsRUFBQVAsTUFBQSxDQUFBNkcsU0FBQSxtQkFBQTlHLE1BQUEsR0FBQWMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBZixNQUFBLENBQUE2RyxTQUFBLG1CQUFBN0csTUFBQSxDQUFBNkcsU0FBQSxJQUFBN0csTUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
170
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnMiLCJyZXF1aXJlIiwicGF0aCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2ZzRXh0cmEiLCJfbG9kYXNoIiwiX01ldGhvZHMiLCJfTm90Rm91bmRXZWJFcnJvciIsIl9QYXJhbXMiLCJfUmVzdWx0cyIsIl9TdHJlYW1SZXN1bHRIYW5kbGVyIiwiX1NpbmdsZXRvbkNvbnRyb2xsZXIiLCJfRmFybURpcmVjdG9yeSIsIl9kZWMiLCJfZGVjMiIsIl9kZWMzIiwiX2RlYzQiLCJfZGVjNSIsIl9kZWM2IiwiX2RlYzciLCJfZGVjOCIsIl9kZWM5IiwiX2RlYzEwIiwiX2RlYzExIiwiX2RlYzEyIiwiX2RlYzEzIiwiX2RlYzE0IiwiX2RlYzE1IiwiX2RlYzE2IiwiX2RlYzE3IiwiX2RlYzE4IiwiX2RlYzE5IiwiX2RlYzIwIiwiX2RlYzIxIiwiX2RlYzIyIiwiX2NsYXNzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiQnVpbGRTZXJ2ZXJCYWNrZW5kUmVzb3VyY2VzQ29udHJvbGxlciIsImV4cG9ydHMiLCJodHRwR2V0IiwiaHR0cFJldHVybiIsIkpzb24iLCJQbGFpblRleHQiLCJTdHJlYW1XaXRoTWltZSIsImh0dHBVcmxQYXJhbSIsImh0dHBUeXBlIiwiU3RyaW5nIiwiU3RyZWFtIiwiU2luZ2xldG9uQ29udHJvbGxlciIsImNvbnN0cnVjdG9yIiwiYWxsRmFybUNvbmZpZyIsImZsYW5nTm9ybWFsaXphdGlvblNvdXJjZXNQcm92aWRlciIsImdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIiLCJhbGxTY2hlbWFzRmlsZXMiLCJyZXNldEFsbFNjaGVtYUZpbGVzRGVib3VuY2VkIiwiYWxsRmFybURpcmVjdG9yaWVzIiwibWFwIiwiRmFybURpcmVjdG9yeSIsImZhcm1EaXJlY3RvcnkiLCJkZWJvdW5jZSIsInVuZGVmaW5lZCIsImdldEFsbEdmdnMiLCJQcm9taXNlIiwiYWxsIiwieCIsImZsYXQiLCJnZXRBbGxQaWNrbGlzdHMiLCJqb2luIiwiZ2V0UGlja2xpc3RzIiwicGlja2xpc3RGaWxlbmFtZSIsImFsbEZpbGVQYXRoIiwicGF0aEZpbGUiLCJwYXRoRXhpc3RzIiwiY3JlYXRlUmVhZFN0cmVhbSIsIkVycm9yIiwiZ2V0QWxsQ29udmVydGVyc0ZpbGVzIiwiZmxhdE1hcCIsImdldEFsbENvbnZlcnRlckZpbGVQYXRocyIsImJhc2VuYW1lIiwiZ2V0Q29udmVydGVyRmlsZSIsImZpbGVuYW1lIiwiZmlsZVBhdGgiLCJnZXRDb252ZXJ0ZXJGaWxlUGF0aEJ5RmlsZU5hbWVPclVuZGVmaW5lZCIsIkZpbGVTdHJlYW1SZXN1bHQiLCJOb3RGb3VuZFdlYkVycm9yIiwiZ2V0QWxsTWVyZ2Vyc0ZpbGVzIiwiZ2V0QWxsTWVyZ2Vyc0ZpbGVQYXRocyIsImdldE1lcmdlckZpbGUiLCJnZXRNZXJnZXJzRmlsZVBhdGhCeUZpbGVOYW1lT3JVbmRlZmluZWQiLCJnZXRBbGxTY2hlbWFzRmlsZXMiLCJnZXRBbGxTY2hlbWFzRmlsZVBhdGhzIiwiZ2V0Rm9ybVNjaGVtYXMiLCJnZXRTY2hlbWFGaWxlUGF0aEJ5RmlsZU5hbWVPclVuZGVmaW5lZCIsImdldEFsbEZvcm1QcmVzZW50YXRpb25zIiwiZ2V0QWxsUHJlc2VudGF0aW9uc0ZpbGVOYW1lcyIsImdldEZvcm1QcmVzZW50YXRpb25zIiwiZ2Z2IiwiZ2V0UHJlc2VudGF0aW9uc0ZpbGVQYXRoQnlHZnZPclVuZGVmaW5lZCIsImdldEFsbE5vcm1hbGl6ZUZpbGVzIiwiZmlsZXMiLCJnZXRBbGxOb3JtYWxpemVGaWxlUGF0aHMiLCJmbGFuZ0ZpbGVzIiwiZ2V0QWxsTm9ybWFsaXphdGlvbkZpbGVOYW1lcyIsImdldE5vcm1hbGl6ZUZpbGUiLCJnZXROb3JtYWxpemVGaWxlUGF0aEJ5RmlsZU5hbWVPclVuZGVmaW5lZCIsImdldEZMYW5nTm9ybWFsaXplRmlsZSIsInN0cmVhbSIsImdldE5vcm1hbGl6YXRpb25GaWxlQ29udGVudCIsIlN0cmVhbVJlc3VsdCIsImdldEFsbEF0dGFjaG1lbnRQYXRoc0ZpbGVOYW1lcyIsImdldEFsbEF0dGFjaG1lbnRQYXRoRmlsZU5hbWVzIiwiZ2V0QXR0YWNobWVudFBhdGhGaWxlIiwiZ2V0QXR0YWNobWVudFBhdGhzRmlsZUNvbnRlbnQiLCJnZXRBbGxVbm1hcEZpbGVzIiwiZ2V0QWxsVW5tYXBGaWxlUGF0aHMiLCJnZXRVbm1hcEZpbGUiLCJnZXRVbm1hcEZpbGVQYXRoQnlGaWxlTmFtZU9yVW5kZWZpbmVkIiwiZ2V0QWxsTWFwRmlsZXMiLCJnZXRBbGxNYXBGaWxlUGF0aHMiLCJnZXRNYXBGaWxlIiwiZ2V0TWFwRmlsZVBhdGhCeUZpbGVOYW1lT3JVbmRlZmluZWQiLCJnZXRBbGxQYXRjaEZpbGVzIiwiZ2V0QWxsUGF0Y2hGaWxlUGF0aHMiLCJnZXRQYXRjaEZpbGUiLCJnZXRQYXRjaEZpbGVQYXRoQnlGaWxlTmFtZU9yVW5kZWZpbmVkIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcjIiLCJwcm90b3R5cGUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvQ0xJQ29tbWFuZHMvQnVpbGRTZXJ2ZXIvUmVzb3VyY2VzQ29udHJvbGxlcnMvQnVpbGRTZXJ2ZXJCYWNrZW5kUmVzb3VyY2VzQ29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVSZWFkU3RyZWFtLCBSZWFkU3RyZWFtIH0gZnJvbSBcImZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IHBhdGhFeGlzdHMgfSBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCBfLCB7IGRlYm91bmNlIH0gZnJvbSBcImxvZGFzaFwiO1xuaW1wb3J0IHsgRmFybUNvbmZpZyB9IGZyb20gXCJUb29scy9zcmMvQ2FuZHlDTElcIjtcblxuaW1wb3J0IHsgaHR0cEdldCB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9NZXRob2RzXCI7XG5pbXBvcnQgeyBOb3RGb3VuZFdlYkVycm9yIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL05vdEZvdW5kV2ViRXJyb3JcIjtcbmltcG9ydCB7IGh0dHBUeXBlLCBodHRwVXJsUGFyYW0gfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUGFyYW1zXCI7XG5pbXBvcnQgeyBodHRwUmV0dXJuIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1Jlc3VsdHNcIjtcbmltcG9ydCB7XG4gICAgRmlsZVN0cmVhbVJlc3VsdCxcbiAgICBTdHJlYW1SZXN1bHQsXG59IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9SZXN1bHRzL1N0cmVhbVJlc3VsdEhhbmRsZXJcIjtcbmltcG9ydCB7IFNpbmdsZXRvbkNvbnRyb2xsZXIgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0V4cHJlc3NXcmFwcGVyL1NpbmdsZXRvbkNvbnRyb2xsZXJcIjtcblxuaW1wb3J0IHsgSUdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIgfSBmcm9tIFwiLi9JR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlclwiO1xuaW1wb3J0IHsgRmFybURpcmVjdG9yeSB9IGZyb20gXCIuL0RpcmVjdG9yaWVzL0Zhcm1EaXJlY3RvcnlcIjtcblxuZXhwb3J0IGNsYXNzIEJ1aWxkU2VydmVyQmFja2VuZFJlc291cmNlc0NvbnRyb2xsZXIgZXh0ZW5kcyBTaW5nbGV0b25Db250cm9sbGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXI6IElHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyO1xuICAgIHByaXZhdGUgYWxsU2NoZW1hc0ZpbGVzOiB1bmRlZmluZWQgfCBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSByZXNldEFsbFNjaGVtYUZpbGVzRGVib3VuY2VkOiAoKSA9PiB2b2lkO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsRmFybURpcmVjdG9yaWVzOiBGYXJtRGlyZWN0b3J5W107XG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGxGYXJtQ29uZmlnOiBGYXJtQ29uZmlnW107XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIGFsbEZhcm1Db25maWc6IEZhcm1Db25maWdbXSxcbiAgICAgICAgZmxhbmdOb3JtYWxpemF0aW9uU291cmNlc1Byb3ZpZGVyOiBJR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlclxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIgPSBmbGFuZ05vcm1hbGl6YXRpb25Tb3VyY2VzUHJvdmlkZXI7XG4gICAgICAgIHRoaXMuYWxsRmFybUNvbmZpZyA9IGFsbEZhcm1Db25maWc7XG4gICAgICAgIHRoaXMuYWxsRmFybURpcmVjdG9yaWVzID0gYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBuZXcgRmFybURpcmVjdG9yeShpLmZhcm1EaXJlY3RvcnkpKTtcbiAgICAgICAgdGhpcy5yZXNldEFsbFNjaGVtYUZpbGVzRGVib3VuY2VkID0gZGVib3VuY2UoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hbGxTY2hlbWFzRmlsZXMgPSB1bmRlZmluZWQ7XG4gICAgICAgIH0sIDUwMDApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL2dmdnNcIiwgaHR0cFJldHVybi5Kc29uKVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxHZnZzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmFsbEZhcm1EaXJlY3Rvcmllcy5tYXAoeCA9PiB4LmdldEFsbEdmdnMoKSkpKS5mbGF0KCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvcGlja2xpc3RzXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxQaWNrbGlzdHMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmFsbEZhcm1EaXJlY3Rvcmllcy5tYXAoeCA9PiB4LmdldEFsbFBpY2tsaXN0cygpKSkpLmZsYXQoKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFxuICAgICAgICBcIi9waWNrbGlzdHMvOnBpY2tsaXN0RmlsZW5hbWVcIixcbiAgICAgICAgaHR0cFJldHVybi5TdHJlYW1XaXRoTWltZShcImFwcGxpY2F0aW9uL2pzb25cIiksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcInBpY2tsaXN0RmlsZW5hbWVcIiwgaHR0cFR5cGUuU3RyaW5nKVxuICAgIClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0UGlja2xpc3RzKHBpY2tsaXN0RmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8UmVhZFN0cmVhbT4ge1xuICAgICAgICBjb25zdCBhbGxGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5LCBcInBpY2tsaXN0c1wiLCBwaWNrbGlzdEZpbGVuYW1lKSk7XG4gICAgICAgIGZvciAoY29uc3QgcGF0aEZpbGUgb2YgYWxsRmlsZVBhdGgpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKHBhdGhGaWxlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZWFkU3RyZWFtKHBhdGhGaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBFcnJvcihgbm90IGZvdW5kIHBpY2tsaXN0RmlsZW5hbWUgJHtwaWNrbGlzdEZpbGVuYW1lfWApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL2NvbnZlcnRlcnNcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbENvbnZlcnRlcnNGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gKGF3YWl0IFByb21pc2UuYWxsKHRoaXMuYWxsRmFybURpcmVjdG9yaWVzLmZsYXRNYXAoeCA9PiB4LmdldEFsbENvbnZlcnRlckZpbGVQYXRocygpKSkpXG4gICAgICAgICAgICAuZmxhdCgpXG4gICAgICAgICAgICAubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSlcbiAgICAgICAgICAgIC5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL2NvbnZlcnRlcnMvOmZpbGVuYW1lXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJmaWxlbmFtZVwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRDb252ZXJ0ZXJGaWxlKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgZm9yIChjb25zdCBmYXJtRGlyZWN0b3J5IG9mIHRoaXMuYWxsRmFybURpcmVjdG9yaWVzKSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlUGF0aCA9IGF3YWl0IGZhcm1EaXJlY3RvcnkuZ2V0Q29udmVydGVyRmlsZVBhdGhCeUZpbGVOYW1lT3JVbmRlZmluZWQoZmlsZW5hbWUpO1xuICAgICAgICAgICAgaWYgKGZpbGVQYXRoICE9IG51bGwgJiYgKGF3YWl0IHBhdGhFeGlzdHMoZmlsZVBhdGgpKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChmaWxlUGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRXZWJFcnJvcihcIkZpbGUgbm90IGZvdW5kXCIsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9tZXJnZXJzXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxNZXJnZXJzRmlsZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmFsbEZhcm1EaXJlY3Rvcmllcy5mbGF0TWFwKHggPT4geC5nZXRBbGxNZXJnZXJzRmlsZVBhdGhzKCkpKSlcbiAgICAgICAgICAgIC5mbGF0KClcbiAgICAgICAgICAgIC5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKVxuICAgICAgICAgICAgLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvbWVyZ2Vycy86ZmlsZW5hbWVcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImZpbGVuYW1lXCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldE1lcmdlckZpbGUoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBmb3IgKGNvbnN0IGZhcm1EaXJlY3Rvcnkgb2YgdGhpcy5hbGxGYXJtRGlyZWN0b3JpZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVQYXRoID0gYXdhaXQgZmFybURpcmVjdG9yeS5nZXRNZXJnZXJzRmlsZVBhdGhCeUZpbGVOYW1lT3JVbmRlZmluZWQoZmlsZW5hbWUpO1xuICAgICAgICAgICAgaWYgKGZpbGVQYXRoICE9IG51bGwgJiYgKGF3YWl0IHBhdGhFeGlzdHMoZmlsZVBhdGgpKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChmaWxlUGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRXZWJFcnJvcihcIkZpbGUgbm90IGZvdW5kXCIsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9zY2hlbWFzXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxTY2hlbWFzRmlsZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgaWYgKHRoaXMuYWxsU2NoZW1hc0ZpbGVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYWxsU2NoZW1hc0ZpbGVzID0gKGF3YWl0IFByb21pc2UuYWxsKHRoaXMuYWxsRmFybURpcmVjdG9yaWVzLmZsYXRNYXAoeCA9PiB4LmdldEFsbFNjaGVtYXNGaWxlUGF0aHMoKSkpKVxuICAgICAgICAgICAgICAgIC5mbGF0KClcbiAgICAgICAgICAgICAgICAubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSlcbiAgICAgICAgICAgICAgICAuam9pbihcIlxcblwiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlc2V0QWxsU2NoZW1hRmlsZXNEZWJvdW5jZWQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxsU2NoZW1hc0ZpbGVzO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3NjaGVtYXMvOmZpbGVuYW1lXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJmaWxlbmFtZVwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtU2NoZW1hcyhmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGZvciAoY29uc3QgZmFybURpcmVjdG9yeSBvZiB0aGlzLmFsbEZhcm1EaXJlY3Rvcmllcykge1xuICAgICAgICAgICAgY29uc3QgZmlsZVBhdGggPSBhd2FpdCBmYXJtRGlyZWN0b3J5LmdldFNjaGVtYUZpbGVQYXRoQnlGaWxlTmFtZU9yVW5kZWZpbmVkKGZpbGVuYW1lKTtcbiAgICAgICAgICAgIGlmIChmaWxlUGF0aCAhPSBudWxsICYmIChhd2FpdCBwYXRoRXhpc3RzKGZpbGVQYXRoKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQoZmlsZVBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kV2ViRXJyb3IoXCJGaWxlIG5vdCBmb3VuZFwiLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvcHJlc2VudGF0aW9uc1wiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsRm9ybVByZXNlbnRhdGlvbnMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmFsbEZhcm1EaXJlY3Rvcmllcy5mbGF0TWFwKHggPT4geC5nZXRBbGxQcmVzZW50YXRpb25zRmlsZU5hbWVzKCkpKSlcbiAgICAgICAgICAgIC5mbGF0KClcbiAgICAgICAgICAgIC5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKVxuICAgICAgICAgICAgLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvcHJlc2VudGF0aW9ucy86Z2Z2LnByZXNlbnRhdGlvbnMuanNvblwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldEZvcm1QcmVzZW50YXRpb25zKGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGZvciAoY29uc3QgZmFybURpcmVjdG9yeSBvZiB0aGlzLmFsbEZhcm1EaXJlY3Rvcmllcykge1xuICAgICAgICAgICAgY29uc3QgZmlsZVBhdGggPSBhd2FpdCBmYXJtRGlyZWN0b3J5LmdldFByZXNlbnRhdGlvbnNGaWxlUGF0aEJ5R2Z2T3JVbmRlZmluZWQoZ2Z2KTtcbiAgICAgICAgICAgIGlmIChmaWxlUGF0aCAhPSBudWxsICYmIChhd2FpdCBwYXRoRXhpc3RzKGZpbGVQYXRoKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQoZmlsZVBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kV2ViRXJyb3IoXCJGaWxlIG5vdCBmb3VuZFwiLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvbm9ybWFsaXplXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxOb3JtYWxpemVGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmFsbEZhcm1EaXJlY3Rvcmllcy5mbGF0TWFwKHggPT4geC5nZXRBbGxOb3JtYWxpemVGaWxlUGF0aHMoKSkpKS5mbGF0KCk7XG4gICAgICAgIGNvbnN0IGZsYW5nRmlsZXMgPSBhd2FpdCB0aGlzLmdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIuZ2V0QWxsTm9ybWFsaXphdGlvbkZpbGVOYW1lcygpO1xuICAgICAgICByZXR1cm4gWy4uLmZpbGVzLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpLCAuLi5mbGFuZ0ZpbGVzXS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL25vcm1hbGl6ZS86Z2Z2LnhtbFwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldE5vcm1hbGl6ZUZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgZm9yIChjb25zdCBmYXJtRGlyZWN0b3J5IG9mIHRoaXMuYWxsRmFybURpcmVjdG9yaWVzKSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlUGF0aCA9IGF3YWl0IGZhcm1EaXJlY3RvcnkuZ2V0Tm9ybWFsaXplRmlsZVBhdGhCeUZpbGVOYW1lT3JVbmRlZmluZWQoYCR7Z2Z2fS54bWxgKTtcbiAgICAgICAgICAgIGlmIChmaWxlUGF0aCAhPSBudWxsICYmIChhd2FpdCBwYXRoRXhpc3RzKGZpbGVQYXRoKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQoZmlsZVBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kV2ViRXJyb3IoXCJGaWxlIG5vdCBmb3VuZFwiLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvbm9ybWFsaXplLzpnZnYubm9ybWFsaXplXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RkxhbmdOb3JtYWxpemVGaWxlKGdmdjogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgdGhpcy5nZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyLmdldE5vcm1hbGl6YXRpb25GaWxlQ29udGVudChnZnYpO1xuICAgICAgICBpZiAoc3RyZWFtID09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZFdlYkVycm9yKFwiRmlsZSBub3QgZm91bmRcIiwgZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW1SZXN1bHQoc3RyZWFtKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9hdHRhY2htZW50cGF0aHNcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbEF0dGFjaG1lbnRQYXRoc0ZpbGVOYW1lcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBmbGFuZ0ZpbGVzID0gYXdhaXQgdGhpcy5nZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyLmdldEFsbEF0dGFjaG1lbnRQYXRoRmlsZU5hbWVzKCk7XG4gICAgICAgIHJldHVybiBmbGFuZ0ZpbGVzLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvYXR0YWNobWVudHBhdGhzLzpnZnYuanNvblwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldEF0dGFjaG1lbnRQYXRoRmlsZShnZnY6IHN0cmluZyk6IFByb21pc2U8U3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiBuZXcgU3RyZWFtUmVzdWx0KGF3YWl0IHRoaXMuZ2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlci5nZXRBdHRhY2htZW50UGF0aHNGaWxlQ29udGVudChnZnYpKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi91bm1hcFwiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsVW5tYXBGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gKGF3YWl0IFByb21pc2UuYWxsKHRoaXMuYWxsRmFybURpcmVjdG9yaWVzLmZsYXRNYXAoeCA9PiB4LmdldEFsbFVubWFwRmlsZVBhdGhzKCkpKSlcbiAgICAgICAgICAgIC5mbGF0KClcbiAgICAgICAgICAgIC5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKVxuICAgICAgICAgICAgLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvdW5tYXAvOmZpbGVuYW1lXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJmaWxlbmFtZVwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRVbm1hcEZpbGUoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBmb3IgKGNvbnN0IGZhcm1EaXJlY3Rvcnkgb2YgdGhpcy5hbGxGYXJtRGlyZWN0b3JpZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVQYXRoID0gYXdhaXQgZmFybURpcmVjdG9yeS5nZXRVbm1hcEZpbGVQYXRoQnlGaWxlTmFtZU9yVW5kZWZpbmVkKGZpbGVuYW1lKTtcbiAgICAgICAgICAgIGlmIChmaWxlUGF0aCAhPSBudWxsICYmIChhd2FpdCBwYXRoRXhpc3RzKGZpbGVQYXRoKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQoZmlsZVBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kV2ViRXJyb3IoXCJGaWxlIG5vdCBmb3VuZFwiLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvbWFwXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxNYXBGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gKGF3YWl0IFByb21pc2UuYWxsKHRoaXMuYWxsRmFybURpcmVjdG9yaWVzLmZsYXRNYXAoeCA9PiB4LmdldEFsbE1hcEZpbGVQYXRocygpKSkpXG4gICAgICAgICAgICAuZmxhdCgpXG4gICAgICAgICAgICAubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSlcbiAgICAgICAgICAgIC5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL21hcC86ZmlsZW5hbWVcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImZpbGVuYW1lXCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldE1hcEZpbGUoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBmb3IgKGNvbnN0IGZhcm1EaXJlY3Rvcnkgb2YgdGhpcy5hbGxGYXJtRGlyZWN0b3JpZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVQYXRoID0gYXdhaXQgZmFybURpcmVjdG9yeS5nZXRNYXBGaWxlUGF0aEJ5RmlsZU5hbWVPclVuZGVmaW5lZChmaWxlbmFtZSk7XG4gICAgICAgICAgICBpZiAoZmlsZVBhdGggIT0gbnVsbCAmJiAoYXdhaXQgcGF0aEV4aXN0cyhmaWxlUGF0aCkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KGZpbGVQYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZFdlYkVycm9yKFwiRmlsZSBub3QgZm91bmRcIiwgZmFsc2UpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3BhdGNoXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxQYXRjaEZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5hbGxGYXJtRGlyZWN0b3JpZXMuZmxhdE1hcCh4ID0+IHguZ2V0QWxsUGF0Y2hGaWxlUGF0aHMoKSkpKVxuICAgICAgICAgICAgLmZsYXQoKVxuICAgICAgICAgICAgLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpXG4gICAgICAgICAgICAuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9wYXRjaC86ZmlsZW5hbWVcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRQYXRjaEZpbGUoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBmb3IgKGNvbnN0IGZhcm1EaXJlY3Rvcnkgb2YgdGhpcy5hbGxGYXJtRGlyZWN0b3JpZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVQYXRoID0gYXdhaXQgZmFybURpcmVjdG9yeS5nZXRQYXRjaEZpbGVQYXRoQnlGaWxlTmFtZU9yVW5kZWZpbmVkKGZpbGVuYW1lKTtcbiAgICAgICAgICAgIGlmIChmaWxlUGF0aCAhPSBudWxsICYmIChhd2FpdCBwYXRoRXhpc3RzKGZpbGVQYXRoKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQoZmlsZVBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kV2ViRXJyb3IoXCJGaWxlIG5vdCBmb3VuZFwiLCBmYWxzZSk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLEdBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLElBQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFHLFFBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUosT0FBQTtBQUdBLElBQUFLLFFBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLGlCQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxPQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxRQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxvQkFBQSxHQUFBVCxPQUFBO0FBSUEsSUFBQVUsb0JBQUEsR0FBQVYsT0FBQTtBQUdBLElBQUFXLGNBQUEsR0FBQVgsT0FBQTtBQUE0RCxJQUFBWSxJQUFBLEVBQUFDLEtBQUEsRUFBQUMsS0FBQSxFQUFBQyxLQUFBLEVBQUFDLEtBQUEsRUFBQUMsS0FBQSxFQUFBQyxLQUFBLEVBQUFDLEtBQUEsRUFBQUMsS0FBQSxFQUFBQyxNQUFBLEVBQUFDLE1BQUEsRUFBQUMsTUFBQSxF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QSx1QkFBQWhJLEtBQUEsR0FBQStCLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWYsTUFBQSxDQUFBOEcsU0FBQSx1QkFBQTlHLE1BQUEsQ0FBQThHLFNBQUEsT0FBQUQsMEJBQUEsQ0FBQXRHLE9BQUEsRUFBQVAsTUFBQSxDQUFBOEcsU0FBQSx5QkFBQS9ILEtBQUEsR0FBQThCLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWYsTUFBQSxDQUFBOEcsU0FBQSx5QkFBQTlHLE1BQUEsQ0FBQThHLFNBQUEsT0FBQUQsMEJBQUEsQ0FBQXRHLE9BQUEsRUFBQVAsTUFBQSxDQUFBOEcsU0FBQSxvQkFBQTlILEtBQUEsR0FBQTZCLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWYsTUFBQSxDQUFBOEcsU0FBQSxvQkFBQTlHLE1BQUEsQ0FBQThHLFNBQUEsT0FBQUQsMEJBQUEsQ0FBQXRHLE9BQUEsRUFBQVAsTUFBQSxDQUFBOEcsU0FBQSx5QkFBQTdILEtBQUEsR0FBQTRCLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWYsTUFBQSxDQUFBOEcsU0FBQSx5QkFBQTlHLE1BQUEsQ0FBQThHLFNBQUEsT0FBQUQsMEJBQUEsQ0FBQXRHLE9BQUEsRUFBQVAsTUFBQSxDQUFBOEcsU0FBQSxxQkFBQTVILEtBQUEsR0FBQTJCLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWYsTUFBQSxDQUFBOEcsU0FBQSxxQkFBQTlHLE1BQUEsQ0FBQThHLFNBQUEsT0FBQUQsMEJBQUEsQ0FBQXRHLE9BQUEsRUFBQVAsTUFBQSxDQUFBOEcsU0FBQSw4QkFBQTNILE1BQUEsR0FBQTBCLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWYsTUFBQSxDQUFBOEcsU0FBQSw4QkFBQTlHLE1BQUEsQ0FBQThHLFNBQUEsT0FBQUQsMEJBQUEsQ0FBQXRHLE9BQUEsRUFBQVAsTUFBQSxDQUFBOEcsU0FBQSwyQkFBQTFILE1BQUEsR0FBQXlCLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWYsTUFBQSxDQUFBOEcsU0FBQSwyQkFBQTlHLE1BQUEsQ0FBQThHLFNBQUEsT0FBQUQsMEJBQUEsQ0FBQXRHLE9BQUEsRUFBQVAsTUFBQSxDQUFBOEcsU0FBQSwyQkFBQXpILE1BQUEsR0FBQXdCLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWYsTUFBQSxDQUFBOEcsU0FBQSwyQkFBQTlHLE1BQUEsQ0FBQThHLFNBQUEsT0FBQUQsMEJBQUEsQ0FBQXRHLE9BQUEsRUFBQVAsTUFBQSxDQUFBOEcsU0FBQSx1QkFBQXhILE1BQUEsR0FBQXVCLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWYsTUFBQSxDQUFBOEcsU0FBQSx1QkFBQTlHLE1BQUEsQ0FBQThHLFNBQUEsT0FBQUQsMEJBQUEsQ0FBQXRHLE9BQUEsRUFBQVAsTUFBQSxDQUFBOEcsU0FBQSw0QkFBQXZILE1BQUEsR0FBQXNCLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWYsTUFBQSxDQUFBOEcsU0FBQSw0QkFBQTlHLE1BQUEsQ0FBQThHLFNBQUEsT0FBQUQsMEJBQUEsQ0FBQXRHLE9BQUEsRUFBQVAsTUFBQSxDQUFBOEcsU0FBQSxxQ0FBQXRILE1BQUEsR0FBQXFCLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWYsTUFBQSxDQUFBOEcsU0FBQSxxQ0FBQTlHLE1BQUEsQ0FBQThHLFNBQUEsT0FBQUQsMEJBQUEsQ0FBQXRHLE9BQUEsRUFBQVAsTUFBQSxDQUFBOEcsU0FBQSw0QkFBQXJILE1BQUEsR0FBQW9CLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWYsTUFBQSxDQUFBOEcsU0FBQSw0QkFBQTlHLE1BQUEsQ0FBQThHLFNBQUEsT0FBQUQsMEJBQUEsQ0FBQXRHLE9BQUEsRUFBQVAsTUFBQSxDQUFBOEcsU0FBQSx1QkFBQXBILE1BQUEsR0FBQW1CLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWYsTUFBQSxDQUFBOEcsU0FBQSx1QkFBQTlHLE1BQUEsQ0FBQThHLFNBQUEsT0FBQUQsMEJBQUEsQ0FBQXRHLE9BQUEsRUFBQVAsTUFBQSxDQUFBOEcsU0FBQSxtQkFBQW5ILE1BQUEsR0FBQWtCLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWYsTUFBQSxDQUFBOEcsU0FBQSxtQkFBQTlHLE1BQUEsQ0FBQThHLFNBQUEsT0FBQUQsMEJBQUEsQ0FBQXRHLE9BQUEsRUFBQVAsTUFBQSxDQUFBOEcsU0FBQSxxQkFBQWxILE1BQUEsR0FBQWlCLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWYsTUFBQSxDQUFBOEcsU0FBQSxxQkFBQTlHLE1BQUEsQ0FBQThHLFNBQUEsT0FBQUQsMEJBQUEsQ0FBQXRHLE9BQUEsRUFBQVAsTUFBQSxDQUFBOEcsU0FBQSxpQkFBQWpILE1BQUEsR0FBQWdCLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWYsTUFBQSxDQUFBOEcsU0FBQSxpQkFBQTlHLE1BQUEsQ0FBQThHLFNBQUEsT0FBQUQsMEJBQUEsQ0FBQXRHLE9BQUEsRUFBQVAsTUFBQSxDQUFBOEcsU0FBQSx1QkFBQWhILE1BQUEsR0FBQWUsTUFBQSxDQUFBRSx3QkFBQSxDQUFBZixNQUFBLENBQUE4RyxTQUFBLHVCQUFBOUcsTUFBQSxDQUFBOEcsU0FBQSxPQUFBRCwwQkFBQSxDQUFBdEcsT0FBQSxFQUFBUCxNQUFBLENBQUE4RyxTQUFBLG1CQUFBL0csTUFBQSxHQUFBYyxNQUFBLENBQUFFLHdCQUFBLENBQUFmLE1BQUEsQ0FBQThHLFNBQUEsbUJBQUE5RyxNQUFBLENBQUE4RyxTQUFBLElBQUE5RyxNQUFBIiwiaWdub3JlTGlzdCI6W119
@@ -1 +1 @@
1
- {"version":3,"file":"BuildServerBackendResourcesController.js","names":["_fs","require","path","_interopRequireWildcard","_fsExtra","_lodash","_Methods","_NotFoundWebError","_Params","_Results","_StreamResultHandler","_SingletonController","_FarmDirectory","_dec","_dec2","_dec3","_dec4","_dec5","_dec6","_dec7","_dec8","_dec9","_dec10","_dec11","_dec12","_dec13","_dec14","_dec15","_dec16","_dec17","_dec18","_dec19","_dec20","_dec21","_dec22","_class","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","BuildServerBackendResourcesController","exports","httpGet","httpReturn","Json","PlainText","StreamWithMime","httpUrlParam","httpType","String","Stream","SingletonController","constructor","allFarmConfig","flangNormalizationSourcesProvider","generatedServerSideSourcesProvider","allSchemasFiles","resetAllSchemaFilesDebounced","allFarmDirectories","map","FarmDirectory","farmDirectory","debounce","undefined","getAllGfvs","Promise","all","x","flat","getAllPicklists","join","getPicklists","picklistFilename","allFilePath","pathFile","pathExists","createReadStream","Error","getAllConvertersFiles","flatMap","getAllConverterFilePaths","basename","getConverterFile","filename","filePath","getConverterFilePathByFileNameOrUndefined","FileStreamResult","NotFoundWebError","getAllMergersFiles","getAllMergersFilePaths","getMergerFile","getMergersFilePathByFileNameOrUndefined","getAllSchemasFiles","getAllSchemasFilePaths","getFormSchemas","getSchemaFilePathByFileNameOrUndefined","getAllFormPresentations","getAllPresentationsFileNames","getFormPresentations","gfv","getPresentationsFilePathByGfvOrUndefined","getAllNormalizeFiles","files","getAllNormalizeFilePaths","flangFiles","getAllNormalizationFileNames","getNormalizeFile","getNormalizeFilePathByFileNameOrUndefined","getFLangNormalizeFile","StreamResult","getNormalizationFileContent","getAllAttachmentPathsFileNames","getAllAttachmentPathFileNames","getAttachmentPathFile","getAttachmentPathsFileContent","getAllUnmapFiles","getAllUnmapFilePaths","getUnmapFile","getUnmapFilePathByFileNameOrUndefined","getAllMapFiles","getAllMapFilePaths","getMapFile","getMapFilePathByFileNameOrUndefined","getAllPatchFiles","getAllPatchFilePaths","getPatchFile","getPatchFilePathByFileNameOrUndefined","_applyDecoratedDescriptor2","prototype"],"sources":["../../../../../../src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.ts"],"sourcesContent":["import { createReadStream, ReadStream } from \"fs\";\nimport * as path from \"path\";\n\nimport { pathExists } from \"fs-extra\";\nimport _, { debounce } from \"lodash\";\nimport { FarmConfig } from \"Tools/src/CandyCLI\";\n\nimport { httpGet } from \"../../../Commons/HttpServer/AttributeRouting/Methods\";\nimport { NotFoundWebError } from \"../../../Commons/HttpServer/AttributeRouting/NotFoundWebError\";\nimport { httpType, httpUrlParam } from \"../../../Commons/HttpServer/AttributeRouting/Params\";\nimport { httpReturn } from \"../../../Commons/HttpServer/AttributeRouting/Results\";\nimport {\n FileStreamResult,\n StreamResult,\n} from \"../../../Commons/HttpServer/AttributeRouting/Results/StreamResultHandler\";\nimport { SingletonController } from \"../../../Commons/HttpServer/ExpressWrapper/SingletonController\";\n\nimport { IGeneratedServerSideSourcesProvider } from \"./IGeneratedServerSideSourcesProvider\";\nimport { FarmDirectory } from \"./Directories/FarmDirectory\";\n\nexport class BuildServerBackendResourcesController extends SingletonController {\n private readonly generatedServerSideSourcesProvider: IGeneratedServerSideSourcesProvider;\n private allSchemasFiles: undefined | string;\n private readonly resetAllSchemaFilesDebounced: () => void;\n private readonly allFarmDirectories: FarmDirectory[];\n private readonly allFarmConfig: FarmConfig[];\n\n public constructor(\n allFarmConfig: FarmConfig[],\n flangNormalizationSourcesProvider: IGeneratedServerSideSourcesProvider\n ) {\n super();\n this.generatedServerSideSourcesProvider = flangNormalizationSourcesProvider;\n this.allFarmConfig = allFarmConfig;\n this.allFarmDirectories = allFarmConfig.map(i => new FarmDirectory(i.farmDirectory));\n this.resetAllSchemaFilesDebounced = debounce(() => {\n this.allSchemasFiles = undefined;\n }, 5000);\n }\n\n @httpGet(\"/gfvs\", httpReturn.Json)\n public async getAllGfvs(): Promise<string[]> {\n return (await Promise.all(this.allFarmDirectories.map(x => x.getAllGfvs()))).flat();\n }\n\n @httpGet(\"/picklists\", httpReturn.PlainText)\n public async getAllPicklists(): Promise<string> {\n return (await Promise.all(this.allFarmDirectories.map(x => x.getAllPicklists()))).flat().join(\"\\n\");\n }\n\n @httpGet(\n \"/picklists/:picklistFilename\",\n httpReturn.StreamWithMime(\"application/json\"),\n httpUrlParam(\"picklistFilename\", httpType.String)\n )\n public async getPicklists(picklistFilename: string): Promise<ReadStream> {\n const allFilePath = this.allFarmConfig.map(i => path.join(i.farmDirectory, \"picklists\", picklistFilename));\n for (const pathFile of allFilePath) {\n if (await pathExists(pathFile)) {\n return createReadStream(pathFile);\n }\n }\n throw Error(`not found picklistFilename ${picklistFilename}`);\n }\n\n @httpGet(\"/converters\", httpReturn.PlainText)\n public async getAllConvertersFiles(): Promise<string> {\n return (await Promise.all(this.allFarmDirectories.flatMap(x => x.getAllConverterFilePaths())))\n .flat()\n .map(x => path.basename(x))\n .join(\"\\n\");\n }\n\n @httpGet(\"/converters/:filename\", httpReturn.Stream, httpUrlParam(\"filename\", httpType.String))\n public async getConverterFile(filename: string): Promise<FileStreamResult> {\n for (const farmDirectory of this.allFarmDirectories) {\n const filePath = await farmDirectory.getConverterFilePathByFileNameOrUndefined(filename);\n if (filePath != null && (await pathExists(filePath))) {\n return new FileStreamResult(filePath);\n }\n }\n\n throw new NotFoundWebError(\"File not found\", false);\n }\n\n @httpGet(\"/mergers\", httpReturn.PlainText)\n public async getAllMergersFiles(): Promise<string> {\n return (await Promise.all(this.allFarmDirectories.flatMap(x => x.getAllMergersFilePaths())))\n .flat()\n .map(x => path.basename(x))\n .join(\"\\n\");\n }\n\n @httpGet(\"/mergers/:filename\", httpReturn.Stream, httpUrlParam(\"filename\", httpType.String))\n public async getMergerFile(filename: string): Promise<FileStreamResult> {\n for (const farmDirectory of this.allFarmDirectories) {\n const filePath = await farmDirectory.getMergersFilePathByFileNameOrUndefined(filename);\n if (filePath != null && (await pathExists(filePath))) {\n return new FileStreamResult(filePath);\n }\n }\n\n throw new NotFoundWebError(\"File not found\", false);\n }\n\n @httpGet(\"/schemas\", httpReturn.PlainText)\n public async getAllSchemasFiles(): Promise<string> {\n if (this.allSchemasFiles === undefined) {\n this.allSchemasFiles = (await Promise.all(this.allFarmDirectories.flatMap(x => x.getAllSchemasFilePaths())))\n .flat()\n .map(x => path.basename(x))\n .join(\"\\n\");\n }\n this.resetAllSchemaFilesDebounced();\n return this.allSchemasFiles;\n }\n\n @httpGet(\"/schemas/:filename\", httpReturn.Stream, httpUrlParam(\"filename\", httpType.String))\n public async getFormSchemas(filename: string): Promise<FileStreamResult> {\n for (const farmDirectory of this.allFarmDirectories) {\n const filePath = await farmDirectory.getSchemaFilePathByFileNameOrUndefined(filename);\n if (filePath != null && (await pathExists(filePath))) {\n return new FileStreamResult(filePath);\n }\n }\n\n throw new NotFoundWebError(\"File not found\", false);\n }\n\n @httpGet(\"/presentations\", httpReturn.PlainText)\n public async getAllFormPresentations(): Promise<string> {\n return (await Promise.all(this.allFarmDirectories.flatMap(x => x.getAllPresentationsFileNames())))\n .flat()\n .map(x => path.basename(x))\n .join(\"\\n\");\n }\n\n @httpGet(\"/presentations/:gfv.presentations.json\", httpReturn.Stream, httpUrlParam(\"gfv\", httpType.String))\n public async getFormPresentations(gfv: string): Promise<FileStreamResult> {\n for (const farmDirectory of this.allFarmDirectories) {\n const filePath = await farmDirectory.getPresentationsFilePathByGfvOrUndefined(gfv);\n if (filePath != null && (await pathExists(filePath))) {\n return new FileStreamResult(filePath);\n }\n }\n\n throw new NotFoundWebError(\"File not found\", false);\n }\n\n @httpGet(\"/normalize\", httpReturn.PlainText)\n public async getAllNormalizeFiles(): Promise<string> {\n const files = (await Promise.all(this.allFarmDirectories.flatMap(x => x.getAllNormalizeFilePaths()))).flat();\n const flangFiles = await this.generatedServerSideSourcesProvider.getAllNormalizationFileNames();\n return [...files.map(x => path.basename(x)), ...flangFiles].join(\"\\n\");\n }\n\n @httpGet(\"/normalize/:gfv.xml\", httpReturn.Stream, httpUrlParam(\"gfv\", httpType.String))\n public async getNormalizeFile(gfv: string): Promise<FileStreamResult> {\n for (const farmDirectory of this.allFarmDirectories) {\n const filePath = await farmDirectory.getNormalizeFilePathByFileNameOrUndefined(`${gfv}.xml`);\n if (filePath != null && (await pathExists(filePath))) {\n return new FileStreamResult(filePath);\n }\n }\n\n throw new NotFoundWebError(\"File not found\", false);\n }\n\n @httpGet(\"/normalize/:gfv.normalize\", httpReturn.Stream, httpUrlParam(\"gfv\", httpType.String))\n public async getFLangNormalizeFile(gfv: string): Promise<StreamResult> {\n return new StreamResult(await this.generatedServerSideSourcesProvider.getNormalizationFileContent(gfv));\n }\n\n @httpGet(\"/attachmentpaths\", httpReturn.PlainText)\n public async getAllAttachmentPathsFileNames(): Promise<string> {\n const flangFiles = await this.generatedServerSideSourcesProvider.getAllAttachmentPathFileNames();\n return flangFiles.join(\"\\n\");\n }\n\n @httpGet(\"/attachmentpaths/:gfv.json\", httpReturn.Stream, httpUrlParam(\"gfv\", httpType.String))\n public async getAttachmentPathFile(gfv: string): Promise<StreamResult> {\n return new StreamResult(await this.generatedServerSideSourcesProvider.getAttachmentPathsFileContent(gfv));\n }\n\n @httpGet(\"/unmap\", httpReturn.PlainText)\n public async getAllUnmapFiles(): Promise<string> {\n return (await Promise.all(this.allFarmDirectories.flatMap(x => x.getAllUnmapFilePaths())))\n .flat()\n .map(x => path.basename(x))\n .join(\"\\n\");\n }\n\n @httpGet(\"/unmap/:filename\", httpReturn.Stream, httpUrlParam(\"filename\", httpType.String))\n public async getUnmapFile(filename: string): Promise<FileStreamResult> {\n for (const farmDirectory of this.allFarmDirectories) {\n const filePath = await farmDirectory.getUnmapFilePathByFileNameOrUndefined(filename);\n if (filePath != null && (await pathExists(filePath))) {\n return new FileStreamResult(filePath);\n }\n }\n\n throw new NotFoundWebError(\"File not found\", false);\n }\n\n @httpGet(\"/map\", httpReturn.PlainText)\n public async getAllMapFiles(): Promise<string> {\n return (await Promise.all(this.allFarmDirectories.flatMap(x => x.getAllMapFilePaths())))\n .flat()\n .map(x => path.basename(x))\n .join(\"\\n\");\n }\n\n @httpGet(\"/map/:filename\", httpReturn.Stream, httpUrlParam(\"filename\", httpType.String))\n public async getMapFile(filename: string): Promise<FileStreamResult> {\n for (const farmDirectory of this.allFarmDirectories) {\n const filePath = await farmDirectory.getMapFilePathByFileNameOrUndefined(filename);\n if (filePath != null && (await pathExists(filePath))) {\n return new FileStreamResult(filePath);\n }\n }\n\n throw new NotFoundWebError(\"File not found\", false);\n }\n\n @httpGet(\"/patch\", httpReturn.PlainText)\n public async getAllPatchFiles(): Promise<string> {\n return (await Promise.all(this.allFarmDirectories.flatMap(x => x.getAllPatchFilePaths())))\n .flat()\n .map(x => path.basename(x))\n .join(\"\\n\");\n }\n\n @httpGet(\"/patch/:filename\", httpReturn.Stream, httpUrlParam(\"gfv\", httpType.String))\n public async getPatchFile(filename: string): Promise<FileStreamResult> {\n for (const farmDirectory of this.allFarmDirectories) {\n const filePath = await farmDirectory.getPatchFilePathByFileNameOrUndefined(filename);\n if (filePath != null && (await pathExists(filePath))) {\n return new FileStreamResult(filePath);\n }\n }\n\n throw new NotFoundWebError(\"File not found\", false);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"BuildServerBackendResourcesController.js","names":["_fs","require","path","_interopRequireWildcard","_fsExtra","_lodash","_Methods","_NotFoundWebError","_Params","_Results","_StreamResultHandler","_SingletonController","_FarmDirectory","_dec","_dec2","_dec3","_dec4","_dec5","_dec6","_dec7","_dec8","_dec9","_dec10","_dec11","_dec12","_dec13","_dec14","_dec15","_dec16","_dec17","_dec18","_dec19","_dec20","_dec21","_dec22","_class","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","BuildServerBackendResourcesController","exports","httpGet","httpReturn","Json","PlainText","StreamWithMime","httpUrlParam","httpType","String","Stream","SingletonController","constructor","allFarmConfig","flangNormalizationSourcesProvider","generatedServerSideSourcesProvider","allSchemasFiles","resetAllSchemaFilesDebounced","allFarmDirectories","map","FarmDirectory","farmDirectory","debounce","undefined","getAllGfvs","Promise","all","x","flat","getAllPicklists","join","getPicklists","picklistFilename","allFilePath","pathFile","pathExists","createReadStream","Error","getAllConvertersFiles","flatMap","getAllConverterFilePaths","basename","getConverterFile","filename","filePath","getConverterFilePathByFileNameOrUndefined","FileStreamResult","NotFoundWebError","getAllMergersFiles","getAllMergersFilePaths","getMergerFile","getMergersFilePathByFileNameOrUndefined","getAllSchemasFiles","getAllSchemasFilePaths","getFormSchemas","getSchemaFilePathByFileNameOrUndefined","getAllFormPresentations","getAllPresentationsFileNames","getFormPresentations","gfv","getPresentationsFilePathByGfvOrUndefined","getAllNormalizeFiles","files","getAllNormalizeFilePaths","flangFiles","getAllNormalizationFileNames","getNormalizeFile","getNormalizeFilePathByFileNameOrUndefined","getFLangNormalizeFile","stream","getNormalizationFileContent","StreamResult","getAllAttachmentPathsFileNames","getAllAttachmentPathFileNames","getAttachmentPathFile","getAttachmentPathsFileContent","getAllUnmapFiles","getAllUnmapFilePaths","getUnmapFile","getUnmapFilePathByFileNameOrUndefined","getAllMapFiles","getAllMapFilePaths","getMapFile","getMapFilePathByFileNameOrUndefined","getAllPatchFiles","getAllPatchFilePaths","getPatchFile","getPatchFilePathByFileNameOrUndefined","_applyDecoratedDescriptor2","prototype"],"sources":["../../../../../../src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.ts"],"sourcesContent":["import { createReadStream, ReadStream } from \"fs\";\nimport * as path from \"path\";\n\nimport { pathExists } from \"fs-extra\";\nimport _, { debounce } from \"lodash\";\nimport { FarmConfig } from \"Tools/src/CandyCLI\";\n\nimport { httpGet } from \"../../../Commons/HttpServer/AttributeRouting/Methods\";\nimport { NotFoundWebError } from \"../../../Commons/HttpServer/AttributeRouting/NotFoundWebError\";\nimport { httpType, httpUrlParam } from \"../../../Commons/HttpServer/AttributeRouting/Params\";\nimport { httpReturn } from \"../../../Commons/HttpServer/AttributeRouting/Results\";\nimport {\n FileStreamResult,\n StreamResult,\n} from \"../../../Commons/HttpServer/AttributeRouting/Results/StreamResultHandler\";\nimport { SingletonController } from \"../../../Commons/HttpServer/ExpressWrapper/SingletonController\";\n\nimport { IGeneratedServerSideSourcesProvider } from \"./IGeneratedServerSideSourcesProvider\";\nimport { FarmDirectory } from \"./Directories/FarmDirectory\";\n\nexport class BuildServerBackendResourcesController extends SingletonController {\n private readonly generatedServerSideSourcesProvider: IGeneratedServerSideSourcesProvider;\n private allSchemasFiles: undefined | string;\n private readonly resetAllSchemaFilesDebounced: () => void;\n private readonly allFarmDirectories: FarmDirectory[];\n private readonly allFarmConfig: FarmConfig[];\n\n public constructor(\n allFarmConfig: FarmConfig[],\n flangNormalizationSourcesProvider: IGeneratedServerSideSourcesProvider\n ) {\n super();\n this.generatedServerSideSourcesProvider = flangNormalizationSourcesProvider;\n this.allFarmConfig = allFarmConfig;\n this.allFarmDirectories = allFarmConfig.map(i => new FarmDirectory(i.farmDirectory));\n this.resetAllSchemaFilesDebounced = debounce(() => {\n this.allSchemasFiles = undefined;\n }, 5000);\n }\n\n @httpGet(\"/gfvs\", httpReturn.Json)\n public async getAllGfvs(): Promise<string[]> {\n return (await Promise.all(this.allFarmDirectories.map(x => x.getAllGfvs()))).flat();\n }\n\n @httpGet(\"/picklists\", httpReturn.PlainText)\n public async getAllPicklists(): Promise<string> {\n return (await Promise.all(this.allFarmDirectories.map(x => x.getAllPicklists()))).flat().join(\"\\n\");\n }\n\n @httpGet(\n \"/picklists/:picklistFilename\",\n httpReturn.StreamWithMime(\"application/json\"),\n httpUrlParam(\"picklistFilename\", httpType.String)\n )\n public async getPicklists(picklistFilename: string): Promise<ReadStream> {\n const allFilePath = this.allFarmConfig.map(i => path.join(i.farmDirectory, \"picklists\", picklistFilename));\n for (const pathFile of allFilePath) {\n if (await pathExists(pathFile)) {\n return createReadStream(pathFile);\n }\n }\n throw Error(`not found picklistFilename ${picklistFilename}`);\n }\n\n @httpGet(\"/converters\", httpReturn.PlainText)\n public async getAllConvertersFiles(): Promise<string> {\n return (await Promise.all(this.allFarmDirectories.flatMap(x => x.getAllConverterFilePaths())))\n .flat()\n .map(x => path.basename(x))\n .join(\"\\n\");\n }\n\n @httpGet(\"/converters/:filename\", httpReturn.Stream, httpUrlParam(\"filename\", httpType.String))\n public async getConverterFile(filename: string): Promise<FileStreamResult> {\n for (const farmDirectory of this.allFarmDirectories) {\n const filePath = await farmDirectory.getConverterFilePathByFileNameOrUndefined(filename);\n if (filePath != null && (await pathExists(filePath))) {\n return new FileStreamResult(filePath);\n }\n }\n\n throw new NotFoundWebError(\"File not found\", false);\n }\n\n @httpGet(\"/mergers\", httpReturn.PlainText)\n public async getAllMergersFiles(): Promise<string> {\n return (await Promise.all(this.allFarmDirectories.flatMap(x => x.getAllMergersFilePaths())))\n .flat()\n .map(x => path.basename(x))\n .join(\"\\n\");\n }\n\n @httpGet(\"/mergers/:filename\", httpReturn.Stream, httpUrlParam(\"filename\", httpType.String))\n public async getMergerFile(filename: string): Promise<FileStreamResult> {\n for (const farmDirectory of this.allFarmDirectories) {\n const filePath = await farmDirectory.getMergersFilePathByFileNameOrUndefined(filename);\n if (filePath != null && (await pathExists(filePath))) {\n return new FileStreamResult(filePath);\n }\n }\n\n throw new NotFoundWebError(\"File not found\", false);\n }\n\n @httpGet(\"/schemas\", httpReturn.PlainText)\n public async getAllSchemasFiles(): Promise<string> {\n if (this.allSchemasFiles === undefined) {\n this.allSchemasFiles = (await Promise.all(this.allFarmDirectories.flatMap(x => x.getAllSchemasFilePaths())))\n .flat()\n .map(x => path.basename(x))\n .join(\"\\n\");\n }\n this.resetAllSchemaFilesDebounced();\n return this.allSchemasFiles;\n }\n\n @httpGet(\"/schemas/:filename\", httpReturn.Stream, httpUrlParam(\"filename\", httpType.String))\n public async getFormSchemas(filename: string): Promise<FileStreamResult> {\n for (const farmDirectory of this.allFarmDirectories) {\n const filePath = await farmDirectory.getSchemaFilePathByFileNameOrUndefined(filename);\n if (filePath != null && (await pathExists(filePath))) {\n return new FileStreamResult(filePath);\n }\n }\n\n throw new NotFoundWebError(\"File not found\", false);\n }\n\n @httpGet(\"/presentations\", httpReturn.PlainText)\n public async getAllFormPresentations(): Promise<string> {\n return (await Promise.all(this.allFarmDirectories.flatMap(x => x.getAllPresentationsFileNames())))\n .flat()\n .map(x => path.basename(x))\n .join(\"\\n\");\n }\n\n @httpGet(\"/presentations/:gfv.presentations.json\", httpReturn.Stream, httpUrlParam(\"gfv\", httpType.String))\n public async getFormPresentations(gfv: string): Promise<FileStreamResult> {\n for (const farmDirectory of this.allFarmDirectories) {\n const filePath = await farmDirectory.getPresentationsFilePathByGfvOrUndefined(gfv);\n if (filePath != null && (await pathExists(filePath))) {\n return new FileStreamResult(filePath);\n }\n }\n\n throw new NotFoundWebError(\"File not found\", false);\n }\n\n @httpGet(\"/normalize\", httpReturn.PlainText)\n public async getAllNormalizeFiles(): Promise<string> {\n const files = (await Promise.all(this.allFarmDirectories.flatMap(x => x.getAllNormalizeFilePaths()))).flat();\n const flangFiles = await this.generatedServerSideSourcesProvider.getAllNormalizationFileNames();\n return [...files.map(x => path.basename(x)), ...flangFiles].join(\"\\n\");\n }\n\n @httpGet(\"/normalize/:gfv.xml\", httpReturn.Stream, httpUrlParam(\"gfv\", httpType.String))\n public async getNormalizeFile(gfv: string): Promise<FileStreamResult> {\n for (const farmDirectory of this.allFarmDirectories) {\n const filePath = await farmDirectory.getNormalizeFilePathByFileNameOrUndefined(`${gfv}.xml`);\n if (filePath != null && (await pathExists(filePath))) {\n return new FileStreamResult(filePath);\n }\n }\n\n throw new NotFoundWebError(\"File not found\", false);\n }\n\n @httpGet(\"/normalize/:gfv.normalize\", httpReturn.Stream, httpUrlParam(\"gfv\", httpType.String))\n public async getFLangNormalizeFile(gfv: string): Promise<StreamResult> {\n const stream = await this.generatedServerSideSourcesProvider.getNormalizationFileContent(gfv);\n if (stream == null) {\n throw new NotFoundWebError(\"File not found\", false);\n }\n\n return new StreamResult(stream);\n }\n\n @httpGet(\"/attachmentpaths\", httpReturn.PlainText)\n public async getAllAttachmentPathsFileNames(): Promise<string> {\n const flangFiles = await this.generatedServerSideSourcesProvider.getAllAttachmentPathFileNames();\n return flangFiles.join(\"\\n\");\n }\n\n @httpGet(\"/attachmentpaths/:gfv.json\", httpReturn.Stream, httpUrlParam(\"gfv\", httpType.String))\n public async getAttachmentPathFile(gfv: string): Promise<StreamResult> {\n return new StreamResult(await this.generatedServerSideSourcesProvider.getAttachmentPathsFileContent(gfv));\n }\n\n @httpGet(\"/unmap\", httpReturn.PlainText)\n public async getAllUnmapFiles(): Promise<string> {\n return (await Promise.all(this.allFarmDirectories.flatMap(x => x.getAllUnmapFilePaths())))\n .flat()\n .map(x => path.basename(x))\n .join(\"\\n\");\n }\n\n @httpGet(\"/unmap/:filename\", httpReturn.Stream, httpUrlParam(\"filename\", httpType.String))\n public async getUnmapFile(filename: string): Promise<FileStreamResult> {\n for (const farmDirectory of this.allFarmDirectories) {\n const filePath = await farmDirectory.getUnmapFilePathByFileNameOrUndefined(filename);\n if (filePath != null && (await pathExists(filePath))) {\n return new FileStreamResult(filePath);\n }\n }\n\n throw new NotFoundWebError(\"File not found\", false);\n }\n\n @httpGet(\"/map\", httpReturn.PlainText)\n public async getAllMapFiles(): Promise<string> {\n return (await Promise.all(this.allFarmDirectories.flatMap(x => x.getAllMapFilePaths())))\n .flat()\n .map(x => path.basename(x))\n .join(\"\\n\");\n }\n\n @httpGet(\"/map/:filename\", httpReturn.Stream, httpUrlParam(\"filename\", httpType.String))\n public async getMapFile(filename: string): Promise<FileStreamResult> {\n for (const farmDirectory of this.allFarmDirectories) {\n const filePath = await farmDirectory.getMapFilePathByFileNameOrUndefined(filename);\n if (filePath != null && (await pathExists(filePath))) {\n return new FileStreamResult(filePath);\n }\n }\n\n throw new NotFoundWebError(\"File not found\", false);\n }\n\n @httpGet(\"/patch\", httpReturn.PlainText)\n public async getAllPatchFiles(): Promise<string> {\n return (await Promise.all(this.allFarmDirectories.flatMap(x => x.getAllPatchFilePaths())))\n .flat()\n .map(x => path.basename(x))\n .join(\"\\n\");\n }\n\n @httpGet(\"/patch/:filename\", httpReturn.Stream, httpUrlParam(\"gfv\", httpType.String))\n public async getPatchFile(filename: string): Promise<FileStreamResult> {\n for (const farmDirectory of this.allFarmDirectories) {\n const filePath = await farmDirectory.getPatchFilePathByFileNameOrUndefined(filename);\n if (filePath != null && (await pathExists(filePath))) {\n return new FileStreamResult(filePath);\n }\n }\n\n throw new NotFoundWebError(\"File not found\", false);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -101,6 +101,17 @@ let BuildServerBuildFormsController = exports.BuildServerBuildFormsController =
101
101
  return result;
102
102
  }
103
103
  async getNormalizationFileContent(gfv) {
104
+ var _formConfig$settings$2, _formConfig$settings2;
105
+ const gfvInfos = (await Promise.all(this.allFarmDirectory.map(i => i.getAllGfvWithLocations()))).flat();
106
+ const gfvInfo = gfvInfos.find(x => x.gfv === gfv);
107
+ if (gfvInfo == null) {
108
+ return null;
109
+ }
110
+ const formConfig = await (0, _ResolveFormInfo.readFormConfig)(path.join(gfvInfo.formPath, _WellKnownDirectories.WellKnownDirectories.FormJsonFileName), (0, _StaticLogger.getLogger)());
111
+ const useServerSideFLangNormalization = (_formConfig$settings$2 = (_formConfig$settings2 = formConfig.settings) === null || _formConfig$settings2 === void 0 ? void 0 : _formConfig$settings2.useServerSideFLangNormalization) !== null && _formConfig$settings$2 !== void 0 ? _formConfig$settings$2 : false;
112
+ if (!useServerSideFLangNormalization) {
113
+ return null;
114
+ }
104
115
  const buildFormDevServer = await this.getOrCreateBuildFormDevServer(gfv);
105
116
  const resultStream = await buildFormDevServer.getGeneratedFileAsStream(`ServerSide.normalize`);
106
117
  return resultStream;
@@ -115,4 +126,4 @@ let BuildServerBuildFormsController = exports.BuildServerBuildFormsController =
115
126
  return devServer;
116
127
  }
117
128
  }, ((0, _applyDecoratedDescriptor2.default)(_class.prototype, "getDevServerUpdateJson", [_dec], Object.getOwnPropertyDescriptor(_class.prototype, "getDevServerUpdateJson"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getDevServerUpdateJs", [_dec2], Object.getOwnPropertyDescriptor(_class.prototype, "getDevServerUpdateJs"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getDevServerUpdateJsMap", [_dec3], Object.getOwnPropertyDescriptor(_class.prototype, "getDevServerUpdateJsMap"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFormScript", [_dec4], Object.getOwnPropertyDescriptor(_class.prototype, "getFormScript"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFormStyle", [_dec5], Object.getOwnPropertyDescriptor(_class.prototype, "getFormStyle"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFormImages", [_dec6], Object.getOwnPropertyDescriptor(_class.prototype, "getFormImages"), _class.prototype)), _class));
118
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX21pbWVUeXBlcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfUmVzb2x2ZUZvcm1JbmZvIiwiX01ldGhvZHMiLCJfTm90Rm91bmRXZWJFcnJvciIsIl9QYXJhbXMiLCJfUmVzdWx0cyIsIl9TdHJlYW1SZXN1bHRIYW5kbGVyIiwiX1NpbmdsZXRvbkNvbnRyb2xsZXIiLCJfU3RhdGljTG9nZ2VyIiwiX1dlbGxLbm93bkRpcmVjdG9yaWVzIiwiX0J1aWxkRm9ybURldlNlcnZlciIsIl9GYXJtRGlyZWN0b3J5IiwiX2RlYyIsIl9kZWMyIiwiX2RlYzMiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfY2xhc3MiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJCdWlsZFNlcnZlckJ1aWxkRm9ybXNDb250cm9sbGVyIiwiZXhwb3J0cyIsImh0dHBHZXQiLCJodHRwUmV0dXJuIiwiU3RyZWFtV2l0aE1pbWUiLCJodHRwVXJsUGFyYW0iLCJodHRwVHlwZSIsIlN0cmluZyIsIlN0cmVhbSIsIlNpbmdsZXRvbkNvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImFsbEZhcm1Db25maWciLCJjYW5keU1vZHVsZXNEaXJlY3RvcnkiLCJ1c2VHZW5lcmF0b3JGcm9tTG9jYWxTb3VyY2VzIiwiZW5naW5lRGlyZWN0b3J5IiwiYnVpbGREZWJ1Z09ubHkiLCJuaWdodGx5IiwiYWxsRmFybURpcmVjdG9yeSIsImFsbEZhcm1EaXJlY3RvcnlQYXRoIiwibmV4dEZyZWVQb3J0IiwiZGV2U2VydmVycyIsIm1hcCIsImZhcm0iLCJGYXJtRGlyZWN0b3J5IiwiZmFybURpcmVjdG9yeSIsImdldERldlNlcnZlclVwZGF0ZUpzb24iLCJ1cGRhdGVOYW1lIiwiZ2V0Rmlyc3RFeGlzdHNGaWxlQXNTdHJlYW1Gcm9tRGV2U2VydmVyIiwiZ2V0RGV2U2VydmVyVXBkYXRlSnMiLCJnZXREZXZTZXJ2ZXJVcGRhdGVKc01hcCIsImdldEZvcm1TY3JpcHQiLCJmaWxlTmFtZSIsImZpbGVOYW1lV2l0aG91dEV4dCIsImdmdiIsImJ1aWxkRm9ybURldlNlcnZlciIsImdldE9yQ3JlYXRlQnVpbGRGb3JtRGV2U2VydmVyIiwiU3RyZWFtUmVzdWx0IiwiZ2V0RmlsZUFzU3RyZWFtIiwiZ2V0Rm9ybVN0eWxlIiwidGhlbWUiLCJyZXBsYWNlIiwiZ2V0Rm9ybUltYWdlcyIsIm1pbWUiLCJsb29rdXAiLCJmaWxlbmFtZSIsIm1pbWVUeXBlIiwiZGV2U2VydmVyIiwidmFsdWVzIiwidW5kZWZpbmVkIiwiTm90Rm91bmRXZWJFcnJvciIsImdldEFsbEF0dGFjaG1lbnRQYXRoRmlsZU5hbWVzIiwiUHJvbWlzZSIsImFsbCIsImdldEFsbEdmdnMiLCJmbGF0IiwiZ2V0QXR0YWNobWVudFBhdGhzRmlsZUNvbnRlbnQiLCJyZXN1bHRTdHJlYW0iLCJnZXRHZW5lcmF0ZWRGaWxlQXNTdHJlYW0iLCJnZXRBbGxOb3JtYWxpemF0aW9uRmlsZU5hbWVzIiwicmVzdWx0IiwiZ2Z2SW5mb3MiLCJnZXRBbGxHZnZXaXRoTG9jYXRpb25zIiwiZm9ybVBhdGgiLCJfZm9ybUNvbmZpZyRzZXR0aW5ncyQiLCJfZm9ybUNvbmZpZyRzZXR0aW5ncyIsImZvcm1Db25maWciLCJyZWFkRm9ybUNvbmZpZyIsImpvaW4iLCJXZWxsS25vd25EaXJlY3RvcmllcyIsIkZvcm1Kc29uRmlsZU5hbWUiLCJnZXRMb2dnZXIiLCJ1c2VTZXJ2ZXJTaWRlRkxhbmdOb3JtYWxpemF0aW9uIiwic2V0dGluZ3MiLCJwdXNoIiwiZ2V0Tm9ybWFsaXphdGlvbkZpbGVDb250ZW50IiwiQnVpbGRGb3JtRGV2U2VydmVyIiwic3RhcnQiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yMiIsInByb3RvdHlwZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9CdWlsZFNlcnZlckJ1aWxkRm9ybXNDb250cm9sbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IG1pbWUgZnJvbSBcIm1pbWUtdHlwZXNcIjtcbmltcG9ydCB7IEZhcm1Db25maWcgfSBmcm9tIFwiVG9vbHMvc3JjL0NhbmR5Q0xJXCI7XG5cbmltcG9ydCB7IHJlYWRGb3JtQ29uZmlnIH0gZnJvbSBcIi4uLy4uLy4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyBodHRwR2V0IH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL01ldGhvZHNcIjtcbmltcG9ydCB7IE5vdEZvdW5kV2ViRXJyb3IgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvTm90Rm91bmRXZWJFcnJvclwiO1xuaW1wb3J0IHsgaHR0cFR5cGUsIGh0dHBVcmxQYXJhbSB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9QYXJhbXNcIjtcbmltcG9ydCB7IGh0dHBSZXR1cm4gfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUmVzdWx0c1wiO1xuaW1wb3J0IHsgU3RyZWFtUmVzdWx0IH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1Jlc3VsdHMvU3RyZWFtUmVzdWx0SGFuZGxlclwiO1xuaW1wb3J0IHsgU2luZ2xldG9uQ29udHJvbGxlciB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvRXhwcmVzc1dyYXBwZXIvU2luZ2xldG9uQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcbmltcG9ydCB7IFdlbGxLbm93bkRpcmVjdG9yaWVzIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9XZWxsS25vd25EaXJlY3Rvcmllc1wiO1xuXG5pbXBvcnQgeyBCdWlsZEZvcm1EZXZTZXJ2ZXIgfSBmcm9tIFwiLi9EZXZTZXJ2ZXJzL0J1aWxkRm9ybURldlNlcnZlclwiO1xuaW1wb3J0IHsgRmFybURpcmVjdG9yeSB9IGZyb20gXCIuL0RpcmVjdG9yaWVzL0Zhcm1EaXJlY3RvcnlcIjtcbmltcG9ydCB7IElHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyIH0gZnJvbSBcIi4vSUdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXJcIjtcblxuZXhwb3J0IGNsYXNzIEJ1aWxkU2VydmVyQnVpbGRGb3Jtc0NvbnRyb2xsZXJcbiAgICBleHRlbmRzIFNpbmdsZXRvbkNvbnRyb2xsZXJcbiAgICBpbXBsZW1lbnRzIElHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyXG57XG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGxGYXJtRGlyZWN0b3J5OiBGYXJtRGlyZWN0b3J5W107XG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGxGYXJtRGlyZWN0b3J5UGF0aDogc3RyaW5nW107XG4gICAgcHJpdmF0ZSBuZXh0RnJlZVBvcnQgPSAxMjAwMTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRldlNlcnZlcnM6IHsgW2dmdjogc3RyaW5nXTogdW5kZWZpbmVkIHwgQnVpbGRGb3JtRGV2U2VydmVyIH0gPSB7fTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsRmFybUNvbmZpZzogRmFybUNvbmZpZ1tdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlczogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVuZ2luZURpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmlnaHRseTogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJ1aWxkRGVidWdPbmx5OiBib29sZWFuO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBhbGxGYXJtQ29uZmlnOiBGYXJtQ29uZmlnW10sXG4gICAgICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nLFxuICAgICAgICB1c2VHZW5lcmF0b3JGcm9tTG9jYWxTb3VyY2VzOiBib29sZWFuLFxuICAgICAgICBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICAgICAgYnVpbGREZWJ1Z09ubHk6IGJvb2xlYW4sXG4gICAgICAgIG5pZ2h0bHk6IGJvb2xlYW4gPSBmYWxzZVxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm5pZ2h0bHkgPSBuaWdodGx5O1xuICAgICAgICB0aGlzLmFsbEZhcm1EaXJlY3RvcnkgPSBhbGxGYXJtQ29uZmlnLm1hcChmYXJtID0+IG5ldyBGYXJtRGlyZWN0b3J5KGZhcm0uZmFybURpcmVjdG9yeSkpO1xuICAgICAgICB0aGlzLmFsbEZhcm1EaXJlY3RvcnlQYXRoID0gYWxsRmFybUNvbmZpZy5tYXAoZmFybSA9PiBmYXJtLmZhcm1EaXJlY3RvcnkpO1xuICAgICAgICB0aGlzLmNhbmR5TW9kdWxlc0RpcmVjdG9yeSA9IGNhbmR5TW9kdWxlc0RpcmVjdG9yeTtcbiAgICAgICAgdGhpcy5hbGxGYXJtQ29uZmlnID0gYWxsRmFybUNvbmZpZztcbiAgICAgICAgdGhpcy51c2VHZW5lcmF0b3JGcm9tTG9jYWxTb3VyY2VzID0gdXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlcztcbiAgICAgICAgdGhpcy5lbmdpbmVEaXJlY3RvcnkgPSBlbmdpbmVEaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMuYnVpbGREZWJ1Z09ubHkgPSBidWlsZERlYnVnT25seTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcbiAgICAgICAgXCIvOnVwZGF0ZS5ob3QtdXBkYXRlLmpzb25cIixcbiAgICAgICAgaHR0cFJldHVybi5TdHJlYW1XaXRoTWltZShcImFwcGxpY2F0aW9uL2pzb25cIiksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcInVwZGF0ZVwiLCBodHRwVHlwZS5TdHJpbmcpXG4gICAgKVxuICAgIHB1YmxpYyBhc3luYyBnZXREZXZTZXJ2ZXJVcGRhdGVKc29uKHVwZGF0ZU5hbWU6IHN0cmluZyk6IFByb21pc2U8U3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldEZpcnN0RXhpc3RzRmlsZUFzU3RyZWFtRnJvbURldlNlcnZlcihgc3RhdGljLyR7dXBkYXRlTmFtZX0uaG90LXVwZGF0ZS5qc29uYCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXG4gICAgICAgIFwiLzp1cGRhdGUuaG90LXVwZGF0ZS5qc1wiLFxuICAgICAgICBodHRwUmV0dXJuLlN0cmVhbVdpdGhNaW1lKFwiYXBwbGljYXRpb24vamF2YXNjcmlwdFwiKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwidXBkYXRlXCIsIGh0dHBUeXBlLlN0cmluZylcbiAgICApXG4gICAgcHVibGljIGFzeW5jIGdldERldlNlcnZlclVwZGF0ZUpzKHVwZGF0ZU5hbWU6IHN0cmluZyk6IFByb21pc2U8U3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldEZpcnN0RXhpc3RzRmlsZUFzU3RyZWFtRnJvbURldlNlcnZlcihgc3RhdGljLyR7dXBkYXRlTmFtZX0uaG90LXVwZGF0ZS5qc2ApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFxuICAgICAgICBcIi86dXBkYXRlLmhvdC11cGRhdGUuanMubWFwXCIsXG4gICAgICAgIGh0dHBSZXR1cm4uU3RyZWFtV2l0aE1pbWUoXCJhcHBsaWNhdGlvbi9qc29uXCIpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCJ1cGRhdGVcIiwgaHR0cFR5cGUuU3RyaW5nKVxuICAgIClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RGV2U2VydmVyVXBkYXRlSnNNYXAodXBkYXRlTmFtZTogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0Rmlyc3RFeGlzdHNGaWxlQXNTdHJlYW1Gcm9tRGV2U2VydmVyKGBzdGF0aWMvJHt1cGRhdGVOYW1lfS5ob3QtdXBkYXRlLmpzLm1hcGApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFxuICAgICAgICAvXlxcL3B1YmxpY1xcL3NjcmlwdHNcXC8oKChcXGR7Niw3fSkoLltcXHdcXC1dKik/KC5taW4pPykuanMpJC9pLFxuICAgICAgICBodHRwUmV0dXJuLlN0cmVhbVdpdGhNaW1lKFwiYXBwbGljYXRpb24vamF2YXNjcmlwdFwiKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiMFwiLCBodHRwVHlwZS5TdHJpbmcpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCIxXCIsIGh0dHBUeXBlLlN0cmluZyksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcIjJcIiwgaHR0cFR5cGUuU3RyaW5nKVxuICAgIClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Rm9ybVNjcmlwdChmaWxlTmFtZTogc3RyaW5nLCBmaWxlTmFtZVdpdGhvdXRFeHQ6IHN0cmluZywgZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPFN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBidWlsZEZvcm1EZXZTZXJ2ZXIgPSBhd2FpdCB0aGlzLmdldE9yQ3JlYXRlQnVpbGRGb3JtRGV2U2VydmVyKGdmdik7XG4gICAgICAgIHJldHVybiBuZXcgU3RyZWFtUmVzdWx0KGF3YWl0IGJ1aWxkRm9ybURldlNlcnZlci5nZXRGaWxlQXNTdHJlYW0oYHN0YXRpYy9wdWJsaWMvc2NyaXB0cy8ke2ZpbGVOYW1lfWApKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcbiAgICAgICAgL15cXC9wdWJsaWNcXC9zdHlsZXNcXC8oKChcXGR7Niw3fSkoLltcXHdcXC1dKik/KC5taW4pPykuY3NzKSQvaSxcbiAgICAgICAgaHR0cFJldHVybi5TdHJlYW1XaXRoTWltZShcInRleHQvY3NzXCIpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCIwXCIsIGh0dHBUeXBlLlN0cmluZyksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcIjFcIiwgaHR0cFR5cGUuU3RyaW5nKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiMlwiLCBodHRwVHlwZS5TdHJpbmcpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCIzXCIsIGh0dHBUeXBlLlN0cmluZylcbiAgICApXG4gICAgcHVibGljIGFzeW5jIGdldEZvcm1TdHlsZShcbiAgICAgICAgZmlsZU5hbWU6IHN0cmluZyxcbiAgICAgICAgZmlsZU5hbWVXaXRob3V0RXh0OiBzdHJpbmcsXG4gICAgICAgIGdmdjogc3RyaW5nLFxuICAgICAgICB0aGVtZTogdW5kZWZpbmVkIHwgc3RyaW5nXG4gICAgKTogUHJvbWlzZTxTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYnVpbGRGb3JtRGV2U2VydmVyID0gYXdhaXQgdGhpcy5nZXRPckNyZWF0ZUJ1aWxkRm9ybURldlNlcnZlcihnZnYpO1xuICAgICAgICByZXR1cm4gbmV3IFN0cmVhbVJlc3VsdChcbiAgICAgICAgICAgIGF3YWl0IGJ1aWxkRm9ybURldlNlcnZlci5nZXRGaWxlQXNTdHJlYW0oYHN0YXRpYy9wdWJsaWMvc3R5bGVzLyR7ZmlsZU5hbWUucmVwbGFjZSh0aGVtZSA/PyBcIlwiLCBcIlwiKX1gKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3B1YmxpYy9pbWFnZXMvOmZpbGVuYW1lXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJmaWxlbmFtZVwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtSW1hZ2VzKGZpbGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFN0cmVhbVJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRGaXJzdEV4aXN0c0ZpbGVBc1N0cmVhbUZyb21EZXZTZXJ2ZXIoXG4gICAgICAgICAgICBgc3RhdGljL3B1YmxpYy9pbWFnZXMvJHtmaWxlTmFtZX1gLFxuICAgICAgICAgICAgbWltZS5sb29rdXAoZmlsZU5hbWUpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBnZXRGaXJzdEV4aXN0c0ZpbGVBc1N0cmVhbUZyb21EZXZTZXJ2ZXIoZmlsZW5hbWU6IHN0cmluZywgbWltZVR5cGU/OiBzdHJpbmcgfCBmYWxzZSkge1xuICAgICAgICBmb3IgKGNvbnN0IGRldlNlcnZlciBvZiBPYmplY3QudmFsdWVzKHRoaXMuZGV2U2VydmVycykpIHtcbiAgICAgICAgICAgIGlmIChkZXZTZXJ2ZXIgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW1SZXN1bHQoYXdhaXQgZGV2U2VydmVyLmdldEZpbGVBc1N0cmVhbShmaWxlbmFtZSksIG1pbWVUeXBlKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdHJ5IG5leHQgc2VydmVyXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZFdlYkVycm9yKFwiRmlsZSBub3QgZm91bmRcIiwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbEF0dGFjaG1lbnRQYXRoRmlsZU5hbWVzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmFsbEZhcm1EaXJlY3RvcnkubWFwKGkgPT4gaS5nZXRBbGxHZnZzKCkpKSkuZmxhdCgpLm1hcChnZnYgPT4gYCR7Z2Z2fS5qc29uYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEF0dGFjaG1lbnRQYXRoc0ZpbGVDb250ZW50KGdmdjogc3RyaW5nKTogUHJvbWlzZTxOb2RlSlMuUmVhZGFibGVTdHJlYW0+IHtcbiAgICAgICAgY29uc3QgYnVpbGRGb3JtRGV2U2VydmVyID0gYXdhaXQgdGhpcy5nZXRPckNyZWF0ZUJ1aWxkRm9ybURldlNlcnZlcihnZnYpO1xuICAgICAgICBjb25zdCByZXN1bHRTdHJlYW0gPSBhd2FpdCBidWlsZEZvcm1EZXZTZXJ2ZXIuZ2V0R2VuZXJhdGVkRmlsZUFzU3RyZWFtKGBBdHRhY2htZW50UGF0aHMuanNvbmApO1xuICAgICAgICByZXR1cm4gcmVzdWx0U3RyZWFtO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxOb3JtYWxpemF0aW9uRmlsZU5hbWVzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBjb25zdCBnZnZJbmZvcyA9IChhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmFsbEZhcm1EaXJlY3RvcnkubWFwKGkgPT4gaS5nZXRBbGxHZnZXaXRoTG9jYXRpb25zKCkpKSkuZmxhdCgpO1xuICAgICAgICBmb3IgKGNvbnN0IHsgZ2Z2LCBmb3JtUGF0aCB9IG9mIGdmdkluZm9zKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtQ29uZmlnID0gYXdhaXQgcmVhZEZvcm1Db25maWcoXG4gICAgICAgICAgICAgICAgcGF0aC5qb2luKGZvcm1QYXRoLCBXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lKSxcbiAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IHVzZVNlcnZlclNpZGVGTGFuZ05vcm1hbGl6YXRpb24gPSBmb3JtQ29uZmlnLnNldHRpbmdzPy51c2VTZXJ2ZXJTaWRlRkxhbmdOb3JtYWxpemF0aW9uID8/IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHVzZVNlcnZlclNpZGVGTGFuZ05vcm1hbGl6YXRpb24pIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChgJHtnZnZ9Lm5vcm1hbGl6ZWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldE5vcm1hbGl6YXRpb25GaWxlQ29udGVudChnZnY6IHN0cmluZyk6IFByb21pc2U8Tm9kZUpTLlJlYWRhYmxlU3RyZWFtPiB7XG4gICAgICAgIGNvbnN0IGJ1aWxkRm9ybURldlNlcnZlciA9IGF3YWl0IHRoaXMuZ2V0T3JDcmVhdGVCdWlsZEZvcm1EZXZTZXJ2ZXIoZ2Z2KTtcbiAgICAgICAgY29uc3QgcmVzdWx0U3RyZWFtID0gYXdhaXQgYnVpbGRGb3JtRGV2U2VydmVyLmdldEdlbmVyYXRlZEZpbGVBc1N0cmVhbShgU2VydmVyU2lkZS5ub3JtYWxpemVgKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFN0cmVhbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGdldE9yQ3JlYXRlQnVpbGRGb3JtRGV2U2VydmVyKGdmdjogc3RyaW5nKTogUHJvbWlzZTxCdWlsZEZvcm1EZXZTZXJ2ZXI+IHtcbiAgICAgICAgbGV0IGRldlNlcnZlciA9IHRoaXMuZGV2U2VydmVyc1tnZnZdO1xuICAgICAgICBpZiAoZGV2U2VydmVyID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZGV2U2VydmVyID0gbmV3IEJ1aWxkRm9ybURldlNlcnZlcihcbiAgICAgICAgICAgICAgICB0aGlzLm5leHRGcmVlUG9ydCsrLFxuICAgICAgICAgICAgICAgIHRoaXMuYWxsRmFybURpcmVjdG9yeVBhdGgsXG4gICAgICAgICAgICAgICAgZ2Z2LFxuICAgICAgICAgICAgICAgIHRoaXMuY2FuZHlNb2R1bGVzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgIHRoaXMuYWxsRmFybUNvbmZpZyxcbiAgICAgICAgICAgICAgICB0aGlzLnVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXMsXG4gICAgICAgICAgICAgICAgdGhpcy5lbmdpbmVEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZERlYnVnT25seSxcbiAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICB0aGlzLm5pZ2h0bHlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmRldlNlcnZlcnNbZ2Z2XSA9IGRldlNlcnZlcjtcbiAgICAgICAgICAgIGF3YWl0IGRldlNlcnZlci5zdGFydCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZXZTZXJ2ZXI7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLElBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUdBLElBQUFHLGdCQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxRQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxpQkFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sT0FBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sUUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsb0JBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLG9CQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxhQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxxQkFBQSxHQUFBWCxPQUFBO0FBRUEsSUFBQVksbUJBQUEsR0FBQVosT0FBQTtBQUNBLElBQUFhLGNBQUEsR0FBQWIsT0FBQTtBQUE0RCxJQUFBYyxJQUFBLEVBQUFDLEtBQUEsRUFBQUMsS0FBQSxFQUFBQyxLQUFBLEVB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
129
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX21pbWVUeXBlcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfUmVzb2x2ZUZvcm1JbmZvIiwiX01ldGhvZHMiLCJfTm90Rm91bmRXZWJFcnJvciIsIl9QYXJhbXMiLCJfUmVzdWx0cyIsIl9TdHJlYW1SZXN1bHRIYW5kbGVyIiwiX1NpbmdsZXRvbkNvbnRyb2xsZXIiLCJfU3RhdGljTG9nZ2VyIiwiX1dlbGxLbm93bkRpcmVjdG9yaWVzIiwiX0J1aWxkRm9ybURldlNlcnZlciIsIl9GYXJtRGlyZWN0b3J5IiwiX2RlYyIsIl9kZWMyIiwiX2RlYzMiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfY2xhc3MiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJCdWlsZFNlcnZlckJ1aWxkRm9ybXNDb250cm9sbGVyIiwiZXhwb3J0cyIsImh0dHBHZXQiLCJodHRwUmV0dXJuIiwiU3RyZWFtV2l0aE1pbWUiLCJodHRwVXJsUGFyYW0iLCJodHRwVHlwZSIsIlN0cmluZyIsIlN0cmVhbSIsIlNpbmdsZXRvbkNvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImFsbEZhcm1Db25maWciLCJjYW5keU1vZHVsZXNEaXJlY3RvcnkiLCJ1c2VHZW5lcmF0b3JGcm9tTG9jYWxTb3VyY2VzIiwiZW5naW5lRGlyZWN0b3J5IiwiYnVpbGREZWJ1Z09ubHkiLCJuaWdodGx5IiwiYWxsRmFybURpcmVjdG9yeSIsImFsbEZhcm1EaXJlY3RvcnlQYXRoIiwibmV4dEZyZWVQb3J0IiwiZGV2U2VydmVycyIsIm1hcCIsImZhcm0iLCJGYXJtRGlyZWN0b3J5IiwiZmFybURpcmVjdG9yeSIsImdldERldlNlcnZlclVwZGF0ZUpzb24iLCJ1cGRhdGVOYW1lIiwiZ2V0Rmlyc3RFeGlzdHNGaWxlQXNTdHJlYW1Gcm9tRGV2U2VydmVyIiwiZ2V0RGV2U2VydmVyVXBkYXRlSnMiLCJnZXREZXZTZXJ2ZXJVcGRhdGVKc01hcCIsImdldEZvcm1TY3JpcHQiLCJmaWxlTmFtZSIsImZpbGVOYW1lV2l0aG91dEV4dCIsImdmdiIsImJ1aWxkRm9ybURldlNlcnZlciIsImdldE9yQ3JlYXRlQnVpbGRGb3JtRGV2U2VydmVyIiwiU3RyZWFtUmVzdWx0IiwiZ2V0RmlsZUFzU3RyZWFtIiwiZ2V0Rm9ybVN0eWxlIiwidGhlbWUiLCJyZXBsYWNlIiwiZ2V0Rm9ybUltYWdlcyIsIm1pbWUiLCJsb29rdXAiLCJmaWxlbmFtZSIsIm1pbWVUeXBlIiwiZGV2U2VydmVyIiwidmFsdWVzIiwidW5kZWZpbmVkIiwiTm90Rm91bmRXZWJFcnJvciIsImdldEFsbEF0dGFjaG1lbnRQYXRoRmlsZU5hbWVzIiwiUHJvbWlzZSIsImFsbCIsImdldEFsbEdmdnMiLCJmbGF0IiwiZ2V0QXR0YWNobWVudFBhdGhzRmlsZUNvbnRlbnQiLCJyZXN1bHRTdHJlYW0iLCJnZXRHZW5lcmF0ZWRGaWxlQXNTdHJlYW0iLCJnZXRBbGxOb3JtYWxpemF0aW9uRmlsZU5hbWVzIiwicmVzdWx0IiwiZ2Z2SW5mb3MiLCJnZXRBbGxHZnZXaXRoTG9jYXRpb25zIiwiZm9ybVBhdGgiLCJfZm9ybUNvbmZpZyRzZXR0aW5ncyQiLCJfZm9ybUNvbmZpZyRzZXR0aW5ncyIsImZvcm1Db25maWciLCJyZWFkRm9ybUNvbmZpZyIsImpvaW4iLCJXZWxsS25vd25EaXJlY3RvcmllcyIsIkZvcm1Kc29uRmlsZU5hbWUiLCJnZXRMb2dnZXIiLCJ1c2VTZXJ2ZXJTaWRlRkxhbmdOb3JtYWxpemF0aW9uIiwic2V0dGluZ3MiLCJwdXNoIiwiZ2V0Tm9ybWFsaXphdGlvbkZpbGVDb250ZW50IiwiX2Zvcm1Db25maWckc2V0dGluZ3MkMiIsIl9mb3JtQ29uZmlnJHNldHRpbmdzMiIsImdmdkluZm8iLCJmaW5kIiwieCIsIkJ1aWxkRm9ybURldlNlcnZlciIsInN0YXJ0IiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcjIiLCJwcm90b3R5cGUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvQ0xJQ29tbWFuZHMvQnVpbGRTZXJ2ZXIvUmVzb3VyY2VzQ29udHJvbGxlcnMvQnVpbGRTZXJ2ZXJCdWlsZEZvcm1zQ29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCBtaW1lIGZyb20gXCJtaW1lLXR5cGVzXCI7XG5pbXBvcnQgeyBGYXJtQ29uZmlnIH0gZnJvbSBcIlRvb2xzL3NyYy9DYW5keUNMSVwiO1xuXG5pbXBvcnQgeyByZWFkRm9ybUNvbmZpZyB9IGZyb20gXCIuLi8uLi8uLi9CdWlsZFRhc2tzL1Jlc29sdmVGb3JtSW5mb1wiO1xuaW1wb3J0IHsgaHR0cEdldCB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9NZXRob2RzXCI7XG5pbXBvcnQgeyBOb3RGb3VuZFdlYkVycm9yIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL05vdEZvdW5kV2ViRXJyb3JcIjtcbmltcG9ydCB7IGh0dHBUeXBlLCBodHRwVXJsUGFyYW0gfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUGFyYW1zXCI7XG5pbXBvcnQgeyBodHRwUmV0dXJuIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1Jlc3VsdHNcIjtcbmltcG9ydCB7IFN0cmVhbVJlc3VsdCB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9SZXN1bHRzL1N0cmVhbVJlc3VsdEhhbmRsZXJcIjtcbmltcG9ydCB7IFNpbmdsZXRvbkNvbnRyb2xsZXIgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0V4cHJlc3NXcmFwcGVyL1NpbmdsZXRvbkNvbnRyb2xsZXJcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0xvZ2dpbmcvU3RhdGljTG9nZ2VyXCI7XG5pbXBvcnQgeyBXZWxsS25vd25EaXJlY3RvcmllcyB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vV2VsbEtub3duRGlyZWN0b3JpZXNcIjtcblxuaW1wb3J0IHsgQnVpbGRGb3JtRGV2U2VydmVyIH0gZnJvbSBcIi4vRGV2U2VydmVycy9CdWlsZEZvcm1EZXZTZXJ2ZXJcIjtcbmltcG9ydCB7IEZhcm1EaXJlY3RvcnkgfSBmcm9tIFwiLi9EaXJlY3Rvcmllcy9GYXJtRGlyZWN0b3J5XCI7XG5pbXBvcnQgeyBJR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlciB9IGZyb20gXCIuL0lHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBCdWlsZFNlcnZlckJ1aWxkRm9ybXNDb250cm9sbGVyXG4gICAgZXh0ZW5kcyBTaW5nbGV0b25Db250cm9sbGVyXG4gICAgaW1wbGVtZW50cyBJR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlclxue1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsRmFybURpcmVjdG9yeTogRmFybURpcmVjdG9yeVtdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsRmFybURpcmVjdG9yeVBhdGg6IHN0cmluZ1tdO1xuICAgIHByaXZhdGUgbmV4dEZyZWVQb3J0ID0gMTIwMDE7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXZTZXJ2ZXJzOiB7IFtnZnY6IHN0cmluZ106IHVuZGVmaW5lZCB8IEJ1aWxkRm9ybURldlNlcnZlciB9ID0ge307XG4gICAgcHJpdmF0ZSByZWFkb25seSBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsbEZhcm1Db25maWc6IEZhcm1Db25maWdbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXM6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5pZ2h0bHk6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBidWlsZERlYnVnT25seTogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgYWxsRmFybUNvbmZpZzogRmFybUNvbmZpZ1tdLFxuICAgICAgICBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICAgICAgdXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlczogYm9vbGVhbixcbiAgICAgICAgZW5naW5lRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIGJ1aWxkRGVidWdPbmx5OiBib29sZWFuLFxuICAgICAgICBuaWdodGx5OiBib29sZWFuID0gZmFsc2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5uaWdodGx5ID0gbmlnaHRseTtcbiAgICAgICAgdGhpcy5hbGxGYXJtRGlyZWN0b3J5ID0gYWxsRmFybUNvbmZpZy5tYXAoZmFybSA9PiBuZXcgRmFybURpcmVjdG9yeShmYXJtLmZhcm1EaXJlY3RvcnkpKTtcbiAgICAgICAgdGhpcy5hbGxGYXJtRGlyZWN0b3J5UGF0aCA9IGFsbEZhcm1Db25maWcubWFwKGZhcm0gPT4gZmFybS5mYXJtRGlyZWN0b3J5KTtcbiAgICAgICAgdGhpcy5jYW5keU1vZHVsZXNEaXJlY3RvcnkgPSBjYW5keU1vZHVsZXNEaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMuYWxsRmFybUNvbmZpZyA9IGFsbEZhcm1Db25maWc7XG4gICAgICAgIHRoaXMudXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlcyA9IHVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXM7XG4gICAgICAgIHRoaXMuZW5naW5lRGlyZWN0b3J5ID0gZW5naW5lRGlyZWN0b3J5O1xuICAgICAgICB0aGlzLmJ1aWxkRGVidWdPbmx5ID0gYnVpbGREZWJ1Z09ubHk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXG4gICAgICAgIFwiLzp1cGRhdGUuaG90LXVwZGF0ZS5qc29uXCIsXG4gICAgICAgIGh0dHBSZXR1cm4uU3RyZWFtV2l0aE1pbWUoXCJhcHBsaWNhdGlvbi9qc29uXCIpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCJ1cGRhdGVcIiwgaHR0cFR5cGUuU3RyaW5nKVxuICAgIClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RGV2U2VydmVyVXBkYXRlSnNvbih1cGRhdGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFN0cmVhbVJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRGaXJzdEV4aXN0c0ZpbGVBc1N0cmVhbUZyb21EZXZTZXJ2ZXIoYHN0YXRpYy8ke3VwZGF0ZU5hbWV9LmhvdC11cGRhdGUuanNvbmApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFxuICAgICAgICBcIi86dXBkYXRlLmhvdC11cGRhdGUuanNcIixcbiAgICAgICAgaHR0cFJldHVybi5TdHJlYW1XaXRoTWltZShcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcInVwZGF0ZVwiLCBodHRwVHlwZS5TdHJpbmcpXG4gICAgKVxuICAgIHB1YmxpYyBhc3luYyBnZXREZXZTZXJ2ZXJVcGRhdGVKcyh1cGRhdGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFN0cmVhbVJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRGaXJzdEV4aXN0c0ZpbGVBc1N0cmVhbUZyb21EZXZTZXJ2ZXIoYHN0YXRpYy8ke3VwZGF0ZU5hbWV9LmhvdC11cGRhdGUuanNgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcbiAgICAgICAgXCIvOnVwZGF0ZS5ob3QtdXBkYXRlLmpzLm1hcFwiLFxuICAgICAgICBodHRwUmV0dXJuLlN0cmVhbVdpdGhNaW1lKFwiYXBwbGljYXRpb24vanNvblwiKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwidXBkYXRlXCIsIGh0dHBUeXBlLlN0cmluZylcbiAgICApXG4gICAgcHVibGljIGFzeW5jIGdldERldlNlcnZlclVwZGF0ZUpzTWFwKHVwZGF0ZU5hbWU6IHN0cmluZyk6IFByb21pc2U8U3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldEZpcnN0RXhpc3RzRmlsZUFzU3RyZWFtRnJvbURldlNlcnZlcihgc3RhdGljLyR7dXBkYXRlTmFtZX0uaG90LXVwZGF0ZS5qcy5tYXBgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcbiAgICAgICAgL15cXC9wdWJsaWNcXC9zY3JpcHRzXFwvKCgoXFxkezYsN30pKC5bXFx3XFwtXSopPygubWluKT8pLmpzKSQvaSxcbiAgICAgICAgaHR0cFJldHVybi5TdHJlYW1XaXRoTWltZShcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcIjBcIiwgaHR0cFR5cGUuU3RyaW5nKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiMVwiLCBodHRwVHlwZS5TdHJpbmcpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCIyXCIsIGh0dHBUeXBlLlN0cmluZylcbiAgICApXG4gICAgcHVibGljIGFzeW5jIGdldEZvcm1TY3JpcHQoZmlsZU5hbWU6IHN0cmluZywgZmlsZU5hbWVXaXRob3V0RXh0OiBzdHJpbmcsIGdmdjogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYnVpbGRGb3JtRGV2U2VydmVyID0gYXdhaXQgdGhpcy5nZXRPckNyZWF0ZUJ1aWxkRm9ybURldlNlcnZlcihnZnYpO1xuICAgICAgICByZXR1cm4gbmV3IFN0cmVhbVJlc3VsdChhd2FpdCBidWlsZEZvcm1EZXZTZXJ2ZXIuZ2V0RmlsZUFzU3RyZWFtKGBzdGF0aWMvcHVibGljL3NjcmlwdHMvJHtmaWxlTmFtZX1gKSk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXG4gICAgICAgIC9eXFwvcHVibGljXFwvc3R5bGVzXFwvKCgoXFxkezYsN30pKC5bXFx3XFwtXSopPygubWluKT8pLmNzcykkL2ksXG4gICAgICAgIGh0dHBSZXR1cm4uU3RyZWFtV2l0aE1pbWUoXCJ0ZXh0L2Nzc1wiKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiMFwiLCBodHRwVHlwZS5TdHJpbmcpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCIxXCIsIGh0dHBUeXBlLlN0cmluZyksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcIjJcIiwgaHR0cFR5cGUuU3RyaW5nKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiM1wiLCBodHRwVHlwZS5TdHJpbmcpXG4gICAgKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtU3R5bGUoXG4gICAgICAgIGZpbGVOYW1lOiBzdHJpbmcsXG4gICAgICAgIGZpbGVOYW1lV2l0aG91dEV4dDogc3RyaW5nLFxuICAgICAgICBnZnY6IHN0cmluZyxcbiAgICAgICAgdGhlbWU6IHVuZGVmaW5lZCB8IHN0cmluZ1xuICAgICk6IFByb21pc2U8U3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGJ1aWxkRm9ybURldlNlcnZlciA9IGF3YWl0IHRoaXMuZ2V0T3JDcmVhdGVCdWlsZEZvcm1EZXZTZXJ2ZXIoZ2Z2KTtcbiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW1SZXN1bHQoXG4gICAgICAgICAgICBhd2FpdCBidWlsZEZvcm1EZXZTZXJ2ZXIuZ2V0RmlsZUFzU3RyZWFtKGBzdGF0aWMvcHVibGljL3N0eWxlcy8ke2ZpbGVOYW1lLnJlcGxhY2UodGhlbWUgPz8gXCJcIiwgXCJcIil9YClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9wdWJsaWMvaW1hZ2VzLzpmaWxlbmFtZVwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZmlsZW5hbWVcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Rm9ybUltYWdlcyhmaWxlTmFtZTogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0Rmlyc3RFeGlzdHNGaWxlQXNTdHJlYW1Gcm9tRGV2U2VydmVyKFxuICAgICAgICAgICAgYHN0YXRpYy9wdWJsaWMvaW1hZ2VzLyR7ZmlsZU5hbWV9YCxcbiAgICAgICAgICAgIG1pbWUubG9va3VwKGZpbGVOYW1lKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZ2V0Rmlyc3RFeGlzdHNGaWxlQXNTdHJlYW1Gcm9tRGV2U2VydmVyKGZpbGVuYW1lOiBzdHJpbmcsIG1pbWVUeXBlPzogc3RyaW5nIHwgZmFsc2UpIHtcbiAgICAgICAgZm9yIChjb25zdCBkZXZTZXJ2ZXIgb2YgT2JqZWN0LnZhbHVlcyh0aGlzLmRldlNlcnZlcnMpKSB7XG4gICAgICAgICAgICBpZiAoZGV2U2VydmVyICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU3RyZWFtUmVzdWx0KGF3YWl0IGRldlNlcnZlci5nZXRGaWxlQXNTdHJlYW0oZmlsZW5hbWUpLCBtaW1lVHlwZSk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRyeSBuZXh0IHNlcnZlclxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRXZWJFcnJvcihcIkZpbGUgbm90IGZvdW5kXCIsIHRydWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxBdHRhY2htZW50UGF0aEZpbGVOYW1lcygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5hbGxGYXJtRGlyZWN0b3J5Lm1hcChpID0+IGkuZ2V0QWxsR2Z2cygpKSkpLmZsYXQoKS5tYXAoZ2Z2ID0+IGAke2dmdn0uanNvbmApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBdHRhY2htZW50UGF0aHNGaWxlQ29udGVudChnZnY6IHN0cmluZyk6IFByb21pc2U8Tm9kZUpTLlJlYWRhYmxlU3RyZWFtPiB7XG4gICAgICAgIGNvbnN0IGJ1aWxkRm9ybURldlNlcnZlciA9IGF3YWl0IHRoaXMuZ2V0T3JDcmVhdGVCdWlsZEZvcm1EZXZTZXJ2ZXIoZ2Z2KTtcbiAgICAgICAgY29uc3QgcmVzdWx0U3RyZWFtID0gYXdhaXQgYnVpbGRGb3JtRGV2U2VydmVyLmdldEdlbmVyYXRlZEZpbGVBc1N0cmVhbShgQXR0YWNobWVudFBhdGhzLmpzb25gKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFN0cmVhbTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsTm9ybWFsaXphdGlvbkZpbGVOYW1lcygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgY29uc3QgZ2Z2SW5mb3MgPSAoYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5hbGxGYXJtRGlyZWN0b3J5Lm1hcChpID0+IGkuZ2V0QWxsR2Z2V2l0aExvY2F0aW9ucygpKSkpLmZsYXQoKTtcbiAgICAgICAgZm9yIChjb25zdCB7IGdmdiwgZm9ybVBhdGggfSBvZiBnZnZJbmZvcykge1xuICAgICAgICAgICAgY29uc3QgZm9ybUNvbmZpZyA9IGF3YWl0IHJlYWRGb3JtQ29uZmlnKFxuICAgICAgICAgICAgICAgIHBhdGguam9pbihmb3JtUGF0aCwgV2VsbEtub3duRGlyZWN0b3JpZXMuRm9ybUpzb25GaWxlTmFtZSksXG4gICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCB1c2VTZXJ2ZXJTaWRlRkxhbmdOb3JtYWxpemF0aW9uID0gZm9ybUNvbmZpZy5zZXR0aW5ncz8udXNlU2VydmVyU2lkZUZMYW5nTm9ybWFsaXphdGlvbiA/PyBmYWxzZTtcbiAgICAgICAgICAgIGlmICh1c2VTZXJ2ZXJTaWRlRkxhbmdOb3JtYWxpemF0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goYCR7Z2Z2fS5ub3JtYWxpemVgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXROb3JtYWxpemF0aW9uRmlsZUNvbnRlbnQoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPE5vZGVKUy5SZWFkYWJsZVN0cmVhbSB8IG51bGw+IHtcbiAgICAgICAgY29uc3QgZ2Z2SW5mb3MgPSAoYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5hbGxGYXJtRGlyZWN0b3J5Lm1hcChpID0+IGkuZ2V0QWxsR2Z2V2l0aExvY2F0aW9ucygpKSkpLmZsYXQoKTtcbiAgICAgICAgY29uc3QgZ2Z2SW5mbyA9IGdmdkluZm9zLmZpbmQoeCA9PiB4LmdmdiA9PT0gZ2Z2KTtcbiAgICAgICAgaWYgKGdmdkluZm8gPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZm9ybUNvbmZpZyA9IGF3YWl0IHJlYWRGb3JtQ29uZmlnKFxuICAgICAgICAgICAgcGF0aC5qb2luKGdmdkluZm8uZm9ybVBhdGgsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpLFxuICAgICAgICAgICAgZ2V0TG9nZ2VyKClcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgdXNlU2VydmVyU2lkZUZMYW5nTm9ybWFsaXphdGlvbiA9IGZvcm1Db25maWcuc2V0dGluZ3M/LnVzZVNlcnZlclNpZGVGTGFuZ05vcm1hbGl6YXRpb24gPz8gZmFsc2U7XG4gICAgICAgIGlmICghdXNlU2VydmVyU2lkZUZMYW5nTm9ybWFsaXphdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYnVpbGRGb3JtRGV2U2VydmVyID0gYXdhaXQgdGhpcy5nZXRPckNyZWF0ZUJ1aWxkRm9ybURldlNlcnZlcihnZnYpO1xuICAgICAgICBjb25zdCByZXN1bHRTdHJlYW0gPSBhd2FpdCBidWlsZEZvcm1EZXZTZXJ2ZXIuZ2V0R2VuZXJhdGVkRmlsZUFzU3RyZWFtKGBTZXJ2ZXJTaWRlLm5vcm1hbGl6ZWApO1xuICAgICAgICByZXR1cm4gcmVzdWx0U3RyZWFtO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZ2V0T3JDcmVhdGVCdWlsZEZvcm1EZXZTZXJ2ZXIoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEJ1aWxkRm9ybURldlNlcnZlcj4ge1xuICAgICAgICBsZXQgZGV2U2VydmVyID0gdGhpcy5kZXZTZXJ2ZXJzW2dmdl07XG4gICAgICAgIGlmIChkZXZTZXJ2ZXIgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBkZXZTZXJ2ZXIgPSBuZXcgQnVpbGRGb3JtRGV2U2VydmVyKFxuICAgICAgICAgICAgICAgIHRoaXMubmV4dEZyZWVQb3J0KyssXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxGYXJtRGlyZWN0b3J5UGF0aCxcbiAgICAgICAgICAgICAgICBnZnYsXG4gICAgICAgICAgICAgICAgdGhpcy5jYW5keU1vZHVsZXNEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxGYXJtQ29uZmlnLFxuICAgICAgICAgICAgICAgIHRoaXMudXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlcyxcbiAgICAgICAgICAgICAgICB0aGlzLmVuZ2luZURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkRGVidWdPbmx5LFxuICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgIHRoaXMubmlnaHRseVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZGV2U2VydmVyc1tnZnZdID0gZGV2U2VydmVyO1xuICAgICAgICAgICAgYXdhaXQgZGV2U2VydmVyLnN0YXJ0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRldlNlcnZlcjtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsSUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsVUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBR0EsSUFBQUcsZ0JBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFFBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLGlCQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxPQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxRQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxvQkFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsb0JBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLGFBQUEsR0FBQVYsT0FBQTtBQUNBLElBQUFXLHFCQUFBLEdBQUFYLE9BQUE7QUFFQSxJQUFBWSxtQkFBQSxHQUFBWixPQUFBO0FBQ0EsSUFBQWEsY0FBQSxHQUFBYixPQUFBO0FBQTRELElBQUFjLElBQUEsRUFBQUMsS0FBQSxFQUFBQyxLQUFBLEVBQUFDLEtBQUEsRUFBQUMsS0FBQSxFQUFBQyxLQUFBLEVBQUFDLE1BQUE7QUFBQSxTQUFBQyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSxDQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBdkIsd0JBQUF1QixDQUFBLEVBQUFF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