construct-hub 0.4.4 → 0.4.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -35,7 +35,7 @@ class Monitoring extends constructs_1.Construct {
35
35
  * @param alarm
36
36
  */
37
37
  addHighSeverityAlarm(title, alarm) {
38
- var _a, _b, _c;
38
+ var _a, _b;
39
39
  const highSeverityActionArn = (_a = this.alarmActions) === null || _a === void 0 ? void 0 : _a.highSeverity;
40
40
  if (highSeverityActionArn) {
41
41
  alarm.addAlarmAction({
@@ -51,10 +51,10 @@ class Monitoring extends constructs_1.Construct {
51
51
  title,
52
52
  width: 24,
53
53
  }));
54
- (_c = this._highSeverityAlarms) === null || _c === void 0 ? void 0 : _c.push(alarm);
54
+ this._highSeverityAlarms.push(alarm);
55
55
  }
56
56
  addLowSeverityAlarm(_title, alarm) {
57
- var _a, _b, _c;
57
+ var _a, _b;
58
58
  const normalSeverityActionArn = (_a = this.alarmActions) === null || _a === void 0 ? void 0 : _a.normalSeverity;
59
59
  if (normalSeverityActionArn) {
60
60
  alarm.addAlarmAction({
@@ -65,7 +65,7 @@ class Monitoring extends constructs_1.Construct {
65
65
  if (normalSeverityAction) {
66
66
  alarm.addAlarmAction(normalSeverityAction);
67
67
  }
68
- (_c = this._lowSeverityAlarms) === null || _c === void 0 ? void 0 : _c.push(alarm);
68
+ this._lowSeverityAlarms.push(alarm);
69
69
  }
70
70
  get highSeverityAlarms() {
71
71
  return [...this._highSeverityAlarms];
@@ -91,4 +91,4 @@ class Monitoring extends constructs_1.Construct {
91
91
  }
92
92
  }
93
93
  exports.Monitoring = Monitoring;
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9uaXRvcmluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpREFBaUQ7QUFDakQsK0NBQXdDO0FBQ3hDLDJDQUF1QztBQUd2Qyw2Q0FBeUM7QUFZekM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFhLFVBQVcsU0FBUSxzQkFBUztJQWN2QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFFBQXlCLEVBQUU7O1FBQ25FLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO1FBRXZDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSx1QkFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDN0Msb0VBQW9FO1lBQ3BFLGVBQWUsRUFBRSxPQUFBLElBQUksQ0FBQyxZQUFZLDBDQUFFLGNBQWMsRUFDaEQsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUM7Z0JBQ3BDLENBQUMsQ0FBQyxFQUFFO1lBQ04sWUFBWSxFQUFFLE9BQUEsSUFBSSxDQUFDLFlBQVksMENBQUUsb0JBQW9CLEVBQ25ELENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUM7Z0JBQzFDLENBQUMsQ0FBQyxFQUFFO1NBQ1AsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO1FBRTdCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQzNDLElBQUksRUFDSix1QkFBdUIsQ0FDeEIsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSSxvQkFBb0IsQ0FBQyxLQUFhLEVBQUUsS0FBZTs7UUFDeEQsTUFBTSxxQkFBcUIsU0FBRyxJQUFJLENBQUMsWUFBWSwwQ0FBRSxZQUFZLENBQUM7UUFDOUQsSUFBSSxxQkFBcUIsRUFBRTtZQUN6QixLQUFLLENBQUMsY0FBYyxDQUFDO2dCQUNuQixJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxDQUFDO2FBQ3hELENBQUMsQ0FBQztTQUNKO1FBQ0QsTUFBTSxrQkFBa0IsU0FBRyxJQUFJLENBQUMsWUFBWSwwQ0FBRSxrQkFBa0IsQ0FBQztRQUNqRSxJQUFJLGtCQUFrQixFQUFFO1lBQ3RCLEtBQUssQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsQ0FBQztTQUMxQztRQUVELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQ25DLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQztZQUNqQixLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUssRUFBRSxFQUFFO1NBQ1YsQ0FBQyxDQUNILENBQUM7UUFFRixNQUFBLElBQUksQ0FBQyxtQkFBbUIsMENBQUUsSUFBSSxDQUFDLEtBQUssRUFBRTtJQUN4QyxDQUFDO0lBRU0sbUJBQW1CLENBQUMsTUFBYyxFQUFFLEtBQWU7O1FBQ3hELE1BQU0sdUJBQXVCLFNBQUcsSUFBSSxDQUFDLFlBQVksMENBQUUsY0FBYyxDQUFDO1FBQ2xFLElBQUksdUJBQXVCLEVBQUU7WUFDM0IsS0FBSyxDQUFDLGNBQWMsQ0FBQztnQkFDbkIsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQzthQUMxRCxDQUFDLENBQUM7U0FDSjtRQUNELE1BQU0sb0JBQW9CLFNBQUcsSUFBSSxDQUFDLFlBQVksMENBQUUsb0JBQW9CLENBQUM7UUFDckUsSUFBSSxvQkFBb0IsRUFBRTtZQUN4QixLQUFLLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDNUM7UUFDRCxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsSUFBSSxDQUFDLEtBQUssRUFBRTtJQUN2QyxDQUFDO0lBRUQsSUFBVyxrQkFBa0I7UUFDM0IsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQVcsaUJBQWlCO1FBQzFCLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLFlBQVksQ0FBQyxJQUFZLEVBQUUsR0FBVztRQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFJLHNCQUFTLENBQzFCLElBQUksRUFDSixZQUFZLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQzdDO1lBQ0UsR0FBRztZQUNILFdBQVcsRUFBRSxJQUFJO1NBQ2xCLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLElBQUksU0FBUyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1RCxDQUFDO0NBQ0Y7QUE1R0QsZ0NBNEdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY3cgZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgV2F0Y2hmdWwgfSBmcm9tICdjZGstd2F0Y2hmdWwnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBBbGFybUFjdGlvbnMgfSBmcm9tICcuLi9hcGknO1xuaW1wb3J0IHsgSU1vbml0b3JpbmcgfSBmcm9tICcuL2FwaSc7XG5pbXBvcnQgeyBXZWJDYW5hcnkgfSBmcm9tICcuL3dlYi1jYW5hcnknO1xuXG4vKipcbiAqIFByb3BzIGZvciB0aGUgbW9uaXRvcmluZyBjb25zdHJ1Y3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9uaXRvcmluZ1Byb3BzIHtcbiAgLyoqXG4gICAqIEFSTnMgb2YgYWxhcm0gYWN0aW9ucyB0byB0YWtlIGZvciB2YXJpb3VzIHNldmVyaXRpZXMuXG4gICAqL1xuICByZWFkb25seSBhbGFybUFjdGlvbnM/OiBBbGFybUFjdGlvbnM7XG59XG5cbi8qKlxuICogQ29uc3RydWN0IGh1YiBtb25pdG9yaW5nLlxuICpcbiAqIFRoaXMgY29uc3RydWN0IHVzZXMgY2RrLXdhdGNoZnVsIHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYSBkYXNoYm9hcmQgYW5kIGFcbiAqIHNldCBvZiBzdGFuZGFyZCBhbGFybXMgZm9yIGNvbW1vbiByZXNvdXJjZXMuXG4gKlxuICogQ29tcG9uZW50cyBzaG91bGQgdXNlIHRoZSBBUElzIG9mIHRoaXMgbW9kdWxlIHRvIGFkZCB3YXRjaGZ1bCBtb25pdG9ycyxcbiAqIGFuZCBhZGQgY2FuYXJpZXMgYW5kIGFsYXJtcyBhcyBuZWVkZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBNb25pdG9yaW5nIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSU1vbml0b3Jpbmcge1xuICBwcml2YXRlIGFsYXJtQWN0aW9ucz86IEFsYXJtQWN0aW9ucztcbiAgcHJpdmF0ZSBfaGlnaFNldmVyaXR5QWxhcm1zOiBjdy5BbGFybVtdO1xuICBwcml2YXRlIF9sb3dTZXZlcml0eUFsYXJtczogY3cuQWxhcm1bXTtcblxuICAvKipcbiAgICogQWxsb3dzIGFkZGluZyBhdXRvbWF0aWMgbW9uaXRvcmluZyB0byBzdGFuZGFyZCByZXNvdXJjZXMuIE5vdGUgdGhhdFxuICAgKiB3YXRjaGZ1bCBhbGFybXMgYXJlIGFsd2F5cyB0cmVhdGVkIGFzIF9ub3JtYWxfIHNldmVyaXR5LiBZb3UgY2FuIGFkZFxuICAgKiBoaWdoLXNldmVyaXR5IGFsYXJtIHZpYSBgYWRkSGlnaFNldmVyaXR5QWxhcm0oKWAuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgd2F0Y2hmdWw6IFdhdGNoZnVsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaGlnaFNldmVyaXR5RGFzaGJvYXJkOiBjdy5EYXNoYm9hcmQ7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE1vbml0b3JpbmdQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuYWxhcm1BY3Rpb25zID0gcHJvcHMuYWxhcm1BY3Rpb25zO1xuXG4gICAgdGhpcy53YXRjaGZ1bCA9IG5ldyBXYXRjaGZ1bCh0aGlzLCAnV2F0Y2hmdWwnLCB7XG4gICAgICAvLyBhbGFybXMgdGhhdCBjb21lIGZyb20gd2F0Y2hmdWwgYXJlIGFsbCBjb25zaWRlcmVkIG5vcm1hbCBzZXZlcml0eVxuICAgICAgYWxhcm1BY3Rpb25Bcm5zOiB0aGlzLmFsYXJtQWN0aW9ucz8ubm9ybWFsU2V2ZXJpdHlcbiAgICAgICAgPyBbdGhpcy5hbGFybUFjdGlvbnMubm9ybWFsU2V2ZXJpdHldXG4gICAgICAgIDogW10sXG4gICAgICBhbGFybUFjdGlvbnM6IHRoaXMuYWxhcm1BY3Rpb25zPy5ub3JtYWxTZXZlcml0eUFjdGlvblxuICAgICAgICA/IFt0aGlzLmFsYXJtQWN0aW9ucy5ub3JtYWxTZXZlcml0eUFjdGlvbl1cbiAgICAgICAgOiBbXSxcbiAgICB9KTtcblxuICAgIHRoaXMuX2hpZ2hTZXZlcml0eUFsYXJtcyA9IFtdO1xuICAgIHRoaXMuX2xvd1NldmVyaXR5QWxhcm1zID0gW107XG5cbiAgICB0aGlzLmhpZ2hTZXZlcml0eURhc2hib2FyZCA9IG5ldyBjdy5EYXNoYm9hcmQoXG4gICAgICB0aGlzLFxuICAgICAgJ0hpZ2hTZXZlcml0eURhc2hib2FyZCdcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBoaWdoLXNldmVyaXR5IGFsYXJtLiBJZiB0aGlzIGFsYXJtIGdvZXMgb2ZmLCB0aGUgYWN0aW9uIHNwZWNpZmllZCBpbiBgaGlnaFNldmVyaXR5QWxhcm1BY3Rpb25Bcm5gXG4gICAqIEBwYXJhbSBhbGFybVxuICAgKi9cbiAgcHVibGljIGFkZEhpZ2hTZXZlcml0eUFsYXJtKHRpdGxlOiBzdHJpbmcsIGFsYXJtOiBjdy5BbGFybSkge1xuICAgIGNvbnN0IGhpZ2hTZXZlcml0eUFjdGlvbkFybiA9IHRoaXMuYWxhcm1BY3Rpb25zPy5oaWdoU2V2ZXJpdHk7XG4gICAgaWYgKGhpZ2hTZXZlcml0eUFjdGlvbkFybikge1xuICAgICAgYWxhcm0uYWRkQWxhcm1BY3Rpb24oe1xuICAgICAgICBiaW5kOiAoKSA9PiAoeyBhbGFybUFjdGlvbkFybjogaGlnaFNldmVyaXR5QWN0aW9uQXJuIH0pLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGhpZ2hTZXZlcml0eUFjdGlvbiA9IHRoaXMuYWxhcm1BY3Rpb25zPy5oaWdoU2V2ZXJpdHlBY3Rpb247XG4gICAgaWYgKGhpZ2hTZXZlcml0eUFjdGlvbikge1xuICAgICAgYWxhcm0uYWRkQWxhcm1BY3Rpb24oaGlnaFNldmVyaXR5QWN0aW9uKTtcbiAgICB9XG5cbiAgICB0aGlzLmhpZ2hTZXZlcml0eURhc2hib2FyZC5hZGRXaWRnZXRzKFxuICAgICAgbmV3IGN3LkFsYXJtV2lkZ2V0KHtcbiAgICAgICAgYWxhcm0sXG4gICAgICAgIHRpdGxlLFxuICAgICAgICB3aWR0aDogMjQsXG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLl9oaWdoU2V2ZXJpdHlBbGFybXM/LnB1c2goYWxhcm0pO1xuICB9XG5cbiAgcHVibGljIGFkZExvd1NldmVyaXR5QWxhcm0oX3RpdGxlOiBzdHJpbmcsIGFsYXJtOiBjdy5BbGFybSkge1xuICAgIGNvbnN0IG5vcm1hbFNldmVyaXR5QWN0aW9uQXJuID0gdGhpcy5hbGFybUFjdGlvbnM/Lm5vcm1hbFNldmVyaXR5O1xuICAgIGlmIChub3JtYWxTZXZlcml0eUFjdGlvbkFybikge1xuICAgICAgYWxhcm0uYWRkQWxhcm1BY3Rpb24oe1xuICAgICAgICBiaW5kOiAoKSA9PiAoeyBhbGFybUFjdGlvbkFybjogbm9ybWFsU2V2ZXJpdHlBY3Rpb25Bcm4gfSksXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3Qgbm9ybWFsU2V2ZXJpdHlBY3Rpb24gPSB0aGlzLmFsYXJtQWN0aW9ucz8ubm9ybWFsU2V2ZXJpdHlBY3Rpb247XG4gICAgaWYgKG5vcm1hbFNldmVyaXR5QWN0aW9uKSB7XG4gICAgICBhbGFybS5hZGRBbGFybUFjdGlvbihub3JtYWxTZXZlcml0eUFjdGlvbik7XG4gICAgfVxuICAgIHRoaXMuX2xvd1NldmVyaXR5QWxhcm1zPy5wdXNoKGFsYXJtKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGlnaFNldmVyaXR5QWxhcm1zKCkge1xuICAgIHJldHVybiBbLi4udGhpcy5faGlnaFNldmVyaXR5QWxhcm1zXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbG93U2V2ZXJpdHlBbGFybXMoKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLl9sb3dTZXZlcml0eUFsYXJtc107XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGNhbmFyeSB0aGF0IHBpbmdzIGEgY2VydGFpbiBVUkwgYW5kIHJhaXNlcyBhbiBhbGFybSBpbiBjYXNlIHRoZSBVUkxcbiAgICogcmVzcG9uZHMgd2l0aCBhbiBlcnJvciBvdmVyIDgwJSBvZiB0aGUgdGltZXMuXG4gICAqXG4gICAqIENhbmFyeSBmYWlsdXJlcyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgaGlnaC1zZXZlcml0eSAoYXQgdGhpcyBwb2ludCkuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBjYW5hcnlcbiAgICogQHBhcmFtIHVybCBUaGUgVVJMIHRvIHBpbmdcbiAgICovXG4gIHB1YmxpYyBhZGRXZWJDYW5hcnkobmFtZTogc3RyaW5nLCB1cmw6IHN0cmluZykge1xuICAgIGNvbnN0IGNhbmFyeSA9IG5ldyBXZWJDYW5hcnkoXG4gICAgICB0aGlzLFxuICAgICAgYFdlYkNhbmFyeSR7bmFtZS5yZXBsYWNlKC9bXkEtWjAtOV0vZ2ksICcnKX1gLFxuICAgICAge1xuICAgICAgICB1cmwsXG4gICAgICAgIGRpc3BsYXlOYW1lOiBuYW1lLFxuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLmFkZEhpZ2hTZXZlcml0eUFsYXJtKGAke25hbWV9IENhbmFyeWAsIGNhbmFyeS5hbGFybSk7XG4gIH1cbn1cbiJdfQ==
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9uaXRvcmluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpREFBaUQ7QUFDakQsK0NBQXdDO0FBQ3hDLDJDQUF1QztBQUd2Qyw2Q0FBeUM7QUFZekM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFhLFVBQVcsU0FBUSxzQkFBUztJQWN2QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFFBQXlCLEVBQUU7O1FBQ25FLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO1FBRXZDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSx1QkFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDN0Msb0VBQW9FO1lBQ3BFLGVBQWUsRUFBRSxPQUFBLElBQUksQ0FBQyxZQUFZLDBDQUFFLGNBQWMsRUFDaEQsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUM7Z0JBQ3BDLENBQUMsQ0FBQyxFQUFFO1lBQ04sWUFBWSxFQUFFLE9BQUEsSUFBSSxDQUFDLFlBQVksMENBQUUsb0JBQW9CLEVBQ25ELENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUM7Z0JBQzFDLENBQUMsQ0FBQyxFQUFFO1NBQ1AsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO1FBRTdCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQzNDLElBQUksRUFDSix1QkFBdUIsQ0FDeEIsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSSxvQkFBb0IsQ0FBQyxLQUFhLEVBQUUsS0FBbUI7O1FBQzVELE1BQU0scUJBQXFCLFNBQUcsSUFBSSxDQUFDLFlBQVksMENBQUUsWUFBWSxDQUFDO1FBQzlELElBQUkscUJBQXFCLEVBQUU7WUFDekIsS0FBSyxDQUFDLGNBQWMsQ0FBQztnQkFDbkIsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUscUJBQXFCLEVBQUUsQ0FBQzthQUN4RCxDQUFDLENBQUM7U0FDSjtRQUNELE1BQU0sa0JBQWtCLFNBQUcsSUFBSSxDQUFDLFlBQVksMENBQUUsa0JBQWtCLENBQUM7UUFDakUsSUFBSSxrQkFBa0IsRUFBRTtZQUN0QixLQUFLLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLENBQUM7U0FDMUM7UUFFRCxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUNuQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLENBQUM7WUFDakIsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLLEVBQUUsRUFBRTtTQUNWLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU0sbUJBQW1CLENBQUMsTUFBYyxFQUFFLEtBQW1COztRQUM1RCxNQUFNLHVCQUF1QixTQUFHLElBQUksQ0FBQyxZQUFZLDBDQUFFLGNBQWMsQ0FBQztRQUNsRSxJQUFJLHVCQUF1QixFQUFFO1lBQzNCLEtBQUssQ0FBQyxjQUFjLENBQUM7Z0JBQ25CLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsY0FBYyxFQUFFLHVCQUF1QixFQUFFLENBQUM7YUFDMUQsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxNQUFNLG9CQUFvQixTQUFHLElBQUksQ0FBQyxZQUFZLDBDQUFFLG9CQUFvQixDQUFDO1FBQ3JFLElBQUksb0JBQW9CLEVBQUU7WUFDeEIsS0FBSyxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQzVDO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBVyxrQkFBa0I7UUFDM0IsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQVcsaUJBQWlCO1FBQzFCLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLFlBQVksQ0FBQyxJQUFZLEVBQUUsR0FBVztRQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFJLHNCQUFTLENBQzFCLElBQUksRUFDSixZQUFZLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQzdDO1lBQ0UsR0FBRztZQUNILFdBQVcsRUFBRSxJQUFJO1NBQ2xCLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLElBQUksU0FBUyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1RCxDQUFDO0NBQ0Y7QUE1R0QsZ0NBNEdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY3cgZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgV2F0Y2hmdWwgfSBmcm9tICdjZGstd2F0Y2hmdWwnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBBbGFybUFjdGlvbnMgfSBmcm9tICcuLi9hcGknO1xuaW1wb3J0IHsgSU1vbml0b3JpbmcgfSBmcm9tICcuL2FwaSc7XG5pbXBvcnQgeyBXZWJDYW5hcnkgfSBmcm9tICcuL3dlYi1jYW5hcnknO1xuXG4vKipcbiAqIFByb3BzIGZvciB0aGUgbW9uaXRvcmluZyBjb25zdHJ1Y3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9uaXRvcmluZ1Byb3BzIHtcbiAgLyoqXG4gICAqIEFSTnMgb2YgYWxhcm0gYWN0aW9ucyB0byB0YWtlIGZvciB2YXJpb3VzIHNldmVyaXRpZXMuXG4gICAqL1xuICByZWFkb25seSBhbGFybUFjdGlvbnM/OiBBbGFybUFjdGlvbnM7XG59XG5cbi8qKlxuICogQ29uc3RydWN0IGh1YiBtb25pdG9yaW5nLlxuICpcbiAqIFRoaXMgY29uc3RydWN0IHVzZXMgY2RrLXdhdGNoZnVsIHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYSBkYXNoYm9hcmQgYW5kIGFcbiAqIHNldCBvZiBzdGFuZGFyZCBhbGFybXMgZm9yIGNvbW1vbiByZXNvdXJjZXMuXG4gKlxuICogQ29tcG9uZW50cyBzaG91bGQgdXNlIHRoZSBBUElzIG9mIHRoaXMgbW9kdWxlIHRvIGFkZCB3YXRjaGZ1bCBtb25pdG9ycyxcbiAqIGFuZCBhZGQgY2FuYXJpZXMgYW5kIGFsYXJtcyBhcyBuZWVkZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBNb25pdG9yaW5nIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSU1vbml0b3Jpbmcge1xuICBwcml2YXRlIGFsYXJtQWN0aW9ucz86IEFsYXJtQWN0aW9ucztcbiAgcHJpdmF0ZSBfaGlnaFNldmVyaXR5QWxhcm1zOiBjdy5BbGFybUJhc2VbXTtcbiAgcHJpdmF0ZSBfbG93U2V2ZXJpdHlBbGFybXM6IGN3LkFsYXJtQmFzZVtdO1xuXG4gIC8qKlxuICAgKiBBbGxvd3MgYWRkaW5nIGF1dG9tYXRpYyBtb25pdG9yaW5nIHRvIHN0YW5kYXJkIHJlc291cmNlcy4gTm90ZSB0aGF0XG4gICAqIHdhdGNoZnVsIGFsYXJtcyBhcmUgYWx3YXlzIHRyZWF0ZWQgYXMgX25vcm1hbF8gc2V2ZXJpdHkuIFlvdSBjYW4gYWRkXG4gICAqIGhpZ2gtc2V2ZXJpdHkgYWxhcm0gdmlhIGBhZGRIaWdoU2V2ZXJpdHlBbGFybSgpYC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB3YXRjaGZ1bDogV2F0Y2hmdWw7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBoaWdoU2V2ZXJpdHlEYXNoYm9hcmQ6IGN3LkRhc2hib2FyZDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTW9uaXRvcmluZ1Byb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5hbGFybUFjdGlvbnMgPSBwcm9wcy5hbGFybUFjdGlvbnM7XG5cbiAgICB0aGlzLndhdGNoZnVsID0gbmV3IFdhdGNoZnVsKHRoaXMsICdXYXRjaGZ1bCcsIHtcbiAgICAgIC8vIGFsYXJtcyB0aGF0IGNvbWUgZnJvbSB3YXRjaGZ1bCBhcmUgYWxsIGNvbnNpZGVyZWQgbm9ybWFsIHNldmVyaXR5XG4gICAgICBhbGFybUFjdGlvbkFybnM6IHRoaXMuYWxhcm1BY3Rpb25zPy5ub3JtYWxTZXZlcml0eVxuICAgICAgICA/IFt0aGlzLmFsYXJtQWN0aW9ucy5ub3JtYWxTZXZlcml0eV1cbiAgICAgICAgOiBbXSxcbiAgICAgIGFsYXJtQWN0aW9uczogdGhpcy5hbGFybUFjdGlvbnM/Lm5vcm1hbFNldmVyaXR5QWN0aW9uXG4gICAgICAgID8gW3RoaXMuYWxhcm1BY3Rpb25zLm5vcm1hbFNldmVyaXR5QWN0aW9uXVxuICAgICAgICA6IFtdLFxuICAgIH0pO1xuXG4gICAgdGhpcy5faGlnaFNldmVyaXR5QWxhcm1zID0gW107XG4gICAgdGhpcy5fbG93U2V2ZXJpdHlBbGFybXMgPSBbXTtcblxuICAgIHRoaXMuaGlnaFNldmVyaXR5RGFzaGJvYXJkID0gbmV3IGN3LkRhc2hib2FyZChcbiAgICAgIHRoaXMsXG4gICAgICAnSGlnaFNldmVyaXR5RGFzaGJvYXJkJ1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGhpZ2gtc2V2ZXJpdHkgYWxhcm0uIElmIHRoaXMgYWxhcm0gZ29lcyBvZmYsIHRoZSBhY3Rpb24gc3BlY2lmaWVkIGluIGBoaWdoU2V2ZXJpdHlBbGFybUFjdGlvbkFybmBcbiAgICogQHBhcmFtIGFsYXJtXG4gICAqL1xuICBwdWJsaWMgYWRkSGlnaFNldmVyaXR5QWxhcm0odGl0bGU6IHN0cmluZywgYWxhcm06IGN3LkFsYXJtQmFzZSkge1xuICAgIGNvbnN0IGhpZ2hTZXZlcml0eUFjdGlvbkFybiA9IHRoaXMuYWxhcm1BY3Rpb25zPy5oaWdoU2V2ZXJpdHk7XG4gICAgaWYgKGhpZ2hTZXZlcml0eUFjdGlvbkFybikge1xuICAgICAgYWxhcm0uYWRkQWxhcm1BY3Rpb24oe1xuICAgICAgICBiaW5kOiAoKSA9PiAoeyBhbGFybUFjdGlvbkFybjogaGlnaFNldmVyaXR5QWN0aW9uQXJuIH0pLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGhpZ2hTZXZlcml0eUFjdGlvbiA9IHRoaXMuYWxhcm1BY3Rpb25zPy5oaWdoU2V2ZXJpdHlBY3Rpb247XG4gICAgaWYgKGhpZ2hTZXZlcml0eUFjdGlvbikge1xuICAgICAgYWxhcm0uYWRkQWxhcm1BY3Rpb24oaGlnaFNldmVyaXR5QWN0aW9uKTtcbiAgICB9XG5cbiAgICB0aGlzLmhpZ2hTZXZlcml0eURhc2hib2FyZC5hZGRXaWRnZXRzKFxuICAgICAgbmV3IGN3LkFsYXJtV2lkZ2V0KHtcbiAgICAgICAgYWxhcm0sXG4gICAgICAgIHRpdGxlLFxuICAgICAgICB3aWR0aDogMjQsXG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLl9oaWdoU2V2ZXJpdHlBbGFybXMucHVzaChhbGFybSk7XG4gIH1cblxuICBwdWJsaWMgYWRkTG93U2V2ZXJpdHlBbGFybShfdGl0bGU6IHN0cmluZywgYWxhcm06IGN3LkFsYXJtQmFzZSkge1xuICAgIGNvbnN0IG5vcm1hbFNldmVyaXR5QWN0aW9uQXJuID0gdGhpcy5hbGFybUFjdGlvbnM/Lm5vcm1hbFNldmVyaXR5O1xuICAgIGlmIChub3JtYWxTZXZlcml0eUFjdGlvbkFybikge1xuICAgICAgYWxhcm0uYWRkQWxhcm1BY3Rpb24oe1xuICAgICAgICBiaW5kOiAoKSA9PiAoeyBhbGFybUFjdGlvbkFybjogbm9ybWFsU2V2ZXJpdHlBY3Rpb25Bcm4gfSksXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3Qgbm9ybWFsU2V2ZXJpdHlBY3Rpb24gPSB0aGlzLmFsYXJtQWN0aW9ucz8ubm9ybWFsU2V2ZXJpdHlBY3Rpb247XG4gICAgaWYgKG5vcm1hbFNldmVyaXR5QWN0aW9uKSB7XG4gICAgICBhbGFybS5hZGRBbGFybUFjdGlvbihub3JtYWxTZXZlcml0eUFjdGlvbik7XG4gICAgfVxuICAgIHRoaXMuX2xvd1NldmVyaXR5QWxhcm1zLnB1c2goYWxhcm0pO1xuICB9XG5cbiAgcHVibGljIGdldCBoaWdoU2V2ZXJpdHlBbGFybXMoKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLl9oaWdoU2V2ZXJpdHlBbGFybXNdO1xuICB9XG5cbiAgcHVibGljIGdldCBsb3dTZXZlcml0eUFsYXJtcygpIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuX2xvd1NldmVyaXR5QWxhcm1zXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgY2FuYXJ5IHRoYXQgcGluZ3MgYSBjZXJ0YWluIFVSTCBhbmQgcmFpc2VzIGFuIGFsYXJtIGluIGNhc2UgdGhlIFVSTFxuICAgKiByZXNwb25kcyB3aXRoIGFuIGVycm9yIG92ZXIgODAlIG9mIHRoZSB0aW1lcy5cbiAgICpcbiAgICogQ2FuYXJ5IGZhaWx1cmVzIGFyZSBhbHdheXMgY29uc2lkZXJlZCBoaWdoLXNldmVyaXR5IChhdCB0aGlzIHBvaW50KS5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGNhbmFyeVxuICAgKiBAcGFyYW0gdXJsIFRoZSBVUkwgdG8gcGluZ1xuICAgKi9cbiAgcHVibGljIGFkZFdlYkNhbmFyeShuYW1lOiBzdHJpbmcsIHVybDogc3RyaW5nKSB7XG4gICAgY29uc3QgY2FuYXJ5ID0gbmV3IFdlYkNhbmFyeShcbiAgICAgIHRoaXMsXG4gICAgICBgV2ViQ2FuYXJ5JHtuYW1lLnJlcGxhY2UoL1teQS1aMC05XS9naSwgJycpfWAsXG4gICAgICB7XG4gICAgICAgIHVybCxcbiAgICAgICAgZGlzcGxheU5hbWU6IG5hbWUsXG4gICAgICB9XG4gICAgKTtcblxuICAgIHRoaXMuYWRkSGlnaFNldmVyaXR5QWxhcm0oYCR7bmFtZX0gQ2FuYXJ5YCwgY2FuYXJ5LmFsYXJtKTtcbiAgfVxufVxuIl19
@@ -281,5 +281,5 @@ class CodeArtifact {
281
281
  }
282
282
  exports.CodeArtifact = CodeArtifact;
283
283
  _a = JSII_RTTI_SYMBOL_1;
284
- CodeArtifact[_a] = { fqn: "construct-hub.sources.CodeArtifact", version: "0.4.4" };
284
+ CodeArtifact[_a] = { fqn: "construct-hub.sources.CodeArtifact", version: "0.4.7" };
285
285
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1hcnRpZmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYWNrYWdlLXNvdXJjZXMvY29kZS1hcnRpZmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUE4RDtBQUM5RCwrREFRb0M7QUFFcEMsdURBQThDO0FBQzlDLHVFQUFnRTtBQUNoRSxpREFBOEQ7QUFDOUQsdURBQWlEO0FBQ2pELCtDQUFnRTtBQUNoRSxpREFBNkQ7QUFFN0QsNENBS3NCO0FBQ3RCLGtEQUE2QztBQU03QywyQ0FBaUQ7QUFDakQsb0ZBQStFO0FBQy9FLG9GQU1nRDtBQWNoRDs7O0dBR0c7QUFDSCxNQUFhLFlBQVk7SUFDdkIsWUFBb0MsS0FBd0I7UUFBeEIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7SUFBRyxDQUFDO0lBRXpELElBQUksQ0FDVCxLQUFnQixFQUNoQixFQUNFLFFBQVEsRUFDUixTQUFTLEVBQ1QsV0FBVyxFQUNYLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsS0FBSyxHQUNvQjtRQUUzQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ2pELE1BQU0sWUFBWSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUUxSSxNQUFNLGNBQWMsR0FBRywwQkFBZ0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsTUFBTSxNQUFNLEdBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQ2pCLGNBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsUUFBUSxnQkFBZ0IsRUFBRTtnQkFDM0QsaUJBQWlCLEVBQUUsMEJBQWlCLENBQUMsU0FBUztnQkFDOUMsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLGNBQWMsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLHNCQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7YUFDcEQsQ0FBQyxDQUFDO1FBQ0wsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU1QixNQUFNLEdBQUcsR0FBRyxJQUFJLGVBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxRQUFRLE1BQU0sRUFBRTtZQUM5QyxVQUFVLEVBQUUseUJBQWUsQ0FBQyxXQUFXO1lBQ3ZDLGVBQWUsRUFBRSxzQkFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDbEMsaUJBQWlCLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1NBQ3hDLENBQUMsQ0FBQztRQUVILE1BQU0sU0FBUyxHQUFHLElBQUksK0NBQXFCLENBQ3pDLEtBQUssRUFDTCxHQUFHLFFBQVEsWUFBWSxFQUN2QjtZQUNFLGVBQWUsRUFBRSxHQUFHO1lBQ3BCLFdBQVcsRUFBRSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxpQkFBaUIsWUFBWSwwQ0FBMEM7WUFDdkcsV0FBVyxFQUFFO2dCQUNYLG1CQUFtQixFQUFFLE9BQU87Z0JBQzVCLFdBQVcsRUFBRSxNQUFNLENBQUMsVUFBVTtnQkFDOUIsU0FBUyxFQUFFLEtBQUssQ0FBQyxRQUFRO2FBQzFCO1lBQ0QsVUFBVSxFQUFFLElBQUk7WUFDaEIsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM3QixPQUFPLEVBQUUsb0JBQU8sQ0FBQyxNQUFNO1NBQ3hCLENBQ0YsQ0FBQztRQUNGLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakMsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLFNBQVMsQ0FBQyxTQUFTLEVBQUU7UUFDL0IsV0FBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNqQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkMsU0FBUyxDQUFDLGVBQWUsQ0FDdkIsSUFBSSx5QkFBZSxDQUFDO1lBQ2xCLE1BQU0sRUFBRSxnQkFBTSxDQUFDLEtBQUs7WUFDcEIsT0FBTyxFQUFFLENBQUMscUNBQXFDLENBQUM7WUFDaEQsU0FBUyxFQUFFO2dCQUNULG1CQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQztvQkFDeEIsT0FBTyxFQUFFLGNBQWM7b0JBQ3ZCLFFBQVEsRUFBRSxTQUFTO29CQUNuQixTQUFTLEVBQUUsdUJBQVMsQ0FBQyxtQkFBbUI7b0JBQ3hDLFlBQVksRUFBRTt3QkFDWixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxjQUFjO3dCQUNwQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRO3dCQUM5QixLQUFLO3dCQUNMLEdBQUc7cUJBQ0osQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO2lCQUNaLENBQUM7YUFDSDtTQUNGLENBQUMsQ0FDSCxDQUFDO1FBRUYsTUFBTSxJQUFJLEdBQUcsSUFBSSxpQkFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLFFBQVEsY0FBYyxFQUFFO1lBQ3RELFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxpQkFBaUIsWUFBWSxjQUFjO1lBQzFFLFlBQVksRUFBRTtnQkFDWixNQUFNLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztnQkFDNUIsVUFBVSxFQUFFLENBQUMsMkNBQTJDLENBQUM7Z0JBQ3pELE1BQU0sRUFBRTtvQkFDTixXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUM7b0JBQ3BELFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQztvQkFDbEQsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO29CQUNoRCxhQUFhLEVBQUUsQ0FBQyxLQUFLLENBQUM7aUJBQ3ZCO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLG1DQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDekMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxZQUFZLEdBQUcsU0FBUzthQUMzQixZQUFZLEVBQUU7YUFDZCxXQUFXLENBQUMsS0FBSyxFQUFFLEdBQUcsUUFBUSxxQkFBcUIsRUFBRTtZQUNwRCxTQUFTLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksaUJBQWlCLFlBQVksWUFBWTtZQUN0RSxnQkFBZ0IsRUFBRTtnQkFDaEIsaUNBQWlDLFlBQVksYUFBYTtnQkFDMUQsRUFBRTtnQkFDRixnQ0FBZ0MsNkJBQWlCLENBQUMsU0FBUyxDQUFDLEVBQUU7YUFDL0QsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ1osa0JBQWtCLEVBQ2hCLG1DQUFrQixDQUFDLGtDQUFrQztZQUN2RCxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BCLFNBQVMsRUFBRSxDQUFDO1lBQ1osZ0JBQWdCLEVBQUUsaUNBQWdCLENBQUMsT0FBTztTQUMzQyxDQUFDLENBQUM7UUFDTCxVQUFVLENBQUMsb0JBQW9CLENBQzdCLGdCQUFnQixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLFdBQVcsRUFDekQsWUFBWSxDQUNiLENBQUM7UUFFRixNQUFNLGdCQUFnQixHQUFHLElBQUksK0JBQWMsQ0FBQztZQUMxQyxVQUFVLEVBQUUsb0JBQW9CO1lBQ2hDLFlBQVksRUFBRTtnQkFDWixRQUFRLEVBQUUsR0FBRyxDQUFDLHdDQUF3QyxDQUFDO29CQUNyRCxNQUFNLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2lCQUM1QixDQUFDO2dCQUNGLE9BQU8sRUFBRSxHQUFHLENBQUMsMkNBQTJDLENBQUM7b0JBQ3ZELE1BQU0sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7aUJBQzVCLENBQUM7YUFDSDtTQUNGLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEdBQUcsUUFBUSx3QkFBd0IsRUFBRTtZQUN6RCxTQUFTLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksaUJBQWlCLFlBQVksY0FBYztZQUN4RSxnQkFBZ0IsRUFBRTtnQkFDaEIsaUNBQWlDLFlBQVksYUFBYTtnQkFDMUQsRUFBRTtnQkFDRixnQ0FBZ0MsNkJBQWlCLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQzlELGtDQUFrQyx1QkFBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2FBQ3JELENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNaLGtCQUFrQixFQUFFLG1DQUFrQixDQUFDLGtDQUFrQztZQUN6RSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BCLFNBQVMsRUFBRSxDQUFDO1lBQ1osZ0JBQWdCLEVBQUUsaUNBQWdCLENBQUMsYUFBYTtTQUNqRCxDQUFDLENBQUM7UUFDSCxVQUFVLENBQUMsbUJBQW1CLENBQzVCLGdCQUFnQixZQUFZLGdCQUFnQixFQUM1QyxnQkFBZ0IsQ0FDakIsQ0FBQztRQUVGLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXhELGlCQUFpQixDQUFDLHVCQUF1QixDQUN2QyxnQkFBZ0IsWUFBWSxNQUFNLEVBQ2xDLEdBQUcsQ0FDSixDQUFDO1FBQ0YsaUJBQWlCLENBQUMsdUNBQXVDLENBQ3ZELFNBQVMsRUFDVCxHQUFHLFFBQVEsa0JBQWtCLENBQzlCLENBQUM7UUFFRixPQUFPO1lBQ0wsSUFBSSxFQUFFLGlCQUFpQixZQUFZLEVBQUU7WUFDckMsS0FBSyxFQUFFO2dCQUNMO29CQUNFLElBQUksRUFBRSxjQUFjO29CQUNwQixHQUFHLEVBQUUscUNBQXlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7b0JBQ3JELE9BQU8sRUFBRSxJQUFJO2lCQUNkO2dCQUNEO29CQUNFLElBQUksRUFBRSxvQkFBb0I7b0JBQzFCLEdBQUcsRUFBRSw2QkFBaUIsQ0FBQyxTQUFTLENBQUM7aUJBQ2xDO2dCQUNEO29CQUNFLElBQUksRUFBRSxrQkFBa0I7b0JBQ3hCLEdBQUcsRUFBRSxtQ0FBdUIsQ0FBQyxTQUFTLENBQUM7aUJBQ3hDO2dCQUNEO29CQUNFLElBQUksRUFBRSxLQUFLO29CQUNYLEdBQUcsRUFBRSx1QkFBVyxDQUFDLEdBQUcsQ0FBQztpQkFDdEI7YUFDRjtZQUNELGdCQUFnQixFQUFFO2dCQUNoQjtvQkFDRSxJQUFJLDRCQUFXLENBQUM7d0JBQ2QsTUFBTSxFQUFFLENBQUM7d0JBQ1QsS0FBSyxFQUFFLEVBQUU7d0JBQ1QsS0FBSyxFQUFFLGlCQUFpQjt3QkFDeEIsSUFBSSxFQUFFOzRCQUNKLHlCQUFVLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7NEJBQ2pFLHlCQUFVLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO3lCQUN4RDt3QkFDRCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO3dCQUNyQixLQUFLLEVBQUUsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7d0JBQ3hELFVBQVUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7d0JBQ3RCLE1BQU0sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7cUJBQzdCLENBQUM7b0JBQ0YsSUFBSSw0QkFBVyxDQUFDO3dCQUNkLE1BQU0sRUFBRSxDQUFDO3dCQUNULEtBQUssRUFBRSxFQUFFO3dCQUNULEtBQUssRUFBRSxtQkFBbUI7d0JBQzFCLElBQUksRUFBRTs0QkFDSixHQUFHLENBQUMsd0NBQXdDLENBQUM7Z0NBQzNDLEtBQUssRUFBRSxrQkFBa0I7Z0NBQ3pCLE1BQU0sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7NkJBQzVCLENBQUM7NEJBQ0YsR0FBRyxDQUFDLDJDQUEyQyxDQUFDO2dDQUM5QyxLQUFLLEVBQUUsaUJBQWlCO2dDQUN4QixNQUFNLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDOzZCQUM1QixDQUFDO3lCQUNIO3dCQUNELFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7d0JBQ3JCLEtBQUssRUFBRTs0QkFDTCxHQUFHLENBQUMsbUNBQW1DLENBQUM7Z0NBQ3RDLEtBQUssRUFBRSxvQkFBb0I7Z0NBQzNCLE1BQU0sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7NkJBQzVCLENBQUM7eUJBQ0g7d0JBQ0QsVUFBVSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtxQkFDdkIsQ0FBQztpQkFDSDtnQkFDRDtvQkFDRSxJQUFJLDRCQUFXLENBQUM7d0JBQ2QsTUFBTSxFQUFFLENBQUM7d0JBQ1QsS0FBSyxFQUFFLEVBQUU7d0JBQ1QsS0FBSyxFQUFFLGlCQUFpQjt3QkFDeEIsSUFBSSxFQUFFOzRCQUNKLHlCQUFVLENBQ1IsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLENBQUMsRUFDL0QsQ0FBQyxDQUNGOzRCQUNELHlCQUFVLENBQ1IsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLENBQUMsRUFDN0QsQ0FBQyxDQUNGOzRCQUNELHlCQUFVLENBQ1IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxDQUFDLEVBQ3BELENBQUMsQ0FDRjs0QkFDRCx5QkFBVSxDQUNSLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxDQUFDLEVBQ3JELENBQUMsQ0FDRjt5QkFDRjt3QkFDRCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO3FCQUN0QixDQUFDO2lCQUNIO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0kscUJBQXFCLENBQUMsSUFBb0I7UUFDL0MsT0FBTyxJQUFJLHVCQUFNLENBQUM7WUFDaEIsTUFBTSxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUMzQixTQUFTLEVBQUUsMEJBQVMsQ0FBQyxHQUFHO1lBQ3hCLEdBQUcsSUFBSTtZQUNQLGFBQWEsRUFBRTtnQkFDYixDQUFDLGdEQUFzQixDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsZUFBZTtnQkFDL0QsQ0FBQywrQ0FBcUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGNBQWM7Z0JBQzdELENBQUMsbURBQXlCLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRO2FBQzVEO1lBQ0QsVUFBVSwyQ0FBOEI7WUFDeEMsU0FBUyxFQUFFLDJDQUFpQjtTQUM3QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSx1QkFBdUIsQ0FBQyxJQUFvQjs7UUFDakQsT0FBTyxJQUFJLHVCQUFNLENBQUM7WUFDaEIsTUFBTSxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUMzQixTQUFTLEVBQUUsMEJBQVMsQ0FBQyxHQUFHO1lBQ3hCLEdBQUcsSUFBSTtZQUNQLGFBQWEsRUFBRTtnQkFDYixDQUFDLGdEQUFzQixDQUFDLFFBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGVBQWUsbUNBQUksaUJBQUcsQ0FBQyxVQUFVO2dCQUN6RCxDQUFDLCtDQUFxQixDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsY0FBYztnQkFDN0QsQ0FBQyxtREFBeUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVE7YUFDNUQ7WUFDRCxVQUFVLG1EQUErQjtZQUN6QyxTQUFTLEVBQUUsMkNBQWlCO1NBQzdCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSSxrQkFBa0IsQ0FBQyxJQUFvQjs7UUFDNUMsT0FBTyxJQUFJLHVCQUFNLENBQUM7WUFDaEIsTUFBTSxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUMzQixTQUFTLEVBQUUsMEJBQVMsQ0FBQyxHQUFHO1lBQ3hCLEdBQUcsSUFBSTtZQUNQLGFBQWEsRUFBRTtnQkFDYixDQUFDLGdEQUFzQixDQUFDLFFBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGVBQWUsbUNBQUksaUJBQUcsQ0FBQyxVQUFVO2dCQUN6RCxDQUFDLCtDQUFxQixDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsY0FBYztnQkFDN0QsQ0FBQyxtREFBeUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVE7YUFDNUQ7WUFDRCxVQUFVLG9DQUEwQjtZQUNwQyxTQUFTLEVBQUUsMkNBQWlCO1NBQzdCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLHlCQUF5QixDQUFDLElBQW9COztRQUNuRCxPQUFPLElBQUksdUJBQU0sQ0FBQztZQUNoQixNQUFNLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzNCLFNBQVMsRUFBRSwwQkFBUyxDQUFDLEdBQUc7WUFDeEIsR0FBRyxJQUFJO1lBQ1AsYUFBYSxFQUFFO2dCQUNiLENBQUMsZ0RBQXNCLENBQUMsUUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsZUFBZSxtQ0FBSSxpQkFBRyxDQUFDLFVBQVU7Z0JBQ3pELENBQUMsK0NBQXFCLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxjQUFjO2dCQUM3RCxDQUFDLG1EQUF5QixDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUTthQUM1RDtZQUNELFVBQVUsb0RBQW1DO1lBQzdDLFNBQVMsRUFBRSwyQ0FBaUI7U0FDN0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUF2VEgsb0NBd1RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJuRm9ybWF0LCBBd3MsIER1cmF0aW9uLCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIENvbXBhcmlzb25PcGVyYXRvcixcbiAgR3JhcGhXaWRnZXQsXG4gIE1hdGhFeHByZXNzaW9uLFxuICBNZXRyaWMsXG4gIE1ldHJpY09wdGlvbnMsXG4gIFN0YXRpc3RpYyxcbiAgVHJlYXRNaXNzaW5nRGF0YSxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgQ2ZuUmVwb3NpdG9yeSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlYXJ0aWZhY3QnO1xuaW1wb3J0IHsgUnVsZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMnO1xuaW1wb3J0IHsgTGFtYmRhRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzLXRhcmdldHMnO1xuaW1wb3J0IHsgRWZmZWN0LCBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IFRyYWNpbmcgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IEJsb2NrUHVibGljQWNjZXNzLCBJQnVja2V0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCB7IFF1ZXVlLCBRdWV1ZUVuY3J5cHRpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3FzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHtcbiAgY29kZUFydGlmYWN0UmVwb3NpdG9yeVVybCxcbiAgbGFtYmRhRnVuY3Rpb25VcmwsXG4gIGxhbWJkYVNlYXJjaExvZ0dyb3VwVXJsLFxuICBzcXNRdWV1ZVVybCxcbn0gZnJvbSAnLi4vZGVlcC1saW5rJztcbmltcG9ydCB7IGZpbGxNZXRyaWMgfSBmcm9tICcuLi9tZXRyaWMtdXRpbHMnO1xuaW1wb3J0IHR5cGUge1xuICBJUGFja2FnZVNvdXJjZSxcbiAgUGFja2FnZVNvdXJjZUJpbmRPcHRpb25zLFxuICBQYWNrYWdlU291cmNlQmluZFJlc3VsdCxcbn0gZnJvbSAnLi4vcGFja2FnZS1zb3VyY2UnO1xuaW1wb3J0IHsgUzNTdG9yYWdlRmFjdG9yeSB9IGZyb20gJy4uL3MzL3N0b3JhZ2UnO1xuaW1wb3J0IHsgQ29kZUFydGlmYWN0Rm9yd2FyZGVyIH0gZnJvbSAnLi9jb2RlYXJ0aWZhY3QvY29kZS1hcnRpZmFjdC1mb3J3YXJkZXInO1xuaW1wb3J0IHtcbiAgTUVUUklDU19OQU1FU1BBQ0UsXG4gIE1ldHJpY05hbWUsXG4gIERPTUFJTl9OQU1FX0RJTUVOU0lPTixcbiAgRE9NQUlOX09XTkVSX0RJTUVOU0lPTixcbiAgUkVQT1NJVE9SWV9OQU1FX0RJTUVOU0lPTixcbn0gZnJvbSAnLi9jb2RlYXJ0aWZhY3QvY29uc3RhbnRzLmxhbWJkYS1zaGFyZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvZGVBcnRpZmFjdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBDb2RlQXJ0aWZhY3QgcmVwb3NpdG9yeSB3aGVyZSBwYWNrYWdlcyBhcmUgb2J0YWluZWQgZnJvbS5cbiAgICovXG4gIHJlYWRvbmx5IHJlcG9zaXRvcnk6IENmblJlcG9zaXRvcnk7XG5cbiAgLyoqXG4gICAqIFRoZSBTMyBidWNrZXQgd2hlcmUgcGFja2FnZXMgd2lsbCBiZSBzdGFnZWQuXG4gICAqL1xuICByZWFkb25seSBidWNrZXQ/OiBJQnVja2V0O1xufVxuXG4vKipcbiAqIEEgcGFja2FnZSBzb3VyY2UgdGhhdCBvYnRhaW5zIHBhY2thZ2UgZGF0YSBmcm9tIGFuIG5wbSBDb2RlQXJ0aWZhY3RcbiAqIHJlcG9zaXRvcnkuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb2RlQXJ0aWZhY3QgaW1wbGVtZW50cyBJUGFja2FnZVNvdXJjZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBDb2RlQXJ0aWZhY3RQcm9wcykge31cblxuICBwdWJsaWMgYmluZChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIHtcbiAgICAgIGRlbnlMaXN0LFxuICAgICAgaW5nZXN0aW9uLFxuICAgICAgbGljZW5zZUxpc3QsXG4gICAgICBtb25pdG9yaW5nLFxuICAgICAgb3ZlcnZpZXdEYXNoYm9hcmQsXG4gICAgICBxdWV1ZSxcbiAgICB9OiBQYWNrYWdlU291cmNlQmluZE9wdGlvbnNcbiAgKTogUGFja2FnZVNvdXJjZUJpbmRSZXN1bHQge1xuICAgIGNvbnN0IGlkUHJlZml4ID0gdGhpcy5wcm9wcy5yZXBvc2l0b3J5Lm5vZGUucGF0aDtcbiAgICBjb25zdCByZXBvc2l0b3J5SWQgPSBgJHt0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk93bmVyfToke3RoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyRG9tYWluTmFtZX0vJHt0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ck5hbWV9YDtcblxuICAgIGNvbnN0IHN0b3JhZ2VGYWN0b3J5ID0gUzNTdG9yYWdlRmFjdG9yeS5nZXRPckNyZWF0ZShzY29wZSk7XG4gICAgY29uc3QgYnVja2V0ID1cbiAgICAgIHRoaXMucHJvcHMuYnVja2V0IHx8XG4gICAgICBzdG9yYWdlRmFjdG9yeS5uZXdCdWNrZXQoc2NvcGUsIGAke2lkUHJlZml4fS9TdGFnaW5nQnVja2V0YCwge1xuICAgICAgICBibG9ja1B1YmxpY0FjY2VzczogQmxvY2tQdWJsaWNBY2Nlc3MuQkxPQ0tfQUxMLFxuICAgICAgICBlbmZvcmNlU1NMOiB0cnVlLFxuICAgICAgICBsaWZlY3ljbGVSdWxlczogW3sgZXhwaXJhdGlvbjogRHVyYXRpb24uZGF5cygzMCkgfV0sXG4gICAgICB9KTtcbiAgICBidWNrZXQuZ3JhbnRSZWFkKGluZ2VzdGlvbik7XG5cbiAgICBjb25zdCBkbHEgPSBuZXcgUXVldWUoc2NvcGUsIGAke2lkUHJlZml4fS9ETFFgLCB7XG4gICAgICBlbmNyeXB0aW9uOiBRdWV1ZUVuY3J5cHRpb24uS01TX01BTkFHRUQsXG4gICAgICByZXRlbnRpb25QZXJpb2Q6IER1cmF0aW9uLmRheXMoMTQpLFxuICAgICAgdmlzaWJpbGl0eVRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoMTUpLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZm9yd2FyZGVyID0gbmV3IENvZGVBcnRpZmFjdEZvcndhcmRlcihcbiAgICAgIHNjb3BlLFxuICAgICAgYCR7aWRQcmVmaXh9L0ZvcndhcmRlcmAsXG4gICAgICB7XG4gICAgICAgIGRlYWRMZXR0ZXJRdWV1ZTogZGxxLFxuICAgICAgICBkZXNjcmlwdGlvbjogYFske3Njb3BlLm5vZGUucGF0aH0vQ29kZUFydGlmYWN0LyR7cmVwb3NpdG9yeUlkfV0gSGFuZGxlIENvZGVBcnRpZmFjdCBFdmVudEJyaWRnZSBldmVudHNgLFxuICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgIEFXU19FTUZfRU5WSVJPTk1FTlQ6ICdMb2NhbCcsXG4gICAgICAgICAgQlVDS0VUX05BTUU6IGJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICAgIFFVRVVFX1VSTDogcXVldWUucXVldWVVcmwsXG4gICAgICAgIH0sXG4gICAgICAgIG1lbW9yeVNpemU6IDEwMjQsXG4gICAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoNjApLFxuICAgICAgICB0cmFjaW5nOiBUcmFjaW5nLkFDVElWRSxcbiAgICAgIH1cbiAgICApO1xuICAgIGJ1Y2tldC5ncmFudFJlYWRXcml0ZShmb3J3YXJkZXIpO1xuICAgIGRlbnlMaXN0Py5ncmFudFJlYWQoZm9yd2FyZGVyKTtcbiAgICBsaWNlbnNlTGlzdC5ncmFudFJlYWQoZm9yd2FyZGVyKTtcbiAgICBxdWV1ZS5ncmFudFNlbmRNZXNzYWdlcyhmb3J3YXJkZXIpO1xuICAgIGZvcndhcmRlci5hZGRUb1JvbGVQb2xpY3koXG4gICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgIGFjdGlvbnM6IFsnY29kZWFydGlmYWN0OkdldFBhY2thZ2VWZXJzaW9uQXNzZXQnXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgU3RhY2sub2Yoc2NvcGUpLmZvcm1hdEFybih7XG4gICAgICAgICAgICBzZXJ2aWNlOiAnY29kZWFydGlmYWN0JyxcbiAgICAgICAgICAgIHJlc291cmNlOiAncGFja2FnZScsXG4gICAgICAgICAgICBhcm5Gb3JtYXQ6IEFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FLFxuICAgICAgICAgICAgcmVzb3VyY2VOYW1lOiBbXG4gICAgICAgICAgICAgIHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyRG9tYWluTmFtZSxcbiAgICAgICAgICAgICAgdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJOYW1lLFxuICAgICAgICAgICAgICAnbnBtJywgLy8gcGFja2FnZSBmb3JtYXRcbiAgICAgICAgICAgICAgJyonLCAvLyBuYW1lc3BhY2UvcGFja2FnZS1uYW1lXG4gICAgICAgICAgICBdLmpvaW4oJy8nKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IHJ1bGUgPSBuZXcgUnVsZShzY29wZSwgYCR7aWRQcmVmaXh9L0V2ZW50QnJpZGdlYCwge1xuICAgICAgZGVzY3JpcHRpb246IGAke3Njb3BlLm5vZGUucGF0aH0vQ29kZUFydGlmYWN0LyR7cmVwb3NpdG9yeUlkfS9FdmVudEJyaWRnZWAsXG4gICAgICBldmVudFBhdHRlcm46IHtcbiAgICAgICAgc291cmNlOiBbJ2F3cy5jb2RlYXJ0aWZhY3QnXSxcbiAgICAgICAgZGV0YWlsVHlwZTogWydDb2RlQXJ0aWZhY3QgUGFja2FnZSBWZXJzaW9uIFN0YXRlIENoYW5nZSddLFxuICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICBkb21haW5Pd25lcjogW3RoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyRG9tYWluT3duZXJdLFxuICAgICAgICAgIGRvbWFpbk5hbWU6IFt0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk5hbWVdLFxuICAgICAgICAgIHJlcG9zaXRvcnlOYW1lOiBbdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJOYW1lXSxcbiAgICAgICAgICBwYWNrYWdlRm9ybWF0OiBbJ25wbSddLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHRhcmdldHM6IFtuZXcgTGFtYmRhRnVuY3Rpb24oZm9yd2FyZGVyKV0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBmYWlsdXJlQWxhcm0gPSBmb3J3YXJkZXJcbiAgICAgIC5tZXRyaWNFcnJvcnMoKVxuICAgICAgLmNyZWF0ZUFsYXJtKHNjb3BlLCBgJHtpZFByZWZpeH0vRm9yd2FyZGVyL0ZhaWx1cmVzYCwge1xuICAgICAgICBhbGFybU5hbWU6IGAke3Njb3BlLm5vZGUucGF0aH0vQ29kZUFydGlmYWN0LyR7cmVwb3NpdG9yeUlkfS9Gb3J3YXJkZXJgLFxuICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgYFRoZSBDb2RlQXJ0aWZhY3QgZm93YXJkZXIgZm9yICR7cmVwb3NpdG9yeUlkfSBpcyBmYWlsaW5nYCxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBgTGluayB0byB0aGUgbGFtYmRhIGZ1bmN0aW9uOiAke2xhbWJkYUZ1bmN0aW9uVXJsKGZvcndhcmRlcil9YCxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOlxuICAgICAgICAgIENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMyxcbiAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLk1JU1NJTkcsXG4gICAgICB9KTtcbiAgICBtb25pdG9yaW5nLmFkZEhpZ2hTZXZlcml0eUFsYXJtKFxuICAgICAgYENvZGVBcnRpZmFjdDoke3RoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyTmFtZX0gRmFpbHVyZXNgLFxuICAgICAgZmFpbHVyZUFsYXJtXG4gICAgKTtcblxuICAgIGNvbnN0IGRscU5vdEVtcHR5QWxhcm0gPSBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgZXhwcmVzc2lvbjogJ21WaXNpYmxlICsgbUhpZGRlbicsXG4gICAgICB1c2luZ01ldHJpY3M6IHtcbiAgICAgICAgbVZpc2libGU6IGRscS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNWaXNpYmxlKHtcbiAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICAgIH0pLFxuICAgICAgICBtSGlkZGVuOiBkbHEubWV0cmljQXBwcm94aW1hdGVOdW1iZXJPZk1lc3NhZ2VzTm90VmlzaWJsZSh7XG4gICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSkuY3JlYXRlQWxhcm0oc2NvcGUsIGAke2lkUHJlZml4fS9Gb3J3YXJkZXIvRExRTm90RW1wdHlgLCB7XG4gICAgICBhbGFybU5hbWU6IGAke3Njb3BlLm5vZGUucGF0aH0vQ29kZUFydGlmYWN0LyR7cmVwb3NpdG9yeUlkfS9ETFFOb3RFbXB0eWAsXG4gICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgIGBUaGUgQ29kZUFydGlmYWN0IGZvd2FyZGVyIGZvciAke3JlcG9zaXRvcnlJZH0gaXMgZmFpbGluZ2AsXG4gICAgICAgICcnLFxuICAgICAgICBgTGluayB0byB0aGUgbGFtYmRhIGZ1bmN0aW9uOiAke2xhbWJkYUZ1bmN0aW9uVXJsKGZvcndhcmRlcil9YCxcbiAgICAgICAgYExpbmsgdG8gdGhlIGRlYWQgbGV0dGVyIHF1ZXVlOiAke3Nxc1F1ZXVlVXJsKGRscSl9YCxcbiAgICAgIF0uam9pbignL24nKSxcbiAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgICBldmFsdWF0aW9uUGVyaW9kczogMSxcbiAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IFRyZWF0TWlzc2luZ0RhdGEuTk9UX0JSRUFDSElORyxcbiAgICB9KTtcbiAgICBtb25pdG9yaW5nLmFkZExvd1NldmVyaXR5QWxhcm0oXG4gICAgICBgQ29kZUFydGlmYWN0LyR7cmVwb3NpdG9yeUlkfSBETFEgTm90IEVtcHR5YCxcbiAgICAgIGRscU5vdEVtcHR5QWxhcm1cbiAgICApO1xuXG4gICAgcnVsZS5ub2RlLmFkZERlcGVuZGVuY3koZmFpbHVyZUFsYXJtLCBkbHFOb3RFbXB0eUFsYXJtKTtcblxuICAgIG92ZXJ2aWV3RGFzaGJvYXJkLmFkZERMUU1ldHJpY1RvRGFzaGJvYXJkKFxuICAgICAgYENvZGVBcnRpZmFjdC8ke3JlcG9zaXRvcnlJZH0gRExRYCxcbiAgICAgIGRscVxuICAgICk7XG4gICAgb3ZlcnZpZXdEYXNoYm9hcmQuYWRkQ29uY3VycmVudEV4ZWN1dGlvbk1ldHJpY1RvRGFzaGJvYXJkKFxuICAgICAgZm9yd2FyZGVyLFxuICAgICAgYCR7aWRQcmVmaXh9L0ZvcndhcmRlckxhbWJkYWBcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IGBDb2RlQXJ0aWZhY3Q6ICR7cmVwb3NpdG9yeUlkfWAsXG4gICAgICBsaW5rczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0NvZGVBcnRpZmFjdCcsXG4gICAgICAgICAgdXJsOiBjb2RlQXJ0aWZhY3RSZXBvc2l0b3J5VXJsKHRoaXMucHJvcHMucmVwb3NpdG9yeSksXG4gICAgICAgICAgcHJpbWFyeTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdGb3J3YXJkZXIgRnVuY3Rpb24nLFxuICAgICAgICAgIHVybDogbGFtYmRhRnVuY3Rpb25VcmwoZm9yd2FyZGVyKSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdTZWFyY2ggTG9nIGdyb3VwJyxcbiAgICAgICAgICB1cmw6IGxhbWJkYVNlYXJjaExvZ0dyb3VwVXJsKGZvcndhcmRlciksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnRExRJyxcbiAgICAgICAgICB1cmw6IHNxc1F1ZXVlVXJsKGRscSksXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgZGFzaGJvYXJkV2lkZ2V0czogW1xuICAgICAgICBbXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnRnVuY3Rpb24gSGVhbHRoJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhmb3J3YXJkZXIubWV0cmljSW52b2NhdGlvbnMoeyBsYWJlbDogJ0ludm9jYXRpb25zJyB9KSksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoZm9yd2FyZGVyLm1ldHJpY0Vycm9ycyh7IGxhYmVsOiAnRXJyb3JzJyB9KSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgICAgcmlnaHQ6IFtmb3J3YXJkZXIubWV0cmljRHVyYXRpb24oeyBsYWJlbDogJ0R1cmF0aW9uJyB9KV0sXG4gICAgICAgICAgICByaWdodFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDE1KSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdEZWFkIExldHRlciBRdWV1ZScsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGRscS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNWaXNpYmxlKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1Zpc2libGUgTWVzc2FnZXMnLFxuICAgICAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIGRscS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNOb3RWaXNpYmxlKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0hpZGRlbiBNZXNzYWdlcycsXG4gICAgICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICByaWdodDogW1xuICAgICAgICAgICAgICBkbHEubWV0cmljQXBwcm94aW1hdGVBZ2VPZk9sZGVzdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnT2xkZXN0IE1lc3NhZ2UgQWdlJyxcbiAgICAgICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHJpZ2h0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICAgIFtcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdRdWFsaXR5IE1ldHJpY3MnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHRoaXMubWV0cmljTm90SnNpaUVuYWJsZWRDb3VudCh7IGxhYmVsOiAnTm90IGEganNpaSBwYWNrYWdlJyB9KSxcbiAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgdGhpcy5tZXRyaWNJbmVsaWdpYmxlTGljZW5zZSh7IGxhYmVsOiAnSW5lbGlnaWJsZSBMaWNlbnNlJyB9KSxcbiAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgdGhpcy5tZXRyaWNEZW55TGlzdGVkQ291bnQoeyBsYWJlbDogJ0RlbnkgTGlzdGVkJyB9KSxcbiAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgdGhpcy5tZXRyaWNEZWxldGVkQ291bnQoeyBsYWJlbDogJ0RlbGV0aW9uIEV2ZW50cycgfSksXG4gICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY291bnQgb2YgcGFja2FnZSB2ZXJzaW9ucyB0aGF0IHdlcmUgaWdub3JlZCBkdWUgdG8gYmVpbmcgaW4gdGhlIGRlbnkgbGlzdC5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNEZW55TGlzdGVkQ291bnQob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLlNVTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgIFtET01BSU5fT1dORVJfRElNRU5TSU9OXTogdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5Pd25lcixcbiAgICAgICAgW0RPTUFJTl9OQU1FX0RJTUVOU0lPTl06IHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyRG9tYWluTmFtZSxcbiAgICAgICAgW1JFUE9TSVRPUllfTkFNRV9ESU1FTlNJT05dOiB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ck5hbWUsXG4gICAgICB9LFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5ERU5ZX0xJU1RFRF9DT1VOVCxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBwYWNrYWdlIHZlcnNpb25zIHRoYXQgd2VyZSBpZ25vcmVkIGR1ZSB0byB1c2luZyBhbiBpbmVsb2lnaWJsZSBsaWNlbnNlLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0luZWxpZ2libGVMaWNlbnNlKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICBbRE9NQUlOX09XTkVSX0RJTUVOU0lPTl06XG4gICAgICAgICAgdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5Pd25lciA/PyBBd3MuQUNDT1VOVF9JRCxcbiAgICAgICAgW0RPTUFJTl9OQU1FX0RJTUVOU0lPTl06IHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyRG9tYWluTmFtZSxcbiAgICAgICAgW1JFUE9TSVRPUllfTkFNRV9ESU1FTlNJT05dOiB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ck5hbWUsXG4gICAgICB9LFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5JTkVMSUdJQkxFX0xJQ0VOU0UsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgcGFja2FnZSB2ZXJzaW9ucyB0aGF0IHdlcmUgZGVsZXRlZCBmcm9tIENvZGVBcnRpZmFjdCAodGhvc2UgZXZlbnRzIGFyZSBub3RcbiAgICogaGFuZGxlZCBjdXJyZW50bHkpLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0RlbGV0ZWRDb3VudChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgW0RPTUFJTl9PV05FUl9ESU1FTlNJT05dOlxuICAgICAgICAgIHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyRG9tYWluT3duZXIgPz8gQXdzLkFDQ09VTlRfSUQsXG4gICAgICAgIFtET01BSU5fTkFNRV9ESU1FTlNJT05dOiB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk5hbWUsXG4gICAgICAgIFtSRVBPU0lUT1JZX05BTUVfRElNRU5TSU9OXTogdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJOYW1lLFxuICAgICAgfSxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuREVMRVRFRF9DT1VOVCxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBwYWNrYWdlIHZlcnNpb25zIHRoYXQgZG8gbm90IGhhdmUgYSBqc2lpIGFzc2VtYmx5IGluIHRoZSBwYWNrYWdlLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY05vdEpzaWlFbmFibGVkQ291bnQob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLlNVTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgIFtET01BSU5fT1dORVJfRElNRU5TSU9OXTpcbiAgICAgICAgICB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk93bmVyID8/IEF3cy5BQ0NPVU5UX0lELFxuICAgICAgICBbRE9NQUlOX05BTUVfRElNRU5TSU9OXTogdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5OYW1lLFxuICAgICAgICBbUkVQT1NJVE9SWV9OQU1FX0RJTUVOU0lPTl06IHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyTmFtZSxcbiAgICAgIH0sXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLk5PVF9KU0lJX0VOQUJMRURfQ09VTlQsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -23,7 +23,20 @@ export declare const enum MetricName {
23
23
  * The number of package versions that were tracked at the beginning of the
24
24
  * package canary execution that produced the data point.
25
25
  */
26
- TRACKED_VERSION_COUNT = "TrackedVersionCount"
26
+ TRACKED_VERSION_COUNT = "TrackedVersionCount",
27
+ /**
28
+ * The estimated lag between the npm registry replica (replicate.npmjs.com)
29
+ * and the primary registry (registry.npmjs.com). This cannot be measured
30
+ * directly because the primary does not expose the relevant CouchDB endpoints,
31
+ * so we use the probe package to get a low-resolution view of this.
32
+ */
33
+ NPM_REPLICA_LAG = "EstimatedNpmReplicaLag",
34
+ /**
35
+ * A metric tracking whether the npm registry replica (replicate.npmjs.com)
36
+ * is down. The value is 1 when the replica is detected to be down, and 0
37
+ * when the replica is detected to be up.
38
+ */
39
+ NPM_REPLICA_DOWN = "NpmReplicaIsDown"
27
40
  }
28
41
  export declare const enum ObjectKey {
29
42
  STATE_PREFIX = "package-canary/",
@@ -2,4 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.METRICS_NAMESPACE = void 0;
4
4
  exports.METRICS_NAMESPACE = 'ConstructHub/PackageCanary';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BhY2thZ2Utc291cmNlcy9ucG1qcy9jYW5hcnkvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU1hLFFBQUEsaUJBQWlCLEdBQUcsNEJBQTRCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZW51bSBFbnZpcm9ubWVudCB7XG4gIFBBQ0tBR0VfTkFNRSA9ICdQQUNLQUdFX05BTUUnLFxuICBQQUNLQUdFX0NBTkFSWV9CVUNLRVRfTkFNRSA9ICdQQUNLQUdFX0NBTkFSWV9CVUNLRVRfTkFNRScsXG4gIENPTlNUUlVDVF9IVUJfQkFTRV9VUkwgPSAnQ09OU1RSVUNUX0hVQl9CQVNFX1VSTCcsXG59XG5cbmV4cG9ydCBjb25zdCBNRVRSSUNTX05BTUVTUEFDRSA9ICdDb25zdHJ1Y3RIdWIvUGFja2FnZUNhbmFyeSc7XG5cbmV4cG9ydCBjb25zdCBlbnVtIE1ldHJpY05hbWUge1xuICAvKipcbiAgICogVGhlIHRpbWUgZWxhcHNlZCBzaW5jZSBhIHBhY2thZ2Ugd2FzIHB1Ymxpc2hlZCB0byBucG1qcy5jb20sIHdoaWxlIGl0IGhhc1xuICAgKiBub3QgYmVlbiBkZXRlY3RlZCBpbiB0aGUgY2F0YWxvZyBieSB0aGUgcGFja2FnZSBjYW5hcnkuXG4gICAqXG4gICAqIFRoaXMgbWV0cmljcyBpcyBvbmx5IGVtaXR0ZWQgdW50aWwgdGhlIHBhY2thZ2UgaGFzIGJlZW4gZGV0ZWN0ZWQuXG4gICAqL1xuICBEV0VMTF9USU1FID0gJ0R3ZWxsVGltZScsXG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIGl0IHRvb2sgYmV0d2VlbiBhIHBhY2thZ2UncyBwdWJsaWNhdGlvbiB0byBucG1qcy5jb20gYW5kIHdoZW4gdGhlXG4gICAqIHBhY2thZ2UgY2FuYXJ5IGRldGVjdGVkIHRoZSBwYWNrYWdlIGFzIGF2YWlsYWJsZSBpbiB0aGUgY2F0YWxvZy5cbiAgICpcbiAgICogVGhpcyBtZXRyaWMgaXMgbm90IGVtaXR0ZWQgdW50aWwgdGhlIHBhY2thZ2UgaGFzIGFjdHVhbGx5IGJlZW4gZGV0ZWN0ZWQuXG4gICAqL1xuICBUSU1FX1RPX0NBVEFMT0cgPSAnVGltZVRvQ2F0YWxvZycsXG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgcGFja2FnZSB2ZXJzaW9ucyB0aGF0IHdlcmUgdHJhY2tlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZVxuICAgKiBwYWNrYWdlIGNhbmFyeSBleGVjdXRpb24gdGhhdCBwcm9kdWNlZCB0aGUgZGF0YSBwb2ludC5cbiAgICovXG4gIFRSQUNLRURfVkVSU0lPTl9DT1VOVCA9ICdUcmFja2VkVmVyc2lvbkNvdW50Jyxcbn1cblxuZXhwb3J0IGNvbnN0IGVudW0gT2JqZWN0S2V5IHtcbiAgU1RBVEVfUFJFRklYID0gJ3BhY2thZ2UtY2FuYXJ5LycsXG4gIFNUQVRFX1NVRkZJWCA9ICcuc3RhdGUuanNvbicsXG59XG4iXX0=
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BhY2thZ2Utc291cmNlcy9ucG1qcy9jYW5hcnkvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU1hLFFBQUEsaUJBQWlCLEdBQUcsNEJBQTRCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZW51bSBFbnZpcm9ubWVudCB7XG4gIFBBQ0tBR0VfTkFNRSA9ICdQQUNLQUdFX05BTUUnLFxuICBQQUNLQUdFX0NBTkFSWV9CVUNLRVRfTkFNRSA9ICdQQUNLQUdFX0NBTkFSWV9CVUNLRVRfTkFNRScsXG4gIENPTlNUUlVDVF9IVUJfQkFTRV9VUkwgPSAnQ09OU1RSVUNUX0hVQl9CQVNFX1VSTCcsXG59XG5cbmV4cG9ydCBjb25zdCBNRVRSSUNTX05BTUVTUEFDRSA9ICdDb25zdHJ1Y3RIdWIvUGFja2FnZUNhbmFyeSc7XG5cbmV4cG9ydCBjb25zdCBlbnVtIE1ldHJpY05hbWUge1xuICAvKipcbiAgICogVGhlIHRpbWUgZWxhcHNlZCBzaW5jZSBhIHBhY2thZ2Ugd2FzIHB1Ymxpc2hlZCB0byBucG1qcy5jb20sIHdoaWxlIGl0IGhhc1xuICAgKiBub3QgYmVlbiBkZXRlY3RlZCBpbiB0aGUgY2F0YWxvZyBieSB0aGUgcGFja2FnZSBjYW5hcnkuXG4gICAqXG4gICAqIFRoaXMgbWV0cmljcyBpcyBvbmx5IGVtaXR0ZWQgdW50aWwgdGhlIHBhY2thZ2UgaGFzIGJlZW4gZGV0ZWN0ZWQuXG4gICAqL1xuICBEV0VMTF9USU1FID0gJ0R3ZWxsVGltZScsXG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIGl0IHRvb2sgYmV0d2VlbiBhIHBhY2thZ2UncyBwdWJsaWNhdGlvbiB0byBucG1qcy5jb20gYW5kIHdoZW4gdGhlXG4gICAqIHBhY2thZ2UgY2FuYXJ5IGRldGVjdGVkIHRoZSBwYWNrYWdlIGFzIGF2YWlsYWJsZSBpbiB0aGUgY2F0YWxvZy5cbiAgICpcbiAgICogVGhpcyBtZXRyaWMgaXMgbm90IGVtaXR0ZWQgdW50aWwgdGhlIHBhY2thZ2UgaGFzIGFjdHVhbGx5IGJlZW4gZGV0ZWN0ZWQuXG4gICAqL1xuICBUSU1FX1RPX0NBVEFMT0cgPSAnVGltZVRvQ2F0YWxvZycsXG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgcGFja2FnZSB2ZXJzaW9ucyB0aGF0IHdlcmUgdHJhY2tlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZVxuICAgKiBwYWNrYWdlIGNhbmFyeSBleGVjdXRpb24gdGhhdCBwcm9kdWNlZCB0aGUgZGF0YSBwb2ludC5cbiAgICovXG4gIFRSQUNLRURfVkVSU0lPTl9DT1VOVCA9ICdUcmFja2VkVmVyc2lvbkNvdW50JyxcblxuICAvKipcbiAgICogVGhlIGVzdGltYXRlZCBsYWcgYmV0d2VlbiB0aGUgbnBtIHJlZ2lzdHJ5IHJlcGxpY2EgKHJlcGxpY2F0ZS5ucG1qcy5jb20pXG4gICAqIGFuZCB0aGUgcHJpbWFyeSByZWdpc3RyeSAocmVnaXN0cnkubnBtanMuY29tKS4gVGhpcyBjYW5ub3QgYmUgbWVhc3VyZWRcbiAgICogZGlyZWN0bHkgYmVjYXVzZSB0aGUgcHJpbWFyeSBkb2VzIG5vdCBleHBvc2UgdGhlIHJlbGV2YW50IENvdWNoREIgZW5kcG9pbnRzLFxuICAgKiBzbyB3ZSB1c2UgdGhlIHByb2JlIHBhY2thZ2UgdG8gZ2V0IGEgbG93LXJlc29sdXRpb24gdmlldyBvZiB0aGlzLlxuICAgKi9cbiAgTlBNX1JFUExJQ0FfTEFHID0gJ0VzdGltYXRlZE5wbVJlcGxpY2FMYWcnLFxuXG4gIC8qKlxuICAgKiBBIG1ldHJpYyB0cmFja2luZyB3aGV0aGVyIHRoZSBucG0gcmVnaXN0cnkgcmVwbGljYSAocmVwbGljYXRlLm5wbWpzLmNvbSlcbiAgICogaXMgZG93bi4gVGhlIHZhbHVlIGlzIDEgd2hlbiB0aGUgcmVwbGljYSBpcyBkZXRlY3RlZCB0byBiZSBkb3duLCBhbmQgMFxuICAgKiB3aGVuIHRoZSByZXBsaWNhIGlzIGRldGVjdGVkIHRvIGJlIHVwLlxuICAgKi9cbiAgTlBNX1JFUExJQ0FfRE9XTiA9ICdOcG1SZXBsaWNhSXNEb3duJyxcbn1cblxuZXhwb3J0IGNvbnN0IGVudW0gT2JqZWN0S2V5IHtcbiAgU1RBVEVfUFJFRklYID0gJ3BhY2thZ2UtY2FuYXJ5LycsXG4gIFNUQVRFX1NVRkZJWCA9ICcuc3RhdGUuanNvbicsXG59XG4iXX0=
@@ -7,8 +7,30 @@ export interface NpmJsPackageCanaryProps {
7
7
  readonly packageName: string;
8
8
  }
9
9
  export declare class NpmJsPackageCanary extends Construct {
10
+ private readonly handler;
10
11
  constructor(scope: Construct, id: string, props: NpmJsPackageCanaryProps);
11
12
  metricDwellTime(opts?: MetricOptions): Metric;
12
13
  metricTimeToCatalog(opts?: MetricOptions): Metric;
13
14
  metricTrackedVersionCount(opts?: MetricOptions): Metric;
15
+ /**
16
+ * The estimated lag between the npm registry replica (replcate.npmjs.com) and
17
+ * the primary registry (registry.npmjs.com).
18
+ *
19
+ * IMPORTANT NOTE: This is based on the difference in modified timestamps for
20
+ * the probe package between the two and hence has a granularly no better than
21
+ * the publishing interval of this. Since the construct-hub-probe package is
22
+ * only published every 3 hours approximately, this metric has a resolution
23
+ * that is strictly worse than 3 hours.
24
+ */
25
+ metricEstimatedNpmReplicaLag(opts?: MetricOptions): Metric;
26
+ /**
27
+ * A metric tracking whether the npm registry replica (replicate.npmjs.com)
28
+ * is down. The value is 1 when the replica is detected to be down, and 0
29
+ * when the replica is detected to be up.
30
+ */
31
+ metricNpmReplicaIsDown(opts?: MetricOptions): Metric;
32
+ metricErrors(opts?: MetricOptions): Metric;
33
+ metricInvocations(opts?: MetricOptions): Metric;
34
+ metricThrottles(opts?: MetricOptions): Metric;
35
+ metricDuration(opts?: MetricOptions): Metric;
14
36
  }
@@ -12,7 +12,7 @@ const npmjs_package_canary_1 = require("./npmjs-package-canary");
12
12
  class NpmJsPackageCanary extends constructs_1.Construct {
13
13
  constructor(scope, id, props) {
14
14
  super(scope, id);
15
- const handler = new npmjs_package_canary_1.NpmjsPackageCanary(this, 'Resource', {
15
+ this.handler = new npmjs_package_canary_1.NpmjsPackageCanary(this, 'Resource', {
16
16
  architecture: _lambda_architecture_1.gravitonLambdaIfAvailable(this),
17
17
  description: `[${scope.node.path}/PackageCanary] Monitors ${props.packageName} versions availability`,
18
18
  environment: {
@@ -24,11 +24,11 @@ class NpmJsPackageCanary extends constructs_1.Construct {
24
24
  memorySize: 10024,
25
25
  timeout: aws_cdk_lib_1.Duration.minutes(1),
26
26
  });
27
- const grant = props.bucket.grantReadWrite(handler, `${"package-canary/" /* STATE_PREFIX */}*${".state.json" /* STATE_SUFFIX */}`);
27
+ const grant = props.bucket.grantReadWrite(this.handler, `${"package-canary/" /* STATE_PREFIX */}*${".state.json" /* STATE_SUFFIX */}`);
28
28
  const schedule = new aws_events_1.Rule(this, 'Schedule', {
29
29
  description: 'Scheduled executions of the NpmJS package canary',
30
30
  schedule: aws_events_1.Schedule.rate(aws_cdk_lib_1.Duration.minutes(1)),
31
- targets: [new aws_events_targets_1.LambdaFunction(handler)],
31
+ targets: [new aws_events_targets_1.LambdaFunction(this.handler)],
32
32
  });
33
33
  // Ensure we don't attempt to run before permissions have been granted.
34
34
  schedule.node.addDependency(grant);
@@ -60,6 +60,51 @@ class NpmJsPackageCanary extends constructs_1.Construct {
60
60
  namespace: constants_1.METRICS_NAMESPACE,
61
61
  });
62
62
  }
63
+ /**
64
+ * The estimated lag between the npm registry replica (replcate.npmjs.com) and
65
+ * the primary registry (registry.npmjs.com).
66
+ *
67
+ * IMPORTANT NOTE: This is based on the difference in modified timestamps for
68
+ * the probe package between the two and hence has a granularly no better than
69
+ * the publishing interval of this. Since the construct-hub-probe package is
70
+ * only published every 3 hours approximately, this metric has a resolution
71
+ * that is strictly worse than 3 hours.
72
+ */
73
+ metricEstimatedNpmReplicaLag(opts) {
74
+ return new aws_cloudwatch_1.Metric({
75
+ period: aws_cdk_lib_1.Duration.minutes(1),
76
+ statistic: aws_cloudwatch_1.Statistic.MAXIMUM,
77
+ ...opts,
78
+ metricName: "EstimatedNpmReplicaLag" /* NPM_REPLICA_LAG */,
79
+ namespace: constants_1.METRICS_NAMESPACE,
80
+ });
81
+ }
82
+ /**
83
+ * A metric tracking whether the npm registry replica (replicate.npmjs.com)
84
+ * is down. The value is 1 when the replica is detected to be down, and 0
85
+ * when the replica is detected to be up.
86
+ */
87
+ metricNpmReplicaIsDown(opts) {
88
+ return new aws_cloudwatch_1.Metric({
89
+ period: aws_cdk_lib_1.Duration.minutes(1),
90
+ statistic: aws_cloudwatch_1.Statistic.MAXIMUM,
91
+ ...opts,
92
+ metricName: "NpmReplicaIsDown" /* NPM_REPLICA_DOWN */,
93
+ namespace: constants_1.METRICS_NAMESPACE,
94
+ });
95
+ }
96
+ metricErrors(opts) {
97
+ return this.handler.metricErrors(opts);
98
+ }
99
+ metricInvocations(opts) {
100
+ return this.handler.metricInvocations(opts);
101
+ }
102
+ metricThrottles(opts) {
103
+ return this.handler.metricThrottles(opts);
104
+ }
105
+ metricDuration(opts) {
106
+ return this.handler.metricDuration(opts);
107
+ }
63
108
  }
64
109
  exports.NpmJsPackageCanary = NpmJsPackageCanary;
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGFja2FnZS1zb3VyY2VzL25wbWpzL2NhbmFyeS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBdUM7QUFDdkMsK0RBQThFO0FBQzlFLHVEQUF3RDtBQUN4RCx1RUFBZ0U7QUFFaEUsMkNBQXVDO0FBQ3ZDLGdGQUFrRjtBQUNsRiwyQ0FLcUI7QUFDckIsaUVBQXVFO0FBUXZFLE1BQWEsa0JBQW1CLFNBQVEsc0JBQVM7SUFDL0MsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBOEI7UUFFOUIsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLE9BQU8sR0FBRyxJQUFJLHlDQUFPLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUM1QyxZQUFZLEVBQUUsZ0RBQXlCLENBQUMsSUFBSSxDQUFDO1lBQzdDLFdBQVcsRUFBRSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSw0QkFBNEIsS0FBSyxDQUFDLFdBQVcsd0JBQXdCO1lBQ3JHLFdBQVcsRUFBRTtnQkFDWCxtQkFBbUIsRUFBRSxPQUFPO2dCQUM1Qix1REFBb0MsRUFBRSxLQUFLLENBQUMsbUJBQW1CO2dCQUMvRCwrREFBd0MsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVU7Z0JBQ2pFLG1DQUEwQixFQUFFLEtBQUssQ0FBQyxXQUFXO2FBQzlDO1lBQ0QsVUFBVSxFQUFFLEtBQU07WUFDbEIsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUM3QixDQUFDLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FDdkMsT0FBTyxFQUNQLEdBQUcsb0NBQXNCLElBQUksZ0NBQXNCLEVBQUUsQ0FDdEQsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLElBQUksaUJBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQzFDLFdBQVcsRUFBRSxrREFBa0Q7WUFDL0QsUUFBUSxFQUFFLHFCQUFRLENBQUMsSUFBSSxDQUFDLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLE9BQU8sRUFBRSxDQUFDLElBQUksbUNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN2QyxDQUFDLENBQUM7UUFDSCx1RUFBdUU7UUFDdkUsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLGVBQWUsQ0FBQyxJQUFvQjtRQUN6QyxPQUFPLElBQUksdUJBQU0sQ0FBQztZQUNoQixNQUFNLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzNCLFNBQVMsRUFBRSwwQkFBUyxDQUFDLE9BQU87WUFDNUIsR0FBRyxJQUFJO1lBQ1AsVUFBVSw4QkFBdUI7WUFDakMsU0FBUyxFQUFFLDZCQUFpQjtTQUM3QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sbUJBQW1CLENBQUMsSUFBb0I7UUFDN0MsT0FBTyxJQUFJLHVCQUFNLENBQUM7WUFDaEIsTUFBTSxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUMzQixTQUFTLEVBQUUsMEJBQVMsQ0FBQyxPQUFPO1lBQzVCLEdBQUcsSUFBSTtZQUNQLFVBQVUsdUNBQTRCO1lBQ3RDLFNBQVMsRUFBRSw2QkFBaUI7U0FDN0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLHlCQUF5QixDQUFDLElBQW9CO1FBQ25ELE9BQU8sSUFBSSx1QkFBTSxDQUFDO1lBQ2hCLE1BQU0sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDM0IsU0FBUyxFQUFFLDBCQUFTLENBQUMsT0FBTztZQUM1QixHQUFHLElBQUk7WUFDUCxVQUFVLG1EQUFrQztZQUM1QyxTQUFTLEVBQUUsNkJBQWlCO1NBQzdCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQS9ERCxnREErREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IE1ldHJpY09wdGlvbnMsIE1ldHJpYywgU3RhdGlzdGljIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgUnVsZSwgU2NoZWR1bGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzJztcbmltcG9ydCB7IExhbWJkYUZ1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzJztcbmltcG9ydCB7IElCdWNrZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBncmF2aXRvbkxhbWJkYUlmQXZhaWxhYmxlIH0gZnJvbSAnLi4vLi4vLi4vYmFja2VuZC9fbGFtYmRhLWFyY2hpdGVjdHVyZSc7XG5pbXBvcnQge1xuICBFbnZpcm9ubWVudCxcbiAgT2JqZWN0S2V5LFxuICBNRVRSSUNTX05BTUVTUEFDRSxcbiAgTWV0cmljTmFtZSxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgTnBtanNQYWNrYWdlQ2FuYXJ5IGFzIEhhbmRsZXIgfSBmcm9tICcuL25wbWpzLXBhY2thZ2UtY2FuYXJ5JztcblxuZXhwb3J0IGludGVyZmFjZSBOcG1Kc1BhY2thZ2VDYW5hcnlQcm9wcyB7XG4gIHJlYWRvbmx5IGJ1Y2tldDogSUJ1Y2tldDtcbiAgcmVhZG9ubHkgY29uc3RydWN0SHViQmFzZVVybDogc3RyaW5nO1xuICByZWFkb25seSBwYWNrYWdlTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgTnBtSnNQYWNrYWdlQ2FuYXJ5IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogTnBtSnNQYWNrYWdlQ2FuYXJ5UHJvcHNcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGhhbmRsZXIgPSBuZXcgSGFuZGxlcih0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBhcmNoaXRlY3R1cmU6IGdyYXZpdG9uTGFtYmRhSWZBdmFpbGFibGUodGhpcyksXG4gICAgICBkZXNjcmlwdGlvbjogYFske3Njb3BlLm5vZGUucGF0aH0vUGFja2FnZUNhbmFyeV0gTW9uaXRvcnMgJHtwcm9wcy5wYWNrYWdlTmFtZX0gdmVyc2lvbnMgYXZhaWxhYmlsaXR5YCxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIEFXU19FTUZfRU5WSVJPTk1FTlQ6ICdMb2NhbCcsXG4gICAgICAgIFtFbnZpcm9ubWVudC5DT05TVFJVQ1RfSFVCX0JBU0VfVVJMXTogcHJvcHMuY29uc3RydWN0SHViQmFzZVVybCxcbiAgICAgICAgW0Vudmlyb25tZW50LlBBQ0tBR0VfQ0FOQVJZX0JVQ0tFVF9OQU1FXTogcHJvcHMuYnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICAgIFtFbnZpcm9ubWVudC5QQUNLQUdFX05BTUVdOiBwcm9wcy5wYWNrYWdlTmFtZSxcbiAgICAgIH0sXG4gICAgICBtZW1vcnlTaXplOiAxMF8wMjQsXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgIH0pO1xuICAgIGNvbnN0IGdyYW50ID0gcHJvcHMuYnVja2V0LmdyYW50UmVhZFdyaXRlKFxuICAgICAgaGFuZGxlcixcbiAgICAgIGAke09iamVjdEtleS5TVEFURV9QUkVGSVh9KiR7T2JqZWN0S2V5LlNUQVRFX1NVRkZJWH1gXG4gICAgKTtcblxuICAgIGNvbnN0IHNjaGVkdWxlID0gbmV3IFJ1bGUodGhpcywgJ1NjaGVkdWxlJywge1xuICAgICAgZGVzY3JpcHRpb246ICdTY2hlZHVsZWQgZXhlY3V0aW9ucyBvZiB0aGUgTnBtSlMgcGFja2FnZSBjYW5hcnknLFxuICAgICAgc2NoZWR1bGU6IFNjaGVkdWxlLnJhdGUoRHVyYXRpb24ubWludXRlcygxKSksXG4gICAgICB0YXJnZXRzOiBbbmV3IExhbWJkYUZ1bmN0aW9uKGhhbmRsZXIpXSxcbiAgICB9KTtcbiAgICAvLyBFbnN1cmUgd2UgZG9uJ3QgYXR0ZW1wdCB0byBydW4gYmVmb3JlIHBlcm1pc3Npb25zIGhhdmUgYmVlbiBncmFudGVkLlxuICAgIHNjaGVkdWxlLm5vZGUuYWRkRGVwZW5kZW5jeShncmFudCk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljRHdlbGxUaW1lKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5NQVhJTVVNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuRFdFTExfVElNRSxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljVGltZVRvQ2F0YWxvZyhvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUFYSU1VTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLlRJTUVfVE9fQ0FUQUxPRyxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljVHJhY2tlZFZlcnNpb25Db3VudChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUFYSU1VTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLlRSQUNLRURfVkVSU0lPTl9DT1VOVCxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGFja2FnZS1zb3VyY2VzL25wbWpzL2NhbmFyeS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBdUM7QUFDdkMsK0RBQThFO0FBQzlFLHVEQUF3RDtBQUN4RCx1RUFBZ0U7QUFFaEUsMkNBQXVDO0FBQ3ZDLGdGQUFrRjtBQUNsRiwyQ0FLcUI7QUFDckIsaUVBQXVFO0FBUXZFLE1BQWEsa0JBQW1CLFNBQVEsc0JBQVM7SUFHL0MsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBOEI7UUFFOUIsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUkseUNBQU8sQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQzNDLFlBQVksRUFBRSxnREFBeUIsQ0FBQyxJQUFJLENBQUM7WUFDN0MsV0FBVyxFQUFFLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLDRCQUE0QixLQUFLLENBQUMsV0FBVyx3QkFBd0I7WUFDckcsV0FBVyxFQUFFO2dCQUNYLG1CQUFtQixFQUFFLE9BQU87Z0JBQzVCLHVEQUFvQyxFQUFFLEtBQUssQ0FBQyxtQkFBbUI7Z0JBQy9ELCtEQUF3QyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVTtnQkFDakUsbUNBQTBCLEVBQUUsS0FBSyxDQUFDLFdBQVc7YUFDOUM7WUFDRCxVQUFVLEVBQUUsS0FBTTtZQUNsQixPQUFPLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQzdCLENBQUMsQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUN2QyxJQUFJLENBQUMsT0FBTyxFQUNaLEdBQUcsb0NBQXNCLElBQUksZ0NBQXNCLEVBQUUsQ0FDdEQsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFH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JztcbmltcG9ydCB7IE1ldHJpY09wdGlvbnMsIE1ldHJpYywgU3RhdGlzdGljIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgUnVsZSwgU2NoZWR1bGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzJztcbmltcG9ydCB7IExhbWJkYUZ1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzJztcbmltcG9ydCB7IElCdWNrZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBncmF2aXRvbkxhbWJkYUlmQXZhaWxhYmxlIH0gZnJvbSAnLi4vLi4vLi4vYmFja2VuZC9fbGFtYmRhLWFyY2hpdGVjdHVyZSc7XG5pbXBvcnQge1xuICBFbnZpcm9ubWVudCxcbiAgT2JqZWN0S2V5LFxuICBNRVRSSUNTX05BTUVTUEFDRSxcbiAgTWV0cmljTmFtZSxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgTnBtanNQYWNrYWdlQ2FuYXJ5IGFzIEhhbmRsZXIgfSBmcm9tICcuL25wbWpzLXBhY2thZ2UtY2FuYXJ5JztcblxuZXhwb3J0IGludGVyZmFjZSBOcG1Kc1BhY2thZ2VDYW5hcnlQcm9wcyB7XG4gIHJlYWRvbmx5IGJ1Y2tldDogSUJ1Y2tldDtcbiAgcmVhZG9ubHkgY29uc3RydWN0SHViQmFzZVVybDogc3RyaW5nO1xuICByZWFkb25seSBwYWNrYWdlTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgTnBtSnNQYWNrYWdlQ2FuYXJ5IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBoYW5kbGVyOiBIYW5kbGVyO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IE5wbUpzUGFja2FnZUNhbmFyeVByb3BzXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLmhhbmRsZXIgPSBuZXcgSGFuZGxlcih0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBhcmNoaXRlY3R1cmU6IGdyYXZpdG9uTGFtYmRhSWZBdmFpbGFibGUodGhpcyksXG4gICAgICBkZXNjcmlwdGlvbjogYFske3Njb3BlLm5vZGUucGF0aH0vUGFja2FnZUNhbmFyeV0gTW9uaXRvcnMgJHtwcm9wcy5wYWNrYWdlTmFtZX0gdmVyc2lvbnMgYXZhaWxhYmlsaXR5YCxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIEFXU19FTUZfRU5WSVJPTk1FTlQ6ICdMb2NhbCcsXG4gICAgICAgIFtFbnZpcm9ubWVudC5DT05TVFJVQ1RfSFVCX0JBU0VfVVJMXTogcHJvcHMuY29uc3RydWN0SHViQmFzZVVybCxcbiAgICAgICAgW0Vudmlyb25tZW50LlBBQ0tBR0VfQ0FOQVJZX0JVQ0tFVF9OQU1FXTogcHJvcHMuYnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICAgIFtFbnZpcm9ubWVudC5QQUNLQUdFX05BTUVdOiBwcm9wcy5wYWNrYWdlTmFtZSxcbiAgICAgIH0sXG4gICAgICBtZW1vcnlTaXplOiAxMF8wMjQsXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgIH0pO1xuICAgIGNvbnN0IGdyYW50ID0gcHJvcHMuYnVja2V0LmdyYW50UmVhZFdyaXRlKFxuICAgICAgdGhpcy5oYW5kbGVyLFxuICAgICAgYCR7T2JqZWN0S2V5LlNUQVRFX1BSRUZJWH0qJHtPYmplY3RLZXkuU1RBVEVfU1VGRklYfWBcbiAgICApO1xuXG4gICAgY29uc3Qgc2NoZWR1bGUgPSBuZXcgUnVsZSh0aGlzLCAnU2NoZWR1bGUnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1NjaGVkdWxlZCBleGVjdXRpb25zIG9mIHRoZSBOcG1KUyBwYWNrYWdlIGNhbmFyeScsXG4gICAgICBzY2hlZHVsZTogU2NoZWR1bGUucmF0ZShEdXJhdGlvbi5taW51dGVzKDEpKSxcbiAgICAgIHRhcmdldHM6IFtuZXcgTGFtYmRhRnVuY3Rpb24odGhpcy5oYW5kbGVyKV0sXG4gICAgfSk7XG4gICAgLy8gRW5zdXJlIHdlIGRvbid0IGF0dGVtcHQgdG8gcnVuIGJlZm9yZSBwZXJtaXNzaW9ucyBoYXZlIGJlZW4gZ3JhbnRlZC5cbiAgICBzY2hlZHVsZS5ub2RlLmFkZERlcGVuZGVuY3koZ3JhbnQpO1xuICB9XG5cbiAgcHVibGljIG1ldHJpY0R3ZWxsVGltZShvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUFYSU1VTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLkRXRUxMX1RJTUUsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG1ldHJpY1RpbWVUb0NhdGFsb2cob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLk1BWElNVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5USU1FX1RPX0NBVEFMT0csXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG1ldHJpY1RyYWNrZWRWZXJzaW9uQ291bnQob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLk1BWElNVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5UUkFDS0VEX1ZFUlNJT05fQ09VTlQsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBlc3RpbWF0ZWQgbGFnIGJldHdlZW4gdGhlIG5wbSByZWdpc3RyeSByZXBsaWNhIChyZXBsY2F0ZS5ucG1qcy5jb20pIGFuZFxuICAgKiB0aGUgcHJpbWFyeSByZWdpc3RyeSAocmVnaXN0cnkubnBtanMuY29tKS5cbiAgICpcbiAgICogSU1QT1JUQU5UIE5PVEU6IFRoaXMgaXMgYmFzZWQgb24gdGhlIGRpZmZlcmVuY2UgaW4gbW9kaWZpZWQgdGltZXN0YW1wcyBmb3JcbiAgICogdGhlIHByb2JlIHBhY2thZ2UgYmV0d2VlbiB0aGUgdHdvIGFuZCBoZW5jZSBoYXMgYSBncmFudWxhcmx5IG5vIGJldHRlciB0aGFuXG4gICAqIHRoZSBwdWJsaXNoaW5nIGludGVydmFsIG9mIHRoaXMuIFNpbmNlIHRoZSBjb25zdHJ1Y3QtaHViLXByb2JlIHBhY2thZ2UgaXNcbiAgICogb25seSBwdWJsaXNoZWQgZXZlcnkgMyBob3VycyBhcHByb3hpbWF0ZWx5LCB0aGlzIG1ldHJpYyBoYXMgYSByZXNvbHV0aW9uXG4gICAqIHRoYXQgaXMgc3RyaWN0bHkgd29yc2UgdGhhbiAzIGhvdXJzLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0VzdGltYXRlZE5wbVJlcGxpY2FMYWcob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLk1BWElNVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5OUE1fUkVQTElDQV9MQUcsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgbWV0cmljIHRyYWNraW5nIHdoZXRoZXIgdGhlIG5wbSByZWdpc3RyeSByZXBsaWNhIChyZXBsaWNhdGUubnBtanMuY29tKVxuICAgKiBpcyBkb3duLiBUaGUgdmFsdWUgaXMgMSB3aGVuIHRoZSByZXBsaWNhIGlzIGRldGVjdGVkIHRvIGJlIGRvd24sIGFuZCAwXG4gICAqIHdoZW4gdGhlIHJlcGxpY2EgaXMgZGV0ZWN0ZWQgdG8gYmUgdXAuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljTnBtUmVwbGljYUlzRG93bihvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUFYSU1VTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLk5QTV9SRVBMSUNBX0RPV04sXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG1ldHJpY0Vycm9ycyhvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMuaGFuZGxlci5tZXRyaWNFcnJvcnMob3B0cyk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljSW52b2NhdGlvbnMob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLmhhbmRsZXIubWV0cmljSW52b2NhdGlvbnMob3B0cyk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljVGhyb3R0bGVzKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5oYW5kbGVyLm1ldHJpY1Rocm90dGxlcyhvcHRzKTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRyaWNEdXJhdGlvbihvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMuaGFuZGxlci5tZXRyaWNEdXJhdGlvbihvcHRzKTtcbiAgfVxufVxuIl19
@@ -8075,6 +8075,7 @@ var require_lib2 = __commonJS({
8075
8075
  // src/package-sources/npmjs/canary/npmjs-package-canary.lambda.ts
8076
8076
  var npmjs_package_canary_lambda_exports = {};
8077
8077
  __export(npmjs_package_canary_lambda_exports, {
8078
+ CanaryStateService: () => CanaryStateService,
8078
8079
  handler: () => handler
8079
8080
  });
8080
8081
  module.exports = __toCommonJS(npmjs_package_canary_lambda_exports);
@@ -8129,9 +8130,14 @@ async function handler(event) {
8129
8130
  console.log(`Initial state: ${JSON.stringify(state, null, 2)}`);
8130
8131
  updateLatestIfNeeded(state, latest);
8131
8132
  try {
8132
- await (0, import_aws_embedded_metrics.metricScope)((metrics) => () => {
8133
+ const replicaLag = await stateService.npmReplicaLagSeconds(packageName);
8134
+ await (0, import_aws_embedded_metrics.metricScope)((metrics) => async () => {
8133
8135
  metrics.setDimensions();
8134
8136
  metrics.putMetric("TrackedVersionCount" /* TRACKED_VERSION_COUNT */, Object.keys(state.pending).length + 1, import_aws_embedded_metrics.Unit.Count);
8137
+ metrics.putMetric("NpmReplicaIsDown" /* NPM_REPLICA_DOWN */, await stateService.isNpmReplicaDown() ? 1 : 0, import_aws_embedded_metrics.Unit.None);
8138
+ if (replicaLag !== void 0) {
8139
+ metrics.putMetric("EstimatedNpmReplicaLag" /* NPM_REPLICA_LAG */, replicaLag, import_aws_embedded_metrics.Unit.Seconds);
8140
+ }
8135
8141
  })();
8136
8142
  for (const versionState of [
8137
8143
  state.latest,
@@ -8243,6 +8249,38 @@ var CanaryStateService = class {
8243
8249
  console.log(`Package: ${packageName} | Version : ${version} | Published At: ${publishedAt}`);
8244
8250
  return { version, publishedAt: new Date(publishedAt) };
8245
8251
  }
8252
+ async isNpmReplicaDown() {
8253
+ try {
8254
+ await getJSON("https://replicate.npmjs.com/");
8255
+ return false;
8256
+ } catch (e) {
8257
+ return true;
8258
+ }
8259
+ }
8260
+ async npmReplicaLagSeconds(packageName) {
8261
+ const encodedPackageName = encodeURIComponent(packageName);
8262
+ console.log(`Measuring NPM replica lag using ${packageName}...`);
8263
+ const primaryDate = await getModifiedTimestamp(`registry.npmjs.org`);
8264
+ let replicaDate;
8265
+ try {
8266
+ replicaDate = await getModifiedTimestamp(`replicate.npmjs.com/registry`);
8267
+ } catch (e) {
8268
+ if (e instanceof Error && e.message.includes("HTTP 504")) {
8269
+ console.log(`Warning: error fetching replicate.npmjs.com: ${e.toString()}`);
8270
+ return void 0;
8271
+ } else {
8272
+ throw e;
8273
+ }
8274
+ }
8275
+ const deltaMs = primaryDate.getTime() - replicaDate.getTime();
8276
+ console.log(`Timestamp on primary: ${primaryDate.toISOString()}`);
8277
+ console.log(`Timestamp on replica: ${replicaDate.toISOString()} (${deltaMs / 36e5} hours behind)`);
8278
+ return deltaMs / 1e3;
8279
+ async function getModifiedTimestamp(baseUrl) {
8280
+ const isoDate = await getJSON(`https://${baseUrl}/${encodedPackageName}`, ["time", "modified"]);
8281
+ return new Date(isoDate);
8282
+ }
8283
+ }
8246
8284
  key(packageName) {
8247
8285
  return `${"package-canary/" /* STATE_PREFIX */}${packageName}${".state.json" /* STATE_SUFFIX */}`;
8248
8286
  }
@@ -8287,6 +8325,7 @@ function gunzip(readable) {
8287
8325
  }
8288
8326
  // Annotate the CommonJS export names for ESM import in node:
8289
8327
  0 && (module.exports = {
8328
+ CanaryStateService,
8290
8329
  handler
8291
8330
  });
8292
8331
  //# sourceMappingURL=index.js.map