@wireio/shared 1.0.36 → 1.0.38

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.
@@ -10,11 +10,9 @@ export declare class AWSFirehoseAppender<Record extends LogRecord = LogRecord> i
10
10
  constructor(credentialEndpointUrl: string);
11
11
  append(record: Record): void;
12
12
  /**
13
- * Create the firehose client and return
14
- *
15
- * @param {IAWSTemporaryCredentials} credentials
16
- * @param {boolean} flush
17
- * @returns {Firehose}
13
+ * Create the Firehose client for a loaded credential set.
14
+ * @param creds Loaded Firehose credentials.
15
+ * @returns Firehose client.
18
16
  */
19
17
  private getFirehose;
20
18
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"AWSFirehoseAppender.d.ts","sourceRoot":"","sources":["../../../../../src/logging/appenders/aws-firehose/AWSFirehoseAppender.ts"],"names":[],"mappings":"AASA,OAAO,4BAA4B,MAAM,mCAAmC,CAAA;AAK5E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAM5C,qBAAa,mBAAmB,CAAC,MAAM,SAAS,SAAS,GAAG,SAAS,CACnE,YAAW,QAAQ,CAAC,MAAM,CAAC;aAQT,qBAAqB,EAAE,MAAM;IAP/C,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,eAAe,CAAQ;IAE/B,SAAgB,iBAAiB,EAAE,4BAA4B,CAAA;gBAG7C,qBAAqB,EAAE,MAAM;IAc/C,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAoB5B;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IAsBnB;;;;OAIG;YACW,KAAK;CA+EpB;AAED,eAAe,mBAAmB,CAAA"}
1
+ {"version":3,"file":"AWSFirehoseAppender.d.ts","sourceRoot":"","sources":["../../../../../src/logging/appenders/aws-firehose/AWSFirehoseAppender.ts"],"names":[],"mappings":"AAOA,OAAO,4BAEN,MAAM,mCAAmC,CAAA;AAI1C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAmB5C,qBAAa,mBAAmB,CAC9B,MAAM,SAAS,SAAS,GAAG,SAAS,CACpC,YAAW,QAAQ,CAAC,MAAM,CAAC;aAOC,qBAAqB,EAAE,MAAM;IANzD,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,eAAe,CAAO;IAE9B,SAAgB,iBAAiB,EAAE,4BAA4B,CAAA;gBAEnC,qBAAqB,EAAE,MAAM;IAoBzD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAmB5B;;;;OAIG;YACW,WAAW;IAgBzB;;;;OAIG;YACW,KAAK;CA0EpB;AAED,eAAe,mBAAmB,CAAA"}
@@ -1,17 +1,59 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
37
  };
5
38
  Object.defineProperty(exports, "__esModule", { value: true });
6
39
  exports.AWSFirehoseAppender = void 0;
7
- const client_firehose_1 = require("@aws-sdk/client-firehose");
8
- const client_sts_1 = require("@aws-sdk/client-sts");
9
40
  const AWSFirehoseCredentialManager_js_1 = __importDefault(require("./AWSFirehoseCredentialManager.js"));
10
41
  const InternalLogger_js_1 = require("../../InternalLogger.js");
11
42
  const lodash_1 = require("lodash");
12
43
  const index_js_1 = require("../../../helpers/index.js");
13
44
  const LogQueueMaxRecords = 10000;
45
+ const ExpiredTokenExceptionCode = "ExpiredTokenException";
14
46
  const log = (0, InternalLogger_js_1.getInternalLogger)();
47
+ let firehoseModule = null;
48
+ function getFirehoseModule() {
49
+ if (!firehoseModule) {
50
+ firehoseModule = Promise.resolve().then(() => __importStar(require("@aws-sdk/client-firehose"))).catch(err => {
51
+ firehoseModule = null;
52
+ throw err;
53
+ });
54
+ }
55
+ return firehoseModule;
56
+ }
15
57
  class AWSFirehoseAppender {
16
58
  credentialEndpointUrl;
17
59
  pendingRecords = Array();
@@ -27,8 +69,7 @@ class AWSFirehoseAppender {
27
69
  log.debug("Nothing to flush upon credential receipt OR flush already in progress");
28
70
  return;
29
71
  }
30
- this.flush()
31
- .catch((e) => {
72
+ this.flush().catch((e) => {
32
73
  log.error(`Error flushing logs after credential receipt: ${e.message}`, e);
33
74
  });
34
75
  });
@@ -43,30 +84,24 @@ class AWSFirehoseAppender {
43
84
  ...record,
44
85
  app: record.app?.length > 0 ? record.app : "UNKNOWN",
45
86
  env: record.env?.length > 0 ? record.env : "UNKNOWN",
46
- url: typeof window === "undefined" ? "local://" : window.location.href,
87
+ url: typeof window === "undefined" ? "local://" : window.location.href
47
88
  });
48
89
  this.flush();
49
90
  }
50
91
  /**
51
- * Create the firehose client and return
52
- *
53
- * @param {IAWSTemporaryCredentials} credentials
54
- * @param {boolean} flush
55
- * @returns {Firehose}
92
+ * Create the Firehose client for a loaded credential set.
93
+ * @param creds Loaded Firehose credentials.
94
+ * @returns Firehose client.
56
95
  */
