aws-delivlib 14.14.52 → 14.15.1

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.
@@ -81,7 +81,7 @@ export declare class RepositoryIntegrity {
81
81
  validate(): Promise<void>;
82
82
  }
83
83
  /**
84
- * NpmIntegiry is able to perform integiry checks against packages stored on npmjs.com
84
+ * NpmIntegrity is able to perform integrity checks against packages stored on npmjs.com
85
85
  */
86
86
  export declare class NpmArtifactIntegrity extends ArtifactIntegrity {
87
87
  protected readonly ext = "tgz";
@@ -144,7 +144,7 @@ class RepositoryIntegrity {
144
144
  }
145
145
  exports.RepositoryIntegrity = RepositoryIntegrity;
146
146
  /**
147
- * NpmIntegiry is able to perform integiry checks against packages stored on npmjs.com
147
+ * NpmIntegrity is able to perform integrity checks against packages stored on npmjs.com
148
148
  */
149
149
  class NpmArtifactIntegrity extends ArtifactIntegrity {
150
150
  constructor() {
@@ -240,4 +240,4 @@ async function get(url, handler, options = {}) {
240
240
  });
241
241
  }
242
242
  exports.get = get;
243
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyaXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaW50ZWdyaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQXlDO0FBRXpDLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFDN0IsNkRBQTZEO0FBQzdELHNEQUE2QjtBQUM3Qiw2REFBNkQ7QUFDN0QseURBQTJDO0FBQzNDLDZEQUE2RDtBQUM3RCw2Q0FBK0I7QUFDL0IsNkRBQTZEO0FBQzdELG9EQUFzQztBQUN0Qyw2REFBNkQ7QUFDN0QseUNBQTJCO0FBb0IzQjs7OztHQUlHO0FBQ0gsTUFBc0IsaUJBQWlCO0lBK0JyQzs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBd0I7UUFFNUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBRW5DLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBRTFFLElBQUk7WUFDRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksYUFBYSxDQUFDLENBQUM7WUFDNUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxDQUFDO1lBQ3BELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxRQUFRLENBQUMsQ0FBQztZQUVsRCwwQ0FBMEM7WUFD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bXBvcnQgdHlwZSB7IFJlcXVlc3RPcHRpb25zLCBJbmNvbWluZ01lc3NhZ2UgfSBmcm9tICdodHRwJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgQWRtWmlwIGZyb20gJ2FkbS16aXAnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0ICogYXMgZm9sbG93IGZyb20gJ2ZvbGxvdy1yZWRpcmVjdHMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0ICogYXMganN0cmVhbSBmcm9tICdKU09OU3RyZWFtJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCAqIGFzIHRhciBmcm9tICd0YXInO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gJy4vcmVwb3NpdG9yeSc7XG5cblxuLyoqXG4gKiBQdWJsaXNoZWQgcGFja2FnZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoZWRQYWNrYWdlIHtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgcGFja2FnZSBhcyBzdG9yZWQgaW4gdGhlIHBhY2thZ2UgbWFuYWdlci5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVmVyc2lvbiBvZiB0aGUgcGFja2FnZSBhcyBzdG9yZWQgaW4gdGhlIHBhY2thZ2UgbWFuYWdlci5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBJbnRlZ3JpdHkgY2xhc3MgZm9yIHZhbGlkYXRpbmcgYSBsb2NhbCBhcnRpZmFjdCBhZ2FpbnN0IGl0cyBwdWJsaXNoZWQgY291bnRlcnBhcnQuXG4gKlxuICogSW1wbGVtZW50YXRpb25zIGRpZmZlciBiYXNlZCBvbiB0aGUgcGFja2FnZSBtYW5hZ2VyIGluIHF1ZXN0aW9uLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXJ0aWZhY3RJbnRlZ3JpdHkge1xuXG4gIC8qKlxuICAgKiBUaGUgZmlsZSBleHRlbnN0aW9uIG9mIGFydGlmYWN0cyBwcm9kdWNlZCBmb3IgdGhpcyBjaGVjay4gKGUuZyAnd2hsJylcbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSBleHQ6IHN0cmluZztcblxuICAvKipcbiAgICogRG93bmxvYWQgYSBwYWNrYWdlIHRvIHRoZSB0YXJnZXQgZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIHBrZyBUaGUgcGFja2FnZSB0byBkb3dubG9hZC5cbiAgICogQHBhcmFtIHRhcmdldEZpbGUgVGhlIGZpbGUgcGF0aCB0byBkb3dubG9hZCB0aGUgcGFja2FnZSB0by5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBkb3dubG9hZChwa2c6IFB1Ymxpc2hlZFBhY2thZ2UsIHRhcmdldEZpbGU6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIEV4dHJhY3QgdGhlIGFydGlmYWN0IGludG8gdGhlIHRhcmdldCBkaXJlY3RvcnkuXG4gICAqXG4gICAqIEBwYXJhbSBhcnRpZmFjdCBQYXRoIHRvIGFuIGFydGlmYWN0IGZpbGUuXG4gICAqIEBwYXJhbSB0YXJnZXREaXIgVGhlIGRpcmVjdG9yeSB0byBleHRyYWN0IHRvLiBJdCB3aWxsIGV4aXN0IGJ5IHRoZSB0aW1lIHRoaXMgbWV0aG9kIGlzIGludm9rZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZXh0cmFjdChhcnRpZmFjdDogc3RyaW5nLCB0YXJnZXREaXI6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIFBhcnNlIGEgbG9jYWwgYXJ0aWZhY3QgZmlsZSBuYW1lIGludG8gYSBzdHJ1Y3R1cmVkIHBhY2thZ2UuXG4gICAqXG4gICAqIEBwYXJhbSBhcnRpZmFjdE5hbWUgQmFzZSBuYW1lIG9mIHRoZSBsb2NhbCBhcnRpZmFjdCBmaWxlLlxuICAgKiBAcmV0dXJucyBUaGUgcGFja2FnZSB0aGlzIGFydGlmYWN0IGNvcnJlbGF0ZXMgdG8uXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcGFyc2VBcnRpZmFjdE5hbWUoYXJ0aWZhY3ROYW1lOiBzdHJpbmcpOiBQdWJsaXNoZWRQYWNrYWdlO1xuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBhIGxvY2FsIGFydGlmYWN0IGFnYWluc3QgaXRzIHB1Ymxpc2hlZCBjb3VudGVycGFydC5cbiAgICpcbiAgICogQHBhcmFtIGxvY2FsQXJ0aWZhY3REaXIgVGhlIGRpcmVjdG9yeSBvZiB0aGUgbG9jYWwgYXJ0aWZhY3QuIE11c3QgY29udGFpbiBleGFjdGx5IG9uZSBmaWxlIHdpdGggdGhlIGFwcHJvcHJpYXRlIGV4dGVuc3Rpb24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgdmFsaWRhdGUobG9jYWxBcnRpZmFjdERpcjogc3RyaW5nKSB7XG5cbiAgICBjb25zdCBhcnRpZmFjdFBhdGggPSB0aGlzLmZpbmRPbmUobG9jYWxBcnRpZmFjdERpcik7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMuY29uc3RydWN0b3IubmFtZTtcblxuICAgIHRoaXMubG9nKGBWYWxpZGF0aW5nICR7YXJ0aWZhY3RQYXRofWApO1xuICAgIGNvbnN0IHdvcmtkaXIgPSBmcy5ta2R0ZW1wU3luYyhwYXRoLmpvaW4ob3MudG1wZGlyKCksICdpbnRlZ3JpdHktY2hlY2snKSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZG93bmxvYWRlZCA9IHBhdGguam9pbih3b3JrZGlyLCBgJHtuYW1lfS5kb3dubG9hZGVkYCk7XG4gICAgICBjb25zdCByZW1vdGUgPSBwYXRoLmpvaW4od29ya2RpciwgYCR7bmFtZX0ucmVtb3RlYCk7XG4gICAgICBjb25zdCBsb2NhbCA9IHBhdGguam9pbih3b3JrZGlyLCBgJHtuYW1lfS5sb2NhbGApO1xuXG4gICAgICAvLyBwYXJzZSB0aGUgYXJ0aWZhY3QgbmFtZSBpbnRvIGEgcGFja2FnZS5cbiAgICAgIGNvbnN0IHBrZyA9IHRoaXMucGFyc2VBcnRpZmFjdE5hbWUocGF0aC5iYXNlbmFtZShhcnRpZmFjdFBhdGgpKTtcblxuICAgICAgZnMubWtkaXJTeW5jKHJlbW90ZSk7XG4gICAgICBmcy5ta2RpclN5bmMobG9jYWwpO1xuXG4gICAgICAvLyBkb3dubG9hZCB0aGUgcGFja2FnZVxuICAgICAgdGhpcy5sb2coYERvd25sb2FkaW5nICR7cGtnLm5hbWV9QCR7cGtnLnZlcnNpb259IHRvICR7ZG93bmxvYWRlZH1gKTtcbiAgICAgIGF3YWl0IHRoaXMuZG93bmxvYWQocGtnLCBkb3dubG9hZGVkKTtcblxuICAgICAgLy8gZXh0cmFjdCB0aGUgZG93bmxhb2RlZCBwYWNrYWdlXG4gICAgICB0aGlzLmxvZyhgRXh0cmFjdGluZyByZW1vdGUgYXJ0aWZhY3QgZnJvbSAke2Rvd25sb2FkZWR9IHRvICR7cmVtb3RlfWApO1xuICAgICAgYXdhaXQgdGhpcy5leHRyYWN0KGRvd25sb2FkZWQsIHJlbW90ZSk7XG5cbiAgICAgIC8vIGV4dHJhY3QgdGhlIGxvY2FsIGFydGZpYWN0XG4gICAgICB0aGlzLmxvZyhgRXh0cmFjdGluZyBsb2NhbCBhcnRpZmFjdCBmcm9tICR7YXJ0aWZhY3RQYXRofSB0byAke2xvY2FsfWApO1xuICAgICAgYXdhaXQgdGhpcy5leHRyYWN0KGFydGlmYWN0UGF0aCwgbG9jYWwpO1xuXG4gICAgICB0aGlzLmxvZyhgQ29tcGFyaW5nICR7bG9jYWx9IDw+ICR7cmVtb3RlfWApO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZXhlY1N5bmMoYGRpZmYgJHtsb2NhbH0gJHtyZW1vdGV9YCwgeyBzdGRpbzogWydpZ25vcmUnLCAnaW5oZXJpdCcsICdpbmhlcml0J10gfSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bmFtZX0gdmFsaWRhdGlvbiBmYWlsZWRgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9nKCdTdWNjZXNzJyk7XG5cbiAgICB9IGZpbmFsbHkge1xuICAgICAgZnMucmVtb3ZlU3luYyh3b3JrZGlyKTtcbiAgICB9XG5cbiAgfVxuXG4gIHByb3RlY3RlZCBsb2cobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgY29uc29sZS5sb2coYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfSB8ICR7bWVzc2FnZX0gYCk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRPbmUoZGlyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGZpbGVzID0gZnMucmVhZGRpclN5bmMoZGlyKS5maWx0ZXIoZiA9PiBmLmVuZHNXaXRoKHRoaXMuZXh0KSk7XG4gICAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBmaWxlcyBmb3VuZCBpbiAke2Rpcn0gd2l0aCBleHRlbnNpb24gJHt0aGlzLmV4dH1gKTtcbiAgICB9XG4gICAgY29uc3QgW2ZpcnN0LCAuLi5yZXN0XSA9IGZpbGVzO1xuICAgIGlmIChyZXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTXVsdGlwbGUgZmlsZXMgZm91bmQgaW4gJHtkaXJ9IHdpdGggZXh0ZW5zaW9uICR7dGhpcy5leHR9OiAke2ZpcnN0fSwgJHtyZXN0LmpvaW4oJywgJyl9YCk7XG4gICAgfVxuICAgIHJldHVybiBwYXRoLmpvaW4oZGlyLCBmaXJzdCk7XG4gIH1cblxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGBSZXBvc2l0b3J5SW50ZWdyaXR5YC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBvc2l0b3J5SW50ZWdyaXR5UHJvcHMge1xuICAvKipcbiAgICogUmVwb3NpdG9yeSB0byB2YWxpZGF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlcG9zaXRvcnk6IFJlcG9zaXRvcnk7XG5cbiAgLyoqXG4gICAqIFRoZSBjb21tYW5kIHRoYXQgcHJvZHVjZXMgdGhlIGxvY2FsIGFydGlmYWN0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgJ25weCBwcm9qZW4gcmVsZWFzZSdcbiAgICovXG4gIHJlYWRvbmx5IHBhY2tDb21tYW5kPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEludGVncml0eSBjbGFzcyBmb3IgdmFsaWRhdGluZyB0aGUgYXJ0aWZhY3RzIHByb2R1Y2VkIGJ5IHRoaXMgcmVwb3NpdG9yeSBhZ2FpbnN0IHRoZWlyIHB1Ymxpc2hlZCBjb3VudGVycGFydHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXBvc2l0b3J5SW50ZWdyaXR5IHtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9wczogUmVwb3NpdG9yeUludGVncml0eVByb3BzKSB7fVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGUgYXJ0aWZhY3RzIG9mIHRoaXMgcmVwbyBhZ2FpbnN0IGl0cyBwdWJsaXNoZWQgY291bnRlcnBhcnQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgdmFsaWRhdGUoKSB7XG5cbiAgICAvLyBub3RlIHRoYXQgcnVuICdyZWxlYXNlJyBieSBkZWZhdWx0IHRvIHByZXNlcnZlIHRoZSB2ZXJzaW9uIG51bWJlci5cbiAgICAvLyB0aGlzIHdvbid0IGRvIGEgYnVtcCBzaW5jZSB0aGUgY29tbWl0IHdlIGFyZSBvbiBpcyBhbHJlYWR5IHRhZ2dlZC5cbiAgICBjb25zdCBhcnRpZmFjdHMgPSB0aGlzLnByb3BzLnJlcG9zaXRvcnkucGFjayh0aGlzLnByb3BzLnBhY2tDb21tYW5kID8/ICducHggcHJvamVuIHJlbGVhc2UnKTtcblxuICAgIGxldCBpbnRlZ3JpdHkgPSB1bmRlZmluZWQ7XG4gICAgZm9yIChjb25zdCBhcnRpZmFjdCBvZiBhcnRpZmFjdHMpIHtcbiAgICAgIHN3aXRjaCAoYXJ0aWZhY3QubGFuZykge1xuICAgICAgICBjYXNlICdqcyc6XG4gICAgICAgICAgaW50ZWdyaXR5ID0gbmV3IE5wbUFydGlmYWN0SW50ZWdyaXR5KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3B5dGhvbic6XG4gICAgICAgICAgaW50ZWdyaXR5ID0gbmV3IFB5UElBcnRpZmFjdEludGVncml0eSgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdqYXZhJzpcbiAgICAgICAgY2FzZSAnZG90bmV0JzpcbiAgICAgICAgY2FzZSAnZ28nOlxuICAgICAgICAgIC8vIHdlIGRvbid0IGhhdmUgaW50ZWdyaXR5IGNoZWNrcyBmb3IgdGhlc2VcbiAgICAgICAgICAvLyBhcnRpZmFjdHMgeWV0LlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgYXJ0aWZhY3QgbGFuZ3VhZ2U6ICR7YXJ0aWZhY3QubGFuZ31gKTtcbiAgICAgIH1cbiAgICAgIGlmIChpbnRlZ3JpdHkpIHtcbiAgICAgICAgYXdhaXQgaW50ZWdyaXR5LnZhbGlkYXRlKGFydGlmYWN0LmRpcmVjdG9yeSk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCdWYWxpZGF0aW9uIGRvbmUnKTtcbiAgfVxuXG59XG5cbi8qKlxuICogTnBtSW50ZWdpcnkgaXMgYWJsZSB0byBwZXJmb3JtIGludGVnaXJ5IGNoZWNrcyBhZ2FpbnN0IHBhY2thZ2VzIHN0b3JlZCBvbiBucG1qcy5jb21cbiAqL1xuZXhwb3J0IGNsYXNzIE5wbUFydGlmYWN0SW50ZWdyaXR5IGV4dGVuZHMgQXJ0aWZhY3RJbnRlZ3JpdHkge1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBleHQgPSAndGd6JztcblxuICBwcm90ZWN0ZWQgYXN5bmMgZG93bmxvYWQocGtnOiBQdWJsaXNoZWRQYWNrYWdlLCB0YXJnZXQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHRhcmJhbGxVcmwgPSBhd2FpdCBqc29uR2V0KGBodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy8ke2VuY29kZVVSSUNvbXBvbmVudChwa2cubmFtZSl9LyR7ZW5jb2RlVVJJQ29tcG9uZW50KHBrZy52ZXJzaW9uKX1gLCBbJ2Rpc3QnLCAndGFyYmFsbCddKTtcbiAgICBhd2FpdCBkb3dubG9hZCh0YXJiYWxsVXJsLCB0YXJnZXQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGV4dHJhY3QoZmlsZTogc3RyaW5nLCB0YXJnZXREaXI6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0YXIueCh7IGN3ZDogdGFyZ2V0RGlyLCBmaWxlOiBmaWxlLCBzdHJpcDogMSB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZUFydGlmYWN0TmFtZShhcnRpZmFjdE5hbWU6IHN0cmluZyk6IFB1Ymxpc2hlZFBhY2thZ2Uge1xuXG4gICAgLy8gY2RrOHNAMS4wLjAtYmV0YS41OS5qc2lpLnRnelxuICAgIGNvbnN0IGpzaWlBcnRpZmFjdCA9IC8oLiopQCguKilcXC5qc2lpLi87XG5cbiAgICAvLyBucG0gYXJ0aWZhY3Q6IGNkazhzLWNsaS0xLjAuMC1iZXRhNTkudGd6XG4gICAgLy8geWFybiBhcnRpZmFjdDogY2RrOHMtY2xpLXYxLjAuMC1iZXRhNTkudGd6IChhZGQgYSAndicgYmVmb3JlIHRoZSB2ZXJzaW9uKVxuICAgIGNvbnN0IG5wbU9yWWFybkFydGlmYWN0ID0gLyguKiktdj8oXFxkLiopLih0Z3p8dGFyLmd6KS87XG5cbiAgICBjb25zdCByZWdleCA9IGFydGlmYWN0TmFtZS5pbmNsdWRlcygnLmpzaWkuJykgPyBqc2lpQXJ0aWZhY3QgOiBucG1Pcllhcm5BcnRpZmFjdDtcblxuICAgIGNvbnN0IG1hdGNoID0gYXJ0aWZhY3ROYW1lLm1hdGNoKHJlZ2V4KTtcbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSBhcnRpZmFjdDogJHthcnRpZmFjdE5hbWV9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgbmFtZTogbWF0Y2hbMV0sIHZlcnNpb246IG1hdGNoWzJdIH07XG5cbiAgfVxuXG59XG5cbi8qKlxuICogUHlQSUludGVnaXJ5IGlzIGFibGUgdG8gcGVyZm9ybSBpbnRlZ2lyeSBjaGVja3MgYWdhaW5zdCBwYWNrYWdlcyBzdG9yZWQgb24gcHlwaS5vcmdcbiAqL1xuZXhwb3J0IGNsYXNzIFB5UElBcnRpZmFjdEludGVncml0eSBleHRlbmRzIEFydGlmYWN0SW50ZWdyaXR5IHtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZXh0ID0gJ3dobCc7XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGRvd25sb2FkKHBrZzogUHVibGlzaGVkUGFja2FnZSwgdGFyZ2V0OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcblxuICAgIGNvbnN0IGZpbGVzID0gYXdhaXQganNvbkdldChgaHR0cHM6Ly9weXBpLm9yZy9weXBpLyR7ZW5jb2RlVVJJQ29tcG9uZW50KHBrZy5uYW1lKX0vanNvbmAsIFsncmVsZWFzZXMnLCBwa2cudmVyc2lvbl0pO1xuICAgIGNvbnN0IHdoZWVsczogc3RyaW5nW10gPSBmaWxlcy5maWx0ZXIoKGY6IGFueSkgPT4gZi51cmwuZW5kc1dpdGgoJ3dobCcpKS5tYXAoKGY6IGFueSkgPT4gZi51cmwpO1xuXG4gICAgaWYgKHdoZWVscy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gd2hlZWxzIGZvdW5kIGZvciBwYWNrYWdlICR7cGtnLm5hbWV9LSR7cGtnLnZlcnNpb259YCk7XG4gICAgfVxuXG4gICAgaWYgKHdoZWVscy5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE11bHRpcGxlIHdoZWVscyBmb3VuZCBmb3IgcGFja2FnZSAke3BrZy5uYW1lfS0ke3BrZy52ZXJzaW9ufTogJHt3aGVlbHMuam9pbignLCcpfWApO1xuICAgIH1cblxuICAgIGF3YWl0IGRvd25sb2FkKHdoZWVsc1swXSwgdGFyZ2V0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBleHRyYWN0KGFydGlmYWN0OiBzdHJpbmcsIHRhcmdldDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgemlwID0gbmV3IEFkbVppcChhcnRpZmFjdCk7XG4gICAgcmV0dXJuIHppcC5leHRyYWN0QWxsVG8odGFyZ2V0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZUFydGlmYWN0TmFtZShhcnRpZmFjdE5hbWU6IHN0cmluZyk6IFB1Ymxpc2hlZFBhY2thZ2Uge1xuXG4gICAgLy8gY2RrOHMtMS4wLjBiNjMtcHkzLW5vbmUtYW55LndobFxuICAgIGNvbnN0IHJlZ2V4ID0gLyguKiktdj8oXFxkLiopLXB5Lioud2hsLztcblxuICAgIGNvbnN0IG1hdGNoID0gYXJ0aWZhY3ROYW1lLm1hdGNoKHJlZ2V4KTtcbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSBhcnRpZmFjdDogJHthcnRpZmFjdE5hbWV9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgbmFtZTogbWF0Y2hbMV0sIHZlcnNpb246IG1hdGNoWzJdIH07XG5cbiAgfVxuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBqc29uR2V0KHVybDogc3RyaW5nLCBqc29uUGF0aD86IHN0cmluZ1tdKTogUHJvbWlzZTxhbnk+IHtcbiAgcmV0dXJuIGdldCh1cmwsIChyZXMsIG9rLCBrbykgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBqc3RyZWFtLnBhcnNlKGpzb25QYXRoKTtcbiAgICBqc29uLm9uY2UoJ2RhdGEnLCBvayk7XG4gICAganNvbi5vbmNlKCdlcnJvcicsIGtvKTtcblxuICAgIHJlcy5waXBlKGpzb24sIHsgZW5kOiB0cnVlIH0pO1xuICB9LCB7IGhlYWRlcnM6IHsgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uJywgJ0FjY2VwdC1FbmNvZGluZyc6ICdpZGVudGl0eScgfSB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRvd25sb2FkKHVybDogc3RyaW5nLCB0YXJnZXRGaWxlOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICByZXR1cm4gZ2V0KHVybCwgKHJlcywgb2ssIGtvKSA9PiB7XG4gICAgY29uc3QgZmlsZSA9IGZzLmNyZWF0ZVdyaXRlU3RyZWFtKHRhcmdldEZpbGUpO1xuICAgIGZpbGUub24oJ2ZpbmlzaCcsIG9rKTtcbiAgICBmaWxlLm9uKCdlcnJvcicsIGtvKTtcbiAgICByZXMucGlwZShmaWxlLCB7IGVuZDogdHJ1ZSB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXQoXG4gIHVybDogc3RyaW5nLFxuICBoYW5kbGVyOiAocmVzOiBJbmNvbWluZ01lc3NhZ2UsIG9rOiAodmFsdWU6IHVua25vd24pID0+IHZvaWQsIGtvOiAoZXJyOiBFcnJvcikgPT4gdm9pZCkgPT4gdm9pZCxcbiAgb3B0aW9uczogUmVxdWVzdE9wdGlvbnMgPSB7fSkge1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgob2ssIGtvKSA9PiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IGZvbGxvdy5odHRwcy5nZXQodXJsLCBvcHRpb25zLCAocmVzOiBJbmNvbWluZ01lc3NhZ2UpID0+IHtcbiAgICAgIGlmIChyZXMuc3RhdHVzQ29kZSAhPT0gMjAwKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBHRVQgJHt1cmx9IC0gSFRUUCAke3Jlcy5zdGF0dXNDb2RlfSAoJHtyZXMuc3RhdHVzTWVzc2FnZX0pYCk7XG4gICAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIGtvKGVycm9yKTtcbiAgICAgIH1cbiAgICAgIHJlcy5vbmNlKCdlcnJvcicsIGtvKTtcbiAgICAgIGhhbmRsZXIocmVzLCBvaywga28pO1xuICAgIH0pO1xuICAgIHJlcXVlc3Qub24oJ2Vycm9yJywga28pO1xuICB9KTtcblxufVxuIl19
243
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyaXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaW50ZWdyaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQXlDO0FBRXpDLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFDN0IsNkRBQTZEO0FBQzdELHNEQUE2QjtBQUM3Qiw2REFBNkQ7QUFDN0QseURBQTJDO0FBQzNDLDZEQUE2RDtBQUM3RCw2Q0FBK0I7QUFDL0IsNkRBQTZEO0FBQzdELG9EQUFzQztBQUN0Qyw2REFBNkQ7QUFDN0QseUNBQTJCO0FBb0IzQjs7OztHQUlHO0FBQ0gsTUFBc0IsaUJBQWlCO0lBK0JyQzs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBd0I7UUFFNUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBRW5DLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBRTFFLElBQUk7WUFDRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksYUFBYSxDQUFDLENBQUM7WUFDNUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxDQUFDO1lBQ3BELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxRQUFRLENBQUMsQ0FBQztZQUVsRCwwQ0FBMEM7WUFD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bXBvcnQgdHlwZSB7IFJlcXVlc3RPcHRpb25zLCBJbmNvbWluZ01lc3NhZ2UgfSBmcm9tICdodHRwJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgQWRtWmlwIGZyb20gJ2FkbS16aXAnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0ICogYXMgZm9sbG93IGZyb20gJ2ZvbGxvdy1yZWRpcmVjdHMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0ICogYXMganN0cmVhbSBmcm9tICdKU09OU3RyZWFtJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCAqIGFzIHRhciBmcm9tICd0YXInO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gJy4vcmVwb3NpdG9yeSc7XG5cblxuLyoqXG4gKiBQdWJsaXNoZWQgcGFja2FnZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoZWRQYWNrYWdlIHtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgcGFja2FnZSBhcyBzdG9yZWQgaW4gdGhlIHBhY2thZ2UgbWFuYWdlci5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVmVyc2lvbiBvZiB0aGUgcGFja2FnZSBhcyBzdG9yZWQgaW4gdGhlIHBhY2thZ2UgbWFuYWdlci5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBJbnRlZ3JpdHkgY2xhc3MgZm9yIHZhbGlkYXRpbmcgYSBsb2NhbCBhcnRpZmFjdCBhZ2FpbnN0IGl0cyBwdWJsaXNoZWQgY291bnRlcnBhcnQuXG4gKlxuICogSW1wbGVtZW50YXRpb25zIGRpZmZlciBiYXNlZCBvbiB0aGUgcGFja2FnZSBtYW5hZ2VyIGluIHF1ZXN0aW9uLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXJ0aWZhY3RJbnRlZ3JpdHkge1xuXG4gIC8qKlxuICAgKiBUaGUgZmlsZSBleHRlbnN0aW9uIG9mIGFydGlmYWN0cyBwcm9kdWNlZCBmb3IgdGhpcyBjaGVjay4gKGUuZyAnd2hsJylcbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSBleHQ6IHN0cmluZztcblxuICAvKipcbiAgICogRG93bmxvYWQgYSBwYWNrYWdlIHRvIHRoZSB0YXJnZXQgZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIHBrZyBUaGUgcGFja2FnZSB0byBkb3dubG9hZC5cbiAgICogQHBhcmFtIHRhcmdldEZpbGUgVGhlIGZpbGUgcGF0aCB0byBkb3dubG9hZCB0aGUgcGFja2FnZSB0by5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBkb3dubG9hZChwa2c6IFB1Ymxpc2hlZFBhY2thZ2UsIHRhcmdldEZpbGU6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIEV4dHJhY3QgdGhlIGFydGlmYWN0IGludG8gdGhlIHRhcmdldCBkaXJlY3RvcnkuXG4gICAqXG4gICAqIEBwYXJhbSBhcnRpZmFjdCBQYXRoIHRvIGFuIGFydGlmYWN0IGZpbGUuXG4gICAqIEBwYXJhbSB0YXJnZXREaXIgVGhlIGRpcmVjdG9yeSB0byBleHRyYWN0IHRvLiBJdCB3aWxsIGV4aXN0IGJ5IHRoZSB0aW1lIHRoaXMgbWV0aG9kIGlzIGludm9rZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZXh0cmFjdChhcnRpZmFjdDogc3RyaW5nLCB0YXJnZXREaXI6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIFBhcnNlIGEgbG9jYWwgYXJ0aWZhY3QgZmlsZSBuYW1lIGludG8gYSBzdHJ1Y3R1cmVkIHBhY2thZ2UuXG4gICAqXG4gICAqIEBwYXJhbSBhcnRpZmFjdE5hbWUgQmFzZSBuYW1lIG9mIHRoZSBsb2NhbCBhcnRpZmFjdCBmaWxlLlxuICAgKiBAcmV0dXJucyBUaGUgcGFja2FnZSB0aGlzIGFydGlmYWN0IGNvcnJlbGF0ZXMgdG8uXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcGFyc2VBcnRpZmFjdE5hbWUoYXJ0aWZhY3ROYW1lOiBzdHJpbmcpOiBQdWJsaXNoZWRQYWNrYWdlO1xuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBhIGxvY2FsIGFydGlmYWN0IGFnYWluc3QgaXRzIHB1Ymxpc2hlZCBjb3VudGVycGFydC5cbiAgICpcbiAgICogQHBhcmFtIGxvY2FsQXJ0aWZhY3REaXIgVGhlIGRpcmVjdG9yeSBvZiB0aGUgbG9jYWwgYXJ0aWZhY3QuIE11c3QgY29udGFpbiBleGFjdGx5IG9uZSBmaWxlIHdpdGggdGhlIGFwcHJvcHJpYXRlIGV4dGVuc3Rpb24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgdmFsaWRhdGUobG9jYWxBcnRpZmFjdERpcjogc3RyaW5nKSB7XG5cbiAgICBjb25zdCBhcnRpZmFjdFBhdGggPSB0aGlzLmZpbmRPbmUobG9jYWxBcnRpZmFjdERpcik7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMuY29uc3RydWN0b3IubmFtZTtcblxuICAgIHRoaXMubG9nKGBWYWxpZGF0aW5nICR7YXJ0aWZhY3RQYXRofWApO1xuICAgIGNvbnN0IHdvcmtkaXIgPSBmcy5ta2R0ZW1wU3luYyhwYXRoLmpvaW4ob3MudG1wZGlyKCksICdpbnRlZ3JpdHktY2hlY2snKSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZG93bmxvYWRlZCA9IHBhdGguam9pbih3b3JrZGlyLCBgJHtuYW1lfS5kb3dubG9hZGVkYCk7XG4gICAgICBjb25zdCByZW1vdGUgPSBwYXRoLmpvaW4od29ya2RpciwgYCR7bmFtZX0ucmVtb3RlYCk7XG4gICAgICBjb25zdCBsb2NhbCA9IHBhdGguam9pbih3b3JrZGlyLCBgJHtuYW1lfS5sb2NhbGApO1xuXG4gICAgICAvLyBwYXJzZSB0aGUgYXJ0aWZhY3QgbmFtZSBpbnRvIGEgcGFja2FnZS5cbiAgICAgIGNvbnN0IHBrZyA9IHRoaXMucGFyc2VBcnRpZmFjdE5hbWUocGF0aC5iYXNlbmFtZShhcnRpZmFjdFBhdGgpKTtcblxuICAgICAgZnMubWtkaXJTeW5jKHJlbW90ZSk7XG4gICAgICBmcy5ta2RpclN5bmMobG9jYWwpO1xuXG4gICAgICAvLyBkb3dubG9hZCB0aGUgcGFja2FnZVxuICAgICAgdGhpcy5sb2coYERvd25sb2FkaW5nICR7cGtnLm5hbWV9QCR7cGtnLnZlcnNpb259IHRvICR7ZG93bmxvYWRlZH1gKTtcbiAgICAgIGF3YWl0IHRoaXMuZG93bmxvYWQocGtnLCBkb3dubG9hZGVkKTtcblxuICAgICAgLy8gZXh0cmFjdCB0aGUgZG93bmxhb2RlZCBwYWNrYWdlXG4gICAgICB0aGlzLmxvZyhgRXh0cmFjdGluZyByZW1vdGUgYXJ0aWZhY3QgZnJvbSAke2Rvd25sb2FkZWR9IHRvICR7cmVtb3RlfWApO1xuICAgICAgYXdhaXQgdGhpcy5leHRyYWN0KGRvd25sb2FkZWQsIHJlbW90ZSk7XG5cbiAgICAgIC8vIGV4dHJhY3QgdGhlIGxvY2FsIGFydGZpYWN0XG4gICAgICB0aGlzLmxvZyhgRXh0cmFjdGluZyBsb2NhbCBhcnRpZmFjdCBmcm9tICR7YXJ0aWZhY3RQYXRofSB0byAke2xvY2FsfWApO1xuICAgICAgYXdhaXQgdGhpcy5leHRyYWN0KGFydGlmYWN0UGF0aCwgbG9jYWwpO1xuXG4gICAgICB0aGlzLmxvZyhgQ29tcGFyaW5nICR7bG9jYWx9IDw+ICR7cmVtb3RlfWApO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZXhlY1N5bmMoYGRpZmYgJHtsb2NhbH0gJHtyZW1vdGV9YCwgeyBzdGRpbzogWydpZ25vcmUnLCAnaW5oZXJpdCcsICdpbmhlcml0J10gfSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bmFtZX0gdmFsaWRhdGlvbiBmYWlsZWRgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9nKCdTdWNjZXNzJyk7XG5cbiAgICB9IGZpbmFsbHkge1xuICAgICAgZnMucmVtb3ZlU3luYyh3b3JrZGlyKTtcbiAgICB9XG5cbiAgfVxuXG4gIHByb3RlY3RlZCBsb2cobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgY29uc29sZS5sb2coYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfSB8ICR7bWVzc2FnZX0gYCk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRPbmUoZGlyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGZpbGVzID0gZnMucmVhZGRpclN5bmMoZGlyKS5maWx0ZXIoZiA9PiBmLmVuZHNXaXRoKHRoaXMuZXh0KSk7XG4gICAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBmaWxlcyBmb3VuZCBpbiAke2Rpcn0gd2l0aCBleHRlbnNpb24gJHt0aGlzLmV4dH1gKTtcbiAgICB9XG4gICAgY29uc3QgW2ZpcnN0LCAuLi5yZXN0XSA9IGZpbGVzO1xuICAgIGlmIChyZXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTXVsdGlwbGUgZmlsZXMgZm91bmQgaW4gJHtkaXJ9IHdpdGggZXh0ZW5zaW9uICR7dGhpcy5leHR9OiAke2ZpcnN0fSwgJHtyZXN0LmpvaW4oJywgJyl9YCk7XG4gICAgfVxuICAgIHJldHVybiBwYXRoLmpvaW4oZGlyLCBmaXJzdCk7XG4gIH1cblxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGBSZXBvc2l0b3J5SW50ZWdyaXR5YC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBvc2l0b3J5SW50ZWdyaXR5UHJvcHMge1xuICAvKipcbiAgICogUmVwb3NpdG9yeSB0byB2YWxpZGF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlcG9zaXRvcnk6IFJlcG9zaXRvcnk7XG5cbiAgLyoqXG4gICAqIFRoZSBjb21tYW5kIHRoYXQgcHJvZHVjZXMgdGhlIGxvY2FsIGFydGlmYWN0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgJ25weCBwcm9qZW4gcmVsZWFzZSdcbiAgICovXG4gIHJlYWRvbmx5IHBhY2tDb21tYW5kPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEludGVncml0eSBjbGFzcyBmb3IgdmFsaWRhdGluZyB0aGUgYXJ0aWZhY3RzIHByb2R1Y2VkIGJ5IHRoaXMgcmVwb3NpdG9yeSBhZ2FpbnN0IHRoZWlyIHB1Ymxpc2hlZCBjb3VudGVycGFydHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXBvc2l0b3J5SW50ZWdyaXR5IHtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9wczogUmVwb3NpdG9yeUludGVncml0eVByb3BzKSB7fVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGUgYXJ0aWZhY3RzIG9mIHRoaXMgcmVwbyBhZ2FpbnN0IGl0cyBwdWJsaXNoZWQgY291bnRlcnBhcnQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgdmFsaWRhdGUoKSB7XG5cbiAgICAvLyBub3RlIHRoYXQgcnVuICdyZWxlYXNlJyBieSBkZWZhdWx0IHRvIHByZXNlcnZlIHRoZSB2ZXJzaW9uIG51bWJlci5cbiAgICAvLyB0aGlzIHdvbid0IGRvIGEgYnVtcCBzaW5jZSB0aGUgY29tbWl0IHdlIGFyZSBvbiBpcyBhbHJlYWR5IHRhZ2dlZC5cbiAgICBjb25zdCBhcnRpZmFjdHMgPSB0aGlzLnByb3BzLnJlcG9zaXRvcnkucGFjayh0aGlzLnByb3BzLnBhY2tDb21tYW5kID8/ICducHggcHJvamVuIHJlbGVhc2UnKTtcblxuICAgIGxldCBpbnRlZ3JpdHkgPSB1bmRlZmluZWQ7XG4gICAgZm9yIChjb25zdCBhcnRpZmFjdCBvZiBhcnRpZmFjdHMpIHtcbiAgICAgIHN3aXRjaCAoYXJ0aWZhY3QubGFuZykge1xuICAgICAgICBjYXNlICdqcyc6XG4gICAgICAgICAgaW50ZWdyaXR5ID0gbmV3IE5wbUFydGlmYWN0SW50ZWdyaXR5KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3B5dGhvbic6XG4gICAgICAgICAgaW50ZWdyaXR5ID0gbmV3IFB5UElBcnRpZmFjdEludGVncml0eSgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdqYXZhJzpcbiAgICAgICAgY2FzZSAnZG90bmV0JzpcbiAgICAgICAgY2FzZSAnZ28nOlxuICAgICAgICAgIC8vIHdlIGRvbid0IGhhdmUgaW50ZWdyaXR5IGNoZWNrcyBmb3IgdGhlc2VcbiAgICAgICAgICAvLyBhcnRpZmFjdHMgeWV0LlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgYXJ0aWZhY3QgbGFuZ3VhZ2U6ICR7YXJ0aWZhY3QubGFuZ31gKTtcbiAgICAgIH1cbiAgICAgIGlmIChpbnRlZ3JpdHkpIHtcbiAgICAgICAgYXdhaXQgaW50ZWdyaXR5LnZhbGlkYXRlKGFydGlmYWN0LmRpcmVjdG9yeSk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCdWYWxpZGF0aW9uIGRvbmUnKTtcbiAgfVxuXG59XG5cbi8qKlxuICogTnBtSW50ZWdyaXR5IGlzIGFibGUgdG8gcGVyZm9ybSBpbnRlZ3JpdHkgY2hlY2tzIGFnYWluc3QgcGFja2FnZXMgc3RvcmVkIG9uIG5wbWpzLmNvbVxuICovXG5leHBvcnQgY2xhc3MgTnBtQXJ0aWZhY3RJbnRlZ3JpdHkgZXh0ZW5kcyBBcnRpZmFjdEludGVncml0eSB7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGV4dCA9ICd0Z3onO1xuXG4gIHByb3RlY3RlZCBhc3luYyBkb3dubG9hZChwa2c6IFB1Ymxpc2hlZFBhY2thZ2UsIHRhcmdldDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdGFyYmFsbFVybCA9IGF3YWl0IGpzb25HZXQoYGh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnLyR7ZW5jb2RlVVJJQ29tcG9uZW50KHBrZy5uYW1lKX0vJHtlbmNvZGVVUklDb21wb25lbnQocGtnLnZlcnNpb24pfWAsIFsnZGlzdCcsICd0YXJiYWxsJ10pO1xuICAgIGF3YWl0IGRvd25sb2FkKHRhcmJhbGxVcmwsIHRhcmdldCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZXh0cmFjdChmaWxlOiBzdHJpbmcsIHRhcmdldERpcjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRhci54KHsgY3dkOiB0YXJnZXREaXIsIGZpbGU6IGZpbGUsIHN0cmlwOiAxIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlQXJ0aWZhY3ROYW1lKGFydGlmYWN0TmFtZTogc3RyaW5nKTogUHVibGlzaGVkUGFja2FnZSB7XG5cbiAgICAvLyBjZGs4c0AxLjAuMC1iZXRhLjU5LmpzaWkudGd6XG4gICAgY29uc3QganNpaUFydGlmYWN0ID0gLyguKilAKC4qKVxcLmpzaWkuLztcblxuICAgIC8vIG5wbSBhcnRpZmFjdDogY2RrOHMtY2xpLTEuMC4wLWJldGE1OS50Z3pcbiAgICAvLyB5YXJuIGFydGlmYWN0OiBjZGs4cy1jbGktdjEuMC4wLWJldGE1OS50Z3ogKGFkZCBhICd2JyBiZWZvcmUgdGhlIHZlcnNpb24pXG4gICAgY29uc3QgbnBtT3JZYXJuQXJ0aWZhY3QgPSAvKC4qKS12PyhcXGQuKikuKHRnenx0YXIuZ3opLztcblxuICAgIGNvbnN0IHJlZ2V4ID0gYXJ0aWZhY3ROYW1lLmluY2x1ZGVzKCcuanNpaS4nKSA/IGpzaWlBcnRpZmFjdCA6IG5wbU9yWWFybkFydGlmYWN0O1xuXG4gICAgY29uc3QgbWF0Y2ggPSBhcnRpZmFjdE5hbWUubWF0Y2gocmVnZXgpO1xuICAgIGlmICghbWF0Y2gpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHBhcnNlIGFydGlmYWN0OiAke2FydGlmYWN0TmFtZX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBuYW1lOiBtYXRjaFsxXSwgdmVyc2lvbjogbWF0Y2hbMl0gfTtcblxuICB9XG5cbn1cblxuLyoqXG4gKiBQeVBJSW50ZWdpcnkgaXMgYWJsZSB0byBwZXJmb3JtIGludGVnaXJ5IGNoZWNrcyBhZ2FpbnN0IHBhY2thZ2VzIHN0b3JlZCBvbiBweXBpLm9yZ1xuICovXG5leHBvcnQgY2xhc3MgUHlQSUFydGlmYWN0SW50ZWdyaXR5IGV4dGVuZHMgQXJ0aWZhY3RJbnRlZ3JpdHkge1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBleHQgPSAnd2hsJztcblxuICBwcm90ZWN0ZWQgYXN5bmMgZG93bmxvYWQocGtnOiBQdWJsaXNoZWRQYWNrYWdlLCB0YXJnZXQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuXG4gICAgY29uc3QgZmlsZXMgPSBhd2FpdCBqc29uR2V0KGBodHRwczovL3B5cGkub3JnL3B5cGkvJHtlbmNvZGVVUklDb21wb25lbnQocGtnLm5hbWUpfS9qc29uYCwgWydyZWxlYXNlcycsIHBrZy52ZXJzaW9uXSk7XG4gICAgY29uc3Qgd2hlZWxzOiBzdHJpbmdbXSA9IGZpbGVzLmZpbHRlcigoZjogYW55KSA9PiBmLnVybC5lbmRzV2l0aCgnd2hsJykpLm1hcCgoZjogYW55KSA9PiBmLnVybCk7XG5cbiAgICBpZiAod2hlZWxzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyB3aGVlbHMgZm91bmQgZm9yIHBhY2thZ2UgJHtwa2cubmFtZX0tJHtwa2cudmVyc2lvbn1gKTtcbiAgICB9XG5cbiAgICBpZiAod2hlZWxzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTXVsdGlwbGUgd2hlZWxzIGZvdW5kIGZvciBwYWNrYWdlICR7cGtnLm5hbWV9LSR7cGtnLnZlcnNpb259OiAke3doZWVscy5qb2luKCcsJyl9YCk7XG4gICAgfVxuXG4gICAgYXdhaXQgZG93bmxvYWQod2hlZWxzWzBdLCB0YXJnZXQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGV4dHJhY3QoYXJ0aWZhY3Q6IHN0cmluZywgdGFyZ2V0OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB6aXAgPSBuZXcgQWRtWmlwKGFydGlmYWN0KTtcbiAgICByZXR1cm4gemlwLmV4dHJhY3RBbGxUbyh0YXJnZXQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlQXJ0aWZhY3ROYW1lKGFydGlmYWN0TmFtZTogc3RyaW5nKTogUHVibGlzaGVkUGFja2FnZSB7XG5cbiAgICAvLyBjZGs4cy0xLjAuMGI2My1weTMtbm9uZS1hbnkud2hsXG4gICAgY29uc3QgcmVnZXggPSAvKC4qKS12PyhcXGQuKiktcHkuKi53aGwvO1xuXG4gICAgY29uc3QgbWF0Y2ggPSBhcnRpZmFjdE5hbWUubWF0Y2gocmVnZXgpO1xuICAgIGlmICghbWF0Y2gpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHBhcnNlIGFydGlmYWN0OiAke2FydGlmYWN0TmFtZX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBuYW1lOiBtYXRjaFsxXSwgdmVyc2lvbjogbWF0Y2hbMl0gfTtcblxuICB9XG5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGpzb25HZXQodXJsOiBzdHJpbmcsIGpzb25QYXRoPzogc3RyaW5nW10pOiBQcm9taXNlPGFueT4ge1xuICByZXR1cm4gZ2V0KHVybCwgKHJlcywgb2ssIGtvKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGpzdHJlYW0ucGFyc2UoanNvblBhdGgpO1xuICAgIGpzb24ub25jZSgnZGF0YScsIG9rKTtcbiAgICBqc29uLm9uY2UoJ2Vycm9yJywga28pO1xuXG4gICAgcmVzLnBpcGUoanNvbiwgeyBlbmQ6IHRydWUgfSk7XG4gIH0sIHsgaGVhZGVyczogeyAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24nLCAnQWNjZXB0LUVuY29kaW5nJzogJ2lkZW50aXR5JyB9IH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZG93bmxvYWQodXJsOiBzdHJpbmcsIHRhcmdldEZpbGU6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gIHJldHVybiBnZXQodXJsLCAocmVzLCBvaywga28pID0+IHtcbiAgICBjb25zdCBmaWxlID0gZnMuY3JlYXRlV3JpdGVTdHJlYW0odGFyZ2V0RmlsZSk7XG4gICAgZmlsZS5vbignZmluaXNoJywgb2spO1xuICAgIGZpbGUub24oJ2Vycm9yJywga28pO1xuICAgIHJlcy5waXBlKGZpbGUsIHsgZW5kOiB0cnVlIH0pO1xuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldChcbiAgdXJsOiBzdHJpbmcsXG4gIGhhbmRsZXI6IChyZXM6IEluY29taW5nTWVzc2FnZSwgb2s6ICh2YWx1ZTogdW5rbm93bikgPT4gdm9pZCwga286IChlcnI6IEVycm9yKSA9PiB2b2lkKSA9PiB2b2lkLFxuICBvcHRpb25zOiBSZXF1ZXN0T3B0aW9ucyA9IHt9KSB7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChvaywga28pID0+IHtcbiAgICBjb25zdCByZXF1ZXN0ID0gZm9sbG93Lmh0dHBzLmdldCh1cmwsIG9wdGlvbnMsIChyZXM6IEluY29taW5nTWVzc2FnZSkgPT4ge1xuICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlICE9PSAyMDApIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYEdFVCAke3VybH0gLSBIVFRQICR7cmVzLnN0YXR1c0NvZGV9ICgke3Jlcy5zdGF0dXNNZXNzYWdlfSlgKTtcbiAgICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyb3IpO1xuICAgICAgICByZXR1cm4ga28oZXJyb3IpO1xuICAgICAgfVxuICAgICAgcmVzLm9uY2UoJ2Vycm9yJywga28pO1xuICAgICAgaGFuZGxlcihyZXMsIG9rLCBrbyk7XG4gICAgfSk7XG4gICAgcmVxdWVzdC5vbignZXJyb3InLCBrbyk7XG4gIH0pO1xuXG59XG4iXX0=