@aerokit/sdk 12.67.0 → 12.69.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -49,11 +49,14 @@ class Tracer {
49
49
  }
50
50
  getId() {
51
51
  const executionContext = import_bpm.Process.getExecutionContext();
52
- const processDefinitionId = executionContext.getProcessDefinitionId();
53
- const processInstanceId = executionContext.getProcessInstanceId();
54
- const businessKey = executionContext.getProcessInstanceBusinessKey();
55
- const activityId = executionContext.getCurrentActivityId();
56
- return `[${processDefinitionId}][${processInstanceId}][${businessKey}][${activityId}]`;
52
+ if (executionContext) {
53
+ const processDefinitionId = executionContext.getProcessDefinitionId();
54
+ const processInstanceId = executionContext.getProcessInstanceId();
55
+ const businessKey = executionContext.getProcessInstanceBusinessKey();
56
+ const activityId = executionContext.getCurrentActivityId();
57
+ return `[${processDefinitionId}][${processInstanceId}][${businessKey}][${activityId}]`;
58
+ }
59
+ return "[no-execution-context]";
57
60
  }
58
61
  }
59
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2JwbS90cmFjZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IFByb2Nlc3MgfSBmcm9tICdAYWVyb2tpdC9zZGsvYnBtJztcbmltcG9ydCB7IExvZ2dpbmcsIExvZ2dlciB9IGZyb20gXCJAYWVyb2tpdC9zZGsvbG9nXCI7XG5cbmV4cG9ydCBjbGFzcyBUcmFjZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RhcnRUaW1lOiBEYXRlO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXI7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5zdGFydFRpbWUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICB0aGlzLmxvZ2dlciA9IExvZ2dpbmcuZ2V0TG9nZ2VyKCdicG0udHJhY2VyJyk7XG4gICAgICAgIHRoaXMubG9nKCdTdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGxvZyhtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhgJHt0aGlzLmdldElkKCl9IC0gJHttZXNzYWdlID8/ICcnfWApO1xuICAgIH1cblxuICAgIHB1YmxpYyB3YXJuKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKGAke3RoaXMuZ2V0SWQoKX0gLSAke21lc3NhZ2UgPz8gJyd9YCk7XG4gICAgfVxuXG4gICAgcHVibGljIGVycm9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihgJHt0aGlzLmdldElkKCl9IC0gJHttZXNzYWdlID8/ICcnfWApO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21wbGV0ZShtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBjb25zdCBzZWNvbmRzID0gTWF0aC5jZWlsKChlbmRUaW1lLmdldFRpbWUoKSAtIHRoaXMuc3RhcnRUaW1lLmdldFRpbWUoKSkgLyAxMDAwKTtcbiAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhgJHt0aGlzLmdldElkKCl9IC0gQ29tcGxldGVkIGFmdGVyICR7c2Vjb25kc30gc2Vjb25kcy4gJHttZXNzYWdlID8/ICcnfWApO1xuICAgIH1cblxuICAgIHB1YmxpYyBmYWlsKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZW5kVGltZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGNvbnN0IHNlY29uZHMgPSBNYXRoLmNlaWwoKGVuZFRpbWUuZ2V0VGltZSgpIC0gdGhpcy5zdGFydFRpbWUuZ2V0VGltZSgpKSAvIDEwMDApO1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihgJHt0aGlzLmdldElkKCl9IC0gRmFpbGVkIGFmdGVyICR7c2Vjb25kc30gc2Vjb25kcy4gJHttZXNzYWdlID8/ICcnfWApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SWQoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZXhlY3V0aW9uQ29udGV4dCA9IFByb2Nlc3MuZ2V0RXhlY3V0aW9uQ29udGV4dCgpO1xuICAgICAgICBjb25zdCBwcm9jZXNzRGVmaW5pdGlvbklkID0gZXhlY3V0aW9uQ29udGV4dC5nZXRQcm9jZXNzRGVmaW5pdGlvbklkKCk7XG4gICAgICAgIGNvbnN0IHByb2Nlc3NJbnN0YW5jZUlkID0gZXhlY3V0aW9uQ29udGV4dC5nZXRQcm9jZXNzSW5zdGFuY2VJZCgpO1xuICAgICAgICBjb25zdCBidXNpbmVzc0tleSA9IGV4ZWN1dGlvbkNvbnRleHQuZ2V0UHJvY2Vzc0luc3RhbmNlQnVzaW5lc3NLZXkoKTtcbiAgICAgICAgY29uc3QgYWN0aXZpdHlJZCA9IGV4ZWN1dGlvbkNvbnRleHQuZ2V0Q3VycmVudEFjdGl2aXR5SWQoKTtcblxuICAgICAgICByZXR1cm4gYFske3Byb2Nlc3NEZWZpbml0aW9uSWR9XVske3Byb2Nlc3NJbnN0YW5jZUlkfV1bJHtidXNpbmVzc0tleX1dWyR7YWN0aXZpdHlJZH1dYDtcbiAgICB9XG59Il0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsaUJBQXdCO0FBQ3hCLGlCQUFnQztBQUV6QixNQUFNLE9BQU87QUFBQSxFQUloQixjQUFjO0FBQ1YsU0FBSyxZQUFZLG9CQUFJLEtBQUs7QUFDMUIsU0FBSyxTQUFTLG1CQUFRLFVBQVUsWUFBWTtBQUM1QyxTQUFLLElBQUksU0FBUztBQUFBLEVBQ3RCO0FBQUEsRUFFTyxJQUFJLFNBQWlCO0FBQ3hCLFNBQUssT0FBTyxLQUFLLEdBQUcsS0FBSyxNQUFNLENBQUMsTUFBTSxXQUFXLEVBQUUsRUFBRTtBQUFBLEVBQ3pEO0FBQUEsRUFFTyxLQUFLLFNBQWlCO0FBQ3pCLFNBQUssT0FBTyxLQUFLLEdBQUcsS0FBSyxNQUFNLENBQUMsTUFBTSxXQUFXLEVBQUUsRUFBRTtBQUFBLEVBQ3pEO0FBQUEsRUFFTyxNQUFNLFNBQWlCO0FBQzFCLFNBQUssT0FBTyxNQUFNLEdBQUcsS0FBSyxNQUFNLENBQUMsTUFBTSxXQUFXLEVBQUUsRUFBRTtBQUFBLEVBQzFEO0FBQUEsRUFFTyxTQUFTLFNBQWtCO0FBQzlCLFVBQU0sVUFBVSxvQkFBSSxLQUFLO0FBQ3pCLFVBQU0sVUFBVSxLQUFLLE1BQU0sUUFBUSxRQUFRLElBQUksS0FBSyxVQUFVLFFBQVEsS0FBSyxHQUFJO0FBQy9FLFNBQUssT0FBTyxLQUFLLEdBQUcsS0FBSyxNQUFNLENBQUMsc0JBQXNCLE9BQU8sYUFBYSxXQUFXLEVBQUUsRUFBRTtBQUFBLEVBQzdGO0FBQUEsRUFFTyxLQUFLLFNBQWtCO0FBQzFCLFVBQU0sVUFBVSxvQkFBSSxLQUFLO0FBQ3pCLFVBQU0sVUFBVSxLQUFLLE1BQU0sUUFBUSxRQUFRLElBQUksS0FBSyxVQUFVLFFBQVEsS0FBSyxHQUFJO0FBQy9FLFNBQUssT0FBTyxNQUFNLEdBQUcsS0FBSyxNQUFNLENBQUMsbUJBQW1CLE9BQU8sYUFBYSxXQUFXLEVBQUUsRUFBRTtBQUFBLEVBQzNGO0FBQUEsRUFFUSxRQUFnQjtBQUNwQixVQUFNLG1CQUFtQixtQkFBUSxvQkFBb0I7QUFDckQsVUFBTSxzQkFBc0IsaUJBQWlCLHVCQUF1QjtBQUNwRSxVQUFNLG9CQUFvQixpQkFBaUIscUJBQXFCO0FBQ2hFLFVBQU0sY0FBYyxpQkFBaUIsOEJBQThCO0FBQ25FLFVBQU0sYUFBYSxpQkFBaUIscUJBQXFCO0FBRXpELFdBQU8sSUFBSSxtQkFBbUIsS0FBSyxpQkFBaUIsS0FBSyxXQUFXLEtBQUssVUFBVTtBQUFBLEVBQ3ZGO0FBQ0o7IiwKICAibmFtZXMiOiBbXQp9Cg==
62
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2JwbS90cmFjZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IFByb2Nlc3MgfSBmcm9tICdAYWVyb2tpdC9zZGsvYnBtJztcbmltcG9ydCB7IExvZ2dpbmcsIExvZ2dlciB9IGZyb20gXCJAYWVyb2tpdC9zZGsvbG9nXCI7XG5cbmV4cG9ydCBjbGFzcyBUcmFjZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RhcnRUaW1lOiBEYXRlO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXI7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5zdGFydFRpbWUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICB0aGlzLmxvZ2dlciA9IExvZ2dpbmcuZ2V0TG9nZ2VyKCdicG0udHJhY2VyJyk7XG4gICAgICAgIHRoaXMubG9nKCdTdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGxvZyhtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhgJHt0aGlzLmdldElkKCl9IC0gJHttZXNzYWdlID8/ICcnfWApO1xuICAgIH1cblxuICAgIHB1YmxpYyB3YXJuKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKGAke3RoaXMuZ2V0SWQoKX0gLSAke21lc3NhZ2UgPz8gJyd9YCk7XG4gICAgfVxuXG4gICAgcHVibGljIGVycm9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihgJHt0aGlzLmdldElkKCl9IC0gJHttZXNzYWdlID8/ICcnfWApO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21wbGV0ZShtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBjb25zdCBzZWNvbmRzID0gTWF0aC5jZWlsKChlbmRUaW1lLmdldFRpbWUoKSAtIHRoaXMuc3RhcnRUaW1lLmdldFRpbWUoKSkgLyAxMDAwKTtcbiAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhgJHt0aGlzLmdldElkKCl9IC0gQ29tcGxldGVkIGFmdGVyICR7c2Vjb25kc30gc2Vjb25kcy4gJHttZXNzYWdlID8/ICcnfWApO1xuICAgIH1cblxuICAgIHB1YmxpYyBmYWlsKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZW5kVGltZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGNvbnN0IHNlY29uZHMgPSBNYXRoLmNlaWwoKGVuZFRpbWUuZ2V0VGltZSgpIC0gdGhpcy5zdGFydFRpbWUuZ2V0VGltZSgpKSAvIDEwMDApO1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihgJHt0aGlzLmdldElkKCl9IC0gRmFpbGVkIGFmdGVyICR7c2Vjb25kc30gc2Vjb25kcy4gJHttZXNzYWdlID8/ICcnfWApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SWQoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZXhlY3V0aW9uQ29udGV4dCA9IFByb2Nlc3MuZ2V0RXhlY3V0aW9uQ29udGV4dCgpO1xuICAgICAgICBpZiAoZXhlY3V0aW9uQ29udGV4dCkge1xuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc0RlZmluaXRpb25JZCA9IGV4ZWN1dGlvbkNvbnRleHQuZ2V0UHJvY2Vzc0RlZmluaXRpb25JZCgpO1xuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc0luc3RhbmNlSWQgPSBleGVjdXRpb25Db250ZXh0LmdldFByb2Nlc3NJbnN0YW5jZUlkKCk7XG4gICAgICAgICAgICBjb25zdCBidXNpbmVzc0tleSA9IGV4ZWN1dGlvbkNvbnRleHQuZ2V0UHJvY2Vzc0luc3RhbmNlQnVzaW5lc3NLZXkoKTtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2aXR5SWQgPSBleGVjdXRpb25Db250ZXh0LmdldEN1cnJlbnRBY3Rpdml0eUlkKCk7XG4gICAgICAgICAgICByZXR1cm4gYFske3Byb2Nlc3NEZWZpbml0aW9uSWR9XVske3Byb2Nlc3NJbnN0YW5jZUlkfV1bJHtidXNpbmVzc0tleX1dWyR7YWN0aXZpdHlJZH1dYDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ1tuby1leGVjdXRpb24tY29udGV4dF0nO1xuICAgIH1cbn0iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxpQkFBd0I7QUFDeEIsaUJBQWdDO0FBRXpCLE1BQU0sT0FBTztBQUFBLEVBSWhCLGNBQWM7QUFDVixTQUFLLFlBQVksb0JBQUksS0FBSztBQUMxQixTQUFLLFNBQVMsbUJBQVEsVUFBVSxZQUFZO0FBQzVDLFNBQUssSUFBSSxTQUFTO0FBQUEsRUFDdEI7QUFBQSxFQUVPLElBQUksU0FBaUI7QUFDeEIsU0FBSyxPQUFPLEtBQUssR0FBRyxLQUFLLE1BQU0sQ0FBQyxNQUFNLFdBQVcsRUFBRSxFQUFFO0FBQUEsRUFDekQ7QUFBQSxFQUVPLEtBQUssU0FBaUI7QUFDekIsU0FBSyxPQUFPLEtBQUssR0FBRyxLQUFLLE1BQU0sQ0FBQyxNQUFNLFdBQVcsRUFBRSxFQUFFO0FBQUEsRUFDekQ7QUFBQSxFQUVPLE1BQU0sU0FBaUI7QUFDMUIsU0FBSyxPQUFPLE1BQU0sR0FBRyxLQUFLLE1BQU0sQ0FBQyxNQUFNLFdBQVcsRUFBRSxFQUFFO0FBQUEsRUFDMUQ7QUFBQSxFQUVPLFNBQVMsU0FBa0I7QUFDOUIsVUFBTSxVQUFVLG9CQUFJLEtBQUs7QUFDekIsVUFBTSxVQUFVLEtBQUssTUFBTSxRQUFRLFFBQVEsSUFBSSxLQUFLLFVBQVUsUUFBUSxLQUFLLEdBQUk7QUFDL0UsU0FBSyxPQUFPLEtBQUssR0FBRyxLQUFLLE1BQU0sQ0FBQyxzQkFBc0IsT0FBTyxhQUFhLFdBQVcsRUFBRSxFQUFFO0FBQUEsRUFDN0Y7QUFBQSxFQUVPLEtBQUssU0FBa0I7QUFDMUIsVUFBTSxVQUFVLG9CQUFJLEtBQUs7QUFDekIsVUFBTSxVQUFVLEtBQUssTUFBTSxRQUFRLFFBQVEsSUFBSSxLQUFLLFVBQVUsUUFBUSxLQUFLLEdBQUk7QUFDL0UsU0FBSyxPQUFPLE1BQU0sR0FBRyxLQUFLLE1BQU0sQ0FBQyxtQkFBbUIsT0FBTyxhQUFhLFdBQVcsRUFBRSxFQUFFO0FBQUEsRUFDM0Y7QUFBQSxFQUVRLFFBQWdCO0FBQ3BCLFVBQU0sbUJBQW1CLG1CQUFRLG9CQUFvQjtBQUNyRCxRQUFJLGtCQUFrQjtBQUNsQixZQUFNLHNCQUFzQixpQkFBaUIsdUJBQXVCO0FBQ3BFLFlBQU0sb0JBQW9CLGlCQUFpQixxQkFBcUI7QUFDaEUsWUFBTSxjQUFjLGlCQUFpQiw4QkFBOEI7QUFDbkUsWUFBTSxhQUFhLGlCQUFpQixxQkFBcUI7QUFDekQsYUFBTyxJQUFJLG1CQUFtQixLQUFLLGlCQUFpQixLQUFLLFdBQVcsS0FBSyxVQUFVO0FBQUEsSUFDdkY7QUFDQSxXQUFPO0FBQUEsRUFDWDtBQUNKOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -18,13 +18,17 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
18
18
  var decorators_exports = {};
19
19
  __export(decorators_exports, {
20
20
  Column: () => Column,
21
+ CreatedAt: () => CreatedAt,
22
+ CreatedBy: () => CreatedBy,
21
23
  Documentation: () => Documentation,
22
24
  Entity: () => Entity,
23
25
  Generated: () => Generated,
24
26
  Id: () => Id,
25
27
  ManyToOne: () => ManyToOne,
26
28
  OneToMany: () => OneToMany,
27
- Table: () => Table
29
+ Table: () => Table,
30
+ UpdatedAt: () => UpdatedAt,
31
+ UpdatedBy: () => UpdatedBy
28
32
  });
29
33
  module.exports = __toCommonJS(decorators_exports);
30
34
  const globalCache = globalThis.__decorator_metadata_cache__ || (globalThis.__decorator_metadata_cache__ = /* @__PURE__ */ new WeakMap());
@@ -53,11 +57,19 @@ function createPropertyDecorator(kind, options) {
53
57
  metadata = {
54
58
  propertyName,
55
59
  isId: false,
60
+ isCreatedAt: false,
61
+ isUpdatedAt: false,
62
+ isCreatedBy: false,
63
+ isUpdatedBy: false,
56
64
  isGenerated: false
57
65
  };
58
66
  metadataArray.push(metadata);
59
67
  }
60
68
  if (kind === "id") metadata.isId = true;
69
+ if (kind === "createdAt") metadata.isCreatedAt = true;
70
+ if (kind === "updatedAt") metadata.isUpdatedAt = true;
71
+ if (kind === "createdBy") metadata.isCreatedBy = true;
72
+ if (kind === "updatedBy") metadata.isUpdatedBy = true;
61
73
  if (kind === "generated") metadata.isGenerated = true;
62
74
  if (kind === "column") metadata.columnOptions = options;
63
75
  });