57
- getFirehose() {
58
- const creds = this.credentialManager.getCredentials();
59
- if (!creds) {
60
- log.warn("No credentials available for flush");
61
- return null;
62
- }
96
+ async getFirehose(creds) {
63
97
  const { region, streamName } = creds;
64
98
  if (!region || !streamName) {
65
99
  throw new Error("Region or stream name not available");
66
100
  }
67
- const client = new client_firehose_1.FirehoseClient({
101
+ const { FirehoseClient } = await getFirehoseModule();
102
+ const client = new FirehoseClient({
68
103
  region: creds.region,
69
- credentials: (0, lodash_1.pick)(creds, "accessKeyId", "secretAccessKey", "sessionToken"),
104
+ credentials: (0, lodash_1.pick)(creds, "accessKeyId", "secretAccessKey", "sessionToken")
70
105
  });
71
106
  return client;
72
107
  }
@@ -89,13 +124,9 @@ class AWSFirehoseAppender {
89
124
  log.warn("No credentials available for flush");
90
125
  return;
91
126
  }
92
- const { streamName } = creds, client = this.getFirehose();
93
- if (!client) {
94
- log.warn("No firehose client available, skipping flush");
95
- return;
96
- }
97
- const deferred = this.flushDeferred = new index_js_1.Deferred();
127
+ const deferred = (this.flushDeferred = new index_js_1.Deferred());
98
128
  try {
129
+ const { streamName } = creds, client = await this.getFirehose(creds), { PutRecordBatchCommand } = await getFirehoseModule();
99
130
  while (this.pendingRecords.length) {
100
131
  const chunkSize = Math.min(this.pendingRecords.length, 10), records = this.pendingRecords.splice(0, chunkSize), recordJsons = records.map(record => JSON.stringify(record));
101
132
  if (log.isDebugEnabled())
@@ -104,9 +135,9 @@ class AWSFirehoseAppender {
104
135
  Data: textEncoder.encode(jsonStr)
105
136
  }));
106
137
  log.info(`Pushing ${records.length} records to firehose`);
107
- const cmd = new client_firehose_1.PutRecordBatchCommand({
138
+ const cmd = new PutRecordBatchCommand({
108
139
  DeliveryStreamName: streamName,
109
- Records: batch,
140
+ Records: batch
110
141
  });
111
142
  const resp = await client.send(cmd);
112
143
  const failed = resp.FailedPutCount || 0;
@@ -124,10 +155,11 @@ class AWSFirehoseAppender {
124
155
  log.info(`PutRecordBatch ok count=${records.length}`);
125
156
  }
126
157
  }
158
+ deferred.resolve();
127
159
  }
128
160
  catch (err) {
129
161
  log.error("Failed to push logs", err);
130
- if (err.code === client_sts_1.ExpiredTokenException) {
162
+ if (err.name === ExpiredTokenExceptionCode) {
131
163
  this.credentialManager.forceUpdateCredentials();
132
164
  }
133
165
  deferred.reject(err);
@@ -142,4 +174,4 @@ class AWSFirehoseAppender {
142
174
  }
143
175
  exports.AWSFirehoseAppender = AWSFirehoseAppender;
144
176
  exports.default = AWSFirehoseAppender;
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQVdTRmlyZWhvc2VBcHBlbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9sb2dnaW5nL2FwcGVuZGVycy9hd3MtZmlyZWhvc2UvQVdTRmlyZWhvc2VBcHBlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSw4REFBcUc7QUFDckcsb0RBRzRCO0FBRzVCLHdHQUE0RTtBQUM1RSwrREFBMkQ7QUFFM0QsbUNBQXNDO0FBQ3RDLHdEQUFvRDtBQUlwRCxNQUFNLGtCQUFrQixHQUFHLEtBQUssQ0FBQTtBQUVoQyxNQUFNLEdBQUcsR0FBRyxJQUFBLHFDQUFpQixHQUFFLENBQUE7QUFFL0IsTUFBYSxtQkFBbUI7SUFTWjtJQVBWLGNBQWMsR0FBRyxLQUFLLEVBQWEsQ0FBQTtJQUNuQyxhQUFhLENBQWdCO0lBQzdCLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFFZixpQkFBaUIsQ0FBOEI7SUFFL0QsWUFDa0IscUJBQTZCO1FBQTdCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBUTtRQUM3QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSx5Q0FBNEIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO1FBQ2hGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRTtZQUN6QyxHQUFHLENBQUMsSUFBSSxDQUFDLG9EQUFvRCxDQUFDLENBQUE7WUFDOUQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3hELEdBQUcsQ0FBQyxLQUFLLENBQUMsdUVBQXVFLENBQUMsQ0FBQTtnQkFDbEYsT0FBTTtZQUNSLENBQUM7WUFDRCxJQUFJLENBQUMsS0FBSyxFQUFFO2lCQUNULEtBQUssQ0FBQyxDQUFDLENBQVEsRUFBRSxFQUFFO2dCQUNsQixHQUFHLENBQUMsS0FBSyxDQUFDLGlEQUFpRCxD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LGtDQUFrQztZQUNsQyxpQkFBaUI7UUFDbkIsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQTtJQUN6QixDQUFDO0NBR0Y7QUE1SkQsa0RBNEpDO0FBRUQsa0JBQWUsbUJBQW1CLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSB0eXBlc2NyaXB0L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgaXNTdHJpbmcgfSBmcm9tICcuLi8uLi8uLi9ndWFyZHMvcHJpbWl0aXZlLmpzJ1xuaW1wb3J0IHsgRmlyZWhvc2VDbGllbnQsIFB1dFJlY29yZEJhdGNoQ29tbWFuZCwgUHV0UmVjb3JkQmF0Y2hJbnB1dCB9IGZyb20gXCJAYXdzLXNkay9jbGllbnQtZmlyZWhvc2VcIlxuaW1wb3J0IHtcbiAgQ3JlZGVudGlhbHMgYXMgSUFXU1RlbXBvcmFyeUNyZWRlbnRpYWxzLFxuICBFeHBpcmVkVG9rZW5FeGNlcHRpb24sXG59IGZyb20gXCJAYXdzLXNkay9jbGllbnQtc3RzXCJcbmltcG9ydCB7IExldmVsIH0gZnJvbSBcIi4uLy4uL0xldmVsLmpzXCJcblxuaW1wb3J0IEFXU0ZpcmVob3NlQ3JlZGVudGlhbE1hbmFnZXIgZnJvbSBcIi4vQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlci5qc1wiXG5pbXBvcnQgeyBnZXRJbnRlcm5hbExvZ2dlciB9IGZyb20gXCIuLi8uLi9JbnRlcm5hbExvZ2dlci5qc1wiXG5pbXBvcnQgeyBnZXRWYWx1ZSwgZ3VhcmQgfSBmcm9tIFwiLi4vLi4vLi4vZ3VhcmRzL2luZGV4LmpzXCJcbmltcG9ydCB7IGlzRW1wdHksIHBpY2sgfSBmcm9tIFwibG9kYXNoXCJcbmltcG9ydCB7IERlZmVycmVkIH0gZnJvbSBcIi4uLy4uLy4uL2hlbHBlcnMvaW5kZXguanNcIlxuaW1wb3J0IHsgTG9nUmVjb3JkIH0gZnJvbSBcIi4uLy4uL0xvZ1JlY29yZC5qc1wiXG5pbXBvcnQgeyBBcHBlbmRlciB9IGZyb20gXCIuLi8uLi9BcHBlbmRlci5qc1wiXG5cbmNvbnN0IExvZ1F1ZXVlTWF4UmVjb3JkcyA9IDEwMDAwXG5cbmNvbnN0IGxvZyA9IGdldEludGVybmFsTG9nZ2VyKClcblxuZXhwb3J0IGNsYXNzIEFXU0ZpcmVob3NlQXBwZW5kZXI8UmVjb3JkIGV4dGVuZHMgTG9nUmVjb3JkID0gTG9nUmVjb3JkPlxuICBpbXBsZW1lbnRzIEFwcGVuZGVyPFJlY29yZD4ge1xuICBwcml2YXRlIHBlbmRpbmdSZWNvcmRzID0gQXJyYXk8TG9nUmVjb3JkPigpXG4gIHByaXZhdGUgZmx1c2hEZWZlcnJlZDogRGVmZXJyZWQ8dm9pZD5cbiAgcHJpdmF0ZSBmbHVzaEludGVydmFsTXMgPSAxMDAwO1xuXG4gIHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsTWFuYWdlcjogQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlclxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsRW5kcG9pbnRVcmw6IHN0cmluZykge1xuICAgIHRoaXMuY3JlZGVudGlhbE1hbmFnZXIgPSBuZXcgQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlcihjcmVkZW50aWFsRW5kcG9pbnRVcmwpXG4gICAgdGhpcy5jcmVkZW50aWFsTWFuYWdlci5vbihcInJlY2VpdmVkXCIsICgpID0+IHtcbiAgICAgIGxvZy5pbmZvKFwiQ3JlZGVudGlhbHMgcmVjZWl2ZWQsIGluaXRpYWxpemluZyBmaXJlaG9zZSBjbGllbnRcIilcbiAgICAgIGlmICghdGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGggfHwgISF0aGlzLmZsdXNoRGVmZXJyZWQpIHtcbiAgICAgICAgbG9nLmRlYnVnKFwiTm90aGluZyB0byBmbHVzaCB1cG9uIGNyZWRlbnRpYWwgcmVjZWlwdCBPUiBmbHVzaCBhbHJlYWR5IGluIHByb2dyZXNzXCIpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgdGhpcy5mbHVzaCgpXG4gICAgICAgIC5jYXRjaCgoZTogRXJyb3IpID0+IHtcbiAgICAgICAgICBsb2cuZXJyb3IoYEVycm9yIGZsdXNoaW5nIGxvZ3MgYWZ0ZXIgY3JlZGVudGlhbCByZWNlaXB0OiAke2UubWVzc2FnZX1gLCBlKVxuICAgICAgICB9KVxuICAgIH0pXG4gIH1cbiAgYXBwZW5kKHJlY29yZDogUmVjb3JkKTogdm9pZCB7XG4gICAgY29uc3RcbiAgICAgIHBlbmRpbmdDb3VudCA9IHRoaXMucGVuZGluZ1JlY29yZHMubGVuZ3RoICsgMSxcbiAgICAgIHJlbW92ZUNvdW50ID0gTG9nUXVldWVNYXhSZWNvcmRzIC0gcGVuZGluZ0NvdW50XG5cbiAgICBpZiAocmVtb3ZlQ291bnQgPCAwKSB7XG4gICAgICB0aGlzLnBlbmRpbmdSZWNvcmRzLnNwbGljZSgwLCBNYXRoLmFicyhyZW1vdmVDb3VudCkpXG4gICAgfVxuXG4gICAgdGhpcy5wZW5kaW5nUmVjb3Jkcy5wdXNoKHtcbiAgICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKSxcbiAgICAgIC4uLnJlY29yZCxcbiAgICAgIGFwcDogcmVjb3JkLmFwcD8ubGVuZ3RoID4gMCA/IHJlY29yZC5hcHAgOiBcIlVOS05PV05cIixcbiAgICAgIGVudjogcmVjb3JkLmVudj8ubGVuZ3RoID4gMCA/IHJlY29yZC5lbnYgOiBcIlVOS05PV05cIixcbiAgICAgIHVybDogdHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIiA/IFwibG9jYWw6Ly9cIiA6IHdpbmRvdy5sb2NhdGlvbi5ocmVmLFxuICAgIH0pXG5cbiAgICB0aGlzLmZsdXNoKClcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdGhlIGZpcmVob3NlIGNsaWVudCBhbmQgcmV0dXJuXG4gICAqXG4gICAqIEBwYXJhbSB7SUFXU1RlbXBvcmFyeUNyZWRlbnRpYWxzfSBjcmVkZW50aWFsc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGZsdXNoXG4gICAqIEByZXR1cm5zIHtGaXJlaG9zZX1cbiAgICovXG4gIHByaXZhdGUgZ2V0RmlyZWhvc2UoKTogRmlyZWhvc2VDbGllbnQge1xuICAgIGNvbnN0IGNyZWRzID0gdGhpcy5jcmVkZW50aWFsTWFuYWdlci5nZXRDcmVkZW50aWFscygpXG5cbiAgICBpZiAoIWNyZWRzKSB7XG4gICAgICBsb2cud2FybihcIk5vIGNyZWRlbnRpYWxzIGF2YWlsYWJsZSBmb3IgZmx1c2hcIilcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgY29uc3QgeyByZWdpb24sIHN0cmVhbU5hbWUgfSA9IGNyZWRzXG5cbiAgICBpZiAoIXJlZ2lvbiB8fCAhc3RyZWFtTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUmVnaW9uIG9yIHN0cmVhbSBuYW1lIG5vdCBhdmFpbGFibGVcIilcbiAgICB9XG5cbiAgICBjb25zdCBjbGllbnQgPSBuZXcgRmlyZWhvc2VDbGllbnQoe1xuICAgICAgcmVnaW9uOiBjcmVkcy5yZWdpb24sXG4gICAgICBjcmVkZW50aWFsczogcGljayhjcmVkcywgXCJhY2Nlc3NLZXlJZFwiLCBcInNlY3JldEFjY2Vzc0tleVwiLCBcInNlc3Npb25Ub2tlblwiKSxcbiAgICB9KVxuXG4gICAgcmV0dXJuIGNsaWVudFxuICB9XG5cbiAgLyoqXG4gICAqIEZsdXNoIHBlbmRpbmcgcmVjb3Jkc1xuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZmx1c2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCEhdGhpcy5mbHVzaERlZmVycmVkKSB7XG4gICAgICBsb2cuZGVidWcoXCJGbHVzaCBhbHJlYWR5IGluIHByb2dyZXNzLCBza2lwcGluZ1wiKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aCkge1xuICAgICAgbG9nLmRlYnVnKFwiTm8gcGVuZGluZyByZWNvcmRzIHRvIGZsdXNoXCIpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3QgY3JlZHMgPSB0aGlzLmNyZWRlbnRpYWxNYW5hZ2VyLmdldENyZWRlbnRpYWxzKClcbiAgICBpZiAoIWNyZWRzKSB7XG4gICAgICBsb2cud2FybihcIk5vIGNyZWRlbnRpYWxzIGF2YWlsYWJsZSBmb3IgZmx1c2hcIilcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCB7IHN0cmVhbU5hbWUgfSA9IGNyZWRzLFxuICAgICAgY2xpZW50ID0gdGhpcy5nZXRGaXJlaG9zZSgpXG4gICAgaWYgKCFjbGllbnQpIHtcbiAgICAgIGxvZy53YXJuKFwiTm8gZmlyZWhvc2UgY2xpZW50IGF2YWlsYWJsZSwgc2tpcHBpbmcgZmx1c2hcIilcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGRlZmVycmVkID0gdGhpcy5mbHVzaERlZmVycmVkID0gbmV3IERlZmVycmVkPHZvaWQ+KClcbiAgICB0cnkge1xuICAgICAgd2hpbGUgKHRoaXMucGVuZGluZ1JlY29yZHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0XG4gICAgICAgICAgY2h1bmtTaXplID0gTWF0aC5taW4odGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGgsIDEwKSxcbiAgICAgICAgICByZWNvcmRzID0gdGhpcy5wZW5kaW5nUmVjb3Jkcy5zcGxpY2UoMCwgY2h1bmtTaXplKSxcbiAgICAgICAgICByZWNvcmRKc29ucyA9IHJlY29yZHMubWFwKHJlY29yZCA9PiBKU09OLnN0cmluZ2lmeShyZWNvcmQpKVxuXG4gICAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSlcbiAgICAgICAgICBsb2cuZGVidWcoXCJSZWNvcmRzXCIsIHJlY29yZHMpXG5cbiAgICAgICAgY29uc3RcbiAgICAgICAgICB0ZXh0RW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpLFxuICAgICAgICAgIGJhdGNoOiBQdXRSZWNvcmRCYXRjaElucHV0W1wiUmVjb3Jkc1wiXSA9IHJlY29yZEpzb25zLm1hcChqc29uU3RyID0+ICh7XG4gICAgICAgICAgICBEYXRhOiB0ZXh0RW5jb2Rlci5lbmNvZGUoanNvblN0cilcbiAgICAgICAgICB9KSlcblxuICAgICAgICBsb2cuaW5mbyhgUHVzaGluZyAke3JlY29yZHMubGVuZ3RofSByZWNvcmRzIHRvIGZpcmVob3NlYClcblxuICAgICAgICBjb25zdCBjbWQgPSBuZXcgUHV0UmVjb3JkQmF0Y2hDb21tYW5kKHtcbiAgICAgICAgICBEZWxpdmVyeVN0cmVhbU5hbWU6IHN0cmVhbU5hbWUsXG4gICAgICAgICAgUmVjb3JkczogYmF0Y2gsXG4gICAgICAgIH0pXG5cbiAgICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IGNsaWVudC5zZW5kKGNtZClcbiAgICAgICAgY29uc3QgZmFpbGVkID0gcmVzcC5GYWlsZWRQdXRDb3VudCB8fCAwXG4gICAgICAgIGlmIChmYWlsZWQpIHtcbiAgICAgICAgICBjb25zdCByciA9IHJlc3AuUmVxdWVzdFJlc3BvbnNlcyB8fCBbXVxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChycltpXS5FcnJvckNvZGUpIHtcbiAgICAgICAgICAgICAgbG9nLndhcm4oYFJlY29yZCBmYWlsZWQ6ICR7cnJbaV0uRXJyb3JDb2RlfSAke3JyW2ldLkVycm9yTWVzc2FnZX1gKVxuICAgICAgICAgICAgICAvL3RoaXMucGVuZGluZ1JlY29yZHMudW5zaGlmdChyZWNvcmRzW2ldKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBsb2cuaW5mbyhgUHV0UmVjb3JkQmF0Y2ggZmFpbGVkPSR7ZmFpbGVkfTsgcmVxdWV1ZWQgZmFpbGVkIHJlY29yZHNgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZy5pbmZvKGBQdXRSZWNvcmRCYXRjaCBvayBjb3VudD0ke3JlY29yZHMubGVuZ3RofWApXG4gICAgICAgIH1cblxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nLmVycm9yKFwiRmFpbGVkIHRvIHB1c2ggbG9nc1wiLCBlcnIpXG4gICAgICBpZiAoZXJyLmNvZGUgPT09IEV4cGlyZWRUb2tlbkV4Y2VwdGlvbikge1xuICAgICAgICB0aGlzLmNyZWRlbnRpYWxNYW5hZ2VyLmZvcmNlVXBkYXRlQ3JlZGVudGlhbHMoKVxuICAgICAgfVxuICAgICAgZGVmZXJyZWQucmVqZWN0KGVycilcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5mbHVzaERlZmVycmVkID0gbnVsbFxuXG4gICAgICAvLyBpZiAodGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGgpXG4gICAgICAvLyAgIHRoaXMuZmx1c2goKVxuICAgIH1cblxuICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlXG4gIH1cblxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IEFXU0ZpcmVob3NlQXBwZW5kZXJcbiJdfQ==
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQVdTRmlyZWhvc2VBcHBlbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9sb2dnaW5nL2FwcGVuZGVycy9hd3MtZmlyZWhvc2UvQVdTRmlyZWhvc2VBcHBlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPQSx3R0FFMEM7QUFDMUMsK0RBQTJEO0FBQzNELG1DQUE2QjtBQUM3Qix3REFBb0Q7QUFJcEQsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLENBQUE7QUFDaEMsTUFBTSx5QkFBeUIsR0FBRyx1QkFBdUIsQ0FBQTtBQUV6RCxNQUFNLEdBQUcsR0FBRyxJQUFBLHFDQUFpQixHQUFFLENBQUE7QUFDL0IsSUFBSSxjQUFjLEdBQXVELElBQUksQ0FBQTtBQUU3RSxTQUFTLGlCQUFpQjtJQUN4QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEIsY0FBYyxHQUFHLGtEQUFPLDBCQUEwQixJQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM5RCxjQUFjLEdBQUcsSUFBSSxDQUFBO1lBQ3JCLE1BQU0sR0FBRyxDQUFBO1FBQ1gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsT0FBTyxjQUFjLENBQUE7QUFDdkIsQ0FBQztBQUVELE1BQWEsbUJBQW1CO0lBU0Y7SUFOcEIsY0FBYyxHQUFHLEtBQUssRUFBYSxDQUFBO0lBQ25DLGFBQWEsQ0FBZ0I7SUFDN0IsZUFBZSxHQUFHLElBQUksQ0FBQTtJQUVkLGlCQUFpQixDQUE4QjtJQUUvRCxZQUE0QixxQkFBNkI7UUFBN0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFRO1FBQ3ZELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLHlDQUE0QixDQUN2RCxxQkFBcUIsQ0FDdEIsQ0FBQTtRQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLEdBQUcs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WUFDckMsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLHlCQUF5QixFQUFFLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxDQUFBO1lBQ2pELENBQUM7WUFDRCxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3RCLENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFBO1lBRXpCLGtDQUFrQztZQUNsQyxpQkFBaUI7UUFDbkIsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQTtJQUN6QixDQUFDO0NBQ0Y7QUFwSkQsa0RBb0pDO0FBRUQsa0JBQWUsbUJBQW1CLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSB0eXBlc2NyaXB0L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHR5cGUge1xuICBGaXJlaG9zZUNsaWVudCxcbiAgUHV0UmVjb3JkQmF0Y2hJbnB1dFxufSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LWZpcmVob3NlXCJcbmltcG9ydCB7IExldmVsIH0gZnJvbSBcIi4uLy4uL0xldmVsLmpzXCJcblxuaW1wb3J0IEFXU0ZpcmVob3NlQ3JlZGVudGlhbE1hbmFnZXIsIHtcbiAgdHlwZSBBV1NDcmVkZW50aWFsc1xufSBmcm9tIFwiLi9BV1NGaXJlaG9zZUNyZWRlbnRpYWxNYW5hZ2VyLmpzXCJcbmltcG9ydCB7IGdldEludGVybmFsTG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0ludGVybmFsTG9nZ2VyLmpzXCJcbmltcG9ydCB7IHBpY2sgfSBmcm9tIFwibG9kYXNoXCJcbmltcG9ydCB7IERlZmVycmVkIH0gZnJvbSBcIi4uLy4uLy4uL2hlbHBlcnMvaW5kZXguanNcIlxuaW1wb3J0IHsgTG9nUmVjb3JkIH0gZnJvbSBcIi4uLy4uL0xvZ1JlY29yZC5qc1wiXG5pbXBvcnQgeyBBcHBlbmRlciB9IGZyb20gXCIuLi8uLi9BcHBlbmRlci5qc1wiXG5cbmNvbnN0IExvZ1F1ZXVlTWF4UmVjb3JkcyA9IDEwMDAwXG5jb25zdCBFeHBpcmVkVG9rZW5FeGNlcHRpb25Db2RlID0gXCJFeHBpcmVkVG9rZW5FeGNlcHRpb25cIlxuXG5jb25zdCBsb2cgPSBnZXRJbnRlcm5hbExvZ2dlcigpXG5sZXQgZmlyZWhvc2VNb2R1bGU6IFByb21pc2U8dHlwZW9mIGltcG9ydChcIkBhd3Mtc2RrL2NsaWVudC1maXJlaG9zZVwiKT4gPSBudWxsXG5cbmZ1bmN0aW9uIGdldEZpcmVob3NlTW9kdWxlKCkge1xuICBpZiAoIWZpcmVob3NlTW9kdWxlKSB7XG4gICAgZmlyZWhvc2VNb2R1bGUgPSBpbXBvcnQoXCJAYXdzLXNkay9jbGllbnQtZmlyZWhvc2VcIikuY2F0Y2goZXJyID0+IHtcbiAgICAgIGZpcmVob3NlTW9kdWxlID0gbnVsbFxuICAgICAgdGhyb3cgZXJyXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBmaXJlaG9zZU1vZHVsZVxufVxuXG5leHBvcnQgY2xhc3MgQVdTRmlyZWhvc2VBcHBlbmRlcjxcbiAgUmVjb3JkIGV4dGVuZHMgTG9nUmVjb3JkID0gTG9nUmVjb3JkXG4+IGltcGxlbWVudHMgQXBwZW5kZXI8UmVjb3JkPiB7XG4gIHByaXZhdGUgcGVuZGluZ1JlY29yZHMgPSBBcnJheTxMb2dSZWNvcmQ+KClcbiAgcHJpdmF0ZSBmbHVzaERlZmVycmVkOiBEZWZlcnJlZDx2b2lkPlxuICBwcml2YXRlIGZsdXNoSW50ZXJ2YWxNcyA9IDEwMDBcblxuICBwdWJsaWMgcmVhZG9ubHkgY3JlZGVudGlhbE1hbmFnZXI6IEFXU0ZpcmVob3NlQ3JlZGVudGlhbE1hbmFnZXJcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgY3JlZGVudGlhbEVuZHBvaW50VXJsOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNyZWRlbnRpYWxNYW5hZ2VyID0gbmV3IEFXU0ZpcmVob3NlQ3JlZGVudGlhbE1hbmFnZXIoXG4gICAgICBjcmVkZW50aWFsRW5kcG9pbnRVcmxcbiAgICApXG4gICAgdGhpcy5jcmVkZW50aWFsTWFuYWdlci5vbihcInJlY2VpdmVkXCIsICgpID0+IHtcbiAgICAgIGxvZy5pbmZvKFwiQ3JlZGVudGlhbHMgcmVjZWl2ZWQsIGluaXRpYWxpemluZyBmaXJlaG9zZSBjbGllbnRcIilcbiAgICAgIGlmICghdGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGggfHwgISF0aGlzLmZsdXNoRGVmZXJyZWQpIHtcbiAgICAgICAgbG9nLmRlYnVnKFxuICAgICAgICAgIFwiTm90aGluZyB0byBmbHVzaCB1cG9uIGNyZWRlbnRpYWwgcmVjZWlwdCBPUiBmbHVzaCBhbHJlYWR5IGluIHByb2dyZXNzXCJcbiAgICAgICAgKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHRoaXMuZmx1c2goKS5jYXRjaCgoZTogRXJyb3IpID0+IHtcbiAgICAgICAgbG9nLmVycm9yKFxuICAgICAgICAgIGBFcnJvciBmbHVzaGluZyBsb2dzIGFmdGVyIGNyZWRlbnRpYWwgcmVjZWlwdDogJHtlLm1lc3NhZ2V9YCxcbiAgICAgICAgICBlXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuICBhcHBlbmQocmVjb3JkOiBSZWNvcmQpOiB2b2lkIHtcbiAgICBjb25zdCBwZW5kaW5nQ291bnQgPSB0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aCArIDEsXG4gICAgICByZW1vdmVDb3VudCA9IExvZ1F1ZXVlTWF4UmVjb3JkcyAtIHBlbmRpbmdDb3VudFxuXG4gICAgaWYgKHJlbW92ZUNvdW50IDwgMCkge1xuICAgICAgdGhpcy5wZW5kaW5nUmVjb3Jkcy5zcGxpY2UoMCwgTWF0aC5hYnMocmVtb3ZlQ291bnQpKVxuICAgIH1cblxuICAgIHRoaXMucGVuZGluZ1JlY29yZHMucHVzaCh7XG4gICAgICB0aW1lc3RhbXA6IERhdGUubm93KCksXG4gICAgICAuLi5yZWNvcmQsXG4gICAgICBhcHA6IHJlY29yZC5hcHA/Lmxlbmd0aCA+IDAgPyByZWNvcmQuYXBwIDogXCJVTktOT1dOXCIsXG4gICAgICBlbnY6IHJlY29yZC5lbnY/Lmxlbmd0aCA+IDAgPyByZWNvcmQuZW52IDogXCJVTktOT1dOXCIsXG4gICAgICB1cmw6IHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIgPyBcImxvY2FsOi8vXCIgOiB3aW5kb3cubG9jYXRpb24uaHJlZlxuICAgIH0pXG5cbiAgICB0aGlzLmZsdXNoKClcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdGhlIEZpcmVob3NlIGNsaWVudCBmb3IgYSBsb2FkZWQgY3JlZGVudGlhbCBzZXQuXG4gICAqIEBwYXJhbSBjcmVkcyBMb2FkZWQgRmlyZWhvc2UgY3JlZGVudGlhbHMuXG4gICAqIEByZXR1cm5zIEZpcmVob3NlIGNsaWVudC5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZ2V0RmlyZWhvc2UoY3JlZHM6IEFXU0NyZWRlbnRpYWxzKTogUHJvbWlzZTxGaXJlaG9zZUNsaWVudD4ge1xuICAgIGNvbnN0IHsgcmVnaW9uLCBzdHJlYW1OYW1lIH0gPSBjcmVkc1xuXG4gICAgaWYgKCFyZWdpb24gfHwgIXN0cmVhbU5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlJlZ2lvbiBvciBzdHJlYW0gbmFtZSBub3QgYXZhaWxhYmxlXCIpXG4gICAgfVxuXG4gICAgY29uc3QgeyBGaXJlaG9zZUNsaWVudCB9ID0gYXdhaXQgZ2V0RmlyZWhvc2VNb2R1bGUoKVxuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBGaXJlaG9zZUNsaWVudCh7XG4gICAgICByZWdpb246IGNyZWRzLnJlZ2lvbixcbiAgICAgIGNyZWRlbnRpYWxzOiBwaWNrKGNyZWRzLCBcImFjY2Vzc0tleUlkXCIsIFwic2VjcmV0QWNjZXNzS2V5XCIsIFwic2Vzc2lvblRva2VuXCIpXG4gICAgfSlcblxuICAgIHJldHVybiBjbGllbnRcbiAgfVxuXG4gIC8qKlxuICAgKiBGbHVzaCBwZW5kaW5nIHJlY29yZHNcbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGZsdXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghIXRoaXMuZmx1c2hEZWZlcnJlZCkge1xuICAgICAgbG9nLmRlYnVnKFwiRmx1c2ggYWxyZWFkeSBpbiBwcm9ncmVzcywgc2tpcHBpbmdcIilcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghdGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGgpIHtcbiAgICAgIGxvZy5kZWJ1ZyhcIk5vIHBlbmRpbmcgcmVjb3JkcyB0byBmbHVzaFwiKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IGNyZWRzID0gdGhpcy5jcmVkZW50aWFsTWFuYWdlci5nZXRDcmVkZW50aWFscygpXG4gICAgaWYgKCFjcmVkcykge1xuICAgICAgbG9nLndhcm4oXCJObyBjcmVkZW50aWFscyBhdmFpbGFibGUgZm9yIGZsdXNoXCIpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBkZWZlcnJlZCA9ICh0aGlzLmZsdXNoRGVmZXJyZWQgPSBuZXcgRGVmZXJyZWQ8dm9pZD4oKSlcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBzdHJlYW1OYW1lIH0gPSBjcmVkcyxcbiAgICAgICAgY2xpZW50ID0gYXdhaXQgdGhpcy5nZXRGaXJlaG9zZShjcmVkcyksXG4gICAgICAgIHsgUHV0UmVjb3JkQmF0Y2hDb21tYW5kIH0gPSBhd2FpdCBnZXRGaXJlaG9zZU1vZHVsZSgpXG5cbiAgICAgIHdoaWxlICh0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBjaHVua1NpemUgPSBNYXRoLm1pbih0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aCwgMTApLFxuICAgICAgICAgIHJlY29yZHMgPSB0aGlzLnBlbmRpbmdSZWNvcmRzLnNwbGljZSgwLCBjaHVua1NpemUpLFxuICAgICAgICAgIHJlY29yZEpzb25zID0gcmVjb3Jkcy5tYXAocmVjb3JkID0+IEpTT04uc3RyaW5naWZ5KHJlY29yZCkpXG5cbiAgICAgICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKSBsb2cuZGVidWcoXCJSZWNvcmRzXCIsIHJlY29yZHMpXG5cbiAgICAgICAgY29uc3QgdGV4dEVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKSxcbiAgICAgICAgICBiYXRjaDogUHV0UmVjb3JkQmF0Y2hJbnB1dFtcIlJlY29yZHNcIl0gPSByZWNvcmRKc29ucy5tYXAoanNvblN0ciA9PiAoe1xuICAgICAgICAgICAgRGF0YTogdGV4dEVuY29kZXIuZW5jb2RlKGpzb25TdHIpXG4gICAgICAgICAgfSkpXG5cbiAgICAgICAgbG9nLmluZm8oYFB1c2hpbmcgJHtyZWNvcmRzLmxlbmd0aH0gcmVjb3JkcyB0byBmaXJlaG9zZWApXG5cbiAgICAgICAgY29uc3QgY21kID0gbmV3IFB1dFJlY29yZEJhdGNoQ29tbWFuZCh7XG4gICAgICAgICAgRGVsaXZlcnlTdHJlYW1OYW1lOiBzdHJlYW1OYW1lLFxuICAgICAgICAgIFJlY29yZHM6IGJhdGNoXG4gICAgICAgIH0pXG5cbiAgICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IGNsaWVudC5zZW5kKGNtZClcbiAgICAgICAgY29uc3QgZmFpbGVkID0gcmVzcC5GYWlsZWRQdXRDb3VudCB8fCAwXG4gICAgICAgIGlmIChmYWlsZWQpIHtcbiAgICAgICAgICBjb25zdCByciA9IHJlc3AuUmVxdWVzdFJlc3BvbnNlcyB8fCBbXVxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChycltpXS5FcnJvckNvZGUpIHtcbiAgICAgICAgICAgICAgbG9nLndhcm4oXG4gICAgICAgICAgICAgICAgYFJlY29yZCBmYWlsZWQ6ICR7cnJbaV0uRXJyb3JDb2RlfSAke3JyW2ldLkVycm9yTWVzc2FnZX1gXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLy90aGlzLnBlbmRpbmdSZWNvcmRzLnVuc2hpZnQocmVjb3Jkc1tpXSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgbG9nLmluZm8oYFB1dFJlY29yZEJhdGNoIGZhaWxlZD0ke2ZhaWxlZH07IHJlcXVldWVkIGZhaWxlZCByZWNvcmRzYClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2cuaW5mbyhgUHV0UmVjb3JkQmF0Y2ggb2sgY291bnQ9JHtyZWNvcmRzLmxlbmd0aH1gKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBkZWZlcnJlZC5yZXNvbHZlKClcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZy5lcnJvcihcIkZhaWxlZCB0byBwdXNoIGxvZ3NcIiwgZXJyKVxuICAgICAgaWYgKGVyci5uYW1lID09PSBFeHBpcmVkVG9rZW5FeGNlcHRpb25Db2RlKSB7XG4gICAgICAgIHRoaXMuY3JlZGVudGlhbE1hbmFnZXIuZm9yY2VVcGRhdGVDcmVkZW50aWFscygpXG4gICAgICB9XG4gICAgICBkZWZlcnJlZC5yZWplY3QoZXJyKVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmZsdXNoRGVmZXJyZWQgPSBudWxsXG5cbiAgICAgIC8vIGlmICh0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aClcbiAgICAgIC8vICAgdGhpcy5mbHVzaCgpXG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2VcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBBV1NGaXJlaG9zZUFwcGVuZGVyXG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"AWSFirehoseCredentialManager.d.ts","sourceRoot":"","sources":["../../../../../src/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.ts"],"names":[],"mappings":"AAGA,OAAO,aAAa,MAAM,eAAe,CAAA;AAMzC,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,oCAAoC;IACnD,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAA;IACzC,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,qBAAa,4BAA6B,SAAQ,aAAa,CAAC,oCAAoC,CAAC;aAMjF,qBAAqB,EAAE,MAAM;IAJ/C,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,YAAY,CAAkC;gBAGpC,qBAAqB,EAAE,MAAM;IAK/C,sBAAsB,IAAI,IAAI;IAS9B,cAAc,IAAI,cAAc;IAmBhC,cAAc,IAAI,OAAO;YAIX,IAAI;IAyBlB,eAAe,CAAC,aAAa,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI;IA4B7D,aAAa,IAAI,MAAM;IAIvB,SAAS,IAAI,MAAM;IAInB,OAAO,IAAI,IAAI;CAMhB;AAGD,eAAe,4BAA4B,CAAA"}
1
+ {"version":3,"file":"AWSFirehoseCredentialManager.d.ts","sourceRoot":"","sources":["../../../../../src/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,MAAM,eAAe,CAAA;AAMzC,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,oCAAoC;IACnD,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAA;IACzC,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,qBAAa,4BAA6B,SAAQ,aAAa,CAAC,oCAAoC,CAAC;aAIvE,qBAAqB,EAAE,MAAM;IAHzD,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,YAAY,CAAiC;gBAEzB,qBAAqB,EAAE,MAAM;IAIzD,sBAAsB,IAAI,IAAI;IAS9B,cAAc,IAAI,cAAc;IAmBhC,cAAc,IAAI,OAAO;YAIX,IAAI;IA0BlB,eAAe,CAAC,aAAa,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI;IA2B7D,aAAa,IAAI,MAAM;IAIvB,SAAS,IAAI,MAAM;IAInB,OAAO,IAAI,IAAI;CAMhB;AAED,eAAe,4BAA4B,CAAA"}
@@ -45,11 +45,11 @@ class AWSFirehoseCredentialManager extends eventemitter3_1.default {
45
45
  async load() {
46
46
  if (this.loadDeferred && !this.loadDeferred.isRejected())
47
47
  return this.loadDeferred.promise;
48
- const deferred = this.loadDeferred = new index_js_1.Deferred();
48
+ const deferred = (this.loadDeferred = new index_js_1.Deferred());
49
49
  try {
50
50
  const r = await fetch(this.credentialEndpointUrl, {
51
51
  method: "GET",
52
- credentials: "include",
52
+ credentials: "include"
53
53
  });
54
54
  if (!r.ok)
55
55
  throw new Error(`creds http ${r.status}`);
@@ -102,4 +102,4 @@ class AWSFirehoseCredentialManager extends eventemitter3_1.default {
102
102
  }
103
103
  exports.AWSFirehoseCredentialManager = AWSFirehoseCredentialManager;
104
104
  exports.default = AWSFirehoseCredentialManager;
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9sb2dnaW5nL2FwcGVuZGVycy9hd3MtZmlyZWhvc2UvQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSx3REFBb0Q7QUFDcEQsK0RBQTJEO0FBQzNELGtFQUF5QztBQUV6QyxNQUFNLHNCQUFzQixHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFBLENBQUMsWUFBWTtBQUV6RCxNQUFNLEdBQUcsR0FBRyxJQUFBLHFDQUFpQixHQUFFLENBQUE7QUFnQi9CLE1BQWEsNEJBQTZCLFNBQVEsdUJBQW1EO0lBTWpGO0lBSlYsWUFBWSxHQUFrQyxJQUFJLENBQUM7SUFDbkQsWUFBWSxHQUE2QixJQUFJLENBQUM7SUFFdEQsWUFDa0IscUJBQTZCO1FBRTdDLEtBQUssRUFBRSxDQUFBO1FBRlMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFRO0lBRy9DLENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ3hELElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUE7UUFDckQsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDekIsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ3pELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLEVB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QUFDO1FBRUQsV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFBO1FBRXhDLElBQUksQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNsQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQTtZQUN4QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUMvRSxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUE7SUFDakIsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxVQUFVLENBQUE7SUFDMUMsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLENBQUE7SUFDdEMsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRTtZQUNoQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFBO1FBQ2xELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFBO0lBQzFCLENBQUM7Q0FDRjtBQTlHRCxvRUE4R0M7QUFHRCxrQkFBZSw0QkFBNEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpcmVob3NlQ2xpZW50LCBQdXRSZWNvcmRCYXRjaENvbW1hbmQgfSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LWZpcmVob3NlXCJcbmltcG9ydCB7IERlZmVycmVkIH0gZnJvbSBcIi4uLy4uLy4uL2hlbHBlcnMvaW5kZXguanNcIlxuaW1wb3J0IHsgZ2V0SW50ZXJuYWxMb2dnZXIgfSBmcm9tIFwiLi4vLi4vSW50ZXJuYWxMb2dnZXIuanNcIlxuaW1wb3J0IEV2ZW50RW1pdHRlcjMgZnJvbSBcImV2ZW50ZW1pdHRlcjNcIlxuXG5jb25zdCBDUkVEX0JVRkZFUl9QQURESU5HX01TID0gMyAqIDYwICogMTAwMCAvLyAzIG1pbnV0ZXNcblxuY29uc3QgbG9nID0gZ2V0SW50ZXJuYWxMb2dnZXIoKVxuXG5leHBvcnQgaW50ZXJmYWNlIEFXU0NyZWRlbnRpYWxzIHtcbiAgYWNjZXNzS2V5SWQ6IHN0cmluZ1xuICBzZWNyZXRBY2Nlc3NLZXk6IHN0cmluZ1xuICBzZXNzaW9uVG9rZW46IHN0cmluZ1xuICBzdHJlYW1OYW1lOiBzdHJpbmdcbiAgcmVnaW9uOiBzdHJpbmdcbiAgZXhwaXJhdGlvbjogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlckV2ZW50TWFwIHtcbiAgcmVjZWl2ZWQ6IChjcmVkczogQVdTQ3JlZGVudGlhbHMpID0+IHZvaWRcbiAgZXhwaXJlZDogKCkgPT4gdm9pZFxufVxuXG5leHBvcnQgY2xhc3MgQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlciBleHRlbmRzIEV2ZW50RW1pdHRlcjM8QVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlckV2ZW50TWFwPiB7XG5cbiAgcHJpdmF0ZSByZWZyZXNoVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+ID0gbnVsbDtcbiAgcHJpdmF0ZSBsb2FkRGVmZXJyZWQ6IERlZmVycmVkPEFXU0NyZWRlbnRpYWxzPiA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGNyZWRlbnRpYWxFbmRwb2ludFVybDogc3RyaW5nLFxuICApIHtcbiAgICBzdXBlcigpXG4gIH1cblxuICBmb3JjZVVwZGF0ZUNyZWRlbnRpYWxzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxvYWREZWZlcnJlZCAmJiAhdGhpcy5sb2FkRGVmZXJyZWQuaXNTZXR0bGVkKCkpIHtcbiAgICAgIHRoaXMubG9hZERlZmVycmVkLnJlamVjdChuZXcgRXJyb3IoXCJmb3JjZSB1cGRhdGVcIikpXG4gICAgfVxuXG4gICAgdGhpcy5sb2FkRGVmZXJyZWQgPSBudWxsXG4gICAgdGhpcy5zY2hlZHVsZVJlZnJlc2goMSlcbiAgfVxuXG4gIGdldENyZWRlbnRpYWxzKCk6IEFXU0NyZWRlbnRpYWxzIHtcbiAgICBpZiAodGhpcy5sb2FkRGVmZXJyZWQgJiYgdGhpcy5sb2FkRGVmZXJyZWQuaXNGdWxmaWxsZWQoKSkge1xuICAgICAgY29uc3QgY3JlZHMgPSB0aGlzLmxvYWREZWZlcnJlZC5nZXRSZXN1bHQoKSxcbiAgICAgICAgZXhwTXMgPSBEYXRlLnBhcnNlKGNyZWRzLmV4cGlyYXRpb24pXG5cbiAgICAgIGlmIChleHBNcyA8PSBEYXRlLm5vdygpKSB7XG4gICAgICAgIGxvZy5pbmZvKFwiQ3JlZGVudGlhbHMgZXhwaXJlZFwiKVxuICAgICAgICB0aGlzLmxvYWREZWZlcnJlZCA9IG51bGxcbiAgICAgICAgdGhpcy5zY2hlZHVsZVJlZnJlc2goMSlcbiAgICAgICAgdGhpcy5lbWl0KFwiZXhwaXJlZFwiKVxuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgICAgcmV0dXJuIGNyZWRzXG4gICAgfVxuXG4gICAgdGhpcy5zY2hlZHVsZVJlZnJlc2goMSlcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgaGFzQ3JlZGVudGlhbHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q3JlZGVudGlhbHMoKSAhPSBudWxsXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWQoKTogUHJvbWlzZTxBV1NDcmVkZW50aWFscz4ge1xuICAgIGlmICh0aGlzLmxvYWREZWZlcnJlZCAmJiAhdGhpcy5sb2FkRGVmZXJyZWQuaXNSZWplY3RlZCgpKVxuICAgICAgcmV0dXJuIHRoaXMubG9hZERlZmVycmVkLnByb21pc2VcblxuICAgIGNvbnN0IGRlZmVycmVkID0gdGhpcy5sb2FkRGVmZXJyZWQgPSBuZXcgRGVmZXJyZWQ8QVdTQ3JlZGVudGlhbHM+KClcbiAgICB0cnkge1xuICAgICAgY29uc3QgciA9IGF3YWl0IGZldGNoKHRoaXMuY3JlZGVudGlhbEVuZHBvaW50VXJsLCB7XG4gICAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgICAgY3JlZGVudGlhbHM6IFwiaW5jbHVkZVwiLFxuICAgICAgfSlcbiAgICAgIGlmICghci5vaykgdGhyb3cgbmV3IEVycm9yKGBjcmVkcyBodHRwICR7ci5zdGF0dXN9YClcbiAgICAgIGNvbnN0IGNyZWRzOiBBV1NDcmVkZW50aWFscyA9IGF3YWl0IHIuanNvbigpXG5cblxuICAgICAgdGhpcy5zY2hlZHVsZVJlZnJlc2goY3JlZHMpXG4gICAgICBsb2cuaW5mbyhgR290IGNyZWRzLCBleHBpcmU9JHtjcmVkcy5leHBpcmF0aW9ufSwgc3RyZWFtPSR7Y3JlZHMuc3RyZWFtTmFtZX0sIHJlZ2lvbj0ke2NyZWRzLnJlZ2lvbn1gKVxuICAgICAgZGVmZXJyZWQucmVzb2x2ZShjcmVkcylcbiAgICAgIHRoaXMuZW1pdChcInJlY2VpdmVkXCIsIGNyZWRzKVxuICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2VcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBkZWZlcnJlZC5yZWplY3QoZSlcbiAgICAgIHRoaXMubG9hZERlZmVycmVkID0gbnVsbFxuICAgICAgdGhyb3cgZVxuICAgIH1cbiAgfVxuICBzY2hlZHVsZVJlZnJlc2goY3JlZHNPck1pbGxpczogQVdTQ3JlZGVudGlhbHMgfCBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWZyZXNoVGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlZnJlc2hUaW1lcilcbiAgICAgIHRoaXMucmVmcmVzaFRpbWVyID0gbnVsbFxuICAgIH1cbiAgICBpZiAoIWNyZWRzT3JNaWxsaXMpXG4gICAgICByZXR1cm5cblxuICAgIGxldCByZWZyZXNoSW5NczogbnVtYmVyXG4gICAgaWYgKHR5cGVvZiBjcmVkc09yTWlsbGlzID09PSBcIm51bWJlclwiKSB7XG4gICAgICByZWZyZXNoSW5NcyA9IGNyZWRzT3JNaWxsaXNcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3RcbiAgICAgICAgY3JlZHMgPSBjcmVkc09yTWlsbGlzLFxuICAgICAgICBleHBNcyA9IERhdGUucGFyc2UoY3JlZHMuZXhwaXJhdGlvbilcblxuICAgICAgcmVmcmVzaEluTXMgPSBleHBNcyAtIERhdGUubm93KCkgLSBDUkVEX0JVRkZFUl9QQURESU5HX01TXG5cbiAgICB9XG5cbiAgICByZWZyZXNoSW5NcyA9IE1hdGgubWF4KDEwMCwgcmVmcmVzaEluTXMpXG5cbiAgICB0aGlzLnJlZnJlc2hUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkRGVmZXJyZWQgPSBudWxsXG4gICAgICB0aGlzLmxvYWQoKS5jYXRjaCgoZTogRXJyb3IpID0+IGxvZy5lcnJvcihgcmVmcmVzaCBmYWlsZWQ6ICR7ZS5tZXNzYWdlfWAsIGUpKVxuICAgIH0sIHJlZnJlc2hJbk1zKVxuICB9XG5cbiAgZ2V0U3RyZWFtTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldENyZWRlbnRpYWxzKCk/LnN0cmVhbU5hbWVcbiAgfVxuXG4gIGdldFJlZ2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldENyZWRlbnRpYWxzKCk/LnJlZ2lvblxuICB9XG5cbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnNjaGVkdWxlUmVmcmVzaChudWxsKVxuICAgIGlmICghdGhpcy5sb2FkRGVmZXJyZWQuaXNTZXR0bGVkKCkpXG4gICAgICB0aGlzLmxvYWREZWZlcnJlZC5yZWplY3QobmV3IEVycm9yKFwiZGVzdHJveWVkXCIpKVxuICAgIHRoaXMubG9hZERlZmVycmVkID0gbnVsbFxuICB9XG59XG5cblxuZXhwb3J0IGRlZmF1bHQgQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlclxuIl19
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9sb2dnaW5nL2FwcGVuZGVycy9hd3MtZmlyZWhvc2UvQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx3REFBb0Q7QUFDcEQsK0RBQTJEO0FBQzNELGtFQUF5QztBQUV6QyxNQUFNLHNCQUFzQixHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFBLENBQUMsWUFBWTtBQUV6RCxNQUFNLEdBQUcsR0FBRyxJQUFBLHFDQUFpQixHQUFFLENBQUE7QUFnQi9CLE1BQWEsNEJBQTZCLFNBQVEsdUJBQW1EO0lBSXZFO0lBSHBCLFlBQVksR0FBa0MsSUFBSSxDQUFBO0lBQ2xELFlBQVksR0FBNkIsSUFBSSxDQUFBO0lBRXJELFlBQTRCLHFCQUE2QjtRQUN2RCxLQUFLLEVBQUUsQ0FBQTtRQURtQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQVE7SUFFekQsQ0FBQztJQUVELHNCQUFzQjtRQUNwQixJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDeEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQTtRQUNyRCxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUE7UUFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN6QixDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDekQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUs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Q0FBQTtRQUMzRCxDQUFDO1FBRUQsV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFBO1FBRXhDLElBQUksQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNsQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQTtZQUN4QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBUSxFQUFFLEVBQUUsQ0FDN0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUM3QyxDQUFBO1FBQ0gsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBQ2pCLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsVUFBVSxDQUFBO0lBQzFDLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxDQUFBO0lBQ3RDLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQTtRQUNsRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQTtJQUMxQixDQUFDO0NBQ0Y7QUEzR0Qsb0VBMkdDO0FBRUQsa0JBQWUsNEJBQTRCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWZlcnJlZCB9IGZyb20gXCIuLi8uLi8uLi9oZWxwZXJzL2luZGV4LmpzXCJcbmltcG9ydCB7IGdldEludGVybmFsTG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0ludGVybmFsTG9nZ2VyLmpzXCJcbmltcG9ydCBFdmVudEVtaXR0ZXIzIGZyb20gXCJldmVudGVtaXR0ZXIzXCJcblxuY29uc3QgQ1JFRF9CVUZGRVJfUEFERElOR19NUyA9IDMgKiA2MCAqIDEwMDAgLy8gMyBtaW51dGVzXG5cbmNvbnN0IGxvZyA9IGdldEludGVybmFsTG9nZ2VyKClcblxuZXhwb3J0IGludGVyZmFjZSBBV1NDcmVkZW50aWFscyB7XG4gIGFjY2Vzc0tleUlkOiBzdHJpbmdcbiAgc2VjcmV0QWNjZXNzS2V5OiBzdHJpbmdcbiAgc2Vzc2lvblRva2VuOiBzdHJpbmdcbiAgc3RyZWFtTmFtZTogc3RyaW5nXG4gIHJlZ2lvbjogc3RyaW5nXG4gIGV4cGlyYXRpb246IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFXU0ZpcmVob3NlQ3JlZGVudGlhbE1hbmFnZXJFdmVudE1hcCB7XG4gIHJlY2VpdmVkOiAoY3JlZHM6IEFXU0NyZWRlbnRpYWxzKSA9PiB2b2lkXG4gIGV4cGlyZWQ6ICgpID0+IHZvaWRcbn1cblxuZXhwb3J0IGNsYXNzIEFXU0ZpcmVob3NlQ3JlZGVudGlhbE1hbmFnZXIgZXh0ZW5kcyBFdmVudEVtaXR0ZXIzPEFXU0ZpcmVob3NlQ3JlZGVudGlhbE1hbmFnZXJFdmVudE1hcD4ge1xuICBwcml2YXRlIHJlZnJlc2hUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gPSBudWxsXG4gIHByaXZhdGUgbG9hZERlZmVycmVkOiBEZWZlcnJlZDxBV1NDcmVkZW50aWFscz4gPSBudWxsXG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGNyZWRlbnRpYWxFbmRwb2ludFVybDogc3RyaW5nKSB7XG4gICAgc3VwZXIoKVxuICB9XG5cbiAgZm9yY2VVcGRhdGVDcmVkZW50aWFscygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sb2FkRGVmZXJyZWQgJiYgIXRoaXMubG9hZERlZmVycmVkLmlzU2V0dGxlZCgpKSB7XG4gICAgICB0aGlzLmxvYWREZWZlcnJlZC5yZWplY3QobmV3IEVycm9yKFwiZm9yY2UgdXBkYXRlXCIpKVxuICAgIH1cblxuICAgIHRoaXMubG9hZERlZmVycmVkID0gbnVsbFxuICAgIHRoaXMuc2NoZWR1bGVSZWZyZXNoKDEpXG4gIH1cblxuICBnZXRDcmVkZW50aWFscygpOiBBV1NDcmVkZW50aWFscyB7XG4gICAgaWYgKHRoaXMubG9hZERlZmVycmVkICYmIHRoaXMubG9hZERlZmVycmVkLmlzRnVsZmlsbGVkKCkpIHtcbiAgICAgIGNvbnN0IGNyZWRzID0gdGhpcy5sb2FkRGVmZXJyZWQuZ2V0UmVzdWx0KCksXG4gICAgICAgIGV4cE1zID0gRGF0ZS5wYXJzZShjcmVkcy5leHBpcmF0aW9uKVxuXG4gICAgICBpZiAoZXhwTXMgPD0gRGF0ZS5ub3coKSkge1xuICAgICAgICBsb2cuaW5mbyhcIkNyZWRlbnRpYWxzIGV4cGlyZWRcIilcbiAgICAgICAgdGhpcy5sb2FkRGVmZXJyZWQgPSBudWxsXG4gICAgICAgIHRoaXMuc2NoZWR1bGVSZWZyZXNoKDEpXG4gICAgICAgIHRoaXMuZW1pdChcImV4cGlyZWRcIilcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cbiAgICAgIHJldHVybiBjcmVkc1xuICAgIH1cblxuICAgIHRoaXMuc2NoZWR1bGVSZWZyZXNoKDEpXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGhhc0NyZWRlbnRpYWxzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldENyZWRlbnRpYWxzKCkgIT0gbnVsbFxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkKCk6IFByb21pc2U8QVdTQ3JlZGVudGlhbHM+IHtcbiAgICBpZiAodGhpcy5sb2FkRGVmZXJyZWQgJiYgIXRoaXMubG9hZERlZmVycmVkLmlzUmVqZWN0ZWQoKSlcbiAgICAgIHJldHVybiB0aGlzLmxvYWREZWZlcnJlZC5wcm9taXNlXG5cbiAgICBjb25zdCBkZWZlcnJlZCA9ICh0aGlzLmxvYWREZWZlcnJlZCA9IG5ldyBEZWZlcnJlZDxBV1NDcmVkZW50aWFscz4oKSlcbiAgICB0cnkge1xuICAgICAgY29uc3QgciA9IGF3YWl0IGZldGNoKHRoaXMuY3JlZGVudGlhbEVuZHBvaW50VXJsLCB7XG4gICAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgICAgY3JlZGVudGlhbHM6IFwiaW5jbHVkZVwiXG4gICAgICB9KVxuICAgICAgaWYgKCFyLm9rKSB0aHJvdyBuZXcgRXJyb3IoYGNyZWRzIGh0dHAgJHtyLnN0YXR1c31gKVxuICAgICAgY29uc3QgY3JlZHM6IEFXU0NyZWRlbnRpYWxzID0gYXdhaXQgci5qc29uKClcblxuICAgICAgdGhpcy5zY2hlZHVsZVJlZnJlc2goY3JlZHMpXG4gICAgICBsb2cuaW5mbyhcbiAgICAgICAgYEdvdCBjcmVkcywgZXhwaXJlPSR7Y3JlZHMuZXhwaXJhdGlvbn0sIHN0cmVhbT0ke2NyZWRzLnN0cmVhbU5hbWV9LCByZWdpb249JHtjcmVkcy5yZWdpb259YFxuICAgICAgKVxuICAgICAgZGVmZXJyZWQucmVzb2x2ZShjcmVkcylcbiAgICAgIHRoaXMuZW1pdChcInJlY2VpdmVkXCIsIGNyZWRzKVxuICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2VcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBkZWZlcnJlZC5yZWplY3QoZSlcbiAgICAgIHRoaXMubG9hZERlZmVycmVkID0gbnVsbFxuICAgICAgdGhyb3cgZVxuICAgIH1cbiAgfVxuICBzY2hlZHVsZVJlZnJlc2goY3JlZHNPck1pbGxpczogQVdTQ3JlZGVudGlhbHMgfCBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWZyZXNoVGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlZnJlc2hUaW1lcilcbiAgICAgIHRoaXMucmVmcmVzaFRpbWVyID0gbnVsbFxuICAgIH1cbiAgICBpZiAoIWNyZWRzT3JNaWxsaXMpIHJldHVyblxuXG4gICAgbGV0IHJlZnJlc2hJbk1zOiBudW1iZXJcbiAgICBpZiAodHlwZW9mIGNyZWRzT3JNaWxsaXMgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIHJlZnJlc2hJbk1zID0gY3JlZHNPck1pbGxpc1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjcmVkcyA9IGNyZWRzT3JNaWxsaXMsXG4gICAgICAgIGV4cE1zID0gRGF0ZS5wYXJzZShjcmVkcy5leHBpcmF0aW9uKVxuXG4gICAgICByZWZyZXNoSW5NcyA9IGV4cE1zIC0gRGF0ZS5ub3coKSAtIENSRURfQlVGRkVSX1BBRERJTkdfTVNcbiAgICB9XG5cbiAgICByZWZyZXNoSW5NcyA9IE1hdGgubWF4KDEwMCwgcmVmcmVzaEluTXMpXG5cbiAgICB0aGlzLnJlZnJlc2hUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkRGVmZXJyZWQgPSBudWxsXG4gICAgICB0aGlzLmxvYWQoKS5jYXRjaCgoZTogRXJyb3IpID0+XG4gICAgICAgIGxvZy5lcnJvcihgcmVmcmVzaCBmYWlsZWQ6ICR7ZS5tZXNzYWdlfWAsIGUpXG4gICAgICApXG4gICAgfSwgcmVmcmVzaEluTXMpXG4gIH1cblxuICBnZXRTdHJlYW1OYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q3JlZGVudGlhbHMoKT8uc3RyZWFtTmFtZVxuICB9XG5cbiAgZ2V0UmVnaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q3JlZGVudGlhbHMoKT8ucmVnaW9uXG4gIH1cblxuICBkZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc2NoZWR1bGVSZWZyZXNoKG51bGwpXG4gICAgaWYgKCF0aGlzLmxvYWREZWZlcnJlZC5pc1NldHRsZWQoKSlcbiAgICAgIHRoaXMubG9hZERlZmVycmVkLnJlamVjdChuZXcgRXJyb3IoXCJkZXN0cm95ZWRcIikpXG4gICAgdGhpcy5sb2FkRGVmZXJyZWQgPSBudWxsXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlclxuIl19
@@ -10,11 +10,9 @@ export declare class AWSFirehoseAppender<Record extends LogRecord = LogRecord> i
10
10
  constructor(credentialEndpointUrl: string);
11
11
  append(record: Record): void;
12
12
  /**
13
- * Create the firehose client and return
14
- *
15
- * @param {IAWSTemporaryCredentials} credentials
16
- * @param {boolean} flush
17
- * @returns {Firehose}
13
+ * Create the Firehose client for a loaded credential set.
14
+ * @param creds Loaded Firehose credentials.
15
+ * @returns Firehose client.
18
16
  */
19
17
  private getFirehose;
20
18
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"AWSFirehoseAppender.d.ts","sourceRoot":"","sources":["../../../../../src/logging/appenders/aws-firehose/AWSFirehoseAppender.ts"],"names":[],"mappings":"AASA,OAAO,4BAA4B,MAAM,mCAAmC,CAAA;AAK5E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAM5C,qBAAa,mBAAmB,CAAC,MAAM,SAAS,SAAS,GAAG,SAAS,CACnE,YAAW,QAAQ,CAAC,MAAM,CAAC;aAQT,qBAAqB,EAAE,MAAM;IAP/C,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,eAAe,CAAQ;IAE/B,SAAgB,iBAAiB,EAAE,4BAA4B,CAAA;gBAG7C,qBAAqB,EAAE,MAAM;IAc/C,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAoB5B;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IAsBnB;;;;OAIG;YACW,KAAK;CA+EpB;AAED,eAAe,mBAAmB,CAAA"}
1
+ {"version":3,"file":"AWSFirehoseAppender.d.ts","sourceRoot":"","sources":["../../../../../src/logging/appenders/aws-firehose/AWSFirehoseAppender.ts"],"names":[],"mappings":"AAOA,OAAO,4BAEN,MAAM,mCAAmC,CAAA;AAI1C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAmB5C,qBAAa,mBAAmB,CAC9B,MAAM,SAAS,SAAS,GAAG,SAAS,CACpC,YAAW,QAAQ,CAAC,MAAM,CAAC;aAOC,qBAAqB,EAAE,MAAM;IANzD,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,eAAe,CAAO;IAE9B,SAAgB,iBAAiB,EAAE,4BAA4B,CAAA;gBAEnC,qBAAqB,EAAE,MAAM;IAoBzD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAmB5B;;;;OAIG;YACW,WAAW;IAgBzB;;;;OAIG;YACW,KAAK;CA0EpB;AAED,eAAe,mBAAmB,CAAA"}
@@ -1,11 +1,20 @@
1
- import { FirehoseClient, PutRecordBatchCommand } from "@aws-sdk/client-firehose";
2
- import { ExpiredTokenException, } from "@aws-sdk/client-sts";
3
1
  import AWSFirehoseCredentialManager from "./AWSFirehoseCredentialManager.js";
4
2
  import { getInternalLogger } from "../../InternalLogger.js";
5
3
  import { pick } from "lodash";
6
4
  import { Deferred } from "../../../helpers/index.js";
7
5
  const LogQueueMaxRecords = 10000;
6
+ const ExpiredTokenExceptionCode = "ExpiredTokenException";
8
7
  const log = getInternalLogger();
8
+ let firehoseModule = null;
9
+ function getFirehoseModule() {
10
+ if (!firehoseModule) {
11
+ firehoseModule = import("@aws-sdk/client-firehose").catch(err => {
12
+ firehoseModule = null;
13
+ throw err;
14
+ });
15
+ }
16
+ return firehoseModule;
17
+ }
9
18
  export class AWSFirehoseAppender {
10
19
  credentialEndpointUrl;
11
20
  pendingRecords = Array();
@@ -21,8 +30,7 @@ export class AWSFirehoseAppender {
21
30
  log.debug("Nothing to flush upon credential receipt OR flush already in progress");
22
31
  return;
23
32
  }
24
- this.flush()
25
- .catch((e) => {
33
+ this.flush().catch((e) => {
26
34
  log.error(`Error flushing logs after credential receipt: ${e.message}`, e);
27
35
  });
28
36
  });
@@ -37,30 +45,24 @@ export class AWSFirehoseAppender {
37
45
  ...record,
38
46
  app: record.app?.length > 0 ? record.app : "UNKNOWN",
39
47
  env: record.env?.length > 0 ? record.env : "UNKNOWN",
40
- url: typeof window === "undefined" ? "local://" : window.location.href,
48
+ url: typeof window === "undefined" ? "local://" : window.location.href
41
49
  });
42
50
  this.flush();
43
51
  }
44
52
  /**
45
- * Create the firehose client and return
46
- *
47
- * @param {IAWSTemporaryCredentials} credentials
48
- * @param {boolean} flush
49
- * @returns {Firehose}
53
+ * Create the Firehose client for a loaded credential set.
54
+ * @param creds Loaded Firehose credentials.
55
+ * @returns Firehose client.
50
56
  */
51
- getFirehose() {
52
- const creds = this.credentialManager.getCredentials();
53
- if (!creds) {
54
- log.warn("No credentials available for flush");
55
- return null;
56
- }
57
+ async getFirehose(creds) {
57
58
  const { region, streamName } = creds;
58
59
  if (!region || !streamName) {
59
60
  throw new Error("Region or stream name not available");
60
61
  }
62
+ const { FirehoseClient } = await getFirehoseModule();
61
63
  const client = new FirehoseClient({
62
64
  region: creds.region,
63
- credentials: pick(creds, "accessKeyId", "secretAccessKey", "sessionToken"),
65
+ credentials: pick(creds, "accessKeyId", "secretAccessKey", "sessionToken")
64
66
  });
65
67
  return client;
66
68
  }
@@ -83,13 +85,9 @@ export class AWSFirehoseAppender {
83
85
  log.warn("No credentials available for flush");
84
86
  return;
85
87
  }
86
- const { streamName } = creds, client = this.getFirehose();
87
- if (!client) {
88
- log.warn("No firehose client available, skipping flush");
89
- return;
90
- }
91
- const deferred = this.flushDeferred = new Deferred();
88
+ const deferred = (this.flushDeferred = new Deferred());
92
89
  try {
90
+ const { streamName } = creds, client = await this.getFirehose(creds), { PutRecordBatchCommand } = await getFirehoseModule();
93
91
  while (this.pendingRecords.length) {
94
92
  const chunkSize = Math.min(this.pendingRecords.length, 10), records = this.pendingRecords.splice(0, chunkSize), recordJsons = records.map(record => JSON.stringify(record));
95
93
  if (log.isDebugEnabled())
@@ -100,7 +98,7 @@ export class AWSFirehoseAppender {
100
98
  log.info(`Pushing ${records.length} records to firehose`);
101
99
  const cmd = new PutRecordBatchCommand({
102
100
  DeliveryStreamName: streamName,
103
- Records: batch,
101
+ Records: batch
104
102
  });
105
103
  const resp = await client.send(cmd);
106
104
  const failed = resp.FailedPutCount || 0;
@@ -118,10 +116,11 @@ export class AWSFirehoseAppender {
118
116
  log.info(`PutRecordBatch ok count=${records.length}`);
119
117
  }
120
118
  }
119
+ deferred.resolve();
121
120
  }
122
121
  catch (err) {
123
122
  log.error("Failed to push logs", err);
124
- if (err.code === ExpiredTokenException) {
123
+ if (err.name === ExpiredTokenExceptionCode) {
125
124
  this.credentialManager.forceUpdateCredentials();
126
125
  }
127
126
  deferred.reject(err);
@@ -135,4 +134,4 @@ export class AWSFirehoseAppender {
135
134
  }
136
135
  }
137
136
  export default AWSFirehoseAppender;
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQVdTRmlyZWhvc2VBcHBlbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9sb2dnaW5nL2FwcGVuZGVycy9hd3MtZmlyZWhvc2UvQVdTRmlyZWhvc2VBcHBlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixFQUF1QixNQUFNLDBCQUEwQixDQUFBO0FBQ3JHLE9BQU8sRUFFTCxxQkFBcUIsR0FDdEIsTUFBTSxxQkFBcUIsQ0FBQTtBQUc1QixPQUFPLDRCQUE0QixNQUFNLG1DQUFtQyxDQUFBO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBRTNELE9BQU8sRUFBVyxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDdEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBSXBELE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFBO0FBRWhDLE1BQU0sR0FBRyxHQUFHLGlCQUFpQixFQUFFLENBQUE7QUFFL0IsTUFBTSxPQUFPLG1CQUFtQjtJQVNaO0lBUFYsY0FBYyxHQUFHLEtBQUssRUFBYSxDQUFBO0lBQ25DLGFBQWEsQ0FBZ0I7SUFDN0IsZUFBZSxHQUFHLElBQUksQ0FBQztJQUVmLGlCQUFpQixDQUE4QjtJQUUvRCxZQUNrQixxQkFBNkI7UUFBN0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFRO1FBQzdDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLDRCQUE0QixDQUFDLHFCQUFxQixDQUFDLENBQUE7UUFDaEYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFO1lBQ3pDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0RBQW9ELENBQUMsQ0FBQTtZQUM5RCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLElBQUks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QkFBcUIsRUFBRSxDQUFDO2dCQUN2QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQTtZQUNqRCxDQUFDO1lBQ0QsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN0QixDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQTtZQUV6QixrQ0FBa0M7WUFDbEMsaUJBQWlCO1FBQ25CLENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUE7SUFDekIsQ0FBQztDQUdGO0FBRUQsZUFBZSxtQkFBbUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHR5cGVzY3JpcHQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJy4uLy4uLy4uL2d1YXJkcy9wcmltaXRpdmUuanMnXG5pbXBvcnQgeyBGaXJlaG9zZUNsaWVudCwgUHV0UmVjb3JkQmF0Y2hDb21tYW5kLCBQdXRSZWNvcmRCYXRjaElucHV0IH0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1maXJlaG9zZVwiXG5pbXBvcnQge1xuICBDcmVkZW50aWFscyBhcyBJQVdTVGVtcG9yYXJ5Q3JlZGVudGlhbHMsXG4gIEV4cGlyZWRUb2tlbkV4Y2VwdGlvbixcbn0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zdHNcIlxuaW1wb3J0IHsgTGV2ZWwgfSBmcm9tIFwiLi4vLi4vTGV2ZWwuanNcIlxuXG5pbXBvcnQgQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlciBmcm9tIFwiLi9BV1NGaXJlaG9zZUNyZWRlbnRpYWxNYW5hZ2VyLmpzXCJcbmltcG9ydCB7IGdldEludGVybmFsTG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0ludGVybmFsTG9nZ2VyLmpzXCJcbmltcG9ydCB7IGdldFZhbHVlLCBndWFyZCB9IGZyb20gXCIuLi8uLi8uLi9ndWFyZHMvaW5kZXguanNcIlxuaW1wb3J0IHsgaXNFbXB0eSwgcGljayB9IGZyb20gXCJsb2Rhc2hcIlxuaW1wb3J0IHsgRGVmZXJyZWQgfSBmcm9tIFwiLi4vLi4vLi4vaGVscGVycy9pbmRleC5qc1wiXG5pbXBvcnQgeyBMb2dSZWNvcmQgfSBmcm9tIFwiLi4vLi4vTG9nUmVjb3JkLmpzXCJcbmltcG9ydCB7IEFwcGVuZGVyIH0gZnJvbSBcIi4uLy4uL0FwcGVuZGVyLmpzXCJcblxuY29uc3QgTG9nUXVldWVNYXhSZWNvcmRzID0gMTAwMDBcblxuY29uc3QgbG9nID0gZ2V0SW50ZXJuYWxMb2dnZXIoKVxuXG5leHBvcnQgY2xhc3MgQVdTRmlyZWhvc2VBcHBlbmRlcjxSZWNvcmQgZXh0ZW5kcyBMb2dSZWNvcmQgPSBMb2dSZWNvcmQ+XG4gIGltcGxlbWVudHMgQXBwZW5kZXI8UmVjb3JkPiB7XG4gIHByaXZhdGUgcGVuZGluZ1JlY29yZHMgPSBBcnJheTxMb2dSZWNvcmQ+KClcbiAgcHJpdmF0ZSBmbHVzaERlZmVycmVkOiBEZWZlcnJlZDx2b2lkPlxuICBwcml2YXRlIGZsdXNoSW50ZXJ2YWxNcyA9IDEwMDA7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNyZWRlbnRpYWxNYW5hZ2VyOiBBV1NGaXJlaG9zZUNyZWRlbnRpYWxNYW5hZ2VyXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGNyZWRlbnRpYWxFbmRwb2ludFVybDogc3RyaW5nKSB7XG4gICAgdGhpcy5jcmVkZW50aWFsTWFuYWdlciA9IG5ldyBBV1NGaXJlaG9zZUNyZWRlbnRpYWxNYW5hZ2VyKGNyZWRlbnRpYWxFbmRwb2ludFVybClcbiAgICB0aGlzLmNyZWRlbnRpYWxNYW5hZ2VyLm9uKFwicmVjZWl2ZWRcIiwgKCkgPT4ge1xuICAgICAgbG9nLmluZm8oXCJDcmVkZW50aWFscyByZWNlaXZlZCwgaW5pdGlhbGl6aW5nIGZpcmVob3NlIGNsaWVudFwiKVxuICAgICAgaWYgKCF0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aCB8fCAhIXRoaXMuZmx1c2hEZWZlcnJlZCkge1xuICAgICAgICBsb2cuZGVidWcoXCJOb3RoaW5nIHRvIGZsdXNoIHVwb24gY3JlZGVudGlhbCByZWNlaXB0IE9SIGZsdXNoIGFscmVhZHkgaW4gcHJvZ3Jlc3NcIilcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICB0aGlzLmZsdXNoKClcbiAgICAgICAgLmNhdGNoKChlOiBFcnJvcikgPT4ge1xuICAgICAgICAgIGxvZy5lcnJvcihgRXJyb3IgZmx1c2hpbmcgbG9ncyBhZnRlciBjcmVkZW50aWFsIHJlY2VpcHQ6ICR7ZS5tZXNzYWdlfWAsIGUpXG4gICAgICAgIH0pXG4gICAgfSlcbiAgfVxuICBhcHBlbmQocmVjb3JkOiBSZWNvcmQpOiB2b2lkIHtcbiAgICBjb25zdFxuICAgICAgcGVuZGluZ0NvdW50ID0gdGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGggKyAxLFxuICAgICAgcmVtb3ZlQ291bnQgPSBMb2dRdWV1ZU1heFJlY29yZHMgLSBwZW5kaW5nQ291bnRcblxuICAgIGlmIChyZW1vdmVDb3VudCA8IDApIHtcbiAgICAgIHRoaXMucGVuZGluZ1JlY29yZHMuc3BsaWNlKDAsIE1hdGguYWJzKHJlbW92ZUNvdW50KSlcbiAgICB9XG5cbiAgICB0aGlzLnBlbmRpbmdSZWNvcmRzLnB1c2goe1xuICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICAgICAgLi4ucmVjb3JkLFxuICAgICAgYXBwOiByZWNvcmQuYXBwPy5sZW5ndGggPiAwID8gcmVjb3JkLmFwcCA6IFwiVU5LTk9XTlwiLFxuICAgICAgZW52OiByZWNvcmQuZW52Py5sZW5ndGggPiAwID8gcmVjb3JkLmVudiA6IFwiVU5LTk9XTlwiLFxuICAgICAgdXJsOiB0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiID8gXCJsb2NhbDovL1wiIDogd2luZG93LmxvY2F0aW9uLmhyZWYsXG4gICAgfSlcblxuICAgIHRoaXMuZmx1c2goKVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSB0aGUgZmlyZWhvc2UgY2xpZW50IGFuZCByZXR1cm5cbiAgICpcbiAgICogQHBhcmFtIHtJQVdTVGVtcG9yYXJ5Q3JlZGVudGlhbHN9IGNyZWRlbnRpYWxzXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZmx1c2hcbiAgICogQHJldHVybnMge0ZpcmVob3NlfVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRGaXJlaG9zZSgpOiBGaXJlaG9zZUNsaWVudCB7XG4gICAgY29uc3QgY3JlZHMgPSB0aGlzLmNyZWRlbnRpYWxNYW5hZ2VyLmdldENyZWRlbnRpYWxzKClcblxuICAgIGlmICghY3JlZHMpIHtcbiAgICAgIGxvZy53YXJuKFwiTm8gY3JlZGVudGlhbHMgYXZhaWxhYmxlIGZvciBmbHVzaFwiKVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBjb25zdCB7IHJlZ2lvbiwgc3RyZWFtTmFtZSB9ID0gY3JlZHNcblxuICAgIGlmICghcmVnaW9uIHx8ICFzdHJlYW1OYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSZWdpb24gb3Igc3RyZWFtIG5hbWUgbm90IGF2YWlsYWJsZVwiKVxuICAgIH1cblxuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBGaXJlaG9zZUNsaWVudCh7XG4gICAgICByZWdpb246IGNyZWRzLnJlZ2lvbixcbiAgICAgIGNyZWRlbnRpYWxzOiBwaWNrKGNyZWRzLCBcImFjY2Vzc0tleUlkXCIsIFwic2VjcmV0QWNjZXNzS2V5XCIsIFwic2Vzc2lvblRva2VuXCIpLFxuICAgIH0pXG5cbiAgICByZXR1cm4gY2xpZW50XG4gIH1cblxuICAvKipcbiAgICogRmx1c2ggcGVuZGluZyByZWNvcmRzXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBmbHVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoISF0aGlzLmZsdXNoRGVmZXJyZWQpIHtcbiAgICAgIGxvZy5kZWJ1ZyhcIkZsdXNoIGFscmVhZHkgaW4gcHJvZ3Jlc3MsIHNraXBwaW5nXCIpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucGVuZGluZ1JlY29yZHMubGVuZ3RoKSB7XG4gICAgICBsb2cuZGVidWcoXCJObyBwZW5kaW5nIHJlY29yZHMgdG8gZmx1c2hcIilcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBjcmVkcyA9IHRoaXMuY3JlZGVudGlhbE1hbmFnZXIuZ2V0Q3JlZGVudGlhbHMoKVxuICAgIGlmICghY3JlZHMpIHtcbiAgICAgIGxvZy53YXJuKFwiTm8gY3JlZGVudGlhbHMgYXZhaWxhYmxlIGZvciBmbHVzaFwiKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IHsgc3RyZWFtTmFtZSB9ID0gY3JlZHMsXG4gICAgICBjbGllbnQgPSB0aGlzLmdldEZpcmVob3NlKClcbiAgICBpZiAoIWNsaWVudCkge1xuICAgICAgbG9nLndhcm4oXCJObyBmaXJlaG9zZSBjbGllbnQgYXZhaWxhYmxlLCBza2lwcGluZyBmbHVzaFwiKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgZGVmZXJyZWQgPSB0aGlzLmZsdXNoRGVmZXJyZWQgPSBuZXcgRGVmZXJyZWQ8dm9pZD4oKVxuICAgIHRyeSB7XG4gICAgICB3aGlsZSAodGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3RcbiAgICAgICAgICBjaHVua1NpemUgPSBNYXRoLm1pbih0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aCwgMTApLFxuICAgICAgICAgIHJlY29yZHMgPSB0aGlzLnBlbmRpbmdSZWNvcmRzLnNwbGljZSgwLCBjaHVua1NpemUpLFxuICAgICAgICAgIHJlY29yZEpzb25zID0gcmVjb3Jkcy5tYXAocmVjb3JkID0+IEpTT04uc3RyaW5naWZ5KHJlY29yZCkpXG5cbiAgICAgICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKVxuICAgICAgICAgIGxvZy5kZWJ1ZyhcIlJlY29yZHNcIiwgcmVjb3JkcylcblxuICAgICAgICBjb25zdFxuICAgICAgICAgIHRleHRFbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCksXG4gICAgICAgICAgYmF0Y2g6IFB1dFJlY29yZEJhdGNoSW5wdXRbXCJSZWNvcmRzXCJdID0gcmVjb3JkSnNvbnMubWFwKGpzb25TdHIgPT4gKHtcbiAgICAgICAgICAgIERhdGE6IHRleHRFbmNvZGVyLmVuY29kZShqc29uU3RyKVxuICAgICAgICAgIH0pKVxuXG4gICAgICAgIGxvZy5pbmZvKGBQdXNoaW5nICR7cmVjb3Jkcy5sZW5ndGh9IHJlY29yZHMgdG8gZmlyZWhvc2VgKVxuXG4gICAgICAgIGNvbnN0IGNtZCA9IG5ldyBQdXRSZWNvcmRCYXRjaENvbW1hbmQoe1xuICAgICAgICAgIERlbGl2ZXJ5U3RyZWFtTmFtZTogc3RyZWFtTmFtZSxcbiAgICAgICAgICBSZWNvcmRzOiBiYXRjaCxcbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCByZXNwID0gYXdhaXQgY2xpZW50LnNlbmQoY21kKVxuICAgICAgICBjb25zdCBmYWlsZWQgPSByZXNwLkZhaWxlZFB1dENvdW50IHx8IDBcbiAgICAgICAgaWYgKGZhaWxlZCkge1xuICAgICAgICAgIGNvbnN0IHJyID0gcmVzcC5SZXF1ZXN0UmVzcG9uc2VzIHx8IFtdXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHJyW2ldLkVycm9yQ29kZSkge1xuICAgICAgICAgICAgICBsb2cud2FybihgUmVjb3JkIGZhaWxlZDogJHtycltpXS5FcnJvckNvZGV9ICR7cnJbaV0uRXJyb3JNZXNzYWdlfWApXG4gICAgICAgICAgICAgIC8vdGhpcy5wZW5kaW5nUmVjb3Jkcy51bnNoaWZ0KHJlY29yZHNbaV0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGxvZy5pbmZvKGBQdXRSZWNvcmRCYXRjaCBmYWlsZWQ9JHtmYWlsZWR9OyByZXF1ZXVlZCBmYWlsZWQgcmVjb3Jkc2ApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nLmluZm8oYFB1dFJlY29yZEJhdGNoIG9rIGNvdW50PSR7cmVjb3Jkcy5sZW5ndGh9YClcbiAgICAgICAgfVxuXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2cuZXJyb3IoXCJGYWlsZWQgdG8gcHVzaCBsb2dzXCIsIGVycilcbiAgICAgIGlmIChlcnIuY29kZSA9PT0gRXhwaXJlZFRva2VuRXhjZXB0aW9uKSB7XG4gICAgICAgIHRoaXMuY3JlZGVudGlhbE1hbmFnZXIuZm9yY2VVcGRhdGVDcmVkZW50aWFscygpXG4gICAgICB9XG4gICAgICBkZWZlcnJlZC5yZWplY3QoZXJyKVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmZsdXNoRGVmZXJyZWQgPSBudWxsXG5cbiAgICAgIC8vIGlmICh0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aClcbiAgICAgIC8vICAgdGhpcy5mbHVzaCgpXG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2VcbiAgfVxuXG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgQVdTRmlyZWhvc2VBcHBlbmRlclxuIl19
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQVdTRmlyZWhvc2VBcHBlbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9sb2dnaW5nL2FwcGVuZGVycy9hd3MtZmlyZWhvc2UvQVdTRmlyZWhvc2VBcHBlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLDRCQUVOLE1BQU0sbUNBQW1DLENBQUE7QUFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDM0QsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUM3QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFJcEQsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLENBQUE7QUFDaEMsTUFBTSx5QkFBeUIsR0FBRyx1QkFBdUIsQ0FBQTtBQUV6RCxNQUFNLEdBQUcsR0FBRyxpQkFBaUIsRUFBRSxDQUFBO0FBQy9CLElBQUksY0FBYyxHQUF1RCxJQUFJLENBQUE7QUFFN0UsU0FBUyxpQkFBaUI7SUFDeEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3BCLGNBQWMsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDOUQsY0FBYyxHQUFHLElBQUksQ0FBQTtZQUNyQixNQUFNLEdBQUcsQ0FBQTtRQUNYLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELE9BQU8sY0FBYyxDQUFBO0FBQ3ZCLENBQUM7QUFFRCxNQUFNLE9BQU8sbUJBQW1CO0lBU0Y7SUFOcEIsY0FBYyxHQUFHLEtBQUssRUFBYSxDQUFBO0lBQ25DLGFBQWEsQ0FBZ0I7SUFDN0IsZUFBZSxHQUFHLElBQUksQ0FBQTtJQUVkLGlCQUFpQixDQUE4QjtJQUUvRCxZQUE0QixxQkFBNkI7UUFBN0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFRO1FBQ3ZELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLDRC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QUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLEdBQUcsQ0FBQyxLQUFLLENBQUMscUJBQXFCLEVBQUUsR0FBRyxDQUFDLENBQUE7WUFDckMsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLHlCQUF5QixFQUFFLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxDQUFBO1lBQ2pELENBQUM7WUFDRCxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3RCLENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFBO1lBRXpCLGtDQUFrQztZQUNsQyxpQkFBaUI7UUFDbkIsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQTtJQUN6QixDQUFDO0NBQ0Y7QUFFRCxlQUFlLG1CQUFtQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgdHlwZXNjcmlwdC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB0eXBlIHtcbiAgRmlyZWhvc2VDbGllbnQsXG4gIFB1dFJlY29yZEJhdGNoSW5wdXRcbn0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1maXJlaG9zZVwiXG5pbXBvcnQgeyBMZXZlbCB9IGZyb20gXCIuLi8uLi9MZXZlbC5qc1wiXG5cbmltcG9ydCBBV1NGaXJlaG9zZUNyZWRlbnRpYWxNYW5hZ2VyLCB7XG4gIHR5cGUgQVdTQ3JlZGVudGlhbHNcbn0gZnJvbSBcIi4vQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlci5qc1wiXG5pbXBvcnQgeyBnZXRJbnRlcm5hbExvZ2dlciB9IGZyb20gXCIuLi8uLi9JbnRlcm5hbExvZ2dlci5qc1wiXG5pbXBvcnQgeyBwaWNrIH0gZnJvbSBcImxvZGFzaFwiXG5pbXBvcnQgeyBEZWZlcnJlZCB9IGZyb20gXCIuLi8uLi8uLi9oZWxwZXJzL2luZGV4LmpzXCJcbmltcG9ydCB7IExvZ1JlY29yZCB9IGZyb20gXCIuLi8uLi9Mb2dSZWNvcmQuanNcIlxuaW1wb3J0IHsgQXBwZW5kZXIgfSBmcm9tIFwiLi4vLi4vQXBwZW5kZXIuanNcIlxuXG5jb25zdCBMb2dRdWV1ZU1heFJlY29yZHMgPSAxMDAwMFxuY29uc3QgRXhwaXJlZFRva2VuRXhjZXB0aW9uQ29kZSA9IFwiRXhwaXJlZFRva2VuRXhjZXB0aW9uXCJcblxuY29uc3QgbG9nID0gZ2V0SW50ZXJuYWxMb2dnZXIoKVxubGV0IGZpcmVob3NlTW9kdWxlOiBQcm9taXNlPHR5cGVvZiBpbXBvcnQoXCJAYXdzLXNkay9jbGllbnQtZmlyZWhvc2VcIik+ID0gbnVsbFxuXG5mdW5jdGlvbiBnZXRGaXJlaG9zZU1vZHVsZSgpIHtcbiAgaWYgKCFmaXJlaG9zZU1vZHVsZSkge1xuICAgIGZpcmVob3NlTW9kdWxlID0gaW1wb3J0KFwiQGF3cy1zZGsvY2xpZW50LWZpcmVob3NlXCIpLmNhdGNoKGVyciA9PiB7XG4gICAgICBmaXJlaG9zZU1vZHVsZSA9IG51bGxcbiAgICAgIHRocm93IGVyclxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gZmlyZWhvc2VNb2R1bGVcbn1cblxuZXhwb3J0IGNsYXNzIEFXU0ZpcmVob3NlQXBwZW5kZXI8XG4gIFJlY29yZCBleHRlbmRzIExvZ1JlY29yZCA9IExvZ1JlY29yZFxuPiBpbXBsZW1lbnRzIEFwcGVuZGVyPFJlY29yZD4ge1xuICBwcml2YXRlIHBlbmRpbmdSZWNvcmRzID0gQXJyYXk8TG9nUmVjb3JkPigpXG4gIHByaXZhdGUgZmx1c2hEZWZlcnJlZDogRGVmZXJyZWQ8dm9pZD5cbiAgcHJpdmF0ZSBmbHVzaEludGVydmFsTXMgPSAxMDAwXG5cbiAgcHVibGljIHJlYWRvbmx5IGNyZWRlbnRpYWxNYW5hZ2VyOiBBV1NGaXJlaG9zZUNyZWRlbnRpYWxNYW5hZ2VyXG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGNyZWRlbnRpYWxFbmRwb2ludFVybDogc3RyaW5nKSB7XG4gICAgdGhpcy5jcmVkZW50aWFsTWFuYWdlciA9IG5ldyBBV1NGaXJlaG9zZUNyZWRlbnRpYWxNYW5hZ2VyKFxuICAgICAgY3JlZGVudGlhbEVuZHBvaW50VXJsXG4gICAgKVxuICAgIHRoaXMuY3JlZGVudGlhbE1hbmFnZXIub24oXCJyZWNlaXZlZFwiLCAoKSA9PiB7XG4gICAgICBsb2cuaW5mbyhcIkNyZWRlbnRpYWxzIHJlY2VpdmVkLCBpbml0aWFsaXppbmcgZmlyZWhvc2UgY2xpZW50XCIpXG4gICAgICBpZiAoIXRoaXMucGVuZGluZ1JlY29yZHMubGVuZ3RoIHx8ICEhdGhpcy5mbHVzaERlZmVycmVkKSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhcbiAgICAgICAgICBcIk5vdGhpbmcgdG8gZmx1c2ggdXBvbiBjcmVkZW50aWFsIHJlY2VpcHQgT1IgZmx1c2ggYWxyZWFkeSBpbiBwcm9ncmVzc1wiXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICB0aGlzLmZsdXNoKCkuY2F0Y2goKGU6IEVycm9yKSA9PiB7XG4gICAgICAgIGxvZy5lcnJvcihcbiAgICAgICAgICBgRXJyb3IgZmx1c2hpbmcgbG9ncyBhZnRlciBjcmVkZW50aWFsIHJlY2VpcHQ6ICR7ZS5tZXNzYWdlfWAsXG4gICAgICAgICAgZVxuICAgICAgICApXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbiAgYXBwZW5kKHJlY29yZDogUmVjb3JkKTogdm9pZCB7XG4gICAgY29uc3QgcGVuZGluZ0NvdW50ID0gdGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGggKyAxLFxuICAgICAgcmVtb3ZlQ291bnQgPSBMb2dRdWV1ZU1heFJlY29yZHMgLSBwZW5kaW5nQ291bnRcblxuICAgIGlmIChyZW1vdmVDb3VudCA8IDApIHtcbiAgICAgIHRoaXMucGVuZGluZ1JlY29yZHMuc3BsaWNlKDAsIE1hdGguYWJzKHJlbW92ZUNvdW50KSlcbiAgICB9XG5cbiAgICB0aGlzLnBlbmRpbmdSZWNvcmRzLnB1c2goe1xuICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICAgICAgLi4ucmVjb3JkLFxuICAgICAgYXBwOiByZWNvcmQuYXBwPy5sZW5ndGggPiAwID8gcmVjb3JkLmFwcCA6IFwiVU5LTk9XTlwiLFxuICAgICAgZW52OiByZWNvcmQuZW52Py5sZW5ndGggPiAwID8gcmVjb3JkLmVudiA6IFwiVU5LTk9XTlwiLFxuICAgICAgdXJsOiB0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiID8gXCJsb2NhbDovL1wiIDogd2luZG93LmxvY2F0aW9uLmhyZWZcbiAgICB9KVxuXG4gICAgdGhpcy5mbHVzaCgpXG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBGaXJlaG9zZSBjbGllbnQgZm9yIGEgbG9hZGVkIGNyZWRlbnRpYWwgc2V0LlxuICAgKiBAcGFyYW0gY3JlZHMgTG9hZGVkIEZpcmVob3NlIGNyZWRlbnRpYWxzLlxuICAgKiBAcmV0dXJucyBGaXJlaG9zZSBjbGllbnQuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGdldEZpcmVob3NlKGNyZWRzOiBBV1NDcmVkZW50aWFscyk6IFByb21pc2U8RmlyZWhvc2VDbGllbnQ+IHtcbiAgICBjb25zdCB7IHJlZ2lvbiwgc3RyZWFtTmFtZSB9ID0gY3JlZHNcblxuICAgIGlmICghcmVnaW9uIHx8ICFzdHJlYW1OYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSZWdpb24gb3Igc3RyZWFtIG5hbWUgbm90IGF2YWlsYWJsZVwiKVxuICAgIH1cblxuICAgIGNvbnN0IHsgRmlyZWhvc2VDbGllbnQgfSA9IGF3YWl0IGdldEZpcmVob3NlTW9kdWxlKClcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgRmlyZWhvc2VDbGllbnQoe1xuICAgICAgcmVnaW9uOiBjcmVkcy5yZWdpb24sXG4gICAgICBjcmVkZW50aWFsczogcGljayhjcmVkcywgXCJhY2Nlc3NLZXlJZFwiLCBcInNlY3JldEFjY2Vzc0tleVwiLCBcInNlc3Npb25Ub2tlblwiKVxuICAgIH0pXG5cbiAgICByZXR1cm4gY2xpZW50XG4gIH1cblxuICAvKipcbiAgICogRmx1c2ggcGVuZGluZyByZWNvcmRzXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBmbHVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoISF0aGlzLmZsdXNoRGVmZXJyZWQpIHtcbiAgICAgIGxvZy5kZWJ1ZyhcIkZsdXNoIGFscmVhZHkgaW4gcHJvZ3Jlc3MsIHNraXBwaW5nXCIpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucGVuZGluZ1JlY29yZHMubGVuZ3RoKSB7XG4gICAgICBsb2cuZGVidWcoXCJObyBwZW5kaW5nIHJlY29yZHMgdG8gZmx1c2hcIilcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBjcmVkcyA9IHRoaXMuY3JlZGVudGlhbE1hbmFnZXIuZ2V0Q3JlZGVudGlhbHMoKVxuICAgIGlmICghY3JlZHMpIHtcbiAgICAgIGxvZy53YXJuKFwiTm8gY3JlZGVudGlhbHMgYXZhaWxhYmxlIGZvciBmbHVzaFwiKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgZGVmZXJyZWQgPSAodGhpcy5mbHVzaERlZmVycmVkID0gbmV3IERlZmVycmVkPHZvaWQ+KCkpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgc3RyZWFtTmFtZSB9ID0gY3JlZHMsXG4gICAgICAgIGNsaWVudCA9IGF3YWl0IHRoaXMuZ2V0RmlyZWhvc2UoY3JlZHMpLFxuICAgICAgICB7IFB1dFJlY29yZEJhdGNoQ29tbWFuZCB9ID0gYXdhaXQgZ2V0RmlyZWhvc2VNb2R1bGUoKVxuXG4gICAgICB3aGlsZSAodGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgY2h1bmtTaXplID0gTWF0aC5taW4odGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGgsIDEwKSxcbiAgICAgICAgICByZWNvcmRzID0gdGhpcy5wZW5kaW5nUmVjb3Jkcy5zcGxpY2UoMCwgY2h1bmtTaXplKSxcbiAgICAgICAgICByZWNvcmRKc29ucyA9IHJlY29yZHMubWFwKHJlY29yZCA9PiBKU09OLnN0cmluZ2lmeShyZWNvcmQpKVxuXG4gICAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkgbG9nLmRlYnVnKFwiUmVjb3Jkc1wiLCByZWNvcmRzKVxuXG4gICAgICAgIGNvbnN0IHRleHRFbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCksXG4gICAgICAgICAgYmF0Y2g6IFB1dFJlY29yZEJhdGNoSW5wdXRbXCJSZWNvcmRzXCJdID0gcmVjb3JkSnNvbnMubWFwKGpzb25TdHIgPT4gKHtcbiAgICAgICAgICAgIERhdGE6IHRleHRFbmNvZGVyLmVuY29kZShqc29uU3RyKVxuICAgICAgICAgIH0pKVxuXG4gICAgICAgIGxvZy5pbmZvKGBQdXNoaW5nICR7cmVjb3Jkcy5sZW5ndGh9IHJlY29yZHMgdG8gZmlyZWhvc2VgKVxuXG4gICAgICAgIGNvbnN0IGNtZCA9IG5ldyBQdXRSZWNvcmRCYXRjaENvbW1hbmQoe1xuICAgICAgICAgIERlbGl2ZXJ5U3RyZWFtTmFtZTogc3RyZWFtTmFtZSxcbiAgICAgICAgICBSZWNvcmRzOiBiYXRjaFxuICAgICAgICB9KVxuXG4gICAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBjbGllbnQuc2VuZChjbWQpXG4gICAgICAgIGNvbnN0IGZhaWxlZCA9IHJlc3AuRmFpbGVkUHV0Q291bnQgfHwgMFxuICAgICAgICBpZiAoZmFpbGVkKSB7XG4gICAgICAgICAgY29uc3QgcnIgPSByZXNwLlJlcXVlc3RSZXNwb25zZXMgfHwgW11cbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAocnJbaV0uRXJyb3JDb2RlKSB7XG4gICAgICAgICAgICAgIGxvZy53YXJuKFxuICAgICAgICAgICAgICAgIGBSZWNvcmQgZmFpbGVkOiAke3JyW2ldLkVycm9yQ29kZX0gJHtycltpXS5FcnJvck1lc3NhZ2V9YFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC8vdGhpcy5wZW5kaW5nUmVjb3Jkcy51bnNoaWZ0KHJlY29yZHNbaV0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGxvZy5pbmZvKGBQdXRSZWNvcmRCYXRjaCBmYWlsZWQ9JHtmYWlsZWR9OyByZXF1ZXVlZCBmYWlsZWQgcmVjb3Jkc2ApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nLmluZm8oYFB1dFJlY29yZEJhdGNoIG9rIGNvdW50PSR7cmVjb3Jkcy5sZW5ndGh9YClcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZGVmZXJyZWQucmVzb2x2ZSgpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2cuZXJyb3IoXCJGYWlsZWQgdG8gcHVzaCBsb2dzXCIsIGVycilcbiAgICAgIGlmIChlcnIubmFtZSA9PT0gRXhwaXJlZFRva2VuRXhjZXB0aW9uQ29kZSkge1xuICAgICAgICB0aGlzLmNyZWRlbnRpYWxNYW5hZ2VyLmZvcmNlVXBkYXRlQ3JlZGVudGlhbHMoKVxuICAgICAgfVxuICAgICAgZGVmZXJyZWQucmVqZWN0KGVycilcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5mbHVzaERlZmVycmVkID0gbnVsbFxuXG4gICAgICAvLyBpZiAodGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGgpXG4gICAgICAvLyAgIHRoaXMuZmx1c2goKVxuICAgIH1cblxuICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQVdTRmlyZWhvc2VBcHBlbmRlclxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"AWSFirehoseCredentialManager.d.ts","sourceRoot":"","sources":["../../../../../src/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.ts"],"names":[],"mappings":"AAGA,OAAO,aAAa,MAAM,eAAe,CAAA;AAMzC,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,oCAAoC;IACnD,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAA;IACzC,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,qBAAa,4BAA6B,SAAQ,aAAa,CAAC,oCAAoC,CAAC;aAMjF,qBAAqB,EAAE,MAAM;IAJ/C,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,YAAY,CAAkC;gBAGpC,qBAAqB,EAAE,MAAM;IAK/C,sBAAsB,IAAI,IAAI;IAS9B,cAAc,IAAI,cAAc;IAmBhC,cAAc,IAAI,OAAO;YAIX,IAAI;IAyBlB,eAAe,CAAC,aAAa,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI;IA4B7D,aAAa,IAAI,MAAM;IAIvB,SAAS,IAAI,MAAM;IAInB,OAAO,IAAI,IAAI;CAMhB;AAGD,eAAe,4BAA4B,CAAA"}
1
+ {"version":3,"file":"AWSFirehoseCredentialManager.d.ts","sourceRoot":"","sources":["../../../../../src/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,MAAM,eAAe,CAAA;AAMzC,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,oCAAoC;IACnD,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAA;IACzC,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,qBAAa,4BAA6B,SAAQ,aAAa,CAAC,oCAAoC,CAAC;aAIvE,qBAAqB,EAAE,MAAM;IAHzD,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,YAAY,CAAiC;gBAEzB,qBAAqB,EAAE,MAAM;IAIzD,sBAAsB,IAAI,IAAI;IAS9B,cAAc,IAAI,cAAc;IAmBhC,cAAc,IAAI,OAAO;YAIX,IAAI;IA0BlB,eAAe,CAAC,aAAa,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI;IA2B7D,aAAa,IAAI,MAAM;IAIvB,SAAS,IAAI,MAAM;IAInB,OAAO,IAAI,IAAI;CAMhB;AAED,eAAe,4BAA4B,CAAA"}
@@ -39,11 +39,11 @@ export class AWSFirehoseCredentialManager extends EventEmitter3 {
39
39
  async load() {
40
40
  if (this.loadDeferred && !this.loadDeferred.isRejected())
41
41
  return this.loadDeferred.promise;
42
- const deferred = this.loadDeferred = new Deferred();
42
+ const deferred = (this.loadDeferred = new Deferred());
43
43
  try {
44
44
  const r = await fetch(this.credentialEndpointUrl, {
45
45
  method: "GET",
46
- credentials: "include",
46
+ credentials: "include"
47
47
  });
48
48
  if (!r.ok)
49
49
  throw new Error(`creds http ${r.status}`);
@@ -95,4 +95,4 @@ export class AWSFirehoseCredentialManager extends EventEmitter3 {
95
95
  }
96
96
  }
97
97
  export default AWSFirehoseCredentialManager;
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9sb2dnaW5nL2FwcGVuZGVycy9hd3MtZmlyZWhvc2UvQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDM0QsT0FBTyxhQUFhLE1BQU0sZUFBZSxDQUFBO0FBRXpDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUEsQ0FBQyxZQUFZO0FBRXpELE1BQU0sR0FBRyxHQUFHLGlCQUFpQixFQUFFLENBQUE7QUFnQi9CLE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxhQUFtRDtJQU1qRjtJQUpWLFlBQVksR0FBa0MsSUFBSSxDQUFDO0lBQ25ELFlBQVksR0FBNkIsSUFBSSxDQUFDO0lBRXRELFlBQ2tCLHFCQUE2QjtRQUU3QyxLQUFLLEVBQUUsQ0FBQTtRQUZTLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBUTtJQUcvQyxDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUN4RCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFBO1FBQ3JELENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQTtRQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3pCLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMs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QTtZQUV0QyxXQUFXLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxzQkFBc0IsQ0FBQTtRQUUzRCxDQUFDO1FBRUQsV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFBO1FBRXhDLElBQUksQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNsQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQTtZQUN4QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUMvRSxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUE7SUFDakIsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxVQUFVLENBQUE7SUFDMUMsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLENBQUE7SUFDdEMsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRTtZQUNoQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFBO1FBQ2xELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFBO0lBQzFCLENBQUM7Q0FDRjtBQUdELGVBQWUsNEJBQTRCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaXJlaG9zZUNsaWVudCwgUHV0UmVjb3JkQmF0Y2hDb21tYW5kIH0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1maXJlaG9zZVwiXG5pbXBvcnQgeyBEZWZlcnJlZCB9IGZyb20gXCIuLi8uLi8uLi9oZWxwZXJzL2luZGV4LmpzXCJcbmltcG9ydCB7IGdldEludGVybmFsTG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0ludGVybmFsTG9nZ2VyLmpzXCJcbmltcG9ydCBFdmVudEVtaXR0ZXIzIGZyb20gXCJldmVudGVtaXR0ZXIzXCJcblxuY29uc3QgQ1JFRF9CVUZGRVJfUEFERElOR19NUyA9IDMgKiA2MCAqIDEwMDAgLy8gMyBtaW51dGVzXG5cbmNvbnN0IGxvZyA9IGdldEludGVybmFsTG9nZ2VyKClcblxuZXhwb3J0IGludGVyZmFjZSBBV1NDcmVkZW50aWFscyB7XG4gIGFjY2Vzc0tleUlkOiBzdHJpbmdcbiAgc2VjcmV0QWNjZXNzS2V5OiBzdHJpbmdcbiAgc2Vzc2lvblRva2VuOiBzdHJpbmdcbiAgc3RyZWFtTmFtZTogc3RyaW5nXG4gIHJlZ2lvbjogc3RyaW5nXG4gIGV4cGlyYXRpb246IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFXU0ZpcmVob3NlQ3JlZGVudGlhbE1hbmFnZXJFdmVudE1hcCB7XG4gIHJlY2VpdmVkOiAoY3JlZHM6IEFXU0NyZWRlbnRpYWxzKSA9PiB2b2lkXG4gIGV4cGlyZWQ6ICgpID0+IHZvaWRcbn1cblxuZXhwb3J0IGNsYXNzIEFXU0ZpcmVob3NlQ3JlZGVudGlhbE1hbmFnZXIgZXh0ZW5kcyBFdmVudEVtaXR0ZXIzPEFXU0ZpcmVob3NlQ3JlZGVudGlhbE1hbmFnZXJFdmVudE1hcD4ge1xuXG4gIHByaXZhdGUgcmVmcmVzaFRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiA9IG51bGw7XG4gIHByaXZhdGUgbG9hZERlZmVycmVkOiBEZWZlcnJlZDxBV1NDcmVkZW50aWFscz4gPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsRW5kcG9pbnRVcmw6IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIoKVxuICB9XG5cbiAgZm9yY2VVcGRhdGVDcmVkZW50aWFscygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sb2FkRGVmZXJyZWQgJiYgIXRoaXMubG9hZERlZmVycmVkLmlzU2V0dGxlZCgpKSB7XG4gICAgICB0aGlzLmxvYWREZWZlcnJlZC5yZWplY3QobmV3IEVycm9yKFwiZm9yY2UgdXBkYXRlXCIpKVxuICAgIH1cblxuICAgIHRoaXMubG9hZERlZmVycmVkID0gbnVsbFxuICAgIHRoaXMuc2NoZWR1bGVSZWZyZXNoKDEpXG4gIH1cblxuICBnZXRDcmVkZW50aWFscygpOiBBV1NDcmVkZW50aWFscyB7XG4gICAgaWYgKHRoaXMubG9hZERlZmVycmVkICYmIHRoaXMubG9hZERlZmVycmVkLmlzRnVsZmlsbGVkKCkpIHtcbiAgICAgIGNvbnN0IGNyZWRzID0gdGhpcy5sb2FkRGVmZXJyZWQuZ2V0UmVzdWx0KCksXG4gICAgICAgIGV4cE1zID0gRGF0ZS5wYXJzZShjcmVkcy5leHBpcmF0aW9uKVxuXG4gICAgICBpZiAoZXhwTXMgPD0gRGF0ZS5ub3coKSkge1xuICAgICAgICBsb2cuaW5mbyhcIkNyZWRlbnRpYWxzIGV4cGlyZWRcIilcbiAgICAgICAgdGhpcy5sb2FkRGVmZXJyZWQgPSBudWxsXG4gICAgICAgIHRoaXMuc2NoZWR1bGVSZWZyZXNoKDEpXG4gICAgICAgIHRoaXMuZW1pdChcImV4cGlyZWRcIilcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cbiAgICAgIHJldHVybiBjcmVkc1xuICAgIH1cblxuICAgIHRoaXMuc2NoZWR1bGVSZWZyZXNoKDEpXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGhhc0NyZWRlbnRpYWxzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldENyZWRlbnRpYWxzKCkgIT0gbnVsbFxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkKCk6IFByb21pc2U8QVdTQ3JlZGVudGlhbHM+IHtcbiAgICBpZiAodGhpcy5sb2FkRGVmZXJyZWQgJiYgIXRoaXMubG9hZERlZmVycmVkLmlzUmVqZWN0ZWQoKSlcbiAgICAgIHJldHVybiB0aGlzLmxvYWREZWZlcnJlZC5wcm9taXNlXG5cbiAgICBjb25zdCBkZWZlcnJlZCA9IHRoaXMubG9hZERlZmVycmVkID0gbmV3IERlZmVycmVkPEFXU0NyZWRlbnRpYWxzPigpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHIgPSBhd2FpdCBmZXRjaCh0aGlzLmNyZWRlbnRpYWxFbmRwb2ludFVybCwge1xuICAgICAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgICAgIGNyZWRlbnRpYWxzOiBcImluY2x1ZGVcIixcbiAgICAgIH0pXG4gICAgICBpZiAoIXIub2spIHRocm93IG5ldyBFcnJvcihgY3JlZHMgaHR0cCAke3Iuc3RhdHVzfWApXG4gICAgICBjb25zdCBjcmVkczogQVdTQ3JlZGVudGlhbHMgPSBhd2FpdCByLmpzb24oKVxuXG5cbiAgICAgIHRoaXMuc2NoZWR1bGVSZWZyZXNoKGNyZWRzKVxuICAgICAgbG9nLmluZm8oYEdvdCBjcmVkcywgZXhwaXJlPSR7Y3JlZHMuZXhwaXJhdGlvbn0sIHN0cmVhbT0ke2NyZWRzLnN0cmVhbU5hbWV9LCByZWdpb249JHtjcmVkcy5yZWdpb259YClcbiAgICAgIGRlZmVycmVkLnJlc29sdmUoY3JlZHMpXG4gICAgICB0aGlzLmVtaXQoXCJyZWNlaXZlZFwiLCBjcmVkcylcbiAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZGVmZXJyZWQucmVqZWN0KGUpXG4gICAgICB0aGlzLmxvYWREZWZlcnJlZCA9IG51bGxcbiAgICAgIHRocm93IGVcbiAgICB9XG4gIH1cbiAgc2NoZWR1bGVSZWZyZXNoKGNyZWRzT3JNaWxsaXM6IEFXU0NyZWRlbnRpYWxzIHwgbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVmcmVzaFRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5yZWZyZXNoVGltZXIpXG4gICAgICB0aGlzLnJlZnJlc2hUaW1lciA9IG51bGxcbiAgICB9XG4gICAgaWYgKCFjcmVkc09yTWlsbGlzKVxuICAgICAgcmV0dXJuXG5cbiAgICBsZXQgcmVmcmVzaEluTXM6IG51bWJlclxuICAgIGlmICh0eXBlb2YgY3JlZHNPck1pbGxpcyA9PT0gXCJudW1iZXJcIikge1xuICAgICAgcmVmcmVzaEluTXMgPSBjcmVkc09yTWlsbGlzXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0XG4gICAgICAgIGNyZWRzID0gY3JlZHNPck1pbGxpcyxcbiAgICAgICAgZXhwTXMgPSBEYXRlLnBhcnNlKGNyZWRzLmV4cGlyYXRpb24pXG5cbiAgICAgIHJlZnJlc2hJbk1zID0gZXhwTXMgLSBEYXRlLm5vdygpIC0gQ1JFRF9CVUZGRVJfUEFERElOR19NU1xuXG4gICAgfVxuXG4gICAgcmVmcmVzaEluTXMgPSBNYXRoLm1heCgxMDAsIHJlZnJlc2hJbk1zKVxuXG4gICAgdGhpcy5yZWZyZXNoVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubG9hZERlZmVycmVkID0gbnVsbFxuICAgICAgdGhpcy5sb2FkKCkuY2F0Y2goKGU6IEVycm9yKSA9PiBsb2cuZXJyb3IoYHJlZnJlc2ggZmFpbGVkOiAke2UubWVzc2FnZX1gLCBlKSlcbiAgICB9LCByZWZyZXNoSW5NcylcbiAgfVxuXG4gIGdldFN0cmVhbU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDcmVkZW50aWFscygpPy5zdHJlYW1OYW1lXG4gIH1cblxuICBnZXRSZWdpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDcmVkZW50aWFscygpPy5yZWdpb25cbiAgfVxuXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zY2hlZHVsZVJlZnJlc2gobnVsbClcbiAgICBpZiAoIXRoaXMubG9hZERlZmVycmVkLmlzU2V0dGxlZCgpKVxuICAgICAgdGhpcy5sb2FkRGVmZXJyZWQucmVqZWN0KG5ldyBFcnJvcihcImRlc3Ryb3llZFwiKSlcbiAgICB0aGlzLmxvYWREZWZlcnJlZCA9IG51bGxcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IEFXU0ZpcmVob3NlQ3JlZGVudGlhbE1hbmFnZXJcbiJdfQ==
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9sb2dnaW5nL2FwcGVuZGVycy9hd3MtZmlyZWhvc2UvQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDM0QsT0FBTyxhQUFhLE1BQU0sZUFBZSxDQUFBO0FBRXpDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUEsQ0FBQyxZQUFZO0FBRXpELE1BQU0sR0FBRyxHQUFHLGlCQUFpQixFQUFFLENBQUE7QUFnQi9CLE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxhQUFtRDtJQUl2RTtJQUhwQixZQUFZLEdBQWtDLElBQUksQ0FBQTtJQUNsRCxZQUFZLEdBQTZCLElBQUksQ0FBQTtJQUVyRCxZQUE0QixxQkFBNkI7UUFDdkQsS0FBSyxFQUFFLENBQUE7UUFEbUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFRO0lBRXpELENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ3hELElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUE7UUFDckQsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDekIsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FB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QUFVLENBQUMsQ0FBQTtZQUV0QyxXQUFXLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxzQkFBc0IsQ0FBQTtRQUMzRCxDQUFDO1FBRUQsV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFBO1FBRXhDLElBQUksQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNsQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQTtZQUN4QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBUSxFQUFFLEVBQUUsQ0FDN0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUM3QyxDQUFBO1FBQ0gsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBQ2pCLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsVUFBVSxDQUFBO0lBQzFDLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxDQUFBO0lBQ3RDLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQTtRQUNsRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQTtJQUMxQixDQUFDO0NBQ0Y7QUFFRCxlQUFlLDRCQUE0QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVmZXJyZWQgfSBmcm9tIFwiLi4vLi4vLi4vaGVscGVycy9pbmRleC5qc1wiXG5pbXBvcnQgeyBnZXRJbnRlcm5hbExvZ2dlciB9IGZyb20gXCIuLi8uLi9JbnRlcm5hbExvZ2dlci5qc1wiXG5pbXBvcnQgRXZlbnRFbWl0dGVyMyBmcm9tIFwiZXZlbnRlbWl0dGVyM1wiXG5cbmNvbnN0IENSRURfQlVGRkVSX1BBRERJTkdfTVMgPSAzICogNjAgKiAxMDAwIC8vIDMgbWludXRlc1xuXG5jb25zdCBsb2cgPSBnZXRJbnRlcm5hbExvZ2dlcigpXG5cbmV4cG9ydCBpbnRlcmZhY2UgQVdTQ3JlZGVudGlhbHMge1xuICBhY2Nlc3NLZXlJZDogc3RyaW5nXG4gIHNlY3JldEFjY2Vzc0tleTogc3RyaW5nXG4gIHNlc3Npb25Ub2tlbjogc3RyaW5nXG4gIHN0cmVhbU5hbWU6IHN0cmluZ1xuICByZWdpb246IHN0cmluZ1xuICBleHBpcmF0aW9uOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBV1NGaXJlaG9zZUNyZWRlbnRpYWxNYW5hZ2VyRXZlbnRNYXAge1xuICByZWNlaXZlZDogKGNyZWRzOiBBV1NDcmVkZW50aWFscykgPT4gdm9pZFxuICBleHBpcmVkOiAoKSA9PiB2b2lkXG59XG5cbmV4cG9ydCBjbGFzcyBBV1NGaXJlaG9zZUNyZWRlbnRpYWxNYW5hZ2VyIGV4dGVuZHMgRXZlbnRFbWl0dGVyMzxBV1NGaXJlaG9zZUNyZWRlbnRpYWxNYW5hZ2VyRXZlbnRNYXA+IHtcbiAgcHJpdmF0ZSByZWZyZXNoVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+ID0gbnVsbFxuICBwcml2YXRlIGxvYWREZWZlcnJlZDogRGVmZXJyZWQ8QVdTQ3JlZGVudGlhbHM+ID0gbnVsbFxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsRW5kcG9pbnRVcmw6IHN0cmluZykge1xuICAgIHN1cGVyKClcbiAgfVxuXG4gIGZvcmNlVXBkYXRlQ3JlZGVudGlhbHMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubG9hZERlZmVycmVkICYmICF0aGlzLmxvYWREZWZlcnJlZC5pc1NldHRsZWQoKSkge1xuICAgICAgdGhpcy5sb2FkRGVmZXJyZWQucmVqZWN0KG5ldyBFcnJvcihcImZvcmNlIHVwZGF0ZVwiKSlcbiAgICB9XG5cbiAgICB0aGlzLmxvYWREZWZlcnJlZCA9IG51bGxcbiAgICB0aGlzLnNjaGVkdWxlUmVmcmVzaCgxKVxuICB9XG5cbiAgZ2V0Q3JlZGVudGlhbHMoKTogQVdTQ3JlZGVudGlhbHMge1xuICAgIGlmICh0aGlzLmxvYWREZWZlcnJlZCAmJiB0aGlzLmxvYWREZWZlcnJlZC5pc0Z1bGZpbGxlZCgpKSB7XG4gICAgICBjb25zdCBjcmVkcyA9IHRoaXMubG9hZERlZmVycmVkLmdldFJlc3VsdCgpLFxuICAgICAgICBleHBNcyA9IERhdGUucGFyc2UoY3JlZHMuZXhwaXJhdGlvbilcblxuICAgICAgaWYgKGV4cE1zIDw9IERhdGUubm93KCkpIHtcbiAgICAgICAgbG9nLmluZm8oXCJDcmVkZW50aWFscyBleHBpcmVkXCIpXG4gICAgICAgIHRoaXMubG9hZERlZmVycmVkID0gbnVsbFxuICAgICAgICB0aGlzLnNjaGVkdWxlUmVmcmVzaCgxKVxuICAgICAgICB0aGlzLmVtaXQoXCJleHBpcmVkXCIpXG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG4gICAgICByZXR1cm4gY3JlZHNcbiAgICB9XG5cbiAgICB0aGlzLnNjaGVkdWxlUmVmcmVzaCgxKVxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBoYXNDcmVkZW50aWFscygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDcmVkZW50aWFscygpICE9IG51bGxcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZCgpOiBQcm9taXNlPEFXU0NyZWRlbnRpYWxzPiB7XG4gICAgaWYgKHRoaXMubG9hZERlZmVycmVkICYmICF0aGlzLmxvYWREZWZlcnJlZC5pc1JlamVjdGVkKCkpXG4gICAgICByZXR1cm4gdGhpcy5sb2FkRGVmZXJyZWQucHJvbWlzZVxuXG4gICAgY29uc3QgZGVmZXJyZWQgPSAodGhpcy5sb2FkRGVmZXJyZWQgPSBuZXcgRGVmZXJyZWQ8QVdTQ3JlZGVudGlhbHM+KCkpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHIgPSBhd2FpdCBmZXRjaCh0aGlzLmNyZWRlbnRpYWxFbmRwb2ludFVybCwge1xuICAgICAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgICAgIGNyZWRlbnRpYWxzOiBcImluY2x1ZGVcIlxuICAgICAgfSlcbiAgICAgIGlmICghci5vaykgdGhyb3cgbmV3IEVycm9yKGBjcmVkcyBodHRwICR7ci5zdGF0dXN9YClcbiAgICAgIGNvbnN0IGNyZWRzOiBBV1NDcmVkZW50aWFscyA9IGF3YWl0IHIuanNvbigpXG5cbiAgICAgIHRoaXMuc2NoZWR1bGVSZWZyZXNoKGNyZWRzKVxuICAgICAgbG9nLmluZm8oXG4gICAgICAgIGBHb3QgY3JlZHMsIGV4cGlyZT0ke2NyZWRzLmV4cGlyYXRpb259LCBzdHJlYW09JHtjcmVkcy5zdHJlYW1OYW1lfSwgcmVnaW9uPSR7Y3JlZHMucmVnaW9ufWBcbiAgICAgIClcbiAgICAgIGRlZmVycmVkLnJlc29sdmUoY3JlZHMpXG4gICAgICB0aGlzLmVtaXQoXCJyZWNlaXZlZFwiLCBjcmVkcylcbiAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZGVmZXJyZWQucmVqZWN0KGUpXG4gICAgICB0aGlzLmxvYWREZWZlcnJlZCA9IG51bGxcbiAgICAgIHRocm93IGVcbiAgICB9XG4gIH1cbiAgc2NoZWR1bGVSZWZyZXNoKGNyZWRzT3JNaWxsaXM6IEFXU0NyZWRlbnRpYWxzIHwgbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVmcmVzaFRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5yZWZyZXNoVGltZXIpXG4gICAgICB0aGlzLnJlZnJlc2hUaW1lciA9IG51bGxcbiAgICB9XG4gICAgaWYgKCFjcmVkc09yTWlsbGlzKSByZXR1cm5cblxuICAgIGxldCByZWZyZXNoSW5NczogbnVtYmVyXG4gICAgaWYgKHR5cGVvZiBjcmVkc09yTWlsbGlzID09PSBcIm51bWJlclwiKSB7XG4gICAgICByZWZyZXNoSW5NcyA9IGNyZWRzT3JNaWxsaXNcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY3JlZHMgPSBjcmVkc09yTWlsbGlzLFxuICAgICAgICBleHBNcyA9IERhdGUucGFyc2UoY3JlZHMuZXhwaXJhdGlvbilcblxuICAgICAgcmVmcmVzaEluTXMgPSBleHBNcyAtIERhdGUubm93KCkgLSBDUkVEX0JVRkZFUl9QQURESU5HX01TXG4gICAgfVxuXG4gICAgcmVmcmVzaEluTXMgPSBNYXRoLm1heCgxMDAsIHJlZnJlc2hJbk1zKVxuXG4gICAgdGhpcy5yZWZyZXNoVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubG9hZERlZmVycmVkID0gbnVsbFxuICAgICAgdGhpcy5sb2FkKCkuY2F0Y2goKGU6IEVycm9yKSA9PlxuICAgICAgICBsb2cuZXJyb3IoYHJlZnJlc2ggZmFpbGVkOiAke2UubWVzc2FnZX1gLCBlKVxuICAgICAgKVxuICAgIH0sIHJlZnJlc2hJbk1zKVxuICB9XG5cbiAgZ2V0U3RyZWFtTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldENyZWRlbnRpYWxzKCk/LnN0cmVhbU5hbWVcbiAgfVxuXG4gIGdldFJlZ2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldENyZWRlbnRpYWxzKCk/LnJlZ2lvblxuICB9XG5cbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnNjaGVkdWxlUmVmcmVzaChudWxsKVxuICAgIGlmICghdGhpcy5sb2FkRGVmZXJyZWQuaXNTZXR0bGVkKCkpXG4gICAgICB0aGlzLmxvYWREZWZlcnJlZC5yZWplY3QobmV3IEVycm9yKFwiZGVzdHJveWVkXCIpKVxuICAgIHRoaXMubG9hZERlZmVycmVkID0gbnVsbFxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEFXU0ZpcmVob3NlQ3JlZGVudGlhbE1hbmFnZXJcbiJdfQ==