New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

potion-client

Package Overview
Dependencies
Maintainers
2
Versions
183
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

potion-client - npm Package Compare versions

Comparing version 0.20.18 to 0.20.19

5

core/potion.js

@@ -257,3 +257,4 @@ /* tslint:disable:max-file-line-count */

// we want to resolve it as it is and not try to resolve references or do any conversions.
return promise.resolve(json);
// Though, we want to convert snake case to camel case.
return promise.resolve(utils_1.deepOmap(json, null, function (key) { return utils_1.toCamelCase(key); }));
}

@@ -307,2 +308,2 @@ else if (Object.keys(json).length === 1) {

exports.PotionBase = PotionBase;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG90aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvcmUvcG90aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdDQUF3Qzs7QUFFeEMseUJBQWtGLFlBQVksQ0FBQyxDQUFBO0FBQy9GLHFCQUFnQyxRQUFRLENBQUMsQ0FBQTtBQUN6QyxzQkFBb0IsU0FBUyxDQUFDLENBQUE7QUFDOUIsMkJBQXlCLGNBQWMsQ0FBQyxDQUFBO0FBQ3hDLHNCQU1PLFVBQVUsQ0FBQyxDQUFBO0FBOENsQjs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0g7SUFTQyxvQkFBWSxFQUFtRDtZQUFuRCw0QkFBbUQsRUFBbEQsWUFBUyxFQUFULDhCQUFTLEVBQUUsY0FBVyxFQUFYLGdDQUFXLEVBQUUsZ0JBQUs7UUFQakMsY0FBUyxHQUEwQixFQUFFLENBQUM7UUFLdkMsdUJBQWtCLEdBQXFCLElBQUksR0FBRyxFQUFFLENBQUM7UUFHeEQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLElBQUksSUFBSSxnQkFBUSxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdEIsQ0FBQztJQUVELDBCQUFLLEdBQUwsVUFBTSxHQUFXLEVBQUUsWUFBMkIsRUFBRSxhQUErQjtRQUEvRSxpQkEwRkM7UUF6RkEsWUFBWSxHQUFHLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDN0IsZ0NBQU0sRUFBRSwwQkFBSyxFQUFFLDRCQUFNLEVBQUUsZ0NBQVEsRUFBRSx3QkFBSSxDQUFpQjtRQUNwRCxzQ0FBTyxDQUE0QztRQUMxRCxJQUFNLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFFaEIsb0NBQW9DO1FBQzdCLHdCQUFNLENBQVM7UUFDdEIsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7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QyxDQUFDO1lBQ1AsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQztJQUNGLENBQUM7SUF0VGUsa0JBQU8sR0FBUyxNQUFjLENBQUMsT0FBTyxDQUFDO0lBdVR4RCxpQkFBQztBQUFELENBQUMsQUF4VEQsSUF3VEM7QUF4VHFCLGtCQUFVLGFBd1QvQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyogdHNsaW50OmRpc2FibGU6bWF4LWZpbGUtbGluZS1jb3VudCAqL1xuXG5pbXBvcnQge2RlY29yYXRlQ3RvcldpdGhQb3Rpb25JbnN0YW5jZSwgZGVjb3JhdGVDdG9yV2l0aFBvdGlvblVSSSwgcmVhZG9ubHl9IGZyb20gJy4vbWV0YWRhdGEnO1xuaW1wb3J0IHtJdGVtT3B0aW9ucywgSXRlbX0gZnJvbSAnLi9pdGVtJztcbmltcG9ydCB7U3RvcmV9IGZyb20gJy4vc3RvcmUnO1xuaW1wb3J0IHtQYWdpbmF0aW9ufSBmcm9tICcuL3BhZ2luYXRpb24nO1xuaW1wb3J0IHtcblx0TWVtQ2FjaGUsXG5cdHRvQ2FtZWxDYXNlLFxuXHRwYWlyc1RvT2JqZWN0LFxuXHR0b1NuYWtlQ2FzZSxcblx0b21hcFxufSBmcm9tICcuLi91dGlscyc7XG5cblxuLyoqXG4gKiBJdGVtIGNhY2hlLlxuICogRGljdGF0ZXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBpdGVtIGNhY2hlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEl0ZW1DYWNoZTxUIGV4dGVuZHMgSXRlbT4ge1xuXHRnZXQoa2V5OiBzdHJpbmcpOiBUO1xuXHRwdXQoa2V5OiBzdHJpbmcsIGl0ZW06IFQpOiBUO1xuXHRyZW1vdmUoa2V5OiBzdHJpbmcpOiB2b2lkO1xufVxuXG5cbi8qKlxuICogQ29tbW9uIGludGVyZmFjZXMuXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBQYXJzZWRVUkkge1xuXHR1cmk6IHN0cmluZztcblx0cmVzb3VyY2U6IEl0ZW07XG5cdHBhcmFtczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVVJMU2VhcmNoUGFyYW1zIHtcblx0W2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RPcHRpb25zIHtcblx0bWV0aG9kPzogc3RyaW5nO1xuXHRzZWFyY2g/OiBVUkxTZWFyY2hQYXJhbXMgfCB1bmRlZmluZWQgfCBudWxsO1xuXHRkYXRhPzogYW55O1xuXHRjYWNoZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmV0Y2hPcHRpb25zIGV4dGVuZHMgUmVxdWVzdE9wdGlvbnMge1xuXHRwYWdpbmF0ZT86IGJvb2xlYW47XG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBQb3Rpb25PcHRpb25zIHtcblx0aG9zdD86IHN0cmluZztcblx0cHJlZml4Pzogc3RyaW5nO1xuXHRjYWNoZT86IEl0ZW1DYWNoZTxJdGVtPjtcbn1cblxuLyoqXG4gKiBUaGlzIGNsYXNzIGNvbnRhaW5zIHRoZSBtYWluIGxvZ2ljIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBGbGFzayBQb3Rpb24gYmFja2VuZC5cbiAqIE5vdGUgdGhhdCB0aGlzIGNsYXNzIGRvZXMgbm90IGNvbnRhaW4gdGhlIGxvZ2ljIGZvciBtYWtpbmcgdGhlIEhUVFAgcmVxdWVzdHMsXG4gKiBpdCBpcyB1cCB0byB0aGUgY2hpbGQgY2xhc3MgdG8gaW1wbGVtZW50IHRoZSBsb2dpYyBmb3IgdGhhdCB0aHJvdWdoIHRoZSBgcmVxdWVzdGAgbWV0aG9kLlxuICogRnVydGhlcm1vcmUsIHRoZSBjaGlsZCBjbGFzcyBhbHNvIG5lZWRzIHRvIHByb3ZpZGUgdGhlIFByb21pc2UgY2xhc3MvZm4gYXMgdGhpcyBjbGFzcyBpcyBzZXQgdG8gdXNlIHRoZSBuYXRpdmUgUHJvbWlzZSBvbmx5IGF2YWlsYWJsZSBmcm9tIEVTNi5cbiAqXG4gKiBAZXhhbXBsZVxuICogY2xhc3MgUG90aW9uIGV4dGVuZHMgUG90aW9uQmFzZSB7XG4gKiAgICAgc3RhdGljIHByb21pc2UgPSBQcm9taXNlO1xuICogICAgIHByb3RlY3RlZCByZXF1ZXN0KHVyaSwgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+IHtcbiAqICAgICAgICAgLy8gSGVyZSB3ZSBuZWVkIHRvIGltcGxlbWVudCB0aGUgYWN0dWFsIEhUVFAgcmVxdWVzdFxuICogICAgIH07XG4gKiB9XG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQb3Rpb25CYXNlIHtcblx0c3RhdGljIHJlYWRvbmx5IHByb21pc2U6IGFueSA9ICh3aW5kb3cgYXMgYW55KS5Qcm9taXNlO1xuXHRyZWFkb25seSByZXNvdXJjZXM6IHtba2V5OiBzdHJpbmddOiBJdGVtfSA9IHt9O1xuXHRyZWFkb25seSBjYWNoZTogSXRlbUNhY2hlPEl0ZW0+O1xuXHRob3N0OiBzdHJpbmc7XG5cdHJlYWRvbmx5IHByZWZpeDogc3RyaW5nO1xuXG5cdHByaXZhdGUgcGVuZGluZ0dFVFJlcXVlc3RzOiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcCgpO1xuXG5cdGNvbnN0cnVjdG9yKHtob3N0ID0gJycsIHByZWZpeCA9ICcnLCBjYWNoZX06IFBvdGlvbk9wdGlvbnMgPSB7fSkge1xuXHRcdHRoaXMuY2FjaGUgPSBjYWNoZSB8fCBuZXcgTWVtQ2FjaGUoKTtcblx0XHR0aGlzLmhvc3QgPSBob3N0O1xuXHRcdHRoaXMucHJlZml4ID0gcHJlZml4O1xuXHR9XG5cblx0ZmV0Y2godXJpOiBzdHJpbmcsIGZldGNoT3B0aW9ucz86IEZldGNoT3B0aW9ucywgcGFnaW5hdGlvbk9iaj86IFBhZ2luYXRpb248YW55Pik6IFByb21pc2U8SXRlbSB8IEl0ZW1bXSB8IFBhZ2luYXRpb248SXRlbT4gfCBhbnk+IHtcblx0XHRmZXRjaE9wdGlvbnMgPSBmZXRjaE9wdGlvbnMgfHwge307XG5cdFx0bGV0IHttZXRob2QsIGNhY2hlLCBzZWFyY2gsIHBhZ2luYXRlLCBkYXRhfSA9IGZldGNoT3B0aW9ucztcblx0XHRjb25zdCB7cHJvbWlzZX0gPSAodGhpcy5jb25zdHJ1Y3RvciBhcyB0eXBlb2YgUG90aW9uQmFzZSk7XG5cdFx0Y29uc3Qga2V5ID0gdXJpO1xuXG5cdFx0Ly8gQWRkIHRoZSBBUEkgcHJlZml4IGlmIG5vdCBwcmVzZW50XG5cdFx0Y29uc3Qge3ByZWZpeH0gPSB0aGlzO1xuXHRcdGlmICh1cmkuaW5kZXhPZihwcmVmaXgpID09PSAtMSkge1xuXHRcdFx0dXJpID0gYCR7cHJlZml4fSR7dXJpfWA7XG5cdFx0fVxuXG5cdFx0aWYgKHBhZ2luYXRlKSB7XG5cdFx0XHQvLyBJZiBubyBwYWdlIHdhcyBwcm92aWRlZCBzZXQgdG8gZmlyc3Rcblx0XHRcdC8vIERlZmF1bHQgdG8gMjUgaXRlbXMgcGVyIHBhZ2Vcblx0XHRcdHNlYXJjaCA9IGZldGNoT3B0aW9ucy5zZWFyY2ggPSBPYmplY3QuYXNzaWduKHtwYWdlOiAxLCBwZXJQYWdlOiAyNX0sIHNlYXJjaCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZmV0Y2ggPSAoKSA9PiB7XG5cdFx0XHRyZXR1cm4gdGhpc1xuXHRcdFx0Ly8gQ29udmVydCB0aGUge2RhdGEsIHNlYXJjaH0gb2JqZWN0IHByb3BzIHRvIHNuYWtlIGNhc2UuXG5cdFx0XHQvLyBTZXJpYWxpemUgYWxsIHZhbHVlcyB0byBQb3Rpb24gSlNPTi5cblx0XHRcdFx0LnJlcXVlc3QoYCR7dGhpcy5ob3N0fSR7dXJpfWAsIE9iamVjdC5hc3NpZ24oe30sIGZldGNoT3B0aW9ucywge1xuXHRcdFx0XHRcdHNlYXJjaDogc2VhcmNoID8gdGhpcy50b1BvdGlvbkpTT04oc2VhcmNoKSA6IG51bGwsXG5cdFx0XHRcdFx0ZGF0YTogZGF0YSA/IHRoaXMudG9Qb3Rpb25KU09OKGRhdGEpIDogbnVsbFxuXHRcdFx0XHR9KSlcblx0XHRcdFx0Ly8gQ29udmVydCB0aGUgZGF0YSB0byBQb3Rpb24gSlNPTlxuXHRcdFx0XHQudGhlbigoe2RhdGEsIGhlYWRlcnN9KSA9PiB0aGlzLmZyb21Qb3Rpb25KU09OKGRhdGEpLnRoZW4oKGpzb24pID0+ICh7aGVhZGVycywgZGF0YToganNvbn0pKSlcblx0XHRcdFx0LnRoZW4oKHtoZWFkZXJzLCBkYXRhfSkgPT4ge1xuXHRcdFx0XHRcdC8vIFJldHVybiBvciB1cGRhdGUgUGFnaW5hdGlvblxuXHRcdFx0XHRcdGlmIChwYWdpbmF0ZSkge1xuXHRcdFx0XHRcdFx0Y29uc3QgY291bnQgPSBoZWFkZXJzWyd4LXRvdGFsLWNvdW50J10gfHwgZGF0YS5sZW5ndGg7XG5cblx0XHRcdFx0XHRcdGlmICghcGFnaW5hdGlvbk9iaikge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbmV3IFBhZ2luYXRpb248SXRlbT4oe3VyaSwgcG90aW9uOiB0aGlzfSwgZGF0YSwgY291bnQsIGZldGNoT3B0aW9ucyk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRwYWdpbmF0aW9uT2JqLnVwZGF0ZShkYXRhLCBjb3VudCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0XHRcdH0pO1xuXHRcdH07XG5cblx0XHRpZiAobWV0aG9kID09PSAnR0VUJyAmJiAhc2VhcmNoKSB7XG5cdFx0XHQvLyBJZiBhIEdFVCByZXF1ZXN0IGFuZCB7Y2FjaGU6IHRydWV9LFxuXHRcdFx0Ly8gdHJ5IHRvIGdldCBpdGVtIGZyb20gY2FjaGUsXG5cdFx0XHQvLyBhbmQgcmV0dXJuIGEgcmVzb2x2ZWQgcHJvbWlzZSB3aXRoIHRoZSBjYWNoZWQgaXRlbS5cblx0XHRcdC8vIE5vdGUgdGhhdCBxdWVyaWVzIGFyZSBub3QgY2FjaGVkLlxuXHRcdFx0aWYgIChjYWNoZSkge1xuXHRcdFx0XHRjb25zdCBpdGVtID0gdGhpcy5jYWNoZS5nZXQoa2V5KTtcblx0XHRcdFx0aWYgKGl0ZW0pIHtcblx0XHRcdFx0XHRyZXR1cm4gcHJvbWlzZS5yZXNvbHZlKGl0ZW0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIHdlIGFscmVhZHkgYXNrZWQgZm9yIHRoZSByZXNvdXJjZSxcblx0XHRcdC8vIHJldHVybiB0aGUgZXhpdGluZyBwZW5kaW5nIHJlcXVlc3QgcHJvbWlzZS5cblx0XHRcdGlmICh0aGlzLnBlbmRpbmdHRVRSZXF1ZXN0cy5oYXModXJpKSkge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5wZW5kaW5nR0VUUmVxdWVzdHMuZ2V0KHVyaSk7XG5cdFx0XHR9XG5cblx0XHRcdGxldCByZXF1ZXN0ID0gZmV0Y2goKS50aGVuKFxuXHRcdFx0XHQoZGF0YSkgPT4ge1xuXHRcdFx0XHRcdC8vIFJlbW92ZSBwZW5kaW5nIHJlcXVlc3Rcblx0XHRcdFx0XHR0aGlzLnBlbmRpbmdHRVRSZXF1ZXN0cy5kZWxldGUodXJpKTtcblx0XHRcdFx0XHRyZXR1cm4gZGF0YTtcblx0XHRcdFx0fSxcblx0XHRcdFx0KGVycm9yKSA9PiB7XG5cdFx0XHRcdFx0Ly8gSWYgcmVxdWVzdCBmYWlscyxcblx0XHRcdFx0XHQvLyBtYWtlIHN1cmUgdG8gcmVtb3ZlIHRoZSBwZW5kaW5nIHJlcXVlc3Qgc28gZnVydGhlciByZXF1ZXN0cyBjYW4gYmUgbWFkZS5cblx0XHRcdFx0XHQvLyBSZXR1cm4gaXMgbmVjZXNzYXJ5LlxuXHRcdFx0XHRcdHRoaXMucGVuZGluZ0dFVFJlcXVlc3RzLmRlbGV0ZSh1cmkpO1xuXHRcdFx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yXG5cdFx0XHRcdFx0XHQ/IGVycm9yLm1lc3NhZ2Vcblx0XHRcdFx0XHRcdDogdHlwZW9mIGVycm9yID09PSAnc3RyaW5nJ1xuXHRcdFx0XHRcdFx0XHQ/IGVycm9yXG5cdFx0XHRcdFx0XHRcdDogYEFuIGVycm9yIG9jY3VycmVkIHdoaWxlIFBvdGlvbiB0cmllZCB0byByZXRyaWV2ZSByZXNvdXJjZSBmcm9tICcke3VyaX0nLmA7XG5cdFx0XHRcdFx0cmV0dXJuIHByb21pc2UucmVqZWN0KFxuXHRcdFx0XHRcdFx0bmV3IEVycm9yKG1lc3NhZ2UpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0KTtcblxuXHRcdFx0dGhpcy5wZW5kaW5nR0VUUmVxdWVzdHMuc2V0KHVyaSwgcmVxdWVzdCk7XG5cblx0XHRcdHJldHVybiByZXF1ZXN0O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gZmV0Y2goKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmVnaXN0ZXIgYSByZXNvdXJjZS5cblx0ICogQHBhcmFtIHtTdHJpbmd9IHVyaSAtIFBhdGggb24gd2hpY2ggdGhlIHJlc291cmNlIGlzIHJlZ2lzdGVyZWQuXG5cdCAqIEBwYXJhbSB7SXRlbX0gcmVzb3VyY2Vcblx0ICogQHBhcmFtIHtJdGVtT3B0aW9uc30gb3B0aW9ucyAtIFNldCB0aGUgcHJvcGVydHkgb3B0aW9ucyBmb3IgYW55IGluc3RhbmNlIG9mIHRoZSByZXNvdXJjZSAoc2V0dGluZyBhIHByb3BlcnR5IHRvIHJlYWRvbmx5IGZvciBpbnN0YW5jZSkuXG5cdCAqL1xuXHRyZWdpc3Rlcih1cmk6IHN0cmluZywgcmVzb3VyY2U6IGFueSwgb3B0aW9ucz86IEl0ZW1PcHRpb25zKTogSXRlbSB7XG5cdFx0ZGVjb3JhdGVDdG9yV2l0aFBvdGlvbkluc3RhbmNlKHJlc291cmNlLCB0aGlzKTtcblx0XHRkZWNvcmF0ZUN0b3JXaXRoUG90aW9uVVJJKHJlc291cmNlLCB1cmkpO1xuXG5cdFx0aWYgKG9wdGlvbnMgJiYgQXJyYXkuaXNBcnJheShvcHRpb25zLnJlYWRvbmx5KSkge1xuXHRcdFx0b3B0aW9ucy5yZWFkb25seS5mb3JFYWNoKChwcm9wZXJ0eSkgPT4gcmVhZG9ubHkocmVzb3VyY2UsIHByb3BlcnR5KSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5yZXNvdXJjZXNbdXJpXSA9IHJlc291cmNlO1xuXHRcdHJlc291cmNlLnN0b3JlID0gbmV3IFN0b3JlKHJlc291cmNlKTtcblxuXHRcdHJldHVybiByZXNvdXJjZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlciBhIHJlc291cmNlLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gdXJpIC0gUGF0aCBvbiB3aGljaCB0aGUgcmVzb3VyY2UgaXMgcmVnaXN0ZXJlZC5cblx0ICogQHBhcmFtIHtJdGVtT3B0aW9uc30gb3B0aW9ucyAtIFNldCB0aGUgcHJvcGVydHkgb3B0aW9ucyBmb3IgYW55IGluc3RhbmNlIG9mIHRoZSByZXNvdXJjZSAoc2V0dGluZyBhIHByb3BlcnR5IHRvIHJlYWRvbmx5IGZvciBpbnN0YW5jZSkuXG5cdCAqXG5cdCAqIEBleGFtcGxlXG5cdCAqIEBwb3Rpb24ucmVnaXN0ZXJBcygnL3VzZXInKVxuXHQgKiBjbGFzcyBVc2VyIGV4dGVuZHMgSXRlbSB7fVxuXHQgKi9cblx0cmVnaXN0ZXJBcyh1cmk6IHN0cmluZywgb3B0aW9ucz86IEl0ZW1PcHRpb25zKTogQ2xhc3NEZWNvcmF0b3Ige1xuXHRcdHJldHVybiAodGFyZ2V0OiBhbnkpID0+IHtcblx0XHRcdHRoaXMucmVnaXN0ZXIodXJpLCB0YXJnZXQsIG9wdGlvbnMpO1xuXHRcdFx0cmV0dXJuIHRhcmdldDtcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIE1ha2UgYSBIVFRQIHJlcXVlc3QuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB1cmlcblx0ICogQHBhcmFtIHtSZXF1ZXN0T3B0aW9uc30gb3B0aW9uc1xuXHQgKiBAcmV0dXJucyB7T2JqZWN0fSBBbiBvYmplY3Qgd2l0aCB7ZGF0YSwgaGVhZGVyc30gd2hlcmUge2RhdGF9IGNhbiBiZSBhbnl0aGluZyBhbmQge2hlYWRlcnN9IGlzIGFuIG9iamVjdCB3aXRoIHRoZSByZXNwb25zZSBoZWFkZXJzIGZyb20gdGhlIEhUVFAgcmVxdWVzdC5cblx0ICovXG5cdHByb3RlY3RlZCBhYnN0cmFjdCByZXF1ZXN0KHVyaTogc3RyaW5nLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT47XG5cblx0cHJpdmF0ZSBwYXJzZVVSSSh1cmk6IHN0cmluZyk6IFBhcnNlZFVSSSB7XG5cdFx0dXJpID0gZGVjb2RlVVJJQ29tcG9uZW50KHVyaSk7XG5cblx0XHRpZiAodXJpLmluZGV4T2YodGhpcy5wcmVmaXgpID09PSAwKSB7XG5cdFx0XHR1cmkgPSB1cmkuc3Vic3RyaW5nKHRoaXMucHJlZml4Lmxlbmd0aCk7XG5cdFx0fVxuXG5cdFx0Zm9yIChsZXQgW3Jlc291cmNlVVJJLCByZXNvdXJjZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5yZXNvdXJjZXMpKSB7XG5cdFx0XHRpZiAodXJpLmluZGV4T2YoYCR7cmVzb3VyY2VVUkl9L2ApID09PSAwKSB7XG5cdFx0XHRcdHJldHVybiB7dXJpLCByZXNvdXJjZSwgcGFyYW1zOiB1cmkuc3Vic3RyaW5nKHJlc291cmNlVVJJLmxlbmd0aCArIDEpLnNwbGl0KCcvJyl9O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHRocm93IG5ldyBFcnJvcihgVVJJICcke3VyaX0nIGlzIGFuIHVuaW50ZXJwcmV0YWJsZSBvciB1bmtub3duIHBvdGlvbiByZXNvdXJjZS5gKTtcblx0fVxuXG5cdHByaXZhdGUgdG9Qb3Rpb25KU09OKGpzb246IGFueSk6IGFueSB7XG5cdFx0aWYgKHR5cGVvZiBqc29uID09PSAnb2JqZWN0JyAmJiBqc29uICE9PSBudWxsKSB7XG5cdFx0XHRpZiAoanNvbiBpbnN0YW5jZW9mIChJdGVtIGFzIGFueSkgJiYgdHlwZW9mIGpzb24udXJpID09PSAnc3RyaW5nJykge1xuXHRcdFx0XHRyZXR1cm4geyRyZWY6IGAke3RoaXMucHJlZml4fSR7anNvbi51cml9YH07XG5cdFx0XHR9IGVsc2UgaWYgKGpzb24gaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0XHRcdHJldHVybiB7JGRhdGU6IGpzb24uZ2V0VGltZSgpfTtcblx0XHRcdH0gZWxzZSBpZiAoanNvbiBpbnN0YW5jZW9mIEFycmF5KSB7XG5cdFx0XHRcdHJldHVybiBqc29uLm1hcCgoaXRlbSkgPT4gdGhpcy50b1BvdGlvbkpTT04oaXRlbSkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIG9tYXAoanNvbiwgKGtleSwgdmFsdWUpID0+IFt0b1NuYWtlQ2FzZShrZXkpLCB0aGlzLnRvUG90aW9uSlNPTih2YWx1ZSldKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGpzb247XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBmcm9tUG90aW9uSlNPTihqc29uOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuXHRcdGNvbnN0IHtwcm9taXNlfSA9ICh0aGlzLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBQb3Rpb25CYXNlKTtcblx0XHRpZiAodHlwZW9mIGpzb24gPT09ICdvYmplY3QnICYmIGpzb24gIT09IG51bGwpIHtcblx0XHRcdGlmIChqc29uIGluc3RhbmNlb2YgQXJyYXkpIHtcblx0XHRcdFx0cmV0dXJuIHByb21pc2UuYWxsKGpzb24ubWFwKChpdGVtKSA9PiB0aGlzLmZyb21Qb3Rpb25KU09OKGl0ZW0pKSk7XG5cdFx0XHRcdC8vIFRPRE86IHRoZSBqc29uIG1heSBhbHNvIGhhdmUgeyR0eXBlLCAkaWR9IHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVjb2duaXplIGEgcmVzb3VyY2Vcblx0XHRcdFx0Ly8gSWYgbmVpdGhlciBjb21iaW5hdGlvbiBpcyBwcm92aWRlZCwgaXQgc2hvdWxkIHRocm93IGFuZCBsZXQgdGhlIHVzZXIgbm93IEZsYXNrIFBvdGlvbiBuZWVkcyB0byBiZSBjb25maWd1cmVkIHdpdGggb25lIG9mIHRoZXNlIHR3byBzdHJhdGVnaWVzLlxuXHRcdFx0fSBlbHNlIGlmICh0eXBlb2YganNvbi4kdXJpID09PSAnc3RyaW5nJykge1xuXHRcdFx0XHQvLyBUcnkgdG8gcGFyc2UgdGhlIFVSSSxcblx0XHRcdFx0Ly8gb3RoZXJ3aXNlIHJlamVjdCB3aXRoIHRoZSBleGNlcHRpb24gdGhyb3duIGZyb20gcGFyc2VVUkkuXG5cdFx0XHRcdGxldCByZXNvdXJjZTtcblx0XHRcdFx0bGV0IHVyaTtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRjb25zdCBwYXJzZWRVUkkgPSB0aGlzLnBhcnNlVVJJKGpzb24uJHVyaSk7XG5cdFx0XHRcdFx0cmVzb3VyY2UgPSBwYXJzZWRVUkkucmVzb3VyY2U7XG5cdFx0XHRcdFx0dXJpID0gcGFyc2VkVVJJLnVyaTtcblx0XHRcdFx0fSBjYXRjaCAocGFyc2VVUklFcnJvcikge1xuXHRcdFx0XHRcdHJldHVybiBwcm9taXNlLnJlamVjdChwYXJzZVVSSUVycm9yKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IHByb21pc2VzOiBQcm9taXNlPGFueT5bXSA9IFtdO1xuXG5cdFx0XHRcdC8vIENhY2hlIHRoZSByZXNvdXJjZSBpZiBpdCBkb2VzIG5vdCBleGlzdCxcblx0XHRcdFx0Ly8gYnV0IGRvIGl0IGJlZm9yZSByZXNvbHZpbmcgYW55IHBvc3NpYmxlIHJlZmVyZW5jZXMgKHRvIG90aGVyIHJlc291cmNlcykgb24gaXQuXG5cdFx0XHRcdGlmICghdGhpcy5jYWNoZS5nZXQodXJpKSkge1xuXHRcdFx0XHRcdHRoaXMuY2FjaGUucHV0KFxuXHRcdFx0XHRcdFx0dXJpLFxuXHRcdFx0XHRcdFx0Ly8gQ3JlYXRlIGFuIGVtcHR5IGluc3RhbmNlXG5cdFx0XHRcdFx0XHRSZWZsZWN0LmNvbnN0cnVjdChyZXNvdXJjZSBhcyBhbnksIFtdKSBhcyBhbnlcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblxuXHRcdFx0XHQvLyBSZXNvbHZlIHBvc3NpYmxlIHJlZmVyZW5jZXNcblx0XHRcdFx0Zm9yIChsZXQga2V5IG9mIE9iamVjdC5rZXlzKGpzb24pKSB7XG5cdFx0XHRcdFx0aWYgKGtleSA9PT0gJyR1cmknKSB7XG5cdFx0XHRcdFx0XHRwcm9taXNlcy5wdXNoKHByb21pc2UucmVzb2x2ZShba2V5LCB1cmldKSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHByb21pc2VzLnB1c2goXG5cdFx0XHRcdFx0XHRcdHRoaXMuZnJvbVBvdGlvbkpTT04oanNvbltrZXldKVxuXHRcdFx0XHRcdFx0XHRcdC50aGVuKCh2YWx1ZSkgPT4gW3RvQ2FtZWxDYXNlKGtleSksIHZhbHVlXSlcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblxuXHRcdFx0XHRyZXR1cm4gcHJvbWlzZS5hbGwocHJvbWlzZXMpXG5cdFx0XHRcdFx0LnRoZW4oKHByb3BlcnR5VmFsdWVQYWlycykgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3QgcHJvcGVydGllczogYW55ID0gcGFpcnNUb09iamVjdChwcm9wZXJ0eVZhbHVlUGFpcnMpO1xuXHRcdFx0XHRcdFx0Y29uc3Qgb2JqID0ge307XG5cblx0XHRcdFx0XHRcdE9iamVjdC5rZXlzKHByb3BlcnRpZXMpXG5cdFx0XHRcdFx0XHRcdC5maWx0ZXIoKGtleSkgPT4ga2V5ICE9PSAnJHVyaScpXG5cdFx0XHRcdFx0XHRcdC5mb3JFYWNoKChrZXkpID0+IG9ialtrZXldID0gcHJvcGVydGllc1trZXldKTtcblxuXHRcdFx0XHRcdFx0Ly8gVHJ5IHRvIHBhcnNlIHRoZSBVUkksXG5cdFx0XHRcdFx0XHQvLyBvdGhlcndpc2UgcmVqZWN0IHdpdGggdGhlIGV4Y2VwdGlvbiB0aHJvd24gZnJvbSBwYXJzZVVSSS5cblx0XHRcdFx0XHRcdGxldCBwYXJhbXM7XG5cdFx0XHRcdFx0XHRsZXQgdXJpO1xuXHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgcGFyc2VkVVJJID0gdGhpcy5wYXJzZVVSSShwcm9wZXJ0aWVzLiR1cmkpO1xuXHRcdFx0XHRcdFx0XHRwYXJhbXMgPSBwYXJzZWRVUkkucGFyYW1zO1xuXHRcdFx0XHRcdFx0XHR1cmkgPSBwYXJzZWRVUkkudXJpO1xuXHRcdFx0XHRcdFx0fSBjYXRjaCAocGFyc2VVUklFcnJvcikge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gcHJvbWlzZS5yZWplY3QocGFyc2VVUklFcnJvcik7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdE9iamVjdC5hc3NpZ24ob2JqLCB7XG5cdFx0XHRcdFx0XHRcdCRpZDogcGFyc2VJbnQocGFyYW1zWzBdLCAxMCksXG5cdFx0XHRcdFx0XHRcdCR1cmk6IHVyaVxuXHRcdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRcdC8vIFRyeSB0byBnZXQgZXhpc3RpbmcgZW50cnkgZnJvbSBjYWNoZVxuXHRcdFx0XHRcdFx0bGV0IGl0ZW0gPSB0aGlzLmNhY2hlLmdldCh1cmkpO1xuXG5cdFx0XHRcdFx0XHRpZiAoaXRlbSkge1xuXHRcdFx0XHRcdFx0XHRPYmplY3QuYXNzaWduKGl0ZW0sIG9iaik7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRpdGVtID0gUmVmbGVjdC5jb25zdHJ1Y3QocmVzb3VyY2UgYXMgYW55LCBbb2JqXSk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHRoaXMuY2FjaGUucHV0KHVyaSwgaXRlbSBhcyBhbnkpO1xuXG5cdFx0XHRcdFx0XHRyZXR1cm4gaXRlbTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGpzb24uJHNjaGVtYSA9PT0gJ3N0cmluZycpIHtcblx0XHRcdFx0Ly8gSWYgd2UgaGF2ZSBhIHNjaGVtYSBvYmplY3QsXG5cdFx0XHRcdC8vIHdlIHdhbnQgdG8gcmVzb2x2ZSBpdCBhcyBpdCBpcyBhbmQgbm90IHRyeSB0byByZXNvbHZlIHJlZmVyZW5jZXMgb3IgZG8gYW55IGNvbnZlcnNpb25zLlxuXHRcdFx0XHRyZXR1cm4gcHJvbWlzZS5yZXNvbHZlKGpzb24pO1xuXHRcdFx0fSBlbHNlIGlmIChPYmplY3Qua2V5cyhqc29uKS5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0aWYgKHR5cGVvZiBqc29uLiRyZWYgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdFx0Ly8gSGFjayB0byBub3QgdHJ5IHRvIHJlc29sdmUgc2VsZiByZWZlcmVuY2VzLlxuXHRcdFx0XHRcdC8vIFRPRE86IHdlIG5lZWQgdG8gZml4IHRoaXMgaW4gc29tZSB3YXlcblx0XHRcdFx0XHRpZiAoanNvbi4kcmVmID09PSAnIycpIHtcblx0XHRcdFx0XHRcdHJldHVybiBwcm9taXNlLnJlc29sdmUoanNvbi4kcmVmKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBUcnkgdG8gcGFyc2UgdGhlIFVSSSxcblx0XHRcdFx0XHQvLyBvdGhlcndpc2UgcmVqZWN0IHdpdGggdGhlIGV4Y2VwdGlvbiB0aHJvd24gZnJvbSBwYXJzZVVSSS5cblx0XHRcdFx0XHRsZXQgdXJpO1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRjb25zdCBwYXJzZWRVUkkgPSB0aGlzLnBhcnNlVVJJKGpzb24uJHJlZik7XG5cdFx0XHRcdFx0XHR1cmkgPSBwYXJzZWRVUkkudXJpO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKHBhcnNlVVJJRXJyb3IpIHtcblx0XHRcdFx0XHRcdHJldHVybiBwcm9taXNlLnJlamVjdChwYXJzZVVSSUVycm9yKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5mZXRjaCh1cmksIHtcblx0XHRcdFx0XHRcdGNhY2hlOiB0cnVlLFxuXHRcdFx0XHRcdFx0bWV0aG9kOiAnR0VUJ1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBqc29uLiRkYXRlICE9PSAndW5kZWZpbmVkJykge1xuXHRcdFx0XHRcdHJldHVybiBwcm9taXNlLnJlc29sdmUobmV3IERhdGUoanNvbi4kZGF0ZSkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHByb21pc2VzOiBQcm9taXNlPGFueT5bXSA9IFtdO1xuXG5cdFx0XHRmb3IgKGxldCBrZXkgb2YgT2JqZWN0LmtleXMoanNvbikpIHtcblx0XHRcdFx0cHJvbWlzZXMucHVzaCh0aGlzLmZyb21Qb3Rpb25KU09OKGpzb25ba2V5XSlcblx0XHRcdFx0XHQudGhlbigodmFsdWUpID0+IFt0b0NhbWVsQ2FzZShrZXkpLCB2YWx1ZV0pKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHByb21pc2UuYWxsKHByb21pc2VzKVxuXHRcdFx0XHQudGhlbigocHJvcGVydHlWYWx1ZVBhaXJzKSA9PiBwYWlyc1RvT2JqZWN0KHByb3BlcnR5VmFsdWVQYWlycykpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gcHJvbWlzZS5yZXNvbHZlKGpzb24pO1xuXHRcdH1cblx0fVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG90aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvcmUvcG90aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdDQUF3Qzs7QUFFeEMseUJBQWtGLFlBQVksQ0FBQyxDQUFBO0FBQy9GLHFCQUFnQyxRQUFRLENBQUMsQ0FBQTtBQUN6QyxzQkFBb0IsU0FBUyxDQUFDLENBQUE7QUFDOUIsMkJBQXlCLGNBQWMsQ0FBQyxDQUFBO0FBQ3hDLHNCQU9PLFVBQVUsQ0FBQyxDQUFBO0FBOENsQjs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0g7SUFTQyxvQkFBWSxFQUFtRDtZQUFuRCw0QkFBbUQsRUFBbEQsWUFBUyxFQUFULDhCQUFTLEVBQUUsY0FBVyxFQUFYLGdDQUFXLEVBQUUsZ0JBQUs7UUFQakMsY0FBUyxHQUEwQixFQUFFLENBQUM7UUFLdkMsdUJBQWtCLEdBQXFCLElBQUksR0FBRyxFQUFFLENBQUM7UUFHeEQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLElBQUksSUFBSSxnQkFBUSxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdEIsQ0FBQztJQUVELDBCQUFLLEdBQUwsVUFBTSxHQUFXLEVBQUUsWUFBMkIsRUFBRSxhQUErQjtRQUEvRSxpQkEwRkM7UUF6RkEsWUFBWSxHQUFHLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDN0IsZ0NBQU0sRUFBRSwwQkFBSyxFQUFFLDRCQUFNLEVBQUUsZ0NBQVEsRUFBRSx3QkFBSSxDQUFpQjtRQUNwRCxzQ0FBTyxDQUE0QztRQUMxRCxJQUFNLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFFaEIsb0NBQW9DO1FBQzdCLHdCQUFNLENBQVM7UUFDdEIsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7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SSxDQUFDLFVBQUMsa0JBQWtCLElBQUssT0FBQSxxQkFBYSxDQUFDLGtCQUFrQixDQUFDLEVBQWpDLENBQWlDLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDUCxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixDQUFDO0lBQ0YsQ0FBQztJQXZUZSxrQkFBTyxHQUFTLE1BQWMsQ0FBQyxPQUFPLENBQUM7SUF3VHhELGlCQUFDO0FBQUQsQ0FBQyxBQXpURCxJQXlUQztBQXpUcUIsa0JBQVUsYUF5VC9CLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiB0c2xpbnQ6ZGlzYWJsZTptYXgtZmlsZS1saW5lLWNvdW50ICovXG5cbmltcG9ydCB7ZGVjb3JhdGVDdG9yV2l0aFBvdGlvbkluc3RhbmNlLCBkZWNvcmF0ZUN0b3JXaXRoUG90aW9uVVJJLCByZWFkb25seX0gZnJvbSAnLi9tZXRhZGF0YSc7XG5pbXBvcnQge0l0ZW1PcHRpb25zLCBJdGVtfSBmcm9tICcuL2l0ZW0nO1xuaW1wb3J0IHtTdG9yZX0gZnJvbSAnLi9zdG9yZSc7XG5pbXBvcnQge1BhZ2luYXRpb259IGZyb20gJy4vcGFnaW5hdGlvbic7XG5pbXBvcnQge1xuXHRNZW1DYWNoZSxcblx0dG9DYW1lbENhc2UsXG5cdHBhaXJzVG9PYmplY3QsXG5cdHRvU25ha2VDYXNlLFxuXHRvbWFwLFxuXHRkZWVwT21hcFxufSBmcm9tICcuLi91dGlscyc7XG5cblxuLyoqXG4gKiBJdGVtIGNhY2hlLlxuICogRGljdGF0ZXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBpdGVtIGNhY2hlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEl0ZW1DYWNoZTxUIGV4dGVuZHMgSXRlbT4ge1xuXHRnZXQoa2V5OiBzdHJpbmcpOiBUO1xuXHRwdXQoa2V5OiBzdHJpbmcsIGl0ZW06IFQpOiBUO1xuXHRyZW1vdmUoa2V5OiBzdHJpbmcpOiB2b2lkO1xufVxuXG5cbi8qKlxuICogQ29tbW9uIGludGVyZmFjZXMuXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBQYXJzZWRVUkkge1xuXHR1cmk6IHN0cmluZztcblx0cmVzb3VyY2U6IEl0ZW07XG5cdHBhcmFtczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVVJMU2VhcmNoUGFyYW1zIHtcblx0W2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RPcHRpb25zIHtcblx0bWV0aG9kPzogc3RyaW5nO1xuXHRzZWFyY2g/OiBVUkxTZWFyY2hQYXJhbXMgfCB1bmRlZmluZWQgfCBudWxsO1xuXHRkYXRhPzogYW55O1xuXHRjYWNoZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmV0Y2hPcHRpb25zIGV4dGVuZHMgUmVxdWVzdE9wdGlvbnMge1xuXHRwYWdpbmF0ZT86IGJvb2xlYW47XG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBQb3Rpb25PcHRpb25zIHtcblx0aG9zdD86IHN0cmluZztcblx0cHJlZml4Pzogc3RyaW5nO1xuXHRjYWNoZT86IEl0ZW1DYWNoZTxJdGVtPjtcbn1cblxuLyoqXG4gKiBUaGlzIGNsYXNzIGNvbnRhaW5zIHRoZSBtYWluIGxvZ2ljIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBGbGFzayBQb3Rpb24gYmFja2VuZC5cbiAqIE5vdGUgdGhhdCB0aGlzIGNsYXNzIGRvZXMgbm90IGNvbnRhaW4gdGhlIGxvZ2ljIGZvciBtYWtpbmcgdGhlIEhUVFAgcmVxdWVzdHMsXG4gKiBpdCBpcyB1cCB0byB0aGUgY2hpbGQgY2xhc3MgdG8gaW1wbGVtZW50IHRoZSBsb2dpYyBmb3IgdGhhdCB0aHJvdWdoIHRoZSBgcmVxdWVzdGAgbWV0aG9kLlxuICogRnVydGhlcm1vcmUsIHRoZSBjaGlsZCBjbGFzcyBhbHNvIG5lZWRzIHRvIHByb3ZpZGUgdGhlIFByb21pc2UgY2xhc3MvZm4gYXMgdGhpcyBjbGFzcyBpcyBzZXQgdG8gdXNlIHRoZSBuYXRpdmUgUHJvbWlzZSBvbmx5IGF2YWlsYWJsZSBmcm9tIEVTNi5cbiAqXG4gKiBAZXhhbXBsZVxuICogY2xhc3MgUG90aW9uIGV4dGVuZHMgUG90aW9uQmFzZSB7XG4gKiAgICAgc3RhdGljIHByb21pc2UgPSBQcm9taXNlO1xuICogICAgIHByb3RlY3RlZCByZXF1ZXN0KHVyaSwgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+IHtcbiAqICAgICAgICAgLy8gSGVyZSB3ZSBuZWVkIHRvIGltcGxlbWVudCB0aGUgYWN0dWFsIEhUVFAgcmVxdWVzdFxuICogICAgIH07XG4gKiB9XG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQb3Rpb25CYXNlIHtcblx0c3RhdGljIHJlYWRvbmx5IHByb21pc2U6IGFueSA9ICh3aW5kb3cgYXMgYW55KS5Qcm9taXNlO1xuXHRyZWFkb25seSByZXNvdXJjZXM6IHtba2V5OiBzdHJpbmddOiBJdGVtfSA9IHt9O1xuXHRyZWFkb25seSBjYWNoZTogSXRlbUNhY2hlPEl0ZW0+O1xuXHRob3N0OiBzdHJpbmc7XG5cdHJlYWRvbmx5IHByZWZpeDogc3RyaW5nO1xuXG5cdHByaXZhdGUgcGVuZGluZ0dFVFJlcXVlc3RzOiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcCgpO1xuXG5cdGNvbnN0cnVjdG9yKHtob3N0ID0gJycsIHByZWZpeCA9ICcnLCBjYWNoZX06IFBvdGlvbk9wdGlvbnMgPSB7fSkge1xuXHRcdHRoaXMuY2FjaGUgPSBjYWNoZSB8fCBuZXcgTWVtQ2FjaGUoKTtcblx0XHR0aGlzLmhvc3QgPSBob3N0O1xuXHRcdHRoaXMucHJlZml4ID0gcHJlZml4O1xuXHR9XG5cblx0ZmV0Y2godXJpOiBzdHJpbmcsIGZldGNoT3B0aW9ucz86IEZldGNoT3B0aW9ucywgcGFnaW5hdGlvbk9iaj86IFBhZ2luYXRpb248YW55Pik6IFByb21pc2U8SXRlbSB8IEl0ZW1bXSB8IFBhZ2luYXRpb248SXRlbT4gfCBhbnk+IHtcblx0XHRmZXRjaE9wdGlvbnMgPSBmZXRjaE9wdGlvbnMgfHwge307XG5cdFx0bGV0IHttZXRob2QsIGNhY2hlLCBzZWFyY2gsIHBhZ2luYXRlLCBkYXRhfSA9IGZldGNoT3B0aW9ucztcblx0XHRjb25zdCB7cHJvbWlzZX0gPSAodGhpcy5jb25zdHJ1Y3RvciBhcyB0eXBlb2YgUG90aW9uQmFzZSk7XG5cdFx0Y29uc3Qga2V5ID0gdXJpO1xuXG5cdFx0Ly8gQWRkIHRoZSBBUEkgcHJlZml4IGlmIG5vdCBwcmVzZW50XG5cdFx0Y29uc3Qge3ByZWZpeH0gPSB0aGlzO1xuXHRcdGlmICh1cmkuaW5kZXhPZihwcmVmaXgpID09PSAtMSkge1xuXHRcdFx0dXJpID0gYCR7cHJlZml4fSR7dXJpfWA7XG5cdFx0fVxuXG5cdFx0aWYgKHBhZ2luYXRlKSB7XG5cdFx0XHQvLyBJZiBubyBwYWdlIHdhcyBwcm92aWRlZCBzZXQgdG8gZmlyc3Rcblx0XHRcdC8vIERlZmF1bHQgdG8gMjUgaXRlbXMgcGVyIHBhZ2Vcblx0XHRcdHNlYXJjaCA9IGZldGNoT3B0aW9ucy5zZWFyY2ggPSBPYmplY3QuYXNzaWduKHtwYWdlOiAxLCBwZXJQYWdlOiAyNX0sIHNlYXJjaCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZmV0Y2ggPSAoKSA9PiB7XG5cdFx0XHRyZXR1cm4gdGhpc1xuXHRcdFx0Ly8gQ29udmVydCB0aGUge2RhdGEsIHNlYXJjaH0gb2JqZWN0IHByb3BzIHRvIHNuYWtlIGNhc2UuXG5cdFx0XHQvLyBTZXJpYWxpemUgYWxsIHZhbHVlcyB0byBQb3Rpb24gSlNPTi5cblx0XHRcdFx0LnJlcXVlc3QoYCR7dGhpcy5ob3N0fSR7dXJpfWAsIE9iamVjdC5hc3NpZ24oe30sIGZldGNoT3B0aW9ucywge1xuXHRcdFx0XHRcdHNlYXJjaDogc2VhcmNoID8gdGhpcy50b1BvdGlvbkpTT04oc2VhcmNoKSA6IG51bGwsXG5cdFx0XHRcdFx0ZGF0YTogZGF0YSA/IHRoaXMudG9Qb3Rpb25KU09OKGRhdGEpIDogbnVsbFxuXHRcdFx0XHR9KSlcblx0XHRcdFx0Ly8gQ29udmVydCB0aGUgZGF0YSB0byBQb3Rpb24gSlNPTlxuXHRcdFx0XHQudGhlbigoe2RhdGEsIGhlYWRlcnN9KSA9PiB0aGlzLmZyb21Qb3Rpb25KU09OKGRhdGEpLnRoZW4oKGpzb24pID0+ICh7aGVhZGVycywgZGF0YToganNvbn0pKSlcblx0XHRcdFx0LnRoZW4oKHtoZWFkZXJzLCBkYXRhfSkgPT4ge1xuXHRcdFx0XHRcdC8vIFJldHVybiBvciB1cGRhdGUgUGFnaW5hdGlvblxuXHRcdFx0XHRcdGlmIChwYWdpbmF0ZSkge1xuXHRcdFx0XHRcdFx0Y29uc3QgY291bnQgPSBoZWFkZXJzWyd4LXRvdGFsLWNvdW50J10gfHwgZGF0YS5sZW5ndGg7XG5cblx0XHRcdFx0XHRcdGlmICghcGFnaW5hdGlvbk9iaikge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbmV3IFBhZ2luYXRpb248SXRlbT4oe3VyaSwgcG90aW9uOiB0aGlzfSwgZGF0YSwgY291bnQsIGZldGNoT3B0aW9ucyk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRwYWdpbmF0aW9uT2JqLnVwZGF0ZShkYXRhLCBjb3VudCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0XHRcdH0pO1xuXHRcdH07XG5cblx0XHRpZiAobWV0aG9kID09PSAnR0VUJyAmJiAhc2VhcmNoKSB7XG5cdFx0XHQvLyBJZiBhIEdFVCByZXF1ZXN0IGFuZCB7Y2FjaGU6IHRydWV9LFxuXHRcdFx0Ly8gdHJ5IHRvIGdldCBpdGVtIGZyb20gY2FjaGUsXG5cdFx0XHQvLyBhbmQgcmV0dXJuIGEgcmVzb2x2ZWQgcHJvbWlzZSB3aXRoIHRoZSBjYWNoZWQgaXRlbS5cblx0XHRcdC8vIE5vdGUgdGhhdCBxdWVyaWVzIGFyZSBub3QgY2FjaGVkLlxuXHRcdFx0aWYgIChjYWNoZSkge1xuXHRcdFx0XHRjb25zdCBpdGVtID0gdGhpcy5jYWNoZS5nZXQoa2V5KTtcblx0XHRcdFx0aWYgKGl0ZW0pIHtcblx0XHRcdFx0XHRyZXR1cm4gcHJvbWlzZS5yZXNvbHZlKGl0ZW0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIHdlIGFscmVhZHkgYXNrZWQgZm9yIHRoZSByZXNvdXJjZSxcblx0XHRcdC8vIHJldHVybiB0aGUgZXhpdGluZyBwZW5kaW5nIHJlcXVlc3QgcHJvbWlzZS5cblx0XHRcdGlmICh0aGlzLnBlbmRpbmdHRVRSZXF1ZXN0cy5oYXModXJpKSkge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5wZW5kaW5nR0VUUmVxdWVzdHMuZ2V0KHVyaSk7XG5cdFx0XHR9XG5cblx0XHRcdGxldCByZXF1ZXN0ID0gZmV0Y2goKS50aGVuKFxuXHRcdFx0XHQoZGF0YSkgPT4ge1xuXHRcdFx0XHRcdC8vIFJlbW92ZSBwZW5kaW5nIHJlcXVlc3Rcblx0XHRcdFx0XHR0aGlzLnBlbmRpbmdHRVRSZXF1ZXN0cy5kZWxldGUodXJpKTtcblx0XHRcdFx0XHRyZXR1cm4gZGF0YTtcblx0XHRcdFx0fSxcblx0XHRcdFx0KGVycm9yKSA9PiB7XG5cdFx0XHRcdFx0Ly8gSWYgcmVxdWVzdCBmYWlscyxcblx0XHRcdFx0XHQvLyBtYWtlIHN1cmUgdG8gcmVtb3ZlIHRoZSBwZW5kaW5nIHJlcXVlc3Qgc28gZnVydGhlciByZXF1ZXN0cyBjYW4gYmUgbWFkZS5cblx0XHRcdFx0XHQvLyBSZXR1cm4gaXMgbmVjZXNzYXJ5LlxuXHRcdFx0XHRcdHRoaXMucGVuZGluZ0dFVFJlcXVlc3RzLmRlbGV0ZSh1cmkpO1xuXHRcdFx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yXG5cdFx0XHRcdFx0XHQ/IGVycm9yLm1lc3NhZ2Vcblx0XHRcdFx0XHRcdDogdHlwZW9mIGVycm9yID09PSAnc3RyaW5nJ1xuXHRcdFx0XHRcdFx0XHQ/IGVycm9yXG5cdFx0XHRcdFx0XHRcdDogYEFuIGVycm9yIG9jY3VycmVkIHdoaWxlIFBvdGlvbiB0cmllZCB0byByZXRyaWV2ZSByZXNvdXJjZSBmcm9tICcke3VyaX0nLmA7XG5cdFx0XHRcdFx0cmV0dXJuIHByb21pc2UucmVqZWN0KFxuXHRcdFx0XHRcdFx0bmV3IEVycm9yKG1lc3NhZ2UpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0KTtcblxuXHRcdFx0dGhpcy5wZW5kaW5nR0VUUmVxdWVzdHMuc2V0KHVyaSwgcmVxdWVzdCk7XG5cblx0XHRcdHJldHVybiByZXF1ZXN0O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gZmV0Y2goKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmVnaXN0ZXIgYSByZXNvdXJjZS5cblx0ICogQHBhcmFtIHtTdHJpbmd9IHVyaSAtIFBhdGggb24gd2hpY2ggdGhlIHJlc291cmNlIGlzIHJlZ2lzdGVyZWQuXG5cdCAqIEBwYXJhbSB7SXRlbX0gcmVzb3VyY2Vcblx0ICogQHBhcmFtIHtJdGVtT3B0aW9uc30gb3B0aW9ucyAtIFNldCB0aGUgcHJvcGVydHkgb3B0aW9ucyBmb3IgYW55IGluc3RhbmNlIG9mIHRoZSByZXNvdXJjZSAoc2V0dGluZyBhIHByb3BlcnR5IHRvIHJlYWRvbmx5IGZvciBpbnN0YW5jZSkuXG5cdCAqL1xuXHRyZWdpc3Rlcih1cmk6IHN0cmluZywgcmVzb3VyY2U6IGFueSwgb3B0aW9ucz86IEl0ZW1PcHRpb25zKTogSXRlbSB7XG5cdFx0ZGVjb3JhdGVDdG9yV2l0aFBvdGlvbkluc3RhbmNlKHJlc291cmNlLCB0aGlzKTtcblx0XHRkZWNvcmF0ZUN0b3JXaXRoUG90aW9uVVJJKHJlc291cmNlLCB1cmkpO1xuXG5cdFx0aWYgKG9wdGlvbnMgJiYgQXJyYXkuaXNBcnJheShvcHRpb25zLnJlYWRvbmx5KSkge1xuXHRcdFx0b3B0aW9ucy5yZWFkb25seS5mb3JFYWNoKChwcm9wZXJ0eSkgPT4gcmVhZG9ubHkocmVzb3VyY2UsIHByb3BlcnR5KSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5yZXNvdXJjZXNbdXJpXSA9IHJlc291cmNlO1xuXHRcdHJlc291cmNlLnN0b3JlID0gbmV3IFN0b3JlKHJlc291cmNlKTtcblxuXHRcdHJldHVybiByZXNvdXJjZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlciBhIHJlc291cmNlLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gdXJpIC0gUGF0aCBvbiB3aGljaCB0aGUgcmVzb3VyY2UgaXMgcmVnaXN0ZXJlZC5cblx0ICogQHBhcmFtIHtJdGVtT3B0aW9uc30gb3B0aW9ucyAtIFNldCB0aGUgcHJvcGVydHkgb3B0aW9ucyBmb3IgYW55IGluc3RhbmNlIG9mIHRoZSByZXNvdXJjZSAoc2V0dGluZyBhIHByb3BlcnR5IHRvIHJlYWRvbmx5IGZvciBpbnN0YW5jZSkuXG5cdCAqXG5cdCAqIEBleGFtcGxlXG5cdCAqIEBwb3Rpb24ucmVnaXN0ZXJBcygnL3VzZXInKVxuXHQgKiBjbGFzcyBVc2VyIGV4dGVuZHMgSXRlbSB7fVxuXHQgKi9cblx0cmVnaXN0ZXJBcyh1cmk6IHN0cmluZywgb3B0aW9ucz86IEl0ZW1PcHRpb25zKTogQ2xhc3NEZWNvcmF0b3Ige1xuXHRcdHJldHVybiAodGFyZ2V0OiBhbnkpID0+IHtcblx0XHRcdHRoaXMucmVnaXN0ZXIodXJpLCB0YXJnZXQsIG9wdGlvbnMpO1xuXHRcdFx0cmV0dXJuIHRhcmdldDtcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIE1ha2UgYSBIVFRQIHJlcXVlc3QuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB1cmlcblx0ICogQHBhcmFtIHtSZXF1ZXN0T3B0aW9uc30gb3B0aW9uc1xuXHQgKiBAcmV0dXJucyB7T2JqZWN0fSBBbiBvYmplY3Qgd2l0aCB7ZGF0YSwgaGVhZGVyc30gd2hlcmUge2RhdGF9IGNhbiBiZSBhbnl0aGluZyBhbmQge2hlYWRlcnN9IGlzIGFuIG9iamVjdCB3aXRoIHRoZSByZXNwb25zZSBoZWFkZXJzIGZyb20gdGhlIEhUVFAgcmVxdWVzdC5cblx0ICovXG5cdHByb3RlY3RlZCBhYnN0cmFjdCByZXF1ZXN0KHVyaTogc3RyaW5nLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT47XG5cblx0cHJpdmF0ZSBwYXJzZVVSSSh1cmk6IHN0cmluZyk6IFBhcnNlZFVSSSB7XG5cdFx0dXJpID0gZGVjb2RlVVJJQ29tcG9uZW50KHVyaSk7XG5cblx0XHRpZiAodXJpLmluZGV4T2YodGhpcy5wcmVmaXgpID09PSAwKSB7XG5cdFx0XHR1cmkgPSB1cmkuc3Vic3RyaW5nKHRoaXMucHJlZml4Lmxlbmd0aCk7XG5cdFx0fVxuXG5cdFx0Zm9yIChsZXQgW3Jlc291cmNlVVJJLCByZXNvdXJjZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5yZXNvdXJjZXMpKSB7XG5cdFx0XHRpZiAodXJpLmluZGV4T2YoYCR7cmVzb3VyY2VVUkl9L2ApID09PSAwKSB7XG5cdFx0XHRcdHJldHVybiB7dXJpLCByZXNvdXJjZSwgcGFyYW1zOiB1cmkuc3Vic3RyaW5nKHJlc291cmNlVVJJLmxlbmd0aCArIDEpLnNwbGl0KCcvJyl9O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHRocm93IG5ldyBFcnJvcihgVVJJICcke3VyaX0nIGlzIGFuIHVuaW50ZXJwcmV0YWJsZSBvciB1bmtub3duIHBvdGlvbiByZXNvdXJjZS5gKTtcblx0fVxuXG5cdHByaXZhdGUgdG9Qb3Rpb25KU09OKGpzb246IGFueSk6IGFueSB7XG5cdFx0aWYgKHR5cGVvZiBqc29uID09PSAnb2JqZWN0JyAmJiBqc29uICE9PSBudWxsKSB7XG5cdFx0XHRpZiAoanNvbiBpbnN0YW5jZW9mIChJdGVtIGFzIGFueSkgJiYgdHlwZW9mIGpzb24udXJpID09PSAnc3RyaW5nJykge1xuXHRcdFx0XHRyZXR1cm4geyRyZWY6IGAke3RoaXMucHJlZml4fSR7anNvbi51cml9YH07XG5cdFx0XHR9IGVsc2UgaWYgKGpzb24gaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0XHRcdHJldHVybiB7JGRhdGU6IGpzb24uZ2V0VGltZSgpfTtcblx0XHRcdH0gZWxzZSBpZiAoanNvbiBpbnN0YW5jZW9mIEFycmF5KSB7XG5cdFx0XHRcdHJldHVybiBqc29uLm1hcCgoaXRlbSkgPT4gdGhpcy50b1BvdGlvbkpTT04oaXRlbSkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIG9tYXAoanNvbiwgKGtleSwgdmFsdWUpID0+IFt0b1NuYWtlQ2FzZShrZXkpLCB0aGlzLnRvUG90aW9uSlNPTih2YWx1ZSldKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGpzb247XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBmcm9tUG90aW9uSlNPTihqc29uOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuXHRcdGNvbnN0IHtwcm9taXNlfSA9ICh0aGlzLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBQb3Rpb25CYXNlKTtcblx0XHRpZiAodHlwZW9mIGpzb24gPT09ICdvYmplY3QnICYmIGpzb24gIT09IG51bGwpIHtcblx0XHRcdGlmIChqc29uIGluc3RhbmNlb2YgQXJyYXkpIHtcblx0XHRcdFx0cmV0dXJuIHByb21pc2UuYWxsKGpzb24ubWFwKChpdGVtKSA9PiB0aGlzLmZyb21Qb3Rpb25KU09OKGl0ZW0pKSk7XG5cdFx0XHRcdC8vIFRPRE86IHRoZSBqc29uIG1heSBhbHNvIGhhdmUgeyR0eXBlLCAkaWR9IHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVjb2duaXplIGEgcmVzb3VyY2Vcblx0XHRcdFx0Ly8gSWYgbmVpdGhlciBjb21iaW5hdGlvbiBpcyBwcm92aWRlZCwgaXQgc2hvdWxkIHRocm93IGFuZCBsZXQgdGhlIHVzZXIgbm93IEZsYXNrIFBvdGlvbiBuZWVkcyB0byBiZSBjb25maWd1cmVkIHdpdGggb25lIG9mIHRoZXNlIHR3byBzdHJhdGVnaWVzLlxuXHRcdFx0fSBlbHNlIGlmICh0eXBlb2YganNvbi4kdXJpID09PSAnc3RyaW5nJykge1xuXHRcdFx0XHQvLyBUcnkgdG8gcGFyc2UgdGhlIFVSSSxcblx0XHRcdFx0Ly8gb3RoZXJ3aXNlIHJlamVjdCB3aXRoIHRoZSBleGNlcHRpb24gdGhyb3duIGZyb20gcGFyc2VVUkkuXG5cdFx0XHRcdGxldCByZXNvdXJjZTtcblx0XHRcdFx0bGV0IHVyaTtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRjb25zdCBwYXJzZWRVUkkgPSB0aGlzLnBhcnNlVVJJKGpzb24uJHVyaSk7XG5cdFx0XHRcdFx0cmVzb3VyY2UgPSBwYXJzZWRVUkkucmVzb3VyY2U7XG5cdFx0XHRcdFx0dXJpID0gcGFyc2VkVVJJLnVyaTtcblx0XHRcdFx0fSBjYXRjaCAocGFyc2VVUklFcnJvcikge1xuXHRcdFx0XHRcdHJldHVybiBwcm9taXNlLnJlamVjdChwYXJzZVVSSUVycm9yKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IHByb21pc2VzOiBQcm9taXNlPGFueT5bXSA9IFtdO1xuXG5cdFx0XHRcdC8vIENhY2hlIHRoZSByZXNvdXJjZSBpZiBpdCBkb2VzIG5vdCBleGlzdCxcblx0XHRcdFx0Ly8gYnV0IGRvIGl0IGJlZm9yZSByZXNvbHZpbmcgYW55IHBvc3NpYmxlIHJlZmVyZW5jZXMgKHRvIG90aGVyIHJlc291cmNlcykgb24gaXQuXG5cdFx0XHRcdGlmICghdGhpcy5jYWNoZS5nZXQodXJpKSkge1xuXHRcdFx0XHRcdHRoaXMuY2FjaGUucHV0KFxuXHRcdFx0XHRcdFx0dXJpLFxuXHRcdFx0XHRcdFx0Ly8gQ3JlYXRlIGFuIGVtcHR5IGluc3RhbmNlXG5cdFx0XHRcdFx0XHRSZWZsZWN0LmNvbnN0cnVjdChyZXNvdXJjZSBhcyBhbnksIFtdKSBhcyBhbnlcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblxuXHRcdFx0XHQvLyBSZXNvbHZlIHBvc3NpYmxlIHJlZmVyZW5jZXNcblx0XHRcdFx0Zm9yIChsZXQga2V5IG9mIE9iamVjdC5rZXlzKGpzb24pKSB7XG5cdFx0XHRcdFx0aWYgKGtleSA9PT0gJyR1cmknKSB7XG5cdFx0XHRcdFx0XHRwcm9taXNlcy5wdXNoKHByb21pc2UucmVzb2x2ZShba2V5LCB1cmldKSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHByb21pc2VzLnB1c2goXG5cdFx0XHRcdFx0XHRcdHRoaXMuZnJvbVBvdGlvbkpTT04oanNvbltrZXldKVxuXHRcdFx0XHRcdFx0XHRcdC50aGVuKCh2YWx1ZSkgPT4gW3RvQ2FtZWxDYXNlKGtleSksIHZhbHVlXSlcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblxuXHRcdFx0XHRyZXR1cm4gcHJvbWlzZS5hbGwocHJvbWlzZXMpXG5cdFx0XHRcdFx0LnRoZW4oKHByb3BlcnR5VmFsdWVQYWlycykgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3QgcHJvcGVydGllczogYW55ID0gcGFpcnNUb09iamVjdChwcm9wZXJ0eVZhbHVlUGFpcnMpO1xuXHRcdFx0XHRcdFx0Y29uc3Qgb2JqID0ge307XG5cblx0XHRcdFx0XHRcdE9iamVjdC5rZXlzKHByb3BlcnRpZXMpXG5cdFx0XHRcdFx0XHRcdC5maWx0ZXIoKGtleSkgPT4ga2V5ICE9PSAnJHVyaScpXG5cdFx0XHRcdFx0XHRcdC5mb3JFYWNoKChrZXkpID0+IG9ialtrZXldID0gcHJvcGVydGllc1trZXldKTtcblxuXHRcdFx0XHRcdFx0Ly8gVHJ5IHRvIHBhcnNlIHRoZSBVUkksXG5cdFx0XHRcdFx0XHQvLyBvdGhlcndpc2UgcmVqZWN0IHdpdGggdGhlIGV4Y2VwdGlvbiB0aHJvd24gZnJvbSBwYXJzZVVSSS5cblx0XHRcdFx0XHRcdGxldCBwYXJhbXM7XG5cdFx0XHRcdFx0XHRsZXQgdXJpO1xuXHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgcGFyc2VkVVJJID0gdGhpcy5wYXJzZVVSSShwcm9wZXJ0aWVzLiR1cmkpO1xuXHRcdFx0XHRcdFx0XHRwYXJhbXMgPSBwYXJzZWRVUkkucGFyYW1zO1xuXHRcdFx0XHRcdFx0XHR1cmkgPSBwYXJzZWRVUkkudXJpO1xuXHRcdFx0XHRcdFx0fSBjYXRjaCAocGFyc2VVUklFcnJvcikge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gcHJvbWlzZS5yZWplY3QocGFyc2VVUklFcnJvcik7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdE9iamVjdC5hc3NpZ24ob2JqLCB7XG5cdFx0XHRcdFx0XHRcdCRpZDogcGFyc2VJbnQocGFyYW1zWzBdLCAxMCksXG5cdFx0XHRcdFx0XHRcdCR1cmk6IHVyaVxuXHRcdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRcdC8vIFRyeSB0byBnZXQgZXhpc3RpbmcgZW50cnkgZnJvbSBjYWNoZVxuXHRcdFx0XHRcdFx0bGV0IGl0ZW0gPSB0aGlzLmNhY2hlLmdldCh1cmkpO1xuXG5cdFx0XHRcdFx0XHRpZiAoaXRlbSkge1xuXHRcdFx0XHRcdFx0XHRPYmplY3QuYXNzaWduKGl0ZW0sIG9iaik7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRpdGVtID0gUmVmbGVjdC5jb25zdHJ1Y3QocmVzb3VyY2UgYXMgYW55LCBbb2JqXSk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHRoaXMuY2FjaGUucHV0KHVyaSwgaXRlbSBhcyBhbnkpO1xuXG5cdFx0XHRcdFx0XHRyZXR1cm4gaXRlbTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGpzb24uJHNjaGVtYSA9PT0gJ3N0cmluZycpIHtcblx0XHRcdFx0Ly8gSWYgd2UgaGF2ZSBhIHNjaGVtYSBvYmplY3QsXG5cdFx0XHRcdC8vIHdlIHdhbnQgdG8gcmVzb2x2ZSBpdCBhcyBpdCBpcyBhbmQgbm90IHRyeSB0byByZXNvbHZlIHJlZmVyZW5jZXMgb3IgZG8gYW55IGNvbnZlcnNpb25zLlxuXHRcdFx0XHQvLyBUaG91Z2gsIHdlIHdhbnQgdG8gY29udmVydCBzbmFrZSBjYXNlIHRvIGNhbWVsIGNhc2UuXG5cdFx0XHRcdHJldHVybiBwcm9taXNlLnJlc29sdmUoZGVlcE9tYXAoanNvbiwgbnVsbCwgKGtleSkgPT4gdG9DYW1lbENhc2Uoa2V5KSkpO1xuXHRcdFx0fSBlbHNlIGlmIChPYmplY3Qua2V5cyhqc29uKS5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0aWYgKHR5cGVvZiBqc29uLiRyZWYgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdFx0Ly8gSGFjayB0byBub3QgdHJ5IHRvIHJlc29sdmUgc2VsZiByZWZlcmVuY2VzLlxuXHRcdFx0XHRcdC8vIFRPRE86IHdlIG5lZWQgdG8gZml4IHRoaXMgaW4gc29tZSB3YXlcblx0XHRcdFx0XHRpZiAoanNvbi4kcmVmID09PSAnIycpIHtcblx0XHRcdFx0XHRcdHJldHVybiBwcm9taXNlLnJlc29sdmUoanNvbi4kcmVmKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBUcnkgdG8gcGFyc2UgdGhlIFVSSSxcblx0XHRcdFx0XHQvLyBvdGhlcndpc2UgcmVqZWN0IHdpdGggdGhlIGV4Y2VwdGlvbiB0aHJvd24gZnJvbSBwYXJzZVVSSS5cblx0XHRcdFx0XHRsZXQgdXJpO1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRjb25zdCBwYXJzZWRVUkkgPSB0aGlzLnBhcnNlVVJJKGpzb24uJHJlZik7XG5cdFx0XHRcdFx0XHR1cmkgPSBwYXJzZWRVUkkudXJpO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKHBhcnNlVVJJRXJyb3IpIHtcblx0XHRcdFx0XHRcdHJldHVybiBwcm9taXNlLnJlamVjdChwYXJzZVVSSUVycm9yKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5mZXRjaCh1cmksIHtcblx0XHRcdFx0XHRcdGNhY2hlOiB0cnVlLFxuXHRcdFx0XHRcdFx0bWV0aG9kOiAnR0VUJ1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBqc29uLiRkYXRlICE9PSAndW5kZWZpbmVkJykge1xuXHRcdFx0XHRcdHJldHVybiBwcm9taXNlLnJlc29sdmUobmV3IERhdGUoanNvbi4kZGF0ZSkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHByb21pc2VzOiBQcm9taXNlPGFueT5bXSA9IFtdO1xuXG5cdFx0XHRmb3IgKGxldCBrZXkgb2YgT2JqZWN0LmtleXMoanNvbikpIHtcblx0XHRcdFx0cHJvbWlzZXMucHVzaCh0aGlzLmZyb21Qb3Rpb25KU09OKGpzb25ba2V5XSlcblx0XHRcdFx0XHQudGhlbigodmFsdWUpID0+IFt0b0NhbWVsQ2FzZShrZXkpLCB2YWx1ZV0pKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHByb21pc2UuYWxsKHByb21pc2VzKVxuXHRcdFx0XHQudGhlbigocHJvcGVydHlWYWx1ZVBhaXJzKSA9PiBwYWlyc1RvT2JqZWN0KHByb3BlcnR5VmFsdWVQYWlycykpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gcHJvbWlzZS5yZXNvbHZlKGpzb24pO1xuXHRcdH1cblx0fVxufVxuIl19

2

package.json
{
"name": "potion-client",
"version": "0.20.18",
"version": "0.20.19",
"description": "A ES6 client for APIs written in Flask-Potion",

@@ -5,0 +5,0 @@ "keywords": [

@@ -17,4 +17,10 @@ import { ItemCache } from './core';

*/
export declare function omap(object: Object, callback: (key: string, value: any) => any, context?: any): any;
export declare function omap(object: Object, callback: (key: string, value: any) => [string, any], context?: any): any;
/**
* Deep Object.map()
*/
export declare type KeyMapper = (key: string) => string;
export declare type ValueMapper = (value: any) => any;
export declare function deepOmap(obj: Object, valueMapper: ValueMapper | null, keyMapper: KeyMapper | null, context?: any): any;
/**
* Merge array of objects into one object.

@@ -21,0 +27,0 @@ */

@@ -43,2 +43,26 @@ "use strict";

exports.omap = omap;
function deepOmap(obj, valueMapper, keyMapper, context) {
if (Array.isArray(obj)) {
return obj.map(function (value) { return typeof value === 'object'
? deepOmap(value, valueMapper, keyMapper, context)
: value; });
}
else if (typeof obj === 'object') {
var result = {};
for (var _i = 0, _a = Object.entries(obj); _i < _a.length; _i++) {
var _b = _a[_i], key = _b[0], value = _b[1];
key = typeof keyMapper === 'function'
? keyMapper.call(context, key)
: key;
result[key] = typeof value === 'object' || Array.isArray(value)
? deepOmap(value, valueMapper, keyMapper, context)
: typeof valueMapper === 'function'
? valueMapper.call(context, value)
: value;
}
return result;
}
return obj;
}
exports.deepOmap = deepOmap;
/**

@@ -83,2 +107,2 @@ * Merge array of objects into one object.

exports.MemCache = MemCache;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUdBOztHQUVHO0FBQ0gscUJBQTRCLEdBQVcsRUFBRSxTQUF1QjtJQUF2Qix5QkFBdUIsR0FBdkIsZUFBdUI7SUFDL0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsVUFBQyxDQUFDLEVBQUUsRUFBRSxJQUFLLE9BQUEsTUFBRyxTQUFTLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFFLEVBQWpDLENBQWlDLENBQUM7U0FDakYsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNyQixDQUFDO0FBSGUsbUJBQVcsY0FHMUIsQ0FBQTtBQUdEOztHQUVHO0FBQ0gscUJBQTRCLEdBQVc7SUFDdEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLFVBQUMsQ0FBQyxJQUFLLE9BQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFsQixDQUFrQixDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUZlLG1CQUFXLGNBRTFCLENBQUE7QUFHRDs7R0FFRztBQUNILHVCQUE4QixLQUFZO0lBQ3pDLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNiLEdBQUcsQ0FBQyxDQUFxQixVQUFLLEVBQUwsZUFBSyxFQUFMLG1CQUFLLEVBQUwsSUFBSyxDQUFDO1FBQTFCLG9CQUFnQixFQUFYLFdBQUcsRUFBRSxhQUFLO1FBQ25CLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7S0FDakI7SUFDRCxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQ1osQ0FBQztBQU5lLHFCQUFhLGdCQU01QixDQUFBO0FBR0Q7O0dBRUc7QUFDSCxjQUFxQixNQUFjLEVBQUUsUUFBMEMsRUFBRSxPQUFhO0lBQzdGLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNiLEdBQUcsQ0FBQyxDQUFxQixVQUErQixFQUEvQixLQUFDLE1BQWMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQS9CLGNBQStCLEVBQS9CLElBQStCLENBQUM7UUFBcEQsZUFBZ0IsRUFBWCxXQUFHLEVBQUUsYUFBSztRQUNuQixJQUFBLHVDQUErQyxFQUExQyxTQUFDLEVBQUUsU0FBQyxDQUF1QztRQUNoRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ1g7SUFDRCxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQ1osQ0FBQztBQVBlLFlBQUksT0FPbkIsQ0FBQTtBQUdEOztHQUVHO0FBQ0gsZUFBc0IsT0FBYztJQUNuQyxJQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFDbEIsR0FBRyxDQUFDLENBQVksVUFBTyxFQUFQLG1CQUFPLEVBQVAscUJBQU8sRUFBUCxJQUFPLENBQUM7UUFBbkIsSUFBSSxHQUFHLGdCQUFBO1FBQ1gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDM0I7SUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ2YsQ0FBQztBQU5lLGFBQUssUUFNcEIsQ0FBQTtBQUdEOztHQUVHO0FBQ0gsaUJBQXdCLEdBQVc7SUFDbEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRmUsZUFBTyxVQUV0QixDQUFBO0FBSUQ7OztHQUdHO0FBQ0g7SUFHQztRQUNDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQWUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsc0JBQUcsR0FBSCxVQUFJLEdBQVc7UUFDZCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELHNCQUFHLEdBQUgsVUFBSSxHQUFXLEVBQUUsSUFBUztRQUN6QixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQseUJBQU0sR0FBTixVQUFPLEdBQVc7UUFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUNGLGVBQUM7QUFBRCxDQUFDLEFBbEJELElBa0JDO0FBbEJZLGdCQUFRLFdBa0JwQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJdGVtQ2FjaGV9IGZyb20gJy4vY29yZSc7XG5cblxuLyoqXG4gKiBDYW1lbCBjYXNlIHRvIHNuYWtlIGNhc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvU25ha2VDYXNlKHN0cjogc3RyaW5nLCBzZXBhcmF0b3I6IHN0cmluZyA9ICdfJyk6IHN0cmluZyB7XG5cdHJldHVybiBzdHIucmVwbGFjZSgvXFwuPyhbQS1aMC05XSspL2csIChfLCAkMikgPT4gYCR7c2VwYXJhdG9yfSR7JDIudG9Mb3dlckNhc2UoKX1gKVxuXHRcdC5yZXBsYWNlKC9eXy8sICcnKTtcbn1cblxuXG4vKipcbiAqIFNuYWtlIGNhc2UgdG8gY2FtZWwgY2FzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9DYW1lbENhc2Uoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRyZXR1cm4gc3RyLnJlcGxhY2UoL18oW2EtejAtOV0pL2csIChnKSA9PiBnWzFdLnRvVXBwZXJDYXNlKCkpO1xufVxuXG5cbi8qKlxuICogVHJhbnNmb3JtIHBhaXJzIG9mIFtba2V5LCB2YWx1ZV1dIHRvIHtba2V5XTogdmFsdWV9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYWlyc1RvT2JqZWN0KHBhaXJzOiBhbnlbXSk6IGFueSB7XG5cdGxldCBvYmogPSB7fTtcblx0Zm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIHBhaXJzKSB7XG5cdFx0b2JqW2tleV0gPSB2YWx1ZTtcblx0fVxuXHRyZXR1cm4gb2JqO1xufVxuXG5cbi8qKlxuICogT2JqZWN0Lm1hcCgpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbWFwKG9iamVjdDogT2JqZWN0LCBjYWxsYmFjazogKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiBhbnksIGNvbnRleHQ/OiBhbnkpOiBhbnkge1xuXHRsZXQgbWFwID0ge307XG5cdGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiAoT2JqZWN0IGFzIGFueSkuZW50cmllcyhvYmplY3QpKSB7XG5cdFx0bGV0IFtrLCB2XSA9IGNhbGxiYWNrLmNhbGwoY29udGV4dCwga2V5LCB2YWx1ZSk7XG5cdFx0bWFwW2tdID0gdjtcblx0fVxuXHRyZXR1cm4gbWFwO1xufVxuXG5cbi8qKlxuICogTWVyZ2UgYXJyYXkgb2Ygb2JqZWN0cyBpbnRvIG9uZSBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZShvYmplY3RzOiBhbnlbXSk6IGFueSB7XG5cdGNvbnN0IHJlc3VsdCA9IHt9O1xuXHRmb3IgKGxldCBvYmogb2Ygb2JqZWN0cykge1xuXHRcdE9iamVjdC5hc3NpZ24ocmVzdWx0LCBvYmopO1xuXHR9XG5cdHJldHVybiByZXN1bHQ7XG59XG5cblxuLyoqXG4gKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgZW1wdHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHkob2JqOiBPYmplY3QpOiBib29sZWFuIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID09PSAwO1xufVxuXG5cblxuLyoqXG4gKiBJbi1NZW1vcnkgY2FjaGVcbiAqIFdpbGwgYmUgdXNlZCBieSBkZWZhdWx0IGJ5IFBvdGlvbiBmb3IgY2FjaGluZyByZXNvdXJjZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBNZW1DYWNoZSBpbXBsZW1lbnRzIEl0ZW1DYWNoZTxhbnk+IHtcblx0cHJvdGVjdGVkIGl0ZW1zOiBNYXA8c3RyaW5nLCBhbnk+O1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuaXRlbXMgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuXHR9XG5cblx0Z2V0KGtleTogc3RyaW5nKTogYW55IHtcblx0XHRyZXR1cm4gdGhpcy5pdGVtcy5nZXQoa2V5KTtcblx0fVxuXG5cdHB1dChrZXk6IHN0cmluZywgaXRlbTogYW55KTogYW55IHtcblx0XHRyZXR1cm4gdGhpcy5pdGVtcy5zZXQoa2V5LCBpdGVtKS5nZXQoa2V5KTtcblx0fVxuXG5cdHJlbW92ZShrZXk6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMuaXRlbXMuZGVsZXRlKGtleSk7XG5cdH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUdBOztHQUVHO0FBQ0gscUJBQTRCLEdBQVcsRUFBRSxTQUF1QjtJQUF2Qix5QkFBdUIsR0FBdkIsZUFBdUI7SUFDL0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsVUFBQyxDQUFDLEVBQUUsRUFBRSxJQUFLLE9BQUEsTUFBRyxTQUFTLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFFLEVBQWpDLENBQWlDLENBQUM7U0FDakYsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNyQixDQUFDO0FBSGUsbUJBQVcsY0FHMUIsQ0FBQTtBQUdEOztHQUVHO0FBQ0gscUJBQTRCLEdBQVc7SUFDdEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLFVBQUMsQ0FBQyxJQUFLLE9BQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFsQixDQUFrQixDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUZlLG1CQUFXLGNBRTFCLENBQUE7QUFHRDs7R0FFRztBQUNILHVCQUE4QixLQUFZO0lBQ3pDLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNiLEdBQUcsQ0FBQyxDQUFxQixVQUFLLEVBQUwsZUFBSyxFQUFMLG1CQUFLLEVBQUwsSUFBSyxDQUFDO1FBQTFCLG9CQUFnQixFQUFYLFdBQUcsRUFBRSxhQUFLO1FBQ25CLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7S0FDakI7SUFDRCxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQ1osQ0FBQztBQU5lLHFCQUFhLGdCQU01QixDQUFBO0FBR0Q7O0dBRUc7QUFDSCxjQUFxQixNQUFjLEVBQUUsUUFBb0QsRUFBRSxPQUFhO0lBQ3ZHLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNiLEdBQUcsQ0FBQyxDQUFxQixVQUErQixFQUEvQixLQUFDLE1BQWMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQS9CLGNBQStCLEVBQS9CLElBQStCLENBQUM7UUFBcEQsZUFBZ0IsRUFBWCxXQUFHLEVBQUUsYUFBSztRQUNuQixJQUFBLHVDQUErQyxFQUExQyxTQUFDLEVBQUUsU0FBQyxDQUF1QztRQUNoRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ1g7SUFDRCxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQ1osQ0FBQztBQVBlLFlBQUksT0FPbkIsQ0FBQTtBQVNELGtCQUF5QixHQUFXLEVBQUUsV0FBK0IsRUFBRSxTQUEyQixFQUFFLE9BQWE7SUFDaEgsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEIsTUFBTSxDQUFFLEdBQWEsQ0FBQyxHQUFHLENBQ3hCLFVBQUMsS0FBSyxJQUFLLE9BQUEsT0FBTyxLQUFLLEtBQUssUUFBUTtjQUNqQyxRQUFRLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDO2NBQ2hELEtBQUssRUFGRyxDQUVILENBQ1IsQ0FBQztJQUNILENBQUM7SUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNwQyxJQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFFbEIsR0FBRyxDQUFDLENBQXFCLFVBQW1CLEVBQW5CLEtBQUEsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBbkIsY0FBbUIsRUFBbkIsSUFBbUIsQ0FBQztZQUF4QyxlQUFnQixFQUFYLFdBQUcsRUFBRSxhQUFLO1lBQ25CLEdBQUcsR0FBRyxPQUFPLFNBQVMsS0FBSyxVQUFVO2tCQUNsQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUM7a0JBQzVCLEdBQUcsQ0FBQztZQUNQLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7a0JBQzVELFFBQVEsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUM7a0JBQ2hELE9BQU8sV0FBVyxLQUFLLFVBQVU7c0JBQ2hDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQztzQkFDaEMsS0FBSyxDQUFDO1NBQ1Y7UUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDWixDQUFDO0FBekJlLGdCQUFRLFdBeUJ2QixDQUFBO0FBR0Q7O0dBRUc7QUFDSCxlQUFzQixPQUFjO0lBQ25DLElBQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNsQixHQUFHLENBQUMsQ0FBWSxVQUFPLEVBQVAsbUJBQU8sRUFBUCxxQkFBTyxFQUFQLElBQU8sQ0FBQztRQUFuQixJQUFJLEdBQUcsZ0JBQUE7UUFDWCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztLQUMzQjtJQUNELE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDZixDQUFDO0FBTmUsYUFBSyxRQU1wQixDQUFBO0FBR0Q7O0dBRUc7QUFDSCxpQkFBd0IsR0FBVztJQUNsQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFGZSxlQUFPLFVBRXRCLENBQUE7QUFJRDs7O0dBR0c7QUFDSDtJQUdDO1FBQ0MsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBZSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxzQkFBRyxHQUFILFVBQUksR0FBVztRQUNkLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsc0JBQUcsR0FBSCxVQUFJLEdBQVcsRUFBRSxJQUFTO1FBQ3pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCx5QkFBTSxHQUFOLFVBQU8sR0FBVztRQUNqQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBQ0YsZUFBQztBQUFELENBQUMsQUFsQkQsSUFrQkM7QUFsQlksZ0JBQVEsV0FrQnBCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0l0ZW1DYWNoZX0gZnJvbSAnLi9jb3JlJztcblxuXG4vKipcbiAqIENhbWVsIGNhc2UgdG8gc25ha2UgY2FzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9TbmFrZUNhc2Uoc3RyOiBzdHJpbmcsIHNlcGFyYXRvcjogc3RyaW5nID0gJ18nKTogc3RyaW5nIHtcblx0cmV0dXJuIHN0ci5yZXBsYWNlKC9cXC4/KFtBLVowLTldKykvZywgKF8sICQyKSA9PiBgJHtzZXBhcmF0b3J9JHskMi50b0xvd2VyQ2FzZSgpfWApXG5cdFx0LnJlcGxhY2UoL15fLywgJycpO1xufVxuXG5cbi8qKlxuICogU25ha2UgY2FzZSB0byBjYW1lbCBjYXNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0NhbWVsQ2FzZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiBzdHIucmVwbGFjZSgvXyhbYS16MC05XSkvZywgKGcpID0+IGdbMV0udG9VcHBlckNhc2UoKSk7XG59XG5cblxuLyoqXG4gKiBUcmFuc2Zvcm0gcGFpcnMgb2YgW1trZXksIHZhbHVlXV0gdG8ge1trZXldOiB2YWx1ZX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhaXJzVG9PYmplY3QocGFpcnM6IGFueVtdKTogYW55IHtcblx0bGV0IG9iaiA9IHt9O1xuXHRmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgcGFpcnMpIHtcblx0XHRvYmpba2V5XSA9IHZhbHVlO1xuXHR9XG5cdHJldHVybiBvYmo7XG59XG5cblxuLyoqXG4gKiBPYmplY3QubWFwKClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9tYXAob2JqZWN0OiBPYmplY3QsIGNhbGxiYWNrOiAoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IFtzdHJpbmcsIGFueV0sIGNvbnRleHQ/OiBhbnkpOiBhbnkge1xuXHRsZXQgbWFwID0ge307XG5cdGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiAoT2JqZWN0IGFzIGFueSkuZW50cmllcyhvYmplY3QpKSB7XG5cdFx0bGV0IFtrLCB2XSA9IGNhbGxiYWNrLmNhbGwoY29udGV4dCwga2V5LCB2YWx1ZSk7XG5cdFx0bWFwW2tdID0gdjtcblx0fVxuXHRyZXR1cm4gbWFwO1xufVxuXG5cbi8qKlxuICogRGVlcCBPYmplY3QubWFwKClcbiAqL1xuZXhwb3J0IHR5cGUgS2V5TWFwcGVyID0gKGtleTogc3RyaW5nKSA9PiBzdHJpbmc7XG5leHBvcnQgdHlwZSBWYWx1ZU1hcHBlciA9ICh2YWx1ZTogYW55KSA9PiBhbnk7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWVwT21hcChvYmo6IE9iamVjdCwgdmFsdWVNYXBwZXI6IFZhbHVlTWFwcGVyIHwgbnVsbCwga2V5TWFwcGVyOiBLZXlNYXBwZXIgfCBudWxsLCBjb250ZXh0PzogYW55KTogYW55IHtcblx0aWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuXHRcdHJldHVybiAob2JqIGFzIGFueVtdKS5tYXAoXG5cdFx0XHQodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCdcblx0XHRcdFx0PyBkZWVwT21hcCh2YWx1ZSwgdmFsdWVNYXBwZXIsIGtleU1hcHBlciwgY29udGV4dClcblx0XHRcdFx0OiB2YWx1ZVxuXHRcdCk7XG5cdH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcblx0XHRjb25zdCByZXN1bHQgPSB7fTtcblxuXHRcdGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvYmopKSB7XG5cdFx0XHRrZXkgPSB0eXBlb2Yga2V5TWFwcGVyID09PSAnZnVuY3Rpb24nXG5cdFx0XHRcdD8ga2V5TWFwcGVyLmNhbGwoY29udGV4dCwga2V5KVxuXHRcdFx0XHQ6IGtleTtcblx0XHRcdHJlc3VsdFtrZXldID0gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KHZhbHVlKVxuXHRcdFx0XHQ/IGRlZXBPbWFwKHZhbHVlLCB2YWx1ZU1hcHBlciwga2V5TWFwcGVyLCBjb250ZXh0KVxuXHRcdFx0XHQ6IHR5cGVvZiB2YWx1ZU1hcHBlciA9PT0gJ2Z1bmN0aW9uJ1xuXHRcdFx0XHRcdD8gdmFsdWVNYXBwZXIuY2FsbChjb250ZXh0LCB2YWx1ZSlcblx0XHRcdFx0XHQ6IHZhbHVlO1xuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHRyZXR1cm4gb2JqO1xufVxuXG5cbi8qKlxuICogTWVyZ2UgYXJyYXkgb2Ygb2JqZWN0cyBpbnRvIG9uZSBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZShvYmplY3RzOiBhbnlbXSk6IGFueSB7XG5cdGNvbnN0IHJlc3VsdCA9IHt9O1xuXHRmb3IgKGxldCBvYmogb2Ygb2JqZWN0cykge1xuXHRcdE9iamVjdC5hc3NpZ24ocmVzdWx0LCBvYmopO1xuXHR9XG5cdHJldHVybiByZXN1bHQ7XG59XG5cblxuLyoqXG4gKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgZW1wdHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHkob2JqOiBPYmplY3QpOiBib29sZWFuIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID09PSAwO1xufVxuXG5cblxuLyoqXG4gKiBJbi1NZW1vcnkgY2FjaGVcbiAqIFdpbGwgYmUgdXNlZCBieSBkZWZhdWx0IGJ5IFBvdGlvbiBmb3IgY2FjaGluZyByZXNvdXJjZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBNZW1DYWNoZSBpbXBsZW1lbnRzIEl0ZW1DYWNoZTxhbnk+IHtcblx0cHJvdGVjdGVkIGl0ZW1zOiBNYXA8c3RyaW5nLCBhbnk+O1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuaXRlbXMgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuXHR9XG5cblx0Z2V0KGtleTogc3RyaW5nKTogYW55IHtcblx0XHRyZXR1cm4gdGhpcy5pdGVtcy5nZXQoa2V5KTtcblx0fVxuXG5cdHB1dChrZXk6IHN0cmluZywgaXRlbTogYW55KTogYW55IHtcblx0XHRyZXR1cm4gdGhpcy5pdGVtcy5zZXQoa2V5LCBpdGVtKS5nZXQoa2V5KTtcblx0fVxuXG5cdHJlbW92ZShrZXk6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMuaXRlbXMuZGVsZXRlKGtleSk7XG5cdH1cbn1cbiJdfQ==
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc