@secrecy/lib 0.1.439 → 0.1.440

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/BaseClient.js CHANGED
@@ -320,7 +320,8 @@ export var BaseClient = /*#__PURE__*/function () {
320
320
  _context5.next = 2;
321
321
  return getUser({
322
322
  client: this.client,
323
- userId: params.userId
323
+ userId: params.userId,
324
+ withPublicKey: params.withPublicKey
324
325
  });
325
326
 
326
327
  case 2:
@@ -1328,4 +1329,4 @@ BaseClient.getBaseUrl = function (env, graphcdn) {
1328
1329
  BaseClient._getBaseClient = function (env, session) {
1329
1330
  return createThunder(BaseClient.getBaseUrl(env), session);
1330
1331
  };
1331
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9CYXNlQ2xpZW50LnRzIl0sIm5hbWVzIjpbInNlcmlhbGl6ZSIsInVzZXJzQ2FjaGUiLCJnZXRTdG9yYWdlIiwiU2VsZWN0b3JzIiwiY3JlYXRlVGh1bmRlciIsImludGVybmFsVG9QYXltZW50SW5mb3MiLCJwIiwiY3VycmVudFN1YnNjcmlwdGlvbiIsInN0YXRlIiwiY29sbGVjdGlvbk1ldGhvZCIsImFjdGl2YXRlZEF0IiwiRGF0ZSIsImNyZWF0ZWRBdCIsInVwZGF0ZWRBdCIsInRyaWFsRW5kc0F0IiwidHJpYWxTdGFydGVkQXQiLCJwYXVzZWRBdCIsImN1cnJlbnRQZXJpb2RFbmRzQXQiLCJjdXJyZW50UGVyaW9kU3RhcnRlZEF0IiwiY2FuY2VsZWRBdCIsImV4cGlyZXNBdCIsImludm9pY2VzIiwibWFwIiwiaSIsImRhdGUiLCJkdWUiLCJzdGF0dXMiLCJwbGFuc0NvZGVzIiwiaXNWYWxpZFBsYW4iLCJwbGFuQ29kZSIsImluY2x1ZGVzIiwiZ2V0VXNlclNlbGVjdG9yIiwidXNlcklkIiwid2l0aFB1YmxpY0tleSIsInF1ZXJ5IiwidXNlciIsImlkIiwiZmlyc3RuYW1lIiwibGFzdG5hbWUiLCJsYW5nIiwicHVibGljS2V5IiwidW5kZWZpbmVkIiwiZW1haWwiLCJwaG9uZSIsInJvbGUiLCJkZWxldGVkQXQiLCJsYXN0TG9naW4iLCJnZXRVc2VyIiwicGFyYW1zIiwic2VsZWN0b3IiLCJjbGllbnQiLCJCYXNlQ2xpZW50Iiwic2Vzc2lvbiIsImVudiIsInNlc3Npb25JZCIsIl9nZXRCYXNlQ2xpZW50Iiwic2Vzc2lvbnMiLCJsYXN0QWN0aXZpdHkiLCJ1c2VyQWdlbnQiLCJpcCIsImNpdHkiLCJjb3VudHJ5IiwiYXBwU2Vzc2lvbnMiLCJ1c2VyQXBwIiwiYXBwIiwibmFtZSIsImRhdGEiLCJzIiwiYSIsImxvZ291dCIsImxvY2FsIiwiand0IiwiY2xlYXIiLCJ1c2VyQXBwS2V5cyIsInVzZXJBcHBTZXNzaW9uIiwibXV0YXRpb24iLCJtZSIsInNldCIsInVwZGF0ZVByb2ZpbGUiLCJFcnJvciIsInBsYW5zIiwia2luZCIsImNvZGVzIiwibGltaXRzIiwiZG93bmxvYWRCYW5kd2lkdGgiLCJkb3dubG9hZENvdW50IiwiaGFyZEZpbGVDb3VudCIsImhhcmRGaWxlU2l6ZSIsInBlckZpbGVTaXplIiwidXBsb2FkQmFuZHdpZHRoIiwidXBsb2FkQ291bnQiLCJyZWNlaXZlZE1haWxzIiwiY291bnQiLCJmaWxlQ291bnQiLCJmaWxlU2l6ZSIsImhhcmRDb3VudCIsInNlbnRNYWlscyIsInBheSIsImlucHV0IiwiYXV0b1JlbmV3IiwiY2FuY2VsUGF5bWVudCIsInBheW1lbnRJbmZvcyIsImhvc3RlZFVybCIsImF1dG9yZW5ldyIsInBsYW4iLCJ0b3RhbCIsInBkZiIsImN1cnJlbmN5IiwiY2xvdWQiLCJzaXplIiwibWF4U2l6ZSIsIm1heENvdW50IiwibWFpbCIsInJlY2VpdmVkIiwibWF4RmlsZUNvdW50IiwibWF4RmlsZVNpemUiLCJzZW50IiwiQmlnSW50IiwiZ29kRmF0aGVyQW5kQ2hpbGRyZW4iLCJnb2RDaGlsZHJlbiIsImdvZEZhdGhlciIsInVwZGF0ZUFwcERCQ29uZmlnIiwiYXBwQ29kZSIsImNvbmZpZyIsImRiQ29uZmlnIiwiSlNPTiIsInN0cmluZ2lmeSIsImdldEFwcERCQ29uZmlnIiwiZ2V0RkFRIiwiZmFxIiwiYW5zd2VyIiwib3JkZXIiLCJxdWVzdGlvbiIsImdldEJsb2ciLCJibG9nIiwiYmxvZ0lkIiwiYXV0aG9yIiwiYm9keSIsImltYWdlIiwiaW1hZ2VBbHQiLCJzdW1tYXJ5IiwidGl0bGUiLCJiIiwicmVwb3J0VXNlciIsInJlcG9ydGVkVXNlcklkIiwiY3VzdG9tTWVzc2FnZSIsInNlbmRSZXBvcnQiLCJyZXBvcnRlZFVzZXIiLCJkZWxldGVVc2VyIiwiZGJHZXQiLCJmaWVsZCIsInJlcyIsImRiU2V0IiwidmFsdWUiLCJ0b1N0cmluZyIsImRiU2VhcmNoIiwic2VhcmNoIiwiZGVsZXRlRm9sZGVyIiwibW92ZUZvbGRlcnMiLCJmb2xkZXJzSWQiLCJwYXJlbnRGb2xkZXJJZCIsIm1vdmVGaWxlcyIsImZpbGVzSWQiLCJmb2xkZXJTaXplIiwiZm9sZGVySWQiLCJzaXplQmVmb3JlIiwiZ2V0QmFzZVVybCIsImdyYXBoY2RuIiwicHJvY2VzcyIsIk5PREVfRU5WIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUVBLFNBQVNBLFNBQVQsUUFBMEIsTUFBMUI7QUFDQSxTQUFTQyxVQUFULFFBQTJCLFlBQTNCO0FBR0EsU0FBU0MsVUFBVCxRQUEyQixxQkFBM0I7QUFRQSxTQUFTQyxTQUFULFFBQTBCLGlCQUExQjtBQUNBLFNBQVNDLGFBQVQsUUFBOEIsa0JBQTlCOztBQXlLQSxTQUFTQyxzQkFBVCxDQUFnQ0MsQ0FBaEMsRUFBdUU7QUFDckUseUNBQ0tBLENBREw7QUFFRUMsSUFBQUEsbUJBQW1CLGtDQUNkRCxDQUFDLENBQUNDLG1CQURZO0FBRWpCQyxNQUFBQSxLQUFLLEVBQUVGLENBQUMsQ0FBQ0MsbUJBQUYsQ0FBc0JDLEtBRlo7QUFHakJDLE1BQUFBLGdCQUFnQixFQUFFSCxDQUFDLENBQUNDLG1CQUFGLENBQ2ZFLGdCQUpjO0FBS2pCQyxNQUFBQSxXQUFXLEVBQUVKLENBQUMsQ0FBQ0MsbUJBQUYsQ0FBc0JHLFdBQXRCLEdBQ1QsSUFBSUMsSUFBSixDQUFTTCxDQUFDLENBQUNDLG1CQUFGLENBQXNCRyxXQUEvQixDQURTLEdBRVQsSUFQYTtBQVFqQkUsTUFBQUEsU0FBUyxFQUFFTixDQUFDLENBQUNDLG1CQUFGLENBQXNCSyxTQUF0QixHQUNQLElBQUlELElBQUosQ0FBU0wsQ0FBQyxDQUFDQyxtQkFBRixDQUFzQkssU0FBL0IsQ0FETyxHQUVQLElBVmE7QUFXakJDLE1BQUFBLFNBQVMsRUFBRVAsQ0FBQyxDQUFDQyxtQkFBRixDQUFzQk0sU0FBdEIsR0FDUCxJQUFJRixJQUFKLENBQVNMLENBQUMsQ0FBQ0MsbUJBQUYsQ0FBc0JNLFNBQS9CLENBRE8sR0FFUCxJQWJhO0FBY2pCQyxNQUFBQSxXQUFXLEVBQUVSLENB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LEVBQUVRLE1BQU0sQ0FBQzhDLFVBQVUsQ0FBQ3RELElBQVosQ0FEUDtBQUVMd0QsZ0JBQUFBLFVBQVUsRUFBRWhELE1BQU0sQ0FBQzhDLFVBQVUsQ0FBQ0UsVUFBWjtBQUZiLGVBckJUOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEtBOXFCRjs7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQTs7QUFBQTtBQUFBOztBQUFhbEgsVSxDQUNZbUgsVSxHQUFhLFVBQ2xDakgsR0FEa0MsRUFFbENrSCxRQUZrQyxFQUd2QjtBQUFBLE1BRlhsSCxHQUVXO0FBRlhBLElBQUFBLEdBRVcsR0FGTyxNQUVQO0FBQUE7O0FBQUEsTUFEWGtILFFBQ1c7QUFEWEEsSUFBQUEsUUFDVyxHQURBLElBQ0E7QUFBQTs7QUFDWCxNQUFJQyxPQUFPLENBQUNuSCxHQUFSLENBQVlvSCxRQUFaLEtBQXlCLE1BQTdCLEVBQXFDO0FBQ25DLFdBQU8sK0JBQVA7QUFDRDs7QUFFRCxVQUFRcEgsR0FBUjtBQUNFLFNBQUssTUFBTDtBQUNFLGFBQU9rSCxRQUFRLEdBQ1gsOEJBRFcsR0FFWCxzRUFGSjs7QUFHRixTQUFLLFNBQUw7QUFDRSxhQUFPLHlFQUFQOztBQUNGLFNBQUssS0FBTDtBQUNBO0FBQ0UsYUFBTyxxRUFBUDtBQVRKO0FBV0QsQzs7QUFwQlVwSCxVLENBc0JhSSxjLEdBQWlCLFVBQ3ZDRixHQUR1QyxFQUV2Q0QsT0FGdUM7QUFBQSxTQUl2Q2hELGFBQWEsQ0FBQytDLFVBQVUsQ0FBQ21ILFVBQVgsQ0FBc0JqSCxHQUF0QixDQUFELEVBQTZCRCxPQUE3QixDQUowQjtBQUFBLEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERvd25sb2FkUHJvZ3Jlc3MgYXMgRExQcm9ncmVzcyB9IGZyb20gXCJreVwiO1xuaW1wb3J0IHR5cGUgeyBEb2N1bWVudCB9IGZyb20gXCJic29uXCI7XG5pbXBvcnQgeyBzZXJpYWxpemUgfSBmcm9tIFwiYnNvblwiO1xuaW1wb3J0IHsgdXNlcnNDYWNoZSB9IGZyb20gXCIuL2NhY2hlLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFVzZXJTZXNzaW9uIH0gZnJvbSBcIi4vY2xpZW50L3R5cGVzL2luZGV4LmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNlY3JlY3lFbnYgfSBmcm9tIFwiLi9jbGllbnQvaGVscGVycy5qc1wiO1xuaW1wb3J0IHsgZ2V0U3RvcmFnZSB9IGZyb20gXCIuL2NsaWVudC9zdG9yYWdlLmpzXCI7XG5pbXBvcnQgdHlwZSB7XG4gIExhbmcsXG4gIFBheUlucHV0VHlwZSxcbiAgUGxhbktpbmQsXG4gIFRodW5kZXIsXG4gIFVzZXJSb2xlXG59IGZyb20gXCIuL3pldXMvaW5kZXguanNcIjtcbmltcG9ydCB7IFNlbGVjdG9ycyB9IGZyb20gXCIuL3pldXMvaW5kZXguanNcIjtcbmltcG9ydCB7IGNyZWF0ZVRodW5kZXIgfSBmcm9tIFwiLi9aZXVzVGh1bmRlci5qc1wiO1xuXG5leHBvcnQgdHlwZSBEb3dubG9hZFByb2dyZXNzID0gRExQcm9ncmVzcztcblxuZXhwb3J0IHR5cGUgUGF5SW5wdXQgPSB7XG4gIHR5cGU6IFBheUlucHV0VHlwZTtcbiAgdG9rZW46IHN0cmluZztcbiAgZmlyc3ROYW1lOiBzdHJpbmc7XG4gIGxhc3ROYW1lOiBzdHJpbmc7XG4gIHN0cmVldDogc3RyaW5nO1xuICBwb3N0YWxDb2RlOiBzdHJpbmc7XG4gIGNpdHk6IHN0cmluZztcbiAgY291bnRyeTogc3RyaW5nO1xuICBtb250aDogc3RyaW5nO1xuICB5ZWFyOiBzdHJpbmc7XG4gIGN2djogc3RyaW5nO1xuICBudW1iZXI6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE1haWxMaW1pdHMgPSB7XG4gIGNvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBmaWxlQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGZpbGVTaXplPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGhhcmRGaWxlQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGhhcmRGaWxlU2l6ZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcGVyRmlsZVNpemU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBMaW1pdHMgPSB7XG4gIGRvd25sb2FkQmFuZHdpZHRoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBkb3dubG9hZENvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkRmlsZUNvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkRmlsZVNpemU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHBlckZpbGVTaXplPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICByZWNlaXZlZE1haWxzOiBNYWlsTGltaXRzO1xuICBzZW50TWFpbHM6IE1haWxMaW1pdHM7XG4gIHVwbG9hZEJhbmR3aWR0aD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgdXBsb2FkQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBHb2RVc2VyID0ge1xuICBpZDogc3RyaW5nO1xuICBmaXJzdG5hbWU6IHN0cmluZztcbiAgbGFzdG5hbWU6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgcGhvbmU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEdvZEZhdGhlckFuZENoaWxkcmVuID0ge1xuICBnb2RGYXRoZXI6IEdvZFVzZXIgfCBudWxsO1xuICBnb2RDaGlsZHJlbjogR29kVXNlcltdO1xufTtcblxuZXhwb3J0IHR5cGUgUGxhbiA9IHtcbiAgY29kZXM6IHN0cmluZ1tdO1xuICBraW5kOiBQbGFuS2luZDtcbiAgbGltaXRzOiBMaW1pdHM7XG59O1xuXG5leHBvcnQgdHlwZSBTdWJzY3JpcHRpb25TdGF0ZSA9XG4gIHwgXCJhY3RpdmVcIlxuICB8IFwiY2FuY2VsZWRcIlxuICB8IFwicGF1c2VkXCJcbiAgfCBcImV4cGlyZWRcIlxuICB8IFwiZnV0dXJlXCJcbiAgfCBcImluX3RyaWFsXCJcbiAgfCBcImxpdmVcIlxuICB8IFwicGFzdF9kdWVcIjtcblxuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uQ29sbGVjdGlvbk1ldGhvZCA9IFwiYXV0b21hdGljXCIgfCBcIm1hbnVhbFwiO1xuXG50eXBlIEludGVybmFsU3Vic2NyaXB0aW9uID0ge1xuICBhdXRvcmVuZXc6IGJvb2xlYW47XG4gIGFjdGl2YXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3VycmVudFBlcmlvZEVuZHNBdD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGN1cnJlbnRQZXJpb2RTdGFydGVkQXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBjYW5jZWxlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3JlYXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgZXhwaXJlc0F0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGF1c2VkQXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB0cmlhbEVuZHNBdD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHRyaWFsU3RhcnRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdXBkYXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY29sbGVjdGlvbk1ldGhvZDogc3RyaW5nO1xuICBzdGF0ZTogc3RyaW5nO1xuICBwbGFuPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGxhbkNvZGU/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB0b3RhbD86IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQ7XG59O1xuXG50eXBlIFJlY3VybHlJbnZvaWNlU3RhdHVzID1cbiAgfCBcInBlbmRpbmdcIlxuICB8IFwicGFpZFwiXG4gIHwgXCJmYWlsZWRcIlxuICB8IFwicGFzdF9kdWVcIlxuICB8IFwib3BlblwiXG4gIHwgXCJjbG9zZWRcIlxuICB8IFwidm9pZGVkXCJcbiAgfCBcInByb2Nlc3NpbmdcIjtcblxudHlwZSBJbnRlcm5hbFJlY3VybHlJbnZvaWNlcyA9IHtcbiAgcGRmOiBzdHJpbmc7XG4gIGRhdGU6IHN0cmluZztcbiAgZHVlOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICB0b3RhbDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGN1cnJlbmN5OiBzdHJpbmc7XG59O1xuXG50eXBlIEludGVybmFsUGF5bWVudEluZm9zID0ge1xuICBob3N0ZWRVcmw6IHN0cmluZztcbiAgY3VycmVudFN1YnNjcmlwdGlvbjogSW50ZXJuYWxTdWJzY3JpcHRpb247XG4gIGludm9pY2VzOiBJbnRlcm5hbFJlY3VybHlJbnZvaWNlc1tdO1xufTtcblxuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uID0ge1xuICBhdXRvcmVuZXc6IGJvb2xlYW47XG4gIGFjdGl2YXRlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGN1cnJlbnRQZXJpb2RFbmRzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3VycmVudFBlcmlvZFN0YXJ0ZWRBdD86IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBjYW5jZWxlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGNyZWF0ZWRBdD86IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBleHBpcmVzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGF1c2VkQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdHJpYWxFbmRzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdHJpYWxTdGFydGVkQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdXBkYXRlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGNvbGxlY3Rpb25NZXRob2Q6IFN1YnNjcmlwdGlvbkNvbGxlY3Rpb25NZXRob2Q7XG4gIHN0YXRlOiBTdWJzY3JpcHRpb25TdGF0ZTtcbiAgcGxhbj86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHBsYW5Db2RlPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdG90YWw/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IHR5cGUgUmVjdXJseUludm9pY2VzID0ge1xuICBwZGY6IHN0cmluZztcbiAgZGF0ZTogRGF0ZTtcbiAgZHVlOiBEYXRlO1xuICBzdGF0dXM6IFJlY3VybHlJbnZvaWNlU3RhdHVzO1xuICB0b3RhbDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGN1cnJlbmN5OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBQYXltZW50SW5mb3MgPSB7XG4gIGhvc3RlZFVybDogc3RyaW5nO1xuICBjdXJyZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIGludm9pY2VzOiBSZWN1cmx5SW52b2ljZXNbXTtcbn07XG5cbmV4cG9ydCB0eXBlIFNlbmRSZXBvcnQgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHVzZXI6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGZpcnN0bmFtZTogc3RyaW5nO1xuICAgIGxhc3RuYW1lOiBzdHJpbmc7XG4gICAgZW1haWw6IHN0cmluZztcbiAgfTtcbiAgcmVwb3J0ZWRVc2VyOiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBmaXJzdG5hbWU6IHN0cmluZztcbiAgICBsYXN0bmFtZTogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gIH07XG4gIGN1c3RvbU1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5mdW5jdGlvbiBpbnRlcm5hbFRvUGF5bWVudEluZm9zKHA6IEludGVybmFsUGF5bWVudEluZm9zKTogUGF5bWVudEluZm9zIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5wLFxuICAgIGN1cnJlbnRTdWJzY3JpcHRpb246IHtcbiAgICAgIC4uLnAuY3VycmVudFN1YnNjcmlwdGlvbixcbiAgICAgIHN0YXRlOiBwLmN1cnJlbnRTdWJzY3JpcHRpb24uc3RhdGUgYXMgU3Vic2NyaXB0aW9uU3RhdGUsXG4gICAgICBjb2xsZWN0aW9uTWV0aG9kOiBwLmN1cnJlbnRTdWJzY3JpcHRpb25cbiAgICAgICAgLmNvbGxlY3Rpb25NZXRob2QgYXMgU3Vic2NyaXB0aW9uQ29sbGVjdGlvbk1ldGhvZCxcbiAgICAgIGFjdGl2YXRlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24uYWN0aXZhdGVkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24uYWN0aXZhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGNyZWF0ZWRBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLmNyZWF0ZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi5jcmVhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHVwZGF0ZWRBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLnVwZGF0ZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi51cGRhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHRyaWFsRW5kc0F0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxFbmRzQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxFbmRzQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHRyaWFsU3RhcnRlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxTdGFydGVkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxTdGFydGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHBhdXNlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24ucGF1c2VkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24ucGF1c2VkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGN1cnJlbnRQZXJpb2RFbmRzQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jdXJyZW50UGVyaW9kRW5kc0F0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmN1cnJlbnRQZXJpb2RFbmRzQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGN1cnJlbnRQZXJpb2RTdGFydGVkQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jdXJyZW50UGVyaW9kU3RhcnRlZEF0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmN1cnJlbnRQZXJpb2RTdGFydGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGNhbmNlbGVkQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jYW5jZWxlZEF0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmNhbmNlbGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGV4cGlyZXNBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLmV4cGlyZXNBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi5leHBpcmVzQXQpXG4gICAgICAgIDogbnVsbFxuICAgIH0sXG4gICAgaW52b2ljZXM6IHAuaW52b2ljZXMubWFwKGkgPT4gKHtcbiAgICAgIC4uLmksXG4gICAgICBkYXRlOiBuZXcgRGF0ZShpLmRhdGUpLFxuICAgICAgZHVlOiBuZXcgRGF0ZShpLmR1ZSksXG4gICAgICBzdGF0dXM6IGkuc3RhdHVzIGFzIFJlY3VybHlJbnZvaWNlU3RhdHVzXG4gICAgfSkpXG4gIH07XG59XG5cbmNvbnN0IHBsYW5zQ29kZXMgPSBbXG4gIFwiYmFzaWNfbW9udGhcIixcbiAgXCJhZHZhbmNlZF9tb250aFwiLFxuICBcInByb19tb250aFwiLFxuICBcImJhc2ljX3llYXJcIixcbiAgXCJhZHZhbmNlZF95ZWFyXCIsXG4gIFwicHJvX3llYXJcIlxuXSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2VjcmVjeVBsYW5zQ29kZXMgPSB0eXBlb2YgcGxhbnNDb2Rlc1tudW1iZXJdO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFBsYW4ocGxhbkNvZGU6IHN0cmluZyk6IHBsYW5Db2RlIGlzIFNlY3JlY3lQbGFuc0NvZGVzIHtcbiAgcmV0dXJuIHBsYW5zQ29kZXMuaW5jbHVkZXMocGxhbkNvZGUgYXMgU2VjcmVjeVBsYW5zQ29kZXMpO1xufVxuXG5leHBvcnQgdHlwZSBVc2VyRGF0YTxcbiAgVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbj4gPSB7XG4gIGlzU3VwZXJ1c2VyOiBib29sZWFuO1xuICBpc1NlYXJjaGFibGU6IGJvb2xlYW47XG59ICYgVDtcblxuZXhwb3J0IHR5cGUgRm9sZGVyU2l6ZSA9IHsgc2l6ZTogYmlnaW50OyBzaXplQmVmb3JlOiBiaWdpbnQgfTtcblxuY29uc3QgZ2V0VXNlclNlbGVjdG9yID0gKFxuICB1c2VySWQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIHdpdGhQdWJsaWNLZXk6IGJvb2xlYW4gfCB1bmRlZmluZWRcbikgPT4ge1xuICBjb25zdCB7IHVzZXIgfSA9IFNlbGVjdG9ycy5xdWVyeSh7XG4gICAgdXNlcjogW1xuICAgICAgeyB1c2VySWQgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgIGZpcnN0bmFtZTogdHJ1ZSxcbiAgICAgICAgbGFzdG5hbWU6IHRydWUsXG4gICAgICAgIGxhbmc6IHRydWUsXG4gICAgICAgIHB1YmxpY0tleTogd2l0aFB1YmxpY0tleSA/IHRydWUgOiB1bmRlZmluZWQsXG4gICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICBwaG9uZTogdHJ1ZSxcbiAgICAgICAgcm9sZTogdHJ1ZSxcbiAgICAgICAgZGVsZXRlZEF0OiB0cnVlLFxuICAgICAgICBsYXN0TG9naW46IHRydWVcbiAgICAgIH1cbiAgICBdXG4gIH0pO1xuICByZXR1cm4gdXNlcjtcbn07XG5cbmV4cG9ydCB0eXBlIEFwcERCQ29uZmlnRmllbGQgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogXCJzdHJpbmdcIiB8IFwibnVtYmVyXCIgfCBcImJvb2xlYW5cIiB8IFwib2JqZWN0XCI7XG4gIGlzQXJyYXk/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBpc051bGxhYmxlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgaXNFZGl0YWJsZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGlzS2V5PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgZGVmYXVsdD86IHVua25vd247XG59O1xuXG5leHBvcnQgdHlwZSBBcHBEQkNvbmZpZyA9IHtcbiAgZmllbGRzOiBBcHBEQkNvbmZpZ0ZpZWxkW107XG59O1xuXG5leHBvcnQgdHlwZSBGYXFJdGVtID0ge1xuICBvcmRlcjogbnVtYmVyO1xuICBxdWVzdGlvbjogc3RyaW5nO1xuICBhbnN3ZXI6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEJsb2dJdGVtID0ge1xuICBpZDogc3RyaW5nO1xuICBibG9nSWQ6IHN0cmluZztcbiAgb3JkZXI6IG51bWJlcjtcbiAgYXV0aG9yOiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZztcbiAgZGF0ZTogRGF0ZTtcbiAgaW1hZ2U6IHN0cmluZztcbiAgaW1hZ2VBbHQ6IHN0cmluZztcbiAgc3VtbWFyeTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVXNlckJhc2UgPSB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIHBob25lOiBzdHJpbmc7XG4gIGxhc3RuYW1lOiBzdHJpbmc7XG4gIHJvbGU6IFVzZXJSb2xlO1xuICBmaXJzdG5hbWU6IHN0cmluZztcbiAgaWQ6IHN0cmluZztcbiAgZGVsZXRlZEF0OiBEYXRlIHwgbnVsbDtcbiAgbGFzdExvZ2luOiBEYXRlO1xuICBsYW5nOiBMYW5nO1xufTtcblxudHlwZSBXaXRoUHVibGljS2V5ID0geyB3aXRoUHVibGljS2V5PzogYm9vbGVhbiB9O1xuXG5leHBvcnQgdHlwZSBVc2VyPFQgZXh0ZW5kcyBXaXRoUHVibGljS2V5ID0gV2l0aFB1YmxpY0tleT4gPSBUIGV4dGVuZHMge1xuICB3aXRoUHVibGljS2V5OiB0cnVlO1xufVxuICA/IFVzZXJCYXNlICYgeyBwdWJsaWNLZXk6IHN0cmluZyB9XG4gIDogVXNlckJhc2U7XG5cbnR5cGUgQ2xhc3NHZXRVc2VyUGFyYW1zID0gV2l0aFB1YmxpY0tleSAmIHtcbiAgdXNlcklkPzogc3RyaW5nO1xufTtcbnR5cGUgR2V0VXNlclBhcmFtcyA9IENsYXNzR2V0VXNlclBhcmFtcyAmIHtcbiAgY2xpZW50OiBSZXR1cm5UeXBlPHR5cGVvZiBUaHVuZGVyPjtcbn07XG5cbnR5cGUgU3RhdGljR2V0VXNlclBhcmFtcyA9IENsYXNzR2V0VXNlclBhcmFtcyAmIHtcbiAgZW52OiBTZWNyZWN5RW52O1xufTtcblxuYXN5bmMgZnVuY3Rpb24gZ2V0VXNlcjxVIGV4dGVuZHMgV2l0aFB1YmxpY0tleT4oXG4gIHBhcmFtczogR2V0VXNlclBhcmFtc1xuKTogUHJvbWlzZTxVc2VyPFU+IHwgbnVsbD4ge1xuICBjb25zdCBzZWxlY3RvciA9IGdldFVzZXJTZWxlY3RvcihwYXJhbXMudXNlcklkLCBwYXJhbXMud2l0aFB1YmxpY0tleSk7XG4gIGNvbnN0IHsgdXNlciB9ID0gYXdhaXQgcGFyYW1zLmNsaWVudC5xdWVyeSh7XG4gICAgdXNlcjogc2VsZWN0b3JcbiAgfSk7XG5cbiAgaWYgKCF1c2VyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnVzZXIsXG4gICAgbGFzdExvZ2luOiBuZXcgRGF0ZSh1c2VyLmxhc3RMb2dpbiksXG4gICAgZGVsZXRlZEF0OiB1c2VyLmRlbGV0ZWRBdCA/IG5ldyBEYXRlKHVzZXIuZGVsZXRlZEF0KSA6IG51bGxcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgQ2xvdWRMaW1pdHMgPSB7XG4gIGNvdW50OiBiaWdpbnQ7XG4gIG1heENvdW50OiBiaWdpbnQgfCBudWxsO1xuICBzaXplOiBiaWdpbnQ7XG4gIG1heFNpemU6IGJpZ2ludCB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBNYWlsTGltaXRzVmFsdWVzID0ge1xuICBjb3VudDogYmlnaW50O1xuICBtYXhDb3VudDogYmlnaW50IHwgbnVsbDtcbiAgZmlsZVNpemU6IGJpZ2ludDtcbiAgbWF4RmlsZVNpemU6IGJpZ2ludCB8IG51bGw7XG4gIGZpbGVDb3VudDogYmlnaW50O1xuICBtYXhGaWxlQ291bnQ6IGJpZ2ludCB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBRdWVyeUxpbWl0cyA9IHtcbiAgY2xvdWQ6IENsb3VkTGltaXRzO1xuICBtYWlsOiB7XG4gICAgc2VudDogTWFpbExpbWl0c1ZhbHVlcztcbiAgICByZWNlaXZlZDogTWFpbExpbWl0c1ZhbHVlcztcbiAgfTtcbn07XG5cbmV4cG9ydCBjbGFzcyBCYXNlQ2xpZW50IHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBnZXRCYXNlVXJsID0gKFxuICAgIGVudjogU2VjcmVjeUVudiA9IFwicHJvZFwiLFxuICAgIGdyYXBoY2RuID0gdHJ1ZVxuICApOiBzdHJpbmcgPT4ge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJ0ZXN0XCIpIHtcbiAgICAgIHJldHVybiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDAwMC9ncmFwaHFsXCI7XG4gICAgfVxuXG4gICAgc3dpdGNoIChlbnYpIHtcbiAgICAgIGNhc2UgXCJwcm9kXCI6XG4gICAgICAgIHJldHVybiBncmFwaGNkblxuICAgICAgICAgID8gXCJodHRwczovL3NlY3JlY3kuZ3JhcGhjZG4uYXBwXCJcbiAgICAgICAgICA6IFwiaHR0cHM6Ly9hcGluc2x3ZGswbmZ0LWFwaXByb2QuZnVuY3Rpb25zLmZuYy5mci1wYXIuc2N3LmNsb3VkL2dyYXBocWxcIjtcbiAgICAgIGNhc2UgXCJzdGFnaW5nXCI6XG4gICAgICAgIHJldHVybiBcImh0dHBzOi8vYXBpbnNsd2RrMG5mdC1hcGlzdGFnaW5nLmZ1bmN0aW9ucy5mbmMuZnItcGFyLnNjdy5jbG91ZC9ncmFwaHFsXCI7XG4gICAgICBjYXNlIFwiZGV2XCI6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gXCJodHRwczovL2FwaW5zbHdkazBuZnQtYXBpZGV2LmZ1bmN0aW9ucy5mbmMuZnItcGFyLnNjdy5jbG91ZC9ncmFwaHFsXCI7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9nZXRCYXNlQ2xpZW50ID0gKFxuICAgIGVudjogU2VjcmVjeUVudixcbiAgICBzZXNzaW9uPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuICApOiBSZXR1cm5UeXBlPHR5cGVvZiBUaHVuZGVyPiA9PlxuICAgIGNyZWF0ZVRodW5kZXIoQmFzZUNsaWVudC5nZXRCYXNlVXJsKGVudiksIHNlc3Npb24pO1xuXG4gIHByb3RlY3RlZCBjbGllbnQ6IFJldHVyblR5cGU8dHlwZW9mIFRodW5kZXI+O1xuXG4gIHB1YmxpYyBzZXNzaW9uSWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzZXNzaW9uOiBzdHJpbmcsIGVudjogU2VjcmVjeUVudikge1xuICAgIHRoaXMuc2Vzc2lvbklkID0gc2Vzc2lvbjtcbiAgICB0aGlzLmNsaWVudCA9IEJhc2VDbGllbnQuX2dldEJhc2VDbGllbnQoZW52LCBzZXNzaW9uKTtcbiAgfVxuXG4gIGFzeW5jIHNlc3Npb25zKCk6IFByb21pc2U8VXNlclNlc3Npb25bXT4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmNsaWVudC5xdWVyeSh7XG4gICAgICB1c2VyOiBbXG4gICAgICAgIHt9LFxuICAgICAgICB7XG4gICAgICAgICAgc2Vzc2lvbnM6IHtcbiAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgbGFzdEFjdGl2aXR5OiB0cnVlLFxuICAgICAgICAgICAgdXNlckFnZW50OiB0cnVlLFxuICAgICAgICAgICAgaXA6IHRydWUsXG4gICAgICAgICAgICBjaXR5OiB0cnVlLFxuICAgICAgICAgICAgY291bnRyeTogdHJ1ZSxcbiAgICAgICAgICAgIGFwcFNlc3Npb25zOiB7XG4gICAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgICBsYXN0QWN0aXZpdHk6IHRydWUsXG4gICAgICAgICAgICAgIHVzZXJBZ2VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgaXA6IHRydWUsXG4gICAgICAgICAgICAgIGNpdHk6IHRydWUsXG4gICAgICAgICAgICAgIGNvdW50cnk6IHRydWUsXG4gICAgICAgICAgICAgIHVzZXJBcHA6IHtcbiAgICAgICAgICAgICAgICBhcHA6IHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IHRydWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGNvbnN0IHNlc3Npb25zOiBVc2VyU2Vzc2lvbltdID1cbiAgICAgIGRhdGEudXNlcj8uc2Vzc2lvbnMubWFwKHMgPT4gKHtcbiAgICAgICAgaWQ6IHMuaWQsXG4gICAgICAgIGlwOiBzLmlwLFxuICAgICAgICBjaXR5OiBzLmNpdHksXG4gICAgICAgIGNvdW50cnk6IHMuY291bnRyeSxcbiAgICAgICAgbGFzdEFjdGl2aXR5OiBzLmxhc3RBY3Rpdml0eSA/IG5ldyBEYXRlKHMubGFzdEFjdGl2aXR5KSA6IHVuZGVmaW5lZCxcbiAgICAgICAgdXNlckFnZW50OiBzLnVzZXJBZ2VudCxcbiAgICAgICAgYXBwU2Vzc2lvbnM6IHMuYXBwU2Vzc2lvbnMubWFwKGEgPT4gKHtcbiAgICAgICAgICBpZDogYS5pZCxcbiAgICAgICAgICBpcDogYS5pcCxcbiAgICAgICAgICBjaXR5OiBhLmNpdHksXG4gICAgICAgICAgY291bnRyeTogYS5jb3VudHJ5LFxuICAgICAgICAgIGxhc3RBY3Rpdml0eTogYS5sYXN0QWN0aXZpdHkgPyBuZXcgRGF0ZShhLmxhc3RBY3Rpdml0eSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgdXNlckFnZW50OiBhLnVzZXJBZ2VudCxcbiAgICAgICAgICBhcHA6IGEudXNlckFwcD8uYXBwLm5hbWUgPz8gXCJcIlxuICAgICAgICB9KSlcbiAgICAgIH0pKSA/PyBbXTtcblxuICAgIHJldHVybiBzZXNzaW9ucztcbiAgfVxuXG4gIGFzeW5jIGxvZ291dChzZXNzaW9uSWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFzZXNzaW9uSWQpIHtcbiAgICAgIGNvbnN0IGxvY2FsID0gZ2V0U3RvcmFnZShmYWxzZSk7XG4gICAgICBjb25zdCBzZXNzaW9uID0gZ2V0U3RvcmFnZSh0cnVlKTtcbiAgICAgIGxvY2FsLmp3dC5jbGVhcigpO1xuICAgICAgbG9jYWwudXNlckFwcEtleXMuY2xlYXIoKTtcbiAgICAgIGxvY2FsLnVzZXJBcHBTZXNzaW9uLmNsZWFyKCk7XG4gICAgICBzZXNzaW9uLmp3dC5jbGVhcigpO1xuICAgICAgc2Vzc2lvbi51c2VyQXBwS2V5cy5jbGVhcigpO1xuICAgICAgc2Vzc2lvbi51c2VyQXBwU2Vzc2lvbi5jbGVhcigpO1xuICAgICAgdXNlcnNDYWNoZS5jbGVhcigpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgICBsb2dvdXQ6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZXNzaW9uSWRcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRydWVcbiAgICAgICAgXVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvL1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG1lPFQgZXh0ZW5kcyBXaXRoUHVibGljS2V5ID0gV2l0aFB1YmxpY0tleT4oXG4gICAgcGFyYW1zPzogVFxuICApOiBQcm9taXNlPFVzZXI8VD4gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMudXNlcihwYXJhbXMgfHwgKHsgd2l0aFB1YmxpY0tleTogdHJ1ZSB9IGFzIFQpKTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyB1c2VyPFQgZXh0ZW5kcyBTdGF0aWNHZXRVc2VyUGFyYW1zPihcbiAgICBwYXJhbXM6IFQsXG4gICAgc2Vzc2lvbklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuICApOiBQcm9taXNlPFVzZXI8VD4gfCBudWxsPiB7XG4gICAgY29uc3QgdXNlciA9IGF3YWl0IGdldFVzZXI8VD4oe1xuICAgICAgY2xpZW50OiB0aGlzLl9nZXRCYXNlQ2xpZW50KHBhcmFtcy5lbnYsIHNlc3Npb25JZCksXG4gICAgICB1c2VySWQ6IHBhcmFtcy51c2VySWRcbiAgICB9KTtcblxuICAgIGlmICh1c2VyKSB7XG4gICAgICB1c2Vyc0NhY2hlLnNldCh1c2VyLmlkLCB1c2VyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXNlcjtcbiAgfVxuXG4gIGFzeW5jIHVzZXI8VCBleHRlbmRzIENsYXNzR2V0VXNlclBhcmFtcz4ocGFyYW1zOiBUKTogUHJvbWlzZTxVc2VyPFQ+IHwgbnVsbD4ge1xuICAgIGNvbnN0IHVzZXIgPSBhd2FpdCBnZXRVc2VyPFQ+KHtcbiAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICB1c2VySWQ6IHBhcmFtcy51c2VySWRcbiAgICB9KTtcblxuICAgIGlmICh1c2VyKSB7XG4gICAgICB1c2Vyc0NhY2hlLnNldCh1c2VyLmlkLCB1c2VyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXNlcjtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVByb2ZpbGUoe1xuICAgIGZpcnN0bmFtZSxcbiAgICBsYXN0bmFtZSxcbiAgICBsYW5nXG4gIH06IHtcbiAgICBmaXJzdG5hbWU6IHN0cmluZyB8IG51bGw7XG4gICAgbGFzdG5hbWU6IHN0cmluZyB8IG51bGw7XG4gICAgbGFuZzogTGFuZyB8IG51bGw7XG4gIH0pOiBQcm9taXNlPFVzZXI+IHtcbiAgICBjb25zdCB7IHVwZGF0ZVByb2ZpbGUgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIHVwZGF0ZVByb2ZpbGU6IFtcbiAgICAgICAge1xuICAgICAgICAgIGZpcnN0bmFtZSxcbiAgICAgICAgICBsYXN0bmFtZSxcbiAgICAgICAgICBsYW5nXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgbGFzdG5hbWU6IHRydWUsXG4gICAgICAgICAgbGFuZzogdHJ1ZSxcbiAgICAgICAgICBlbWFpbDogdHJ1ZSxcbiAgICAgICAgICBwaG9uZTogdHJ1ZSxcbiAgICAgICAgICByb2xlOiB0cnVlLFxuICAgICAgICAgIGRlbGV0ZWRBdDogdHJ1ZSxcbiAgICAgICAgICBsYXN0TG9naW46IHRydWVcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCF1cGRhdGVQcm9maWxlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udXBkYXRlUHJvZmlsZSxcbiAgICAgIGxhc3RMb2dpbjogbmV3IERhdGUodXBkYXRlUHJvZmlsZS5sYXN0TG9naW4pLFxuICAgICAgZGVsZXRlZEF0OiB1cGRhdGVQcm9maWxlLmRlbGV0ZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKHVwZGF0ZVByb2ZpbGUuZGVsZXRlZEF0KVxuICAgICAgICA6IG51bGxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIHBsYW5zKFxuICAgIGVudjogU2VjcmVjeUVudixcbiAgICBzZXNzaW9uSWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4gICk6IFByb21pc2U8UGxhbltdPiB7XG4gICAgY29uc3QgeyBwbGFucyB9ID0gYXdhaXQgQmFzZUNsaWVudC5fZ2V0QmFzZUNsaWVudChlbnYsIHNlc3Npb25JZCkucXVlcnkoe1xuICAgICAgcGxhbnM6IHtcbiAgICAgICAga2luZDogdHJ1ZSxcbiAgICAgICAgY29kZXM6IHRydWUsXG4gICAgICAgIGxpbWl0czoge1xuICAgICAgICAgIGRvd25sb2FkQmFuZHdpZHRoOiB0cnVlLFxuICAgICAgICAgIGRvd25sb2FkQ291bnQ6IHRydWUsXG4gICAgICAgICAgaGFyZEZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICBoYXJkRmlsZVNpemU6IHRydWUsXG4gICAgICAgICAgcGVyRmlsZVNpemU6IHRydWUsXG4gICAgICAgICAgdXBsb2FkQmFuZHdpZHRoOiB0cnVlLFxuICAgICAgICAgIHVwbG9hZENvdW50OiB0cnVlLFxuICAgICAgICAgIHJlY2VpdmVkTWFpbHM6IHtcbiAgICAgICAgICAgIGNvdW50OiB0cnVlLFxuICAgICAgICAgICAgZmlsZUNvdW50OiB0cnVlLFxuICAgICAgICAgICAgZmlsZVNpemU6IHRydWUsXG4gICAgICAgICAgICBoYXJkQ291bnQ6IHRydWUsXG4gICAgICAgICAgICBoYXJkRmlsZUNvdW50OiB0cnVlLFxuICAgICAgICAgICAgaGFyZEZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgICAgcGVyRmlsZVNpemU6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbnRNYWlsczoge1xuICAgICAgICAgICAgY291bnQ6IHRydWUsXG4gICAgICAgICAgICBmaWxlQ291bnQ6IHRydWUsXG4gICAgICAgICAgICBmaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgIGhhcmRDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGhhcmRGaWxlQ291bnQ6IHRydWUsXG4gICAgICAgICAgICBoYXJkRmlsZVNpemU6IHRydWUsXG4gICAgICAgICAgICBwZXJGaWxlU2l6ZTogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBsYW5zO1xuICB9XG5cbiAgYXN5bmMgcGF5KFxuICAgIHBsYW5Db2RlOiBTZWNyZWN5UGxhbnNDb2RlcyxcbiAgICBpbnB1dDogUGF5SW5wdXQsXG4gICAgYXV0b1JlbmV3PzogYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBwYXkgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIHBheTogW1xuICAgICAgICB7XG4gICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgcGxhbkNvZGUsXG4gICAgICAgICAgYXV0b1JlbmV3XG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBwYXkgPz8gZmFsc2U7XG4gIH1cblxuICBhc3luYyBjYW5jZWxQYXltZW50KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgY2FuY2VsUGF5bWVudCB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgY2FuY2VsUGF5bWVudDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNhbmNlbFBheW1lbnQgPz8gZmFsc2U7XG4gIH1cblxuICBhc3luYyBwYXltZW50SW5mb3MoKTogUHJvbWlzZTxQYXltZW50SW5mb3MgfCBudWxsPiB7XG4gICAgY29uc3QgeyBwYXltZW50SW5mb3MgfSA9IGF3YWl0IHRoaXMuY2xpZW50LnF1ZXJ5KHtcbiAgICAgIHBheW1lbnRJbmZvczoge1xuICAgICAgICBob3N0ZWRVcmw6IHRydWUsXG4gICAgICAgIGN1cnJlbnRTdWJzY3JpcHRpb246IHtcbiAgICAgICAgICBhdXRvcmVuZXc6IHRydWUsXG4gICAgICAgICAgYWN0aXZhdGVkQXQ6IHRydWUsXG4gICAgICAgICAgY3VycmVudFBlcmlvZEVuZHNBdDogdHJ1ZSxcbiAgICAgICAgICBjdXJyZW50UGVyaW9kU3RhcnRlZEF0OiB0cnVlLFxuICAgICAgICAgIGNhbmNlbGVkQXQ6IHRydWUsXG4gICAgICAgICAgY3JlYXRlZEF0OiB0cnVlLFxuICAgICAgICAgIGV4cGlyZXNBdDogdHJ1ZSxcbiAgICAgICAgICBwYXVzZWRBdDogdHJ1ZSxcbiAgICAgICAgICB0cmlhbEVuZHNBdDogdHJ1ZSxcbiAgICAgICAgICB0cmlhbFN0YXJ0ZWRBdDogdHJ1ZSxcbiAgICAgICAgICB1cGRhdGVkQXQ6IHRydWUsXG4gICAgICAgICAgc3RhdGU6IHRydWUsXG4gICAgICAgICAgY29sbGVjdGlvbk1ldGhvZDogdHJ1ZSxcbiAgICAgICAgICBwbGFuOiB0cnVlLFxuICAgICAgICAgIHBsYW5Db2RlOiB0cnVlLFxuXG4gICAgICAgICAgdG90YWw6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgaW52b2ljZXM6IHtcbiAgICAgICAgICBwZGY6IHRydWUsXG4gICAgICAgICAgZGF0ZTogdHJ1ZSxcbiAgICAgICAgICBkdWU6IHRydWUsXG4gICAgICAgICAgc3RhdHVzOiB0cnVlLFxuICAgICAgICAgIHRvdGFsOiB0cnVlLFxuICAgICAgICAgIG5hbWU6IHRydWUsXG4gICAgICAgICAgY3VycmVuY3k6IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCFwYXltZW50SW5mb3MpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBpbnRlcm5hbFRvUGF5bWVudEluZm9zKHBheW1lbnRJbmZvcyk7XG4gIH1cblxuICBhc3luYyBsaW1pdHMoKTogUHJvbWlzZTxRdWVyeUxpbWl0cyB8IG51bGw+IHtcbiAgICBjb25zdCB7IGxpbWl0cyB9ID0gYXdhaXQgdGhpcy5jbGllbnQucXVlcnkoe1xuICAgICAgbGltaXRzOiB7XG4gICAgICAgIGNsb3VkOiB7XG4gICAgICAgICAgc2l6ZTogdHJ1ZSxcbiAgICAgICAgICBtYXhTaXplOiB0cnVlLFxuICAgICAgICAgIGNvdW50OiB0cnVlLFxuICAgICAgICAgIG1heENvdW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIG1haWw6IHtcbiAgICAgICAgICByZWNlaXZlZDoge1xuICAgICAgICAgICAgY291bnQ6IHRydWUsXG4gICAgICAgICAgICBtYXhDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIG1heEZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgICAgbWF4RmlsZVNpemU6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbnQ6IHtcbiAgICAgICAgICAgIGNvdW50OiB0cnVlLFxuICAgICAgICAgICAgbWF4Q291bnQ6IHRydWUsXG4gICAgICAgICAgICBmaWxlQ291bnQ6IHRydWUsXG4gICAgICAgICAgICBtYXhGaWxlQ291bnQ6IHRydWUsXG4gICAgICAgICAgICBmaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgIG1heEZpbGVTaXplOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoIWxpbWl0cykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgeyBjbG91ZCwgbWFpbCB9ID0gbGltaXRzO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNsb3VkOiB7XG4gICAgICAgIGNvdW50OiBCaWdJbnQoY2xvdWQuY291bnQpLFxuICAgICAgICBzaXplOiBCaWdJbnQoY2xvdWQuc2l6ZSksXG4gICAgICAgIG1heENvdW50OiBjbG91ZC5tYXhDb3VudCA/IEJpZ0ludChjbG91ZC5tYXhDb3VudCkgOiBudWxsLFxuICAgICAgICBtYXhTaXplOiBjbG91ZC5tYXhTaXplID8gQmlnSW50KGNsb3VkLm1heFNpemUpIDogbnVsbFxuICAgICAgfSxcbiAgICAgIG1haWw6IHtcbiAgICAgICAgcmVjZWl2ZWQ6IHtcbiAgICAgICAgICBjb3VudDogQmlnSW50KG1haWwucmVjZWl2ZWQuY291bnQpLFxuICAgICAgICAgIG1heENvdW50OiBtYWlsLnJlY2VpdmVkLm1heENvdW50XG4gICAgICAgICAgICA/IEJpZ0ludChtYWlsLnJlY2VpdmVkLm1heENvdW50KVxuICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgIGZpbGVDb3VudDogQmlnSW50KG1haWwucmVjZWl2ZWQuZmlsZUNvdW50KSxcbiAgICAgICAgICBtYXhGaWxlQ291bnQ6IG1haWwucmVjZWl2ZWQubWF4RmlsZUNvdW50XG4gICAgICAgICAgICA/IEJpZ0ludChtYWlsLnJlY2VpdmVkLm1heEZpbGVDb3VudClcbiAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICBmaWxlU2l6ZTogQmlnSW50KG1haWwucmVjZWl2ZWQuZmlsZVNpemUpLFxuICAgICAgICAgIG1heEZpbGVTaXplOiBtYWlsLnJlY2VpdmVkLm1heEZpbGVTaXplXG4gICAgICAgICAgICA/IEJpZ0ludChtYWlsLnJlY2VpdmVkLm1heEZpbGVTaXplKVxuICAgICAgICAgICAgOiBudWxsXG4gICAgICAgIH0sXG4gICAgICAgIHNlbnQ6IHtcbiAgICAgICAgICBjb3VudDogQmlnSW50KG1haWwuc2VudC5jb3VudCksXG4gICAgICAgICAgbWF4Q291bnQ6IG1haWwuc2VudC5tYXhDb3VudCA/IEJpZ0ludChtYWlsLnNlbnQubWF4Q291bnQpIDogbnVsbCxcbiAgICAgICAgICBmaWxlQ291bnQ6IEJpZ0ludChtYWlsLnNlbnQuZmlsZUNvdW50KSxcbiAgICAgICAgICBtYXhGaWxlQ291bnQ6IG1haWwuc2VudC5tYXhGaWxlQ291bnRcbiAgICAgICAgICAgID8gQmlnSW50KG1haWwuc2VudC5tYXhGaWxlQ291bnQpXG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgZmlsZVNpemU6IEJpZ0ludChtYWlsLnNlbnQuZmlsZVNpemUpLFxuICAgICAgICAgIG1heEZpbGVTaXplOiBtYWlsLnNlbnQubWF4RmlsZVNpemVcbiAgICAgICAgICAgID8gQmlnSW50KG1haWwuc2VudC5tYXhGaWxlU2l6ZSlcbiAgICAgICAgICAgIDogbnVsbFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGdvZEZhdGhlckFuZENoaWxkcmVuKCk6IFByb21pc2U8R29kRmF0aGVyQW5kQ2hpbGRyZW4gfCBudWxsPiB7XG4gICAgY29uc3QgeyB1c2VyIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5xdWVyeSh7XG4gICAgICB1c2VyOiBbXG4gICAgICAgIHt9LFxuICAgICAgICB7XG4gICAgICAgICAgZ29kQ2hpbGRyZW46IHtcbiAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgZmlyc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbGFzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBlbWFpbDogdHJ1ZSxcbiAgICAgICAgICAgIHBob25lOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBnb2RGYXRoZXI6IHtcbiAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgZmlyc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbGFzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBlbWFpbDogdHJ1ZSxcbiAgICAgICAgICAgIHBob25lOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXVzZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi51c2VyLFxuICAgICAgZ29kRmF0aGVyOiB1c2VyLmdvZEZhdGhlciA/PyBudWxsXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyB1cGRhdGVBcHBEQkNvbmZpZyh7XG4gICAgYXBwQ29kZSxcbiAgICBjb25maWcsXG4gICAgZW52LFxuICAgIHNlc3Npb25JZFxuICB9OiB7XG4gICAgYXBwQ29kZTogc3RyaW5nO1xuICAgIGNvbmZpZzogQXBwREJDb25maWc7XG4gICAgZW52OiBTZWNyZWN5RW52O1xuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPEFwcERCQ29uZmlnPiB7XG4gICAgY29uc3QgeyBkYkNvbmZpZyB9ID0gYXdhaXQgQmFzZUNsaWVudC5fZ2V0QmFzZUNsaWVudChcbiAgICAgIGVudixcbiAgICAgIHNlc3Npb25JZFxuICAgICkubXV0YXRpb24oe1xuICAgICAgZGJDb25maWc6IFtcbiAgICAgICAge1xuICAgICAgICAgIGFwcENvZGUsXG4gICAgICAgICAgY29uZmlnOiBKU09OLnN0cmluZ2lmeShjb25maWcpXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBkYkNvbmZpZztcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBnZXRBcHBEQkNvbmZpZyhcbiAgICBhcHBDb2RlOiBzdHJpbmcsXG4gICAgZW52OiBTZWNyZWN5RW52LFxuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxBcHBEQkNvbmZpZz4ge1xuICAgIGNvbnN0IHsgZGJDb25maWcgfSA9IGF3YWl0IEJhc2VDbGllbnQuX2dldEJhc2VDbGllbnQoZW52LCBzZXNzaW9uSWQpLnF1ZXJ5KHtcbiAgICAgIGRiQ29uZmlnOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBhcHBDb2RlXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBkYkNvbmZpZztcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBnZXRGQVEoe1xuICAgIGxhbmcsXG4gICAgZW52LFxuICAgIHNlc3Npb25JZFxuICB9OiB7XG4gICAgbGFuZz86IExhbmc7XG4gICAgZW52OiBTZWNyZWN5RW52O1xuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPEZhcUl0ZW1bXT4ge1xuICAgIGNvbnN0IHsgZmFxIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KGVudiwgc2Vzc2lvbklkKS5xdWVyeSh7XG4gICAgICBmYXE6IFtcbiAgICAgICAge1xuICAgICAgICAgIGxhbmdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGFuc3dlcjogdHJ1ZSxcbiAgICAgICAgICBvcmRlcjogdHJ1ZSxcbiAgICAgICAgICBxdWVzdGlvbjogdHJ1ZVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmFxO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGdldEJsb2coe1xuICAgIGVudixcbiAgICBsYW5nLFxuICAgIHNlc3Npb25JZFxuICB9OiB7XG4gICAgZW52OiBTZWNyZWN5RW52O1xuICAgIGxhbmc/OiBMYW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICBzZXNzaW9uSWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB9KTogUHJvbWlzZTxCbG9nSXRlbVtdPiB7XG4gICAgY29uc3QgeyBibG9nIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KGVudiwgc2Vzc2lvbklkKS5xdWVyeSh7XG4gICAgICBibG9nOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBsYW5nXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICBibG9nSWQ6IHRydWUsXG4gICAgICAgICAgYXV0aG9yOiB0cnVlLFxuICAgICAgICAgIGJvZHk6IHRydWUsXG4gICAgICAgICAgZGF0ZTogdHJ1ZSxcbiAgICAgICAgICBpbWFnZTogdHJ1ZSxcbiAgICAgICAgICBpbWFnZUFsdDogdHJ1ZSxcbiAgICAgICAgICBzdW1tYXJ5OiB0cnVlLFxuICAgICAgICAgIHRpdGxlOiB0cnVlLFxuICAgICAgICAgIG9yZGVyOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBibG9nLm1hcChiID0+ICh7IC4uLmIsIGRhdGU6IG5ldyBEYXRlKGIuZGF0ZSkgfSkpO1xuICB9XG5cbiAgYXN5bmMgcmVwb3J0VXNlcihcbiAgICByZXBvcnRlZFVzZXJJZDogc3RyaW5nLFxuICAgIGN1c3RvbU1lc3NhZ2U/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxTZW5kUmVwb3J0IHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgeyBzZW5kUmVwb3J0IH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICBzZW5kUmVwb3J0OiBbXG4gICAgICAgIHtcbiAgICAgICAgICByZXBvcnRlZFVzZXJJZCxcbiAgICAgICAgICBjdXN0b21NZXNzYWdlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICBjdXN0b21NZXNzYWdlOiB0cnVlLFxuICAgICAgICAgIHVzZXI6IHtcbiAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgZmlyc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbGFzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBlbWFpbDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVwb3J0ZWRVc2VyOiB7XG4gICAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICAgIGZpcnN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGxhc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgZW1haWw6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBzZW5kUmVwb3J0O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGRlbGV0ZVVzZXIoe1xuICAgIHNlc3Npb25JZCxcbiAgICB1c2VySWQsXG4gICAgZW52XG4gIH06IHtcbiAgICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgICB1c2VySWQ/OiBzdHJpbmc7XG4gICAgZW52OiBTZWNyZWN5RW52O1xuICB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBkZWxldGVVc2VyIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KFxuICAgICAgZW52LFxuICAgICAgc2Vzc2lvbklkXG4gICAgKS5tdXRhdGlvbih7XG4gICAgICBkZWxldGVVc2VyOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB1c2VySWRcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRlbGV0ZVVzZXIgPz8gZmFsc2U7XG4gIH1cblxuICBhc3luYyBkYkdldDxVPih7XG4gICAgZmllbGQsXG4gICAgdXNlcklkXG4gIH06IHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIHVzZXJJZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPFU+IHtcbiAgICBjb25zdCB7IGRiR2V0IH0gPSBhd2FpdCB0aGlzLmNsaWVudC5xdWVyeSh7XG4gICAgICBkYkdldDogW1xuICAgICAgICB7XG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgdXNlcklkXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBkYkdldC5yZXM7XG4gIH1cblxuICBhc3luYyBkYlNldDxUIGV4dGVuZHMgVXNlckRhdGEsIFUgZXh0ZW5kcyBEb2N1bWVudD4oe1xuICAgIHZhbHVlLFxuICAgIHVzZXJJZFxuICB9OiB7XG4gICAgdmFsdWU6IFU7XG4gICAgdXNlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8VD4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYHZhbHVlIHNob3VsZCBiZSBhbiBvYmplY3QgaW5jbHVkaW5nIGZpZWxkcyB5b3Ugd2FudCB0byB1cGRhdGUuYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IGRiU2V0IH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICBkYlNldDogW1xuICAgICAgICB7XG4gICAgICAgICAgdXNlcklkLFxuICAgICAgICAgIHZhbHVlOiBzZXJpYWxpemUodmFsdWUpLnRvU3RyaW5nKFwiYmFzZTY0XCIpXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBkYlNldC5yZXM7XG4gIH1cblxuICBhc3luYyBkYlNlYXJjaDxUPih7XG4gICAgc2VhcmNoLFxuICAgIGZpZWxkXG4gIH06IHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIHNlYXJjaDogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxUW10+IHtcbiAgICBjb25zdCB7IGRiU2VhcmNoIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5xdWVyeSh7XG4gICAgICBkYlNlYXJjaDogW1xuICAgICAgICB7XG4gICAgICAgICAgc2VhcmNoLFxuICAgICAgICAgIGZpZWxkXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBkYlNlYXJjaDtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUZvbGRlcih7IGlkIH06IHsgaWQ6IHN0cmluZyB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBkZWxldGVGb2xkZXIgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIGRlbGV0ZUZvbGRlcjogW1xuICAgICAgICB7XG4gICAgICAgICAgaWRcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRlbGV0ZUZvbGRlciA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIG1vdmVGb2xkZXJzKHtcbiAgICBmb2xkZXJzSWQsXG4gICAgcGFyZW50Rm9sZGVySWRcbiAgfToge1xuICAgIGZvbGRlcnNJZDogc3RyaW5nW107XG4gICAgcGFyZW50Rm9sZGVySWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBtb3ZlRm9sZGVycyB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgbW92ZUZvbGRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGZvbGRlcnNJZCxcbiAgICAgICAgICBwYXJlbnRGb2xkZXJJZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbW92ZUZvbGRlcnMgPz8gZmFsc2U7XG4gIH1cblxuICBhc3luYyBtb3ZlRmlsZXMoe1xuICAgIGZpbGVzSWQsXG4gICAgcGFyZW50Rm9sZGVySWRcbiAgfToge1xuICAgIGZpbGVzSWQ6IHN0cmluZ1tdO1xuICAgIHBhcmVudEZvbGRlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgbW92ZUZpbGVzIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICBtb3ZlRmlsZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGZpbGVzSWQsXG4gICAgICAgICAgcGFyZW50Rm9sZGVySWRcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1vdmVGaWxlcyA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIGZvbGRlclNpemUoe1xuICAgIGZvbGRlcklkXG4gIH06IHtcbiAgICBmb2xkZXJJZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPEZvbGRlclNpemUgfCBudWxsPiB7XG4gICAgY29uc3QgeyBmb2xkZXJTaXplIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5xdWVyeSh7XG4gICAgICBmb2xkZXJTaXplOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmb2xkZXJJZFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgc2l6ZTogdHJ1ZSxcbiAgICAgICAgICBzaXplQmVmb3JlOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghZm9sZGVyU2l6ZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNpemU6IEJpZ0ludChmb2xkZXJTaXplLnNpemUpLFxuICAgICAgc2l6ZUJlZm9yZTogQmlnSW50KGZvbGRlclNpemUuc2l6ZUJlZm9yZSlcbiAgICB9O1xuICB9XG59XG4iXX0=
1332
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9CYXNlQ2xpZW50LnRzIl0sIm5hbWVzIjpbInNlcmlhbGl6ZSIsInVzZXJzQ2FjaGUiLCJnZXRTdG9yYWdlIiwiU2VsZWN0b3JzIiwiY3JlYXRlVGh1bmRlciIsImludGVybmFsVG9QYXltZW50SW5mb3MiLCJwIiwiY3VycmVudFN1YnNjcmlwdGlvbiIsInN0YXRlIiwiY29sbGVjdGlvbk1ldGhvZCIsImFjdGl2YXRlZEF0IiwiRGF0ZSIsImNyZWF0ZWRBdCIsInVwZGF0ZWRBdCIsInRyaWFsRW5kc0F0IiwidHJpYWxTdGFydGVkQXQiLCJwYXVzZWRBdCIsImN1cnJlbnRQZXJpb2RFbmRzQXQiLCJjdXJyZW50UGVyaW9kU3RhcnRlZEF0IiwiY2FuY2VsZWRBdCIsImV4cGlyZXNBdCIsImludm9pY2VzIiwibWFwIiwiaSIsImRhdGUiLCJkdWUiLCJzdGF0dXMiLCJwbGFuc0NvZGVzIiwiaXNWYWxpZFBsYW4iLCJwbGFuQ29kZSIsImluY2x1ZGVzIiwiZ2V0VXNlclNlbGVjdG9yIiwidXNlcklkIiwid2l0aFB1YmxpY0tleSIsInF1ZXJ5IiwidXNlciIsImlkIiwiZmlyc3RuYW1lIiwibGFzdG5hbWUiLCJsYW5nIiwicHVibGljS2V5IiwidW5kZWZpbmVkIiwiZW1haWwiLCJwaG9uZSIsInJvbGUiLCJkZWxldGVkQXQiLCJsYXN0TG9naW4iLCJnZXRVc2VyIiwicGFyYW1zIiwic2VsZWN0b3IiLCJjbGllbnQiLCJCYXNlQ2xpZW50Iiwic2Vzc2lvbiIsImVudiIsInNlc3Npb25JZCIsIl9nZXRCYXNlQ2xpZW50Iiwic2Vzc2lvbnMiLCJsYXN0QWN0aXZpdHkiLCJ1c2VyQWdlbnQiLCJpcCIsImNpdHkiLCJjb3VudHJ5IiwiYXBwU2Vzc2lvbnMiLCJ1c2VyQXBwIiwiYXBwIiwibmFtZSIsImRhdGEiLCJzIiwiYSIsImxvZ291dCIsImxvY2FsIiwiand0IiwiY2xlYXIiLCJ1c2VyQXBwS2V5cyIsInVzZXJBcHBTZXNzaW9uIiwibXV0YXRpb24iLCJtZSIsInNldCIsInVwZGF0ZVByb2ZpbGUiLCJFcnJvciIsInBsYW5zIiwia2luZCIsImNvZGVzIiwibGltaXRzIiwiZG93bmxvYWRCYW5kd2lkdGgiLCJkb3dubG9hZENvdW50IiwiaGFyZEZpbGVDb3VudCIsImhhcmRGaWxlU2l6ZSIsInBlckZpbGVTaXplIiwidXBsb2FkQmFuZHdpZHRoIiwidXBsb2FkQ291bnQiLCJyZWNlaXZlZE1haWxzIiwiY291bnQiLCJmaWxlQ291bnQiLCJmaWxlU2l6ZSIsImhhcmRDb3VudCIsInNlbnRNYWlscyIsInBheSIsImlucHV0IiwiYXV0b1JlbmV3IiwiY2FuY2VsUGF5bWVudCIsInBheW1lbnRJbmZvcyIsImhvc3RlZFVybCIsImF1dG9yZW5ldyIsInBsYW4iLCJ0b3RhbCIsInBkZiIsImN1cnJlbmN5IiwiY2xvdWQiLCJzaXplIiwibWF4U2l6ZSIsIm1heENvdW50IiwibWFpbCIsInJlY2VpdmVkIiwibWF4RmlsZUNvdW50IiwibWF4RmlsZVNpemUiLCJzZW50IiwiQmlnSW50IiwiZ29kRmF0aGVyQW5kQ2hpbGRyZW4iLCJnb2RDaGlsZHJlbiIsImdvZEZhdGhlciIsInVwZGF0ZUFwcERCQ29uZmlnIiwiYXBwQ29kZSIsImNvbmZpZyIsImRiQ29uZmlnIiwiSlNPTiIsInN0cmluZ2lmeSIsImdldEFwcERCQ29uZmlnIiwiZ2V0RkFRIiwiZmFxIiwiYW5zd2VyIiwib3JkZXIiLCJxdWVzdGlvbiIsImdldEJsb2ciLCJibG9nIiwiYmxvZ0lkIiwiYXV0aG9yIiwiYm9keSIsImltYWdlIiwiaW1hZ2VBbHQiLCJzdW1tYXJ5IiwidGl0bGUiLCJiIiwicmVwb3J0VXNlciIsInJlcG9ydGVkVXNlcklkIiwiY3VzdG9tTWVzc2FnZSIsInNlbmRSZXBvcnQiLCJyZXBvcnRlZFVzZXIiLCJkZWxldGVVc2VyIiwiZGJHZXQiLCJmaWVsZCIsInJlcyIsImRiU2V0IiwidmFsdWUiLCJ0b1N0cmluZyIsImRiU2VhcmNoIiwic2VhcmNoIiwiZGVsZXRlRm9sZGVyIiwibW92ZUZvbGRlcnMiLCJmb2xkZXJzSWQiLCJwYXJlbnRGb2xkZXJJZCIsIm1vdmVGaWxlcyIsImZpbGVzSWQiLCJmb2xkZXJTaXplIiwiZm9sZGVySWQiLCJzaXplQmVmb3JlIiwiZ2V0QmFzZVVybCIsImdyYXBoY2RuIiwicHJvY2VzcyIsIk5PREVfRU5WIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUVBLFNBQVNBLFNBQVQsUUFBMEIsTUFBMUI7QUFDQSxTQUFTQyxVQUFULFFBQTJCLFlBQTNCO0FBR0EsU0FBU0MsVUFBVCxRQUEyQixxQkFBM0I7QUFRQSxTQUFTQyxTQUFULFFBQTBCLGlCQUExQjtBQUNBLFNBQVNDLGFBQVQsUUFBOEIsa0JBQTlCOztBQXlLQSxTQUFTQyxzQkFBVCxDQUFnQ0MsQ0FBaEMsRUFBdUU7QUFDckUseUNBQ0tBLENBREw7QUFFRUMsSUFBQUEsbUJBQW1CLGtDQUNkRCxDQUFDLENBQUNDLG1CQURZO0FBRWpCQyxNQUFBQSxLQUFLLEVBQUVGLENBQUMsQ0FBQ0MsbUJBQUYsQ0FBc0JDLEtBRlo7QUFHakJDLE1BQUFBLGdCQUFnQixFQUFFSCxDQUFDLENBQUNDLG1CQUFGLENBQ2ZFLGdCQUpjO0FBS2pCQyxNQUFBQSxXQUFXLEVBQUVKLENBQUMsQ0FBQ0MsbUJBQUYsQ0FBc0JHLFdBQXRCLEdBQ1QsSUFBSUMsSUFBSixDQUFTTCxDQUFDLENBQUNDLG1CQUFGLENBQXNCRyxXQUEvQixDQURTLEdBRVQsSUFQYTtBQVFqQkUsTUFBQUEsU0FBUyxFQUFFTixDQUFDLENBQUNDLG1CQUFGLENBQXNCSyxTQUF0QixHQUNQLElBQUlELElBQUosQ0FBU0wsQ0FBQyxDQUFDQyxtQkFBRixDQUFzQkssU0FBL0IsQ0FETyxHQUVQLElBVmE7QUFXakJDLE1BQUFBLFNBQVMsRUFBRVAsQ0FBQyxDQUFDQyxtQkFBRixDQUFzQk0sU0FBdEIsR0FDUCxJQUFJRixJQUFKLENBQVNMLENBQUMsQ0FBQ0MsbUJBQUYsQ0FBc0JNLFNBQS9CLENBRE8sR0FFUCxJQWJhO0FBY2pCQyxNQUFBQSxXQUFXLEVBQUVSLENB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QlcsSUFsQlg7O0FBQUE7QUFBQSxpREFxQlM7QUFDTHRELGdCQUFBQSxJQUFJLEVBQUVRLE1BQU0sQ0FBQzhDLFVBQVUsQ0FBQ3RELElBQVosQ0FEUDtBQUVMd0QsZ0JBQUFBLFVBQVUsRUFBRWhELE1BQU0sQ0FBQzhDLFVBQVUsQ0FBQ0UsVUFBWjtBQUZiLGVBckJUOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEtBL3FCRjs7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQTs7QUFBQTtBQUFBOztBQUFhbEgsVSxDQUNZbUgsVSxHQUFhLFVBQ2xDakgsR0FEa0MsRUFFbENrSCxRQUZrQyxFQUd2QjtBQUFBLE1BRlhsSCxHQUVXO0FBRlhBLElBQUFBLEdBRVcsR0FGTyxNQUVQO0FBQUE7O0FBQUEsTUFEWGtILFFBQ1c7QUFEWEEsSUFBQUEsUUFDVyxHQURBLElBQ0E7QUFBQTs7QUFDWCxNQUFJQyxPQUFPLENBQUNuSCxHQUFSLENBQVlvSCxRQUFaLEtBQXlCLE1BQTdCLEVBQXFDO0FBQ25DLFdBQU8sK0JBQVA7QUFDRDs7QUFFRCxVQUFRcEgsR0FBUjtBQUNFLFNBQUssTUFBTDtBQUNFLGFBQU9rSCxRQUFRLEdBQ1gsOEJBRFcsR0FFWCxzRUFGSjs7QUFHRixTQUFLLFNBQUw7QUFDRSxhQUFPLHlFQUFQOztBQUNGLFNBQUssS0FBTDtBQUNBO0FBQ0UsYUFBTyxxRUFBUDtBQVRKO0FBV0QsQzs7QUFwQlVwSCxVLENBc0JhSSxjLEdBQWlCLFVBQ3ZDRixHQUR1QyxFQUV2Q0QsT0FGdUM7QUFBQSxTQUl2Q2hELGFBQWEsQ0FBQytDLFVBQVUsQ0FBQ21ILFVBQVgsQ0FBc0JqSCxHQUF0QixDQUFELEVBQTZCRCxPQUE3QixDQUowQjtBQUFBLEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERvd25sb2FkUHJvZ3Jlc3MgYXMgRExQcm9ncmVzcyB9IGZyb20gXCJreVwiO1xuaW1wb3J0IHR5cGUgeyBEb2N1bWVudCB9IGZyb20gXCJic29uXCI7XG5pbXBvcnQgeyBzZXJpYWxpemUgfSBmcm9tIFwiYnNvblwiO1xuaW1wb3J0IHsgdXNlcnNDYWNoZSB9IGZyb20gXCIuL2NhY2hlLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFVzZXJTZXNzaW9uIH0gZnJvbSBcIi4vY2xpZW50L3R5cGVzL2luZGV4LmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNlY3JlY3lFbnYgfSBmcm9tIFwiLi9jbGllbnQvaGVscGVycy5qc1wiO1xuaW1wb3J0IHsgZ2V0U3RvcmFnZSB9IGZyb20gXCIuL2NsaWVudC9zdG9yYWdlLmpzXCI7XG5pbXBvcnQgdHlwZSB7XG4gIExhbmcsXG4gIFBheUlucHV0VHlwZSxcbiAgUGxhbktpbmQsXG4gIFRodW5kZXIsXG4gIFVzZXJSb2xlXG59IGZyb20gXCIuL3pldXMvaW5kZXguanNcIjtcbmltcG9ydCB7IFNlbGVjdG9ycyB9IGZyb20gXCIuL3pldXMvaW5kZXguanNcIjtcbmltcG9ydCB7IGNyZWF0ZVRodW5kZXIgfSBmcm9tIFwiLi9aZXVzVGh1bmRlci5qc1wiO1xuXG5leHBvcnQgdHlwZSBEb3dubG9hZFByb2dyZXNzID0gRExQcm9ncmVzcztcblxuZXhwb3J0IHR5cGUgUGF5SW5wdXQgPSB7XG4gIHR5cGU6IFBheUlucHV0VHlwZTtcbiAgdG9rZW46IHN0cmluZztcbiAgZmlyc3ROYW1lOiBzdHJpbmc7XG4gIGxhc3ROYW1lOiBzdHJpbmc7XG4gIHN0cmVldDogc3RyaW5nO1xuICBwb3N0YWxDb2RlOiBzdHJpbmc7XG4gIGNpdHk6IHN0cmluZztcbiAgY291bnRyeTogc3RyaW5nO1xuICBtb250aDogc3RyaW5nO1xuICB5ZWFyOiBzdHJpbmc7XG4gIGN2djogc3RyaW5nO1xuICBudW1iZXI6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE1haWxMaW1pdHMgPSB7XG4gIGNvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBmaWxlQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGZpbGVTaXplPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGhhcmRGaWxlQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGhhcmRGaWxlU2l6ZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcGVyRmlsZVNpemU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBMaW1pdHMgPSB7XG4gIGRvd25sb2FkQmFuZHdpZHRoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBkb3dubG9hZENvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkRmlsZUNvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkRmlsZVNpemU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHBlckZpbGVTaXplPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICByZWNlaXZlZE1haWxzOiBNYWlsTGltaXRzO1xuICBzZW50TWFpbHM6IE1haWxMaW1pdHM7XG4gIHVwbG9hZEJhbmR3aWR0aD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgdXBsb2FkQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBHb2RVc2VyID0ge1xuICBpZDogc3RyaW5nO1xuICBmaXJzdG5hbWU6IHN0cmluZztcbiAgbGFzdG5hbWU6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgcGhvbmU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEdvZEZhdGhlckFuZENoaWxkcmVuID0ge1xuICBnb2RGYXRoZXI6IEdvZFVzZXIgfCBudWxsO1xuICBnb2RDaGlsZHJlbjogR29kVXNlcltdO1xufTtcblxuZXhwb3J0IHR5cGUgUGxhbiA9IHtcbiAgY29kZXM6IHN0cmluZ1tdO1xuICBraW5kOiBQbGFuS2luZDtcbiAgbGltaXRzOiBMaW1pdHM7XG59O1xuXG5leHBvcnQgdHlwZSBTdWJzY3JpcHRpb25TdGF0ZSA9XG4gIHwgXCJhY3RpdmVcIlxuICB8IFwiY2FuY2VsZWRcIlxuICB8IFwicGF1c2VkXCJcbiAgfCBcImV4cGlyZWRcIlxuICB8IFwiZnV0dXJlXCJcbiAgfCBcImluX3RyaWFsXCJcbiAgfCBcImxpdmVcIlxuICB8IFwicGFzdF9kdWVcIjtcblxuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uQ29sbGVjdGlvbk1ldGhvZCA9IFwiYXV0b21hdGljXCIgfCBcIm1hbnVhbFwiO1xuXG50eXBlIEludGVybmFsU3Vic2NyaXB0aW9uID0ge1xuICBhdXRvcmVuZXc6IGJvb2xlYW47XG4gIGFjdGl2YXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3VycmVudFBlcmlvZEVuZHNBdD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGN1cnJlbnRQZXJpb2RTdGFydGVkQXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBjYW5jZWxlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3JlYXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgZXhwaXJlc0F0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGF1c2VkQXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB0cmlhbEVuZHNBdD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHRyaWFsU3RhcnRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdXBkYXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY29sbGVjdGlvbk1ldGhvZDogc3RyaW5nO1xuICBzdGF0ZTogc3RyaW5nO1xuICBwbGFuPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGxhbkNvZGU/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB0b3RhbD86IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQ7XG59O1xuXG50eXBlIFJlY3VybHlJbnZvaWNlU3RhdHVzID1cbiAgfCBcInBlbmRpbmdcIlxuICB8IFwicGFpZFwiXG4gIHwgXCJmYWlsZWRcIlxuICB8IFwicGFzdF9kdWVcIlxuICB8IFwib3BlblwiXG4gIHwgXCJjbG9zZWRcIlxuICB8IFwidm9pZGVkXCJcbiAgfCBcInByb2Nlc3NpbmdcIjtcblxudHlwZSBJbnRlcm5hbFJlY3VybHlJbnZvaWNlcyA9IHtcbiAgcGRmOiBzdHJpbmc7XG4gIGRhdGU6IHN0cmluZztcbiAgZHVlOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICB0b3RhbDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGN1cnJlbmN5OiBzdHJpbmc7XG59O1xuXG50eXBlIEludGVybmFsUGF5bWVudEluZm9zID0ge1xuICBob3N0ZWRVcmw6IHN0cmluZztcbiAgY3VycmVudFN1YnNjcmlwdGlvbjogSW50ZXJuYWxTdWJzY3JpcHRpb247XG4gIGludm9pY2VzOiBJbnRlcm5hbFJlY3VybHlJbnZvaWNlc1tdO1xufTtcblxuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uID0ge1xuICBhdXRvcmVuZXc6IGJvb2xlYW47XG4gIGFjdGl2YXRlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGN1cnJlbnRQZXJpb2RFbmRzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3VycmVudFBlcmlvZFN0YXJ0ZWRBdD86IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBjYW5jZWxlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGNyZWF0ZWRBdD86IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBleHBpcmVzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGF1c2VkQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdHJpYWxFbmRzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdHJpYWxTdGFydGVkQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdXBkYXRlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGNvbGxlY3Rpb25NZXRob2Q6IFN1YnNjcmlwdGlvbkNvbGxlY3Rpb25NZXRob2Q7XG4gIHN0YXRlOiBTdWJzY3JpcHRpb25TdGF0ZTtcbiAgcGxhbj86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHBsYW5Db2RlPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdG90YWw/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IHR5cGUgUmVjdXJseUludm9pY2VzID0ge1xuICBwZGY6IHN0cmluZztcbiAgZGF0ZTogRGF0ZTtcbiAgZHVlOiBEYXRlO1xuICBzdGF0dXM6IFJlY3VybHlJbnZvaWNlU3RhdHVzO1xuICB0b3RhbDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGN1cnJlbmN5OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBQYXltZW50SW5mb3MgPSB7XG4gIGhvc3RlZFVybDogc3RyaW5nO1xuICBjdXJyZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIGludm9pY2VzOiBSZWN1cmx5SW52b2ljZXNbXTtcbn07XG5cbmV4cG9ydCB0eXBlIFNlbmRSZXBvcnQgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHVzZXI6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGZpcnN0bmFtZTogc3RyaW5nO1xuICAgIGxhc3RuYW1lOiBzdHJpbmc7XG4gICAgZW1haWw6IHN0cmluZztcbiAgfTtcbiAgcmVwb3J0ZWRVc2VyOiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBmaXJzdG5hbWU6IHN0cmluZztcbiAgICBsYXN0bmFtZTogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gIH07XG4gIGN1c3RvbU1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5mdW5jdGlvbiBpbnRlcm5hbFRvUGF5bWVudEluZm9zKHA6IEludGVybmFsUGF5bWVudEluZm9zKTogUGF5bWVudEluZm9zIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5wLFxuICAgIGN1cnJlbnRTdWJzY3JpcHRpb246IHtcbiAgICAgIC4uLnAuY3VycmVudFN1YnNjcmlwdGlvbixcbiAgICAgIHN0YXRlOiBwLmN1cnJlbnRTdWJzY3JpcHRpb24uc3RhdGUgYXMgU3Vic2NyaXB0aW9uU3RhdGUsXG4gICAgICBjb2xsZWN0aW9uTWV0aG9kOiBwLmN1cnJlbnRTdWJzY3JpcHRpb25cbiAgICAgICAgLmNvbGxlY3Rpb25NZXRob2QgYXMgU3Vic2NyaXB0aW9uQ29sbGVjdGlvbk1ldGhvZCxcbiAgICAgIGFjdGl2YXRlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24uYWN0aXZhdGVkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24uYWN0aXZhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGNyZWF0ZWRBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLmNyZWF0ZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi5jcmVhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHVwZGF0ZWRBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLnVwZGF0ZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi51cGRhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHRyaWFsRW5kc0F0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxFbmRzQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxFbmRzQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHRyaWFsU3RhcnRlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxTdGFydGVkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxTdGFydGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHBhdXNlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24ucGF1c2VkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24ucGF1c2VkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGN1cnJlbnRQZXJpb2RFbmRzQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jdXJyZW50UGVyaW9kRW5kc0F0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmN1cnJlbnRQZXJpb2RFbmRzQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGN1cnJlbnRQZXJpb2RTdGFydGVkQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jdXJyZW50UGVyaW9kU3RhcnRlZEF0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmN1cnJlbnRQZXJpb2RTdGFydGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGNhbmNlbGVkQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jYW5jZWxlZEF0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmNhbmNlbGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGV4cGlyZXNBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLmV4cGlyZXNBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi5leHBpcmVzQXQpXG4gICAgICAgIDogbnVsbFxuICAgIH0sXG4gICAgaW52b2ljZXM6IHAuaW52b2ljZXMubWFwKGkgPT4gKHtcbiAgICAgIC4uLmksXG4gICAgICBkYXRlOiBuZXcgRGF0ZShpLmRhdGUpLFxuICAgICAgZHVlOiBuZXcgRGF0ZShpLmR1ZSksXG4gICAgICBzdGF0dXM6IGkuc3RhdHVzIGFzIFJlY3VybHlJbnZvaWNlU3RhdHVzXG4gICAgfSkpXG4gIH07XG59XG5cbmNvbnN0IHBsYW5zQ29kZXMgPSBbXG4gIFwiYmFzaWNfbW9udGhcIixcbiAgXCJhZHZhbmNlZF9tb250aFwiLFxuICBcInByb19tb250aFwiLFxuICBcImJhc2ljX3llYXJcIixcbiAgXCJhZHZhbmNlZF95ZWFyXCIsXG4gIFwicHJvX3llYXJcIlxuXSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2VjcmVjeVBsYW5zQ29kZXMgPSB0eXBlb2YgcGxhbnNDb2Rlc1tudW1iZXJdO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFBsYW4ocGxhbkNvZGU6IHN0cmluZyk6IHBsYW5Db2RlIGlzIFNlY3JlY3lQbGFuc0NvZGVzIHtcbiAgcmV0dXJuIHBsYW5zQ29kZXMuaW5jbHVkZXMocGxhbkNvZGUgYXMgU2VjcmVjeVBsYW5zQ29kZXMpO1xufVxuXG5leHBvcnQgdHlwZSBVc2VyRGF0YTxcbiAgVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbj4gPSB7XG4gIGlzU3VwZXJ1c2VyOiBib29sZWFuO1xuICBpc1NlYXJjaGFibGU6IGJvb2xlYW47XG59ICYgVDtcblxuZXhwb3J0IHR5cGUgRm9sZGVyU2l6ZSA9IHsgc2l6ZTogYmlnaW50OyBzaXplQmVmb3JlOiBiaWdpbnQgfTtcblxuY29uc3QgZ2V0VXNlclNlbGVjdG9yID0gKFxuICB1c2VySWQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIHdpdGhQdWJsaWNLZXk6IGJvb2xlYW4gfCB1bmRlZmluZWRcbikgPT4ge1xuICBjb25zdCB7IHVzZXIgfSA9IFNlbGVjdG9ycy5xdWVyeSh7XG4gICAgdXNlcjogW1xuICAgICAgeyB1c2VySWQgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgIGZpcnN0bmFtZTogdHJ1ZSxcbiAgICAgICAgbGFzdG5hbWU6IHRydWUsXG4gICAgICAgIGxhbmc6IHRydWUsXG4gICAgICAgIHB1YmxpY0tleTogd2l0aFB1YmxpY0tleSA/IHRydWUgOiB1bmRlZmluZWQsXG4gICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICBwaG9uZTogdHJ1ZSxcbiAgICAgICAgcm9sZTogdHJ1ZSxcbiAgICAgICAgZGVsZXRlZEF0OiB0cnVlLFxuICAgICAgICBsYXN0TG9naW46IHRydWVcbiAgICAgIH1cbiAgICBdXG4gIH0pO1xuICByZXR1cm4gdXNlcjtcbn07XG5cbmV4cG9ydCB0eXBlIEFwcERCQ29uZmlnRmllbGQgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogXCJzdHJpbmdcIiB8IFwibnVtYmVyXCIgfCBcImJvb2xlYW5cIiB8IFwib2JqZWN0XCI7XG4gIGlzQXJyYXk/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBpc051bGxhYmxlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgaXNFZGl0YWJsZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGlzS2V5PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgZGVmYXVsdD86IHVua25vd247XG59O1xuXG5leHBvcnQgdHlwZSBBcHBEQkNvbmZpZyA9IHtcbiAgZmllbGRzOiBBcHBEQkNvbmZpZ0ZpZWxkW107XG59O1xuXG5leHBvcnQgdHlwZSBGYXFJdGVtID0ge1xuICBvcmRlcjogbnVtYmVyO1xuICBxdWVzdGlvbjogc3RyaW5nO1xuICBhbnN3ZXI6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEJsb2dJdGVtID0ge1xuICBpZDogc3RyaW5nO1xuICBibG9nSWQ6IHN0cmluZztcbiAgb3JkZXI6IG51bWJlcjtcbiAgYXV0aG9yOiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZztcbiAgZGF0ZTogRGF0ZTtcbiAgaW1hZ2U6IHN0cmluZztcbiAgaW1hZ2VBbHQ6IHN0cmluZztcbiAgc3VtbWFyeTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVXNlckJhc2UgPSB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIHBob25lOiBzdHJpbmc7XG4gIGxhc3RuYW1lOiBzdHJpbmc7XG4gIHJvbGU6IFVzZXJSb2xlO1xuICBmaXJzdG5hbWU6IHN0cmluZztcbiAgaWQ6IHN0cmluZztcbiAgZGVsZXRlZEF0OiBEYXRlIHwgbnVsbDtcbiAgbGFzdExvZ2luOiBEYXRlO1xuICBsYW5nOiBMYW5nO1xufTtcblxudHlwZSBXaXRoUHVibGljS2V5ID0geyB3aXRoUHVibGljS2V5PzogYm9vbGVhbiB9O1xuXG5leHBvcnQgdHlwZSBVc2VyPFQgZXh0ZW5kcyBXaXRoUHVibGljS2V5ID0gV2l0aFB1YmxpY0tleT4gPSBUIGV4dGVuZHMge1xuICB3aXRoUHVibGljS2V5OiB0cnVlO1xufVxuICA/IFVzZXJCYXNlICYgeyBwdWJsaWNLZXk6IHN0cmluZyB9XG4gIDogVXNlckJhc2U7XG5cbnR5cGUgQ2xhc3NHZXRVc2VyUGFyYW1zID0gV2l0aFB1YmxpY0tleSAmIHtcbiAgdXNlcklkPzogc3RyaW5nO1xufTtcbnR5cGUgR2V0VXNlclBhcmFtcyA9IENsYXNzR2V0VXNlclBhcmFtcyAmIHtcbiAgY2xpZW50OiBSZXR1cm5UeXBlPHR5cGVvZiBUaHVuZGVyPjtcbn07XG5cbnR5cGUgU3RhdGljR2V0VXNlclBhcmFtcyA9IENsYXNzR2V0VXNlclBhcmFtcyAmIHtcbiAgZW52OiBTZWNyZWN5RW52O1xufTtcblxuYXN5bmMgZnVuY3Rpb24gZ2V0VXNlcjxVIGV4dGVuZHMgV2l0aFB1YmxpY0tleT4oXG4gIHBhcmFtczogR2V0VXNlclBhcmFtc1xuKTogUHJvbWlzZTxVc2VyPFU+IHwgbnVsbD4ge1xuICBjb25zdCBzZWxlY3RvciA9IGdldFVzZXJTZWxlY3RvcihwYXJhbXMudXNlcklkLCBwYXJhbXMud2l0aFB1YmxpY0tleSk7XG4gIGNvbnN0IHsgdXNlciB9ID0gYXdhaXQgcGFyYW1zLmNsaWVudC5xdWVyeSh7XG4gICAgdXNlcjogc2VsZWN0b3JcbiAgfSk7XG5cbiAgaWYgKCF1c2VyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnVzZXIsXG4gICAgbGFzdExvZ2luOiBuZXcgRGF0ZSh1c2VyLmxhc3RMb2dpbiksXG4gICAgZGVsZXRlZEF0OiB1c2VyLmRlbGV0ZWRBdCA/IG5ldyBEYXRlKHVzZXIuZGVsZXRlZEF0KSA6IG51bGxcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgQ2xvdWRMaW1pdHMgPSB7XG4gIGNvdW50OiBiaWdpbnQ7XG4gIG1heENvdW50OiBiaWdpbnQgfCBudWxsO1xuICBzaXplOiBiaWdpbnQ7XG4gIG1heFNpemU6IGJpZ2ludCB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBNYWlsTGltaXRzVmFsdWVzID0ge1xuICBjb3VudDogYmlnaW50O1xuICBtYXhDb3VudDogYmlnaW50IHwgbnVsbDtcbiAgZmlsZVNpemU6IGJpZ2ludDtcbiAgbWF4RmlsZVNpemU6IGJpZ2ludCB8IG51bGw7XG4gIGZpbGVDb3VudDogYmlnaW50O1xuICBtYXhGaWxlQ291bnQ6IGJpZ2ludCB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBRdWVyeUxpbWl0cyA9IHtcbiAgY2xvdWQ6IENsb3VkTGltaXRzO1xuICBtYWlsOiB7XG4gICAgc2VudDogTWFpbExpbWl0c1ZhbHVlcztcbiAgICByZWNlaXZlZDogTWFpbExpbWl0c1ZhbHVlcztcbiAgfTtcbn07XG5cbmV4cG9ydCBjbGFzcyBCYXNlQ2xpZW50IHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBnZXRCYXNlVXJsID0gKFxuICAgIGVudjogU2VjcmVjeUVudiA9IFwicHJvZFwiLFxuICAgIGdyYXBoY2RuID0gdHJ1ZVxuICApOiBzdHJpbmcgPT4ge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJ0ZXN0XCIpIHtcbiAgICAgIHJldHVybiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDAwMC9ncmFwaHFsXCI7XG4gICAgfVxuXG4gICAgc3dpdGNoIChlbnYpIHtcbiAgICAgIGNhc2UgXCJwcm9kXCI6XG4gICAgICAgIHJldHVybiBncmFwaGNkblxuICAgICAgICAgID8gXCJodHRwczovL3NlY3JlY3kuZ3JhcGhjZG4uYXBwXCJcbiAgICAgICAgICA6IFwiaHR0cHM6Ly9hcGluc2x3ZGswbmZ0LWFwaXByb2QuZnVuY3Rpb25zLmZuYy5mci1wYXIuc2N3LmNsb3VkL2dyYXBocWxcIjtcbiAgICAgIGNhc2UgXCJzdGFnaW5nXCI6XG4gICAgICAgIHJldHVybiBcImh0dHBzOi8vYXBpbnNsd2RrMG5mdC1hcGlzdGFnaW5nLmZ1bmN0aW9ucy5mbmMuZnItcGFyLnNjdy5jbG91ZC9ncmFwaHFsXCI7XG4gICAgICBjYXNlIFwiZGV2XCI6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gXCJodHRwczovL2FwaW5zbHdkazBuZnQtYXBpZGV2LmZ1bmN0aW9ucy5mbmMuZnItcGFyLnNjdy5jbG91ZC9ncmFwaHFsXCI7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9nZXRCYXNlQ2xpZW50ID0gKFxuICAgIGVudjogU2VjcmVjeUVudixcbiAgICBzZXNzaW9uPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuICApOiBSZXR1cm5UeXBlPHR5cGVvZiBUaHVuZGVyPiA9PlxuICAgIGNyZWF0ZVRodW5kZXIoQmFzZUNsaWVudC5nZXRCYXNlVXJsKGVudiksIHNlc3Npb24pO1xuXG4gIHByb3RlY3RlZCBjbGllbnQ6IFJldHVyblR5cGU8dHlwZW9mIFRodW5kZXI+O1xuXG4gIHB1YmxpYyBzZXNzaW9uSWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzZXNzaW9uOiBzdHJpbmcsIGVudjogU2VjcmVjeUVudikge1xuICAgIHRoaXMuc2Vzc2lvbklkID0gc2Vzc2lvbjtcbiAgICB0aGlzLmNsaWVudCA9IEJhc2VDbGllbnQuX2dldEJhc2VDbGllbnQoZW52LCBzZXNzaW9uKTtcbiAgfVxuXG4gIGFzeW5jIHNlc3Npb25zKCk6IFByb21pc2U8VXNlclNlc3Npb25bXT4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmNsaWVudC5xdWVyeSh7XG4gICAgICB1c2VyOiBbXG4gICAgICAgIHt9LFxuICAgICAgICB7XG4gICAgICAgICAgc2Vzc2lvbnM6IHtcbiAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgbGFzdEFjdGl2aXR5OiB0cnVlLFxuICAgICAgICAgICAgdXNlckFnZW50OiB0cnVlLFxuICAgICAgICAgICAgaXA6IHRydWUsXG4gICAgICAgICAgICBjaXR5OiB0cnVlLFxuICAgICAgICAgICAgY291bnRyeTogdHJ1ZSxcbiAgICAgICAgICAgIGFwcFNlc3Npb25zOiB7XG4gICAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgICBsYXN0QWN0aXZpdHk6IHRydWUsXG4gICAgICAgICAgICAgIHVzZXJBZ2VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgaXA6IHRydWUsXG4gICAgICAgICAgICAgIGNpdHk6IHRydWUsXG4gICAgICAgICAgICAgIGNvdW50cnk6IHRydWUsXG4gICAgICAgICAgICAgIHVzZXJBcHA6IHtcbiAgICAgICAgICAgICAgICBhcHA6IHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IHRydWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGNvbnN0IHNlc3Npb25zOiBVc2VyU2Vzc2lvbltdID1cbiAgICAgIGRhdGEudXNlcj8uc2Vzc2lvbnMubWFwKHMgPT4gKHtcbiAgICAgICAgaWQ6IHMuaWQsXG4gICAgICAgIGlwOiBzLmlwLFxuICAgICAgICBjaXR5OiBzLmNpdHksXG4gICAgICAgIGNvdW50cnk6IHMuY291bnRyeSxcbiAgICAgICAgbGFzdEFjdGl2aXR5OiBzLmxhc3RBY3Rpdml0eSA/IG5ldyBEYXRlKHMubGFzdEFjdGl2aXR5KSA6IHVuZGVmaW5lZCxcbiAgICAgICAgdXNlckFnZW50OiBzLnVzZXJBZ2VudCxcbiAgICAgICAgYXBwU2Vzc2lvbnM6IHMuYXBwU2Vzc2lvbnMubWFwKGEgPT4gKHtcbiAgICAgICAgICBpZDogYS5pZCxcbiAgICAgICAgICBpcDogYS5pcCxcbiAgICAgICAgICBjaXR5OiBhLmNpdHksXG4gICAgICAgICAgY291bnRyeTogYS5jb3VudHJ5LFxuICAgICAgICAgIGxhc3RBY3Rpdml0eTogYS5sYXN0QWN0aXZpdHkgPyBuZXcgRGF0ZShhLmxhc3RBY3Rpdml0eSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgdXNlckFnZW50OiBhLnVzZXJBZ2VudCxcbiAgICAgICAgICBhcHA6IGEudXNlckFwcD8uYXBwLm5hbWUgPz8gXCJcIlxuICAgICAgICB9KSlcbiAgICAgIH0pKSA/PyBbXTtcblxuICAgIHJldHVybiBzZXNzaW9ucztcbiAgfVxuXG4gIGFzeW5jIGxvZ291dChzZXNzaW9uSWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFzZXNzaW9uSWQpIHtcbiAgICAgIGNvbnN0IGxvY2FsID0gZ2V0U3RvcmFnZShmYWxzZSk7XG4gICAgICBjb25zdCBzZXNzaW9uID0gZ2V0U3RvcmFnZSh0cnVlKTtcbiAgICAgIGxvY2FsLmp3dC5jbGVhcigpO1xuICAgICAgbG9jYWwudXNlckFwcEtleXMuY2xlYXIoKTtcbiAgICAgIGxvY2FsLnVzZXJBcHBTZXNzaW9uLmNsZWFyKCk7XG4gICAgICBzZXNzaW9uLmp3dC5jbGVhcigpO1xuICAgICAgc2Vzc2lvbi51c2VyQXBwS2V5cy5jbGVhcigpO1xuICAgICAgc2Vzc2lvbi51c2VyQXBwU2Vzc2lvbi5jbGVhcigpO1xuICAgICAgdXNlcnNDYWNoZS5jbGVhcigpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgICBsb2dvdXQ6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZXNzaW9uSWRcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRydWVcbiAgICAgICAgXVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvL1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG1lPFQgZXh0ZW5kcyBXaXRoUHVibGljS2V5ID0gV2l0aFB1YmxpY0tleT4oXG4gICAgcGFyYW1zPzogVFxuICApOiBQcm9taXNlPFVzZXI8VD4gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMudXNlcihwYXJhbXMgfHwgKHsgd2l0aFB1YmxpY0tleTogdHJ1ZSB9IGFzIFQpKTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyB1c2VyPFQgZXh0ZW5kcyBTdGF0aWNHZXRVc2VyUGFyYW1zPihcbiAgICBwYXJhbXM6IFQsXG4gICAgc2Vzc2lvbklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuICApOiBQcm9taXNlPFVzZXI8VD4gfCBudWxsPiB7XG4gICAgY29uc3QgdXNlciA9IGF3YWl0IGdldFVzZXI8VD4oe1xuICAgICAgY2xpZW50OiB0aGlzLl9nZXRCYXNlQ2xpZW50KHBhcmFtcy5lbnYsIHNlc3Npb25JZCksXG4gICAgICB1c2VySWQ6IHBhcmFtcy51c2VySWRcbiAgICB9KTtcblxuICAgIGlmICh1c2VyKSB7XG4gICAgICB1c2Vyc0NhY2hlLnNldCh1c2VyLmlkLCB1c2VyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXNlcjtcbiAgfVxuXG4gIGFzeW5jIHVzZXI8VCBleHRlbmRzIENsYXNzR2V0VXNlclBhcmFtcz4ocGFyYW1zOiBUKTogUHJvbWlzZTxVc2VyPFQ+IHwgbnVsbD4ge1xuICAgIGNvbnN0IHVzZXIgPSBhd2FpdCBnZXRVc2VyPFQ+KHtcbiAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICB1c2VySWQ6IHBhcmFtcy51c2VySWQsXG4gICAgICB3aXRoUHVibGljS2V5OiBwYXJhbXMud2l0aFB1YmxpY0tleVxuICAgIH0pO1xuXG4gICAgaWYgKHVzZXIpIHtcbiAgICAgIHVzZXJzQ2FjaGUuc2V0KHVzZXIuaWQsIHVzZXIpO1xuICAgIH1cblxuICAgIHJldHVybiB1c2VyO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlUHJvZmlsZSh7XG4gICAgZmlyc3RuYW1lLFxuICAgIGxhc3RuYW1lLFxuICAgIGxhbmdcbiAgfToge1xuICAgIGZpcnN0bmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgICBsYXN0bmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgICBsYW5nOiBMYW5nIHwgbnVsbDtcbiAgfSk6IFByb21pc2U8VXNlcj4ge1xuICAgIGNvbnN0IHsgdXBkYXRlUHJvZmlsZSB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgdXBkYXRlUHJvZmlsZTogW1xuICAgICAgICB7XG4gICAgICAgICAgZmlyc3RuYW1lLFxuICAgICAgICAgIGxhc3RuYW1lLFxuICAgICAgICAgIGxhbmdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgIGZpcnN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICBsYW5nOiB0cnVlLFxuICAgICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICAgIHBob25lOiB0cnVlLFxuICAgICAgICAgIHJvbGU6IHRydWUsXG4gICAgICAgICAgZGVsZXRlZEF0OiB0cnVlLFxuICAgICAgICAgIGxhc3RMb2dpbjogdHJ1ZVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXVwZGF0ZVByb2ZpbGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi51cGRhdGVQcm9maWxlLFxuICAgICAgbGFzdExvZ2luOiBuZXcgRGF0ZSh1cGRhdGVQcm9maWxlLmxhc3RMb2dpbiksXG4gICAgICBkZWxldGVkQXQ6IHVwZGF0ZVByb2ZpbGUuZGVsZXRlZEF0XG4gICAgICAgID8gbmV3IERhdGUodXBkYXRlUHJvZmlsZS5kZWxldGVkQXQpXG4gICAgICAgIDogbnVsbFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgcGxhbnMoXG4gICAgZW52OiBTZWNyZWN5RW52LFxuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxQbGFuW10+IHtcbiAgICBjb25zdCB7IHBsYW5zIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KGVudiwgc2Vzc2lvbklkKS5xdWVyeSh7XG4gICAgICBwbGFuczoge1xuICAgICAgICBraW5kOiB0cnVlLFxuICAgICAgICBjb2RlczogdHJ1ZSxcbiAgICAgICAgbGltaXRzOiB7XG4gICAgICAgICAgZG93bmxvYWRCYW5kd2lkdGg6IHRydWUsXG4gICAgICAgICAgZG93bmxvYWRDb3VudDogdHJ1ZSxcbiAgICAgICAgICBoYXJkRmlsZUNvdW50OiB0cnVlLFxuICAgICAgICAgIGhhcmRGaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICBwZXJGaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICB1cGxvYWRCYW5kd2lkdGg6IHRydWUsXG4gICAgICAgICAgdXBsb2FkQ291bnQ6IHRydWUsXG4gICAgICAgICAgcmVjZWl2ZWRNYWlsczoge1xuICAgICAgICAgICAgY291bnQ6IHRydWUsXG4gICAgICAgICAgICBmaWxlQ291bnQ6IHRydWUsXG4gICAgICAgICAgICBmaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgIGhhcmRDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGhhcmRGaWxlQ291bnQ6IHRydWUsXG4gICAgICAgICAgICBoYXJkRmlsZVNpemU6IHRydWUsXG4gICAgICAgICAgICBwZXJGaWxlU2l6ZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VudE1haWxzOiB7XG4gICAgICAgICAgICBjb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgICAgaGFyZENvdW50OiB0cnVlLFxuICAgICAgICAgICAgaGFyZEZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGhhcmRGaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgIHBlckZpbGVTaXplOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcGxhbnM7XG4gIH1cblxuICBhc3luYyBwYXkoXG4gICAgcGxhbkNvZGU6IFNlY3JlY3lQbGFuc0NvZGVzLFxuICAgIGlucHV0OiBQYXlJbnB1dCxcbiAgICBhdXRvUmVuZXc/OiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZFxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IHBheSB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgcGF5OiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICBwbGFuQ29kZSxcbiAgICAgICAgICBhdXRvUmVuZXdcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBheSA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIGNhbmNlbFBheW1lbnQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBjYW5jZWxQYXltZW50IH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICBjYW5jZWxQYXltZW50OiB0cnVlXG4gICAgfSk7XG5cbiAgICByZXR1cm4gY2FuY2VsUGF5bWVudCA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIHBheW1lbnRJbmZvcygpOiBQcm9taXNlPFBheW1lbnRJbmZvcyB8IG51bGw+IHtcbiAgICBjb25zdCB7IHBheW1lbnRJbmZvcyB9ID0gYXdhaXQgdGhpcy5jbGllbnQucXVlcnkoe1xuICAgICAgcGF5bWVudEluZm9zOiB7XG4gICAgICAgIGhvc3RlZFVybDogdHJ1ZSxcbiAgICAgICAgY3VycmVudFN1YnNjcmlwdGlvbjoge1xuICAgICAgICAgIGF1dG9yZW5ldzogdHJ1ZSxcbiAgICAgICAgICBhY3RpdmF0ZWRBdDogdHJ1ZSxcbiAgICAgICAgICBjdXJyZW50UGVyaW9kRW5kc0F0OiB0cnVlLFxuICAgICAgICAgIGN1cnJlbnRQZXJpb2RTdGFydGVkQXQ6IHRydWUsXG4gICAgICAgICAgY2FuY2VsZWRBdDogdHJ1ZSxcbiAgICAgICAgICBjcmVhdGVkQXQ6IHRydWUsXG4gICAgICAgICAgZXhwaXJlc0F0OiB0cnVlLFxuICAgICAgICAgIHBhdXNlZEF0OiB0cnVlLFxuICAgICAgICAgIHRyaWFsRW5kc0F0OiB0cnVlLFxuICAgICAgICAgIHRyaWFsU3RhcnRlZEF0OiB0cnVlLFxuICAgICAgICAgIHVwZGF0ZWRBdDogdHJ1ZSxcbiAgICAgICAgICBzdGF0ZTogdHJ1ZSxcbiAgICAgICAgICBjb2xsZWN0aW9uTWV0aG9kOiB0cnVlLFxuICAgICAgICAgIHBsYW46IHRydWUsXG4gICAgICAgICAgcGxhbkNvZGU6IHRydWUsXG5cbiAgICAgICAgICB0b3RhbDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBpbnZvaWNlczoge1xuICAgICAgICAgIHBkZjogdHJ1ZSxcbiAgICAgICAgICBkYXRlOiB0cnVlLFxuICAgICAgICAgIGR1ZTogdHJ1ZSxcbiAgICAgICAgICBzdGF0dXM6IHRydWUsXG4gICAgICAgICAgdG90YWw6IHRydWUsXG4gICAgICAgICAgbmFtZTogdHJ1ZSxcbiAgICAgICAgICBjdXJyZW5jeTogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoIXBheW1lbnRJbmZvcykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGludGVybmFsVG9QYXltZW50SW5mb3MocGF5bWVudEluZm9zKTtcbiAgfVxuXG4gIGFzeW5jIGxpbWl0cygpOiBQcm9taXNlPFF1ZXJ5TGltaXRzIHwgbnVsbD4ge1xuICAgIGNvbnN0IHsgbGltaXRzIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5xdWVyeSh7XG4gICAgICBsaW1pdHM6IHtcbiAgICAgICAgY2xvdWQ6IHtcbiAgICAgICAgICBzaXplOiB0cnVlLFxuICAgICAgICAgIG1heFNpemU6IHRydWUsXG4gICAgICAgICAgY291bnQ6IHRydWUsXG4gICAgICAgICAgbWF4Q291bnQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgbWFpbDoge1xuICAgICAgICAgIHJlY2VpdmVkOiB7XG4gICAgICAgICAgICBjb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIG1heENvdW50OiB0cnVlLFxuICAgICAgICAgICAgZmlsZUNvdW50OiB0cnVlLFxuICAgICAgICAgICAgbWF4RmlsZUNvdW50OiB0cnVlLFxuICAgICAgICAgICAgZmlsZVNpemU6IHRydWUsXG4gICAgICAgICAgICBtYXhGaWxlU2l6ZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VudDoge1xuICAgICAgICAgICAgY291bnQ6IHRydWUsXG4gICAgICAgICAgICBtYXhDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIG1heEZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgICAgbWF4RmlsZVNpemU6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICghbGltaXRzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB7IGNsb3VkLCBtYWlsIH0gPSBsaW1pdHM7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY2xvdWQ6IHtcbiAgICAgICAgY291bnQ6IEJpZ0ludChjbG91ZC5jb3VudCksXG4gICAgICAgIHNpemU6IEJpZ0ludChjbG91ZC5zaXplKSxcbiAgICAgICAgbWF4Q291bnQ6IGNsb3VkLm1heENvdW50ID8gQmlnSW50KGNsb3VkLm1heENvdW50KSA6IG51bGwsXG4gICAgICAgIG1heFNpemU6IGNsb3VkLm1heFNpemUgPyBCaWdJbnQoY2xvdWQubWF4U2l6ZSkgOiBudWxsXG4gICAgICB9LFxuICAgICAgbWFpbDoge1xuICAgICAgICByZWNlaXZlZDoge1xuICAgICAgICAgIGNvdW50OiBCaWdJbnQobWFpbC5yZWNlaXZlZC5jb3VudCksXG4gICAgICAgICAgbWF4Q291bnQ6IG1haWwucmVjZWl2ZWQubWF4Q291bnRcbiAgICAgICAgICAgID8gQmlnSW50KG1haWwucmVjZWl2ZWQubWF4Q291bnQpXG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgZmlsZUNvdW50OiBCaWdJbnQobWFpbC5yZWNlaXZlZC5maWxlQ291bnQpLFxuICAgICAgICAgIG1heEZpbGVDb3VudDogbWFpbC5yZWNlaXZlZC5tYXhGaWxlQ291bnRcbiAgICAgICAgICAgID8gQmlnSW50KG1haWwucmVjZWl2ZWQubWF4RmlsZUNvdW50KVxuICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgIGZpbGVTaXplOiBCaWdJbnQobWFpbC5yZWNlaXZlZC5maWxlU2l6ZSksXG4gICAgICAgICAgbWF4RmlsZVNpemU6IG1haWwucmVjZWl2ZWQubWF4RmlsZVNpemVcbiAgICAgICAgICAgID8gQmlnSW50KG1haWwucmVjZWl2ZWQubWF4RmlsZVNpemUpXG4gICAgICAgICAgICA6IG51bGxcbiAgICAgICAgfSxcbiAgICAgICAgc2VudDoge1xuICAgICAgICAgIGNvdW50OiBCaWdJbnQobWFpbC5zZW50LmNvdW50KSxcbiAgICAgICAgICBtYXhDb3VudDogbWFpbC5zZW50Lm1heENvdW50ID8gQmlnSW50KG1haWwuc2VudC5tYXhDb3VudCkgOiBudWxsLFxuICAgICAgICAgIGZpbGVDb3VudDogQmlnSW50KG1haWwuc2VudC5maWxlQ291bnQpLFxuICAgICAgICAgIG1heEZpbGVDb3VudDogbWFpbC5zZW50Lm1heEZpbGVDb3VudFxuICAgICAgICAgICAgPyBCaWdJbnQobWFpbC5zZW50Lm1heEZpbGVDb3VudClcbiAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICBmaWxlU2l6ZTogQmlnSW50KG1haWwuc2VudC5maWxlU2l6ZSksXG4gICAgICAgICAgbWF4RmlsZVNpemU6IG1haWwuc2VudC5tYXhGaWxlU2l6ZVxuICAgICAgICAgICAgPyBCaWdJbnQobWFpbC5zZW50Lm1heEZpbGVTaXplKVxuICAgICAgICAgICAgOiBudWxsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZ29kRmF0aGVyQW5kQ2hpbGRyZW4oKTogUHJvbWlzZTxHb2RGYXRoZXJBbmRDaGlsZHJlbiB8IG51bGw+IHtcbiAgICBjb25zdCB7IHVzZXIgfSA9IGF3YWl0IHRoaXMuY2xpZW50LnF1ZXJ5KHtcbiAgICAgIHVzZXI6IFtcbiAgICAgICAge30sXG4gICAgICAgIHtcbiAgICAgICAgICBnb2RDaGlsZHJlbjoge1xuICAgICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICAgICAgcGhvbmU6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdvZEZhdGhlcjoge1xuICAgICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICAgICAgcGhvbmU6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghdXNlcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnVzZXIsXG4gICAgICBnb2RGYXRoZXI6IHVzZXIuZ29kRmF0aGVyID8/IG51bGxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIHVwZGF0ZUFwcERCQ29uZmlnKHtcbiAgICBhcHBDb2RlLFxuICAgIGNvbmZpZyxcbiAgICBlbnYsXG4gICAgc2Vzc2lvbklkXG4gIH06IHtcbiAgICBhcHBDb2RlOiBzdHJpbmc7XG4gICAgY29uZmlnOiBBcHBEQkNvbmZpZztcbiAgICBlbnY6IFNlY3JlY3lFbnY7XG4gICAgc2Vzc2lvbklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8QXBwREJDb25maWc+IHtcbiAgICBjb25zdCB7IGRiQ29uZmlnIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KFxuICAgICAgZW52LFxuICAgICAgc2Vzc2lvbklkXG4gICAgKS5tdXRhdGlvbih7XG4gICAgICBkYkNvbmZpZzogW1xuICAgICAgICB7XG4gICAgICAgICAgYXBwQ29kZSxcbiAgICAgICAgICBjb25maWc6IEpTT04uc3RyaW5naWZ5KGNvbmZpZylcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRiQ29uZmlnO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGdldEFwcERCQ29uZmlnKFxuICAgIGFwcENvZGU6IHN0cmluZyxcbiAgICBlbnY6IFNlY3JlY3lFbnYsXG4gICAgc2Vzc2lvbklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuICApOiBQcm9taXNlPEFwcERCQ29uZmlnPiB7XG4gICAgY29uc3QgeyBkYkNvbmZpZyB9ID0gYXdhaXQgQmFzZUNsaWVudC5fZ2V0QmFzZUNsaWVudChlbnYsIHNlc3Npb25JZCkucXVlcnkoe1xuICAgICAgZGJDb25maWc6IFtcbiAgICAgICAge1xuICAgICAgICAgIGFwcENvZGVcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRiQ29uZmlnO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGdldEZBUSh7XG4gICAgbGFuZyxcbiAgICBlbnYsXG4gICAgc2Vzc2lvbklkXG4gIH06IHtcbiAgICBsYW5nPzogTGFuZztcbiAgICBlbnY6IFNlY3JlY3lFbnY7XG4gICAgc2Vzc2lvbklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8RmFxSXRlbVtdPiB7XG4gICAgY29uc3QgeyBmYXEgfSA9IGF3YWl0IEJhc2VDbGllbnQuX2dldEJhc2VDbGllbnQoZW52LCBzZXNzaW9uSWQpLnF1ZXJ5KHtcbiAgICAgIGZhcTogW1xuICAgICAgICB7XG4gICAgICAgICAgbGFuZ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYW5zd2VyOiB0cnVlLFxuICAgICAgICAgIG9yZGVyOiB0cnVlLFxuICAgICAgICAgIHF1ZXN0aW9uOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBmYXE7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZ2V0QmxvZyh7XG4gICAgZW52LFxuICAgIGxhbmcsXG4gICAgc2Vzc2lvbklkXG4gIH06IHtcbiAgICBlbnY6IFNlY3JlY3lFbnY7XG4gICAgbGFuZz86IExhbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPEJsb2dJdGVtW10+IHtcbiAgICBjb25zdCB7IGJsb2cgfSA9IGF3YWl0IEJhc2VDbGllbnQuX2dldEJhc2VDbGllbnQoZW52LCBzZXNzaW9uSWQpLnF1ZXJ5KHtcbiAgICAgIGJsb2c6IFtcbiAgICAgICAge1xuICAgICAgICAgIGxhbmdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgIGJsb2dJZDogdHJ1ZSxcbiAgICAgICAgICBhdXRob3I6IHRydWUsXG4gICAgICAgICAgYm9keTogdHJ1ZSxcbiAgICAgICAgICBkYXRlOiB0cnVlLFxuICAgICAgICAgIGltYWdlOiB0cnVlLFxuICAgICAgICAgIGltYWdlQWx0OiB0cnVlLFxuICAgICAgICAgIHN1bW1hcnk6IHRydWUsXG4gICAgICAgICAgdGl0bGU6IHRydWUsXG4gICAgICAgICAgb3JkZXI6IHRydWVcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJsb2cubWFwKGIgPT4gKHsgLi4uYiwgZGF0ZTogbmV3IERhdGUoYi5kYXRlKSB9KSk7XG4gIH1cblxuICBhc3luYyByZXBvcnRVc2VyKFxuICAgIHJlcG9ydGVkVXNlcklkOiBzdHJpbmcsXG4gICAgY3VzdG9tTWVzc2FnZT86IHN0cmluZ1xuICApOiBQcm9taXNlPFNlbmRSZXBvcnQgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCB7IHNlbmRSZXBvcnQgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIHNlbmRSZXBvcnQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIHJlcG9ydGVkVXNlcklkLFxuICAgICAgICAgIGN1c3RvbU1lc3NhZ2VcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgIGN1c3RvbU1lc3NhZ2U6IHRydWUsXG4gICAgICAgICAgdXNlcjoge1xuICAgICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGVtYWlsOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXBvcnRlZFVzZXI6IHtcbiAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgZmlyc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbGFzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBlbWFpbDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNlbmRSZXBvcnQ7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZGVsZXRlVXNlcih7XG4gICAgc2Vzc2lvbklkLFxuICAgIHVzZXJJZCxcbiAgICBlbnZcbiAgfToge1xuICAgIHNlc3Npb25JZDogc3RyaW5nO1xuICAgIHVzZXJJZD86IHN0cmluZztcbiAgICBlbnY6IFNlY3JlY3lFbnY7XG4gIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGRlbGV0ZVVzZXIgfSA9IGF3YWl0IEJhc2VDbGllbnQuX2dldEJhc2VDbGllbnQoXG4gICAgICBlbnYsXG4gICAgICBzZXNzaW9uSWRcbiAgICApLm11dGF0aW9uKHtcbiAgICAgIGRlbGV0ZVVzZXI6IFtcbiAgICAgICAge1xuICAgICAgICAgIHVzZXJJZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVsZXRlVXNlciA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIGRiR2V0PFU+KHtcbiAgICBmaWVsZCxcbiAgICB1c2VySWRcbiAgfToge1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgdXNlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8VT4ge1xuICAgIGNvbnN0IHsgZGJHZXQgfSA9IGF3YWl0IHRoaXMuY2xpZW50LnF1ZXJ5KHtcbiAgICAgIGRiR2V0OiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICB1c2VySWRcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRiR2V0LnJlcztcbiAgfVxuXG4gIGFzeW5jIGRiU2V0PFQgZXh0ZW5kcyBVc2VyRGF0YSwgVSBleHRlbmRzIERvY3VtZW50Pih7XG4gICAgdmFsdWUsXG4gICAgdXNlcklkXG4gIH06IHtcbiAgICB2YWx1ZTogVTtcbiAgICB1c2VySWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB9KTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgdmFsdWUgc2hvdWxkIGJlIGFuIG9iamVjdCBpbmNsdWRpbmcgZmllbGRzIHlvdSB3YW50IHRvIHVwZGF0ZS5gXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHsgZGJTZXQgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIGRiU2V0OiBbXG4gICAgICAgIHtcbiAgICAgICAgICB1c2VySWQsXG4gICAgICAgICAgdmFsdWU6IHNlcmlhbGl6ZSh2YWx1ZSkudG9TdHJpbmcoXCJiYXNlNjRcIilcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRiU2V0LnJlcztcbiAgfVxuXG4gIGFzeW5jIGRiU2VhcmNoPFQ+KHtcbiAgICBzZWFyY2gsXG4gICAgZmllbGRcbiAgfToge1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgc2VhcmNoOiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPFRbXT4ge1xuICAgIGNvbnN0IHsgZGJTZWFyY2ggfSA9IGF3YWl0IHRoaXMuY2xpZW50LnF1ZXJ5KHtcbiAgICAgIGRiU2VhcmNoOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICAgZmllbGRcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRiU2VhcmNoO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlRm9sZGVyKHsgaWQgfTogeyBpZDogc3RyaW5nIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGRlbGV0ZUZvbGRlciB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgZGVsZXRlRm9sZGVyOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVsZXRlRm9sZGVyID8/IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgbW92ZUZvbGRlcnMoe1xuICAgIGZvbGRlcnNJZCxcbiAgICBwYXJlbnRGb2xkZXJJZFxuICB9OiB7XG4gICAgZm9sZGVyc0lkOiBzdHJpbmdbXTtcbiAgICBwYXJlbnRGb2xkZXJJZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IG1vdmVGb2xkZXJzIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICBtb3ZlRm9sZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgZm9sZGVyc0lkLFxuICAgICAgICAgIHBhcmVudEZvbGRlcklkXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBtb3ZlRm9sZGVycyA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIG1vdmVGaWxlcyh7XG4gICAgZmlsZXNJZCxcbiAgICBwYXJlbnRGb2xkZXJJZFxuICB9OiB7XG4gICAgZmlsZXNJZDogc3RyaW5nW107XG4gICAgcGFyZW50Rm9sZGVySWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBtb3ZlRmlsZXMgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIG1vdmVGaWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgZmlsZXNJZCxcbiAgICAgICAgICBwYXJlbnRGb2xkZXJJZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbW92ZUZpbGVzID8/IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgZm9sZGVyU2l6ZSh7XG4gICAgZm9sZGVySWRcbiAgfToge1xuICAgIGZvbGRlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8Rm9sZGVyU2l6ZSB8IG51bGw+IHtcbiAgICBjb25zdCB7IGZvbGRlclNpemUgfSA9IGF3YWl0IHRoaXMuY2xpZW50LnF1ZXJ5KHtcbiAgICAgIGZvbGRlclNpemU6IFtcbiAgICAgICAge1xuICAgICAgICAgIGZvbGRlcklkXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBzaXplOiB0cnVlLFxuICAgICAgICAgIHNpemVCZWZvcmU6IHRydWVcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFmb2xkZXJTaXplKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2l6ZTogQmlnSW50KGZvbGRlclNpemUuc2l6ZSksXG4gICAgICBzaXplQmVmb3JlOiBCaWdJbnQoZm9sZGVyU2l6ZS5zaXplQmVmb3JlKVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -39,6 +39,7 @@ function _gqlVFileToInternal() {
39
39
  throw "VFile " + gql.id + " doesn't have userApp";
40
40
 
41
41
  case 4:
42
+ // console.dir(gql, { depth: Infinity })
42
43
  nameKey = decryptCryptoBox(sodium.from_hex(gql.userApp.nameKey), gql.createdBy.user.publicKey, keyPair.privateKey);
43
44
  _context.t0 = _objectSpread;
44
45
  _context.t1 = _objectSpread({}, gql);
@@ -160,4 +161,4 @@ function _gqlVFileToExternal() {
160
161
  }));
161
162
  return _gqlVFileToExternal.apply(this, arguments);
162
163
  }
163
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQvY29udmVydC92RmlsZS50cyJdLCJuYW1lcyI6WyJ2RmlsZXNDYWNoZSIsImRlY3J5cHRDcnlwdG9Cb3giLCJkZWNyeXB0U2VjcmV0c3RyZWFtIiwic29kaXVtIiwiZ3FsRmlsZVRvSW50ZXJuYWwiLCJpbnRlcm5hbEZpbGVUb0ZpbGUiLCJncWxGb2xkZXJUb0ludGVybmFsIiwiaW50ZXJuYWxGb2xkZXJUb0ZvbGRlciIsImdxbFZGaWxlVG9JbnRlcm5hbCIsImdxbCIsImtleVBhaXIiLCJjdXJyZW50IiwiaWQiLCJ1c2VyQXBwIiwibmFtZUtleSIsImZyb21faGV4IiwiY3JlYXRlZEJ5IiwidXNlciIsInB1YmxpY0tleSIsInByaXZhdGVLZXkiLCJmaWxlbmFtZSIsInRvX3N0cmluZyIsInJpZ2h0cyIsImlzUm9vdCIsInRvX2hleCIsInVzZXJBcHBzIiwibWFwIiwidSIsIkRhdGUiLCJjcmVhdGVkQXQiLCJ1cGRhdGVkQXQiLCJkZWxldGVkQXQiLCJoaXN0b3J5IiwiZiIsInVzZXJzIiwiaW50ZXJuYWwiLCJmb2xkZXIiLCJpbnRlcm5hbFdpdGhGb2xkZXIiLCJzZXQiLCJpbnRlcm5hbFZGaWxlVG9WRmlsZSIsInZGaWxlIiwiZ3FsVkZpbGVUb0V4dGVybmFsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLFNBQVNBLFdBQVQsUUFBNEIsZ0JBQTVCO0FBRUEsU0FBU0MsZ0JBQVQsUUFBaUMsdUJBQWpDO0FBQ0EsU0FBU0MsbUJBQVQsUUFBb0Msc0JBQXBDO0FBQ0EsU0FBU0MsTUFBVCxRQUF1QixpQkFBdkI7QUFTQSxTQUFTQyxpQkFBVCxFQUE0QkMsa0JBQTVCLFFBQXNELFdBQXREO0FBQ0EsU0FBU0MsbUJBQVQsRUFBOEJDLHNCQUE5QixRQUE0RCxhQUE1RDtBQUVBLGdCQUFzQkMsa0JBQXRCO0FBQUE7QUFBQTs7O2lGQUFPLGlCQUNMQyxHQURLLEVBRUxDLE9BRks7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FB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Q0w7QUFDQSxtQkFBT0YsUUFBUSxDQUFDVixRQUFoQjtBQUVBekIsWUFBQUEsV0FBVyxDQUFDc0MsR0FBWixDQUFnQkgsUUFBUSxDQUFDdkIsRUFBekIsRUFBNkJ1QixRQUE3QjtBQWhESyw2Q0FpREVBLFFBakRGOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEc7Ozs7QUFvRFAsT0FBTyxTQUFTSSxvQkFBVCxDQUNMSixRQURLLEVBRW9CO0FBQ3pCLE1BQU1LLEtBQVksbUNBQ2JMLFFBRGE7QUFFaEJ4QixJQUFBQSxPQUFPLEVBQUVOLGtCQUFrQixDQUFDOEIsUUFBUSxDQUFDeEIsT0FBVixDQUZYO0FBR2hCcUIsSUFBQUEsT0FBTyxFQUFFRyxRQUFRLENBQUNILE9BQVQsQ0FBaUJOLEdBQWpCLENBQXFCckIsa0JBQXJCO0FBSE8sSUFBbEIsQ0FEeUIsQ0FNekI7OztBQUNBLFNBQU9tQyxLQUFLLENBQUMxQixPQUFiOztBQUVBLE1BQUksWUFBWXFCLFFBQWhCLEVBQTBCO0FBQ3hCLDJDQUNLQSxRQURMO0FBRUVDLE1BQUFBLE1BQU0sRUFBRTdCLHNCQUFzQixDQUFDNEIsUUFBUSxDQUFDQyxNQUFWO0FBRmhDO0FBSUQ7O0FBRUQsU0FBT0ksS0FBUDtBQUNEO0FBRUQsZ0JBQXNCQyxrQkFBdEI7QUFBQTtBQUFBOzs7aUZBQU8sa0JBQ0xoQyxHQURLLEVBRUxDLE9BRks7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDJCQUlFNkIsb0JBSkY7QUFBQTtBQUFBLG1CQUk2Qi9CLGtCQUFrQixDQUFDQyxHQUFELEVBQU1DLE9BQU4sQ0FKL0M7O0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB2RmlsZXNDYWNoZSB9IGZyb20gXCIuLi8uLi9jYWNoZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBLZXlQYWlyIH0gZnJvbSBcIi4uLy4uL2NyeXB0by9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZGVjcnlwdENyeXB0b0JveCB9IGZyb20gXCIuLi8uLi9jcnlwdG8vaW5kZXguanNcIjtcbmltcG9ydCB7IGRlY3J5cHRTZWNyZXRzdHJlYW0gfSBmcm9tIFwiLi4vLi4vY3J5cHRvL2ZpbGUuanNcIjtcbmltcG9ydCB7IHNvZGl1bSB9IGZyb20gXCIuLi8uLi9zb2RpdW0uanNcIjtcbmltcG9ydCB0eXBlIHtcbiAgR1FMVkZpbGUsXG4gIEdRTFZGaWxlV2l0aEZvbGRlcixcbiAgSW50ZXJuYWxWRmlsZSxcbiAgSW50ZXJuYWxWRmlsZVdpdGhGb2xkZXIsXG4gIFZGaWxlLFxuICBWRmlsZVdpdGhGb2xkZXJcbn0gZnJvbSBcIi4uL3R5cGVzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBncWxGaWxlVG9JbnRlcm5hbCwgaW50ZXJuYWxGaWxlVG9GaWxlIH0gZnJvbSBcIi4vZmlsZS5qc1wiO1xuaW1wb3J0IHsgZ3FsRm9sZGVyVG9JbnRlcm5hbCwgaW50ZXJuYWxGb2xkZXJUb0ZvbGRlciB9IGZyb20gXCIuL2ZvbGRlci5qc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ3FsVkZpbGVUb0ludGVybmFsKFxuICBncWw6IEdRTFZGaWxlIHwgR1FMVkZpbGVXaXRoRm9sZGVyLFxuICBrZXlQYWlyOiBLZXlQYWlyXG4pOiBQcm9taXNlPEludGVybmFsVkZpbGUgfCBJbnRlcm5hbFZGaWxlV2l0aEZvbGRlcj4ge1xuICBpZiAoIWdxbC5jdXJyZW50KSB7XG4gICAgdGhyb3cgYFZGaWxlICR7Z3FsLmlkfSBkb2Vzbid0IGhhdmUgY3VycmVudCBmaWxlYDtcbiAgfVxuXG4gIGlmICghZ3FsLnVzZXJBcHApIHtcbiAgICB0aHJvdyBgVkZpbGUgJHtncWwuaWR9IGRvZXNuJ3QgaGF2ZSB1c2VyQXBwYDtcbiAgfVxuXG4gIGNvbnN0IG5hbWVLZXkgPSBkZWNyeXB0Q3J5cHRvQm94KFxuICAgIHNvZGl1bS5mcm9tX2hleChncWwudXNlckFwcC5uYW1lS2V5KSxcbiAgICBncWwuY3JlYXRlZEJ5LnVzZXIucHVibGljS2V5LFxuICAgIGtleVBhaXIucHJpdmF0ZUtleVxuICApO1xuICBjb25zdCBpbnRlcm5hbDogSW50ZXJuYWxWRmlsZSA9IHtcbiAgICAuLi5ncWwsXG4gICAgY3JlYXRlZEJ5OiBncWwuY3JlYXRlZEJ5LnVzZXIsXG4gICAgZmlsZW5hbWU6IHNvZGl1bS50b19zdHJpbmcoXG4gICAgICBhd2FpdCBkZWNyeXB0U2VjcmV0c3RyZWFtKG5hbWVLZXksIHNvZGl1bS5mcm9tX2hleChncWwuZmlsZW5hbWUpKVxuICAgICksXG4gICAgdXNlckFwcDoge1xuICAgICAgdXNlckFwcDogZ3FsLnVzZXJBcHAudXNlckFwcCxcbiAgICAgIHJpZ2h0czogZ3FsLnVzZXJBcHAucmlnaHRzLFxuICAgICAgaXNSb290OiBncWwudXNlckFwcC5pc1Jvb3QsXG4gICAgICBuYW1lS2V5OiBzb2RpdW0udG9faGV4KG5hbWVLZXkpXG4gICAgfSxcbiAgICB1c2VyczogZ3FsLnVzZXJBcHBzLm1hcCh1ID0+IFt1LnVzZXJBcHAudXNlciwgdS5yaWdodHNdKSxcbiAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKGdxbC5jcmVhdGVkQXQpLFxuICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoZ3FsLnVwZGF0ZWRBdCksXG4gICAgZGVsZXRlZEF0OiBncWwuZGVsZXRlZEF0ID8gbmV3IERhdGUoZ3FsLmRlbGV0ZWRBdCkgOiBudWxsLFxuICAgIGN1cnJlbnQ6IGdxbEZpbGVUb0ludGVybmFsKGdxbC5jdXJyZW50LCBrZXlQYWlyKSxcbiAgICBoaXN0b3J5OiBncWwuaGlzdG9yeS5tYXAoZiA9PiBncWxGaWxlVG9JbnRlcm5hbChmLCBrZXlQYWlyKSlcbiAgfTtcbiAgaWYgKFwiZm9sZGVyXCIgaW4gZ3FsKSB7XG4gICAgY29uc3QgaW50ZXJuYWxXaXRoRm9sZGVyOiBJbnRlcm5hbFZGaWxlV2l0aEZvbGRlciA9IHtcbiAgICAgIC4uLmludGVybmFsLFxuICAgICAgZm9sZGVyOiBhd2FpdCBncWxGb2xkZXJUb0ludGVybmFsKGdxbC5mb2xkZXIsIGtleVBhaXIpXG4gICAgfTtcbiAgICB2RmlsZXNDYWNoZS5zZXQoaW50ZXJuYWwuaWQsIGludGVybmFsV2l0aEZvbGRlcik7XG4gICAgcmV0dXJuIGludGVybmFsV2l0aEZvbGRlcjtcbiAgfVxuXG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgZGVsZXRlIGludGVybmFsLnVzZXJBcHBzO1xuXG4gIHZGaWxlc0NhY2hlLnNldChpbnRlcm5hbC5pZCwgaW50ZXJuYWwpO1xuICByZXR1cm4gaW50ZXJuYWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnRlcm5hbFZGaWxlVG9WRmlsZShcbiAgaW50ZXJuYWw6IEludGVybmFsVkZpbGUgfCBJbnRlcm5hbFZGaWxlV2l0aEZvbGRlclxuKTogVkZpbGUgfCBWRmlsZVdpdGhGb2xkZXIge1xuICBjb25zdCB2RmlsZTogVkZpbGUgPSB7XG4gICAgLi4uaW50ZXJuYWwsXG4gICAgY3VycmVudDogaW50ZXJuYWxGaWxlVG9GaWxlKGludGVybmFsLmN1cnJlbnQpLFxuICAgIGhpc3Rvcnk6IGludGVybmFsLmhpc3RvcnkubWFwKGludGVybmFsRmlsZVRvRmlsZSlcbiAgfTtcbiAgLy8gQHRzLWlnbm9yZVxuICBkZWxldGUgdkZpbGUubmFtZUtleTtcblxuICBpZiAoXCJmb2xkZXJcIiBpbiBpbnRlcm5hbCkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5pbnRlcm5hbCxcbiAgICAgIGZvbGRlcjogaW50ZXJuYWxGb2xkZXJUb0ZvbGRlcihpbnRlcm5hbC5mb2xkZXIpXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB2RmlsZTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdxbFZGaWxlVG9FeHRlcm5hbChcbiAgZ3FsOiBHUUxWRmlsZSB8IEdRTFZGaWxlV2l0aEZvbGRlcixcbiAga2V5UGFpcjogS2V5UGFpclxuKTogUHJvbWlzZTxWRmlsZSB8IFZGaWxlV2l0aEZvbGRlcj4ge1xuICByZXR1cm4gaW50ZXJuYWxWRmlsZVRvVkZpbGUoYXdhaXQgZ3FsVkZpbGVUb0ludGVybmFsKGdxbCwga2V5UGFpcikpO1xufVxuIl19
164
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQvY29udmVydC92RmlsZS50cyJdLCJuYW1lcyI6WyJ2RmlsZXNDYWNoZSIsImRlY3J5cHRDcnlwdG9Cb3giLCJkZWNyeXB0U2VjcmV0c3RyZWFtIiwic29kaXVtIiwiZ3FsRmlsZVRvSW50ZXJuYWwiLCJpbnRlcm5hbEZpbGVUb0ZpbGUiLCJncWxGb2xkZXJUb0ludGVybmFsIiwiaW50ZXJuYWxGb2xkZXJUb0ZvbGRlciIsImdxbFZGaWxlVG9JbnRlcm5hbCIsImdxbCIsImtleVBhaXIiLCJjdXJyZW50IiwiaWQiLCJ1c2VyQXBwIiwibmFtZUtleSIsImZyb21faGV4IiwiY3JlYXRlZEJ5IiwidXNlciIsInB1YmxpY0tleSIsInByaXZhdGVLZXkiLCJmaWxlbmFtZSIsInRvX3N0cmluZyIsInJpZ2h0cyIsImlzUm9vdCIsInRvX2hleCIsInVzZXJBcHBzIiwibWFwIiwidSIsIkRhdGUiLCJjcmVhdGVkQXQiLCJ1cGRhdGVkQXQiLCJkZWxldGVkQXQiLCJoaXN0b3J5IiwiZiIsInVzZXJzIiwiaW50ZXJuYWwiLCJmb2xkZXIiLCJpbnRlcm5hbFdpdGhGb2xkZXIiLCJzZXQiLCJpbnRlcm5hbFZGaWxlVG9WRmlsZSIsInZGaWxlIiwiZ3FsVkZpbGVUb0V4dGVybmFsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLFNBQVNBLFdBQVQsUUFBNEIsZ0JBQTVCO0FBRUEsU0FBU0MsZ0JBQVQsUUFBaUMsdUJBQWpDO0FBQ0EsU0FBU0MsbUJBQVQsUUFBb0Msc0JBQXBDO0FBQ0EsU0FBU0MsTUFBVCxRQUF1QixpQkFBdkI7QUFTQSxTQUFTQyxpQkFBVCxFQUE0QkMsa0JBQTVCLFFBQXNELFdBQXREO0FBQ0EsU0FBU0MsbUJBQVQsRUFBOEJDLHNCQUE5QixRQUE0RCxhQUE1RDtBQUVBLGdCQUFzQkMsa0JBQXRCO0FBQUE7QUFBQTs7O2lGQUFPLGlCQUNMQyxHQURLLEVBRUxDLE9BRks7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsZ0JBSUFELEdBQUcsQ0FBQ0UsT0FKSjtBQUFBO0FBQUE7QUFBQTs7QUFBQSw2QkFLWUYsR0FBRyxDQUFDRyxFQUxoQjs7QUFBQTtBQUFBLGdCQVFBSCxHQUFHLENBQUNJLE9BUko7QUFBQTtBQUFBO0FBQUE7O0FBQUEsNkJBU1lKLEdBQUcsQ0FBQ0csRUFUaEI7O0FBQUE7QUFZTDtBQUVNRSxZQUFBQSxPQWRELEdBY1diLGdCQUFnQixDQUM5QkUsTUFBTSxDQUFDWSxRQUFQLENBQWdCTixHQUFHLENBQUNJLE9BQUosQ0FBWUMsT0FBNUIsQ0FEOEIsRUFFOUJMLEdBQUcsQ0FBQ08sU0FBSixDQUFjQyxJQUFkLENBQW1CQyxTQUZXLEVBRzlCUixPQUFPLENBQUNTLFVBSHNCLENBZDNCO0FBQUE7QUFBQSw0Q0FvQkFWLEdBcEJBO0FBQUE7QUFBQSwwQkFxQlFBLEdBQUcsQ0FBQ08sU0FBSixDQUFjQyxJQXJCdEI7QUFBQSwwQkFzQk9kLE1BdEJQO0FBQUE7QUFBQSxtQkF1QktELG1CQUFtQixDQUFDWSxPQUFELEVBQVVYLE1BQU0sQ0FBQ1ksUUFBUCxDQUFnQk4sR0FBRyxDQUFDVyxRQUFwQixDQUFWLENBdkJ4Qjs7QUFBQTtBQUFBO0FBQUEsc0NBc0JjQyxTQXRCZDtBQUFBLDBCQXlCTTtBQUNQUixjQUFBQSxPQUFPLEVBQUVKLEdBQUcsQ0FBQ0ksT0FBSixDQUFZQSxPQURkO0FBRVBTLGNBQUFBLE1BQU0sRUFBRWIsR0FBRyxDQUFDSSxPQUFKLENBQVlTLE1BRmI7QUFHUEMsY0FBQUEsTUFBTSxFQUFFZCxHQUFHLENBQUNJLE9BQUosQ0FBWVUsTUFIYjtBQUlQVCxjQUFBQSxPQUFPLEVBQUVYLE1BQU0sQ0FBQ3FCLE1BQVAsQ0FBY1YsT0FBZDtBQUpGLGFBekJOO0FBQUEsMEJBK0JJTCxHQUFHLENBQUNnQixRQUFKLENBQWFDLEdBQWIsQ0FBaUIsVUFBQUMsQ0FBQztBQUFBLHFCQUFJLENBQUNBLENBQUMsQ0FBQ2QsT0FBRixDQUFVSSxJQUFYLEVBQWlCVSxDQUFDLENBQUNMLE1BQW5CLENBQUo7QUFBQSxhQUFsQixDQS9CSjtBQUFBLDBCQWdDUSxJQUFJTSxJQUFKLENBQVNuQixHQUFHLENBQUNvQixTQUFiLENBaENSO0FBQUEsMkJBaUNRLElBQUlELElBQUosQ0FBU25CLEdBQUcsQ0FBQ3FCLFNBQWIsQ0FqQ1I7QUFBQSwyQkFrQ1FyQixHQUFHLENBQUNzQixTQUFKLEdBQWdCLElBQUlILElBQUosQ0FBU25CLEdBQUcsQ0FBQ3NCLFNBQWIsQ0FBaEIsR0FBMEMsSUFsQ2xEO0FBQUEsMkJBbUNNM0IsaUJBQWlCLENBQUNLLEdBQUcsQ0FBQ0UsT0FBTCxFQUFjRCxPQUFkLENBbkN2QjtBQUFBLDJCQW9DTUQsR0FBRyxDQUFDdUIsT0FBSixDQUFZTixHQUFaLENBQWdCLFVBQUFPLENBQUM7QUFBQSxxQkFBSTdCLGlCQUFpQixDQUFDNkIsQ0FBRCxFQUFJdkIsT0FBSixDQUFyQjtBQUFBLGFBQWpCLENBcENOO0FBQUE7QUFxQkhNLGNBQUFBLFNBckJHO0FBc0JISSxjQUFBQSxRQXRCRztBQXlCSFAsY0FBQUEsT0F6Qkc7QUErQkhxQixjQUFBQSxLQS9CRztBQWdDSEwsY0FBQUEsU0FoQ0c7QUFpQ0hDLGNBQUFBLFNBakNHO0FBa0NIQyxjQUFBQSxTQWxDRztBQW1DSHBCLGNBQUFBLE9BbkNHO0FBb0NIcUIsY0FBQUEsT0FwQ0c7QUFBQTtBQW1CQ0csWUFBQUEsUUFuQkQ7O0FBQUEsa0JBc0NELFlBQVkxQixHQXRDWDtBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBLDZDQXdDRTBCLFFBeENGO0FBQUE7QUFBQTtBQUFBLG1CQXlDYTdCLG1CQUFtQixDQUFDRyxHQUFHLENBQUMyQixNQUFMLEVBQWExQixPQUFiLENBekNoQzs7QUFBQTtBQUFBO0FBQUE7QUF5Q0QwQixjQUFBQSxNQXpDQztBQUFBO0FBdUNHQyxZQUFBQSxrQkF2Q0g7QUEyQ0hyQyxZQUFBQSxXQUFXLENBQUNzQyxHQUFaLENBQWdCSCxRQUFRLENBQUN2QixFQUF6QixFQUE2QnlCLGtCQUE3QjtBQTNDRyw2Q0E0Q0lBLGtCQTVDSjs7QUFBQTtBQStDTDtBQUNBLG1CQUFPRixRQUFRLENBQUNWLFFBQWhCO0FBRUF6QixZQUFBQSxXQUFXLENBQUNzQyxHQUFaLENBQWdCSCxRQUFRLENBQUN2QixFQUF6QixFQUE2QnVCLFFBQTdCO0FBbERLLDZDQW1ERUEsUUFuREY7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRzs7OztBQXNEUCxPQUFPLFNBQVNJLG9CQUFULENBQ0xKLFFBREssRUFFb0I7QUFDekIsTUFBTUssS0FBWSxtQ0FDYkwsUUFEYTtBQUVoQnhCLElBQUFBLE9BQU8sRUFBRU4sa0JBQWtCLENBQUM4QixRQUFRLENBQUN4QixPQUFWLENBRlg7QUFHaEJxQixJQUFBQSxPQUFPLEVBQUVHLFFBQVEsQ0FBQ0gsT0FBVCxDQUFpQk4sR0FBakIsQ0FBcUJyQixrQkFBckI7QUFITyxJQUFsQixDQUR5QixDQU16Qjs7O0FBQ0EsU0FBT21DLEtBQUssQ0FBQzFCLE9BQWI7O0FBRUEsTUFBSSxZQUFZcUIsUUFBaEIsRUFBMEI7QUFDeEIsMkNBQ0tBLFFBREw7QUFFRUMsTUFBQUEsTUFBTSxFQUFFN0Isc0JBQXNCLENBQUM0QixRQUFRLENBQUNDLE1BQVY7QUFGaEM7QUFJRDs7QUFFRCxTQUFPSSxLQUFQO0FBQ0Q7QUFFRCxnQkFBc0JDLGtCQUF0QjtBQUFBO0FBQUE7OztpRkFBTyxrQkFDTGhDLEdBREssRUFFTEMsT0FGSztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMkJBSUU2QixvQkFKRjtBQUFBO0FBQUEsbUJBSTZCL0Isa0JBQWtCLENBQUNDLEdBQUQsRUFBTUMsT0FBTixDQUovQzs7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHZGaWxlc0NhY2hlIH0gZnJvbSBcIi4uLy4uL2NhY2hlLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEtleVBhaXIgfSBmcm9tIFwiLi4vLi4vY3J5cHRvL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBkZWNyeXB0Q3J5cHRvQm94IH0gZnJvbSBcIi4uLy4uL2NyeXB0by9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZGVjcnlwdFNlY3JldHN0cmVhbSB9IGZyb20gXCIuLi8uLi9jcnlwdG8vZmlsZS5qc1wiO1xuaW1wb3J0IHsgc29kaXVtIH0gZnJvbSBcIi4uLy4uL3NvZGl1bS5qc1wiO1xuaW1wb3J0IHR5cGUge1xuICBHUUxWRmlsZSxcbiAgR1FMVkZpbGVXaXRoRm9sZGVyLFxuICBJbnRlcm5hbFZGaWxlLFxuICBJbnRlcm5hbFZGaWxlV2l0aEZvbGRlcixcbiAgVkZpbGUsXG4gIFZGaWxlV2l0aEZvbGRlclxufSBmcm9tIFwiLi4vdHlwZXMvaW5kZXguanNcIjtcbmltcG9ydCB7IGdxbEZpbGVUb0ludGVybmFsLCBpbnRlcm5hbEZpbGVUb0ZpbGUgfSBmcm9tIFwiLi9maWxlLmpzXCI7XG5pbXBvcnQgeyBncWxGb2xkZXJUb0ludGVybmFsLCBpbnRlcm5hbEZvbGRlclRvRm9sZGVyIH0gZnJvbSBcIi4vZm9sZGVyLmpzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBncWxWRmlsZVRvSW50ZXJuYWwoXG4gIGdxbDogR1FMVkZpbGUgfCBHUUxWRmlsZVdpdGhGb2xkZXIsXG4gIGtleVBhaXI6IEtleVBhaXJcbik6IFByb21pc2U8SW50ZXJuYWxWRmlsZSB8IEludGVybmFsVkZpbGVXaXRoRm9sZGVyPiB7XG4gIGlmICghZ3FsLmN1cnJlbnQpIHtcbiAgICB0aHJvdyBgVkZpbGUgJHtncWwuaWR9IGRvZXNuJ3QgaGF2ZSBjdXJyZW50IGZpbGVgO1xuICB9XG5cbiAgaWYgKCFncWwudXNlckFwcCkge1xuICAgIHRocm93IGBWRmlsZSAke2dxbC5pZH0gZG9lc24ndCBoYXZlIHVzZXJBcHBgO1xuICB9XG5cbiAgLy8gY29uc29sZS5kaXIoZ3FsLCB7IGRlcHRoOiBJbmZpbml0eSB9KVxuXG4gIGNvbnN0IG5hbWVLZXkgPSBkZWNyeXB0Q3J5cHRvQm94KFxuICAgIHNvZGl1bS5mcm9tX2hleChncWwudXNlckFwcC5uYW1lS2V5KSxcbiAgICBncWwuY3JlYXRlZEJ5LnVzZXIucHVibGljS2V5LFxuICAgIGtleVBhaXIucHJpdmF0ZUtleVxuICApO1xuICBjb25zdCBpbnRlcm5hbDogSW50ZXJuYWxWRmlsZSA9IHtcbiAgICAuLi5ncWwsXG4gICAgY3JlYXRlZEJ5OiBncWwuY3JlYXRlZEJ5LnVzZXIsXG4gICAgZmlsZW5hbWU6IHNvZGl1bS50b19zdHJpbmcoXG4gICAgICBhd2FpdCBkZWNyeXB0U2VjcmV0c3RyZWFtKG5hbWVLZXksIHNvZGl1bS5mcm9tX2hleChncWwuZmlsZW5hbWUpKVxuICAgICksXG4gICAgdXNlckFwcDoge1xuICAgICAgdXNlckFwcDogZ3FsLnVzZXJBcHAudXNlckFwcCxcbiAgICAgIHJpZ2h0czogZ3FsLnVzZXJBcHAucmlnaHRzLFxuICAgICAgaXNSb290OiBncWwudXNlckFwcC5pc1Jvb3QsXG4gICAgICBuYW1lS2V5OiBzb2RpdW0udG9faGV4KG5hbWVLZXkpXG4gICAgfSxcbiAgICB1c2VyczogZ3FsLnVzZXJBcHBzLm1hcCh1ID0+IFt1LnVzZXJBcHAudXNlciwgdS5yaWdodHNdKSxcbiAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKGdxbC5jcmVhdGVkQXQpLFxuICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoZ3FsLnVwZGF0ZWRBdCksXG4gICAgZGVsZXRlZEF0OiBncWwuZGVsZXRlZEF0ID8gbmV3IERhdGUoZ3FsLmRlbGV0ZWRBdCkgOiBudWxsLFxuICAgIGN1cnJlbnQ6IGdxbEZpbGVUb0ludGVybmFsKGdxbC5jdXJyZW50LCBrZXlQYWlyKSxcbiAgICBoaXN0b3J5OiBncWwuaGlzdG9yeS5tYXAoZiA9PiBncWxGaWxlVG9JbnRlcm5hbChmLCBrZXlQYWlyKSlcbiAgfTtcbiAgaWYgKFwiZm9sZGVyXCIgaW4gZ3FsKSB7XG4gICAgY29uc3QgaW50ZXJuYWxXaXRoRm9sZGVyOiBJbnRlcm5hbFZGaWxlV2l0aEZvbGRlciA9IHtcbiAgICAgIC4uLmludGVybmFsLFxuICAgICAgZm9sZGVyOiBhd2FpdCBncWxGb2xkZXJUb0ludGVybmFsKGdxbC5mb2xkZXIsIGtleVBhaXIpXG4gICAgfTtcbiAgICB2RmlsZXNDYWNoZS5zZXQoaW50ZXJuYWwuaWQsIGludGVybmFsV2l0aEZvbGRlcik7XG4gICAgcmV0dXJuIGludGVybmFsV2l0aEZvbGRlcjtcbiAgfVxuXG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgZGVsZXRlIGludGVybmFsLnVzZXJBcHBzO1xuXG4gIHZGaWxlc0NhY2hlLnNldChpbnRlcm5hbC5pZCwgaW50ZXJuYWwpO1xuICByZXR1cm4gaW50ZXJuYWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnRlcm5hbFZGaWxlVG9WRmlsZShcbiAgaW50ZXJuYWw6IEludGVybmFsVkZpbGUgfCBJbnRlcm5hbFZGaWxlV2l0aEZvbGRlclxuKTogVkZpbGUgfCBWRmlsZVdpdGhGb2xkZXIge1xuICBjb25zdCB2RmlsZTogVkZpbGUgPSB7XG4gICAgLi4uaW50ZXJuYWwsXG4gICAgY3VycmVudDogaW50ZXJuYWxGaWxlVG9GaWxlKGludGVybmFsLmN1cnJlbnQpLFxuICAgIGhpc3Rvcnk6IGludGVybmFsLmhpc3RvcnkubWFwKGludGVybmFsRmlsZVRvRmlsZSlcbiAgfTtcbiAgLy8gQHRzLWlnbm9yZVxuICBkZWxldGUgdkZpbGUubmFtZUtleTtcblxuICBpZiAoXCJmb2xkZXJcIiBpbiBpbnRlcm5hbCkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5pbnRlcm5hbCxcbiAgICAgIGZvbGRlcjogaW50ZXJuYWxGb2xkZXJUb0ZvbGRlcihpbnRlcm5hbC5mb2xkZXIpXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB2RmlsZTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdxbFZGaWxlVG9FeHRlcm5hbChcbiAgZ3FsOiBHUUxWRmlsZSB8IEdRTFZGaWxlV2l0aEZvbGRlcixcbiAga2V5UGFpcjogS2V5UGFpclxuKTogUHJvbWlzZTxWRmlsZSB8IFZGaWxlV2l0aEZvbGRlcj4ge1xuICByZXR1cm4gaW50ZXJuYWxWRmlsZVRvVkZpbGUoYXdhaXQgZ3FsVkZpbGVUb0ludGVybmFsKGdxbCwga2V5UGFpcikpO1xufVxuIl19
@@ -3649,4 +3649,4 @@ export var SecrecyClient = /*#__PURE__*/function (_BaseClient) {
3649
3649
 
3650
3650
  return SecrecyClient;
3651
3651
  }(BaseClient);
3652
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvaW5kZXgudHMiXSwibmFtZXMiOlsia3kiLCJheGlvcyIsIkJhc2VDbGllbnQiLCJ2RmlsZXNDYWNoZSIsImZvbGRlcnNDYWNoZSIsImZpbGVzQ2FjaGUiLCJ1c2Vyc0NhY2hlIiwic2VjcmV0c3RyZWFtS2V5Z2VuIiwiZW5jcnlwdFNlY3JldHN0cmVhbSIsImNvbXByZXNzIiwidW5jb21wcmVzcyIsImdxbEZvbGRlclRvRXh0ZXJuYWwiLCJncWxGb2xkZXJUb0V4dGVybmFsRm9sZGVyRnVsbCIsImdxbFZGaWxlVG9FeHRlcm5hbCIsImdxbFZGaWxlVG9JbnRlcm5hbCIsImludGVybmFsVkZpbGVUb1ZGaWxlIiwiZ3FsRmlsZVRvRXh0ZXJuYWwiLCJzb2RpdW0iLCJkZWNyeXB0Q3J5cHRvQm94IiwiZW5jcnlwdENyeXB0b0JveCIsImdlbmVyYXRlIiwibWQ1IiwiZW5jcnlwdCIsImRlY3J5cHQiLCJjaHVua3MiLCJjb25jYXRlbmF0ZSIsImVudW1lcmF0ZSIsInByb21pc2VBbGxMaW1pdCIsImdxbEZpbGVRdWVyeSIsImdxbEZvbGRlclF1ZXJ5IiwiZ3FsRm9sZGVyUXVlcnlXaXRoTGlua3MiLCJncWxNYWlsUXVlcnkiLCJncWxWRmlsZVF1ZXJ5IiwiZ3FsVkZpbGVXaXRoRm9sZGVyUXVlcnkiLCJjb252ZXJ0SW50ZXJuYWxNYWlsVG9FeHRlcm5hbCIsImVuY3J5cHROYW1lIiwibmFtZSIsIm5hbWVLZXkiLCJmcm9tX2hleCIsImZyb21fc3RyaW5nIiwiZGF0YSIsIm5hbWVFbmNyeXB0ZWQiLCJ0b19oZXgiLCJTZWNyZWN5Q2xpZW50IiwidWFTZXNzaW9uIiwidWFLZXlzIiwidWFKd3QiLCJlbnYiLCJqd3QiLCJwZXJGb2xkZXIiLCJmb2xkZXJJZCIsInB1YmxpY0tleSIsImZvbGRlciIsImdldCIsImlkIiwidXNlckFwcCIsInByaXZhdGVLZXkiLCJwZXJWRmlsZSIsInZGaWxlSWQiLCJ2RmlsZSIsImZpbGVzIiwiaGlzdG9yeSIsIm1hcCIsImYiLCJrZXkiLCJ1c2VyIiwiX2VhY2hVc2VyIiwic3ViamVjdCIsImJvZHkiLCJpZE9yTWFpbCIsInUiLCJ1c2VySWQiLCJ3aXRoUHVibGljS2V5IiwidW5kZWZpbmVkIiwiRXJyb3IiLCJyZWNpcGllbnRzRmlsZXMiLCJBcnJheSIsImZpbGVJbkhpc3RvcnkiLCJmaWxlIiwicHVzaCIsImZpbGVLZXkiLCJyZWNpcGllbnRJZCIsImFkZEZpbGVUb0hpc3RvcnkiLCJmaWxlSWQiLCJjbGllbnQiLCJtdXRhdGlvbiIsImZpbmQiLCJ1c2VycyIsImZpbHRlciIsImlucHV0Iiwic2hhcmVGaWxlSW5IaXN0b3J5IiwidXBsb2FkRmlsZSIsImVuY3J5cHRQcm9ncmVzcyIsInVwbG9hZFByb2dyZXNzIiwiY2FuY2VsVG9rZW4iLCJGaWxlIiwiVWludDhBcnJheSIsImFycmF5QnVmZmVyIiwiZmlsZUJ1ZmZlciIsImNvbXByZXNzZWQiLCJlbmNyeXB0ZWRGaWxlIiwibWQ1RmlsZSIsIm1kNUVuY3J5cHRlZCIsImVuY3J5cHRlZEZpbGVLZXkiLCJmaWxlU2l6ZSIsImJ5dGVMZW5ndGgiLCJmaWxlU2l6ZUJlZm9yZSIsImZpbGVQYXJ0U2l6ZSIsInBhcnRzIiwiZmllbGRzIiwib3JkZXIiLCJ1cmwiLCJ0b3RhbCIsImN1cnJlbnQiLCJwZXJjZW50IiwibGVuZ3RoIiwidXBsb2FkUGFydEVuZGVkIiwidXBsb2FkRmlsZVBhcnRFbmQiLCJ1cGxvYWRFbmRlZCIsInVwbG9hZEZpbGVFbmQiLCJjaHVua1BhcnRzIiwiTnVtYmVyIiwiaW5kZXgiLCJjaHVuayIsInByb2dyZXNzUGFydHMiLCJvblByb2dyZXNzIiwicGFydCIsInByb2dyZXNzRXZlbnQiLCJPYmplY3QiLCJ2YWx1ZXMiLCJyZWR1Y2UiLCJwcnYiLCJjdXIiLCJsb2FkZWQiLCJieVBhcnQiLCJmb3JtRGF0YSIsIkZvcm1EYXRhIiwicCIsImVudHJpZXMiLCJ2YWx1ZSIsImFwcGVuZCIsIkJsb2IiLCJwb3N0Iiwib25VcGxvYWRQcm9ncmVzcyIsInJlc3BvbnNlIiwic3RhdHVzIiwidXBsb2FkRmlsZUluQ2xvdWQiLCJzYXZlSW5DbG91ZCIsImxvZ291dCIsInNlc3Npb25JZCIsImNsZWFyIiwiY3JlYXRlRm9sZGVyIiwicGFyZW50Rm9sZGVySWQiLCJlbmNyeXB0ZWROYW1lIiwiZW5jcnlwdGVkS2V5IiwicGFyZW50Rm9sZGVyIiwiUHJvbWlzZSIsImFsbCIsInJpZ2h0cyIsInNoYXJlRm9sZGVyIiwiZGVsZXRlZCIsInF1ZXJ5IiwibWFpbCIsInNoYXJlVkZpbGUiLCJoIiwic2hhcmVkVkZpbGVzIiwidkZpbGVzIiwidkZpbGVzU2hhcmVkV2l0aE1lIiwiZGVsZXRlZFZGaWxlcyIsInNoYXJlZEZvbGRlcnMiLCJmb2xkZXJzIiwiZm9sZGVyc1NoYXJlZFdpdGhNZSIsImRlbGV0ZWRGb2xkZXJzIiwic2hhcmVGb2xkZXJzIiwidkZpbGVJbnB1dCIsInNoYXJlRm9sZGVyRmluaXNoIiwidXBkYXRlRm9sZGVyIiwiaXNGYXZvcml0ZSIsImRlbGV0ZWRBdCIsImNyZWF0ZU1haWwiLCJjdXN0b21NZXNzYWdlIiwiY3JlYXRlRHJhZnRNYWlsIiwic2VuZERyYWZ0TWFpbCIsIm1haWxJbnRlZ3JpdHlJZCIsIndhaXRpbmdSZWNlaXZlZE1haWxzIiwiZGF0ZSIsImF0dGFjaG1lbnRzQ291bnQiLCJzZW5kZXIiLCJmaXJzdG5hbWUiLCJsYXN0bmFtZSIsImVtYWlsIiwicmVjaXBpZW50cyIsInRlbXBvcmFyeVJlY2lwaWVudHMiLCJtIiwiRGF0ZSIsInVwZGF0ZURyYWZ0TWFpbCIsImRyYWZ0SWQiLCJyZWNpcGllbnRzSWRzIiwicmVwbHlUbyIsImRyYWZ0TWFpbHMiLCJkcmFmdHMiLCJkcmFmdCIsImQiLCJoYXNoS2V5IiwiaGFzaCIsInJhbmRvbWJ5dGVzX2J1ZiIsImNyeXB0b19nZW5lcmljaGFzaF9LRVlCWVRFUyIsImNyeXB0b19nZW5lcmljaGFzaCIsImNyeXB0b19nZW5lcmljaGFzaF9CWVRFUyIsIkpTT04iLCJzdHJpbmdpZnkiLCJzZW5kZXJGaWxlcyIsImRlbGV0ZURyYWZ0TWFpbCIsImRlbGV0ZVZGaWxlU2hhcmluZyIsImRlbGV0ZUZvbGRlclNoYXJpbmciLCJkdXBsaWNhdGVWRmlsZSIsImN1c3RvbU5hbWUiLCJkZWxldGVGb2xkZXJDbG91ZFRyYXNoIiwiaWRzIiwiZGVsZXRlVkZpbGVDbG91ZFRyYXNoIiwiZGVsZXRlTWFpbFRyYXNoIiwiZW1wdHlNYWlsVHJhc2giLCJlbXB0eUNsb3VkVHJhc2giLCJyZWNvdmVyRmlsZSIsInJlY292ZXJGb2xkZXIiLCJyZWNvdmVyTWFpbCIsIm1haWxJZCIsImRlbGV0ZUZpbGUiLCJkZWxldGVWRmlsZSIsImRlbGV0ZU1haWwiLCJoYXMiLCJyZWNlaXZlZE1haWxzIiwic29tZSIsImZpbGVNYWlsIiwiZW5jcnlwdGVkTmFtZUtleSIsImZpbGVuYW1lIiwibWUiLCJpbmNsdWRlcyIsIm90aGVycyIsImRyYWZ0TWFpbElkIiwic2VuZFdhaXRpbmdFbWFpbHMiLCJzZW50TWFpbHMiLCJtYWlscyIsImZpbHRlcmVkIiwic2VuZE9uZU1haWwiLCJyZWNpcGllbnQiLCJmaWxlQ29udGVudCIsIm9uRG93bmxvYWRQcm9ncmVzcyIsInByb2dyZXNzRGVjcnlwdCIsImFib3J0IiwiX190eXBlbmFtZSIsImNvbnRlbnRVcmwiLCJ0b3RhbFNpemUiLCJzZW5kZXJQdWJsaWNLZXkiLCJ0cmFuc2ZlcnJlZEJ5dGVzIiwidG90YWxCeXRlcyIsInByIiwic2lnbmFsIiwiYnVmIiwibWQ1UGFydCIsImVuY3J5cHRlZENvbnRlbnQiLCJzb3J0IiwiYSIsImIiLCJzcmMiLCJtZDVDb250ZW50IiwidXBkYXRlRmlsZSIsInJlYWRNYWlsIiwidW5yZWFkTWFpbCIsImFwcFNldHRpbmdzIiwiYXV0b0Rpc2Nvbm5lY3REZWxheSIsImNsb3VkRmlsZURheXNGb3JEZWxldGUiLCJjbG91ZEZvbGRlckRheXNGb3JEZWxldGUiLCJoaXN0b3J5RmlsZURheXNGb3JEZWxldGUiLCJoaXN0b3J5TWF4RmlsZUNvdW50IiwidXBkYXRl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O0FBRXJCLG9CQUFJUSxLQUFKLEVBQVc7QUFDVEYsa0JBQUFBLFVBQVUsQ0FBQ3hILElBQVgsQ0FBZ0IwSCxLQUFoQjtBQUNEO0FBQ0Y7O0FBckJILGlEQXVCU0YsVUF2QlQ7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsS0FwakRGOztBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBOztBQUFBO0FBQUEsRUFBbUNyTSxVQUFuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRG93bmxvYWRQcm9ncmVzcyB9IGZyb20gXCJreVwiO1xuaW1wb3J0IGt5IGZyb20gXCJreVwiO1xuaW1wb3J0IHR5cGUgeyBDYW5jZWxUb2tlbiB9IGZyb20gXCJheGlvc1wiO1xuaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xuaW1wb3J0IHsgQmFzZUNsaWVudCB9IGZyb20gXCIuLi9CYXNlQ2xpZW50LmpzXCI7XG5pbXBvcnQgeyB2RmlsZXNDYWNoZSwgZm9sZGVyc0NhY2hlLCBmaWxlc0NhY2hlLCB1c2Vyc0NhY2hlIH0gZnJvbSBcIi4uL2NhY2hlLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFByb2dyZXNzIH0gZnJvbSBcIi4uL2NyeXB0by9maWxlLmpzXCI7XG5pbXBvcnQgeyBzZWNyZXRzdHJlYW1LZXlnZW4sIGVuY3J5cHRTZWNyZXRzdHJlYW0gfSBmcm9tIFwiLi4vY3J5cHRvL2ZpbGUuanNcIjtcbmltcG9ydCB7IGNvbXByZXNzLCB1bmNvbXByZXNzIH0gZnJvbSBcIi4uL21pbmlmeS9pbmRleC5qc1wiO1xuaW1wb3J0IHtcbiAgZ3FsRm9sZGVyVG9FeHRlcm5hbCxcbiAgZ3FsRm9sZGVyVG9FeHRlcm5hbEZvbGRlckZ1bGxcbn0gZnJvbSBcIi4vY29udmVydC9mb2xkZXIuanNcIjtcbmltcG9ydCB7XG4gIGdxbFZGaWxlVG9FeHRlcm5hbCxcbiAgZ3FsVkZpbGVUb0ludGVybmFsLFxuICBpbnRlcm5hbFZGaWxlVG9WRmlsZVxufSBmcm9tIFwiLi9jb252ZXJ0L3ZGaWxlLmpzXCI7XG5pbXBvcnQgdHlwZSB7XG4gIE1haWxGaWxlSW5wdXQsXG4gIFJlY2VpdmVkTWFpbCxcbiAgU2VudE1haWwsXG4gIEZvbGRlcixcbiAgVkZpbGVXaXRoRm9sZGVyLFxuICBGb2xkZXJGdWxsLFxuICBVc2VyQXBwU2V0dGluZ3MsXG4gIEZpbGUgYXMgU2VjcmVjeUZpbGUsXG4gIFdhaXRpbmdSZWNlaXZlZE1haWwsXG4gIERyYWZ0TWFpbCxcbiAgTWFpbFJlY2lwaWVudElucHV0LFxuICBWRmlsZSxcbiAgU2hhcmVGb2xkZXJzSW5wdXQsXG4gIE5hbWVLZXlJbnB1dCxcbiAgTmFtZUtleUlucHV0Rm9sZGVycyxcbiAgTWFpbCxcbiAgU2hhcmVGaWxlSW5IaXN0b3J5SW5wdXQsXG4gIEZpbGVQYXJ0UmVzcG9uc2UsXG4gIEZpbGVDb250ZW50UGFydFxufSBmcm9tIFwiLi90eXBlcy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZ3FsRmlsZVRvRXh0ZXJuYWwgfSBmcm9tIFwiLi9jb252ZXJ0L2ZpbGUuanNcIjtcbmltcG9ydCB7IHNvZGl1bSB9IGZyb20gXCIuLi9zb2RpdW0uanNcIjtcbmltcG9ydCB0eXBlIHsgS2V5UGFpciB9IGZyb20gXCIuLi9jcnlwdG8vaW5kZXguanNcIjtcbmltcG9ydCB7IGRlY3J5cHRDcnlwdG9Cb3gsIGVuY3J5cHRDcnlwdG9Cb3ggfSBmcm9tIFwiLi4vY3J5cHRvL2luZGV4LmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNlY3JlY3lFbnYgfSBmcm9tIFwiLi9oZWxwZXJzLmpzXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCJzaG9ydGlkXCI7XG5pbXBvcnQgeyBtZDUgfSBmcm9tIFwiLi4vd29ya2VyL21kNS5qc1wiO1xuaW1wb3J0IHsgZW5jcnlwdCwgZGVjcnlwdCB9IGZyb20gXCIuLi93b3JrZXIvc29kaXVtLmpzXCI7XG5pbXBvcnQgeyBjaHVua3MsIGNvbmNhdGVuYXRlLCBlbnVtZXJhdGUsIHByb21pc2VBbGxMaW1pdCB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuaW1wb3J0IHtcbiAgZ3FsRmlsZVF1ZXJ5LFxuICBncWxGb2xkZXJRdWVyeSxcbiAgZ3FsRm9sZGVyUXVlcnlXaXRoTGlua3MsXG4gIGdxbE1haWxRdWVyeSxcbiAgZ3FsVkZpbGVRdWVyeSxcbiAgZ3FsVkZpbGVXaXRoRm9sZGVyUXVlcnlcbn0gZnJvbSBcIi4vdHlwZXMvcXVlcmllcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBSaWdodHMgfSBmcm9tIFwiLi4vemV1cy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgY29udmVydEludGVybmFsTWFpbFRvRXh0ZXJuYWwgfSBmcm9tIFwiLi9jb252ZXJ0L21haWwuanNcIjtcbi8vIGltcG9ydCB7IG1kNSB9IGZyb20gXCIuLi93b3JrZXIvaW5kZXguanNcIjtcbi8vIGltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBvZiB9IGZyb20gXCJyeGpzXCI7XG5cbmV4cG9ydCB0eXBlIE5ld01haWwgPSB7XG4gIGJvZHk6IHN0cmluZztcbiAgc3ViamVjdDogc3RyaW5nO1xuICBmaWxlczogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfVtdO1xuICByZWNpcGllbnRzSWRzOiBzdHJpbmdbXTtcbiAgcmVwbHlUbz86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBQcm9ncmVzc0NhbGxiYWNrID0gKHByb2dyZXNzOiBQcm9ncmVzcykgPT4gUHJvbWlzZTx2b2lkPjtcblxuY29uc3QgZW5jcnlwdE5hbWUgPSBhc3luYyAobmFtZTogc3RyaW5nLCBuYW1lS2V5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IGVuY3J5cHRTZWNyZXRzdHJlYW0oXG4gICAgc29kaXVtLmZyb21faGV4KG5hbWVLZXkpLFxuICAgIHNvZGl1bS5mcm9tX3N0cmluZyhuYW1lKVxuICApO1xuICBjb25zdCBuYW1lRW5jcnlwdGVkID0gc29kaXVtLnRvX2hleChkYXRhKTtcbiAgcmV0dXJuIG5hbWVFbmNyeXB0ZWQ7XG59O1xuXG5leHBvcnQgY2xhc3MgU2VjcmVjeUNsaWVudCBleHRlbmRzIEJhc2VDbGllbnQge1xuICBqd3Q6IHN0cmluZztcblxuICAja2V5czogS2V5UGFpcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICB1YVNlc3Npb246IHN0cmluZyxcbiAgICB1YUtleXM6IEtleVBhaXIsXG4gICAgdWFKd3Q6IHN0cmluZyxcbiAgICBlbnY6IFNlY3JlY3lFbnZcbiAgKSB7XG4gICAgc3VwZXIodWFTZXNzaW9uLCBlbnYpO1xuICAgIHRoaXMuand0ID0gdWFKd3Q7XG4gICAgdGhpcy4ja2V5cyA9IHVhS2V5cztcbiAgfVxuXG4gIGFzeW5jIGFkZEZpbGVUb0hpc3Rvcnkoe1xuICAgIGZpbGVJZCxcbiAgICB2RmlsZUlkXG4gIH06IHtcbiAgICBmaWxlSWQ6IHN0cmluZztcbiAgICB2RmlsZUlkOiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPFZGaWxlPiB7XG4gICAgY29uc3QgeyBhZGRGaWxlVG9IaXN0b3J5IH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICBhZGRGaWxlVG9IaXN0b3J5OiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmaWxlSWQsXG4gICAgICAgICAgdkZpbGVJZFxuICAgICAgICB9LFxuICAgICAgICBncWxWRmlsZVF1ZXJ5XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBjb25zdCB2RmlsZSA9IGF3YWl0IGdxbFZGaWxlVG9JbnRlcm5hbChhZGRGaWxlVG9IaXN0b3J5LCB0aGlzLiNrZXlzKTtcbiAgICBjb25zdCBmaWxlID0gdkZpbGUuaGlzdG9yeS5maW5kKGYgPT4gZi5pZCA9PT0gZmlsZUlkKTtcbiAgICBpZiAoZmlsZSkge1xuICAgICAgY29uc3QgdXNlcnMgPSB2RmlsZS51c2Vycy5maWx0ZXIoXG4gICAgICAgIChbdV0pID0+IHUucHVibGljS2V5ICE9PSB0aGlzLiNrZXlzLnB1YmxpY0tleVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGlucHV0OiBTaGFyZUZpbGVJbkhpc3RvcnlJbnB1dCA9IHtcbiAgICAgICAgZmlsZUlkOiBmaWxlLmlkLFxuICAgICAgICB1c2VyczogdXNlcnMubWFwKChbdV0pID0+ICh7XG4gICAgICAgICAgaWQ6IHUuaWQsXG4gICAgICAgICAga2V5OiBzb2RpdW0udG9faGV4KFxuICAgICAgICAgICAgZW5jcnlwdENyeXB0b0JveChcbiAgICAgICAgICAgICAgc29kaXVtLmZyb21faGV4KGZpbGUudXNlciEua2V5KSxcbiAgICAgICAgICAgICAgdGhpcy4ja2V5cy5wdWJsaWNLZXksXG4gICAgICAgICAgICAgIHRoaXMuI2tleXMucHJpdmF0ZUtleVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgfSkpXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICAgIHNoYXJlRmlsZUluSGlzdG9yeTogW3sgaW5wdXQsIHZGaWxlSWQgfSwgdHJ1ZV1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gaW50ZXJuYWxWRmlsZVRvVkZpbGUodkZpbGUpO1xuICB9XG5cbiAgYXN5bmMgdXBsb2FkRmlsZSh7XG4gICAgZmlsZSxcbiAgICBlbmNyeXB0UHJvZ3Jlc3MsXG4gICAgdXBsb2FkUHJvZ3Jlc3MsXG4gICAgY2FuY2VsVG9rZW5cbiAgfToge1xuICAgIGZpbGU6IGdsb2JhbFRoaXMuRmlsZSB8IFVpbnQ4QXJyYXk7XG4gICAgY2FuY2VsVG9rZW4/OiBDYW5jZWxUb2tlbjtcbiAgICBlbmNyeXB0UHJvZ3Jlc3M/OiBQcm9ncmVzc0NhbGxiYWNrO1xuICAgIHVwbG9hZFByb2dyZXNzPzogUHJvZ3Jlc3NDYWxsYmFjaztcbiAgICAvLyBhYm9ydD86IEFib3J0Q29udHJvbGxlcjtcbiAgfSk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIGNvbnN0IGZpbGVLZXkgPSBzZWNyZXRzdHJlYW1LZXlnZW4oKTtcbiAgICBjb25zdCBmaWxlQnVmZmVyID1cbiAgICAgIGZpbGUgaW5zdGFuY2VvZiBGaWxlID8gbmV3IFVpbnQ4QXJyYXkoYXdhaXQgZmlsZS5hcnJheUJ1ZmZlcigpKSA6IGZpbGU7XG4gICAgY29uc3QgY29tcHJlc3NlZCA9IGNvbXByZXNzKGZpbGVCdWZmZXIpO1xuICAgIC8vIFRPRE86IHVzZSBhYm9ydCBjb250cm9sbGVyIHRvIGNhbmNlbCB1cGxvYWQsIGFuZCBzZWUgdHlwaW5nc1xuICAgIGNvbnN0IHtcbiAgICAgIGRhdGE6IGVuY3J5cHRlZEZpbGUsXG4gICAgICBtZDU6IG1kNUZpbGUsXG4gICAgICBtZDVFbmNyeXB0ZWRcbiAgICB9ID0gYXdhaXQgZW5jcnlwdChmaWxlS2V5LCBjb21wcmVzc2VkLCBlbmNyeXB0UHJvZ3Jlc3MpO1xuXG4gICAgY29uc3QgZW5jcnlwdGVkRmlsZUtleSA9IGVuY3J5cHRDcnlwdG9Cb3goXG4gICAgICBmaWxlS2V5LFxuICAgICAgdGhpcy4ja2V5cy5wdWJsaWNLZXksXG4gICAgICB0aGlzLiNrZXlzLnByaXZhdGVLZXlcbiAgICApO1xuXG4gICAgY29uc3QgeyB1cGxvYWRGaWxlIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICB1cGxvYWRGaWxlOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmaWxlU2l6ZTogZW5jcnlwdGVkRmlsZS5ieXRlTGVuZ3RoLFxuICAgICAgICAgIGZpbGVTaXplQmVmb3JlOiBmaWxlQnVmZmVyLmJ5dGVMZW5ndGgsXG4gICAgICAgICAgZmlsZUtleTogc29kaXVtLnRvX2hleChlbmNyeXB0ZWRGaWxlS2V5KSxcbiAgICAgICAgICBtZDVFbmNyeXB0ZWQsXG4gICAgICAgICAgbWQ1OiBtZDVGaWxlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBmaWxlSWQ6IHRydWUsXG4gICAgICAgICAgZmlsZVBhcnRTaXplOiB0cnVlLFxuICAgICAgICAgIHBhcnRzOiB7XG4gICAgICAgICAgICBmaWVsZHM6IHRydWUsXG4gICAgICAgICAgICBvcmRlcjogdHJ1ZSxcbiAgICAgICAgICAgIHVybDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCF1cGxvYWRGaWxlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB1cGxvYWRQcm9ncmVzcz8uKHtcbiAgICAgIHRvdGFsOiBlbmNyeXB0ZWRGaWxlLmJ5dGVMZW5ndGgsXG4gICAgICBjdXJyZW50OiAwLFxuICAgICAgcGVyY2VudDogMFxuICAgIH0pO1xuXG4gICAgaWYgKHVwbG9hZEZpbGUucGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB1cGxvYWRQcm9ncmVzcz8uKHtcbiAgICAgICAgdG90YWw6IGVuY3J5cHRlZEZpbGUuYnl0ZUxlbmd0aCxcbiAgICAgICAgY3VycmVudDogZW5jcnlwdGVkRmlsZS5ieXRlTGVuZ3RoLFxuICAgICAgICBwZXJjZW50OiAxXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHVwbG9hZEZpbGUuZmlsZUlkO1xuICAgIH1cblxuICAgIGNvbnN0IHVwbG9hZFBhcnRFbmRlZCA9IGFzeW5jIChcbiAgICAgIG1kNTogc3RyaW5nLFxuICAgICAgb3JkZXI6IG51bWJlclxuICAgICk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgICAgY29uc3QgeyB1cGxvYWRGaWxlUGFydEVuZCB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgICB1cGxvYWRGaWxlUGFydEVuZDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZpbGVJZDogdXBsb2FkRmlsZS5maWxlSWQsXG4gICAgICAgICAgICBtZDUsXG4gICAgICAgICAgICBvcmRlclxuICAgICAgICAgIH0sXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICBdXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHVwbG9hZEZpbGVQYXJ0RW5kO1xuICAgIH07XG5cbiAgICBjb25zdCB1cGxvYWRFbmRlZCA9IGFzeW5jICgpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+ID0+IHtcbiAgICAgIGNvbnN0IHsgdXBsb2FkRmlsZUVuZCB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgICB1cGxvYWRGaWxlRW5kOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgZmlsZUlkOiB1cGxvYWRGaWxlLmZpbGVJZFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICBdXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHVwbG9hZEZpbGVFbmQgPz8gbnVsbDtcbiAgICB9O1xuXG4gICAgY29uc3QgY2h1bmtQYXJ0cyA9IG5ldyBBcnJheTx7XG4gICAgICBvcmRlcjogbnVtYmVyO1xuICAgICAgZGF0YTogVWludDhBcnJheTtcbiAgICAgIG1kNTogc3RyaW5nO1xuICAgIH0+KCk7XG5cbiAgICBmb3IgKGNvbnN0IFtpbmRleCwgY2h1bmtdIG9mIGVudW1lcmF0ZShcbiAgICAgIGNodW5rcyhlbmNyeXB0ZWRGaWxlLCBOdW1iZXIodXBsb2FkRmlsZS5maWxlUGFydFNpemUpKVxuICAgICkpIHtcbiAgICAgIGNodW5rUGFydHMucHVzaCh7XG4gICAgICAgIG9yZGVyOiBpbmRleCArIDEsXG4gICAgICAgIGRhdGE6IGNodW5rLFxuICAgICAgICBtZDU6IGF3YWl0IG1kNShjaHVuaylcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHByb2dyZXNzUGFydHM6IFJlY29yZDxudW1iZXIsIFByb2dyZXNzRXZlbnQ+ID0ge307XG4gICAgY29uc3Qgb25Qcm9ncmVzcyA9IChwYXJ0OiBudW1iZXIsIHByb2dyZXNzRXZlbnQ6IFByb2dyZXNzRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgIHByb2dyZXNzUGFydHNbcGFydF0gPSBwcm9ncmVzc0V2ZW50O1xuICAgICAgY29uc3QgY3VycmVudCA9IE9iamVjdC52YWx1ZXMocHJvZ3Jlc3NQYXJ0cykucmVkdWNlKFxuICAgICAgICAocHJ2LCBjdXIpID0+IHBydiArIGN1ci5sb2FkZWQsXG4gICAgICAgIDBcbiAgICAgICk7XG4gICAgICB1cGxvYWRQcm9ncmVzcz8uKHtcbiAgICAgICAgcGVyY2VudDogY3VycmVudCAvIGVuY3J5cHRlZEZpbGUuYnl0ZUxlbmd0aCxcbiAgICAgICAgdG90YWw6IGVuY3J5cHRlZEZpbGUuYnl0ZUxlbmd0aCxcbiAgICAgICAgY3VycmVudFxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGJ5UGFydCA9IGFzeW5jIChwYXJ0OiBGaWxlUGFydFJlc3BvbnNlKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgY29uc3QgY2h1bmsgPSBjaHVua1BhcnRzLmZpbmQocCA9PiBwLm9yZGVyID09PSBwYXJ0Lm9yZGVyKTtcbiAgICAgIGlmICghY2h1bmspIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocGFydC5maWVsZHMpKSB7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGZvcm1EYXRhLmFwcGVuZChcbiAgICAgICAgXCJmaWxlXCIsXG4gICAgICAgIG5ldyBCbG9iKFtjaHVuay5kYXRhXSksXG4gICAgICAgIGAke3VwbG9hZEZpbGUuZmlsZUlkfS0ke2NodW5rLm9yZGVyfWBcbiAgICAgICk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGF4aW9zLnBvc3QocGFydC51cmwsIGZvcm1EYXRhLCB7XG4gICAgICAgICAgb25VcGxvYWRQcm9ncmVzczogcHJvZ3Jlc3NFdmVudCA9PlxuICAgICAgICAgICAgb25Qcm9ncmVzcyhwYXJ0Lm9yZGVyLCBwcm9ncmVzc0V2ZW50KSxcbiAgICAgICAgICBjYW5jZWxUb2tlblxuICAgICAgICB9KTtcblxuICAgICAgICBhd2FpdCB1cGxvYWRQYXJ0RW5kZWQoY2h1bmsubWQ1LCBjaHVuay5vcmRlcik7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmICgoZSBhcyBhbnkpLnJlc3BvbnNlLnN0YXR1cyA9PT0gMCkge1xuICAgICAgICAgIC8vIFRPRE8gaHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9reS9pc3N1ZXMvMzA1XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBhd2FpdCBwcm9taXNlQWxsTGltaXQoXG4gICAgICAzLFxuICAgICAgdXBsb2FkRmlsZS5wYXJ0cy5tYXAocCA9PiAoKTogUHJvbWlzZTx2b2lkPiA9PiBieVBhcnQocCkpXG4gICAgKTtcblxuICAgIHJldHVybiB1cGxvYWRFbmRlZCgpO1xuICB9XG5cbiAgYXN5bmMgdXBsb2FkRmlsZUluQ2xvdWQoe1xuICAgIGZpbGUsXG4gICAgbmFtZSxcbiAgICBmb2xkZXJJZCxcbiAgICBjYW5jZWxUb2tlbixcbiAgICBlbmNyeXB0UHJvZ3Jlc3MsXG4gICAgdXBsb2FkUHJvZ3Jlc3NcbiAgfToge1xuICAgIGZpbGU6IGdsb2JhbFRoaXMuRmlsZSB8IFVpbnQ4QXJyYXk7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGNhbmNlbFRva2VuPzogQ2FuY2VsVG9rZW47XG4gICAgZm9sZGVySWQ/OiBzdHJpbmc7XG4gICAgZW5jcnlwdFByb2dyZXNzPzogUHJvZ3Jlc3NDYWxsYmFjaztcbiAgICB1cGxvYWRQcm9ncmVzcz86IFByb2dyZXNzQ2FsbGJhY2s7XG4gIH0pOiBQcm9taXNlPFZGaWxlV2l0aEZvbGRlcj4ge1xuICAgIGNvbnN0IGZpbGVJZCA9IGF3YWl0IHRoaXMudXBsb2FkRmlsZSh7XG4gICAgICBmaWxlLFxuICAgICAgZW5jcnlwdFByb2dyZXNzLFxuICAgICAgdXBsb2FkUHJvZ3Jlc3MsXG4gICAgICBjYW5jZWxUb2tlblxuICAgIH0pO1xuICAgIGlmICghZmlsZUlkKSB7XG4gICAgICB0aHJvdyBgQ2FuJ3QgdXBsb2FkIGZpbGVgO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zYXZlSW5DbG91ZCh7IGZpbGVJZCwgbmFtZSwgZm9sZGVySWQgfSk7XG4gIH1cblxuICBhc3luYyBsb2dvdXQoc2Vzc2lvbklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHZGaWxlc0NhY2hlLmNsZWFyKCk7XG4gICAgZmlsZXNDYWNoZS5jbGVhcigpO1xuICAgIGZvbGRlcnNDYWNoZS5jbGVhcigpO1xuICAgIGF3YWl0IHN1cGVyLmxvZ291dChzZXNzaW9uSWQpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlRm9sZGVyKHtcbiAgICBuYW1lLFxuICAgIHBhcmVudEZvbGRlcklkXG4gIH06IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgcGFyZW50Rm9sZGVySWQ/OiBzdHJpbmcgfCBudWxsO1xuICB9KTogUHJvbWlzZTxGb2xkZXJGdWxsPiB7XG4gICAgY29uc3Qga2V5ID0gc2VjcmV0c3RyZWFtS2V5Z2VuKCk7XG4gICAgY29uc3QgZW5jcnlwdGVkTmFtZSA9IGF3YWl0IGVuY3J5cHROYW1lKG5hbWUsIHNvZGl1bS50b19oZXgoa2V5KSk7XG4gICAgY29uc3QgZW5jcnlwdGVkS2V5ID0gZW5jcnlwdENyeXB0b0JveChcbiAgICAgIGtleSxcbiAgICAgIHRoaXMuI2tleXMucHVibGljS2V5LFxuICAgICAgdGhpcy4ja2V5cy5wcml2YXRlS2V5XG4gICAgKTtcbiAgICBjb25zdCB7IGNyZWF0ZUZvbGRlciB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgY3JlYXRlRm9sZGVyOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBlbmNyeXB0ZWROYW1lLFxuICAgICAgICAgIHBhcmVudEZvbGRlcklkLFxuICAgICAgICAgIGtleTogc29kaXVtLnRvX2hleChlbmNyeXB0ZWRLZXkpXG4gICAgICAgIH0sXG4gICAgICAgIGdxbEZvbGRlclF1ZXJ5V2l0aExpbmtzXG4gICAgICBdXG4gICAgfSk7XG4gICAgaWYgKCFjcmVhdGVGb2xkZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2FuJ3QgY3JlYXRlIGZvbGRlcmApO1xuICAgIH1cbiAgICBjb25zdCBmb2xkZXIgPSBhd2FpdCBncWxGb2xkZXJUb0V4dGVybmFsRm9sZGVyRnVsbChcbiAgICAgIGNyZWF0ZUZvbGRlcixcbiAgICAgIHRoaXMuI2tleXNcbiAgICApO1xuXG4gICAgY29uc3QgdXNlcnMgPVxuICAgICAgZm9sZGVyLnBhcmVudEZvbGRlcj8udXNlcnM/LmZpbHRlcihcbiAgICAgICAgKFt1XSkgPT4gdS5wdWJsaWNLZXkgIT09IHRoaXMuI2tleXMucHVibGljS2V5XG4gICAgICApID8/IFtdO1xuXG4gICAgaWYgKHVzZXJzLmxlbmd0aCkge1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIHVzZXJzLm1hcCgoW3UsIHJpZ2h0c10pID0+XG4gICAgICAgICAgdGhpcy5zaGFyZUZvbGRlcih7XG4gICAgICAgICAgICBmb2xkZXJJZDogZm9sZGVyLmlkLFxuICAgICAgICAgICAgcmlnaHRzLFxuICAgICAgICAgICAgdXNlcklkOiB1LmlkXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm9sZGVyO1xuICB9XG5cbiAgYXN5bmMgZm9sZGVyKHtcbiAgICBpZCxcbiAgICBkZWxldGVkXG4gIH06IHtcbiAgICBpZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgZGVsZXRlZD86IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkO1xuICB9ID0ge30pOiBQcm9taXNlPEZvbGRlckZ1bGwgfCBudWxsPiB7XG4gICAgY29uc3QgeyBmb2xkZXIgfSA9IGF3YWl0IHRoaXMuY2xpZW50LnF1ZXJ5KHtcbiAgICAgIGZvbGRlcjogW3sgZGVsZXRlZCwgaWQgfSwgZ3FsRm9sZGVyUXVlcnlXaXRoTGlua3NdXG4gICAgfSk7XG4gICAgaWYgKCFmb2xkZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gZ3FsRm9sZGVyVG9FeHRlcm5hbEZvbGRlckZ1bGwoZm9sZGVyLCB0aGlzLiNrZXlzKTtcbiAgfVxuXG4gIGFzeW5jIGZpbGUoeyBpZCB9OiB7IGlkOiBzdHJpbmcgfSk6IFByb21pc2U8U2VjcmVjeUZpbGUgfCBudWxsPiB7XG4gICAgY29uc3QgeyBmaWxlIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5xdWVyeSh7XG4gICAgICBmaWxlOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZFxuICAgICAgICB9LFxuICAgICAgICBncWxGaWxlUXVlcnlcbiAgICAgIF1cbiAgICB9KTtcbiAgICBpZiAoIWZpbGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gZ3FsRmlsZVRvRXh0ZXJuYWwoZmlsZSwgdGhpcy4ja2V5cyk7XG4gIH1cblxuICBhc3luYyB2RmlsZSh7IGlkIH06IHsgaWQ6IHN0cmluZyB9KTogUHJvbWlzZTxWRmlsZVdpdGhGb2xkZXIgfCBudWxsPiB7XG4gICAgY29uc3QgeyB2RmlsZSB9ID0gYXdhaXQgdGhpcy5jbGllbnQucXVlcnkoe1xuICAgICAgdkZpbGU6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkXG4gICAgICAgIH0sXG4gICAgICAgIGdxbFZGaWxlV2l0aEZvbGRlclF1ZXJ5XG4gICAgICBdXG4gICAgfSk7XG4gICAgaWYgKCF2RmlsZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBncWxWRmlsZVRvRXh0ZXJuYWwodkZpbGUsIHRoaXMuI2tleXMpIGFzIFByb21pc2U8VkZpbGVXaXRoRm9sZGVyPjtcbiAgfVxuXG4gIGFzeW5jIG1haWwoeyBpZCB9OiB7IGlkOiBzdHJpbmcgfSk6IFByb21pc2U8TWFpbCB8IG51bGw+IHtcbiAgICBjb25zdCB7IG1haWwgfSA9IGF3YWl0IHRoaXMuY2xpZW50LnF1ZXJ5KHtcbiAgICAgIG1haWw6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkXG4gICAgICAgIH0sXG4gICAgICAgIGdxbE1haWxRdWVyeVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFtYWlsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udmVydEludGVybmFsTWFpbFRvRXh0ZXJuYWwobWFpbCwgdGhpcy4ja2V5cyk7XG4gIH1cblxuICBhc3luYyBzaGFyZVZGaWxlKHtcbiAgICB2RmlsZUlkLFxuICAgIHVzZXJJZCxcbiAgICByaWdodHNcbiAgfToge1xuICAgIHZGaWxlSWQ6IHN0cmluZztcbiAgICB1c2VySWQ6IHN0cmluZztcbiAgICByaWdodHM6IFJpZ2h0cztcbiAgfSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGxldCB2RmlsZSA9IHZGaWxlc0NhY2hlLmdldCh2RmlsZUlkKTtcblxuICAgIGlmICghdkZpbGUpIHtcbiAgICAgIGF3YWl0IHRoaXMudkZpbGUoeyBpZDogdkZpbGVJZCB9KTtcbiAgICAgIHZGaWxlID0gdkZpbGVzQ2FjaGUuZ2V0KHZGaWxlSWQpO1xuXG4gICAgICBpZiAoIXZGaWxlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy51c2VyKHsgdXNlcklkLCB3aXRoUHVibGljS2V5OiB0cnVlIH0pO1xuXG4gICAgaWYgKCF1c2VyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgbmFtZUtleSA9IHNvZGl1bS50b19oZXgoXG4gICAgICBlbmNyeXB0Q3J5cHRvQm94KFxuICAgICAgICBzb2RpdW0uZnJvbV9oZXgodkZpbGUudXNlckFwcC5uYW1lS2V5KSxcbiAgICAgICAgdXNlci5wdWJsaWNLZXksXG4gICAgICAgIHRoaXMuI2tleXMucHJpdmF0ZUtleVxuICAgICAgKVxuICAgICk7XG5cbiAgICBjb25zdCBoaXN0b3J5ID0gbmV3IEFycmF5PHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICBrZXk6IHN0cmluZztcbiAgICB9PigpO1xuXG4gICAgZm9yIChjb25zdCBoIG9mIHZGaWxlLmhpc3RvcnkpIHtcbiAgICAgIGlmICghaC51c2VyKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaGlzdG9yeS5wdXNoKHtcbiAgICAgICAgaWQ6IGguaWQsXG4gICAgICAgIGtleTogc29kaXVtLnRvX2hleChcbiAgICAgICAgICBlbmNyeXB0Q3J5cHRvQm94KFxuICAgICAgICAgICAgc29kaXVtLmZyb21faGV4KGgudXNlci5rZXkpLFxuICAgICAgICAgICAgdXNlci5wdWJsaWNLZXksXG4gICAgICAgICAgICB0aGlzLiNrZXlzLnByaXZhdGVLZXlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHsgc2hhcmVWRmlsZSB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgc2hhcmVWRmlsZTogW1xuICAgICAgICB7XG4gICAgICAgICAgdkZpbGVJZCxcbiAgICAgICAgICB1c2VySWQsXG4gICAgICAgICAgcmlnaHRzLFxuICAgICAgICAgIG5hbWVLZXksXG4gICAgICAgICAgaGlzdG9yeVxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2hhcmVWRmlsZSA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIHNoYXJlZFZGaWxlcygpOiBQcm9taXNlPFZGaWxlV2l0aEZvbGRlcltdPiB7XG4gICAgY29uc3QgeyBzaGFyZWRWRmlsZXMgfSA9IGF3YWl0IHRoaXMuY2xpZW50LnF1ZXJ5KHtcbiAgICAgIHNoYXJlZFZGaWxlczogZ3FsVkZpbGVXaXRoRm9sZGVyUXVlcnlcbiAgICB9KTtcblxuICAgIGNvbnN0IHZGaWxlcyA9IG5ldyBBcnJheTxWRmlsZVdpdGhGb2xkZXI+KCk7XG5cbiAgICBmb3IgKGNvbnN0IHZGaWxlIG9mIHNoYXJlZFZGaWxlcykge1xuICAgICAgdkZpbGVzLnB1c2goXG4gICAgICAgIChhd2FpdCBncWxWRmlsZVRvRXh0ZXJuYWwodkZpbGUsIHRoaXMuI2tleXMpKSBhcyBWRmlsZVdpdGhGb2xkZXJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZGaWxlcztcbiAgfVxuXG4gIGFzeW5jIHZGaWxlc1NoYXJlZFdpdGhNZSgpOiBQcm9taXNlPFZGaWxlV2l0aEZvbGRlcltdPiB7XG4gICAgY29uc3QgeyB2RmlsZXNTaGFyZWRXaXRoTWUgfSA9IGF3YWl0IHRoaXMuY2xpZW50LnF1ZXJ5KHtcbiAgICAgIHZGaWxlc1NoYXJlZFdpdGhNZTogZ3FsVkZpbGVXaXRoRm9sZGVyUXVlcnlcbiAgICB9KTtcblxuICAgIGNvbnN0IHZGaWxlcyA9IG5ldyBBcnJheTxWRmlsZVdpdGhGb2xkZXI+KCk7XG5cbiAgICBmb3IgKGNvbnN0IHZGaWxlIG9mIHZGaWxlc1NoYXJlZFdpdGhNZSkge1xuICAgICAgdkZpbGVzLnB1c2goXG4gICAgICAgIChhd2FpdCBncWxWRmlsZVRvRXh0ZXJuYWwodkZpbGUsIHRoaXMuI2tleXMpKSBhcyBWRmlsZVdpdGhGb2xkZXJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZGaWxlcztcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZWRWRmlsZXMoKTogUHJvbWlzZTxWRmlsZVtdPiB7XG4gICAgY29uc3QgeyBkZWxldGVkVkZpbGVzIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5xdWVyeSh7XG4gICAgICBkZWxldGVkVkZpbGVzOiBncWxWRmlsZVF1ZXJ5XG4gICAgfSk7XG5cbiAgICBjb25zdCB2RmlsZXMgPSBuZXcgQXJyYXk8VkZpbGU+KCk7XG5cbiAgICBmb3IgKGNvbnN0IHZGaWxlIG9mIGRlbGV0ZWRWRmlsZXMpIHtcbiAgICAgIHZGaWxlcy5wdXNoKChhd2FpdCBncWxWRmlsZVRvRXh0ZXJuYWwodkZpbGUsIHRoaXMuI2tleXMpKSBhcyBWRmlsZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZGaWxlcztcbiAgfVxuXG4gIGFzeW5jIHNoYXJlZEZvbGRlcnMoKTogUHJvbWlzZTxGb2xkZXJbXT4ge1xuICAgIGNvbnN0IHsgc2hhcmVkRm9sZGVycyB9ID0gYXdhaXQgdGhpcy5jbGllbnQucXVlcnkoe1xuICAgICAgc2hhcmVkRm9sZGVyczogZ3FsRm9sZGVyUXVlcnlcbiAgICB9KTtcblxuICAgIGNvbnN0IGZvbGRlcnMgPSBuZXcgQXJyYXk8Rm9sZGVyPigpO1xuXG4gICAgZm9yIChjb25zdCBmb2xkZXIgb2Ygc2hhcmVkRm9sZGVycykge1xuICAgICAgZm9sZGVycy5wdXNoKGF3YWl0IGdxbEZvbGRlclRvRXh0ZXJuYWwoZm9sZGVyLCB0aGlzLiNrZXlzKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvbGRlcnM7XG4gIH1cblxuICBhc3luYyBmb2xkZXJzU2hhcmVkV2l0aE1lKCk6IFByb21pc2U8Rm9sZGVyW10+IHtcbiAgICBjb25zdCB7IGZvbGRlcnNTaGFyZWRXaXRoTWUgfSA9IGF3YWl0IHRoaXMuY2xpZW50LnF1ZXJ5KHtcbiAgICAgIGZvbGRlcnNTaGFyZWRXaXRoTWU6IGdxbEZvbGRlclF1ZXJ5XG4gICAgfSk7XG5cbiAgICBjb25zdCBmb2xkZXJzID0gbmV3IEFycmF5PEZvbGRlcj4oKTtcblxuICAgIGZvciAoY29uc3QgZm9sZGVyIG9mIGZvbGRlcnNTaGFyZWRXaXRoTWUpIHtcbiAgICAgIGZvbGRlcnMucHVzaChhd2FpdCBncWxGb2xkZXJUb0V4dGVybmFsKGZvbGRlciwgdGhpcy4ja2V5cykpO1xuICAgIH1cblxuICAgIHJldHVybiBmb2xkZXJzO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlZEZvbGRlcnMoKTogUHJvbWlzZTxGb2xkZXJbXT4ge1xuICAgIGNvbnN0IHsgZGVsZXRlZEZvbGRlcnMgfSA9IGF3YWl0IHRoaXMuY2xpZW50LnF1ZXJ5KHtcbiAgICAgIGRlbGV0ZWRGb2xkZXJzOiBncWxGb2xkZXJRdWVyeVxuICAgIH0pO1xuXG4gICAgY29uc3QgZm9sZGVycyA9IG5ldyBBcnJheTxGb2xkZXI+KCk7XG5cbiAgICBmb3IgKGNvbnN0IGZvbGRlciBvZiBkZWxldGVkRm9sZGVycykge1xuICAgICAgZm9sZGVycy5wdXNoKGF3YWl0IGdxbEZvbGRlclRvRXh0ZXJuYWwoZm9sZGVyLCB0aGlzLiNrZXlzKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvbGRlcnM7XG4gIH1cblxuICBhc3luYyBzaGFyZUZvbGRlcih7XG4gICAgZm9sZGVySWQsXG4gICAgdXNlcklkLFxuICAgIHJpZ2h0c1xuICB9OiB7XG4gICAgZm9sZGVySWQ6IHN0cmluZztcbiAgICB1c2VySWQ6IHN0cmluZztcbiAgICByaWdodHM6IFJpZ2h0cztcbiAgfSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHVzZXIgPSBhd2FpdCB0aGlzLnVzZXIoeyB1c2VySWQsIHdpdGhQdWJsaWNLZXk6IHRydWUgfSk7XG5cbiAgICBpZiAoIXVzZXIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgeyBzaGFyZUZvbGRlciB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgc2hhcmVGb2xkZXI6IFtcbiAgICAgICAgeyBmb2xkZXJJZCwgdXNlcklkIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB2RmlsZXM6IHRydWUsXG4gICAgICAgICAgZm9sZGVyczogdHJ1ZVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBjb25zdCBzaGFyZUZvbGRlcnM6IFNoYXJlRm9sZGVyc0lucHV0ID0ge1xuICAgICAgdkZpbGVzOiBbXSxcbiAgICAgIGZvbGRlcnM6IFtdXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgaWQgb2Ygc2hhcmVGb2xkZXIuZm9sZGVycykge1xuICAgICAgY29uc3QgbmFtZUtleSA9IGF3YWl0IHRoaXMucGVyRm9sZGVyKGlkLCB1c2VyLnB1YmxpY0tleSk7XG4gICAgICBpZiAobmFtZUtleSkge1xuICAgICAgICBzaGFyZUZvbGRlcnMuZm9sZGVycy5wdXNoKG5hbWVLZXkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgaWQgb2Ygc2hhcmVGb2xkZXIudkZpbGVzKSB7XG4gICAgICBjb25zdCB2RmlsZUlucHV0ID0gYXdhaXQgdGhpcy5wZXJWRmlsZShpZCwgdXNlci5wdWJsaWNLZXkpO1xuICAgICAgaWYgKHZGaWxlSW5wdXQpIHtcbiAgICAgICAgc2hhcmVGb2xkZXJzLnZGaWxlcy5wdXNoKHZGaWxlSW5wdXQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHsgc2hhcmVGb2xkZXJGaW5pc2ggfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIHNoYXJlRm9sZGVyRmluaXNoOiBbXG4gICAgICAgIHtcbiAgICAgICAgICByaWdodHMsXG4gICAgICAgICAgdXNlcklkLFxuICAgICAgICAgIHNoYXJlRm9sZGVyc1xuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2hhcmVGb2xkZXJGaW5pc2ggPz8gZmFsc2U7XG4gIH1cblxuICBhc3luYyB1cGRhdGVGb2xkZXIoe1xuICAgIGZvbGRlcklkLFxuICAgIG5hbWUsXG4gICAgaXNGYXZvcml0ZSxcbiAgICBkZWxldGVkQXRcbiAgfToge1xuICAgIGZvbGRlcklkOiBzdHJpbmc7XG4gICAgbmFtZT86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgaXNGYXZvcml0ZT86IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIGRlbGV0ZWRBdD86IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB9KTogUHJvbWlzZTxGb2xkZXJGdWxsPiB7XG4gICAgbGV0IGZvbGRlciA9IGZvbGRlcnNDYWNoZS5nZXQoZm9sZGVySWQpO1xuICAgIGlmICghZm9sZGVyKSB7XG4gICAgICBhd2FpdCB0aGlzLmZvbGRlcih7IGlkOiBmb2xkZXJJZCB9KTtcbiAgICAgIGZvbGRlciA9IGZvbGRlcnNDYWNoZS5nZXQoZm9sZGVySWQpO1xuICAgICAgaWYgKCFmb2xkZXIpIHtcbiAgICAgICAgdGhyb3cgYENhbid0IGZpbmQgZm9sZGVyICR7Zm9sZGVySWR9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBuYW1lID0gbmFtZVxuICAgICAgPyBmb2xkZXIudXNlckFwcD8ubmFtZUtleVxuICAgICAgICA/IGF3YWl0IGVuY3J5cHROYW1lKG5hbWUsIGZvbGRlci51c2VyQXBwLm5hbWVLZXkpXG4gICAgICAgIDogbmFtZVxuICAgICAgOiBudWxsO1xuXG4gICAgY29uc3QgeyB1cGRhdGVGb2xkZXIgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIHVwZGF0ZUZvbGRlcjogW1xuICAgICAgICB7XG4gICAgICAgICAgZm9sZGVySWQsXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICBpc0Zhdm9yaXRlLFxuICAgICAgICAgIGRlbGV0ZWRBdFxuICAgICAgICB9LFxuICAgICAgICBncWxGb2xkZXJRdWVyeVdpdGhMaW5rc1xuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCF1cGRhdGVGb2xkZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbid0IHVwZGF0ZSBmb2xkZXJcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdxbEZvbGRlclRvRXh0ZXJuYWxGb2xkZXJGdWxsKHVwZGF0ZUZvbGRlciwgdGhpcy4ja2V5cyk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVNYWlsKFxuICAgIGRhdGE6IE5ld01haWwsXG4gICAgY3VzdG9tTWVzc2FnZT86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgbWFpbCA9IGF3YWl0IHRoaXMuY3JlYXRlRHJhZnRNYWlsKGRhdGEpO1xuICAgIGlmICghbWFpbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zZW5kRHJhZnRNYWlsKG1haWwubWFpbEludGVncml0eUlkLCBjdXN0b21NZXNzYWdlKTtcbiAgfVxuXG4gIGFzeW5jIHdhaXRpbmdSZWNlaXZlZE1haWxzKCk6IFByb21pc2U8V2FpdGluZ1JlY2VpdmVkTWFpbFtdPiB7XG4gICAgY29uc3QgeyB1c2VyIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5xdWVyeSh7XG4gICAgICB1c2VyOiBbXG4gICAgICAgIHt9LFxuICAgICAgICB7XG4gICAgICAgICAgd2FpdGluZ1JlY2VpdmVkTWFpbHM6IHtcbiAgICAgICAgICAgIGRhdGU6IHRydWUsXG4gICAgICAgICAgICBhdHRhY2htZW50c0NvdW50OiB0cnVlLFxuICAgICAgICAgICAgc2VuZGVyOiB7XG4gICAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICAgIGxhc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgICBlbWFpbDogdHJ1ZSxcbiAgICAgICAgICAgICAgcHVibGljS2V5OiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVjaXBpZW50czoge1xuICAgICAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgZmlyc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgICAgZW1haWw6IHRydWUsXG4gICAgICAgICAgICAgIHB1YmxpY0tleTogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRlbXBvcmFyeVJlY2lwaWVudHM6IHtcbiAgICAgICAgICAgICAgZW1haWw6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghdXNlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgZ2V0IHdhaXRpbmcgcmVjZWl2ZWQgbWFpbHNcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVzZXIud2FpdGluZ1JlY2VpdmVkTWFpbHMubWFwKG0gPT4gKHtcbiAgICAgIGlkOiBnZW5lcmF0ZSgpLFxuICAgICAgLi4ubSxcbiAgICAgIGRhdGU6IG5ldyBEYXRlKG0uZGF0ZSlcbiAgICB9KSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVEcmFmdE1haWwoXG4gICAgZHJhZnRJZDogc3RyaW5nLFxuICAgIHsgYm9keSwgc3ViamVjdCwgZmlsZXMsIHJlY2lwaWVudHNJZHMsIHJlcGx5VG8gfTogUGFydGlhbDxOZXdNYWlsPlxuICApOiBQcm9taXNlPERyYWZ0TWFpbCB8IG51bGw+IHtcbiAgICBjb25zdCBkcmFmdHMgPSBhd2FpdCB0aGlzLmRyYWZ0TWFpbHMoKTtcbiAgICBjb25zdCBkcmFmdCA9IGRyYWZ0cy5maW5kKGQgPT4gZC5tYWlsSW50ZWdyaXR5SWQgPT09IGRyYWZ0SWQpO1xuICAgIGlmICghZHJhZnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkcmFmdCAke2RyYWZ0SWR9YCk7XG4gICAgfVxuICAgIGxldCBoYXNoS2V5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgaGFzaDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgaWYgKGJvZHkgfHwgc3ViamVjdCkge1xuICAgICAgaGFzaEtleSA9IHNvZGl1bS5yYW5kb21ieXRlc19idWYoXG4gICAgICAgIHNvZGl1bS5jcnlwdG9fZ2VuZXJpY2hhc2hfS0VZQllURVMsXG4gICAgICAgIFwiaGV4XCJcbiAgICAgICk7XG4gICAgICBoYXNoID0gc29kaXVtLmNyeXB0b19nZW5lcmljaGFzaChcbiAgICAgICAgc29kaXVtLmNyeXB0b19nZW5lcmljaGFzaF9CWVRFUyxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoeyBib2R5LCBzdWJqZWN0IH0pLFxuICAgICAgICBoYXNoS2V5LFxuICAgICAgICBcImhleFwiXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBzZW5kZXJGaWxlcyA9IG5ldyBBcnJheTxNYWlsRmlsZUlucHV0PigpO1xuICAgIGlmIChmaWxlcykge1xuICAgICAgZm9yIChjb25zdCBmIG9mIGZpbGVzKSB7XG4gICAgICAgIGxldCBmaWxlID0gZmlsZXNDYWNoZS5nZXQoZi5pZCk7XG4gICAgICAgIGlmICghZmlsZSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuZmlsZSh7IGlkOiBmLmlkIH0pO1xuICAgICAgICAgIGZpbGUgPSBmaWxlc0NhY2hlLmdldChmLmlkKTtcbiAgICAgICAgICBpZiAoIWZpbGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSAke2YubmFtZX0gKCR7Zi5pZH0pIGRvZXMgbm90IGV4aXN0c2ApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWZpbGUudXNlcikge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHNlbmRlckZpbGVzLnB1c2goe1xuICAgICAgICAgIGlkOiBmaWxlLmlkLFxuICAgICAgICAgIGZpbGVLZXk6IHNvZGl1bS50b19oZXgoXG4gICAgICAgICAgICBlbmNyeXB0Q3J5cHRvQm94KFxuICAgICAgICAgICAgICBzb2RpdW0uZnJvbV9zdHJpbmcoZmlsZS51c2VyLmtleSksXG4gICAgICAgICAgICAgIHRoaXMuI2tleXMucHVibGljS2V5LFxuICAgICAgICAgICAgICB0aGlzLiNrZXlzLnByaXZhdGVLZXlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLFxuICAgICAgICAgIG5hbWU6IHNvZGl1bS50b19oZXgoXG4gICAgICAgICAgICBlbmNyeXB0Q3J5cHRvQm94KFxuICAgICAgICAgICAgICBzb2RpdW0uZnJvbV9zdHJpbmcoZi5uYW1lKSxcbiAgICAgICAgICAgICAgdGhpcy4ja2V5cy5wdWJsaWNLZXksXG4gICAgICAgICAgICAgIHRoaXMuI2tleXMucHJpdmF0ZUtleVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgeyB1cGRhdGVEcmFmdE1haWwgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIHVwZGF0ZURyYWZ0TWFpbDogW1xuICAgICAgICB7XG4gICAgICAgICAgZHJhZnRJZCxcbiAgICAgICAgICByZWNpcGllbnRzOiByZWNpcGllbnRzSWRzLFxuICAgICAgICAgIHJlcGx5VG8sXG4gICAgICAgICAgYm9keTogYm9keVxuICAgICAgICAgICAgPyBzb2RpdW0udG9faGV4KFxuICAgICAgICAgICAgICAgIGVuY3J5cHRDcnlwdG9Cb3goXG4gICAgICAgICAgICAgICAgICBzb2RpdW0uZnJvbV9zdHJpbmcoYm9keSksXG4gICAgICAgICAgICAgICAgICB0aGlzLiNrZXlzLnB1YmxpY0tleSxcbiAgICAgICAgICAgICAgICAgIHRoaXMuI2tleXMucHJpdmF0ZUtleVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgIHN1YmplY3Q6IHN1YmplY3RcbiAgICAgICAgICAgID8gc29kaXVtLnRvX2hleChcbiAgICAgICAgICAgICAgICBlbmNyeXB0Q3J5cHRvQm94KFxuICAgICAgICAgICAgICAgICAgc29kaXVtLmZyb21fc3RyaW5nKHN1YmplY3QpLFxuICAgICAgICAgICAgICAgICAgdGhpcy4ja2V5cy5wdWJsaWNLZXksXG4gICAgICAgICAgICAgICAgICB0aGlzLiNrZXlzLnByaXZhdGVLZXlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICBzZW5kZXJGaWxlcyxcbiAgICAgICAgICBoYXNoLFxuICAgICAgICAgIGhhc2hLZXlcbiAgICAgICAgfSxcbiAgICAgICAgZ3FsTWFpbFF1ZXJ5XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXVwZGF0ZURyYWZ0TWFpbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnZlcnRJbnRlcm5hbE1haWxUb0V4dGVybmFsKFxuICAgICAgdXBkYXRlRHJhZnRNYWlsLFxuICAgICAgdGhpcy4ja2V5c1xuICAgICkgYXMgRHJhZnRNYWlsO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlRHJhZnRNYWlsKGRyYWZ0SWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgZGVsZXRlRHJhZnRNYWlsIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICBkZWxldGVEcmFmdE1haWw6IFtcbiAgICAgICAge1xuICAgICAgICAgIGRyYWZ0SWRcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuICAgIHJldHVybiBkZWxldGVEcmFmdE1haWwgPz8gZmFsc2U7XG4gIH1cblxuICBhc3luYyBkZWxldGVWRmlsZVNoYXJpbmcoe1xuICAgIHZGaWxlSWQsXG4gICAgdXNlcklkXG4gIH06IHtcbiAgICB2RmlsZUlkOiBzdHJpbmc7XG4gICAgdXNlcklkOiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGRlbGV0ZVZGaWxlU2hhcmluZyB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgZGVsZXRlVkZpbGVTaGFyaW5nOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB2RmlsZUlkLFxuICAgICAgICAgIHVzZXJJZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG4gICAgcmV0dXJuIGRlbGV0ZVZGaWxlU2hhcmluZztcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUZvbGRlclNoYXJpbmcoe1xuICAgIGZvbGRlcklkLFxuICAgIHVzZXJJZFxuICB9OiB7XG4gICAgZm9sZGVySWQ6IHN0cmluZztcbiAgICB1c2VySWQ6IHN0cmluZztcbiAgfSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgZGVsZXRlRm9sZGVyU2hhcmluZyB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgZGVsZXRlRm9sZGVyU2hhcmluZzogW1xuICAgICAgICB7XG4gICAgICAgICAgZm9sZGVySWQsXG4gICAgICAgICAgdXNlcklkXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcbiAgICByZXR1cm4gZGVsZXRlRm9sZGVyU2hhcmluZztcbiAgfVxuXG4gIGFzeW5jIGR1cGxpY2F0ZVZGaWxlKHtcbiAgICBmaWxlSWQsXG4gICAgZm9sZGVySWQsXG4gICAgY3VzdG9tTmFtZVxuICB9OiB7XG4gICAgZmlsZUlkOiBzdHJpbmc7XG4gICAgZm9sZGVySWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIGN1c3RvbU5hbWU/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgbGV0IGZpbGUgPSB2RmlsZXNDYWNoZS5nZXQoZmlsZUlkKTtcbiAgICBpZiAoIWZpbGUpIHtcbiAgICAgIGF3YWl0IHRoaXMudkZpbGUoeyBpZDogZmlsZUlkIH0pO1xuICAgICAgZmlsZSA9IHZGaWxlc0NhY2hlLmdldChmaWxlSWQpO1xuICAgICAgaWYgKCFmaWxlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSAoJHtmaWxlSWR9KSBkb2VzIG5vdCBleGlzdHNgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY3VzdG9tTmFtZSA9IGN1c3RvbU5hbWVcbiAgICAgID8gYXdhaXQgZW5jcnlwdE5hbWUoY3VzdG9tTmFtZSwgZmlsZS51c2VyQXBwLm5hbWVLZXkpXG4gICAgICA6IG51bGw7XG5cbiAgICBjb25zdCB7IGR1cGxpY2F0ZVZGaWxlIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICBkdXBsaWNhdGVWRmlsZTogW1xuICAgICAgICB7XG4gICAgICAgICAgZmlsZUlkLFxuICAgICAgICAgIGZvbGRlcklkLFxuICAgICAgICAgIGN1c3RvbU5hbWVcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGR1cGxpY2F0ZVZGaWxlO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlRm9sZGVyQ2xvdWRUcmFzaCh7XG4gICAgaWRzXG4gIH06IHtcbiAgICBpZHM6IEFycmF5PHN0cmluZz47XG4gIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGRlbGV0ZUZvbGRlckNsb3VkVHJhc2ggfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIGRlbGV0ZUZvbGRlckNsb3VkVHJhc2g6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkc1xuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG4gICAgcmV0dXJuIGRlbGV0ZUZvbGRlckNsb3VkVHJhc2ggPz8gZmFsc2U7XG4gIH1cblxuICBhc3luYyBkZWxldGVWRmlsZUNsb3VkVHJhc2goe1xuICAgIGlkc1xuICB9OiB7XG4gICAgaWRzOiBBcnJheTxzdHJpbmc+O1xuICB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBkZWxldGVWRmlsZUNsb3VkVHJhc2ggfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIGRlbGV0ZVZGaWxlQ2xvdWRUcmFzaDogW1xuICAgICAgICB7XG4gICAgICAgICAgaWRzXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcbiAgICByZXR1cm4gZGVsZXRlVkZpbGVDbG91ZFRyYXNoID8/IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlTWFpbFRyYXNoKHsgaWRzIH06IHsgaWRzOiBBcnJheTxzdHJpbmc+IH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGRlbGV0ZU1haWxUcmFzaCB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgZGVsZXRlTWFpbFRyYXNoOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZHNcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuICAgIHJldHVybiBkZWxldGVNYWlsVHJhc2g7XG4gIH1cblxuICBhc3luYyBlbXB0eU1haWxUcmFzaCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGVtcHR5TWFpbFRyYXNoIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICBlbXB0eU1haWxUcmFzaDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVtcHR5TWFpbFRyYXNoID8/IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgZW1wdHlDbG91ZFRyYXNoKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgZW1wdHlDbG91ZFRyYXNoIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICBlbXB0eUNsb3VkVHJhc2g6IHRydWVcbiAgICB9KTtcblxuICAgIHJldHVybiBlbXB0eUNsb3VkVHJhc2ggPz8gZmFsc2U7XG4gIH1cblxuICBhc3luYyByZWNvdmVyRmlsZSh7IGZpbGVJZCB9OiB7IGZpbGVJZDogc3RyaW5nIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IHJlY292ZXJGaWxlIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICByZWNvdmVyRmlsZTogW3sgZmlsZUlkIH0sIHRydWVdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVjb3ZlckZpbGU7XG4gIH1cblxuICBhc3luYyByZWNvdmVyRm9sZGVyKHsgaWQgfTogeyBpZDogc3RyaW5nIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IHJlY292ZXJGb2xkZXIgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIHJlY292ZXJGb2xkZXI6IFt7IGlkIH0sIHRydWVdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVjb3ZlckZvbGRlciA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIHJlY292ZXJNYWlsKHsgbWFpbElkIH06IHsgbWFpbElkOiBzdHJpbmcgfSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgcmVjb3Zlck1haWwgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIHJlY292ZXJNYWlsOiBbeyBtYWlsSWQgfSwgdHJ1ZV1cbiAgICB9KTtcblxuICAgIHJldHVybiByZWNvdmVyTWFpbDtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUZpbGUoe1xuICAgIGZpbGVJZCxcbiAgICB2RmlsZUlkXG4gIH06IHtcbiAgICBmaWxlSWQ6IHN0cmluZztcbiAgICB2RmlsZUlkOiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGRlbGV0ZUZpbGUgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIGRlbGV0ZUZpbGU6IFtcbiAgICAgICAge1xuICAgICAgICAgIGZpbGVJZCxcbiAgICAgICAgICB2RmlsZUlkXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcbiAgICByZXR1cm4gZGVsZXRlRmlsZTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZVZGaWxlKHsgZmlsZUlkIH06IHsgZmlsZUlkOiBzdHJpbmcgfSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgZGVsZXRlVkZpbGUgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIGRlbGV0ZVZGaWxlOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmaWxlSWRcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuICAgIHJldHVybiBkZWxldGVWRmlsZTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZU1haWwoeyBtYWlsSWQgfTogeyBtYWlsSWQ6IHN0cmluZyB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBkZWxldGVNYWlsIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICBkZWxldGVNYWlsOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBtYWlsSWRcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuICAgIHJldHVybiBkZWxldGVNYWlsO1xuICB9XG5cbiAgYXN5bmMgc2F2ZUluQ2xvdWQoe1xuICAgIGZpbGVJZCxcbiAgICBuYW1lLFxuICAgIGZvbGRlcklkXG4gIH06IHtcbiAgICBmaWxlSWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZm9sZGVySWQ/OiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPFZGaWxlV2l0aEZvbGRlcj4ge1xuICAgIGlmIChmb2xkZXJJZCAmJiAhZm9sZGVyc0NhY2hlLmhhcyhmb2xkZXJJZCkpIHtcbiAgICAgIGF3YWl0IHRoaXMuZm9sZGVyKHsgaWQ6IGZvbGRlcklkIH0pO1xuICAgICAgaWYgKCFmb2xkZXJzQ2FjaGUuaGFzKGZvbGRlcklkKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBmb2xkZXIgJHtmb2xkZXJJZH0gZG9lcyBub3QgZXhpc3RzYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGtleSA9IFwiXCI7XG5cbiAgICBjb25zdCBmaWxlID0gZmlsZXNDYWNoZS5nZXQoZmlsZUlkKTtcblxuICAgIGlmICghZmlsZSkge1xuICAgICAgYXdhaXQgdGhpcy5maWxlKHsgaWQ6IGZpbGVJZCB9KTtcbiAgICAgIGNvbnN0IGZpbGUgPSBmaWxlc0NhY2hlLmdldChmaWxlSWQpID8/IG51bGw7XG4gICAgICBpZiAoIWZpbGUpIHtcbiAgICAgICAgY29uc3QgcmVjZWl2ZWRNYWlscyA9IGF3YWl0IHRoaXMucmVjZWl2ZWRNYWlscygpO1xuICAgICAgICBjb25zdCBtYWlsID0gcmVjZWl2ZWRNYWlscy5maW5kKG0gPT5cbiAgICAgICAgICBtLmZpbGVzLnNvbWUoZiA9PiBmLmlkID09PSBmaWxlSWQpXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCFtYWlsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW4ndCBmaW5kIG1haWwgd2l0aCB0aGUgZmlsZSAke2ZpbGVJZH1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVNYWlsID0gbWFpbC5maWxlcy5maW5kKGYgPT4gZi5pZCA9PT0gZmlsZUlkKTtcblxuICAgICAgICBpZiAoIWZpbGVNYWlsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW4ndCBmaW5kIG1haWwgd2l0aCB0aGUgZmlsZSAke2ZpbGVJZH1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVLZXkgPSBkZWNyeXB0Q3J5cHRvQm94KFxuICAgICAgICAgIHNvZGl1bS5mcm9tX2hleChmaWxlTWFpbC5rZXkpLFxuICAgICAgICAgIG1haWwuc2VuZGVyLnB1YmxpY0tleSxcbiAgICAgICAgICB0aGlzLiNrZXlzLnByaXZhdGVLZXlcbiAgICAgICAgKTtcblxuICAgICAgICBrZXkgPSBzb2RpdW0udG9faGV4KGZpbGVLZXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFmaWxlLnVzZXIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIGVycm9yIDFcIik7XG4gICAgICAgIH1cbiAgICAgICAga2V5ID0gZmlsZS51c2VyLmtleTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFmaWxlLnVzZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBlcnJvciAyXCIpO1xuICAgICAgfVxuICAgICAga2V5ID0gZmlsZS51c2VyLmtleTtcbiAgICB9XG5cbiAgICBpZiAoa2V5ID09PSBcIlwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIGVycm9yIDNcIik7XG4gICAgfVxuXG4gICAga2V5ID0gc29kaXVtLnRvX2hleChcbiAgICAgIGVuY3J5cHRDcnlwdG9Cb3goXG4gICAgICAgIHNvZGl1bS5mcm9tX2hleChrZXkpLFxuICAgICAgICB0aGlzLiNrZXlzLnB1YmxpY0tleSxcbiAgICAgICAgdGhpcy4ja2V5cy5wcml2YXRlS2V5XG4gICAgICApXG4gICAgKTtcblxuICAgIGNvbnN0IG5hbWVLZXkgPSBzZWNyZXRzdHJlYW1LZXlnZW4oKTtcbiAgICBjb25zdCBlbmNyeXB0ZWROYW1lID0gYXdhaXQgZW5jcnlwdE5hbWUobmFtZSwgc29kaXVtLnRvX2hleChuYW1lS2V5KSk7XG4gICAgY29uc3QgZW5jcnlwdGVkTmFtZUtleSA9IHNvZGl1bS50b19oZXgoXG4gICAgICBlbmNyeXB0Q3J5cHRvQm94KG5hbWVLZXksIHRoaXMuI2tleXMucHVibGljS2V5LCB0aGlzLiNrZXlzLnByaXZhdGVLZXkpXG4gICAgKTtcblxuICAgIGNvbnN0IHsgc2F2ZUluQ2xvdWQgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIHNhdmVJbkNsb3VkOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmaWxlSWQsXG4gICAgICAgICAga2V5LFxuICAgICAgICAgIGZvbGRlcklkLFxuICAgICAgICAgIGZpbGVuYW1lOiBlbmNyeXB0ZWROYW1lLFxuICAgICAgICAgIG5hbWVLZXk6IGVuY3J5cHRlZE5hbWVLZXlcbiAgICAgICAgfSxcbiAgICAgICAgZ3FsVkZpbGVXaXRoRm9sZGVyUXVlcnlcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGNvbnN0IHZGaWxlID0gKGF3YWl0IGdxbFZGaWxlVG9FeHRlcm5hbChcbiAgICAgIHNhdmVJbkNsb3VkLFxuICAgICAgdGhpcy4ja2V5c1xuICAgICkpIGFzIFZGaWxlV2l0aEZvbGRlcjtcblxuICAgIGNvbnN0IG1lID0gdkZpbGUuZm9sZGVyLnVzZXJzLmZpbmQoXG4gICAgICAoW3VdKSA9PiB1LnB1YmxpY0tleSA9PT0gdGhpcy4ja2V5cy5wdWJsaWNLZXlcbiAgICApO1xuXG4gICAgaWYgKG1lICYmIFtcImFkbWluXCIsIFwid3JpdGVcIl0uaW5jbHVkZXMobWVbMV0pKSB7XG4gICAgICBjb25zdCBvdGhlcnMgPSB2RmlsZS5mb2xkZXIudXNlcnMuZmlsdGVyKFxuICAgICAgICAoW3VdKSA9PiB1LnB1YmxpY0tleSAhPT0gdGhpcy4ja2V5cy5wdWJsaWNLZXlcbiAgICAgICk7XG5cbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBvdGhlcnMubWFwKChbdSwgcmlnaHRzXSkgPT5cbiAgICAgICAgICB0aGlzLnNoYXJlVkZpbGUoe1xuICAgICAgICAgICAgdkZpbGVJZDogdkZpbGUuaWQsXG4gICAgICAgICAgICByaWdodHMsXG4gICAgICAgICAgICB1c2VySWQ6IHUuaWRcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB2RmlsZTtcbiAgfVxuXG4gIGFzeW5jIHNlbmREcmFmdE1haWwoXG4gICAgZHJhZnRJZDogc3RyaW5nLFxuICAgIGN1c3RvbU1lc3NhZ2U/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGRyYWZ0cyA9IGF3YWl0IHRoaXMuZHJhZnRNYWlscygpO1xuICAgIGNvbnN0IGRyYWZ0ID0gZHJhZnRzLmZpbmQoZCA9PiBkLm1haWxJbnRlZ3JpdHlJZCA9PT0gZHJhZnRJZCk7XG4gICAgaWYgKCFkcmFmdCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCByZWNpcGllbnRzID0gbmV3IEFycmF5PE1haWxSZWNpcGllbnRJbnB1dD4oKTtcblxuICAgIGNvbnN0IHRlbXBvcmFyeVJlY2lwaWVudHMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuXG4gICAgZm9yIChjb25zdCB7IGVtYWlsIH0gb2YgZHJhZnQudGVtcG9yYXJ5UmVjaXBpZW50cykge1xuICAgICAgaWYgKCFlbWFpbCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5fZWFjaFVzZXIoXG4gICAgICAgIGRyYWZ0LmZpbGVzLFxuICAgICAgICBkcmFmdC5zdWJqZWN0LFxuICAgICAgICBkcmFmdC5ib2R5LFxuICAgICAgICBlbWFpbFxuICAgICAgKTtcblxuICAgICAgaWYgKCFpbnB1dCkge1xuICAgICAgICB0ZW1wb3JhcnlSZWNpcGllbnRzLnB1c2goZW1haWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVjaXBpZW50cy5wdXNoKGlucHV0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHsgaWQgfSBvZiBkcmFmdC5yZWNpcGllbnRzKSB7XG4gICAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMuX2VhY2hVc2VyKFxuICAgICAgICBkcmFmdC5maWxlcyxcbiAgICAgICAgZHJhZnQuc3ViamVjdCxcbiAgICAgICAgZHJhZnQuYm9keSxcbiAgICAgICAgaWRcbiAgICAgICk7XG5cbiAgICAgIGlmICghaW5wdXQpIHtcbiAgICAgICAgdGVtcG9yYXJ5UmVjaXBpZW50cy5wdXNoKGlkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlY2lwaWVudHMucHVzaChpbnB1dCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgeyBzZW5kRHJhZnRNYWlsIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICBzZW5kRHJhZnRNYWlsOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0ZW1wb3JhcnlSZWNpcGllbnRzLFxuICAgICAgICAgIHJlY2lwaWVudHMsXG4gICAgICAgICAgZHJhZnRNYWlsSWQ6IGRyYWZ0Lm1haWxJbnRlZ3JpdHlJZCxcbiAgICAgICAgICBjdXN0b21NZXNzYWdlXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBzZW5kRHJhZnRNYWlsID8/IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgc2VuZFdhaXRpbmdFbWFpbHMoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgLy8gVE9ETyBvcHRpIHRoaXNcbiAgICBjb25zdCBtYWlscyA9IGF3YWl0IHRoaXMuc2VudE1haWxzKCk7XG4gICAgY29uc3QgZmlsdGVyZWQgPSBtYWlscy5maWx0ZXIobSA9PiBtLnRlbXBvcmFyeVJlY2lwaWVudHMubGVuZ3RoID4gMCk7XG5cbiAgICBmb3IgKGNvbnN0IG1haWwgb2YgZmlsdGVyZWQpIHtcbiAgICAgIGZvciAoY29uc3QgeyBlbWFpbCB9IG9mIG1haWwudGVtcG9yYXJ5UmVjaXBpZW50cykge1xuICAgICAgICBpZiAoIWVtYWlsKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW5wdXQgPSBhd2FpdCB0aGlzLl9lYWNoVXNlcihcbiAgICAgICAgICBtYWlsLmZpbGVzLFxuICAgICAgICAgIG1haWwuc3ViamVjdCxcbiAgICAgICAgICBtYWlsLmJvZHksXG4gICAgICAgICAgZW1haWxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoaW5wdXQpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICAgICAgICBzZW5kT25lTWFpbDogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbWFpbEludGVncml0eUlkOiBtYWlsLm1haWxJbnRlZ3JpdHlJZCxcbiAgICAgICAgICAgICAgICByZWNpcGllbnQ6IGlucHV0XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBhc3luYyBjcmVhdGVEcmFmdE1haWwoe1xuICAgIGJvZHksXG4gICAgc3ViamVjdCxcbiAgICBmaWxlcyxcbiAgICByZWNpcGllbnRzSWRzLFxuICAgIHJlcGx5VG9cbiAgfTogTmV3TWFpbCk6IFByb21pc2U8RHJhZnRNYWlsIHwgbnVsbD4ge1xuICAgIGNvbnN0IGhhc2hLZXkgPSBzb2RpdW0ucmFuZG9tYnl0ZXNfYnVmKFxuICAgICAgc29kaXVtLmNyeXB0b19nZW5lcmljaGFzaF9LRVlCWVRFUyxcbiAgICAgIFwiaGV4XCJcbiAgICApO1xuICAgIGNvbnN0IGhhc2ggPSBzb2RpdW0uY3J5cHRvX2dlbmVyaWNoYXNoKFxuICAgICAgc29kaXVtLmNyeXB0b19nZW5lcmljaGFzaF9CWVRFUyxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHsgYm9keSwgc3ViamVjdCB9KSxcbiAgICAgIGhhc2hLZXksXG4gICAgICBcImhleFwiXG4gICAgKTtcbiAgICBjb25zdCBzZW5kZXJGaWxlcyA9IG5ldyBBcnJheTxNYWlsRmlsZUlucHV0PigpO1xuICAgIGZvciAoY29uc3QgZiBvZiBmaWxlcykge1xuICAgICAgbGV0IGZpbGUgPSBmaWxlc0NhY2hlLmdldChmLmlkKTtcbiAgICAgIGlmICghZmlsZSkge1xuICAgICAgICBhd2FpdCB0aGlzLmZpbGUoeyBpZDogZi5pZCB9KTtcbiAgICAgICAgZmlsZSA9IGZpbGVzQ2FjaGUuZ2V0KGYuaWQpO1xuICAgICAgICBpZiAoIWZpbGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZpbGUgJHtmLm5hbWV9ICgke2YuaWR9KSBkb2VzIG5vdCBleGlzdHNgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCFmaWxlLnVzZXIpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBzZW5kZXJGaWxlcy5wdXNoKHtcbiAgICAgICAgaWQ6IGZpbGUuaWQsXG4gICAgICAgIGZpbGVLZXk6IHNvZGl1bS50b19oZXgoXG4gICAgICAgICAgZW5jcnlwdENyeXB0b0JveChcbiAgICAgICAgICAgIHNvZGl1bS5mcm9tX3N0cmluZyhmaWxlLnVzZXIua2V5KSxcbiAgICAgICAgICAgIHRoaXMuI2tleXMucHVibGljS2V5LFxuICAgICAgICAgICAgdGhpcy4ja2V5cy5wcml2YXRlS2V5XG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBuYW1lOiBzb2RpdW0udG9faGV4KFxuICAgICAgICAgIGVuY3J5cHRDcnlwdG9Cb3goXG4gICAgICAgICAgICBzb2RpdW0uZnJvbV9zdHJpbmcoZi5uYW1lKSxcbiAgICAgICAgICAgIHRoaXMuI2tleXMucHVibGljS2V5LFxuICAgICAgICAgICAgdGhpcy4ja2V5cy5wcml2YXRlS2V5XG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCB7IGNyZWF0ZURyYWZ0TWFpbCB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgY3JlYXRlRHJhZnRNYWlsOiBbXG4gICAgICAgIHtcbiAgICAgICAgICByZWNpcGllbnRzOiByZWNpcGllbnRzSWRzLFxuICAgICAgICAgIHJlcGx5VG8sXG4gICAgICAgICAgYm9keTogc29kaXVtLnRvX2hleChcbiAgICAgICAgICAgIGVuY3J5cHRDcnlwdG9Cb3goXG4gICAgICAgICAgICAgIHNvZGl1bS5mcm9tX3N0cmluZyhib2R5KSxcbiAgICAgICAgICAgICAgdGhpcy4ja2V5cy5wdWJsaWNLZXksXG4gICAgICAgICAgICAgIHRoaXMuI2tleXMucHJpdmF0ZUtleVxuICAgICAgICAgICAgKVxuICAgICAgICAgICksXG4gICAgICAgICAgc3ViamVjdDogc29kaXVtLnRvX2hleChcbiAgICAgICAgICAgIGVuY3J5cHRDcnlwdG9Cb3goXG4gICAgICAgICAgICAgIHNvZGl1bS5mcm9tX3N0cmluZyhzdWJqZWN0KSxcbiAgICAgICAgICAgICAgdGhpcy4ja2V5cy5wdWJsaWNLZXksXG4gICAgICAgICAgICAgIHRoaXMuI2tleXMucHJpdmF0ZUtleVxuICAgICAgICAgICAgKVxuICAgICAgICAgICksXG4gICAgICAgICAgc2VuZGVyRmlsZXMsXG4gICAgICAgICAgaGFzaCxcbiAgICAgICAgICBoYXNoS2V5XG4gICAgICAgIH0sXG4gICAgICAgIGdxbE1haWxRdWVyeVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFjcmVhdGVEcmFmdE1haWwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBjb252ZXJ0SW50ZXJuYWxNYWlsVG9FeHRlcm5hbChcbiAgICAgIGNyZWF0ZURyYWZ0TWFpbCxcbiAgICAgIHRoaXMuI2tleXNcbiAgICApIGFzIERyYWZ0TWFpbDtcbiAgfVxuXG4gIGFzeW5jIGZpbGVDb250ZW50KHtcbiAgICBmaWxlSWQsXG4gICAgb25Eb3dubG9hZFByb2dyZXNzLFxuICAgIHByb2dyZXNzRGVjcnlwdCxcbiAgICBhYm9ydFxuICB9OiB7XG4gICAgZmlsZUlkOiBzdHJpbmc7XG4gICAgb25Eb3dubG9hZFByb2dyZXNzPzogKHByb2dyZXNzOiBEb3dubG9hZFByb2dyZXNzKSA9PiB2b2lkO1xuICAgIHByb2dyZXNzRGVjcnlwdD86IFByb2dyZXNzQ2FsbGJhY2s7XG4gICAgYWJvcnQ/OiBBYm9ydENvbnRyb2xsZXI7XG4gIH0pOiBQcm9taXNlPFVpbnQ4QXJyYXk+IHtcbiAgICBjb25zdCB7IGZpbGVDb250ZW50IH0gPSBhd2FpdCB0aGlzLmNsaWVudC5xdWVyeSh7XG4gICAgICBmaWxlQ29udGVudDogW1xuICAgICAgICB7IGZpbGVJZCB9LFxuICAgICAgICB7XG4gICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICBcIi4uLm9uIEZpbGVDb250ZW50Q2xvdWRcIjoge1xuICAgICAgICAgICAgcGFydHM6IHtcbiAgICAgICAgICAgICAgY29udGVudFVybDogdHJ1ZSxcbiAgICAgICAgICAgICAgb3JkZXI6IHRydWUsXG4gICAgICAgICAgICAgIG1kNTogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGtleTogdHJ1ZSxcbiAgICAgICAgICAgIHB1YmxpY0tleTogdHJ1ZSxcbiAgICAgICAgICAgIHRvdGFsU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgIG1kNTogdHJ1ZSxcbiAgICAgICAgICAgIG1kNUVuY3J5cHRlZDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBGaWxlQ29udGVudFJlY2VpdmVkTWFpbFwiOiB7XG4gICAgICAgICAgICBwYXJ0czoge1xuICAgICAgICAgICAgICBjb250ZW50VXJsOiB0cnVlLFxuICAgICAgICAgICAgICBvcmRlcjogdHJ1ZSxcbiAgICAgICAgICAgICAgbWQ1OiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAga2V5OiB0cnVlLFxuICAgICAgICAgICAgc2VuZGVyUHVibGljS2V5OiB0cnVlLFxuICAgICAgICAgICAgdG90YWxTaXplOiB0cnVlLFxuICAgICAgICAgICAgbWQ1OiB0cnVlLFxuICAgICAgICAgICAgbWQ1RW5jcnlwdGVkOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIEZpbGVDb250ZW50U2VudE1haWxcIjoge1xuICAgICAgICAgICAgcGFydHM6IHtcbiAgICAgICAgICAgICAgY29udGVudFVybDogdHJ1ZSxcbiAgICAgICAgICAgICAgb3JkZXI6IHRydWUsXG4gICAgICAgICAgICAgIG1kNTogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGtleTogdHJ1ZSxcbiAgICAgICAgICAgIHRvdGFsU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgIG1kNTogdHJ1ZSxcbiAgICAgICAgICAgIG1kNUVuY3J5cHRlZDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFmaWxlQ29udGVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGaWxlICR7ZmlsZUlkfSBkb2VzIG5vdCBleGlzdHNgKTtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9ncmVzc1BhcnRzOiBSZWNvcmQ8bnVtYmVyLCBEb3dubG9hZFByb2dyZXNzPiA9IHt9O1xuICAgIGNvbnN0IG9uUHJvZ3Jlc3MgPSAoXG4gICAgICBwYXJ0OiBudW1iZXIsXG4gICAgICBwcm9ncmVzc0V2ZW50OiBEb3dubG9hZFByb2dyZXNzXG4gICAgKTogdm9pZCA9PiB7XG4gICAgICBwcm9ncmVzc1BhcnRzW3BhcnRdID0gcHJvZ3Jlc3NFdmVudDtcbiAgICAgIGNvbnN0IHRyYW5zZmVycmVkQnl0ZXMgPSBPYmplY3QudmFsdWVzKHByb2dyZXNzUGFydHMpLnJlZHVjZShcbiAgICAgICAgKHBydiwgY3VyKSA9PiBwcnYgKyBjdXIudHJhbnNmZXJyZWRCeXRlcyxcbiAgICAgICAgMFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHRvdGFsQnl0ZXMgPSBOdW1iZXIoZmlsZUNvbnRlbnQudG90YWxTaXplKTtcbiAgICAgIG9uRG93bmxvYWRQcm9ncmVzcz8uKHtcbiAgICAgICAgcGVyY2VudDogdHJhbnNmZXJyZWRCeXRlcyAvIHRvdGFsQnl0ZXMsXG4gICAgICAgIHRvdGFsQnl0ZXMsXG4gICAgICAgIHRyYW5zZmVycmVkQnl0ZXNcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCBwYXJ0cyA9IG5ldyBBcnJheTx7IGRhdGE6IFVpbnQ4QXJyYXk7IG9yZGVyOiBudW1iZXIgfT4oKTtcblxuICAgIGNvbnN0IGJ5UGFydCA9IGFzeW5jIChwYXJ0OiBGaWxlQ29udGVudFBhcnQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGNvbnN0IGJ1ZiA9IG5ldyBVaW50OEFycmF5KFxuICAgICAgICBhd2FpdCBreVxuICAgICAgICAgIC5nZXQocGFydC5jb250ZW50VXJsLCB7XG4gICAgICAgICAgICBvbkRvd25sb2FkUHJvZ3Jlc3M6IHByID0+IG9uUHJvZ3Jlc3MocGFydC5vcmRlciwgcHIpLFxuICAgICAgICAgICAgc2lnbmFsOiBhYm9ydD8uc2lnbmFsXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuYXJyYXlCdWZmZXIoKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IG1kNVBhcnQgPSBhd2FpdCBtZDUoYnVmKTtcbiAgICAgIGlmIChtZDVQYXJ0ICE9PSBwYXJ0Lm1kNSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgbWQ1IGZvciBwYXJ0ICR7cGFydC5vcmRlcn0gb2YgZmlsZSAke2ZpbGVJZH1gKTtcbiAgICAgIH1cbiAgICAgIHBhcnRzLnB1c2goe1xuICAgICAgICBkYXRhOiBidWYsXG4gICAgICAgIG9yZGVyOiBwYXJ0Lm9yZGVyXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgYXdhaXQgcHJvbWlzZUFsbExpbWl0KFxuICAgICAgMyxcbiAgICAgIGZpbGVDb250ZW50LnBhcnRzLm1hcChwID0+ICgpOiBQcm9taXNlPHZvaWQ+ID0+IGJ5UGFydChwKSlcbiAgICApO1xuXG4gICAgY29uc3QgZW5jcnlwdGVkQ29udGVudCA9IGNvbmNhdGVuYXRlKFxuICAgICAgLi4ucGFydHMuc29ydCgoYSwgYikgPT4gYS5vcmRlciAtIGIub3JkZXIpLm1hcChwID0+IHAuZGF0YSlcbiAgICApO1xuXG4gICAgLy8gY29uc3QgbWQ1RW5jcnlwdGVkID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20obWQ1KG9mKGVuY3J5cHRlZENvbnRlbnQpKSk7XG4gICAgY29uc3QgbWQ1RW5jcnlwdGVkID0gYXdhaXQgbWQ1KGVuY3J5cHRlZENvbnRlbnQpO1xuXG4gICAgaWYgKG1kNUVuY3J5cHRlZCAhPT0gZmlsZUNvbnRlbnQubWQ1RW5jcnlwdGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVuY3J5cHRlZCBjb250ZW50IGRvZXMgbm90IG1hdGNoYCk7XG4gICAgfVxuXG4gICAgY29uc3Qga2V5ID0gZGVjcnlwdENyeXB0b0JveChcbiAgICAgIHNvZGl1bS5mcm9tX2hleChmaWxlQ29udGVudC5rZXkpLFxuICAgICAgZmlsZUNvbnRlbnQuX190eXBlbmFtZSA9PT0gXCJGaWxlQ29udGVudFJlY2VpdmVkTWFpbFwiXG4gICAgICAgID8gZmlsZUNvbnRlbnQuc2VuZGVyUHVibGljS2V5XG4gICAgICAgIDogZmlsZUNvbnRlbnQuX190eXBlbmFtZSA9PT0gXCJGaWxlQ29udGVudENsb3VkXCJcbiAgICAgICAgPyBmaWxlQ29udGVudC5wdWJsaWNLZXlcbiAgICAgICAgOiB0aGlzLiNrZXlzLnB1YmxpY0tleSxcbiAgICAgIHRoaXMuI2tleXMucHJpdmF0ZUtleVxuICAgICk7XG5cbiAgICAvLyBUT0RPIGFkZCBhYm9ydFxuICAgIGNvbnN0IHNyYyA9IGF3YWl0IGRlY3J5cHQoa2V5LCBlbmNyeXB0ZWRDb250ZW50LCBwcm9ncmVzc0RlY3J5cHQpO1xuXG4gICAgLy8gY29uc3QgbWQ1Q29udGVudCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKG1kNShvZihzcmMpKSk7XG4gICAgY29uc3QgbWQ1Q29udGVudCA9IGF3YWl0IG1kNShzcmMpO1xuXG4gICAgaWYgKG1kNUNvbnRlbnQgIT09IGZpbGVDb250ZW50Lm1kNSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb250ZW50IGRvZXMgbm90IG1hdGNoYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuY29tcHJlc3Moc3JjKTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZUZpbGUoe1xuICAgIGZpbGVJZCxcbiAgICBmaWxlbmFtZSxcbiAgICBpc0Zhdm9yaXRlLFxuICAgIGRlbGV0ZWRBdFxuICB9OiB7XG4gICAgZmlsZUlkOiBzdHJpbmc7XG4gICAgZmlsZW5hbWU/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIGlzRmF2b3JpdGU/OiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICBkZWxldGVkQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8VkZpbGU+IHtcbiAgICBjb25zdCBmaWxlID0gdkZpbGVzQ2FjaGUuZ2V0KGZpbGVJZCk7XG4gICAgaWYgKCFmaWxlKSB7XG4gICAgICB0aHJvdyBgQ2FuJ3QgZmluZCBmaWxlICR7ZmlsZUlkfWA7XG4gICAgfVxuXG4gICAgY29uc3QgZW5jcnlwdGVkTmFtZSA9IGZpbGVuYW1lXG4gICAgICA/IGF3YWl0IGVuY3J5cHROYW1lKGZpbGVuYW1lLCBmaWxlLnVzZXJBcHAubmFtZUtleSlcbiAgICAgIDogbnVsbDtcblxuICAgIGNvbnN0IHsgdXBkYXRlRmlsZSB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgdXBkYXRlRmlsZTogW1xuICAgICAgICB7XG4gICAgICAgICAgZmlsZUlkLFxuICAgICAgICAgIGZpbGVuYW1lOiBlbmNyeXB0ZWROYW1lLFxuICAgICAgICAgIGlzRmF2b3JpdGUsXG4gICAgICAgICAgZGVsZXRlZEF0XG4gICAgICAgIH0sXG4gICAgICAgIGdxbFZGaWxlUXVlcnlcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghdXBkYXRlRmlsZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgdXBkYXRlIGZpbGVcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdxbFZGaWxlVG9FeHRlcm5hbCh1cGRhdGVGaWxlLCB0aGlzLiNrZXlzKTtcbiAgfVxuXG4gIGFzeW5jIHJlYWRNYWlsKHsgbWFpbElkIH06IHsgbWFpbElkOiBzdHJpbmcgfSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgcmVhZE1haWwgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIHJlYWRNYWlsOiBbeyBtYWlsSWQgfSwgdHJ1ZV1cbiAgICB9KTtcblxuICAgIHJldHVybiByZWFkTWFpbCA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIHVucmVhZE1haWwoeyBtYWlsSWQgfTogeyBtYWlsSWQ6IHN0cmluZyB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyB1bnJlYWRNYWlsIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICB1bnJlYWRNYWlsOiBbeyBtYWlsSWQgfSwgdHJ1ZV1cbiAgICB9KTtcblxuICAgIHJldHVybiB1bnJlYWRNYWlsID8/IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgYXBwU2V0dGluZ3MoKTogUHJvbWlzZTxVc2VyQXBwU2V0dGluZ3MgfCBudWxsPiB7XG4gICAgY29uc3QgeyB1c2VyIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5xdWVyeSh7XG4gICAgICB1c2VyOiBbXG4gICAgICAgIHt9LFxuICAgICAgICB7XG4gICAgICAgICAgYXBwU2V0dGluZ3M6IHtcbiAgICAgICAgICAgIGF1dG9EaXNjb25uZWN0RGVsYXk6IHRydWUsXG4gICAgICAgICAgICBjbG91ZEZpbGVEYXlzRm9yRGVsZXRlOiB0cnVlLFxuICAgICAgICAgICAgY2xvdWRGb2xkZXJEYXlzRm9yRGVsZXRlOiB0cnVlLFxuICAgICAgICAgICAgaGlzdG9yeUZpbGVEYXlzRm9yRGVsZXRlOiB0cnVlLFxuICAgICAgICAgICAgaGlzdG9yeU1heEZpbGVDb3VudDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCF1c2VyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdXNlci5hcHBTZXR0aW5ncyA/PyBudWxsO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlQXBwU2V0dGluZ3MoXG4gICAgc2V0dGluZ3M6IFBhcnRpYWw8VXNlckFwcFNldHRpbmdzPlxuICApOiBQcm9taXNlPFVzZXJBcHBTZXR0aW5ncz4ge1xuICAgIGNvbnN0IHsgdXBkYXRlQXBwU2V0dGluZ3MgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIHVwZGF0ZUFwcFNldHRpbmdzOiBbXG4gICAgICAgIHNldHRpbmdzLFxuICAgICAgICB7XG4gICAgICAgICAgYXV0b0Rpc2Nvbm5lY3REZWxheTogdHJ1ZSxcbiAgICAgICAgICBjbG91ZEZpbGVEYXlzRm9yRGVsZXRlOiB0cnVlLFxuICAgICAgICAgIGNsb3VkRm9sZGVyRGF5c0ZvckRlbGV0ZTogdHJ1ZSxcbiAgICAgICAgICBoaXN0b3J5RmlsZURheXNGb3JEZWxldGU6IHRydWUsXG4gICAgICAgICAgaGlzdG9yeU1heEZpbGVDb3VudDogdHJ1ZVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdXBkYXRlQXBwU2V0dGluZ3M7XG4gIH1cblxuICBhc3luYyByZWNlaXZlZE1haWxzKCk6IFByb21pc2U8UmVjZWl2ZWRNYWlsW10+IHtcbiAgICBjb25zdCB7IHVzZXIgfSA9IGF3YWl0IHRoaXMuY2xpZW50LnF1ZXJ5KHtcbiAgICAgIHVzZXI6IFtcbiAgICAgICAge30sXG4gICAgICAgIHtcbiAgICAgICAgICByZWNlaXZlZE1haWxzOiBncWxNYWlsUXVlcnlcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgY29uc3QgbWFpbHMgPSB1c2VyPy5yZWNlaXZlZE1haWxzID8/IFtdO1xuXG4gICAgLy8gVE9ETyBnZXQgYWN0dWFsIG1haWxzIG9uIHRoaXMgYXBwIG9ubHlcblxuICAgIGNvbnN0IHJlY2VpdmVkTWFpbHMgPSBuZXcgQXJyYXk8UmVjZWl2ZWRNYWlsPigpO1xuXG4gICAgZm9yIChjb25zdCBtIG9mIG1haWxzKSB7XG4gICAgICBjb25zdCBtYWlsID0gY29udmVydEludGVybmFsTWFpbFRvRXh0ZXJuYWwobSwgdGhpcy4ja2V5cyk7XG4gICAgICBpZiAobWFpbCkge1xuICAgICAgICByZWNlaXZlZE1haWxzLnB1c2gobWFpbCBhcyBSZWNlaXZlZE1haWwpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZWNlaXZlZE1haWxzO1xuICB9XG5cbiAgYXN5bmMgc2VudE1haWxzKCk6IFByb21pc2U8U2VudE1haWxbXT4ge1xuICAgIGNvbnN0IHsgdXNlciB9ID0gYXdhaXQgdGhpcy5jbGllbnQucXVlcnkoe1xuICAgICAgdXNlcjogW1xuICAgICAgICB7fSxcbiAgICAgICAge1xuICAgICAgICAgIHNlbnRNYWlsczogZ3FsTWFpbFF1ZXJ5XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGNvbnN0IG1haWxzID0gdXNlcj8uc2VudE1haWxzID8/IFtdO1xuXG4gICAgLy8gVE9ETyBnZXQgYWN0dWFsIG1haWxzIG9uIHRoaXMgYXBwIG9ubHlcblxuICAgIGNvbnN0IHNlbnRNYWlscyA9IG5ldyBBcnJheTxTZW50TWFpbD4oKTtcblxuICAgIGZvciAoY29uc3QgbSBvZiBtYWlscykge1xuICAgICAgY29uc3QgbWFpbCA9IGNvbnZlcnRJbnRlcm5hbE1haWxUb0V4dGVybmFsKG0sIHRoaXMuI2tleXMpO1xuICAgICAgaWYgKG1haWwpIHtcbiAgICAgICAgc2VudE1haWxzLnB1c2gobWFpbCBhcyBTZW50TWFpbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlbnRNYWlscztcbiAgfVxuXG4gIGFzeW5jIGRyYWZ0TWFpbHMoKTogUHJvbWlzZTxEcmFmdE1haWxbXT4ge1xuICAgIGNvbnN0IHsgdXNlciB9ID0gYXdhaXQgdGhpcy5jbGllbnQucXVlcnkoe1xuICAgICAgdXNlcjogW1xuICAgICAgICB7fSxcbiAgICAgICAge1xuICAgICAgICAgIGRyYWZ0TWFpbHM6IGdxbE1haWxRdWVyeVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBjb25zdCBtYWlscyA9IHVzZXI/LmRyYWZ0TWFpbHMgPz8gW107XG5cbiAgICAvLyBUT0RPIGdldCBhY3R1YWwgbWFpbHMgb24gdGhpcyBhcHAgb25seVxuXG4gICAgY29uc3QgZHJhZnRNYWlscyA9IG5ldyBBcnJheTxEcmFmdE1haWw+KCk7XG5cbiAgICBmb3IgKGNvbnN0IG0gb2YgbWFpbHMpIHtcbiAgICAgIGNvbnN0IGRyYWZ0ID0gY29udmVydEludGVybmFsTWFpbFRvRXh0ZXJuYWwobSwgdGhpcy4ja2V5cykgYXMgRHJhZnRNYWlsO1xuICAgICAgaWYgKGRyYWZ0KSB7XG4gICAgICAgIGRyYWZ0TWFpbHMucHVzaChkcmFmdCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRyYWZ0TWFpbHM7XG4gIH1cblxuICBwcml2YXRlIHBlckZvbGRlciA9IGFzeW5jIChcbiAgICBmb2xkZXJJZDogc3RyaW5nLFxuICAgIHB1YmxpY0tleTogc3RyaW5nXG4gICk6IFByb21pc2U8TmFtZUtleUlucHV0Rm9sZGVycyB8IG51bGw+ID0+IHtcbiAgICBsZXQgZm9sZGVyID0gZm9sZGVyc0NhY2hlLmdldChmb2xkZXJJZCk7XG5cbiAgICBpZiAoIWZvbGRlcikge1xuICAgICAgYXdhaXQgdGhpcy5mb2xkZXIoeyBpZDogZm9sZGVySWQgfSk7XG4gICAgICBmb2xkZXIgPSBmb2xkZXJzQ2FjaGUuZ2V0KGZvbGRlcklkKTtcblxuICAgICAgaWYgKCFmb2xkZXIpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFmb2xkZXIudXNlckFwcD8ubmFtZUtleSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBmb2xkZXJJZCxcbiAgICAgIG5hbWVLZXk6IHNvZGl1bS50b19oZXgoXG4gICAgICAgIGVuY3J5cHRDcnlwdG9Cb3goXG4gICAgICAgICAgc29kaXVtLmZyb21faGV4KGZvbGRlci51c2VyQXBwLm5hbWVLZXkpLFxuICAgICAgICAgIHB1YmxpY0tleSxcbiAgICAgICAgICB0aGlzLiNrZXlzLnByaXZhdGVLZXlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIH07XG4gIH07XG5cbiAgcHJpdmF0ZSBwZXJWRmlsZSA9IGFzeW5jIChcbiAgICB2RmlsZUlkOiBzdHJpbmcsXG4gICAgcHVibGljS2V5OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxOYW1lS2V5SW5wdXQgfCBudWxsPiA9PiB7XG4gICAgbGV0IHZGaWxlID0gdkZpbGVzQ2FjaGUuZ2V0KHZGaWxlSWQpO1xuXG4gICAgaWYgKCF2RmlsZSkge1xuICAgICAgYXdhaXQgdGhpcy52RmlsZSh7IGlkOiB2RmlsZUlkIH0pO1xuICAgICAgdkZpbGUgPSB2RmlsZXNDYWNoZS5nZXQodkZpbGVJZCk7XG5cbiAgICAgIGlmICghdkZpbGUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB2RmlsZS5pZCxcbiAgICAgIG5hbWVLZXk6IHNvZGl1bS50b19oZXgoXG4gICAgICAgIGVuY3J5cHRDcnlwdG9Cb3goXG4gICAgICAgICAgc29kaXVtLmZyb21faGV4KHZGaWxlLnVzZXJBcHAubmFtZUtleSksXG4gICAgICAgICAgcHVibGljS2V5LFxuICAgICAgICAgIHRoaXMuI2tleXMucHJpdmF0ZUtleVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgZmlsZXM6IHZGaWxlLmhpc3RvcnkubWFwKGYgPT4gKHtcbiAgICAgICAgaWQ6IGYuaWQsXG4gICAgICAgIGtleTogc29kaXVtLnRvX2hleChcbiAgICAgICAgICBlbmNyeXB0Q3J5cHRvQm94KFxuICAgICAgICAgICAgc29kaXVtLmZyb21faGV4KGYudXNlciEua2V5KSxcbiAgICAgICAgICAgIHB1YmxpY0tleSxcbiAgICAgICAgICAgIHRoaXMuI2tleXMucHJpdmF0ZUtleVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgfSkpXG4gICAgfTtcbiAgfTtcblxuICBwcml2YXRlIF9lYWNoVXNlciA9IGFzeW5jIChcbiAgICBmaWxlczogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfVtdLFxuICAgIHN1YmplY3Q6IHN0cmluZyxcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgaWRPck1haWw6IHN0cmluZ1xuICApOiBQcm9taXNlPE1haWxSZWNpcGllbnRJbnB1dCB8IG51bGw+ID0+IHtcbiAgICBsZXQgdSA9IHVzZXJzQ2FjaGUuZ2V0KGlkT3JNYWlsKTtcbiAgICBpZiAoIXUgfHwgIShcInB1YmxpY0tleVwiIGluIHUpKSB7XG4gICAgICB1ID1cbiAgICAgICAgKGF3YWl0IHRoaXMudXNlcih7XG4gICAgICAgICAgdXNlcklkOiBpZE9yTWFpbCxcbiAgICAgICAgICB3aXRoUHVibGljS2V5OiB0cnVlXG4gICAgICAgIH0pKSA/PyB1bmRlZmluZWQ7XG5cbiAgICAgIGlmICghdSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIShcInB1YmxpY0tleVwiIGluIHUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVzZXIgJHtpZE9yTWFpbH0gaGF2ZSBubyBwdWJsaWMga2V5YCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVjaXBpZW50c0ZpbGVzID0gbmV3IEFycmF5PE1haWxGaWxlSW5wdXQ+KCk7XG5cbiAgICBmb3IgKGNvbnN0IGYgb2YgZmlsZXMpIHtcbiAgICAgIGxldCBmaWxlSW5IaXN0b3J5ID0gZmlsZXNDYWNoZS5nZXQoZi5pZCk7XG4gICAgICBpZiAoIWZpbGVJbkhpc3RvcnkpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5maWxlKHsgaWQ6IGYuaWQgfSk7XG4gICAgICAgIGZpbGVJbkhpc3RvcnkgPSBmaWxlc0NhY2hlLmdldChmLmlkKTtcbiAgICAgICAgaWYgKCFmaWxlSW5IaXN0b3J5KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGaWxlICR7Zi5uYW1lfSAoJHtmLmlkfSkgZG9lcyBub3QgZXhpc3RzYCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IGtleSA9IGZpbGVJbkhpc3RvcnkudXNlcj8ua2V5O1xuICAgICAgaWYgKCFrZXkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICByZWNpcGllbnRzRmlsZXMucHVzaCh7XG4gICAgICAgIGlkOiBmLmlkLFxuICAgICAgICBuYW1lOiBzb2RpdW0udG9faGV4KFxuICAgICAgICAgIGVuY3J5cHRDcnlwdG9Cb3goXG4gICAgICAgICAgICBzb2RpdW0uZnJvbV9zdHJpbmcoZi5uYW1lKSxcbiAgICAgICAgICAgIHUucHVibGljS2V5LFxuICAgICAgICAgICAgdGhpcy4ja2V5cy5wcml2YXRlS2V5XG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBmaWxlS2V5OiBzb2RpdW0udG9faGV4KFxuICAgICAgICAgIGVuY3J5cHRDcnlwdG9Cb3goXG4gICAgICAgICAgICBzb2RpdW0uZnJvbV9oZXgoa2V5KSxcbiAgICAgICAgICAgIHUucHVibGljS2V5LFxuICAgICAgICAgICAgdGhpcy4ja2V5cy5wcml2YXRlS2V5XG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgcmVjaXBpZW50SWQ6IHUuaWQsXG4gICAgICBib2R5OiBzb2RpdW0udG9faGV4KFxuICAgICAgICBlbmNyeXB0Q3J5cHRvQm94KFxuICAgICAgICAgIHNvZGl1bS5mcm9tX3N0cmluZyhib2R5KSxcbiAgICAgICAgICB1LnB1YmxpY0tleSxcbiAgICAgICAgICB0aGlzLiNrZXlzLnByaXZhdGVLZXlcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIHN1YmplY3Q6IHNvZGl1bS50b19oZXgoXG4gICAgICAgIGVuY3J5cHRDcnlwdG9Cb3goXG4gICAgICAgICAgc29kaXVtLmZyb21fc3RyaW5nKHN1YmplY3QpLFxuICAgICAgICAgIHUucHVibGljS2V5LFxuICAgICAgICAgIHRoaXMuI2tleXMucHJpdmF0ZUtleVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgZmlsZXM6IHJlY2lwaWVudHNGaWxlc1xuICAgIH07XG4gIH07XG59XG4iXX0=
3652
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvaW5kZXgudHMiXSwibmFtZXMiOlsia3kiLCJheGlvcyIsIkJhc2VDbGllbnQiLCJ2RmlsZXNDYWNoZSIsImZvbGRlcnNDYWNoZSIsImZpbGVzQ2FjaGUiLCJ1c2Vyc0NhY2hlIiwic2VjcmV0c3RyZWFtS2V5Z2VuIiwiZW5jcnlwdFNlY3JldHN0cmVhbSIsImNvbXByZXNzIiwidW5jb21wcmVzcyIsImdxbEZvbGRlclRvRXh0ZXJuYWwiLCJncWxGb2xkZXJUb0V4dGVybmFsRm9sZGVyRnVsbCIsImdxbFZGaWxlVG9FeHRlcm5hbCIsImdxbFZGaWxlVG9JbnRlcm5hbCIsImludGVybmFsVkZpbGVUb1ZGaWxlIiwiZ3FsRmlsZVRvRXh0ZXJuYWwiLCJzb2RpdW0iLCJkZWNyeXB0Q3J5cHRvQm94IiwiZW5jcnlwdENyeXB0b0JveCIsImdlbmVyYXRlIiwibWQ1IiwiZW5jcnlwdCIsImRlY3J5cHQiLCJjaHVua3MiLCJjb25jYXRlbmF0ZSIsImVudW1lcmF0ZSIsInByb21pc2VBbGxMaW1pdCIsImdxbEZpbGVRdWVyeSIsImdxbEZvbGRlclF1ZXJ5IiwiZ3FsRm9sZGVyUXVlcnlXaXRoTGlua3MiLCJncWxNYWlsUXVlcnkiLCJncWxWRmlsZVF1ZXJ5IiwiZ3FsVkZpbGVXaXRoRm9sZGVyUXVlcnkiLCJjb252ZXJ0SW50ZXJuYWxNYWlsVG9FeHRlcm5hbCIsImVuY3J5cHROYW1lIiwibmFtZSIsIm5hbWVLZXkiLCJmcm9tX2hleCIsImZyb21fc3RyaW5nIiwiZGF0YSIsIm5hbWVFbmNyeXB0ZWQiLCJ0b19oZXgiLCJTZWNyZWN5Q2xpZW50IiwidWFTZXNzaW9uIiwidWFLZXlzIiwidWFKd3QiLCJlbnYiLCJqd3QiLCJwZXJGb2xkZXIiLCJmb2xkZXJJZCIsInB1YmxpY0tleSIsImZvbGRlciIsImdldCIsImlkIiwidXNlckFwcCIsInByaXZhdGVLZXkiLCJwZXJWRmlsZSIsInZGaWxlSWQiLCJ2RmlsZSIsImZpbGVzIiwiaGlzdG9yeSIsIm1hcCIsImYiLCJrZXkiLCJ1c2VyIiwiX2VhY2hVc2VyIiwic3ViamVjdCIsImJvZHkiLCJpZE9yTWFpbCIsInUiLCJ1c2VySWQiLCJ3aXRoUHVibGljS2V5IiwidW5kZWZpbmVkIiwiRXJyb3IiLCJyZWNpcGllbnRzRmlsZXMiLCJBcnJheSIsImZpbGVJbkhpc3RvcnkiLCJmaWxlIiwicHVzaCIsImZpbGVLZXkiLCJyZWNpcGllbnRJZCIsImFkZEZpbGVUb0hpc3RvcnkiLCJmaWxlSWQiLCJjbGllbnQiLCJtdXRhdGlvbiIsImZpbmQiLCJ1c2VycyIsImZpbHRlciIsImlucHV0Iiwic2hhcmVGaWxlSW5IaXN0b3J5IiwidXBsb2FkRmlsZSIsImVuY3J5cHRQcm9ncmVzcyIsInVwbG9hZFByb2dyZXNzIiwiY2FuY2VsVG9rZW4iLCJGaWxlIiwiVWludDhBcnJheSIsImFycmF5QnVmZmVyIiwiZmlsZUJ1ZmZlciIsImNvbXByZXNzZWQiLCJlbmNyeXB0ZWRGaWxlIiwibWQ1RmlsZSIsIm1kNUVuY3J5cHRlZCIsImVuY3J5cHRlZEZpbGVLZXkiLCJmaWxlU2l6ZSIsImJ5dGVMZW5ndGgiLCJmaWxlU2l6ZUJlZm9yZSIsImZpbGVQYXJ0U2l6ZSIsInBhcnRzIiwiZmllbGRzIiwib3JkZXIiLCJ1cmwiLCJ0b3RhbCIsImN1cnJlbnQiLCJwZXJjZW50IiwibGVuZ3RoIiwidXBsb2FkUGFydEVuZGVkIiwidXBsb2FkRmlsZVBhcnRFbmQiLCJ1cGxvYWRFbmRlZCIsInVwbG9hZEZpbGVFbmQiLCJjaHVua1BhcnRzIiwiTnVtYmVyIiwiaW5kZXgiLCJjaHVuayIsInByb2dyZXNzUGFydHMiLCJvblByb2dyZXNzIiwicGFydCIsInByb2dyZXNzRXZlbnQiLCJPYmplY3QiLCJ2YWx1ZXMiLCJyZWR1Y2UiLCJwcnYiLCJjdXIiLCJsb2FkZWQiLCJieVBhcnQiLCJmb3JtRGF0YSIsIkZvcm1EYXRhIiwicCIsImVudHJpZXMiLCJ2YWx1ZSIsImFwcGVuZCIsIkJsb2IiLCJwb3N0Iiwib25VcGxvYWRQcm9ncmVzcyIsInJlc3BvbnNlIiwic3RhdHVzIiwidXBsb2FkRmlsZUluQ2xvdWQiLCJzYXZlSW5DbG91ZCIsImxvZ291dCIsInNlc3Npb25JZCIsImNsZWFyIiwiY3JlYXRlRm9sZGVyIiwicGFyZW50Rm9sZGVySWQiLCJlbmNyeXB0ZWROYW1lIiwiZW5jcnlwdGVkS2V5IiwicGFyZW50Rm9sZGVyIiwiUHJvbWlzZSIsImFsbCIsInJpZ2h0cyIsInNoYXJlRm9sZGVyIiwiZGVsZXRlZCIsInF1ZXJ5IiwibWFpbCIsInNoYXJlVkZpbGUiLCJoIiwic2hhcmVkVkZpbGVzIiwidkZpbGVzIiwidkZpbGVzU2hhcmVkV2l0aE1lIiwiZGVsZXRlZFZGaWxlcyIsInNoYXJlZEZvbGRlcnMiLCJmb2xkZXJzIiwiZm9sZGVyc1NoYXJlZFdpdGhNZSIsImRlbGV0ZWRGb2xkZXJzIiwic2hhcmVGb2xkZXJzIiwidkZpbGVJbnB1dCIsInNoYXJlRm9sZGVyRmluaXNoIiwidXBkYXRlRm9sZGVyIiwiaXNGYXZvcml0ZSIsImRlbGV0ZWRBdCIsImNyZWF0ZU1haWwiLCJjdXN0b21NZXNzYWdlIiwiY3JlYXRlRHJhZnRNYWlsIiwic2VuZERyYWZ0TWFpbCIsIm1haWxJbnRlZ3JpdHlJZCIsIndhaXRpbmdSZWNlaXZlZE1haWxzIiwiZGF0ZSIsImF0dGFjaG1lbnRzQ291bnQiLCJzZW5kZXIiLCJmaXJzdG5hbWUiLCJsYXN0bmFtZSIsImVtYWlsIiwicmVjaXBpZW50cyIsInRlbXBvcmFyeVJlY2lwaWVudHMiLCJtIiwiRGF0ZSIsInVwZGF0ZURyYWZ0TWFpbCIsImRyYWZ0SWQiLCJyZWNpcGllbnRzSWRzIiwicmVwbHlUbyIsImRyYWZ0TWFpbHMiLCJkcmFmdHMiLCJkcmFmdCIsImQiLCJoYXNoS2V5IiwiaGFzaCIsInJhbmRvbWJ5dGVzX2J1ZiIsImNyeXB0b19nZW5lcmljaGFzaF9LRVlCWVRFUyIsImNyeXB0b19nZW5lcmljaGFzaCIsImNyeXB0b19nZW5lcmljaGFzaF9CWVRFUyIsIkpTT04iLCJzdHJpbmdpZnkiLCJzZW5kZXJGaWxlcyIsImRlbGV0ZURyYWZ0TWFpbCIsImRlbGV0ZVZGaWxlU2hhcmluZyIsImRlbGV0ZUZvbGRlclNoYXJpbmciLCJkdXBsaWNhdGVWRmlsZSIsImN1c3RvbU5hbWUiLCJkZWxldGVGb2xkZXJDbG91ZFRyYXNoIiwiaWRzIiwiZGVsZXRlVkZpbGVDbG91ZFRyYXNoIiwiZGVsZXRlTWFpbFRyYXNoIiwiZW1wdHlNYWlsVHJhc2giLCJlbXB0eUNsb3VkVHJhc2giLCJyZWNvdmVyRmlsZSIsInJlY292ZXJGb2xkZXIiLCJyZWNvdmVyTWFpbCIsIm1haWxJZCIsImRlbGV0ZUZpbGUiLCJkZWxldGVWRmlsZSIsImRlbGV0ZU1haWwiLCJoYXMiLCJyZWNlaXZlZE1haWxzIiwic29tZSIsImZpbGVNYWlsIiwiZW5jcnlwdGVkTmFtZUtleSIsImZpbGVuYW1lIiwibWUiLCJpbmNsdWRlcyIsIm90aGVycyIsImRyYWZ0TWFpbElkIiwic2VuZFdhaXRpbmdFbWFpbHMiLCJzZW50TWFpbHMiLCJtYWlscyIsImZpbHRlcmVkIiwic2VuZE9uZU1haWwiLCJyZWNpcGllbnQiLCJmaWxlQ29udGVudCIsIm9uRG93bmxvYWRQcm9ncmVzcyIsInByb2dyZXNzRGVjcnlwdCIsImFib3J0IiwiX190eXBlbmFtZSIsImNvbnRlbnRVcmwiLCJ0b3RhbFNpemUiLCJzZW5kZXJQdWJsaWNLZXkiLCJ0cmFuc2ZlcnJlZEJ5dGVzIiwidG90YWxCeXRlcyIsInByIiwic2lnbmFsIiwiYnVmIiwibWQ1UGFydCIsImVuY3J5cHRlZENvbnRlbnQiLCJzb3J0IiwiYSIsImIiLCJzcmMiLCJtZDVDb250ZW50IiwidXBkYXRlRmlsZSIsInJlYWRNYWlsIiwidW5yZWFkTWFpbCIsImFwcFNldHRpbmdzIiwiYXV0b0Rpc2Nvbm5lY3REZWxheSIsImNsb3VkRmlsZURheXNGb3JEZWxldGUiLCJjbG91ZEZvbGRlckRheXNGb3JEZWxldGUiLCJoaXN0b3J5RmlsZURheXNGb3JEZWxldGUiLCJoaXN0b3J5TWF4RmlsZUNvdW50IiwidXBkYXRl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O0FBRXJCLG9CQUFJUSxLQUFKLEVBQVc7QUFDVEYsa0JBQUFBLFVBQVUsQ0FBQ3hILElBQVgsQ0FBZ0IwSCxLQUFoQjtBQUNEO0FBQ0Y7O0FBckJILGlEQXVCU0YsVUF2QlQ7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsS0FyakRGOztBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBOztBQUFBO0FBQUEsRUFBbUNyTSxVQUFuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRG93bmxvYWRQcm9ncmVzcyB9IGZyb20gXCJreVwiO1xuaW1wb3J0IGt5IGZyb20gXCJreVwiO1xuaW1wb3J0IHR5cGUgeyBDYW5jZWxUb2tlbiB9IGZyb20gXCJheGlvc1wiO1xuaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xuaW1wb3J0IHsgQmFzZUNsaWVudCB9IGZyb20gXCIuLi9CYXNlQ2xpZW50LmpzXCI7XG5pbXBvcnQgeyB2RmlsZXNDYWNoZSwgZm9sZGVyc0NhY2hlLCBmaWxlc0NhY2hlLCB1c2Vyc0NhY2hlIH0gZnJvbSBcIi4uL2NhY2hlLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFByb2dyZXNzIH0gZnJvbSBcIi4uL2NyeXB0by9maWxlLmpzXCI7XG5pbXBvcnQgeyBzZWNyZXRzdHJlYW1LZXlnZW4sIGVuY3J5cHRTZWNyZXRzdHJlYW0gfSBmcm9tIFwiLi4vY3J5cHRvL2ZpbGUuanNcIjtcbmltcG9ydCB7IGNvbXByZXNzLCB1bmNvbXByZXNzIH0gZnJvbSBcIi4uL21pbmlmeS9pbmRleC5qc1wiO1xuaW1wb3J0IHtcbiAgZ3FsRm9sZGVyVG9FeHRlcm5hbCxcbiAgZ3FsRm9sZGVyVG9FeHRlcm5hbEZvbGRlckZ1bGxcbn0gZnJvbSBcIi4vY29udmVydC9mb2xkZXIuanNcIjtcbmltcG9ydCB7XG4gIGdxbFZGaWxlVG9FeHRlcm5hbCxcbiAgZ3FsVkZpbGVUb0ludGVybmFsLFxuICBpbnRlcm5hbFZGaWxlVG9WRmlsZVxufSBmcm9tIFwiLi9jb252ZXJ0L3ZGaWxlLmpzXCI7XG5pbXBvcnQgdHlwZSB7XG4gIE1haWxGaWxlSW5wdXQsXG4gIFJlY2VpdmVkTWFpbCxcbiAgU2VudE1haWwsXG4gIEZvbGRlcixcbiAgVkZpbGVXaXRoRm9sZGVyLFxuICBGb2xkZXJGdWxsLFxuICBVc2VyQXBwU2V0dGluZ3MsXG4gIEZpbGUgYXMgU2VjcmVjeUZpbGUsXG4gIFdhaXRpbmdSZWNlaXZlZE1haWwsXG4gIERyYWZ0TWFpbCxcbiAgTWFpbFJlY2lwaWVudElucHV0LFxuICBWRmlsZSxcbiAgU2hhcmVGb2xkZXJzSW5wdXQsXG4gIE5hbWVLZXlJbnB1dCxcbiAgTmFtZUtleUlucHV0Rm9sZGVycyxcbiAgTWFpbCxcbiAgU2hhcmVGaWxlSW5IaXN0b3J5SW5wdXQsXG4gIEZpbGVQYXJ0UmVzcG9uc2UsXG4gIEZpbGVDb250ZW50UGFydFxufSBmcm9tIFwiLi90eXBlcy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZ3FsRmlsZVRvRXh0ZXJuYWwgfSBmcm9tIFwiLi9jb252ZXJ0L2ZpbGUuanNcIjtcbmltcG9ydCB7IHNvZGl1bSB9IGZyb20gXCIuLi9zb2RpdW0uanNcIjtcbmltcG9ydCB0eXBlIHsgS2V5UGFpciB9IGZyb20gXCIuLi9jcnlwdG8vaW5kZXguanNcIjtcbmltcG9ydCB7IGRlY3J5cHRDcnlwdG9Cb3gsIGVuY3J5cHRDcnlwdG9Cb3ggfSBmcm9tIFwiLi4vY3J5cHRvL2luZGV4LmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNlY3JlY3lFbnYgfSBmcm9tIFwiLi9oZWxwZXJzLmpzXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCJzaG9ydGlkXCI7XG5pbXBvcnQgeyBtZDUgfSBmcm9tIFwiLi4vd29ya2VyL21kNS5qc1wiO1xuaW1wb3J0IHsgZW5jcnlwdCwgZGVjcnlwdCB9IGZyb20gXCIuLi93b3JrZXIvc29kaXVtLmpzXCI7XG5pbXBvcnQgeyBjaHVua3MsIGNvbmNhdGVuYXRlLCBlbnVtZXJhdGUsIHByb21pc2VBbGxMaW1pdCB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuaW1wb3J0IHtcbiAgZ3FsRmlsZVF1ZXJ5LFxuICBncWxGb2xkZXJRdWVyeSxcbiAgZ3FsRm9sZGVyUXVlcnlXaXRoTGlua3MsXG4gIGdxbE1haWxRdWVyeSxcbiAgZ3FsVkZpbGVRdWVyeSxcbiAgZ3FsVkZpbGVXaXRoRm9sZGVyUXVlcnlcbn0gZnJvbSBcIi4vdHlwZXMvcXVlcmllcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBSaWdodHMgfSBmcm9tIFwiLi4vemV1cy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgY29udmVydEludGVybmFsTWFpbFRvRXh0ZXJuYWwgfSBmcm9tIFwiLi9jb252ZXJ0L21haWwuanNcIjtcbi8vIGltcG9ydCB7IG1kNSB9IGZyb20gXCIuLi93b3JrZXIvaW5kZXguanNcIjtcbi8vIGltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBvZiB9IGZyb20gXCJyeGpzXCI7XG5cbmV4cG9ydCB0eXBlIE5ld01haWwgPSB7XG4gIGJvZHk6IHN0cmluZztcbiAgc3ViamVjdDogc3RyaW5nO1xuICBmaWxlczogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfVtdO1xuICByZWNpcGllbnRzSWRzOiBzdHJpbmdbXTtcbiAgcmVwbHlUbz86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBQcm9ncmVzc0NhbGxiYWNrID0gKHByb2dyZXNzOiBQcm9ncmVzcykgPT4gUHJvbWlzZTx2b2lkPjtcblxuY29uc3QgZW5jcnlwdE5hbWUgPSBhc3luYyAobmFtZTogc3RyaW5nLCBuYW1lS2V5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IGVuY3J5cHRTZWNyZXRzdHJlYW0oXG4gICAgc29kaXVtLmZyb21faGV4KG5hbWVLZXkpLFxuICAgIHNvZGl1bS5mcm9tX3N0cmluZyhuYW1lKVxuICApO1xuICBjb25zdCBuYW1lRW5jcnlwdGVkID0gc29kaXVtLnRvX2hleChkYXRhKTtcbiAgcmV0dXJuIG5hbWVFbmNyeXB0ZWQ7XG59O1xuXG5leHBvcnQgY2xhc3MgU2VjcmVjeUNsaWVudCBleHRlbmRzIEJhc2VDbGllbnQge1xuICBqd3Q6IHN0cmluZztcblxuICAja2V5czogS2V5UGFpcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICB1YVNlc3Npb246IHN0cmluZyxcbiAgICB1YUtleXM6IEtleVBhaXIsXG4gICAgdWFKd3Q6IHN0cmluZyxcbiAgICBlbnY6IFNlY3JlY3lFbnZcbiAgKSB7XG4gICAgc3VwZXIodWFTZXNzaW9uLCBlbnYpO1xuICAgIHRoaXMuand0ID0gdWFKd3Q7XG4gICAgdGhpcy4ja2V5cyA9IHVhS2V5cztcbiAgfVxuXG4gIGFzeW5jIGFkZEZpbGVUb0hpc3Rvcnkoe1xuICAgIGZpbGVJZCxcbiAgICB2RmlsZUlkXG4gIH06IHtcbiAgICBmaWxlSWQ6IHN0cmluZztcbiAgICB2RmlsZUlkOiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPFZGaWxlPiB7XG4gICAgY29uc3QgeyBhZGRGaWxlVG9IaXN0b3J5IH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICBhZGRGaWxlVG9IaXN0b3J5OiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmaWxlSWQsXG4gICAgICAgICAgdkZpbGVJZFxuICAgICAgICB9LFxuICAgICAgICBncWxWRmlsZVF1ZXJ5XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBjb25zdCB2RmlsZSA9IGF3YWl0IGdxbFZGaWxlVG9JbnRlcm5hbChhZGRGaWxlVG9IaXN0b3J5LCB0aGlzLiNrZXlzKTtcbiAgICBjb25zdCBmaWxlID0gdkZpbGUuaGlzdG9yeS5maW5kKGYgPT4gZi5pZCA9PT0gZmlsZUlkKTtcbiAgICBpZiAoZmlsZSkge1xuICAgICAgY29uc3QgdXNlcnMgPSB2RmlsZS51c2Vycy5maWx0ZXIoXG4gICAgICAgIChbdV0pID0+IHUucHVibGljS2V5ICE9PSB0aGlzLiNrZXlzLnB1YmxpY0tleVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGlucHV0OiBTaGFyZUZpbGVJbkhpc3RvcnlJbnB1dCA9IHtcbiAgICAgICAgZmlsZUlkOiBmaWxlLmlkLFxuICAgICAgICB1c2VyczogdXNlcnMubWFwKChbdV0pID0+ICh7XG4gICAgICAgICAgaWQ6IHUuaWQsXG4gICAgICAgICAga2V5OiBzb2RpdW0udG9faGV4KFxuICAgICAgICAgICAgZW5jcnlwdENyeXB0b0JveChcbiAgICAgICAgICAgICAgc29kaXVtLmZyb21faGV4KGZpbGUudXNlciEua2V5KSxcbiAgICAgICAgICAgICAgdGhpcy4ja2V5cy5wdWJsaWNLZXksXG4gICAgICAgICAgICAgIHRoaXMuI2tleXMucHJpdmF0ZUtleVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgfSkpXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICAgIHNoYXJlRmlsZUluSGlzdG9yeTogW3sgaW5wdXQsIHZGaWxlSWQgfSwgdHJ1ZV1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gaW50ZXJuYWxWRmlsZVRvVkZpbGUodkZpbGUpO1xuICB9XG5cbiAgYXN5bmMgdXBsb2FkRmlsZSh7XG4gICAgZmlsZSxcbiAgICBlbmNyeXB0UHJvZ3Jlc3MsXG4gICAgdXBsb2FkUHJvZ3Jlc3MsXG4gICAgY2FuY2VsVG9rZW5cbiAgfToge1xuICAgIGZpbGU6IGdsb2JhbFRoaXMuRmlsZSB8IFVpbnQ4QXJyYXk7XG4gICAgY2FuY2VsVG9rZW4/OiBDYW5jZWxUb2tlbjtcbiAgICBlbmNyeXB0UHJvZ3Jlc3M/OiBQcm9ncmVzc0NhbGxiYWNrO1xuICAgIHVwbG9hZFByb2dyZXNzPzogUHJvZ3Jlc3NDYWxsYmFjaztcbiAgICAvLyBhYm9ydD86IEFib3J0Q29udHJvbGxlcjtcbiAgfSk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIGNvbnN0IGZpbGVLZXkgPSBzZWNyZXRzdHJlYW1LZXlnZW4oKTtcbiAgICBjb25zdCBmaWxlQnVmZmVyID1cbiAgICAgIGZpbGUgaW5zdGFuY2VvZiBGaWxlID8gbmV3IFVpbnQ4QXJyYXkoYXdhaXQgZmlsZS5hcnJheUJ1ZmZlcigpKSA6IGZpbGU7XG4gICAgY29uc3QgY29tcHJlc3NlZCA9IGNvbXByZXNzKGZpbGVCdWZmZXIpO1xuICAgIC8vIFRPRE86IHVzZSBhYm9ydCBjb250cm9sbGVyIHRvIGNhbmNlbCB1cGxvYWQsIGFuZCBzZWUgdHlwaW5nc1xuICAgIGNvbnN0IHtcbiAgICAgIGRhdGE6IGVuY3J5cHRlZEZpbGUsXG4gICAgICBtZDU6IG1kNUZpbGUsXG4gICAgICBtZDVFbmNyeXB0ZWRcbiAgICB9ID0gYXdhaXQgZW5jcnlwdChmaWxlS2V5LCBjb21wcmVzc2VkLCBlbmNyeXB0UHJvZ3Jlc3MpO1xuXG4gICAgY29uc3QgZW5jcnlwdGVkRmlsZUtleSA9IGVuY3J5cHRDcnlwdG9Cb3goXG4gICAgICBmaWxlS2V5LFxuICAgICAgdGhpcy4ja2V5cy5wdWJsaWNLZXksXG4gICAgICB0aGlzLiNrZXlzLnByaXZhdGVLZXlcbiAgICApO1xuXG4gICAgY29uc3QgeyB1cGxvYWRGaWxlIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICB1cGxvYWRGaWxlOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmaWxlU2l6ZTogZW5jcnlwdGVkRmlsZS5ieXRlTGVuZ3RoLFxuICAgICAgICAgIGZpbGVTaXplQmVmb3JlOiBmaWxlQnVmZmVyLmJ5dGVMZW5ndGgsXG4gICAgICAgICAgZmlsZUtleTogc29kaXVtLnRvX2hleChlbmNyeXB0ZWRGaWxlS2V5KSxcbiAgICAgICAgICBtZDVFbmNyeXB0ZWQsXG4gICAgICAgICAgbWQ1OiBtZDVGaWxlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBmaWxlSWQ6IHRydWUsXG4gICAgICAgICAgZmlsZVBhcnRTaXplOiB0cnVlLFxuICAgICAgICAgIHBhcnRzOiB7XG4gICAgICAgICAgICBmaWVsZHM6IHRydWUsXG4gICAgICAgICAgICBvcmRlcjogdHJ1ZSxcbiAgICAgICAgICAgIHVybDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCF1cGxvYWRGaWxlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB1cGxvYWRQcm9ncmVzcz8uKHtcbiAgICAgIHRvdGFsOiBlbmNyeXB0ZWRGaWxlLmJ5dGVMZW5ndGgsXG4gICAgICBjdXJyZW50OiAwLFxuICAgICAgcGVyY2VudDogMFxuICAgIH0pO1xuXG4gICAgaWYgKHVwbG9hZEZpbGUucGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB1cGxvYWRQcm9ncmVzcz8uKHtcbiAgICAgICAgdG90YWw6IGVuY3J5cHRlZEZpbGUuYnl0ZUxlbmd0aCxcbiAgICAgICAgY3VycmVudDogZW5jcnlwdGVkRmlsZS5ieXRlTGVuZ3RoLFxuICAgICAgICBwZXJjZW50OiAxXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHVwbG9hZEZpbGUuZmlsZUlkO1xuICAgIH1cblxuICAgIGNvbnN0IHVwbG9hZFBhcnRFbmRlZCA9IGFzeW5jIChcbiAgICAgIG1kNTogc3RyaW5nLFxuICAgICAgb3JkZXI6IG51bWJlclxuICAgICk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgICAgY29uc3QgeyB1cGxvYWRGaWxlUGFydEVuZCB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgICB1cGxvYWRGaWxlUGFydEVuZDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZpbGVJZDogdXBsb2FkRmlsZS5maWxlSWQsXG4gICAgICAgICAgICBtZDUsXG4gICAgICAgICAgICBvcmRlclxuICAgICAgICAgIH0sXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICBdXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHVwbG9hZEZpbGVQYXJ0RW5kO1xuICAgIH07XG5cbiAgICBjb25zdCB1cGxvYWRFbmRlZCA9IGFzeW5jICgpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+ID0+IHtcbiAgICAgIGNvbnN0IHsgdXBsb2FkRmlsZUVuZCB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgICB1cGxvYWRGaWxlRW5kOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgZmlsZUlkOiB1cGxvYWRGaWxlLmZpbGVJZFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICBdXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHVwbG9hZEZpbGVFbmQgPz8gbnVsbDtcbiAgICB9O1xuXG4gICAgY29uc3QgY2h1bmtQYXJ0cyA9IG5ldyBBcnJheTx7XG4gICAgICBvcmRlcjogbnVtYmVyO1xuICAgICAgZGF0YTogVWludDhBcnJheTtcbiAgICAgIG1kNTogc3RyaW5nO1xuICAgIH0+KCk7XG5cbiAgICBmb3IgKGNvbnN0IFtpbmRleCwgY2h1bmtdIG9mIGVudW1lcmF0ZShcbiAgICAgIGNodW5rcyhlbmNyeXB0ZWRGaWxlLCBOdW1iZXIodXBsb2FkRmlsZS5maWxlUGFydFNpemUpKVxuICAgICkpIHtcbiAgICAgIGNodW5rUGFydHMucHVzaCh7XG4gICAgICAgIG9yZGVyOiBpbmRleCArIDEsXG4gICAgICAgIGRhdGE6IGNodW5rLFxuICAgICAgICBtZDU6IGF3YWl0IG1kNShjaHVuaylcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHByb2dyZXNzUGFydHM6IFJlY29yZDxudW1iZXIsIFByb2dyZXNzRXZlbnQ+ID0ge307XG4gICAgY29uc3Qgb25Qcm9ncmVzcyA9IChwYXJ0OiBudW1iZXIsIHByb2dyZXNzRXZlbnQ6IFByb2dyZXNzRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgIHByb2dyZXNzUGFydHNbcGFydF0gPSBwcm9ncmVzc0V2ZW50O1xuICAgICAgY29uc3QgY3VycmVudCA9IE9iamVjdC52YWx1ZXMocHJvZ3Jlc3NQYXJ0cykucmVkdWNlKFxuICAgICAgICAocHJ2LCBjdXIpID0+IHBydiArIGN1ci5sb2FkZWQsXG4gICAgICAgIDBcbiAgICAgICk7XG4gICAgICB1cGxvYWRQcm9ncmVzcz8uKHtcbiAgICAgICAgcGVyY2VudDogY3VycmVudCAvIGVuY3J5cHRlZEZpbGUuYnl0ZUxlbmd0aCxcbiAgICAgICAgdG90YWw6IGVuY3J5cHRlZEZpbGUuYnl0ZUxlbmd0aCxcbiAgICAgICAgY3VycmVudFxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGJ5UGFydCA9IGFzeW5jIChwYXJ0OiBGaWxlUGFydFJlc3BvbnNlKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgY29uc3QgY2h1bmsgPSBjaHVua1BhcnRzLmZpbmQocCA9PiBwLm9yZGVyID09PSBwYXJ0Lm9yZGVyKTtcbiAgICAgIGlmICghY2h1bmspIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocGFydC5maWVsZHMpKSB7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGZvcm1EYXRhLmFwcGVuZChcbiAgICAgICAgXCJmaWxlXCIsXG4gICAgICAgIG5ldyBCbG9iKFtjaHVuay5kYXRhXSksXG4gICAgICAgIGAke3VwbG9hZEZpbGUuZmlsZUlkfS0ke2NodW5rLm9yZGVyfWBcbiAgICAgICk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGF4aW9zLnBvc3QocGFydC51cmwsIGZvcm1EYXRhLCB7XG4gICAgICAgICAgb25VcGxvYWRQcm9ncmVzczogcHJvZ3Jlc3NFdmVudCA9PlxuICAgICAgICAgICAgb25Qcm9ncmVzcyhwYXJ0Lm9yZGVyLCBwcm9ncmVzc0V2ZW50KSxcbiAgICAgICAgICBjYW5jZWxUb2tlblxuICAgICAgICB9KTtcblxuICAgICAgICBhd2FpdCB1cGxvYWRQYXJ0RW5kZWQoY2h1bmsubWQ1LCBjaHVuay5vcmRlcik7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmICgoZSBhcyBhbnkpLnJlc3BvbnNlLnN0YXR1cyA9PT0gMCkge1xuICAgICAgICAgIC8vIFRPRE8gaHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9reS9pc3N1ZXMvMzA1XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBhd2FpdCBwcm9taXNlQWxsTGltaXQoXG4gICAgICAzLFxuICAgICAgdXBsb2FkRmlsZS5wYXJ0cy5tYXAocCA9PiAoKTogUHJvbWlzZTx2b2lkPiA9PiBieVBhcnQocCkpXG4gICAgKTtcblxuICAgIHJldHVybiB1cGxvYWRFbmRlZCgpO1xuICB9XG5cbiAgYXN5bmMgdXBsb2FkRmlsZUluQ2xvdWQoe1xuICAgIGZpbGUsXG4gICAgbmFtZSxcbiAgICBmb2xkZXJJZCxcbiAgICBjYW5jZWxUb2tlbixcbiAgICBlbmNyeXB0UHJvZ3Jlc3MsXG4gICAgdXBsb2FkUHJvZ3Jlc3NcbiAgfToge1xuICAgIGZpbGU6IGdsb2JhbFRoaXMuRmlsZSB8IFVpbnQ4QXJyYXk7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGNhbmNlbFRva2VuPzogQ2FuY2VsVG9rZW47XG4gICAgZm9sZGVySWQ/OiBzdHJpbmc7XG4gICAgZW5jcnlwdFByb2dyZXNzPzogUHJvZ3Jlc3NDYWxsYmFjaztcbiAgICB1cGxvYWRQcm9ncmVzcz86IFByb2dyZXNzQ2FsbGJhY2s7XG4gIH0pOiBQcm9taXNlPFZGaWxlV2l0aEZvbGRlcj4ge1xuICAgIGNvbnN0IGZpbGVJZCA9IGF3YWl0IHRoaXMudXBsb2FkRmlsZSh7XG4gICAgICBmaWxlLFxuICAgICAgZW5jcnlwdFByb2dyZXNzLFxuICAgICAgdXBsb2FkUHJvZ3Jlc3MsXG4gICAgICBjYW5jZWxUb2tlblxuICAgIH0pO1xuICAgIGlmICghZmlsZUlkKSB7XG4gICAgICB0aHJvdyBgQ2FuJ3QgdXBsb2FkIGZpbGVgO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zYXZlSW5DbG91ZCh7IGZpbGVJZCwgbmFtZSwgZm9sZGVySWQgfSk7XG4gIH1cblxuICBhc3luYyBsb2dvdXQoc2Vzc2lvbklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHZGaWxlc0NhY2hlLmNsZWFyKCk7XG4gICAgZmlsZXNDYWNoZS5jbGVhcigpO1xuICAgIGZvbGRlcnNDYWNoZS5jbGVhcigpO1xuICAgIGF3YWl0IHN1cGVyLmxvZ291dChzZXNzaW9uSWQpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlRm9sZGVyKHtcbiAgICBuYW1lLFxuICAgIHBhcmVudEZvbGRlcklkXG4gIH06IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgcGFyZW50Rm9sZGVySWQ/OiBzdHJpbmcgfCBudWxsO1xuICB9KTogUHJvbWlzZTxGb2xkZXJGdWxsPiB7XG4gICAgY29uc3Qga2V5ID0gc2VjcmV0c3RyZWFtS2V5Z2VuKCk7XG4gICAgY29uc3QgZW5jcnlwdGVkTmFtZSA9IGF3YWl0IGVuY3J5cHROYW1lKG5hbWUsIHNvZGl1bS50b19oZXgoa2V5KSk7XG4gICAgY29uc3QgZW5jcnlwdGVkS2V5ID0gZW5jcnlwdENyeXB0b0JveChcbiAgICAgIGtleSxcbiAgICAgIHRoaXMuI2tleXMucHVibGljS2V5LFxuICAgICAgdGhpcy4ja2V5cy5wcml2YXRlS2V5XG4gICAgKTtcbiAgICBjb25zdCB7IGNyZWF0ZUZvbGRlciB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgY3JlYXRlRm9sZGVyOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBlbmNyeXB0ZWROYW1lLFxuICAgICAgICAgIHBhcmVudEZvbGRlcklkLFxuICAgICAgICAgIGtleTogc29kaXVtLnRvX2hleChlbmNyeXB0ZWRLZXkpXG4gICAgICAgIH0sXG4gICAgICAgIGdxbEZvbGRlclF1ZXJ5V2l0aExpbmtzXG4gICAgICBdXG4gICAgfSk7XG4gICAgaWYgKCFjcmVhdGVGb2xkZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2FuJ3QgY3JlYXRlIGZvbGRlcmApO1xuICAgIH1cbiAgICBjb25zdCBmb2xkZXIgPSBhd2FpdCBncWxGb2xkZXJUb0V4dGVybmFsRm9sZGVyRnVsbChcbiAgICAgIGNyZWF0ZUZvbGRlcixcbiAgICAgIHRoaXMuI2tleXNcbiAgICApO1xuXG4gICAgY29uc3QgdXNlcnMgPVxuICAgICAgZm9sZGVyLnBhcmVudEZvbGRlcj8udXNlcnM/LmZpbHRlcihcbiAgICAgICAgKFt1XSkgPT4gdS5wdWJsaWNLZXkgIT09IHRoaXMuI2tleXMucHVibGljS2V5XG4gICAgICApID8/IFtdO1xuXG4gICAgaWYgKHVzZXJzLmxlbmd0aCkge1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIHVzZXJzLm1hcCgoW3UsIHJpZ2h0c10pID0+XG4gICAgICAgICAgdGhpcy5zaGFyZUZvbGRlcih7XG4gICAgICAgICAgICBmb2xkZXJJZDogZm9sZGVyLmlkLFxuICAgICAgICAgICAgcmlnaHRzLFxuICAgICAgICAgICAgdXNlcklkOiB1LmlkXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm9sZGVyO1xuICB9XG5cbiAgYXN5bmMgZm9sZGVyKHtcbiAgICBpZCxcbiAgICBkZWxldGVkXG4gIH06IHtcbiAgICBpZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgZGVsZXRlZD86IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkO1xuICB9ID0ge30pOiBQcm9taXNlPEZvbGRlckZ1bGwgfCBudWxsPiB7XG4gICAgY29uc3QgeyBmb2xkZXIgfSA9IGF3YWl0IHRoaXMuY2xpZW50LnF1ZXJ5KHtcbiAgICAgIGZvbGRlcjogW3sgZGVsZXRlZCwgaWQgfSwgZ3FsRm9sZGVyUXVlcnlXaXRoTGlua3NdXG4gICAgfSk7XG4gICAgaWYgKCFmb2xkZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gZ3FsRm9sZGVyVG9FeHRlcm5hbEZvbGRlckZ1bGwoZm9sZGVyLCB0aGlzLiNrZXlzKTtcbiAgfVxuXG4gIGFzeW5jIGZpbGUoeyBpZCB9OiB7IGlkOiBzdHJpbmcgfSk6IFByb21pc2U8U2VjcmVjeUZpbGUgfCBudWxsPiB7XG4gICAgY29uc3QgeyBmaWxlIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5xdWVyeSh7XG4gICAgICBmaWxlOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZFxuICAgICAgICB9LFxuICAgICAgICBncWxGaWxlUXVlcnlcbiAgICAgIF1cbiAgICB9KTtcbiAgICBpZiAoIWZpbGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gZ3FsRmlsZVRvRXh0ZXJuYWwoZmlsZSwgdGhpcy4ja2V5cyk7XG4gIH1cblxuICBhc3luYyB2RmlsZSh7IGlkIH06IHsgaWQ6IHN0cmluZyB9KTogUHJvbWlzZTxWRmlsZVdpdGhGb2xkZXIgfCBudWxsPiB7XG4gICAgY29uc3QgeyB2RmlsZSB9ID0gYXdhaXQgdGhpcy5jbGllbnQucXVlcnkoe1xuICAgICAgdkZpbGU6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkXG4gICAgICAgIH0sXG4gICAgICAgIGdxbFZGaWxlV2l0aEZvbGRlclF1ZXJ5XG4gICAgICBdXG4gICAgfSk7XG4gICAgaWYgKCF2RmlsZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBncWxWRmlsZVRvRXh0ZXJuYWwodkZpbGUsIHRoaXMuI2tleXMpIGFzIFByb21pc2U8VkZpbGVXaXRoRm9sZGVyPjtcbiAgfVxuXG4gIGFzeW5jIG1haWwoeyBpZCB9OiB7IGlkOiBzdHJpbmcgfSk6IFByb21pc2U8TWFpbCB8IG51bGw+IHtcbiAgICBjb25zdCB7IG1haWwgfSA9IGF3YWl0IHRoaXMuY2xpZW50LnF1ZXJ5KHtcbiAgICAgIG1haWw6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkXG4gICAgICAgIH0sXG4gICAgICAgIGdxbE1haWxRdWVyeVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFtYWlsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udmVydEludGVybmFsTWFpbFRvRXh0ZXJuYWwobWFpbCwgdGhpcy4ja2V5cyk7XG4gIH1cblxuICBhc3luYyBzaGFyZVZGaWxlKHtcbiAgICB2RmlsZUlkLFxuICAgIHVzZXJJZCxcbiAgICByaWdodHNcbiAgfToge1xuICAgIHZGaWxlSWQ6IHN0cmluZztcbiAgICB1c2VySWQ6IHN0cmluZztcbiAgICByaWdodHM6IFJpZ2h0cztcbiAgfSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGxldCB2RmlsZSA9IHZGaWxlc0NhY2hlLmdldCh2RmlsZUlkKTtcblxuICAgIGlmICghdkZpbGUpIHtcbiAgICAgIGF3YWl0IHRoaXMudkZpbGUoeyBpZDogdkZpbGVJZCB9KTtcbiAgICAgIHZGaWxlID0gdkZpbGVzQ2FjaGUuZ2V0KHZGaWxlSWQpO1xuXG4gICAgICBpZiAoIXZGaWxlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy51c2VyKHsgdXNlcklkLCB3aXRoUHVibGljS2V5OiB0cnVlIH0pO1xuXG4gICAgaWYgKCF1c2VyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgbmFtZUtleSA9IHNvZGl1bS50b19oZXgoXG4gICAgICBlbmNyeXB0Q3J5cHRvQm94KFxuICAgICAgICBzb2RpdW0uZnJvbV9oZXgodkZpbGUudXNlckFwcC5uYW1lS2V5KSxcbiAgICAgICAgdXNlci5wdWJsaWNLZXksXG4gICAgICAgIHRoaXMuI2tleXMucHJpdmF0ZUtleVxuICAgICAgKVxuICAgICk7XG5cbiAgICBjb25zdCBoaXN0b3J5ID0gbmV3IEFycmF5PHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICBrZXk6IHN0cmluZztcbiAgICB9PigpO1xuXG4gICAgZm9yIChjb25zdCBoIG9mIHZGaWxlLmhpc3RvcnkpIHtcbiAgICAgIGlmICghaC51c2VyKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaGlzdG9yeS5wdXNoKHtcbiAgICAgICAgaWQ6IGguaWQsXG4gICAgICAgIGtleTogc29kaXVtLnRvX2hleChcbiAgICAgICAgICBlbmNyeXB0Q3J5cHRvQm94KFxuICAgICAgICAgICAgc29kaXVtLmZyb21faGV4KGgudXNlci5rZXkpLFxuICAgICAgICAgICAgdXNlci5wdWJsaWNLZXksXG4gICAgICAgICAgICB0aGlzLiNrZXlzLnByaXZhdGVLZXlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHsgc2hhcmVWRmlsZSB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgc2hhcmVWRmlsZTogW1xuICAgICAgICB7XG4gICAgICAgICAgdkZpbGVJZCxcbiAgICAgICAgICB1c2VySWQsXG4gICAgICAgICAgcmlnaHRzLFxuICAgICAgICAgIG5hbWVLZXksXG4gICAgICAgICAgaGlzdG9yeVxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2hhcmVWRmlsZSA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIHNoYXJlZFZGaWxlcygpOiBQcm9taXNlPFZGaWxlV2l0aEZvbGRlcltdPiB7XG4gICAgY29uc3QgeyBzaGFyZWRWRmlsZXMgfSA9IGF3YWl0IHRoaXMuY2xpZW50LnF1ZXJ5KHtcbiAgICAgIHNoYXJlZFZGaWxlczogZ3FsVkZpbGVXaXRoRm9sZGVyUXVlcnlcbiAgICB9KTtcblxuICAgIGNvbnN0IHZGaWxlcyA9IG5ldyBBcnJheTxWRmlsZVdpdGhGb2xkZXI+KCk7XG5cbiAgICBmb3IgKGNvbnN0IHZGaWxlIG9mIHNoYXJlZFZGaWxlcykge1xuICAgICAgdkZpbGVzLnB1c2goXG4gICAgICAgIChhd2FpdCBncWxWRmlsZVRvRXh0ZXJuYWwodkZpbGUsIHRoaXMuI2tleXMpKSBhcyBWRmlsZVdpdGhGb2xkZXJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZGaWxlcztcbiAgfVxuXG4gIGFzeW5jIHZGaWxlc1NoYXJlZFdpdGhNZSgpOiBQcm9taXNlPFZGaWxlV2l0aEZvbGRlcltdPiB7XG4gICAgY29uc3QgeyB2RmlsZXNTaGFyZWRXaXRoTWUgfSA9IGF3YWl0IHRoaXMuY2xpZW50LnF1ZXJ5KHtcbiAgICAgIHZGaWxlc1NoYXJlZFdpdGhNZTogZ3FsVkZpbGVXaXRoRm9sZGVyUXVlcnlcbiAgICB9KTtcblxuICAgIGNvbnN0IHZGaWxlcyA9IG5ldyBBcnJheTxWRmlsZVdpdGhGb2xkZXI+KCk7XG5cbiAgICBmb3IgKGNvbnN0IHZGaWxlIG9mIHZGaWxlc1NoYXJlZFdpdGhNZSkge1xuICAgICAgdkZpbGVzLnB1c2goXG4gICAgICAgIChhd2FpdCBncWxWRmlsZVRvRXh0ZXJuYWwodkZpbGUsIHRoaXMuI2tleXMpKSBhcyBWRmlsZVdpdGhGb2xkZXJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZGaWxlcztcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZWRWRmlsZXMoKTogUHJvbWlzZTxWRmlsZVtdPiB7XG4gICAgY29uc3QgeyBkZWxldGVkVkZpbGVzIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5xdWVyeSh7XG4gICAgICBkZWxldGVkVkZpbGVzOiBncWxWRmlsZVF1ZXJ5XG4gICAgfSk7XG5cbiAgICBjb25zdCB2RmlsZXMgPSBuZXcgQXJyYXk8VkZpbGU+KCk7XG5cbiAgICBmb3IgKGNvbnN0IHZGaWxlIG9mIGRlbGV0ZWRWRmlsZXMpIHtcbiAgICAgIHZGaWxlcy5wdXNoKChhd2FpdCBncWxWRmlsZVRvRXh0ZXJuYWwodkZpbGUsIHRoaXMuI2tleXMpKSBhcyBWRmlsZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZGaWxlcztcbiAgfVxuXG4gIGFzeW5jIHNoYXJlZEZvbGRlcnMoKTogUHJvbWlzZTxGb2xkZXJbXT4ge1xuICAgIGNvbnN0IHsgc2hhcmVkRm9sZGVycyB9ID0gYXdhaXQgdGhpcy5jbGllbnQucXVlcnkoe1xuICAgICAgc2hhcmVkRm9sZGVyczogZ3FsRm9sZGVyUXVlcnlcbiAgICB9KTtcblxuICAgIGNvbnN0IGZvbGRlcnMgPSBuZXcgQXJyYXk8Rm9sZGVyPigpO1xuXG4gICAgZm9yIChjb25zdCBmb2xkZXIgb2Ygc2hhcmVkRm9sZGVycykge1xuICAgICAgZm9sZGVycy5wdXNoKGF3YWl0IGdxbEZvbGRlclRvRXh0ZXJuYWwoZm9sZGVyLCB0aGlzLiNrZXlzKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvbGRlcnM7XG4gIH1cblxuICBhc3luYyBmb2xkZXJzU2hhcmVkV2l0aE1lKCk6IFByb21pc2U8Rm9sZGVyW10+IHtcbiAgICBjb25zdCB7IGZvbGRlcnNTaGFyZWRXaXRoTWUgfSA9IGF3YWl0IHRoaXMuY2xpZW50LnF1ZXJ5KHtcbiAgICAgIGZvbGRlcnNTaGFyZWRXaXRoTWU6IGdxbEZvbGRlclF1ZXJ5XG4gICAgfSk7XG5cbiAgICBjb25zdCBmb2xkZXJzID0gbmV3IEFycmF5PEZvbGRlcj4oKTtcblxuICAgIGZvciAoY29uc3QgZm9sZGVyIG9mIGZvbGRlcnNTaGFyZWRXaXRoTWUpIHtcbiAgICAgIGZvbGRlcnMucHVzaChhd2FpdCBncWxGb2xkZXJUb0V4dGVybmFsKGZvbGRlciwgdGhpcy4ja2V5cykpO1xuICAgIH1cblxuICAgIHJldHVybiBmb2xkZXJzO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlZEZvbGRlcnMoKTogUHJvbWlzZTxGb2xkZXJbXT4ge1xuICAgIGNvbnN0IHsgZGVsZXRlZEZvbGRlcnMgfSA9IGF3YWl0IHRoaXMuY2xpZW50LnF1ZXJ5KHtcbiAgICAgIGRlbGV0ZWRGb2xkZXJzOiBncWxGb2xkZXJRdWVyeVxuICAgIH0pO1xuXG4gICAgY29uc3QgZm9sZGVycyA9IG5ldyBBcnJheTxGb2xkZXI+KCk7XG5cbiAgICBmb3IgKGNvbnN0IGZvbGRlciBvZiBkZWxldGVkRm9sZGVycykge1xuICAgICAgZm9sZGVycy5wdXNoKGF3YWl0IGdxbEZvbGRlclRvRXh0ZXJuYWwoZm9sZGVyLCB0aGlzLiNrZXlzKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvbGRlcnM7XG4gIH1cblxuICBhc3luYyBzaGFyZUZvbGRlcih7XG4gICAgZm9sZGVySWQsXG4gICAgdXNlcklkLFxuICAgIHJpZ2h0c1xuICB9OiB7XG4gICAgZm9sZGVySWQ6IHN0cmluZztcbiAgICB1c2VySWQ6IHN0cmluZztcbiAgICByaWdodHM6IFJpZ2h0cztcbiAgfSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHVzZXIgPSBhd2FpdCB0aGlzLnVzZXIoeyB1c2VySWQsIHdpdGhQdWJsaWNLZXk6IHRydWUgfSk7XG5cbiAgICBpZiAoIXVzZXIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgeyBzaGFyZUZvbGRlciB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgc2hhcmVGb2xkZXI6IFtcbiAgICAgICAgeyBmb2xkZXJJZCwgdXNlcklkIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB2RmlsZXM6IHRydWUsXG4gICAgICAgICAgZm9sZGVyczogdHJ1ZVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBjb25zdCBzaGFyZUZvbGRlcnM6IFNoYXJlRm9sZGVyc0lucHV0ID0ge1xuICAgICAgdkZpbGVzOiBbXSxcbiAgICAgIGZvbGRlcnM6IFtdXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgaWQgb2Ygc2hhcmVGb2xkZXIuZm9sZGVycykge1xuICAgICAgY29uc3QgbmFtZUtleSA9IGF3YWl0IHRoaXMucGVyRm9sZGVyKGlkLCB1c2VyLnB1YmxpY0tleSk7XG4gICAgICBpZiAobmFtZUtleSkge1xuICAgICAgICBzaGFyZUZvbGRlcnMuZm9sZGVycy5wdXNoKG5hbWVLZXkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgaWQgb2Ygc2hhcmVGb2xkZXIudkZpbGVzKSB7XG4gICAgICBjb25zdCB2RmlsZUlucHV0ID0gYXdhaXQgdGhpcy5wZXJWRmlsZShpZCwgdXNlci5wdWJsaWNLZXkpO1xuICAgICAgaWYgKHZGaWxlSW5wdXQpIHtcbiAgICAgICAgc2hhcmVGb2xkZXJzLnZGaWxlcy5wdXNoKHZGaWxlSW5wdXQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHsgc2hhcmVGb2xkZXJGaW5pc2ggfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIHNoYXJlRm9sZGVyRmluaXNoOiBbXG4gICAgICAgIHtcbiAgICAgICAgICByaWdodHMsXG4gICAgICAgICAgdXNlcklkLFxuICAgICAgICAgIHNoYXJlRm9sZGVyc1xuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2hhcmVGb2xkZXJGaW5pc2ggPz8gZmFsc2U7XG4gIH1cblxuICBhc3luYyB1cGRhdGVGb2xkZXIoe1xuICAgIGZvbGRlcklkLFxuICAgIG5hbWUsXG4gICAgaXNGYXZvcml0ZSxcbiAgICBkZWxldGVkQXRcbiAgfToge1xuICAgIGZvbGRlcklkOiBzdHJpbmc7XG4gICAgbmFtZT86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgaXNGYXZvcml0ZT86IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIGRlbGV0ZWRBdD86IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB9KTogUHJvbWlzZTxGb2xkZXJGdWxsPiB7XG4gICAgbGV0IGZvbGRlciA9IGZvbGRlcnNDYWNoZS5nZXQoZm9sZGVySWQpO1xuICAgIGlmICghZm9sZGVyKSB7XG4gICAgICBhd2FpdCB0aGlzLmZvbGRlcih7IGlkOiBmb2xkZXJJZCB9KTtcbiAgICAgIGZvbGRlciA9IGZvbGRlcnNDYWNoZS5nZXQoZm9sZGVySWQpO1xuICAgICAgaWYgKCFmb2xkZXIpIHtcbiAgICAgICAgdGhyb3cgYENhbid0IGZpbmQgZm9sZGVyICR7Zm9sZGVySWR9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBuYW1lID0gbmFtZVxuICAgICAgPyBmb2xkZXIudXNlckFwcD8ubmFtZUtleVxuICAgICAgICA/IGF3YWl0IGVuY3J5cHROYW1lKG5hbWUsIGZvbGRlci51c2VyQXBwLm5hbWVLZXkpXG4gICAgICAgIDogbmFtZVxuICAgICAgOiBudWxsO1xuXG4gICAgY29uc3QgeyB1cGRhdGVGb2xkZXIgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIHVwZGF0ZUZvbGRlcjogW1xuICAgICAgICB7XG4gICAgICAgICAgZm9sZGVySWQsXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICBpc0Zhdm9yaXRlLFxuICAgICAgICAgIGRlbGV0ZWRBdFxuICAgICAgICB9LFxuICAgICAgICBncWxGb2xkZXJRdWVyeVdpdGhMaW5rc1xuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCF1cGRhdGVGb2xkZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbid0IHVwZGF0ZSBmb2xkZXJcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdxbEZvbGRlclRvRXh0ZXJuYWxGb2xkZXJGdWxsKHVwZGF0ZUZvbGRlciwgdGhpcy4ja2V5cyk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVNYWlsKFxuICAgIGRhdGE6IE5ld01haWwsXG4gICAgY3VzdG9tTWVzc2FnZT86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgbWFpbCA9IGF3YWl0IHRoaXMuY3JlYXRlRHJhZnRNYWlsKGRhdGEpO1xuICAgIGlmICghbWFpbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zZW5kRHJhZnRNYWlsKG1haWwubWFpbEludGVncml0eUlkLCBjdXN0b21NZXNzYWdlKTtcbiAgfVxuXG4gIGFzeW5jIHdhaXRpbmdSZWNlaXZlZE1haWxzKCk6IFByb21pc2U8V2FpdGluZ1JlY2VpdmVkTWFpbFtdPiB7XG4gICAgY29uc3QgeyB1c2VyIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5xdWVyeSh7XG4gICAgICB1c2VyOiBbXG4gICAgICAgIHt9LFxuICAgICAgICB7XG4gICAgICAgICAgd2FpdGluZ1JlY2VpdmVkTWFpbHM6IHtcbiAgICAgICAgICAgIGRhdGU6IHRydWUsXG4gICAgICAgICAgICBhdHRhY2htZW50c0NvdW50OiB0cnVlLFxuICAgICAgICAgICAgc2VuZGVyOiB7XG4gICAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICAgIGxhc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgICBlbWFpbDogdHJ1ZSxcbiAgICAgICAgICAgICAgcHVibGljS2V5OiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVjaXBpZW50czoge1xuICAgICAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgZmlyc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgICAgZW1haWw6IHRydWUsXG4gICAgICAgICAgICAgIHB1YmxpY0tleTogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRlbXBvcmFyeVJlY2lwaWVudHM6IHtcbiAgICAgICAgICAgICAgZW1haWw6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghdXNlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgZ2V0IHdhaXRpbmcgcmVjZWl2ZWQgbWFpbHNcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVzZXIud2FpdGluZ1JlY2VpdmVkTWFpbHMubWFwKG0gPT4gKHtcbiAgICAgIGlkOiBnZW5lcmF0ZSgpLFxuICAgICAgLi4ubSxcbiAgICAgIGRhdGU6IG5ldyBEYXRlKG0uZGF0ZSlcbiAgICB9KSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVEcmFmdE1haWwoXG4gICAgZHJhZnRJZDogc3RyaW5nLFxuICAgIHsgYm9keSwgc3ViamVjdCwgZmlsZXMsIHJlY2lwaWVudHNJZHMsIHJlcGx5VG8gfTogUGFydGlhbDxOZXdNYWlsPlxuICApOiBQcm9taXNlPERyYWZ0TWFpbCB8IG51bGw+IHtcbiAgICBjb25zdCBkcmFmdHMgPSBhd2FpdCB0aGlzLmRyYWZ0TWFpbHMoKTtcbiAgICBjb25zdCBkcmFmdCA9IGRyYWZ0cy5maW5kKGQgPT4gZC5tYWlsSW50ZWdyaXR5SWQgPT09IGRyYWZ0SWQpO1xuICAgIGlmICghZHJhZnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkcmFmdCAke2RyYWZ0SWR9YCk7XG4gICAgfVxuICAgIGxldCBoYXNoS2V5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgaGFzaDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgaWYgKGJvZHkgfHwgc3ViamVjdCkge1xuICAgICAgaGFzaEtleSA9IHNvZGl1bS5yYW5kb21ieXRlc19idWYoXG4gICAgICAgIHNvZGl1bS5jcnlwdG9fZ2VuZXJpY2hhc2hfS0VZQllURVMsXG4gICAgICAgIFwiaGV4XCJcbiAgICAgICk7XG4gICAgICBoYXNoID0gc29kaXVtLmNyeXB0b19nZW5lcmljaGFzaChcbiAgICAgICAgc29kaXVtLmNyeXB0b19nZW5lcmljaGFzaF9CWVRFUyxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoeyBib2R5LCBzdWJqZWN0IH0pLFxuICAgICAgICBoYXNoS2V5LFxuICAgICAgICBcImhleFwiXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBzZW5kZXJGaWxlcyA9IG5ldyBBcnJheTxNYWlsRmlsZUlucHV0PigpO1xuICAgIGlmIChmaWxlcykge1xuICAgICAgZm9yIChjb25zdCBmIG9mIGZpbGVzKSB7XG4gICAgICAgIGxldCBmaWxlID0gZmlsZXNDYWNoZS5nZXQoZi5pZCk7XG4gICAgICAgIGlmICghZmlsZSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuZmlsZSh7IGlkOiBmLmlkIH0pO1xuICAgICAgICAgIGZpbGUgPSBmaWxlc0NhY2hlLmdldChmLmlkKTtcbiAgICAgICAgICBpZiAoIWZpbGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSAke2YubmFtZX0gKCR7Zi5pZH0pIGRvZXMgbm90IGV4aXN0c2ApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWZpbGUudXNlcikge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHNlbmRlckZpbGVzLnB1c2goe1xuICAgICAgICAgIGlkOiBmaWxlLmlkLFxuICAgICAgICAgIGZpbGVLZXk6IHNvZGl1bS50b19oZXgoXG4gICAgICAgICAgICBlbmNyeXB0Q3J5cHRvQm94KFxuICAgICAgICAgICAgICBzb2RpdW0uZnJvbV9zdHJpbmcoZmlsZS51c2VyLmtleSksXG4gICAgICAgICAgICAgIHRoaXMuI2tleXMucHVibGljS2V5LFxuICAgICAgICAgICAgICB0aGlzLiNrZXlzLnByaXZhdGVLZXlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLFxuICAgICAgICAgIG5hbWU6IHNvZGl1bS50b19oZXgoXG4gICAgICAgICAgICBlbmNyeXB0Q3J5cHRvQm94KFxuICAgICAgICAgICAgICBzb2RpdW0uZnJvbV9zdHJpbmcoZi5uYW1lKSxcbiAgICAgICAgICAgICAgdGhpcy4ja2V5cy5wdWJsaWNLZXksXG4gICAgICAgICAgICAgIHRoaXMuI2tleXMucHJpdmF0ZUtleVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgeyB1cGRhdGVEcmFmdE1haWwgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIHVwZGF0ZURyYWZ0TWFpbDogW1xuICAgICAgICB7XG4gICAgICAgICAgZHJhZnRJZCxcbiAgICAgICAgICByZWNpcGllbnRzOiByZWNpcGllbnRzSWRzLFxuICAgICAgICAgIHJlcGx5VG8sXG4gICAgICAgICAgYm9keTogYm9keVxuICAgICAgICAgICAgPyBzb2RpdW0udG9faGV4KFxuICAgICAgICAgICAgICAgIGVuY3J5cHRDcnlwdG9Cb3goXG4gICAgICAgICAgICAgICAgICBzb2RpdW0uZnJvbV9zdHJpbmcoYm9keSksXG4gICAgICAgICAgICAgICAgICB0aGlzLiNrZXlzLnB1YmxpY0tleSxcbiAgICAgICAgICAgICAgICAgIHRoaXMuI2tleXMucHJpdmF0ZUtleVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgIHN1YmplY3Q6IHN1YmplY3RcbiAgICAgICAgICAgID8gc29kaXVtLnRvX2hleChcbiAgICAgICAgICAgICAgICBlbmNyeXB0Q3J5cHRvQm94KFxuICAgICAgICAgICAgICAgICAgc29kaXVtLmZyb21fc3RyaW5nKHN1YmplY3QpLFxuICAgICAgICAgICAgICAgICAgdGhpcy4ja2V5cy5wdWJsaWNLZXksXG4gICAgICAgICAgICAgICAgICB0aGlzLiNrZXlzLnByaXZhdGVLZXlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICBzZW5kZXJGaWxlcyxcbiAgICAgICAgICBoYXNoLFxuICAgICAgICAgIGhhc2hLZXlcbiAgICAgICAgfSxcbiAgICAgICAgZ3FsTWFpbFF1ZXJ5XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXVwZGF0ZURyYWZ0TWFpbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnZlcnRJbnRlcm5hbE1haWxUb0V4dGVybmFsKFxuICAgICAgdXBkYXRlRHJhZnRNYWlsLFxuICAgICAgdGhpcy4ja2V5c1xuICAgICkgYXMgRHJhZnRNYWlsO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlRHJhZnRNYWlsKGRyYWZ0SWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgZGVsZXRlRHJhZnRNYWlsIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICBkZWxldGVEcmFmdE1haWw6IFtcbiAgICAgICAge1xuICAgICAgICAgIGRyYWZ0SWRcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuICAgIHJldHVybiBkZWxldGVEcmFmdE1haWwgPz8gZmFsc2U7XG4gIH1cblxuICBhc3luYyBkZWxldGVWRmlsZVNoYXJpbmcoe1xuICAgIHZGaWxlSWQsXG4gICAgdXNlcklkXG4gIH06IHtcbiAgICB2RmlsZUlkOiBzdHJpbmc7XG4gICAgdXNlcklkOiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGRlbGV0ZVZGaWxlU2hhcmluZyB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgZGVsZXRlVkZpbGVTaGFyaW5nOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB2RmlsZUlkLFxuICAgICAgICAgIHVzZXJJZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG4gICAgcmV0dXJuIGRlbGV0ZVZGaWxlU2hhcmluZztcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUZvbGRlclNoYXJpbmcoe1xuICAgIGZvbGRlcklkLFxuICAgIHVzZXJJZFxuICB9OiB7XG4gICAgZm9sZGVySWQ6IHN0cmluZztcbiAgICB1c2VySWQ6IHN0cmluZztcbiAgfSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgZGVsZXRlRm9sZGVyU2hhcmluZyB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgZGVsZXRlRm9sZGVyU2hhcmluZzogW1xuICAgICAgICB7XG4gICAgICAgICAgZm9sZGVySWQsXG4gICAgICAgICAgdXNlcklkXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcbiAgICByZXR1cm4gZGVsZXRlRm9sZGVyU2hhcmluZztcbiAgfVxuXG4gIGFzeW5jIGR1cGxpY2F0ZVZGaWxlKHtcbiAgICBmaWxlSWQsXG4gICAgZm9sZGVySWQsXG4gICAgY3VzdG9tTmFtZVxuICB9OiB7XG4gICAgZmlsZUlkOiBzdHJpbmc7XG4gICAgZm9sZGVySWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIGN1c3RvbU5hbWU/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgbGV0IGZpbGUgPSB2RmlsZXNDYWNoZS5nZXQoZmlsZUlkKTtcbiAgICBpZiAoIWZpbGUpIHtcbiAgICAgIGF3YWl0IHRoaXMudkZpbGUoeyBpZDogZmlsZUlkIH0pO1xuICAgICAgZmlsZSA9IHZGaWxlc0NhY2hlLmdldChmaWxlSWQpO1xuICAgICAgaWYgKCFmaWxlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSAoJHtmaWxlSWR9KSBkb2VzIG5vdCBleGlzdHNgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY3VzdG9tTmFtZSA9IGN1c3RvbU5hbWVcbiAgICAgID8gYXdhaXQgZW5jcnlwdE5hbWUoY3VzdG9tTmFtZSwgZmlsZS51c2VyQXBwLm5hbWVLZXkpXG4gICAgICA6IG51bGw7XG5cbiAgICBjb25zdCB7IGR1cGxpY2F0ZVZGaWxlIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICBkdXBsaWNhdGVWRmlsZTogW1xuICAgICAgICB7XG4gICAgICAgICAgZmlsZUlkLFxuICAgICAgICAgIGZvbGRlcklkLFxuICAgICAgICAgIGN1c3RvbU5hbWVcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGR1cGxpY2F0ZVZGaWxlO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlRm9sZGVyQ2xvdWRUcmFzaCh7XG4gICAgaWRzXG4gIH06IHtcbiAgICBpZHM6IEFycmF5PHN0cmluZz47XG4gIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGRlbGV0ZUZvbGRlckNsb3VkVHJhc2ggfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIGRlbGV0ZUZvbGRlckNsb3VkVHJhc2g6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkc1xuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG4gICAgcmV0dXJuIGRlbGV0ZUZvbGRlckNsb3VkVHJhc2ggPz8gZmFsc2U7XG4gIH1cblxuICBhc3luYyBkZWxldGVWRmlsZUNsb3VkVHJhc2goe1xuICAgIGlkc1xuICB9OiB7XG4gICAgaWRzOiBBcnJheTxzdHJpbmc+O1xuICB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBkZWxldGVWRmlsZUNsb3VkVHJhc2ggfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIGRlbGV0ZVZGaWxlQ2xvdWRUcmFzaDogW1xuICAgICAgICB7XG4gICAgICAgICAgaWRzXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcbiAgICByZXR1cm4gZGVsZXRlVkZpbGVDbG91ZFRyYXNoID8/IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlTWFpbFRyYXNoKHsgaWRzIH06IHsgaWRzOiBBcnJheTxzdHJpbmc+IH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGRlbGV0ZU1haWxUcmFzaCB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgZGVsZXRlTWFpbFRyYXNoOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZHNcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuICAgIHJldHVybiBkZWxldGVNYWlsVHJhc2g7XG4gIH1cblxuICBhc3luYyBlbXB0eU1haWxUcmFzaCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGVtcHR5TWFpbFRyYXNoIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICBlbXB0eU1haWxUcmFzaDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVtcHR5TWFpbFRyYXNoID8/IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgZW1wdHlDbG91ZFRyYXNoKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgZW1wdHlDbG91ZFRyYXNoIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICBlbXB0eUNsb3VkVHJhc2g6IHRydWVcbiAgICB9KTtcblxuICAgIHJldHVybiBlbXB0eUNsb3VkVHJhc2ggPz8gZmFsc2U7XG4gIH1cblxuICBhc3luYyByZWNvdmVyRmlsZSh7IGZpbGVJZCB9OiB7IGZpbGVJZDogc3RyaW5nIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IHJlY292ZXJGaWxlIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICByZWNvdmVyRmlsZTogW3sgZmlsZUlkIH0sIHRydWVdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVjb3ZlckZpbGU7XG4gIH1cblxuICBhc3luYyByZWNvdmVyRm9sZGVyKHsgaWQgfTogeyBpZDogc3RyaW5nIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IHJlY292ZXJGb2xkZXIgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIHJlY292ZXJGb2xkZXI6IFt7IGlkIH0sIHRydWVdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVjb3ZlckZvbGRlciA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIHJlY292ZXJNYWlsKHsgbWFpbElkIH06IHsgbWFpbElkOiBzdHJpbmcgfSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgcmVjb3Zlck1haWwgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIHJlY292ZXJNYWlsOiBbeyBtYWlsSWQgfSwgdHJ1ZV1cbiAgICB9KTtcblxuICAgIHJldHVybiByZWNvdmVyTWFpbDtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUZpbGUoe1xuICAgIGZpbGVJZCxcbiAgICB2RmlsZUlkXG4gIH06IHtcbiAgICBmaWxlSWQ6IHN0cmluZztcbiAgICB2RmlsZUlkOiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGRlbGV0ZUZpbGUgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIGRlbGV0ZUZpbGU6IFtcbiAgICAgICAge1xuICAgICAgICAgIGZpbGVJZCxcbiAgICAgICAgICB2RmlsZUlkXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcbiAgICByZXR1cm4gZGVsZXRlRmlsZTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZVZGaWxlKHsgZmlsZUlkIH06IHsgZmlsZUlkOiBzdHJpbmcgfSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgZGVsZXRlVkZpbGUgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIGRlbGV0ZVZGaWxlOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmaWxlSWRcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuICAgIHJldHVybiBkZWxldGVWRmlsZTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZU1haWwoeyBtYWlsSWQgfTogeyBtYWlsSWQ6IHN0cmluZyB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBkZWxldGVNYWlsIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICBkZWxldGVNYWlsOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBtYWlsSWRcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuICAgIHJldHVybiBkZWxldGVNYWlsO1xuICB9XG5cbiAgYXN5bmMgc2F2ZUluQ2xvdWQoe1xuICAgIGZpbGVJZCxcbiAgICBuYW1lLFxuICAgIGZvbGRlcklkXG4gIH06IHtcbiAgICBmaWxlSWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZm9sZGVySWQ/OiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPFZGaWxlV2l0aEZvbGRlcj4ge1xuICAgIGlmIChmb2xkZXJJZCAmJiAhZm9sZGVyc0NhY2hlLmhhcyhmb2xkZXJJZCkpIHtcbiAgICAgIGF3YWl0IHRoaXMuZm9sZGVyKHsgaWQ6IGZvbGRlcklkIH0pO1xuICAgICAgaWYgKCFmb2xkZXJzQ2FjaGUuaGFzKGZvbGRlcklkKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBmb2xkZXIgJHtmb2xkZXJJZH0gZG9lcyBub3QgZXhpc3RzYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGtleSA9IFwiXCI7XG5cbiAgICBjb25zdCBmaWxlID0gZmlsZXNDYWNoZS5nZXQoZmlsZUlkKTtcblxuICAgIGlmICghZmlsZSkge1xuICAgICAgYXdhaXQgdGhpcy5maWxlKHsgaWQ6IGZpbGVJZCB9KTtcbiAgICAgIGNvbnN0IGZpbGUgPSBmaWxlc0NhY2hlLmdldChmaWxlSWQpID8/IG51bGw7XG4gICAgICBpZiAoIWZpbGUpIHtcbiAgICAgICAgY29uc3QgcmVjZWl2ZWRNYWlscyA9IGF3YWl0IHRoaXMucmVjZWl2ZWRNYWlscygpO1xuICAgICAgICBjb25zdCBtYWlsID0gcmVjZWl2ZWRNYWlscy5maW5kKG0gPT5cbiAgICAgICAgICBtLmZpbGVzLnNvbWUoZiA9PiBmLmlkID09PSBmaWxlSWQpXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCFtYWlsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW4ndCBmaW5kIG1haWwgd2l0aCB0aGUgZmlsZSAke2ZpbGVJZH1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVNYWlsID0gbWFpbC5maWxlcy5maW5kKGYgPT4gZi5pZCA9PT0gZmlsZUlkKTtcblxuICAgICAgICBpZiAoIWZpbGVNYWlsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW4ndCBmaW5kIG1haWwgd2l0aCB0aGUgZmlsZSAke2ZpbGVJZH1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVLZXkgPSBkZWNyeXB0Q3J5cHRvQm94KFxuICAgICAgICAgIHNvZGl1bS5mcm9tX2hleChmaWxlTWFpbC5rZXkpLFxuICAgICAgICAgIG1haWwuc2VuZGVyLnB1YmxpY0tleSxcbiAgICAgICAgICB0aGlzLiNrZXlzLnByaXZhdGVLZXlcbiAgICAgICAgKTtcblxuICAgICAgICBrZXkgPSBzb2RpdW0udG9faGV4KGZpbGVLZXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFmaWxlLnVzZXIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIGVycm9yIDFcIik7XG4gICAgICAgIH1cbiAgICAgICAga2V5ID0gZmlsZS51c2VyLmtleTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFmaWxlLnVzZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBlcnJvciAyXCIpO1xuICAgICAgfVxuICAgICAga2V5ID0gZmlsZS51c2VyLmtleTtcbiAgICB9XG5cbiAgICBpZiAoa2V5ID09PSBcIlwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIGVycm9yIDNcIik7XG4gICAgfVxuXG4gICAga2V5ID0gc29kaXVtLnRvX2hleChcbiAgICAgIGVuY3J5cHRDcnlwdG9Cb3goXG4gICAgICAgIHNvZGl1bS5mcm9tX2hleChrZXkpLFxuICAgICAgICB0aGlzLiNrZXlzLnB1YmxpY0tleSxcbiAgICAgICAgdGhpcy4ja2V5cy5wcml2YXRlS2V5XG4gICAgICApXG4gICAgKTtcblxuICAgIGNvbnN0IG5hbWVLZXkgPSBzZWNyZXRzdHJlYW1LZXlnZW4oKTtcbiAgICBjb25zdCBlbmNyeXB0ZWROYW1lID0gYXdhaXQgZW5jcnlwdE5hbWUobmFtZSwgc29kaXVtLnRvX2hleChuYW1lS2V5KSk7XG4gICAgY29uc3QgZW5jcnlwdGVkTmFtZUtleSA9IHNvZGl1bS50b19oZXgoXG4gICAgICBlbmNyeXB0Q3J5cHRvQm94KG5hbWVLZXksIHRoaXMuI2tleXMucHVibGljS2V5LCB0aGlzLiNrZXlzLnByaXZhdGVLZXkpXG4gICAgKTtcblxuICAgIGNvbnN0IHsgc2F2ZUluQ2xvdWQgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIHNhdmVJbkNsb3VkOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmaWxlSWQsXG4gICAgICAgICAga2V5LFxuICAgICAgICAgIGZvbGRlcklkLFxuICAgICAgICAgIGZpbGVuYW1lOiBlbmNyeXB0ZWROYW1lLFxuICAgICAgICAgIG5hbWVLZXk6IGVuY3J5cHRlZE5hbWVLZXlcbiAgICAgICAgfSxcbiAgICAgICAgZ3FsVkZpbGVXaXRoRm9sZGVyUXVlcnlcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGNvbnN0IHZGaWxlID0gKGF3YWl0IGdxbFZGaWxlVG9FeHRlcm5hbChcbiAgICAgIHNhdmVJbkNsb3VkLFxuICAgICAgdGhpcy4ja2V5c1xuICAgICkpIGFzIFZGaWxlV2l0aEZvbGRlcjtcblxuICAgIGNvbnN0IG1lID0gdkZpbGUuZm9sZGVyLnVzZXJzLmZpbmQoXG4gICAgICAoW3VdKSA9PiB1LnB1YmxpY0tleSA9PT0gdGhpcy4ja2V5cy5wdWJsaWNLZXlcbiAgICApO1xuXG4gICAgaWYgKG1lICYmIFtcImFkbWluXCIsIFwid3JpdGVcIl0uaW5jbHVkZXMobWVbMV0pKSB7XG4gICAgICBjb25zdCBvdGhlcnMgPSB2RmlsZS5mb2xkZXIudXNlcnMuZmlsdGVyKFxuICAgICAgICAoW3VdKSA9PiB1LnB1YmxpY0tleSAhPT0gdGhpcy4ja2V5cy5wdWJsaWNLZXlcbiAgICAgICk7XG5cbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBvdGhlcnMubWFwKChbdSwgcmlnaHRzXSkgPT5cbiAgICAgICAgICB0aGlzLnNoYXJlVkZpbGUoe1xuICAgICAgICAgICAgdkZpbGVJZDogdkZpbGUuaWQsXG4gICAgICAgICAgICByaWdodHMsXG4gICAgICAgICAgICB1c2VySWQ6IHUuaWRcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB2RmlsZTtcbiAgfVxuXG4gIGFzeW5jIHNlbmREcmFmdE1haWwoXG4gICAgZHJhZnRJZDogc3RyaW5nLFxuICAgIGN1c3RvbU1lc3NhZ2U/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGRyYWZ0cyA9IGF3YWl0IHRoaXMuZHJhZnRNYWlscygpO1xuXG4gICAgY29uc3QgZHJhZnQgPSBkcmFmdHMuZmluZChkID0+IGQubWFpbEludGVncml0eUlkID09PSBkcmFmdElkKTtcbiAgICBpZiAoIWRyYWZ0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHJlY2lwaWVudHMgPSBuZXcgQXJyYXk8TWFpbFJlY2lwaWVudElucHV0PigpO1xuXG4gICAgY29uc3QgdGVtcG9yYXJ5UmVjaXBpZW50cyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG5cbiAgICBmb3IgKGNvbnN0IHsgZW1haWwgfSBvZiBkcmFmdC50ZW1wb3JhcnlSZWNpcGllbnRzKSB7XG4gICAgICBpZiAoIWVtYWlsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgaW5wdXQgPSBhd2FpdCB0aGlzLl9lYWNoVXNlcihcbiAgICAgICAgZHJhZnQuZmlsZXMsXG4gICAgICAgIGRyYWZ0LnN1YmplY3QsXG4gICAgICAgIGRyYWZ0LmJvZHksXG4gICAgICAgIGVtYWlsXG4gICAgICApO1xuXG4gICAgICBpZiAoIWlucHV0KSB7XG4gICAgICAgIHRlbXBvcmFyeVJlY2lwaWVudHMucHVzaChlbWFpbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWNpcGllbnRzLnB1c2goaW5wdXQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgeyBpZCB9IG9mIGRyYWZ0LnJlY2lwaWVudHMpIHtcbiAgICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5fZWFjaFVzZXIoXG4gICAgICAgIGRyYWZ0LmZpbGVzLFxuICAgICAgICBkcmFmdC5zdWJqZWN0LFxuICAgICAgICBkcmFmdC5ib2R5LFxuICAgICAgICBpZFxuICAgICAgKTtcblxuICAgICAgaWYgKCFpbnB1dCkge1xuICAgICAgICB0ZW1wb3JhcnlSZWNpcGllbnRzLnB1c2goaWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVjaXBpZW50cy5wdXNoKGlucHV0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB7IHNlbmREcmFmdE1haWwgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIHNlbmREcmFmdE1haWw6IFtcbiAgICAgICAge1xuICAgICAgICAgIHRlbXBvcmFyeVJlY2lwaWVudHMsXG4gICAgICAgICAgcmVjaXBpZW50cyxcbiAgICAgICAgICBkcmFmdE1haWxJZDogZHJhZnQubWFpbEludGVncml0eUlkLFxuICAgICAgICAgIGN1c3RvbU1lc3NhZ2VcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNlbmREcmFmdE1haWwgPz8gZmFsc2U7XG4gIH1cblxuICBhc3luYyBzZW5kV2FpdGluZ0VtYWlscygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAvLyBUT0RPIG9wdGkgdGhpc1xuICAgIGNvbnN0IG1haWxzID0gYXdhaXQgdGhpcy5zZW50TWFpbHMoKTtcbiAgICBjb25zdCBmaWx0ZXJlZCA9IG1haWxzLmZpbHRlcihtID0+IG0udGVtcG9yYXJ5UmVjaXBpZW50cy5sZW5ndGggPiAwKTtcblxuICAgIGZvciAoY29uc3QgbWFpbCBvZiBmaWx0ZXJlZCkge1xuICAgICAgZm9yIChjb25zdCB7IGVtYWlsIH0gb2YgbWFpbC50ZW1wb3JhcnlSZWNpcGllbnRzKSB7XG4gICAgICAgIGlmICghZW1haWwpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMuX2VhY2hVc2VyKFxuICAgICAgICAgIG1haWwuZmlsZXMsXG4gICAgICAgICAgbWFpbC5zdWJqZWN0LFxuICAgICAgICAgIG1haWwuYm9keSxcbiAgICAgICAgICBlbWFpbFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChpbnB1dCkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgICAgICAgIHNlbmRPbmVNYWlsOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBtYWlsSW50ZWdyaXR5SWQ6IG1haWwubWFpbEludGVncml0eUlkLFxuICAgICAgICAgICAgICAgIHJlY2lwaWVudDogaW5wdXRcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZURyYWZ0TWFpbCh7XG4gICAgYm9keSxcbiAgICBzdWJqZWN0LFxuICAgIGZpbGVzLFxuICAgIHJlY2lwaWVudHNJZHMsXG4gICAgcmVwbHlUb1xuICB9OiBOZXdNYWlsKTogUHJvbWlzZTxEcmFmdE1haWwgfCBudWxsPiB7XG4gICAgY29uc3QgaGFzaEtleSA9IHNvZGl1bS5yYW5kb21ieXRlc19idWYoXG4gICAgICBzb2RpdW0uY3J5cHRvX2dlbmVyaWNoYXNoX0tFWUJZVEVTLFxuICAgICAgXCJoZXhcIlxuICAgICk7XG4gICAgY29uc3QgaGFzaCA9IHNvZGl1bS5jcnlwdG9fZ2VuZXJpY2hhc2goXG4gICAgICBzb2RpdW0uY3J5cHRvX2dlbmVyaWNoYXNoX0JZVEVTLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoeyBib2R5LCBzdWJqZWN0IH0pLFxuICAgICAgaGFzaEtleSxcbiAgICAgIFwiaGV4XCJcbiAgICApO1xuICAgIGNvbnN0IHNlbmRlckZpbGVzID0gbmV3IEFycmF5PE1haWxGaWxlSW5wdXQ+KCk7XG4gICAgZm9yIChjb25zdCBmIG9mIGZpbGVzKSB7XG4gICAgICBsZXQgZmlsZSA9IGZpbGVzQ2FjaGUuZ2V0KGYuaWQpO1xuICAgICAgaWYgKCFmaWxlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZmlsZSh7IGlkOiBmLmlkIH0pO1xuICAgICAgICBmaWxlID0gZmlsZXNDYWNoZS5nZXQoZi5pZCk7XG4gICAgICAgIGlmICghZmlsZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSAke2YubmFtZX0gKCR7Zi5pZH0pIGRvZXMgbm90IGV4aXN0c2ApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIWZpbGUudXNlcikge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHNlbmRlckZpbGVzLnB1c2goe1xuICAgICAgICBpZDogZmlsZS5pZCxcbiAgICAgICAgZmlsZUtleTogc29kaXVtLnRvX2hleChcbiAgICAgICAgICBlbmNyeXB0Q3J5cHRvQm94KFxuICAgICAgICAgICAgc29kaXVtLmZyb21fc3RyaW5nKGZpbGUudXNlci5rZXkpLFxuICAgICAgICAgICAgdGhpcy4ja2V5cy5wdWJsaWNLZXksXG4gICAgICAgICAgICB0aGlzLiNrZXlzLnByaXZhdGVLZXlcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIG5hbWU6IHNvZGl1bS50b19oZXgoXG4gICAgICAgICAgZW5jcnlwdENyeXB0b0JveChcbiAgICAgICAgICAgIHNvZGl1bS5mcm9tX3N0cmluZyhmLm5hbWUpLFxuICAgICAgICAgICAgdGhpcy4ja2V5cy5wdWJsaWNLZXksXG4gICAgICAgICAgICB0aGlzLiNrZXlzLnByaXZhdGVLZXlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHsgY3JlYXRlRHJhZnRNYWlsIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICBjcmVhdGVEcmFmdE1haWw6IFtcbiAgICAgICAge1xuICAgICAgICAgIHJlY2lwaWVudHM6IHJlY2lwaWVudHNJZHMsXG4gICAgICAgICAgcmVwbHlUbyxcbiAgICAgICAgICBib2R5OiBzb2RpdW0udG9faGV4KFxuICAgICAgICAgICAgZW5jcnlwdENyeXB0b0JveChcbiAgICAgICAgICAgICAgc29kaXVtLmZyb21fc3RyaW5nKGJvZHkpLFxuICAgICAgICAgICAgICB0aGlzLiNrZXlzLnB1YmxpY0tleSxcbiAgICAgICAgICAgICAgdGhpcy4ja2V5cy5wcml2YXRlS2V5XG4gICAgICAgICAgICApXG4gICAgICAgICAgKSxcbiAgICAgICAgICBzdWJqZWN0OiBzb2RpdW0udG9faGV4KFxuICAgICAgICAgICAgZW5jcnlwdENyeXB0b0JveChcbiAgICAgICAgICAgICAgc29kaXVtLmZyb21fc3RyaW5nKHN1YmplY3QpLFxuICAgICAgICAgICAgICB0aGlzLiNrZXlzLnB1YmxpY0tleSxcbiAgICAgICAgICAgICAgdGhpcy4ja2V5cy5wcml2YXRlS2V5XG4gICAgICAgICAgICApXG4gICAgICAgICAgKSxcbiAgICAgICAgICBzZW5kZXJGaWxlcyxcbiAgICAgICAgICBoYXNoLFxuICAgICAgICAgIGhhc2hLZXlcbiAgICAgICAgfSxcbiAgICAgICAgZ3FsTWFpbFF1ZXJ5XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIWNyZWF0ZURyYWZ0TWFpbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnZlcnRJbnRlcm5hbE1haWxUb0V4dGVybmFsKFxuICAgICAgY3JlYXRlRHJhZnRNYWlsLFxuICAgICAgdGhpcy4ja2V5c1xuICAgICkgYXMgRHJhZnRNYWlsO1xuICB9XG5cbiAgYXN5bmMgZmlsZUNvbnRlbnQoe1xuICAgIGZpbGVJZCxcbiAgICBvbkRvd25sb2FkUHJvZ3Jlc3MsXG4gICAgcHJvZ3Jlc3NEZWNyeXB0LFxuICAgIGFib3J0XG4gIH06IHtcbiAgICBmaWxlSWQ6IHN0cmluZztcbiAgICBvbkRvd25sb2FkUHJvZ3Jlc3M/OiAocHJvZ3Jlc3M6IERvd25sb2FkUHJvZ3Jlc3MpID0+IHZvaWQ7XG4gICAgcHJvZ3Jlc3NEZWNyeXB0PzogUHJvZ3Jlc3NDYWxsYmFjaztcbiAgICBhYm9ydD86IEFib3J0Q29udHJvbGxlcjtcbiAgfSk6IFByb21pc2U8VWludDhBcnJheT4ge1xuICAgIGNvbnN0IHsgZmlsZUNvbnRlbnQgfSA9IGF3YWl0IHRoaXMuY2xpZW50LnF1ZXJ5KHtcbiAgICAgIGZpbGVDb250ZW50OiBbXG4gICAgICAgIHsgZmlsZUlkIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgIFwiLi4ub24gRmlsZUNvbnRlbnRDbG91ZFwiOiB7XG4gICAgICAgICAgICBwYXJ0czoge1xuICAgICAgICAgICAgICBjb250ZW50VXJsOiB0cnVlLFxuICAgICAgICAgICAgICBvcmRlcjogdHJ1ZSxcbiAgICAgICAgICAgICAgbWQ1OiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAga2V5OiB0cnVlLFxuICAgICAgICAgICAgcHVibGljS2V5OiB0cnVlLFxuICAgICAgICAgICAgdG90YWxTaXplOiB0cnVlLFxuICAgICAgICAgICAgbWQ1OiB0cnVlLFxuICAgICAgICAgICAgbWQ1RW5jcnlwdGVkOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIEZpbGVDb250ZW50UmVjZWl2ZWRNYWlsXCI6IHtcbiAgICAgICAgICAgIHBhcnRzOiB7XG4gICAgICAgICAgICAgIGNvbnRlbnRVcmw6IHRydWUsXG4gICAgICAgICAgICAgIG9yZGVyOiB0cnVlLFxuICAgICAgICAgICAgICBtZDU6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBrZXk6IHRydWUsXG4gICAgICAgICAgICBzZW5kZXJQdWJsaWNLZXk6IHRydWUsXG4gICAgICAgICAgICB0b3RhbFNpemU6IHRydWUsXG4gICAgICAgICAgICBtZDU6IHRydWUsXG4gICAgICAgICAgICBtZDVFbmNyeXB0ZWQ6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRmlsZUNvbnRlbnRTZW50TWFpbFwiOiB7XG4gICAgICAgICAgICBwYXJ0czoge1xuICAgICAgICAgICAgICBjb250ZW50VXJsOiB0cnVlLFxuICAgICAgICAgICAgICBvcmRlcjogdHJ1ZSxcbiAgICAgICAgICAgICAgbWQ1OiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAga2V5OiB0cnVlLFxuICAgICAgICAgICAgdG90YWxTaXplOiB0cnVlLFxuICAgICAgICAgICAgbWQ1OiB0cnVlLFxuICAgICAgICAgICAgbWQ1RW5jcnlwdGVkOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIWZpbGVDb250ZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZpbGUgJHtmaWxlSWR9IGRvZXMgbm90IGV4aXN0c2ApO1xuICAgIH1cblxuICAgIGNvbnN0IHByb2dyZXNzUGFydHM6IFJlY29yZDxudW1iZXIsIERvd25sb2FkUHJvZ3Jlc3M+ID0ge307XG4gICAgY29uc3Qgb25Qcm9ncmVzcyA9IChcbiAgICAgIHBhcnQ6IG51bWJlcixcbiAgICAgIHByb2dyZXNzRXZlbnQ6IERvd25sb2FkUHJvZ3Jlc3NcbiAgICApOiB2b2lkID0+IHtcbiAgICAgIHByb2dyZXNzUGFydHNbcGFydF0gPSBwcm9ncmVzc0V2ZW50O1xuICAgICAgY29uc3QgdHJhbnNmZXJyZWRCeXRlcyA9IE9iamVjdC52YWx1ZXMocHJvZ3Jlc3NQYXJ0cykucmVkdWNlKFxuICAgICAgICAocHJ2LCBjdXIpID0+IHBydiArIGN1ci50cmFuc2ZlcnJlZEJ5dGVzLFxuICAgICAgICAwXG4gICAgICApO1xuICAgICAgY29uc3QgdG90YWxCeXRlcyA9IE51bWJlcihmaWxlQ29udGVudC50b3RhbFNpemUpO1xuICAgICAgb25Eb3dubG9hZFByb2dyZXNzPy4oe1xuICAgICAgICBwZXJjZW50OiB0cmFuc2ZlcnJlZEJ5dGVzIC8gdG90YWxCeXRlcyxcbiAgICAgICAgdG90YWxCeXRlcyxcbiAgICAgICAgdHJhbnNmZXJyZWRCeXRlc1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHBhcnRzID0gbmV3IEFycmF5PHsgZGF0YTogVWludDhBcnJheTsgb3JkZXI6IG51bWJlciB9PigpO1xuXG4gICAgY29uc3QgYnlQYXJ0ID0gYXN5bmMgKHBhcnQ6IEZpbGVDb250ZW50UGFydCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgY29uc3QgYnVmID0gbmV3IFVpbnQ4QXJyYXkoXG4gICAgICAgIGF3YWl0IGt5XG4gICAgICAgICAgLmdldChwYXJ0LmNvbnRlbnRVcmwsIHtcbiAgICAgICAgICAgIG9uRG93bmxvYWRQcm9ncmVzczogcHIgPT4gb25Qcm9ncmVzcyhwYXJ0Lm9yZGVyLCBwciksXG4gICAgICAgICAgICBzaWduYWw6IGFib3J0Py5zaWduYWxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5hcnJheUJ1ZmZlcigpXG4gICAgICApO1xuICAgICAgY29uc3QgbWQ1UGFydCA9IGF3YWl0IG1kNShidWYpO1xuICAgICAgaWYgKG1kNVBhcnQgIT09IHBhcnQubWQ1KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBtZDUgZm9yIHBhcnQgJHtwYXJ0Lm9yZGVyfSBvZiBmaWxlICR7ZmlsZUlkfWApO1xuICAgICAgfVxuICAgICAgcGFydHMucHVzaCh7XG4gICAgICAgIGRhdGE6IGJ1ZixcbiAgICAgICAgb3JkZXI6IHBhcnQub3JkZXJcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBhd2FpdCBwcm9taXNlQWxsTGltaXQoXG4gICAgICAzLFxuICAgICAgZmlsZUNvbnRlbnQucGFydHMubWFwKHAgPT4gKCk6IFByb21pc2U8dm9pZD4gPT4gYnlQYXJ0KHApKVxuICAgICk7XG5cbiAgICBjb25zdCBlbmNyeXB0ZWRDb250ZW50ID0gY29uY2F0ZW5hdGUoXG4gICAgICAuLi5wYXJ0cy5zb3J0KChhLCBiKSA9PiBhLm9yZGVyIC0gYi5vcmRlcikubWFwKHAgPT4gcC5kYXRhKVxuICAgICk7XG5cbiAgICAvLyBjb25zdCBtZDVFbmNyeXB0ZWQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShtZDUob2YoZW5jcnlwdGVkQ29udGVudCkpKTtcbiAgICBjb25zdCBtZDVFbmNyeXB0ZWQgPSBhd2FpdCBtZDUoZW5jcnlwdGVkQ29udGVudCk7XG5cbiAgICBpZiAobWQ1RW5jcnlwdGVkICE9PSBmaWxlQ29udGVudC5tZDVFbmNyeXB0ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRW5jcnlwdGVkIGNvbnRlbnQgZG9lcyBub3QgbWF0Y2hgKTtcbiAgICB9XG5cbiAgICBjb25zdCBrZXkgPSBkZWNyeXB0Q3J5cHRvQm94KFxuICAgICAgc29kaXVtLmZyb21faGV4KGZpbGVDb250ZW50LmtleSksXG4gICAgICBmaWxlQ29udGVudC5fX3R5cGVuYW1lID09PSBcIkZpbGVDb250ZW50UmVjZWl2ZWRNYWlsXCJcbiAgICAgICAgPyBmaWxlQ29udGVudC5zZW5kZXJQdWJsaWNLZXlcbiAgICAgICAgOiBmaWxlQ29udGVudC5fX3R5cGVuYW1lID09PSBcIkZpbGVDb250ZW50Q2xvdWRcIlxuICAgICAgICA/IGZpbGVDb250ZW50LnB1YmxpY0tleVxuICAgICAgICA6IHRoaXMuI2tleXMucHVibGljS2V5LFxuICAgICAgdGhpcy4ja2V5cy5wcml2YXRlS2V5XG4gICAgKTtcblxuICAgIC8vIFRPRE8gYWRkIGFib3J0XG4gICAgY29uc3Qgc3JjID0gYXdhaXQgZGVjcnlwdChrZXksIGVuY3J5cHRlZENvbnRlbnQsIHByb2dyZXNzRGVjcnlwdCk7XG5cbiAgICAvLyBjb25zdCBtZDVDb250ZW50ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20obWQ1KG9mKHNyYykpKTtcbiAgICBjb25zdCBtZDVDb250ZW50ID0gYXdhaXQgbWQ1KHNyYyk7XG5cbiAgICBpZiAobWQ1Q29udGVudCAhPT0gZmlsZUNvbnRlbnQubWQ1KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbnRlbnQgZG9lcyBub3QgbWF0Y2hgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5jb21wcmVzcyhzcmMpO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlRmlsZSh7XG4gICAgZmlsZUlkLFxuICAgIGZpbGVuYW1lLFxuICAgIGlzRmF2b3JpdGUsXG4gICAgZGVsZXRlZEF0XG4gIH06IHtcbiAgICBmaWxlSWQ6IHN0cmluZztcbiAgICBmaWxlbmFtZT86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgaXNGYXZvcml0ZT86IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIGRlbGV0ZWRBdD86IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB9KTogUHJvbWlzZTxWRmlsZT4ge1xuICAgIGNvbnN0IGZpbGUgPSB2RmlsZXNDYWNoZS5nZXQoZmlsZUlkKTtcbiAgICBpZiAoIWZpbGUpIHtcbiAgICAgIHRocm93IGBDYW4ndCBmaW5kIGZpbGUgJHtmaWxlSWR9YDtcbiAgICB9XG5cbiAgICBjb25zdCBlbmNyeXB0ZWROYW1lID0gZmlsZW5hbWVcbiAgICAgID8gYXdhaXQgZW5jcnlwdE5hbWUoZmlsZW5hbWUsIGZpbGUudXNlckFwcC5uYW1lS2V5KVxuICAgICAgOiBudWxsO1xuXG4gICAgY29uc3QgeyB1cGRhdGVGaWxlIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICB1cGRhdGVGaWxlOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmaWxlSWQsXG4gICAgICAgICAgZmlsZW5hbWU6IGVuY3J5cHRlZE5hbWUsXG4gICAgICAgICAgaXNGYXZvcml0ZSxcbiAgICAgICAgICBkZWxldGVkQXRcbiAgICAgICAgfSxcbiAgICAgICAgZ3FsVkZpbGVRdWVyeVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCF1cGRhdGVGaWxlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW4ndCB1cGRhdGUgZmlsZVwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ3FsVkZpbGVUb0V4dGVybmFsKHVwZGF0ZUZpbGUsIHRoaXMuI2tleXMpO1xuICB9XG5cbiAgYXN5bmMgcmVhZE1haWwoeyBtYWlsSWQgfTogeyBtYWlsSWQ6IHN0cmluZyB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyByZWFkTWFpbCB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgcmVhZE1haWw6IFt7IG1haWxJZCB9LCB0cnVlXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlYWRNYWlsID8/IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgdW5yZWFkTWFpbCh7IG1haWxJZCB9OiB7IG1haWxJZDogc3RyaW5nIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IHVucmVhZE1haWwgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIHVucmVhZE1haWw6IFt7IG1haWxJZCB9LCB0cnVlXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHVucmVhZE1haWwgPz8gZmFsc2U7XG4gIH1cblxuICBhc3luYyBhcHBTZXR0aW5ncygpOiBQcm9taXNlPFVzZXJBcHBTZXR0aW5ncyB8IG51bGw+IHtcbiAgICBjb25zdCB7IHVzZXIgfSA9IGF3YWl0IHRoaXMuY2xpZW50LnF1ZXJ5KHtcbiAgICAgIHVzZXI6IFtcbiAgICAgICAge30sXG4gICAgICAgIHtcbiAgICAgICAgICBhcHBTZXR0aW5nczoge1xuICAgICAgICAgICAgYXV0b0Rpc2Nvbm5lY3REZWxheTogdHJ1ZSxcbiAgICAgICAgICAgIGNsb3VkRmlsZURheXNGb3JEZWxldGU6IHRydWUsXG4gICAgICAgICAgICBjbG91ZEZvbGRlckRheXNGb3JEZWxldGU6IHRydWUsXG4gICAgICAgICAgICBoaXN0b3J5RmlsZURheXNGb3JEZWxldGU6IHRydWUsXG4gICAgICAgICAgICBoaXN0b3J5TWF4RmlsZUNvdW50OiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXVzZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB1c2VyLmFwcFNldHRpbmdzID8/IG51bGw7XG4gIH1cblxuICBhc3luYyB1cGRhdGVBcHBTZXR0aW5ncyhcbiAgICBzZXR0aW5nczogUGFydGlhbDxVc2VyQXBwU2V0dGluZ3M+XG4gICk6IFByb21pc2U8VXNlckFwcFNldHRpbmdzPiB7XG4gICAgY29uc3QgeyB1cGRhdGVBcHBTZXR0aW5ncyB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgdXBkYXRlQXBwU2V0dGluZ3M6IFtcbiAgICAgICAgc2V0dGluZ3MsXG4gICAgICAgIHtcbiAgICAgICAgICBhdXRvRGlzY29ubmVjdERlbGF5OiB0cnVlLFxuICAgICAgICAgIGNsb3VkRmlsZURheXNGb3JEZWxldGU6IHRydWUsXG4gICAgICAgICAgY2xvdWRGb2xkZXJEYXlzRm9yRGVsZXRlOiB0cnVlLFxuICAgICAgICAgIGhpc3RvcnlGaWxlRGF5c0ZvckRlbGV0ZTogdHJ1ZSxcbiAgICAgICAgICBoaXN0b3J5TWF4RmlsZUNvdW50OiB0cnVlXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiB1cGRhdGVBcHBTZXR0aW5ncztcbiAgfVxuXG4gIGFzeW5jIHJlY2VpdmVkTWFpbHMoKTogUHJvbWlzZTxSZWNlaXZlZE1haWxbXT4ge1xuICAgIGNvbnN0IHsgdXNlciB9ID0gYXdhaXQgdGhpcy5jbGllbnQucXVlcnkoe1xuICAgICAgdXNlcjogW1xuICAgICAgICB7fSxcbiAgICAgICAge1xuICAgICAgICAgIHJlY2VpdmVkTWFpbHM6IGdxbE1haWxRdWVyeVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBjb25zdCBtYWlscyA9IHVzZXI/LnJlY2VpdmVkTWFpbHMgPz8gW107XG5cbiAgICAvLyBUT0RPIGdldCBhY3R1YWwgbWFpbHMgb24gdGhpcyBhcHAgb25seVxuXG4gICAgY29uc3QgcmVjZWl2ZWRNYWlscyA9IG5ldyBBcnJheTxSZWNlaXZlZE1haWw+KCk7XG5cbiAgICBmb3IgKGNvbnN0IG0gb2YgbWFpbHMpIHtcbiAgICAgIGNvbnN0IG1haWwgPSBjb252ZXJ0SW50ZXJuYWxNYWlsVG9FeHRlcm5hbChtLCB0aGlzLiNrZXlzKTtcbiAgICAgIGlmIChtYWlsKSB7XG4gICAgICAgIHJlY2VpdmVkTWFpbHMucHVzaChtYWlsIGFzIFJlY2VpdmVkTWFpbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlY2VpdmVkTWFpbHM7XG4gIH1cblxuICBhc3luYyBzZW50TWFpbHMoKTogUHJvbWlzZTxTZW50TWFpbFtdPiB7XG4gICAgY29uc3QgeyB1c2VyIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5xdWVyeSh7XG4gICAgICB1c2VyOiBbXG4gICAgICAgIHt9LFxuICAgICAgICB7XG4gICAgICAgICAgc2VudE1haWxzOiBncWxNYWlsUXVlcnlcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgY29uc3QgbWFpbHMgPSB1c2VyPy5zZW50TWFpbHMgPz8gW107XG5cbiAgICAvLyBUT0RPIGdldCBhY3R1YWwgbWFpbHMgb24gdGhpcyBhcHAgb25seVxuXG4gICAgY29uc3Qgc2VudE1haWxzID0gbmV3IEFycmF5PFNlbnRNYWlsPigpO1xuXG4gICAgZm9yIChjb25zdCBtIG9mIG1haWxzKSB7XG4gICAgICBjb25zdCBtYWlsID0gY29udmVydEludGVybmFsTWFpbFRvRXh0ZXJuYWwobSwgdGhpcy4ja2V5cyk7XG4gICAgICBpZiAobWFpbCkge1xuICAgICAgICBzZW50TWFpbHMucHVzaChtYWlsIGFzIFNlbnRNYWlsKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc2VudE1haWxzO1xuICB9XG5cbiAgYXN5bmMgZHJhZnRNYWlscygpOiBQcm9taXNlPERyYWZ0TWFpbFtdPiB7XG4gICAgY29uc3QgeyB1c2VyIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5xdWVyeSh7XG4gICAgICB1c2VyOiBbXG4gICAgICAgIHt9LFxuICAgICAgICB7XG4gICAgICAgICAgZHJhZnRNYWlsczogZ3FsTWFpbFF1ZXJ5XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGNvbnN0IG1haWxzID0gdXNlcj8uZHJhZnRNYWlscyA/PyBbXTtcblxuICAgIC8vIFRPRE8gZ2V0IGFjdHVhbCBtYWlscyBvbiB0aGlzIGFwcCBvbmx5XG5cbiAgICBjb25zdCBkcmFmdE1haWxzID0gbmV3IEFycmF5PERyYWZ0TWFpbD4oKTtcblxuICAgIGZvciAoY29uc3QgbSBvZiBtYWlscykge1xuICAgICAgY29uc3QgZHJhZnQgPSBjb252ZXJ0SW50ZXJuYWxNYWlsVG9FeHRlcm5hbChtLCB0aGlzLiNrZXlzKSBhcyBEcmFmdE1haWw7XG4gICAgICBpZiAoZHJhZnQpIHtcbiAgICAgICAgZHJhZnRNYWlscy5wdXNoKGRyYWZ0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZHJhZnRNYWlscztcbiAgfVxuXG4gIHByaXZhdGUgcGVyRm9sZGVyID0gYXN5bmMgKFxuICAgIGZvbGRlcklkOiBzdHJpbmcsXG4gICAgcHVibGljS2V5OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxOYW1lS2V5SW5wdXRGb2xkZXJzIHwgbnVsbD4gPT4ge1xuICAgIGxldCBmb2xkZXIgPSBmb2xkZXJzQ2FjaGUuZ2V0KGZvbGRlcklkKTtcblxuICAgIGlmICghZm9sZGVyKSB7XG4gICAgICBhd2FpdCB0aGlzLmZvbGRlcih7IGlkOiBmb2xkZXJJZCB9KTtcbiAgICAgIGZvbGRlciA9IGZvbGRlcnNDYWNoZS5nZXQoZm9sZGVySWQpO1xuXG4gICAgICBpZiAoIWZvbGRlcikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWZvbGRlci51c2VyQXBwPy5uYW1lS2V5KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGZvbGRlcklkLFxuICAgICAgbmFtZUtleTogc29kaXVtLnRvX2hleChcbiAgICAgICAgZW5jcnlwdENyeXB0b0JveChcbiAgICAgICAgICBzb2RpdW0uZnJvbV9oZXgoZm9sZGVyLnVzZXJBcHAubmFtZUtleSksXG4gICAgICAgICAgcHVibGljS2V5LFxuICAgICAgICAgIHRoaXMuI2tleXMucHJpdmF0ZUtleVxuICAgICAgICApXG4gICAgICApXG4gICAgfTtcbiAgfTtcblxuICBwcml2YXRlIHBlclZGaWxlID0gYXN5bmMgKFxuICAgIHZGaWxlSWQ6IHN0cmluZyxcbiAgICBwdWJsaWNLZXk6IHN0cmluZ1xuICApOiBQcm9taXNlPE5hbWVLZXlJbnB1dCB8IG51bGw+ID0+IHtcbiAgICBsZXQgdkZpbGUgPSB2RmlsZXNDYWNoZS5nZXQodkZpbGVJZCk7XG5cbiAgICBpZiAoIXZGaWxlKSB7XG4gICAgICBhd2FpdCB0aGlzLnZGaWxlKHsgaWQ6IHZGaWxlSWQgfSk7XG4gICAgICB2RmlsZSA9IHZGaWxlc0NhY2hlLmdldCh2RmlsZUlkKTtcblxuICAgICAgaWYgKCF2RmlsZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHZGaWxlLmlkLFxuICAgICAgbmFtZUtleTogc29kaXVtLnRvX2hleChcbiAgICAgICAgZW5jcnlwdENyeXB0b0JveChcbiAgICAgICAgICBzb2RpdW0uZnJvbV9oZXgodkZpbGUudXNlckFwcC5uYW1lS2V5KSxcbiAgICAgICAgICBwdWJsaWNLZXksXG4gICAgICAgICAgdGhpcy4ja2V5cy5wcml2YXRlS2V5XG4gICAgICAgIClcbiAgICAgICksXG4gICAgICBmaWxlczogdkZpbGUuaGlzdG9yeS5tYXAoZiA9PiAoe1xuICAgICAgICBpZDogZi5pZCxcbiAgICAgICAga2V5OiBzb2RpdW0udG9faGV4KFxuICAgICAgICAgIGVuY3J5cHRDcnlwdG9Cb3goXG4gICAgICAgICAgICBzb2RpdW0uZnJvbV9oZXgoZi51c2VyIS5rZXkpLFxuICAgICAgICAgICAgcHVibGljS2V5LFxuICAgICAgICAgICAgdGhpcy4ja2V5cy5wcml2YXRlS2V5XG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICB9KSlcbiAgICB9O1xuICB9O1xuXG4gIHByaXZhdGUgX2VhY2hVc2VyID0gYXN5bmMgKFxuICAgIGZpbGVzOiB7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9W10sXG4gICAgc3ViamVjdDogc3RyaW5nLFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICBpZE9yTWFpbDogc3RyaW5nXG4gICk6IFByb21pc2U8TWFpbFJlY2lwaWVudElucHV0IHwgbnVsbD4gPT4ge1xuICAgIGxldCB1ID0gdXNlcnNDYWNoZS5nZXQoaWRPck1haWwpO1xuICAgIGlmICghdSB8fCAhKFwicHVibGljS2V5XCIgaW4gdSkpIHtcbiAgICAgIHUgPVxuICAgICAgICAoYXdhaXQgdGhpcy51c2VyKHtcbiAgICAgICAgICB1c2VySWQ6IGlkT3JNYWlsLFxuICAgICAgICAgIHdpdGhQdWJsaWNLZXk6IHRydWVcbiAgICAgICAgfSkpID8/IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKCF1KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghKFwicHVibGljS2V5XCIgaW4gdSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVXNlciAke2lkT3JNYWlsfSBoYXZlIG5vIHB1YmxpYyBrZXlgKTtcbiAgICB9XG5cbiAgICBjb25zdCByZWNpcGllbnRzRmlsZXMgPSBuZXcgQXJyYXk8TWFpbEZpbGVJbnB1dD4oKTtcblxuICAgIGZvciAoY29uc3QgZiBvZiBmaWxlcykge1xuICAgICAgbGV0IGZpbGVJbkhpc3RvcnkgPSBmaWxlc0NhY2hlLmdldChmLmlkKTtcbiAgICAgIGlmICghZmlsZUluSGlzdG9yeSkge1xuICAgICAgICBhd2FpdCB0aGlzLmZpbGUoeyBpZDogZi5pZCB9KTtcbiAgICAgICAgZmlsZUluSGlzdG9yeSA9IGZpbGVzQ2FjaGUuZ2V0KGYuaWQpO1xuICAgICAgICBpZiAoIWZpbGVJbkhpc3RvcnkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZpbGUgJHtmLm5hbWV9ICgke2YuaWR9KSBkb2VzIG5vdCBleGlzdHNgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3Qga2V5ID0gZmlsZUluSGlzdG9yeS51c2VyPy5rZXk7XG4gICAgICBpZiAoIWtleSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHJlY2lwaWVudHNGaWxlcy5wdXNoKHtcbiAgICAgICAgaWQ6IGYuaWQsXG4gICAgICAgIG5hbWU6IHNvZGl1bS50b19oZXgoXG4gICAgICAgICAgZW5jcnlwdENyeXB0b0JveChcbiAgICAgICAgICAgIHNvZGl1bS5mcm9tX3N0cmluZyhmLm5hbWUpLFxuICAgICAgICAgICAgdS5wdWJsaWNLZXksXG4gICAgICAgICAgICB0aGlzLiNrZXlzLnByaXZhdGVLZXlcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIGZpbGVLZXk6IHNvZGl1bS50b19oZXgoXG4gICAgICAgICAgZW5jcnlwdENyeXB0b0JveChcbiAgICAgICAgICAgIHNvZGl1bS5mcm9tX2hleChrZXkpLFxuICAgICAgICAgICAgdS5wdWJsaWNLZXksXG4gICAgICAgICAgICB0aGlzLiNrZXlzLnByaXZhdGVLZXlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByZWNpcGllbnRJZDogdS5pZCxcbiAgICAgIGJvZHk6IHNvZGl1bS50b19oZXgoXG4gICAgICAgIGVuY3J5cHRDcnlwdG9Cb3goXG4gICAgICAgICAgc29kaXVtLmZyb21fc3RyaW5nKGJvZHkpLFxuICAgICAgICAgIHUucHVibGljS2V5LFxuICAgICAgICAgIHRoaXMuI2tleXMucHJpdmF0ZUtleVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgc3ViamVjdDogc29kaXVtLnRvX2hleChcbiAgICAgICAgZW5jcnlwdENyeXB0b0JveChcbiAgICAgICAgICBzb2RpdW0uZnJvbV9zdHJpbmcoc3ViamVjdCksXG4gICAgICAgICAgdS5wdWJsaWNLZXksXG4gICAgICAgICAgdGhpcy4ja2V5cy5wcml2YXRlS2V5XG4gICAgICAgIClcbiAgICAgICksXG4gICAgICBmaWxlczogcmVjaXBpZW50c0ZpbGVzXG4gICAgfTtcbiAgfTtcbn1cbiJdfQ==
@@ -93,6 +93,7 @@ export declare type BaseMail = {
93
93
  subject: string;
94
94
  createdAt: Date;
95
95
  deletedAt: Date | null;
96
+ openedAt: Date | null;
96
97
  isAltered: boolean;
97
98
  recipients: PublicUser[];
98
99
  temporaryRecipients: TemporaryMailUser[];
@@ -111,7 +112,6 @@ export declare type PublicUser = {
111
112
  };
112
113
  export interface ReceivedMail extends BaseMail {
113
114
  type: "received";
114
- openedAt: Date | null;
115
115
  sender: PublicUser;
116
116
  }
117
117
  export declare type InternalSentMail = {
@@ -5,4 +5,4 @@ export * from "./VFile.js";
5
5
  export * from "./UserAppSettings.js";
6
6
  export * from "./Inputs.js";
7
7
  export {};
8
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsY0FBYyxXQUFkO0FBQ0EsY0FBYyxpQ0FBZDtBQUNBLGNBQWMsYUFBZDtBQUNBLGNBQWMsWUFBZDtBQUNBLGNBQWMsc0JBQWQ7QUFDQSxjQUFjLGFBQWQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEtleVBhaXIgfSBmcm9tIFwiLi4vLi4vaW5kZXguanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0ZpbGUuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0ZpbGVzT25Vc2Vyc09uQXBwbGljYXRpb25zLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9Gb2xkZXIuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1ZGaWxlLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9Vc2VyQXBwU2V0dGluZ3MuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0lucHV0cy5qc1wiO1xuXG5leHBvcnQgdHlwZSBTZWNyZWN5VXNlckFwcCA9IHtcbiAga2V5czogS2V5UGFpcjtcbiAgand0OiBzdHJpbmc7XG4gIHVhU2Vzc2lvbjogc3RyaW5nO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBGaWxlQ29udGVudFBhcnQge1xuICBjb250ZW50VXJsOiBzdHJpbmc7XG4gIG9yZGVyOiBudW1iZXI7XG4gIG1kNTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBGaWxlUGFydFJlc3BvbnNlID0ge1xuICBvcmRlcjogbnVtYmVyO1xuICBmaWVsZHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHVybDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgTWFpbEZpbGVJbnB1dCA9IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nOyBmaWxlS2V5OiBzdHJpbmcgfTtcblxuZXhwb3J0IHR5cGUgTWFpbEludGVncml0eSA9IHtcbiAgaWQ6IHN0cmluZztcbiAgaGFzaDogc3RyaW5nO1xuICBoYXNoS2V5OiBzdHJpbmc7XG4gIHJlcGx5VG8/OiB7XG4gICAgaWQ6IHN0cmluZztcbiAgfTtcbiAgdGVtcG9yYXJ5UmVjaXBpZW50czogVGVtcG9yYXJ5TWFpbFVzZXJbXTtcbiAgcmVjaXBpZW50czogUHVibGljVXNlcltdO1xufTtcblxuZXhwb3J0IHR5cGUgTWFpbEludGVncml0eURyYWZ0ID0gTWFpbEludGVncml0eSAmIHtcbiAgcmVjaXBpZW50czogUHVibGljVXNlcltdO1xufTtcblxuZXhwb3J0IHR5cGUgVGVtcG9yYXJ5TWFpbFVzZXIgPSB7XG4gIGVtYWlsPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgSW50ZXJuYWxXYWl0aW5nUmVjZWl2ZWRNYWlsID0ge1xuICBzZW5kZXI6IFB1YmxpY1VzZXI7XG4gIGRhdGU6IHN0cmluZztcbiAgYXR0YWNobWVudHNDb3VudDogbnVtYmVyO1xuICByZWNpcGllbnRzOiBQdWJsaWNVc2VyW107XG4gIHRlbXBvcmFyeVJlY2lwaWVudHM6IFRlbXBvcmFyeU1haWxVc2VyW107XG59O1xuXG5leHBvcnQgdHlwZSBXYWl0aW5nUmVjZWl2ZWRNYWlsID0ge1xuICBpZDogc3RyaW5nO1xuICBzZW5kZXI6IFB1YmxpY1VzZXI7XG4gIGRhdGU6IERhdGU7XG4gIGF0dGFjaG1lbnRzQ291bnQ6IG51bWJlcjtcbiAgcmVjaXBpZW50czogUHVibGljVXNlcltdO1xuICB0ZW1wb3JhcnlSZWNpcGllbnRzOiBUZW1wb3JhcnlNYWlsVXNlcltdO1xufTtcblxuZXhwb3J0IHR5cGUgTWFpbEZpbGUgPSB7XG4gIGZpbGVLZXk6IHN0cmluZztcbiAgZmlsZW5hbWU6IHN0cmluZztcbiAgZmlsZToge1xuICAgIGlkOiBzdHJpbmc7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBNYWlsVHlwZSA9IFwic2VudFwiIHwgXCJyZWNlaXZlZFwiIHwgXCJkcmFmdFwiO1xuXG5leHBvcnQgdHlwZSBJbnRlcm5hbE1haWwgPSB7XG4gIHR5cGU6IE1haWxUeXBlO1xuICBpZDogc3RyaW5nO1xuICBib2R5OiBzdHJpbmc7XG4gIHN1YmplY3Q6IHN0cmluZztcbiAgb3BlbmVkQXQ/OiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuICBkZWxldGVkQXQ/OiBzdHJpbmc7XG4gIHJlY2lwaWVudDogUHVibGljVXNlcjtcbiAgcmVjaXBpZW50czogUHVibGljVXNlcltdO1xuICBzZW5kZXI6IFB1YmxpY1VzZXI7XG4gIG1haWxJbnRlZ3JpdHk/OiBNYWlsSW50ZWdyaXR5O1xuICBtYWlsSW50ZWdyaXR5RHJhZnQ/OiBNYWlsSW50ZWdyaXR5RHJhZnQ7XG4gIGZpbGVzOiBNYWlsRmlsZVtdO1xufTtcblxuZXhwb3J0IHR5cGUgSW50ZXJuYWxSZWNlaXZlZE1haWwgPSB7XG4gIHVzZXI6IHtcbiAgICByZWNlaXZlZE1haWxzOiBJbnRlcm5hbE1haWxbXTtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIEJhc2VNYWlsID0ge1xuICB0eXBlOiBNYWlsVHlwZTtcbiAgaWQ6IHN0cmluZztcbiAgbWFpbEludGVncml0eUlkOiBzdHJpbmc7XG4gIHJlcGx5VG8/OiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZztcbiAgc3ViamVjdDogc3RyaW5nO1xuICBjcmVhdGVkQXQ6IERhdGU7XG4gIGRlbGV0ZWRBdDogRGF0ZSB8IG51bGw7XG4gIGlzQWx0ZXJlZDogYm9vbGVhbjtcbiAgcmVjaXBpZW50czogUHVibGljVXNlcltdO1xuICB0ZW1wb3JhcnlSZWNpcGllbnRzOiBUZW1wb3JhcnlNYWlsVXNlcltdO1xuICBmaWxlczogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmc7IGtleTogc3RyaW5nIH1bXTtcbn07XG5cbmV4cG9ydCB0eXBlIFB1YmxpY1VzZXIgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIGZpcnN0bmFtZTogc3RyaW5nO1xuICBsYXN0bmFtZTogc3RyaW5nO1xuICBlbWFpbDogc3RyaW5nO1xuICBwdWJsaWNLZXk6IHN0cmluZztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVjZWl2ZWRNYWlsIGV4dGVuZHMgQmFzZU1haWwge1xuICB0eXBlOiBcInJlY2VpdmVkXCI7XG4gIG9wZW5lZEF0OiBEYXRlIHwgbnVsbDtcbiAgc2VuZGVyOiBQdWJsaWNVc2VyO1xufVxuXG5leHBvcnQgdHlwZSBJbnRlcm5hbFNlbnRNYWlsID0ge1xuICB1c2VyOiB7XG4gICAgc2VudE1haWxzOiBJbnRlcm5hbE1haWxbXTtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIEludGVybmFsRHJhZnRNYWlscyA9IHtcbiAgdXNlcjoge1xuICAgIGRyYWZ0TWFpbHM6IEludGVybmFsTWFpbFtdO1xuICB9O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBTZW50TWFpbCBleHRlbmRzIEJhc2VNYWlsIHtcbiAgdHlwZTogXCJzZW50XCI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJhZnRNYWlsIGV4dGVuZHMgQmFzZU1haWwge1xuICB0eXBlOiBcImRyYWZ0XCI7XG59XG5cbmV4cG9ydCB0eXBlIE1haWwgPSBEcmFmdE1haWwgfCBTZW50TWFpbCB8IFJlY2VpdmVkTWFpbDtcblxuZXhwb3J0IHR5cGUgU2Vzc2lvbiA9IHtcbiAgaWQ6IHN0cmluZztcbiAgbGFzdEFjdGl2aXR5OiBEYXRlIHwgdW5kZWZpbmVkO1xuICB1c2VyQWdlbnQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgaXA6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgY2l0eTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBjb3VudHJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBBcHBTZXNzaW9uID0gU2Vzc2lvbiAmIHtcbiAgYXBwOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBVc2VyU2Vzc2lvbiA9IFNlc3Npb24gJiB7XG4gIGFwcFNlc3Npb25zOiBBcHBTZXNzaW9uW107XG59O1xuXG5leHBvcnQgdHlwZSBNYWlsUmVjaXBpZW50SW5wdXQgPSB7XG4gIGJvZHk6IHN0cmluZztcbiAgc3ViamVjdDogc3RyaW5nO1xuICByZWNpcGllbnRJZDogc3RyaW5nO1xuICBmaWxlczogTWFpbEZpbGVJbnB1dFtdO1xufTtcbiJdfQ==
8
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsY0FBYyxXQUFkO0FBQ0EsY0FBYyxpQ0FBZDtBQUNBLGNBQWMsYUFBZDtBQUNBLGNBQWMsWUFBZDtBQUNBLGNBQWMsc0JBQWQ7QUFDQSxjQUFjLGFBQWQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEtleVBhaXIgfSBmcm9tIFwiLi4vLi4vaW5kZXguanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0ZpbGUuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0ZpbGVzT25Vc2Vyc09uQXBwbGljYXRpb25zLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9Gb2xkZXIuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1ZGaWxlLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9Vc2VyQXBwU2V0dGluZ3MuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0lucHV0cy5qc1wiO1xuXG5leHBvcnQgdHlwZSBTZWNyZWN5VXNlckFwcCA9IHtcbiAga2V5czogS2V5UGFpcjtcbiAgand0OiBzdHJpbmc7XG4gIHVhU2Vzc2lvbjogc3RyaW5nO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBGaWxlQ29udGVudFBhcnQge1xuICBjb250ZW50VXJsOiBzdHJpbmc7XG4gIG9yZGVyOiBudW1iZXI7XG4gIG1kNTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBGaWxlUGFydFJlc3BvbnNlID0ge1xuICBvcmRlcjogbnVtYmVyO1xuICBmaWVsZHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHVybDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgTWFpbEZpbGVJbnB1dCA9IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nOyBmaWxlS2V5OiBzdHJpbmcgfTtcblxuZXhwb3J0IHR5cGUgTWFpbEludGVncml0eSA9IHtcbiAgaWQ6IHN0cmluZztcbiAgaGFzaDogc3RyaW5nO1xuICBoYXNoS2V5OiBzdHJpbmc7XG4gIHJlcGx5VG8/OiB7XG4gICAgaWQ6IHN0cmluZztcbiAgfTtcbiAgdGVtcG9yYXJ5UmVjaXBpZW50czogVGVtcG9yYXJ5TWFpbFVzZXJbXTtcbiAgcmVjaXBpZW50czogUHVibGljVXNlcltdO1xufTtcblxuZXhwb3J0IHR5cGUgTWFpbEludGVncml0eURyYWZ0ID0gTWFpbEludGVncml0eSAmIHtcbiAgcmVjaXBpZW50czogUHVibGljVXNlcltdO1xufTtcblxuZXhwb3J0IHR5cGUgVGVtcG9yYXJ5TWFpbFVzZXIgPSB7XG4gIGVtYWlsPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgSW50ZXJuYWxXYWl0aW5nUmVjZWl2ZWRNYWlsID0ge1xuICBzZW5kZXI6IFB1YmxpY1VzZXI7XG4gIGRhdGU6IHN0cmluZztcbiAgYXR0YWNobWVudHNDb3VudDogbnVtYmVyO1xuICByZWNpcGllbnRzOiBQdWJsaWNVc2VyW107XG4gIHRlbXBvcmFyeVJlY2lwaWVudHM6IFRlbXBvcmFyeU1haWxVc2VyW107XG59O1xuXG5leHBvcnQgdHlwZSBXYWl0aW5nUmVjZWl2ZWRNYWlsID0ge1xuICBpZDogc3RyaW5nO1xuICBzZW5kZXI6IFB1YmxpY1VzZXI7XG4gIGRhdGU6IERhdGU7XG4gIGF0dGFjaG1lbnRzQ291bnQ6IG51bWJlcjtcbiAgcmVjaXBpZW50czogUHVibGljVXNlcltdO1xuICB0ZW1wb3JhcnlSZWNpcGllbnRzOiBUZW1wb3JhcnlNYWlsVXNlcltdO1xufTtcblxuZXhwb3J0IHR5cGUgTWFpbEZpbGUgPSB7XG4gIGZpbGVLZXk6IHN0cmluZztcbiAgZmlsZW5hbWU6IHN0cmluZztcbiAgZmlsZToge1xuICAgIGlkOiBzdHJpbmc7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBNYWlsVHlwZSA9IFwic2VudFwiIHwgXCJyZWNlaXZlZFwiIHwgXCJkcmFmdFwiO1xuXG5leHBvcnQgdHlwZSBJbnRlcm5hbE1haWwgPSB7XG4gIHR5cGU6IE1haWxUeXBlO1xuICBpZDogc3RyaW5nO1xuICBib2R5OiBzdHJpbmc7XG4gIHN1YmplY3Q6IHN0cmluZztcbiAgb3BlbmVkQXQ/OiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuICBkZWxldGVkQXQ/OiBzdHJpbmc7XG4gIHJlY2lwaWVudDogUHVibGljVXNlcjtcbiAgcmVjaXBpZW50czogUHVibGljVXNlcltdO1xuICBzZW5kZXI6IFB1YmxpY1VzZXI7XG4gIG1haWxJbnRlZ3JpdHk/OiBNYWlsSW50ZWdyaXR5O1xuICBtYWlsSW50ZWdyaXR5RHJhZnQ/OiBNYWlsSW50ZWdyaXR5RHJhZnQ7XG4gIGZpbGVzOiBNYWlsRmlsZVtdO1xufTtcblxuZXhwb3J0IHR5cGUgSW50ZXJuYWxSZWNlaXZlZE1haWwgPSB7XG4gIHVzZXI6IHtcbiAgICByZWNlaXZlZE1haWxzOiBJbnRlcm5hbE1haWxbXTtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIEJhc2VNYWlsID0ge1xuICB0eXBlOiBNYWlsVHlwZTtcbiAgaWQ6IHN0cmluZztcbiAgbWFpbEludGVncml0eUlkOiBzdHJpbmc7XG4gIHJlcGx5VG8/OiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZztcbiAgc3ViamVjdDogc3RyaW5nO1xuICBjcmVhdGVkQXQ6IERhdGU7XG4gIGRlbGV0ZWRBdDogRGF0ZSB8IG51bGw7XG4gIG9wZW5lZEF0OiBEYXRlIHwgbnVsbDtcbiAgaXNBbHRlcmVkOiBib29sZWFuO1xuICByZWNpcGllbnRzOiBQdWJsaWNVc2VyW107XG4gIHRlbXBvcmFyeVJlY2lwaWVudHM6IFRlbXBvcmFyeU1haWxVc2VyW107XG4gIGZpbGVzOiB7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZzsga2V5OiBzdHJpbmcgfVtdO1xufTtcblxuZXhwb3J0IHR5cGUgUHVibGljVXNlciA9IHtcbiAgaWQ6IHN0cmluZztcbiAgZmlyc3RuYW1lOiBzdHJpbmc7XG4gIGxhc3RuYW1lOiBzdHJpbmc7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIHB1YmxpY0tleTogc3RyaW5nO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBSZWNlaXZlZE1haWwgZXh0ZW5kcyBCYXNlTWFpbCB7XG4gIHR5cGU6IFwicmVjZWl2ZWRcIjtcbiAgc2VuZGVyOiBQdWJsaWNVc2VyO1xufVxuXG5leHBvcnQgdHlwZSBJbnRlcm5hbFNlbnRNYWlsID0ge1xuICB1c2VyOiB7XG4gICAgc2VudE1haWxzOiBJbnRlcm5hbE1haWxbXTtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIEludGVybmFsRHJhZnRNYWlscyA9IHtcbiAgdXNlcjoge1xuICAgIGRyYWZ0TWFpbHM6IEludGVybmFsTWFpbFtdO1xuICB9O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBTZW50TWFpbCBleHRlbmRzIEJhc2VNYWlsIHtcbiAgdHlwZTogXCJzZW50XCI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJhZnRNYWlsIGV4dGVuZHMgQmFzZU1haWwge1xuICB0eXBlOiBcImRyYWZ0XCI7XG59XG5cbmV4cG9ydCB0eXBlIE1haWwgPSBEcmFmdE1haWwgfCBTZW50TWFpbCB8IFJlY2VpdmVkTWFpbDtcblxuZXhwb3J0IHR5cGUgU2Vzc2lvbiA9IHtcbiAgaWQ6IHN0cmluZztcbiAgbGFzdEFjdGl2aXR5OiBEYXRlIHwgdW5kZWZpbmVkO1xuICB1c2VyQWdlbnQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgaXA6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgY2l0eTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBjb3VudHJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBBcHBTZXNzaW9uID0gU2Vzc2lvbiAmIHtcbiAgYXBwOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBVc2VyU2Vzc2lvbiA9IFNlc3Npb24gJiB7XG4gIGFwcFNlc3Npb25zOiBBcHBTZXNzaW9uW107XG59O1xuXG5leHBvcnQgdHlwZSBNYWlsUmVjaXBpZW50SW5wdXQgPSB7XG4gIGJvZHk6IHN0cmluZztcbiAgc3ViamVjdDogc3RyaW5nO1xuICByZWNpcGllbnRJZDogc3RyaW5nO1xuICBmaWxlczogTWFpbEZpbGVJbnB1dFtdO1xufTtcbiJdfQ==
@@ -0,0 +1,19 @@
1
+ declare class Worker {
2
+ url: string | URL;
3
+ onconnect: () => void;
4
+ onmessageerror: () => void;
5
+ postMessage: () => void;
6
+ terminate: () => void;
7
+ onerror: () => void;
8
+ onmessage: () => void;
9
+ addEventListener: () => void;
10
+ removeEventListener: () => void;
11
+ dispatchEvent: () => boolean;
12
+ port: {
13
+ start: () => void;
14
+ postMessage: () => void;
15
+ onmessage: () => void;
16
+ };
17
+ constructor(stringUrl: string | URL);
18
+ }
19
+ export default Worker;
@@ -0,0 +1,57 @@
1
+ // ici tu ne devrais pas faire des void, tu devrais definir des function JEST
2
+ // ex: { addEventListener: jest.fn() }; jest.fn() -> ca te sers pour spy ( voir si tu la call etc )
3
+ var Worker = function Worker(stringUrl) {
4
+ this.url = void 0;
5
+ this.onconnect = void 0;
6
+ this.onmessageerror = void 0;
7
+ this.postMessage = void 0;
8
+ this.terminate = void 0;
9
+ this.onerror = void 0;
10
+ this.onmessage = void 0;
11
+ this.addEventListener = void 0;
12
+ this.removeEventListener = void 0;
13
+ this.dispatchEvent = void 0;
14
+ this.port = void 0;
15
+ // super();
16
+ this.url = stringUrl;
17
+
18
+ this.addEventListener = function () {//
19
+ };
20
+
21
+ this.removeEventListener = function () {//
22
+ };
23
+
24
+ this.dispatchEvent = function () {
25
+ return true;
26
+ };
27
+
28
+ this.onconnect = function () {//
29
+ };
30
+
31
+ this.onmessageerror = function () {//
32
+ };
33
+
34
+ this.postMessage = function () {//
35
+ };
36
+
37
+ this.terminate = function () {//
38
+ };
39
+
40
+ this.onerror = function () {//
41
+ };
42
+
43
+ this.onmessage = function () {//
44
+ };
45
+
46
+ this.port = {
47
+ start: function start() {//
48
+ },
49
+ postMessage: function postMessage() {//
50
+ },
51
+ onmessage: function onmessage() {//
52
+ }
53
+ };
54
+ };
55
+
56
+ export default Worker;
57
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy93b3JrZXIvX19tb2NrX18vc29kaXVtLndvcmtlci50cyJdLCJuYW1lcyI6WyJXb3JrZXIiLCJzdHJpbmdVcmwiLCJ1cmwiLCJvbmNvbm5lY3QiLCJvbm1lc3NhZ2VlcnJvciIsInBvc3RNZXNzYWdlIiwidGVybWluYXRlIiwib25lcnJvciIsIm9ubWVzc2FnZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiZGlzcGF0Y2hFdmVudCIsInBvcnQiLCJzdGFydCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtJQUNNQSxNLEdBMkJKLGdCQUFZQyxTQUFaLEVBQXFDO0FBQUEsT0ExQnJDQyxHQTBCcUM7QUFBQSxPQXhCckNDLFNBd0JxQztBQUFBLE9BdEJyQ0MsY0FzQnFDO0FBQUEsT0FwQnJDQyxXQW9CcUM7QUFBQSxPQWxCckNDLFNBa0JxQztBQUFBLE9BaEJyQ0MsT0FnQnFDO0FBQUEsT0FkckNDLFNBY3FDO0FBQUEsT0FackNDLGdCQVlxQztBQUFBLE9BVnJDQyxtQkFVcUM7QUFBQSxPQVJyQ0MsYUFRcUM7QUFBQSxPQU5yQ0MsSUFNcUM7QUFDbkM7QUFDQSxPQUFLVixHQUFMLEdBQVdELFNBQVg7O0FBQ0EsT0FBS1EsZ0JBQUwsR0FBd0IsWUFBWSxDQUNsQztBQUNELEdBRkQ7O0FBR0EsT0FBS0MsbUJBQUwsR0FBMkIsWUFBWSxDQUNyQztBQUNELEdBRkQ7O0FBR0EsT0FBS0MsYUFBTCxHQUFxQixZQUFlO0FBQ2xDLFdBQU8sSUFBUDtBQUNELEdBRkQ7O0FBR0EsT0FBS1IsU0FBTCxHQUFpQixZQUFZLENBQzNCO0FBQ0QsR0FGRDs7QUFHQSxPQUFLQyxjQUFMLEdBQXNCLFlBQVksQ0FDaEM7QUFDRCxHQUZEOztBQUdBLE9BQUtDLFdBQUwsR0FBbUIsWUFBWSxDQUM3QjtBQUNELEdBRkQ7O0FBR0EsT0FBS0MsU0FBTCxHQUFpQixZQUFZLENBQzNCO0FBQ0QsR0FGRDs7QUFHQSxPQUFLQyxPQUFMLEdBQWUsWUFBWSxDQUN6QjtBQUNELEdBRkQ7O0FBR0EsT0FBS0MsU0FBTCxHQUFpQixZQUFZLENBQzNCO0FBQ0QsR0FGRDs7QUFJQSxPQUFLSSxJQUFMLEdBQVk7QUFDVkMsSUFBQUEsS0FBSyxFQUFFLGlCQUFZLENBQ2pCO0FBQ0QsS0FIUztBQUlWUixJQUFBQSxXQUFXLEVBQUUsdUJBQVksQ0FDdkI7QUFDRCxLQU5TO0FBT1ZHLElBQUFBLFNBQVMsRUFBRSxxQkFBWSxDQUNyQjtBQUNEO0FBVFMsR0FBWjtBQVdELEM7O0FBR0gsZUFBZVIsTUFBZiIsInNvdXJjZXNDb250ZW50IjpbIi8vIGljaSB0dSBuZSBkZXZyYWlzIHBhcyBmYWlyZSBkZXMgdm9pZCwgdHUgZGV2cmFpcyBkZWZpbmlyIGRlcyBmdW5jdGlvbiBKRVNUXG4vLyBleDogeyBhZGRFdmVudExpc3RlbmVyOiBqZXN0LmZuKCkgfTsgIGplc3QuZm4oKSAtPiBjYSB0ZSBzZXJzIHBvdXIgc3B5ICggdm9pciBzaSB0dSBsYSBjYWxsIGV0YyApXG5jbGFzcyBXb3JrZXIge1xuICB1cmw6IHN0cmluZyB8IFVSTDtcblxuICBvbmNvbm5lY3Q6ICgpID0+IHZvaWQ7XG5cbiAgb25tZXNzYWdlZXJyb3I6ICgpID0+IHZvaWQ7XG5cbiAgcG9zdE1lc3NhZ2U6ICgpID0+IHZvaWQ7XG5cbiAgdGVybWluYXRlOiAoKSA9PiB2b2lkO1xuXG4gIG9uZXJyb3I6ICgpID0+IHZvaWQ7XG5cbiAgb25tZXNzYWdlOiAoKSA9PiB2b2lkO1xuXG4gIGFkZEV2ZW50TGlzdGVuZXI6ICgpID0+IHZvaWQ7XG5cbiAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjogKCkgPT4gdm9pZDtcblxuICBkaXNwYXRjaEV2ZW50OiAoKSA9PiBib29sZWFuO1xuXG4gIHBvcnQ6IHtcbiAgICBzdGFydDogKCkgPT4gdm9pZDtcbiAgICBwb3N0TWVzc2FnZTogKCkgPT4gdm9pZDtcbiAgICBvbm1lc3NhZ2U6ICgpID0+IHZvaWQ7XG4gIH07XG5cbiAgY29uc3RydWN0b3Ioc3RyaW5nVXJsOiBzdHJpbmcgfCBVUkwpIHtcbiAgICAvLyBzdXBlcigpO1xuICAgIHRoaXMudXJsID0gc3RyaW5nVXJsO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lciA9ICgpOiB2b2lkID0+IHtcbiAgICAgIC8vXG4gICAgfTtcbiAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIgPSAoKTogdm9pZCA9PiB7XG4gICAgICAvL1xuICAgIH07XG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50ID0gKCk6IGJvb2xlYW4gPT4ge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICB0aGlzLm9uY29ubmVjdCA9ICgpOiB2b2lkID0+IHtcbiAgICAgIC8vXG4gICAgfTtcbiAgICB0aGlzLm9ubWVzc2FnZWVycm9yID0gKCk6IHZvaWQgPT4ge1xuICAgICAgLy9cbiAgICB9O1xuICAgIHRoaXMucG9zdE1lc3NhZ2UgPSAoKTogdm9pZCA9PiB7XG4gICAgICAvL1xuICAgIH07XG4gICAgdGhpcy50ZXJtaW5hdGUgPSAoKTogdm9pZCA9PiB7XG4gICAgICAvL1xuICAgIH07XG4gICAgdGhpcy5vbmVycm9yID0gKCk6IHZvaWQgPT4ge1xuICAgICAgLy9cbiAgICB9O1xuICAgIHRoaXMub25tZXNzYWdlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgLy9cbiAgICB9O1xuXG4gICAgdGhpcy5wb3J0ID0ge1xuICAgICAgc3RhcnQ6ICgpOiB2b2lkID0+IHtcbiAgICAgICAgLy9cbiAgICAgIH0sXG4gICAgICBwb3N0TWVzc2FnZTogKCk6IHZvaWQgPT4ge1xuICAgICAgICAvL1xuICAgICAgfSxcbiAgICAgIG9ubWVzc2FnZTogKCk6IHZvaWQgPT4ge1xuICAgICAgICAvL1xuICAgICAgfVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgV29ya2VyO1xuIl19
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@secrecy/lib",
3
3
  "author": "Anonymize <anonymize@gmail.com>",
4
4
  "description": "Anonymize Secrecy Library",
5
- "version": "0.1.439",
5
+ "version": "0.1.440",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "ssh://git@github.com/xsecrecy/lib.git"