cdk-nextjs 0.7.15 → 0.7.16

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.
@@ -190,6 +190,12 @@ class ShimServerResponse extends node_stream_1.Transform {
190
190
  this.flushHeaders();
191
191
  callback();
192
192
  }
193
+ /**
194
+ * What the `compression` middleware adds under `next start`, kept for app
195
+ * code that calls it, such as `res.write(event); res.flush()` in a Pages API
196
+ * route. A no-op: the sink's gzip stage already sync-flushes every chunk.
197
+ */
198
+ flush() { }
193
199
  // --- the rest of the ServerResponse surface -------------------------------
194
200
  addTrailers() {
195
201
  return unsupported("addTrailers");
@@ -220,4 +226,4 @@ exports.ShimServerResponse = ShimServerResponse;
220
226
  function asServerResponse(res) {
221
227
  return res;
222
228
  }
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcnVudGltZS9odHRwL3Jlc3BvbnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTBDQSxzQ0FJQztBQStORCw0Q0FFQztBQS9RRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gseUNBQXlDO0FBRXpDLDZDQUF3QztBQWN4Qzs7Ozs7O0dBTUc7QUFDSCxTQUFnQixhQUFhLENBQUMsS0FBaUM7SUFDN0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUN0QyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDckIsQ0FBQztBQUlELG1FQUFtRTtBQUNuRSxTQUFTLFdBQVcsQ0FBQyxNQUFjO0lBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQ2IsT0FBTyxNQUFNLDhEQUE4RDtRQUN6RSxvRUFBb0U7UUFDcEUsV0FBVyxDQUNkLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBYSxrQkFBbUIsU0FBUSx1QkFBUztJQUN4QyxVQUFVLEdBQUcsR0FBRyxDQUFDO0lBQ2pCLGFBQWEsQ0FBVTtJQUN2QixXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzNCLCtFQUErRTtJQUN4RSxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLG1CQUFtQixHQUFHLEtBQUssQ0FBQztJQUM1QixlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDeEIsMkJBQTJCLEdBQUcsS0FBSyxDQUFDO0lBQzNDLHdEQUF3RDtJQUNqRCxHQUFHLENBQVc7SUFFckIsNkVBQTZFO0lBQzVELFdBQVcsR0FBRyxJ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TSxlQUFlO1FBQ3BCLE9BQU8sV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDeEMsQ0FBQztDQUNGO0FBMU1ELGdEQTBNQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsR0FBdUI7SUFDdEQsT0FBTyxHQUFnQyxDQUFDO0FBQzFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgc3ludGhlc2l6ZWQsIHN0cmVhbWluZyBgaHR0cC5TZXJ2ZXJSZXNwb25zZWAuXG4gKlxuICogVGhlIHJlc3BvbnNlICppcyogdGhlIHN0cmVhbTogdGhpcyBpcyBhIGBUcmFuc2Zvcm1gIHRoYXQgTmV4dC5qcyB3cml0ZXMgaW50byxcbiAqIGFuZCB0aGUgc2hlbGwgcGlwZXMgaW50byBpdHMgb3duIGJ5dGUgc2luayAoYGF3c2xhbWJkYS5IdHRwUmVzcG9uc2VTdHJlYW1gIGZvclxuICogRnVuY3Rpb25zLCB0aGUgcmVhbCBgU2VydmVyUmVzcG9uc2VgIGZvciBDb250YWluZXJzKS4gU3RhdHVzIGFuZCBoZWFkZXJzIGFyZVxuICogZW1pdHRlZCBvbmNlIGFzIGEge0BsaW5rIFJlc3BvbnNlSGVhZH0gb24gdGhlIGBcImhlYWRcImAgZXZlbnQsIGJlY2F1c2UgTGFtYmRhJ3NcbiAqIHJlc3BvbnNlIHN0cmVhbSBuZWVkcyB0aGVtIGluIGEgcHJlbHVkZSAqYmVmb3JlKiBhbnkgYm9keSBieXRlLlxuICpcbiAqIE1vZGVsZWQgb24gT3Blbk5leHQncyBgT3Blbk5leHROb2RlUmVzcG9uc2VgIChNSVQsIMKpIDIwMjIgU1NUKTpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVubmV4dGpzL29wZW5uZXh0anMtYXdzL2Jsb2IvbWFpbi9wYWNrYWdlcy9vcGVuLW5leHQvc3JjL2h0dHAvb3Blbk5leHRSZXNwb25zZS50c1xuICpcbiAqIERlbGliZXJhdGVseSBtdWNoIHNtYWxsZXIgdGhhbiB0aGF0IGZpbGUuIE9wZW5OZXh0J3Mgc2hpbSBkb3VibGVzIGFzIGFcbiAqIGBCYXNlTmV4dFJlc3BvbnNlYCBhbmQgcmUtaW1wbGVtZW50cyB0aGUgbWlkZGxld2FyZSBoZWFkZXIgbWVyZ2UsIGJlY2F1c2VcbiAqIE9wZW5OZXh0IHJlaW1wbGVtZW50cyByb3V0aW5nLiBXZSBoYW5kIHRoaXMgb2JqZWN0IHRvIGBoYW5kbGVyKHJlcSwgcmVzLCBjdHgpYCxcbiAqIHdoaWNoIHdyYXBzIGl0IGluIE5leHQuanMncyBvd24gYE5vZGVOZXh0UmVzcG9uc2VgXG4gKiAoYG5leHQvZGlzdC9zZXJ2ZXIvYmFzZS1odHRwL25vZGUuanNgKSDigJQgc28gdGhlIGNvbnRyYWN0IGlzIGp1c3QgXCJiZSBhXG4gKiBgU2VydmVyUmVzcG9uc2VgXCIsIGFuZCB0aGUgaGVhZGVyLW1lcmdlIGxvZ2ljIGJlbG9uZ3MgdG8gYEBuZXh0L3JvdXRpbmdgLlxuICovXG5pbXBvcnQgeyBTVEFUVVNfQ09ERVMgfSBmcm9tIFwibm9kZTpodHRwXCI7XG5pbXBvcnQgdHlwZSB7IE91dGdvaW5nSHR0cEhlYWRlcnMsIFNlcnZlclJlc3BvbnNlIH0gZnJvbSBcIm5vZGU6aHR0cFwiO1xuaW1wb3J0IHsgVHJhbnNmb3JtIH0gZnJvbSBcIm5vZGU6c3RyZWFtXCI7XG5pbXBvcnQgdHlwZSB7IFRyYW5zZm9ybUNhbGxiYWNrIH0gZnJvbSBcIm5vZGU6c3RyZWFtXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzcG9uc2VIZWFkIHtcbiAgcmVhZG9ubHkgc3RhdHVzQ29kZTogbnVtYmVyO1xuICByZWFkb25seSBzdGF0dXNNZXNzYWdlPzogc3RyaW5nO1xuICAvKipcbiAgICogRmxhdCBoZWFkZXIgbWFwIHdpdGggYHNldC1jb29raWVgIHJlbW92ZWQg4oCUIGEgYFJlY29yZDxzdHJpbmcsIHN0cmluZz5gXG4gICAqIGNhbm5vdCByZXByZXNlbnQgaXQsIGFuZCBib3RoIHNpbmtzIHRha2UgY29va2llcyBzZXBhcmF0ZWx5LlxuICAgKi9cbiAgcmVhZG9ubHkgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgcmVhZG9ubHkgY29va2llczogc3RyaW5nW107XG59XG5cbi8qKlxuICogT25lIGVudHJ5IHBlciBgU2V0LUNvb2tpZWAgbGluZSwgdGhlIHdheSBOb2RlJ3MgYFNlcnZlclJlc3BvbnNlYCBlbWl0cyB0aGVtOlxuICogZWFjaCBhcnJheSBlbGVtZW50IGlzIGEgd2hvbGUgY29va2llIGFuZCBhIHN0cmluZyBpcyBleGFjdGx5IG9uZS4gTm90aGluZyBoZXJlXG4gKiBzcGxpdHMgb24gY29tbWFzIOKAlCBgRXhwaXJlcz1gIGRhdGVzIGNvbnRhaW4gb25lIGluIGV2ZXJ5IGZvcm1hdCAoYFdlZCwgMjEgT2N0YCxcbiAqIGBXZWRuZXNkYXksIDIxLU9jdC0yNmApLCBhbmQgYSBoZXVyaXN0aWMgc3BsaXQgdHVybnMgb25lIGNvb2tpZSBpbnRvIGEgc2Vzc2lvblxuICogY29va2llIG9uIHRoZSB3cm9uZyBwYXRoIHBsdXMgYSBqdW5rIG9uZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldENvb2tpZUxpc3QodmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVtYmVyKTogc3RyaW5nW10ge1xuICByZXR1cm4gKEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdKVxuICAgIC5tYXAoKGNvb2tpZSkgPT4gU3RyaW5nKGNvb2tpZSkudHJpbSgpKVxuICAgIC5maWx0ZXIoQm9vbGVhbik7XG59XG5cbnR5cGUgSGVhZGVyVmFsdWUgPSBzdHJpbmcgfCBudW1iZXIgfCBzdHJpbmdbXTtcblxuLyoqIE5vZGUgbmV2ZXIgY2FsbHMgdGhlc2UsIGFuZCBOZXh0LmpzIG5ldmVyIGNhbGxzIHRoZW0gZWl0aGVyLiAqL1xuZnVuY3Rpb24gdW5zdXBwb3J0ZWQobWV0aG9kOiBzdHJpbmcpOiBuZXZlciB7XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICBgcmVzLiR7bWV0aG9kfSgpIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGNkay1uZXh0anMgcnVudGltZS4gTmV4dC5qcyBkb2VzIGAgK1xuICAgICAgYG5vdCBjYWxsIGl0LCBzbyByZWFjaGluZyB0aGlzIG1lYW5zIHNvbWV0aGluZyBlbHNlIGlzIHdyaXRpbmcgdGhlIGAgK1xuICAgICAgYHJlc3BvbnNlLmAsXG4gICk7XG59XG5cbmV4cG9ydCBjbGFzcyBTaGltU2VydmVyUmVzcG9uc2UgZXh0ZW5kcyBUcmFuc2Zvcm0ge1xuICBwdWJsaWMgc3RhdHVzQ29kZSA9IDIwMDtcbiAgcHVibGljIHN0YXR1c01lc3NhZ2U/OiBzdHJpbmc7XG4gIHB1YmxpYyBoZWFkZXJzU2VudCA9IGZhbHNlO1xuICAvKiogQWNjZXB0ZWQgYW5kIGlnbm9yZWQ6IHRoZXJlIGlzIG5vIHNvY2tldCB0byBzY2hlZHVsZSBhIGBEYXRlYCBoZWFkZXIgb24uICovXG4gIHB1YmxpYyBzZW5kRGF0ZSA9IGZhbHNlO1xuICBwdWJsaWMgc3RyaWN0Q29udGVudExlbmd0aCA9IGZhbHNlO1xuICBwdWJsaWMgY2h1bmtlZEVuY29kaW5nID0gZmFsc2U7XG4gIHB1YmxpYyBzaG91bGRLZWVwQWxpdmUgPSBmYWxzZTtcbiAgcHVibGljIHVzZUNodW5rZWRFbmNvZGluZ0J5RGVmYXVsdCA9IGZhbHNlO1xuICAvKiogU2V0IGJ5IE5leHQuanMgaW4gYSBmZXcgcGxhY2VzOyBuZXZlciByZWFkIGJ5IHVzLiAqL1xuICBwdWJsaWMgcmVxPzogdW5rbm93bjtcblxuICAvKiogTG93ZXJjYXNlZCBuYW1lIOKGkiBvcmlnaW5hbCBjYXNpbmcgKyB2YWx1ZSwgbWlycm9yaW5nIE5vZGUncyBvd24gc3RvcmUuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgaGVhZGVyU3RvcmUgPSBuZXcgTWFwPFxuICAgIHN0cmluZyxcbiAgICB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IEhlYWRlclZhbHVlIH1cbiAgPigpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLy8gLS0tIGhlYWRlciBBUEkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBwdWJsaWMgc2V0SGVhZGVyKG5hbWU6IHN0cmluZywgdmFsdWU6IEhlYWRlclZhbHVlKTogdGhpcyB7XG4gICAgdGhpcy5oZWFkZXJTdG9yZS5zZXQobmFtZS50b0xvd2VyQ2FzZSgpLCB7IG5hbWUsIHZhbHVlIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGFwcGVuZEhlYWRlcihuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHRoaXMge1xuICAgIGNvbnN0IGtleSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5oZWFkZXJTdG9yZS5nZXQoa2V5KTtcbiAgICBpZiAoY3VycmVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXRIZWFkZXIobmFtZSwgdmFsdWUpO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZXMgPSBBcnJheS5pc0FycmF5KGN1cnJlbnQudmFsdWUpXG4gICAgICA/IGN1cnJlbnQudmFsdWVcbiAgICAgIDogW1N0cmluZyhjdXJyZW50LnZhbHVlKV07XG4gICAgdGhpcy5oZWFkZXJTdG9yZS5zZXQoa2V5LCB7XG4gICAgICBuYW1lOiBjdXJyZW50Lm5hbWUsXG4gICAgICB2YWx1ZTogdmFsdWVzLmNvbmNhdCh2YWx1ZSksXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0SGVhZGVyKG5hbWU6IHN0cmluZyk6IEhlYWRlclZhbHVlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5oZWFkZXJTdG9yZS5nZXQobmFtZS50b0xvd2VyQ2FzZSgpKT8udmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0SGVhZGVycygpOiBPdXRnb2luZ0h0dHBIZWFkZXJzIHtcbiAgICBjb25zdCBoZWFkZXJzOiBPdXRnb2luZ0h0dHBIZWFkZXJzID0ge307XG4gICAgZm9yIChjb25zdCB7IG5hbWUsIHZhbHVlIH0gb2YgdGhpcy5oZWFkZXJTdG9yZS52YWx1ZXMoKSkge1xuICAgICAgaGVhZGVyc1tuYW1lLnRvTG93ZXJDYXNlKCldID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBoZWFkZXJzO1xuICB9XG5cbiAgcHVibGljIGdldEhlYWRlck5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuaGVhZGVyU3RvcmUua2V5cygpXTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNIZWFkZXIobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGVhZGVyU3RvcmUuaGFzKG5hbWUudG9Mb3dlckNhc2UoKSk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlSGVhZGVyKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaGVhZGVyU3RvcmUuZGVsZXRlKG5hbWUudG9Mb3dlckNhc2UoKSk7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVIZWFkKFxuICAgIHN0YXR1c0NvZGU6IG51bWJlcixcbiAgICBzdGF0dXNNZXNzYWdlT3JIZWFkZXJzPzogc3RyaW5nIHwgT3V0Z29pbmdIdHRwSGVhZGVycyB8IEhlYWRlclZhbHVlW10sXG4gICAgbWF5YmVIZWFkZXJzPzogT3V0Z29pbmdIdHRwSGVhZGVycyB8IEhlYWRlclZhbHVlW10sXG4gICk6IHRoaXMge1xuICAgIHRoaXMuc3RhdHVzQ29kZSA9IHN0YXR1c0NvZGU7XG4gICAgbGV0IGhlYWRlcnMgPSBtYXliZUhlYWRlcnM7XG4gICAgaWYgKHR5cGVvZiBzdGF0dXNNZXNzYWdlT3JIZWFkZXJzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICB0aGlzLnN0YXR1c01lc3NhZ2UgPSBzdGF0dXNNZXNzYWdlT3JIZWFkZXJzO1xuICAgIH0gZWxzZSBpZiAoc3RhdHVzTWVzc2FnZU9ySGVhZGVycyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBoZWFkZXJzID0gc3RhdHVzTWVzc2FnZU9ySGVhZGVycztcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShoZWFkZXJzKSkge1xuICAgICAgLy8gTm9kZSdzIGZsYXQgZXZlbi9vZGQgYFtuYW1lLCB2YWx1ZSwgbmFtZSwgdmFsdWVdYCBmb3JtLCB3aGVyZSBhIG5hbWVcbiAgICAgIC8vIG1heSByZXBlYXQgKG9uZSBgU2V0LUNvb2tpZWAgcGVyIGNvb2tpZSksIHNvLCBhcyBOb2RlIGRvZXMsIGVhY2ggbmFtZVxuICAgICAgLy8gcmVwbGFjZXMgd2hhdCB3YXMgc2V0IGJlZm9yZSBidXQgaXRzIHZhbHVlcyBhZGQgdXAuIFR1cGxlcyBhcmVcbiAgICAgIC8vIGZsYXR0ZW5lZCBpbnRvIHRoZSBzYW1lIGZvcm0uXG4gICAgICBjb25zdCBmbGF0ID0gQXJyYXkuaXNBcnJheShoZWFkZXJzWzBdKSA/IGhlYWRlcnMuZmxhdCgpIDogaGVhZGVycztcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmxhdC5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgICB0aGlzLnJlbW92ZUhlYWRlcihTdHJpbmcoZmxhdFtpXSkpO1xuICAgICAgfVxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmbGF0Lmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZmxhdFtpICsgMV0gYXMgSGVhZGVyVmFsdWU7XG4gICAgICAgIHRoaXMuYXBwZW5kSGVhZGVyKFxuICAgICAgICAgIFN0cmluZyhmbGF0W2ldKSxcbiAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgPyBTdHJpbmcodmFsdWUpIDogdmFsdWUsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChoZWFkZXJzKSB7XG4gICAgICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoaGVhZGVycykpIHtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLnNldEhlYWRlcihuYW1lLCB2YWx1ZSBhcyBIZWFkZXJWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmZsdXNoSGVhZGVycygpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEZyZWV6ZXMgc3RhdHVzICsgaGVhZGVycyBhbmQgZW1pdHMgdGhlbSBhcyB0aGUgYFwiaGVhZFwiYCBldmVudC4gQ2FsbGVkXG4gICAqIGV4cGxpY2l0bHkgYnkgTmV4dC5qcyBiZWZvcmUgaXQgc3RyZWFtcywgYW5kIGxhemlseSBieSB0aGlzIGNsYXNzIG9uIHRoZVxuICAgKiBmaXJzdCBieXRlIG9yIG9uIGBlbmQoKWAgd2hlbiBpdCBpc24ndC5cbiAgICovXG4gIHB1YmxpYyBmbHVzaEhlYWRlcnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGVhZGVyc1NlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5oZWFkZXJzU2VudCA9IHRydWU7XG4gICAgdGhpcy5lbWl0KFwiaGVhZFwiLCB0aGlzLmJ1aWxkSGVhZCgpKTtcbiAgfVxuXG4gIC8qKiBEZXByZWNhdGVkIG9uIGBTZXJ2ZXJSZXNwb25zZWAsIGJ1dCBgTm9kZU5leHRSZXNwb25zZS5zZW50YCByZWFkcyBpdC4gKi9cbiAgcHVibGljIGdldCBmaW5pc2hlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy53cml0YWJsZUVuZGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEhlYWQoKTogUmVzcG9uc2VIZWFkIHtcbiAgICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgbGV0IGNvb2tpZXM6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChjb25zdCB7IG5hbWUsIHZhbHVlIH0gb2YgdGhpcy5oZWFkZXJTdG9yZS52YWx1ZXMoKSkge1xuICAgICAgY29uc3Qga2V5ID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKGtleSA9PT0gXCJzZXQtY29va2llXCIpIHtcbiAgICAgICAgY29va2llcyA9IHNldENvb2tpZUxpc3QodmFsdWUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICBpZiAoa2V5ID09PSBcImxvY2F0aW9uXCIpIHtcbiAgICAgICAgICAvLyBOZXh0LmpzIHNlbmRzIGFuIGFycmF5IGBMb2NhdGlvbmAgd2hlbiBhIGNhY2hlSGFuZGxlciBgZ2V0YCByZXR1cm5zXG4gICAgICAgICAgLy8gbnVsbCBmb3IgYSBwYWdlIHRoYXQgY2FsbHMgYHJlZGlyZWN0KClgLiBDb21tYS1qb2luaW5nIHByb2R1Y2VzIGFcbiAgICAgICAgICAvLyBVUkwgdGhhdCByZXNvbHZlcyB0byBub3RoaW5nLCBzbyB0YWtlIHRoZSBsYXN0IHdyaXRlLlxuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBbY2RrLW5leHRqc10gTmV4dC5qcyBzZXQgJHt2YWx1ZS5sZW5ndGh9IExvY2F0aW9uIGhlYWRlcnMgYCArXG4gICAgICAgICAgICAgIGAoJHt2YWx1ZS5qb2luKFwiIHwgXCIpfSk7IHVzaW5nIHRoZSBsYXN0IG9uZS5gLFxuICAgICAgICAgICk7XG4gICAgICAgICAgaGVhZGVyc1trZXldID0gU3RyaW5nKHZhbHVlW3ZhbHVlLmxlbmd0aCAtIDFdKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBoZWFkZXJzW2tleV0gPSB2YWx1ZS5qb2luKFwiLCBcIik7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaGVhZGVyc1trZXldID0gU3RyaW5nKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXR1c0NvZGU6IHRoaXMuc3RhdHVzQ29kZSxcbiAgICAgIHN0YXR1c01lc3NhZ2U6IHRoaXMuc3RhdHVzTWVzc2FnZSA/PyBTVEFUVVNfQ09ERVNbdGhpcy5zdGF0dXNDb2RlXSxcbiAgICAgIGhlYWRlcnMsXG4gICAgICBjb29raWVzLFxuICAgIH07XG4gIH1cblxuICAvLyAtLS0gc3RyZWFtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIHB1YmxpYyBvdmVycmlkZSBfdHJhbnNmb3JtKFxuICAgIGNodW5rOiB1bmtub3duLFxuICAgIF9lbmNvZGluZzogQnVmZmVyRW5jb2RpbmcsXG4gICAgY2FsbGJhY2s6IFRyYW5zZm9ybUNhbGxiYWNrLFxuICApOiB2b2lkIHtcbiAgICAvLyBMYXppbHksIGJlY2F1c2UgTmV4dC5qcyBvbmx5IGNhbGxzIGBmbHVzaEhlYWRlcnMoKWAgb24gdGhlIHBhdGhzIHRoYXRcbiAgICAvLyBzdHJlYW0uIGBzZW5kUGF5bG9hZGAganVzdCB3cml0ZXMgYW5kIGVuZHMuXG4gICAgdGhpcy5mbHVzaEhlYWRlcnMoKTtcbiAgICBjYWxsYmFjayhudWxsLCBjaHVuayk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgX2ZsdXNoKGNhbGxiYWNrOiBUcmFuc2Zvcm1DYWxsYmFjayk6IHZvaWQge1xuICAgIC8vIEFuIGVtcHR5IGJvZHkgc3RpbGwgbmVlZHMgYSBzdGF0dXMgbGluZS5cbiAgICB0aGlzLmZsdXNoSGVhZGVycygpO1xuICAgIGNhbGxiYWNrKCk7XG4gIH1cblxuICAvLyAtLS0gdGhlIHJlc3Qgb2YgdGhlIFNlcnZlclJlc3BvbnNlIHN1cmZhY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIHB1YmxpYyBhZGRUcmFpbGVycygpOiBuZXZlciB7XG4gICAgcmV0dXJuIHVuc3VwcG9ydGVkKFwiYWRkVHJhaWxlcnNcIik7XG4gIH1cbiAgcHVibGljIGFzc2lnblNvY2tldCgpOiBuZXZlciB7XG4gICAgcmV0dXJuIHVuc3VwcG9ydGVkKFwiYXNzaWduU29ja2V0XCIpO1xuICB9XG4gIHB1YmxpYyBkZXRhY2hTb2NrZXQoKTogbmV2ZXIge1xuICAgIHJldHVybiB1bnN1cHBvcnRlZChcImRldGFjaFNvY2tldFwiKTtcbiAgfVxuICBwdWJsaWMgd3JpdGVDb250aW51ZSgpOiBuZXZlciB7XG4gICAgcmV0dXJuIHVuc3VwcG9ydGVkKFwid3JpdGVDb250aW51ZVwiKTtcbiAgfVxuICBwdWJsaWMgd3JpdGVFYXJseUhpbnRzKCk6IG5ldmVyIHtcbiAgICByZXR1cm4gdW5zdXBwb3J0ZWQoXCJ3cml0ZUVhcmx5SGludHNcIik7XG4gIH1cbiAgcHVibGljIHdyaXRlUHJvY2Vzc2luZygpOiBuZXZlciB7XG4gICAgcmV0dXJuIHVuc3VwcG9ydGVkKFwid3JpdGVQcm9jZXNzaW5nXCIpO1xuICB9XG59XG5cbi8qKlxuICogYFNoaW1TZXJ2ZXJSZXNwb25zZWAgaXMgc3RydWN0dXJhbGx5IGEgYFNlcnZlclJlc3BvbnNlYCBmb3IgZXZlcnl0aGluZyBOZXh0LmpzXG4gKiB0b3VjaGVzLCBidXQgbm90IG5vbWluYWxseSBvbmUgKG5vIHNvY2tldCwgbm8gdHJhaWxlcnMpLiBUaGUgZW50cnlwb2ludFxuICogc2lnbmF0dXJlIHdhbnRzIHRoZSByZWFsIHR5cGUsIHNvIHRoZSBjYXN0IGlzIGNlbnRyYWxpemVkIGhlcmUgd2l0aCB0aGVcbiAqIHJlYXNvbmluZyBhdHRhY2hlZCByYXRoZXIgdGhhbiByZXBlYXRlZCBhdCBlYWNoIGNhbGwgc2l0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzU2VydmVyUmVzcG9uc2UocmVzOiBTaGltU2VydmVyUmVzcG9uc2UpOiBTZXJ2ZXJSZXNwb25zZSB7XG4gIHJldHVybiByZXMgYXMgdW5rbm93biBhcyBTZXJ2ZXJSZXNwb25zZTtcbn1cbiJdfQ==
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcnVudGltZS9odHRwL3Jlc3BvbnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTBDQSxzQ0FJQztBQXNPRCw0Q0FFQztBQXRSRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gseUNBQXlDO0FBRXpDLDZDQUF3QztBQWN4Qzs7Ozs7O0dBTUc7QUFDSCxTQUFnQixhQUFhLENBQUMsS0FBaUM7SUFDN0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUN0QyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDckIsQ0FBQztBQUlELG1FQUFtRTtBQUNuRSxTQUFTLFdBQVcsQ0FBQyxNQUFjO0lBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQ2IsT0FBTyxNQUFNLDhEQUE4RDtRQUN6RSxvRUFBb0U7UUFDcEUsV0FBVyxDQUNkLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBYSxrQkFBbUIsU0FBUSx1QkFBUztJQUN4QyxVQUFVLEdBQUcsR0FBRyxDQUFDO0lBQ2pCLGFBQWEsQ0FBVTtJQUN2QixXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzNCLCtFQUErRTtJQUN4RSxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLG1CQUFtQixHQUFHLEtBQUssQ0FBQztJQUM1QixlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDeEIsMkJBQTJCLEdBQUcsS0FBSyxDQUFDO0lBQzNDLHdEQUF3RDtJQUNqRCxHQUFHLENBQVc7SUFFckIsNkVBQTZFO0lBQzVELFdBQVcsR0FBRyxJ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QUMsaUJBQWlCLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBQ00sZUFBZTtRQUNwQixPQUFPLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FDRjtBQWpORCxnREFpTkM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLEdBQXVCO0lBQ3RELE9BQU8sR0FBZ0MsQ0FBQztBQUMxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBIHN5bnRoZXNpemVkLCBzdHJlYW1pbmcgYGh0dHAuU2VydmVyUmVzcG9uc2VgLlxuICpcbiAqIFRoZSByZXNwb25zZSAqaXMqIHRoZSBzdHJlYW06IHRoaXMgaXMgYSBgVHJhbnNmb3JtYCB0aGF0IE5leHQuanMgd3JpdGVzIGludG8sXG4gKiBhbmQgdGhlIHNoZWxsIHBpcGVzIGludG8gaXRzIG93biBieXRlIHNpbmsgKGBhd3NsYW1iZGEuSHR0cFJlc3BvbnNlU3RyZWFtYCBmb3JcbiAqIEZ1bmN0aW9ucywgdGhlIHJlYWwgYFNlcnZlclJlc3BvbnNlYCBmb3IgQ29udGFpbmVycykuIFN0YXR1cyBhbmQgaGVhZGVycyBhcmVcbiAqIGVtaXR0ZWQgb25jZSBhcyBhIHtAbGluayBSZXNwb25zZUhlYWR9IG9uIHRoZSBgXCJoZWFkXCJgIGV2ZW50LCBiZWNhdXNlIExhbWJkYSdzXG4gKiByZXNwb25zZSBzdHJlYW0gbmVlZHMgdGhlbSBpbiBhIHByZWx1ZGUgKmJlZm9yZSogYW55IGJvZHkgYnl0ZS5cbiAqXG4gKiBNb2RlbGVkIG9uIE9wZW5OZXh0J3MgYE9wZW5OZXh0Tm9kZVJlc3BvbnNlYCAoTUlULCDCqSAyMDIyIFNTVCk6XG4gKiBodHRwczovL2dpdGh1Yi5jb20vb3Blbm5leHRqcy9vcGVubmV4dGpzLWF3cy9ibG9iL21haW4vcGFja2FnZXMvb3Blbi1uZXh0L3NyYy9odHRwL29wZW5OZXh0UmVzcG9uc2UudHNcbiAqXG4gKiBEZWxpYmVyYXRlbHkgbXVjaCBzbWFsbGVyIHRoYW4gdGhhdCBmaWxlLiBPcGVuTmV4dCdzIHNoaW0gZG91YmxlcyBhcyBhXG4gKiBgQmFzZU5leHRSZXNwb25zZWAgYW5kIHJlLWltcGxlbWVudHMgdGhlIG1pZGRsZXdhcmUgaGVhZGVyIG1lcmdlLCBiZWNhdXNlXG4gKiBPcGVuTmV4dCByZWltcGxlbWVudHMgcm91dGluZy4gV2UgaGFuZCB0aGlzIG9iamVjdCB0byBgaGFuZGxlcihyZXEsIHJlcywgY3R4KWAsXG4gKiB3aGljaCB3cmFwcyBpdCBpbiBOZXh0LmpzJ3Mgb3duIGBOb2RlTmV4dFJlc3BvbnNlYFxuICogKGBuZXh0L2Rpc3Qvc2VydmVyL2Jhc2UtaHR0cC9ub2RlLmpzYCkg4oCUIHNvIHRoZSBjb250cmFjdCBpcyBqdXN0IFwiYmUgYVxuICogYFNlcnZlclJlc3BvbnNlYFwiLCBhbmQgdGhlIGhlYWRlci1tZXJnZSBsb2dpYyBiZWxvbmdzIHRvIGBAbmV4dC9yb3V0aW5nYC5cbiAqL1xuaW1wb3J0IHsgU1RBVFVTX0NPREVTIH0gZnJvbSBcIm5vZGU6aHR0cFwiO1xuaW1wb3J0IHR5cGUgeyBPdXRnb2luZ0h0dHBIZWFkZXJzLCBTZXJ2ZXJSZXNwb25zZSB9IGZyb20gXCJub2RlOmh0dHBcIjtcbmltcG9ydCB7IFRyYW5zZm9ybSB9IGZyb20gXCJub2RlOnN0cmVhbVwiO1xuaW1wb3J0IHR5cGUgeyBUcmFuc2Zvcm1DYWxsYmFjayB9IGZyb20gXCJub2RlOnN0cmVhbVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc3BvbnNlSGVhZCB7XG4gIHJlYWRvbmx5IHN0YXR1c0NvZGU6IG51bWJlcjtcbiAgcmVhZG9ubHkgc3RhdHVzTWVzc2FnZT86IHN0cmluZztcbiAgLyoqXG4gICAqIEZsYXQgaGVhZGVyIG1hcCB3aXRoIGBzZXQtY29va2llYCByZW1vdmVkIOKAlCBhIGBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+YFxuICAgKiBjYW5ub3QgcmVwcmVzZW50IGl0LCBhbmQgYm90aCBzaW5rcyB0YWtlIGNvb2tpZXMgc2VwYXJhdGVseS5cbiAgICovXG4gIHJlYWRvbmx5IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHJlYWRvbmx5IGNvb2tpZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE9uZSBlbnRyeSBwZXIgYFNldC1Db29raWVgIGxpbmUsIHRoZSB3YXkgTm9kZSdzIGBTZXJ2ZXJSZXNwb25zZWAgZW1pdHMgdGhlbTpcbiAqIGVhY2ggYXJyYXkgZWxlbWVudCBpcyBhIHdob2xlIGNvb2tpZSBhbmQgYSBzdHJpbmcgaXMgZXhhY3RseSBvbmUuIE5vdGhpbmcgaGVyZVxuICogc3BsaXRzIG9uIGNvbW1hcyDigJQgYEV4cGlyZXM9YCBkYXRlcyBjb250YWluIG9uZSBpbiBldmVyeSBmb3JtYXQgKGBXZWQsIDIxIE9jdGAsXG4gKiBgV2VkbmVzZGF5LCAyMS1PY3QtMjZgKSwgYW5kIGEgaGV1cmlzdGljIHNwbGl0IHR1cm5zIG9uZSBjb29raWUgaW50byBhIHNlc3Npb25cbiAqIGNvb2tpZSBvbiB0aGUgd3JvbmcgcGF0aCBwbHVzIGEganVuayBvbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRDb29raWVMaXN0KHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bWJlcik6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIChBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXSlcbiAgICAubWFwKChjb29raWUpID0+IFN0cmluZyhjb29raWUpLnRyaW0oKSlcbiAgICAuZmlsdGVyKEJvb2xlYW4pO1xufVxuXG50eXBlIEhlYWRlclZhbHVlID0gc3RyaW5nIHwgbnVtYmVyIHwgc3RyaW5nW107XG5cbi8qKiBOb2RlIG5ldmVyIGNhbGxzIHRoZXNlLCBhbmQgTmV4dC5qcyBuZXZlciBjYWxscyB0aGVtIGVpdGhlci4gKi9cbmZ1bmN0aW9uIHVuc3VwcG9ydGVkKG1ldGhvZDogc3RyaW5nKTogbmV2ZXIge1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYHJlcy4ke21ldGhvZH0oKSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBjZGstbmV4dGpzIHJ1bnRpbWUuIE5leHQuanMgZG9lcyBgICtcbiAgICAgIGBub3QgY2FsbCBpdCwgc28gcmVhY2hpbmcgdGhpcyBtZWFucyBzb21ldGhpbmcgZWxzZSBpcyB3cml0aW5nIHRoZSBgICtcbiAgICAgIGByZXNwb25zZS5gLFxuICApO1xufVxuXG5leHBvcnQgY2xhc3MgU2hpbVNlcnZlclJlc3BvbnNlIGV4dGVuZHMgVHJhbnNmb3JtIHtcbiAgcHVibGljIHN0YXR1c0NvZGUgPSAyMDA7XG4gIHB1YmxpYyBzdGF0dXNNZXNzYWdlPzogc3RyaW5nO1xuICBwdWJsaWMgaGVhZGVyc1NlbnQgPSBmYWxzZTtcbiAgLyoqIEFjY2VwdGVkIGFuZCBpZ25vcmVkOiB0aGVyZSBpcyBubyBzb2NrZXQgdG8gc2NoZWR1bGUgYSBgRGF0ZWAgaGVhZGVyIG9uLiAqL1xuICBwdWJsaWMgc2VuZERhdGUgPSBmYWxzZTtcbiAgcHVibGljIHN0cmljdENvbnRlbnRMZW5ndGggPSBmYWxzZTtcbiAgcHVibGljIGNodW5rZWRFbmNvZGluZyA9IGZhbHNlO1xuICBwdWJsaWMgc2hvdWxkS2VlcEFsaXZlID0gZmFsc2U7XG4gIHB1YmxpYyB1c2VDaHVua2VkRW5jb2RpbmdCeURlZmF1bHQgPSBmYWxzZTtcbiAgLyoqIFNldCBieSBOZXh0LmpzIGluIGEgZmV3IHBsYWNlczsgbmV2ZXIgcmVhZCBieSB1cy4gKi9cbiAgcHVibGljIHJlcT86IHVua25vd247XG5cbiAgLyoqIExvd2VyY2FzZWQgbmFtZSDihpIgb3JpZ2luYWwgY2FzaW5nICsgdmFsdWUsIG1pcnJvcmluZyBOb2RlJ3Mgb3duIHN0b3JlLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGhlYWRlclN0b3JlID0gbmV3IE1hcDxcbiAgICBzdHJpbmcsXG4gICAgeyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBIZWFkZXJWYWx1ZSB9XG4gID4oKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIC8vIC0tLSBoZWFkZXIgQVBJIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgcHVibGljIHNldEhlYWRlcihuYW1lOiBzdHJpbmcsIHZhbHVlOiBIZWFkZXJWYWx1ZSk6IHRoaXMge1xuICAgIHRoaXMuaGVhZGVyU3RvcmUuc2V0KG5hbWUudG9Mb3dlckNhc2UoKSwgeyBuYW1lLCB2YWx1ZSB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBhcHBlbmRIZWFkZXIobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pOiB0aGlzIHtcbiAgICBjb25zdCBrZXkgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuaGVhZGVyU3RvcmUuZ2V0KGtleSk7XG4gICAgaWYgKGN1cnJlbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2V0SGVhZGVyKG5hbWUsIHZhbHVlKTtcbiAgICB9XG4gICAgY29uc3QgdmFsdWVzID0gQXJyYXkuaXNBcnJheShjdXJyZW50LnZhbHVlKVxuICAgICAgPyBjdXJyZW50LnZhbHVlXG4gICAgICA6IFtTdHJpbmcoY3VycmVudC52YWx1ZSldO1xuICAgIHRoaXMuaGVhZGVyU3RvcmUuc2V0KGtleSwge1xuICAgICAgbmFtZTogY3VycmVudC5uYW1lLFxuICAgICAgdmFsdWU6IHZhbHVlcy5jb25jYXQodmFsdWUpLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGdldEhlYWRlcihuYW1lOiBzdHJpbmcpOiBIZWFkZXJWYWx1ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuaGVhZGVyU3RvcmUuZ2V0KG5hbWUudG9Mb3dlckNhc2UoKSk/LnZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldEhlYWRlcnMoKTogT3V0Z29pbmdIdHRwSGVhZGVycyB7XG4gICAgY29uc3QgaGVhZGVyczogT3V0Z29pbmdIdHRwSGVhZGVycyA9IHt9O1xuICAgIGZvciAoY29uc3QgeyBuYW1lLCB2YWx1ZSB9IG9mIHRoaXMuaGVhZGVyU3RvcmUudmFsdWVzKCkpIHtcbiAgICAgIGhlYWRlcnNbbmFtZS50b0xvd2VyQ2FzZSgpXSA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gaGVhZGVycztcbiAgfVxuXG4gIHB1YmxpYyBnZXRIZWFkZXJOYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLmhlYWRlclN0b3JlLmtleXMoKV07XG4gIH1cblxuICBwdWJsaWMgaGFzSGVhZGVyKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhlYWRlclN0b3JlLmhhcyhuYW1lLnRvTG93ZXJDYXNlKCkpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUhlYWRlcihuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmhlYWRlclN0b3JlLmRlbGV0ZShuYW1lLnRvTG93ZXJDYXNlKCkpO1xuICB9XG5cbiAgcHVibGljIHdyaXRlSGVhZChcbiAgICBzdGF0dXNDb2RlOiBudW1iZXIsXG4gICAgc3RhdHVzTWVzc2FnZU9ySGVhZGVycz86IHN0cmluZyB8IE91dGdvaW5nSHR0cEhlYWRlcnMgfCBIZWFkZXJWYWx1ZVtdLFxuICAgIG1heWJlSGVhZGVycz86IE91dGdvaW5nSHR0cEhlYWRlcnMgfCBIZWFkZXJWYWx1ZVtdLFxuICApOiB0aGlzIHtcbiAgICB0aGlzLnN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlO1xuICAgIGxldCBoZWFkZXJzID0gbWF5YmVIZWFkZXJzO1xuICAgIGlmICh0eXBlb2Ygc3RhdHVzTWVzc2FnZU9ySGVhZGVycyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgdGhpcy5zdGF0dXNNZXNzYWdlID0gc3RhdHVzTWVzc2FnZU9ySGVhZGVycztcbiAgICB9IGVsc2UgaWYgKHN0YXR1c01lc3NhZ2VPckhlYWRlcnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaGVhZGVycyA9IHN0YXR1c01lc3NhZ2VPckhlYWRlcnM7XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaGVhZGVycykpIHtcbiAgICAgIC8vIE5vZGUncyBmbGF0IGV2ZW4vb2RkIGBbbmFtZSwgdmFsdWUsIG5hbWUsIHZhbHVlXWAgZm9ybSwgd2hlcmUgYSBuYW1lXG4gICAgICAvLyBtYXkgcmVwZWF0IChvbmUgYFNldC1Db29raWVgIHBlciBjb29raWUpLCBzbywgYXMgTm9kZSBkb2VzLCBlYWNoIG5hbWVcbiAgICAgIC8vIHJlcGxhY2VzIHdoYXQgd2FzIHNldCBiZWZvcmUgYnV0IGl0cyB2YWx1ZXMgYWRkIHVwLiBUdXBsZXMgYXJlXG4gICAgICAvLyBmbGF0dGVuZWQgaW50byB0aGUgc2FtZSBmb3JtLlxuICAgICAgY29uc3QgZmxhdCA9IEFycmF5LmlzQXJyYXkoaGVhZGVyc1swXSkgPyBoZWFkZXJzLmZsYXQoKSA6IGhlYWRlcnM7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZsYXQubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVIZWFkZXIoU3RyaW5nKGZsYXRbaV0pKTtcbiAgICAgIH1cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmxhdC5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGZsYXRbaSArIDFdIGFzIEhlYWRlclZhbHVlO1xuICAgICAgICB0aGlzLmFwcGVuZEhlYWRlcihcbiAgICAgICAgICBTdHJpbmcoZmxhdFtpXSksXG4gICAgICAgICAgdHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiID8gU3RyaW5nKHZhbHVlKSA6IHZhbHVlLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaGVhZGVycykge1xuICAgICAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGhlYWRlcnMpKSB7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5zZXRIZWFkZXIobmFtZSwgdmFsdWUgYXMgSGVhZGVyVmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5mbHVzaEhlYWRlcnMoKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBGcmVlemVzIHN0YXR1cyArIGhlYWRlcnMgYW5kIGVtaXRzIHRoZW0gYXMgdGhlIGBcImhlYWRcImAgZXZlbnQuIENhbGxlZFxuICAgKiBleHBsaWNpdGx5IGJ5IE5leHQuanMgYmVmb3JlIGl0IHN0cmVhbXMsIGFuZCBsYXppbHkgYnkgdGhpcyBjbGFzcyBvbiB0aGVcbiAgICogZmlyc3QgYnl0ZSBvciBvbiBgZW5kKClgIHdoZW4gaXQgaXNuJ3QuXG4gICAqL1xuICBwdWJsaWMgZmx1c2hIZWFkZXJzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhlYWRlcnNTZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaGVhZGVyc1NlbnQgPSB0cnVlO1xuICAgIHRoaXMuZW1pdChcImhlYWRcIiwgdGhpcy5idWlsZEhlYWQoKSk7XG4gIH1cblxuICAvKiogRGVwcmVjYXRlZCBvbiBgU2VydmVyUmVzcG9uc2VgLCBidXQgYE5vZGVOZXh0UmVzcG9uc2Uuc2VudGAgcmVhZHMgaXQuICovXG4gIHB1YmxpYyBnZXQgZmluaXNoZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMud3JpdGFibGVFbmRlZDtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRIZWFkKCk6IFJlc3BvbnNlSGVhZCB7XG4gICAgY29uc3QgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgIGxldCBjb29raWVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgeyBuYW1lLCB2YWx1ZSB9IG9mIHRoaXMuaGVhZGVyU3RvcmUudmFsdWVzKCkpIHtcbiAgICAgIGNvbnN0IGtleSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChrZXkgPT09IFwic2V0LWNvb2tpZVwiKSB7XG4gICAgICAgIGNvb2tpZXMgPSBzZXRDb29raWVMaXN0KHZhbHVlKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgaWYgKGtleSA9PT0gXCJsb2NhdGlvblwiKSB7XG4gICAgICAgICAgLy8gTmV4dC5qcyBzZW5kcyBhbiBhcnJheSBgTG9jYXRpb25gIHdoZW4gYSBjYWNoZUhhbmRsZXIgYGdldGAgcmV0dXJuc1xuICAgICAgICAgIC8vIG51bGwgZm9yIGEgcGFnZSB0aGF0IGNhbGxzIGByZWRpcmVjdCgpYC4gQ29tbWEtam9pbmluZyBwcm9kdWNlcyBhXG4gICAgICAgICAgLy8gVVJMIHRoYXQgcmVzb2x2ZXMgdG8gbm90aGluZywgc28gdGFrZSB0aGUgbGFzdCB3cml0ZS5cbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgW2Nkay1uZXh0anNdIE5leHQuanMgc2V0ICR7dmFsdWUubGVuZ3RofSBMb2NhdGlvbiBoZWFkZXJzIGAgK1xuICAgICAgICAgICAgICBgKCR7dmFsdWUuam9pbihcIiB8IFwiKX0pOyB1c2luZyB0aGUgbGFzdCBvbmUuYCxcbiAgICAgICAgICApO1xuICAgICAgICAgIGhlYWRlcnNba2V5XSA9IFN0cmluZyh2YWx1ZVt2YWx1ZS5sZW5ndGggLSAxXSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaGVhZGVyc1trZXldID0gdmFsdWUuam9pbihcIiwgXCIpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGhlYWRlcnNba2V5XSA9IFN0cmluZyh2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBzdGF0dXNDb2RlOiB0aGlzLnN0YXR1c0NvZGUsXG4gICAgICBzdGF0dXNNZXNzYWdlOiB0aGlzLnN0YXR1c01lc3NhZ2UgPz8gU1RBVFVTX0NPREVTW3RoaXMuc3RhdHVzQ29kZV0sXG4gICAgICBoZWFkZXJzLFxuICAgICAgY29va2llcyxcbiAgICB9O1xuICB9XG5cbiAgLy8gLS0tIHN0cmVhbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBwdWJsaWMgb3ZlcnJpZGUgX3RyYW5zZm9ybShcbiAgICBjaHVuazogdW5rbm93bixcbiAgICBfZW5jb2Rpbmc6IEJ1ZmZlckVuY29kaW5nLFxuICAgIGNhbGxiYWNrOiBUcmFuc2Zvcm1DYWxsYmFjayxcbiAgKTogdm9pZCB7XG4gICAgLy8gTGF6aWx5LCBiZWNhdXNlIE5leHQuanMgb25seSBjYWxscyBgZmx1c2hIZWFkZXJzKClgIG9uIHRoZSBwYXRocyB0aGF0XG4gICAgLy8gc3RyZWFtLiBgc2VuZFBheWxvYWRgIGp1c3Qgd3JpdGVzIGFuZCBlbmRzLlxuICAgIHRoaXMuZmx1c2hIZWFkZXJzKCk7XG4gICAgY2FsbGJhY2sobnVsbCwgY2h1bmspO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIF9mbHVzaChjYWxsYmFjazogVHJhbnNmb3JtQ2FsbGJhY2spOiB2b2lkIHtcbiAgICAvLyBBbiBlbXB0eSBib2R5IHN0aWxsIG5lZWRzIGEgc3RhdHVzIGxpbmUuXG4gICAgdGhpcy5mbHVzaEhlYWRlcnMoKTtcbiAgICBjYWxsYmFjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoYXQgdGhlIGBjb21wcmVzc2lvbmAgbWlkZGxld2FyZSBhZGRzIHVuZGVyIGBuZXh0IHN0YXJ0YCwga2VwdCBmb3IgYXBwXG4gICAqIGNvZGUgdGhhdCBjYWxscyBpdCwgc3VjaCBhcyBgcmVzLndyaXRlKGV2ZW50KTsgcmVzLmZsdXNoKClgIGluIGEgUGFnZXMgQVBJXG4gICAqIHJvdXRlLiBBIG5vLW9wOiB0aGUgc2luaydzIGd6aXAgc3RhZ2UgYWxyZWFkeSBzeW5jLWZsdXNoZXMgZXZlcnkgY2h1bmsuXG4gICAqL1xuICBwdWJsaWMgZmx1c2goKTogdm9pZCB7fVxuXG4gIC8vIC0tLSB0aGUgcmVzdCBvZiB0aGUgU2VydmVyUmVzcG9uc2Ugc3VyZmFjZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgcHVibGljIGFkZFRyYWlsZXJzKCk6IG5ldmVyIHtcbiAgICByZXR1cm4gdW5zdXBwb3J0ZWQoXCJhZGRUcmFpbGVyc1wiKTtcbiAgfVxuICBwdWJsaWMgYXNzaWduU29ja2V0KCk6IG5ldmVyIHtcbiAgICByZXR1cm4gdW5zdXBwb3J0ZWQoXCJhc3NpZ25Tb2NrZXRcIik7XG4gIH1cbiAgcHVibGljIGRldGFjaFNvY2tldCgpOiBuZXZlciB7XG4gICAgcmV0dXJuIHVuc3VwcG9ydGVkKFwiZGV0YWNoU29ja2V0XCIpO1xuICB9XG4gIHB1YmxpYyB3cml0ZUNvbnRpbnVlKCk6IG5ldmVyIHtcbiAgICByZXR1cm4gdW5zdXBwb3J0ZWQoXCJ3cml0ZUNvbnRpbnVlXCIpO1xuICB9XG4gIHB1YmxpYyB3cml0ZUVhcmx5SGludHMoKTogbmV2ZXIge1xuICAgIHJldHVybiB1bnN1cHBvcnRlZChcIndyaXRlRWFybHlIaW50c1wiKTtcbiAgfVxuICBwdWJsaWMgd3JpdGVQcm9jZXNzaW5nKCk6IG5ldmVyIHtcbiAgICByZXR1cm4gdW5zdXBwb3J0ZWQoXCJ3cml0ZVByb2Nlc3NpbmdcIik7XG4gIH1cbn1cblxuLyoqXG4gKiBgU2hpbVNlcnZlclJlc3BvbnNlYCBpcyBzdHJ1Y3R1cmFsbHkgYSBgU2VydmVyUmVzcG9uc2VgIGZvciBldmVyeXRoaW5nIE5leHQuanNcbiAqIHRvdWNoZXMsIGJ1dCBub3Qgbm9taW5hbGx5IG9uZSAobm8gc29ja2V0LCBubyB0cmFpbGVycykuIFRoZSBlbnRyeXBvaW50XG4gKiBzaWduYXR1cmUgd2FudHMgdGhlIHJlYWwgdHlwZSwgc28gdGhlIGNhc3QgaXMgY2VudHJhbGl6ZWQgaGVyZSB3aXRoIHRoZVxuICogcmVhc29uaW5nIGF0dGFjaGVkIHJhdGhlciB0aGFuIHJlcGVhdGVkIGF0IGVhY2ggY2FsbCBzaXRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNTZXJ2ZXJSZXNwb25zZShyZXM6IFNoaW1TZXJ2ZXJSZXNwb25zZSk6IFNlcnZlclJlc3BvbnNlIHtcbiAgcmV0dXJuIHJlcyBhcyB1bmtub3duIGFzIFNlcnZlclJlc3BvbnNlO1xufVxuIl19
@@ -64,6 +64,16 @@ describe("ShimServerResponse head", () => {
64
64
  await finished(res);
65
65
  expect(res.finished).toBe(true);
66
66
  });
67
+ it("accepts res.flush() at any point, as `compression` does under next start", async () => {
68
+ const res = new response_1.ShimServerResponse();
69
+ const out = collect(res);
70
+ res.flush();
71
+ res.write("data: 1\n\n");
72
+ res.flush();
73
+ res.end();
74
+ await finished(res);
75
+ expect(out.body()).toBe("data: 1\n\n");
76
+ });
67
77
  });
