@genialis/resolwe
Advanced tools
Comparing version 3.1.3 to 4.0.0
@@ -217,3 +217,3 @@ import * as Rx from 'rx'; | ||
*/ | ||
private _interceptErrors(xhr); | ||
private _interceptErrors(url, xhr); | ||
} |
@@ -159,3 +159,3 @@ "use strict"; | ||
}); | ||
_this._interceptErrors(jQueryXHR); | ||
_this._interceptErrors(path, jQueryXHR); | ||
return jQueryXHR; | ||
@@ -221,3 +221,3 @@ })); | ||
}); | ||
_this._interceptErrors(jQueryXHR); | ||
_this._interceptErrors(path, jQueryXHR); | ||
return jQueryXHR; | ||
@@ -257,7 +257,7 @@ })); | ||
*/ | ||
SimpleConnection.prototype._interceptErrors = function (xhr) { | ||
SimpleConnection.prototype._interceptErrors = function (url, xhr) { | ||
var _this = this; | ||
xhr.then(function (response) { | ||
if (_.has(response, 'error')) { | ||
var error = new errors_1.APIError(response['error'], response); | ||
var error = new errors_1.RequestError(url, response['error'], response); | ||
_this._errors.onNext(error); | ||
@@ -268,3 +268,3 @@ } | ||
if (500 <= jqXHR.status && jqXHR.status < 600) { | ||
var error = new errors_1.APIError(errorThrown, jqXHR); | ||
var error = new errors_1.RequestError(url, errorThrown, jqXHR); | ||
_this._errors.onNext(error); | ||
@@ -278,2 +278,2 @@ } | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hcGkvY29ubmVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUE0QjtBQUM1QiwrQkFBaUM7QUFDakMsdUJBQXlCO0FBQ3pCLHlCQUF1QjtBQUV2QixpREFBcUQ7QUFDckQsbUNBQWtEO0FBQ2xELDZDQUErQztBQXFJL0M7O0dBRUc7QUFDSDtJQWFJOztPQUVHO0lBQ0g7UUFDSSxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFXLENBQUM7UUFDckQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQVksQ0FBQztRQUMxQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxvQ0FBb0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRDs7T0FFRztJQUNJLG9DQUFTLEdBQWhCO1FBQ0ksTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0kscUNBQVUsR0FBakI7UUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxrQ0FBTyxHQUFkLFVBQWUsT0FBZSxFQUFFLFlBQW9CO1FBQXBELGlCQXVDQztRQXRDRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDLHlEQUF5RCxDQUFDLENBQUM7WUFDeEUsTUFBTSxDQUFDO1FBQ1gsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FB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QVUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUNqRSxLQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQUMsS0FBZ0IsRUFBRSxVQUFrQixFQUFFLFdBQW1CO1lBQy9ELEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDNUMsSUFBTSxLQUFLLEdBQUcsSUFBSSxpQkFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDL0MsS0FBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0IsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNMLHVCQUFDO0FBQUQsQ0E3U0EsQUE2U0MsSUFBQTtBQTdTWSw0Q0FBZ0IiLCJmaWxlIjoiYXBpL2Nvbm5lY3Rpb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgKiBhcyBqUXVlcnkgZnJvbSAnanF1ZXJ5JztcbmltcG9ydCAqIGFzIFJ4IGZyb20gJ3J4JztcbmltcG9ydCAnanF1ZXJ5LmNvb2tpZSc7XG5cbmltcG9ydCB7UXVlcnlPYnNlcnZlck1hbmFnZXJ9IGZyb20gJy4vcXVlcnlvYnNlcnZlcic7XG5pbXBvcnQge0FQSUVycm9yLCBXZWJzb2NrZXRFcnJvcn0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0ICogYXMgcmFuZG9tIGZyb20gJy4uL2NvcmUvdXRpbHMvcmFuZG9tJztcblxuLyoqXG4gKiBNZXNzYWdlIGV4Y2hhbmdlZCB2aWEgV2ViU29ja2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2Uge1xuICAgIG1zZzogc3RyaW5nO1xuICAgIG9ic2VydmVyOiBzdHJpbmc7XG4gICAgcHJpbWFyeV9rZXk6IHN0cmluZztcbiAgICBvcmRlcjogbnVtYmVyO1xuICAgIGl0ZW06IHt9O1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIHRvIFJFU1QgQVBJIG9ic2VydmUgcmVxdWVzdHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlPYnNlcnZlclJlc3BvbnNlIHtcbiAgICBvYnNlcnZlcjogc3RyaW5nO1xuICAgIGl0ZW1zOiBhbnlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25uZWN0aW9uIHtcbiAgICAvKipcbiAgICAgKiBFc3RhYmxpc2hlcyBhIGNvbm5lY3Rpb24gd2l0aCB0aGUgZ2VuZXNpcyBwbGF0Zm9ybSBzZXJ2ZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXJpIEdlbmVzaXMgcGxhdGZvcm0gc2VydmVyIFVSSVxuICAgICAqL1xuICAgIGNvbm5lY3QocmVzdFVyaTogc3RyaW5nLCB3ZWJzb2NrZXRVcmk6IHN0cmluZyk7XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZXMgdGhlIGNvbm5lY3Rpb24uXG4gICAgICovXG4gICAgZGlzY29ubmVjdCgpO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgd2hldGhlciB3ZWJzb2NrZXQgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZCBvciBub3QuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0cnVlL2ZhbHNlXG4gICAgICovXG4gICAgaXNDb25uZWN0ZWQoKTogUnguT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIGEgUkVTVCBBUEkgR0VUIHJlcXVlc3QgYWdhaW5zdCB0aGUgZ2VuZXNpcyBwbGF0Zm9ybSBiYWNrZW5kLlxuICAgICAqXG4gICAgICogQHBhcmFtIHBhdGggUmVxdWVzdCBwYXRoXG4gICAgICogQHBhcmFtIHBhcmFtZXRlcnMgUmVxdWVzdCBwYXJhbWV0ZXJzXG4gICAgICogQHJldHVybiBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHJlc3BvbnNlXG4gICAgICovXG4gICAgZ2V0PFQ+KHBhdGg6IHN0cmluZywgcGFyYW1ldGVycz86IHt9KTogUnguT2JzZXJ2YWJsZTxUPjtcblxuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIGEgUkVTVCBBUEkgUE9TVCByZXF1ZXN0IGFnYWluc3QgdGhlIGdlbmVzaXMgcGxhdGZvcm0gYmFja2VuZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXRoIFJlcXVlc3QgcGF0aFxuICAgICAqIEBwYXJhbSBkYXRhIFJlcXVlc3QgYm9keVxuICAgICAqIEBwYXJhbSBwYXJhbWV0ZXJzIFJlcXVlc3QgcGFyYW1ldGVyc1xuICAgICAqIEByZXR1cm4gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSByZXNwb25zZVxuICAgICAqL1xuICAgIHBvc3Q8VD4ocGF0aDogc3RyaW5nLCBkYXRhOiB7fSwgcGFyYW1ldGVycz86IHt9KTogUnguT2JzZXJ2YWJsZTxUPjtcblxuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIGEgUkVTVCBBUEkgUFVUIHJlcXVlc3QgYWdhaW5zdCB0aGUgZ2VuZXNpcyBwbGF0Zm9ybSBiYWNrZW5kLlxuICAgICAqXG4gICAgICogQHBhcmFtIHBhdGggUmVxdWVzdCBwYXRoXG4gICAgICogQHBhcmFtIGRhdGEgUmVxdWVzdCBib2R5XG4gICAgICogQHBhcmFtIHBhcmFtZXRlcnMgUmVxdWVzdCBwYXJhbWV0ZXJzXG4gICAgICogQHJldHVybiBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHJlc3BvbnNlXG4gICAgICovXG4gICAgcHV0PFQ+KHBhdGg6IHN0cmluZywgZGF0YToge30sIHBhcmFtZXRlcnM/OiB7fSk6IFJ4Lk9ic2VydmFibGU8VD47XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyBhIFJFU1QgQVBJIFBBVENIIHJlcXVlc3QgYWdhaW5zdCB0aGUgZ2VuZXNpcyBwbGF0Zm9ybSBiYWNrZW5kLlxuICAgICAqXG4gICAgICogQHBhcmFtIHBhdGggUmVxdWVzdCBwYXRoXG4gICAgICogQHBhcmFtIGRhdGEgUmVxdWVzdCBib2R5XG4gICAgICogQHBhcmFtIHBhcmFtZXRlcnMgUmVxdWVzdCBwYXJhbWV0ZXJzXG4gICAgICogQHJldHVybiBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHJlc3BvbnNlXG4gICAgICovXG4gICAgcGF0Y2g8VD4ocGF0aDogc3RyaW5nLCBkYXRhOiB7fSwgcGFyYW1ldGVycz86IHt9KTogUnguT2JzZXJ2YWJsZTxUPjtcblxuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIGEgUkVTVCBBUEkgREVMRVRFIHJlcXVlc3QgYWdhaW5zdCB0aGUgZ2VuZXNpcyBwbGF0Zm9ybSBiYWNrZW5kLlxuICAgICAqXG4gICAgICogQHBhcmFtIHBhdGggUmVxdWVzdCBwYXRoXG4gICAgICogQHBhcmFtIGRhdGEgUmVxdWVzdCBib2R5XG4gICAgICogQHBhcmFtIHBhcmFtZXRlcnMgUmVxdWVzdCBwYXJhbWV0ZXJzXG4gICAgICogQHJldHVybiBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHJlc3BvbnNlXG4gICAgICovXG4gICAgZGVsZXRlPFQ+KHBhdGg6IHN0cmluZywgZGF0YToge30sIHBhcmFtZXRlcnM/OiB7fSk6IFJ4Lk9ic2VydmFibGU8VD47XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFuIGFic29sdXRlIEFQSSBVUkkgZm9yIGEgc3BlY2lmaWMgcmVzb3VyY2UgcGF0aC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXRoIEFQSSByZXNvdXJjZSBwYXRoXG4gICAgICogQHJldHVybiBBYnNvbHV0ZSBVUklcbiAgICAgKi9cbiAgICBjcmVhdGVVcmlGcm9tUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBDU1JGIGNvb2tpZSB2YWx1ZSB0aGF0IG11c3QgYmUgdXNlZCB3aGVuIGRvaW5nIFBPU1QgcmVxdWVzdHMuXG4gICAgICovXG4gICAgY3NyZkNvb2tpZSgpOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBBIHN0cmVhbSBvZiBpbmNvbWluZyBXZWJTb2NrZXQgbWVzc2FnZXMuXG4gICAgICovXG4gICAgbWVzc2FnZXMoKTogUnguT2JzZXJ2YWJsZTxNZXNzYWdlPjtcblxuICAgIC8qKlxuICAgICAqIEEgc3RyZWFtIG9mIGVycm9yIG1lc3NhZ2VzLlxuICAgICAqL1xuICAgIGVycm9ycygpOiBSeC5PYnNlcnZhYmxlPEFQSUVycm9yPjtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgdW5pcXVlIHNlc3Npb24gaWRlbnRpZmllci5cbiAgICAgKi9cbiAgICBzZXNzaW9uSWQoKTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgUXVlcnlPYnNlcnZlck1hbmFnZXIgaW5zdGFuY2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29ubmVjdGlvbi5cbiAgICAgKi9cbiAgICBxdWVyeU9ic2VydmVyTWFuYWdlcigpOiBRdWVyeU9ic2VydmVyTWFuYWdlcjtcbn1cblxuLyoqXG4gKiBBIHBlbmRpbmcgcmVxdWVzdCB0aGF0IHNob3VsZCBiZSBleGVjdXRlZCBvbmNlIHRoZSBjb25uZWN0aW9uIGlzIGluIGEgcHJvcGVyIHN0YXRlLlxuICovXG5pbnRlcmZhY2UgUGVuZGluZ1JlcXVlc3Qge1xuICAgIHJlcXVlc3Q6ICgpID0+IFJ4LklQcm9taXNlPGFueT47XG4gICAgcmVzb2x2ZTogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XG4gICAgcmVqZWN0OiAocmVhc29uOiBhbnkpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogQW4gY29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgYSBjb25uZWN0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgU2ltcGxlQ29ubmVjdGlvbiBpbXBsZW1lbnRzIENvbm5lY3Rpb24ge1xuICAgIHByaXZhdGUgX3Jlc3RVcmk6IHN0cmluZztcbiAgICBwcml2YXRlIF93ZWJzb2NrZXRVcmk6IHN0cmluZztcbiAgICBwcml2YXRlIF9zZXNzaW9uSWQ6IHN0cmluZztcbiAgICBwcml2YXRlIF93ZWJzb2NrZXQ6IFdlYlNvY2tldDtcbiAgICBwcml2YXRlIF9vYnNlcnZhYmxlOiBSeC5Db25uZWN0YWJsZU9ic2VydmFibGU8YW55PjtcbiAgICBwcml2YXRlIF9kaXNwb3NhYmxlQ29ubmVjdGlvbjogUnguRGlzcG9zYWJsZTtcbiAgICBwcml2YXRlIF9xdWVyeU9ic2VydmVyTWFuYWdlcjogUXVlcnlPYnNlcnZlck1hbmFnZXI7XG4gICAgcHJpdmF0ZSBfcmVxdWVzdFF1ZXVlOiBQZW5kaW5nUmVxdWVzdFtdO1xuICAgIHByaXZhdGUgX2lzQ29ubmVjdGVkOiBib29sZWFuO1xuICAgIHByaXZhdGUgX2lzQ29ubmVjdGVkU3ViamVjdDogUnguU3ViamVjdDxib29sZWFuPjtcbiAgICBwcml2YXRlIF9lcnJvcnM6IFJ4LlN1YmplY3Q8QVBJRXJyb3I+O1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBjb25uZWN0aW9uLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLl9zZXNzaW9uSWQgPSByYW5kb20ucmFuZG9tVXVpZCgpO1xuICAgICAgICB0aGlzLl9vYnNlcnZhYmxlID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcmVxdWVzdFF1ZXVlID0gW107XG4gICAgICAgIHRoaXMuX2lzQ29ubmVjdGVkU3ViamVjdCA9IG5ldyBSeC5TdWJqZWN0PGJvb2xlYW4+KCk7XG4gICAgICAgIHRoaXMuX2Vycm9ycyA9IG5ldyBSeC5TdWJqZWN0PEFQSUVycm9yPigpO1xuICAgICAgICB0aGlzLl9xdWVyeU9ic2VydmVyTWFuYWdlciA9IG5ldyBRdWVyeU9ic2VydmVyTWFuYWdlcih0aGlzLCB0aGlzLl9lcnJvcnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBpbmhlcml0ZG9jXG4gICAgICovXG4gICAgcHVibGljIHNlc3Npb25JZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbklkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBpbmhlcml0ZG9jXG4gICAgICovXG4gICAgcHVibGljIGNzcmZDb29raWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGpRdWVyeS5jb29raWUoJ2NzcmZ0b2tlbicpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBpbmhlcml0ZG9jXG4gICAgICovXG4gICAgcHVibGljIGNvbm5lY3QocmVzdFVyaTogc3RyaW5nLCB3ZWJzb2NrZXRVcmk6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5fb2JzZXJ2YWJsZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiQXR0ZW1wdGVkIHRvIGNvbm5lY3QgYW4gYWxyZWFkeSBpbml0aWFsaXplZCBjb25uZWN0aW9uLlwiKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3Jlc3RVcmkgPSByZXN0VXJpO1xuICAgICAgICB0aGlzLl93ZWJzb2NrZXRVcmkgPSB3ZWJzb2NrZXRVcmk7XG5cbiAgICAgICAgdGhpcy5fb2JzZXJ2YWJsZSA9IFJ4Lk9ic2VydmFibGUuY3JlYXRlKChvYnNlcnZlcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVjb25uZWN0ID0gXy50aHJvdHRsZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vic29ja2V0ID0gbmV3IFdlYlNvY2tldCh0aGlzLl93ZWJzb2NrZXRVcmkgKyB0aGlzLl9zZXNzaW9uSWQgKyAnP3N1YnNjcmliZS1icm9hZGNhc3QnKTtcblxuICAgICAgICAgICAgICAgIC8vIFJlZ2lzdGVyIG1lc3NhZ2UgYW5kIGVycm9yIGhhbmRsZXJzLlxuICAgICAgICAgICAgICAgIHRoaXMuX3dlYnNvY2tldC5vbm1lc3NhZ2UgPSBvYnNlcnZlci5vbk5leHQuYmluZChvYnNlcnZlcik7XG4gICAgICAgICAgICAgICAgLy8gRG9uJ3QgaGFuZGxlIGBvbmVycm9yYCBiZWNhdXNlIGl0IGRvZXNuJ3QgcHJvdmlkZSBhbnkgdXNlZnVsIGluZm9ybWF0aW9uXG4gICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYnNvY2tldHMvI2NvbmNlcHQtd2Vic29ja2V0LWNsb3NlLWZhaWxcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWJzb2NrZXQub25vcGVuID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9wcm9jZXNzUmVxdWVzdHMoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlSXNDb25uZWN0ZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAvLyBSZWdpc3RlciByZWNvbm5lY3Rpb24gaGFuZGxlci4gV2UgcmVjb25uZWN0IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBzb2NrZXQgZ2V0cyBjbG9zZWQuXG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vic29ja2V0Lm9uY2xvc2UgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgV2Vic29ja2V0RXJyb3IoYFdlYnNvY2tldCBlcnJvciAke2V2ZW50LmNvZGV9YCwgZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lcnJvcnMub25OZXh0KGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgcmVjb25uZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZUlzQ29ubmVjdGVkKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSwgNTAwMCk7XG5cbiAgICAgICAgICAgIHJlY29ubmVjdCgpO1xuXG4gICAgICAgICAgICAvLyBUaGVyZSBpcyBubyB3YXkgdG8gdW5zdWJzY3JpYmUgYXMgd2UgYWx3YXlzIHdhbnQgdG8gaGF2ZSB0aGUgc29ja2V0IGNvbm5lY3RlZC5cbiAgICAgICAgICAgIHJldHVybiBfLm5vb3A7XG4gICAgICAgIH0pLnB1Ymxpc2goKTtcbiAgICAgICAgdGhpcy5fZGlzcG9zYWJsZUNvbm5lY3Rpb24gPSB0aGlzLl9vYnNlcnZhYmxlLmNvbm5lY3QoKTtcblxuICAgICAgICAvLyBTdWJzY3JpYmUgdG8gaXRlbSBjYWNoZSB1cGRhdGVzLlxuICAgICAgICB0aGlzLm1lc3NhZ2VzKCkuc3Vic2NyaWJlKHRoaXMuX3F1ZXJ5T2JzZXJ2ZXJNYW5hZ2VyLnVwZGF0ZS5iaW5kKHRoaXMuX3F1ZXJ5T2JzZXJ2ZXJNYW5hZ2VyKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGluaGVyaXRkb2NcbiAgICAgKi9cbiAgICBwdWJsaWMgZGlzY29ubmVjdCgpIHtcbiAgICAgICAgdGhpcy5fZGlzcG9zYWJsZUNvbm5lY3Rpb24uZGlzcG9zZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBpbmhlcml0ZG9jXG4gICAgICovXG4gICAgcHVibGljIGlzQ29ubmVjdGVkKCk6IFJ4Lk9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNDb25uZWN0ZWRTdWJqZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5vdGlmaWVzIGlzQ29ubmVjdGVkIG9ic2VydmVycy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpc0Nvbm5lY3RlZCBUcnVlIGlmIGNvbm5lY3Rpb24gZXN0YWJsaXNoZWRcbiAgICAgKi9cbiAgICBwcml2YXRlIF9oYW5kbGVJc0Nvbm5lY3RlZChpc0Nvbm5lY3RlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5faXNDb25uZWN0ZWQgIT09IGlzQ29ubmVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9pc0Nvbm5lY3RlZCA9IGlzQ29ubmVjdGVkO1xuICAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRoaXMuX2lzQ29ubmVjdGVkU3ViamVjdCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9pc0Nvbm5lY3RlZFN1YmplY3Qub25OZXh0KHRoaXMuX2lzQ29ubmVjdGVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIGEgcmVxdWVzdCBhZ2FpbnN0IHRoZSByZW1vdGUgc2VydmVyLiBJZiB0aGUgY29ubmVjdGlvbiBoYXMgbm90XG4gICAgICogeWV0IGJlZW4gZXN0YWJsaXNoZWQsIHRoZSByZXF1ZXN0IGlzIHF1ZXVlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0IEFueSBmdW5jdGlvbiwgd2hpY2ggcmV0dXJucyBhIHByb21pc2VcbiAgICAgKiBAcmV0dXJuIEEgcHJvbWlzZSwgd2hpY2ggaXMgZnVsZmlsbGVkIHdoZW4gdGhlIGluaXRpYWwgcHJvbWlzZSBpc1xuICAgICAqL1xuICAgIHByaXZhdGUgX3JlcXVlc3QocmVxdWVzdDogKCkgPT4gUnguSVByb21pc2U8YW55Pik6IFJ4LklQcm9taXNlPGFueT4ge1xuICAgICAgICBsZXQgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RRdWV1ZS5wdXNoKHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0OiByZXF1ZXN0LFxuICAgICAgICAgICAgICAgIHJlc29sdmU6IHJlc29sdmUsXG4gICAgICAgICAgICAgICAgcmVqZWN0OiByZWplY3QsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuX3dlYnNvY2tldCAmJiB0aGlzLl93ZWJzb2NrZXQucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wcm9jZXNzUmVxdWVzdHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIGFueSBwZW5kaW5nIHJlcXVlc3RzLlxuICAgICAqL1xuICAgIHByaXZhdGUgX3Byb2Nlc3NSZXF1ZXN0cygpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9yZXF1ZXN0UXVldWUubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCByZXF1ZXN0IG9mIHRoaXMuX3JlcXVlc3RRdWV1ZSkge1xuICAgICAgICAgICAgcmVxdWVzdC5yZXF1ZXN0KCkudGhlbihyZXF1ZXN0LnJlc29sdmUsIHJlcXVlc3QucmVqZWN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3JlcXVlc3RRdWV1ZSA9IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBpbmhlcml0ZG9jXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZVVyaUZyb21QYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXN0VXJpICsgcGF0aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdGRvY1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXQocGF0aDogc3RyaW5nLCBwYXJhbWV0ZXJzOiB7fSA9IHt9KTogUnguT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgaWYgKCFfLmlzRW1wdHkocGFyYW1ldGVycykpIHtcbiAgICAgICAgICAgIHBhdGggKz0gJz8nICsgalF1ZXJ5LnBhcmFtKHBhcmFtZXRlcnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcGF0aCA9IHRoaXMuY3JlYXRlVXJpRnJvbVBhdGgocGF0aCk7XG5cbiAgICAgICAgcmV0dXJuIFJ4Lk9ic2VydmFibGUuZnJvbVByb21pc2UodGhpcy5fcmVxdWVzdCgoKTogUnguSVByb21pc2U8YW55PiA9PiB7XG4gICAgICAgICAgICBjb25zdCBqUXVlcnlYSFIgPSBqUXVlcnkuYWpheCh7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2dldCcsXG4gICAgICAgICAgICAgICAgdXJsOiBwYXRoLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAgICAgeGhyRmllbGRzOiB7XG4gICAgICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuX2ludGVyY2VwdEVycm9ycyhqUXVlcnlYSFIpO1xuXG4gICAgICAgICAgICByZXR1cm4galF1ZXJ5WEhSO1xuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGluaGVyaXRkb2NcbiAgICAgKi9cbiAgICBwdWJsaWMgcG9zdChwYXRoOiBzdHJpbmcsIGRhdGE6IHt9LCBwYXJhbWV0ZXJzOiB7fSA9IHt9KTogUnguT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0ZSgnUE9TVCcsIHBhdGgsIGRhdGEsIHBhcmFtZXRlcnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBpbmhlcml0ZG9jXG4gICAgICovXG4gICAgcHVibGljIHB1dChwYXRoOiBzdHJpbmcsIGRhdGE6IHt9LCBwYXJhbWV0ZXJzOiB7fSA9IHt9KTogUnguT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0ZSgnUFVUJywgcGF0aCwgZGF0YSwgcGFyYW1ldGVycyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGluaGVyaXRkb2NcbiAgICAgKi9cbiAgICBwdWJsaWMgcGF0Y2gocGF0aDogc3RyaW5nLCBkYXRhOiB7fSwgcGFyYW1ldGVyczoge30gPSB7fSk6IFJ4Lk9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl91cGRhdGUoJ1BBVENIJywgcGF0aCwgZGF0YSwgcGFyYW1ldGVycyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGluaGVyaXRkb2NcbiAgICAgKi9cbiAgICBwdWJsaWMgZGVsZXRlKHBhdGg6IHN0cmluZywgZGF0YToge30sIHBhcmFtZXRlcnM6IHt9ID0ge30pOiBSeC5PYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdXBkYXRlKCdERUxFVEUnLCBwYXRoLCBkYXRhLCBwYXJhbWV0ZXJzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyBhIFJFU1QgQVBJIHJlcXVlc3QgYWdhaW5zdCB0aGUgZ2VuZXNpcyBwbGF0Zm9ybSBiYWNrZW5kLlxuICAgICAqXG4gICAgICogQHBhcmFtIG1ldGhvZCBSZXF1ZXN0IG1ldGhvZFxuICAgICAqIEBwYXJhbSBwYXRoIFJlcXVlc3QgcGF0aFxuICAgICAqIEBwYXJhbSBkYXRhIFJlcXVlc3QgYm9keVxuICAgICAqIEBwYXJhbSBwYXJhbWV0ZXJzIFJlcXVlc3QgcGFyYW1ldGVyc1xuICAgICAqIEByZXR1cm4gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSByZXNwb25zZVxuICAgICAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZShtZXRob2Q6IHN0cmluZywgcGF0aDogc3RyaW5nLCBkYXRhOiB7fSwgcGFyYW1ldGVyczoge30gPSB7fSk6IFJ4Lk9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGlmICghXy5pc0VtcHR5KHBhcmFtZXRlcnMpKSB7XG4gICAgICAgICAgICBwYXRoICs9ICc/JyArIGpRdWVyeS5wYXJhbShwYXJhbWV0ZXJzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHBhdGggPSB0aGlzLmNyZWF0ZVVyaUZyb21QYXRoKHBhdGgpO1xuXG4gICAgICAgIHJldHVybiBSeC5PYnNlcnZhYmxlLmZyb21Qcm9taXNlKHRoaXMuX3JlcXVlc3QoKCk6IFJ4LklQcm9taXNlPGFueT4gPT4ge1xuICAgICAgICAgICAgY29uc3QgalF1ZXJ5WEhSID0galF1ZXJ5LmFqYXgoe1xuICAgICAgICAgICAgICAgIHR5cGU6IG1ldGhvZCxcbiAgICAgICAgICAgICAgICB1cmw6IHBhdGgsXG4gICAgICAgICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoZGF0YSksXG4gICAgICAgICAgICAgICAgY29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICAgICB4aHJGaWVsZHM6IHtcbiAgICAgICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYmVmb3JlU2VuZDogKHhociwgc2V0dGluZ3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ1gtQ1NSRlRva2VuJywgdGhpcy5jc3JmQ29va2llKCkpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5faW50ZXJjZXB0RXJyb3JzKGpRdWVyeVhIUik7XG5cbiAgICAgICAgICAgIHJldHVybiBqUXVlcnlYSFI7XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdGRvY1xuICAgICAqL1xuICAgIHB1YmxpYyBtZXNzYWdlcygpOiBSeC5PYnNlcnZhYmxlPE1lc3NhZ2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29ic2VydmFibGUubWFwKFxuICAgICAgICAgICAgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZXZlbnQuZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICkuZmlsdGVyKFxuICAgICAgICAgICAgKGRhdGEpID0+IGRhdGEubXNnXG4gICAgICAgICkubWFwKFxuICAgICAgICAgICAgKGRhdGEpOiBNZXNzYWdlID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBtc2c6IGRhdGEubXNnLFxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlcjogZGF0YS5vYnNlcnZlcixcbiAgICAgICAgICAgICAgICAgICAgcHJpbWFyeV9rZXk6IGRhdGEucHJpbWFyeV9rZXksXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiBkYXRhLm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICBpdGVtOiBkYXRhLml0ZW0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdGRvY1xuICAgICAqL1xuICAgIHB1YmxpYyBlcnJvcnMoKTogUnguT2JzZXJ2YWJsZTxBUElFcnJvcj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXJyb3JzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBpbmhlcml0ZG9jXG4gICAgICovXG4gICAgcHVibGljIHF1ZXJ5T2JzZXJ2ZXJNYW5hZ2VyKCk6IFF1ZXJ5T2JzZXJ2ZXJNYW5hZ2VyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3F1ZXJ5T2JzZXJ2ZXJNYW5hZ2VyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBYSFIgYW5kIG5vdGlmaWVzIGVycm9yIG9ic2VydmVycy5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9pbnRlcmNlcHRFcnJvcnMoeGhyOiBKUXVlcnlYSFIpOiB2b2lkIHtcbiAgICAgICAgeGhyLnRoZW4oKHJlc3BvbnNlOiB7fSkgPT4ge1xuICAgICAgICAgICAgaWYgKF8uaGFzKHJlc3BvbnNlLCAnZXJyb3InKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEFQSUVycm9yKDxzdHJpbmc+IHJlc3BvbnNlWydlcnJvciddLCByZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyb3JzLm9uTmV4dChlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHhoci5mYWlsKChqcVhIUjogSlF1ZXJ5WEhSLCB0ZXh0U3RhdHVzOiBzdHJpbmcsIGVycm9yVGhyb3duOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGlmICg1MDAgPD0ganFYSFIuc3RhdHVzICYmIGpxWEhSLnN0YXR1cyA8IDYwMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEFQSUVycm9yKGVycm9yVGhyb3duLCBqcVhIUik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyb3JzLm9uTmV4dChlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hcGkvY29ubmVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUE0QjtBQUM1QiwrQkFBaUM7QUFDakMsdUJBQXlCO0FBQ3pCLHlCQUF1QjtBQUV2QixpREFBcUQ7QUFDckQsbUNBQWdFO0FBQ2hFLDZDQUErQztBQXFJL0M7O0dBRUc7QUFDSDtJQWFJOztPQUVHO0lBQ0g7UUFDSSxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFXLENBQUM7UUFDckQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQVksQ0FBQztRQUMxQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxvQ0FBb0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRDs7T0FFRztJQUNJLG9DQUFTLEdBQWhCO1FBQ0ksTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0kscUNBQVUsR0FBakI7UUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxrQ0FBTyxHQUFkLFVBQWUsT0FBZSxFQUFFLFlBQW9CO1FBQXBELGlCQXVDQztRQXRDRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDLHlEQUF5RCxDQUFDLENBQUM7WUFDeEUsTUFBTSxDQUFDO1FBQ1gsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FB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QixJQUFNLEtBQUssR0FBRyxJQUFJLHFCQUFZLENBQUMsR0FBRyxFQUFXLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDMUUsS0FBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0IsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFDLEtBQWdCLEVBQUUsVUFBa0IsRUFBRSxXQUFtQjtZQUMvRCxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzVDLElBQU0sS0FBSyxHQUFHLElBQUkscUJBQVksQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN4RCxLQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0wsdUJBQUM7QUFBRCxDQTdTQSxBQTZTQyxJQUFBO0FBN1NZLDRDQUFnQiIsImZpbGUiOiJhcGkvY29ubmVjdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCAqIGFzIGpRdWVyeSBmcm9tICdqcXVlcnknO1xuaW1wb3J0ICogYXMgUnggZnJvbSAncngnO1xuaW1wb3J0ICdqcXVlcnkuY29va2llJztcblxuaW1wb3J0IHtRdWVyeU9ic2VydmVyTWFuYWdlcn0gZnJvbSAnLi9xdWVyeW9ic2VydmVyJztcbmltcG9ydCB7QVBJRXJyb3IsIFJlcXVlc3RFcnJvciwgV2Vic29ja2V0RXJyb3J9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCAqIGFzIHJhbmRvbSBmcm9tICcuLi9jb3JlL3V0aWxzL3JhbmRvbSc7XG5cbi8qKlxuICogTWVzc2FnZSBleGNoYW5nZWQgdmlhIFdlYlNvY2tldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlIHtcbiAgICBtc2c6IHN0cmluZztcbiAgICBvYnNlcnZlcjogc3RyaW5nO1xuICAgIHByaW1hcnlfa2V5OiBzdHJpbmc7XG4gICAgb3JkZXI6IG51bWJlcjtcbiAgICBpdGVtOiB7fTtcbn1cblxuLyoqXG4gKiBSZXNwb25zZSB0byBSRVNUIEFQSSBvYnNlcnZlIHJlcXVlc3RzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5T2JzZXJ2ZXJSZXNwb25zZSB7XG4gICAgb2JzZXJ2ZXI6IHN0cmluZztcbiAgICBpdGVtczogYW55W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdGlvbiB7XG4gICAgLyoqXG4gICAgICogRXN0YWJsaXNoZXMgYSBjb25uZWN0aW9uIHdpdGggdGhlIGdlbmVzaXMgcGxhdGZvcm0gc2VydmVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHVyaSBHZW5lc2lzIHBsYXRmb3JtIHNlcnZlciBVUklcbiAgICAgKi9cbiAgICBjb25uZWN0KHJlc3RVcmk6IHN0cmluZywgd2Vic29ja2V0VXJpOiBzdHJpbmcpO1xuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSBjb25uZWN0aW9uLlxuICAgICAqL1xuICAgIGRpc2Nvbm5lY3QoKTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHdoZXRoZXIgd2Vic29ja2V0IGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQgb3Igbm90LlxuICAgICAqXG4gICAgICogQHJldHVybiBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdHJ1ZS9mYWxzZVxuICAgICAqL1xuICAgIGlzQ29ubmVjdGVkKCk6IFJ4Lk9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyBhIFJFU1QgQVBJIEdFVCByZXF1ZXN0IGFnYWluc3QgdGhlIGdlbmVzaXMgcGxhdGZvcm0gYmFja2VuZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXRoIFJlcXVlc3QgcGF0aFxuICAgICAqIEBwYXJhbSBwYXJhbWV0ZXJzIFJlcXVlc3QgcGFyYW1ldGVyc1xuICAgICAqIEByZXR1cm4gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSByZXNwb25zZVxuICAgICAqL1xuICAgIGdldDxUPihwYXRoOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiB7fSk6IFJ4Lk9ic2VydmFibGU8VD47XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyBhIFJFU1QgQVBJIFBPU1QgcmVxdWVzdCBhZ2FpbnN0IHRoZSBnZW5lc2lzIHBsYXRmb3JtIGJhY2tlbmQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGF0aCBSZXF1ZXN0IHBhdGhcbiAgICAgKiBAcGFyYW0gZGF0YSBSZXF1ZXN0IGJvZHlcbiAgICAgKiBAcGFyYW0gcGFyYW1ldGVycyBSZXF1ZXN0IHBhcmFtZXRlcnNcbiAgICAgKiBAcmV0dXJuIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgcmVzcG9uc2VcbiAgICAgKi9cbiAgICBwb3N0PFQ+KHBhdGg6IHN0cmluZywgZGF0YToge30sIHBhcmFtZXRlcnM/OiB7fSk6IFJ4Lk9ic2VydmFibGU8VD47XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyBhIFJFU1QgQVBJIFBVVCByZXF1ZXN0IGFnYWluc3QgdGhlIGdlbmVzaXMgcGxhdGZvcm0gYmFja2VuZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXRoIFJlcXVlc3QgcGF0aFxuICAgICAqIEBwYXJhbSBkYXRhIFJlcXVlc3QgYm9keVxuICAgICAqIEBwYXJhbSBwYXJhbWV0ZXJzIFJlcXVlc3QgcGFyYW1ldGVyc1xuICAgICAqIEByZXR1cm4gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSByZXNwb25zZVxuICAgICAqL1xuICAgIHB1dDxUPihwYXRoOiBzdHJpbmcsIGRhdGE6IHt9LCBwYXJhbWV0ZXJzPzoge30pOiBSeC5PYnNlcnZhYmxlPFQ+O1xuXG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgYSBSRVNUIEFQSSBQQVRDSCByZXF1ZXN0IGFnYWluc3QgdGhlIGdlbmVzaXMgcGxhdGZvcm0gYmFja2VuZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXRoIFJlcXVlc3QgcGF0aFxuICAgICAqIEBwYXJhbSBkYXRhIFJlcXVlc3QgYm9keVxuICAgICAqIEBwYXJhbSBwYXJhbWV0ZXJzIFJlcXVlc3QgcGFyYW1ldGVyc1xuICAgICAqIEByZXR1cm4gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSByZXNwb25zZVxuICAgICAqL1xuICAgIHBhdGNoPFQ+KHBhdGg6IHN0cmluZywgZGF0YToge30sIHBhcmFtZXRlcnM/OiB7fSk6IFJ4Lk9ic2VydmFibGU8VD47XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyBhIFJFU1QgQVBJIERFTEVURSByZXF1ZXN0IGFnYWluc3QgdGhlIGdlbmVzaXMgcGxhdGZvcm0gYmFja2VuZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXRoIFJlcXVlc3QgcGF0aFxuICAgICAqIEBwYXJhbSBkYXRhIFJlcXVlc3QgYm9keVxuICAgICAqIEBwYXJhbSBwYXJhbWV0ZXJzIFJlcXVlc3QgcGFyYW1ldGVyc1xuICAgICAqIEByZXR1cm4gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSByZXNwb25zZVxuICAgICAqL1xuICAgIGRlbGV0ZTxUPihwYXRoOiBzdHJpbmcsIGRhdGE6IHt9LCBwYXJhbWV0ZXJzPzoge30pOiBSeC5PYnNlcnZhYmxlPFQ+O1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbiBhYnNvbHV0ZSBBUEkgVVJJIGZvciBhIHNwZWNpZmljIHJlc291cmNlIHBhdGguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGF0aCBBUEkgcmVzb3VyY2UgcGF0aFxuICAgICAqIEByZXR1cm4gQWJzb2x1dGUgVVJJXG4gICAgICovXG4gICAgY3JlYXRlVXJpRnJvbVBhdGgocGF0aDogc3RyaW5nKTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgQ1NSRiBjb29raWUgdmFsdWUgdGhhdCBtdXN0IGJlIHVzZWQgd2hlbiBkb2luZyBQT1NUIHJlcXVlc3RzLlxuICAgICAqL1xuICAgIGNzcmZDb29raWUoKTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQSBzdHJlYW0gb2YgaW5jb21pbmcgV2ViU29ja2V0IG1lc3NhZ2VzLlxuICAgICAqL1xuICAgIG1lc3NhZ2VzKCk6IFJ4Lk9ic2VydmFibGU8TWVzc2FnZT47XG5cbiAgICAvKipcbiAgICAgKiBBIHN0cmVhbSBvZiBlcnJvciBtZXNzYWdlcy5cbiAgICAgKi9cbiAgICBlcnJvcnMoKTogUnguT2JzZXJ2YWJsZTxBUElFcnJvcj47XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHVuaXF1ZSBzZXNzaW9uIGlkZW50aWZpZXIuXG4gICAgICovXG4gICAgc2Vzc2lvbklkKCk6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIFF1ZXJ5T2JzZXJ2ZXJNYW5hZ2VyIGluc3RhbmNlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbm5lY3Rpb24uXG4gICAgICovXG4gICAgcXVlcnlPYnNlcnZlck1hbmFnZXIoKTogUXVlcnlPYnNlcnZlck1hbmFnZXI7XG59XG5cbi8qKlxuICogQSBwZW5kaW5nIHJlcXVlc3QgdGhhdCBzaG91bGQgYmUgZXhlY3V0ZWQgb25jZSB0aGUgY29ubmVjdGlvbiBpcyBpbiBhIHByb3BlciBzdGF0ZS5cbiAqL1xuaW50ZXJmYWNlIFBlbmRpbmdSZXF1ZXN0IHtcbiAgICByZXF1ZXN0OiAoKSA9PiBSeC5JUHJvbWlzZTxhbnk+O1xuICAgIHJlc29sdmU6ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuICAgIHJlamVjdDogKHJlYXNvbjogYW55KSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIEFuIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIGEgY29ubmVjdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFNpbXBsZUNvbm5lY3Rpb24gaW1wbGVtZW50cyBDb25uZWN0aW9uIHtcbiAgICBwcml2YXRlIF9yZXN0VXJpOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfd2Vic29ja2V0VXJpOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfc2Vzc2lvbklkOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfd2Vic29ja2V0OiBXZWJTb2NrZXQ7XG4gICAgcHJpdmF0ZSBfb2JzZXJ2YWJsZTogUnguQ29ubmVjdGFibGVPYnNlcnZhYmxlPGFueT47XG4gICAgcHJpdmF0ZSBfZGlzcG9zYWJsZUNvbm5lY3Rpb246IFJ4LkRpc3Bvc2FibGU7XG4gICAgcHJpdmF0ZSBfcXVlcnlPYnNlcnZlck1hbmFnZXI6IFF1ZXJ5T2JzZXJ2ZXJNYW5hZ2VyO1xuICAgIHByaXZhdGUgX3JlcXVlc3RRdWV1ZTogUGVuZGluZ1JlcXVlc3RbXTtcbiAgICBwcml2YXRlIF9pc0Nvbm5lY3RlZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9pc0Nvbm5lY3RlZFN1YmplY3Q6IFJ4LlN1YmplY3Q8Ym9vbGVhbj47XG4gICAgcHJpdmF0ZSBfZXJyb3JzOiBSeC5TdWJqZWN0PEFQSUVycm9yPjtcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgY29ubmVjdGlvbi5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5fc2Vzc2lvbklkID0gcmFuZG9tLnJhbmRvbVV1aWQoKTtcbiAgICAgICAgdGhpcy5fb2JzZXJ2YWJsZSA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlcXVlc3RRdWV1ZSA9IFtdO1xuICAgICAgICB0aGlzLl9pc0Nvbm5lY3RlZFN1YmplY3QgPSBuZXcgUnguU3ViamVjdDxib29sZWFuPigpO1xuICAgICAgICB0aGlzLl9lcnJvcnMgPSBuZXcgUnguU3ViamVjdDxBUElFcnJvcj4oKTtcbiAgICAgICAgdGhpcy5fcXVlcnlPYnNlcnZlck1hbmFnZXIgPSBuZXcgUXVlcnlPYnNlcnZlck1hbmFnZXIodGhpcywgdGhpcy5fZXJyb3JzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdGRvY1xuICAgICAqL1xuICAgIHB1YmxpYyBzZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Nlc3Npb25JZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdGRvY1xuICAgICAqL1xuICAgIHB1YmxpYyBjc3JmQ29va2llKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBqUXVlcnkuY29va2llKCdjc3JmdG9rZW4nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdGRvY1xuICAgICAqL1xuICAgIHB1YmxpYyBjb25uZWN0KHJlc3RVcmk6IHN0cmluZywgd2Vic29ja2V0VXJpOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuX29ic2VydmFibGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkF0dGVtcHRlZCB0byBjb25uZWN0IGFuIGFscmVhZHkgaW5pdGlhbGl6ZWQgY29ubmVjdGlvbi5cIik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9yZXN0VXJpID0gcmVzdFVyaTtcbiAgICAgICAgdGhpcy5fd2Vic29ja2V0VXJpID0gd2Vic29ja2V0VXJpO1xuXG4gICAgICAgIHRoaXMuX29ic2VydmFibGUgPSBSeC5PYnNlcnZhYmxlLmNyZWF0ZSgob2JzZXJ2ZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlY29ubmVjdCA9IF8udGhyb3R0bGUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3dlYnNvY2tldCA9IG5ldyBXZWJTb2NrZXQodGhpcy5fd2Vic29ja2V0VXJpICsgdGhpcy5fc2Vzc2lvbklkICsgJz9zdWJzY3JpYmUtYnJvYWRjYXN0Jyk7XG5cbiAgICAgICAgICAgICAgICAvLyBSZWdpc3RlciBtZXNzYWdlIGFuZCBlcnJvciBoYW5kbGVycy5cbiAgICAgICAgICAgICAgICB0aGlzLl93ZWJzb2NrZXQub25tZXNzYWdlID0gb2JzZXJ2ZXIub25OZXh0LmJpbmQob2JzZXJ2ZXIpO1xuICAgICAgICAgICAgICAgIC8vIERvbid0IGhhbmRsZSBgb25lcnJvcmAgYmVjYXVzZSBpdCBkb2Vzbid0IHByb3ZpZGUgYW55IHVzZWZ1bCBpbmZvcm1hdGlvblxuICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJzb2NrZXRzLyNjb25jZXB0LXdlYnNvY2tldC1jbG9zZS1mYWlsXG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vic29ja2V0Lm9ub3BlbiA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc1JlcXVlc3RzKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZUlzQ29ubmVjdGVkKHRydWUpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgLy8gUmVnaXN0ZXIgcmVjb25uZWN0aW9uIGhhbmRsZXIuIFdlIHJlY29ubmVjdCBpbW1lZGlhdGVseSBhZnRlciB0aGUgc29ja2V0IGdldHMgY2xvc2VkLlxuICAgICAgICAgICAgICAgIHRoaXMuX3dlYnNvY2tldC5vbmNsb3NlID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IFdlYnNvY2tldEVycm9yKGBXZWJzb2NrZXQgZXJyb3IgJHtldmVudC5jb2RlfWAsIGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXJyb3JzLm9uTmV4dChlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHJlY29ubmVjdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVJc0Nvbm5lY3RlZChmYWxzZSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0sIDUwMDApO1xuXG4gICAgICAgICAgICByZWNvbm5lY3QoKTtcblxuICAgICAgICAgICAgLy8gVGhlcmUgaXMgbm8gd2F5IHRvIHVuc3Vic2NyaWJlIGFzIHdlIGFsd2F5cyB3YW50IHRvIGhhdmUgdGhlIHNvY2tldCBjb25uZWN0ZWQuXG4gICAgICAgICAgICByZXR1cm4gXy5ub29wO1xuICAgICAgICB9KS5wdWJsaXNoKCk7XG4gICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVDb25uZWN0aW9uID0gdGhpcy5fb2JzZXJ2YWJsZS5jb25uZWN0KCk7XG5cbiAgICAgICAgLy8gU3Vic2NyaWJlIHRvIGl0ZW0gY2FjaGUgdXBkYXRlcy5cbiAgICAgICAgdGhpcy5tZXNzYWdlcygpLnN1YnNjcmliZSh0aGlzLl9xdWVyeU9ic2VydmVyTWFuYWdlci51cGRhdGUuYmluZCh0aGlzLl9xdWVyeU9ic2VydmVyTWFuYWdlcikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBpbmhlcml0ZG9jXG4gICAgICovXG4gICAgcHVibGljIGRpc2Nvbm5lY3QoKSB7XG4gICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVDb25uZWN0aW9uLmRpc3Bvc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdGRvY1xuICAgICAqL1xuICAgIHB1YmxpYyBpc0Nvbm5lY3RlZCgpOiBSeC5PYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ29ubmVjdGVkU3ViamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOb3RpZmllcyBpc0Nvbm5lY3RlZCBvYnNlcnZlcnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaXNDb25uZWN0ZWQgVHJ1ZSBpZiBjb25uZWN0aW9uIGVzdGFibGlzaGVkXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaGFuZGxlSXNDb25uZWN0ZWQoaXNDb25uZWN0ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzQ29ubmVjdGVkICE9PSBpc0Nvbm5lY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5faXNDb25uZWN0ZWQgPSBpc0Nvbm5lY3RlZDtcbiAgICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZCh0aGlzLl9pc0Nvbm5lY3RlZFN1YmplY3QpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5faXNDb25uZWN0ZWRTdWJqZWN0Lm9uTmV4dCh0aGlzLl9pc0Nvbm5lY3RlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyBhIHJlcXVlc3QgYWdhaW5zdCB0aGUgcmVtb3RlIHNlcnZlci4gSWYgdGhlIGNvbm5lY3Rpb24gaGFzIG5vdFxuICAgICAqIHlldCBiZWVuIGVzdGFibGlzaGVkLCB0aGUgcmVxdWVzdCBpcyBxdWV1ZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdCBBbnkgZnVuY3Rpb24sIHdoaWNoIHJldHVybnMgYSBwcm9taXNlXG4gICAgICogQHJldHVybiBBIHByb21pc2UsIHdoaWNoIGlzIGZ1bGZpbGxlZCB3aGVuIHRoZSBpbml0aWFsIHByb21pc2UgaXNcbiAgICAgKi9cbiAgICBwcml2YXRlIF9yZXF1ZXN0KHJlcXVlc3Q6ICgpID0+IFJ4LklQcm9taXNlPGFueT4pOiBSeC5JUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgbGV0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9yZXF1ZXN0UXVldWUucHVzaCh7XG4gICAgICAgICAgICAgICAgcmVxdWVzdDogcmVxdWVzdCxcbiAgICAgICAgICAgICAgICByZXNvbHZlOiByZXNvbHZlLFxuICAgICAgICAgICAgICAgIHJlamVjdDogcmVqZWN0LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl93ZWJzb2NrZXQgJiYgdGhpcy5fd2Vic29ja2V0LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc1JlcXVlc3RzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3NlcyBhbnkgcGVuZGluZyByZXF1ZXN0cy5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9wcm9jZXNzUmVxdWVzdHMoKSB7XG4gICAgICAgIGlmICghdGhpcy5fcmVxdWVzdFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgcmVxdWVzdCBvZiB0aGlzLl9yZXF1ZXN0UXVldWUpIHtcbiAgICAgICAgICAgIHJlcXVlc3QucmVxdWVzdCgpLnRoZW4ocmVxdWVzdC5yZXNvbHZlLCByZXF1ZXN0LnJlamVjdCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9yZXF1ZXN0UXVldWUgPSBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdGRvY1xuICAgICAqL1xuICAgIHB1YmxpYyBjcmVhdGVVcmlGcm9tUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzdFVyaSArIHBhdGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGluaGVyaXRkb2NcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0KHBhdGg6IHN0cmluZywgcGFyYW1ldGVyczoge30gPSB7fSk6IFJ4Lk9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGlmICghXy5pc0VtcHR5KHBhcmFtZXRlcnMpKSB7XG4gICAgICAgICAgICBwYXRoICs9ICc/JyArIGpRdWVyeS5wYXJhbShwYXJhbWV0ZXJzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHBhdGggPSB0aGlzLmNyZWF0ZVVyaUZyb21QYXRoKHBhdGgpO1xuXG4gICAgICAgIHJldHVybiBSeC5PYnNlcnZhYmxlLmZyb21Qcm9taXNlKHRoaXMuX3JlcXVlc3QoKCk6IFJ4LklQcm9taXNlPGFueT4gPT4ge1xuICAgICAgICAgICAgY29uc3QgalF1ZXJ5WEhSID0galF1ZXJ5LmFqYXgoe1xuICAgICAgICAgICAgICAgIHR5cGU6ICdnZXQnLFxuICAgICAgICAgICAgICAgIHVybDogcGF0aCxcbiAgICAgICAgICAgICAgICBjb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgICAgIHhockZpZWxkczoge1xuICAgICAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLl9pbnRlcmNlcHRFcnJvcnMocGF0aCwgalF1ZXJ5WEhSKTtcblxuICAgICAgICAgICAgcmV0dXJuIGpRdWVyeVhIUjtcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBpbmhlcml0ZG9jXG4gICAgICovXG4gICAgcHVibGljIHBvc3QocGF0aDogc3RyaW5nLCBkYXRhOiB7fSwgcGFyYW1ldGVyczoge30gPSB7fSk6IFJ4Lk9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl91cGRhdGUoJ1BPU1QnLCBwYXRoLCBkYXRhLCBwYXJhbWV0ZXJzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdGRvY1xuICAgICAqL1xuICAgIHB1YmxpYyBwdXQocGF0aDogc3RyaW5nLCBkYXRhOiB7fSwgcGFyYW1ldGVyczoge30gPSB7fSk6IFJ4Lk9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl91cGRhdGUoJ1BVVCcsIHBhdGgsIGRhdGEsIHBhcmFtZXRlcnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBpbmhlcml0ZG9jXG4gICAgICovXG4gICAgcHVibGljIHBhdGNoKHBhdGg6IHN0cmluZywgZGF0YToge30sIHBhcmFtZXRlcnM6IHt9ID0ge30pOiBSeC5PYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdXBkYXRlKCdQQVRDSCcsIHBhdGgsIGRhdGEsIHBhcmFtZXRlcnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBpbmhlcml0ZG9jXG4gICAgICovXG4gICAgcHVibGljIGRlbGV0ZShwYXRoOiBzdHJpbmcsIGRhdGE6IHt9LCBwYXJhbWV0ZXJzOiB7fSA9IHt9KTogUnguT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0ZSgnREVMRVRFJywgcGF0aCwgZGF0YSwgcGFyYW1ldGVycyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgYSBSRVNUIEFQSSByZXF1ZXN0IGFnYWluc3QgdGhlIGdlbmVzaXMgcGxhdGZvcm0gYmFja2VuZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBtZXRob2QgUmVxdWVzdCBtZXRob2RcbiAgICAgKiBAcGFyYW0gcGF0aCBSZXF1ZXN0IHBhdGhcbiAgICAgKiBAcGFyYW0gZGF0YSBSZXF1ZXN0IGJvZHlcbiAgICAgKiBAcGFyYW0gcGFyYW1ldGVycyBSZXF1ZXN0IHBhcmFtZXRlcnNcbiAgICAgKiBAcmV0dXJuIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgcmVzcG9uc2VcbiAgICAgKi9cbiAgICBwcml2YXRlIF91cGRhdGUobWV0aG9kOiBzdHJpbmcsIHBhdGg6IHN0cmluZywgZGF0YToge30sIHBhcmFtZXRlcnM6IHt9ID0ge30pOiBSeC5PYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBpZiAoIV8uaXNFbXB0eShwYXJhbWV0ZXJzKSkge1xuICAgICAgICAgICAgcGF0aCArPSAnPycgKyBqUXVlcnkucGFyYW0ocGFyYW1ldGVycyk7XG4gICAgICAgIH1cblxuICAgICAgICBwYXRoID0gdGhpcy5jcmVhdGVVcmlGcm9tUGF0aChwYXRoKTtcblxuICAgICAgICByZXR1cm4gUnguT2JzZXJ2YWJsZS5mcm9tUHJvbWlzZSh0aGlzLl9yZXF1ZXN0KCgpOiBSeC5JUHJvbWlzZTxhbnk+ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGpRdWVyeVhIUiA9IGpRdWVyeS5hamF4KHtcbiAgICAgICAgICAgICAgICB0eXBlOiBtZXRob2QsXG4gICAgICAgICAgICAgICAgdXJsOiBwYXRoLFxuICAgICAgICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KGRhdGEpLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAgICAgeGhyRmllbGRzOiB7XG4gICAgICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJlZm9yZVNlbmQ6ICh4aHIsIHNldHRpbmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdYLUNTUkZUb2tlbicsIHRoaXMuY3NyZkNvb2tpZSgpKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuX2ludGVyY2VwdEVycm9ycyhwYXRoLCBqUXVlcnlYSFIpO1xuXG4gICAgICAgICAgICByZXR1cm4galF1ZXJ5WEhSO1xuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGluaGVyaXRkb2NcbiAgICAgKi9cbiAgICBwdWJsaWMgbWVzc2FnZXMoKTogUnguT2JzZXJ2YWJsZTxNZXNzYWdlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vYnNlcnZhYmxlLm1hcChcbiAgICAgICAgICAgIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKGV2ZW50LmRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICApLmZpbHRlcihcbiAgICAgICAgICAgIChkYXRhKSA9PiBkYXRhLm1zZ1xuICAgICAgICApLm1hcChcbiAgICAgICAgICAgIChkYXRhKTogTWVzc2FnZSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgbXNnOiBkYXRhLm1zZyxcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXI6IGRhdGEub2JzZXJ2ZXIsXG4gICAgICAgICAgICAgICAgICAgIHByaW1hcnlfa2V5OiBkYXRhLnByaW1hcnlfa2V5LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogZGF0YS5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgaXRlbTogZGF0YS5pdGVtLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGluaGVyaXRkb2NcbiAgICAgKi9cbiAgICBwdWJsaWMgZXJyb3JzKCk6IFJ4Lk9ic2VydmFibGU8QVBJRXJyb3I+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Vycm9ycztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdGRvY1xuICAgICAqL1xuICAgIHB1YmxpYyBxdWVyeU9ic2VydmVyTWFuYWdlcigpOiBRdWVyeU9ic2VydmVyTWFuYWdlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9xdWVyeU9ic2VydmVyTWFuYWdlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgWEhSIGFuZCBub3RpZmllcyBlcnJvciBvYnNlcnZlcnMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaW50ZXJjZXB0RXJyb3JzKHVybDogc3RyaW5nLCB4aHI6IEpRdWVyeVhIUik6IHZvaWQge1xuICAgICAgICB4aHIudGhlbigocmVzcG9uc2U6IHt9KSA9PiB7XG4gICAgICAgICAgICBpZiAoXy5oYXMocmVzcG9uc2UsICdlcnJvcicpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgUmVxdWVzdEVycm9yKHVybCwgPHN0cmluZz4gcmVzcG9uc2VbJ2Vycm9yJ10sIHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnJvcnMub25OZXh0KGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgeGhyLmZhaWwoKGpxWEhSOiBKUXVlcnlYSFIsIHRleHRTdGF0dXM6IHN0cmluZywgZXJyb3JUaHJvd246IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgaWYgKDUwMCA8PSBqcVhIUi5zdGF0dXMgJiYganFYSFIuc3RhdHVzIDwgNjAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgUmVxdWVzdEVycm9yKHVybCwgZXJyb3JUaHJvd24sIGpxWEhSKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnJvcnMub25OZXh0KGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19 |
@@ -12,2 +12,10 @@ import { GenError } from '../core/errors/error'; | ||
/** | ||
* Request error. | ||
*/ | ||
export declare class RequestError extends APIError { | ||
url: string; | ||
name: string; | ||
constructor(url: string, message: string, associatedObject?: Object); | ||
} | ||
/** | ||
* QueryOne error thrown when [[Resource]]'s queryOne method fails. | ||
@@ -14,0 +22,0 @@ */ |
@@ -38,2 +38,18 @@ "use strict"; | ||
/** | ||
* Request error. | ||
*/ | ||
var RequestError = /** @class */ (function (_super) { | ||
__extends(RequestError, _super); | ||
function RequestError(url, message, associatedObject) { | ||
var _this = _super.call(this, message, associatedObject) || this; | ||
_this.url = url; | ||
_this.name = 'RequestError'; | ||
// https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work | ||
Object['setPrototypeOf'](_this, RequestError.prototype); | ||
return _this; | ||
} | ||
return RequestError; | ||
}(APIError)); | ||
exports.RequestError = RequestError; | ||
/** | ||
* QueryOne error thrown when [[Resource]]'s queryOne method fails. | ||
@@ -84,2 +100,2 @@ */ | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hcGkvZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLDhDQUE4QztBQUU5Qzs7R0FFRztBQUNIO0lBQThCLDRCQUFRO0lBSWxDLGtCQUFZLE9BQWUsRUFBRSxnQkFBeUI7UUFBdEQsWUFDSSxrQkFBTSxPQUFPLENBQUMsU0FLakI7UUFUTSxVQUFJLEdBQUcsVUFBVSxDQUFDO1FBS3JCLGdJQUFnSTtRQUNoSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxLQUFJLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRW5ELEtBQUksQ0FBQyxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQzs7SUFDOUMsQ0FBQztJQUVELHNCQUFXLHNDQUFnQjthQUEzQjtZQUNJLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDbEMsQ0FBQzs7O09BQUE7SUFDTCxlQUFDO0FBQUQsQ0FmQSxBQWVDLENBZjZCLGdCQUFRLEdBZXJDO0FBZlksNEJBQVE7QUFpQnJCOztHQUVHO0FBQ0g7SUFBbUMsaUNBQVE7SUFHdkMsdUJBQVksT0FBZTtRQUEzQixZQUNJLGtCQUFNLE9BQU8sQ0FBQyxTQUdqQjtRQU5NLFVBQUksR0FBRyxlQUFlLENBQUM7UUFJMUIsZ0lBQWdJO1FBQ2hJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEtBQUksRUFBRSxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7O0lBQzVELENBQUM7SUFDTCxvQkFBQztBQUFELENBUkEsQUFRQyxDQVJrQyxRQUFRLEdBUTFDO0FBUlksc0NBQWE7QUFVMUI7O0dBRUc7QUFDSDtJQUFvQyxrQ0FBUTtJQUd4Qyx3QkFBWSxPQUFlLEVBQUUsZ0JBQXlCO1FBQXRELFlBQ0ksa0JBQU0sT0FBTyxFQUFFLGdCQUFnQixDQUFDLFNBR25DO1FBTk0sVUFBSSxHQUFHLGdCQUFnQixDQUFDO1FBSTNCLGdJQUFnSTtRQUNoSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxLQUFJLEVBQUUsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDOztJQUM3RCxDQUFDO0lBQ0wscUJBQUM7QUFBRCxDQVJBLEFBUUMsQ0FSbUMsUUFBUSxHQVEzQztBQVJZLHdDQUFjO0FBVTNCOztHQUVHO0FBQ0g7SUFBeUMsdUNBQVE7SUFHN0MsNkJBQVksT0FBZSxFQUFFLGdCQUF5QjtRQUF0RCxZQUNJLGtCQUFNLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxTQUduQztRQU5NLFVBQUksR0FBRyxxQkFBcUIsQ0FBQztRQUloQyxnSUFBZ0k7UUFDaEksTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsS0FBSSxFQUFFLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDOztJQUNsRSxDQUFDO0lBQ0wsMEJBQUM7QUFBRCxDQVJBLEFBUUMsQ0FSd0MsUUFBUSxHQVFoRDtBQVJZLGtEQUFtQiIsImZpbGUiOiJhcGkvZXJyb3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtHZW5FcnJvcn0gZnJvbSAnLi4vY29yZS9lcnJvcnMvZXJyb3InO1xuXG4vKipcbiAqIEFwaSBlcnJvci5cbiAqL1xuZXhwb3J0IGNsYXNzIEFQSUVycm9yIGV4dGVuZHMgR2VuRXJyb3Ige1xuICAgIHB1YmxpYyBuYW1lID0gJ0FQSUVycm9yJztcbiAgICBwcml2YXRlIF9hc3NvY2lhdGVkT2JqZWN0OiBPYmplY3Q7XG5cbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIGFzc29jaWF0ZWRPYmplY3Q/OiBPYmplY3QpIHtcbiAgICAgICAgc3VwZXIobWVzc2FnZSk7XG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC93aWtpL0JyZWFraW5nLUNoYW5nZXMjZXh0ZW5kaW5nLWJ1aWx0LWlucy1saWtlLWVycm9yLWFycmF5LWFuZC1tYXAtbWF5LW5vLWxvbmdlci13b3JrXG4gICAgICAgIE9iamVjdFsnc2V0UHJvdG90eXBlT2YnXSh0aGlzLCBBUElFcnJvci5wcm90b3R5cGUpO1xuXG4gICAgICAgIHRoaXMuX2Fzc29jaWF0ZWRPYmplY3QgPSBhc3NvY2lhdGVkT2JqZWN0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXNzb2NpYXRlZE9iamVjdCgpOiBPYmplY3Qge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXNzb2NpYXRlZE9iamVjdDtcbiAgICB9XG59XG5cbi8qKlxuICogUXVlcnlPbmUgZXJyb3IgdGhyb3duIHdoZW4gW1tSZXNvdXJjZV1dJ3MgcXVlcnlPbmUgbWV0aG9kIGZhaWxzLlxuICovXG5leHBvcnQgY2xhc3MgUXVlcnlPbmVFcnJvciBleHRlbmRzIEFQSUVycm9yIHtcbiAgICBwdWJsaWMgbmFtZSA9ICdRdWVyeU9uZUVycm9yJztcblxuICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICBzdXBlcihtZXNzYWdlKTtcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L3dpa2kvQnJlYWtpbmctQ2hhbmdlcyNleHRlbmRpbmctYnVpbHQtaW5zLWxpa2UtZXJyb3ItYXJyYXktYW5kLW1hcC1tYXktbm8tbG9uZ2VyLXdvcmtcbiAgICAgICAgT2JqZWN0WydzZXRQcm90b3R5cGVPZiddKHRoaXMsIFF1ZXJ5T25lRXJyb3IucHJvdG90eXBlKTtcbiAgICB9XG59XG5cbi8qKlxuICogV2Vic29ja2V0IGVycm9yLlxuICovXG5leHBvcnQgY2xhc3MgV2Vic29ja2V0RXJyb3IgZXh0ZW5kcyBBUElFcnJvciB7XG4gICAgcHVibGljIG5hbWUgPSAnV2Vic29ja2V0RXJyb3InO1xuXG4gICAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBhc3NvY2lhdGVkT2JqZWN0PzogT2JqZWN0KSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UsIGFzc29jaWF0ZWRPYmplY3QpO1xuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvd2lraS9CcmVha2luZy1DaGFuZ2VzI2V4dGVuZGluZy1idWlsdC1pbnMtbGlrZS1lcnJvci1hcnJheS1hbmQtbWFwLW1heS1uby1sb25nZXItd29ya1xuICAgICAgICBPYmplY3RbJ3NldFByb3RvdHlwZU9mJ10odGhpcywgV2Vic29ja2V0RXJyb3IucHJvdG90eXBlKTtcbiAgICB9XG59XG5cbi8qKlxuICogUXVlcnkgb2JzZXJ2ZXJzIGVycm9yLlxuICovXG5leHBvcnQgY2xhc3MgUXVlcnlPYnNlcnZlcnNFcnJvciBleHRlbmRzIEFQSUVycm9yIHtcbiAgICBwdWJsaWMgbmFtZSA9ICdRdWVyeU9ic2VydmVyc0Vycm9yJztcblxuICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgYXNzb2NpYXRlZE9iamVjdD86IE9iamVjdCkge1xuICAgICAgICBzdXBlcihtZXNzYWdlLCBhc3NvY2lhdGVkT2JqZWN0KTtcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L3dpa2kvQnJlYWtpbmctQ2hhbmdlcyNleHRlbmRpbmctYnVpbHQtaW5zLWxpa2UtZXJyb3ItYXJyYXktYW5kLW1hcC1tYXktbm8tbG9uZ2VyLXdvcmtcbiAgICAgICAgT2JqZWN0WydzZXRQcm90b3R5cGVPZiddKHRoaXMsIFF1ZXJ5T2JzZXJ2ZXJzRXJyb3IucHJvdG90eXBlKTtcbiAgICB9XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hcGkvZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLDhDQUE4QztBQUU5Qzs7R0FFRztBQUNIO0lBQThCLDRCQUFRO0lBSWxDLGtCQUFZLE9BQWUsRUFBRSxnQkFBeUI7UUFBdEQsWUFDSSxrQkFBTSxPQUFPLENBQUMsU0FLakI7UUFUTSxVQUFJLEdBQUcsVUFBVSxDQUFDO1FBS3JCLGdJQUFnSTtRQUNoSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxLQUFJLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRW5ELEtBQUksQ0FBQyxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQzs7SUFDOUMsQ0FBQztJQUVELHNCQUFXLHNDQUFnQjthQUEzQjtZQUNJLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDbEMsQ0FBQzs7O09BQUE7SUFDTCxlQUFDO0FBQUQsQ0FmQSxBQWVDLENBZjZCLGdCQUFRLEdBZXJDO0FBZlksNEJBQVE7QUFpQnJCOztHQUVHO0FBQ0g7SUFBa0MsZ0NBQVE7SUFHdEMsc0JBQW1CLEdBQVcsRUFBRSxPQUFlLEVBQUUsZ0JBQXlCO1FBQTFFLFlBQ0ksa0JBQU0sT0FBTyxFQUFFLGdCQUFnQixDQUFDLFNBR25DO1FBSmtCLFNBQUcsR0FBSCxHQUFHLENBQVE7UUFGdkIsVUFBSSxHQUFHLGNBQWMsQ0FBQztRQUl6QixnSUFBZ0k7UUFDaEksTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsS0FBSSxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQzs7SUFDM0QsQ0FBQztJQUNMLG1CQUFDO0FBQUQsQ0FSQSxBQVFDLENBUmlDLFFBQVEsR0FRekM7QUFSWSxvQ0FBWTtBQVd6Qjs7R0FFRztBQUNIO0lBQW1DLGlDQUFRO0lBR3ZDLHVCQUFZLE9BQWU7UUFBM0IsWUFDSSxrQkFBTSxPQUFPLENBQUMsU0FHakI7UUFOTSxVQUFJLEdBQUcsZUFBZSxDQUFDO1FBSTFCLGdJQUFnSTtRQUNoSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxLQUFJLEVBQUUsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDOztJQUM1RCxDQUFDO0lBQ0wsb0JBQUM7QUFBRCxDQVJBLEFBUUMsQ0FSa0MsUUFBUSxHQVExQztBQVJZLHNDQUFhO0FBVTFCOztHQUVHO0FBQ0g7SUFBb0Msa0NBQVE7SUFHeEMsd0JBQVksT0FBZSxFQUFFLGdCQUF5QjtRQUF0RCxZQUNJLGtCQUFNLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxTQUduQztRQU5NLFVBQUksR0FBRyxnQkFBZ0IsQ0FBQztRQUkzQixnSUFBZ0k7UUFDaEksTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsS0FBSSxFQUFFLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQzs7SUFDN0QsQ0FBQztJQUNMLHFCQUFDO0FBQUQsQ0FSQSxBQVFDLENBUm1DLFFBQVEsR0FRM0M7QUFSWSx3Q0FBYztBQVUzQjs7R0FFRztBQUNIO0lBQXlDLHVDQUFRO0lBRzdDLDZCQUFZLE9BQWUsRUFBRSxnQkFBeUI7UUFBdEQsWUFDSSxrQkFBTSxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsU0FHbkM7UUFOTSxVQUFJLEdBQUcscUJBQXFCLENBQUM7UUFJaEMsZ0lBQWdJO1FBQ2hJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEtBQUksRUFBRSxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQzs7SUFDbEUsQ0FBQztJQUNMLDBCQUFDO0FBQUQsQ0FSQSxBQVFDLENBUndDLFFBQVEsR0FRaEQ7QUFSWSxrREFBbUIiLCJmaWxlIjoiYXBpL2Vycm9ycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7R2VuRXJyb3J9IGZyb20gJy4uL2NvcmUvZXJyb3JzL2Vycm9yJztcblxuLyoqXG4gKiBBcGkgZXJyb3IuXG4gKi9cbmV4cG9ydCBjbGFzcyBBUElFcnJvciBleHRlbmRzIEdlbkVycm9yIHtcbiAgICBwdWJsaWMgbmFtZSA9ICdBUElFcnJvcic7XG4gICAgcHJpdmF0ZSBfYXNzb2NpYXRlZE9iamVjdDogT2JqZWN0O1xuXG4gICAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBhc3NvY2lhdGVkT2JqZWN0PzogT2JqZWN0KSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvd2lraS9CcmVha2luZy1DaGFuZ2VzI2V4dGVuZGluZy1idWlsdC1pbnMtbGlrZS1lcnJvci1hcnJheS1hbmQtbWFwLW1heS1uby1sb25nZXItd29ya1xuICAgICAgICBPYmplY3RbJ3NldFByb3RvdHlwZU9mJ10odGhpcywgQVBJRXJyb3IucHJvdG90eXBlKTtcblxuICAgICAgICB0aGlzLl9hc3NvY2lhdGVkT2JqZWN0ID0gYXNzb2NpYXRlZE9iamVjdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFzc29jaWF0ZWRPYmplY3QoKTogT2JqZWN0IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Fzc29jaWF0ZWRPYmplY3Q7XG4gICAgfVxufVxuXG4vKipcbiAqIFJlcXVlc3QgZXJyb3IuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXF1ZXN0RXJyb3IgZXh0ZW5kcyBBUElFcnJvciB7XG4gICAgcHVibGljIG5hbWUgPSAnUmVxdWVzdEVycm9yJztcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB1cmw6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nLCBhc3NvY2lhdGVkT2JqZWN0PzogT2JqZWN0KSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UsIGFzc29jaWF0ZWRPYmplY3QpO1xuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvd2lraS9CcmVha2luZy1DaGFuZ2VzI2V4dGVuZGluZy1idWlsdC1pbnMtbGlrZS1lcnJvci1hcnJheS1hbmQtbWFwLW1heS1uby1sb25nZXItd29ya1xuICAgICAgICBPYmplY3RbJ3NldFByb3RvdHlwZU9mJ10odGhpcywgUmVxdWVzdEVycm9yLnByb3RvdHlwZSk7XG4gICAgfVxufVxuXG5cbi8qKlxuICogUXVlcnlPbmUgZXJyb3IgdGhyb3duIHdoZW4gW1tSZXNvdXJjZV1dJ3MgcXVlcnlPbmUgbWV0aG9kIGZhaWxzLlxuICovXG5leHBvcnQgY2xhc3MgUXVlcnlPbmVFcnJvciBleHRlbmRzIEFQSUVycm9yIHtcbiAgICBwdWJsaWMgbmFtZSA9ICdRdWVyeU9uZUVycm9yJztcblxuICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICBzdXBlcihtZXNzYWdlKTtcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L3dpa2kvQnJlYWtpbmctQ2hhbmdlcyNleHRlbmRpbmctYnVpbHQtaW5zLWxpa2UtZXJyb3ItYXJyYXktYW5kLW1hcC1tYXktbm8tbG9uZ2VyLXdvcmtcbiAgICAgICAgT2JqZWN0WydzZXRQcm90b3R5cGVPZiddKHRoaXMsIFF1ZXJ5T25lRXJyb3IucHJvdG90eXBlKTtcbiAgICB9XG59XG5cbi8qKlxuICogV2Vic29ja2V0IGVycm9yLlxuICovXG5leHBvcnQgY2xhc3MgV2Vic29ja2V0RXJyb3IgZXh0ZW5kcyBBUElFcnJvciB7XG4gICAgcHVibGljIG5hbWUgPSAnV2Vic29ja2V0RXJyb3InO1xuXG4gICAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBhc3NvY2lhdGVkT2JqZWN0PzogT2JqZWN0KSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UsIGFzc29jaWF0ZWRPYmplY3QpO1xuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvd2lraS9CcmVha2luZy1DaGFuZ2VzI2V4dGVuZGluZy1idWlsdC1pbnMtbGlrZS1lcnJvci1hcnJheS1hbmQtbWFwLW1heS1uby1sb25nZXItd29ya1xuICAgICAgICBPYmplY3RbJ3NldFByb3RvdHlwZU9mJ10odGhpcywgV2Vic29ja2V0RXJyb3IucHJvdG90eXBlKTtcbiAgICB9XG59XG5cbi8qKlxuICogUXVlcnkgb2JzZXJ2ZXJzIGVycm9yLlxuICovXG5leHBvcnQgY2xhc3MgUXVlcnlPYnNlcnZlcnNFcnJvciBleHRlbmRzIEFQSUVycm9yIHtcbiAgICBwdWJsaWMgbmFtZSA9ICdRdWVyeU9ic2VydmVyc0Vycm9yJztcblxuICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgYXNzb2NpYXRlZE9iamVjdD86IE9iamVjdCkge1xuICAgICAgICBzdXBlcihtZXNzYWdlLCBhc3NvY2lhdGVkT2JqZWN0KTtcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L3dpa2kvQnJlYWtpbmctQ2hhbmdlcyNleHRlbmRpbmctYnVpbHQtaW5zLWxpa2UtZXJyb3ItYXJyYXktYW5kLW1hcC1tYXktbm8tbG9uZ2VyLXdvcmtcbiAgICAgICAgT2JqZWN0WydzZXRQcm90b3R5cGVPZiddKHRoaXMsIFF1ZXJ5T2JzZXJ2ZXJzRXJyb3IucHJvdG90eXBlKTtcbiAgICB9XG59XG4iXX0= |
@@ -11,2 +11,3 @@ import * as Rx from 'rx'; | ||
constructor(connection: Connection); | ||
protected transformQuery(query: types.Query): types.Query; | ||
/** | ||
@@ -13,0 +14,0 @@ * Checks if data slug already exists. |
@@ -13,2 +13,3 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var _ = require("lodash"); | ||
var rest_resource_1 = require("./rest_resource"); | ||
@@ -24,2 +25,19 @@ var permissions_1 = require("../addons/permissions"); | ||
} | ||
DataResource.prototype.transformQuery = function (query) { | ||
// Rename `sample` query field to `entity`. | ||
var transformedQuery = _.mapKeys(query, function (value, field) { | ||
return field | ||
.replace(/^sample$/g, 'entity') | ||
.replace(/^sample__/g, 'entity__'); | ||
}); | ||
// Rename `sample` in limit fields to `entity`. | ||
if (transformedQuery.fields) { | ||
transformedQuery.fields = transformedQuery.fields.split(',').map(function (field) { | ||
return field | ||
.replace(/^sample$/g, 'entity') | ||
.replace(/^sample__/g, 'entity__'); | ||
}).join(','); | ||
} | ||
return _super.prototype.transformQuery.call(this, transformedQuery); | ||
}; | ||
/** | ||
@@ -54,2 +72,2 @@ * Checks if data slug already exists. | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hcGkvcmVzb3VyY2VzL3Jlc3QvZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFFQSxpREFBNkM7QUFFN0MscURBQXFGO0FBR3JGOztHQUVHO0FBQ0g7SUFBa0MsZ0NBQXdCO0lBRXRELHNCQUFZLFVBQXNCO2VBQzlCLGtCQUFNLE1BQU0sRUFBRSxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksaUNBQVUsR0FBakIsVUFBa0IsSUFBWTtRQUMxQixNQUFNLENBQTBCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQy9HLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxrQ0FBVyxHQUFsQixVQUFtQixJQUFZO1FBQzNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBYSxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVNLHFDQUFjLEdBQXJCLFVBQXNCLEVBQVU7UUFDNUIsTUFBTSxDQUFDLDRCQUFjLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxxQ0FBYyxHQUFyQixVQUFzQixFQUFVLEVBQUUsV0FBd0M7UUFDdEUsTUFBTSxDQUFDLDRCQUFjLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBQ0wsbUJBQUM7QUFBRCxDQWxDQSxBQWtDQyxDQWxDaUMsNEJBQVksR0FrQzdDO0FBbENZLG9DQUFZIiwiZmlsZSI6ImFwaS9yZXNvdXJjZXMvcmVzdC9kYXRhLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUnggZnJvbSAncngnO1xuXG5pbXBvcnQge1JFU1RSZXNvdXJjZX0gZnJvbSAnLi9yZXN0X3Jlc291cmNlJztcbmltcG9ydCB7Q29ubmVjdGlvbn0gZnJvbSAnLi4vLi4vY29ubmVjdGlvbic7XG5pbXBvcnQge1Blcm1pc3Npb25hYmxlLCBnZXRQZXJtaXNzaW9ucywgc2V0UGVybWlzc2lvbnN9IGZyb20gJy4uL2FkZG9ucy9wZXJtaXNzaW9ucyc7XG5pbXBvcnQgKiBhcyB0eXBlcyBmcm9tICcuLi8uLi90eXBlcy9yZXN0JztcblxuLyoqXG4gKiBEYXRhIHJlc291cmNlIGNsYXNzIGZvciBkZWFsaW5nIHdpdGggZGF0YSBlbmRwb2ludC5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFSZXNvdXJjZSBleHRlbmRzIFJFU1RSZXNvdXJjZTx0eXBlcy5EYXRhPiBpbXBsZW1lbnRzIFBlcm1pc3Npb25hYmxlIHtcblxuICAgIGNvbnN0cnVjdG9yKGNvbm5lY3Rpb246IENvbm5lY3Rpb24pIHtcbiAgICAgICAgc3VwZXIoJ2RhdGEnLCBjb25uZWN0aW9uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgZGF0YSBzbHVnIGFscmVhZHkgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFNsdWcgdG8gY2hlY2tcbiAgICAgKiBAcmV0dXJuIHtSeC5PYnNlcnZhYmxlPGJvb2xlYW4+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHJlc3BvbnNlXG4gICAgICovXG4gICAgcHVibGljIHNsdWdFeGlzdHMoc2x1Zzogc3RyaW5nKTogUnguT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiA8UnguT2JzZXJ2YWJsZTxib29sZWFuPj4gdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmdldExpc3RNZXRob2RQYXRoKCdzbHVnX2V4aXN0cycpLCB7IG5hbWU6IHNsdWcgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IERhdGEgb2JqZWN0IHdpdGggdGhlIHNhbWUgaW5wdXRzIGlmIGl0IGFscmVhZHkgZXhpc3RzLCBvdGhlcndpc2VcbiAgICAgKiBjcmVhdGUgaXQuXG4gICAgICpcbiAgICAgKiBOb3RlOiBDb25zaWRlciBzb3J0aW5nIGFycmF5cyBpbiB0aGUgaW5wdXRzLCB0byBwcmV2ZW50IG5lZWRsZXNzbHlcbiAgICAgKiBjcmVhdGluZyB0aGUgc2FtZSBEYXRhIG9iamVjdHMuXG4gICAgICovXG4gICAgcHVibGljIGdldE9yQ3JlYXRlKGRhdGE6IE9iamVjdCk6IFJ4Lk9ic2VydmFibGU8dHlwZXMuRGF0YT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uLnBvc3Q8dHlwZXMuRGF0YT4odGhpcy5nZXRMaXN0TWV0aG9kUGF0aCgnZ2V0X29yX2NyZWF0ZScpLCBkYXRhKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGVybWlzc2lvbnMoaWQ6IG51bWJlcik6IFJ4Lk9ic2VydmFibGU8dHlwZXMuSXRlbVBlcm1pc3Npb25zW10+IHtcbiAgICAgICAgcmV0dXJuIGdldFBlcm1pc3Npb25zKHRoaXMsIGlkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0UGVybWlzc2lvbnMoaWQ6IG51bWJlciwgcGVybWlzc2lvbnM6IHR5cGVzLlNldFBlcm1pc3Npb25zUmVxdWVzdCk6IFJ4Lk9ic2VydmFibGU8dHlwZXMuSXRlbVBlcm1pc3Npb25zW10+IHtcbiAgICAgICAgcmV0dXJuIHNldFBlcm1pc3Npb25zKHRoaXMsIGlkLCBwZXJtaXNzaW9ucyk7XG4gICAgfVxufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hcGkvcmVzb3VyY2VzL3Jlc3QvZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFDQSwwQkFBNEI7QUFFNUIsaURBQTZDO0FBRTdDLHFEQUFxRjtBQUdyRjs7R0FFRztBQUNIO0lBQWtDLGdDQUF3QjtJQUV0RCxzQkFBWSxVQUFzQjtlQUM5QixrQkFBTSxNQUFNLEVBQUUsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFFUyxxQ0FBYyxHQUF4QixVQUF5QixLQUFrQjtRQUN2QywyQ0FBMkM7UUFDM0MsSUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxVQUFDLEtBQUssRUFBRSxLQUFLO1lBQ25ELE1BQU0sQ0FBQyxLQUFLO2lCQUNQLE9BQU8sQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDO2lCQUM5QixPQUFPLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO1FBRUgsK0NBQStDO1FBQy9DLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDMUIsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQUMsS0FBSztnQkFDbkUsTUFBTSxDQUFDLEtBQUs7cUJBQ1AsT0FBTyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUM7cUJBQzlCLE9BQU8sQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDM0MsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLENBQUM7UUFFRCxNQUFNLENBQUMsaUJBQU0sY0FBYyxZQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksaUNBQVUsR0FBakIsVUFBa0IsSUFBWTtRQUMxQixNQUFNLENBQTBCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQy9HLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxrQ0FBVyxHQUFsQixVQUFtQixJQUFZO1FBQzNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBYSxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVNLHFDQUFjLEdBQXJCLFVBQXNCLEVBQVU7UUFDNUIsTUFBTSxDQUFDLDRCQUFjLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxxQ0FBYyxHQUFyQixVQUFzQixFQUFVLEVBQUUsV0FBd0M7UUFDdEUsTUFBTSxDQUFDLDRCQUFjLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBQ0wsbUJBQUM7QUFBRCxDQXREQSxBQXNEQyxDQXREaUMsNEJBQVksR0FzRDdDO0FBdERZLG9DQUFZIiwiZmlsZSI6ImFwaS9yZXNvdXJjZXMvcmVzdC9kYXRhLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUnggZnJvbSAncngnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQge1JFU1RSZXNvdXJjZX0gZnJvbSAnLi9yZXN0X3Jlc291cmNlJztcbmltcG9ydCB7Q29ubmVjdGlvbn0gZnJvbSAnLi4vLi4vY29ubmVjdGlvbic7XG5pbXBvcnQge1Blcm1pc3Npb25hYmxlLCBnZXRQZXJtaXNzaW9ucywgc2V0UGVybWlzc2lvbnN9IGZyb20gJy4uL2FkZG9ucy9wZXJtaXNzaW9ucyc7XG5pbXBvcnQgKiBhcyB0eXBlcyBmcm9tICcuLi8uLi90eXBlcy9yZXN0JztcblxuLyoqXG4gKiBEYXRhIHJlc291cmNlIGNsYXNzIGZvciBkZWFsaW5nIHdpdGggZGF0YSBlbmRwb2ludC5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFSZXNvdXJjZSBleHRlbmRzIFJFU1RSZXNvdXJjZTx0eXBlcy5EYXRhPiBpbXBsZW1lbnRzIFBlcm1pc3Npb25hYmxlIHtcblxuICAgIGNvbnN0cnVjdG9yKGNvbm5lY3Rpb246IENvbm5lY3Rpb24pIHtcbiAgICAgICAgc3VwZXIoJ2RhdGEnLCBjb25uZWN0aW9uKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdHJhbnNmb3JtUXVlcnkocXVlcnk6IHR5cGVzLlF1ZXJ5KTogdHlwZXMuUXVlcnkge1xuICAgICAgICAvLyBSZW5hbWUgYHNhbXBsZWAgcXVlcnkgZmllbGQgdG8gYGVudGl0eWAuXG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkUXVlcnkgPSBfLm1hcEtleXMocXVlcnksICh2YWx1ZSwgZmllbGQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBmaWVsZFxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9ec2FtcGxlJC9nLCAnZW50aXR5JylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXnNhbXBsZV9fL2csICdlbnRpdHlfXycpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBSZW5hbWUgYHNhbXBsZWAgaW4gbGltaXQgZmllbGRzIHRvIGBlbnRpdHlgLlxuICAgICAgICBpZiAodHJhbnNmb3JtZWRRdWVyeS5maWVsZHMpIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybWVkUXVlcnkuZmllbGRzID0gdHJhbnNmb3JtZWRRdWVyeS5maWVsZHMuc3BsaXQoJywnKS5tYXAoKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9ec2FtcGxlJC9nLCAnZW50aXR5JylcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL15zYW1wbGVfXy9nLCAnZW50aXR5X18nKTtcbiAgICAgICAgICAgIH0pLmpvaW4oJywnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdXBlci50cmFuc2Zvcm1RdWVyeSh0cmFuc2Zvcm1lZFF1ZXJ5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgZGF0YSBzbHVnIGFscmVhZHkgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFNsdWcgdG8gY2hlY2tcbiAgICAgKiBAcmV0dXJuIHtSeC5PYnNlcnZhYmxlPGJvb2xlYW4+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHJlc3BvbnNlXG4gICAgICovXG4gICAgcHVibGljIHNsdWdFeGlzdHMoc2x1Zzogc3RyaW5nKTogUnguT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiA8UnguT2JzZXJ2YWJsZTxib29sZWFuPj4gdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmdldExpc3RNZXRob2RQYXRoKCdzbHVnX2V4aXN0cycpLCB7IG5hbWU6IHNsdWcgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IERhdGEgb2JqZWN0IHdpdGggdGhlIHNhbWUgaW5wdXRzIGlmIGl0IGFscmVhZHkgZXhpc3RzLCBvdGhlcndpc2VcbiAgICAgKiBjcmVhdGUgaXQuXG4gICAgICpcbiAgICAgKiBOb3RlOiBDb25zaWRlciBzb3J0aW5nIGFycmF5cyBpbiB0aGUgaW5wdXRzLCB0byBwcmV2ZW50IG5lZWRsZXNzbHlcbiAgICAgKiBjcmVhdGluZyB0aGUgc2FtZSBEYXRhIG9iamVjdHMuXG4gICAgICovXG4gICAgcHVibGljIGdldE9yQ3JlYXRlKGRhdGE6IE9iamVjdCk6IFJ4Lk9ic2VydmFibGU8dHlwZXMuRGF0YT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uLnBvc3Q8dHlwZXMuRGF0YT4odGhpcy5nZXRMaXN0TWV0aG9kUGF0aCgnZ2V0X29yX2NyZWF0ZScpLCBkYXRhKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGVybWlzc2lvbnMoaWQ6IG51bWJlcik6IFJ4Lk9ic2VydmFibGU8dHlwZXMuSXRlbVBlcm1pc3Npb25zW10+IHtcbiAgICAgICAgcmV0dXJuIGdldFBlcm1pc3Npb25zKHRoaXMsIGlkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0UGVybWlzc2lvbnMoaWQ6IG51bWJlciwgcGVybWlzc2lvbnM6IHR5cGVzLlNldFBlcm1pc3Npb25zUmVxdWVzdCk6IFJ4Lk9ic2VydmFibGU8dHlwZXMuSXRlbVBlcm1pc3Npb25zW10+IHtcbiAgICAgICAgcmV0dXJuIHNldFBlcm1pc3Npb25zKHRoaXMsIGlkLCBwZXJtaXNzaW9ucyk7XG4gICAgfVxufVxuIl19 |
@@ -271,2 +271,3 @@ "use strict"; | ||
if (!store) { | ||
throw new error_1.GenError("Ignored missing store: " + storeMetadata.propertyName + " " + _this.globalStateId); | ||
} | ||
@@ -432,2 +433,2 @@ if (!store) | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb3JlL2NvbXBvbmVudHMvc3RhdGVmdWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMEJBQTRCO0FBQzVCLGlDQUFtQztBQUVuQywrQkFBc0Y7QUFHdEYseUNBQXlDO0FBRXpDO0lBQ0ksMkJBQW1CLFlBQW9CLEVBQVMsTUFBZTtRQUE1QyxpQkFBWSxHQUFaLFlBQVksQ0FBUTtRQUFTLFdBQU0sR0FBTixNQUFNLENBQVM7SUFDL0QsQ0FBQztJQUVNLHNEQUEwQixHQUFqQztRQUNJLE1BQU0sQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQ25ELENBQUM7SUFDTCx3QkFBQztBQUFELENBUEEsQUFPQyxJQUFBO0FBUFksOENBQWlCO0FBaUI5Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVERztBQU9IO0lBQW9ELHlDQUFhO0lBb0I3RCxZQUFZO0lBQ1osK0JBQVksTUFBc0IsRUFBRSxZQUEwQjtRQUE5RCxZQUNJLGtCQUFNLE1BQU0sQ0FBQyxTQUloQjtRQW5CRCw4QkFBOEI7UUFDdEIsYUFBTyxHQUEwQixJQUFJLENBQUM7UUFDOUMsd0NBQXdDO1FBQ2hDLGVBQVMsR0FBNEIsRUFBRSxDQUFDO1FBS2hELDRDQUE0QztRQUNwQyxtQ0FBNkIsR0FBa0MsRUFBRSxDQUFDO1FBQzFFLG1DQUFtQztRQUMzQiwrQkFBeUIsR0FBbUIsRUFBRSxDQUFDO1FBTW5ELEtBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO1FBQ2xDLEtBQUksQ0FBQyxtQkFBbUIsR0FBRyxZQUFZLENBQUMsa0JBQWtCLENBQUM7O0lBQy9ELENBQUM7OEJBMUJpQixxQkFBcUI7SUE0QmhDLCtDQUFlLEdBQXRCO1FBQUEsaUJBa0NDO1FBakNHLGlCQUFNLGVBQWUsV0FBRSxDQUFDO1FBRXhCLG1FQUFtRTtRQUNuRSxFQUFFLENBQUMsQ0FBQyxDQUFD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QUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9CLE1BQU0sSUFBSSxnQkFBUSxDQUFDLDhCQUE4QixHQUFHLElBQUksR0FBRywyQkFBMkIsR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDNUcsQ0FBQztRQUNELE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDOUUsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQWpCRCxzQkFpQkM7QUFFRDs7Ozs7R0FLRztBQUNILHFCQUE0QixJQUFhO0lBQ3JDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFGRCxrQ0FFQyIsImZpbGUiOiJjb3JlL2NvbXBvbmVudHMvc3RhdGVmdWwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgKiBhcyBhbmd1bGFyIGZyb20gJ2FuZ3VsYXInO1xuXG5pbXBvcnQge0NvbXBvbmVudEJhc2UsIGNvbXBvbmVudCwgQ29tcG9uZW50Q29uZmlndXJhdGlvbiwgU3Vic2NyaXB0aW9ufSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHtTaGFyZWRTdG9yZSwgU2hhcmVkU3RvcmVNYW5hZ2VyfSBmcm9tICcuLi9zaGFyZWRfc3RvcmUvaW5kZXgnO1xuaW1wb3J0IHtTdGF0ZU1hbmFnZXJ9IGZyb20gJy4vbWFuYWdlcic7XG5pbXBvcnQge0dlbkVycm9yfSBmcm9tICcuLi9lcnJvcnMvZXJyb3InO1xuXG5leHBvcnQgY2xhc3MgU3RhdGVJdGVtTWV0YWRhdGEge1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBwcm9wZXJ0eU5hbWU6IHN0cmluZywgcHVibGljIHNoYXJlZDogYm9vbGVhbikge1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTaGFyZWRTdG9yZU5hbWVQcm9wZXJ0eSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ19zaGFyZWRTdG9yZU5hbWVfJyArIHRoaXMucHJvcGVydHlOYW1lO1xuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGF0ZU1ldGFkYXRhIHtcbiAgICBbaW5kZXg6IHN0cmluZ106IFN0YXRlSXRlbU1ldGFkYXRhO1xufVxuXG5pbnRlcmZhY2UgU2hhcmVkU3RvcmVTdWJzY3JpYmVSZXF1ZXN0IHtcbiAgICAoKTogdm9pZDtcbn1cblxuLyoqXG4gKiBBIGNvbXBvbmVudCB3aGljaCBjb250YWlucyBzdGF0ZSB0aGF0IG1heSBiZSBzYXZlZCBhbmQgcmVsb2FkZWQgbGF0ZXIuIFN1Y2hcbiAqIHN0YXRlZnVsIGNvbXBvbmVudHMgYXJlIGF1dG9tYXRpY2FsbHkgb3JnYW5pemVkIGludG8gYSBoaWVyYXJjaHksIHNvIHRoYXRcbiAqIHBhcmVudHMgYWxzbyBzdG9yZSBzdGF0ZSBmb3IgYWxsIHRoZWlyIGNoaWxkcmVuLiBDYWxsaW5nIGBzYXZlU3RhdGVgIG9uIHRoZVxuICogdG9wLWxldmVsIGNvbXBvbmVudCB3aWxsIHRoZXJlZm9yZSBzYXZlIHRoZSBzdGF0ZSBvZiB0aGUgY29tcGxldGUgYXBwbGljYXRpb24uXG4gKlxuICogQ29tcG9uZW50IHN0YXRlIGlzIGRlZmluZWQgYnkgdXNpbmcgcHJvcGVydHkgZGVjb3JhdG9ycyBhcyBmb2xsb3dzOlxuICogYGBgXG4gKiBleHBvcnQgY2xhc3MgUHJvY2Vzc0dyb3VwcyBleHRlbmRzIFZpZXdDb21wb25lbnQge1xuICogICAgIEBzdGF0ZSgpIHB1YmxpYyBzZWxlY3RlZEdyb3VwOiBudW1iZXI7XG4gKlxuICogICAgIC8vIC4uLlxuICogfVxuICogYGBgXG4gKlxuICogSXQgbWF5IGJlIHRoZW4gcmVmZXJlbmNlZCBhbmQgd2F0Y2hlZCBmcm9tIHRoZSBjb250cm9sbGVyIG9yIHRlbXBsYXRlcyBhbmRcbiAqIHdpbGwgYXV0b21hdGljYWxseSBiZSBzYXZlZCB3aGVuIGNhbGxpbmcgW1tTdGF0ZWZ1bENvbXBvbmVudEJhc2Uuc2F2ZVN0YXRlXV1cbiAqIGFuZCByZWxvYWRlZCB3aGVuIGNhbGxpbmcgW1tTdGF0ZWZ1bENvbXBvbmVudEJhc2UubG9hZFN0YXRlXV0uXG4gKlxuICogQSByZWxhdGVkIGRlY29yYXRvciBtYXkgYmUgdXNlZCB0byBkZWNsYXJlIHN0YXRlLCB3aGljaCBpcyBzaGFyZWQgYmV0d2VlblxuICogbXVsdGlwbGUgY29tcG9uZW50czpcbiAqIGBgYFxuICogZXhwb3J0IGNsYXNzIFdpZGdldFJvc2UyIGV4dGVuZHMgV2lkZ2V0QmFzZSB7XG4gKiAgICAgQHNoYXJlZFN0YXRlKCkgcHVibGljIHNlbGVjdGVkVmFsdWU6IFNoYXJlZFN0b3JlPHR5cGVzLkRhdGE+O1xuICpcbiAqICAgICAvLyAuLi5cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFNlZSBbW1NoYXJlZFN0b3JlTWFuYWdlcl1dIGFuZCBbW1NoYXJlZFN0b3JlXV0gZm9yIG1vcmUgZG9jdW1lbnRhdGlvbiBvblxuICogZGVmaW5pbmcgc2hhcmVkIHN0YXRlIHVzaW5nIHNoYXJlZCBzdG9yZXMuXG4gKlxuICogRm9yIGV4YW1wbGUsIGlmIGEgc3RhdGVmdWwgY29tcG9uZW50IGRlZmluZXMgYSBzaGFyZWQgc3RhdGUgcHJvcGVydHkgY2FsbGVkXG4gKiBgc2VsZWN0ZWRWYWx1ZWAgKGFzIHNob3duIGFib3ZlKSBhbmQgeW91IHdhbnQgdG8gbGluayBpdCB3aXRoIHRoZSBzaGFyZWQgc3RvcmVcbiAqIG5hbWVkIGByb3NlMi1zZWxlY3RlZC1kYXRhLWl0ZW1gLCB5b3UgY2FuIGRvIHRoZSBmb2xsb3dpbmcgaW4geW91ciB0ZW1wbGF0ZTpcbiAqIGBgYGh0bWxcbiAqIDxnZW4td2lkZ2V0LXJvc2UyIHN0b3JlLXNlbGVjdGVkLXZhbHVlPVwicm9zZTItc2VsZWN0ZWQtZGF0YS1pdGVtXCI+PC9nZW4td2lkZ2V0LXJvc2UyPlxuICogYGBgXG4gKlxuICogTm90ZSB0aGF0IHRoZSB0ZW1wbGF0ZSBhdHRyaWJ1dGUgbmFtZSBpcyBwcmVmaXhlZCB3aXRoIGBzdG9yZWAgZXZlbiB3aGVuIHRoZVxuICogcHJvcGVydHkgaXMgY2FsbGVkIGp1c3QgYHNlbGVjdGVkVmFsdWVgLiBUaGlzIGlzIGRvbmUgYmVjYXVzZSB3aGF0IHlvdSBwYXNzXG4gKiBpbiB0aGUgdGVtcGxhdGUgaXMganVzdCBhIG5hbWUgb2YgdGhlIHN0b3JlLCB3aGljaCBtdXN0IGJlIHJlc29sdmVkIHVzaW5nIHRoZVxuICogc2hhcmVkIHN0b3JlIG1hbmFnZXIuXG4gKlxuICogSW5zaWRlIHRoZSBjb21wb25lbnRzIHlvdSBjYW4gdGhlbiBkaXNwYXRjaCBhbmQgc3Vic2NyaWJlIHRvIHRoZSB1bmRlcmx5aW5nXG4gKiBzdG9yZTpcbiAqIGBgYFxuICogLy8gUHVibGlzaCBzb21ldGhpbmcgYnkgZGlzcGF0Y2hpbmcgYW4gYWN0aW9uIHRvIHRoZSBzaGFyZWQgc3RvcmUuXG4gKiB0aGlzLnNlbGVjdGVkVmFsdWUuZGlzcGF0Y2goe3R5cGU6IEFjdGlvbnMuU0VULCB2YWx1ZTogNDJ9KTtcbiAqXG4gKiAvLyBTdWJzY3JpYmUgdG8gdXBkYXRlcyBvZiB0aGUgc2hhcmVkIHN0b3JlLlxuICogdGhpcy5zdWJzY3JpYmVTaGFyZWRTdGF0ZSgnc2VsZWN0ZWRWYWx1ZScsIChkYXRhKSA9PiB7XG4gKiAgICAgY29uc29sZS5sb2coXCJTaGFyZWQgc3RhdGUgJ3NlbGVjdGVkVmFsdWUnIGlzIG5vd1wiLCBkYXRhKTtcbiAqIH0pO1xuICogYGBgXG4gKi9cbkBjb21wb25lbnQoe1xuICAgIGFic3RyYWN0OiB0cnVlLFxuICAgIGJpbmRpbmdzOiB7XG4gICAgICAgIHN0YXRlSWQ6ICdAc3RhdGVJZCcsXG4gICAgfSxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU3RhdGVmdWxDb21wb25lbnRCYXNlIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7XG4gICAgLy8vIE1ldGFkYXRhIGFib3V0IHRoZSBzdGF0ZSBkZWZpbmVkIG9uIHRoZSBjb21wb25lbnQuXG4gICAgcHVibGljIF9fc3RhdGVNZXRhZGF0YTogU3RhdGVNZXRhZGF0YTtcbiAgICAvLy8gVGhpcyBjb21wb25lbnQncyBsb2NhbCBzdGF0ZSBpZGVudGlmaWVyLlxuICAgIHB1YmxpYyBzdGF0ZUlkOiBzdHJpbmc7XG4gICAgLy8vIFRoaXMgY29tcG9uZW50J3MgZ2xvYmFsIHN0YXRlIGlkZW50aWZpZXIuXG4gICAgcHVibGljIGdsb2JhbFN0YXRlSWQ6IHN0cmluZztcbiAgICAvLy8gUGFyZW50IHN0YXRlZnVsIGNvbXBvbmVudC5cbiAgICBwcml2YXRlIF9wYXJlbnQ6IFN0YXRlZnVsQ29tcG9uZW50QmFzZSA9IG51bGw7XG4gICAgLy8vIEEgbGlzdCBvZiBjaGlsZCBzdGF0ZWZ1bCBjb21wb25lbnRzLlxuICAgIHByaXZhdGUgX2NoaWxkcmVuOiBTdGF0ZWZ1bENvbXBvbmVudEJhc2VbXSA9IFtdO1xuICAgIC8vLyBTdGF0ZSBtYW5hZ2VyLlxuICAgIHByaXZhdGUgX3N0YXRlTWFuYWdlcjogU3RhdGVNYW5hZ2VyO1xuICAgIC8vLyBTaGFyZWQgc3RvcmUgbWFuYWdlci5cbiAgICBwcml2YXRlIF9zaGFyZWRTdG9yZU1hbmFnZXI6IFNoYXJlZFN0b3JlTWFuYWdlcjtcbiAgICAvLy8gU3Vic2NyaXB0aW9uIHJlcXVlc3RzIGZvciBzaGFyZWQgc3RvcmVzLlxuICAgIHByaXZhdGUgX3NoYXJlZFN0b3JlU3Vic2NyaWJlUmVxdWVzdHM6IFNoYXJlZFN0b3JlU3Vic2NyaWJlUmVxdWVzdFtdID0gW107XG4gICAgLy8vIFN1YnNjcmlwdGlvbnMgdG8gc2hhcmVkIHN0b3Jlcy5cbiAgICBwcml2YXRlIF9zaGFyZWRTdG9yZVN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgICAvLyBAbmdJbmplY3RcbiAgICBjb25zdHJ1Y3Rvcigkc2NvcGU6IGFuZ3VsYXIuSVNjb3BlLCBzdGF0ZU1hbmFnZXI6IFN0YXRlTWFuYWdlcikge1xuICAgICAgICBzdXBlcigkc2NvcGUpO1xuXG4gICAgICAgIHRoaXMuX3N0YXRlTWFuYWdlciA9IHN0YXRlTWFuYWdlcjtcbiAgICAgICAgdGhpcy5fc2hhcmVkU3RvcmVNYW5hZ2VyID0gc3RhdGVNYW5hZ2VyLnNoYXJlZFN0b3JlTWFuYWdlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Db21wb25lbnRJbml0KCkge1xuICAgICAgICBzdXBlci5vbkNvbXBvbmVudEluaXQoKTtcblxuICAgICAgICAvLyBXaGVuIHN0YXRlIGlkZW50aWZpZXIgaXMgbm90IGRlZmluZWQsIGRlZmF1bHQgdG8gZGlyZWN0aXZlIG5hbWUuXG4gICAgICAgIGlmIChfLmlzRW1wdHkodGhpcy5zdGF0ZUlkKSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUlkID0gdGhpcy5nZXRDb25maWcoKS5kaXJlY3RpdmU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZXRlcm1pbmUgb3VyIHBhcmVudCBhbmQgcmVnaXN0ZXIgb3Vyc2VsdmVzIHdpdGggaXQuXG4gICAgICAgIHRoaXMuX3BhcmVudCA9IHRoaXMuX2ZpbmRQYXJlbnRDb21wb25lbnQoKTtcbiAgICAgICAgaWYgKHRoaXMuX3BhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5fcGFyZW50Ll9yZWdpc3RlckNoaWxkKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5nbG9iYWxTdGF0ZUlkID0gdGhpcy5fcGFyZW50Lmdsb2JhbFN0YXRlSWQgKyAnLScgKyB0aGlzLnN0YXRlSWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZU1hbmFnZXIuYWRkVG9wTGV2ZWxDb21wb25lbnQodGhpcyk7XG4gICAgICAgICAgICB0aGlzLmdsb2JhbFN0YXRlSWQgPSB0aGlzLnN0YXRlSWQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBhbnkgcGVuZGluZyBzdGF0ZSBmb3IgdXMuXG4gICAgICAgIHRoaXMuX3N0YXRlTWFuYWdlci5sb2FkUGVuZGluZ0NvbXBvbmVudFN0YXRlKHRoaXMpO1xuXG4gICAgICAgIC8vIEF1dG9tYXRpY2FsbHkgbG9hZCBhbnkgY29uZmlndXJlZCBzaGFyZWQgc3RhdGUuXG4gICAgICAgIGNvbnN0IHN0YXRlTWV0YWRhdGEgPSB0aGlzLl9fc3RhdGVNZXRhZGF0YTtcbiAgICAgICAgXy5mb3JPd24oc3RhdGVNZXRhZGF0YSwgKG1ldGFkYXRhKSA9PiB7XG4gICAgICAgICAgICBpZiAobWV0YWRhdGEuc2hhcmVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2hhcmVkU3RvcmVOYW1lID0gdGhpc1ttZXRhZGF0YS5nZXRTaGFyZWRTdG9yZU5hbWVQcm9wZXJ0eSgpXTtcbiAgICAgICAgICAgICAgICBpZiAoIV8uaXNFbXB0eShzaGFyZWRTdG9yZU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0b3JlID0gdGhpcy5fc2hhcmVkU3RvcmVNYW5hZ2VyLmdldFN0b3JlKHNoYXJlZFN0b3JlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXNbbWV0YWRhdGEucHJvcGVydHlOYW1lXSA9IHN0b3JlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX3NldHVwU2hhcmVkU3RvcmUobWV0YWRhdGEucHJvcGVydHlOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB1cCB0aGUgc2hhcmVkIHN0b3JlLiBUaGlzIG1ldGhvZCBtYXkgYmUgb3ZlcnJpZGVuIGJ5IHN1YmNsYXNzZXMgd2hlbiBzb21ldGhpbmdcbiAgICAgKiBkaWZmZXJlbnQgc2hvdWxkIGJlIGRvbmUgaGVyZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RvcmV9IFNoYXJlZCBzdGF0ZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfc2V0dXBTaGFyZWRTdG9yZShzdG9yZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIC8vIFN1YnNjcmliZSB0byBzaGFyZWQgc3RvcmUsIHNvIHRoYXQgdGhpcyBjb21wb25lbnQncyBzY29wZSBnZXRzIHVwZGF0ZWQgd2hlbiB0aGVcbiAgICAgICAgLy8gdmFsdWUgaW4gdGhlIHN0b3JlIGlzIHVwZGF0ZWQuXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlU2hhcmVkU3RhdGUoc3RvcmUsIF8ubm9vcCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgc3RhdGUgbWFuYWdlci5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHN0YXRlTWFuYWdlcigpOiBTdGF0ZU1hbmFnZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RhdGVNYW5hZ2VyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHNoYXJlZCBzdG9yZSBtYW5hZ2VyLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXQgc2hhcmVkU3RvcmVNYW5hZ2VyKCk6IFNoYXJlZFN0b3JlTWFuYWdlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaGFyZWRTdG9yZU1hbmFnZXI7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ29tcG9uZW50RGVzdHJveWVkKCk6IHZvaWQge1xuICAgICAgICAvLyBTYXZlIGN1cnJlbnQgY29tcG9uZW50IHN0YXRlLCBzbyBpdCB3aWxsIGJlIGF2YWlsYWJsZSB3aGVuIHRoaXMgY29tcG9uZW50XG4gICAgICAgIC8vIGlzIGluc3RhbnRpYXRlZCBhZ2Fpbi5cbiAgICAgICAgdGhpcy5fc3RhdGVNYW5hZ2VyLnNhdmVQZW5kaW5nQ29tcG9uZW50U3RhdGUodGhpcyk7XG5cbiAgICAgICAgaWYgKHRoaXMuX3BhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5fcGFyZW50Ll91bnJlZ2lzdGVyQ2hpbGQodGhpcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZU1hbmFnZXIucmVtb3ZlVG9wTGV2ZWxDb21wb25lbnQodGhpcyk7XG4gICAgICAgIH1cblxuICAgICAgICBzdXBlci5vbkNvbXBvbmVudERlc3Ryb3llZCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGFmdGVyIHRoZSBjb21wb25lbnQncyBzdGF0ZSBoYXMgYmVlbiBsb2FkZWQuXG4gICAgICovXG4gICAgcHVibGljIG9uQ29tcG9uZW50U3RhdGVBZnRlckxvYWQoKTogdm9pZCB7XG4gICAgICAgIC8vIERvIG5vdGhpbmcgYnkgZGVmYXVsdC5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBiZWVuIHNhdmVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBvbkNvbXBvbmVudFN0YXRlUHJlU2F2ZSgpOiB2b2lkIHtcbiAgICAgICAgLy8gRG8gbm90aGluZyBieSBkZWZhdWx0LlxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc2NvdmVycyB0aGUgcGFyZW50IHN0YXRlZnVsIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9maW5kUGFyZW50Q29tcG9uZW50KCk6IFN0YXRlZnVsQ29tcG9uZW50QmFzZSB7XG4gICAgICAgIGxldCBzY29wZSA9IHRoaXMuJHNjb3BlLiRwYXJlbnQ7XG4gICAgICAgIHdoaWxlIChzY29wZSkge1xuICAgICAgICAgICAgaWYgKHNjb3BlWydjdHJsJ10gaW5zdGFuY2VvZiBTdGF0ZWZ1bENvbXBvbmVudEJhc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2NvcGVbJ2N0cmwnXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2NvcGUgPSBzY29wZS4kcGFyZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXJzIGEgbmV3IGNoaWxkIG9mIHRoaXMgc3RhdGVmdWwgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtTdGF0ZWZ1bENvbXBvbmVudEJhc2V9IGNoaWxkIENoaWxkIGNvbXBvbmVudCBpbnN0YW5jZVxuICAgICAqL1xuICAgIHByaXZhdGUgX3JlZ2lzdGVyQ2hpbGQoY2hpbGQ6IFN0YXRlZnVsQ29tcG9uZW50QmFzZSkge1xuICAgICAgICAvLyBFbnN1cmUgdGhlIGNoaWxkJ3MgbG9jYWwgc3RhdGUgaWQgaXMgdW5pcXVlLlxuICAgICAgICBpZiAoXy5hbnkodGhpcy5fY2hpbGRyZW4sIChjKSA9PiBjLnN0YXRlSWQgPT09IGNoaWxkLnN0YXRlSWQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgR2VuRXJyb3IoXCJEdXBsaWNhdGUgc3RhdGVmdWwgY29tcG9uZW50IHN0YXRlIGlkZW50aWZpZXIgJ1wiICsgY2hpbGQuc3RhdGVJZCArIFwiJy5cIik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVbnJlZ2lzdGVycyBhbiBleGlzdGluZyBjaGlsZCBvZiB0aGlzIHN0YXRlZnVsIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7U3RhdGVmdWxDb21wb25lbnRCYXNlfSBjaGlsZCBDaGlsZCBjb21wb25lbnQgaW5zdGFuY2VcbiAgICAgKi9cbiAgICBwcml2YXRlIF91bnJlZ2lzdGVyQ2hpbGQoY2hpbGQ6IFN0YXRlZnVsQ29tcG9uZW50QmFzZSkge1xuICAgICAgICB0aGlzLl9jaGlsZHJlbiA9IF8ud2l0aG91dCh0aGlzLl9jaGlsZHJlbiwgY2hpbGQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHBhcmVudCBzdGF0ZWZ1bCBjb21wb25lbnQuXG4gICAgICovXG4gICAgcHVibGljIHBhcmVudENvbXBvbmVudCgpOiBTdGF0ZWZ1bENvbXBvbmVudEJhc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBsaXN0IG9mIGNoaWxkIHN0YXRlZnVsIGNvbXBvbmVudHMuXG4gICAgICovXG4gICAgcHVibGljIGNoaWxkQ29tcG9uZW50cygpOiBTdGF0ZWZ1bENvbXBvbmVudEJhc2VbXSB7XG4gICAgICAgIHJldHVybiBfLmNsb25lKHRoaXMuX2NoaWxkcmVuKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5kcyBhIGNoaWxkIGNvbXBvbmVudCBieSBpdHMgc3RhdGUgaWRlbnRpZmllci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0ZUlkIENoaWxkJ3Mgc3RhdGUgaWRlbnRpZmllclxuICAgICAqIEByZXR1cm4ge1N0YXRlZnVsQ29tcG9uZW50QmFzZX0gQ2hpbGQgY29tcG9uZW50IGluc3RhbmNlXG4gICAgICovXG4gICAgcHVibGljIGdldENoaWxkQ29tcG9uZW50PFQgZXh0ZW5kcyBTdGF0ZWZ1bENvbXBvbmVudEJhc2U+KHN0YXRlSWQ6IHN0cmluZyk6IFQge1xuICAgICAgICByZXR1cm4gPFQ+IF8uZmluZCh0aGlzLl9jaGlsZHJlbiwgKGNoaWxkKSA9PiBjaGlsZC5zdGF0ZUlkID09PSBzdGF0ZUlkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdWJzY3JpYmVzIHRvIHNoYXJlZCBzdGF0ZS4gVGhpcyBpcyB0aGUgc2FtZSBhcyBhIG5vcm1hbCBzdWJzY3JpYmUsIGJ1dCBpblxuICAgICAqIGFkZGl0aW9uIGl0IGFsc28gcHJvcGVybHkgaGFuZGxlcyB1bmRlcmx5aW5nIGRhdGEgc3RvcmUgY2hhbmdlcyB3aGVuXG4gICAgICogY29tcG9uZW50IHN0YXRlIGlzIHJlbG9hZGVkLlxuICAgICAqXG4gICAgICogVGhlIHZhbHVlIG9ic2VydmVkIGZyb20gdGhlIHNoYXJlZCBzdG9yZSBNVVNUIE5PVCBiZSBtdXRhdGVkIGluIGFueSB3YXkgYXNcbiAgICAgKiBkb2luZyBzbyBtYXkgY2F1c2UgdW5kZWZpbmVkIGJlaGF2aW9yLiBJZiB5b3UgbmVlZCB0byBtdXRhdGUgdGhlIG9ic2VydmVkXG4gICAgICogdmFsdWUsIHVzZSBbW3N1YnNjcmliZVNoYXJlZFN0YXRlTXV0YWJsZV1dIGluc3RlYWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHNoYXJlZCBzdGF0ZVxuICAgICAqIEBwYXJhbSBjYWxsYmFjayBDYWxsYmFjayB0byBiZSBpbnZva2VkIG9uIHN1YnNjcmlwdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBzdWJzY3JpYmVTaGFyZWRTdGF0ZShuYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAodmFsdWU6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdG9yZU1ldGFkYXRhID0gdGhpcy5fZ2V0U3RhdGVNZXRhZGF0YShuYW1lKTtcbiAgICAgICAgaWYgKCFzdG9yZU1ldGFkYXRhIHx8ICFzdG9yZU1ldGFkYXRhLnNoYXJlZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEdlbkVycm9yKFwiU2hhcmVkIHN0YXRlICdcIiArIG5hbWUgKyBcIicgbm90IGZvdW5kLlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN1YnNjcmliZXIgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdG9yZTogU2hhcmVkU3RvcmU8YW55LCBhbnk+ID0gdGhpc1tzdG9yZU1ldGFkYXRhLnByb3BlcnR5TmFtZV07XG4gICAgICAgICAgICBpZiAoIXN0b3JlKSB7XG4gICAgICAgICAgICAgICAgLy8gQGlmbmRlZiBHRU5KU19QUk9EVUNUSU9OXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBHZW5FcnJvcihgSWdub3JlZCBtaXNzaW5nIHN0b3JlOiAke3N0b3JlTWV0YWRhdGEucHJvcGVydHlOYW1lfSAke3RoaXMuZ2xvYmFsU3RhdGVJZH1gKTtcbiAgICAgICAgICAgICAgICAvLyBAZW5kaWZcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghc3RvcmUpIHJldHVybjtcbiAgICAgICAgICAgIHRoaXMuX3NoYXJlZFN0b3JlU3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuc3Vic2NyaWJlKGNhbGxiYWNrLCBzdG9yZS5vYnNlcnZhYmxlKCkpKTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLl9zaGFyZWRTdG9yZVN1YnNjcmliZVJlcXVlc3RzLnB1c2goc3Vic2NyaWJlcik7XG4gICAgICAgIHN1YnNjcmliZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHZlcnNpb24gb2YgW1tzdWJzY3JpYmVTaGFyZWRTdGF0ZV1dLCB3aGljaCBlbnN1cmVzIHRoYXQgdGhlIG9ic2VydmVkIHNoYXJlZFxuICAgICAqIHN0b3JlIHZhbHVlIGlzIGNvcGllZCBhbmQgY2FuIHRodXMgYmUgc2FmZWx5IG11dGF0ZWQgYWZ0ZXJ3YXJkcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2Ygc2hhcmVkIHN0YXRlXG4gICAgICogQHBhcmFtIGNhbGxiYWNrIENhbGxiYWNrIHRvIGJlIGludm9rZWQgb24gc3Vic2NyaXB0aW9uXG4gICAgICovXG4gICAgcHVibGljIHN1YnNjcmliZVNoYXJlZFN0YXRlTXV0YWJsZTxUPihuYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAodmFsdWU6IFQpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVTaGFyZWRTdGF0ZShuYW1lLCAodmFsdWUpID0+IGNhbGxiYWNrKGFuZ3VsYXIuY29weSh2YWx1ZSkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIG1ldGFkYXRhIGZvciBzcGVjaWZpYyBjb21wb25lbnQgc3RhdGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHNoYXJlZCBzdGF0ZSAobm90IHByb3BlcnR5IG5hbWUpXG4gICAgICogQHJldHVybiB7U3RhdGVJdGVtTWV0YWRhdGF9IFN0YXRlIG1ldGFkYXRhXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0U3RhdGVNZXRhZGF0YShuYW1lOiBzdHJpbmcpOiBTdGF0ZUl0ZW1NZXRhZGF0YSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9fc3RhdGVNZXRhZGF0YVtuYW1lXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTYXZlcyB0aGlzIGNvbXBvbmVudCdzIGN1cnJlbnQgc3RhdGUgYW5kIHJldHVybnMgaXQuXG4gICAgICovXG4gICAgcHVibGljIHNhdmVTdGF0ZShzYXZlQ2hpbGRyZW46IGJvb2xlYW4gPSB0cnVlKTogYW55IHtcbiAgICAgICAgdGhpcy5vbkNvbXBvbmVudFN0YXRlUHJlU2F2ZSgpO1xuXG4gICAgICAgIGxldCByZXN1bHQgPSB7fTtcbiAgICAgICAgbGV0IHN0YXRlID0gcmVzdWx0W3RoaXMuZ2xvYmFsU3RhdGVJZF0gPSB7fTtcbiAgICAgICAgXy5mb3JPd24odGhpcy5fX3N0YXRlTWV0YWRhdGEsIChtZXRhZGF0YSwga2V5KSA9PiB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzW21ldGFkYXRhLnByb3BlcnR5TmFtZV07XG5cbiAgICAgICAgICAgIGlmIChtZXRhZGF0YS5zaGFyZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBJbiBjYXNlIG9mIHNoYXJlZCBzdGF0ZSwgc2F2ZSB0aGUgaWRlbnRpZmllciBvZiB0aGUgc2hhcmVkIHN0b3JlLlxuICAgICAgICAgICAgICAgIHZhbHVlID0gKDxTaGFyZWRTdG9yZTxhbnksIGFueT4+IHZhbHVlKS5zdG9yZUlkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzdGF0ZVtrZXldID0gdmFsdWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNhdmUgY2hpbGQgc3RhdGUuXG4gICAgICAgIGlmIChzYXZlQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5fY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBfLmV4dGVuZChyZXN1bHQsIGNoaWxkLnNhdmVTdGF0ZSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTG9hZHMgdGhpcyBjb21wb25lbnQncyBjdXJyZW50IHN0YXRlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHthbnl9IGdsb2JhbFN0YXRlIEdsb2JhbCBzdGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBsb2FkU3RhdGUoZ2xvYmFsU3RhdGU6IGFueSwgbG9hZENoaWxkcmVuOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IGdsb2JhbFN0YXRlW3RoaXMuZ2xvYmFsU3RhdGVJZF07XG4gICAgICAgIGxldCBzaGFyZWRTdGF0ZUNoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgXy5mb3JPd24odGhpcy5fX3N0YXRlTWV0YWRhdGEsIChtZXRhZGF0YSwga2V5KSA9PiB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBzdGF0ZVtrZXldO1xuICAgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQodmFsdWUpKSByZXR1cm47XG5cbiAgICAgICAgICAgIGlmIChtZXRhZGF0YS5zaGFyZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIHNoYXJlZCBzdG9yZSBmcm9tIHRoZSBzaGFyZWQgc3RvcmUgbWFuYWdlci5cbiAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ1ZhbHVlOiBTaGFyZWRTdG9yZTxhbnksIGFueT4gPSB0aGlzW21ldGFkYXRhLnByb3BlcnR5TmFtZV07XG4gICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nVmFsdWUuc3RvcmVJZCAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpc1ttZXRhZGF0YS5wcm9wZXJ0eU5hbWVdID0gdGhpcy5fc2hhcmVkU3RvcmVNYW5hZ2VyLmdldFN0b3JlPGFueT4odmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBzaGFyZWRTdGF0ZUNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpc1ttZXRhZGF0YS5wcm9wZXJ0eU5hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIExvYWQgY2hpbGQgc3RhdGUuXG4gICAgICAgIGlmIChsb2FkQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5fY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBjaGlsZC5sb2FkU3RhdGUoZ2xvYmFsU3RhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNoYXJlZFN0YXRlQ2hhbmdlZCkge1xuICAgICAgICAgICAgLy8gQ2FuY2VsIGFueSBwcmV2aW91cyBzdWJzY3JpcHRpb25zIHRvIHNoYXJlZCBzdG9yZXMuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHN1YnNjcmlwdGlvbiBvZiB0aGlzLl9zaGFyZWRTdG9yZVN1YnNjcmlwdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUmVzdWJzY3JpYmUsIHVzaW5nIHRoZSBuZXcgc3RvcmVzLlxuICAgICAgICAgICAgZm9yIChjb25zdCByZXF1ZXN0IG9mIHRoaXMuX3NoYXJlZFN0b3JlU3Vic2NyaWJlUmVxdWVzdHMpIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9uQ29tcG9uZW50U3RhdGVBZnRlckxvYWQoKTtcblxuICAgICAgICAvLyBQcm9wYWdhdGUgc3RhdGUgdXBkYXRlcyB0byB0aGUgdmlldy5cbiAgICAgICAgdGhpcy4kc2NvcGUuJGFwcGx5QXN5bmMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNvbmZpZ3VyZUNvbXBvbmVudChjb25maWc6IENvbXBvbmVudENvbmZpZ3VyYXRpb24pOiBDb21wb25lbnRDb25maWd1cmF0aW9uIHtcbiAgICAgICAgY29uc3Qgc3RhdGVNZXRhZGF0YSA9IHRoaXMucHJvdG90eXBlLl9fc3RhdGVNZXRhZGF0YTtcbiAgICAgICAgaWYgKCFjb25maWcuYmluZGluZ3MpIGNvbmZpZy5iaW5kaW5ncyA9IHt9O1xuXG4gICAgICAgIF8uZm9yT3duKHN0YXRlTWV0YWRhdGEsIChtZXRhZGF0YSwga2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAobWV0YWRhdGEuc2hhcmVkKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnLmJpbmRpbmdzW21ldGFkYXRhLmdldFNoYXJlZFN0b3JlTmFtZVByb3BlcnR5KCldID0gJ0BzdG9yZScgKyBfLmNhcGl0YWxpemUoa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBjb25maWc7XG4gICAgfVxufVxuXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgYmVpbmcgcGFydCBvZiB0aGUgY29tcG9uZW50J3Mgc3RhdGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgT3B0aW9uYWwgc3RhdGUgbmFtZVxuICogQHBhcmFtIHtib29sZWFufSBzaGFyZWQgRG9lcyB0aGlzIHN0YXRlIHJlZmVyZW5jZSBhIHNoYXJlZCBzdG9yZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RhdGUobmFtZT86IHN0cmluZywgc2hhcmVkOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICByZXR1cm4gKHRhcmdldDogU3RhdGVmdWxDb21wb25lbnRCYXNlLCBwcm9wZXJ0eUtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmICghbmFtZSkgbmFtZSA9IHByb3BlcnR5S2V5O1xuXG4gICAgICAgIGlmIChuYW1lWzBdID09PSAnXycpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBHZW5FcnJvcihcIlN0YXRlIGlkZW50aWZpZXJzIHN0YXJ0aW5nIHdpdGggYW4gdW5kZXJzY29yZSBhcmUgcmVzZXJ2ZWQuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0YXJnZXQuX19zdGF0ZU1ldGFkYXRhKSB7XG4gICAgICAgICAgICB0YXJnZXQuX19zdGF0ZU1ldGFkYXRhID0ge307XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGFyZ2V0Ll9fc3RhdGVNZXRhZGF0YVtuYW1lXSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEdlbkVycm9yKFwiRHVwbGljYXRlIHN0YXRlIGlkZW50aWZpZXIgJ1wiICsgbmFtZSArIFwiJyBvbiBzdGF0ZWZ1bCBjb21wb25lbnQgJ1wiICsgdGFyZ2V0ICsgXCInLlwiKTtcbiAgICAgICAgfVxuICAgICAgICB0YXJnZXQuX19zdGF0ZU1ldGFkYXRhW25hbWVdID0gbmV3IFN0YXRlSXRlbU1ldGFkYXRhKHByb3BlcnR5S2V5LCBzaGFyZWQpO1xuICAgIH07XG59XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyBiZWluZyBwYXJ0IG9mIHRoZSBjb21wb25lbnQncyBzdGF0ZSwgd2hpY2ggcmVmZXJlbmNlc1xuICogYSBzaGFyZWQgc3RvcmUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgT3B0aW9uYWwgc3RhdGUgbmFtZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hhcmVkU3RhdGUobmFtZT86IHN0cmluZykge1xuICAgIHJldHVybiBzdGF0ZShuYW1lLCB0cnVlKTtcbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb3JlL2NvbXBvbmVudHMvc3RhdGVmdWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMEJBQTRCO0FBQzVCLGlDQUFtQztBQUVuQywrQkFBc0Y7QUFHdEYseUNBQXlDO0FBRXpDO0lBQ0ksMkJBQW1CLFlBQW9CLEVBQVMsTUFBZTtRQUE1QyxpQkFBWSxHQUFaLFlBQVksQ0FBUTtRQUFTLFdBQU0sR0FBTixNQUFNLENBQVM7SUFDL0QsQ0FBQztJQUVNLHNEQUEwQixHQUFqQztRQUNJLE1BQU0sQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQ25ELENBQUM7SUFDTCx3QkFBQztBQUFELENBUEEsQUFPQyxJQUFBO0FBUFksOENBQWlCO0FBaUI5Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVERztBQU9IO0lBQW9ELHlDQUFhO0lBb0I3RCxZQUFZO0lBQ1osK0JBQVksTUFBc0IsRUFBRSxZQUEwQjtRQUE5RCxZQUNJLGtCQUFNLE1BQU0sQ0FBQyxTQUloQjtRQW5CRCw4QkFBOEI7UUFDdEIsYUFBTyxHQUEwQixJQUFJLENBQUM7UUFDOUMsd0NBQXdDO1FBQ2hDLGVBQVMsR0FBNEIsRUFBRSxDQUFDO1FBS2hELDRDQUE0QztRQUNwQyxtQ0FBNkIsR0FBa0MsRUFBRSxDQUFDO1FBQzFFLG1DQUFtQztRQUMzQiwrQkFBeUIsR0FBbUIsRUFBRSxDQUFDO1FBTW5ELEtBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO1FBQ2xDLEtBQUksQ0FBQyxtQkFBbUIsR0FBRyxZQUFZLENBQUMsa0JBQWtCLENBQUM7O0lBQy9ELENBQUM7OEJBMUJpQixxQkFBcUI7SUE0QmhDLCtDQUFlLEdBQXRCO1FBQUEsaUJBa0NDO1FBakNHLGlCQUFNLGVBQWUsV0FBRSxDQUFDO1FBRXhCLG1FQUFtRTtRQUNuRSxFQUFFLENBQUMsQ0FBQyxDQUFD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MUIsTUFBTSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDaEMsQ0FBQztRQUVELEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9CLE1BQU0sSUFBSSxnQkFBUSxDQUFDLDhCQUE4QixHQUFHLElBQUksR0FBRywyQkFBMkIsR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDNUcsQ0FBQztRQUNELE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDOUUsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQWpCRCxzQkFpQkM7QUFFRDs7Ozs7R0FLRztBQUNILHFCQUE0QixJQUFhO0lBQ3JDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFGRCxrQ0FFQyIsImZpbGUiOiJjb3JlL2NvbXBvbmVudHMvc3RhdGVmdWwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgKiBhcyBhbmd1bGFyIGZyb20gJ2FuZ3VsYXInO1xuXG5pbXBvcnQge0NvbXBvbmVudEJhc2UsIGNvbXBvbmVudCwgQ29tcG9uZW50Q29uZmlndXJhdGlvbiwgU3Vic2NyaXB0aW9ufSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHtTaGFyZWRTdG9yZSwgU2hhcmVkU3RvcmVNYW5hZ2VyfSBmcm9tICcuLi9zaGFyZWRfc3RvcmUvaW5kZXgnO1xuaW1wb3J0IHtTdGF0ZU1hbmFnZXJ9IGZyb20gJy4vbWFuYWdlcic7XG5pbXBvcnQge0dlbkVycm9yfSBmcm9tICcuLi9lcnJvcnMvZXJyb3InO1xuXG5leHBvcnQgY2xhc3MgU3RhdGVJdGVtTWV0YWRhdGEge1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBwcm9wZXJ0eU5hbWU6IHN0cmluZywgcHVibGljIHNoYXJlZDogYm9vbGVhbikge1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTaGFyZWRTdG9yZU5hbWVQcm9wZXJ0eSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ19zaGFyZWRTdG9yZU5hbWVfJyArIHRoaXMucHJvcGVydHlOYW1lO1xuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGF0ZU1ldGFkYXRhIHtcbiAgICBbaW5kZXg6IHN0cmluZ106IFN0YXRlSXRlbU1ldGFkYXRhO1xufVxuXG5pbnRlcmZhY2UgU2hhcmVkU3RvcmVTdWJzY3JpYmVSZXF1ZXN0IHtcbiAgICAoKTogdm9pZDtcbn1cblxuLyoqXG4gKiBBIGNvbXBvbmVudCB3aGljaCBjb250YWlucyBzdGF0ZSB0aGF0IG1heSBiZSBzYXZlZCBhbmQgcmVsb2FkZWQgbGF0ZXIuIFN1Y2hcbiAqIHN0YXRlZnVsIGNvbXBvbmVudHMgYXJlIGF1dG9tYXRpY2FsbHkgb3JnYW5pemVkIGludG8gYSBoaWVyYXJjaHksIHNvIHRoYXRcbiAqIHBhcmVudHMgYWxzbyBzdG9yZSBzdGF0ZSBmb3IgYWxsIHRoZWlyIGNoaWxkcmVuLiBDYWxsaW5nIGBzYXZlU3RhdGVgIG9uIHRoZVxuICogdG9wLWxldmVsIGNvbXBvbmVudCB3aWxsIHRoZXJlZm9yZSBzYXZlIHRoZSBzdGF0ZSBvZiB0aGUgY29tcGxldGUgYXBwbGljYXRpb24uXG4gKlxuICogQ29tcG9uZW50IHN0YXRlIGlzIGRlZmluZWQgYnkgdXNpbmcgcHJvcGVydHkgZGVjb3JhdG9ycyBhcyBmb2xsb3dzOlxuICogYGBgXG4gKiBleHBvcnQgY2xhc3MgUHJvY2Vzc0dyb3VwcyBleHRlbmRzIFZpZXdDb21wb25lbnQge1xuICogICAgIEBzdGF0ZSgpIHB1YmxpYyBzZWxlY3RlZEdyb3VwOiBudW1iZXI7XG4gKlxuICogICAgIC8vIC4uLlxuICogfVxuICogYGBgXG4gKlxuICogSXQgbWF5IGJlIHRoZW4gcmVmZXJlbmNlZCBhbmQgd2F0Y2hlZCBmcm9tIHRoZSBjb250cm9sbGVyIG9yIHRlbXBsYXRlcyBhbmRcbiAqIHdpbGwgYXV0b21hdGljYWxseSBiZSBzYXZlZCB3aGVuIGNhbGxpbmcgW1tTdGF0ZWZ1bENvbXBvbmVudEJhc2Uuc2F2ZVN0YXRlXV1cbiAqIGFuZCByZWxvYWRlZCB3aGVuIGNhbGxpbmcgW1tTdGF0ZWZ1bENvbXBvbmVudEJhc2UubG9hZFN0YXRlXV0uXG4gKlxuICogQSByZWxhdGVkIGRlY29yYXRvciBtYXkgYmUgdXNlZCB0byBkZWNsYXJlIHN0YXRlLCB3aGljaCBpcyBzaGFyZWQgYmV0d2VlblxuICogbXVsdGlwbGUgY29tcG9uZW50czpcbiAqIGBgYFxuICogZXhwb3J0IGNsYXNzIFdpZGdldFJvc2UyIGV4dGVuZHMgV2lkZ2V0QmFzZSB7XG4gKiAgICAgQHNoYXJlZFN0YXRlKCkgcHVibGljIHNlbGVjdGVkVmFsdWU6IFNoYXJlZFN0b3JlPHR5cGVzLkRhdGE+O1xuICpcbiAqICAgICAvLyAuLi5cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFNlZSBbW1NoYXJlZFN0b3JlTWFuYWdlcl1dIGFuZCBbW1NoYXJlZFN0b3JlXV0gZm9yIG1vcmUgZG9jdW1lbnRhdGlvbiBvblxuICogZGVmaW5pbmcgc2hhcmVkIHN0YXRlIHVzaW5nIHNoYXJlZCBzdG9yZXMuXG4gKlxuICogRm9yIGV4YW1wbGUsIGlmIGEgc3RhdGVmdWwgY29tcG9uZW50IGRlZmluZXMgYSBzaGFyZWQgc3RhdGUgcHJvcGVydHkgY2FsbGVkXG4gKiBgc2VsZWN0ZWRWYWx1ZWAgKGFzIHNob3duIGFib3ZlKSBhbmQgeW91IHdhbnQgdG8gbGluayBpdCB3aXRoIHRoZSBzaGFyZWQgc3RvcmVcbiAqIG5hbWVkIGByb3NlMi1zZWxlY3RlZC1kYXRhLWl0ZW1gLCB5b3UgY2FuIGRvIHRoZSBmb2xsb3dpbmcgaW4geW91ciB0ZW1wbGF0ZTpcbiAqIGBgYGh0bWxcbiAqIDxnZW4td2lkZ2V0LXJvc2UyIHN0b3JlLXNlbGVjdGVkLXZhbHVlPVwicm9zZTItc2VsZWN0ZWQtZGF0YS1pdGVtXCI+PC9nZW4td2lkZ2V0LXJvc2UyPlxuICogYGBgXG4gKlxuICogTm90ZSB0aGF0IHRoZSB0ZW1wbGF0ZSBhdHRyaWJ1dGUgbmFtZSBpcyBwcmVmaXhlZCB3aXRoIGBzdG9yZWAgZXZlbiB3aGVuIHRoZVxuICogcHJvcGVydHkgaXMgY2FsbGVkIGp1c3QgYHNlbGVjdGVkVmFsdWVgLiBUaGlzIGlzIGRvbmUgYmVjYXVzZSB3aGF0IHlvdSBwYXNzXG4gKiBpbiB0aGUgdGVtcGxhdGUgaXMganVzdCBhIG5hbWUgb2YgdGhlIHN0b3JlLCB3aGljaCBtdXN0IGJlIHJlc29sdmVkIHVzaW5nIHRoZVxuICogc2hhcmVkIHN0b3JlIG1hbmFnZXIuXG4gKlxuICogSW5zaWRlIHRoZSBjb21wb25lbnRzIHlvdSBjYW4gdGhlbiBkaXNwYXRjaCBhbmQgc3Vic2NyaWJlIHRvIHRoZSB1bmRlcmx5aW5nXG4gKiBzdG9yZTpcbiAqIGBgYFxuICogLy8gUHVibGlzaCBzb21ldGhpbmcgYnkgZGlzcGF0Y2hpbmcgYW4gYWN0aW9uIHRvIHRoZSBzaGFyZWQgc3RvcmUuXG4gKiB0aGlzLnNlbGVjdGVkVmFsdWUuZGlzcGF0Y2goe3R5cGU6IEFjdGlvbnMuU0VULCB2YWx1ZTogNDJ9KTtcbiAqXG4gKiAvLyBTdWJzY3JpYmUgdG8gdXBkYXRlcyBvZiB0aGUgc2hhcmVkIHN0b3JlLlxuICogdGhpcy5zdWJzY3JpYmVTaGFyZWRTdGF0ZSgnc2VsZWN0ZWRWYWx1ZScsIChkYXRhKSA9PiB7XG4gKiAgICAgY29uc29sZS5sb2coXCJTaGFyZWQgc3RhdGUgJ3NlbGVjdGVkVmFsdWUnIGlzIG5vd1wiLCBkYXRhKTtcbiAqIH0pO1xuICogYGBgXG4gKi9cbkBjb21wb25lbnQoe1xuICAgIGFic3RyYWN0OiB0cnVlLFxuICAgIGJpbmRpbmdzOiB7XG4gICAgICAgIHN0YXRlSWQ6ICdAc3RhdGVJZCcsXG4gICAgfSxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU3RhdGVmdWxDb21wb25lbnRCYXNlIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7XG4gICAgLy8vIE1ldGFkYXRhIGFib3V0IHRoZSBzdGF0ZSBkZWZpbmVkIG9uIHRoZSBjb21wb25lbnQuXG4gICAgcHVibGljIF9fc3RhdGVNZXRhZGF0YTogU3RhdGVNZXRhZGF0YTtcbiAgICAvLy8gVGhpcyBjb21wb25lbnQncyBsb2NhbCBzdGF0ZSBpZGVudGlmaWVyLlxuICAgIHB1YmxpYyBzdGF0ZUlkOiBzdHJpbmc7XG4gICAgLy8vIFRoaXMgY29tcG9uZW50J3MgZ2xvYmFsIHN0YXRlIGlkZW50aWZpZXIuXG4gICAgcHVibGljIGdsb2JhbFN0YXRlSWQ6IHN0cmluZztcbiAgICAvLy8gUGFyZW50IHN0YXRlZnVsIGNvbXBvbmVudC5cbiAgICBwcml2YXRlIF9wYXJlbnQ6IFN0YXRlZnVsQ29tcG9uZW50QmFzZSA9IG51bGw7XG4gICAgLy8vIEEgbGlzdCBvZiBjaGlsZCBzdGF0ZWZ1bCBjb21wb25lbnRzLlxuICAgIHByaXZhdGUgX2NoaWxkcmVuOiBTdGF0ZWZ1bENvbXBvbmVudEJhc2VbXSA9IFtdO1xuICAgIC8vLyBTdGF0ZSBtYW5hZ2VyLlxuICAgIHByaXZhdGUgX3N0YXRlTWFuYWdlcjogU3RhdGVNYW5hZ2VyO1xuICAgIC8vLyBTaGFyZWQgc3RvcmUgbWFuYWdlci5cbiAgICBwcml2YXRlIF9zaGFyZWRTdG9yZU1hbmFnZXI6IFNoYXJlZFN0b3JlTWFuYWdlcjtcbiAgICAvLy8gU3Vic2NyaXB0aW9uIHJlcXVlc3RzIGZvciBzaGFyZWQgc3RvcmVzLlxuICAgIHByaXZhdGUgX3NoYXJlZFN0b3JlU3Vic2NyaWJlUmVxdWVzdHM6IFNoYXJlZFN0b3JlU3Vic2NyaWJlUmVxdWVzdFtdID0gW107XG4gICAgLy8vIFN1YnNjcmlwdGlvbnMgdG8gc2hhcmVkIHN0b3Jlcy5cbiAgICBwcml2YXRlIF9zaGFyZWRTdG9yZVN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgICAvLyBAbmdJbmplY3RcbiAgICBjb25zdHJ1Y3Rvcigkc2NvcGU6IGFuZ3VsYXIuSVNjb3BlLCBzdGF0ZU1hbmFnZXI6IFN0YXRlTWFuYWdlcikge1xuICAgICAgICBzdXBlcigkc2NvcGUpO1xuXG4gICAgICAgIHRoaXMuX3N0YXRlTWFuYWdlciA9IHN0YXRlTWFuYWdlcjtcbiAgICAgICAgdGhpcy5fc2hhcmVkU3RvcmVNYW5hZ2VyID0gc3RhdGVNYW5hZ2VyLnNoYXJlZFN0b3JlTWFuYWdlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Db21wb25lbnRJbml0KCkge1xuICAgICAgICBzdXBlci5vbkNvbXBvbmVudEluaXQoKTtcblxuICAgICAgICAvLyBXaGVuIHN0YXRlIGlkZW50aWZpZXIgaXMgbm90IGRlZmluZWQsIGRlZmF1bHQgdG8gZGlyZWN0aXZlIG5hbWUuXG4gICAgICAgIGlmIChfLmlzRW1wdHkodGhpcy5zdGF0ZUlkKSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUlkID0gdGhpcy5nZXRDb25maWcoKS5kaXJlY3RpdmU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZXRlcm1pbmUgb3VyIHBhcmVudCBhbmQgcmVnaXN0ZXIgb3Vyc2VsdmVzIHdpdGggaXQuXG4gICAgICAgIHRoaXMuX3BhcmVudCA9IHRoaXMuX2ZpbmRQYXJlbnRDb21wb25lbnQoKTtcbiAgICAgICAgaWYgKHRoaXMuX3BhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5fcGFyZW50Ll9yZWdpc3RlckNoaWxkKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5nbG9iYWxTdGF0ZUlkID0gdGhpcy5fcGFyZW50Lmdsb2JhbFN0YXRlSWQgKyAnLScgKyB0aGlzLnN0YXRlSWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZU1hbmFnZXIuYWRkVG9wTGV2ZWxDb21wb25lbnQodGhpcyk7XG4gICAgICAgICAgICB0aGlzLmdsb2JhbFN0YXRlSWQgPSB0aGlzLnN0YXRlSWQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBhbnkgcGVuZGluZyBzdGF0ZSBmb3IgdXMuXG4gICAgICAgIHRoaXMuX3N0YXRlTWFuYWdlci5sb2FkUGVuZGluZ0NvbXBvbmVudFN0YXRlKHRoaXMpO1xuXG4gICAgICAgIC8vIEF1dG9tYXRpY2FsbHkgbG9hZCBhbnkgY29uZmlndXJlZCBzaGFyZWQgc3RhdGUuXG4gICAgICAgIGNvbnN0IHN0YXRlTWV0YWRhdGEgPSB0aGlzLl9fc3RhdGVNZXRhZGF0YTtcbiAgICAgICAgXy5mb3JPd24oc3RhdGVNZXRhZGF0YSwgKG1ldGFkYXRhKSA9PiB7XG4gICAgICAgICAgICBpZiAobWV0YWRhdGEuc2hhcmVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2hhcmVkU3RvcmVOYW1lID0gdGhpc1ttZXRhZGF0YS5nZXRTaGFyZWRTdG9yZU5hbWVQcm9wZXJ0eSgpXTtcbiAgICAgICAgICAgICAgICBpZiAoIV8uaXNFbXB0eShzaGFyZWRTdG9yZU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0b3JlID0gdGhpcy5fc2hhcmVkU3RvcmVNYW5hZ2VyLmdldFN0b3JlKHNoYXJlZFN0b3JlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXNbbWV0YWRhdGEucHJvcGVydHlOYW1lXSA9IHN0b3JlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX3NldHVwU2hhcmVkU3RvcmUobWV0YWRhdGEucHJvcGVydHlOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB1cCB0aGUgc2hhcmVkIHN0b3JlLiBUaGlzIG1ldGhvZCBtYXkgYmUgb3ZlcnJpZGVuIGJ5IHN1YmNsYXNzZXMgd2hlbiBzb21ldGhpbmdcbiAgICAgKiBkaWZmZXJlbnQgc2hvdWxkIGJlIGRvbmUgaGVyZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RvcmV9IFNoYXJlZCBzdGF0ZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfc2V0dXBTaGFyZWRTdG9yZShzdG9yZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIC8vIFN1YnNjcmliZSB0byBzaGFyZWQgc3RvcmUsIHNvIHRoYXQgdGhpcyBjb21wb25lbnQncyBzY29wZSBnZXRzIHVwZGF0ZWQgd2hlbiB0aGVcbiAgICAgICAgLy8gdmFsdWUgaW4gdGhlIHN0b3JlIGlzIHVwZGF0ZWQuXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlU2hhcmVkU3RhdGUoc3RvcmUsIF8ubm9vcCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgc3RhdGUgbWFuYWdlci5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHN0YXRlTWFuYWdlcigpOiBTdGF0ZU1hbmFnZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RhdGVNYW5hZ2VyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHNoYXJlZCBzdG9yZSBtYW5hZ2VyLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXQgc2hhcmVkU3RvcmVNYW5hZ2VyKCk6IFNoYXJlZFN0b3JlTWFuYWdlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaGFyZWRTdG9yZU1hbmFnZXI7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ29tcG9uZW50RGVzdHJveWVkKCk6IHZvaWQge1xuICAgICAgICAvLyBTYXZlIGN1cnJlbnQgY29tcG9uZW50IHN0YXRlLCBzbyBpdCB3aWxsIGJlIGF2YWlsYWJsZSB3aGVuIHRoaXMgY29tcG9uZW50XG4gICAgICAgIC8vIGlzIGluc3RhbnRpYXRlZCBhZ2Fpbi5cbiAgICAgICAgdGhpcy5fc3RhdGVNYW5hZ2VyLnNhdmVQZW5kaW5nQ29tcG9uZW50U3RhdGUodGhpcyk7XG5cbiAgICAgICAgaWYgKHRoaXMuX3BhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5fcGFyZW50Ll91bnJlZ2lzdGVyQ2hpbGQodGhpcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZU1hbmFnZXIucmVtb3ZlVG9wTGV2ZWxDb21wb25lbnQodGhpcyk7XG4gICAgICAgIH1cblxuICAgICAgICBzdXBlci5vbkNvbXBvbmVudERlc3Ryb3llZCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGFmdGVyIHRoZSBjb21wb25lbnQncyBzdGF0ZSBoYXMgYmVlbiBsb2FkZWQuXG4gICAgICovXG4gICAgcHVibGljIG9uQ29tcG9uZW50U3RhdGVBZnRlckxvYWQoKTogdm9pZCB7XG4gICAgICAgIC8vIERvIG5vdGhpbmcgYnkgZGVmYXVsdC5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBiZWVuIHNhdmVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBvbkNvbXBvbmVudFN0YXRlUHJlU2F2ZSgpOiB2b2lkIHtcbiAgICAgICAgLy8gRG8gbm90aGluZyBieSBkZWZhdWx0LlxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc2NvdmVycyB0aGUgcGFyZW50IHN0YXRlZnVsIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9maW5kUGFyZW50Q29tcG9uZW50KCk6IFN0YXRlZnVsQ29tcG9uZW50QmFzZSB7XG4gICAgICAgIGxldCBzY29wZSA9IHRoaXMuJHNjb3BlLiRwYXJlbnQ7XG4gICAgICAgIHdoaWxlIChzY29wZSkge1xuICAgICAgICAgICAgaWYgKHNjb3BlWydjdHJsJ10gaW5zdGFuY2VvZiBTdGF0ZWZ1bENvbXBvbmVudEJhc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2NvcGVbJ2N0cmwnXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2NvcGUgPSBzY29wZS4kcGFyZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXJzIGEgbmV3IGNoaWxkIG9mIHRoaXMgc3RhdGVmdWwgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtTdGF0ZWZ1bENvbXBvbmVudEJhc2V9IGNoaWxkIENoaWxkIGNvbXBvbmVudCBpbnN0YW5jZVxuICAgICAqL1xuICAgIHByaXZhdGUgX3JlZ2lzdGVyQ2hpbGQoY2hpbGQ6IFN0YXRlZnVsQ29tcG9uZW50QmFzZSkge1xuICAgICAgICAvLyBFbnN1cmUgdGhlIGNoaWxkJ3MgbG9jYWwgc3RhdGUgaWQgaXMgdW5pcXVlLlxuICAgICAgICBpZiAoXy5hbnkodGhpcy5fY2hpbGRyZW4sIChjKSA9PiBjLnN0YXRlSWQgPT09IGNoaWxkLnN0YXRlSWQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgR2VuRXJyb3IoXCJEdXBsaWNhdGUgc3RhdGVmdWwgY29tcG9uZW50IHN0YXRlIGlkZW50aWZpZXIgJ1wiICsgY2hpbGQuc3RhdGVJZCArIFwiJy5cIik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVbnJlZ2lzdGVycyBhbiBleGlzdGluZyBjaGlsZCBvZiB0aGlzIHN0YXRlZnVsIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7U3RhdGVmdWxDb21wb25lbnRCYXNlfSBjaGlsZCBDaGlsZCBjb21wb25lbnQgaW5zdGFuY2VcbiAgICAgKi9cbiAgICBwcml2YXRlIF91bnJlZ2lzdGVyQ2hpbGQoY2hpbGQ6IFN0YXRlZnVsQ29tcG9uZW50QmFzZSkge1xuICAgICAgICB0aGlzLl9jaGlsZHJlbiA9IF8ud2l0aG91dCh0aGlzLl9jaGlsZHJlbiwgY2hpbGQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHBhcmVudCBzdGF0ZWZ1bCBjb21wb25lbnQuXG4gICAgICovXG4gICAgcHVibGljIHBhcmVudENvbXBvbmVudCgpOiBTdGF0ZWZ1bENvbXBvbmVudEJhc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBsaXN0IG9mIGNoaWxkIHN0YXRlZnVsIGNvbXBvbmVudHMuXG4gICAgICovXG4gICAgcHVibGljIGNoaWxkQ29tcG9uZW50cygpOiBTdGF0ZWZ1bENvbXBvbmVudEJhc2VbXSB7XG4gICAgICAgIHJldHVybiBfLmNsb25lKHRoaXMuX2NoaWxkcmVuKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5kcyBhIGNoaWxkIGNvbXBvbmVudCBieSBpdHMgc3RhdGUgaWRlbnRpZmllci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0ZUlkIENoaWxkJ3Mgc3RhdGUgaWRlbnRpZmllclxuICAgICAqIEByZXR1cm4ge1N0YXRlZnVsQ29tcG9uZW50QmFzZX0gQ2hpbGQgY29tcG9uZW50IGluc3RhbmNlXG4gICAgICovXG4gICAgcHVibGljIGdldENoaWxkQ29tcG9uZW50PFQgZXh0ZW5kcyBTdGF0ZWZ1bENvbXBvbmVudEJhc2U+KHN0YXRlSWQ6IHN0cmluZyk6IFQge1xuICAgICAgICByZXR1cm4gPFQ+IF8uZmluZCh0aGlzLl9jaGlsZHJlbiwgKGNoaWxkKSA9PiBjaGlsZC5zdGF0ZUlkID09PSBzdGF0ZUlkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdWJzY3JpYmVzIHRvIHNoYXJlZCBzdGF0ZS4gVGhpcyBpcyB0aGUgc2FtZSBhcyBhIG5vcm1hbCBzdWJzY3JpYmUsIGJ1dCBpblxuICAgICAqIGFkZGl0aW9uIGl0IGFsc28gcHJvcGVybHkgaGFuZGxlcyB1bmRlcmx5aW5nIGRhdGEgc3RvcmUgY2hhbmdlcyB3aGVuXG4gICAgICogY29tcG9uZW50IHN0YXRlIGlzIHJlbG9hZGVkLlxuICAgICAqXG4gICAgICogVGhlIHZhbHVlIG9ic2VydmVkIGZyb20gdGhlIHNoYXJlZCBzdG9yZSBNVVNUIE5PVCBiZSBtdXRhdGVkIGluIGFueSB3YXkgYXNcbiAgICAgKiBkb2luZyBzbyBtYXkgY2F1c2UgdW5kZWZpbmVkIGJlaGF2aW9yLiBJZiB5b3UgbmVlZCB0byBtdXRhdGUgdGhlIG9ic2VydmVkXG4gICAgICogdmFsdWUsIHVzZSBbW3N1YnNjcmliZVNoYXJlZFN0YXRlTXV0YWJsZV1dIGluc3RlYWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHNoYXJlZCBzdGF0ZVxuICAgICAqIEBwYXJhbSBjYWxsYmFjayBDYWxsYmFjayB0byBiZSBpbnZva2VkIG9uIHN1YnNjcmlwdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBzdWJzY3JpYmVTaGFyZWRTdGF0ZShuYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAodmFsdWU6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdG9yZU1ldGFkYXRhID0gdGhpcy5fZ2V0U3RhdGVNZXRhZGF0YShuYW1lKTtcbiAgICAgICAgaWYgKCFzdG9yZU1ldGFkYXRhIHx8ICFzdG9yZU1ldGFkYXRhLnNoYXJlZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEdlbkVycm9yKFwiU2hhcmVkIHN0YXRlICdcIiArIG5hbWUgKyBcIicgbm90IGZvdW5kLlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN1YnNjcmliZXIgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdG9yZTogU2hhcmVkU3RvcmU8YW55LCBhbnk+ID0gdGhpc1tzdG9yZU1ldGFkYXRhLnByb3BlcnR5TmFtZV07XG4gICAgICAgICAgICBpZiAoIXN0b3JlKSB7XG4gICAgICAgICAgICAgICAgLy8gQGlmbmRlZiBHRU5KU19QUk9EVUNUSU9OXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBHZW5FcnJvcihgSWdub3JlZCBtaXNzaW5nIHN0b3JlOiAke3N0b3JlTWV0YWRhdGEucHJvcGVydHlOYW1lfSAke3RoaXMuZ2xvYmFsU3RhdGVJZH1gKTtcbiAgICAgICAgICAgICAgICAvLyBAZW5kaWZcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghc3RvcmUpIHJldHVybjtcbiAgICAgICAgICAgIHRoaXMuX3NoYXJlZFN0b3JlU3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuc3Vic2NyaWJlKGNhbGxiYWNrLCBzdG9yZS5vYnNlcnZhYmxlKCkpKTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLl9zaGFyZWRTdG9yZVN1YnNjcmliZVJlcXVlc3RzLnB1c2goc3Vic2NyaWJlcik7XG4gICAgICAgIHN1YnNjcmliZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHZlcnNpb24gb2YgW1tzdWJzY3JpYmVTaGFyZWRTdGF0ZV1dLCB3aGljaCBlbnN1cmVzIHRoYXQgdGhlIG9ic2VydmVkIHNoYXJlZFxuICAgICAqIHN0b3JlIHZhbHVlIGlzIGNvcGllZCBhbmQgY2FuIHRodXMgYmUgc2FmZWx5IG11dGF0ZWQgYWZ0ZXJ3YXJkcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2Ygc2hhcmVkIHN0YXRlXG4gICAgICogQHBhcmFtIGNhbGxiYWNrIENhbGxiYWNrIHRvIGJlIGludm9rZWQgb24gc3Vic2NyaXB0aW9uXG4gICAgICovXG4gICAgcHVibGljIHN1YnNjcmliZVNoYXJlZFN0YXRlTXV0YWJsZTxUPihuYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAodmFsdWU6IFQpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVTaGFyZWRTdGF0ZShuYW1lLCAodmFsdWUpID0+IGNhbGxiYWNrKGFuZ3VsYXIuY29weSh2YWx1ZSkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIG1ldGFkYXRhIGZvciBzcGVjaWZpYyBjb21wb25lbnQgc3RhdGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHNoYXJlZCBzdGF0ZSAobm90IHByb3BlcnR5IG5hbWUpXG4gICAgICogQHJldHVybiB7U3RhdGVJdGVtTWV0YWRhdGF9IFN0YXRlIG1ldGFkYXRhXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0U3RhdGVNZXRhZGF0YShuYW1lOiBzdHJpbmcpOiBTdGF0ZUl0ZW1NZXRhZGF0YSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9fc3RhdGVNZXRhZGF0YVtuYW1lXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTYXZlcyB0aGlzIGNvbXBvbmVudCdzIGN1cnJlbnQgc3RhdGUgYW5kIHJldHVybnMgaXQuXG4gICAgICovXG4gICAgcHVibGljIHNhdmVTdGF0ZShzYXZlQ2hpbGRyZW46IGJvb2xlYW4gPSB0cnVlKTogYW55IHtcbiAgICAgICAgdGhpcy5vbkNvbXBvbmVudFN0YXRlUHJlU2F2ZSgpO1xuXG4gICAgICAgIGxldCByZXN1bHQgPSB7fTtcbiAgICAgICAgbGV0IHN0YXRlID0gcmVzdWx0W3RoaXMuZ2xvYmFsU3RhdGVJZF0gPSB7fTtcbiAgICAgICAgXy5mb3JPd24odGhpcy5fX3N0YXRlTWV0YWRhdGEsIChtZXRhZGF0YSwga2V5KSA9PiB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzW21ldGFkYXRhLnByb3BlcnR5TmFtZV07XG5cbiAgICAgICAgICAgIGlmIChtZXRhZGF0YS5zaGFyZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBJbiBjYXNlIG9mIHNoYXJlZCBzdGF0ZSwgc2F2ZSB0aGUgaWRlbnRpZmllciBvZiB0aGUgc2hhcmVkIHN0b3JlLlxuICAgICAgICAgICAgICAgIHZhbHVlID0gKDxTaGFyZWRTdG9yZTxhbnksIGFueT4+IHZhbHVlKS5zdG9yZUlkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzdGF0ZVtrZXldID0gdmFsdWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNhdmUgY2hpbGQgc3RhdGUuXG4gICAgICAgIGlmIChzYXZlQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5fY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBfLmV4dGVuZChyZXN1bHQsIGNoaWxkLnNhdmVTdGF0ZSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTG9hZHMgdGhpcyBjb21wb25lbnQncyBjdXJyZW50IHN0YXRlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHthbnl9IGdsb2JhbFN0YXRlIEdsb2JhbCBzdGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBsb2FkU3RhdGUoZ2xvYmFsU3RhdGU6IGFueSwgbG9hZENoaWxkcmVuOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IGdsb2JhbFN0YXRlW3RoaXMuZ2xvYmFsU3RhdGVJZF07XG4gICAgICAgIGxldCBzaGFyZWRTdGF0ZUNoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgXy5mb3JPd24odGhpcy5fX3N0YXRlTWV0YWRhdGEsIChtZXRhZGF0YSwga2V5KSA9PiB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBzdGF0ZVtrZXldO1xuICAgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQodmFsdWUpKSByZXR1cm47XG5cbiAgICAgICAgICAgIGlmIChtZXRhZGF0YS5zaGFyZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIHNoYXJlZCBzdG9yZSBmcm9tIHRoZSBzaGFyZWQgc3RvcmUgbWFuYWdlci5cbiAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ1ZhbHVlOiBTaGFyZWRTdG9yZTxhbnksIGFueT4gPSB0aGlzW21ldGFkYXRhLnByb3BlcnR5TmFtZV07XG4gICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nVmFsdWUuc3RvcmVJZCAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpc1ttZXRhZGF0YS5wcm9wZXJ0eU5hbWVdID0gdGhpcy5fc2hhcmVkU3RvcmVNYW5hZ2VyLmdldFN0b3JlPGFueT4odmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBzaGFyZWRTdGF0ZUNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpc1ttZXRhZGF0YS5wcm9wZXJ0eU5hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIExvYWQgY2hpbGQgc3RhdGUuXG4gICAgICAgIGlmIChsb2FkQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5fY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBjaGlsZC5sb2FkU3RhdGUoZ2xvYmFsU3RhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNoYXJlZFN0YXRlQ2hhbmdlZCkge1xuICAgICAgICAgICAgLy8gQ2FuY2VsIGFueSBwcmV2aW91cyBzdWJzY3JpcHRpb25zIHRvIHNoYXJlZCBzdG9yZXMuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHN1YnNjcmlwdGlvbiBvZiB0aGlzLl9zaGFyZWRTdG9yZVN1YnNjcmlwdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUmVzdWJzY3JpYmUsIHVzaW5nIHRoZSBuZXcgc3RvcmVzLlxuICAgICAgICAgICAgZm9yIChjb25zdCByZXF1ZXN0IG9mIHRoaXMuX3NoYXJlZFN0b3JlU3Vic2NyaWJlUmVxdWVzdHMpIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9uQ29tcG9uZW50U3RhdGVBZnRlckxvYWQoKTtcblxuICAgICAgICAvLyBQcm9wYWdhdGUgc3RhdGUgdXBkYXRlcyB0byB0aGUgdmlldy5cbiAgICAgICAgdGhpcy4kc2NvcGUuJGFwcGx5QXN5bmMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNvbmZpZ3VyZUNvbXBvbmVudChjb25maWc6IENvbXBvbmVudENvbmZpZ3VyYXRpb24pOiBDb21wb25lbnRDb25maWd1cmF0aW9uIHtcbiAgICAgICAgY29uc3Qgc3RhdGVNZXRhZGF0YSA9IHRoaXMucHJvdG90eXBlLl9fc3RhdGVNZXRhZGF0YTtcbiAgICAgICAgaWYgKCFjb25maWcuYmluZGluZ3MpIGNvbmZpZy5iaW5kaW5ncyA9IHt9O1xuXG4gICAgICAgIF8uZm9yT3duKHN0YXRlTWV0YWRhdGEsIChtZXRhZGF0YSwga2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAobWV0YWRhdGEuc2hhcmVkKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnLmJpbmRpbmdzW21ldGFkYXRhLmdldFNoYXJlZFN0b3JlTmFtZVByb3BlcnR5KCldID0gJ0BzdG9yZScgKyBfLmNhcGl0YWxpemUoa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBjb25maWc7XG4gICAgfVxufVxuXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgYmVpbmcgcGFydCBvZiB0aGUgY29tcG9uZW50J3Mgc3RhdGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgT3B0aW9uYWwgc3RhdGUgbmFtZVxuICogQHBhcmFtIHtib29sZWFufSBzaGFyZWQgRG9lcyB0aGlzIHN0YXRlIHJlZmVyZW5jZSBhIHNoYXJlZCBzdG9yZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RhdGUobmFtZT86IHN0cmluZywgc2hhcmVkOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICByZXR1cm4gKHRhcmdldDogU3RhdGVmdWxDb21wb25lbnRCYXNlLCBwcm9wZXJ0eUtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmICghbmFtZSkgbmFtZSA9IHByb3BlcnR5S2V5O1xuXG4gICAgICAgIGlmIChuYW1lWzBdID09PSAnXycpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBHZW5FcnJvcihcIlN0YXRlIGlkZW50aWZpZXJzIHN0YXJ0aW5nIHdpdGggYW4gdW5kZXJzY29yZSBhcmUgcmVzZXJ2ZWQuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0YXJnZXQuX19zdGF0ZU1ldGFkYXRhKSB7XG4gICAgICAgICAgICB0YXJnZXQuX19zdGF0ZU1ldGFkYXRhID0ge307XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGFyZ2V0Ll9fc3RhdGVNZXRhZGF0YVtuYW1lXSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEdlbkVycm9yKFwiRHVwbGljYXRlIHN0YXRlIGlkZW50aWZpZXIgJ1wiICsgbmFtZSArIFwiJyBvbiBzdGF0ZWZ1bCBjb21wb25lbnQgJ1wiICsgdGFyZ2V0ICsgXCInLlwiKTtcbiAgICAgICAgfVxuICAgICAgICB0YXJnZXQuX19zdGF0ZU1ldGFkYXRhW25hbWVdID0gbmV3IFN0YXRlSXRlbU1ldGFkYXRhKHByb3BlcnR5S2V5LCBzaGFyZWQpO1xuICAgIH07XG59XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyBiZWluZyBwYXJ0IG9mIHRoZSBjb21wb25lbnQncyBzdGF0ZSwgd2hpY2ggcmVmZXJlbmNlc1xuICogYSBzaGFyZWQgc3RvcmUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgT3B0aW9uYWwgc3RhdGUgbmFtZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hhcmVkU3RhdGUobmFtZT86IHN0cmluZykge1xuICAgIHJldHVybiBzdGF0ZShuYW1lLCB0cnVlKTtcbn1cbiJdfQ== |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var _ = require("lodash"); | ||
/** | ||
@@ -12,2 +13,6 @@ * Makes an object deeply immutable by using Object.freeze. The passed object | ||
function makeImmutable(object) { | ||
if (_.isObject(object)) { | ||
_.each(object, function (property) { return makeImmutable(property); }); | ||
return Object.freeze(object); | ||
} | ||
return object; | ||
@@ -17,2 +22,2 @@ } | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb3JlL3V0aWxzL2ltbXV0YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBOzs7Ozs7O0dBT0c7QUFDSCx1QkFBaUMsTUFBUztJQUV0QyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ2xCLENBQUM7QUFIRCxzQ0FHQyIsImZpbGUiOiJjb3JlL3V0aWxzL2ltbXV0YWJsZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcblxuLyoqXG4gKiBNYWtlcyBhbiBvYmplY3QgZGVlcGx5IGltbXV0YWJsZSBieSB1c2luZyBPYmplY3QuZnJlZXplLiBUaGUgcGFzc2VkIG9iamVjdFxuICogd2lsbCBiZSBjaGFuZ2VkIHNvIHRoYXQgaXQgd2lsbCBub3cgYmUgaW1tdXRhYmxlIGFuZCB0aGUgc2FtZSBvYmplY3Qgd2lsbFxuICogYmUgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIHtUfSBvYmplY3QgVGhlIG9iamVjdCB0byBtYWtlIGltbXV0YWJsZVxuICogQHJldHVybiB7VH0gVGhlIHNhbWUgb2JqZWN0IHRoYXQgd2FzIHBhc3NlZCBhcyBhbiBhcmd1bWVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZUltbXV0YWJsZTxUPihvYmplY3Q6IFQpOiBUIHtcbiAgICAvLyBAaWZuZGVmIEdFTkpTX1BST0RVQ1RJT05cbiAgICBpZiAoXy5pc09iamVjdChvYmplY3QpKSB7XG4gICAgICAgIF8uZWFjaChvYmplY3QsIChwcm9wZXJ0eSkgPT4gbWFrZUltbXV0YWJsZShwcm9wZXJ0eSkpO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmZyZWV6ZShvYmplY3QpO1xuICAgIH1cbiAgICAvLyBAZW5kaWZcblxuICAgIHJldHVybiBvYmplY3Q7XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb3JlL3V0aWxzL2ltbXV0YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUE0QjtBQUU1Qjs7Ozs7OztHQU9HO0FBQ0gsdUJBQWlDLE1BQVM7SUFDdEMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBQyxRQUFRLElBQUssT0FBQSxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQXZCLENBQXVCLENBQUMsQ0FBQztRQUN0RCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNsQixDQUFDO0FBUEQsc0NBT0MiLCJmaWxlIjoiY29yZS91dGlscy9pbW11dGFibGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbi8qKlxuICogTWFrZXMgYW4gb2JqZWN0IGRlZXBseSBpbW11dGFibGUgYnkgdXNpbmcgT2JqZWN0LmZyZWV6ZS4gVGhlIHBhc3NlZCBvYmplY3RcbiAqIHdpbGwgYmUgY2hhbmdlZCBzbyB0aGF0IGl0IHdpbGwgbm93IGJlIGltbXV0YWJsZSBhbmQgdGhlIHNhbWUgb2JqZWN0IHdpbGxcbiAqIGJlIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSB7VH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbWFrZSBpbW11dGFibGVcbiAqIEByZXR1cm4ge1R9IFRoZSBzYW1lIG9iamVjdCB0aGF0IHdhcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VJbW11dGFibGU8VD4ob2JqZWN0OiBUKTogVCB7XG4gICAgLy8gQGlmbmRlZiBHRU5KU19QUk9EVUNUSU9OXG4gICAgaWYgKF8uaXNPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICBfLmVhY2gob2JqZWN0LCAocHJvcGVydHkpID0+IG1ha2VJbW11dGFibGUocHJvcGVydHkpKTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5mcmVlemUob2JqZWN0KTtcbiAgICB9XG4gICAgLy8gQGVuZGlmXG5cbiAgICByZXR1cm4gb2JqZWN0O1xufVxuIl19 |
@@ -147,2 +147,5 @@ "use strict"; | ||
mockApi = _api_; | ||
if (_.contains(tests.toString(), 'debugger') || _.contains(tests.toString(), ' fit(')) { | ||
provideRealDOM(); | ||
} | ||
})); | ||
@@ -179,2 +182,2 @@ afterEach(function () { | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFDO1lBRUQsTUFBTSxFQUFFO2dCQUNKLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNyQixDQUFDO1lBRUQsR0FBRyxFQUFFO2dCQUNELE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDbkIsQ0FBQztZQUVELEtBQUssRUFBRTtnQkFDSCxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQ2xCLENBQUM7WUFFRCxjQUFjLEVBQUUsY0FBYztTQUNqQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUE1R0QsOENBNEdDIiwiZmlsZSI6InRlc3RzL2NvbXBvbmVudC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCAqIGFzIGFuZ3VsYXIgZnJvbSAnYW5ndWxhcic7XG5pbXBvcnQgJ2FuZ3VsYXItbW9ja3MnO1xuXG5pbXBvcnQge1Jlc29sd2VBcGl9IGZyb20gJy4uL2FwaS9pbmRleCc7XG5pbXBvcnQge01vY2tCYXNlLCBNb2NrQXBpfSBmcm9tICcuLi9hcGkvbW9jayc7XG5pbXBvcnQge25nRXF1YWxNYXRjaGVyfSBmcm9tICcuL21hdGNoZXJzJztcbmltcG9ydCB7U2hhcmVkU3RvcmVGYWN0b3J5LCBTaGFyZWRTdG9yZVByb3ZpZGVyfSBmcm9tICcuLi9jb3JlL3NoYXJlZF9zdG9yZS9pbmRleCc7XG5pbXBvcnQge0dlbkVycm9yfSBmcm9tICcuLi9jb3JlL2Vycm9ycy9lcnJvcic7XG5pbXBvcnQge2NvbXBvc2V9IGZyb20gJy4uL2NvcmUvdXRpbHMvbGFuZyc7XG5pbXBvcnQge01vY2tBcGlTZXJ2aWNlfSBmcm9tICcuL21vY2snO1xuaW1wb3J0ICcuL21hdGNoZXJzJztcblxuLy8gU2VydmljZSBtb2R1bGVzIHRoYXQgc2hvdWxkIGJlIGxvYWRlZC5cbmltcG9ydCAnLi4vY29yZS9zaGFyZWRfc3RvcmUvaW5kZXgnO1xuaW1wb3J0ICcuLi9jb3JlL2NvbXBvbmVudHMvbWFuYWdlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RGVzY3JpcHRvcjxUPiB7XG4gICAgZWxlbWVudDogYW5ndWxhci5JQXVnbWVudGVkSlF1ZXJ5O1xuICAgIGN0cmw6IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVkU3RvcmVEZXNjcmlwdG9yIHtcbiAgICBzdG9yZUlkOiBzdHJpbmc7XG4gICAgaW5pdGlhbFN0YXRlPzogYW55O1xuICAgIGZhY3Rvcnk/OiBTaGFyZWRTdG9yZUZhY3Rvcnk8YW55LCBhbnk+O1xufVxuXG4vKipcbiAqIEhlbHBlciBmb3IgY3JlYXRpbmcgc2ltcGxlIHNoYXJlZCBzdG9yZXMgaW4gdGVzdHMuIEFsc28gc2VlXG4gKiBbW1NoYXJlZFN0b3JlUHJvdmlkZXIuY3JlYXRlXV0uXG4gKlxuICogQHBhcmFtIHN0b3JlSWQgSWRlbnRpZmllciBvZiB0aGUgc2hhcmVkIHN0b3JlIChtdXN0IGJlIGdsb2JhbGx5IHVuaXF1ZSlcbiAqIEBwYXJhbSBpbml0aWFsU3RhdGUgT3B0aW9uYWwgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgc2hhcmVkIHN0b3JlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTaGFyZWRTdG9yZShzdG9yZUlkOiBzdHJpbmcsIGluaXRpYWxTdGF0ZTogYW55ID0gbnVsbCk6IFNoYXJlZFN0b3JlRGVzY3JpcHRvciB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc3RvcmVJZCxcbiAgICAgICAgaW5pdGlhbFN0YXRlLFxuICAgIH07XG59XG5cbi8qKlxuICogSGVscGVyIGZvciB1c2luZyBzaGFyZWQgc3RvcmVzIGluIHRlc3RzLlxuICpcbiAqIEBwYXJhbSBzdG9yZUlkIElkZW50aWZpZXIgb2YgdGhlIHNoYXJlZCBzdG9yZSAobXVzdCBiZSBnbG9iYWxseSB1bmlxdWUpXG4gKiBAcGFyYW0gZmFjdG9yeSBTaGFyZWQgc3RvcmUgY2xhc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVNoYXJlZFN0b3JlKHN0b3JlSWQ6IHN0cmluZywgZmFjdG9yeTogU2hhcmVkU3RvcmVGYWN0b3J5PGFueSwgYW55Pik6IFNoYXJlZFN0b3JlRGVzY3JpcHRvciB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc3RvcmVJZCxcbiAgICAgICAgZmFjdG9yeSxcbiAgICB9O1xufVxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB3aGVuIHVuaXQgdGVzdGluZyBjb21wb25lbnRzIHdoaWNoIGNvbXBpbGVzIGEgY29tcG9uZW50LlxuICpcbiAqIEBwYXJhbSAkY29tcGlsZSBDb21waWxlIHNlcnZpY2VcbiAqIEBwYXJhbSAkc2NvcGUgU2NvcGUgc2VydmljZVxuICogQHBhcmFtIHRlbXBsYXRlIHRlbXBsYXRlIGluIHRoZSBmb3JtIG9mIGEgZGlyZWN0aXZlLCBlLmcuIGAnPGdlbi1zb21lLWNvbXBvbmVudD48Z2VuLXNvbWUtY29tcG9uZW50PidgXG4gKiBAcmV0dXJucyB7Q29tcG9uZW50RGVzY3JpcHRvcn0gRWxlbWVudCBhbmQgaXRzIGNvbnRyb2xsZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbXBvbmVudDxUPigkY29tcGlsZTogYW5ndWxhci5JQ29tcGlsZVNlcnZpY2UsICRzY29wZTogYW5ndWxhci5JU2NvcGUsIHRlbXBsYXRlOiBzdHJpbmcpOiBDb21wb25lbnREZXNjcmlwdG9yPFQ+IHtcblxuICAgIC8vIFRPRE86IGluc3RlYWQgb2YgaGF2aW5nIGdldENvbXBvbmVudDxUPiwgd2UgY291bGQgaGF2ZSBnZXRDb21wb25lbnQ8VCBleHRlbmRzIENvbXBvbmVudEJhc2U+IGFuZCB0aGVuIHlvdSB3b3VsZCBkb1xuICAgIC8vIFQuYXNWaWV3IHRodXMgcmVkdWNpbmcgdGhlIG5lZWQgZm9yIHRlbXBsYXRlIGFyZ3VtZW50LCBidXQgbG9va3MgbGlrZSB0eXBlc2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgdGhhdCAoeWV0KVxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvNTY3N1xuXG4gICAgY29uc3QgZWxlbWVudCA9ICRjb21waWxlKHRlbXBsYXRlKSgkc2NvcGUpO1xuICAgICRzY29wZS4kZGlnZXN0KCk7XG5cbiAgICBsZXQgY3RybDogVDtcbiAgICB0cnkge1xuICAgICAgICBjdHJsID0gJHNjb3BlWyckJGNoaWxkVGFpbCddLmN0cmw7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aHJvdyBuZXcgR2VuRXJyb3IoXCJVbmFibGUgdG8gZmV0Y2ggY29tcG9uZW50IGNvbnRyb2xsZXIuIERpZCB5b3UgbG9hZCB5b3VyIG1vZHVsZSBpbiB0ZXN0cz9cIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgZWxlbWVudDogZWxlbWVudCxcbiAgICAgICAgY3RybDogY3RybCxcbiAgICB9O1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBleHBvc2VkIHRvIHRlc3QgY2FzZSBmdW5jdGlvbnMsIHdoaWNoIGFyZSBjcmVhdGVkIHVzaW5nIFtbZGVzY3JpYmVDb21wb25lbnRdXS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRUZXN0ZXIge1xuICAgIC8vLyBBbmd1bGFyIG1vZHVsZSwgd2hpY2ggbWF5IGJlIHVzZWQgdG8gcmVnaXN0ZXIgdGVzdCBjb21wb25lbnRzIGluLlxuICAgIG1vZHVsZTogYW5ndWxhci5JTW9kdWxlO1xuXG4gICAgLyoqXG4gICAgICogU2VlIFtbZ2V0Q29tcG9uZW50XV0uXG4gICAgICovXG4gICAgY3JlYXRlQ29tcG9uZW50PFQ+KHRlbXBsYXRlOiBzdHJpbmcpOiBDb21wb25lbnREZXNjcmlwdG9yPFQ+O1xuXG4gICAgLyoqXG4gICAgICogUnVucyBhbiBBbmd1bGFyIGRpZ2VzdCBjeWNsZS5cbiAgICAgKi9cbiAgICBkaWdlc3QoKTogdm9pZDtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIG1vY2sgdmVyc2lvbiBvZiB0aGUgQVBJLCB3aGljaCBtYXkgYmUgdXNlZCB0byBzaW11bGF0ZSB0aGUgYmFja2VuZFxuICAgICAqIHdoZW4gdGVzdGluZyBjb21wb25lbnRzLiBUaGUgbW9jayBBUEkgaXMgYXV0b21hdGljYWxseSBpbmplY3RlZCBpbnRvIGNvbXBvbmVudHNcbiAgICAgKiBhbmQgcmVwbGFjZXMgdGhlIHVzdWFsIEFQSS5cbiAgICAgKi9cbiAgICBhcGkoKTogUmVzb2x3ZUFwaSAmIE1vY2tCYXNlICYgTW9ja0FwaVNlcnZpY2U7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBzY29wZS5cbiAgICAgKi9cbiAgICBzY29wZSgpOiBhbmd1bGFyLklTY29wZTtcblxuICAgIC8qKlxuICAgICAqIEVuc3VyZXMgdGhhdCB0aGUgdGVzdGVkIGNvbXBvbmVudHMgYXJlIGluc2VydGVkIGludG8gYW4gYWN0dWFsIERPTSwgc28gdGhpbmdzXG4gICAgICogbGlrZSBoZWlnaHQgY2FsY3VsYXRpb25zIHdvcmsgYXMgZXhwZWN0ZWQuIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgYmVmb3JlXG4gICAgICogYW55IFtbY3JlYXRlQ29tcG9uZW50XV0gY2FsbHMuXG4gICAgICovXG4gICAgcHJvdmlkZVJlYWxET00oKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb2NrQXBpRmFjdG9yeSB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IFJlc29sd2VBcGkgJiBNb2NrQmFzZTtcbn1cblxuLyoqXG4gKiBBIGhlbHBlciBmdW5jdGlvbiB0byBlYXNlIHRlc3Rpbmcgb2YgY29tcG9uZW50cy4gSXQgd2lsbCB0YWtlIGNhcmUgb2YgbW9ja2luZyB0aGVcbiAqIHVzdWFsIG1vZHVsZXMgbmVlZGVkIGZvciB0ZXN0aW5nIGNvbXBvbmVudHMgYW5kIHByZXBhcmluZyBhIG1vZHVsZSB0aGF0IHlvdSBjYW4gdXNlXG4gKiB0byByZWdpc3RlciB0ZXN0IGNvbXBvbmVudHMuXG4gKlxuICogVGhlIHRlc3QgY2FzZSBpcyBwYXNzZWQgYW4gaW5zdGFuY2Ugb2YgW1tDb21wb25lbnRUZXN0ZXJdXSwgd2hpY2ggY29udGFpbnMgc29tZVxuICogdXNlZnVsIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgZm9yIHRlc3RpbmcgY29tcG9uZW50cy5cbiAqXG4gKiBUaGUgZm9sbG93aW5nIG1vZHVsZXMgYXJlIGF1dG9tYXRpY2FsbHkgbG9hZGVkOlxuICogKiBgcmVzb2x3ZS5zZXJ2aWNlcy5zaGFyZWRfc3RvcmVgXG4gKlxuICogSWYgeW91IG5lZWQgdG8gbG9hZCBhbnkgYWRkaXRpb25hbCBtb2R1bGVzLCBzcGVjaWZ5IHRoZW0gaW4gdGhlIGBtb2R1bGVzYFxuICogYXJndW1lbnQuXG4gKlxuICogQHBhcmFtIGRlc2NyaXB0aW9uIFRlc3QgY2FzZSBkZXNjcmlwdGlvblxuICogQHBhcmFtIG1vZHVsZXMgTGlzdCBvZiBtb2R1bGVzIHRvIGxvYWQgZm9yIHRoaXMgdGVzdFxuICogQHBhcmFtIHRlc3RzIFRlc3QgY2FzZSBib2R5XG4gKiBAcGFyYW0gYXBpQ2xhc3MgT3B0aW9uYWwgbW9jayBBUEkgY2xhc3MgdGhhdCBzaG91bGQgYmUgdXNlZFxuICogQHBhcmFtIGJhc2VNb2R1bGVzIE9wdGlvbmFsIGxpc3Qgb2YgbW9kdWxlcyB0byBsb2FkIGJlZm9yZSBldmVyeXRoaW5nIGZvciB0aGlzIHRlc3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlc2NyaWJlQ29tcG9uZW50KGRlc2NyaXB0aW9uOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlczogYW55W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHM6ICh0ZXN0ZXI6IENvbXBvbmVudFRlc3RlcikgPT4gdm9pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGlDbGFzczogTW9ja0FwaUZhY3RvcnkgPSBNb2NrQXBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VNb2R1bGVzOiBzdHJpbmdbXSA9IFtdKTogdm9pZCB7XG4gICAgZGVzY3JpYmUoZGVzY3JpcHRpb24sICgpID0+IHtcbiAgICAgICAgbGV0ICRjb21waWxlOiBhbmd1bGFyLklDb21waWxlU2VydmljZTtcbiAgICAgICAgbGV0ICRzY29wZTogYW5ndWxhci5JU2NvcGU7XG4gICAgICAgIGxldCBtb2NrQXBpOiBSZXNvbHdlQXBpICYgTW9ja0Jhc2UgJiBNb2NrQXBpU2VydmljZTtcblxuICAgICAgICBjb25zdCBtb2R1bGVOYW1lID0gJ3Jlc29sd2UudGVzdHMuJyArIGRlc2NyaXB0aW9uLnJlcGxhY2UoLyAvZywgJy4nKTtcbiAgICAgICAgY29uc3QgbW9kdWxlOiBhbmd1bGFyLklNb2R1bGUgPSBhbmd1bGFyLm1vZHVsZShtb2R1bGVOYW1lLCBbXSk7XG5cbiAgICAgICAgLy8gTG9hZCBiYXNlIG1vZHVsZXMuXG4gICAgICAgIGJlZm9yZUVhY2goYW5ndWxhci5tb2NrLm1vZHVsZSgncmVzb2x3ZS5zZXJ2aWNlcy5zaGFyZWRfc3RvcmUnKSk7XG4gICAgICAgIGJlZm9yZUVhY2goYW5ndWxhci5tb2NrLm1vZHVsZSgncmVzb2x3ZS5zZXJ2aWNlcy5zdGF0ZV9tYW5hZ2VyJykpO1xuICAgICAgICBiYXNlTW9kdWxlcy5mb3JFYWNoKChiYXNlTW9kdWxlKSA9PiBiZWZvcmVFYWNoKGFuZ3VsYXIubW9jay5tb2R1bGUoYmFzZU1vZHVsZSkpKTtcblxuICAgICAgICBiZWZvcmVFYWNoKGFuZ3VsYXIubW9jay5tb2R1bGUoKCRwcm92aWRlOiBhbmd1bGFyLmF1dG8uSVByb3ZpZGVTZXJ2aWNlKSA9PiB7XG4gICAgICAgICAgICAvLyBFeHBsaWNpdGx5IHNldCByb290IGVsZW1lbnQgYmVjYXVzZSB0ZXN0cyBkbyBub3QgZ28gdGhyb3VnaCB1c3VhbFxuICAgICAgICAgICAgLy8gQW5ndWxhciBib290c3RyYXBwaW5nLlxuICAgICAgICAgICAgJHByb3ZpZGUudmFsdWUoJyRyb290RWxlbWVudCcsIGFuZ3VsYXIuZWxlbWVudChkb2N1bWVudC5ib2R5KSk7XG5cbiAgICAgICAgICAgIC8vIFJlcGxhY2UgdXN1YWwgQVBJIHNlcnZpY2Ugd2l0aCBtb2NrIEFQSS5cbiAgICAgICAgICAgICRwcm92aWRlLnNlcnZpY2UoJ2FwaScsIGNvbXBvc2UoW2FwaUNsYXNzLCBNb2NrQXBpU2VydmljZV0pKTtcbiAgICAgICAgfSkpO1xuICAgICAgICBiZWZvcmVFYWNoKGFuZ3VsYXIubW9jay5tb2R1bGUobW9kdWxlTmFtZSkpO1xuXG4gICAgICAgIC8vIFJlZ2lzdGVyIGFueSBzaGFyZWQgc3RvcmVzLlxuICAgICAgICBjb25zdCBbc2hhcmVkU3RvcmVzLCBhZGRpdGlvbmFsTW9kdWxlc10gPSBfLnBhcnRpdGlvbihtb2R1bGVzLCAobSkgPT4gISFtLnN0b3JlSWQpO1xuXG4gICAgICAgIG1vZHVsZS5jb25maWcoKHNoYXJlZFN0b3JlTWFuYWdlclByb3ZpZGVyOiBTaGFyZWRTdG9yZVByb3ZpZGVyKSA9PiB7XG4gICAgICAgICAgICBfLmVhY2goc2hhcmVkU3RvcmVzLCAoZGVzY3JpcHRvcjogU2hhcmVkU3RvcmVEZXNjcmlwdG9yKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3IuZmFjdG9yeSkge1xuICAgICAgICAgICAgICAgICAgICBzaGFyZWRTdG9yZU1hbmFnZXJQcm92aWRlci5yZWdpc3RlcihkZXNjcmlwdG9yLnN0b3JlSWQsIGRlc2NyaXB0b3IuZmFjdG9yeSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2hhcmVkU3RvcmVNYW5hZ2VyUHJvdmlkZXIuY3JlYXRlKGRlc2NyaXB0b3Iuc3RvcmVJZCwgZGVzY3JpcHRvci5pbml0aWFsU3RhdGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBfLmVhY2goYWRkaXRpb25hbE1vZHVsZXMsIChhZGRpdGlvbmFsTW9kdWxlKSA9PiB7XG4gICAgICAgICAgICBiZWZvcmVFYWNoKGFuZ3VsYXIubW9jay5tb2R1bGUoYWRkaXRpb25hbE1vZHVsZSkpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBBIGNvbnRhaW5lciBpbiBET00gd2hlcmUgd2UgY2FuIHRlbXBvcmFyaWx5IGFwcGVuZCBjb21wb25lbnQgZWxlbWVudHMuXG4gICAgICAgIGxldCBjb250YWluZXJFbGVtZW50OiBhbmd1bGFyLklBdWdtZW50ZWRKUXVlcnkgPSBudWxsO1xuXG4gICAgICAgIGZ1bmN0aW9uIHByb3ZpZGVSZWFsRE9NKCk6IHZvaWQge1xuICAgICAgICAgICAgcmVtb3ZlUmVhbERPTSgpO1xuICAgICAgICAgICAgY29uc3QgYm9keSA9IGFuZ3VsYXIuZWxlbWVudChkb2N1bWVudC5ib2R5KTtcbiAgICAgICAgICAgIGNvbnRhaW5lckVsZW1lbnQgPSBhbmd1bGFyLmVsZW1lbnQoJzxkaXYgaWQ9XCJ0ZXN0LWNvbnRhaW5lci1lbGVtZW50XCI+PC9kaXY+Jyk7XG4gICAgICAgICAgICBib2R5LmFwcGVuZChjb250YWluZXJFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHJlbW92ZVJlYWxET00oKTogdm9pZCB7XG4gICAgICAgICAgICBpZiAoY29udGFpbmVyRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lckVsZW1lbnQucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyRWxlbWVudCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgICAgICAgIGphc21pbmUuYWRkTWF0Y2hlcnMobmdFcXVhbE1hdGNoZXIpO1xuICAgICAgICB9KTtcblxuICAgICAgICBiZWZvcmVFYWNoKGFuZ3VsYXIubW9jay5pbmplY3QoKF8kY29tcGlsZV8sIF8kcm9vdFNjb3BlXywgX2FwaV8pID0+IHtcbiAgICAgICAgICAgICRjb21waWxlID0gXyRjb21waWxlXztcbiAgICAgICAgICAgICRzY29wZSA9IF8kcm9vdFNjb3BlXy4kbmV3KCk7XG4gICAgICAgICAgICBtb2NrQXBpID0gX2FwaV87XG5cbiAgICAgICAgICAgIC8vIEBpZm5kZWYgR0VOSlNfUFJPRFVDVElPTlxuICAgICAgICAgICAgICAgIGlmIChfLmNvbnRhaW5zKHRlc3RzLnRvU3RyaW5nKCksICdkZWJ1Z2dlcicpIHx8IF8uY29udGFpbnModGVzdHMudG9TdHJpbmcoKSwgJyBmaXQoJykpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZVJlYWxET00oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBAZW5kaWZcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgICAgICAgICAkc2NvcGUuJGRlc3Ryb3koKTtcbiAgICAgICAgICAgIHJlbW92ZVJlYWxET00oKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGVzdHMoe1xuICAgICAgICAgICAgbW9kdWxlOiBtb2R1bGUsXG5cbiAgICAgICAgICAgIGNyZWF0ZUNvbXBvbmVudDogZnVuY3Rpb248VD4odGVtcGxhdGU6IHN0cmluZyk6IENvbXBvbmVudERlc2NyaXB0b3I8VD4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGdldENvbXBvbmVudDxUPigkY29tcGlsZSwgJHNjb3BlLCB0ZW1wbGF0ZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY29udGFpbmVyRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBBcHBlbmQgY29tcG9uZW50IGVsZW1lbnQgdG8gYWN0dWFsIERPTS4gT3RoZXJ3aXNlLCBjb21wdXRhdGlvbnMgbGlrZSBoZWlnaHQgd2lsbCBub3Qgd29yay5cbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyRWxlbWVudC5hcHBlbmQoY29tcG9uZW50LmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuJGRpZ2VzdCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBjb21wb25lbnQ7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBkaWdlc3Q6IGZ1bmN0aW9uKCk6IHZvaWQge1xuICAgICAgICAgICAgICAgICRzY29wZS4kZGlnZXN0KCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBhcGk6IGZ1bmN0aW9uKCk6IFJlc29sd2VBcGkgJiBNb2NrQmFzZSAmIE1vY2tBcGlTZXJ2aWNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9ja0FwaTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHNjb3BlOiBmdW5jdGlvbigpOiBhbmd1bGFyLklTY29wZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICRzY29wZTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHByb3ZpZGVSZWFsRE9NOiBwcm92aWRlUmVhbERPTSxcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,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RUFBRSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO29CQUNuQiw2RkFBNkY7b0JBQzdGLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQzNDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDckIsQ0FBQztnQkFFRCxNQUFNLENBQUMsU0FBUyxDQUFDO1lBQ3JCLENBQUM7WUFFRCxNQUFNLEVBQUU7Z0JBQ0osTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLENBQUM7WUFFRCxHQUFHLEVBQUU7Z0JBQ0QsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUNuQixDQUFDO1lBRUQsS0FBSyxFQUFFO2dCQUNILE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDbEIsQ0FBQztZQUVELGNBQWMsRUFBRSxjQUFjO1NBQ2pDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQS9HRCw4Q0ErR0MiLCJmaWxlIjoidGVzdHMvY29tcG9uZW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICogYXMgYW5ndWxhciBmcm9tICdhbmd1bGFyJztcbmltcG9ydCAnYW5ndWxhci1tb2Nrcyc7XG5cbmltcG9ydCB7UmVzb2x3ZUFwaX0gZnJvbSAnLi4vYXBpL2luZGV4JztcbmltcG9ydCB7TW9ja0Jhc2UsIE1vY2tBcGl9IGZyb20gJy4uL2FwaS9tb2NrJztcbmltcG9ydCB7bmdFcXVhbE1hdGNoZXJ9IGZyb20gJy4vbWF0Y2hlcnMnO1xuaW1wb3J0IHtTaGFyZWRTdG9yZUZhY3RvcnksIFNoYXJlZFN0b3JlUHJvdmlkZXJ9IGZyb20gJy4uL2NvcmUvc2hhcmVkX3N0b3JlL2luZGV4JztcbmltcG9ydCB7R2VuRXJyb3J9IGZyb20gJy4uL2NvcmUvZXJyb3JzL2Vycm9yJztcbmltcG9ydCB7Y29tcG9zZX0gZnJvbSAnLi4vY29yZS91dGlscy9sYW5nJztcbmltcG9ydCB7TW9ja0FwaVNlcnZpY2V9IGZyb20gJy4vbW9jayc7XG5pbXBvcnQgJy4vbWF0Y2hlcnMnO1xuXG4vLyBTZXJ2aWNlIG1vZHVsZXMgdGhhdCBzaG91bGQgYmUgbG9hZGVkLlxuaW1wb3J0ICcuLi9jb3JlL3NoYXJlZF9zdG9yZS9pbmRleCc7XG5pbXBvcnQgJy4uL2NvcmUvY29tcG9uZW50cy9tYW5hZ2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnREZXNjcmlwdG9yPFQ+IHtcbiAgICBlbGVtZW50OiBhbmd1bGFyLklBdWdtZW50ZWRKUXVlcnk7XG4gICAgY3RybDogVDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRTdG9yZURlc2NyaXB0b3Ige1xuICAgIHN0b3JlSWQ6IHN0cmluZztcbiAgICBpbml0aWFsU3RhdGU/OiBhbnk7XG4gICAgZmFjdG9yeT86IFNoYXJlZFN0b3JlRmFjdG9yeTxhbnksIGFueT47XG59XG5cbi8qKlxuICogSGVscGVyIGZvciBjcmVhdGluZyBzaW1wbGUgc2hhcmVkIHN0b3JlcyBpbiB0ZXN0cy4gQWxzbyBzZWVcbiAqIFtbU2hhcmVkU3RvcmVQcm92aWRlci5jcmVhdGVdXS5cbiAqXG4gKiBAcGFyYW0gc3RvcmVJZCBJZGVudGlmaWVyIG9mIHRoZSBzaGFyZWQgc3RvcmUgKG11c3QgYmUgZ2xvYmFsbHkgdW5pcXVlKVxuICogQHBhcmFtIGluaXRpYWxTdGF0ZSBPcHRpb25hbCBpbml0aWFsIHN0YXRlIG9mIHRoZSBzaGFyZWQgc3RvcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNoYXJlZFN0b3JlKHN0b3JlSWQ6IHN0cmluZywgaW5pdGlhbFN0YXRlOiBhbnkgPSBudWxsKTogU2hhcmVkU3RvcmVEZXNjcmlwdG9yIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBzdG9yZUlkLFxuICAgICAgICBpbml0aWFsU3RhdGUsXG4gICAgfTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgZm9yIHVzaW5nIHNoYXJlZCBzdG9yZXMgaW4gdGVzdHMuXG4gKlxuICogQHBhcmFtIHN0b3JlSWQgSWRlbnRpZmllciBvZiB0aGUgc2hhcmVkIHN0b3JlIChtdXN0IGJlIGdsb2JhbGx5IHVuaXF1ZSlcbiAqIEBwYXJhbSBmYWN0b3J5IFNoYXJlZCBzdG9yZSBjbGFzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU2hhcmVkU3RvcmUoc3RvcmVJZDogc3RyaW5nLCBmYWN0b3J5OiBTaGFyZWRTdG9yZUZhY3Rvcnk8YW55LCBhbnk+KTogU2hhcmVkU3RvcmVEZXNjcmlwdG9yIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBzdG9yZUlkLFxuICAgICAgICBmYWN0b3J5LFxuICAgIH07XG59XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIHdoZW4gdW5pdCB0ZXN0aW5nIGNvbXBvbmVudHMgd2hpY2ggY29tcGlsZXMgYSBjb21wb25lbnQuXG4gKlxuICogQHBhcmFtICRjb21waWxlIENvbXBpbGUgc2VydmljZVxuICogQHBhcmFtICRzY29wZSBTY29wZSBzZXJ2aWNlXG4gKiBAcGFyYW0gdGVtcGxhdGUgdGVtcGxhdGUgaW4gdGhlIGZvcm0gb2YgYSBkaXJlY3RpdmUsIGUuZy4gYCc8Z2VuLXNvbWUtY29tcG9uZW50PjxnZW4tc29tZS1jb21wb25lbnQ+J2BcbiAqIEByZXR1cm5zIHtDb21wb25lbnREZXNjcmlwdG9yfSBFbGVtZW50IGFuZCBpdHMgY29udHJvbGxlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29tcG9uZW50PFQ+KCRjb21waWxlOiBhbmd1bGFyLklDb21waWxlU2VydmljZSwgJHNjb3BlOiBhbmd1bGFyLklTY29wZSwgdGVtcGxhdGU6IHN0cmluZyk6IENvbXBvbmVudERlc2NyaXB0b3I8VD4ge1xuXG4gICAgLy8gVE9ETzogaW5zdGVhZCBvZiBoYXZpbmcgZ2V0Q29tcG9uZW50PFQ+LCB3ZSBjb3VsZCBoYXZlIGdldENvbXBvbmVudDxUIGV4dGVuZHMgQ29tcG9uZW50QmFzZT4gYW5kIHRoZW4geW91IHdvdWxkIGRvXG4gICAgLy8gVC5hc1ZpZXcgdGh1cyByZWR1Y2luZyB0aGUgbmVlZCBmb3IgdGVtcGxhdGUgYXJndW1lbnQsIGJ1dCBsb29rcyBsaWtlIHR5cGVzY3JpcHQgZG9lcyBub3Qgc3VwcG9ydCB0aGF0ICh5ZXQpXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy81Njc3XG5cbiAgICBjb25zdCBlbGVtZW50ID0gJGNvbXBpbGUodGVtcGxhdGUpKCRzY29wZSk7XG4gICAgJHNjb3BlLiRkaWdlc3QoKTtcblxuICAgIGxldCBjdHJsOiBUO1xuICAgIHRyeSB7XG4gICAgICAgIGN0cmwgPSAkc2NvcGVbJyQkY2hpbGRUYWlsJ10uY3RybDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBHZW5FcnJvcihcIlVuYWJsZSB0byBmZXRjaCBjb21wb25lbnQgY29udHJvbGxlci4gRGlkIHlvdSBsb2FkIHlvdXIgbW9kdWxlIGluIHRlc3RzP1wiKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBlbGVtZW50OiBlbGVtZW50LFxuICAgICAgICBjdHJsOiBjdHJsLFxuICAgIH07XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIGV4cG9zZWQgdG8gdGVzdCBjYXNlIGZ1bmN0aW9ucywgd2hpY2ggYXJlIGNyZWF0ZWQgdXNpbmcgW1tkZXNjcmliZUNvbXBvbmVudF1dLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudFRlc3RlciB7XG4gICAgLy8vIEFuZ3VsYXIgbW9kdWxlLCB3aGljaCBtYXkgYmUgdXNlZCB0byByZWdpc3RlciB0ZXN0IGNvbXBvbmVudHMgaW4uXG4gICAgbW9kdWxlOiBhbmd1bGFyLklNb2R1bGU7XG5cbiAgICAvKipcbiAgICAgKiBTZWUgW1tnZXRDb21wb25lbnRdXS5cbiAgICAgKi9cbiAgICBjcmVhdGVDb21wb25lbnQ8VD4odGVtcGxhdGU6IHN0cmluZyk6IENvbXBvbmVudERlc2NyaXB0b3I8VD47XG5cbiAgICAvKipcbiAgICAgKiBSdW5zIGFuIEFuZ3VsYXIgZGlnZXN0IGN5Y2xlLlxuICAgICAqL1xuICAgIGRpZ2VzdCgpOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgbW9jayB2ZXJzaW9uIG9mIHRoZSBBUEksIHdoaWNoIG1heSBiZSB1c2VkIHRvIHNpbXVsYXRlIHRoZSBiYWNrZW5kXG4gICAgICogd2hlbiB0ZXN0aW5nIGNvbXBvbmVudHMuIFRoZSBtb2NrIEFQSSBpcyBhdXRvbWF0aWNhbGx5IGluamVjdGVkIGludG8gY29tcG9uZW50c1xuICAgICAqIGFuZCByZXBsYWNlcyB0aGUgdXN1YWwgQVBJLlxuICAgICAqL1xuICAgIGFwaSgpOiBSZXNvbHdlQXBpICYgTW9ja0Jhc2UgJiBNb2NrQXBpU2VydmljZTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHNjb3BlLlxuICAgICAqL1xuICAgIHNjb3BlKCk6IGFuZ3VsYXIuSVNjb3BlO1xuXG4gICAgLyoqXG4gICAgICogRW5zdXJlcyB0aGF0IHRoZSB0ZXN0ZWQgY29tcG9uZW50cyBhcmUgaW5zZXJ0ZWQgaW50byBhbiBhY3R1YWwgRE9NLCBzbyB0aGluZ3NcbiAgICAgKiBsaWtlIGhlaWdodCBjYWxjdWxhdGlvbnMgd29yayBhcyBleHBlY3RlZC4gVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBiZWZvcmVcbiAgICAgKiBhbnkgW1tjcmVhdGVDb21wb25lbnRdXSBjYWxscy5cbiAgICAgKi9cbiAgICBwcm92aWRlUmVhbERPTSgpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1vY2tBcGlGYWN0b3J5IHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKTogUmVzb2x3ZUFwaSAmIE1vY2tCYXNlO1xufVxuXG4vKipcbiAqIEEgaGVscGVyIGZ1bmN0aW9uIHRvIGVhc2UgdGVzdGluZyBvZiBjb21wb25lbnRzLiBJdCB3aWxsIHRha2UgY2FyZSBvZiBtb2NraW5nIHRoZVxuICogdXN1YWwgbW9kdWxlcyBuZWVkZWQgZm9yIHRlc3RpbmcgY29tcG9uZW50cyBhbmQgcHJlcGFyaW5nIGEgbW9kdWxlIHRoYXQgeW91IGNhbiB1c2VcbiAqIHRvIHJlZ2lzdGVyIHRlc3QgY29tcG9uZW50cy5cbiAqXG4gKiBUaGUgdGVzdCBjYXNlIGlzIHBhc3NlZCBhbiBpbnN0YW5jZSBvZiBbW0NvbXBvbmVudFRlc3Rlcl1dLCB3aGljaCBjb250YWlucyBzb21lXG4gKiB1c2VmdWwgcHJvcGVydGllcyBhbmQgbWV0aG9kcyBmb3IgdGVzdGluZyBjb21wb25lbnRzLlxuICpcbiAqIFRoZSBmb2xsb3dpbmcgbW9kdWxlcyBhcmUgYXV0b21hdGljYWxseSBsb2FkZWQ6XG4gKiAqIGByZXNvbHdlLnNlcnZpY2VzLnNoYXJlZF9zdG9yZWBcbiAqXG4gKiBJZiB5b3UgbmVlZCB0byBsb2FkIGFueSBhZGRpdGlvbmFsIG1vZHVsZXMsIHNwZWNpZnkgdGhlbSBpbiB0aGUgYG1vZHVsZXNgXG4gKiBhcmd1bWVudC5cbiAqXG4gKiBAcGFyYW0gZGVzY3JpcHRpb24gVGVzdCBjYXNlIGRlc2NyaXB0aW9uXG4gKiBAcGFyYW0gbW9kdWxlcyBMaXN0IG9mIG1vZHVsZXMgdG8gbG9hZCBmb3IgdGhpcyB0ZXN0XG4gKiBAcGFyYW0gdGVzdHMgVGVzdCBjYXNlIGJvZHlcbiAqIEBwYXJhbSBhcGlDbGFzcyBPcHRpb25hbCBtb2NrIEFQSSBjbGFzcyB0aGF0IHNob3VsZCBiZSB1c2VkXG4gKiBAcGFyYW0gYmFzZU1vZHVsZXMgT3B0aW9uYWwgbGlzdCBvZiBtb2R1bGVzIHRvIGxvYWQgYmVmb3JlIGV2ZXJ5dGhpbmcgZm9yIHRoaXMgdGVzdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVzY3JpYmVDb21wb25lbnQoZGVzY3JpcHRpb246IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVzOiBhbnlbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0czogKHRlc3RlcjogQ29tcG9uZW50VGVzdGVyKSA9PiB2b2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwaUNsYXNzOiBNb2NrQXBpRmFjdG9yeSA9IE1vY2tBcGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZU1vZHVsZXM6IHN0cmluZ1tdID0gW10pOiB2b2lkIHtcbiAgICBkZXNjcmliZShkZXNjcmlwdGlvbiwgKCkgPT4ge1xuICAgICAgICBsZXQgJGNvbXBpbGU6IGFuZ3VsYXIuSUNvbXBpbGVTZXJ2aWNlO1xuICAgICAgICBsZXQgJHNjb3BlOiBhbmd1bGFyLklTY29wZTtcbiAgICAgICAgbGV0IG1vY2tBcGk6IFJlc29sd2VBcGkgJiBNb2NrQmFzZSAmIE1vY2tBcGlTZXJ2aWNlO1xuXG4gICAgICAgIGNvbnN0IG1vZHVsZU5hbWUgPSAncmVzb2x3ZS50ZXN0cy4nICsgZGVzY3JpcHRpb24ucmVwbGFjZSgvIC9nLCAnLicpO1xuICAgICAgICBjb25zdCBtb2R1bGU6IGFuZ3VsYXIuSU1vZHVsZSA9IGFuZ3VsYXIubW9kdWxlKG1vZHVsZU5hbWUsIFtdKTtcblxuICAgICAgICAvLyBMb2FkIGJhc2UgbW9kdWxlcy5cbiAgICAgICAgYmVmb3JlRWFjaChhbmd1bGFyLm1vY2subW9kdWxlKCdyZXNvbHdlLnNlcnZpY2VzLnNoYXJlZF9zdG9yZScpKTtcbiAgICAgICAgYmVmb3JlRWFjaChhbmd1bGFyLm1vY2subW9kdWxlKCdyZXNvbHdlLnNlcnZpY2VzLnN0YXRlX21hbmFnZXInKSk7XG4gICAgICAgIGJhc2VNb2R1bGVzLmZvckVhY2goKGJhc2VNb2R1bGUpID0+IGJlZm9yZUVhY2goYW5ndWxhci5tb2NrLm1vZHVsZShiYXNlTW9kdWxlKSkpO1xuXG4gICAgICAgIGJlZm9yZUVhY2goYW5ndWxhci5tb2NrLm1vZHVsZSgoJHByb3ZpZGU6IGFuZ3VsYXIuYXV0by5JUHJvdmlkZVNlcnZpY2UpID0+IHtcbiAgICAgICAgICAgIC8vIEV4cGxpY2l0bHkgc2V0IHJvb3QgZWxlbWVudCBiZWNhdXNlIHRlc3RzIGRvIG5vdCBnbyB0aHJvdWdoIHVzdWFsXG4gICAgICAgICAgICAvLyBBbmd1bGFyIGJvb3RzdHJhcHBpbmcuXG4gICAgICAgICAgICAkcHJvdmlkZS52YWx1ZSgnJHJvb3RFbGVtZW50JywgYW5ndWxhci5lbGVtZW50KGRvY3VtZW50LmJvZHkpKTtcblxuICAgICAgICAgICAgLy8gUmVwbGFjZSB1c3VhbCBBUEkgc2VydmljZSB3aXRoIG1vY2sgQVBJLlxuICAgICAgICAgICAgJHByb3ZpZGUuc2VydmljZSgnYXBpJywgY29tcG9zZShbYXBpQ2xhc3MsIE1vY2tBcGlTZXJ2aWNlXSkpO1xuICAgICAgICB9KSk7XG4gICAgICAgIGJlZm9yZUVhY2goYW5ndWxhci5tb2NrLm1vZHVsZShtb2R1bGVOYW1lKSk7XG5cbiAgICAgICAgLy8gUmVnaXN0ZXIgYW55IHNoYXJlZCBzdG9yZXMuXG4gICAgICAgIGNvbnN0IFtzaGFyZWRTdG9yZXMsIGFkZGl0aW9uYWxNb2R1bGVzXSA9IF8ucGFydGl0aW9uKG1vZHVsZXMsIChtKSA9PiAhIW0uc3RvcmVJZCk7XG5cbiAgICAgICAgbW9kdWxlLmNvbmZpZygoc2hhcmVkU3RvcmVNYW5hZ2VyUHJvdmlkZXI6IFNoYXJlZFN0b3JlUHJvdmlkZXIpID0+IHtcbiAgICAgICAgICAgIF8uZWFjaChzaGFyZWRTdG9yZXMsIChkZXNjcmlwdG9yOiBTaGFyZWRTdG9yZURlc2NyaXB0b3IpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci5mYWN0b3J5KSB7XG4gICAgICAgICAgICAgICAgICAgIHNoYXJlZFN0b3JlTWFuYWdlclByb3ZpZGVyLnJlZ2lzdGVyKGRlc2NyaXB0b3Iuc3RvcmVJZCwgZGVzY3JpcHRvci5mYWN0b3J5KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzaGFyZWRTdG9yZU1hbmFnZXJQcm92aWRlci5jcmVhdGUoZGVzY3JpcHRvci5zdG9yZUlkLCBkZXNjcmlwdG9yLmluaXRpYWxTdGF0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIF8uZWFjaChhZGRpdGlvbmFsTW9kdWxlcywgKGFkZGl0aW9uYWxNb2R1bGUpID0+IHtcbiAgICAgICAgICAgIGJlZm9yZUVhY2goYW5ndWxhci5tb2NrLm1vZHVsZShhZGRpdGlvbmFsTW9kdWxlKSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEEgY29udGFpbmVyIGluIERPTSB3aGVyZSB3ZSBjYW4gdGVtcG9yYXJpbHkgYXBwZW5kIGNvbXBvbmVudCBlbGVtZW50cy5cbiAgICAgICAgbGV0IGNvbnRhaW5lckVsZW1lbnQ6IGFuZ3VsYXIuSUF1Z21lbnRlZEpRdWVyeSA9IG51bGw7XG5cbiAgICAgICAgZnVuY3Rpb24gcHJvdmlkZVJlYWxET00oKTogdm9pZCB7XG4gICAgICAgICAgICByZW1vdmVSZWFsRE9NKCk7XG4gICAgICAgICAgICBjb25zdCBib2R5ID0gYW5ndWxhci5lbGVtZW50KGRvY3VtZW50LmJvZHkpO1xuICAgICAgICAgICAgY29udGFpbmVyRWxlbWVudCA9IGFuZ3VsYXIuZWxlbWVudCgnPGRpdiBpZD1cInRlc3QtY29udGFpbmVyLWVsZW1lbnRcIj48L2Rpdj4nKTtcbiAgICAgICAgICAgIGJvZHkuYXBwZW5kKGNvbnRhaW5lckVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gcmVtb3ZlUmVhbERPTSgpOiB2b2lkIHtcbiAgICAgICAgICAgIGlmIChjb250YWluZXJFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyRWxlbWVudC5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICBjb250YWluZXJFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgICAgICAgamFzbWluZS5hZGRNYXRjaGVycyhuZ0VxdWFsTWF0Y2hlcik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGJlZm9yZUVhY2goYW5ndWxhci5tb2NrLmluamVjdCgoXyRjb21waWxlXywgXyRyb290U2NvcGVfLCBfYXBpXykgPT4ge1xuICAgICAgICAgICAgJGNvbXBpbGUgPSBfJGNvbXBpbGVfO1xuICAgICAgICAgICAgJHNjb3BlID0gXyRyb290U2NvcGVfLiRuZXcoKTtcbiAgICAgICAgICAgIG1vY2tBcGkgPSBfYXBpXztcblxuICAgICAgICAgICAgLy8gQGlmbmRlZiBHRU5KU19QUk9EVUNUSU9OXG4gICAgICAgICAgICAgICAgaWYgKF8uY29udGFpbnModGVzdHMudG9TdHJpbmcoKSwgJ2RlYnVnZ2VyJykgfHwgXy5jb250YWlucyh0ZXN0cy50b1N0cmluZygpLCAnIGZpdCgnKSkge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlUmVhbERPTSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEBlbmRpZlxuICAgICAgICB9KSk7XG5cbiAgICAgICAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICAgICAgICAgICRzY29wZS4kZGVzdHJveSgpO1xuICAgICAgICAgICAgcmVtb3ZlUmVhbERPTSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0ZXN0cyh7XG4gICAgICAgICAgICBtb2R1bGU6IG1vZHVsZSxcblxuICAgICAgICAgICAgY3JlYXRlQ29tcG9uZW50OiBmdW5jdGlvbjxUPih0ZW1wbGF0ZTogc3RyaW5nKTogQ29tcG9uZW50RGVzY3JpcHRvcjxUPiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gZ2V0Q29tcG9uZW50PFQ+KCRjb21waWxlLCAkc2NvcGUsIHRlbXBsYXRlKTtcblxuICAgICAgICAgICAgICAgIGlmIChjb250YWluZXJFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEFwcGVuZCBjb21wb25lbnQgZWxlbWVudCB0byBhY3R1YWwgRE9NLiBPdGhlcndpc2UsIGNvbXB1dGF0aW9ucyBsaWtlIGhlaWdodCB3aWxsIG5vdCB3b3JrLlxuICAgICAgICAgICAgICAgICAgICBjb250YWluZXJFbGVtZW50LmFwcGVuZChjb21wb25lbnQuZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICRzY29wZS4kZGlnZXN0KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudDtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGRpZ2VzdDogZnVuY3Rpb24oKTogdm9pZCB7XG4gICAgICAgICAgICAgICAgJHNjb3BlLiRkaWdlc3QoKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGFwaTogZnVuY3Rpb24oKTogUmVzb2x3ZUFwaSAmIE1vY2tCYXNlICYgTW9ja0FwaVNlcnZpY2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb2NrQXBpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2NvcGU6IGZ1bmN0aW9uKCk6IGFuZ3VsYXIuSVNjb3BlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJHNjb3BlO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcHJvdmlkZVJlYWxET006IHByb3ZpZGVSZWFsRE9NLFxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbiJdfQ== |
{ | ||
"name": "@genialis/resolwe", | ||
"author": "Genialis Inc.", | ||
"version": "3.1.3", | ||
"version": "4.0.0", | ||
"description": "Resolwe frontend libraries", | ||
@@ -6,0 +6,0 @@ "license": "Apache-2.0", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
1187695
98
20292