@aws-cdk/integ-runner 2.193.4 → 2.193.5

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.
@@ -125,6 +125,7 @@ class ToolkitLibRunnerEngine {
125
125
  traceLogs: options.traceLogs,
126
126
  stacks: this.stackSelector(options),
127
127
  deploymentMethod: this.deploymentMethod(options),
128
+ outputsFile: options.outputsFile ? path.join(this.options.workingDirectory, options.outputsFile) : undefined,
128
129
  });
129
130
  }
130
131
  /**
@@ -304,4 +305,4 @@ class NoopIoHost {
304
305
  return msg.defaultResponse;
305
306
  }
306
307
  }
307
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGtpdC1saWIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0b29sa2l0LWxpYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxrQ0FBa0M7QUFHbEMsNENBQWlEO0FBRWpELHNEQUFtSjtBQUNuSiwrQkFBK0I7QUFDL0IsK0JBQStCO0FBcUMvQjs7R0FFRztBQUNILE1BQWEsc0JBQXNCO0lBTWpDLFlBQW1CLE9BQWdDO1FBQ2pELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUM7UUFFOUMsd0VBQXdFO1FBQ3hFLGdDQUFnQztRQUNoQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUV0QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUkscUJBQU8sQ0FBQztZQUN6QixNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLEVBQUU7WUFDeEQsU0FBUyxFQUFFO2dCQUNULGVBQWUsRUFBRSw2QkFBZSxDQUFDLGdCQUFnQixDQUFDO29CQUNoRCxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87b0JBQ3hCLGFBQWEsRUFBRSxPQUFPLENBQUMsTUFBTTtpQkFDOUIsQ0FBQzthQUNIO1lBQ0Qsb0VBQW9FO1lBQ3BFLHVEQUF1RDtZQUN2RCx1Q0FBdUM7WUFDdkMsRUFBRTtZQUNGLGNBQWM7WUFDZCwrREFBK0Q7WUFDL0QsVUFBVTtZQUNWLG1CQUFtQjtZQUNuQixNQUFNO1lBQ04scUJBQXFCO1lBQ3JCLG1CQUFtQjtZQUNuQiwwQkFBMEI7U0FDM0IsQ0FBQyxDQUFDO1FBRUgsd0ZBQXdGO1FBQ3hGLG1CQUFtQjtRQUNuQixtQkFBbUI7UUFDbkIscUJBQXFCO1FBQ3JCLGtCQUFrQjtJQUNwQixDQUFDO0lBRUQ7O09BRUc7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QUNQLEtBQUssQ0FBQyxNQUFNO0lBQ25CLENBQUM7SUFDTSxLQUFLLENBQUMsZUFBZSxDQUFJLEdBQTBCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLGVBQWUsQ0FBQztJQUM3QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgdHlwZSB7IERlcGxveU9wdGlvbnMsIElDZGssIExpc3RPcHRpb25zLCBTeW50aEZhc3RPcHRpb25zLCBTeW50aE9wdGlvbnMsIFdhdGNoRXZlbnRzIH0gZnJvbSAnQGF3cy1jZGsvY2RrLWNsaS13cmFwcGVyJztcbmltcG9ydCB0eXBlIHsgRGVmYXVsdENka09wdGlvbnMsIERlc3Ryb3lPcHRpb25zIH0gZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hL2xpYi9pbnRlZy10ZXN0cyc7XG5pbXBvcnQgeyBVTktOT1dOX1JFR0lPTiB9IGZyb20gJ0Bhd3MtY2RrL2N4LWFwaSc7XG5pbXBvcnQgdHlwZSB7IERlcGxveW1lbnRNZXRob2QsIElDbG91ZEFzc2VtYmx5U291cmNlLCBJSW9Ib3N0LCBJb01lc3NhZ2UsIElvUmVxdWVzdCwgSVJlYWRhYmxlQ2xvdWRBc3NlbWJseSwgTm9uSW50ZXJhY3RpdmVJb0hvc3RQcm9wcywgU3RhY2tTZWxlY3RvciB9IGZyb20gJ0Bhd3MtY2RrL3Rvb2xraXQtbGliJztcbmltcG9ydCB7IEJhc2VDcmVkZW50aWFscywgRXhwYW5kU3RhY2tTZWxlY3Rpb24sIE1lbW9yeUNvbnRleHQsIE5vbkludGVyYWN0aXZlSW9Ib3N0LCBTdGFja1NlbGVjdGlvblN0cmF0ZWd5LCBUb29sa2l0IH0gZnJvbSAnQGF3cy1jZGsvdG9vbGtpdC1saWInO1xuaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRvb2xraXRMaWJFbmdpbmVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBkaXJlY3RvcnkgdG8gcnVuIHRoZSBjZGsgY29tbWFuZHMgZnJvbVxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2luZ0RpcmVjdG9yeTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXRcbiAgICogaW4gdGhlIGV4ZWN1dGlvbiBlbnZpcm9ubWVudCB0aGF0IHdpbGwgYmUgcnVubmluZ1xuICAgKiB0aGUgY2RrIGFwcFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGFkZGl0aW9uYWwgZW52IHZhcnNcbiAgICovXG4gIHJlYWRvbmx5IGVudj86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBvdXRwdXQgZnJvbSBydW5uaW5nIHRoZSBDREsgQ0xJXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzaG93T3V0cHV0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHJlZ2lvbiB0aGUgQ0RLIGFwcCBzaG91bGQgc3ludGhlc2l6ZSBpdHNlbGYgZm9yXG4gICAqL1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFXUyBwcm9maWxlIHRvIHVzZSB3aGVuIGF1dGhlbnRpY2F0aW5nXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcHJvZmlsZSBpcyBwYXNzZWQsIHRoZSBkZWZhdWx0IHByb2ZpbGUgaXMgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZmlsZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHJ1bm5lciBlbmdpbmUgcG93ZXJlZCBkaXJlY3RseSBieSB0aGUgdG9vbGtpdC1saWJcbiAqL1xuZXhwb3J0IGNsYXNzIFRvb2xraXRMaWJSdW5uZXJFbmdpbmUgaW1wbGVtZW50cyBJQ2RrIHtcbiAgcHJpdmF0ZSByZWFkb25seSB0b29sa2l0OiBUb29sa2l0O1xuICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IFRvb2xraXRMaWJFbmdpbmVPcHRpb25zO1xuICBwcml2YXRlIHJlYWRvbmx5IHNob3dPdXRwdXQ6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgaW9Ib3N0OiBJbnRlZ1J1bm5lcklvSG9zdDtcblxuICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9uczogVG9vbGtpdExpYkVuZ2luZU9wdGlvbnMpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuc2hvd091dHB1dCA9IG9wdGlvbnMuc2hvd091dHB1dCA/PyBmYWxzZTtcblxuICAgIC8vIFdlIGFsd2F5cyBjcmVhdGUgdGhpcyBmb3Igb3Vyc2VsdmVzIHRvIGVtaXQgd2FybmluZ3MsIGJ1dCBwb3RlbnRpYWxseVxuICAgIC8vIGRvbid0IHBhc3MgaXQgdG8gdGhlIHRvb2xraXQuXG4gICAgdGhpcy5pb0hvc3QgPSBuZXcgSW50ZWdSdW5uZXJJb0hvc3QoKTtcblxuICAgIHRoaXMudG9vbGtpdCA9IG5ldyBUb29sa2l0KHtcbiAgICAgIGlvSG9zdDogdGhpcy5zaG93T3V0cHV0ID8gdGhpcy5pb0hvc3QgOiBuZXcgTm9vcElvSG9zdCgpLFxuICAgICAgc2RrQ29uZmlnOiB7XG4gICAgICAgIGJhc2VDcmVkZW50aWFsczogQmFzZUNyZWRlbnRpYWxzLmF3c0NsaUNvbXBhdGlibGUoe1xuICAgICAgICAgIHByb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSxcbiAgICAgICAgICBkZWZhdWx0UmVnaW9uOiBvcHRpb25zLnJlZ2lvbixcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgICAgLy8gQFRPRE8gLSB0aGVzZSBvcHRpb25zIGFyZSBjdXJyZW50bHkgYXZhaWxhYmxlIG9uIHRoZSBhY3Rpb24gY2FsbHNcbiAgICAgIC8vIGJ1dCB0b29sa2l0LWxpYiBuZWVkcyB0aGVtIGF0IHRoZSBjb25zdHJ1Y3RvciBsZXZlbC5cbiAgICAgIC8vIE5lZWQgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aCB0aGVtLlxuICAgICAgLy9cbiAgICAgIC8vIFZhbGlkYXRpb25zXG4gICAgICAvLyAgLSBhc3NlbWJseUZhaWx1cmVBdDogb3B0aW9ucy5zdHJpY3QgPz8gb3B0aW9ucy5pZ25vcmVFcnJvcnNcbiAgICAgIC8vIExvZ2dpbmdcbiAgICAgIC8vICAtIG9wdGlvbnMuY29sb3JcbiAgICAgIC8vIFNES1xuICAgICAgLy8gIC0gb3B0aW9ucy5wcm9maWxlXG4gICAgICAvLyAgLSBvcHRpb25zLnByb3h5XG4gICAgICAvLyAgLSBvcHRpb25zLmNhQnVuZGxlUGF0aFxuICAgIH0pO1xuXG4gICAgLy8gQFRPRE8gLSBzaW1pbGFyIHRvIHRoZSBhYm92ZSwgYnV0IGluIHRvb2xraXQtbGliIHRoZXNlIG9wdGlvbnMgd291bGQgZ28gb24gdGhlIElvSG9zdFxuICAgIC8vICAtIG9wdGlvbnMucXVpZXRcbiAgICAvLyAgLSBvcHRpb25zLnRyYWNlXG4gICAgLy8gIC0gb3B0aW9ucy52ZXJib3NlXG4gICAgLy8gIC0gb3B0aW9ucy5qc29uXG4gIH1cblxuICAvKipcbiAgICogU3ludGhlc2l6ZXMgdGhlIENESyBhcHAgdGhyb3VnaCB0aGUgVG9vbGtpdFxuICAgKi9cbiAgcHVibGljIGFzeW5jIHN5bnRoKG9wdGlvbnM6IFN5bnRoT3B0aW9ucykge1xuICAgIGNvbnN0IGN4ID0gYXdhaXQgdGhpcy5jeChvcHRpb25zKTtcbiAgICBjb25zdCBsb2NrID0gYXdhaXQgdGhpcy50b29sa2l0LnN5bnRoKGN4LCB7XG4gICAgICBzdGFja3M6IHRoaXMuc3RhY2tTZWxlY3RvcihvcHRpb25zKSxcbiAgICAgIHZhbGlkYXRlU3RhY2tzOiBvcHRpb25zLnZhbGlkYXRpb24sXG4gICAgfSk7XG4gICAgYXdhaXQgdGhpcy52YWxpZGF0ZVJlZ2lvbihsb2NrKTtcbiAgICBhd2FpdCBsb2NrLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTeW50aGVzaXplcyB0aGUgQ0RLIGFwcCBxdWlja2x5LCBieSBieXBhc3NpbmcgdGhlIFRvb2xraXQgYW5kIGp1c3QgaW52b2tpbmcgdGhlIGFwcCBjb21tYW5kXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc3ludGhGYXN0KG9wdGlvbnM6IFN5bnRoRmFzdE9wdGlvbnMpIHtcbiAgICBjb25zdCBjeCA9IGF3YWl0IHRoaXMudG9vbGtpdC5mcm9tQ2RrQXBwKG9wdGlvbnMuZXhlY0NtZC5qb2luKCcgJyksIHtcbiAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHRoaXMub3B0aW9ucy53b3JraW5nRGlyZWN0b3J5LFxuICAgICAgb3V0ZGlyOiBvcHRpb25zLm91dHB1dCA/IHBhdGguam9pbih0aGlzLm9wdGlvbnMud29ya2luZ0RpcmVjdG9yeSwgb3B0aW9ucy5vdXRwdXQpIDogdW5kZWZpbmVkLFxuICAgICAgY29udGV4dFN0b3JlOiBuZXcgTWVtb3J5Q29udGV4dChvcHRpb25zLmNvbnRleHQpLFxuICAgICAgbG9va3VwczogZmFsc2UsXG4gICAgICByZXNvbHZlRGVmYXVsdEVudmlyb25tZW50OiBmYWxzZSxcbiAgICAgIGVudjoge1xuICAgICAgICAuLi50aGlzLm9wdGlvbnMuZW52LFxuICAgICAgICAuLi5vcHRpb25zLmVudixcbiAgICAgIH0sXG4gICAgICBzeW50aE9wdGlvbnM6IHtcbiAgICAgICAgdmVyc2lvblJlcG9ydGluZzogZmFsc2UsXG4gICAgICAgIHBhdGhNZXRhZGF0YTogZmFsc2UsXG4gICAgICAgIGFzc2V0TWV0YWRhdGE6IGZhbHNlLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBAVE9ETyAtIHVzZSBwcm9kdWNlIHRvIG1pbWljIHRoZSBjdXJyZW50IGJlaGF2aW9yIG1vcmUgY2xvc2VseVxuICAgICAgY29uc3QgbG9jayA9IGF3YWl0IGN4LnByb2R1Y2UoKTtcbiAgICAgIGF3YWl0IHRoaXMudmFsaWRhdGVSZWdpb24obG9jayk7XG4gICAgICBhd2FpdCBsb2NrLmRpc3Bvc2UoKTtcbiAgICAgIC8vIFdlIHNob3VsZCBmaXggdGhpcyBvbmNlIHdlIGhhdmUgc3RhYmlsaXplZCB0b29sa2l0LWxpYiBhcyBlbmdpbmUuXG4gICAgICAvLyBXaGF0IHdlIHJlYWxseSBzaG91bGQgZG8gaXMgdGhpczpcbiAgICAgIC8vIGNvbnN0IGxvY2sgPSBhd2FpdCB0aGlzLnRvb2xraXQuc3ludGgoY3gsIHtcbiAgICAgIC8vICAgdmFsaWRhdGVTdGFja3M6IGZhbHNlLFxuICAgICAgLy8gfSk7XG4gICAgICAvLyBhd2FpdCBsb2NrLmRpc3Bvc2UoKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGlmIChlLm1lc3NhZ2UuaW5jbHVkZXMoJ01pc3NpbmcgY29udGV4dCBrZXlzJykpIHtcbiAgICAgICAgLy8gQFRPRE8gLSBzaWxlbnRseSBpZ25vcmUgbWlzc2luZyBjb250ZXh0XG4gICAgICAgIC8vIFRoaXMgaXMgYWN0dWFsbHkgYW4gdW5kZWZpbmVkIGNhc2UgaW4gdGhlIG9sZCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggZG9lc24ndCB1c2UgdGhlIHRvb2xraXQgY29kZVxuICAgICAgICAvLyBhbmQgd29uJ3QgZmFpbCBmb3IgbWlzc2luZyBjb250ZXh0LiBUbyBwZXJzZXZlcmUgZXhpc3RpbmcgYmVoYXZpb3IsIHdlIGRvIHRoZSBzYW1lIGhlcmUuXG4gICAgICAgIC8vIEhvd2V2ZXIgaW4gZnV0dXJlIHdlIG5lZWQgdG8gZmluZCBhIHdheSBmb3IgaW50ZWcgdGVzdHMgdG8gcHJvdmlkZSBjb250ZXh0IHRocm91Z2ggc25hcHNob3RzLlxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0cyB0aGUgc3RhY2tzIGluIHRoZSBDREsgYXBwXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbGlzdChvcHRpb25zOiBMaXN0T3B0aW9ucyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAvLyBAVE9ETyAtIGV4aXN0aW5nIGxpc3Qgc3BlY2lmaWMgb3B0aW9uLCBkb2Vzbid0IHJlYWxseSBtYWtlIHNlbnNlIHRvIHN1cHBvcnQgdGhpcyBpbiB0aGUgY29udGV4dCBvZiBpbnRlZy1ydW5uZXJcbiAgICAvLyAgLSBvcHRpb25zLmxvbmdcblxuICAgIGNvbnN0IGN4ID0gYXdhaXQgdGhpcy5jeChvcHRpb25zKTtcbiAgICBjb25zdCBzdGFja3MgPSBhd2FpdCB0aGlzLnRvb2xraXQubGlzdChjeCwge1xuICAgICAgc3RhY2tzOiB0aGlzLnN0YWNrU2VsZWN0b3Iob3B0aW9ucyksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3RhY2tzLm1hcChzID0+IHMubmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogRGVwbG95cyB0aGUgQ0RLIGFwcFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGRlcGxveShvcHRpb25zOiBEZXBsb3lPcHRpb25zKSB7XG4gICAgLy8gQFRPRE8gLSBleGlzdGluZyBkZXBsb3kgc3BlY2lmaWMgb3B0aW9uLCBkb2Vzbid0IHJlYWxseSBtYWtlIHNlbnNlIHRvIHN1cHBvcnQgdGhpcyBpbiB0aGUgY29udGV4dCBvZiBpbnRlZy1ydW5uZXJcbiAgICAvLyAgLSBvcHRpb25zLnByb2dyZXNzXG5cbiAgICBpZiAob3B0aW9ucy53YXRjaCkge1xuICAgICAgcmV0dXJuIHRoaXMud2F0Y2gob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgY29uc3QgY3ggPSBhd2FpdCB0aGlzLmN4KG9wdGlvbnMpO1xuICAgIGF3YWl0IHRoaXMudG9vbGtpdC5kZXBsb3koY3gsIHtcbiAgICAgIHJvbGVBcm46IG9wdGlvbnMucm9sZUFybixcbiAgICAgIHRyYWNlTG9nczogb3B0aW9ucy50cmFjZUxvZ3MsXG4gICAgICBzdGFja3M6IHRoaXMuc3RhY2tTZWxlY3RvcihvcHRpb25zKSxcbiAgICAgIGRlcGxveW1lbnRNZXRob2Q6IHRoaXMuZGVwbG95bWVudE1ldGhvZChvcHRpb25zKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXYXRjaGVzIHRoZSBDREsgYXBwIGZvciBjaGFuZ2VzIGFuZCBkZXBsb3lzIHRoZW0gYXV0b21hdGljYWxseVxuICAgKi9cbiAgcHVibGljIGFzeW5jIHdhdGNoKG9wdGlvbnM6IERlcGxveU9wdGlvbnMsIGV2ZW50cz86IFdhdGNoRXZlbnRzKSB7XG4gICAgY29uc3QgY3ggPSBhd2FpdCB0aGlzLmN4KG9wdGlvbnMpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB3YXRjaGVyID0gYXdhaXQgdGhpcy50b29sa2l0LndhdGNoKGN4LCB7XG4gICAgICAgIHJvbGVBcm46IG9wdGlvbnMucm9sZUFybixcbiAgICAgICAgdHJhY2VMb2dzOiBvcHRpb25zLnRyYWNlTG9ncyxcbiAgICAgICAgc3RhY2tzOiB0aGlzLnN0YWNrU2VsZWN0b3Iob3B0aW9ucyksXG4gICAgICAgIGRlcGxveW1lbnRNZXRob2Q6IHRoaXMuZGVwbG95bWVudE1ldGhvZChvcHRpb25zKSxcbiAgICAgIH0pO1xuICAgICAgYXdhaXQgd2F0Y2hlci53YWl0Rm9yRW5kKCk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgaWYgKGV2ZW50cz8ub25TdGRlcnIpIHtcbiAgICAgICAgZXZlbnRzLm9uU3RkZXJyKFN0cmluZyhlKSk7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnRzPy5vbkNsb3NlKSB7XG4gICAgICAgIGV2ZW50cy5vbkNsb3NlKDEpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldmVudHM/Lm9uQ2xvc2UpIHtcbiAgICAgIGV2ZW50cy5vbkNsb3NlKDApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyB0aGUgQ0RLIGFwcFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGRlc3Ryb3kob3B0aW9uczogRGVzdHJveU9wdGlvbnMpIHtcbiAgICBjb25zdCBjeCA9IGF3YWl0IHRoaXMuY3gob3B0aW9ucyk7XG5cbiAgICBhd2FpdCB0aGlzLnRvb2xraXQuZGVzdHJveShjeCwge1xuICAgICAgcm9sZUFybjogb3B0aW9ucy5yb2xlQXJuLFxuICAgICAgc3RhY2tzOiB0aGlzLnN0YWNrU2VsZWN0b3Iob3B0aW9ucyksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIENsb3VkIEFzc2VtYmx5IFNvdXJjZSBmcm9tIHRoZSBwcm92aWRlZCBvcHRpb25zLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBjeChvcHRpb25zOiBEZWZhdWx0Q2RrT3B0aW9ucyk6IFByb21pc2U8SUNsb3VkQXNzZW1ibHlTb3VyY2U+IHtcbiAgICBpZiAoIW9wdGlvbnMuYXBwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGFwcCBwcm92aWRlZCcpO1xuICAgIH1cblxuICAgIC8vIGNoZWNrIGlmIHRoZSBhcHAgaXMgYSBwYXRoIHRvIGV4aXN0aW5nIHNuYXBzaG90IGFuZCB0aGVuIHVzZSBpdCBhcyBhbiBhc3NlbWJseSBkaXJlY3RvcnlcbiAgICBjb25zdCBwb3RlbnRpYWxDeFBhdGggPSBwYXRoLmpvaW4odGhpcy5vcHRpb25zLndvcmtpbmdEaXJlY3RvcnksIG9wdGlvbnMuYXBwKTtcbiAgICBpZiAoZnMucGF0aEV4aXN0c1N5bmMocG90ZW50aWFsQ3hQYXRoKSAmJiBmcy5zdGF0U3luYyhwb3RlbnRpYWxDeFBhdGgpLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnRvb2xraXQuZnJvbUFzc2VtYmx5RGlyZWN0b3J5KHBvdGVudGlhbEN4UGF0aCk7XG4gICAgfVxuXG4gICAgbGV0IG91dGRpcjtcbiAgICBpZiAob3B0aW9ucy5vdXRwdXQpIHtcbiAgICAgIG91dGRpciA9IHBhdGguam9pbih0aGlzLm9wdGlvbnMud29ya2luZ0RpcmVjdG9yeSwgb3B0aW9ucy5vdXRwdXQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRvb2xraXQuZnJvbUNka0FwcChvcHRpb25zLmFwcCwge1xuICAgICAgd29ya2luZ0RpcmVjdG9yeTogdGhpcy5vcHRpb25zLndvcmtpbmdEaXJlY3RvcnksXG4gICAgICBvdXRkaXIsXG4gICAgICBsb29rdXBzOiBvcHRpb25zLmxvb2t1cHMsXG4gICAgICBjb250ZXh0U3RvcmU6IG5ldyBNZW1vcnlDb250ZXh0KG9wdGlvbnMuY29udGV4dCksXG4gICAgICBlbnY6IHRoaXMub3B0aW9ucy5lbnYsXG4gICAgICBzeW50aE9wdGlvbnM6IHtcbiAgICAgICAgZGVidWc6IG9wdGlvbnMuZGVidWcsXG4gICAgICAgIHZlcnNpb25SZXBvcnRpbmc6IG9wdGlvbnMudmVyc2lvblJlcG9ydGluZyA/PyBmYWxzZSxcbiAgICAgICAgcGF0aE1ldGFkYXRhOiBvcHRpb25zLnBhdGhNZXRhZGF0YSA/PyBmYWxzZSxcbiAgICAgICAgYXNzZXRNZXRhZGF0YTogb3B0aW9ucy5hc3NldE1ldGFkYXRhID8/IGZhbHNlLFxuICAgICAgICBhc3NldFN0YWdpbmc6IG9wdGlvbnMuc3RhZ2luZyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIFN0YWNrU2VsZWN0b3IgZnJvbSB0aGUgcHJvdmlkZWQgb3B0aW9ucy5cbiAgICovXG4gIHByaXZhdGUgc3RhY2tTZWxlY3RvcihvcHRpb25zOiBEZWZhdWx0Q2RrT3B0aW9ucyAmIHsgcmVhZG9ubHkgZXhjbHVzaXZlbHk/OiBib29sZWFuIH0pOiBTdGFja1NlbGVjdG9yIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RyYXRlZ3k6IG9wdGlvbnMuYWxsID8gU3RhY2tTZWxlY3Rpb25TdHJhdGVneS5BTExfU1RBQ0tTIDogU3RhY2tTZWxlY3Rpb25TdHJhdGVneS5QQVRURVJOX01VU1RfTUFUQ0gsXG4gICAgICBwYXR0ZXJuczogb3B0aW9ucy5zdGFja3MgPz8gWycqKiddLFxuICAgICAgZXhwYW5kOiBvcHRpb25zLmV4Y2x1c2l2ZWx5ID8gRXhwYW5kU3RhY2tTZWxlY3Rpb24uTk9ORSA6IEV4cGFuZFN0YWNrU2VsZWN0aW9uLlVQU1RSRUFNLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIERlcGxveW1lbnRNZXRob2QgZnJvbSB0aGUgcHJvdmlkZWQgb3B0aW9ucy5cbiAgICovXG4gIHByaXZhdGUgZGVwbG95bWVudE1ldGhvZChvcHRpb25zOiBEZXBsb3lPcHRpb25zKTogRGVwbG95bWVudE1ldGhvZCB7XG4gICAgaWYgKG9wdGlvbnMuaG90c3dhcCAmJiBvcHRpb25zLmhvdHN3YXAgIT09ICdmdWxsLWRlcGxveW1lbnQnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtZXRob2Q6ICdob3Rzd2FwJyxcbiAgICAgICAgZmFsbGJhY2s6IG9wdGlvbnMuaG90c3dhcCA9PT0gJ2ZhbGwtYmFjaycgPyB7IG1ldGhvZDogJ2NoYW5nZS1zZXQnIH0gOiB1bmRlZmluZWQsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBtZXRob2Q6IG9wdGlvbnMuZGVwbG95bWVudE1ldGhvZCA/PyAnY2hhbmdlLXNldCcsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB0aGF0IHRoZSByZWdpb25zIGZvciB0aGUgc3RhY2tzIGluIHRoZSBDbG91ZEFzc2VtYmx5IG1hdGNoIHRoZSByZWdpb25zIHJlcXVlc3RlZCBvbiB0aGUgZW5naW5lXG4gICAqXG4gICAqIFRoaXMgcHJldmVudHMgbWlzY29uZmlndXJhdGlvbiBvZiB0aGUgaW50ZWcgdGVzdCBhcHAuIFBlb3BsZSB0ZW5kIHRvIHB1dDpcbiAgICpcbiAgICogYGBgdHNcbiAgICogbmV3IFN0YWNrKGFwcCwgJ1N0YWNrJywge1xuICAgKiAgIGVudjoge1xuICAgKiAgICAgcmVnaW9uOiAnc29tZS1yZWdpb24tdGhhdC1zdWl0cy1tZScsXG4gICAqICAgfVxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqIEludG8gdGhlaXIgaW50ZWcgdGVzdHMsIGluc3RlYWQgb2Y6XG4gICAqXG4gICAqIGBgYHRzXG4gICAqIHtcbiAgICogICByZWdpb246IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTixcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogVGhpcyBjYXRjaGVzIHRoYXQgbWlzY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgdmFsaWRhdGVSZWdpb24oYXNtOiBJUmVhZGFibGVDbG91ZEFzc2VtYmx5KSB7XG4gICAgZm9yIChjb25zdCBzdGFjayBvZiBhc20uY2xvdWRBc3NlbWJseS5zdGFja3NSZWN1cnNpdmVseSkge1xuICAgICAgaWYgKHN0YWNrLmVudmlyb25tZW50LnJlZ2lvbiAhPT0gdGhpcy5vcHRpb25zLnJlZ2lvbiAmJiBzdGFjay5lbnZpcm9ubWVudC5yZWdpb24gIT09IFVOS05PV05fUkVHSU9OKSB7XG4gICAgICAgIHRoaXMuaW9Ib3N0Lm5vdGlmeSh7XG4gICAgICAgICAgYWN0aW9uOiAnZGVwbG95JyxcbiAgICAgICAgICBjb2RlOiAnQ0RLX1JVTk5FUl9XMDAwMCcsXG4gICAgICAgICAgdGltZTogbmV3IERhdGUoKSxcbiAgICAgICAgICBsZXZlbDogJ3dhcm4nLFxuICAgICAgICAgIG1lc3NhZ2U6IGBTdGFjayAke3N0YWNrLmRpc3BsYXlOYW1lfSBzeW50aGVzaXplcyBmb3IgcmVnaW9uICR7c3RhY2suZW52aXJvbm1lbnQucmVnaW9ufSwgZXZlbiB0aG91Z2ggJHt0aGlzLm9wdGlvbnMucmVnaW9ufSB3YXMgcmVxdWVzdGVkLiBQbGVhc2UgY29uZmlndXJlIFxcYHsgZW52OiB7IHJlZ2lvbjogcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfUkVHSU9OLCBhY2NvdW50OiBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9BQ0NPVU5UIH0gfVxcYCwgb3IgdXNlIG5vIGVudiBhdCBhbGwuIERvIG5vdCBoYXJkY29kZSBhIHJlZ2lvbiBvciBhY2NvdW50LmAsXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgc3RhY2tOYW1lOiBzdGFjay5kaXNwbGF5TmFtZSxcbiAgICAgICAgICAgIHN0YWNrUmVnaW9uOiBzdGFjay5lbnZpcm9ubWVudC5yZWdpb24sXG4gICAgICAgICAgICByZXF1ZXN0ZWRSZWdpb246IHRoaXMub3B0aW9ucy5yZWdpb24sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSkuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICBpZiAoZSkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBbiBJb0hvc3QgdXNlZCBpbiB0aGUgaW50ZWctcnVubmVyIHRvIHByb3ZpZGUgbm9uLWludGVyYWN0aXZlIG91dHB1dFxuICovXG5jbGFzcyBJbnRlZ1J1bm5lcklvSG9zdCBleHRlbmRzIE5vbkludGVyYWN0aXZlSW9Ib3N0IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByb3BzOiBOb25JbnRlcmFjdGl2ZUlvSG9zdFByb3BzID0ge30pIHtcbiAgICBzdXBlcih7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGlzVFRZOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxuICBwdWJsaWMgYXN5bmMgbm90aWZ5KG1zZzogSW9NZXNzYWdlPHVua25vd24+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IGNvbG9yO1xuICAgIHN3aXRjaCAobXNnLmxldmVsKSB7XG4gICAgICBjYXNlICdlcnJvcic6IGNvbG9yID0gY2hhbGsucmVkOyBicmVhaztcbiAgICAgIGNhc2UgJ3dhcm4nOiBjb2xvciA9IGNoYWxrLnllbGxvdzsgYnJlYWs7XG4gICAgICBkZWZhdWx0OiBjb2xvciA9IGNoYWxrLmdyYXk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyLm5vdGlmeSh7XG4gICAgICAuLi5tc2csXG4gICAgICBtZXNzYWdlOiBjb2xvcihtc2cubWVzc2FnZSksXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBbiBJb0hvc3QgdGhhdCBkb2Vzbid0IGRvIGFueXRoaW5nXG4gKi9cbmNsYXNzIE5vb3BJb0hvc3QgaW1wbGVtZW50cyBJSW9Ib3N0IHtcbiAgcHVibGljIGFzeW5jIG5vdGlmeSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgfVxuICBwdWJsaWMgYXN5bmMgcmVxdWVzdFJlc3BvbnNlPFQ+KG1zZzogSW9SZXF1ZXN0PHVua25vd24sIFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIG1zZy5kZWZhdWx0UmVzcG9uc2U7XG4gIH1cbn1cbiJdfQ==
308
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGtpdC1saWIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0b29sa2l0LWxpYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxrQ0FBa0M7QUFHbEMsNENBQWlEO0FBRWpELHNEQUFtSjtBQUNuSiwrQkFBK0I7QUFDL0IsK0JBQStCO0FBcUMvQjs7R0FFRztBQUNILE1BQWEsc0JBQXNCO0lBTWpDLFlBQW1CLE9BQWdDO1FBQ2pELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUM7UUFFOUMsd0VBQXdFO1FBQ3hFLGdDQUFnQztRQUNoQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUV0QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUkscUJBQU8sQ0FBQztZQUN6QixNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLEVBQUU7WUFDeEQsU0FBUyxFQUFFO2dCQUNULGVBQWUsRUFBRSw2QkFBZSxDQUFDLGdCQUFnQixDQUFDO29CQUNoRCxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87b0JBQ3hCLGFBQWEsRUFBRSxPQUFPLENBQUMsTUFBTTtpQkFDOUIsQ0FBQzthQUNIO1lBQ0Qsb0VBQW9FO1lBQ3BFLHVEQUF1RDtZQUN2RCx1Q0FBdUM7WUFDdkMsRUFBRTtZQUNGLGNBQWM7WUFDZCwrREFBK0Q7WUFDL0QsVUFBVTtZQUNWLG1CQUFtQjtZQUNuQixNQUFNO1lBQ04scUJBQXFCO1lBQ3JCLG1CQUFtQjtZQUNuQiwwQkFBMEI7U0FDM0IsQ0FBQyxDQUFDO1FBRUgsd0ZBQXdGO1FBQ3hGLG1CQUFtQjtRQUNuQixtQkFBbUI7UUFDbkIscUJBQXFCO1FBQ3JCLGtCQUFrQjtJQUNwQixDQUFDO0lBRUQ7O09BRUc7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QUFLLENBQUMsTUFBTSxDQUFDO1lBQ2xCLEdBQUcsR0FBRztZQUNOLE9BQU8sRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztTQUM1QixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVTtJQUNQLEtBQUssQ0FBQyxNQUFNO0lBQ25CLENBQUM7SUFDTSxLQUFLLENBQUMsZUFBZSxDQUFJLEdBQTBCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLGVBQWUsQ0FBQztJQUM3QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgdHlwZSB7IERlcGxveU9wdGlvbnMsIElDZGssIExpc3RPcHRpb25zLCBTeW50aEZhc3RPcHRpb25zLCBTeW50aE9wdGlvbnMsIFdhdGNoRXZlbnRzIH0gZnJvbSAnQGF3cy1jZGsvY2RrLWNsaS13cmFwcGVyJztcbmltcG9ydCB0eXBlIHsgRGVmYXVsdENka09wdGlvbnMsIERlc3Ryb3lPcHRpb25zIH0gZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hL2xpYi9pbnRlZy10ZXN0cyc7XG5pbXBvcnQgeyBVTktOT1dOX1JFR0lPTiB9IGZyb20gJ0Bhd3MtY2RrL2N4LWFwaSc7XG5pbXBvcnQgdHlwZSB7IERlcGxveW1lbnRNZXRob2QsIElDbG91ZEFzc2VtYmx5U291cmNlLCBJSW9Ib3N0LCBJb01lc3NhZ2UsIElvUmVxdWVzdCwgSVJlYWRhYmxlQ2xvdWRBc3NlbWJseSwgTm9uSW50ZXJhY3RpdmVJb0hvc3RQcm9wcywgU3RhY2tTZWxlY3RvciB9IGZyb20gJ0Bhd3MtY2RrL3Rvb2xraXQtbGliJztcbmltcG9ydCB7IEJhc2VDcmVkZW50aWFscywgRXhwYW5kU3RhY2tTZWxlY3Rpb24sIE1lbW9yeUNvbnRleHQsIE5vbkludGVyYWN0aXZlSW9Ib3N0LCBTdGFja1NlbGVjdGlvblN0cmF0ZWd5LCBUb29sa2l0IH0gZnJvbSAnQGF3cy1jZGsvdG9vbGtpdC1saWInO1xuaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRvb2xraXRMaWJFbmdpbmVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBkaXJlY3RvcnkgdG8gcnVuIHRoZSBjZGsgY29tbWFuZHMgZnJvbVxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2luZ0RpcmVjdG9yeTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXRcbiAgICogaW4gdGhlIGV4ZWN1dGlvbiBlbnZpcm9ubWVudCB0aGF0IHdpbGwgYmUgcnVubmluZ1xuICAgKiB0aGUgY2RrIGFwcFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGFkZGl0aW9uYWwgZW52IHZhcnNcbiAgICovXG4gIHJlYWRvbmx5IGVudj86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBvdXRwdXQgZnJvbSBydW5uaW5nIHRoZSBDREsgQ0xJXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzaG93T3V0cHV0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHJlZ2lvbiB0aGUgQ0RLIGFwcCBzaG91bGQgc3ludGhlc2l6ZSBpdHNlbGYgZm9yXG4gICAqL1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFXUyBwcm9maWxlIHRvIHVzZSB3aGVuIGF1dGhlbnRpY2F0aW5nXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcHJvZmlsZSBpcyBwYXNzZWQsIHRoZSBkZWZhdWx0IHByb2ZpbGUgaXMgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZmlsZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHJ1bm5lciBlbmdpbmUgcG93ZXJlZCBkaXJlY3RseSBieSB0aGUgdG9vbGtpdC1saWJcbiAqL1xuZXhwb3J0IGNsYXNzIFRvb2xraXRMaWJSdW5uZXJFbmdpbmUgaW1wbGVtZW50cyBJQ2RrIHtcbiAgcHJpdmF0ZSByZWFkb25seSB0b29sa2l0OiBUb29sa2l0O1xuICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IFRvb2xraXRMaWJFbmdpbmVPcHRpb25zO1xuICBwcml2YXRlIHJlYWRvbmx5IHNob3dPdXRwdXQ6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgaW9Ib3N0OiBJbnRlZ1J1bm5lcklvSG9zdDtcblxuICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9uczogVG9vbGtpdExpYkVuZ2luZU9wdGlvbnMpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuc2hvd091dHB1dCA9IG9wdGlvbnMuc2hvd091dHB1dCA/PyBmYWxzZTtcblxuICAgIC8vIFdlIGFsd2F5cyBjcmVhdGUgdGhpcyBmb3Igb3Vyc2VsdmVzIHRvIGVtaXQgd2FybmluZ3MsIGJ1dCBwb3RlbnRpYWxseVxuICAgIC8vIGRvbid0IHBhc3MgaXQgdG8gdGhlIHRvb2xraXQuXG4gICAgdGhpcy5pb0hvc3QgPSBuZXcgSW50ZWdSdW5uZXJJb0hvc3QoKTtcblxuICAgIHRoaXMudG9vbGtpdCA9IG5ldyBUb29sa2l0KHtcbiAgICAgIGlvSG9zdDogdGhpcy5zaG93T3V0cHV0ID8gdGhpcy5pb0hvc3QgOiBuZXcgTm9vcElvSG9zdCgpLFxuICAgICAgc2RrQ29uZmlnOiB7XG4gICAgICAgIGJhc2VDcmVkZW50aWFsczogQmFzZUNyZWRlbnRpYWxzLmF3c0NsaUNvbXBhdGlibGUoe1xuICAgICAgICAgIHByb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSxcbiAgICAgICAgICBkZWZhdWx0UmVnaW9uOiBvcHRpb25zLnJlZ2lvbixcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgICAgLy8gQFRPRE8gLSB0aGVzZSBvcHRpb25zIGFyZSBjdXJyZW50bHkgYXZhaWxhYmxlIG9uIHRoZSBhY3Rpb24gY2FsbHNcbiAgICAgIC8vIGJ1dCB0b29sa2l0LWxpYiBuZWVkcyB0aGVtIGF0IHRoZSBjb25zdHJ1Y3RvciBsZXZlbC5cbiAgICAgIC8vIE5lZWQgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aCB0aGVtLlxuICAgICAgLy9cbiAgICAgIC8vIFZhbGlkYXRpb25zXG4gICAgICAvLyAgLSBhc3NlbWJseUZhaWx1cmVBdDogb3B0aW9ucy5zdHJpY3QgPz8gb3B0aW9ucy5pZ25vcmVFcnJvcnNcbiAgICAgIC8vIExvZ2dpbmdcbiAgICAgIC8vICAtIG9wdGlvbnMuY29sb3JcbiAgICAgIC8vIFNES1xuICAgICAgLy8gIC0gb3B0aW9ucy5wcm9maWxlXG4gICAgICAvLyAgLSBvcHRpb25zLnByb3h5XG4gICAgICAvLyAgLSBvcHRpb25zLmNhQnVuZGxlUGF0aFxuICAgIH0pO1xuXG4gICAgLy8gQFRPRE8gLSBzaW1pbGFyIHRvIHRoZSBhYm92ZSwgYnV0IGluIHRvb2xraXQtbGliIHRoZXNlIG9wdGlvbnMgd291bGQgZ28gb24gdGhlIElvSG9zdFxuICAgIC8vICAtIG9wdGlvbnMucXVpZXRcbiAgICAvLyAgLSBvcHRpb25zLnRyYWNlXG4gICAgLy8gIC0gb3B0aW9ucy52ZXJib3NlXG4gICAgLy8gIC0gb3B0aW9ucy5qc29uXG4gIH1cblxuICAvKipcbiAgICogU3ludGhlc2l6ZXMgdGhlIENESyBhcHAgdGhyb3VnaCB0aGUgVG9vbGtpdFxuICAgKi9cbiAgcHVibGljIGFzeW5jIHN5bnRoKG9wdGlvbnM6IFN5bnRoT3B0aW9ucykge1xuICAgIGNvbnN0IGN4ID0gYXdhaXQgdGhpcy5jeChvcHRpb25zKTtcbiAgICBjb25zdCBsb2NrID0gYXdhaXQgdGhpcy50b29sa2l0LnN5bnRoKGN4LCB7XG4gICAgICBzdGFja3M6IHRoaXMuc3RhY2tTZWxlY3RvcihvcHRpb25zKSxcbiAgICAgIHZhbGlkYXRlU3RhY2tzOiBvcHRpb25zLnZhbGlkYXRpb24sXG4gICAgfSk7XG4gICAgYXdhaXQgdGhpcy52YWxpZGF0ZVJlZ2lvbihsb2NrKTtcbiAgICBhd2FpdCBsb2NrLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTeW50aGVzaXplcyB0aGUgQ0RLIGFwcCBxdWlja2x5LCBieSBieXBhc3NpbmcgdGhlIFRvb2xraXQgYW5kIGp1c3QgaW52b2tpbmcgdGhlIGFwcCBjb21tYW5kXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc3ludGhGYXN0KG9wdGlvbnM6IFN5bnRoRmFzdE9wdGlvbnMpIHtcbiAgICBjb25zdCBjeCA9IGF3YWl0IHRoaXMudG9vbGtpdC5mcm9tQ2RrQXBwKG9wdGlvbnMuZXhlY0NtZC5qb2luKCcgJyksIHtcbiAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHRoaXMub3B0aW9ucy53b3JraW5nRGlyZWN0b3J5LFxuICAgICAgb3V0ZGlyOiBvcHRpb25zLm91dHB1dCA/IHBhdGguam9pbih0aGlzLm9wdGlvbnMud29ya2luZ0RpcmVjdG9yeSwgb3B0aW9ucy5vdXRwdXQpIDogdW5kZWZpbmVkLFxuICAgICAgY29udGV4dFN0b3JlOiBuZXcgTWVtb3J5Q29udGV4dChvcHRpb25zLmNvbnRleHQpLFxuICAgICAgbG9va3VwczogZmFsc2UsXG4gICAgICByZXNvbHZlRGVmYXVsdEVudmlyb25tZW50OiBmYWxzZSxcbiAgICAgIGVudjoge1xuICAgICAgICAuLi50aGlzLm9wdGlvbnMuZW52LFxuICAgICAgICAuLi5vcHRpb25zLmVudixcbiAgICAgIH0sXG4gICAgICBzeW50aE9wdGlvbnM6IHtcbiAgICAgICAgdmVyc2lvblJlcG9ydGluZzogZmFsc2UsXG4gICAgICAgIHBhdGhNZXRhZGF0YTogZmFsc2UsXG4gICAgICAgIGFzc2V0TWV0YWRhdGE6IGZhbHNlLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBAVE9ETyAtIHVzZSBwcm9kdWNlIHRvIG1pbWljIHRoZSBjdXJyZW50IGJlaGF2aW9yIG1vcmUgY2xvc2VseVxuICAgICAgY29uc3QgbG9jayA9IGF3YWl0IGN4LnByb2R1Y2UoKTtcbiAgICAgIGF3YWl0IHRoaXMudmFsaWRhdGVSZWdpb24obG9jayk7XG4gICAgICBhd2FpdCBsb2NrLmRpc3Bvc2UoKTtcbiAgICAgIC8vIFdlIHNob3VsZCBmaXggdGhpcyBvbmNlIHdlIGhhdmUgc3RhYmlsaXplZCB0b29sa2l0LWxpYiBhcyBlbmdpbmUuXG4gICAgICAvLyBXaGF0IHdlIHJlYWxseSBzaG91bGQgZG8gaXMgdGhpczpcbiAgICAgIC8vIGNvbnN0IGxvY2sgPSBhd2FpdCB0aGlzLnRvb2xraXQuc3ludGgoY3gsIHtcbiAgICAgIC8vICAgdmFsaWRhdGVTdGFja3M6IGZhbHNlLFxuICAgICAgLy8gfSk7XG4gICAgICAvLyBhd2FpdCBsb2NrLmRpc3Bvc2UoKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGlmIChlLm1lc3NhZ2UuaW5jbHVkZXMoJ01pc3NpbmcgY29udGV4dCBrZXlzJykpIHtcbiAgICAgICAgLy8gQFRPRE8gLSBzaWxlbnRseSBpZ25vcmUgbWlzc2luZyBjb250ZXh0XG4gICAgICAgIC8vIFRoaXMgaXMgYWN0dWFsbHkgYW4gdW5kZWZpbmVkIGNhc2UgaW4gdGhlIG9sZCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggZG9lc24ndCB1c2UgdGhlIHRvb2xraXQgY29kZVxuICAgICAgICAvLyBhbmQgd29uJ3QgZmFpbCBmb3IgbWlzc2luZyBjb250ZXh0LiBUbyBwZXJzZXZlcmUgZXhpc3RpbmcgYmVoYXZpb3IsIHdlIGRvIHRoZSBzYW1lIGhlcmUuXG4gICAgICAgIC8vIEhvd2V2ZXIgaW4gZnV0dXJlIHdlIG5lZWQgdG8gZmluZCBhIHdheSBmb3IgaW50ZWcgdGVzdHMgdG8gcHJvdmlkZSBjb250ZXh0IHRocm91Z2ggc25hcHNob3RzLlxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0cyB0aGUgc3RhY2tzIGluIHRoZSBDREsgYXBwXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbGlzdChvcHRpb25zOiBMaXN0T3B0aW9ucyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAvLyBAVE9ETyAtIGV4aXN0aW5nIGxpc3Qgc3BlY2lmaWMgb3B0aW9uLCBkb2Vzbid0IHJlYWxseSBtYWtlIHNlbnNlIHRvIHN1cHBvcnQgdGhpcyBpbiB0aGUgY29udGV4dCBvZiBpbnRlZy1ydW5uZXJcbiAgICAvLyAgLSBvcHRpb25zLmxvbmdcblxuICAgIGNvbnN0IGN4ID0gYXdhaXQgdGhpcy5jeChvcHRpb25zKTtcbiAgICBjb25zdCBzdGFja3MgPSBhd2FpdCB0aGlzLnRvb2xraXQubGlzdChjeCwge1xuICAgICAgc3RhY2tzOiB0aGlzLnN0YWNrU2VsZWN0b3Iob3B0aW9ucyksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3RhY2tzLm1hcChzID0+IHMubmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogRGVwbG95cyB0aGUgQ0RLIGFwcFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGRlcGxveShvcHRpb25zOiBEZXBsb3lPcHRpb25zKSB7XG4gICAgLy8gQFRPRE8gLSBleGlzdGluZyBkZXBsb3kgc3BlY2lmaWMgb3B0aW9uLCBkb2Vzbid0IHJlYWxseSBtYWtlIHNlbnNlIHRvIHN1cHBvcnQgdGhpcyBpbiB0aGUgY29udGV4dCBvZiBpbnRlZy1ydW5uZXJcbiAgICAvLyAgLSBvcHRpb25zLnByb2dyZXNzXG5cbiAgICBpZiAob3B0aW9ucy53YXRjaCkge1xuICAgICAgcmV0dXJuIHRoaXMud2F0Y2gob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgY29uc3QgY3ggPSBhd2FpdCB0aGlzLmN4KG9wdGlvbnMpO1xuICAgIGF3YWl0IHRoaXMudG9vbGtpdC5kZXBsb3koY3gsIHtcbiAgICAgIHJvbGVBcm46IG9wdGlvbnMucm9sZUFybixcbiAgICAgIHRyYWNlTG9nczogb3B0aW9ucy50cmFjZUxvZ3MsXG4gICAgICBzdGFja3M6IHRoaXMuc3RhY2tTZWxlY3RvcihvcHRpb25zKSxcbiAgICAgIGRlcGxveW1lbnRNZXRob2Q6IHRoaXMuZGVwbG95bWVudE1ldGhvZChvcHRpb25zKSxcbiAgICAgIG91dHB1dHNGaWxlOiBvcHRpb25zLm91dHB1dHNGaWxlID8gcGF0aC5qb2luKHRoaXMub3B0aW9ucy53b3JraW5nRGlyZWN0b3J5LCBvcHRpb25zLm91dHB1dHNGaWxlKSA6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXYXRjaGVzIHRoZSBDREsgYXBwIGZvciBjaGFuZ2VzIGFuZCBkZXBsb3lzIHRoZW0gYXV0b21hdGljYWxseVxuICAgKi9cbiAgcHVibGljIGFzeW5jIHdhdGNoKG9wdGlvbnM6IERlcGxveU9wdGlvbnMsIGV2ZW50cz86IFdhdGNoRXZlbnRzKSB7XG4gICAgY29uc3QgY3ggPSBhd2FpdCB0aGlzLmN4KG9wdGlvbnMpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB3YXRjaGVyID0gYXdhaXQgdGhpcy50b29sa2l0LndhdGNoKGN4LCB7XG4gICAgICAgIHJvbGVBcm46IG9wdGlvbnMucm9sZUFybixcbiAgICAgICAgdHJhY2VMb2dzOiBvcHRpb25zLnRyYWNlTG9ncyxcbiAgICAgICAgc3RhY2tzOiB0aGlzLnN0YWNrU2VsZWN0b3Iob3B0aW9ucyksXG4gICAgICAgIGRlcGxveW1lbnRNZXRob2Q6IHRoaXMuZGVwbG95bWVudE1ldGhvZChvcHRpb25zKSxcbiAgICAgIH0pO1xuICAgICAgYXdhaXQgd2F0Y2hlci53YWl0Rm9yRW5kKCk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgaWYgKGV2ZW50cz8ub25TdGRlcnIpIHtcbiAgICAgICAgZXZlbnRzLm9uU3RkZXJyKFN0cmluZyhlKSk7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnRzPy5vbkNsb3NlKSB7XG4gICAgICAgIGV2ZW50cy5vbkNsb3NlKDEpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldmVudHM/Lm9uQ2xvc2UpIHtcbiAgICAgIGV2ZW50cy5vbkNsb3NlKDApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyB0aGUgQ0RLIGFwcFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGRlc3Ryb3kob3B0aW9uczogRGVzdHJveU9wdGlvbnMpIHtcbiAgICBjb25zdCBjeCA9IGF3YWl0IHRoaXMuY3gob3B0aW9ucyk7XG5cbiAgICBhd2FpdCB0aGlzLnRvb2xraXQuZGVzdHJveShjeCwge1xuICAgICAgcm9sZUFybjogb3B0aW9ucy5yb2xlQXJuLFxuICAgICAgc3RhY2tzOiB0aGlzLnN0YWNrU2VsZWN0b3Iob3B0aW9ucyksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIENsb3VkIEFzc2VtYmx5IFNvdXJjZSBmcm9tIHRoZSBwcm92aWRlZCBvcHRpb25zLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBjeChvcHRpb25zOiBEZWZhdWx0Q2RrT3B0aW9ucyk6IFByb21pc2U8SUNsb3VkQXNzZW1ibHlTb3VyY2U+IHtcbiAgICBpZiAoIW9wdGlvbnMuYXBwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGFwcCBwcm92aWRlZCcpO1xuICAgIH1cblxuICAgIC8vIGNoZWNrIGlmIHRoZSBhcHAgaXMgYSBwYXRoIHRvIGV4aXN0aW5nIHNuYXBzaG90IGFuZCB0aGVuIHVzZSBpdCBhcyBhbiBhc3NlbWJseSBkaXJlY3RvcnlcbiAgICBjb25zdCBwb3RlbnRpYWxDeFBhdGggPSBwYXRoLmpvaW4odGhpcy5vcHRpb25zLndvcmtpbmdEaXJlY3RvcnksIG9wdGlvbnMuYXBwKTtcbiAgICBpZiAoZnMucGF0aEV4aXN0c1N5bmMocG90ZW50aWFsQ3hQYXRoKSAmJiBmcy5zdGF0U3luYyhwb3RlbnRpYWxDeFBhdGgpLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnRvb2xraXQuZnJvbUFzc2VtYmx5RGlyZWN0b3J5KHBvdGVudGlhbEN4UGF0aCk7XG4gICAgfVxuXG4gICAgbGV0IG91dGRpcjtcbiAgICBpZiAob3B0aW9ucy5vdXRwdXQpIHtcbiAgICAgIG91dGRpciA9IHBhdGguam9pbih0aGlzLm9wdGlvbnMud29ya2luZ0RpcmVjdG9yeSwgb3B0aW9ucy5vdXRwdXQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRvb2xraXQuZnJvbUNka0FwcChvcHRpb25zLmFwcCwge1xuICAgICAgd29ya2luZ0RpcmVjdG9yeTogdGhpcy5vcHRpb25zLndvcmtpbmdEaXJlY3RvcnksXG4gICAgICBvdXRkaXIsXG4gICAgICBsb29rdXBzOiBvcHRpb25zLmxvb2t1cHMsXG4gICAgICBjb250ZXh0U3RvcmU6IG5ldyBNZW1vcnlDb250ZXh0KG9wdGlvbnMuY29udGV4dCksXG4gICAgICBlbnY6IHRoaXMub3B0aW9ucy5lbnYsXG4gICAgICBzeW50aE9wdGlvbnM6IHtcbiAgICAgICAgZGVidWc6IG9wdGlvbnMuZGVidWcsXG4gICAgICAgIHZlcnNpb25SZXBvcnRpbmc6IG9wdGlvbnMudmVyc2lvblJlcG9ydGluZyA/PyBmYWxzZSxcbiAgICAgICAgcGF0aE1ldGFkYXRhOiBvcHRpb25zLnBhdGhNZXRhZGF0YSA/PyBmYWxzZSxcbiAgICAgICAgYXNzZXRNZXRhZGF0YTogb3B0aW9ucy5hc3NldE1ldGFkYXRhID8/IGZhbHNlLFxuICAgICAgICBhc3NldFN0YWdpbmc6IG9wdGlvbnMuc3RhZ2luZyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIFN0YWNrU2VsZWN0b3IgZnJvbSB0aGUgcHJvdmlkZWQgb3B0aW9ucy5cbiAgICovXG4gIHByaXZhdGUgc3RhY2tTZWxlY3RvcihvcHRpb25zOiBEZWZhdWx0Q2RrT3B0aW9ucyAmIHsgcmVhZG9ubHkgZXhjbHVzaXZlbHk/OiBib29sZWFuIH0pOiBTdGFja1NlbGVjdG9yIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RyYXRlZ3k6IG9wdGlvbnMuYWxsID8gU3RhY2tTZWxlY3Rpb25TdHJhdGVneS5BTExfU1RBQ0tTIDogU3RhY2tTZWxlY3Rpb25TdHJhdGVneS5QQVRURVJOX01VU1RfTUFUQ0gsXG4gICAgICBwYXR0ZXJuczogb3B0aW9ucy5zdGFja3MgPz8gWycqKiddLFxuICAgICAgZXhwYW5kOiBvcHRpb25zLmV4Y2x1c2l2ZWx5ID8gRXhwYW5kU3RhY2tTZWxlY3Rpb24uTk9ORSA6IEV4cGFuZFN0YWNrU2VsZWN0aW9uLlVQU1RSRUFNLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIERlcGxveW1lbnRNZXRob2QgZnJvbSB0aGUgcHJvdmlkZWQgb3B0aW9ucy5cbiAgICovXG4gIHByaXZhdGUgZGVwbG95bWVudE1ldGhvZChvcHRpb25zOiBEZXBsb3lPcHRpb25zKTogRGVwbG95bWVudE1ldGhvZCB7XG4gICAgaWYgKG9wdGlvbnMuaG90c3dhcCAmJiBvcHRpb25zLmhvdHN3YXAgIT09ICdmdWxsLWRlcGxveW1lbnQnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtZXRob2Q6ICdob3Rzd2FwJyxcbiAgICAgICAgZmFsbGJhY2s6IG9wdGlvbnMuaG90c3dhcCA9PT0gJ2ZhbGwtYmFjaycgPyB7IG1ldGhvZDogJ2NoYW5nZS1zZXQnIH0gOiB1bmRlZmluZWQsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBtZXRob2Q6IG9wdGlvbnMuZGVwbG95bWVudE1ldGhvZCA/PyAnY2hhbmdlLXNldCcsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB0aGF0IHRoZSByZWdpb25zIGZvciB0aGUgc3RhY2tzIGluIHRoZSBDbG91ZEFzc2VtYmx5IG1hdGNoIHRoZSByZWdpb25zIHJlcXVlc3RlZCBvbiB0aGUgZW5naW5lXG4gICAqXG4gICAqIFRoaXMgcHJldmVudHMgbWlzY29uZmlndXJhdGlvbiBvZiB0aGUgaW50ZWcgdGVzdCBhcHAuIFBlb3BsZSB0ZW5kIHRvIHB1dDpcbiAgICpcbiAgICogYGBgdHNcbiAgICogbmV3IFN0YWNrKGFwcCwgJ1N0YWNrJywge1xuICAgKiAgIGVudjoge1xuICAgKiAgICAgcmVnaW9uOiAnc29tZS1yZWdpb24tdGhhdC1zdWl0cy1tZScsXG4gICAqICAgfVxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqIEludG8gdGhlaXIgaW50ZWcgdGVzdHMsIGluc3RlYWQgb2Y6XG4gICAqXG4gICAqIGBgYHRzXG4gICAqIHtcbiAgICogICByZWdpb246IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTixcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogVGhpcyBjYXRjaGVzIHRoYXQgbWlzY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgdmFsaWRhdGVSZWdpb24oYXNtOiBJUmVhZGFibGVDbG91ZEFzc2VtYmx5KSB7XG4gICAgZm9yIChjb25zdCBzdGFjayBvZiBhc20uY2xvdWRBc3NlbWJseS5zdGFja3NSZWN1cnNpdmVseSkge1xuICAgICAgaWYgKHN0YWNrLmVudmlyb25tZW50LnJlZ2lvbiAhPT0gdGhpcy5vcHRpb25zLnJlZ2lvbiAmJiBzdGFjay5lbnZpcm9ubWVudC5yZWdpb24gIT09IFVOS05PV05fUkVHSU9OKSB7XG4gICAgICAgIHRoaXMuaW9Ib3N0Lm5vdGlmeSh7XG4gICAgICAgICAgYWN0aW9uOiAnZGVwbG95JyxcbiAgICAgICAgICBjb2RlOiAnQ0RLX1JVTk5FUl9XMDAwMCcsXG4gICAgICAgICAgdGltZTogbmV3IERhdGUoKSxcbiAgICAgICAgICBsZXZlbDogJ3dhcm4nLFxuICAgICAgICAgIG1lc3NhZ2U6IGBTdGFjayAke3N0YWNrLmRpc3BsYXlOYW1lfSBzeW50aGVzaXplcyBmb3IgcmVnaW9uICR7c3RhY2suZW52aXJvbm1lbnQucmVnaW9ufSwgZXZlbiB0aG91Z2ggJHt0aGlzLm9wdGlvbnMucmVnaW9ufSB3YXMgcmVxdWVzdGVkLiBQbGVhc2UgY29uZmlndXJlIFxcYHsgZW52OiB7IHJlZ2lvbjogcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfUkVHSU9OLCBhY2NvdW50OiBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9BQ0NPVU5UIH0gfVxcYCwgb3IgdXNlIG5vIGVudiBhdCBhbGwuIERvIG5vdCBoYXJkY29kZSBhIHJlZ2lvbiBvciBhY2NvdW50LmAsXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgc3RhY2tOYW1lOiBzdGFjay5kaXNwbGF5TmFtZSxcbiAgICAgICAgICAgIHN0YWNrUmVnaW9uOiBzdGFjay5lbnZpcm9ubWVudC5yZWdpb24sXG4gICAgICAgICAgICByZXF1ZXN0ZWRSZWdpb246IHRoaXMub3B0aW9ucy5yZWdpb24sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSkuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICBpZiAoZSkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBbiBJb0hvc3QgdXNlZCBpbiB0aGUgaW50ZWctcnVubmVyIHRvIHByb3ZpZGUgbm9uLWludGVyYWN0aXZlIG91dHB1dFxuICovXG5jbGFzcyBJbnRlZ1J1bm5lcklvSG9zdCBleHRlbmRzIE5vbkludGVyYWN0aXZlSW9Ib3N0IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByb3BzOiBOb25JbnRlcmFjdGl2ZUlvSG9zdFByb3BzID0ge30pIHtcbiAgICBzdXBlcih7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGlzVFRZOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxuICBwdWJsaWMgYXN5bmMgbm90aWZ5KG1zZzogSW9NZXNzYWdlPHVua25vd24+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IGNvbG9yO1xuICAgIHN3aXRjaCAobXNnLmxldmVsKSB7XG4gICAgICBjYXNlICdlcnJvcic6IGNvbG9yID0gY2hhbGsucmVkOyBicmVhaztcbiAgICAgIGNhc2UgJ3dhcm4nOiBjb2xvciA9IGNoYWxrLnllbGxvdzsgYnJlYWs7XG4gICAgICBkZWZhdWx0OiBjb2xvciA9IGNoYWxrLmdyYXk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyLm5vdGlmeSh7XG4gICAgICAuLi5tc2csXG4gICAgICBtZXNzYWdlOiBjb2xvcihtc2cubWVzc2FnZSksXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBbiBJb0hvc3QgdGhhdCBkb2Vzbid0IGRvIGFueXRoaW5nXG4gKi9cbmNsYXNzIE5vb3BJb0hvc3QgaW1wbGVtZW50cyBJSW9Ib3N0IHtcbiAgcHVibGljIGFzeW5jIG5vdGlmeSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgfVxuICBwdWJsaWMgYXN5bmMgcmVxdWVzdFJlc3BvbnNlPFQ+KG1zZzogSW9SZXF1ZXN0PHVua25vd24sIFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIG1zZy5kZWZhdWx0UmVzcG9uc2U7XG4gIH1cbn1cbiJdfQ==