@@ -82,6 +94,10 @@ function Documentation(description) {
82
94
  metadata = {
83
95
  propertyName,
84
96
  isId: false,
97
+ isCreatedAt: false,
98
+ isUpdatedAt: false,
99
+ isCreatedBy: false,
100
+ isUpdatedBy: false,
85
101
  isGenerated: false
86
102
  };
87
103
  metadataArray.push(metadata);
@@ -119,6 +135,10 @@ function Table(tableName) {
119
135
  }
120
136
  const Column = (options) => createPropertyDecorator("column", options);
121
137
  const Id = () => createPropertyDecorator("id");
138
+ const CreatedAt = () => createPropertyDecorator("createdAt");
139
+ const UpdatedAt = () => createPropertyDecorator("updatedAt");
140
+ const CreatedBy = () => createPropertyDecorator("createdBy");
141
+ const UpdatedBy = () => createPropertyDecorator("updatedBy");
122
142
  const Generated = (strategy) => createPropertyDecorator("generated");
123
143
  function OneToMany(typeFunction, options) {
124
144
  return function(_, context) {
@@ -134,6 +154,10 @@ function OneToMany(typeFunction, options) {
134
154
  metadata = {
135
155
  propertyName,
136
156
  isId: false,
157
+ isCreatedAt: false,
158
+ isUpdatedAt: false,
159
+ isCreatedBy: false,
160
+ isUpdatedBy: false,
137
161
  isGenerated: false
138
162
  };
139
163
  metadataArray.push(metadata);
@@ -156,6 +180,10 @@ function ManyToOne(typeFunction, options = {}) {
156
180
  metadata = {
157
181
  propertyName,
158
182
  isId: false,
183
+ isCreatedAt: false,
184
+ isUpdatedAt: false,
185
+ isCreatedBy: false,
186
+ isUpdatedBy: false,
159
187
  isGenerated: false
160
188
  };
161
189
  metadataArray.push(metadata);
@@ -164,4 +192,4 @@ function ManyToOne(typeFunction, options = {}) {
164
192
  });
165
193
  };
166
194
  }
167
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL2RlY29yYXRvcnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogKiBFQ01BU2NyaXB0IDIwMjUtY29tcGxpYW50IE9STSBkZWNvcmF0b3IgaW1wbGVtZW50YXRpb25cbiAqIENvbXBhdGlibGUgd2l0aCBHcmFhbEpTIHJ1bnRpbWUuXG4gKiAqIEZlYXR1cmVzOlxuICogLSBVc2VzIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIgZm9yIHN0YWJsZSBkZWNvcmF0b3IgdGltaW5nXG4gKiAtIFN0b3JlcyBtZXRhZGF0YSBpbiBhIGdsb2JhbCBXZWFrTWFwIGNhY2hlXG4gKiAtIEZpbmFsaXplcyBlbnRpdHkgbWV0YWRhdGEgb25jZSBwZXIgY2xhc3NcbiAqIC0gRGVmZXJzIGZpbmFsaXphdGlvbiB2aWEgbWljcm90YXNrIChQcm9taXNlLnJlc29sdmUoKS50aGVuKVxuICovXG5cbi8vIC0tLSBEZWNvcmF0b3IgQ29udGV4dCBUeXBlcyAoYmFzZWQgb24gRUNNQVNjcmlwdCBEZWNvcmF0b3JzIHByb3Bvc2FsKSAtLS1cbnR5cGUgQ2xhc3NGaWVsZERlY29yYXRvckNvbnRleHQgPSB7XG4gIGtpbmQ6IFwiZmllbGRcIjtcbiAgbmFtZTogc3RyaW5nIHwgc3ltYm9sO1xuICBzdGF0aWM6IGJvb2xlYW47XG4gIHByaXZhdGU6IGJvb2xlYW47XG4gIGFkZEluaXRpYWxpemVyKGZuOiAoKSA9PiB2b2lkKTogdm9pZDtcbn07XG5cbnR5cGUgQ2xhc3NEZWNvcmF0b3JDb250ZXh0ID0ge1xuICBraW5kOiBcImNsYXNzXCI7XG4gIG5hbWU/OiBzdHJpbmcgfCBzeW1ib2w7XG4gIGFkZEluaXRpYWxpemVyKGZuOiAoKSA9PiB2b2lkKTogdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIENvbHVtblR5cGVzID1cbiAgLy8gTnVtZXJpYyB0eXBlc1xuICB8ICdpbnRlZ2VyJyB8ICdsb25nJyB8ICdzaG9ydCcgfCAnYnl0ZScgfCAnZmxvYXQnIHwgJ2RvdWJsZScgfCAnYmlnX2ludGVnZXInIHwgJ2JpZ19kZWNpbWFsJ1xuICAvLyBTdHJpbmcgdHlwZXNcbiAgfCAnc3RyaW5nJyB8ICdjaGFyJyB8ICd0ZXh0JyB8ICduc3RyaW5nJyB8ICdudGV4dCdcbiAgLy8gRGF0ZS9UaW1lIHR5cGVzXG4gIHwgJ2RhdGUnIHwgJ3RpbWUnIHwgJ3RpbWVzdGFtcCcgfCAnY2FsZW5kYXInIHwgJ2NhbGVuZGFyX2RhdGUnIHwgJ2luc3RhbnQnXG4gIC8vIEJvb2xlYW4gdHlwZXNcbiAgfCAnYm9vbGVhbicgfCAndHJ1ZV9mYWxzZScgfCAneWVzX25vJyB8ICdudW1lcmljX2Jvb2xlYW4nIFxuICAvLyBCaW5hcnkgdHlwZXNcbiAgfCAnYmluYXJ5JyB8ICdibG9iJyB8ICdjbG9iJyB8ICdtYXRlcmlhbGl6ZWRfYmxvYicgfCAnbWF0ZXJpYWxpemVkX2Nsb2InXG4gIC8vIE90aGVyIHR5cGVzXG4gIHwgJ3NlcmlhbGl6YWJsZScgfCAnYW55JyB8ICdvYmplY3QnIHwgJ3V1aWQtY2hhcicgfCAndXVpZC1iaW5hcnknIHwgJ2pzb24nIHwgJ2pzb25iJyB8ICd4bWwnO1xuXG4vLyAtLS0gTWV0YWRhdGEgTW9kZWxzIC0tLVxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5PcHRpb25zIHtcbiAgbmFtZT86IHN0cmluZztcbiAgdHlwZT86IENvbHVtblR5cGVzIHwgKHN0cmluZyAmIHt9KTtcbiAgbGVuZ3RoPzogbnVtYmVyO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG4gIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICBzY2FsZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPbmVUb01hbnlPcHRpb25zIHtcbiAgdGFibGU/OiBzdHJpbmc7XG4gIGpvaW5Db2x1bW46IHN0cmluZztcbiAgY2FzY2FkZT86IFwiYWxsXCIgfCBcIm5vbmVcIiB8IFwicGVyc2lzdFwiIHwgXCJtZXJnZVwiIHwgXCJyZW1vdmVcIjtcbiAgaW52ZXJzZT86IGJvb2xlYW47XG4gIGxhenk/OiBib29sZWFuO1xuICBmZXRjaD86IFwic2VsZWN0XCIgfCBcImpvaW5cIjtcbiAgam9pbkNvbHVtbk5vdE51bGw/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hbnlUb09uZU9wdGlvbnMge1xuICBqb2luQ29sdW1uPzogc3RyaW5nO1xuICBjYXNjYWRlPzogXCJhbGxcIiB8IFwibm9uZVwiIHwgXCJwZXJzaXN0XCIgfCBcIm1lcmdlXCIgfCBcInJlbW92ZVwiO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG4gIGxhenk/OiBib29sZWFuO1xuICBmZXRjaD86IFwic2VsZWN0XCIgfCBcImpvaW5cIjtcbn1cblxuaW50ZXJmYWNlIFByb3BlcnR5TWV0YWRhdGEge1xuICBwcm9wZXJ0eU5hbWU6IHN0cmluZztcbiAgaXNJZDogYm9vbGVhbjtcbiAgaXNHZW5lcmF0ZWQ6IGJvb2xlYW47XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIGNvbHVtbk9wdGlvbnM/OiBDb2x1bW5PcHRpb25zO1xuICBvbmVUb01hbnlPcHRpb25zPzogeyB0eXBlOiBGdW5jdGlvbjsgb3B0aW9uczogT25lVG9NYW55T3B0aW9ucyB9O1xuICBtYW55VG9PbmVPcHRpb25zPzogeyB0eXBlOiBGdW5jdGlvbjsgb3B0aW9uczogTWFueVRvT25lT3B0aW9ucyB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eUNvbnN0cnVjdG9yIGV4dGVuZHMgRnVuY3Rpb24ge1xuICBuZXcoLi4uYXJnczogYW55W10pOiBhbnk7XG4gICRlbnRpdHlfbmFtZTogc3RyaW5nO1xuICAkdGFibGVfbmFtZTogc3RyaW5nO1xuICAkaWRfbmFtZTogc3RyaW5nO1xuICAkaWRfY29sdW1uOiBzdHJpbmc7XG4gICRpbml0aWFsaXplZD86IGJvb2xlYW47XG4gICRkb2N1bWVudGF0aW9uPzogc3RyaW5nO1xufVxuXG4vLyAtLS0gR2xvYmFsIE1ldGFkYXRhIENhY2hlIC0tLVxuY29uc3QgZ2xvYmFsQ2FjaGU6IFdlYWtNYXA8RnVuY3Rpb24sIFByb3BlcnR5TWV0YWRhdGFbXT4gPVxuICAoZ2xvYmFsVGhpcyBhcyBhbnkpLl9fZGVjb3JhdG9yX21ldGFkYXRhX2NhY2hlX18gfHxcbiAgKChnbG9iYWxUaGlzIGFzIGFueSkuX19kZWNvcmF0b3JfbWV0YWRhdGFfY2FjaGVfXyA9IG5ldyBXZWFrTWFwKCkpO1xuXG5mdW5jdGlvbiBnZXRNZXRhZGF0YUFycmF5KGNvbnN0cnVjdG9yOiBGdW5jdGlvbik6IFByb3BlcnR5TWV0YWRhdGFbXSB7XG4gIGlmICghZ2xvYmFsQ2FjaGUuaGFzKGNvbnN0cnVjdG9yKSkge1xuICAgIGdsb2JhbENhY2hlLnNldChjb25zdHJ1Y3RvciwgW10pO1xuICB9XG4gIHJldHVybiBnbG9iYWxDYWNoZS5nZXQoY29uc3RydWN0b3IpITtcbn1cblxuLy8gLS0tIERlZmVyIEhlbHBlciAoR3JhYWxKUy1zYWZlIG1pY3JvdGFzaykgLS0tXG5mdW5jdGlvbiBkZWZlcihmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAvLyBVc2VzIFByb21pc2UgbWljcm90YXNrIHF1ZXVlIGZvciBkZWZlcnJlZCBleGVjdXRpb25cbiAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmbik7XG59XG5cbi8vIC0tLSBDb3JlIFByb3BlcnR5IERlY29yYXRvciBGYWN0b3J5IC0tLVxuZnVuY3Rpb24gY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXG4gIGtpbmQ6IFwiY29sdW1uXCIgfCBcImlkXCIgfCBcImdlbmVyYXRlZFwiLFxuICBvcHRpb25zPzogQ29sdW1uT3B0aW9uc1xuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoXzogYW55LCBjb250ZXh0OiBDbGFzc0ZpZWxkRGVjb3JhdG9yQ29udGV4dCkge1xuICAgIGlmIChjb250ZXh0LmtpbmQgIT09IFwiZmllbGRcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBAJHtraW5kfSBtdXN0IGFwcGx5IHRvIGZpZWxkc2ApO1xuICAgIH1cblxuICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY3RvciA9ICh0aGlzIGFzIGFueSkuY29uc3RydWN0b3IgYXMgRW50aXR5Q29uc3RydWN0b3I7XG4gICAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBjb250ZXh0Lm5hbWUudG9TdHJpbmcoKTtcbiAgICAgIGNvbnN0IG1ldGFkYXRhQXJyYXkgPSBnZXRNZXRhZGF0YUFycmF5KGN0b3IpO1xuXG4gICAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YUFycmF5LmZpbmQoXG4gICAgICAgIChtKSA9PiBtLnByb3BlcnR5TmFtZSA9PT0gcHJvcGVydHlOYW1lXG4gICAgICApO1xuXG4gICAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICAgIG1ldGFkYXRhID0ge1xuICAgICAgICAgIHByb3BlcnR5TmFtZTogcHJvcGVydHlOYW1lLFxuICAgICAgICAgIGlzSWQ6IGZhbHNlLFxuICAgICAgICAgIGlzR2VuZXJhdGVkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgICAgbWV0YWRhdGFBcnJheS5wdXNoKG1ldGFkYXRhKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGtpbmQgPT09IFwiaWRcIikgbWV0YWRhdGEuaXNJZCA9IHRydWU7XG4gICAgICBpZiAoa2luZCA9PT0gXCJnZW5lcmF0ZWRcIikgbWV0YWRhdGEuaXNHZW5lcmF0ZWQgPSB0cnVlO1xuICAgICAgaWYgKGtpbmQgPT09IFwiY29sdW1uXCIpIG1ldGFkYXRhLmNvbHVtbk9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH0pO1xuICB9O1xufVxuXG4vLyAtLS0gQERvY3VtZW50YXRpb24gRGVjb3JhdG9yIChEdWFsLVB1cnBvc2UpIC0tLVxuLyoqXG4gKiBBZGRzIGRvY3VtZW50YXRpb24gbWV0YWRhdGEgdG8gYSBjbGFzcyBvciBhIGZpZWxkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gRG9jdW1lbnRhdGlvbihkZXNjcmlwdGlvbjogc3RyaW5nKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoXG4gICAgdmFsdWU6IEZ1bmN0aW9uIHwgYW55LFxuICAgIGNvbnRleHQ6IENsYXNzRGVjb3JhdG9yQ29udGV4dCB8IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0XG4gICkge1xuICAgIGlmIChjb250ZXh0LmtpbmQgPT09IFwiY2xhc3NcIikge1xuICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICAgICh2YWx1ZSBhcyBFbnRpdHlDb25zdHJ1Y3RvcikuJGRvY3VtZW50YXRpb24gPSBkZXNjcmlwdGlvbjtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0gZWxzZSBpZiAoY29udGV4dC5raW5kID09PSBcImZpZWxkXCIpIHtcbiAgICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBjdG9yID0gKHRoaXMgYXMgYW55KS5jb25zdHJ1Y3RvciBhcyBFbnRpdHlDb25zdHJ1Y3RvcjtcbiAgICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gY29udGV4dC5uYW1lLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhQXJyYXkgPSBnZXRNZXRhZGF0YUFycmF5KGN0b3IpO1xuXG4gICAgICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhQXJyYXkuZmluZChcbiAgICAgICAgICAobSkgPT4gbS5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZVxuICAgICAgICApO1xuXG4gICAgICAgIGlmICghbWV0YWRhdGEpIHtcbiAgICAgICAgICBtZXRhZGF0YSA9IHtcbiAgICAgICAgICAgIHByb3BlcnR5TmFtZTogcHJvcGVydHlOYW1lLFxuICAgICAgICAgICAgaXNJZDogZmFsc2UsXG4gICAgICAgICAgICBpc0dlbmVyYXRlZDogZmFsc2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBtZXRhZGF0YUFycmF5LnB1c2gobWV0YWRhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgbWV0YWRhdGEuZG9jdW1lbnRhdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xufVxuXG5cbi8vIC0tLSBARW50aXR5IERlY29yYXRvciAtLS1cbi8qKlxuICogTWFya3MgYSBjbGFzcyBhcyBhbiBlbnRpdHkgYW5kIGluaXRpYXRlcyBtZXRhZGF0YSBmaW5hbGl6YXRpb24uXG4gKiBAcGFyYW0gZW50aXR5TmFtZSBUaGUgbmFtZSBvZiB0aGUgZW50aXR5IChkZWZhdWx0cyB0byBjbGFzcyBuYW1lKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEVudGl0eShlbnRpdHlOYW1lPzogc3RyaW5nKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodmFsdWU6IEZ1bmN0aW9uLCBjb250ZXh0OiBDbGFzc0RlY29yYXRvckNvbnRleHQpIHtcbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIERlZmVyIGV4ZWN1dGlvbiB0byBlbnN1cmUgYWxsIGZpZWxkIGRlY29yYXRvcnMgaGF2ZSBydW5cbiAgICAgIGRlZmVyKCgpID0+IHtcbiAgICAgICAgY29uc3QgY3RvciA9IHZhbHVlIGFzIEVudGl0eUNvbnN0cnVjdG9yO1xuXG4gICAgICAgIC8vIFByZXZlbnQgZHVwbGljYXRlIHJlZ2lzdHJhdGlvbiAoaWRlbXBvdGVuY3kpXG4gICAgICAgIGlmIChjdG9yLiRpbml0aWFsaXplZCkgcmV0dXJuO1xuICAgICAgICBjdG9yLiRpbml0aWFsaXplZCA9IHRydWU7XG5cbiAgICAgICAgY3Rvci4kZW50aXR5X25hbWUgPSBlbnRpdHlOYW1lIHx8IGN0b3IubmFtZTtcblxuICAgICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcbiAgICAgICAgY29uc3QgaWRNZXRhZGF0YSA9IG1ldGFkYXRhQXJyYXkuZmluZCgobSkgPT4gbS5pc0lkKTtcblxuICAgICAgICBpZiAoaWRNZXRhZGF0YSkge1xuICAgICAgICAgIGN0b3IuJGlkX25hbWUgPSBpZE1ldGFkYXRhLnByb3BlcnR5TmFtZTtcbiAgICAgICAgICAvLyBEZXRlcm1pbmUgSUQgY29sdW1uIG5hbWU6IHVzZSBleHBsaWNpdCBuYW1lIG9yIGNvbnZlcnQgcHJvcGVydHkgbmFtZSB0byB1cHBlciBjYXNlXG4gICAgICAgICAgY3Rvci4kaWRfY29sdW1uID1cbiAgICAgICAgICAgIGlkTWV0YWRhdGEuY29sdW1uT3B0aW9ucz8ubmFtZSB8fFxuICAgICAgICAgICAgaWRNZXRhZGF0YS5wcm9wZXJ0eU5hbWUudG9VcHBlckNhc2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZ1dHVyZTogTG9naWMgdG8gbWFwIGFsbCBwcm9wZXJ0aWVzIHRvIGNvbHVtbnMvcmVsYXRpb25zIGdvZXMgaGVyZVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59XG5cbi8vIC0tLSBAVGFibGUgRGVjb3JhdG9yIC0tLVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGRhdGFiYXNlIHRhYmxlIG5hbWUgZm9yIHRoZSBlbnRpdHkuXG4gKiBAcGFyYW0gdGFibGVOYW1lIFRoZSB0YWJsZSBuYW1lIChkZWZhdWx0cyB0byB1cHBlcmNhc2UgY2xhc3MgbmFtZSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBUYWJsZSh0YWJsZU5hbWU/OiBzdHJpbmcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIDxUIGV4dGVuZHMgRW50aXR5Q29uc3RydWN0b3I+KFxuICAgIHZhbHVlOiBULFxuICAgIGNvbnRleHQ6IENsYXNzRGVjb3JhdG9yQ29udGV4dFxuICApIHtcbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgICh2YWx1ZSBhcyBFbnRpdHlDb25zdHJ1Y3RvcikuJHRhYmxlX25hbWUgPVxuICAgICAgICB0YWJsZU5hbWUgfHwgKGNvbnRleHQubmFtZT8udG9TdHJpbmcoKSA/PyB2YWx1ZS5uYW1lLnRvVXBwZXJDYXNlKCkpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xufVxuXG4vLyAtLS0gRXhwb3J0ZWQgUHJvcGVydHkgRGVjb3JhdG9ycyAtLS1cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyBhIHN0YW5kYXJkIGRhdGFiYXNlIGNvbHVtbi5cbiAqL1xuZXhwb3J0IGNvbnN0IENvbHVtbiA9IChvcHRpb25zPzogQ29sdW1uT3B0aW9ucykgPT5cbiAgY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXCJjb2x1bW5cIiwgb3B0aW9ucyk7XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyB0aGUgZW50aXR5J3MgcHJpbWFyeSBrZXkuXG4gKi9cbmV4cG9ydCBjb25zdCBJZCA9ICgpID0+IGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFwiaWRcIik7XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyBhIGdlbmVyYXRlZCB2YWx1ZSAoZS5nLiwgYXV0by1pbmNyZW1lbnQpLlxuICogQHBhcmFtIHN0cmF0ZWd5IFRoZSBnZW5lcmF0aW9uIHN0cmF0ZWd5IChlLmcuLCBcIklERU5USVRZXCIpLiBQYXJhbWV0ZXIgaXMgY3VycmVudGx5IHVudXNlZCBpbiBsb2dpYy5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmVyYXRlZCA9IChzdHJhdGVneTogc3RyaW5nKSA9PlxuICBjcmVhdGVQcm9wZXJ0eURlY29yYXRvcihcImdlbmVyYXRlZFwiKTtcblxuLyoqXG4gKiBEZWZpbmVzIGEgb25lLXRvLW1hbnkgcmVsYXRpb25zaGlwLlxuICovXG5leHBvcnQgZnVuY3Rpb24gT25lVG9NYW55KFxuICB0eXBlRnVuY3Rpb246ICgpID0+IEZ1bmN0aW9uLFxuICBvcHRpb25zOiBPbmVUb01hbnlPcHRpb25zXG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfOiBhbnksIGNvbnRleHQ6IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQua2luZCAhPT0gXCJmaWVsZFwiKSByZXR1cm47XG5cbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGN0b3IgPSAodGhpcyBhcyBhbnkpLmNvbnN0cnVjdG9yIGFzIEVudGl0eUNvbnN0cnVjdG9yO1xuICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gY29udGV4dC5uYW1lLnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcblxuICAgICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGFBcnJheS5maW5kKFxuICAgICAgICAobSkgPT4gbS5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZVxuICAgICAgKTtcblxuICAgICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgICBtZXRhZGF0YSA9IHtcbiAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgICBpc0lkOiBmYWxzZSxcbiAgICAgICAgICBpc0dlbmVyYXRlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIG1ldGFkYXRhQXJyYXkucHVzaChtZXRhZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIG1ldGFkYXRhLm9uZVRvTWFueU9wdGlvbnMgPSB7IHR5cGU6IHR5cGVGdW5jdGlvbigpLCBvcHRpb25zIH07XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogRGVmaW5lcyBhIG1hbnktdG8tb25lIHJlbGF0aW9uc2hpcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE1hbnlUb09uZShcbiAgdHlwZUZ1bmN0aW9uOiAoKSA9PiBGdW5jdGlvbixcbiAgb3B0aW9uczogTWFueVRvT25lT3B0aW9ucyA9IHt9XG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfOiBhbnksIGNvbnRleHQ6IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQua2luZCAhPT0gXCJmaWVsZFwiKSByZXR1cm47XG5cbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGN0b3IgPSAodGhpcyBhcyBhbnkpLmNvbnN0cnVjdG9yIGFzIEVudGl0eUNvbnN0cnVjdG9yO1xuICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gY29udGV4dC5uYW1lLnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcblxuICAgICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGFBcnJheS5maW5kKFxuICAgICAgICAobSkgPT4gbS5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZVxuICAgICAgKTtcblxuICAgICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgICBtZXRhZGF0YSA9IHtcbiAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgICBpc0lkOiBmYWxzZSxcbiAgICAgICAgICBpc0dlbmVyYXRlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIG1ldGFkYXRhQXJyYXkucHVzaChtZXRhZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIG1ldGFkYXRhLm1hbnlUb09uZU9wdGlvbnMgPSB7IHR5cGU6IHR5cGVGdW5jdGlvbigpLCBvcHRpb25zIH07XG4gICAgfSk7XG4gIH07XG59Il0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF5RkEsTUFBTSxjQUNILFdBQW1CLGlDQUNsQixXQUFtQiwrQkFBK0Isb0JBQUksUUFBUTtBQUVsRSxTQUFTLGlCQUFpQixhQUEyQztBQUNuRSxNQUFJLENBQUMsWUFBWSxJQUFJLFdBQVcsR0FBRztBQUNqQyxnQkFBWSxJQUFJLGFBQWEsQ0FBQyxDQUFDO0FBQUEsRUFDakM7QUFDQSxTQUFPLFlBQVksSUFBSSxXQUFXO0FBQ3BDO0FBR0EsU0FBUyxNQUFNLElBQXNCO0FBRW5DLFVBQVEsUUFBUSxFQUFFLEtBQUss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
195
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL2RlY29yYXRvcnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogKiBFQ01BU2NyaXB0IDIwMjUtY29tcGxpYW50IE9STSBkZWNvcmF0b3IgaW1wbGVtZW50YXRpb25cbiAqIENvbXBhdGlibGUgd2l0aCBHcmFhbEpTIHJ1bnRpbWUuXG4gKiAqIEZlYXR1cmVzOlxuICogLSBVc2VzIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIgZm9yIHN0YWJsZSBkZWNvcmF0b3IgdGltaW5nXG4gKiAtIFN0b3JlcyBtZXRhZGF0YSBpbiBhIGdsb2JhbCBXZWFrTWFwIGNhY2hlXG4gKiAtIEZpbmFsaXplcyBlbnRpdHkgbWV0YWRhdGEgb25jZSBwZXIgY2xhc3NcbiAqIC0gRGVmZXJzIGZpbmFsaXphdGlvbiB2aWEgbWljcm90YXNrIChQcm9taXNlLnJlc29sdmUoKS50aGVuKVxuICovXG5cbi8vIC0tLSBEZWNvcmF0b3IgQ29udGV4dCBUeXBlcyAoYmFzZWQgb24gRUNNQVNjcmlwdCBEZWNvcmF0b3JzIHByb3Bvc2FsKSAtLS1cbnR5cGUgQ2xhc3NGaWVsZERlY29yYXRvckNvbnRleHQgPSB7XG4gIGtpbmQ6IFwiZmllbGRcIjtcbiAgbmFtZTogc3RyaW5nIHwgc3ltYm9sO1xuICBzdGF0aWM6IGJvb2xlYW47XG4gIHByaXZhdGU6IGJvb2xlYW47XG4gIGFkZEluaXRpYWxpemVyKGZuOiAoKSA9PiB2b2lkKTogdm9pZDtcbn07XG5cbnR5cGUgQ2xhc3NEZWNvcmF0b3JDb250ZXh0ID0ge1xuICBraW5kOiBcImNsYXNzXCI7XG4gIG5hbWU/OiBzdHJpbmcgfCBzeW1ib2w7XG4gIGFkZEluaXRpYWxpemVyKGZuOiAoKSA9PiB2b2lkKTogdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIENvbHVtblR5cGVzID1cbiAgLy8gTnVtZXJpYyB0eXBlc1xuICB8ICdpbnRlZ2VyJyB8ICdsb25nJyB8ICdzaG9ydCcgfCAnYnl0ZScgfCAnZmxvYXQnIHwgJ2RvdWJsZScgfCAnYmlnX2ludGVnZXInIHwgJ2JpZ19kZWNpbWFsJ1xuICAvLyBTdHJpbmcgdHlwZXNcbiAgfCAnc3RyaW5nJyB8ICdjaGFyJyB8ICd0ZXh0JyB8ICduc3RyaW5nJyB8ICdudGV4dCdcbiAgLy8gRGF0ZS9UaW1lIHR5cGVzXG4gIHwgJ2RhdGUnIHwgJ3RpbWUnIHwgJ3RpbWVzdGFtcCcgfCAnY2FsZW5kYXInIHwgJ2NhbGVuZGFyX2RhdGUnIHwgJ2luc3RhbnQnXG4gIC8vIEJvb2xlYW4gdHlwZXNcbiAgfCAnYm9vbGVhbicgfCAndHJ1ZV9mYWxzZScgfCAneWVzX25vJyB8ICdudW1lcmljX2Jvb2xlYW4nIFxuICAvLyBCaW5hcnkgdHlwZXNcbiAgfCAnYmluYXJ5JyB8ICdibG9iJyB8ICdjbG9iJyB8ICdtYXRlcmlhbGl6ZWRfYmxvYicgfCAnbWF0ZXJpYWxpemVkX2Nsb2InXG4gIC8vIE90aGVyIHR5cGVzXG4gIHwgJ3NlcmlhbGl6YWJsZScgfCAnYW55JyB8ICdvYmplY3QnIHwgJ3V1aWQtY2hhcicgfCAndXVpZC1iaW5hcnknIHwgJ2pzb24nIHwgJ2pzb25iJyB8ICd4bWwnO1xuXG4vLyAtLS0gTWV0YWRhdGEgTW9kZWxzIC0tLVxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5PcHRpb25zIHtcbiAgbmFtZT86IHN0cmluZztcbiAgdHlwZT86IENvbHVtblR5cGVzIHwgKHN0cmluZyAmIHt9KTtcbiAgbGVuZ3RoPzogbnVtYmVyO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG4gIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICBzY2FsZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPbmVUb01hbnlPcHRpb25zIHtcbiAgdGFibGU/OiBzdHJpbmc7XG4gIGpvaW5Db2x1bW46IHN0cmluZztcbiAgY2FzY2FkZT86IFwiYWxsXCIgfCBcIm5vbmVcIiB8IFwicGVyc2lzdFwiIHwgXCJtZXJnZVwiIHwgXCJyZW1vdmVcIjtcbiAgaW52ZXJzZT86IGJvb2xlYW47XG4gIGxhenk/OiBib29sZWFuO1xuICBmZXRjaD86IFwic2VsZWN0XCIgfCBcImpvaW5cIjtcbiAgam9pbkNvbHVtbk5vdE51bGw/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hbnlUb09uZU9wdGlvbnMge1xuICBqb2luQ29sdW1uPzogc3RyaW5nO1xuICBjYXNjYWRlPzogXCJhbGxcIiB8IFwibm9uZVwiIHwgXCJwZXJzaXN0XCIgfCBcIm1lcmdlXCIgfCBcInJlbW92ZVwiO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG4gIGxhenk/OiBib29sZWFuO1xuICBmZXRjaD86IFwic2VsZWN0XCIgfCBcImpvaW5cIjtcbn1cblxuaW50ZXJmYWNlIFByb3BlcnR5TWV0YWRhdGEge1xuICBwcm9wZXJ0eU5hbWU6IHN0cmluZztcbiAgaXNJZDogYm9vbGVhbjtcbiAgaXNDcmVhdGVkQXQ6IGJvb2xlYW47XG4gIGlzVXBkYXRlZEF0OiBib29sZWFuO1xuICBpc0NyZWF0ZWRCeTogYm9vbGVhbjtcbiAgaXNVcGRhdGVkQnk6IGJvb2xlYW47XG4gIGlzR2VuZXJhdGVkOiBib29sZWFuO1xuICBkb2N1bWVudGF0aW9uPzogc3RyaW5nO1xuICBjb2x1bW5PcHRpb25zPzogQ29sdW1uT3B0aW9ucztcbiAgb25lVG9NYW55T3B0aW9ucz86IHsgdHlwZTogRnVuY3Rpb247IG9wdGlvbnM6IE9uZVRvTWFueU9wdGlvbnMgfTtcbiAgbWFueVRvT25lT3B0aW9ucz86IHsgdHlwZTogRnVuY3Rpb247IG9wdGlvbnM6IE1hbnlUb09uZU9wdGlvbnMgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlDb25zdHJ1Y3RvciBleHRlbmRzIEZ1bmN0aW9uIHtcbiAgbmV3KC4uLmFyZ3M6IGFueVtdKTogYW55O1xuICAkZW50aXR5X25hbWU6IHN0cmluZztcbiAgJHRhYmxlX25hbWU6IHN0cmluZztcbiAgJGlkX25hbWU6IHN0cmluZztcbiAgJGlkX2NvbHVtbjogc3RyaW5nO1xuICAkaW5pdGlhbGl6ZWQ/OiBib29sZWFuO1xuICAkZG9jdW1lbnRhdGlvbj86IHN0cmluZztcbn1cblxuLy8gLS0tIEdsb2JhbCBNZXRhZGF0YSBDYWNoZSAtLS1cbmNvbnN0IGdsb2JhbENhY2hlOiBXZWFrTWFwPEZ1bmN0aW9uLCBQcm9wZXJ0eU1ldGFkYXRhW10+ID1cbiAgKGdsb2JhbFRoaXMgYXMgYW55KS5fX2RlY29yYXRvcl9tZXRhZGF0YV9jYWNoZV9fIHx8XG4gICgoZ2xvYmFsVGhpcyBhcyBhbnkpLl9fZGVjb3JhdG9yX21ldGFkYXRhX2NhY2hlX18gPSBuZXcgV2Vha01hcCgpKTtcblxuZnVuY3Rpb24gZ2V0TWV0YWRhdGFBcnJheShjb25zdHJ1Y3RvcjogRnVuY3Rpb24pOiBQcm9wZXJ0eU1ldGFkYXRhW10ge1xuICBpZiAoIWdsb2JhbENhY2hlLmhhcyhjb25zdHJ1Y3RvcikpIHtcbiAgICBnbG9iYWxDYWNoZS5zZXQoY29uc3RydWN0b3IsIFtdKTtcbiAgfVxuICByZXR1cm4gZ2xvYmFsQ2FjaGUuZ2V0KGNvbnN0cnVjdG9yKSE7XG59XG5cbi8vIC0tLSBEZWZlciBIZWxwZXIgKEdyYWFsSlMtc2FmZSBtaWNyb3Rhc2spIC0tLVxuZnVuY3Rpb24gZGVmZXIoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgLy8gVXNlcyBQcm9taXNlIG1pY3JvdGFzayBxdWV1ZSBmb3IgZGVmZXJyZWQgZXhlY3V0aW9uXG4gIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZm4pO1xufVxuXG4vLyAtLS0gQ29yZSBQcm9wZXJ0eSBEZWNvcmF0b3IgRmFjdG9yeSAtLS1cbmZ1bmN0aW9uIGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFxuICBraW5kOiBcImNvbHVtblwiIHwgXCJpZFwiIHwgXCJnZW5lcmF0ZWRcIiB8IFwiY3JlYXRlZEF0XCIgfCBcInVwZGF0ZWRBdFwiIHwgXCJjcmVhdGVkQnlcIiB8IFwidXBkYXRlZEJ5XCIsXG4gIG9wdGlvbnM/OiBDb2x1bW5PcHRpb25zXG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfOiBhbnksIGNvbnRleHQ6IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQua2luZCAhPT0gXCJmaWVsZFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEAke2tpbmR9IG11c3QgYXBwbHkgdG8gZmllbGRzYCk7XG4gICAgfVxuXG4gICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjdG9yID0gKHRoaXMgYXMgYW55KS5jb25zdHJ1Y3RvciBhcyBFbnRpdHlDb25zdHJ1Y3RvcjtcbiAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IGNvbnRleHQubmFtZS50b1N0cmluZygpO1xuICAgICAgY29uc3QgbWV0YWRhdGFBcnJheSA9IGdldE1ldGFkYXRhQXJyYXkoY3Rvcik7XG5cbiAgICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhQXJyYXkuZmluZChcbiAgICAgICAgKG0pID0+IG0ucHJvcGVydHlOYW1lID09PSBwcm9wZXJ0eU5hbWVcbiAgICAgICk7XG5cbiAgICAgIGlmICghbWV0YWRhdGEpIHtcbiAgICAgICAgbWV0YWRhdGEgPSB7XG4gICAgICAgICAgcHJvcGVydHlOYW1lOiBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgaXNJZDogZmFsc2UsXG5cdFx0ICBpc0NyZWF0ZWRBdDogZmFsc2UsXG5cdFx0ICBpc1VwZGF0ZWRBdDogZmFsc2UsXG5cdFx0ICBpc0NyZWF0ZWRCeTogZmFsc2UsXG5cdFx0ICBpc1VwZGF0ZWRCeTogZmFsc2UsXG4gICAgICAgICAgaXNHZW5lcmF0ZWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICBtZXRhZGF0YUFycmF5LnB1c2gobWV0YWRhdGEpO1xuICAgICAgfVxuXG4gICAgICBpZiAoa2luZCA9PT0gXCJpZFwiKSBtZXRhZGF0YS5pc0lkID0gdHJ1ZTtcblx0ICBpZiAoa2luZCA9PT0gXCJjcmVhdGVkQXRcIikgbWV0YWRhdGEuaXNDcmVhdGVkQXQgPSB0cnVlO1xuXHQgIGlmIChraW5kID09PSBcInVwZGF0ZWRBdFwiKSBtZXRhZGF0YS5pc1VwZGF0ZWRBdCA9IHRydWU7XG5cdCAgaWYgKGtpbmQgPT09IFwiY3JlYXRlZEJ5XCIpIG1ldGFkYXRhLmlzQ3JlYXRlZEJ5ID0gdHJ1ZTtcblx0ICBpZiAoa2luZCA9PT0gXCJ1cGRhdGVkQnlcIikgbWV0YWRhdGEuaXNVcGRhdGVkQnkgPSB0cnVlO1xuICAgICAgaWYgKGtpbmQgPT09IFwiZ2VuZXJhdGVkXCIpIG1ldGFkYXRhLmlzR2VuZXJhdGVkID0gdHJ1ZTtcbiAgICAgIGlmIChraW5kID09PSBcImNvbHVtblwiKSBtZXRhZGF0YS5jb2x1bW5PcHRpb25zID0gb3B0aW9ucztcbiAgICB9KTtcbiAgfTtcbn1cblxuLy8gLS0tIEBEb2N1bWVudGF0aW9uIERlY29yYXRvciAoRHVhbC1QdXJwb3NlKSAtLS1cbi8qKlxuICogQWRkcyBkb2N1bWVudGF0aW9uIG1ldGFkYXRhIHRvIGEgY2xhc3Mgb3IgYSBmaWVsZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIERvY3VtZW50YXRpb24oZGVzY3JpcHRpb246IHN0cmluZykge1xuICByZXR1cm4gZnVuY3Rpb24gKFxuICAgIHZhbHVlOiBGdW5jdGlvbiB8IGFueSxcbiAgICBjb250ZXh0OiBDbGFzc0RlY29yYXRvckNvbnRleHQgfCBDbGFzc0ZpZWxkRGVjb3JhdG9yQ29udGV4dFxuICApIHtcbiAgICBpZiAoY29udGV4dC5raW5kID09PSBcImNsYXNzXCIpIHtcbiAgICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgICAodmFsdWUgYXMgRW50aXR5Q29uc3RydWN0b3IpLiRkb2N1bWVudGF0aW9uID0gZGVzY3JpcHRpb247XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9IGVsc2UgaWYgKGNvbnRleHQua2luZCA9PT0gXCJmaWVsZFwiKSB7XG4gICAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgY3RvciA9ICh0aGlzIGFzIGFueSkuY29uc3RydWN0b3IgYXMgRW50aXR5Q29uc3RydWN0b3I7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IGNvbnRleHQubmFtZS50b1N0cmluZygpO1xuICAgICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcblxuICAgICAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YUFycmF5LmZpbmQoXG4gICAgICAgICAgKG0pID0+IG0ucHJvcGVydHlOYW1lID09PSBwcm9wZXJ0eU5hbWVcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICAgICAgbWV0YWRhdGEgPSB7XG4gICAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgICAgIGlzSWQ6IGZhbHNlLFxuXHRcdFx0aXNDcmVhdGVkQXQ6IGZhbHNlLFxuXHRcdFx0aXNVcGRhdGVkQXQ6IGZhbHNlLFxuXHRcdFx0aXNDcmVhdGVkQnk6IGZhbHNlLFxuXHRcdFx0aXNVcGRhdGVkQnk6IGZhbHNlLFxuICAgICAgICAgICAgaXNHZW5lcmF0ZWQ6IGZhbHNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgbWV0YWRhdGFBcnJheS5wdXNoKG1ldGFkYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG1ldGFkYXRhLmRvY3VtZW50YXRpb24gPSBkZXNjcmlwdGlvbjtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cblxuXG4vLyAtLS0gQEVudGl0eSBEZWNvcmF0b3IgLS0tXG4vKipcbiAqIE1hcmtzIGEgY2xhc3MgYXMgYW4gZW50aXR5IGFuZCBpbml0aWF0ZXMgbWV0YWRhdGEgZmluYWxpemF0aW9uLlxuICogQHBhcmFtIGVudGl0eU5hbWUgVGhlIG5hbWUgb2YgdGhlIGVudGl0eSAoZGVmYXVsdHMgdG8gY2xhc3MgbmFtZSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFbnRpdHkoZW50aXR5TmFtZT86IHN0cmluZykge1xuICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlOiBGdW5jdGlvbiwgY29udGV4dDogQ2xhc3NEZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBEZWZlciBleGVjdXRpb24gdG8gZW5zdXJlIGFsbCBmaWVsZCBkZWNvcmF0b3JzIGhhdmUgcnVuXG4gICAgICBkZWZlcigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGN0b3IgPSB2YWx1ZSBhcyBFbnRpdHlDb25zdHJ1Y3RvcjtcblxuICAgICAgICAvLyBQcmV2ZW50IGR1cGxpY2F0ZSByZWdpc3RyYXRpb24gKGlkZW1wb3RlbmN5KVxuICAgICAgICBpZiAoY3Rvci4kaW5pdGlhbGl6ZWQpIHJldHVybjtcbiAgICAgICAgY3Rvci4kaW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgICAgIGN0b3IuJGVudGl0eV9uYW1lID0gZW50aXR5TmFtZSB8fCBjdG9yLm5hbWU7XG5cbiAgICAgICAgY29uc3QgbWV0YWRhdGFBcnJheSA9IGdldE1ldGFkYXRhQXJyYXkoY3Rvcik7XG4gICAgICAgIGNvbnN0IGlkTWV0YWRhdGEgPSBtZXRhZGF0YUFycmF5LmZpbmQoKG0pID0+IG0uaXNJZCk7XG5cbiAgICAgICAgaWYgKGlkTWV0YWRhdGEpIHtcbiAgICAgICAgICBjdG9yLiRpZF9uYW1lID0gaWRNZXRhZGF0YS5wcm9wZXJ0eU5hbWU7XG4gICAgICAgICAgLy8gRGV0ZXJtaW5lIElEIGNvbHVtbiBuYW1lOiB1c2UgZXhwbGljaXQgbmFtZSBvciBjb252ZXJ0IHByb3BlcnR5IG5hbWUgdG8gdXBwZXIgY2FzZVxuICAgICAgICAgIGN0b3IuJGlkX2NvbHVtbiA9XG4gICAgICAgICAgICBpZE1ldGFkYXRhLmNvbHVtbk9wdGlvbnM/Lm5hbWUgfHxcbiAgICAgICAgICAgIGlkTWV0YWRhdGEucHJvcGVydHlOYW1lLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGdXR1cmU6IExvZ2ljIHRvIG1hcCBhbGwgcHJvcGVydGllcyB0byBjb2x1bW5zL3JlbGF0aW9ucyBnb2VzIGhlcmVcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xufVxuXG4vLyAtLS0gQFRhYmxlIERlY29yYXRvciAtLS1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBkYXRhYmFzZSB0YWJsZSBuYW1lIGZvciB0aGUgZW50aXR5LlxuICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgdGFibGUgbmFtZSAoZGVmYXVsdHMgdG8gdXBwZXJjYXNlIGNsYXNzIG5hbWUpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gVGFibGUodGFibGVOYW1lPzogc3RyaW5nKSB7XG4gIHJldHVybiBmdW5jdGlvbiA8VCBleHRlbmRzIEVudGl0eUNvbnN0cnVjdG9yPihcbiAgICB2YWx1ZTogVCxcbiAgICBjb250ZXh0OiBDbGFzc0RlY29yYXRvckNvbnRleHRcbiAgKSB7XG4gICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICAodmFsdWUgYXMgRW50aXR5Q29uc3RydWN0b3IpLiR0YWJsZV9uYW1lID1cbiAgICAgICAgdGFibGVOYW1lIHx8IChjb250ZXh0Lm5hbWU/LnRvU3RyaW5nKCkgPz8gdmFsdWUubmFtZS50b1VwcGVyQ2FzZSgpKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfTtcbn1cblxuLy8gLS0tIEV4cG9ydGVkIFByb3BlcnR5IERlY29yYXRvcnMgLS0tXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgYSBzdGFuZGFyZCBkYXRhYmFzZSBjb2x1bW4uXG4gKi9cbmV4cG9ydCBjb25zdCBDb2x1bW4gPSAob3B0aW9ucz86IENvbHVtbk9wdGlvbnMpID0+XG4gIGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFwiY29sdW1uXCIsIG9wdGlvbnMpO1xuXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgdGhlIGVudGl0eSdzIHByaW1hcnkga2V5LlxuICovXG5leHBvcnQgY29uc3QgSWQgPSAoKSA9PiBjcmVhdGVQcm9wZXJ0eURlY29yYXRvcihcImlkXCIpO1xuXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgdGhlIGVudGl0eSdzIGNyZWF0ZWQgYXQgdGltZXN0YW1wLlxuICovXG5leHBvcnQgY29uc3QgQ3JlYXRlZEF0ID0gKCkgPT4gY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXCJjcmVhdGVkQXRcIik7XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyB0aGUgZW50aXR5J3MgdXBkYXRlIGF0IHRpbWVzdGFtcC5cbiAqL1xuZXhwb3J0IGNvbnN0IFVwZGF0ZWRBdCA9ICgpID0+IGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFwidXBkYXRlZEF0XCIpO1xuXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgdGhlIGVudGl0eSdzIGNyZWF0aW9uIGFjdG9yLlxuICovXG5leHBvcnQgY29uc3QgQ3JlYXRlZEJ5ID0gKCkgPT4gY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXCJjcmVhdGVkQnlcIik7XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyB0aGUgZW50aXR5J3MgdXBkYXRlIGFjdG9yLlxuICovXG5leHBvcnQgY29uc3QgVXBkYXRlZEJ5ID0gKCkgPT4gY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXCJ1cGRhdGVkQnlcIik7XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyBhIGdlbmVyYXRlZCB2YWx1ZSAoZS5nLiwgYXV0by1pbmNyZW1lbnQpLlxuICogQHBhcmFtIHN0cmF0ZWd5IFRoZSBnZW5lcmF0aW9uIHN0cmF0ZWd5IChlLmcuLCBcIklERU5USVRZXCIpLiBQYXJhbWV0ZXIgaXMgY3VycmVudGx5IHVudXNlZCBpbiBsb2dpYy5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmVyYXRlZCA9IChzdHJhdGVneTogc3RyaW5nKSA9PlxuICBjcmVhdGVQcm9wZXJ0eURlY29yYXRvcihcImdlbmVyYXRlZFwiKTtcblxuLyoqXG4gKiBEZWZpbmVzIGEgb25lLXRvLW1hbnkgcmVsYXRpb25zaGlwLlxuICovXG5leHBvcnQgZnVuY3Rpb24gT25lVG9NYW55KFxuICB0eXBlRnVuY3Rpb246ICgpID0+IEZ1bmN0aW9uLFxuICBvcHRpb25zOiBPbmVUb01hbnlPcHRpb25zXG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfOiBhbnksIGNvbnRleHQ6IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQua2luZCAhPT0gXCJmaWVsZFwiKSByZXR1cm47XG5cbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGN0b3IgPSAodGhpcyBhcyBhbnkpLmNvbnN0cnVjdG9yIGFzIEVudGl0eUNvbnN0cnVjdG9yO1xuICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gY29udGV4dC5uYW1lLnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcblxuICAgICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGFBcnJheS5maW5kKFxuICAgICAgICAobSkgPT4gbS5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZVxuICAgICAgKTtcblxuICAgICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgICBtZXRhZGF0YSA9IHtcbiAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgICBpc0lkOiBmYWxzZSxcblx0XHQgIGlzQ3JlYXRlZEF0OiBmYWxzZSxcblx0XHQgIGlzVXBkYXRlZEF0OiBmYWxzZSxcblx0XHQgIGlzQ3JlYXRlZEJ5OiBmYWxzZSxcblx0XHQgIGlzVXBkYXRlZEJ5OiBmYWxzZSxcbiAgICAgICAgICBpc0dlbmVyYXRlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIG1ldGFkYXRhQXJyYXkucHVzaChtZXRhZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIG1ldGFkYXRhLm9uZVRvTWFueU9wdGlvbnMgPSB7IHR5cGU6IHR5cGVGdW5jdGlvbigpLCBvcHRpb25zIH07XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogRGVmaW5lcyBhIG1hbnktdG8tb25lIHJlbGF0aW9uc2hpcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE1hbnlUb09uZShcbiAgdHlwZUZ1bmN0aW9uOiAoKSA9PiBGdW5jdGlvbixcbiAgb3B0aW9uczogTWFueVRvT25lT3B0aW9ucyA9IHt9XG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfOiBhbnksIGNvbnRleHQ6IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQua2luZCAhPT0gXCJmaWVsZFwiKSByZXR1cm47XG5cbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGN0b3IgPSAodGhpcyBhcyBhbnkpLmNvbnN0cnVjdG9yIGFzIEVudGl0eUNvbnN0cnVjdG9yO1xuICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gY29udGV4dC5uYW1lLnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcblxuICAgICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGFBcnJheS5maW5kKFxuICAgICAgICAobSkgPT4gbS5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZVxuICAgICAgKTtcblxuICAgICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgICBtZXRhZGF0YSA9IHtcbiAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgICBpc0lkOiBmYWxzZSxcblx0XHQgIGlzQ3JlYXRlZEF0OiBmYWxzZSxcblx0XHQgIGlzVXBkYXRlZEF0OiBmYWxzZSxcblx0XHQgIGlzQ3JlYXRlZEJ5OiBmYWxzZSxcblx0XHQgIGlzVXBkYXRlZEJ5OiBmYWxzZSxcbiAgICAgICAgICBpc0dlbmVyYXRlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIG1ldGFkYXRhQXJyYXkucHVzaChtZXRhZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIG1ldGFkYXRhLm1hbnlUb09uZU9wdGlvbnMgPSB7IHR5cGU6IHR5cGVGdW5jdGlvbigpLCBvcHRpb25zIH07XG4gICAgfSk7XG4gIH07XG59Il0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTZGQSxNQUFNLGNBQ0gsV0FBbUIsaUNBQ2xCLFdBQW1CLCtCQUErQixvQkFBSSxRQUFRO0FBRWxFLFNBQVMsaUJBQWlCLGFBQTJDO0FBQ25FLE1BQUksQ0FBQyxZQUFZLElBQUksV0FBVyxHQUFHO0FBQ2pDLGdCQUFZLElBQUksYUFBYSxDQUFDLENBQUM7QUFBQSxFQUNqQztBQUNBLFNBQU8sWUFBWSxJQUFJLFdBQVc7QUFDcEM7QUFHQSxTQUFTLE1BQU0sSUFBc0I7QUFFbkMsVUFBUSxRQUFRLEVBQUUsS0FBSyxFQUFFO0FBQzNCO0FBR0EsU0FBUyx3QkFDUCxNQUNBLFNBQ0E7QUFDQSxTQUFPLFNBQVUsR0FBUSxTQUFxQztBQUM1RCxRQUFJLFFBQVEsU0FBUyxTQUFTO0FBQzVCLFlBQU0sSUFBSSxNQUFNLElBQUksSUFBSSx1QkFBdUI7QUFBQSxJQUNqRDtBQUVBLFlBQVEsZUFBZSxXQUFZO0FBQ2pDLFlBQU0sT0FBUSxLQUFhO0FBQzNCLFlBQU0sZUFBZSxRQUFRLEtBQUssU0FBUztBQUMzQyxZQUFNLGdCQUFnQixpQkFBaUIsSUFBSTtBQUUzQyxVQUFJLFdBQVcsY0FBYztBQUFBLFFBQzNCLENBQUMsTUFBTSxFQUFFLGlCQUFpQjtBQUFBLE1BQzVCO0FBRUEsVUFBSSxDQUFDLFVBQVU7QUFDYixtQkFBVztBQUFBLFVBQ1Q7QUFBQSxVQUNBLE1BQU07QUFBQSxVQUNaLGFBQWE7QUFB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
@@ -76,6 +76,22 @@ export declare const Column: (options?: ColumnOptions) => (_: any, context: Clas
76
76
  * Marks a property as the entity's primary key.
77
77
  */
78
78
  export declare const Id: () => (_: any, context: ClassFieldDecoratorContext) => void;
79
+ /**
80
+ * Marks a property as the entity's created at timestamp.
81
+ */
82
+ export declare const CreatedAt: () => (_: any, context: ClassFieldDecoratorContext) => void;
83
+ /**
84
+ * Marks a property as the entity's update at timestamp.
85
+ */
86
+ export declare const UpdatedAt: () => (_: any, context: ClassFieldDecoratorContext) => void;
87
+ /**
88
+ * Marks a property as the entity's creation actor.
89
+ */
90
+ export declare const CreatedBy: () => (_: any, context: ClassFieldDecoratorContext) => void;
91
+ /**
92
+ * Marks a property as the entity's update actor.
93
+ */
94
+ export declare const UpdatedBy: () => (_: any, context: ClassFieldDecoratorContext) => void;
79
95
  /**
80
96
  * Marks a property as a generated value (e.g., auto-increment).
81
97
  * @param strategy The generation strategy (e.g., "IDENTITY"). Parameter is currently unused in logic.
@@ -27,14 +27,17 @@ class Tracer {
27
27
  }
28
28
  getId() {
29
29
  const executionContext = Process.getExecutionContext();
30
- const processDefinitionId = executionContext.getProcessDefinitionId();
31
- const processInstanceId = executionContext.getProcessInstanceId();
32
- const businessKey = executionContext.getProcessInstanceBusinessKey();
33
- const activityId = executionContext.getCurrentActivityId();
34
- return `[${processDefinitionId}][${processInstanceId}][${businessKey}][${activityId}]`;
30
+ if (executionContext) {
31
+ const processDefinitionId = executionContext.getProcessDefinitionId();
32
+ const processInstanceId = executionContext.getProcessInstanceId();
33
+ const businessKey = executionContext.getProcessInstanceBusinessKey();
34
+ const activityId = executionContext.getCurrentActivityId();
35
+ return `[${processDefinitionId}][${processInstanceId}][${businessKey}][${activityId}]`;
36
+ }
37
+ return "[no-execution-context]";
35
38
  }
36
39
  }
37
40
  export {
38
41
  Tracer
39
42
  };
40
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2JwbS90cmFjZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IFByb2Nlc3MgfSBmcm9tICdAYWVyb2tpdC9zZGsvYnBtJztcbmltcG9ydCB7IExvZ2dpbmcsIExvZ2dlciB9IGZyb20gXCJAYWVyb2tpdC9zZGsvbG9nXCI7XG5cbmV4cG9ydCBjbGFzcyBUcmFjZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RhcnRUaW1lOiBEYXRlO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXI7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5zdGFydFRpbWUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICB0aGlzLmxvZ2dlciA9IExvZ2dpbmcuZ2V0TG9nZ2VyKCdicG0udHJhY2VyJyk7XG4gICAgICAgIHRoaXMubG9nKCdTdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGxvZyhtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhgJHt0aGlzLmdldElkKCl9IC0gJHttZXNzYWdlID8/ICcnfWApO1xuICAgIH1cblxuICAgIHB1YmxpYyB3YXJuKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKGAke3RoaXMuZ2V0SWQoKX0gLSAke21lc3NhZ2UgPz8gJyd9YCk7XG4gICAgfVxuXG4gICAgcHVibGljIGVycm9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihgJHt0aGlzLmdldElkKCl9IC0gJHttZXNzYWdlID8/ICcnfWApO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21wbGV0ZShtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBjb25zdCBzZWNvbmRzID0gTWF0aC5jZWlsKChlbmRUaW1lLmdldFRpbWUoKSAtIHRoaXMuc3RhcnRUaW1lLmdldFRpbWUoKSkgLyAxMDAwKTtcbiAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhgJHt0aGlzLmdldElkKCl9IC0gQ29tcGxldGVkIGFmdGVyICR7c2Vjb25kc30gc2Vjb25kcy4gJHttZXNzYWdlID8/ICcnfWApO1xuICAgIH1cblxuICAgIHB1YmxpYyBmYWlsKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZW5kVGltZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGNvbnN0IHNlY29uZHMgPSBNYXRoLmNlaWwoKGVuZFRpbWUuZ2V0VGltZSgpIC0gdGhpcy5zdGFydFRpbWUuZ2V0VGltZSgpKSAvIDEwMDApO1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihgJHt0aGlzLmdldElkKCl9IC0gRmFpbGVkIGFmdGVyICR7c2Vjb25kc30gc2Vjb25kcy4gJHttZXNzYWdlID8/ICcnfWApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SWQoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZXhlY3V0aW9uQ29udGV4dCA9IFByb2Nlc3MuZ2V0RXhlY3V0aW9uQ29udGV4dCgpO1xuICAgICAgICBjb25zdCBwcm9jZXNzRGVmaW5pdGlvbklkID0gZXhlY3V0aW9uQ29udGV4dC5nZXRQcm9jZXNzRGVmaW5pdGlvbklkKCk7XG4gICAgICAgIGNvbnN0IHByb2Nlc3NJbnN0YW5jZUlkID0gZXhlY3V0aW9uQ29udGV4dC5nZXRQcm9jZXNzSW5zdGFuY2VJZCgpO1xuICAgICAgICBjb25zdCBidXNpbmVzc0tleSA9IGV4ZWN1dGlvbkNvbnRleHQuZ2V0UHJvY2Vzc0luc3RhbmNlQnVzaW5lc3NLZXkoKTtcbiAgICAgICAgY29uc3QgYWN0aXZpdHlJZCA9IGV4ZWN1dGlvbkNvbnRleHQuZ2V0Q3VycmVudEFjdGl2aXR5SWQoKTtcblxuICAgICAgICByZXR1cm4gYFske3Byb2Nlc3NEZWZpbml0aW9uSWR9XVske3Byb2Nlc3NJbnN0YW5jZUlkfV1bJHtidXNpbmVzc0tleX1dWyR7YWN0aXZpdHlJZH1dYDtcbiAgICB9XG59Il0sCiAgIm1hcHBpbmdzIjogIkFBQUEsU0FBUyxlQUFlO0FBQ3hCLFNBQVMsZUFBdUI7QUFFekIsTUFBTSxPQUFPO0FBQUEsRUFJaEIsY0FBYztBQUNWLFNBQUssWUFBWSxvQkFBSSxLQUFLO0FBQzFCLFNBQUssU0FBUyxRQUFRLFVBQVUsWUFBWTtBQUM1QyxTQUFLLElBQUksU0FBUztBQUFBLEVBQ3RCO0FBQUEsRUFFTyxJQUFJLFNBQWlCO0FBQ3hCLFNBQUssT0FBTyxLQUFLLEdBQUcsS0FBSyxNQUFNLENBQUMsTUFBTSxXQUFXLEVBQUUsRUFBRTtBQUFBLEVBQ3pEO0FBQUEsRUFFTyxLQUFLLFNBQWlCO0FBQ3pCLFNBQUssT0FBTyxLQUFLLEdBQUcsS0FBSyxNQUFNLENBQUMsTUFBTSxXQUFXLEVBQUUsRUFBRTtBQUFBLEVBQ3pEO0FBQUEsRUFFTyxNQUFNLFNBQWlCO0FBQzFCLFNBQUssT0FBTyxNQUFNLEdBQUcsS0FBSyxNQUFNLENBQUMsTUFBTSxXQUFXLEVBQUUsRUFBRTtBQUFBLEVBQzFEO0FBQUEsRUFFTyxTQUFTLFNBQWtCO0FBQzlCLFVBQU0sVUFBVSxvQkFBSSxLQUFLO0FBQ3pCLFVBQU0sVUFBVSxLQUFLLE1BQU0sUUFBUSxRQUFRLElBQUksS0FBSyxVQUFVLFFBQVEsS0FBSyxHQUFJO0FBQy9FLFNBQUssT0FBTyxLQUFLLEdBQUcsS0FBSyxNQUFNLENBQUMsc0JBQXNCLE9BQU8sYUFBYSxXQUFXLEVBQUUsRUFBRTtBQUFBLEVBQzdGO0FBQUEsRUFFTyxLQUFLLFNBQWtCO0FBQzFCLFVBQU0sVUFBVSxvQkFBSSxLQUFLO0FBQ3pCLFVBQU0sVUFBVSxLQUFLLE1BQU0sUUFBUSxRQUFRLElBQUksS0FBSyxVQUFVLFFBQVEsS0FBSyxHQUFJO0FBQy9FLFNBQUssT0FBTyxNQUFNLEdBQUcsS0FBSyxNQUFNLENBQUMsbUJBQW1CLE9BQU8sYUFBYSxXQUFXLEVBQUUsRUFBRTtBQUFBLEVBQzNGO0FBQUEsRUFFUSxRQUFnQjtBQUNwQixVQUFNLG1CQUFtQixRQUFRLG9CQUFvQjtBQUNyRCxVQUFNLHNCQUFzQixpQkFBaUIsdUJBQXVCO0FBQ3BFLFVBQU0sb0JBQW9CLGlCQUFpQixxQkFBcUI7QUFDaEUsVUFBTSxjQUFjLGlCQUFpQiw4QkFBOEI7QUFDbkUsVUFBTSxhQUFhLGlCQUFpQixxQkFBcUI7QUFFekQsV0FBTyxJQUFJLG1CQUFtQixLQUFLLGlCQUFpQixLQUFLLFdBQVcsS0FBSyxVQUFVO0FBQUEsRUFDdkY7QUFDSjsiLAogICJuYW1lcyI6IFtdCn0K
43
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2JwbS90cmFjZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IFByb2Nlc3MgfSBmcm9tICdAYWVyb2tpdC9zZGsvYnBtJztcbmltcG9ydCB7IExvZ2dpbmcsIExvZ2dlciB9IGZyb20gXCJAYWVyb2tpdC9zZGsvbG9nXCI7XG5cbmV4cG9ydCBjbGFzcyBUcmFjZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RhcnRUaW1lOiBEYXRlO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXI7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5zdGFydFRpbWUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICB0aGlzLmxvZ2dlciA9IExvZ2dpbmcuZ2V0TG9nZ2VyKCdicG0udHJhY2VyJyk7XG4gICAgICAgIHRoaXMubG9nKCdTdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGxvZyhtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhgJHt0aGlzLmdldElkKCl9IC0gJHttZXNzYWdlID8/ICcnfWApO1xuICAgIH1cblxuICAgIHB1YmxpYyB3YXJuKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKGAke3RoaXMuZ2V0SWQoKX0gLSAke21lc3NhZ2UgPz8gJyd9YCk7XG4gICAgfVxuXG4gICAgcHVibGljIGVycm9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihgJHt0aGlzLmdldElkKCl9IC0gJHttZXNzYWdlID8/ICcnfWApO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21wbGV0ZShtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBjb25zdCBzZWNvbmRzID0gTWF0aC5jZWlsKChlbmRUaW1lLmdldFRpbWUoKSAtIHRoaXMuc3RhcnRUaW1lLmdldFRpbWUoKSkgLyAxMDAwKTtcbiAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhgJHt0aGlzLmdldElkKCl9IC0gQ29tcGxldGVkIGFmdGVyICR7c2Vjb25kc30gc2Vjb25kcy4gJHttZXNzYWdlID8/ICcnfWApO1xuICAgIH1cblxuICAgIHB1YmxpYyBmYWlsKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZW5kVGltZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGNvbnN0IHNlY29uZHMgPSBNYXRoLmNlaWwoKGVuZFRpbWUuZ2V0VGltZSgpIC0gdGhpcy5zdGFydFRpbWUuZ2V0VGltZSgpKSAvIDEwMDApO1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihgJHt0aGlzLmdldElkKCl9IC0gRmFpbGVkIGFmdGVyICR7c2Vjb25kc30gc2Vjb25kcy4gJHttZXNzYWdlID8/ICcnfWApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SWQoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZXhlY3V0aW9uQ29udGV4dCA9IFByb2Nlc3MuZ2V0RXhlY3V0aW9uQ29udGV4dCgpO1xuICAgICAgICBpZiAoZXhlY3V0aW9uQ29udGV4dCkge1xuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc0RlZmluaXRpb25JZCA9IGV4ZWN1dGlvbkNvbnRleHQuZ2V0UHJvY2Vzc0RlZmluaXRpb25JZCgpO1xuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc0luc3RhbmNlSWQgPSBleGVjdXRpb25Db250ZXh0LmdldFByb2Nlc3NJbnN0YW5jZUlkKCk7XG4gICAgICAgICAgICBjb25zdCBidXNpbmVzc0tleSA9IGV4ZWN1dGlvbkNvbnRleHQuZ2V0UHJvY2Vzc0luc3RhbmNlQnVzaW5lc3NLZXkoKTtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2aXR5SWQgPSBleGVjdXRpb25Db250ZXh0LmdldEN1cnJlbnRBY3Rpdml0eUlkKCk7XG4gICAgICAgICAgICByZXR1cm4gYFske3Byb2Nlc3NEZWZpbml0aW9uSWR9XVske3Byb2Nlc3NJbnN0YW5jZUlkfV1bJHtidXNpbmVzc0tleX1dWyR7YWN0aXZpdHlJZH1dYDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ1tuby1leGVjdXRpb24tY29udGV4dF0nO1xuICAgIH1cbn0iXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLGVBQWU7QUFDeEIsU0FBUyxlQUF1QjtBQUV6QixNQUFNLE9BQU87QUFBQSxFQUloQixjQUFjO0FBQ1YsU0FBSyxZQUFZLG9CQUFJLEtBQUs7QUFDMUIsU0FBSyxTQUFTLFFBQVEsVUFBVSxZQUFZO0FBQzVDLFNBQUssSUFBSSxTQUFTO0FBQUEsRUFDdEI7QUFBQSxFQUVPLElBQUksU0FBaUI7QUFDeEIsU0FBSyxPQUFPLEtBQUssR0FBRyxLQUFLLE1BQU0sQ0FBQyxNQUFNLFdBQVcsRUFBRSxFQUFFO0FBQUEsRUFDekQ7QUFBQSxFQUVPLEtBQUssU0FBaUI7QUFDekIsU0FBSyxPQUFPLEtBQUssR0FBRyxLQUFLLE1BQU0sQ0FBQyxNQUFNLFdBQVcsRUFBRSxFQUFFO0FBQUEsRUFDekQ7QUFBQSxFQUVPLE1BQU0sU0FBaUI7QUFDMUIsU0FBSyxPQUFPLE1BQU0sR0FBRyxLQUFLLE1BQU0sQ0FBQyxNQUFNLFdBQVcsRUFBRSxFQUFFO0FBQUEsRUFDMUQ7QUFBQSxFQUVPLFNBQVMsU0FBa0I7QUFDOUIsVUFBTSxVQUFVLG9CQUFJLEtBQUs7QUFDekIsVUFBTSxVQUFVLEtBQUssTUFBTSxRQUFRLFFBQVEsSUFBSSxLQUFLLFVBQVUsUUFBUSxLQUFLLEdBQUk7QUFDL0UsU0FBSyxPQUFPLEtBQUssR0FBRyxLQUFLLE1BQU0sQ0FBQyxzQkFBc0IsT0FBTyxhQUFhLFdBQVcsRUFBRSxFQUFFO0FBQUEsRUFDN0Y7QUFBQSxFQUVPLEtBQUssU0FBa0I7QUFDMUIsVUFBTSxVQUFVLG9CQUFJLEtBQUs7QUFDekIsVUFBTSxVQUFVLEtBQUssTUFBTSxRQUFRLFFBQVEsSUFBSSxLQUFLLFVBQVUsUUFBUSxLQUFLLEdBQUk7QUFDL0UsU0FBSyxPQUFPLE1BQU0sR0FBRyxLQUFLLE1BQU0sQ0FBQyxtQkFBbUIsT0FBTyxhQUFhLFdBQVcsRUFBRSxFQUFFO0FBQUEsRUFDM0Y7QUFBQSxFQUVRLFFBQWdCO0FBQ3BCLFVBQU0sbUJBQW1CLFFBQVEsb0JBQW9CO0FBQ3JELFFBQUksa0JBQWtCO0FBQ2xCLFlBQU0sc0JBQXNCLGlCQUFpQix1QkFBdUI7QUFDcEUsWUFBTSxvQkFBb0IsaUJBQWlCLHFCQUFxQjtBQUNoRSxZQUFNLGNBQWMsaUJBQWlCLDhCQUE4QjtBQUNuRSxZQUFNLGFBQWEsaUJBQWlCLHFCQUFxQjtBQUN6RCxhQUFPLElBQUksbUJBQW1CLEtBQUssaUJBQWlCLEtBQUssV0FBVyxLQUFLLFVBQVU7QUFBQSxJQUN2RjtBQUNBLFdBQU87QUFBQSxFQUNYO0FBQ0o7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -24,11 +24,19 @@ function createPropertyDecorator(kind, options) {
24
24
  metadata = {
25
25
  propertyName,
26
26
  isId: false,
27
+ isCreatedAt: false,
28
+ isUpdatedAt: false,
29
+ isCreatedBy: false,
30
+ isUpdatedBy: false,
27
31
  isGenerated: false
28
32
  };
29
33
  metadataArray.push(metadata);
30
34
  }
31
35
  if (kind === "id") metadata.isId = true;
36
+ if (kind === "createdAt") metadata.isCreatedAt = true;
37
+ if (kind === "updatedAt") metadata.isUpdatedAt = true;
38
+ if (kind === "createdBy") metadata.isCreatedBy = true;
39
+ if (kind === "updatedBy") metadata.isUpdatedBy = true;
32
40
  if (kind === "generated") metadata.isGenerated = true;
33
41
  if (kind === "column") metadata.columnOptions = options;
34
42
  });
@@ -53,6 +61,10 @@ function Documentation(description) {
53
61
  metadata = {
54
62
  propertyName,
55
63
  isId: false,
64
+ isCreatedAt: false,
65
+ isUpdatedAt: false,
66
+ isCreatedBy: false,
67
+ isUpdatedBy: false,
56
68
  isGenerated: false
57
69
  };
58
70
  metadataArray.push(metadata);
@@ -90,6 +102,10 @@ function Table(tableName) {
90
102
  }
91
103
  const Column = (options) => createPropertyDecorator("column", options);
92
104
  const Id = () => createPropertyDecorator("id");
105
+ const CreatedAt = () => createPropertyDecorator("createdAt");
106
+ const UpdatedAt = () => createPropertyDecorator("updatedAt");
107
+ const CreatedBy = () => createPropertyDecorator("createdBy");
108
+ const UpdatedBy = () => createPropertyDecorator("updatedBy");
93
109
  const Generated = (strategy) => createPropertyDecorator("generated");
94
110
  function OneToMany(typeFunction, options) {
95
111
  return function(_, context) {
@@ -105,6 +121,10 @@ function OneToMany(typeFunction, options) {
105
121
  metadata = {
106
122
  propertyName,
107
123
  isId: false,
124
+ isCreatedAt: false,
125
+ isUpdatedAt: false,
126
+ isCreatedBy: false,
127
+ isUpdatedBy: false,
108
128
  isGenerated: false
109
129
  };
110
130
  metadataArray.push(metadata);
@@ -127,6 +147,10 @@ function ManyToOne(typeFunction, options = {}) {
127
147
  metadata = {
128
148
  propertyName,
129
149
  isId: false,
150
+ isCreatedAt: false,
151
+ isUpdatedAt: false,
152
+ isCreatedBy: false,
153
+ isUpdatedBy: false,
130
154
  isGenerated: false
131
155
  };
132
156
  metadataArray.push(metadata);
@@ -137,12 +161,16 @@ function ManyToOne(typeFunction, options = {}) {
137
161
  }
138
162
  export {
139
163
  Column,
164
+ CreatedAt,
165
+ CreatedBy,
140
166
  Documentation,
141
167
  Entity,
142
168
  Generated,
143
169
  Id,
144
170
  ManyToOne,
145
171
  OneToMany,
146
- Table
172
+ Table,
173
+ UpdatedAt,
174
+ UpdatedBy
147
175
  };
148
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL2RlY29yYXRvcnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogKiBFQ01BU2NyaXB0IDIwMjUtY29tcGxpYW50IE9STSBkZWNvcmF0b3IgaW1wbGVtZW50YXRpb25cbiAqIENvbXBhdGlibGUgd2l0aCBHcmFhbEpTIHJ1bnRpbWUuXG4gKiAqIEZlYXR1cmVzOlxuICogLSBVc2VzIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIgZm9yIHN0YWJsZSBkZWNvcmF0b3IgdGltaW5nXG4gKiAtIFN0b3JlcyBtZXRhZGF0YSBpbiBhIGdsb2JhbCBXZWFrTWFwIGNhY2hlXG4gKiAtIEZpbmFsaXplcyBlbnRpdHkgbWV0YWRhdGEgb25jZSBwZXIgY2xhc3NcbiAqIC0gRGVmZXJzIGZpbmFsaXphdGlvbiB2aWEgbWljcm90YXNrIChQcm9taXNlLnJlc29sdmUoKS50aGVuKVxuICovXG5cbi8vIC0tLSBEZWNvcmF0b3IgQ29udGV4dCBUeXBlcyAoYmFzZWQgb24gRUNNQVNjcmlwdCBEZWNvcmF0b3JzIHByb3Bvc2FsKSAtLS1cbnR5cGUgQ2xhc3NGaWVsZERlY29yYXRvckNvbnRleHQgPSB7XG4gIGtpbmQ6IFwiZmllbGRcIjtcbiAgbmFtZTogc3RyaW5nIHwgc3ltYm9sO1xuICBzdGF0aWM6IGJvb2xlYW47XG4gIHByaXZhdGU6IGJvb2xlYW47XG4gIGFkZEluaXRpYWxpemVyKGZuOiAoKSA9PiB2b2lkKTogdm9pZDtcbn07XG5cbnR5cGUgQ2xhc3NEZWNvcmF0b3JDb250ZXh0ID0ge1xuICBraW5kOiBcImNsYXNzXCI7XG4gIG5hbWU/OiBzdHJpbmcgfCBzeW1ib2w7XG4gIGFkZEluaXRpYWxpemVyKGZuOiAoKSA9PiB2b2lkKTogdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIENvbHVtblR5cGVzID1cbiAgLy8gTnVtZXJpYyB0eXBlc1xuICB8ICdpbnRlZ2VyJyB8ICdsb25nJyB8ICdzaG9ydCcgfCAnYnl0ZScgfCAnZmxvYXQnIHwgJ2RvdWJsZScgfCAnYmlnX2ludGVnZXInIHwgJ2JpZ19kZWNpbWFsJ1xuICAvLyBTdHJpbmcgdHlwZXNcbiAgfCAnc3RyaW5nJyB8ICdjaGFyJyB8ICd0ZXh0JyB8ICduc3RyaW5nJyB8ICdudGV4dCdcbiAgLy8gRGF0ZS9UaW1lIHR5cGVzXG4gIHwgJ2RhdGUnIHwgJ3RpbWUnIHwgJ3RpbWVzdGFtcCcgfCAnY2FsZW5kYXInIHwgJ2NhbGVuZGFyX2RhdGUnIHwgJ2luc3RhbnQnXG4gIC8vIEJvb2xlYW4gdHlwZXNcbiAgfCAnYm9vbGVhbicgfCAndHJ1ZV9mYWxzZScgfCAneWVzX25vJyB8ICdudW1lcmljX2Jvb2xlYW4nIFxuICAvLyBCaW5hcnkgdHlwZXNcbiAgfCAnYmluYXJ5JyB8ICdibG9iJyB8ICdjbG9iJyB8ICdtYXRlcmlhbGl6ZWRfYmxvYicgfCAnbWF0ZXJpYWxpemVkX2Nsb2InXG4gIC8vIE90aGVyIHR5cGVzXG4gIHwgJ3NlcmlhbGl6YWJsZScgfCAnYW55JyB8ICdvYmplY3QnIHwgJ3V1aWQtY2hhcicgfCAndXVpZC1iaW5hcnknIHwgJ2pzb24nIHwgJ2pzb25iJyB8ICd4bWwnO1xuXG4vLyAtLS0gTWV0YWRhdGEgTW9kZWxzIC0tLVxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5PcHRpb25zIHtcbiAgbmFtZT86IHN0cmluZztcbiAgdHlwZT86IENvbHVtblR5cGVzIHwgKHN0cmluZyAmIHt9KTtcbiAgbGVuZ3RoPzogbnVtYmVyO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG4gIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICBzY2FsZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPbmVUb01hbnlPcHRpb25zIHtcbiAgdGFibGU/OiBzdHJpbmc7XG4gIGpvaW5Db2x1bW46IHN0cmluZztcbiAgY2FzY2FkZT86IFwiYWxsXCIgfCBcIm5vbmVcIiB8IFwicGVyc2lzdFwiIHwgXCJtZXJnZVwiIHwgXCJyZW1vdmVcIjtcbiAgaW52ZXJzZT86IGJvb2xlYW47XG4gIGxhenk/OiBib29sZWFuO1xuICBmZXRjaD86IFwic2VsZWN0XCIgfCBcImpvaW5cIjtcbiAgam9pbkNvbHVtbk5vdE51bGw/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hbnlUb09uZU9wdGlvbnMge1xuICBqb2luQ29sdW1uPzogc3RyaW5nO1xuICBjYXNjYWRlPzogXCJhbGxcIiB8IFwibm9uZVwiIHwgXCJwZXJzaXN0XCIgfCBcIm1lcmdlXCIgfCBcInJlbW92ZVwiO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG4gIGxhenk/OiBib29sZWFuO1xuICBmZXRjaD86IFwic2VsZWN0XCIgfCBcImpvaW5cIjtcbn1cblxuaW50ZXJmYWNlIFByb3BlcnR5TWV0YWRhdGEge1xuICBwcm9wZXJ0eU5hbWU6IHN0cmluZztcbiAgaXNJZDogYm9vbGVhbjtcbiAgaXNHZW5lcmF0ZWQ6IGJvb2xlYW47XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIGNvbHVtbk9wdGlvbnM/OiBDb2x1bW5PcHRpb25zO1xuICBvbmVUb01hbnlPcHRpb25zPzogeyB0eXBlOiBGdW5jdGlvbjsgb3B0aW9uczogT25lVG9NYW55T3B0aW9ucyB9O1xuICBtYW55VG9PbmVPcHRpb25zPzogeyB0eXBlOiBGdW5jdGlvbjsgb3B0aW9uczogTWFueVRvT25lT3B0aW9ucyB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eUNvbnN0cnVjdG9yIGV4dGVuZHMgRnVuY3Rpb24ge1xuICBuZXcoLi4uYXJnczogYW55W10pOiBhbnk7XG4gICRlbnRpdHlfbmFtZTogc3RyaW5nO1xuICAkdGFibGVfbmFtZTogc3RyaW5nO1xuICAkaWRfbmFtZTogc3RyaW5nO1xuICAkaWRfY29sdW1uOiBzdHJpbmc7XG4gICRpbml0aWFsaXplZD86IGJvb2xlYW47XG4gICRkb2N1bWVudGF0aW9uPzogc3RyaW5nO1xufVxuXG4vLyAtLS0gR2xvYmFsIE1ldGFkYXRhIENhY2hlIC0tLVxuY29uc3QgZ2xvYmFsQ2FjaGU6IFdlYWtNYXA8RnVuY3Rpb24sIFByb3BlcnR5TWV0YWRhdGFbXT4gPVxuICAoZ2xvYmFsVGhpcyBhcyBhbnkpLl9fZGVjb3JhdG9yX21ldGFkYXRhX2NhY2hlX18gfHxcbiAgKChnbG9iYWxUaGlzIGFzIGFueSkuX19kZWNvcmF0b3JfbWV0YWRhdGFfY2FjaGVfXyA9IG5ldyBXZWFrTWFwKCkpO1xuXG5mdW5jdGlvbiBnZXRNZXRhZGF0YUFycmF5KGNvbnN0cnVjdG9yOiBGdW5jdGlvbik6IFByb3BlcnR5TWV0YWRhdGFbXSB7XG4gIGlmICghZ2xvYmFsQ2FjaGUuaGFzKGNvbnN0cnVjdG9yKSkge1xuICAgIGdsb2JhbENhY2hlLnNldChjb25zdHJ1Y3RvciwgW10pO1xuICB9XG4gIHJldHVybiBnbG9iYWxDYWNoZS5nZXQoY29uc3RydWN0b3IpITtcbn1cblxuLy8gLS0tIERlZmVyIEhlbHBlciAoR3JhYWxKUy1zYWZlIG1pY3JvdGFzaykgLS0tXG5mdW5jdGlvbiBkZWZlcihmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAvLyBVc2VzIFByb21pc2UgbWljcm90YXNrIHF1ZXVlIGZvciBkZWZlcnJlZCBleGVjdXRpb25cbiAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmbik7XG59XG5cbi8vIC0tLSBDb3JlIFByb3BlcnR5IERlY29yYXRvciBGYWN0b3J5IC0tLVxuZnVuY3Rpb24gY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXG4gIGtpbmQ6IFwiY29sdW1uXCIgfCBcImlkXCIgfCBcImdlbmVyYXRlZFwiLFxuICBvcHRpb25zPzogQ29sdW1uT3B0aW9uc1xuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoXzogYW55LCBjb250ZXh0OiBDbGFzc0ZpZWxkRGVjb3JhdG9yQ29udGV4dCkge1xuICAgIGlmIChjb250ZXh0LmtpbmQgIT09IFwiZmllbGRcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBAJHtraW5kfSBtdXN0IGFwcGx5IHRvIGZpZWxkc2ApO1xuICAgIH1cblxuICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY3RvciA9ICh0aGlzIGFzIGFueSkuY29uc3RydWN0b3IgYXMgRW50aXR5Q29uc3RydWN0b3I7XG4gICAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBjb250ZXh0Lm5hbWUudG9TdHJpbmcoKTtcbiAgICAgIGNvbnN0IG1ldGFkYXRhQXJyYXkgPSBnZXRNZXRhZGF0YUFycmF5KGN0b3IpO1xuXG4gICAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YUFycmF5LmZpbmQoXG4gICAgICAgIChtKSA9PiBtLnByb3BlcnR5TmFtZSA9PT0gcHJvcGVydHlOYW1lXG4gICAgICApO1xuXG4gICAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICAgIG1ldGFkYXRhID0ge1xuICAgICAgICAgIHByb3BlcnR5TmFtZTogcHJvcGVydHlOYW1lLFxuICAgICAgICAgIGlzSWQ6IGZhbHNlLFxuICAgICAgICAgIGlzR2VuZXJhdGVkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgICAgbWV0YWRhdGFBcnJheS5wdXNoKG1ldGFkYXRhKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGtpbmQgPT09IFwiaWRcIikgbWV0YWRhdGEuaXNJZCA9IHRydWU7XG4gICAgICBpZiAoa2luZCA9PT0gXCJnZW5lcmF0ZWRcIikgbWV0YWRhdGEuaXNHZW5lcmF0ZWQgPSB0cnVlO1xuICAgICAgaWYgKGtpbmQgPT09IFwiY29sdW1uXCIpIG1ldGFkYXRhLmNvbHVtbk9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH0pO1xuICB9O1xufVxuXG4vLyAtLS0gQERvY3VtZW50YXRpb24gRGVjb3JhdG9yIChEdWFsLVB1cnBvc2UpIC0tLVxuLyoqXG4gKiBBZGRzIGRvY3VtZW50YXRpb24gbWV0YWRhdGEgdG8gYSBjbGFzcyBvciBhIGZpZWxkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gRG9jdW1lbnRhdGlvbihkZXNjcmlwdGlvbjogc3RyaW5nKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoXG4gICAgdmFsdWU6IEZ1bmN0aW9uIHwgYW55LFxuICAgIGNvbnRleHQ6IENsYXNzRGVjb3JhdG9yQ29udGV4dCB8IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0XG4gICkge1xuICAgIGlmIChjb250ZXh0LmtpbmQgPT09IFwiY2xhc3NcIikge1xuICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICAgICh2YWx1ZSBhcyBFbnRpdHlDb25zdHJ1Y3RvcikuJGRvY3VtZW50YXRpb24gPSBkZXNjcmlwdGlvbjtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0gZWxzZSBpZiAoY29udGV4dC5raW5kID09PSBcImZpZWxkXCIpIHtcbiAgICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBjdG9yID0gKHRoaXMgYXMgYW55KS5jb25zdHJ1Y3RvciBhcyBFbnRpdHlDb25zdHJ1Y3RvcjtcbiAgICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gY29udGV4dC5uYW1lLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhQXJyYXkgPSBnZXRNZXRhZGF0YUFycmF5KGN0b3IpO1xuXG4gICAgICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhQXJyYXkuZmluZChcbiAgICAgICAgICAobSkgPT4gbS5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZVxuICAgICAgICApO1xuXG4gICAgICAgIGlmICghbWV0YWRhdGEpIHtcbiAgICAgICAgICBtZXRhZGF0YSA9IHtcbiAgICAgICAgICAgIHByb3BlcnR5TmFtZTogcHJvcGVydHlOYW1lLFxuICAgICAgICAgICAgaXNJZDogZmFsc2UsXG4gICAgICAgICAgICBpc0dlbmVyYXRlZDogZmFsc2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBtZXRhZGF0YUFycmF5LnB1c2gobWV0YWRhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgbWV0YWRhdGEuZG9jdW1lbnRhdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xufVxuXG5cbi8vIC0tLSBARW50aXR5IERlY29yYXRvciAtLS1cbi8qKlxuICogTWFya3MgYSBjbGFzcyBhcyBhbiBlbnRpdHkgYW5kIGluaXRpYXRlcyBtZXRhZGF0YSBmaW5hbGl6YXRpb24uXG4gKiBAcGFyYW0gZW50aXR5TmFtZSBUaGUgbmFtZSBvZiB0aGUgZW50aXR5IChkZWZhdWx0cyB0byBjbGFzcyBuYW1lKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEVudGl0eShlbnRpdHlOYW1lPzogc3RyaW5nKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodmFsdWU6IEZ1bmN0aW9uLCBjb250ZXh0OiBDbGFzc0RlY29yYXRvckNvbnRleHQpIHtcbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIERlZmVyIGV4ZWN1dGlvbiB0byBlbnN1cmUgYWxsIGZpZWxkIGRlY29yYXRvcnMgaGF2ZSBydW5cbiAgICAgIGRlZmVyKCgpID0+IHtcbiAgICAgICAgY29uc3QgY3RvciA9IHZhbHVlIGFzIEVudGl0eUNvbnN0cnVjdG9yO1xuXG4gICAgICAgIC8vIFByZXZlbnQgZHVwbGljYXRlIHJlZ2lzdHJhdGlvbiAoaWRlbXBvdGVuY3kpXG4gICAgICAgIGlmIChjdG9yLiRpbml0aWFsaXplZCkgcmV0dXJuO1xuICAgICAgICBjdG9yLiRpbml0aWFsaXplZCA9IHRydWU7XG5cbiAgICAgICAgY3Rvci4kZW50aXR5X25hbWUgPSBlbnRpdHlOYW1lIHx8IGN0b3IubmFtZTtcblxuICAgICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcbiAgICAgICAgY29uc3QgaWRNZXRhZGF0YSA9IG1ldGFkYXRhQXJyYXkuZmluZCgobSkgPT4gbS5pc0lkKTtcblxuICAgICAgICBpZiAoaWRNZXRhZGF0YSkge1xuICAgICAgICAgIGN0b3IuJGlkX25hbWUgPSBpZE1ldGFkYXRhLnByb3BlcnR5TmFtZTtcbiAgICAgICAgICAvLyBEZXRlcm1pbmUgSUQgY29sdW1uIG5hbWU6IHVzZSBleHBsaWNpdCBuYW1lIG9yIGNvbnZlcnQgcHJvcGVydHkgbmFtZSB0byB1cHBlciBjYXNlXG4gICAgICAgICAgY3Rvci4kaWRfY29sdW1uID1cbiAgICAgICAgICAgIGlkTWV0YWRhdGEuY29sdW1uT3B0aW9ucz8ubmFtZSB8fFxuICAgICAgICAgICAgaWRNZXRhZGF0YS5wcm9wZXJ0eU5hbWUudG9VcHBlckNhc2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZ1dHVyZTogTG9naWMgdG8gbWFwIGFsbCBwcm9wZXJ0aWVzIHRvIGNvbHVtbnMvcmVsYXRpb25zIGdvZXMgaGVyZVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59XG5cbi8vIC0tLSBAVGFibGUgRGVjb3JhdG9yIC0tLVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGRhdGFiYXNlIHRhYmxlIG5hbWUgZm9yIHRoZSBlbnRpdHkuXG4gKiBAcGFyYW0gdGFibGVOYW1lIFRoZSB0YWJsZSBuYW1lIChkZWZhdWx0cyB0byB1cHBlcmNhc2UgY2xhc3MgbmFtZSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBUYWJsZSh0YWJsZU5hbWU/OiBzdHJpbmcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIDxUIGV4dGVuZHMgRW50aXR5Q29uc3RydWN0b3I+KFxuICAgIHZhbHVlOiBULFxuICAgIGNvbnRleHQ6IENsYXNzRGVjb3JhdG9yQ29udGV4dFxuICApIHtcbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgICh2YWx1ZSBhcyBFbnRpdHlDb25zdHJ1Y3RvcikuJHRhYmxlX25hbWUgPVxuICAgICAgICB0YWJsZU5hbWUgfHwgKGNvbnRleHQubmFtZT8udG9TdHJpbmcoKSA/PyB2YWx1ZS5uYW1lLnRvVXBwZXJDYXNlKCkpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xufVxuXG4vLyAtLS0gRXhwb3J0ZWQgUHJvcGVydHkgRGVjb3JhdG9ycyAtLS1cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyBhIHN0YW5kYXJkIGRhdGFiYXNlIGNvbHVtbi5cbiAqL1xuZXhwb3J0IGNvbnN0IENvbHVtbiA9IChvcHRpb25zPzogQ29sdW1uT3B0aW9ucykgPT5cbiAgY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXCJjb2x1bW5cIiwgb3B0aW9ucyk7XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyB0aGUgZW50aXR5J3MgcHJpbWFyeSBrZXkuXG4gKi9cbmV4cG9ydCBjb25zdCBJZCA9ICgpID0+IGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFwiaWRcIik7XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyBhIGdlbmVyYXRlZCB2YWx1ZSAoZS5nLiwgYXV0by1pbmNyZW1lbnQpLlxuICogQHBhcmFtIHN0cmF0ZWd5IFRoZSBnZW5lcmF0aW9uIHN0cmF0ZWd5IChlLmcuLCBcIklERU5USVRZXCIpLiBQYXJhbWV0ZXIgaXMgY3VycmVudGx5IHVudXNlZCBpbiBsb2dpYy5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmVyYXRlZCA9IChzdHJhdGVneTogc3RyaW5nKSA9PlxuICBjcmVhdGVQcm9wZXJ0eURlY29yYXRvcihcImdlbmVyYXRlZFwiKTtcblxuLyoqXG4gKiBEZWZpbmVzIGEgb25lLXRvLW1hbnkgcmVsYXRpb25zaGlwLlxuICovXG5leHBvcnQgZnVuY3Rpb24gT25lVG9NYW55KFxuICB0eXBlRnVuY3Rpb246ICgpID0+IEZ1bmN0aW9uLFxuICBvcHRpb25zOiBPbmVUb01hbnlPcHRpb25zXG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfOiBhbnksIGNvbnRleHQ6IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQua2luZCAhPT0gXCJmaWVsZFwiKSByZXR1cm47XG5cbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGN0b3IgPSAodGhpcyBhcyBhbnkpLmNvbnN0cnVjdG9yIGFzIEVudGl0eUNvbnN0cnVjdG9yO1xuICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gY29udGV4dC5uYW1lLnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcblxuICAgICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGFBcnJheS5maW5kKFxuICAgICAgICAobSkgPT4gbS5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZVxuICAgICAgKTtcblxuICAgICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgICBtZXRhZGF0YSA9IHtcbiAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgICBpc0lkOiBmYWxzZSxcbiAgICAgICAgICBpc0dlbmVyYXRlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIG1ldGFkYXRhQXJyYXkucHVzaChtZXRhZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIG1ldGFkYXRhLm9uZVRvTWFueU9wdGlvbnMgPSB7IHR5cGU6IHR5cGVGdW5jdGlvbigpLCBvcHRpb25zIH07XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogRGVmaW5lcyBhIG1hbnktdG8tb25lIHJlbGF0aW9uc2hpcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE1hbnlUb09uZShcbiAgdHlwZUZ1bmN0aW9uOiAoKSA9PiBGdW5jdGlvbixcbiAgb3B0aW9uczogTWFueVRvT25lT3B0aW9ucyA9IHt9XG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfOiBhbnksIGNvbnRleHQ6IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQua2luZCAhPT0gXCJmaWVsZFwiKSByZXR1cm47XG5cbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGN0b3IgPSAodGhpcyBhcyBhbnkpLmNvbnN0cnVjdG9yIGFzIEVudGl0eUNvbnN0cnVjdG9yO1xuICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gY29udGV4dC5uYW1lLnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcblxuICAgICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGFBcnJheS5maW5kKFxuICAgICAgICAobSkgPT4gbS5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZVxuICAgICAgKTtcblxuICAgICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgICBtZXRhZGF0YSA9IHtcbiAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgICBpc0lkOiBmYWxzZSxcbiAgICAgICAgICBpc0dlbmVyYXRlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIG1ldGFkYXRhQXJyYXkucHVzaChtZXRhZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIG1ldGFkYXRhLm1hbnlUb09uZU9wdGlvbnMgPSB7IHR5cGU6IHR5cGVGdW5jdGlvbigpLCBvcHRpb25zIH07XG4gICAgfSk7XG4gIH07XG59Il0sCiAgIm1hcHBpbmdzIjogIkFBeUZBLE1BQU0sY0FDSCxXQUFtQixpQ0FDbEIsV0FBbUIsK0JBQStCLG9CQUFJLFFBQVE7QUFFbEUsU0FBUyxpQkFBaUIsYUFBMkM7QUFDbkUsTUFBSSxDQUFDLFlBQVksSUFBSSxXQUFXLEdBQUc7QUFDakMsZ0JBQVksSUFBSSxhQUFhLENBQUMsQ0FBQztBQUFBLEVBQ2pDO0FBQ0EsU0FBTyxZQUFZLElBQUksV0FBVztBQUNwQztBQUdBLFNBQVMsTUFBTSxJQUFzQjtBQUVuQyxVQUFRLFFBQVEsRUFBRSxLQUFLLEVBQUU7QUFDM0I7QUFHQSxTQUFTLHdCQUNQLE1BQ0EsU0FDQTtBQUNBLFNBQU8sU0FBVSxHQUFRLFNBQXFDO0FBQzVELFFBQUksUUFB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
176
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL2RlY29yYXRvcnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogKiBFQ01BU2NyaXB0IDIwMjUtY29tcGxpYW50IE9STSBkZWNvcmF0b3IgaW1wbGVtZW50YXRpb25cbiAqIENvbXBhdGlibGUgd2l0aCBHcmFhbEpTIHJ1bnRpbWUuXG4gKiAqIEZlYXR1cmVzOlxuICogLSBVc2VzIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIgZm9yIHN0YWJsZSBkZWNvcmF0b3IgdGltaW5nXG4gKiAtIFN0b3JlcyBtZXRhZGF0YSBpbiBhIGdsb2JhbCBXZWFrTWFwIGNhY2hlXG4gKiAtIEZpbmFsaXplcyBlbnRpdHkgbWV0YWRhdGEgb25jZSBwZXIgY2xhc3NcbiAqIC0gRGVmZXJzIGZpbmFsaXphdGlvbiB2aWEgbWljcm90YXNrIChQcm9taXNlLnJlc29sdmUoKS50aGVuKVxuICovXG5cbi8vIC0tLSBEZWNvcmF0b3IgQ29udGV4dCBUeXBlcyAoYmFzZWQgb24gRUNNQVNjcmlwdCBEZWNvcmF0b3JzIHByb3Bvc2FsKSAtLS1cbnR5cGUgQ2xhc3NGaWVsZERlY29yYXRvckNvbnRleHQgPSB7XG4gIGtpbmQ6IFwiZmllbGRcIjtcbiAgbmFtZTogc3RyaW5nIHwgc3ltYm9sO1xuICBzdGF0aWM6IGJvb2xlYW47XG4gIHByaXZhdGU6IGJvb2xlYW47XG4gIGFkZEluaXRpYWxpemVyKGZuOiAoKSA9PiB2b2lkKTogdm9pZDtcbn07XG5cbnR5cGUgQ2xhc3NEZWNvcmF0b3JDb250ZXh0ID0ge1xuICBraW5kOiBcImNsYXNzXCI7XG4gIG5hbWU/OiBzdHJpbmcgfCBzeW1ib2w7XG4gIGFkZEluaXRpYWxpemVyKGZuOiAoKSA9PiB2b2lkKTogdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIENvbHVtblR5cGVzID1cbiAgLy8gTnVtZXJpYyB0eXBlc1xuICB8ICdpbnRlZ2VyJyB8ICdsb25nJyB8ICdzaG9ydCcgfCAnYnl0ZScgfCAnZmxvYXQnIHwgJ2RvdWJsZScgfCAnYmlnX2ludGVnZXInIHwgJ2JpZ19kZWNpbWFsJ1xuICAvLyBTdHJpbmcgdHlwZXNcbiAgfCAnc3RyaW5nJyB8ICdjaGFyJyB8ICd0ZXh0JyB8ICduc3RyaW5nJyB8ICdudGV4dCdcbiAgLy8gRGF0ZS9UaW1lIHR5cGVzXG4gIHwgJ2RhdGUnIHwgJ3RpbWUnIHwgJ3RpbWVzdGFtcCcgfCAnY2FsZW5kYXInIHwgJ2NhbGVuZGFyX2RhdGUnIHwgJ2luc3RhbnQnXG4gIC8vIEJvb2xlYW4gdHlwZXNcbiAgfCAnYm9vbGVhbicgfCAndHJ1ZV9mYWxzZScgfCAneWVzX25vJyB8ICdudW1lcmljX2Jvb2xlYW4nIFxuICAvLyBCaW5hcnkgdHlwZXNcbiAgfCAnYmluYXJ5JyB8ICdibG9iJyB8ICdjbG9iJyB8ICdtYXRlcmlhbGl6ZWRfYmxvYicgfCAnbWF0ZXJpYWxpemVkX2Nsb2InXG4gIC8vIE90aGVyIHR5cGVzXG4gIHwgJ3NlcmlhbGl6YWJsZScgfCAnYW55JyB8ICdvYmplY3QnIHwgJ3V1aWQtY2hhcicgfCAndXVpZC1iaW5hcnknIHwgJ2pzb24nIHwgJ2pzb25iJyB8ICd4bWwnO1xuXG4vLyAtLS0gTWV0YWRhdGEgTW9kZWxzIC0tLVxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5PcHRpb25zIHtcbiAgbmFtZT86IHN0cmluZztcbiAgdHlwZT86IENvbHVtblR5cGVzIHwgKHN0cmluZyAmIHt9KTtcbiAgbGVuZ3RoPzogbnVtYmVyO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG4gIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICBzY2FsZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPbmVUb01hbnlPcHRpb25zIHtcbiAgdGFibGU/OiBzdHJpbmc7XG4gIGpvaW5Db2x1bW46IHN0cmluZztcbiAgY2FzY2FkZT86IFwiYWxsXCIgfCBcIm5vbmVcIiB8IFwicGVyc2lzdFwiIHwgXCJtZXJnZVwiIHwgXCJyZW1vdmVcIjtcbiAgaW52ZXJzZT86IGJvb2xlYW47XG4gIGxhenk/OiBib29sZWFuO1xuICBmZXRjaD86IFwic2VsZWN0XCIgfCBcImpvaW5cIjtcbiAgam9pbkNvbHVtbk5vdE51bGw/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hbnlUb09uZU9wdGlvbnMge1xuICBqb2luQ29sdW1uPzogc3RyaW5nO1xuICBjYXNjYWRlPzogXCJhbGxcIiB8IFwibm9uZVwiIHwgXCJwZXJzaXN0XCIgfCBcIm1lcmdlXCIgfCBcInJlbW92ZVwiO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG4gIGxhenk/OiBib29sZWFuO1xuICBmZXRjaD86IFwic2VsZWN0XCIgfCBcImpvaW5cIjtcbn1cblxuaW50ZXJmYWNlIFByb3BlcnR5TWV0YWRhdGEge1xuICBwcm9wZXJ0eU5hbWU6IHN0cmluZztcbiAgaXNJZDogYm9vbGVhbjtcbiAgaXNDcmVhdGVkQXQ6IGJvb2xlYW47XG4gIGlzVXBkYXRlZEF0OiBib29sZWFuO1xuICBpc0NyZWF0ZWRCeTogYm9vbGVhbjtcbiAgaXNVcGRhdGVkQnk6IGJvb2xlYW47XG4gIGlzR2VuZXJhdGVkOiBib29sZWFuO1xuICBkb2N1bWVudGF0aW9uPzogc3RyaW5nO1xuICBjb2x1bW5PcHRpb25zPzogQ29sdW1uT3B0aW9ucztcbiAgb25lVG9NYW55T3B0aW9ucz86IHsgdHlwZTogRnVuY3Rpb247IG9wdGlvbnM6IE9uZVRvTWFueU9wdGlvbnMgfTtcbiAgbWFueVRvT25lT3B0aW9ucz86IHsgdHlwZTogRnVuY3Rpb247IG9wdGlvbnM6IE1hbnlUb09uZU9wdGlvbnMgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlDb25zdHJ1Y3RvciBleHRlbmRzIEZ1bmN0aW9uIHtcbiAgbmV3KC4uLmFyZ3M6IGFueVtdKTogYW55O1xuICAkZW50aXR5X25hbWU6IHN0cmluZztcbiAgJHRhYmxlX25hbWU6IHN0cmluZztcbiAgJGlkX25hbWU6IHN0cmluZztcbiAgJGlkX2NvbHVtbjogc3RyaW5nO1xuICAkaW5pdGlhbGl6ZWQ/OiBib29sZWFuO1xuICAkZG9jdW1lbnRhdGlvbj86IHN0cmluZztcbn1cblxuLy8gLS0tIEdsb2JhbCBNZXRhZGF0YSBDYWNoZSAtLS1cbmNvbnN0IGdsb2JhbENhY2hlOiBXZWFrTWFwPEZ1bmN0aW9uLCBQcm9wZXJ0eU1ldGFkYXRhW10+ID1cbiAgKGdsb2JhbFRoaXMgYXMgYW55KS5fX2RlY29yYXRvcl9tZXRhZGF0YV9jYWNoZV9fIHx8XG4gICgoZ2xvYmFsVGhpcyBhcyBhbnkpLl9fZGVjb3JhdG9yX21ldGFkYXRhX2NhY2hlX18gPSBuZXcgV2Vha01hcCgpKTtcblxuZnVuY3Rpb24gZ2V0TWV0YWRhdGFBcnJheShjb25zdHJ1Y3RvcjogRnVuY3Rpb24pOiBQcm9wZXJ0eU1ldGFkYXRhW10ge1xuICBpZiAoIWdsb2JhbENhY2hlLmhhcyhjb25zdHJ1Y3RvcikpIHtcbiAgICBnbG9iYWxDYWNoZS5zZXQoY29uc3RydWN0b3IsIFtdKTtcbiAgfVxuICByZXR1cm4gZ2xvYmFsQ2FjaGUuZ2V0KGNvbnN0cnVjdG9yKSE7XG59XG5cbi8vIC0tLSBEZWZlciBIZWxwZXIgKEdyYWFsSlMtc2FmZSBtaWNyb3Rhc2spIC0tLVxuZnVuY3Rpb24gZGVmZXIoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgLy8gVXNlcyBQcm9taXNlIG1pY3JvdGFzayBxdWV1ZSBmb3IgZGVmZXJyZWQgZXhlY3V0aW9uXG4gIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZm4pO1xufVxuXG4vLyAtLS0gQ29yZSBQcm9wZXJ0eSBEZWNvcmF0b3IgRmFjdG9yeSAtLS1cbmZ1bmN0aW9uIGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFxuICBraW5kOiBcImNvbHVtblwiIHwgXCJpZFwiIHwgXCJnZW5lcmF0ZWRcIiB8IFwiY3JlYXRlZEF0XCIgfCBcInVwZGF0ZWRBdFwiIHwgXCJjcmVhdGVkQnlcIiB8IFwidXBkYXRlZEJ5XCIsXG4gIG9wdGlvbnM/OiBDb2x1bW5PcHRpb25zXG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfOiBhbnksIGNvbnRleHQ6IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQua2luZCAhPT0gXCJmaWVsZFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEAke2tpbmR9IG11c3QgYXBwbHkgdG8gZmllbGRzYCk7XG4gICAgfVxuXG4gICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjdG9yID0gKHRoaXMgYXMgYW55KS5jb25zdHJ1Y3RvciBhcyBFbnRpdHlDb25zdHJ1Y3RvcjtcbiAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IGNvbnRleHQubmFtZS50b1N0cmluZygpO1xuICAgICAgY29uc3QgbWV0YWRhdGFBcnJheSA9IGdldE1ldGFkYXRhQXJyYXkoY3Rvcik7XG5cbiAgICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhQXJyYXkuZmluZChcbiAgICAgICAgKG0pID0+IG0ucHJvcGVydHlOYW1lID09PSBwcm9wZXJ0eU5hbWVcbiAgICAgICk7XG5cbiAgICAgIGlmICghbWV0YWRhdGEpIHtcbiAgICAgICAgbWV0YWRhdGEgPSB7XG4gICAgICAgICAgcHJvcGVydHlOYW1lOiBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgaXNJZDogZmFsc2UsXG5cdFx0ICBpc0NyZWF0ZWRBdDogZmFsc2UsXG5cdFx0ICBpc1VwZGF0ZWRBdDogZmFsc2UsXG5cdFx0ICBpc0NyZWF0ZWRCeTogZmFsc2UsXG5cdFx0ICBpc1VwZGF0ZWRCeTogZmFsc2UsXG4gICAgICAgICAgaXNHZW5lcmF0ZWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICBtZXRhZGF0YUFycmF5LnB1c2gobWV0YWRhdGEpO1xuICAgICAgfVxuXG4gICAgICBpZiAoa2luZCA9PT0gXCJpZFwiKSBtZXRhZGF0YS5pc0lkID0gdHJ1ZTtcblx0ICBpZiAoa2luZCA9PT0gXCJjcmVhdGVkQXRcIikgbWV0YWRhdGEuaXNDcmVhdGVkQXQgPSB0cnVlO1xuXHQgIGlmIChraW5kID09PSBcInVwZGF0ZWRBdFwiKSBtZXRhZGF0YS5pc1VwZGF0ZWRBdCA9IHRydWU7XG5cdCAgaWYgKGtpbmQgPT09IFwiY3JlYXRlZEJ5XCIpIG1ldGFkYXRhLmlzQ3JlYXRlZEJ5ID0gdHJ1ZTtcblx0ICBpZiAoa2luZCA9PT0gXCJ1cGRhdGVkQnlcIikgbWV0YWRhdGEuaXNVcGRhdGVkQnkgPSB0cnVlO1xuICAgICAgaWYgKGtpbmQgPT09IFwiZ2VuZXJhdGVkXCIpIG1ldGFkYXRhLmlzR2VuZXJhdGVkID0gdHJ1ZTtcbiAgICAgIGlmIChraW5kID09PSBcImNvbHVtblwiKSBtZXRhZGF0YS5jb2x1bW5PcHRpb25zID0gb3B0aW9ucztcbiAgICB9KTtcbiAgfTtcbn1cblxuLy8gLS0tIEBEb2N1bWVudGF0aW9uIERlY29yYXRvciAoRHVhbC1QdXJwb3NlKSAtLS1cbi8qKlxuICogQWRkcyBkb2N1bWVudGF0aW9uIG1ldGFkYXRhIHRvIGEgY2xhc3Mgb3IgYSBmaWVsZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIERvY3VtZW50YXRpb24oZGVzY3JpcHRpb246IHN0cmluZykge1xuICByZXR1cm4gZnVuY3Rpb24gKFxuICAgIHZhbHVlOiBGdW5jdGlvbiB8IGFueSxcbiAgICBjb250ZXh0OiBDbGFzc0RlY29yYXRvckNvbnRleHQgfCBDbGFzc0ZpZWxkRGVjb3JhdG9yQ29udGV4dFxuICApIHtcbiAgICBpZiAoY29udGV4dC5raW5kID09PSBcImNsYXNzXCIpIHtcbiAgICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgICAodmFsdWUgYXMgRW50aXR5Q29uc3RydWN0b3IpLiRkb2N1bWVudGF0aW9uID0gZGVzY3JpcHRpb247XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9IGVsc2UgaWYgKGNvbnRleHQua2luZCA9PT0gXCJmaWVsZFwiKSB7XG4gICAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgY3RvciA9ICh0aGlzIGFzIGFueSkuY29uc3RydWN0b3IgYXMgRW50aXR5Q29uc3RydWN0b3I7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IGNvbnRleHQubmFtZS50b1N0cmluZygpO1xuICAgICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcblxuICAgICAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YUFycmF5LmZpbmQoXG4gICAgICAgICAgKG0pID0+IG0ucHJvcGVydHlOYW1lID09PSBwcm9wZXJ0eU5hbWVcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICAgICAgbWV0YWRhdGEgPSB7XG4gICAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgICAgIGlzSWQ6IGZhbHNlLFxuXHRcdFx0aXNDcmVhdGVkQXQ6IGZhbHNlLFxuXHRcdFx0aXNVcGRhdGVkQXQ6IGZhbHNlLFxuXHRcdFx0aXNDcmVhdGVkQnk6IGZhbHNlLFxuXHRcdFx0aXNVcGRhdGVkQnk6IGZhbHNlLFxuICAgICAgICAgICAgaXNHZW5lcmF0ZWQ6IGZhbHNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgbWV0YWRhdGFBcnJheS5wdXNoKG1ldGFkYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG1ldGFkYXRhLmRvY3VtZW50YXRpb24gPSBkZXNjcmlwdGlvbjtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cblxuXG4vLyAtLS0gQEVudGl0eSBEZWNvcmF0b3IgLS0tXG4vKipcbiAqIE1hcmtzIGEgY2xhc3MgYXMgYW4gZW50aXR5IGFuZCBpbml0aWF0ZXMgbWV0YWRhdGEgZmluYWxpemF0aW9uLlxuICogQHBhcmFtIGVudGl0eU5hbWUgVGhlIG5hbWUgb2YgdGhlIGVudGl0eSAoZGVmYXVsdHMgdG8gY2xhc3MgbmFtZSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFbnRpdHkoZW50aXR5TmFtZT86IHN0cmluZykge1xuICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlOiBGdW5jdGlvbiwgY29udGV4dDogQ2xhc3NEZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBEZWZlciBleGVjdXRpb24gdG8gZW5zdXJlIGFsbCBmaWVsZCBkZWNvcmF0b3JzIGhhdmUgcnVuXG4gICAgICBkZWZlcigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGN0b3IgPSB2YWx1ZSBhcyBFbnRpdHlDb25zdHJ1Y3RvcjtcblxuICAgICAgICAvLyBQcmV2ZW50IGR1cGxpY2F0ZSByZWdpc3RyYXRpb24gKGlkZW1wb3RlbmN5KVxuICAgICAgICBpZiAoY3Rvci4kaW5pdGlhbGl6ZWQpIHJldHVybjtcbiAgICAgICAgY3Rvci4kaW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgICAgIGN0b3IuJGVudGl0eV9uYW1lID0gZW50aXR5TmFtZSB8fCBjdG9yLm5hbWU7XG5cbiAgICAgICAgY29uc3QgbWV0YWRhdGFBcnJheSA9IGdldE1ldGFkYXRhQXJyYXkoY3Rvcik7XG4gICAgICAgIGNvbnN0IGlkTWV0YWRhdGEgPSBtZXRhZGF0YUFycmF5LmZpbmQoKG0pID0+IG0uaXNJZCk7XG5cbiAgICAgICAgaWYgKGlkTWV0YWRhdGEpIHtcbiAgICAgICAgICBjdG9yLiRpZF9uYW1lID0gaWRNZXRhZGF0YS5wcm9wZXJ0eU5hbWU7XG4gICAgICAgICAgLy8gRGV0ZXJtaW5lIElEIGNvbHVtbiBuYW1lOiB1c2UgZXhwbGljaXQgbmFtZSBvciBjb252ZXJ0IHByb3BlcnR5IG5hbWUgdG8gdXBwZXIgY2FzZVxuICAgICAgICAgIGN0b3IuJGlkX2NvbHVtbiA9XG4gICAgICAgICAgICBpZE1ldGFkYXRhLmNvbHVtbk9wdGlvbnM/Lm5hbWUgfHxcbiAgICAgICAgICAgIGlkTWV0YWRhdGEucHJvcGVydHlOYW1lLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGdXR1cmU6IExvZ2ljIHRvIG1hcCBhbGwgcHJvcGVydGllcyB0byBjb2x1bW5zL3JlbGF0aW9ucyBnb2VzIGhlcmVcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xufVxuXG4vLyAtLS0gQFRhYmxlIERlY29yYXRvciAtLS1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBkYXRhYmFzZSB0YWJsZSBuYW1lIGZvciB0aGUgZW50aXR5LlxuICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgdGFibGUgbmFtZSAoZGVmYXVsdHMgdG8gdXBwZXJjYXNlIGNsYXNzIG5hbWUpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gVGFibGUodGFibGVOYW1lPzogc3RyaW5nKSB7XG4gIHJldHVybiBmdW5jdGlvbiA8VCBleHRlbmRzIEVudGl0eUNvbnN0cnVjdG9yPihcbiAgICB2YWx1ZTogVCxcbiAgICBjb250ZXh0OiBDbGFzc0RlY29yYXRvckNvbnRleHRcbiAgKSB7XG4gICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICAodmFsdWUgYXMgRW50aXR5Q29uc3RydWN0b3IpLiR0YWJsZV9uYW1lID1cbiAgICAgICAgdGFibGVOYW1lIHx8IChjb250ZXh0Lm5hbWU/LnRvU3RyaW5nKCkgPz8gdmFsdWUubmFtZS50b1VwcGVyQ2FzZSgpKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfTtcbn1cblxuLy8gLS0tIEV4cG9ydGVkIFByb3BlcnR5IERlY29yYXRvcnMgLS0tXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgYSBzdGFuZGFyZCBkYXRhYmFzZSBjb2x1bW4uXG4gKi9cbmV4cG9ydCBjb25zdCBDb2x1bW4gPSAob3B0aW9ucz86IENvbHVtbk9wdGlvbnMpID0+XG4gIGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFwiY29sdW1uXCIsIG9wdGlvbnMpO1xuXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgdGhlIGVudGl0eSdzIHByaW1hcnkga2V5LlxuICovXG5leHBvcnQgY29uc3QgSWQgPSAoKSA9PiBjcmVhdGVQcm9wZXJ0eURlY29yYXRvcihcImlkXCIpO1xuXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgdGhlIGVudGl0eSdzIGNyZWF0ZWQgYXQgdGltZXN0YW1wLlxuICovXG5leHBvcnQgY29uc3QgQ3JlYXRlZEF0ID0gKCkgPT4gY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXCJjcmVhdGVkQXRcIik7XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyB0aGUgZW50aXR5J3MgdXBkYXRlIGF0IHRpbWVzdGFtcC5cbiAqL1xuZXhwb3J0IGNvbnN0IFVwZGF0ZWRBdCA9ICgpID0+IGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFwidXBkYXRlZEF0XCIpO1xuXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgdGhlIGVudGl0eSdzIGNyZWF0aW9uIGFjdG9yLlxuICovXG5leHBvcnQgY29uc3QgQ3JlYXRlZEJ5ID0gKCkgPT4gY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXCJjcmVhdGVkQnlcIik7XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyB0aGUgZW50aXR5J3MgdXBkYXRlIGFjdG9yLlxuICovXG5leHBvcnQgY29uc3QgVXBkYXRlZEJ5ID0gKCkgPT4gY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXCJ1cGRhdGVkQnlcIik7XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyBhIGdlbmVyYXRlZCB2YWx1ZSAoZS5nLiwgYXV0by1pbmNyZW1lbnQpLlxuICogQHBhcmFtIHN0cmF0ZWd5IFRoZSBnZW5lcmF0aW9uIHN0cmF0ZWd5IChlLmcuLCBcIklERU5USVRZXCIpLiBQYXJhbWV0ZXIgaXMgY3VycmVudGx5IHVudXNlZCBpbiBsb2dpYy5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmVyYXRlZCA9IChzdHJhdGVneTogc3RyaW5nKSA9PlxuICBjcmVhdGVQcm9wZXJ0eURlY29yYXRvcihcImdlbmVyYXRlZFwiKTtcblxuLyoqXG4gKiBEZWZpbmVzIGEgb25lLXRvLW1hbnkgcmVsYXRpb25zaGlwLlxuICovXG5leHBvcnQgZnVuY3Rpb24gT25lVG9NYW55KFxuICB0eXBlRnVuY3Rpb246ICgpID0+IEZ1bmN0aW9uLFxuICBvcHRpb25zOiBPbmVUb01hbnlPcHRpb25zXG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfOiBhbnksIGNvbnRleHQ6IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQua2luZCAhPT0gXCJmaWVsZFwiKSByZXR1cm47XG5cbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGN0b3IgPSAodGhpcyBhcyBhbnkpLmNvbnN0cnVjdG9yIGFzIEVudGl0eUNvbnN0cnVjdG9yO1xuICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gY29udGV4dC5uYW1lLnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcblxuICAgICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGFBcnJheS5maW5kKFxuICAgICAgICAobSkgPT4gbS5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZVxuICAgICAgKTtcblxuICAgICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgICBtZXRhZGF0YSA9IHtcbiAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgICBpc0lkOiBmYWxzZSxcblx0XHQgIGlzQ3JlYXRlZEF0OiBmYWxzZSxcblx0XHQgIGlzVXBkYXRlZEF0OiBmYWxzZSxcblx0XHQgIGlzQ3JlYXRlZEJ5OiBmYWxzZSxcblx0XHQgIGlzVXBkYXRlZEJ5OiBmYWxzZSxcbiAgICAgICAgICBpc0dlbmVyYXRlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIG1ldGFkYXRhQXJyYXkucHVzaChtZXRhZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIG1ldGFkYXRhLm9uZVRvTWFueU9wdGlvbnMgPSB7IHR5cGU6IHR5cGVGdW5jdGlvbigpLCBvcHRpb25zIH07XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogRGVmaW5lcyBhIG1hbnktdG8tb25lIHJlbGF0aW9uc2hpcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE1hbnlUb09uZShcbiAgdHlwZUZ1bmN0aW9uOiAoKSA9PiBGdW5jdGlvbixcbiAgb3B0aW9uczogTWFueVRvT25lT3B0aW9ucyA9IHt9XG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfOiBhbnksIGNvbnRleHQ6IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQua2luZCAhPT0gXCJmaWVsZFwiKSByZXR1cm47XG5cbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGN0b3IgPSAodGhpcyBhcyBhbnkpLmNvbnN0cnVjdG9yIGFzIEVudGl0eUNvbnN0cnVjdG9yO1xuICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gY29udGV4dC5uYW1lLnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcblxuICAgICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGFBcnJheS5maW5kKFxuICAgICAgICAobSkgPT4gbS5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZVxuICAgICAgKTtcblxuICAgICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgICBtZXRhZGF0YSA9IHtcbiAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgICBpc0lkOiBmYWxzZSxcblx0XHQgIGlzQ3JlYXRlZEF0OiBmYWxzZSxcblx0XHQgIGlzVXBkYXRlZEF0OiBmYWxzZSxcblx0XHQgIGlzQ3JlYXRlZEJ5OiBmYWxzZSxcblx0XHQgIGlzVXBkYXRlZEJ5OiBmYWxzZSxcbiAgICAgICAgICBpc0dlbmVyYXRlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIG1ldGFkYXRhQXJyYXkucHVzaChtZXRhZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIG1ldGFkYXRhLm1hbnlUb09uZU9wdGlvbnMgPSB7IHR5cGU6IHR5cGVGdW5jdGlvbigpLCBvcHRpb25zIH07XG4gICAgfSk7XG4gIH07XG59Il0sCiAgIm1hcHBpbmdzIjogIkFBNkZBLE1BQU0sY0FDSCxXQUFtQixpQ0FDbEIsV0FBbUIsK0JBQStCLG9CQUFJLFFBQVE7QUFFbEUsU0FBUyxpQkFBaUIsYUFBMkM7QUFDbkUsTUFBSSxDQUFDLFlBQVksSUFBSSxXQUFXLEdBQUc7QUFDakMsZ0JBQVksSUFBSSxhQUFhLENBQUMsQ0FBQztBQUFBLEVBQ2pDO0FBQ0EsU0FBTyxZQUFZLElBQUksV0FBVztBQUNwQztBQUdBLFNBQVMsTUFBTSxJQUFzQjtBQUVuQyxVQUFRLFFBQVEsRUFBRSxLQUFLLEVBQUU7QUFDM0I7QUFHQSxTQUFTLHdCQUNQLE1BQ0EsU0FDQTtBQUNBLFNBQU8sU0FBVSxHQUFRLFNBQXFDO0FBQzVELFFBQUksUUFBUSxTQUFTLFNBQVM7QUFDNUIsWUFBTSxJQUFJLE1BQU0sSUFBSSxJQUFJLHVCQUF1QjtBQUFBLElBQ2pEO0FBRUEsWUFBUSxlQUFlLFdBQVk7QUFDakMsWUFBTSxPQUFRLEtBQWE7QUFDM0IsWUFBTSxlQUFlLFFBQVEsS0FBSyxTQUFTO0FBQzNDLFlBQU0sZ0JBQWdCLGlCQUFpQixJQUFJO0FBRTNDLFVBQUksV0FBVyxjQUFjO0FBQUEsUUFDM0IsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCO0FBQUEsTUFDNUI7QUFFQSxVQUFJLENBQUMsVUFBVTtBQUNiLG1CQUFXO0FBQUEsVUFDVDtBQUFBLFVBQ0EsTUFBTTtBQUFBLFVBQ1osYUFBYTtBQUFBLFVBQ2IsYUFBYTtBQUFBLFVBQ2IsYUFBYTtBQUFBLFVBQ2IsYUFBYTtBQUFBLFVBQ1AsYUFBYTtBQUFBLFFBQ2Y7QUFDQSxzQkFBYyxLQUFLLFFBQVE7QUFBQSxNQUM3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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aerokit/sdk",
3
- "version": "12.67.0",
3
+ "version": "12.69.0",
4
4
  "description": "Unified TypeScript SDK for modern cloud platforms.",
5
5
  "scripts": {
6
6
  "clean": "rm -rf dist",