68
78
  describe("ShimServerResponse headers", () => {
69
79
  it("keeps set-cookie out of the flat map", () => {
@@ -175,4 +185,4 @@ describe("unsupported ServerResponse methods", () => {
175
185
  expect(() => res[method]()).toThrow(`res.${method}()`);
176
186
  });
177
187
  });
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ydW50aW1lL2h0dHAvcmVzcG9uc2UudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlDQUE2RTtBQUU3RSxpRUFBaUU7QUFDakUsU0FBUyxPQUFPLENBQUMsR0FBdUI7SUFJdEMsSUFBSSxJQUE4QixDQUFDO0lBQ25DLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztJQUM1QixHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQW1CLEVBQUUsRUFBRTtRQUN2QyxJQUFJLEdBQUcsS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDLENBQUM7SUFDSCxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3RELE9BQU87UUFDTCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSTtRQUNoQixJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO0tBQ3BELENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsR0FBdUI7SUFDdkMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN6QixHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMxQixHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDZixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxRQUFRLENBQUMseUJBQXlCLEVBQUUsR0FBRyxFQUFFO0lBQ3ZDLEVBQUUsQ0FBQyx1REFB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Q0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRCxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbkIsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxRQUFRLENBQUMsb0NBQW9DLEVBQUUsR0FBRyxFQUFFO0lBQ2xELEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxhQUFhLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQzFFLGdDQUFnQyxFQUNoQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ1QsTUFBTSxHQUFHLEdBQUcsSUFBSSw2QkFBa0IsRUFHakMsQ0FBQztRQUNGLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLE1BQU0sSUFBSSxDQUFDLENBQUM7SUFDekQsQ0FBQyxDQUNGLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc3BvbnNlSGVhZCwgU2hpbVNlcnZlclJlc3BvbnNlLCBzZXRDb29raWVMaXN0IH0gZnJvbSBcIi4vcmVzcG9uc2VcIjtcblxuLyoqIENvbGxlY3RzIHRoZSBoZWFkIGFuZCB0aGUgYm9keSBieXRlcyB0aGUgd2F5IGEgc2luayB3b3VsZC4gKi9cbmZ1bmN0aW9uIGNvbGxlY3QocmVzOiBTaGltU2VydmVyUmVzcG9uc2UpOiB7XG4gIGhlYWQ6ICgpID0+IFJlc3BvbnNlSGVhZCB8IHVuZGVmaW5lZDtcbiAgYm9keTogKCkgPT4gc3RyaW5nO1xufSB7XG4gIGxldCBoZWFkOiBSZXNwb25zZUhlYWQgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IGNodW5rczogQnVmZmVyW10gPSBbXTtcbiAgcmVzLm9uY2UoXCJoZWFkXCIsICh2YWx1ZTogUmVzcG9uc2VIZWFkKSA9PiB7XG4gICAgaGVhZCA9IHZhbHVlO1xuICB9KTtcbiAgcmVzLm9uKFwiZGF0YVwiLCAoY2h1bms6IEJ1ZmZlcikgPT4gY2h1bmtzLnB1c2goY2h1bmspKTtcbiAgcmV0dXJuIHtcbiAgICBoZWFkOiAoKSA9PiBoZWFkLFxuICAgIGJvZHk6ICgpID0+IEJ1ZmZlci5jb25jYXQoY2h1bmtzKS50b1N0cmluZyhcInV0Zi04XCIpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBmaW5pc2hlZChyZXM6IFNoaW1TZXJ2ZXJSZXNwb25zZSk6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHJlcy5vbmNlKFwiZW5kXCIsIHJlc29sdmUpO1xuICAgIHJlcy5vbmNlKFwiZXJyb3JcIiwgcmVqZWN0KTtcbiAgICByZXMucmVzdW1lKCk7XG4gIH0pO1xufVxuXG5kZXNjcmliZShcIlNoaW1TZXJ2ZXJSZXNwb25zZSBoZWFkXCIsICgpID0+IHtcbiAgaXQoXCJlbWl0cyBzdGF0dXMgYW5kIGhlYWRlcnMgb25jZSwgb24gdGhlIGZpcnN0IGJvZHkgYnl0ZVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzID0gbmV3IFNoaW1TZXJ2ZXJSZXNwb25zZSgpO1xuICAgIGNvbnN0IHNpbmsgPSBjb2xsZWN0KHJlcyk7XG4gICAgcmVzLnNldEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBcInRleHQvaHRtbFwiKTtcbiAgICBleHBlY3Qoc2luay5oZWFkKCkpLnRvQmVVbmRlZmluZWQoKTtcblxuICAgIHJlcy53cml0ZShcIjxwPmhpPC9wPlwiKTtcbiAgICBleHBlY3Qoc2luay5oZWFkKCkpLnRvRXF1YWwoe1xuICAgICAgc3RhdHVzQ29kZTogMjAwLFxuICAgICAgc3RhdHVzTWVzc2FnZTogXCJPS1wiLFxuICAgICAgaGVhZGVyczogeyBcImNvbnRlbnQtdHlwZVwiOiBcInRleHQvaHRtbFwiIH0sXG4gICAgICBjb29raWVzOiBbXSxcbiAgICB9KTtcbiAgICByZXMuZW5kKCk7XG4gICAgYXdhaXQgZmluaXNoZWQocmVzKTtcbiAgICBleHBlY3Qoc2luay5ib2R5KCkpLnRvQmUoXCI8cD5oaTwvcD5cIik7XG4gIH0pO1xuXG4gIGl0KFwic3RpbGwgZW1pdHMgYSBoZWFkIGZvciBhbiBlbXB0eSBib2R5XCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCByZXMgPSBuZXcgU2hpbVNlcnZlclJlc3BvbnNlKCk7XG4gICAgY29uc3Qgc2luayA9IGNvbGxlY3QocmVzKTtcbiAgICByZXMuc3RhdHVzQ29kZSA9IDIwNDtcbiAgICByZXMuZW5kKCk7XG4gICAgYXdhaXQgZmluaXNoZWQocmVzKTtcbiAgICBleHBlY3Qoc2luay5oZWFkKCk/LnN0YXR1c0NvZGUpLnRvQmUoMjA0KTtcbiAgfSk7XG5cbiAgaXQoXCJpcyBpZGVtcG90ZW50LCBzbyBhbiBleHBsaWNpdCBmbHVzaEhlYWRlcnMoKSBwbHVzIGEgd3JpdGUgZW1pdHMgb25jZVwiLCAoKSA9PiB7XG4gICAgY29uc3QgcmVzID0gbmV3IFNoaW1TZXJ2ZXJSZXNwb25zZSgpO1xuICAgIGNvbnN0IGhlYWRzOiBSZXNwb25zZUhlYWRbXSA9IFtdO1xuICAgIHJlcy5vbihcImhlYWRcIiwgKGhlYWQ6IFJlc3BvbnNlSGVhZCkgPT4gaGVhZHMucHVzaChoZWFkKSk7XG4gICAgcmVzLmZsdXNoSGVhZGVycygpO1xuICAgIHJlcy53cml0ZShcImFcIik7XG4gICAgcmVzLmZsdXNoSGVhZGVycygpO1xuICAgIGV4cGVjdChoZWFkcykudG9IYXZlTGVuZ3RoKDEpO1xuICAgIGV4cGVjdChyZXMuaGVhZGVyc1NlbnQpLnRvQmUodHJ1ZSk7XG4gIH0pO1xuXG4gIGl0KFwicmVwb3J0cyBgZmluaXNoZWRgIG9uY2UgZW5kZWQsIHdoaWNoIE5vZGVOZXh0UmVzcG9uc2Uuc2VudCByZWFkc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzID0gbmV3IFNoaW1TZXJ2ZXJSZXNwb25zZSgpO1xuICAgIGNvbGxlY3QocmVzKTtcbiAgICBleHBlY3QocmVzLmZpbmlzaGVkKS50b0JlKGZhbHNlKTtcbiAgICByZXMuZW5kKFwieFwiKTtcbiAgICBhd2FpdCBmaW5pc2hlZChyZXMpO1xuICAgIGV4cGVjdChyZXMuZmluaXNoZWQpLnRvQmUodHJ1ZSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKFwiU2hpbVNlcnZlclJlc3BvbnNlIGhlYWRlcnNcIiwgKCkgPT4ge1xuICBpdChcImtlZXBzIHNldC1jb29raWUgb3V0IG9mIHRoZSBmbGF0IG1hcFwiLCAoKSA9PiB7XG4gICAgY29uc3QgcmVzID0gbmV3IFNoaW1TZXJ2ZXJSZXNwb25zZSgpO1xuICAgIGNvbnN0IHNpbmsgPSBjb2xsZWN0KHJlcyk7XG4gICAgcmVzLmFwcGVuZEhlYWRlcihcIlNldC1Db29raWVcIiwgXCJhPTE7IFBhdGg9L1wiKTtcbiAgICByZXMuYXBwZW5kSGVhZGVyKFwiU2V0LUNvb2tpZVwiLCBcImI9MjsgUGF0aD0vXCIpO1xuICAgIHJlcy5zZXRIZWFkZXIoXCJYLU90aGVyXCIsIFwia2VlcFwiKTtcbiAgICByZXMuZmx1c2hIZWFkZXJzKCk7XG4gICAgZXhwZWN0KHNpbmsuaGVhZCgpPy5jb29raWVzKS50b0VxdWFsKFtcImE9MTsgUGF0aD0vXCIsIFwiYj0yOyBQYXRoPS9cIl0pO1xuICAgIGV4cGVjdChzaW5rLmhlYWQoKT8uaGVhZGVycykudG9FcXVhbCh7IFwieC1vdGhlclwiOiBcImtlZXBcIiB9KTtcbiAgfSk7XG5cbiAgaXQoXCJqb2lucyBvdGhlciByZXBlYXRlZCBoZWFkZXJzIHdpdGggYSBjb21tYVwiLCAoKSA9PiB7XG4gICAgY29uc3QgcmVzID0gbmV3IFNoaW1TZXJ2ZXJSZXNwb25zZSgpO1xuICAgIGNvbnN0IHNpbmsgPSBjb2xsZWN0KHJlcyk7XG4gICAgcmVzLnNldEhlYWRlcihcIlZhcnlcIiwgW1wiQWNjZXB0XCIsIFwiQ29va2llXCJdKTtcbiAgICByZXMuZmx1c2hIZWFkZXJzKCk7XG4gICAgZXhwZWN0KHNpbmsuaGVhZCgpPy5oZWFkZXJzLnZhcnkpLnRvQmUoXCJBY2NlcHQsIENvb2tpZVwiKTtcbiAgfSk7XG5cbiAgaXQoXCJ0YWtlcyB0aGUgbGFzdCBvZiBtdWx0aXBsZSBMb2NhdGlvbiB2YWx1ZXMgYW5kIHdhcm5zXCIsICgpID0+IHtcbiAgICBjb25zdCByZXMgPSBuZXcgU2hpbVNlcnZlclJlc3BvbnNlKCk7XG4gICAgY29uc3Qgc2luayA9IGNvbGxlY3QocmVzKTtcbiAgICBjb25zdCB3YXJuID0gamVzdC5zcHlPbihjb25zb2xlLCBcIndhcm5cIikubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHt9KTtcbiAgICByZXMuc2V0SGVhZGVyKFwiTG9jYXRpb25cIiwgW1wiL2ZpcnN0XCIsIFwiL3NlY29uZFwiXSk7XG4gICAgcmVzLmZsdXNoSGVhZGVycygpO1xuICAgIC8vIENvbW1hLWpvaW5pbmcgd291bGQgcHJvZHVjZSBhIFVSTCB0aGF0IHJlc29sdmVzIHRvIG5vdGhpbmcuXG4gICAgZXhwZWN0KHNpbmsuaGVhZCgpPy5oZWFkZXJzLmxvY2F0aW9uKS50b0JlKFwiL3NlY29uZFwiKTtcbiAgICBleHBlY3Qod2FybikudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIHdhcm4ubW9ja1Jlc3RvcmUoKTtcbiAgfSk7XG5cbiAgaXQoXCJpcyBjYXNlLWluc2Vuc2l0aXZlIGFuZCBzdXBwb3J0cyB0aGUgcmVzdCBvZiB0aGUgaGVhZGVyIEFQSVwiLCAoKSA9PiB7XG4gICAgY29uc3QgcmVzID0gbmV3IFNoaW1TZXJ2ZXJSZXNwb25zZSgpO1xuICAgIHJlcy5zZXRIZWFkZXIoXCJYLUFcIiwgXCIxXCIpO1xuICAgIGV4cGVjdChyZXMuZ2V0SGVhZGVyKFwieC1hXCIpKS50b0JlKFwiMVwiKTtcbiAgICBleHBlY3QocmVzLmhhc0hlYWRlcihcIlgtQVwiKSkudG9CZSh0cnVlKTtcbiAgICBleHBlY3QocmVzLmdldEhlYWRlck5hbWVzKCkpLnRvRXF1YWwoW1wieC1hXCJdKTtcbiAgICBleHBlY3QocmVzLmdldEhlYWRlcnMoKSkudG9FcXVhbCh7IFwieC1hXCI6IFwiMVwiIH0pO1xuICAgIHJlcy5yZW1vdmVIZWFkZXIoXCJYLUFcIik7XG4gICAgZXhwZWN0KHJlcy5oYXNIZWFkZXIoXCJ4LWFcIikpLnRvQmUoZmFsc2UpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcIlNoaW1TZXJ2ZXJSZXNwb25zZS53cml0ZUhlYWRcIiwgKCkgPT4ge1xuICBpdChcImFjY2VwdHMgYSBzdGF0dXMgbWVzc2FnZSBwbHVzIGEgaGVhZGVyIG9iamVjdFwiLCAoKSA9PiB7XG4gICAgY29uc3QgcmVzID0gbmV3IFNoaW1TZXJ2ZXJSZXNwb25zZSgpO1xuICAgIGNvbnN0IHNpbmsgPSBjb2xsZWN0KHJlcyk7XG4gICAgcmVzLndyaXRlSGVhZCgzMDEsIFwiTW92ZWRcIiwgeyBMb2NhdGlvbjogXCIvdGhlcmVcIiB9KTtcbiAgICBleHBlY3Qoc2luay5oZWFkKCkpLnRvRXF1YWwoe1xuICAgICAgc3RhdHVzQ29kZTogMzAxLFxuICAgICAgc3RhdHVzTWVzc2FnZTogXCJNb3ZlZFwiLFxuICAgICAgaGVhZGVyczogeyBsb2NhdGlvbjogXCIvdGhlcmVcIiB9LFxuICAgICAgY29va2llczogW10sXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwia2VlcHMgZXZlcnkgdmFsdWUgb2YgYSBuYW1lIHRoZSBmbGF0IGFycmF5IGZvcm0gcmVwZWF0c1wiLCAoKSA9PiB7XG4gICAgY29uc3QgcmVzID0gbmV3IFNoaW1TZXJ2ZXJSZXNwb25zZSgpO1xuICAgIGNvbnN0IHNpbmsgPSBjb2xsZWN0KHJlcyk7XG4gICAgcmVzLnNldEhlYWRlcihcIlNldC1Db29raWVcIiwgXCJzdGFsZT0xXCIpO1xuICAgIHJlcy5zZXRIZWFkZXIoXCJYLUFcIiwgXCJzdGFsZVwiKTtcbiAgICByZXMud3JpdGVIZWFkKDIwMCwgW1wiU2V0LUNvb2tpZVwiLCBcImE9MVwiLCBcIlNldC1Db29raWVcIiwgXCJiPTJcIiwgXCJYLUFcIiwgXCIxXCJdKTtcbiAgICBleHBlY3Qoc2luay5oZWFkKCk/LmNvb2tpZXMpLnRvRXF1YWwoW1wiYT0xXCIsIFwiYj0yXCJdKTtcbiAgICBleHBlY3Qoc2luay5oZWFkKCk/LmhlYWRlcnNbXCJ4LWFcIl0pLnRvQmUoXCIxXCIpO1xuICB9KTtcblxuICBpdChcImFjY2VwdHMgdGhlIGZsYXQgZXZlbi9vZGQgYXJyYXkgZm9ybVwiLCAoKSA9PiB7XG4gICAgY29uc3QgcmVzID0gbmV3IFNoaW1TZXJ2ZXJSZXNwb25zZSgpO1xuICAgIGNvbnN0IHNpbmsgPSBjb2xsZWN0KHJlcyk7XG4gICAgcmVzLndyaXRlSGVhZCgyMDAsIFtcIkNvbnRlbnQtVHlwZVwiLCBcInRleHQvcGxhaW5cIiwgXCJYLUJcIiwgXCIyXCJdKTtcbiAgICBleHBlY3Qoc2luay5oZWFkKCk/LmhlYWRlcnMpLnRvRXF1YWwoe1xuICAgICAgXCJjb250ZW50LXR5cGVcIjogXCJ0ZXh0L3BsYWluXCIsXG4gICAgICBcIngtYlwiOiBcIjJcIixcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoXCJhY2NlcHRzIHRoZSB0dXBsZSBhcnJheSBmb3JtXCIsICgpID0+IHtcbiAgICBjb25zdCByZXMgPSBuZXcgU2hpbVNlcnZlclJlc3BvbnNlKCk7XG4gICAgY29uc3Qgc2luayA9IGNvbGxlY3QocmVzKTtcbiAgICByZXMud3JpdGVIZWFkKDIwMCwgW1xuICAgICAgW1wiQ29udGVudC1UeXBlXCIsIFwidGV4dC9wbGFpblwiXSxcbiAgICAgIFtcIlgtQlwiLCBcIjJcIl0sXG4gICAgXSBhcyB1bmtub3duIGFzIHN0cmluZ1tdW10pO1xuICAgIGV4cGVjdChzaW5rLmhlYWQoKT8uaGVhZGVycykudG9FcXVhbCh7XG4gICAgICBcImNvbnRlbnQtdHlwZVwiOiBcInRleHQvcGxhaW5cIixcbiAgICAgIFwieC1iXCI6IFwiMlwiLFxuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcInNldENvb2tpZUxpc3RcIiwgKCkgPT4ge1xuICBpdC5lYWNoKFtcbiAgICBcInRva2VuPXg7IGV4cGlyZXM9V2VkLCAyMSBPY3QgMjAyNiAwNzoyODowMCBHTVQ7IFBhdGg9L1wiLFxuICAgIFwidG9rZW49eDsgRXhwaXJlcz1XZWRuZXNkYXksIDIxLU9jdC0yNiAwNzoyODowMCBHTVQ7IFBhdGg9L1wiLFxuICAgIFwiYT0xOyBFeHBpcmVzPVRodSwgMDEgSmFuIDIwMjYgMDA6MDA6MDAgR01UXCIsXG4gIF0pKFwia2VlcHMgYSBzaW5nbGUgY29va2llIHdob2xlOiAlc1wiLCAoY29va2llKSA9PiB7XG4gICAgZXhwZWN0KHNldENvb2tpZUxpc3QoY29va2llKSkudG9FcXVhbChbY29va2llXSk7XG4gIH0pO1xuXG4gIGl0KFwidHJlYXRzIGVhY2ggYXJyYXkgZW50cnkgYXMgb25lIGNvb2tpZSBhbmQgZHJvcHMgZW1wdGllc1wiLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgc2V0Q29va2llTGlzdChbXCJhPTE7IGV4cGlyZXM9V2VkLCAyMSBPY3QgMjAyNiAwNzoyODowMCBHTVRcIiwgXCJiPTJcIiwgXCJcIl0pLFxuICAgICkudG9FcXVhbChbXCJhPTE7IGV4cGlyZXM9V2VkLCAyMSBPY3QgMjAyNiAwNzoyODowMCBHTVRcIiwgXCJiPTJcIl0pO1xuICB9KTtcblxuICBpdChcImVtaXRzIGEgbG93ZXJjYXNlLWV4cGlyZXMgY29va2llIGFzIG9uZSBTZXQtQ29va2llIGxpbmVcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJlcyA9IG5ldyBTaGltU2VydmVyUmVzcG9uc2UoKTtcbiAgICBjb25zdCBjb29raWUgPSBcInRva2VuPXg7IGV4cGlyZXM9V2VkLCAyMSBPY3QgMjAyNiAwNzoyODowMCBHTVQ7IFBhdGg9L1wiO1xuICAgIHJlcy5zZXRIZWFkZXIoXCJTZXQtQ29va2llXCIsIGNvb2tpZSk7XG4gICAgbGV0IGhlYWQ6IFJlc3BvbnNlSGVhZCB8IHVuZGVmaW5lZDtcbiAgICByZXMub24oXCJoZWFkXCIsIChoOiBSZXNwb25zZUhlYWQpID0+IChoZWFkID0gaCkpO1xuICAgIHJlcy5mbHVzaEhlYWRlcnMoKTtcbiAgICBleHBlY3QoaGVhZD8uY29va2llcykudG9FcXVhbChbY29va2llXSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKFwidW5zdXBwb3J0ZWQgU2VydmVyUmVzcG9uc2UgbWV0aG9kc1wiLCAoKSA9PiB7XG4gIGl0LmVhY2goW1wiYWRkVHJhaWxlcnNcIiwgXCJhc3NpZ25Tb2NrZXRcIiwgXCJ3cml0ZUNvbnRpbnVlXCIsIFwid3JpdGVFYXJseUhpbnRzXCJdKShcbiAgICBcInRocm93cyBhIG5hbWVkIGVycm9yIGZyb20gJXMoKVwiLFxuICAgIChtZXRob2QpID0+IHtcbiAgICAgIGNvbnN0IHJlcyA9IG5ldyBTaGltU2VydmVyUmVzcG9uc2UoKSBhcyB1bmtub3duIGFzIFJlY29yZDxcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICAoKSA9PiB2b2lkXG4gICAgICA+O1xuICAgICAgZXhwZWN0KCgpID0+IHJlc1ttZXRob2RdKCkpLnRvVGhyb3coYHJlcy4ke21ldGhvZH0oKWApO1xuICAgIH0sXG4gICk7XG59KTtcbiJdfQ==
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ydW50aW1lL2h0dHAvcmVzcG9uc2UudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlDQUE2RTtBQUU3RSxpRUFBaUU7QUFDakUsU0FBUyxPQUFPLENBQUMsR0FBdUI7SUFJdEMsSUFBSSxJQUE4QixDQUFDO0lBQ25DLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztJQUM1QixHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQW1CLEVBQUUsRUFBRTtRQUN2QyxJQUFJLEdBQUcsS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDLENBQUM7SUFDSCxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3RELE9BQU87UUFDTCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSTtRQUNoQixJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO0tBQ3BELENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsR0FBdUI7SUFDdkMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN6QixHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMxQixHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDZixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxRQUFRLENBQUMseUJBQXlCLEVBQUUsR0FBRyxFQUFFO0lBQ3ZDLEVBQUUsQ0FBQyx1REFBdUQsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNyRSxNQUFNLEdBQUcsR0FBRyxJQUFJLDZCQUFrQixFQUFFLENBQUM7UUFDckMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUVwQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDMUIsVUFBVSxFQUFFLEdBQUc7WUFDZixhQUFhLEVBQUUsSUFBSTtZQUNuQixPQUFPLEVBQUUsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFO1lBQ3hDLE9BQU8sRUFBRSxFQUFFO1NBQ1osQ0FBQyxDQUFDO1FBQ0gsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1YsTUFBTSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN4QyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxzQ0FBc0MsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNwRCxNQUFNLEdBQUcsR0FBRyxJQUFJLDZCQUFrQixFQUFFLENBQUM7UUFDckMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLEdBQUcsQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO1FBQ3JCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNWLE1BQU0sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHNFQUFzRSxFQUFFLEdBQUcsRUFBRTtRQUM5RSxNQUFNLEdBQUcsR0FBRyxJQUFJLDZCQUFrQixFQUFFLENBQUM7UUFDckMsTUFBTSxLQUFLLEdBQW1CLEVBQUUsQ0FBQztRQUNqQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQWtCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN6RCxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbkIsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNmLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNuQixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGtFQUFrRSxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2hGLE1BQU0sR0FBRyxHQUFHLElBQUksNkJBQWtCLEVBQUUsQ0FBQztRQUNyQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDYixNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsTUFBTSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsMEVBQTBFLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDeEYsTUFBTSxHQUFHLEdBQUcsSUFBSSw2QkFBa0IsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWixHQUFHLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNaLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNWLE1BQU0sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDekMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyw0QkFBNEIsRUFBRSxHQUFHLEVBQUU7SUFDMUMsRUFBRSxDQUFDLHNDQUFzQyxFQUFFLEdBQUcsRUFBRTtRQUM5QyxNQUFNLEdBQUcsR0FBRyxJQUFJLDZCQUFrQixFQUFFLENBQUM7UUFDckMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLEdBQUcsQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzlDLEdBQUcsQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzlDLEdBQUcsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsMkNBQTJDLEVBQUUsR0FBRyxFQUFFO1FBQ25ELE1BQU0sR0FBRyxHQUFHLElBQUksNkJBQWtCLEVBQUUsQ0FBQztRQUNyQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM1QyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbkIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDM0QsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsc0RBQXNELEVBQUUsR0FBRyxFQUFFO1FBQzlELE1BQU0sR0FBRyxHQUFHLElBQUksNkJBQWtCLEVBQUUsQ0FBQztRQUNyQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNqRCxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbkIsOERBQThEO1FBQzlELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0RCxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNkRBQTZELEVBQUUsR0FBRyxFQUFFO1FBQ3JFLE1BQU0sR0FBRyxHQUFHLElBQUksNkJBQWtCLEVBQUUsQ0FBQztRQUNyQyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMxQixNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxNQUFNLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM5QyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDakQsR0FBRyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsUUFBUSxDQUFDLDhCQUE4QixFQUFFLEdBQUcsRUFBRTtJQUM1QyxFQUFFLENBQUMsK0NBQStDLEVBQUUsR0FBRyxFQUFFO1FBQ3ZELE1BQU0sR0FBRyxHQUFHLElBQUksNkJBQWtCLEVBQUUsQ0FBQztRQUNyQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDcEQsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUMxQixVQUFVLEVBQUUsR0FBRztZQUNmLGFBQWEsRUFBRSxPQUFPO1lBQ3RCLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUU7WUFDL0IsT0FBTyxFQUFFLEVBQUU7U0FDWixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyx5REFBeUQsRUFBRSxHQUFHLEVBQUU7UUFDakUsTUFBTSxHQUFHLEdBQUcsSUFBSSw2QkFBa0IsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixHQUFHLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN2QyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM5QixHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMzRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHNDQUFzQyxFQUFFLEdBQUcsRUFBRTtRQUM5QyxNQUFNLEdBQUcsR0FBRyxJQUFJLDZCQUFrQixFQUFFLENBQUM7UUFDckMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUNuQyxjQUFjLEVBQUUsWUFBWTtZQUM1QixLQUFLLEVBQUUsR0FBRztTQUNYLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDhCQUE4QixFQUFFLEdBQUcsRUFBRTtRQUN0QyxNQUFNLEdBQUcsR0FBRyxJQUFJLDZCQUFrQixFQUFFLENBQUM7UUFDckMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2pCLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQztZQUM5QixDQUFDLEtBQUssRUFBRSxHQUFHLENBQUM7U0FDWSxDQUFDLENBQUM7UUFDNUIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDbkMsY0FBYyxFQUFFLFlBQVk7WUFDNUIsS0FBSyxFQUFFLEdBQUc7U0FDWCxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsUUFBUSxDQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUU7SUFDN0IsRUFBRSxDQUFDLElBQUksQ0FBQztRQUNOLHdEQUF3RDtRQUN4RCw0REFBNEQ7UUFDNUQsNENBQTRDO0tBQzdDLENBQUMsQ0FBQyxpQ0FBaUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQy9DLE1BQU0sQ0FBQyxJQUFBLHdCQUFhLEVBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHlEQUF5RCxFQUFFLEdBQUcsRUFBRTtRQUNqRSxNQUFNLENBQ0osSUFBQSx3QkFBYSxFQUFDLENBQUMsNENBQTRDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQ3pFLENBQUMsT0FBTyxDQUFDLENBQUMsNENBQTRDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyx5REFBeUQsRUFBRSxHQUFHLEVBQUU7UUFDakUsTUFBTSxHQUFHLEdBQUcsSUFBSSw2QkFBa0IsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sTUFBTSxHQUFHLHdEQUF3RCxDQUFDO1FBQ3hFLEdBQUcsQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3BDLElBQUksSUFBOEIsQ0FBQztRQUNuQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRCxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbkIsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxRQUFRLENBQUMsb0NBQW9DLEVBQUUsR0FBRyxFQUFFO0lBQ2xELEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxhQUFhLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQzFFLGdDQUFnQyxFQUNoQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ1QsTUFBTSxHQUFHLEdBQUcsSUFBSSw2QkFBa0IsRUFHakMsQ0FBQztRQUNGLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLE1BQU0sSUFBSSxDQUFDLENBQUM7SUFDekQsQ0FBQyxDQUNGLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc3BvbnNlSGVhZCwgU2hpbVNlcnZlclJlc3BvbnNlLCBzZXRDb29raWVMaXN0IH0gZnJvbSBcIi4vcmVzcG9uc2VcIjtcblxuLyoqIENvbGxlY3RzIHRoZSBoZWFkIGFuZCB0aGUgYm9keSBieXRlcyB0aGUgd2F5IGEgc2luayB3b3VsZC4gKi9cbmZ1bmN0aW9uIGNvbGxlY3QocmVzOiBTaGltU2VydmVyUmVzcG9uc2UpOiB7XG4gIGhlYWQ6ICgpID0+IFJlc3BvbnNlSGVhZCB8IHVuZGVmaW5lZDtcbiAgYm9keTogKCkgPT4gc3RyaW5nO1xufSB7XG4gIGxldCBoZWFkOiBSZXNwb25zZUhlYWQgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IGNodW5rczogQnVmZmVyW10gPSBbXTtcbiAgcmVzLm9uY2UoXCJoZWFkXCIsICh2YWx1ZTogUmVzcG9uc2VIZWFkKSA9PiB7XG4gICAgaGVhZCA9IHZhbHVlO1xuICB9KTtcbiAgcmVzLm9uKFwiZGF0YVwiLCAoY2h1bms6IEJ1ZmZlcikgPT4gY2h1bmtzLnB1c2goY2h1bmspKTtcbiAgcmV0dXJuIHtcbiAgICBoZWFkOiAoKSA9PiBoZWFkLFxuICAgIGJvZHk6ICgpID0+IEJ1ZmZlci5jb25jYXQoY2h1bmtzKS50b1N0cmluZyhcInV0Zi04XCIpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBmaW5pc2hlZChyZXM6IFNoaW1TZXJ2ZXJSZXNwb25zZSk6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHJlcy5vbmNlKFwiZW5kXCIsIHJlc29sdmUpO1xuICAgIHJlcy5vbmNlKFwiZXJyb3JcIiwgcmVqZWN0KTtcbiAgICByZXMucmVzdW1lKCk7XG4gIH0pO1xufVxuXG5kZXNjcmliZShcIlNoaW1TZXJ2ZXJSZXNwb25zZSBoZWFkXCIsICgpID0+IHtcbiAgaXQoXCJlbWl0cyBzdGF0dXMgYW5kIGhlYWRlcnMgb25jZSwgb24gdGhlIGZpcnN0IGJvZHkgYnl0ZVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzID0gbmV3IFNoaW1TZXJ2ZXJSZXNwb25zZSgpO1xuICAgIGNvbnN0IHNpbmsgPSBjb2xsZWN0KHJlcyk7XG4gICAgcmVzLnNldEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBcInRleHQvaHRtbFwiKTtcbiAgICBleHBlY3Qoc2luay5oZWFkKCkpLnRvQmVVbmRlZmluZWQoKTtcblxuICAgIHJlcy53cml0ZShcIjxwPmhpPC9wPlwiKTtcbiAgICBleHBlY3Qoc2luay5oZWFkKCkpLnRvRXF1YWwoe1xuICAgICAgc3RhdHVzQ29kZTogMjAwLFxuICAgICAgc3RhdHVzTWVzc2FnZTogXCJPS1wiLFxuICAgICAgaGVhZGVyczogeyBcImNvbnRlbnQtdHlwZVwiOiBcInRleHQvaHRtbFwiIH0sXG4gICAgICBjb29raWVzOiBbXSxcbiAgICB9KTtcbiAgICByZXMuZW5kKCk7XG4gICAgYXdhaXQgZmluaXNoZWQocmVzKTtcbiAgICBleHBlY3Qoc2luay5ib2R5KCkpLnRvQmUoXCI8cD5oaTwvcD5cIik7XG4gIH0pO1xuXG4gIGl0KFwic3RpbGwgZW1pdHMgYSBoZWFkIGZvciBhbiBlbXB0eSBib2R5XCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCByZXMgPSBuZXcgU2hpbVNlcnZlclJlc3BvbnNlKCk7XG4gICAgY29uc3Qgc2luayA9IGNvbGxlY3QocmVzKTtcbiAgICByZXMuc3RhdHVzQ29kZSA9IDIwNDtcbiAgICByZXMuZW5kKCk7XG4gICAgYXdhaXQgZmluaXNoZWQocmVzKTtcbiAgICBleHBlY3Qoc2luay5oZWFkKCk/LnN0YXR1c0NvZGUpLnRvQmUoMjA0KTtcbiAgfSk7XG5cbiAgaXQoXCJpcyBpZGVtcG90ZW50LCBzbyBhbiBleHBsaWNpdCBmbHVzaEhlYWRlcnMoKSBwbHVzIGEgd3JpdGUgZW1pdHMgb25jZVwiLCAoKSA9PiB7XG4gICAgY29uc3QgcmVzID0gbmV3IFNoaW1TZXJ2ZXJSZXNwb25zZSgpO1xuICAgIGNvbnN0IGhlYWRzOiBSZXNwb25zZUhlYWRbXSA9IFtdO1xuICAgIHJlcy5vbihcImhlYWRcIiwgKGhlYWQ6IFJlc3BvbnNlSGVhZCkgPT4gaGVhZHMucHVzaChoZWFkKSk7XG4gICAgcmVzLmZsdXNoSGVhZGVycygpO1xuICAgIHJlcy53cml0ZShcImFcIik7XG4gICAgcmVzLmZsdXNoSGVhZGVycygpO1xuICAgIGV4cGVjdChoZWFkcykudG9IYXZlTGVuZ3RoKDEpO1xuICAgIGV4cGVjdChyZXMuaGVhZGVyc1NlbnQpLnRvQmUodHJ1ZSk7XG4gIH0pO1xuXG4gIGl0KFwicmVwb3J0cyBgZmluaXNoZWRgIG9uY2UgZW5kZWQsIHdoaWNoIE5vZGVOZXh0UmVzcG9uc2Uuc2VudCByZWFkc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzID0gbmV3IFNoaW1TZXJ2ZXJSZXNwb25zZSgpO1xuICAgIGNvbGxlY3QocmVzKTtcbiAgICBleHBlY3QocmVzLmZpbmlzaGVkKS50b0JlKGZhbHNlKTtcbiAgICByZXMuZW5kKFwieFwiKTtcbiAgICBhd2FpdCBmaW5pc2hlZChyZXMpO1xuICAgIGV4cGVjdChyZXMuZmluaXNoZWQpLnRvQmUodHJ1ZSk7XG4gIH0pO1xuXG4gIGl0KFwiYWNjZXB0cyByZXMuZmx1c2goKSBhdCBhbnkgcG9pbnQsIGFzIGBjb21wcmVzc2lvbmAgZG9lcyB1bmRlciBuZXh0IHN0YXJ0XCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCByZXMgPSBuZXcgU2hpbVNlcnZlclJlc3BvbnNlKCk7XG4gICAgY29uc3Qgb3V0ID0gY29sbGVjdChyZXMpO1xuICAgIHJlcy5mbHVzaCgpO1xuICAgIHJlcy53cml0ZShcImRhdGE6IDFcXG5cXG5cIik7XG4gICAgcmVzLmZsdXNoKCk7XG4gICAgcmVzLmVuZCgpO1xuICAgIGF3YWl0IGZpbmlzaGVkKHJlcyk7XG4gICAgZXhwZWN0KG91dC5ib2R5KCkpLnRvQmUoXCJkYXRhOiAxXFxuXFxuXCIpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcIlNoaW1TZXJ2ZXJSZXNwb25zZSBoZWFkZXJzXCIsICgpID0+IHtcbiAgaXQoXCJrZWVwcyBzZXQtY29va2llIG91dCBvZiB0aGUgZmxhdCBtYXBcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJlcyA9IG5ldyBTaGltU2VydmVyUmVzcG9uc2UoKTtcbiAgICBjb25zdCBzaW5rID0gY29sbGVjdChyZXMpO1xuICAgIHJlcy5hcHBlbmRIZWFkZXIoXCJTZXQtQ29va2llXCIsIFwiYT0xOyBQYXRoPS9cIik7XG4gICAgcmVzLmFwcGVuZEhlYWRlcihcIlNldC1Db29raWVcIiwgXCJiPTI7IFBhdGg9L1wiKTtcbiAgICByZXMuc2V0SGVhZGVyKFwiWC1PdGhlclwiLCBcImtlZXBcIik7XG4gICAgcmVzLmZsdXNoSGVhZGVycygpO1xuICAgIGV4cGVjdChzaW5rLmhlYWQoKT8uY29va2llcykudG9FcXVhbChbXCJhPTE7IFBhdGg9L1wiLCBcImI9MjsgUGF0aD0vXCJdKTtcbiAgICBleHBlY3Qoc2luay5oZWFkKCk/LmhlYWRlcnMpLnRvRXF1YWwoeyBcIngtb3RoZXJcIjogXCJrZWVwXCIgfSk7XG4gIH0pO1xuXG4gIGl0KFwiam9pbnMgb3RoZXIgcmVwZWF0ZWQgaGVhZGVycyB3aXRoIGEgY29tbWFcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJlcyA9IG5ldyBTaGltU2VydmVyUmVzcG9uc2UoKTtcbiAgICBjb25zdCBzaW5rID0gY29sbGVjdChyZXMpO1xuICAgIHJlcy5zZXRIZWFkZXIoXCJWYXJ5XCIsIFtcIkFjY2VwdFwiLCBcIkNvb2tpZVwiXSk7XG4gICAgcmVzLmZsdXNoSGVhZGVycygpO1xuICAgIGV4cGVjdChzaW5rLmhlYWQoKT8uaGVhZGVycy52YXJ5KS50b0JlKFwiQWNjZXB0LCBDb29raWVcIik7XG4gIH0pO1xuXG4gIGl0KFwidGFrZXMgdGhlIGxhc3Qgb2YgbXVsdGlwbGUgTG9jYXRpb24gdmFsdWVzIGFuZCB3YXJuc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgcmVzID0gbmV3IFNoaW1TZXJ2ZXJSZXNwb25zZSgpO1xuICAgIGNvbnN0IHNpbmsgPSBjb2xsZWN0KHJlcyk7XG4gICAgY29uc3Qgd2FybiA9IGplc3Quc3B5T24oY29uc29sZSwgXCJ3YXJuXCIpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7fSk7XG4gICAgcmVzLnNldEhlYWRlcihcIkxvY2F0aW9uXCIsIFtcIi9maXJzdFwiLCBcIi9zZWNvbmRcIl0pO1xuICAgIHJlcy5mbHVzaEhlYWRlcnMoKTtcbiAgICAvLyBDb21tYS1qb2luaW5nIHdvdWxkIHByb2R1Y2UgYSBVUkwgdGhhdCByZXNvbHZlcyB0byBub3RoaW5nLlxuICAgIGV4cGVjdChzaW5rLmhlYWQoKT8uaGVhZGVycy5sb2NhdGlvbikudG9CZShcIi9zZWNvbmRcIik7XG4gICAgZXhwZWN0KHdhcm4pLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB3YXJuLm1vY2tSZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGl0KFwiaXMgY2FzZS1pbnNlbnNpdGl2ZSBhbmQgc3VwcG9ydHMgdGhlIHJlc3Qgb2YgdGhlIGhlYWRlciBBUElcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJlcyA9IG5ldyBTaGltU2VydmVyUmVzcG9uc2UoKTtcbiAgICByZXMuc2V0SGVhZGVyKFwiWC1BXCIsIFwiMVwiKTtcbiAgICBleHBlY3QocmVzLmdldEhlYWRlcihcIngtYVwiKSkudG9CZShcIjFcIik7XG4gICAgZXhwZWN0KHJlcy5oYXNIZWFkZXIoXCJYLUFcIikpLnRvQmUodHJ1ZSk7XG4gICAgZXhwZWN0KHJlcy5nZXRIZWFkZXJOYW1lcygpKS50b0VxdWFsKFtcIngtYVwiXSk7XG4gICAgZXhwZWN0KHJlcy5nZXRIZWFkZXJzKCkpLnRvRXF1YWwoeyBcIngtYVwiOiBcIjFcIiB9KTtcbiAgICByZXMucmVtb3ZlSGVhZGVyKFwiWC1BXCIpO1xuICAgIGV4cGVjdChyZXMuaGFzSGVhZGVyKFwieC1hXCIpKS50b0JlKGZhbHNlKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoXCJTaGltU2VydmVyUmVzcG9uc2Uud3JpdGVIZWFkXCIsICgpID0+IHtcbiAgaXQoXCJhY2NlcHRzIGEgc3RhdHVzIG1lc3NhZ2UgcGx1cyBhIGhlYWRlciBvYmplY3RcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJlcyA9IG5ldyBTaGltU2VydmVyUmVzcG9uc2UoKTtcbiAgICBjb25zdCBzaW5rID0gY29sbGVjdChyZXMpO1xuICAgIHJlcy53cml0ZUhlYWQoMzAxLCBcIk1vdmVkXCIsIHsgTG9jYXRpb246IFwiL3RoZXJlXCIgfSk7XG4gICAgZXhwZWN0KHNpbmsuaGVhZCgpKS50b0VxdWFsKHtcbiAgICAgIHN0YXR1c0NvZGU6IDMwMSxcbiAgICAgIHN0YXR1c01lc3NhZ2U6IFwiTW92ZWRcIixcbiAgICAgIGhlYWRlcnM6IHsgbG9jYXRpb246IFwiL3RoZXJlXCIgfSxcbiAgICAgIGNvb2tpZXM6IFtdLFxuICAgIH0pO1xuICB9KTtcblxuICBpdChcImtlZXBzIGV2ZXJ5IHZhbHVlIG9mIGEgbmFtZSB0aGUgZmxhdCBhcnJheSBmb3JtIHJlcGVhdHNcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJlcyA9IG5ldyBTaGltU2VydmVyUmVzcG9uc2UoKTtcbiAgICBjb25zdCBzaW5rID0gY29sbGVjdChyZXMpO1xuICAgIHJlcy5zZXRIZWFkZXIoXCJTZXQtQ29va2llXCIsIFwic3RhbGU9MVwiKTtcbiAgICByZXMuc2V0SGVhZGVyKFwiWC1BXCIsIFwic3RhbGVcIik7XG4gICAgcmVzLndyaXRlSGVhZCgyMDAsIFtcIlNldC1Db29raWVcIiwgXCJhPTFcIiwgXCJTZXQtQ29va2llXCIsIFwiYj0yXCIsIFwiWC1BXCIsIFwiMVwiXSk7XG4gICAgZXhwZWN0KHNpbmsuaGVhZCgpPy5jb29raWVzKS50b0VxdWFsKFtcImE9MVwiLCBcImI9MlwiXSk7XG4gICAgZXhwZWN0KHNpbmsuaGVhZCgpPy5oZWFkZXJzW1wieC1hXCJdKS50b0JlKFwiMVwiKTtcbiAgfSk7XG5cbiAgaXQoXCJhY2NlcHRzIHRoZSBmbGF0IGV2ZW4vb2RkIGFycmF5IGZvcm1cIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJlcyA9IG5ldyBTaGltU2VydmVyUmVzcG9uc2UoKTtcbiAgICBjb25zdCBzaW5rID0gY29sbGVjdChyZXMpO1xuICAgIHJlcy53cml0ZUhlYWQoMjAwLCBbXCJDb250ZW50LVR5cGVcIiwgXCJ0ZXh0L3BsYWluXCIsIFwiWC1CXCIsIFwiMlwiXSk7XG4gICAgZXhwZWN0KHNpbmsuaGVhZCgpPy5oZWFkZXJzKS50b0VxdWFsKHtcbiAgICAgIFwiY29udGVudC10eXBlXCI6IFwidGV4dC9wbGFpblwiLFxuICAgICAgXCJ4LWJcIjogXCIyXCIsXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwiYWNjZXB0cyB0aGUgdHVwbGUgYXJyYXkgZm9ybVwiLCAoKSA9PiB7XG4gICAgY29uc3QgcmVzID0gbmV3IFNoaW1TZXJ2ZXJSZXNwb25zZSgpO1xuICAgIGNvbnN0IHNpbmsgPSBjb2xsZWN0KHJlcyk7XG4gICAgcmVzLndyaXRlSGVhZCgyMDAsIFtcbiAgICAgIFtcIkNvbnRlbnQtVHlwZVwiLCBcInRleHQvcGxhaW5cIl0sXG4gICAgICBbXCJYLUJcIiwgXCIyXCJdLFxuICAgIF0gYXMgdW5rbm93biBhcyBzdHJpbmdbXVtdKTtcbiAgICBleHBlY3Qoc2luay5oZWFkKCk/LmhlYWRlcnMpLnRvRXF1YWwoe1xuICAgICAgXCJjb250ZW50LXR5cGVcIjogXCJ0ZXh0L3BsYWluXCIsXG4gICAgICBcIngtYlwiOiBcIjJcIixcbiAgICB9KTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoXCJzZXRDb29raWVMaXN0XCIsICgpID0+IHtcbiAgaXQuZWFjaChbXG4gICAgXCJ0b2tlbj14OyBleHBpcmVzPVdlZCwgMjEgT2N0IDIwMjYgMDc6Mjg6MDAgR01UOyBQYXRoPS9cIixcbiAgICBcInRva2VuPXg7IEV4cGlyZXM9V2VkbmVzZGF5LCAyMS1PY3QtMjYgMDc6Mjg6MDAgR01UOyBQYXRoPS9cIixcbiAgICBcImE9MTsgRXhwaXJlcz1UaHUsIDAxIEphbiAyMDI2IDAwOjAwOjAwIEdNVFwiLFxuICBdKShcImtlZXBzIGEgc2luZ2xlIGNvb2tpZSB3aG9sZTogJXNcIiwgKGNvb2tpZSkgPT4ge1xuICAgIGV4cGVjdChzZXRDb29raWVMaXN0KGNvb2tpZSkpLnRvRXF1YWwoW2Nvb2tpZV0pO1xuICB9KTtcblxuICBpdChcInRyZWF0cyBlYWNoIGFycmF5IGVudHJ5IGFzIG9uZSBjb29raWUgYW5kIGRyb3BzIGVtcHRpZXNcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIHNldENvb2tpZUxpc3QoW1wiYT0xOyBleHBpcmVzPVdlZCwgMjEgT2N0IDIwMjYgMDc6Mjg6MDAgR01UXCIsIFwiYj0yXCIsIFwiXCJdKSxcbiAgICApLnRvRXF1YWwoW1wiYT0xOyBleHBpcmVzPVdlZCwgMjEgT2N0IDIwMjYgMDc6Mjg6MDAgR01UXCIsIFwiYj0yXCJdKTtcbiAgfSk7XG5cbiAgaXQoXCJlbWl0cyBhIGxvd2VyY2FzZS1leHBpcmVzIGNvb2tpZSBhcyBvbmUgU2V0LUNvb2tpZSBsaW5lXCIsICgpID0+IHtcbiAgICBjb25zdCByZXMgPSBuZXcgU2hpbVNlcnZlclJlc3BvbnNlKCk7XG4gICAgY29uc3QgY29va2llID0gXCJ0b2tlbj14OyBleHBpcmVzPVdlZCwgMjEgT2N0IDIwMjYgMDc6Mjg6MDAgR01UOyBQYXRoPS9cIjtcbiAgICByZXMuc2V0SGVhZGVyKFwiU2V0LUNvb2tpZVwiLCBjb29raWUpO1xuICAgIGxldCBoZWFkOiBSZXNwb25zZUhlYWQgfCB1bmRlZmluZWQ7XG4gICAgcmVzLm9uKFwiaGVhZFwiLCAoaDogUmVzcG9uc2VIZWFkKSA9PiAoaGVhZCA9IGgpKTtcbiAgICByZXMuZmx1c2hIZWFkZXJzKCk7XG4gICAgZXhwZWN0KGhlYWQ/LmNvb2tpZXMpLnRvRXF1YWwoW2Nvb2tpZV0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcInVuc3VwcG9ydGVkIFNlcnZlclJlc3BvbnNlIG1ldGhvZHNcIiwgKCkgPT4ge1xuICBpdC5lYWNoKFtcImFkZFRyYWlsZXJzXCIsIFwiYXNzaWduU29ja2V0XCIsIFwid3JpdGVDb250aW51ZVwiLCBcIndyaXRlRWFybHlIaW50c1wiXSkoXG4gICAgXCJ0aHJvd3MgYSBuYW1lZCBlcnJvciBmcm9tICVzKClcIixcbiAgICAobWV0aG9kKSA9PiB7XG4gICAgICBjb25zdCByZXMgPSBuZXcgU2hpbVNlcnZlclJlc3BvbnNlKCkgYXMgdW5rbm93biBhcyBSZWNvcmQ8XG4gICAgICAgIHN0cmluZyxcbiAgICAgICAgKCkgPT4gdm9pZFxuICAgICAgPjtcbiAgICAgIGV4cGVjdCgoKSA9PiByZXNbbWV0aG9kXSgpKS50b1Rocm93KGByZXMuJHttZXRob2R9KClgKTtcbiAgICB9LFxuICApO1xufSk7XG4iXX0=
@@ -82,7 +82,8 @@ describe("pipeToSink compression", () => {
82
82
  const res = new response_1.ShimServerResponse();
83
83
  const done = (0, sink_1.pipeToSink)(requestWith({ "accept-encoding": "gzip" }), res, slowSink, { compress: true });
84
84
  res.setHeader("Content-Type", "text/x-component");
85
- // Barely compressible, so each chunk outgrows every stream's buffer.
85
+ // Hex compresses about 2:1, so each chunk is still larger than `res`'s own
86
+ // 16 KiB buffer, and every write after the first meets backpressure.
86
87
  const body = (0, node_crypto_1.randomBytes)(50_000).toString("hex");
87
88
  let written = 0;
88
89
  for (const size of [40_000, 30_000, 30_000]) {
@@ -286,4 +287,4 @@ describe("acceptsGzip", () => {
286
287
  expect((0, sink_1.acceptsGzip)(["br", "gzip"])).toBe(true);
287
288
  });
288
289
  });
289
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luay50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3J1bnRpbWUvaHR0cC9zaW5rLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw2Q0FBMEM7QUFDMUMsNkNBQXVDO0FBQ3ZDLHlDQUFtRTtBQUNuRSx1Q0FBZ0Q7QUFDaEQseUNBQThEO0FBQzlELGlDQUErRDtBQUUvRCxNQUFNLGNBQWM7SUFJaUI7SUFINUIsSUFBSSxDQUFnQjtJQUNYLE1BQU0sR0FBYSxFQUFFLENBQUM7SUFFdEMsWUFBbUMsZUFBZSxLQUFLO1FBQXBCLGlCQUFZLEdBQVosWUFBWSxDQUFRO0lBQUcsQ0FBQztJQUVwRCxLQUFLLENBQUMsSUFBa0I7UUFDN0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixPQUFPLElBQUksc0JBQVEsQ0FBQztZQUNsQixLQUFLLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRO2dCQUM5QixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDaEMsUUFBUSxFQUFFLENBQUM7WUFDYixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQVcsSUFBSTtRQUNiLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQztDQUNGO0FBRUQsU0FBUyxXQUFXLENBQ2xCLE9BQStCLEVBQy9CLE1BQU0sR0FBRyxLQUFLO0lBRWQsT0FBTyxJQUFJLDZCQUFtQixDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBUUQsaUZBQWlGO0FBQ2pGLEtBQUssVUFBVSxHQUFHLENBQ2hCLEtBQXdDLEVBQ3hDLFVB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SUFBSSxDQUFDO1FBQzNCLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQztRQUNwQixDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUM7UUFDbkIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO1FBQ1gsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDO1FBQ2hCLHVFQUF1RTtRQUN2RSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUM7UUFDckIsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDO1FBQ3RCLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQztRQUN0QixDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUM7UUFDWCxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUM7S0FDbkIsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsRUFBRTtRQUNqQyxNQUFNLENBQUMsSUFBQSxrQkFBVyxFQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHdDQUF3QyxFQUFFLEdBQUcsRUFBRTtRQUNoRCxNQUFNLENBQUMsSUFBQSxrQkFBVyxFQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJhbmRvbUJ5dGVzIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5pbXBvcnQgeyBXcml0YWJsZSB9IGZyb20gXCJub2RlOnN0cmVhbVwiO1xuaW1wb3J0IHsgY29uc3RhbnRzIGFzIHpsaWJDb25zdGFudHMsIGd1bnppcFN5bmMgfSBmcm9tIFwibm9kZTp6bGliXCI7XG5pbXBvcnQgeyBTaGltSW5jb21pbmdNZXNzYWdlIH0gZnJvbSBcIi4vcmVxdWVzdFwiO1xuaW1wb3J0IHsgUmVzcG9uc2VIZWFkLCBTaGltU2VydmVyUmVzcG9uc2UgfSBmcm9tIFwiLi9yZXNwb25zZVwiO1xuaW1wb3J0IHsgYWNjZXB0c0d6aXAsIHBpcGVUb1NpbmssIFJlc3BvbnNlU2luayB9IGZyb20gXCIuL3NpbmtcIjtcblxuY2xhc3MgQ29sbGVjdGluZ1NpbmsgaW1wbGVtZW50cyBSZXNwb25zZVNpbmsge1xuICBwdWJsaWMgaGVhZD86IFJlc3BvbnNlSGVhZDtcbiAgcHVibGljIHJlYWRvbmx5IGNodW5rczogQnVmZmVyW10gPSBbXTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHBhZEVtcHR5Qm9keSA9IGZhbHNlKSB7fVxuXG4gIHB1YmxpYyBiZWdpbihoZWFkOiBSZXNwb25zZUhlYWQpOiBXcml0YWJsZSB7XG4gICAgdGhpcy5oZWFkID0gaGVhZDtcbiAgICBjb25zdCBjaHVua3MgPSB0aGlzLmNodW5rcztcbiAgICByZXR1cm4gbmV3IFdyaXRhYmxlKHtcbiAgICAgIHdyaXRlKGNodW5rLCBfZW5jb2RpbmcsIGNhbGxiYWNrKSB7XG4gICAgICAgIGNodW5rcy5wdXNoKEJ1ZmZlci5mcm9tKGNodW5rKSk7XG4gICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCBib2R5KCk6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQodGhpcy5jaHVua3MpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlcXVlc3RXaXRoKFxuICBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICBtZXRob2QgPSBcIkdFVFwiLFxuKTogU2hpbUluY29taW5nTWVzc2FnZSB7XG4gIHJldHVybiBuZXcgU2hpbUluY29taW5nTWVzc2FnZSh7IG1ldGhvZCwgdXJsOiBcIi9cIiwgaGVhZGVycyB9KTtcbn1cblxuaW50ZXJmYWNlIFBpcGVDYXNlIHtcbiAgcmVhZG9ubHkgcmVxPzogU2hpbUluY29taW5nTWVzc2FnZTtcbiAgcmVhZG9ubHkgY29tcHJlc3M/OiBib29sZWFuO1xuICByZWFkb25seSBwYWRFbXB0eUJvZHk/OiBib29sZWFuO1xufVxuXG4vKiogUnVucyBvbmUgcmVzcG9uc2UgdGhyb3VnaCB0aGUgc2luayBhbmQgcmVzb2x2ZXMgb25jZSB0aGUgc2luayBpcyBmaW5pc2hlZC4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJ1bihcbiAgd3JpdGU6IChyZXM6IFNoaW1TZXJ2ZXJSZXNwb25zZSkgPT4gdm9pZCxcbiAgb3B0aW9uczogUGlwZUNhc2UgPSB7fSxcbik6IFByb21pc2U8Q29sbGVjdGluZ1Npbms+IHtcbiAgY29uc3QgcmVxID0gb3B0aW9ucy5yZXEgPz8gcmVxdWVzdFdpdGgoeyBcImFjY2VwdC1lbmNvZGluZ1wiOiBcImd6aXBcIiB9KTtcbiAgY29uc3QgcmVzID0gbmV3IFNoaW1TZXJ2ZXJSZXNwb25zZSgpO1xuICBjb25zdCBzaW5rID0gbmV3IENvbGxlY3RpbmdTaW5rKG9wdGlvbnMucGFkRW1wdHlCb2R5KTtcbiAgY29uc3QgZG9uZSA9IHBpcGVUb1NpbmsocmVxLCByZXMsIHNpbmssIHtcbiAgICBjb21wcmVzczogb3B0aW9ucy5jb21wcmVzcyA/PyB0cnVlLFxuICB9KTtcbiAgd3JpdGUocmVzKTtcbiAgYXdhaXQgZG9uZTtcbiAgcmV0dXJuIHNpbms7XG59XG5cbmRlc2NyaWJlKFwicGlwZVRvU2luayBjb21wcmVzc2lvblwiLCAoKSA9PiB7XG4gIGl0KFwiZ3ppcHMgY29tcHJlc3NpYmxlIGNvbnRlbnQgd2hlbiB0aGUgY2xpZW50IGFjY2VwdHMgaXRcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHNpbmsgPSBhd2FpdCBydW4oKHJlcykgPT4ge1xuICAgICAgcmVzLnNldEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBcInRleHQvaHRtbDsgY2hhcnNldD11dGYtOFwiKTtcbiAgICAgIHJlcy5zZXRIZWFkZXIoXCJDb250ZW50LUxlbmd0aFwiLCBcIjEzXCIpO1xuICAgICAgcmVzLmVuZChcIjxwPmhlbGxvPC9wPlwiKTtcbiAgICB9KTtcbiAgICBleHBlY3Qoc2luay5oZWFkPy5oZWFkZXJzW1wiY29udGVudC1lbmNvZGluZ1wiXSkudG9CZShcImd6aXBcIik7XG4gICAgLy8gVGhlIGxlbmd0aCB3ZSB3ZXJlIHRvbGQgaXMgdGhlIHVuY29tcHJlc3NlZCBvbmUgYW5kIHRoZSBjb21wcmVzc2VkIG9uZSBpc1xuICAgIC8vIG5vdCBrbm93biB1bnRpbCB0aGUgc3RyZWFtIGVuZHMuXG4gICAgZXhwZWN0KHNpbmsuaGVhZD8uaGVhZGVyc1tcImNvbnRlbnQtbGVuZ3RoXCJdKS50b0JlVW5kZWZpbmVkKCk7XG4gICAgZXhwZWN0KHNpbmsuaGVhZD8uaGVhZGVycy52YXJ5KS50b0JlKFwiQWNjZXB0LUVuY29kaW5nXCIpO1xuICAgIGV4cGVjdChndW56aXBTeW5jKHNpbmsuYm9keSkudG9TdHJpbmcoXCJ1dGYtOFwiKSkudG9CZShcIjxwPmhlbGxvPC9wPlwiKTtcbiAgfSk7XG5cbiAgaXQoXCJhcHBlbmRzIHRvIGFuIGV4aXN0aW5nIHZhcnkgcmF0aGVyIHRoYW4gcmVwbGFjaW5nIGl0XCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBzaW5rID0gYXdhaXQgcnVuKChyZXMpID0+IHtcbiAgICAgIHJlcy5zZXRIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgXCJ0ZXh0L2h0bWxcIik7XG4gICAgICByZXMuc2V0SGVhZGVyKFwiVmFyeVwiLCBcIkNvb2tpZVwiKTtcbiAgICAgIHJlcy5lbmQoXCJ4XCIpO1xuICAgIH0pO1xuICAgIGV4cGVjdChzaW5rLmhlYWQ/LmhlYWRlcnMudmFyeSkudG9CZShcIkNvb2tpZSwgQWNjZXB0LUVuY29kaW5nXCIpO1xuICB9KTtcblxuICAvLyBJc3N1ZSAjMzIxLiBOZXh0LmpzIHdyaXRlcyBlYWNoIFJTQy9IVE1MIGNodW5rIGFuZCB0aGVuIHdhaXRzIGZvciBgZHJhaW5gXG4gIC8vIChgcGlwZS1yZWFkYWJsZS5qc2ApLiBVbmRlciBiYWNrcHJlc3N1cmUgYSBjaHVuayBzaXRzIGluIGByZXNgJ3MgYnVmZmVyXG4gIC8vIHdoaWxlIGVhcmxpZXIgb25lcyBjb21wcmVzcywgYW5kIGEgZmx1c2ggaXNzdWVkIGF0IHdyaXRlIHRpbWUgcmFuIGFoZWFkIG9mXG4gIC8vIGl0LCBzbyB0aGUgbGFzdCBjaHVuayBiZWZvcmUgYSBwYXVzZSAtIGEgYDxTdXNwZW5zZT5gIGZhbGxiYWNrIC0gc3RheWVkIGluXG4gIC8vIHpsaWIgdW50aWwgdGhlIHNsb3cgYm91bmRhcnkgcmVzb2x2ZWQuXG4gIGl0KFwiZGVsaXZlcnMgZXZlcnkgd3JpdHRlbiBjaHVuayBiZWZvcmUgYSBwYXVzZSwgZXZlbiB1bmRlciBiYWNrcHJlc3N1cmVcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGNodW5rczogQnVmZmVyW10gPSBbXTtcbiAgICBjb25zdCBzbG93U2luazogUmVzcG9uc2VTaW5rID0ge1xuICAgICAgYmVnaW46ICgpID0+XG4gICAgICAgIG5ldyBXcml0YWJsZSh7XG4gICAgICAgICAgd3JpdGUoY2h1bmssIF9lbmNvZGluZywgY2FsbGJhY2spIHtcbiAgICAgICAgICAgIGNodW5rcy5wdXNoKEJ1ZmZlci5mcm9tKGNodW5rKSk7XG4gICAgICAgICAgICBzZXRJbW1lZGlhdGUoY2FsbGJhY2spO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgIH07XG4gICAgY29uc3QgcmVzID0gbmV3IFNoaW1TZXJ2ZXJSZXNwb25zZSgpO1xuICAgIGNvbnN0IGRvbmUgPSBwaXBlVG9TaW5rKFxuICAgICAgcmVxdWVzdFdpdGgoeyBcImFjY2VwdC1lbmNvZGluZ1wiOiBcImd6aXBcIiB9KSxcbiAgICAgIHJlcyxcbiAgICAgIHNsb3dTaW5rLFxuICAgICAgeyBjb21wcmVzczogdHJ1ZSB9LFxuICAgICk7XG4gICAgcmVzLnNldEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBcInRleHQveC1jb21wb25lbnRcIik7XG4gICAgLy8gQmFyZWx5IGNvbXByZXNzaWJsZSwgc28gZWFjaCBjaHVuayBvdXRncm93cyBldmVyeSBzdHJlYW0ncyBidWZmZXIuXG4gICAgY29uc3QgYm9keSA9IHJhbmRvbUJ5dGVzKDUwXzAwMCkudG9TdHJpbmcoXCJoZXhcIik7XG4gICAgbGV0IHdyaXR0ZW4gPSAwO1xuICAgIGZvciAoY29uc3Qgc2l6ZSBvZiBbNDBfMDAwLCAzMF8wMDAsIDMwXzAwMF0pIHtcbiAgICAgIC8vIGBwaXBlLXJlYWRhYmxlLmpzYCwgdmVyYmF0aW0gYXBhcnQgZnJvbSB0aGUgdHlwZXMuXG4gICAgICBjb25zdCBvayA9IHJlcy53cml0ZShib2R5LnNsaWNlKHdyaXR0ZW4sIHdyaXR0ZW4gKyBzaXplKSk7XG4gICAgICBjb25zdCBmbHVzaGFibGUgPSByZXMgYXMgdW5rbm93biBhcyB7IGZsdXNoPzogdW5rbm93biB9O1xuICAgICAgaWYgKFwiZmx1c2hcIiBpbiBmbHVzaGFibGUgJiYgdHlwZW9mIGZsdXNoYWJsZS5mbHVzaCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGZsdXNoYWJsZS5mbHVzaCgpO1xuICAgICAgfVxuICAgICAgaWYgKCFvaykge1xuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gcmVzLm9uY2UoXCJkcmFpblwiLCByZXNvbHZlKSk7XG4gICAgICB9XG4gICAgICB3cml0dGVuICs9IHNpemU7XG4gICAgfVxuICAgIGNvbnN0IHNvRmFyID0gKCk6IHN0cmluZyA9PlxuICAgICAgZ3VuemlwU3luYyhCdWZmZXIuY29uY2F0KGNodW5rcyksIHtcbiAgICAgICAgZmluaXNoRmx1c2g6IHpsaWJDb25zdGFudHMuWl9TWU5DX0ZMVVNILFxuICAgICAgfSkudG9TdHJpbmcoXCJ1dGYtOFwiKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwICYmIHNvRmFyKCkubGVuZ3RoIDwgYm9keS5sZW5ndGg7IGkrKykge1xuICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTApKTtcbiAgICB9XG4gICAgZXhwZWN0KHNvRmFyKCkpLnRvQmUoYm9keSk7XG4gICAgcmVzLmVuZCgpO1xuICAgIGF3YWl0IGRvbmU7XG4gICAgZXhwZWN0KGd1bnppcFN5bmMoQnVmZmVyLmNvbmNhdChjaHVua3MpKS50b1N0cmluZyhcInV0Zi04XCIpKS50b0JlKGJvZHkpO1xuICB9KTtcblxuICBpdC5lYWNoKFtcbiAgICBbXCJhbiBpbmNvbXByZXNzaWJsZSBjb250ZW50IHR5cGVcIiwgeyBcImNvbnRlbnQtdHlwZVwiOiBcImltYWdlL2F2aWZcIiB9XSxcbiAgICBbXCJhbiBhbHJlYWR5LWVuY29kZWQgYm9keVwiLCB7IFwiY29udGVudC1lbmNvZGluZ1wiOiBcImJyXCIgfV0sXG4gICAgW1xuICAgICAgXCJhIHJlc3BvbnNlIHRoYXQgb3B0cyBvdXQgd2l0aCBuby10cmFuc2Zvcm1cIixcbiAgICAgIHtcbiAgICAgICAgXCJjb250ZW50LXR5cGVcIjogXCJ0ZXh0L2V2ZW50LXN0cmVhbVwiLFxuICAgICAgICBcImNhY2hlLWNvbnRyb2xcIjogXCJuby1jYWNoZSwgbm8tdHJhbnNmb3JtXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIF0pKFwiZG9lcyBub3QgZ3ppcCAlc1wiLCBhc3luYyAoX25hbWUsIGhlYWRlcnMpID0+IHtcbiAgICBjb25zdCBzaW5rID0gYXdhaXQgcnVuKChyZXMpID0+IHtcbiAgICAgIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhoZWFkZXJzKSkge1xuICAgICAgICByZXMuc2V0SGVhZGVyKG5hbWUsIHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJlcy5lbmQoXCJib2R5XCIpO1xuICAgIH0pO1xuICAgIGV4cGVjdChzaW5rLmhlYWQ/LmhlYWRlcnNbXCJjb250ZW50LWVuY29kaW5nXCJdKS5ub3QudG9CZShcImd6aXBcIik7XG4gICAgZXhwZWN0KHNpbmsuYm9keS50b1N0cmluZyhcInV0Zi04XCIpKS50b0JlKFwiYm9keVwiKTtcbiAgfSk7XG5cbiAgaXQoXCJkb2VzIG5vdCBnemlwIGEgMjA2LCB3aG9zZSBib2R5IGlzIGEgcmFuZ2Ugb2YgdGhlIHN0b3JlZCBieXRlc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gVGhlIG9uZSB1bmNvbXByZXNzYWJsZSBzdGF0dXMgdGhhdCBjYXJyaWVzIGEgYm9keS4gYGNvbnRlbnQtcmFuZ2VgIGNvdW50c1xuICAgIC8vIGJ5dGVzIG9mIHRoZSByZXByZXNlbnRhdGlvbiB0aGUgY2xpZW50IGFza2VkIGZvciwgc28gZ3ppcHBpbmcgdGhlIHNsaWNlXG4gICAgLy8gbWFrZXMgdGhlIHJhbmdlIG1lYW5pbmdsZXNzIC0gYW5kIGEgY2xpZW50IHN0aXRjaGluZyByYW5nZXMgdG9nZXRoZXJcbiAgICAvLyAodmlkZW8sIGEgcmVzdW1lZCBkb3dubG9hZCkgY2Fubm90IHVzZSBpdC5cbiAgICBjb25zdCBzaW5rID0gYXdhaXQgcnVuKChyZXMpID0+IHtcbiAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjA2O1xuICAgICAgcmVzLnNldEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBcInRleHQvcGxhaW5cIik7XG4gICAgICByZXMuc2V0SGVhZGVyKFwiQ29udGVudC1SYW5nZVwiLCBcImJ5dGVzIDAtMy8xMDAwXCIpO1xuICAgICAgcmVzLmVuZChcImJvZHlcIik7XG4gICAgfSk7XG4gICAgZXhwZWN0KHNpbmsuaGVhZD8uaGVhZGVyc1tcImNvbnRlbnQtZW5jb2RpbmdcIl0pLnRvQmVVbmRlZmluZWQoKTtcbiAgICBleHBlY3Qoc2luay5ib2R5LnRvU3RyaW5nKFwidXRmLThcIikpLnRvQmUoXCJib2R5XCIpO1xuICB9KTtcblxuICBpdChcImRvZXMgbm90IGd6aXAgd2hlbiB0aGUgY2xpZW50IGRpZCBub3Qgb2ZmZXIgaXRcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHNpbmsgPSBhd2FpdCBydW4oXG4gICAgICAocmVzKSA9PiB7XG4gICAgICAgIHJlcy5zZXRIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgXCJ0ZXh0L2h0bWxcIik7XG4gICAgICAgIHJlcy5lbmQoXCJib2R5XCIpO1xuICAgICAgfSxcbiAgICAgIHsgcmVxOiByZXF1ZXN0V2l0aCh7fSkgfSxcbiAgICApO1xuICAgIGV4cGVjdChzaW5rLmhlYWQ/LmhlYWRlcnNbXCJjb250ZW50LWVuY29kaW5nXCJdKS50b0JlVW5kZWZpbmVkKCk7XG4gICAgZXhwZWN0KHNpbmsuYm9keS50b1N0cmluZyhcInV0Zi04XCIpKS50b0JlKFwiYm9keVwiKTtcbiAgfSk7XG5cbiAgaXQoXCJkb2VzIG5vdCBnemlwIHdoZW4gbmV4dC5jb25maWcgc2V0cyBjb21wcmVzczogZmFsc2VcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHNpbmsgPSBhd2FpdCBydW4oXG4gICAgICAocmVzKSA9PiB7XG4gICAgICAgIHJlcy5zZXRIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgXCJ0ZXh0L2h0bWxcIik7XG4gICAgICAgIHJlcy5lbmQoXCJib2R5XCIpO1xuICAgICAgfSxcbiAgICAgIHsgY29tcHJlc3M6IGZhbHNlIH0sXG4gICAgKTtcbiAgICBleHBlY3Qoc2luay5oZWFkPy5oZWFkZXJzW1wiY29udGVudC1lbmNvZGluZ1wiXSkudG9CZVVuZGVmaW5lZCgpO1xuICB9KTtcblxuICBpdC5lYWNoKFtcbiAgICBbXCJhIEhFQUQgcmVxdWVzdFwiLCB7IG1ldGhvZDogXCJIRUFEXCIsIHN0YXR1czogMjAwIH1dLFxuICAgIFtcImEgMjA0XCIsIHsgbWV0aG9kOiBcIkdFVFwiLCBzdGF0dXM6IDIwNCB9XSxcbiAgICBbXCJhIDMwNFwiLCB7IG1ldGhvZDogXCJHRVRcIiwgc3RhdHVzOiAzMDQgfV0sXG4gIF0pKFwiZG9lcyBub3QgZ3ppcCAlc1wiLCBhc3luYyAoX25hbWUsIHsgbWV0aG9kLCBzdGF0dXMgfSkgPT4ge1xuICAgIGNvbnN0IHNpbmsgPSBhd2FpdCBydW4oXG4gICAgICAocmVzKSA9PiB7XG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gc3RhdHVzO1xuICAgICAgICByZXMuc2V0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwidGV4dC9odG1sXCIpO1xuICAgICAgICByZXMuZW5kKCk7XG4gICAgICB9LFxuICAgICAgeyByZXE6IHJlcXVlc3RXaXRoKHsgXCJhY2NlcHQtZW5jb2RpbmdcIjogXCJnemlwXCIgfSwgbWV0aG9kKSB9LFxuICAgICk7XG4gICAgZXhwZWN0KHNpbmsuaGVhZD8uaGVhZGVyc1tcImNvbnRlbnQtZW5jb2RpbmdcIl0pLnRvQmVVbmRlZmluZWQoKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoXCJwaXBlVG9TaW5rIGVtcHR5LWJvZHkgcGFkZGluZ1wiLCAoKSA9PiB7XG4gIGl0KFwid3JpdGVzIGEgc2luZ2xlIHNwYWNlIHdoZW4gdGhlIHNpbmsgYXNrcyBmb3IgaXRcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHNpbmsgPSBhd2FpdCBydW4oXG4gICAgICAocmVzKSA9PiB7XG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMzA0O1xuICAgICAgICByZXMuZW5kKCk7XG4gICAgICB9LFxuICAgICAgeyBwYWRFbXB0eUJvZHk6IHRydWUgfSxcbiAgICApO1xuICAgIC8vIFplcm8gcGF5bG9hZCBieXRlcyBhZnRlciB0aGUgcHJlbHVkZSBtYWtlcyBBUEkgR2F0ZXdheSBhbnN3ZXIgNTAyLCBhbmRcbiAgICAvLyBtYWtlcyBhIEZ1bmN0aW9uIFVSTCBkcm9wIHRoZSBwcmVsdWRlIGFuZCBhbnN3ZXIgYSBiYXJlXG4gICAgLy8gYDIwMCBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1gLlxuICAgIGV4cGVjdChzaW5rLmJvZHkudG9TdHJpbmcoXCJ1dGYtOFwiKSkudG9CZShcIiBcIik7XG4gIH0pO1xuXG4gIGl0KFwicGFkcyBhIEhFQUQgcmVzcG9uc2UsIHdob3NlIGJvZHkgaXMgZW1wdHkgYnkgZGVmaW5pdGlvblwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgc2luayA9IGF3YWl0IHJ1bihcbiAgICAgIChyZXMpID0+IHtcbiAgICAgICAgcmVzLnNldEhlYWRlcihcImNvbnRlbnQtdHlwZVwiLCBcInRleHQvaHRtbDsgY2hhcnNldD11dGYtOFwiKTtcbiAgICAgICAgcmVzLnNldEhlYWRlcihcImNvbnRlbnQtbGVuZ3RoXCIsIFwiNTc5OFwiKTtcbiAgICAgICAgcmVzLmVuZCgpO1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcGFkRW1wdHlCb2R5OiB0cnVlLFxuICAgICAgICByZXE6IHJlcXVlc3RXaXRoKHsgXCJhY2NlcHQtZW5jb2RpbmdcIjogXCJnemlwXCIgfSwgXCJIRUFEXCIpLFxuICAgICAgfSxcbiAgICApO1xuICAgIGV4cGVjdChzaW5rLmJvZHkudG9TdHJpbmcoXCJ1dGYtOFwiKSkudG9CZShcIiBcIik7XG4gICAgLy8gVGhlIGhlYWQgc3RpbGwgZGVzY3JpYmVzIHdoYXQgYSBHRVQgd291bGQgcmV0dXJuOyB0aGUgcGFkZGluZyBieXRlIGlzIG5vdFxuICAgIC8vIGEgYm9keSBhbmQgdGhlIGludGVncmF0aW9uIG92ZXJ3cml0ZXMgYGNvbnRlbnQtbGVuZ3RoYCB3aXRoIDAuXG4gICAgZXhwZWN0KHNpbmsuaGVhZD8uaGVhZGVyc1tcImNvbnRlbnQtbGVuZ3RoXCJdKS50b0JlKFwiNTc5OFwiKTtcbiAgfSk7XG5cbiAgaXQoXCJsZWF2ZXMgYSBub24tZW1wdHkgYm9keSBhbG9uZVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgc2luayA9IGF3YWl0IHJ1bigocmVzKSA9PiByZXMuZW5kKFwicmVhbFwiKSwge1xuICAgICAgcGFkRW1wdHlCb2R5OiB0cnVlLFxuICAgICAgY29tcHJlc3M6IGZhbHNlLFxuICAgIH0pO1xuICAgIGV4cGVjdChzaW5rLmJvZHkudG9TdHJpbmcoXCJ1dGYtOFwiKSkudG9CZShcInJlYWxcIik7XG4gIH0pO1xuXG4gIGl0KFwic2VuZHMgbm90aGluZyBmb3IgYW4gZW1wdHkgYm9keSB3aGVuIHRoZSBzaW5rIGRvZXMgbm90IGFza1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgc2luayA9IGF3YWl0IHJ1bigocmVzKSA9PiB7XG4gICAgICByZXMuc3RhdHVzQ29kZSA9IDMwNDtcbiAgICAgIHJlcy5lbmQoKTtcbiAgICB9KTtcbiAgICBleHBlY3Qoc2luay5ib2R5KS50b0hhdmVMZW5ndGgoMCk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKFwicGlwZVRvU2luayBsaWZlY3ljbGVcIiwgKCkgPT4ge1xuICAvKipcbiAgICogYGhhbmRsZSgpYCBhd2FpdHMgdGhpcyBwcm9taXNlIGJlZm9yZSBpdCBmbHVzaGVzIGB3YWl0VW50aWxgIHdvcmsg4oCUIElTUlxuICAgKiByZXZhbGlkYXRpb24sIGNhY2hlIHdyaXRlcyDigJQgYW5kIGJlZm9yZSB0aGUgcmVxdWVzdCdzIGNsb3N1cmVzIGNhbiBiZVxuICAgKiBjb2xsZWN0ZWQuIEEgY2xpZW50IHRoYXQgZGlzY29ubmVjdHMgYmVmb3JlIHRoZSBmaXJzdCBieXRlIGRlc3Ryb3lzIHRoZVxuICAgKiByZXNwb25zZSB3aXRob3V0IGFuIGVycm9yLCB3aGljaCBlbWl0cyBvbmx5IGBcImNsb3NlXCJgOiB0aGUgcGlwZWxpbmUgbmV2ZXJcbiAgICogc3RhcnRlZCwgc28gbm90aGluZyBlbHNlIGNhbiBzZXR0bGUgdGhlIHByb21pc2UgYW5kIHRoZSBhd2FpdCBuZXZlciByZXR1cm5lZC5cbiAgICovXG4gIGl0KFwic2V0dGxlcyB3aGVuIHRoZSByZXNwb25zZSBpcyBkZXN0cm95ZWQgYmVmb3JlIHRoZSBoZWFkIGdvZXMgb3V0XCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCByZXEgPSByZXF1ZXN0V2l0aCh7fSk7XG4gICAgY29uc3QgcmVzID0gbmV3IFNoaW1TZXJ2ZXJSZXNwb25zZSgpO1xuICAgIGNvbnN0IGRvbmUgPSBwaXBlVG9TaW5rKHJlcSwgcmVzLCBuZXcgQ29sbGVjdGluZ1NpbmsoKSwge1xuICAgICAgY29tcHJlc3M6IHRydWUsXG4gICAgfSk7XG5cbiAgICByZXMuZGVzdHJveSgpO1xuXG4gICAgYXdhaXQgZXhwZWN0KGRvbmUpLnJlc29sdmVzLnRvQmVVbmRlZmluZWQoKTtcbiAgfSk7XG5cbiAgLy8gVGhlIG5vcm1hbCBwYXRoIGhhcyB0byBrZWVwIHNldHRsaW5nIG9uIHRoZSBwaXBlbGluZSwgbm90IG9uIGBcImNsb3NlXCJgOiB0aGVcbiAgLy8gYm9keSBtdXN0IGJlIGZ1bGx5IGZsdXNoZWQgaW50byB0aGUgc2luayBieSB0aGUgdGltZSB0aGlzIHJlc29sdmVzLlxuICBpdChcInN0aWxsIHNldHRsZXMgb24gdGhlIHBpcGVsaW5lIG9uY2UgdGhlIGhlYWQgaGFzIGdvbmUgb3V0XCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBzaW5rID0gYXdhaXQgcnVuKFxuICAgICAgKHJlcykgPT4ge1xuICAgICAgICByZXMuc2V0SGVhZGVyKFwiY29udGVudC10eXBlXCIsIFwidGV4dC9wbGFpblwiKTtcbiAgICAgICAgcmVzLmVuZChcImJvZHlcIik7XG4gICAgICB9LFxuICAgICAgeyBjb21wcmVzczogZmFsc2UgfSxcbiAgICApO1xuXG4gICAgZXhwZWN0KHNpbmsuYm9keS50b1N0cmluZygpKS50b0JlKFwiYm9keVwiKTtcbiAgfSk7XG5cbiAgaXQoXCJyZWplY3RzIHdoZW4gdGhlIHJlc3BvbnNlIGVycm9yc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVxID0gcmVxdWVzdFdpdGgoe30pO1xuICAgIGNvbnN0IHJlcyA9IG5ldyBTaGltU2VydmVyUmVzcG9uc2UoKTtcbiAgICBjb25zdCBkb25lID0gcGlwZVRvU2luayhyZXEsIHJlcywgbmV3IENvbGxlY3RpbmdTaW5rKCksIHtcbiAgICAgIGNvbXByZXNzOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgcmVzLmRlc3Ryb3kobmV3IEVycm9yKFwiYm9vbVwiKSk7XG5cbiAgICBhd2FpdCBleHBlY3QoZG9uZSkucmVqZWN0cy50b1Rocm93KFwiYm9vbVwiKTtcbiAgfSk7XG5cbiAgLy8gQSBzaW5rIHRoYXQgY2Fubm90IHRha2UgdGhlIGhlYWQg4oCUIGB3cml0ZUhlYWRgIHJlamVjdGluZyBhIGhlYWRlciB2YWx1ZSBpc1xuICAvLyB0aGUgcmVhbCBjYXNlIOKAlCB0aHJvd3MgZnJvbSBpbnNpZGUgdGhlIGBcImhlYWRcImAgbGlzdGVuZXIsIHdoZXJlIG5vdGhpbmdcbiAgLy8gZWxzZSB3b3VsZCBjYXRjaCBpdCBhbmQgdGhlIHBpcGVsaW5lIG5ldmVyIHN0YXJ0cy5cbiAgaXQuZWFjaChbXG4gICAgW1wid3JpdGVzIGEgYm9keVwiLCAocmVzOiBTaGltU2VydmVyUmVzcG9uc2UpID0+IHJlcy5lbmQoXCJib2R5XCIpXSxcbiAgICBbXCJlbmRzIGVtcHR5XCIsIChyZXM6IFNoaW1TZXJ2ZXJSZXNwb25zZSkgPT4gcmVzLmVuZCgpXSxcbiAgICBbXCJmbHVzaGVzIGl0cyBoZWFkIGZpcnN0XCIsIChyZXM6IFNoaW1TZXJ2ZXJSZXNwb25zZSkgPT4gcmVzLndyaXRlSGVhZCgyMDApXSxcbiAgXSkoXG4gICAgXCJyZWplY3RzIGFuZCBkZXN0cm95cyB0aGUgcmVzcG9uc2Ugd2hlbiBiZWdpbigpIHRocm93cyBhbmQgdGhlIHJlc3BvbnNlICVzXCIsXG4gICAgYXN5bmMgKF9uYW1lLCB3cml0ZSkgPT4ge1xuICAgICAgY29uc3QgcmVxID0gcmVxdWVzdFdpdGgoe30pO1xuICAgICAgY29uc3QgcmVzID0gbmV3IFNoaW1TZXJ2ZXJSZXNwb25zZSgpO1xuICAgICAgY29uc3QgZG9uZSA9IHBpcGVUb1NpbmsoXG4gICAgICAgIHJlcSxcbiAgICAgICAgcmVzLFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW4oKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJiYWQgaGVhZFwiKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB7IGNvbXByZXNzOiBmYWxzZSB9LFxuICAgICAgKTtcblxuICAgICAgd3JpdGUocmVzKTtcblxuICAgICAgYXdhaXQgZXhwZWN0KGRvbmUpLnJlamVjdHMudG9UaHJvdyhcImJhZCBoZWFkXCIpO1xuICAgICAgZXhwZWN0KHJlcy5kZXN0cm95ZWQpLnRvQmUodHJ1ZSk7XG4gICAgfSxcbiAgKTtcbn0pO1xuXG5kZXNjcmliZShcImFjY2VwdHNHemlwXCIsICgpID0+IHtcbiAgaXQuZWFjaChbXG4gICAgW1wiZ3ppcFwiLCB0cnVlXSxcbiAgICBbXCJnemlwLCBkZWZsYXRlLCBiclwiLCB0cnVlXSxcbiAgICBbXCJHWklQO3E9MC41XCIsIHRydWVdLFxuICAgIFtcImd6aXA7cT0wXCIsIGZhbHNlXSxcbiAgICBbXCIqXCIsIHRydWVdLFxuICAgIFtcIio7cT0wXCIsIGZhbHNlXSxcbiAgICAvLyBBbiBleHBsaWNpdCBnemlwIHByZWZlcmVuY2Ugd2lucyBvdmVyIHRoZSB3aWxkY2FyZCwgaW4gZWl0aGVyIG9yZGVyLlxuICAgIFtcIio7cT0wLCBnemlwXCIsIHRydWVdLFxuICAgIFtcImd6aXA7cT0wLCAqXCIsIGZhbHNlXSxcbiAgICBbXCJiciwgZGVmbGF0ZVwiLCBmYWxzZV0sXG4gICAgW1wiXCIsIGZhbHNlXSxcbiAgICBbdW5kZWZpbmVkLCBmYWxzZV0sXG4gIF0pKFwiJXMg4oaSICVzXCIsIChoZWFkZXIsIGV4cGVjdGVkKSA9PiB7XG4gICAgZXhwZWN0KGFjY2VwdHNHemlwKGhlYWRlcikpLnRvQmUoZXhwZWN0ZWQpO1xuICB9KTtcblxuICBpdChcImpvaW5zIGEgcmVwZWF0ZWQgaGVhZGVyIGJlZm9yZSBwYXJzaW5nXCIsICgpID0+IHtcbiAgICBleHBlY3QoYWNjZXB0c0d6aXAoW1wiYnJcIiwgXCJnemlwXCJdKSkudG9CZSh0cnVlKTtcbiAgfSk7XG59KTtcbiJdfQ==
290
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luay50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3J1bnRpbWUvaHR0cC9zaW5rLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw2Q0FBMEM7QUFDMUMsNkNBQXVDO0FBQ3ZDLHlDQUFtRTtBQUNuRSx1Q0FBZ0Q7QUFDaEQseUNBQThEO0FBQzlELGlDQUErRDtBQUUvRCxNQUFNLGNBQWM7SUFJaUI7SUFINUIsSUFBSSxDQUFnQjtJQUNYLE1BQU0sR0FBYSxFQUFFLENBQUM7SUFFdEMsWUFBbUMsZUFBZSxLQUFLO1FBQXBCLGlCQUFZLEdBQVosWUFBWSxDQUFRO0lBQUcsQ0FBQztJQUVwRCxLQUFLLENBQUMsSUFBa0I7UUFDN0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixPQUFPLElBQUksc0JBQVEsQ0FBQztZQUNsQixLQUFLLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRO2dCQUM5QixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDaEMsUUFBUSxFQUFFLENBQUM7WUFDYixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQVcsSUFBSTtRQUNiLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQztDQUNGO0FBRUQsU0FBUyxXQUFXLENBQ2xCLE9BQStCLEVBQy9CLE1BQU0sR0FBRyxLQUFLO0lBRWQsT0FBTyxJQUFJLDZCQUFtQixDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBUUQsaUZBQWlGO0FBQ2pGLEtBQUssVUFBVSxHQUFHLENBQ2hCLEtBQXdDLEVBQ3hDLFVBQW9CLEVBQUU7SUFFdEIsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLE1BQU0sR0FBRyxHQUFHLElBQUksNkJBQWtCLEVBQUUsQ0FBQztJQUNyQyxNQUFNLElBQUksR0FBRyxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdEQsTUFBTSxJQUFJLEdBQUcsSUFBQSxpQkFBVSxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFO1FBQ3RDLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUk7S0FDbkMsQ0FBQyxDQUFDO0lBQ0gsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ1gsTUFBTSxJQUFJLENBQUM7SUFDWCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxRQUFRLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxFQUFFO0lBQ3RDLEVBQUUsQ0FBQyx1REFBdUQsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNyRSxNQUFNLElBQUksR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzdCLEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLDBCQUEwQixDQUFDLENBQUM7WUFDMUQsR0FBRyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN0QyxHQUFHLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUQsNEVBQTRFO1FBQzVFLG1DQUFtQztRQUNuQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzdELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN4RCxNQUFNLENBQUMsSUFBQSxzQkFBVSxFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdkUsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsc0RBQXNELEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDcEUsTUFBTSxJQUFJLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUM3QixHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUMzQyxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNoQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDbEUsQ0FBQyxDQUFDLENBQUM7SUFFSCw0RUFBNEU7SUFDNUUsMEVBQTBFO0lBQzFFLDZFQUE2RTtJQUM3RSw2RUFBNkU7SUFDN0UseUNBQXlDO0lBQ3pDLEVBQUUsQ0FBQyxzRUFBc0UsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNwRixNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7UUFDNUIsTUFBTSxRQUFRLEdBQWlCO1lBQzdCLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FDVixJQUFJLHNCQUFRLENBQUM7Z0JBQ1gsS0FBSyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUTtvQkFDOUIsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQ2hDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDekIsQ0FBQzthQUNGLENBQUM7U0FDTCxDQUFDO1FBQ0YsTUFBTSxHQUFHLEdBQUcsSUFBSSw2QkFBa0IsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sSUFBSSxHQUFHLElBQUEsaUJBQVUsRUFDckIsV0FBVyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFDMUMsR0FBRyxFQUNILFFBQVEsRUFDUixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FDbkIsQ0FBQztRQUNGLEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDbEQsMkVBQTJFO1FBQzNFLHFFQUFxRTtRQUNyRSxNQUFNLElBQUksR0FBRyxJQUFBLHlCQUFXLEVBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNoQixLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzVDLHFEQUFxRDtZQUNyRCxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzFELE1BQU0sU0FBUyxHQUFHLEdBQXFDLENBQUM7WUFDeEQsSUFBSSxPQUFPLElBQUksU0FBUyxJQUFJLE9BQU8sU0FBUyxDQUFDLEtBQUssS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDbEUsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3BCLENBQUM7WUFDRCxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ1IsTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUM3RCxDQUFDO1lBQ0QsT0FBTyxJQUFJLElBQUksQ0FBQztRQUNsQixDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsR0FBVyxFQUFFLENBQ3pCLElBQUEsc0JBQVUsRUFBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2hDLFdBQVcsRUFBRSxxQkFBYSxDQUFDLFlBQVk7U0FDeEMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLEtBQUssRUFBRSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDNUQsTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFDRCxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1YsTUFBTSxJQUFJLENBQUM7UUFDWCxNQUFNLENBQUMsSUFBQSxzQkFBVSxFQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekUsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ04sQ0FBQyxnQ0FBZ0MsRUFBRSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsQ0FBQztRQUNwRSxDQUFDLHlCQUF5QixFQUFFLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDekQ7WUFDRSw0Q0FBNEM7WUFDNUM7Z0JBQ0UsY0FBYyxFQUFFLG1CQUFtQjtnQkFDbkMsZUFBZSxFQUFFLHdCQUF3QjthQUMxQztTQUNGO0tBQ0YsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDOUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUM3QixLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNwRCxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM3QixDQUFDO1lBQ0QsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsZ0VBQWdFLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDOUUsNEVBQTRFO1FBQzVFLDBFQUEwRTtRQUMxRSx1RUFBdUU7UUFDdkUsNkNBQTZDO1FBQzdDLE1BQU0sSUFBSSxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDN0IsR0FBRyxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7WUFDckIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDNUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUNqRCxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMvRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsZ0RBQWdELEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDOUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxHQUFHLENBQ3BCLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDTixHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUMzQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xCLENBQUMsRUFDRCxFQUFFLEdBQUcsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FDekIsQ0FBQztRQUNGLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDL0QsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHFEQUFxRCxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ25FLE1BQU0sSUFBSSxHQUFHLE1BQU0sR0FBRyxDQUNwQixDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ04sR0FBRyxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDM0MsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQixDQUFDLEVBQ0QsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQ3BCLENBQUM7UUFDRixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ2pFLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLElBQUksQ0FBQztRQUNOLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNuRCxDQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ3pDLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7S0FDMUMsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTtRQUN6RCxNQUFNLElBQUksR0FBRyxNQUFNLEdBQUcsQ0FDcEIsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNOLEdBQUcsQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO1lBQ3hCLEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQzNDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNaLENBQUMsRUFDRCxFQUFFLEdBQUcsRUFBRSxXQUFXLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUM1RCxDQUFDO1FBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNqRSxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsUUFBUSxDQUFDLCtCQUErQixFQUFFLEdBQUcsRUFBRTtJQUM3QyxFQUFFLENBQUMsaURBQWlELEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDL0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxHQUFHLENBQ3BCLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDTixHQUFHLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztZQUNyQixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDWixDQUFDLEVBQ0QsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQ3ZCLENBQUM7UUFDRix5RUFBeUU7UUFDekUsMERBQTBEO1FBQzFELGtDQUFrQztRQUNsQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMseURBQXlELEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDdkUsTUFBTSxJQUFJLEdBQUcsTUFBTSxHQUFHLENBQ3BCLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDTixHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO1lBQzFELEdBQUcsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDeEMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1osQ0FBQyxFQUNEO1lBQ0UsWUFBWSxFQUFFLElBQUk7WUFDbEIsR0FBRyxFQUFFLFdBQVcsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxFQUFFLE1BQU0sQ0FBQztTQUN4RCxDQUNGLENBQUM7UUFDRixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUMsNEVBQTRFO1FBQzVFLGlFQUFpRTtRQUNqRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1RCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywrQkFBK0IsRUFBRSxLQUFLLElBQUksRUFBRTtRQUM3QyxNQUFNLElBQUksR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMvQyxZQUFZLEVBQUUsSUFBSTtZQUNsQixRQUFRLEVBQUUsS0FBSztTQUNoQixDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNERBQTRELEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDMUUsTUFBTSxJQUFJLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUM3QixHQUFHLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztZQUNyQixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDWixDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxRQUFRLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFO0lBQ3BDOzs7Ozs7T0FNRztJQUNILEVBQUUsQ0FBQyxpRUFBaUUsRUFBRSxLQUFLLElBQUksRUFBRTtRQUMvRSxNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUIsTUFBTSxHQUFHLEdBQUcsSUFBSSw2QkFBa0IsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sSUFBSSxHQUFHLElBQUEsaUJBQVUsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksY0FBYyxFQUFFLEVBQUU7WUFDdEQsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDLENBQUM7UUFFSCxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFZCxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDOUMsQ0FBQyxDQUFDLENBQUM7SUFFSCw4RUFBOEU7SUFDOUUsc0VBQXNFO0lBQ3RFLEVBQUUsQ0FBQywwREFBMEQsRUFBRSxLQUFLLElBQUksRUFBRTtRQUN4RSxNQUFNLElBQUksR0FBRyxNQUFNLEdBQUcsQ0FDcEIsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNOLEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQzVDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEIsQ0FBQyxFQUNELEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUNwQixDQUFDO1FBRUYsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsa0NBQWtDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDaEQsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLE1BQU0sR0FBRyxHQUFHLElBQUksNkJBQWtCLEVBQUUsQ0FBQztRQUNyQyxNQUFNLElBQUksR0FBRyxJQUFBLGlCQUFVLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLGNBQWMsRUFBRSxFQUFFO1lBQ3RELFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQyxDQUFDO1FBRUgsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRS9CLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFFSCw2RUFBNkU7SUFDN0UsMEVBQTBFO0lBQzFFLHFEQUFxRDtJQUNyRCxFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ04sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxHQUF1QixFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9ELENBQUMsWUFBWSxFQUFFLENBQUMsR0FBdUIsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3RELENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxHQUF1QixFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQzVFLENBQUMsQ0FDQSwyRUFBMkUsRUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUNyQixNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUIsTUFBTSxHQUFHLEdBQUcsSUFBSSw2QkFBa0IsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sSUFBSSxHQUFHLElBQUEsaUJBQVUsRUFDckIsR0FBRyxFQUNILEdBQUcsRUFDSDtZQUNFLEtBQUs7Z0JBQ0gsTUFBTSxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM5QixDQUFDO1NBQ0YsRUFDRCxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FDcEIsQ0FBQztRQUVGLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVYLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQyxDQUNGLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO0lBQzNCLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDTixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7UUFDZCxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQztRQUMzQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUM7UUFDcEIsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDO1FBQ25CLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQztRQUNYLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQztRQUNoQix1RUFBdUU7UUFDdkUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDO1FBQ3JCLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQztRQUN0QixDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUM7UUFDdEIsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDO1FBQ1gsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDO0tBQ25CLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQUU7UUFDakMsTUFBTSxDQUFDLElBQUEsa0JBQVcsRUFBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3QyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyx3Q0FBd0MsRUFBRSxHQUFHLEVBQUU7UUFDaEQsTUFBTSxDQUFDLElBQUEsa0JBQVcsRUFBQyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByYW5kb21CeXRlcyB9IGZyb20gXCJub2RlOmNyeXB0b1wiO1xuaW1wb3J0IHsgV3JpdGFibGUgfSBmcm9tIFwibm9kZTpzdHJlYW1cIjtcbmltcG9ydCB7IGNvbnN0YW50cyBhcyB6bGliQ29uc3RhbnRzLCBndW56aXBTeW5jIH0gZnJvbSBcIm5vZGU6emxpYlwiO1xuaW1wb3J0IHsgU2hpbUluY29taW5nTWVzc2FnZSB9IGZyb20gXCIuL3JlcXVlc3RcIjtcbmltcG9ydCB7IFJlc3BvbnNlSGVhZCwgU2hpbVNlcnZlclJlc3BvbnNlIH0gZnJvbSBcIi4vcmVzcG9uc2VcIjtcbmltcG9ydCB7IGFjY2VwdHNHemlwLCBwaXBlVG9TaW5rLCBSZXNwb25zZVNpbmsgfSBmcm9tIFwiLi9zaW5rXCI7XG5cbmNsYXNzIENvbGxlY3RpbmdTaW5rIGltcGxlbWVudHMgUmVzcG9uc2VTaW5rIHtcbiAgcHVibGljIGhlYWQ/OiBSZXNwb25zZUhlYWQ7XG4gIHB1YmxpYyByZWFkb25seSBjaHVua3M6IEJ1ZmZlcltdID0gW107XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBwYWRFbXB0eUJvZHkgPSBmYWxzZSkge31cblxuICBwdWJsaWMgYmVnaW4oaGVhZDogUmVzcG9uc2VIZWFkKTogV3JpdGFibGUge1xuICAgIHRoaXMuaGVhZCA9IGhlYWQ7XG4gICAgY29uc3QgY2h1bmtzID0gdGhpcy5jaHVua3M7XG4gICAgcmV0dXJuIG5ldyBXcml0YWJsZSh7XG4gICAgICB3cml0ZShjaHVuaywgX2VuY29kaW5nLCBjYWxsYmFjaykge1xuICAgICAgICBjaHVua3MucHVzaChCdWZmZXIuZnJvbShjaHVuaykpO1xuICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYm9keSgpOiBCdWZmZXIge1xuICAgIHJldHVybiBCdWZmZXIuY29uY2F0KHRoaXMuY2h1bmtzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXF1ZXN0V2l0aChcbiAgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgbWV0aG9kID0gXCJHRVRcIixcbik6IFNoaW1JbmNvbWluZ01lc3NhZ2Uge1xuICByZXR1cm4gbmV3IFNoaW1JbmNvbWluZ01lc3NhZ2UoeyBtZXRob2QsIHVybDogXCIvXCIsIGhlYWRlcnMgfSk7XG59XG5cbmludGVyZmFjZSBQaXBlQ2FzZSB7XG4gIHJlYWRvbmx5IHJlcT86IFNoaW1JbmNvbWluZ01lc3NhZ2U7XG4gIHJlYWRvbmx5IGNvbXByZXNzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcGFkRW1wdHlCb2R5PzogYm9vbGVhbjtcbn1cblxuLyoqIFJ1bnMgb25lIHJlc3BvbnNlIHRocm91Z2ggdGhlIHNpbmsgYW5kIHJlc29sdmVzIG9uY2UgdGhlIHNpbmsgaXMgZmluaXNoZWQuICovXG5hc3luYyBmdW5jdGlvbiBydW4oXG4gIHdyaXRlOiAocmVzOiBTaGltU2VydmVyUmVzcG9uc2UpID0+IHZvaWQsXG4gIG9wdGlvbnM6IFBpcGVDYXNlID0ge30sXG4pOiBQcm9taXNlPENvbGxlY3RpbmdTaW5rPiB7XG4gIGNvbnN0IHJlcSA9IG9wdGlvbnMucmVxID8/IHJlcXVlc3RXaXRoKHsgXCJhY2NlcHQtZW5jb2RpbmdcIjogXCJnemlwXCIgfSk7XG4gIGNvbnN0IHJlcyA9IG5ldyBTaGltU2VydmVyUmVzcG9uc2UoKTtcbiAgY29uc3Qgc2luayA9IG5ldyBDb2xsZWN0aW5nU2luayhvcHRpb25zLnBhZEVtcHR5Qm9keSk7XG4gIGNvbnN0IGRvbmUgPSBwaXBlVG9TaW5rKHJlcSwgcmVzLCBzaW5rLCB7XG4gICAgY29tcHJlc3M6IG9wdGlvbnMuY29tcHJlc3MgPz8gdHJ1ZSxcbiAgfSk7XG4gIHdyaXRlKHJlcyk7XG4gIGF3YWl0IGRvbmU7XG4gIHJldHVybiBzaW5rO1xufVxuXG5kZXNjcmliZShcInBpcGVUb1NpbmsgY29tcHJlc3Npb25cIiwgKCkgPT4ge1xuICBpdChcImd6aXBzIGNvbXByZXNzaWJsZSBjb250ZW50IHdoZW4gdGhlIGNsaWVudCBhY2NlcHRzIGl0XCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBzaW5rID0gYXdhaXQgcnVuKChyZXMpID0+IHtcbiAgICAgIHJlcy5zZXRIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgXCJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLThcIik7XG4gICAgICByZXMuc2V0SGVhZGVyKFwiQ29udGVudC1MZW5ndGhcIiwgXCIxM1wiKTtcbiAgICAgIHJlcy5lbmQoXCI8cD5oZWxsbzwvcD5cIik7XG4gICAgfSk7XG4gICAgZXhwZWN0KHNpbmsuaGVhZD8uaGVhZGVyc1tcImNvbnRlbnQtZW5jb2RpbmdcIl0pLnRvQmUoXCJnemlwXCIpO1xuICAgIC8vIFRoZSBsZW5ndGggd2Ugd2VyZSB0b2xkIGlzIHRoZSB1bmNvbXByZXNzZWQgb25lIGFuZCB0aGUgY29tcHJlc3NlZCBvbmUgaXNcbiAgICAvLyBub3Qga25vd24gdW50aWwgdGhlIHN0cmVhbSBlbmRzLlxuICAgIGV4cGVjdChzaW5rLmhlYWQ/LmhlYWRlcnNbXCJjb250ZW50LWxlbmd0aFwiXSkudG9CZVVuZGVmaW5lZCgpO1xuICAgIGV4cGVjdChzaW5rLmhlYWQ/LmhlYWRlcnMudmFyeSkudG9CZShcIkFjY2VwdC1FbmNvZGluZ1wiKTtcbiAgICBleHBlY3QoZ3VuemlwU3luYyhzaW5rLmJvZHkpLnRvU3RyaW5nKFwidXRmLThcIikpLnRvQmUoXCI8cD5oZWxsbzwvcD5cIik7XG4gIH0pO1xuXG4gIGl0KFwiYXBwZW5kcyB0byBhbiBleGlzdGluZyB2YXJ5IHJhdGhlciB0aGFuIHJlcGxhY2luZyBpdFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgc2luayA9IGF3YWl0IHJ1bigocmVzKSA9PiB7XG4gICAgICByZXMuc2V0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwidGV4dC9odG1sXCIpO1xuICAgICAgcmVzLnNldEhlYWRlcihcIlZhcnlcIiwgXCJDb29raWVcIik7XG4gICAgICByZXMuZW5kKFwieFwiKTtcbiAgICB9KTtcbiAgICBleHBlY3Qoc2luay5oZWFkPy5oZWFkZXJzLnZhcnkpLnRvQmUoXCJDb29raWUsIEFjY2VwdC1FbmNvZGluZ1wiKTtcbiAgfSk7XG5cbiAgLy8gSXNzdWUgIzMyMS4gTmV4dC5qcyB3cml0ZXMgZWFjaCBSU0MvSFRNTCBjaHVuayBhbmQgdGhlbiB3YWl0cyBmb3IgYGRyYWluYFxuICAvLyAoYHBpcGUtcmVhZGFibGUuanNgKS4gVW5kZXIgYmFja3ByZXNzdXJlIGEgY2h1bmsgc2l0cyBpbiBgcmVzYCdzIGJ1ZmZlclxuICAvLyB3aGlsZSBlYXJsaWVyIG9uZXMgY29tcHJlc3MsIGFuZCBhIGZsdXNoIGlzc3VlZCBhdCB3cml0ZSB0aW1lIHJhbiBhaGVhZCBvZlxuICAvLyBpdCwgc28gdGhlIGxhc3QgY2h1bmsgYmVmb3JlIGEgcGF1c2UgLSBhIGA8U3VzcGVuc2U+YCBmYWxsYmFjayAtIHN0YXllZCBpblxuICAvLyB6bGliIHVudGlsIHRoZSBzbG93IGJvdW5kYXJ5IHJlc29sdmVkLlxuICBpdChcImRlbGl2ZXJzIGV2ZXJ5IHdyaXR0ZW4gY2h1bmsgYmVmb3JlIGEgcGF1c2UsIGV2ZW4gdW5kZXIgYmFja3ByZXNzdXJlXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBjaHVua3M6IEJ1ZmZlcltdID0gW107XG4gICAgY29uc3Qgc2xvd1Npbms6IFJlc3BvbnNlU2luayA9IHtcbiAgICAgIGJlZ2luOiAoKSA9PlxuICAgICAgICBuZXcgV3JpdGFibGUoe1xuICAgICAgICAgIHdyaXRlKGNodW5rLCBfZW5jb2RpbmcsIGNhbGxiYWNrKSB7XG4gICAgICAgICAgICBjaHVua3MucHVzaChCdWZmZXIuZnJvbShjaHVuaykpO1xuICAgICAgICAgICAgc2V0SW1tZWRpYXRlKGNhbGxiYWNrKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICB9O1xuICAgIGNvbnN0IHJlcyA9IG5ldyBTaGltU2VydmVyUmVzcG9uc2UoKTtcbiAgICBjb25zdCBkb25lID0gcGlwZVRvU2luayhcbiAgICAgIHJlcXVlc3RXaXRoKHsgXCJhY2NlcHQtZW5jb2RpbmdcIjogXCJnemlwXCIgfSksXG4gICAgICByZXMsXG4gICAgICBzbG93U2luayxcbiAgICAgIHsgY29tcHJlc3M6IHRydWUgfSxcbiAgICApO1xuICAgIHJlcy5zZXRIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgXCJ0ZXh0L3gtY29tcG9uZW50XCIpO1xuICAgIC8vIEhleCBjb21wcmVzc2VzIGFib3V0IDI6MSwgc28gZWFjaCBjaHVuayBpcyBzdGlsbCBsYXJnZXIgdGhhbiBgcmVzYCdzIG93blxuICAgIC8vIDE2IEtpQiBidWZmZXIsIGFuZCBldmVyeSB3cml0ZSBhZnRlciB0aGUgZmlyc3QgbWVldHMgYmFja3ByZXNzdXJlLlxuICAgIGNvbnN0IGJvZHkgPSByYW5kb21CeXRlcyg1MF8wMDApLnRvU3RyaW5nKFwiaGV4XCIpO1xuICAgIGxldCB3cml0dGVuID0gMDtcbiAgICBmb3IgKGNvbnN0IHNpemUgb2YgWzQwXzAwMCwgMzBfMDAwLCAzMF8wMDBdKSB7XG4gICAgICAvLyBgcGlwZS1yZWFkYWJsZS5qc2AsIHZlcmJhdGltIGFwYXJ0IGZyb20gdGhlIHR5cGVzLlxuICAgICAgY29uc3Qgb2sgPSByZXMud3JpdGUoYm9keS5zbGljZSh3cml0dGVuLCB3cml0dGVuICsgc2l6ZSkpO1xuICAgICAgY29uc3QgZmx1c2hhYmxlID0gcmVzIGFzIHVua25vd24gYXMgeyBmbHVzaD86IHVua25vd24gfTtcbiAgICAgIGlmIChcImZsdXNoXCIgaW4gZmx1c2hhYmxlICYmIHR5cGVvZiBmbHVzaGFibGUuZmx1c2ggPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBmbHVzaGFibGUuZmx1c2goKTtcbiAgICAgIH1cbiAgICAgIGlmICghb2spIHtcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHJlcy5vbmNlKFwiZHJhaW5cIiwgcmVzb2x2ZSkpO1xuICAgICAgfVxuICAgICAgd3JpdHRlbiArPSBzaXplO1xuICAgIH1cbiAgICBjb25zdCBzb0ZhciA9ICgpOiBzdHJpbmcgPT5cbiAgICAgIGd1bnppcFN5bmMoQnVmZmVyLmNvbmNhdChjaHVua3MpLCB7XG4gICAgICAgIGZpbmlzaEZsdXNoOiB6bGliQ29uc3RhbnRzLlpfU1lOQ19GTFVTSCxcbiAgICAgIH0pLnRvU3RyaW5nKFwidXRmLThcIik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MCAmJiBzb0ZhcigpLmxlbmd0aCA8IGJvZHkubGVuZ3RoOyBpKyspIHtcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDEwKSk7XG4gICAgfVxuICAgIGV4cGVjdChzb0ZhcigpKS50b0JlKGJvZHkpO1xuICAgIHJlcy5lbmQoKTtcbiAgICBhd2FpdCBkb25lO1xuICAgIGV4cGVjdChndW56aXBTeW5jKEJ1ZmZlci5jb25jYXQoY2h1bmtzKSkudG9TdHJpbmcoXCJ1dGYtOFwiKSkudG9CZShib2R5KTtcbiAgfSk7XG5cbiAgaXQuZWFjaChbXG4gICAgW1wiYW4gaW5jb21wcmVzc2libGUgY29udGVudCB0eXBlXCIsIHsgXCJjb250ZW50LXR5cGVcIjogXCJpbWFnZS9hdmlmXCIgfV0sXG4gICAgW1wiYW4gYWxyZWFkeS1lbmNvZGVkIGJvZHlcIiwgeyBcImNvbnRlbnQtZW5jb2RpbmdcIjogXCJiclwiIH1dLFxuICAgIFtcbiAgICAgIFwiYSByZXNwb25zZSB0aGF0IG9wdHMgb3V0IHdpdGggbm8tdHJhbnNmb3JtXCIsXG4gICAgICB7XG4gICAgICAgIFwiY29udGVudC10eXBlXCI6IFwidGV4dC9ldmVudC1zdHJlYW1cIixcbiAgICAgICAgXCJjYWNoZS1jb250cm9sXCI6IFwibm8tY2FjaGUsIG5vLXRyYW5zZm9ybVwiLFxuICAgICAgfSxcbiAgICBdLFxuICBdKShcImRvZXMgbm90IGd6aXAgJXNcIiwgYXN5bmMgKF9uYW1lLCBoZWFkZXJzKSA9PiB7XG4gICAgY29uc3Qgc2luayA9IGF3YWl0IHJ1bigocmVzKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoaGVhZGVycykpIHtcbiAgICAgICAgcmVzLnNldEhlYWRlcihuYW1lLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgICByZXMuZW5kKFwiYm9keVwiKTtcbiAgICB9KTtcbiAgICBleHBlY3Qoc2luay5oZWFkPy5oZWFkZXJzW1wiY29udGVudC1lbmNvZGluZ1wiXSkubm90LnRvQmUoXCJnemlwXCIpO1xuICAgIGV4cGVjdChzaW5rLmJvZHkudG9TdHJpbmcoXCJ1dGYtOFwiKSkudG9CZShcImJvZHlcIik7XG4gIH0pO1xuXG4gIGl0KFwiZG9lcyBub3QgZ3ppcCBhIDIwNiwgd2hvc2UgYm9keSBpcyBhIHJhbmdlIG9mIHRoZSBzdG9yZWQgYnl0ZXNcIiwgYXN5bmMgKCkgPT4ge1xuICAgIC8vIFRoZSBvbmUgdW5jb21wcmVzc2FibGUgc3RhdHVzIHRoYXQgY2FycmllcyBhIGJvZHkuIGBjb250ZW50LXJhbmdlYCBjb3VudHNcbiAgICAvLyBieXRlcyBvZiB0aGUgcmVwcmVzZW50YXRpb24gdGhlIGNsaWVudCBhc2tlZCBmb3IsIHNvIGd6aXBwaW5nIHRoZSBzbGljZVxuICAgIC8vIG1ha2VzIHRoZSByYW5nZSBtZWFuaW5nbGVzcyAtIGFuZCBhIGNsaWVudCBzdGl0Y2hpbmcgcmFuZ2VzIHRvZ2V0aGVyXG4gICAgLy8gKHZpZGVvLCBhIHJlc3VtZWQgZG93bmxvYWQpIGNhbm5vdCB1c2UgaXQuXG4gICAgY29uc3Qgc2luayA9IGF3YWl0IHJ1bigocmVzKSA9PiB7XG4gICAgICByZXMuc3RhdHVzQ29kZSA9IDIwNjtcbiAgICAgIHJlcy5zZXRIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgXCJ0ZXh0L3BsYWluXCIpO1xuICAgICAgcmVzLnNldEhlYWRlcihcIkNvbnRlbnQtUmFuZ2VcIiwgXCJieXRlcyAwLTMvMTAwMFwiKTtcbiAgICAgIHJlcy5lbmQoXCJib2R5XCIpO1xuICAgIH0pO1xuICAgIGV4cGVjdChzaW5rLmhlYWQ/LmhlYWRlcnNbXCJjb250ZW50LWVuY29kaW5nXCJdKS50b0JlVW5kZWZpbmVkKCk7XG4gICAgZXhwZWN0KHNpbmsuYm9keS50b1N0cmluZyhcInV0Zi04XCIpKS50b0JlKFwiYm9keVwiKTtcbiAgfSk7XG5cbiAgaXQoXCJkb2VzIG5vdCBnemlwIHdoZW4gdGhlIGNsaWVudCBkaWQgbm90IG9mZmVyIGl0XCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBzaW5rID0gYXdhaXQgcnVuKFxuICAgICAgKHJlcykgPT4ge1xuICAgICAgICByZXMuc2V0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwidGV4dC9odG1sXCIpO1xuICAgICAgICByZXMuZW5kKFwiYm9keVwiKTtcbiAgICAgIH0sXG4gICAgICB7IHJlcTogcmVxdWVzdFdpdGgoe30pIH0sXG4gICAgKTtcbiAgICBleHBlY3Qoc2luay5oZWFkPy5oZWFkZXJzW1wiY29udGVudC1lbmNvZGluZ1wiXSkudG9CZVVuZGVmaW5lZCgpO1xuICAgIGV4cGVjdChzaW5rLmJvZHkudG9TdHJpbmcoXCJ1dGYtOFwiKSkudG9CZShcImJvZHlcIik7XG4gIH0pO1xuXG4gIGl0KFwiZG9lcyBub3QgZ3ppcCB3aGVuIG5leHQuY29uZmlnIHNldHMgY29tcHJlc3M6IGZhbHNlXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBzaW5rID0gYXdhaXQgcnVuKFxuICAgICAgKHJlcykgPT4ge1xuICAgICAgICByZXMuc2V0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwidGV4dC9odG1sXCIpO1xuICAgICAgICByZXMuZW5kKFwiYm9keVwiKTtcbiAgICAgIH0sXG4gICAgICB7IGNvbXByZXNzOiBmYWxzZSB9LFxuICAgICk7XG4gICAgZXhwZWN0KHNpbmsuaGVhZD8uaGVhZGVyc1tcImNvbnRlbnQtZW5jb2RpbmdcIl0pLnRvQmVVbmRlZmluZWQoKTtcbiAgfSk7XG5cbiAgaXQuZWFjaChbXG4gICAgW1wiYSBIRUFEIHJlcXVlc3RcIiwgeyBtZXRob2Q6IFwiSEVBRFwiLCBzdGF0dXM6IDIwMCB9XSxcbiAgICBbXCJhIDIwNFwiLCB7IG1ldGhvZDogXCJHRVRcIiwgc3RhdHVzOiAyMDQgfV0sXG4gICAgW1wiYSAzMDRcIiwgeyBtZXRob2Q6IFwiR0VUXCIsIHN0YXR1czogMzA0IH1dLFxuICBdKShcImRvZXMgbm90IGd6aXAgJXNcIiwgYXN5bmMgKF9uYW1lLCB7IG1ldGhvZCwgc3RhdHVzIH0pID0+IHtcbiAgICBjb25zdCBzaW5rID0gYXdhaXQgcnVuKFxuICAgICAgKHJlcykgPT4ge1xuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IHN0YXR1cztcbiAgICAgICAgcmVzLnNldEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBcInRleHQvaHRtbFwiKTtcbiAgICAgICAgcmVzLmVuZCgpO1xuICAgICAgfSxcbiAgICAgIHsgcmVxOiByZXF1ZXN0V2l0aCh7IFwiYWNjZXB0LWVuY29kaW5nXCI6IFwiZ3ppcFwiIH0sIG1ldGhvZCkgfSxcbiAgICApO1xuICAgIGV4cGVjdChzaW5rLmhlYWQ/LmhlYWRlcnNbXCJjb250ZW50LWVuY29kaW5nXCJdKS50b0JlVW5kZWZpbmVkKCk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKFwicGlwZVRvU2luayBlbXB0eS1ib2R5IHBhZGRpbmdcIiwgKCkgPT4ge1xuICBpdChcIndyaXRlcyBhIHNpbmdsZSBzcGFjZSB3aGVuIHRoZSBzaW5rIGFza3MgZm9yIGl0XCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBzaW5rID0gYXdhaXQgcnVuKFxuICAgICAgKHJlcykgPT4ge1xuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDMwNDtcbiAgICAgICAgcmVzLmVuZCgpO1xuICAgICAgfSxcbiAgICAgIHsgcGFkRW1wdHlCb2R5OiB0cnVlIH0sXG4gICAgKTtcbiAgICAvLyBaZXJvIHBheWxvYWQgYnl0ZXMgYWZ0ZXIgdGhlIHByZWx1ZGUgbWFrZXMgQVBJIEdhdGV3YXkgYW5zd2VyIDUwMiwgYW5kXG4gICAgLy8gbWFrZXMgYSBGdW5jdGlvbiBVUkwgZHJvcCB0aGUgcHJlbHVkZSBhbmQgYW5zd2VyIGEgYmFyZVxuICAgIC8vIGAyMDAgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtYC5cbiAgICBleHBlY3Qoc2luay5ib2R5LnRvU3RyaW5nKFwidXRmLThcIikpLnRvQmUoXCIgXCIpO1xuICB9KTtcblxuICBpdChcInBhZHMgYSBIRUFEIHJlc3BvbnNlLCB3aG9zZSBib2R5IGlzIGVtcHR5IGJ5IGRlZmluaXRpb25cIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHNpbmsgPSBhd2FpdCBydW4oXG4gICAgICAocmVzKSA9PiB7XG4gICAgICAgIHJlcy5zZXRIZWFkZXIoXCJjb250ZW50LXR5cGVcIiwgXCJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLThcIik7XG4gICAgICAgIHJlcy5zZXRIZWFkZXIoXCJjb250ZW50LWxlbmd0aFwiLCBcIjU3OThcIik7XG4gICAgICAgIHJlcy5lbmQoKTtcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHBhZEVtcHR5Qm9keTogdHJ1ZSxcbiAgICAgICAgcmVxOiByZXF1ZXN0V2l0aCh7IFwiYWNjZXB0LWVuY29kaW5nXCI6IFwiZ3ppcFwiIH0sIFwiSEVBRFwiKSxcbiAgICAgIH0sXG4gICAgKTtcbiAgICBleHBlY3Qoc2luay5ib2R5LnRvU3RyaW5nKFwidXRmLThcIikpLnRvQmUoXCIgXCIpO1xuICAgIC8vIFRoZSBoZWFkIHN0aWxsIGRlc2NyaWJlcyB3aGF0IGEgR0VUIHdvdWxkIHJldHVybjsgdGhlIHBhZGRpbmcgYnl0ZSBpcyBub3RcbiAgICAvLyBhIGJvZHkgYW5kIHRoZSBpbnRlZ3JhdGlvbiBvdmVyd3JpdGVzIGBjb250ZW50LWxlbmd0aGAgd2l0aCAwLlxuICAgIGV4cGVjdChzaW5rLmhlYWQ/LmhlYWRlcnNbXCJjb250ZW50LWxlbmd0aFwiXSkudG9CZShcIjU3OThcIik7XG4gIH0pO1xuXG4gIGl0KFwibGVhdmVzIGEgbm9uLWVtcHR5IGJvZHkgYWxvbmVcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHNpbmsgPSBhd2FpdCBydW4oKHJlcykgPT4gcmVzLmVuZChcInJlYWxcIiksIHtcbiAgICAgIHBhZEVtcHR5Qm9keTogdHJ1ZSxcbiAgICAgIGNvbXByZXNzOiBmYWxzZSxcbiAgICB9KTtcbiAgICBleHBlY3Qoc2luay5ib2R5LnRvU3RyaW5nKFwidXRmLThcIikpLnRvQmUoXCJyZWFsXCIpO1xuICB9KTtcblxuICBpdChcInNlbmRzIG5vdGhpbmcgZm9yIGFuIGVtcHR5IGJvZHkgd2hlbiB0aGUgc2luayBkb2VzIG5vdCBhc2tcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHNpbmsgPSBhd2FpdCBydW4oKHJlcykgPT4ge1xuICAgICAgcmVzLnN0YXR1c0NvZGUgPSAzMDQ7XG4gICAgICByZXMuZW5kKCk7XG4gICAgfSk7XG4gICAgZXhwZWN0KHNpbmsuYm9keSkudG9IYXZlTGVuZ3RoKDApO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcInBpcGVUb1NpbmsgbGlmZWN5Y2xlXCIsICgpID0+IHtcbiAgLyoqXG4gICAqIGBoYW5kbGUoKWAgYXdhaXRzIHRoaXMgcHJvbWlzZSBiZWZvcmUgaXQgZmx1c2hlcyBgd2FpdFVudGlsYCB3b3JrIOKAlCBJU1JcbiAgICogcmV2YWxpZGF0aW9uLCBjYWNoZSB3cml0ZXMg4oCUIGFuZCBiZWZvcmUgdGhlIHJlcXVlc3QncyBjbG9zdXJlcyBjYW4gYmVcbiAgICogY29sbGVjdGVkLiBBIGNsaWVudCB0aGF0IGRpc2Nvbm5lY3RzIGJlZm9yZSB0aGUgZmlyc3QgYnl0ZSBkZXN0cm95cyB0aGVcbiAgICogcmVzcG9uc2Ugd2l0aG91dCBhbiBlcnJvciwgd2hpY2ggZW1pdHMgb25seSBgXCJjbG9zZVwiYDogdGhlIHBpcGVsaW5lIG5ldmVyXG4gICAqIHN0YXJ0ZWQsIHNvIG5vdGhpbmcgZWxzZSBjYW4gc2V0dGxlIHRoZSBwcm9taXNlIGFuZCB0aGUgYXdhaXQgbmV2ZXIgcmV0dXJuZWQuXG4gICAqL1xuICBpdChcInNldHRsZXMgd2hlbiB0aGUgcmVzcG9uc2UgaXMgZGVzdHJveWVkIGJlZm9yZSB0aGUgaGVhZCBnb2VzIG91dFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVxID0gcmVxdWVzdFdpdGgoe30pO1xuICAgIGNvbnN0IHJlcyA9IG5ldyBTaGltU2VydmVyUmVzcG9uc2UoKTtcbiAgICBjb25zdCBkb25lID0gcGlwZVRvU2luayhyZXEsIHJlcywgbmV3IENvbGxlY3RpbmdTaW5rKCksIHtcbiAgICAgIGNvbXByZXNzOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgcmVzLmRlc3Ryb3koKTtcblxuICAgIGF3YWl0IGV4cGVjdChkb25lKS5yZXNvbHZlcy50b0JlVW5kZWZpbmVkKCk7XG4gIH0pO1xuXG4gIC8vIFRoZSBub3JtYWwgcGF0aCBoYXMgdG8ga2VlcCBzZXR0bGluZyBvbiB0aGUgcGlwZWxpbmUsIG5vdCBvbiBgXCJjbG9zZVwiYDogdGhlXG4gIC8vIGJvZHkgbXVzdCBiZSBmdWxseSBmbHVzaGVkIGludG8gdGhlIHNpbmsgYnkgdGhlIHRpbWUgdGhpcyByZXNvbHZlcy5cbiAgaXQoXCJzdGlsbCBzZXR0bGVzIG9uIHRoZSBwaXBlbGluZSBvbmNlIHRoZSBoZWFkIGhhcyBnb25lIG91dFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgc2luayA9IGF3YWl0IHJ1bihcbiAgICAgIChyZXMpID0+IHtcbiAgICAgICAgcmVzLnNldEhlYWRlcihcImNvbnRlbnQtdHlwZVwiLCBcInRleHQvcGxhaW5cIik7XG4gICAgICAgIHJlcy5lbmQoXCJib2R5XCIpO1xuICAgICAgfSxcbiAgICAgIHsgY29tcHJlc3M6IGZhbHNlIH0sXG4gICAgKTtcblxuICAgIGV4cGVjdChzaW5rLmJvZHkudG9TdHJpbmcoKSkudG9CZShcImJvZHlcIik7XG4gIH0pO1xuXG4gIGl0KFwicmVqZWN0cyB3aGVuIHRoZSByZXNwb25zZSBlcnJvcnNcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlcSA9IHJlcXVlc3RXaXRoKHt9KTtcbiAgICBjb25zdCByZXMgPSBuZXcgU2hpbVNlcnZlclJlc3BvbnNlKCk7XG4gICAgY29uc3QgZG9uZSA9IHBpcGVUb1NpbmsocmVxLCByZXMsIG5ldyBDb2xsZWN0aW5nU2luaygpLCB7XG4gICAgICBjb21wcmVzczogdHJ1ZSxcbiAgICB9KTtcblxuICAgIHJlcy5kZXN0cm95KG5ldyBFcnJvcihcImJvb21cIikpO1xuXG4gICAgYXdhaXQgZXhwZWN0KGRvbmUpLnJlamVjdHMudG9UaHJvdyhcImJvb21cIik7XG4gIH0pO1xuXG4gIC8vIEEgc2luayB0aGF0IGNhbm5vdCB0YWtlIHRoZSBoZWFkIOKAlCBgd3JpdGVIZWFkYCByZWplY3RpbmcgYSBoZWFkZXIgdmFsdWUgaXNcbiAgLy8gdGhlIHJlYWwgY2FzZSDigJQgdGhyb3dzIGZyb20gaW5zaWRlIHRoZSBgXCJoZWFkXCJgIGxpc3RlbmVyLCB3aGVyZSBub3RoaW5nXG4gIC8vIGVsc2Ugd291bGQgY2F0Y2ggaXQgYW5kIHRoZSBwaXBlbGluZSBuZXZlciBzdGFydHMuXG4gIGl0LmVhY2goW1xuICAgIFtcIndyaXRlcyBhIGJvZHlcIiwgKHJlczogU2hpbVNlcnZlclJlc3BvbnNlKSA9PiByZXMuZW5kKFwiYm9keVwiKV0sXG4gICAgW1wiZW5kcyBlbXB0eVwiLCAocmVzOiBTaGltU2VydmVyUmVzcG9uc2UpID0+IHJlcy5lbmQoKV0sXG4gICAgW1wiZmx1c2hlcyBpdHMgaGVhZCBmaXJzdFwiLCAocmVzOiBTaGltU2VydmVyUmVzcG9uc2UpID0+IHJlcy53cml0ZUhlYWQoMjAwKV0sXG4gIF0pKFxuICAgIFwicmVqZWN0cyBhbmQgZGVzdHJveXMgdGhlIHJlc3BvbnNlIHdoZW4gYmVnaW4oKSB0aHJvd3MgYW5kIHRoZSByZXNwb25zZSAlc1wiLFxuICAgIGFzeW5jIChfbmFtZSwgd3JpdGUpID0+IHtcbiAgICAgIGNvbnN0IHJlcSA9IHJlcXVlc3RXaXRoKHt9KTtcbiAgICAgIGNvbnN0IHJlcyA9IG5ldyBTaGltU2VydmVyUmVzcG9uc2UoKTtcbiAgICAgIGNvbnN0IGRvbmUgPSBwaXBlVG9TaW5rKFxuICAgICAgICByZXEsXG4gICAgICAgIHJlcyxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luKCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiYmFkIGhlYWRcIik7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgeyBjb21wcmVzczogZmFsc2UgfSxcbiAgICAgICk7XG5cbiAgICAgIHdyaXRlKHJlcyk7XG5cbiAgICAgIGF3YWl0IGV4cGVjdChkb25lKS5yZWplY3RzLnRvVGhyb3coXCJiYWQgaGVhZFwiKTtcbiAgICAgIGV4cGVjdChyZXMuZGVzdHJveWVkKS50b0JlKHRydWUpO1xuICAgIH0sXG4gICk7XG59KTtcblxuZGVzY3JpYmUoXCJhY2NlcHRzR3ppcFwiLCAoKSA9PiB7XG4gIGl0LmVhY2goW1xuICAgIFtcImd6aXBcIiwgdHJ1ZV0sXG4gICAgW1wiZ3ppcCwgZGVmbGF0ZSwgYnJcIiwgdHJ1ZV0sXG4gICAgW1wiR1pJUDtxPTAuNVwiLCB0cnVlXSxcbiAgICBbXCJnemlwO3E9MFwiLCBmYWxzZV0sXG4gICAgW1wiKlwiLCB0cnVlXSxcbiAgICBbXCIqO3E9MFwiLCBmYWxzZV0sXG4gICAgLy8gQW4gZXhwbGljaXQgZ3ppcCBwcmVmZXJlbmNlIHdpbnMgb3ZlciB0aGUgd2lsZGNhcmQsIGluIGVpdGhlciBvcmRlci5cbiAgICBbXCIqO3E9MCwgZ3ppcFwiLCB0cnVlXSxcbiAgICBbXCJnemlwO3E9MCwgKlwiLCBmYWxzZV0sXG4gICAgW1wiYnIsIGRlZmxhdGVcIiwgZmFsc2VdLFxuICAgIFtcIlwiLCBmYWxzZV0sXG4gICAgW3VuZGVmaW5lZCwgZmFsc2VdLFxuICBdKShcIiVzIOKGkiAlc1wiLCAoaGVhZGVyLCBleHBlY3RlZCkgPT4ge1xuICAgIGV4cGVjdChhY2NlcHRzR3ppcChoZWFkZXIpKS50b0JlKGV4cGVjdGVkKTtcbiAgfSk7XG5cbiAgaXQoXCJqb2lucyBhIHJlcGVhdGVkIGhlYWRlciBiZWZvcmUgcGFyc2luZ1wiLCAoKSA9PiB7XG4gICAgZXhwZWN0KGFjY2VwdHNHemlwKFtcImJyXCIsIFwiZ3ppcFwiXSkpLnRvQmUodHJ1ZSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -37036,7 +37036,7 @@ var require_package = __commonJS({
37036
37036
  publishConfig: {
37037
37037
  access: "public"
37038
37038
  },
37039
- version: "0.7.15",
37039
+ version: "0.7.16",
37040
37040
  packageManager: "pnpm@10.32.1",
37041
37041
  jest: {
37042
37042
  coverageProvider: "v8",
@@ -38135,6 +38135,13 @@ var ShimServerResponse = class extends Transform {
38135
38135
  this.flushHeaders();
38136
38136
  callback();
38137
38137
  }
38138
+ /**
38139
+ * What the `compression` middleware adds under `next start`, kept for app
38140
+ * code that calls it, such as `res.write(event); res.flush()` in a Pages API
38141
+ * route. A no-op: the sink's gzip stage already sync-flushes every chunk.
38142
+ */
38143
+ flush() {
38144
+ }
38138
38145
  // --- the rest of the ServerResponse surface -------------------------------
38139
38146
  addTrailers() {
38140
38147
  return unsupported("addTrailers");
@@ -37036,7 +37036,7 @@ var require_package = __commonJS({
37036
37036
  publishConfig: {
37037
37037
  access: "public"
37038
37038
  },
37039
- version: "0.7.15",
37039
+ version: "0.7.16",
37040
37040
  packageManager: "pnpm@10.32.1",
37041
37041
  jest: {
37042
37042
  coverageProvider: "v8",
@@ -38135,6 +38135,13 @@ var ShimServerResponse = class extends Transform {
38135
38135
  this.flushHeaders();
38136
38136
  callback();
38137
38137
  }
38138
+ /**
38139
+ * What the `compression` middleware adds under `next start`, kept for app
38140
+ * code that calls it, such as `res.write(event); res.flush()` in a Pages API
38141
+ * route. A no-op: the sink's gzip stage already sync-flushes every chunk.
38142
+ */
38143
+ flush() {
38144
+ }
38138
38145
  // --- the rest of the ServerResponse surface -------------------------------
38139
38146
  addTrailers() {
38140
38147
  return unsupported("addTrailers");
package/package.json CHANGED
@@ -85,7 +85,7 @@
85
85
  "publishConfig": {
86
86
  "access": "public"
87
87
  },
88
- "version": "0.7.15",
88
+ "version": "0.7.16",
89
89
  "jest": {
90
90
  "coverageProvider": "v8",
91
91
  "testPathIgnorePatterns": [