@ultipa-graph/ultipa-driver 6.0.11 → 6.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -74,7 +74,8 @@ class ConnectionPool {
74
74
  credentials = grpc.credentials.createInsecure();
75
75
  }
76
76
  const options = {
77
- 'grpc.max_receive_message_length': this.config.maxRecvSize ?? 4 * 1024 * 1024,
77
+ 'grpc.max_receive_message_length': this.config.maxRecvSize ?? 64 * 1024 * 1024,
78
+ 'grpc.max_send_message_length': this.config.maxRecvSize ?? 64 * 1024 * 1024,
78
79
  'grpc.keepalive_time_ms': 30000,
79
80
  'grpc.keepalive_timeout_ms': 10000,
80
81
  'grpc.keepalive_permit_without_calls': 1,
@@ -187,4 +188,4 @@ class ConnectionPool {
187
188
  }
188
189
  }
189
190
  exports.ConnectionPool = ConnectionPool;
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25uZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsb0RBQXNDO0FBRXRDLHFDQUF5RjtBQVV6RixxREFBcUQ7QUFDckQsTUFBYSxjQUFjO0lBQ2pCLE1BQU0sQ0FBYztJQUNwQixXQUFXLEdBQTRCLElBQUksR0FBRyxFQUFFLENBQUM7SUFDakQsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNmLGdCQUFnQixDQUFrQjtJQUUxQyxZQUFZLE1BQW1CO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sZUFBZTtRQUNyQixLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDO2dCQUNILE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDekMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ25DLENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLDRCQUE0QjtnQkFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEQsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sSUFBSSw0QkFBbUIsRUFBRSxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDO0lBRU8sZ0JBQWdCLENB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SSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0QixDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxTQUFTO1lBQ1gsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxzQ0FBc0M7SUFDdEMsZ0JBQWdCO1FBQ2QsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDN0MsSUFBSSxJQUFJLENBQUMsT0FBTztnQkFBRSxLQUFLLEVBQUUsQ0FBQztRQUM1QixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsdUNBQXVDO0lBQ3ZDLEtBQUs7UUFDSCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxrQ0FBa0M7SUFDbEMsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0NBQ0Y7QUFsS0Qsd0NBa0tDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb25uZWN0aW9uIG1hbmFnZW1lbnQgZm9yIEdRTERCIE5vZGUuanMgZHJpdmVyLlxuICovXG5cbmltcG9ydCAqIGFzIGdycGMgZnJvbSAnQGdycGMvZ3JwYy1qcyc7XG5pbXBvcnQgeyBHcWxkYkNvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IEFsbEhvc3RzRmFpbGVkRXJyb3IsIENvbm5lY3Rpb25DbG9zZWRFcnJvciwgTm9Db25uZWN0aW9uRXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XG5cbi8qKiBSZXByZXNlbnRzIGEgc2luZ2xlIGdSUEMgY29ubmVjdGlvbiAqL1xuaW50ZXJmYWNlIENvbm5lY3Rpb24ge1xuICBob3N0OiBzdHJpbmc7XG4gIGNsaWVudDogZ3JwYy5DbGllbnQ7XG4gIGhlYWx0aHk6IGJvb2xlYW47XG4gIGxhc3RQaW5nOiBudW1iZXI7XG59XG5cbi8qKiBNYW5hZ2VzIGEgcG9vbCBvZiBjb25uZWN0aW9ucyB0byBHUUxEQiBzZXJ2ZXJzICovXG5leHBvcnQgY2xhc3MgQ29ubmVjdGlvblBvb2wge1xuICBwcml2YXRlIGNvbmZpZzogR3FsZGJDb25maWc7XG4gIHByaXZhdGUgY29ubmVjdGlvbnM6IE1hcDxzdHJpbmcsIENvbm5lY3Rpb24+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIGNsb3NlZCA9IGZhbHNlO1xuICBwcml2YXRlIGhlYWx0aENoZWNrVGltZXI/OiBOb2RlSlMuVGltZW91dDtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IEdxbGRiQ29uZmlnKSB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5pbml0Q29ubmVjdGlvbnMoKTtcbiAgICB0aGlzLnN0YXJ0SGVhbHRoQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdENvbm5lY3Rpb25zKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgaG9zdCBvZiB0aGlzLmNvbmZpZy5ob3N0cykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY29ubiA9IHRoaXMuY3JlYXRlQ29ubmVjdGlvbihob3N0KTtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9ucy5zZXQoaG9zdCwgY29ubik7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIENvbnRpbnVlIHdpdGggb3RoZXIgaG9zdHNcbiAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGNvbm5lY3QgdG8gJHtob3N0fTpgLCBlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25uZWN0aW9ucy5zaXplID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgQWxsSG9zdHNGYWlsZWRFcnJvcigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ29ubmVjdGlvbihob3N0OiBzdHJpbmcpOiBDb25uZWN0aW9uIHtcbiAgICBsZXQgY3JlZGVudGlhbHM6IGdycGMuQ2hhbm5lbENyZWRlbnRpYWxzO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnLnRsc09wdGlvbnMpIHtcbiAgICAgIGNyZWRlbnRpYWxzID0gZ3JwYy5jcmVkZW50aWFscy5jcmVhdGVTc2woKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3JlZGVudGlhbHMgPSBncnBjLmNyZWRlbnRpYWxzLmNyZWF0ZUluc2VjdXJlKCk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9uczogZ3JwYy5DaGFubmVsT3B0aW9ucyA9IHtcbiAgICAgICdncnBjLm1heF9yZWNlaXZlX21lc3NhZ2VfbGVuZ3RoJzogdGhpcy5jb25maWcubWF4UmVjdlNpemUgPz8gNCAqIDEwMjQgKiAxMDI0LFxuICAgICAgJ2dycGMua2VlcGFsaXZlX3RpbWVfbXMnOiAzMDAwMCxcbiAgICAgICdncnBjLmtlZXBhbGl2ZV90aW1lb3V0X21zJzogMTAwMDAsXG4gICAgICAnZ3JwYy5rZWVwYWxpdmVfcGVybWl0X3dpdGhvdXRfY2FsbHMnOiAxLFxuICAgIH07XG5cbiAgICAvLyBDcmVhdGUgYSBnZW5lcmljIGNsaWVudCBmb3IgdGhlIGNoYW5uZWxcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgZ3JwYy5DbGllbnQoaG9zdCwgY3JlZGVudGlhbHMsIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGhvc3QsXG4gICAgICBjbGllbnQsXG4gICAgICBoZWFsdGh5OiB0cnVlLFxuICAgICAgbGFzdFBpbmc6IERhdGUubm93KCksXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBHZXQgYSBoZWFsdGh5IGNvbm5lY3Rpb24gZnJvbSB0aGUgcG9vbCAqL1xuICBnZXRDb25uZWN0aW9uKCk6IGdycGMuQ2xpZW50IHtcbiAgICBpZiAodGhpcy5jbG9zZWQpIHtcbiAgICAgIHRocm93IG5ldyBDb25uZWN0aW9uQ2xvc2VkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNvbm4gb2YgdGhpcy5jb25uZWN0aW9ucy52YWx1ZXMoKSkge1xuICAgICAgaWYgKGNvbm4uaGVhbHRoeSkge1xuICAgICAgICByZXR1cm4gY29ubi5jbGllbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IE5vQ29ubmVjdGlvbkVycm9yKCk7XG4gIH1cblxuICAvKiogR2V0IGEgY29ubmVjdGlvbiBmb3IgYSBzcGVjaWZpYyBob3N0ICovXG4gIGdldENvbm5lY3Rpb25Gb3JIb3N0KGhvc3Q6IHN0cmluZyk6IGdycGMuQ2xpZW50IHtcbiAgICBjb25zdCBjb25uID0gdGhpcy5jb25uZWN0aW9ucy5nZXQoaG9zdCk7XG4gICAgaWYgKCFjb25uIHx8ICFjb25uLmhlYWx0aHkpIHtcbiAgICAgIHRocm93IG5ldyBOb0Nvbm5lY3Rpb25FcnJvcigpO1xuICAgIH1cbiAgICByZXR1cm4gY29ubi5jbGllbnQ7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0SGVhbHRoQ2hlY2soKTogdm9pZCB7XG4gICAgY29uc3QgaW50ZXJ2YWwgPSB0aGlzLmNvbmZpZy5oZWFsdGhDaGVja0ludGVydmFsID8/IDMwMDAwO1xuICAgIGlmIChpbnRlcnZhbCA+IDApIHtcbiAgICAgIHRoaXMuaGVhbHRoQ2hlY2tUaW1lciA9IHNldEludGVydmFsKCgpID0+IHRoaXMuY2hlY2tIZWFsdGgoKSwgaW50ZXJ2YWwpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tIZWFsdGgoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBbaG9zdCwgY29ubl0gb2YgdGhpcy5jb25uZWN0aW9ucykge1xuICAgICAgY29uc3Qgc3RhdGUgPSBjb25uLmNsaWVudC5nZXRDaGFubmVsKCkuZ2V0Q29ubmVjdGl2aXR5U3RhdGUoZmFsc2UpO1xuICAgICAgY29uc3QgaGVhbHRoeSA9IHN0YXRlID09PSBncnBjLmNvbm5lY3Rpdml0eVN0YXRlLlJFQURZIHx8XG4gICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9PT0gZ3JwYy5jb25uZWN0aXZpdHlTdGF0ZS5JRExFO1xuXG4gICAgICBjb25uLmhlYWx0aHkgPSBoZWFsdGh5O1xuICAgICAgaWYgKGhlYWx0aHkpIHtcbiAgICAgICAgY29ubi5sYXN0UGluZyA9IERhdGUubm93KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlY29ubmVjdChob3N0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlY29ubmVjdChob3N0OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5jbG9zZWQpIHJldHVybjtcblxuICAgIGNvbnN0IG9sZENvbm4gPSB0aGlzLmNvbm5lY3Rpb25zLmdldChob3N0KTtcbiAgICBpZiAob2xkQ29ubikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgb2xkQ29ubi5jbGllbnQuY2xvc2UoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gSWdub3JlXG4gICAgICB9XG4gICAgICB0aGlzLmNvbm5lY3Rpb25zLmRlbGV0ZShob3N0KTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbmV3Q29ubiA9IHRoaXMuY3JlYXRlQ29ubmVjdGlvbihob3N0KTtcbiAgICAgIHRoaXMuY29ubmVjdGlvbnMuc2V0KGhvc3QsIG5ld0Nvbm4pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIExvZyBhbmQgY29udGludWVcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byByZWNvbm5lY3QgdG8gJHtob3N0fTpgLCBlKTtcbiAgICB9XG4gIH1cblxuICAvKiogQ2xvc2UgYWxsIGNvbm5lY3Rpb25zIGluIHRoZSBwb29sICovXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNsb3NlZCkgcmV0dXJuO1xuXG4gICAgdGhpcy5jbG9zZWQgPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMuaGVhbHRoQ2hlY2tUaW1lcikge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmhlYWx0aENoZWNrVGltZXIpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY29ubiBvZiB0aGlzLmNvbm5lY3Rpb25zLnZhbHVlcygpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25uLmNsaWVudC5jbG9zZSgpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBJZ25vcmVcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvbm5lY3Rpb25zLmNsZWFyKCk7XG4gIH1cblxuICAvKiogR2V0IHRoZSBudW1iZXIgb2YgaGVhbHRoeSBob3N0cyAqL1xuICBoZWFsdGh5SG9zdENvdW50KCk6IG51bWJlciB7XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICBmb3IgKGNvbnN0IGNvbm4gb2YgdGhpcy5jb25uZWN0aW9ucy52YWx1ZXMoKSkge1xuICAgICAgaWYgKGNvbm4uaGVhbHRoeSkgY291bnQrKztcbiAgICB9XG4gICAgcmV0dXJuIGNvdW50O1xuICB9XG5cbiAgLyoqIEdldCB0aGUgbGlzdCBvZiBjb25maWd1cmVkIGhvc3RzICovXG4gIGhvc3RzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmNvbm5lY3Rpb25zLmtleXMoKSk7XG4gIH1cblxuICAvKiogQ2hlY2sgaWYgdGhlIHBvb2wgaXMgY2xvc2VkICovXG4gIGlzQ2xvc2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNsb3NlZDtcbiAgfVxufVxuIl19
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25uZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsb0RBQXNDO0FBRXRDLHFDQUF5RjtBQVV6RixxREFBcUQ7QUFDckQsTUFBYSxjQUFjO0lBQ2pCLE1BQU0sQ0FBYztJQUNwQixXQUFXLEdBQTRCLElBQUksR0FBRyxFQUFFLENBQUM7SUFDakQsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNmLGdCQUFnQixDQUFrQjtJQUUxQyxZQUFZLE1BQW1CO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sZUFBZTtRQUNyQixLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDO2dCQUNILE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDekMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ25DLENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLDRCQUE0QjtnQkFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEQsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sSUFBSSw0QkFBbUIsRUFBRSxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDO0lBRU8sZ0JBQWdCLENB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QUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDO2dCQUNILElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEIsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsU0FBUztZQUNYLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsc0NBQXNDO0lBQ3RDLGdCQUFnQjtRQUNkLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQzdDLElBQUksSUFBSSxDQUFDLE9BQU87Z0JBQUUsS0FBSyxFQUFFLENBQUM7UUFDNUIsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELHVDQUF1QztJQUN2QyxLQUFLO1FBQ0gsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsa0NBQWtDO0lBQ2xDLFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztDQUNGO0FBbktELHdDQW1LQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29ubmVjdGlvbiBtYW5hZ2VtZW50IGZvciBHUUxEQiBOb2RlLmpzIGRyaXZlci5cbiAqL1xuXG5pbXBvcnQgKiBhcyBncnBjIGZyb20gJ0BncnBjL2dycGMtanMnO1xuaW1wb3J0IHsgR3FsZGJDb25maWcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBBbGxIb3N0c0ZhaWxlZEVycm9yLCBDb25uZWN0aW9uQ2xvc2VkRXJyb3IsIE5vQ29ubmVjdGlvbkVycm9yIH0gZnJvbSAnLi9lcnJvcnMnO1xuXG4vKiogUmVwcmVzZW50cyBhIHNpbmdsZSBnUlBDIGNvbm5lY3Rpb24gKi9cbmludGVyZmFjZSBDb25uZWN0aW9uIHtcbiAgaG9zdDogc3RyaW5nO1xuICBjbGllbnQ6IGdycGMuQ2xpZW50O1xuICBoZWFsdGh5OiBib29sZWFuO1xuICBsYXN0UGluZzogbnVtYmVyO1xufVxuXG4vKiogTWFuYWdlcyBhIHBvb2wgb2YgY29ubmVjdGlvbnMgdG8gR1FMREIgc2VydmVycyAqL1xuZXhwb3J0IGNsYXNzIENvbm5lY3Rpb25Qb29sIHtcbiAgcHJpdmF0ZSBjb25maWc6IEdxbGRiQ29uZmlnO1xuICBwcml2YXRlIGNvbm5lY3Rpb25zOiBNYXA8c3RyaW5nLCBDb25uZWN0aW9uPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBjbG9zZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBoZWFsdGhDaGVja1RpbWVyPzogTm9kZUpTLlRpbWVvdXQ7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBHcWxkYkNvbmZpZykge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMuaW5pdENvbm5lY3Rpb25zKCk7XG4gICAgdGhpcy5zdGFydEhlYWx0aENoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRDb25uZWN0aW9ucygpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGhvc3Qgb2YgdGhpcy5jb25maWcuaG9zdHMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNvbm4gPSB0aGlzLmNyZWF0ZUNvbm5lY3Rpb24oaG9zdCk7XG4gICAgICAgIHRoaXMuY29ubmVjdGlvbnMuc2V0KGhvc3QsIGNvbm4pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBDb250aW51ZSB3aXRoIG90aGVyIGhvc3RzXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBjb25uZWN0IHRvICR7aG9zdH06YCwgZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29ubmVjdGlvbnMuc2l6ZSA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEFsbEhvc3RzRmFpbGVkRXJyb3IoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNvbm5lY3Rpb24oaG9zdDogc3RyaW5nKTogQ29ubmVjdGlvbiB7XG4gICAgbGV0IGNyZWRlbnRpYWxzOiBncnBjLkNoYW5uZWxDcmVkZW50aWFscztcblxuICAgIGlmICh0aGlzLmNvbmZpZy50bHNPcHRpb25zKSB7XG4gICAgICBjcmVkZW50aWFscyA9IGdycGMuY3JlZGVudGlhbHMuY3JlYXRlU3NsKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNyZWRlbnRpYWxzID0gZ3JwYy5jcmVkZW50aWFscy5jcmVhdGVJbnNlY3VyZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnM6IGdycGMuQ2hhbm5lbE9wdGlvbnMgPSB7XG4gICAgICAnZ3JwYy5tYXhfcmVjZWl2ZV9tZXNzYWdlX2xlbmd0aCc6IHRoaXMuY29uZmlnLm1heFJlY3ZTaXplID8/IDY0ICogMTAyNCAqIDEwMjQsXG4gICAgICAnZ3JwYy5tYXhfc2VuZF9tZXNzYWdlX2xlbmd0aCc6IHRoaXMuY29uZmlnLm1heFJlY3ZTaXplID8/IDY0ICogMTAyNCAqIDEwMjQsXG4gICAgICAnZ3JwYy5rZWVwYWxpdmVfdGltZV9tcyc6IDMwMDAwLFxuICAgICAgJ2dycGMua2VlcGFsaXZlX3RpbWVvdXRfbXMnOiAxMDAwMCxcbiAgICAgICdncnBjLmtlZXBhbGl2ZV9wZXJtaXRfd2l0aG91dF9jYWxscyc6IDEsXG4gICAgfTtcblxuICAgIC8vIENyZWF0ZSBhIGdlbmVyaWMgY2xpZW50IGZvciB0aGUgY2hhbm5lbFxuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBncnBjLkNsaWVudChob3N0LCBjcmVkZW50aWFscywgb3B0aW9ucyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaG9zdCxcbiAgICAgIGNsaWVudCxcbiAgICAgIGhlYWx0aHk6IHRydWUsXG4gICAgICBsYXN0UGluZzogRGF0ZS5ub3coKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqIEdldCBhIGhlYWx0aHkgY29ubmVjdGlvbiBmcm9tIHRoZSBwb29sICovXG4gIGdldENvbm5lY3Rpb24oKTogZ3JwYy5DbGllbnQge1xuICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgdGhyb3cgbmV3IENvbm5lY3Rpb25DbG9zZWRFcnJvcigpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY29ubiBvZiB0aGlzLmNvbm5lY3Rpb25zLnZhbHVlcygpKSB7XG4gICAgICBpZiAoY29ubi5oZWFsdGh5KSB7XG4gICAgICAgIHJldHVybiBjb25uLmNsaWVudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgTm9Db25uZWN0aW9uRXJyb3IoKTtcbiAgfVxuXG4gIC8qKiBHZXQgYSBjb25uZWN0aW9uIGZvciBhIHNwZWNpZmljIGhvc3QgKi9cbiAgZ2V0Q29ubmVjdGlvbkZvckhvc3QoaG9zdDogc3RyaW5nKTogZ3JwYy5DbGllbnQge1xuICAgIGNvbnN0IGNvbm4gPSB0aGlzLmNvbm5lY3Rpb25zLmdldChob3N0KTtcbiAgICBpZiAoIWNvbm4gfHwgIWNvbm4uaGVhbHRoeSkge1xuICAgICAgdGhyb3cgbmV3IE5vQ29ubmVjdGlvbkVycm9yKCk7XG4gICAgfVxuICAgIHJldHVybiBjb25uLmNsaWVudDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRIZWFsdGhDaGVjaygpOiB2b2lkIHtcbiAgICBjb25zdCBpbnRlcnZhbCA9IHRoaXMuY29uZmlnLmhlYWx0aENoZWNrSW50ZXJ2YWwgPz8gMzAwMDA7XG4gICAgaWYgKGludGVydmFsID4gMCkge1xuICAgICAgdGhpcy5oZWFsdGhDaGVja1RpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy5jaGVja0hlYWx0aCgpLCBpbnRlcnZhbCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0hlYWx0aCgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IFtob3N0LCBjb25uXSBvZiB0aGlzLmNvbm5lY3Rpb25zKSB7XG4gICAgICBjb25zdCBzdGF0ZSA9IGNvbm4uY2xpZW50LmdldENoYW5uZWwoKS5nZXRDb25uZWN0aXZpdHlTdGF0ZShmYWxzZSk7XG4gICAgICBjb25zdCBoZWFsdGh5ID0gc3RhdGUgPT09IGdycGMuY29ubmVjdGl2aXR5U3RhdGUuUkVBRFkgfHxcbiAgICAgICAgICAgICAgICAgICAgIHN0YXRlID09PSBncnBjLmNvbm5lY3Rpdml0eVN0YXRlLklETEU7XG5cbiAgICAgIGNvbm4uaGVhbHRoeSA9IGhlYWx0aHk7XG4gICAgICBpZiAoaGVhbHRoeSkge1xuICAgICAgICBjb25uLmxhc3RQaW5nID0gRGF0ZS5ub3coKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVjb25uZWN0KGhvc3QpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVjb25uZWN0KGhvc3Q6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmNsb3NlZCkgcmV0dXJuO1xuXG4gICAgY29uc3Qgb2xkQ29ubiA9IHRoaXMuY29ubmVjdGlvbnMuZ2V0KGhvc3QpO1xuICAgIGlmIChvbGRDb25uKSB7XG4gICAgICB0cnkge1xuICAgICAgICBvbGRDb25uLmNsaWVudC5jbG9zZSgpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBJZ25vcmVcbiAgICAgIH1cbiAgICAgIHRoaXMuY29ubmVjdGlvbnMuZGVsZXRlKGhvc3QpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBuZXdDb25uID0gdGhpcy5jcmVhdGVDb25uZWN0aW9uKGhvc3QpO1xuICAgICAgdGhpcy5jb25uZWN0aW9ucy5zZXQoaG9zdCwgbmV3Q29ubik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gTG9nIGFuZCBjb250aW51ZVxuICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIHJlY29ubmVjdCB0byAke2hvc3R9OmAsIGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDbG9zZSBhbGwgY29ubmVjdGlvbnMgaW4gdGhlIHBvb2wgKi9cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKSByZXR1cm47XG5cbiAgICB0aGlzLmNsb3NlZCA9IHRydWU7XG5cbiAgICBpZiAodGhpcy5oZWFsdGhDaGVja1RpbWVyKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuaGVhbHRoQ2hlY2tUaW1lcik7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjb25uIG9mIHRoaXMuY29ubmVjdGlvbnMudmFsdWVzKCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbm4uY2xpZW50LmNsb3NlKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIElnbm9yZVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY29ubmVjdGlvbnMuY2xlYXIoKTtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIG51bWJlciBvZiBoZWFsdGh5IGhvc3RzICovXG4gIGhlYWx0aHlIb3N0Q291bnQoKTogbnVtYmVyIHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGZvciAoY29uc3QgY29ubiBvZiB0aGlzLmNvbm5lY3Rpb25zLnZhbHVlcygpKSB7XG4gICAgICBpZiAoY29ubi5oZWFsdGh5KSBjb3VudCsrO1xuICAgIH1cbiAgICByZXR1cm4gY291bnQ7XG4gIH1cblxuICAvKiogR2V0IHRoZSBsaXN0IG9mIGNvbmZpZ3VyZWQgaG9zdHMgKi9cbiAgaG9zdHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuY29ubmVjdGlvbnMua2V5cygpKTtcbiAgfVxuXG4gIC8qKiBDaGVjayBpZiB0aGUgcG9vbCBpcyBjbG9zZWQgKi9cbiAgaXNDbG9zZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2xvc2VkO1xuICB9XG59XG4iXX0=
package/dist/index.d.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export { GqldbClient, QueryConfig, InsertConfig, HealthWatcher } from './client';
5
5
  export { GqldbConfig, ConfigBuilder, createConfig, validateConfig, DEFAULT_CONFIG } from './config';
6
- export { PropertyType, GraphType, HealthStatus, CacheType, TypedValue, createTypedValue, typedValueToJS, Parameter, createParameter, Point, Point3D, NodeData, EdgeData, GraphInfo, TransactionInfo, ASTCacheStats, PlanCacheStats, CacheStats, Statistics, SystemMetrics, CpuMetrics, MemoryMetrics, DiskIOMetrics, StorageMetrics, NetworkMetrics, ExportedNode, ExportedEdge, BulkCreateNodesOptions, BulkCreateEdgesOptions, BulkImportOptions, BulkImportSession, CheckpointResult, EndBulkImportResult, AbortBulkImportResult, BulkImportStatus, Schema, PropertyDef, Header, Table, Attr, } from './types';
6
+ export { PropertyType, GraphType, HealthStatus, CacheType, InsertType, TypedValue, createTypedValue, typedValueToJS, Parameter, createParameter, Point, Point3D, NodeData, EdgeData, GraphInfo, TransactionInfo, ASTCacheStats, PlanCacheStats, CacheStats, Statistics, SystemMetrics, CpuMetrics, MemoryMetrics, DiskIOMetrics, StorageMetrics, NetworkMetrics, ExportedNode, ExportedEdge, BulkCreateNodesOptions, BulkCreateEdgesOptions, BulkImportOptions, BulkImportSession, CheckpointResult, EndBulkImportResult, AbortBulkImportResult, BulkImportStatus, Schema, PropertyDef, Header, Table, Attr, } from './types';
7
7
  export { Response, Row, InsertNodesResult, InsertEdgesResult, DeleteResult, ExportNodesResult, ExportEdgesResult, Node, Edge, Path, NodeResult, EdgeResult, } from './response';
8
8
  export { printNodes, printNodesWithoutSchema, printEdges, printEdgesWithoutSchema, printPaths, printTable, printAny, } from './printers';
9
9
  export { Session, SessionManager } from './session';
package/dist/index.js CHANGED
@@ -3,8 +3,8 @@
3
3
  * GQLDB Node.js Driver - A gRPC-based client for GQLDB graph database.
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.GraphExistsError = exports.GraphNotFoundError = exports.EmptyQueryError = exports.InvalidQueryError = exports.QueryTimeoutError = exports.QueryFailedError = exports.TransactionAlreadyOpenError = exports.TransactionNotFoundError = exports.TransactionFailedError = exports.NoTransactionError = exports.InvalidSessionError = exports.SessionExpiredError = exports.LogoutFailedError = exports.LoginFailedError = exports.NotLoggedInError = exports.HealthCheckFailedError = exports.AllHostsFailedError = exports.ConnectionFailedError = exports.ConnectionClosedError = exports.NoConnectionError = exports.InvalidTimeoutError = exports.NoHostsError = exports.GqldbError = exports.promisifyCallWithDeadline = exports.promisifyCall = exports.createServiceClients = exports.ConnectionPool = exports.TransactionManager = exports.SessionManager = exports.printAny = exports.printTable = exports.printPaths = exports.printEdgesWithoutSchema = exports.printEdges = exports.printNodesWithoutSchema = exports.printNodes = exports.Row = exports.Response = exports.createParameter = exports.typedValueToJS = exports.createTypedValue = exports.CacheType = exports.HealthStatus = exports.GraphType = exports.PropertyType = exports.DEFAULT_CONFIG = exports.validateConfig = exports.createConfig = exports.ConfigBuilder = exports.GqldbClient = void 0;
7
- exports.VERSION = exports.UnsupportedTypeError = exports.TypeConversionError = exports.InvalidTypeError = exports.ExportFailedError = exports.DeleteFailedError = exports.InsertFailedError = exports.DropGraphFailedError = exports.CreateGraphFailedError = void 0;
6
+ exports.GraphNotFoundError = exports.EmptyQueryError = exports.InvalidQueryError = exports.QueryTimeoutError = exports.QueryFailedError = exports.TransactionAlreadyOpenError = exports.TransactionNotFoundError = exports.TransactionFailedError = exports.NoTransactionError = exports.InvalidSessionError = exports.SessionExpiredError = exports.LogoutFailedError = exports.LoginFailedError = exports.NotLoggedInError = exports.HealthCheckFailedError = exports.AllHostsFailedError = exports.ConnectionFailedError = exports.ConnectionClosedError = exports.NoConnectionError = exports.InvalidTimeoutError = exports.NoHostsError = exports.GqldbError = exports.promisifyCallWithDeadline = exports.promisifyCall = exports.createServiceClients = exports.ConnectionPool = exports.TransactionManager = exports.SessionManager = exports.printAny = exports.printTable = exports.printPaths = exports.printEdgesWithoutSchema = exports.printEdges = exports.printNodesWithoutSchema = exports.printNodes = exports.Row = exports.Response = exports.createParameter = exports.typedValueToJS = exports.createTypedValue = exports.InsertType = exports.CacheType = exports.HealthStatus = exports.GraphType = exports.PropertyType = exports.DEFAULT_CONFIG = exports.validateConfig = exports.createConfig = exports.ConfigBuilder = exports.GqldbClient = void 0;
7
+ exports.VERSION = exports.UnsupportedTypeError = exports.TypeConversionError = exports.InvalidTypeError = exports.ExportFailedError = exports.DeleteFailedError = exports.InsertFailedError = exports.DropGraphFailedError = exports.CreateGraphFailedError = exports.GraphExistsError = void 0;
8
8
  // Main client
9
9
  var client_1 = require("./client");
10
10
  Object.defineProperty(exports, "GqldbClient", { enumerable: true, get: function () { return client_1.GqldbClient; } });
@@ -20,6 +20,7 @@ Object.defineProperty(exports, "PropertyType", { enumerable: true, get: function
20
20
  Object.defineProperty(exports, "GraphType", { enumerable: true, get: function () { return types_1.GraphType; } });
21
21
  Object.defineProperty(exports, "HealthStatus", { enumerable: true, get: function () { return types_1.HealthStatus; } });
22
22
  Object.defineProperty(exports, "CacheType", { enumerable: true, get: function () { return types_1.CacheType; } });
23
+ Object.defineProperty(exports, "InsertType", { enumerable: true, get: function () { return types_1.InsertType; } });
23
24
  Object.defineProperty(exports, "createTypedValue", { enumerable: true, get: function () { return types_1.createTypedValue; } });
24
25
  Object.defineProperty(exports, "typedValueToJS", { enumerable: true, get: function () { return types_1.typedValueToJS; } });
25
26
  Object.defineProperty(exports, "createParameter", { enumerable: true, get: function () { return types_1.createParameter; } });
@@ -85,4 +86,4 @@ Object.defineProperty(exports, "TypeConversionError", { enumerable: true, get: f
85
86
  Object.defineProperty(exports, "UnsupportedTypeError", { enumerable: true, get: function () { return errors_1.UnsupportedTypeError; } });
86
87
  // Version
87
88
  exports.VERSION = '0.1.0';
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7O0FBRUgsY0FBYztBQUNkLG1DQUFpRjtBQUF4RSxxR0FBQSxXQUFXLE9BQUE7QUFFcEIsZ0JBQWdCO0FBQ2hCLG1DQUFvRztBQUE5RSx1R0FBQSxhQUFhLE9BQUE7QUFBRSxzR0FBQSxZQUFZLE9BQUE7QUFBRSx3R0FBQSxjQUFjLE9BQUE7QUFBRSx3R0FBQSxjQUFjLE9BQUE7QUFFakYsUUFBUTtBQUNSLGlDQXlDaUI7QUF4Q2YscUdBQUEsWUFBWSxPQUFBO0FBQ1osa0dBQUEsU0FBUyxPQUFBO0FBQ1QscUdBQUEsWUFBWSxPQUFBO0FBQ1osa0dBQUEsU0FBUyxPQUFBO0FBRVQseUdBQUEsZ0JBQWdCLE9BQUE7QUFDaEIsdUdBQUEsY0FBYyxPQUFBO0FBRWQsd0dBQUEsZUFBZSxPQUFBO0FBa0NqQixXQUFXO0FBQ1gsdUNBYW9CO0FBWmxCLG9HQUFBLFFBQVEsT0FBQTtBQUNSLCtGQUFBLEdBQUcsT0FBQTtBQWFMLFdBQVc7QUFDWCx1Q0FRb0I7QUFQbEIsc0dBQUEsVUFBVSxPQUFBO0FBQ1YsbUhBQUEsdUJBQXVCLE9BQUE7QUFDdkIsc0dBQUEsVUFBVSxPQUFBO0FBQ1YsbUhBQUEsdUJBQXVCLE9BQUE7QUFDdkIsc0dBQUEsVUFBVSxPQUFBO0FBQ1Ysc0dBQUEsVUFBVSxPQUFBO0FBQ1Ysb0dBQUEsUUFBUSxPQUFBO0FBR1YsVUFBVTtBQUNWLHFDQUFvRDtBQUFsQyx5R0FBQSxjQUFjLE9BQUE7QUFFaEMsY0FBYztBQUNkLDZDQUFnRTtBQUExQyxpSEFBQSxrQkFBa0IsT0FBQTtBQUV4QyxhQUFhO0FBQ2IsMkNBQThDO0FBQXJDLDRHQUFBLGNBQWMsT0FBQTtBQUV2QixXQUFXO0FBQ1gsdUNBQTRHO0FBQW5HLGdIQUFBLG9CQUFvQixPQUFBO0FBQWtCLHlHQUFBLGFBQWEsT0FBQTtBQUFFLHFIQUFBLHlCQUF5QixPQUFBO0FBRXZGLFNBQVM7QUFDVCxtQ0FnQ2tCO0FBL0JoQixvR0FBQSxVQUFVLE9BQUE7QUFDVixzR0FBQSxZQUFZLE9BQUE7QUFDWiw2R0FBQSxtQkFBbUIsT0FBQTtBQUNuQiwyR0FBQSxpQkFBaUIsT0FBQTtBQUNqQiwrR0FBQSxxQkFBcUIsT0FBQTtBQUNyQiwrR0FBQSxxQkFBcUIsT0FBQTtBQUNyQiw2R0FBQSxtQkFBbUIsT0FBQTtBQUNuQixnSEFBQSxzQkFBc0IsT0FBQTtBQUN0QiwwR0FBQSxnQkFBZ0IsT0FBQTtBQUNoQiwwR0FBQSxnQkFBZ0IsT0FBQTtBQUNoQiwyR0FBQSxpQkFBaUIsT0FBQTtBQUNqQiw2R0FBQSxtQkFBbUIsT0FBQTtBQUNuQiw2R0FBQSxtQkFBbUIsT0FBQTtBQUNuQiw0R0FBQSxrQkFBa0IsT0FBQTtBQUNsQixnSEFBQSxzQkFBc0IsT0FBQTtBQUN0QixrSEFBQSx3QkFBd0IsT0FBQTtBQUN4QixxSEFBQSwyQkFBMkIsT0FBQTtBQUMzQiwwR0FBQSxnQkFBZ0IsT0FBQTtBQUNoQiwyR0FBQSxpQkFBaUIsT0FBQTtBQUNqQiwyR0FBQSxpQkFBaUIsT0FBQTtBQUNqQix5R0FBQSxlQUFlLE9BQUE7QUFDZiw0R0FBQSxrQkFBa0IsT0FBQTtBQUNsQiwwR0FBQSxnQkFBZ0IsT0FBQTtBQUNoQixnSEFBQSxzQkFBc0IsT0FBQTtBQUN0Qiw4R0FBQSxvQkFBb0IsT0FBQTtBQUNwQiwyR0FBQSxpQkFBaUIsT0FBQTtBQUNqQiwyR0FBQSxpQkFBaUIsT0FBQTtBQUNqQiwyR0FBQSxpQkFBaUIsT0FBQTtBQUNqQiwwR0FBQSxnQkFBZ0IsT0FBQTtBQUNoQiw2R0FBQSxtQkFBbUIsT0FBQTtBQUNuQiw4R0FBQSxvQkFBb0IsT0FBQTtBQUd0QixVQUFVO0FBQ0csUUFBQSxPQUFPLEdBQUcsT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHUUxEQiBOb2RlLmpzIERyaXZlciAtIEEgZ1JQQy1iYXNlZCBjbGllbnQgZm9yIEdRTERCIGdyYXBoIGRhdGFiYXNlLlxuICovXG5cbi8vIE1haW4gY2xpZW50XG5leHBvcnQgeyBHcWxkYkNsaWVudCwgUXVlcnlDb25maWcsIEluc2VydENvbmZpZywgSGVhbHRoV2F0Y2hlciB9IGZyb20gJy4vY2xpZW50JztcblxuLy8gQ29uZmlndXJhdGlvblxuZXhwb3J0IHsgR3FsZGJDb25maWcsIENvbmZpZ0J1aWxkZXIsIGNyZWF0ZUNvbmZpZywgdmFsaWRhdGVDb25maWcsIERFRkFVTFRfQ09ORklHIH0gZnJvbSAnLi9jb25maWcnO1xuXG4vLyBUeXBlc1xuZXhwb3J0IHtcbiAgUHJvcGVydHlUeXBlLFxuICBHcmFwaFR5cGUsXG4gIEhlYWx0aFN0YXR1cyxcbiAgQ2FjaGVUeXBlLFxuICBUeXBlZFZhbHVlLFxuICBjcmVhdGVUeXBlZFZhbHVlLFxuICB0eXBlZFZhbHVlVG9KUyxcbiAgUGFyYW1ldGVyLFxuICBjcmVhdGVQYXJhbWV0ZXIsXG4gIFBvaW50LFxuICBQb2ludDNELFxuICBOb2RlRGF0YSxcbiAgRWRnZURhdGEsXG4gIEdyYXBoSW5mbyxcbiAgVHJhbnNhY3Rpb25JbmZvLFxuICBBU1RDYWNoZVN0YXRzLFxuICBQbGFuQ2FjaGVTdGF0cyxcbiAgQ2FjaGVTdGF0cyxcbiAgU3RhdGlzdGljcyxcbiAgU3lzdGVtTWV0cmljcyxcbiAgQ3B1TWV0cmljcyxcbiAgTWVtb3J5TWV0cmljcyxcbiAgRGlza0lPTWV0cmljcyxcbiAgU3RvcmFnZU1ldHJpY3MsXG4gIE5ldHdvcmtNZXRyaWNzLFxuICBFeHBvcnRlZE5vZGUsXG4gIEV4cG9ydGVkRWRnZSxcbiAgQnVsa0NyZWF0ZU5vZGVzT3B0aW9ucyxcbiAgQnVsa0NyZWF0ZUVkZ2VzT3B0aW9ucyxcbiAgQnVsa0ltcG9ydE9wdGlvbnMsXG4gIEJ1bGtJbXBvcnRTZXNzaW9uLFxuICBDaGVja3BvaW50UmVzdWx0LFxuICBFbmRCdWxrSW1wb3J0UmVzdWx0LFxuICBBYm9ydEJ1bGtJbXBvcnRSZXN1bHQsXG4gIEJ1bGtJbXBvcnRTdGF0dXMsXG4gIFNjaGVtYSxcbiAgUHJvcGVydHlEZWYsXG4gIEhlYWRlcixcbiAgVGFibGUsXG4gIEF0dHIsXG59IGZyb20gJy4vdHlwZXMnO1xuXG4vLyBSZXNwb25zZVxuZXhwb3J0IHtcbiAgUmVzcG9uc2UsXG4gIFJvdyxcbiAgSW5zZXJ0Tm9kZXNSZXN1bHQsXG4gIEluc2VydEVkZ2VzUmVzdWx0LFxuICBEZWxldGVSZXN1bHQsXG4gIEV4cG9ydE5vZGVzUmVzdWx0LFxuICBFeHBvcnRFZGdlc1Jlc3VsdCxcbiAgTm9kZSxcbiAgRWRnZSxcbiAgUGF0aCxcbiAgTm9kZVJlc3VsdCxcbiAgRWRnZVJlc3VsdCxcbn0gZnJvbSAnLi9yZXNwb25zZSc7XG5cbi8vIFByaW50ZXJzXG5leHBvcnQge1xuICBwcmludE5vZGVzLFxuICBwcmludE5vZGVzV2l0aG91dFNjaGVtYSxcbiAgcHJpbnRFZGdlcyxcbiAgcHJpbnRFZGdlc1dpdGhvdXRTY2hlbWEsXG4gIHByaW50UGF0aHMsXG4gIHByaW50VGFibGUsXG4gIHByaW50QW55LFxufSBmcm9tICcuL3ByaW50ZXJzJztcblxuLy8gU2Vzc2lvblxuZXhwb3J0IHsgU2Vzc2lvbiwgU2Vzc2lvbk1hbmFnZXIgfSBmcm9tICcuL3Nlc3Npb24nO1xuXG4vLyBUcmFuc2FjdGlvblxuZXhwb3J0IHsgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uTWFuYWdlciB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuXG4vLyBDb25uZWN0aW9uXG5leHBvcnQgeyBDb25uZWN0aW9uUG9vbCB9IGZyb20gJy4vY29ubmVjdGlvbic7XG5cbi8vIFNlcnZpY2VzXG5leHBvcnQgeyBjcmVhdGVTZXJ2aWNlQ2xpZW50cywgU2VydmljZUNsaWVudHMsIHByb21pc2lmeUNhbGwsIHByb21pc2lmeUNhbGxXaXRoRGVhZGxpbmUgfSBmcm9tICcuL3NlcnZpY2VzJztcblxuLy8gRXJyb3JzXG5leHBvcnQge1xuICBHcWxkYkVycm9yLFxuICBOb0hvc3RzRXJyb3IsXG4gIEludmFsaWRUaW1lb3V0RXJyb3IsXG4gIE5vQ29ubmVjdGlvbkVycm9yLFxuICBDb25uZWN0aW9uQ2xvc2VkRXJyb3IsXG4gIENvbm5lY3Rpb25GYWlsZWRFcnJvcixcbiAgQWxsSG9zdHNGYWlsZWRFcnJvcixcbiAgSGVhbHRoQ2hlY2tGYWlsZWRFcnJvcixcbiAgTm90TG9nZ2VkSW5FcnJvcixcbiAgTG9naW5GYWlsZWRFcnJvcixcbiAgTG9nb3V0RmFpbGVkRXJyb3IsXG4gIFNlc3Npb25FeHBpcmVkRXJyb3IsXG4gIEludmFsaWRTZXNzaW9uRXJyb3IsXG4gIE5vVHJhbnNhY3Rpb25FcnJvcixcbiAgVHJhbnNhY3Rpb25GYWlsZWRFcnJvcixcbiAgVHJhbnNhY3Rpb25Ob3RGb3VuZEVycm9yLFxuICBUcmFuc2FjdGlvbkFscmVhZHlPcGVuRXJyb3IsXG4gIFF1ZXJ5RmFpbGVkRXJyb3IsXG4gIFF1ZXJ5VGltZW91dEVycm9yLFxuICBJbnZhbGlkUXVlcnlFcnJvcixcbiAgRW1wdHlRdWVyeUVycm9yLFxuICBHcmFwaE5vdEZvdW5kRXJyb3IsXG4gIEdyYXBoRXhpc3RzRXJyb3IsXG4gIENyZWF0ZUdyYXBoRmFpbGVkRXJyb3IsXG4gIERyb3BHcmFwaEZhaWxlZEVycm9yLFxuICBJbnNlcnRGYWlsZWRFcnJvcixcbiAgRGVsZXRlRmFpbGVkRXJyb3IsXG4gIEV4cG9ydEZhaWxlZEVycm9yLFxuICBJbnZhbGlkVHlwZUVycm9yLFxuICBUeXBlQ29udmVyc2lvbkVycm9yLFxuICBVbnN1cHBvcnRlZFR5cGVFcnJvcixcbn0gZnJvbSAnLi9lcnJvcnMnO1xuXG4vLyBWZXJzaW9uXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9ICcwLjEuMCc7XG4iXX0=
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7O0FBRUgsY0FBYztBQUNkLG1DQUFpRjtBQUF4RSxxR0FBQSxXQUFXLE9BQUE7QUFFcEIsZ0JBQWdCO0FBQ2hCLG1DQUFvRztBQUE5RSx1R0FBQSxhQUFhLE9BQUE7QUFBRSxzR0FBQSxZQUFZLE9BQUE7QUFBRSx3R0FBQSxjQUFjLE9BQUE7QUFBRSx3R0FBQSxjQUFjLE9BQUE7QUFFakYsUUFBUTtBQUNSLGlDQTBDaUI7QUF6Q2YscUdBQUEsWUFBWSxPQUFBO0FBQ1osa0dBQUEsU0FBUyxPQUFBO0FBQ1QscUdBQUEsWUFBWSxPQUFBO0FBQ1osa0dBQUEsU0FBUyxPQUFBO0FBQ1QsbUdBQUEsVUFBVSxPQUFBO0FBRVYseUdBQUEsZ0JBQWdCLE9BQUE7QUFDaEIsdUdBQUEsY0FBYyxPQUFBO0FBRWQsd0dBQUEsZUFBZSxPQUFBO0FBa0NqQixXQUFXO0FBQ1gsdUNBYW9CO0FBWmxCLG9HQUFBLFFBQVEsT0FBQTtBQUNSLCtGQUFBLEdBQUcsT0FBQTtBQWFMLFdBQVc7QUFDWCx1Q0FRb0I7QUFQbEIsc0dBQUEsVUFBVSxPQUFBO0FBQ1YsbUhBQUEsdUJBQXVCLE9BQUE7QUFDdkIsc0dBQUEsVUFBVSxPQUFBO0FBQ1YsbUhBQUEsdUJBQXVCLE9BQUE7QUFDdkIsc0dBQUEsVUFBVSxPQUFBO0FBQ1Ysc0dBQUEsVUFBVSxPQUFBO0FBQ1Ysb0dBQUEsUUFBUSxPQUFBO0FBR1YsVUFBVTtBQUNWLHFDQUFvRDtBQUFsQyx5R0FBQSxjQUFjLE9BQUE7QUFFaEMsY0FBYztBQUNkLDZDQUFnRTtBQUExQyxpSEFBQSxrQkFBa0IsT0FBQTtBQUV4QyxhQUFhO0FBQ2IsMkNBQThDO0FBQXJDLDRHQUFBLGNBQWMsT0FBQTtBQUV2QixXQUFXO0FBQ1gsdUNBQTRHO0FBQW5HLGdIQUFBLG9CQUFvQixPQUFBO0FBQWtCLHlHQUFBLGFBQWEsT0FBQTtBQUFFLHFIQUFBLHlCQUF5QixPQUFBO0FBRXZGLFNBQVM7QUFDVCxtQ0FnQ2tCO0FBL0JoQixvR0FBQSxVQUFVLE9BQUE7QUFDVixzR0FBQSxZQUFZLE9BQUE7QUFDWiw2R0FBQSxtQkFBbUIsT0FBQTtBQUNuQiwyR0FBQSxpQkFBaUIsT0FBQTtBQUNqQiwrR0FBQSxxQkFBcUIsT0FBQTtBQUNyQiwrR0FBQSxxQkFBcUIsT0FBQTtBQUNyQiw2R0FBQSxtQkFBbUIsT0FBQTtBQUNuQixnSEFBQSxzQkFBc0IsT0FBQTtBQUN0QiwwR0FBQSxnQkFBZ0IsT0FBQTtBQUNoQiwwR0FBQSxnQkFBZ0IsT0FBQTtBQUNoQiwyR0FBQSxpQkFBaUIsT0FBQTtBQUNqQiw2R0FBQSxtQkFBbUIsT0FBQTtBQUNuQiw2R0FBQSxtQkFBbUIsT0FBQTtBQUNuQiw0R0FBQSxrQkFBa0IsT0FBQTtBQUNsQixnSEFBQSxzQkFBc0IsT0FBQTtBQUN0QixrSEFBQSx3QkFBd0IsT0FBQTtBQUN4QixxSEFBQSwyQkFBMkIsT0FBQTtBQUMzQiwwR0FBQSxnQkFBZ0IsT0FBQTtBQUNoQiwyR0FBQSxpQkFBaUIsT0FBQTtBQUNqQiwyR0FBQSxpQkFBaUIsT0FBQTtBQUNqQix5R0FBQSxlQUFlLE9BQUE7QUFDZiw0R0FBQSxrQkFBa0IsT0FBQTtBQUNsQiwwR0FBQSxnQkFBZ0IsT0FBQTtBQUNoQixnSEFBQSxzQkFBc0IsT0FBQTtBQUN0Qiw4R0FBQSxvQkFBb0IsT0FBQTtBQUNwQiwyR0FBQSxpQkFBaUIsT0FBQTtBQUNqQiwyR0FBQSxpQkFBaUIsT0FBQTtBQUNqQiwyR0FBQSxpQkFBaUIsT0FBQTtBQUNqQiwwR0FBQSxnQkFBZ0IsT0FBQTtBQUNoQiw2R0FBQSxtQkFBbUIsT0FBQTtBQUNuQiw4R0FBQSxvQkFBb0IsT0FBQTtBQUd0QixVQUFVO0FBQ0csUUFBQSxPQUFPLEdBQUcsT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHUUxEQiBOb2RlLmpzIERyaXZlciAtIEEgZ1JQQy1iYXNlZCBjbGllbnQgZm9yIEdRTERCIGdyYXBoIGRhdGFiYXNlLlxuICovXG5cbi8vIE1haW4gY2xpZW50XG5leHBvcnQgeyBHcWxkYkNsaWVudCwgUXVlcnlDb25maWcsIEluc2VydENvbmZpZywgSGVhbHRoV2F0Y2hlciB9IGZyb20gJy4vY2xpZW50JztcblxuLy8gQ29uZmlndXJhdGlvblxuZXhwb3J0IHsgR3FsZGJDb25maWcsIENvbmZpZ0J1aWxkZXIsIGNyZWF0ZUNvbmZpZywgdmFsaWRhdGVDb25maWcsIERFRkFVTFRfQ09ORklHIH0gZnJvbSAnLi9jb25maWcnO1xuXG4vLyBUeXBlc1xuZXhwb3J0IHtcbiAgUHJvcGVydHlUeXBlLFxuICBHcmFwaFR5cGUsXG4gIEhlYWx0aFN0YXR1cyxcbiAgQ2FjaGVUeXBlLFxuICBJbnNlcnRUeXBlLFxuICBUeXBlZFZhbHVlLFxuICBjcmVhdGVUeXBlZFZhbHVlLFxuICB0eXBlZFZhbHVlVG9KUyxcbiAgUGFyYW1ldGVyLFxuICBjcmVhdGVQYXJhbWV0ZXIsXG4gIFBvaW50LFxuICBQb2ludDNELFxuICBOb2RlRGF0YSxcbiAgRWRnZURhdGEsXG4gIEdyYXBoSW5mbyxcbiAgVHJhbnNhY3Rpb25JbmZvLFxuICBBU1RDYWNoZVN0YXRzLFxuICBQbGFuQ2FjaGVTdGF0cyxcbiAgQ2FjaGVTdGF0cyxcbiAgU3RhdGlzdGljcyxcbiAgU3lzdGVtTWV0cmljcyxcbiAgQ3B1TWV0cmljcyxcbiAgTWVtb3J5TWV0cmljcyxcbiAgRGlza0lPTWV0cmljcyxcbiAgU3RvcmFnZU1ldHJpY3MsXG4gIE5ldHdvcmtNZXRyaWNzLFxuICBFeHBvcnRlZE5vZGUsXG4gIEV4cG9ydGVkRWRnZSxcbiAgQnVsa0NyZWF0ZU5vZGVzT3B0aW9ucyxcbiAgQnVsa0NyZWF0ZUVkZ2VzT3B0aW9ucyxcbiAgQnVsa0ltcG9ydE9wdGlvbnMsXG4gIEJ1bGtJbXBvcnRTZXNzaW9uLFxuICBDaGVja3BvaW50UmVzdWx0LFxuICBFbmRCdWxrSW1wb3J0UmVzdWx0LFxuICBBYm9ydEJ1bGtJbXBvcnRSZXN1bHQsXG4gIEJ1bGtJbXBvcnRTdGF0dXMsXG4gIFNjaGVtYSxcbiAgUHJvcGVydHlEZWYsXG4gIEhlYWRlcixcbiAgVGFibGUsXG4gIEF0dHIsXG59IGZyb20gJy4vdHlwZXMnO1xuXG4vLyBSZXNwb25zZVxuZXhwb3J0IHtcbiAgUmVzcG9uc2UsXG4gIFJvdyxcbiAgSW5zZXJ0Tm9kZXNSZXN1bHQsXG4gIEluc2VydEVkZ2VzUmVzdWx0LFxuICBEZWxldGVSZXN1bHQsXG4gIEV4cG9ydE5vZGVzUmVzdWx0LFxuICBFeHBvcnRFZGdlc1Jlc3VsdCxcbiAgTm9kZSxcbiAgRWRnZSxcbiAgUGF0aCxcbiAgTm9kZVJlc3VsdCxcbiAgRWRnZVJlc3VsdCxcbn0gZnJvbSAnLi9yZXNwb25zZSc7XG5cbi8vIFByaW50ZXJzXG5leHBvcnQge1xuICBwcmludE5vZGVzLFxuICBwcmludE5vZGVzV2l0aG91dFNjaGVtYSxcbiAgcHJpbnRFZGdlcyxcbiAgcHJpbnRFZGdlc1dpdGhvdXRTY2hlbWEsXG4gIHByaW50UGF0aHMsXG4gIHByaW50VGFibGUsXG4gIHByaW50QW55LFxufSBmcm9tICcuL3ByaW50ZXJzJztcblxuLy8gU2Vzc2lvblxuZXhwb3J0IHsgU2Vzc2lvbiwgU2Vzc2lvbk1hbmFnZXIgfSBmcm9tICcuL3Nlc3Npb24nO1xuXG4vLyBUcmFuc2FjdGlvblxuZXhwb3J0IHsgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uTWFuYWdlciB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuXG4vLyBDb25uZWN0aW9uXG5leHBvcnQgeyBDb25uZWN0aW9uUG9vbCB9IGZyb20gJy4vY29ubmVjdGlvbic7XG5cbi8vIFNlcnZpY2VzXG5leHBvcnQgeyBjcmVhdGVTZXJ2aWNlQ2xpZW50cywgU2VydmljZUNsaWVudHMsIHByb21pc2lmeUNhbGwsIHByb21pc2lmeUNhbGxXaXRoRGVhZGxpbmUgfSBmcm9tICcuL3NlcnZpY2VzJztcblxuLy8gRXJyb3JzXG5leHBvcnQge1xuICBHcWxkYkVycm9yLFxuICBOb0hvc3RzRXJyb3IsXG4gIEludmFsaWRUaW1lb3V0RXJyb3IsXG4gIE5vQ29ubmVjdGlvbkVycm9yLFxuICBDb25uZWN0aW9uQ2xvc2VkRXJyb3IsXG4gIENvbm5lY3Rpb25GYWlsZWRFcnJvcixcbiAgQWxsSG9zdHNGYWlsZWRFcnJvcixcbiAgSGVhbHRoQ2hlY2tGYWlsZWRFcnJvcixcbiAgTm90TG9nZ2VkSW5FcnJvcixcbiAgTG9naW5GYWlsZWRFcnJvcixcbiAgTG9nb3V0RmFpbGVkRXJyb3IsXG4gIFNlc3Npb25FeHBpcmVkRXJyb3IsXG4gIEludmFsaWRTZXNzaW9uRXJyb3IsXG4gIE5vVHJhbnNhY3Rpb25FcnJvcixcbiAgVHJhbnNhY3Rpb25GYWlsZWRFcnJvcixcbiAgVHJhbnNhY3Rpb25Ob3RGb3VuZEVycm9yLFxuICBUcmFuc2FjdGlvbkFscmVhZHlPcGVuRXJyb3IsXG4gIFF1ZXJ5RmFpbGVkRXJyb3IsXG4gIFF1ZXJ5VGltZW91dEVycm9yLFxuICBJbnZhbGlkUXVlcnlFcnJvcixcbiAgRW1wdHlRdWVyeUVycm9yLFxuICBHcmFwaE5vdEZvdW5kRXJyb3IsXG4gIEdyYXBoRXhpc3RzRXJyb3IsXG4gIENyZWF0ZUdyYXBoRmFpbGVkRXJyb3IsXG4gIERyb3BHcmFwaEZhaWxlZEVycm9yLFxuICBJbnNlcnRGYWlsZWRFcnJvcixcbiAgRGVsZXRlRmFpbGVkRXJyb3IsXG4gIEV4cG9ydEZhaWxlZEVycm9yLFxuICBJbnZhbGlkVHlwZUVycm9yLFxuICBUeXBlQ29udmVyc2lvbkVycm9yLFxuICBVbnN1cHBvcnRlZFR5cGVFcnJvcixcbn0gZnJvbSAnLi9lcnJvcnMnO1xuXG4vLyBWZXJzaW9uXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9ICcwLjEuMCc7XG4iXX0=
@@ -245,10 +245,11 @@ function edgeDataToProto(edge) {
245
245
  }
246
246
  }
247
247
  return {
248
+ id: edge.id || '',
248
249
  label: edge.label || '',
249
250
  from_node_id: edge.fromNodeId || '',
250
251
  to_node_id: edge.toNodeId || '',
251
252
  properties,
252
253
  };
253
254
  }
254
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9jb252ZXJ0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7QUFtQkgsMENBZ0JDO0FBS0QsMENBTUM7QUFLRCxnREFnQkM7QUE0REQsOENBZ0NDO0FBS0Qsd0RBTUM7QUFLRCw0Q0FRQztBQUtELDRDQVdDO0FBS0QsNENBU0M7QUFLRCxrREFXQztBQUtELDRDQVNDO0FBS0QsMENBWUM7QUFLRCwwQ0FhQztBQXBSRCwwQ0FBNEM7QUFDNUMsb0NBUWtCO0FBS2xCOztHQUVHO0FBQ0gsU0FBZ0IsZUFBZSxDQUM3QixLQUFhLEVBQ2IsT0FBdUIsRUFDdkIsTUFBbUIsRUFDbkIsV0FBeUI7SUFFekIsT0FBTztRQUNMLEdBQUcsRUFBRSxLQUFLO1FBQ1YsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLElBQUksT0FBTyxFQUFFLFlBQVksSUFBSSxNQUFNLENBQUMsWUFBWSxJQUFJLEVBQUU7UUFDeEYsVUFBVSxFQUFFLGVBQWUsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDO1FBQ3BELFVBQVUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEdBQUc7UUFDMUMsY0FBYyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLElBQUksR0FBRztRQUM3RCxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxpQ0FBaUM7UUFDaEgsU0FBUyxFQUFFLFdBQVcsRUFBRSxRQUFRLElBQUksS0FBSztRQUN6QyxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsY0FBYyxJQUFJLENBQUM7S0FDbkQsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxNQUE0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QU87UUFDTCxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFO1FBQ2pCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUU7UUFDekIsVUFBVTtLQUNYLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixlQUFlLENBQUMsSUFBUztJQUN2QyxNQUFNLFVBQVUsR0FBd0IsRUFBRSxDQUFDO0lBQzNDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BCLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzNELFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFBLHdCQUFnQixFQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTztRQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDdkIsWUFBWSxFQUFFLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRTtRQUNuQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFO1FBQy9CLFVBQVU7S0FDWCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVHlwZSBjb252ZXJzaW9uIHV0aWxpdGllcyBiZXR3ZWVuIGdSUEMgcHJvdG8gdHlwZXMgYW5kIEphdmFTY3JpcHQgdHlwZXMuXG4gKi9cblxuaW1wb3J0IHsgUmVzcG9uc2UsIFJvdyB9IGZyb20gJy4uL3Jlc3BvbnNlJztcbmltcG9ydCB7XG4gIEdyYXBoVHlwZSxcbiAgSGVhbHRoU3RhdHVzLFxuICBDYWNoZVR5cGUsXG4gIEdyYXBoSW5mbyxcbiAgY3JlYXRlVHlwZWRWYWx1ZSxcbiAgUHJvcGVydHlUeXBlLFxuICB0eXBlZFZhbHVlVG9KUyxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgR3FsZGJDb25maWcgfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHsgU2Vzc2lvbiB9IGZyb20gJy4uL3Nlc3Npb24nO1xuaW1wb3J0IHsgUXVlcnlDb25maWcgfSBmcm9tICcuLi9jbGllbnQnO1xuXG4vKipcbiAqIEJ1aWxkIGEgR1FMIHJlcXVlc3QgZnJvbSBjb25maWcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEdxbFJlcXVlc3QoXG4gIHF1ZXJ5OiBzdHJpbmcsXG4gIHNlc3Npb246IFNlc3Npb24gfCBudWxsLFxuICBjb25maWc6IEdxbGRiQ29uZmlnLFxuICBxdWVyeUNvbmZpZz86IFF1ZXJ5Q29uZmlnXG4pOiBhbnkge1xuICByZXR1cm4ge1xuICAgIGdxbDogcXVlcnksXG4gICAgZ3JhcGhfbmFtZTogcXVlcnlDb25maWc/LmdyYXBoTmFtZSB8fCBzZXNzaW9uPy5kZWZhdWx0R3JhcGggfHwgY29uZmlnLmRlZmF1bHRHcmFwaCB8fCAnJyxcbiAgICBwYXJhbWV0ZXJzOiBidWlsZFBhcmFtZXRlcnMocXVlcnlDb25maWc/LnBhcmFtZXRlcnMpLFxuICAgIHNlc3Npb25faWQ6IHNlc3Npb24/LmlkPy50b1N0cmluZygpIHx8ICcwJyxcbiAgICB0cmFuc2FjdGlvbl9pZDogcXVlcnlDb25maWc/LnRyYW5zYWN0aW9uSWQ/LnRvU3RyaW5nKCkgfHwgJzAnLFxuICAgIHRpbWVvdXQ6IE1hdGguZmxvb3IoKHF1ZXJ5Q29uZmlnPy50aW1lb3V0IHx8IGNvbmZpZy50aW1lb3V0IHx8IDMwMDAwKSAvIDEwMDApLCAvLyBDb252ZXJ0IG1zIHRvIHNlY29uZHMgZm9yIGdSUENcbiAgICByZWFkX29ubHk6IHF1ZXJ5Q29uZmlnPy5yZWFkT25seSB8fCBmYWxzZSxcbiAgICBtYXhfcGF0aF9yZXN1bHRzOiBxdWVyeUNvbmZpZz8ubWF4UGF0aFJlc3VsdHMgfHwgMCxcbiAgfTtcbn1cblxuLyoqXG4gKiBCdWlsZCBwYXJhbWV0ZXJzIGFycmF5IGZvciBnUlBDLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRQYXJhbWV0ZXJzKHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIGFueT4pOiBhbnlbXSB7XG4gIGlmICghcGFyYW1zKSByZXR1cm4gW107XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhwYXJhbXMpLm1hcCgoW25hbWUsIHZhbHVlXSkgPT4gKHtcbiAgICBuYW1lLFxuICAgIHZhbHVlOiBjcmVhdGVUeXBlZFZhbHVlKHZhbHVlKSxcbiAgfSkpO1xufVxuXG4vKipcbiAqIENvbnZlcnQgZ1JQQyByZXNwb25zZSB0byBSZXNwb25zZSBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0R3FsUmVzcG9uc2UoZ3JwY1Jlc3BvbnNlOiBhbnkpOiBSZXNwb25zZSB7XG4gIGNvbnN0IGNvbHVtbnMgPSBncnBjUmVzcG9uc2UuY29sdW1ucyB8fCBbXTtcbiAgY29uc3Qgcm93czogUm93W10gPSAoZ3JwY1Jlc3BvbnNlLnJvd3MgfHwgW10pLm1hcCgocm93OiBhbnkpID0+IHtcbiAgICBjb25zdCByYXdWYWx1ZXMgPSByb3cudmFsdWVzIHx8IFtdO1xuICAgIGNvbnN0IHZhbHVlcyA9IHJhd1ZhbHVlcy5tYXAoKHR2OiBhbnkpID0+IGNvbnZlcnRUeXBlZFZhbHVlKHR2KSk7XG4gICAgY29uc3QgdHlwZXMgPSByYXdWYWx1ZXMubWFwKCh0djogYW55KSA9PiBwcm90b1R5cGVUb0VudW0odHY/LnR5cGUpKTtcbiAgICByZXR1cm4gbmV3IFJvdyh2YWx1ZXMsIHR5cGVzKTtcbiAgfSk7XG4gIHJldHVybiBuZXcgUmVzcG9uc2UoXG4gICAgY29sdW1ucyxcbiAgICByb3dzLFxuICAgIHBhcnNlSW50KGdycGNSZXNwb25zZS5yb3dfY291bnQgfHwgJzAnLCAxMCksXG4gICAgZ3JwY1Jlc3BvbnNlLmhhc19tb3JlIHx8IGZhbHNlLFxuICAgIGdycGNSZXNwb25zZS53YXJuaW5ncyB8fCBbXSxcbiAgICBwYXJzZUludChncnBjUmVzcG9uc2Uucm93c19hZmZlY3RlZCB8fCAnMCcsIDEwKVxuICApO1xufVxuXG4vKipcbiAqIE1hcCBwcm90byB0eXBlIHN0cmluZyBvciBudW1iZXIgdG8gUHJvcGVydHlUeXBlIGVudW0uXG4gKiBIYW5kbGVzIGJvdGggc3RyaW5nIGVudW0gbmFtZXMgKGUuZy4sICdQUk9QRVJUWV9UWVBFX1NUUklORycpIGFuZCBudW1lcmljIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gcHJvdG9UeXBlVG9FbnVtKHByb3RvVHlwZTogc3RyaW5nIHwgbnVtYmVyKTogUHJvcGVydHlUeXBlIHtcbiAgLy8gSGFuZGxlIG51bWVyaWMgZW51bSB2YWx1ZXMgZGlyZWN0bHlcbiAgaWYgKHR5cGVvZiBwcm90b1R5cGUgPT09ICdudW1iZXInKSB7XG4gICAgLy8gSWYgaXQncyBhbHJlYWR5IGEgdmFsaWQgUHJvcGVydHlUeXBlIG51bWJlciwgcmV0dXJuIGl0IGRpcmVjdGx5XG4gICAgLy8gUHJvcGVydHlUeXBlIHJhbmdlcyBmcm9tIFVOU0VUKDApIHRvIEVER0UoMzMpXG4gICAgaWYgKHByb3RvVHlwZSA+PSBQcm9wZXJ0eVR5cGUuVU5TRVQgJiYgcHJvdG9UeXBlIDw9IFByb3BlcnR5VHlwZS5FREdFKSB7XG4gICAgICByZXR1cm4gcHJvdG9UeXBlIGFzIFByb3BlcnR5VHlwZTtcbiAgICB9XG4gICAgcmV0dXJuIFByb3BlcnR5VHlwZS5OVUxMO1xuICB9XG5cbiAgY29uc3QgdHlwZU1hcDogUmVjb3JkPHN0cmluZywgUHJvcGVydHlUeXBlPiA9IHtcbiAgICAnUFJPUEVSVFlfVFlQRV9OVUxMJzogUHJvcGVydHlUeXBlLk5VTEwsXG4gICAgJ1BST1BFUlRZX1RZUEVfVU5TRVQnOiBQcm9wZXJ0eVR5cGUuVU5TRVQsXG4gICAgJ1BST1BFUlRZX1RZUEVfQk9PTCc6IFByb3BlcnR5VHlwZS5CT09MLFxuICAgICdQUk9QRVJUWV9UWVBFX0lOVDMyJzogUHJvcGVydHlUeXBlLklOVDMyLFxuICAgICdQUk9QRVJUWV9UWVBFX1VJTlQzMic6IFByb3BlcnR5VHlwZS5VSU5UMzIsXG4gICAgJ1BST1BFUlRZX1RZUEVfSU5UNjQnOiBQcm9wZXJ0eVR5cGUuSU5UNjQsXG4gICAgJ1BST1BFUlRZX1RZUEVfVUlOVDY0JzogUHJvcGVydHlUeXBlLlVJTlQ2NCxcbiAgICAnUFJPUEVSVFlfVFlQRV9GTE9BVCc6IFByb3BlcnR5VHlwZS5GTE9BVCxcbiAgICAnUFJPUEVSVFlfVFlQRV9ET1VCTEUnOiBQcm9wZXJ0eVR5cGUuRE9VQkxFLFxuICAgICdQUk9QRVJUWV9UWVBFX1NUUklORyc6IFByb3BlcnR5VHlwZS5TVFJJTkcsXG4gICAgJ1BST1BFUlRZX1RZUEVfVEVYVCc6IFByb3BlcnR5VHlwZS5URVhULFxuICAgICdQUk9QRVJUWV9UWVBFX0JMT0InOiBQcm9wZXJ0eVR5cGUuQkxPQixcbiAgICAnUFJPUEVSVFlfVFlQRV9USU1FU1RBTVAnOiBQcm9wZXJ0eVR5cGUuVElNRVNUQU1QLFxuICAgICdQUk9QRVJUWV9UWVBFX0RBVEVUSU1FJzogUHJvcGVydHlUeXBlLkRBVEVUSU1FLFxuICAgICdQUk9QRVJUWV9UWVBFX0RBVEUnOiBQcm9wZXJ0eVR5cGUuREFURSxcbiAgICAnUFJPUEVSVFlfVFlQRV9MT0NBTF9EQVRFVElNRSc6IFByb3BlcnR5VHlwZS5MT0NBTF9EQVRFVElNRSxcbiAgICAnUFJPUEVSVFlfVFlQRV9aT05FRF9EQVRFVElNRSc6IFByb3BlcnR5VHlwZS5aT05FRF9EQVRFVElNRSxcbiAgICAnUFJPUEVSVFlfVFlQRV9MT0NBTF9USU1FJzogUHJvcGVydHlUeXBlLkxPQ0FMX1RJTUUsXG4gICAgJ1BST1BFUlRZX1RZUEVfWk9ORURfVElNRSc6IFByb3BlcnR5VHlwZS5aT05FRF9USU1FLFxuICAgICdQUk9QRVJUWV9UWVBFX1lFQVJfVE9fTU9OVEgnOiBQcm9wZXJ0eVR5cGUuWUVBUl9UT19NT05USCxcbiAgICAnUFJPUEVSVFlfVFlQRV9EQVlfVE9fU0VDT05EJzogUHJvcGVydHlUeXBlLkRBWV9UT19TRUNPTkQsXG4gICAgJ1BST1BFUlRZX1RZUEVfREVDSU1BTCc6IFByb3BlcnR5VHlwZS5ERUNJTUFMLFxuICAgICdQUk9QRVJUWV9UWVBFX1BPSU5UJzogUHJvcGVydHlUeXBlLlBPSU5ULFxuICAgICdQUk9QRVJUWV9UWVBFX1BPSU5UM0QnOiBQcm9wZXJ0eVR5cGUuUE9JTlQzRCxcbiAgICAnUFJPUEVSVFlfVFlQRV9WRUNUT1InOiBQcm9wZXJ0eVR5cGUuVkVDVE9SLFxuICAgICdQUk9QRVJUWV9UWVBFX0xJU1QnOiBQcm9wZXJ0eVR5cGUuTElTVCxcbiAgICAnUFJPUEVSVFlfVFlQRV9TRVQnOiBQcm9wZXJ0eVR5cGUuU0VULFxuICAgICdQUk9QRVJUWV9UWVBFX01BUCc6IFByb3BlcnR5VHlwZS5NQVAsXG4gICAgJ1BST1BFUlRZX1RZUEVfTk9ERSc6IFByb3BlcnR5VHlwZS5OT0RFLFxuICAgICdQUk9QRVJUWV9UWVBFX0VER0UnOiBQcm9wZXJ0eVR5cGUuRURHRSxcbiAgICAnUFJPUEVSVFlfVFlQRV9QQVRIJzogUHJvcGVydHlUeXBlLlBBVEgsXG4gICAgJ1BST1BFUlRZX1RZUEVfUkVDT1JEJzogUHJvcGVydHlUeXBlLlJFQ09SRCxcbiAgICAnUFJPUEVSVFlfVFlQRV9UQUJMRSc6IFByb3BlcnR5VHlwZS5UQUJMRSxcbiAgICAnUFJPUEVSVFlfVFlQRV9FUlJPUic6IFByb3BlcnR5VHlwZS5FUlJPUixcbiAgfTtcbiAgcmV0dXJuIHR5cGVNYXBbcHJvdG9UeXBlXSA/PyBQcm9wZXJ0eVR5cGUuTlVMTDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGdSUEMgVHlwZWRWYWx1ZSB0byBKUyB2YWx1ZS5cbiAqIFVzZXMgdGhlIHNhbWUgZGVjb2RpbmcgbG9naWMgYXMgdHlwZWRWYWx1ZVRvSlMgZm9yIGNvbnNpc3RlbmN5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFR5cGVkVmFsdWUodHY6IGFueSk6IGFueSB7XG4gIGlmICghdHYgfHwgdHYuaXNfbnVsbCB8fCB0di5pc051bGwpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IGRhdGEgPSB0di5kYXRhO1xuICBjb25zdCBwcm90b1R5cGUgPSB0di50eXBlO1xuXG4gIC8vIEhhbmRsZSBudWxsIHR5cGVzIChib3RoIHN0cmluZyBhbmQgbnVtZXJpYyBlbnVtIHZhbHVlcylcbiAgaWYgKHByb3RvVHlwZSA9PT0gJ1BST1BFUlRZX1RZUEVfTlVMTCcgfHwgcHJvdG9UeXBlID09PSAnUFJPUEVSVFlfVFlQRV9VTlNFVCcgfHxcbiAgICAgIHByb3RvVHlwZSA9PT0gUHJvcGVydHlUeXBlLk5VTEwgfHwgcHJvdG9UeXBlID09PSBQcm9wZXJ0eVR5cGUuVU5TRVQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIEhhbmRsZSBlbXB0eSBkYXRhIC0gYnV0IFNUUklORyB0eXBlIHdpdGggZW1wdHkgZGF0YSBzaG91bGQgcmV0dXJuIFwiXCJcbiAgaWYgKCFkYXRhIHx8IGRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgY29uc3QgaXNTdHJpbmdUeXBlID0gcHJvdG9UeXBlID09PSAnUFJPUEVSVFlfVFlQRV9TVFJJTkcnIHx8IHByb3RvVHlwZSA9PT0gJ1BST1BFUlRZX1RZUEVfVEVYVCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b1R5cGUgPT09IFByb3BlcnR5VHlwZS5TVFJJTkcgfHwgcHJvdG9UeXBlID09PSBQcm9wZXJ0eVR5cGUuVEVYVDtcbiAgICBjb25zdCBpc0Jsb2JUeXBlID0gcHJvdG9UeXBlID09PSAnUFJPUEVSVFlfVFlQRV9CTE9CJyB8fCBwcm90b1R5cGUgPT09IFByb3BlcnR5VHlwZS5CTE9CO1xuXG4gICAgaWYgKGlzU3RyaW5nVHlwZSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBpZiAoaXNCbG9iVHlwZSkge1xuICAgICAgcmV0dXJuIEJ1ZmZlci5hbGxvYygwKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBidWYgPSBCdWZmZXIuZnJvbShkYXRhKTtcbiAgY29uc3QgZW51bVR5cGUgPSBwcm90b1R5cGVUb0VudW0ocHJvdG9UeXBlKTtcblxuICAvLyBVc2UgdHlwZWRWYWx1ZVRvSlMgZm9yIGNvbnNpc3RlbnQgZGVjb2RpbmdcbiAgcmV0dXJuIHR5cGVkVmFsdWVUb0pTKHsgdHlwZTogZW51bVR5cGUsIGRhdGE6IGJ1ZiwgaXNOdWxsOiBmYWxzZSB9KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IHByb3RvIHByb3BlcnRpZXMgbWFwIHRvIEpTIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRQcm90b1Byb3BlcnRpZXMocHJvdG9Qcm9wczogUmVjb3JkPHN0cmluZywgYW55Pik6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCB0dl0gb2YgT2JqZWN0LmVudHJpZXMocHJvdG9Qcm9wcykpIHtcbiAgICByZXN1bHRba2V5XSA9IGNvbnZlcnRUeXBlZFZhbHVlKHR2KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIENvbnZlcnQgR3JhcGhJbmZvIGZyb20gcHJvdG8gdG8gSlMgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydEdyYXBoSW5mbyhnOiBhbnkpOiBHcmFwaEluZm8ge1xuICByZXR1cm4ge1xuICAgIG5hbWU6IGcubmFtZSB8fCAnJyxcbiAgICBncmFwaFR5cGU6IHByb3RvVG9HcmFwaFR5cGUoZy5ncmFwaF90eXBlKSxcbiAgICBub2RlQ291bnQ6IHBhcnNlSW50KGcubm9kZV9jb3VudCB8fCAnMCcsIDEwKSxcbiAgICBlZGdlQ291bnQ6IHBhcnNlSW50KGcuZWRnZV9jb3VudCB8fCAnMCcsIDEwKSxcbiAgICBkZXNjcmlwdGlvbjogZy5kZXNjcmlwdGlvbiB8fCAnJyxcbiAgfTtcbn1cblxuLyoqXG4gKiBNYXAgR3JhcGhUeXBlIGVudW0gdG8gcHJvdG8gc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3JhcGhUeXBlVG9Qcm90byhncmFwaFR5cGU6IEdyYXBoVHlwZSk6IHN0cmluZyB7XG4gIHN3aXRjaCAoZ3JhcGhUeXBlKSB7XG4gICAgY2FzZSBHcmFwaFR5cGUuT1BFTjpcbiAgICAgIHJldHVybiAnR1JBUEhfVFlQRV9PUEVOJztcbiAgICBjYXNlIEdyYXBoVHlwZS5DTE9TRUQ6XG4gICAgICByZXR1cm4gJ0dSQVBIX1RZUEVfQ0xPU0VEJztcbiAgICBjYXNlIEdyYXBoVHlwZS5PTlRPTE9HWTpcbiAgICAgIHJldHVybiAnR1JBUEhfVFlQRV9PTlRPTE9HWSc7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAnR1JBUEhfVFlQRV9PUEVOJztcbiAgfVxufVxuXG4vKipcbiAqIE1hcCBwcm90byBzdHJpbmcgdG8gR3JhcGhUeXBlIGVudW0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm90b1RvR3JhcGhUeXBlKHByb3RvOiBzdHJpbmcpOiBHcmFwaFR5cGUge1xuICBzd2l0Y2ggKHByb3RvKSB7XG4gICAgY2FzZSAnR1JBUEhfVFlQRV9DTE9TRUQnOlxuICAgICAgcmV0dXJuIEdyYXBoVHlwZS5DTE9TRUQ7XG4gICAgY2FzZSAnR1JBUEhfVFlQRV9PTlRPTE9HWSc6XG4gICAgICByZXR1cm4gR3JhcGhUeXBlLk9OVE9MT0dZO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gR3JhcGhUeXBlLk9QRU47XG4gIH1cbn1cblxuLyoqXG4gKiBNYXAgcHJvdG8gSGVhbHRoU3RhdHVzIHRvIGVudW0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm90b1RvSGVhbHRoU3RhdHVzKHByb3RvOiBzdHJpbmcpOiBIZWFsdGhTdGF0dXMge1xuICBzd2l0Y2ggKHByb3RvKSB7XG4gICAgY2FzZSAnSEVBTFRIX1NUQVRVU19TRVJWSU5HJzpcbiAgICAgIHJldHVybiBIZWFsdGhTdGF0dXMuU0VSVklORztcbiAgICBjYXNlICdIRUFMVEhfU1RBVFVTX05PVF9TRVJWSU5HJzpcbiAgICAgIHJldHVybiBIZWFsdGhTdGF0dXMuTk9UX1NFUlZJTkc7XG4gICAgY2FzZSAnSEVBTFRIX1NUQVRVU19TRVJWSUNFX1VOS05PV04nOlxuICAgICAgcmV0dXJuIEhlYWx0aFN0YXR1cy5TRVJWSUNFX1VOS05PV047XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBIZWFsdGhTdGF0dXMuVU5LTk9XTjtcbiAgfVxufVxuXG4vKipcbiAqIE1hcCBDYWNoZVR5cGUgdG8gcHJvdG8gc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FjaGVUeXBlVG9Qcm90byhjYWNoZVR5cGU6IENhY2hlVHlwZSk6IHN0cmluZyB7XG4gIHN3aXRjaCAoY2FjaGVUeXBlKSB7XG4gICAgY2FzZSBDYWNoZVR5cGUuQVNUOlxuICAgICAgcmV0dXJuICdDQUNIRV9UWVBFX0FTVCc7XG4gICAgY2FzZSBDYWNoZVR5cGUuUExBTjpcbiAgICAgIHJldHVybiAnQ0FDSEVfVFlQRV9QTEFOJztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICdDQUNIRV9UWVBFX0FMTCc7XG4gIH1cbn1cblxuLyoqXG4gKiBDb252ZXJ0IE5vZGVEYXRhIHRvIHByb3RvIGZvcm1hdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vZGVEYXRhVG9Qcm90byhub2RlOiBhbnkpOiBhbnkge1xuICBjb25zdCBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIGlmIChub2RlLnByb3BlcnRpZXMpIHtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhub2RlLnByb3BlcnRpZXMpKSB7XG4gICAgICBwcm9wZXJ0aWVzW2tleV0gPSBjcmVhdGVUeXBlZFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBpZDogbm9kZS5pZCB8fCAnJyxcbiAgICBsYWJlbHM6IG5vZGUubGFiZWxzIHx8IFtdLFxuICAgIHByb3BlcnRpZXMsXG4gIH07XG59XG5cbi8qKlxuICogQ29udmVydCBFZGdlRGF0YSB0byBwcm90byBmb3JtYXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlZGdlRGF0YVRvUHJvdG8oZWRnZTogYW55KTogYW55IHtcbiAgY29uc3QgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICBpZiAoZWRnZS5wcm9wZXJ0aWVzKSB7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZWRnZS5wcm9wZXJ0aWVzKSkge1xuICAgICAgcHJvcGVydGllc1trZXldID0gY3JlYXRlVHlwZWRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgbGFiZWw6IGVkZ2UubGFiZWwgfHwgJycsXG4gICAgZnJvbV9ub2RlX2lkOiBlZGdlLmZyb21Ob2RlSWQgfHwgJycsXG4gICAgdG9fbm9kZV9pZDogZWRnZS50b05vZGVJZCB8fCAnJyxcbiAgICBwcm9wZXJ0aWVzLFxuICB9O1xufVxuIl19
255
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9jb252ZXJ0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7QUFtQkgsMENBZ0JDO0FBS0QsMENBTUM7QUFLRCxnREFnQkM7QUE0REQsOENBZ0NDO0FBS0Qsd0RBTUM7QUFLRCw0Q0FRQztBQUtELDRDQVdDO0FBS0QsNENBU0M7QUFLRCxrREFXQztBQUtELDRDQVNDO0FBS0QsMENBWUM7QUFLRCwwQ0FjQztBQXJSRCwwQ0FBNEM7QUFDNUMsb0NBUWtCO0FBS2xCOztHQUVHO0FBQ0gsU0FBZ0IsZUFBZSxDQUM3QixLQUFhLEVBQ2IsT0FBdUIsRUFDdkIsTUFBbUIsRUFDbkIsV0FBeUI7SUFFekIsT0FBTztRQUNMLEdBQUcsRUFBRSxLQUFLO1FBQ1YsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLElBQUksT0FBTyxFQUFFLFlBQVksSUFBSSxNQUFNLENBQUMsWUFBWSxJQUFJLEVBQUU7UUFDeEYsVUFBVSxFQUFFLGVBQWUsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDO1FBQ3BELFVBQVUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEdBQUc7UUFDMUMsY0FBYyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLElBQUksR0FBRztRQUM3RCxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxpQ0FBaUM7UUFDaEgsU0FBUyxFQUFFLFdBQVcsRUFBRSxRQUFRLElBQUksS0FBSztRQUN6QyxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsY0FBYyxJQUFJLENBQUM7S0FDbkQsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxNQUE0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QU87UUFDTCxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFO1FBQ2pCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUU7UUFDekIsVUFBVTtLQUNYLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixlQUFlLENBQUMsSUFBUztJQUN2QyxNQUFNLFVBQVUsR0FBd0IsRUFBRSxDQUFDO0lBQzNDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BCLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzNELFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFBLHdCQUFnQixFQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTztRQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUU7UUFDakIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRTtRQUN2QixZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVUsSUFBSSxFQUFFO1FBQ25DLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUU7UUFDL0IsVUFBVTtLQUNYLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUeXBlIGNvbnZlcnNpb24gdXRpbGl0aWVzIGJldHdlZW4gZ1JQQyBwcm90byB0eXBlcyBhbmQgSmF2YVNjcmlwdCB0eXBlcy5cbiAqL1xuXG5pbXBvcnQgeyBSZXNwb25zZSwgUm93IH0gZnJvbSAnLi4vcmVzcG9uc2UnO1xuaW1wb3J0IHtcbiAgR3JhcGhUeXBlLFxuICBIZWFsdGhTdGF0dXMsXG4gIENhY2hlVHlwZSxcbiAgR3JhcGhJbmZvLFxuICBjcmVhdGVUeXBlZFZhbHVlLFxuICBQcm9wZXJ0eVR5cGUsXG4gIHR5cGVkVmFsdWVUb0pTLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBHcWxkYkNvbmZpZyB9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBTZXNzaW9uIH0gZnJvbSAnLi4vc2Vzc2lvbic7XG5pbXBvcnQgeyBRdWVyeUNvbmZpZyB9IGZyb20gJy4uL2NsaWVudCc7XG5cbi8qKlxuICogQnVpbGQgYSBHUUwgcmVxdWVzdCBmcm9tIGNvbmZpZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkR3FsUmVxdWVzdChcbiAgcXVlcnk6IHN0cmluZyxcbiAgc2Vzc2lvbjogU2Vzc2lvbiB8IG51bGwsXG4gIGNvbmZpZzogR3FsZGJDb25maWcsXG4gIHF1ZXJ5Q29uZmlnPzogUXVlcnlDb25maWdcbik6IGFueSB7XG4gIHJldHVybiB7XG4gICAgZ3FsOiBxdWVyeSxcbiAgICBncmFwaF9uYW1lOiBxdWVyeUNvbmZpZz8uZ3JhcGhOYW1lIHx8IHNlc3Npb24/LmRlZmF1bHRHcmFwaCB8fCBjb25maWcuZGVmYXVsdEdyYXBoIHx8ICcnLFxuICAgIHBhcmFtZXRlcnM6IGJ1aWxkUGFyYW1ldGVycyhxdWVyeUNvbmZpZz8ucGFyYW1ldGVycyksXG4gICAgc2Vzc2lvbl9pZDogc2Vzc2lvbj8uaWQ/LnRvU3RyaW5nKCkgfHwgJzAnLFxuICAgIHRyYW5zYWN0aW9uX2lkOiBxdWVyeUNvbmZpZz8udHJhbnNhY3Rpb25JZD8udG9TdHJpbmcoKSB8fCAnMCcsXG4gICAgdGltZW91dDogTWF0aC5mbG9vcigocXVlcnlDb25maWc/LnRpbWVvdXQgfHwgY29uZmlnLnRpbWVvdXQgfHwgMzAwMDApIC8gMTAwMCksIC8vIENvbnZlcnQgbXMgdG8gc2Vjb25kcyBmb3IgZ1JQQ1xuICAgIHJlYWRfb25seTogcXVlcnlDb25maWc/LnJlYWRPbmx5IHx8IGZhbHNlLFxuICAgIG1heF9wYXRoX3Jlc3VsdHM6IHF1ZXJ5Q29uZmlnPy5tYXhQYXRoUmVzdWx0cyB8fCAwLFxuICB9O1xufVxuXG4vKipcbiAqIEJ1aWxkIHBhcmFtZXRlcnMgYXJyYXkgZm9yIGdSUEMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFBhcmFtZXRlcnMocGFyYW1zPzogUmVjb3JkPHN0cmluZywgYW55Pik6IGFueVtdIHtcbiAgaWYgKCFwYXJhbXMpIHJldHVybiBbXTtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHBhcmFtcykubWFwKChbbmFtZSwgdmFsdWVdKSA9PiAoe1xuICAgIG5hbWUsXG4gICAgdmFsdWU6IGNyZWF0ZVR5cGVkVmFsdWUodmFsdWUpLFxuICB9KSk7XG59XG5cbi8qKlxuICogQ29udmVydCBnUlBDIHJlc3BvbnNlIHRvIFJlc3BvbnNlIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRHcWxSZXNwb25zZShncnBjUmVzcG9uc2U6IGFueSk6IFJlc3BvbnNlIHtcbiAgY29uc3QgY29sdW1ucyA9IGdycGNSZXNwb25zZS5jb2x1bW5zIHx8IFtdO1xuICBjb25zdCByb3dzOiBSb3dbXSA9IChncnBjUmVzcG9uc2Uucm93cyB8fCBbXSkubWFwKChyb3c6IGFueSkgPT4ge1xuICAgIGNvbnN0IHJhd1ZhbHVlcyA9IHJvdy52YWx1ZXMgfHwgW107XG4gICAgY29uc3QgdmFsdWVzID0gcmF3VmFsdWVzLm1hcCgodHY6IGFueSkgPT4gY29udmVydFR5cGVkVmFsdWUodHYpKTtcbiAgICBjb25zdCB0eXBlcyA9IHJhd1ZhbHVlcy5tYXAoKHR2OiBhbnkpID0+IHByb3RvVHlwZVRvRW51bSh0dj8udHlwZSkpO1xuICAgIHJldHVybiBuZXcgUm93KHZhbHVlcywgdHlwZXMpO1xuICB9KTtcbiAgcmV0dXJuIG5ldyBSZXNwb25zZShcbiAgICBjb2x1bW5zLFxuICAgIHJvd3MsXG4gICAgcGFyc2VJbnQoZ3JwY1Jlc3BvbnNlLnJvd19jb3VudCB8fCAnMCcsIDEwKSxcbiAgICBncnBjUmVzcG9uc2UuaGFzX21vcmUgfHwgZmFsc2UsXG4gICAgZ3JwY1Jlc3BvbnNlLndhcm5pbmdzIHx8IFtdLFxuICAgIHBhcnNlSW50KGdycGNSZXNwb25zZS5yb3dzX2FmZmVjdGVkIHx8ICcwJywgMTApXG4gICk7XG59XG5cbi8qKlxuICogTWFwIHByb3RvIHR5cGUgc3RyaW5nIG9yIG51bWJlciB0byBQcm9wZXJ0eVR5cGUgZW51bS5cbiAqIEhhbmRsZXMgYm90aCBzdHJpbmcgZW51bSBuYW1lcyAoZS5nLiwgJ1BST1BFUlRZX1RZUEVfU1RSSU5HJykgYW5kIG51bWVyaWMgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBwcm90b1R5cGVUb0VudW0ocHJvdG9UeXBlOiBzdHJpbmcgfCBudW1iZXIpOiBQcm9wZXJ0eVR5cGUge1xuICAvLyBIYW5kbGUgbnVtZXJpYyBlbnVtIHZhbHVlcyBkaXJlY3RseVxuICBpZiAodHlwZW9mIHByb3RvVHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAvLyBJZiBpdCdzIGFscmVhZHkgYSB2YWxpZCBQcm9wZXJ0eVR5cGUgbnVtYmVyLCByZXR1cm4gaXQgZGlyZWN0bHlcbiAgICAvLyBQcm9wZXJ0eVR5cGUgcmFuZ2VzIGZyb20gVU5TRVQoMCkgdG8gRURHRSgzMylcbiAgICBpZiAocHJvdG9UeXBlID49IFByb3BlcnR5VHlwZS5VTlNFVCAmJiBwcm90b1R5cGUgPD0gUHJvcGVydHlUeXBlLkVER0UpIHtcbiAgICAgIHJldHVybiBwcm90b1R5cGUgYXMgUHJvcGVydHlUeXBlO1xuICAgIH1cbiAgICByZXR1cm4gUHJvcGVydHlUeXBlLk5VTEw7XG4gIH1cblxuICBjb25zdCB0eXBlTWFwOiBSZWNvcmQ8c3RyaW5nLCBQcm9wZXJ0eVR5cGU+ID0ge1xuICAgICdQUk9QRVJUWV9UWVBFX05VTEwnOiBQcm9wZXJ0eVR5cGUuTlVMTCxcbiAgICAnUFJPUEVSVFlfVFlQRV9VTlNFVCc6IFByb3BlcnR5VHlwZS5VTlNFVCxcbiAgICAnUFJPUEVSVFlfVFlQRV9CT09MJzogUHJvcGVydHlUeXBlLkJPT0wsXG4gICAgJ1BST1BFUlRZX1RZUEVfSU5UMzInOiBQcm9wZXJ0eVR5cGUuSU5UMzIsXG4gICAgJ1BST1BFUlRZX1RZUEVfVUlOVDMyJzogUHJvcGVydHlUeXBlLlVJTlQzMixcbiAgICAnUFJPUEVSVFlfVFlQRV9JTlQ2NCc6IFByb3BlcnR5VHlwZS5JTlQ2NCxcbiAgICAnUFJPUEVSVFlfVFlQRV9VSU5UNjQnOiBQcm9wZXJ0eVR5cGUuVUlOVDY0LFxuICAgICdQUk9QRVJUWV9UWVBFX0ZMT0FUJzogUHJvcGVydHlUeXBlLkZMT0FULFxuICAgICdQUk9QRVJUWV9UWVBFX0RPVUJMRSc6IFByb3BlcnR5VHlwZS5ET1VCTEUsXG4gICAgJ1BST1BFUlRZX1RZUEVfU1RSSU5HJzogUHJvcGVydHlUeXBlLlNUUklORyxcbiAgICAnUFJPUEVSVFlfVFlQRV9URVhUJzogUHJvcGVydHlUeXBlLlRFWFQsXG4gICAgJ1BST1BFUlRZX1RZUEVfQkxPQic6IFByb3BlcnR5VHlwZS5CTE9CLFxuICAgICdQUk9QRVJUWV9UWVBFX1RJTUVTVEFNUCc6IFByb3BlcnR5VHlwZS5USU1FU1RBTVAsXG4gICAgJ1BST1BFUlRZX1RZUEVfREFURVRJTUUnOiBQcm9wZXJ0eVR5cGUuREFURVRJTUUsXG4gICAgJ1BST1BFUlRZX1RZUEVfREFURSc6IFByb3BlcnR5VHlwZS5EQVRFLFxuICAgICdQUk9QRVJUWV9UWVBFX0xPQ0FMX0RBVEVUSU1FJzogUHJvcGVydHlUeXBlLkxPQ0FMX0RBVEVUSU1FLFxuICAgICdQUk9QRVJUWV9UWVBFX1pPTkVEX0RBVEVUSU1FJzogUHJvcGVydHlUeXBlLlpPTkVEX0RBVEVUSU1FLFxuICAgICdQUk9QRVJUWV9UWVBFX0xPQ0FMX1RJTUUnOiBQcm9wZXJ0eVR5cGUuTE9DQUxfVElNRSxcbiAgICAnUFJPUEVSVFlfVFlQRV9aT05FRF9USU1FJzogUHJvcGVydHlUeXBlLlpPTkVEX1RJTUUsXG4gICAgJ1BST1BFUlRZX1RZUEVfWUVBUl9UT19NT05USCc6IFByb3BlcnR5VHlwZS5ZRUFSX1RPX01PTlRILFxuICAgICdQUk9QRVJUWV9UWVBFX0RBWV9UT19TRUNPTkQnOiBQcm9wZXJ0eVR5cGUuREFZX1RPX1NFQ09ORCxcbiAgICAnUFJPUEVSVFlfVFlQRV9ERUNJTUFMJzogUHJvcGVydHlUeXBlLkRFQ0lNQUwsXG4gICAgJ1BST1BFUlRZX1RZUEVfUE9JTlQnOiBQcm9wZXJ0eVR5cGUuUE9JTlQsXG4gICAgJ1BST1BFUlRZX1RZUEVfUE9JTlQzRCc6IFByb3BlcnR5VHlwZS5QT0lOVDNELFxuICAgICdQUk9QRVJUWV9UWVBFX1ZFQ1RPUic6IFByb3BlcnR5VHlwZS5WRUNUT1IsXG4gICAgJ1BST1BFUlRZX1RZUEVfTElTVCc6IFByb3BlcnR5VHlwZS5MSVNULFxuICAgICdQUk9QRVJUWV9UWVBFX1NFVCc6IFByb3BlcnR5VHlwZS5TRVQsXG4gICAgJ1BST1BFUlRZX1RZUEVfTUFQJzogUHJvcGVydHlUeXBlLk1BUCxcbiAgICAnUFJPUEVSVFlfVFlQRV9OT0RFJzogUHJvcGVydHlUeXBlLk5PREUsXG4gICAgJ1BST1BFUlRZX1RZUEVfRURHRSc6IFByb3BlcnR5VHlwZS5FREdFLFxuICAgICdQUk9QRVJUWV9UWVBFX1BBVEgnOiBQcm9wZXJ0eVR5cGUuUEFUSCxcbiAgICAnUFJPUEVSVFlfVFlQRV9SRUNPUkQnOiBQcm9wZXJ0eVR5cGUuUkVDT1JELFxuICAgICdQUk9QRVJUWV9UWVBFX1RBQkxFJzogUHJvcGVydHlUeXBlLlRBQkxFLFxuICAgICdQUk9QRVJUWV9UWVBFX0VSUk9SJzogUHJvcGVydHlUeXBlLkVSUk9SLFxuICB9O1xuICByZXR1cm4gdHlwZU1hcFtwcm90b1R5cGVdID8/IFByb3BlcnR5VHlwZS5OVUxMO1xufVxuXG4vKipcbiAqIENvbnZlcnQgZ1JQQyBUeXBlZFZhbHVlIHRvIEpTIHZhbHVlLlxuICogVXNlcyB0aGUgc2FtZSBkZWNvZGluZyBsb2dpYyBhcyB0eXBlZFZhbHVlVG9KUyBmb3IgY29uc2lzdGVuY3kuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VHlwZWRWYWx1ZSh0djogYW55KTogYW55IHtcbiAgaWYgKCF0diB8fCB0di5pc19udWxsIHx8IHR2LmlzTnVsbCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgZGF0YSA9IHR2LmRhdGE7XG4gIGNvbnN0IHByb3RvVHlwZSA9IHR2LnR5cGU7XG5cbiAgLy8gSGFuZGxlIG51bGwgdHlwZXMgKGJvdGggc3RyaW5nIGFuZCBudW1lcmljIGVudW0gdmFsdWVzKVxuICBpZiAocHJvdG9UeXBlID09PSAnUFJPUEVSVFlfVFlQRV9OVUxMJyB8fCBwcm90b1R5cGUgPT09ICdQUk9QRVJUWV9UWVBFX1VOU0VUJyB8fFxuICAgICAgcHJvdG9UeXBlID09PSBQcm9wZXJ0eVR5cGUuTlVMTCB8fCBwcm90b1R5cGUgPT09IFByb3BlcnR5VHlwZS5VTlNFVCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gSGFuZGxlIGVtcHR5IGRhdGEgLSBidXQgU1RSSU5HIHR5cGUgd2l0aCBlbXB0eSBkYXRhIHNob3VsZCByZXR1cm4gXCJcIlxuICBpZiAoIWRhdGEgfHwgZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICBjb25zdCBpc1N0cmluZ1R5cGUgPSBwcm90b1R5cGUgPT09ICdQUk9QRVJUWV9UWVBFX1NUUklORycgfHwgcHJvdG9UeXBlID09PSAnUFJPUEVSVFlfVFlQRV9URVhUJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvVHlwZSA9PT0gUHJvcGVydHlUeXBlLlNUUklORyB8fCBwcm90b1R5cGUgPT09IFByb3BlcnR5VHlwZS5URVhUO1xuICAgIGNvbnN0IGlzQmxvYlR5cGUgPSBwcm90b1R5cGUgPT09ICdQUk9QRVJUWV9UWVBFX0JMT0InIHx8IHByb3RvVHlwZSA9PT0gUHJvcGVydHlUeXBlLkJMT0I7XG5cbiAgICBpZiAoaXNTdHJpbmdUeXBlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGlmIChpc0Jsb2JUeXBlKSB7XG4gICAgICByZXR1cm4gQnVmZmVyLmFsbG9jKDApO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5mcm9tKGRhdGEpO1xuICBjb25zdCBlbnVtVHlwZSA9IHByb3RvVHlwZVRvRW51bShwcm90b1R5cGUpO1xuXG4gIC8vIFVzZSB0eXBlZFZhbHVlVG9KUyBmb3IgY29uc2lzdGVudCBkZWNvZGluZ1xuICByZXR1cm4gdHlwZWRWYWx1ZVRvSlMoeyB0eXBlOiBlbnVtVHlwZSwgZGF0YTogYnVmLCBpc051bGw6IGZhbHNlIH0pO1xufVxuXG4vKipcbiAqIENvbnZlcnQgcHJvdG8gcHJvcGVydGllcyBtYXAgdG8gSlMgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFByb3RvUHJvcGVydGllcyhwcm90b1Byb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICBmb3IgKGNvbnN0IFtrZXksIHR2XSBvZiBPYmplY3QuZW50cmllcyhwcm90b1Byb3BzKSkge1xuICAgIHJlc3VsdFtrZXldID0gY29udmVydFR5cGVkVmFsdWUodHYpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ29udmVydCBHcmFwaEluZm8gZnJvbSBwcm90byB0byBKUyBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0R3JhcGhJbmZvKGc6IGFueSk6IEdyYXBoSW5mbyB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogZy5uYW1lIHx8ICcnLFxuICAgIGdyYXBoVHlwZTogcHJvdG9Ub0dyYXBoVHlwZShnLmdyYXBoX3R5cGUpLFxuICAgIG5vZGVDb3VudDogcGFyc2VJbnQoZy5ub2RlX2NvdW50IHx8ICcwJywgMTApLFxuICAgIGVkZ2VDb3VudDogcGFyc2VJbnQoZy5lZGdlX2NvdW50IHx8ICcwJywgMTApLFxuICAgIGRlc2NyaXB0aW9uOiBnLmRlc2NyaXB0aW9uIHx8ICcnLFxuICB9O1xufVxuXG4vKipcbiAqIE1hcCBHcmFwaFR5cGUgZW51bSB0byBwcm90byBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBncmFwaFR5cGVUb1Byb3RvKGdyYXBoVHlwZTogR3JhcGhUeXBlKTogc3RyaW5nIHtcbiAgc3dpdGNoIChncmFwaFR5cGUpIHtcbiAgICBjYXNlIEdyYXBoVHlwZS5PUEVOOlxuICAgICAgcmV0dXJuICdHUkFQSF9UWVBFX09QRU4nO1xuICAgIGNhc2UgR3JhcGhUeXBlLkNMT1NFRDpcbiAgICAgIHJldHVybiAnR1JBUEhfVFlQRV9DTE9TRUQnO1xuICAgIGNhc2UgR3JhcGhUeXBlLk9OVE9MT0dZOlxuICAgICAgcmV0dXJuICdHUkFQSF9UWVBFX09OVE9MT0dZJztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICdHUkFQSF9UWVBFX09QRU4nO1xuICB9XG59XG5cbi8qKlxuICogTWFwIHByb3RvIHN0cmluZyB0byBHcmFwaFR5cGUgZW51bS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3RvVG9HcmFwaFR5cGUocHJvdG86IHN0cmluZyk6IEdyYXBoVHlwZSB7XG4gIHN3aXRjaCAocHJvdG8pIHtcbiAgICBjYXNlICdHUkFQSF9UWVBFX0NMT1NFRCc6XG4gICAgICByZXR1cm4gR3JhcGhUeXBlLkNMT1NFRDtcbiAgICBjYXNlICdHUkFQSF9UWVBFX09OVE9MT0dZJzpcbiAgICAgIHJldHVybiBHcmFwaFR5cGUuT05UT0xPR1k7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBHcmFwaFR5cGUuT1BFTjtcbiAgfVxufVxuXG4vKipcbiAqIE1hcCBwcm90byBIZWFsdGhTdGF0dXMgdG8gZW51bS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3RvVG9IZWFsdGhTdGF0dXMocHJvdG86IHN0cmluZyk6IEhlYWx0aFN0YXR1cyB7XG4gIHN3aXRjaCAocHJvdG8pIHtcbiAgICBjYXNlICdIRUFMVEhfU1RBVFVTX1NFUlZJTkcnOlxuICAgICAgcmV0dXJuIEhlYWx0aFN0YXR1cy5TRVJWSU5HO1xuICAgIGNhc2UgJ0hFQUxUSF9TVEFUVVNfTk9UX1NFUlZJTkcnOlxuICAgICAgcmV0dXJuIEhlYWx0aFN0YXR1cy5OT1RfU0VSVklORztcbiAgICBjYXNlICdIRUFMVEhfU1RBVFVTX1NFUlZJQ0VfVU5LTk9XTic6XG4gICAgICByZXR1cm4gSGVhbHRoU3RhdHVzLlNFUlZJQ0VfVU5LTk9XTjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIEhlYWx0aFN0YXR1cy5VTktOT1dOO1xuICB9XG59XG5cbi8qKlxuICogTWFwIENhY2hlVHlwZSB0byBwcm90byBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWNoZVR5cGVUb1Byb3RvKGNhY2hlVHlwZTogQ2FjaGVUeXBlKTogc3RyaW5nIHtcbiAgc3dpdGNoIChjYWNoZVR5cGUpIHtcbiAgICBjYXNlIENhY2hlVHlwZS5BU1Q6XG4gICAgICByZXR1cm4gJ0NBQ0hFX1RZUEVfQVNUJztcbiAgICBjYXNlIENhY2hlVHlwZS5QTEFOOlxuICAgICAgcmV0dXJuICdDQUNIRV9UWVBFX1BMQU4nO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gJ0NBQ0hFX1RZUEVfQUxMJztcbiAgfVxufVxuXG4vKipcbiAqIENvbnZlcnQgTm9kZURhdGEgdG8gcHJvdG8gZm9ybWF0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9kZURhdGFUb1Byb3RvKG5vZGU6IGFueSk6IGFueSB7XG4gIGNvbnN0IHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgaWYgKG5vZGUucHJvcGVydGllcykge1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG5vZGUucHJvcGVydGllcykpIHtcbiAgICAgIHByb3BlcnRpZXNba2V5XSA9IGNyZWF0ZVR5cGVkVmFsdWUodmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIGlkOiBub2RlLmlkIHx8ICcnLFxuICAgIGxhYmVsczogbm9kZS5sYWJlbHMgfHwgW10sXG4gICAgcHJvcGVydGllcyxcbiAgfTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IEVkZ2VEYXRhIHRvIHByb3RvIGZvcm1hdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVkZ2VEYXRhVG9Qcm90byhlZGdlOiBhbnkpOiBhbnkge1xuICBjb25zdCBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIGlmIChlZGdlLnByb3BlcnRpZXMpIHtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhlZGdlLnByb3BlcnRpZXMpKSB7XG4gICAgICBwcm9wZXJ0aWVzW2tleV0gPSBjcmVhdGVUeXBlZFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBpZDogZWRnZS5pZCB8fCAnJyxcbiAgICBsYWJlbDogZWRnZS5sYWJlbCB8fCAnJyxcbiAgICBmcm9tX25vZGVfaWQ6IGVkZ2UuZnJvbU5vZGVJZCB8fCAnJyxcbiAgICB0b19ub2RlX2lkOiBlZGdlLnRvTm9kZUlkIHx8ICcnLFxuICAgIHByb3BlcnRpZXMsXG4gIH07XG59XG4iXX0=
@@ -22,8 +22,9 @@ class DataService {
22
22
  graph_name: graphName,
23
23
  nodes: nodes.map((n) => (0, converters_1.nodeDataToProto)(n)),
24
24
  };
25
- // ALWAYS set options (even when undefined) to avoid deprecated bulk operations error
26
- request.options = { overwrite: config?.options?.overwrite || false };
25
+ // ALWAYS set options (even when undefined) to avoid deprecated bulk operations error.
26
+ // `mode` is a numeric enum aligned with proto InsertMode values; pass through directly.
27
+ request.options = { mode: (config?.options?.mode ?? 0) };
27
28
  if (config?.bulkImportSessionId) {
28
29
  request.bulk_import_session_id = config.bulkImportSessionId;
29
30
  }
@@ -44,9 +45,10 @@ class DataService {
44
45
  graph_name: graphName,
45
46
  edges: edges.map((e) => (0, converters_1.edgeDataToProto)(e)),
46
47
  };
47
- // ALWAYS set options (even when undefined) to avoid deprecated bulk operations error
48
+ // ALWAYS set options (even when undefined) to avoid deprecated bulk operations error.
48
49
  request.options = {
49
50
  skip_invalid_nodes: config?.options?.skipInvalidNodes || false,
51
+ mode: (config?.options?.mode ?? 0),
50
52
  };
51
53
  if (config?.bulkImportSessionId) {
52
54
  request.bulk_import_session_id = config.bulkImportSessionId;
@@ -203,4 +205,4 @@ class DataService {
203
205
  }
204
206
  }
205
207
  exports.DataService = DataService;
206
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2RhdGEtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQWNILDBDQUE0QztBQUM1Qyw2Q0FBd0Y7QUFHeEY7O0dBRUc7QUFDSCxNQUFhLFdBQVc7SUFDRjtJQUFwQixZQUFvQixHQUFtQjtRQUFuQixRQUFHLEdBQUgsR0FBRyxDQUFnQjtJQUFHLENBQUM7SUFFM0M7O09BRUc7SUFDSCxLQUFLLENBQUMsV0FBVyxDQUNmLFNBQWlCLEVBQ2pCLEtBQWlCLEVBQ2pCLE1BQTBCO1FBRTFCLE1BQU0sT0FBTyxHQUFRO1lBQ25CLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFBLDRCQUFlLEVBQUMsQ0FBQyxDQUFDLENBQUM7U0FDNUMsQ0FBQztRQUVGLHFGQUFxRjtRQUNyRixPQUFPLENBQUMsT0FBTyxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBRXJFLElBQUksTUFBTSxFQUFFLG1CQUFtQixFQUFFLENBQUM7WUFDaEMsT0FBTyxDQUFDLHNCQUFzQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQztRQUM5RCxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQy9DLE1BQU0sUUFBUSxHQUFRLE1BQU0sSUFBQSx3QkFBYSxFQUN2QyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQzVCLGFBQWEsRUFDYixPQUFPLEVBQ1AsUUFBUSxDQUNULENBQUM7UUFFRixPQUFPO1lBQ0wsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPLElBQUksS0FBSztZQUNsQyxPQUFPLEVB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QyxRQUFRLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQzs0QkFDN0MsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRTs0QkFDZCxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFOzRCQUNwQixVQUFVLEVBQUUsQ0FBQyxDQUFDLFlBQVksSUFBSSxFQUFFOzRCQUNoQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLFVBQVUsSUFBSSxFQUFFOzRCQUM1QixVQUFVLEVBQUUsSUFBQSxtQ0FBc0IsRUFBQyxDQUFDLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQzt5QkFDdkQsQ0FBQyxDQUFDO3dCQUNILE9BQU8sRUFBRSxRQUFRLENBQUMsUUFBUSxJQUFJLEtBQUs7cUJBQ3BDLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXBSRCxrQ0FvUkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERhdGEgc2VydmljZSBoYW5kbGVzIG5vZGUgYW5kIGVkZ2UgaW5zZXJ0L2RlbGV0ZS9leHBvcnQgb3BlcmF0aW9ucy5cbiAqL1xuXG5pbXBvcnQgeyBTZXJ2aWNlQ29udGV4dCB9IGZyb20gJy4vc2VydmljZS1jb250ZXh0JztcbmltcG9ydCB7XG4gIEluc2VydE5vZGVzUmVzdWx0LFxuICBJbnNlcnRFZGdlc1Jlc3VsdCxcbiAgRGVsZXRlUmVzdWx0LFxuICBFeHBvcnROb2Rlc1Jlc3VsdCxcbiAgRXhwb3J0RWRnZXNSZXN1bHQsXG4gIEV4cG9ydENvbmZpZyxcbiAgRXhwb3J0Q2h1bmssXG4gIEV4cG9ydFN0YXRzLFxufSBmcm9tICcuLi9yZXNwb25zZSc7XG5pbXBvcnQgeyBOb2RlRGF0YSwgRWRnZURhdGEgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBwcm9taXNpZnlDYWxsIH0gZnJvbSAnLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgbm9kZURhdGFUb1Byb3RvLCBlZGdlRGF0YVRvUHJvdG8sIGNvbnZlcnRQcm90b1Byb3BlcnRpZXMgfSBmcm9tICcuL2NvbnZlcnRlcnMnO1xuaW1wb3J0IHsgSW5zZXJ0Tm9kZXNDb25maWcsIEluc2VydEVkZ2VzQ29uZmlnIH0gZnJvbSAnLi4vY2xpZW50JztcblxuLyoqXG4gKiBEYXRhIHNlcnZpY2UgZm9yIGluc2VydGluZywgZGVsZXRpbmcsIGFuZCBleHBvcnRpbmcgZ3JhcGggZGF0YS5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjdHg6IFNlcnZpY2VDb250ZXh0KSB7fVxuXG4gIC8qKlxuICAgKiBJbnNlcnQgbXVsdGlwbGUgbm9kZXMgaW50byBhIGdyYXBoLlxuICAgKi9cbiAgYXN5bmMgaW5zZXJ0Tm9kZXMoXG4gICAgZ3JhcGhOYW1lOiBzdHJpbmcsXG4gICAgbm9kZXM6IE5vZGVEYXRhW10sXG4gICAgY29uZmlnPzogSW5zZXJ0Tm9kZXNDb25maWdcbiAgKTogUHJvbWlzZTxJbnNlcnROb2Rlc1Jlc3VsdD4ge1xuICAgIGNvbnN0IHJlcXVlc3Q6IGFueSA9IHtcbiAgICAgIGdyYXBoX25hbWU6IGdyYXBoTmFtZSxcbiAgICAgIG5vZGVzOiBub2Rlcy5tYXAoKG4pID0+IG5vZGVEYXRhVG9Qcm90byhuKSksXG4gICAgfTtcblxuICAgIC8vIEFMV0FZUyBzZXQgb3B0aW9ucyAoZXZlbiB3aGVuIHVuZGVmaW5lZCkgdG8gYXZvaWQgZGVwcmVjYXRlZCBidWxrIG9wZXJhdGlvbnMgZXJyb3JcbiAgICByZXF1ZXN0Lm9wdGlvbnMgPSB7IG92ZXJ3cml0ZTogY29uZmlnPy5vcHRpb25zPy5vdmVyd3JpdGUgfHwgZmFsc2UgfTtcblxuICAgIGlmIChjb25maWc/LmJ1bGtJbXBvcnRTZXNzaW9uSWQpIHtcbiAgICAgIHJlcXVlc3QuYnVsa19pbXBvcnRfc2Vzc2lvbl9pZCA9IGNvbmZpZy5idWxrSW1wb3J0U2Vzc2lvbklkO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XG4gICAgY29uc3QgcmVzcG9uc2U6IGFueSA9IGF3YWl0IHByb21pc2lmeUNhbGwoXG4gICAgICB0aGlzLmN0eC5jbGllbnRzLmRhdGFTZXJ2aWNlLFxuICAgICAgJ0luc2VydE5vZGVzJyxcbiAgICAgIHJlcXVlc3QsXG4gICAgICBtZXRhZGF0YVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogcmVzcG9uc2Uuc3VjY2VzcyB8fCBmYWxzZSxcbiAgICAgIG5vZGVJZHM6IHJlc3BvbnNlLm5vZGVfaWRzIHx8IFtdLFxuICAgICAgbm9kZUNvdW50OiBwYXJzZUludChyZXNwb25zZS5ub2RlX2NvdW50IHx8ICcwJywgMTApLFxuICAgICAgbWVzc2FnZTogcmVzcG9uc2UubWVzc2FnZSB8fCAnJyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEluc2VydCBtdWx0aXBsZSBlZGdlcyBpbnRvIGEgZ3JhcGguXG4gICAqL1xuICBhc3luYyBpbnNlcnRFZGdlcyhcbiAgICBncmFwaE5hbWU6IHN0cmluZyxcbiAgICBlZGdlczogRWRnZURhdGFbXSxcbiAgICBjb25maWc/OiBJbnNlcnRFZGdlc0NvbmZpZ1xuICApOiBQcm9taXNlPEluc2VydEVkZ2VzUmVzdWx0PiB7XG4gICAgY29uc3QgcmVxdWVzdDogYW55ID0ge1xuICAgICAgZ3JhcGhfbmFtZTogZ3JhcGhOYW1lLFxuICAgICAgZWRnZXM6IGVkZ2VzLm1hcCgoZSkgPT4gZWRnZURhdGFUb1Byb3RvKGUpKSxcbiAgICB9O1xuXG4gICAgLy8gQUxXQVlTIHNldCBvcHRpb25zIChldmVuIHdoZW4gdW5kZWZpbmVkKSB0byBhdm9pZCBkZXByZWNhdGVkIGJ1bGsgb3BlcmF0aW9ucyBlcnJvclxuICAgIHJlcXVlc3Qub3B0aW9ucyA9IHtcbiAgICAgIHNraXBfaW52YWxpZF9ub2RlczogY29uZmlnPy5vcHRpb25zPy5za2lwSW52YWxpZE5vZGVzIHx8IGZhbHNlLFxuICAgIH07XG5cbiAgICBpZiAoY29uZmlnPy5idWxrSW1wb3J0U2Vzc2lvbklkKSB7XG4gICAgICByZXF1ZXN0LmJ1bGtfaW1wb3J0X3Nlc3Npb25faWQgPSBjb25maWcuYnVsa0ltcG9ydFNlc3Npb25JZDtcbiAgICB9XG5cbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsKFxuICAgICAgdGhpcy5jdHguY2xpZW50cy5kYXRhU2VydmljZSxcbiAgICAgICdJbnNlcnRFZGdlcycsXG4gICAgICByZXF1ZXN0LFxuICAgICAgbWV0YWRhdGFcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHJlc3BvbnNlLnN1Y2Nlc3MgfHwgZmFsc2UsXG4gICAgICBlZGdlSWRzOiByZXNwb25zZS5lZGdlX2lkcyB8fCBbXSxcbiAgICAgIGVkZ2VDb3VudDogcGFyc2VJbnQocmVzcG9uc2UuZWRnZV9jb3VudCB8fCAnMCcsIDEwKSxcbiAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLm1lc3NhZ2UgfHwgJycsXG4gICAgICBza2lwcGVkQ291bnQ6IHBhcnNlSW50KHJlc3BvbnNlLnNraXBwZWRfY291bnQgfHwgJzAnLCAxMCksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgbm9kZXMgZnJvbSBhIGdyYXBoLlxuICAgKi9cbiAgYXN5bmMgZGVsZXRlTm9kZXMoXG4gICAgZ3JhcGhOYW1lOiBzdHJpbmcsXG4gICAgbm9kZUlkcz86IHN0cmluZ1tdLFxuICAgIGxhYmVscz86IHN0cmluZ1tdLFxuICAgIHdoZXJlPzogc3RyaW5nXG4gICk6IFByb21pc2U8RGVsZXRlUmVzdWx0PiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgIGdyYXBoX25hbWU6IGdyYXBoTmFtZSxcbiAgICAgIG5vZGVfaWRzOiBub2RlSWRzIHx8IFtdLFxuICAgICAgbGFiZWxzOiBsYWJlbHMgfHwgW10sXG4gICAgICB3aGVyZTogd2hlcmUgfHwgJycsXG4gICAgfTtcblxuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XG4gICAgY29uc3QgcmVzcG9uc2U6IGFueSA9IGF3YWl0IHByb21pc2lmeUNhbGwoXG4gICAgICB0aGlzLmN0eC5jbGllbnRzLmRhdGFTZXJ2aWNlLFxuICAgICAgJ0RlbGV0ZU5vZGVzJyxcbiAgICAgIHJlcXVlc3QsXG4gICAgICBtZXRhZGF0YVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogcmVzcG9uc2Uuc3VjY2VzcyB8fCBmYWxzZSxcbiAgICAgIGRlbGV0ZWRDb3VudDogcGFyc2VJbnQocmVzcG9uc2UuZGVsZXRlZF9jb3VudCB8fCAnMCcsIDEwKSxcbiAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLm1lc3NhZ2UgfHwgJycsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgZWRnZXMgZnJvbSBhIGdyYXBoLlxuICAgKi9cbiAgYXN5bmMgZGVsZXRlRWRnZXMoXG4gICAgZ3JhcGhOYW1lOiBzdHJpbmcsXG4gICAgZWRnZUlkcz86IHN0cmluZ1tdLFxuICAgIGxhYmVsPzogc3RyaW5nLFxuICAgIHdoZXJlPzogc3RyaW5nXG4gICk6IFByb21pc2U8RGVsZXRlUmVzdWx0PiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgIGdyYXBoX25hbWU6IGdyYXBoTmFtZSxcbiAgICAgIGVkZ2VfaWRzOiBlZGdlSWRzIHx8IFtdLFxuICAgICAgbGFiZWw6IGxhYmVsIHx8ICcnLFxuICAgICAgd2hlcmU6IHdoZXJlIHx8ICcnLFxuICAgIH07XG5cbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsKFxuICAgICAgdGhpcy5jdHguY2xpZW50cy5kYXRhU2VydmljZSxcbiAgICAgICdEZWxldGVFZGdlcycsXG4gICAgICByZXF1ZXN0LFxuICAgICAgbWV0YWRhdGFcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHJlc3BvbnNlLnN1Y2Nlc3MgfHwgZmFsc2UsXG4gICAgICBkZWxldGVkQ291bnQ6IHBhcnNlSW50KHJlc3BvbnNlLmRlbGV0ZWRfY291bnQgfHwgJzAnLCAxMCksXG4gICAgICBtZXNzYWdlOiByZXNwb25zZS5tZXNzYWdlIHx8ICcnLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRXhwb3J0IGdyYXBoIGRhdGEgaW4gSlNPTiBMaW5lcyBmb3JtYXQgKHN0cmVhbWluZykuXG4gICAqL1xuICBhc3luYyBleHBvcnQoXG4gICAgY29uZmlnOiBFeHBvcnRDb25maWcsXG4gICAgY2FsbGJhY2s/OiAoY2h1bms6IEV4cG9ydENodW5rKSA9PiB2b2lkXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBncmFwaF9uYW1lOiBjb25maWcuZ3JhcGhOYW1lLFxuICAgICAgYmF0Y2hfc2l6ZTogY29uZmlnLmJhdGNoU2l6ZSB8fCAwLFxuICAgICAgZXhwb3J0X25vZGVzOiBjb25maWcuZXhwb3J0Tm9kZXMgIT09IGZhbHNlLFxuICAgICAgZXhwb3J0X2VkZ2VzOiBjb25maWcuZXhwb3J0RWRnZXMgIT09IGZhbHNlLFxuICAgICAgbm9kZV9sYWJlbHM6IGNvbmZpZy5ub2RlTGFiZWxzIHx8IFtdLFxuICAgICAgZWRnZV9sYWJlbHM6IGNvbmZpZy5lZGdlTGFiZWxzIHx8IFtdLFxuICAgICAgaW5jbHVkZV9tZXRhZGF0YTogY29uZmlnLmluY2x1ZGVNZXRhZGF0YSB8fCBmYWxzZSxcbiAgICB9O1xuXG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBzdHJlYW0gPSAodGhpcy5jdHguY2xpZW50cy5kYXRhU2VydmljZSBhcyBhbnkpLkV4cG9ydChyZXF1ZXN0LCBtZXRhZGF0YSk7XG5cbiAgICAgIHN0cmVhbS5vbignZGF0YScsIChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgIGxldCBzdGF0czogRXhwb3J0U3RhdHMgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXRzKSB7XG4gICAgICAgICAgICBzdGF0cyA9IHtcbiAgICAgICAgICAgICAgbm9kZXNFeHBvcnRlZDogcGFyc2VJbnQocmVzcG9uc2Uuc3RhdHMubm9kZXNfZXhwb3J0ZWQgfHwgJzAnLCAxMCksXG4gICAgICAgICAgICAgIGVkZ2VzRXhwb3J0ZWQ6IHBhcnNlSW50KHJlc3BvbnNlLnN0YXRzLmVkZ2VzX2V4cG9ydGVkIHx8ICcwJywgMTApLFxuICAgICAgICAgICAgICBieXRlc1dyaXR0ZW46IHBhcnNlSW50KHJlc3BvbnNlLnN0YXRzLmJ5dGVzX3dyaXR0ZW4gfHwgJzAnLCAxMCksXG4gICAgICAgICAgICAgIGR1cmF0aW9uTXM6IHBhcnNlSW50KHJlc3BvbnNlLnN0YXRzLmR1cmF0aW9uX21zIHx8ICcwJywgMTApLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBjaHVuazogRXhwb3J0Q2h1bmsgPSB7XG4gICAgICAgICAgICBkYXRhOiBCdWZmZXIuZnJvbShyZXNwb25zZS5kYXRhIHx8IFtdKSxcbiAgICAgICAgICAgIGlzRmluYWw6IHJlc3BvbnNlLmlzX2ZpbmFsIHx8IGZhbHNlLFxuICAgICAgICAgICAgc3RhdHMsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNhbGxiYWNrKGNodW5rKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXNwb25zZS5pc19maW5hbCkge1xuICAgICAgICAgIHN0cmVhbS5jYW5jZWwoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHN0cmVhbS5vbignZW5kJywgKCkgPT4gcmVzb2x2ZSgpKTtcbiAgICAgIHN0cmVhbS5vbignZXJyb3InLCAoZXJyb3I6IGFueSkgPT4gcmVqZWN0KGVycm9yKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3RyZWFtIG5vZGVzIGZyb20gYSBncmFwaC5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIGV4cG9ydCgpIHdpdGggRXhwb3J0Q29uZmlnIGluc3RlYWRcbiAgICovXG4gIGFzeW5jIGV4cG9ydE5vZGVzKFxuICAgIGdyYXBoTmFtZTogc3RyaW5nLFxuICAgIGxhYmVscz86IHN0cmluZ1tdLFxuICAgIGxpbWl0OiBudW1iZXIgPSAwLFxuICAgIGNhbGxiYWNrPzogKHJlc3VsdDogRXhwb3J0Tm9kZXNSZXN1bHQpID0+IHZvaWRcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc29sZS53YXJuKCdleHBvcnROb2RlcyBpcyBkZXByZWNhdGVkLCB1c2UgZXhwb3J0KCkgd2l0aCBFeHBvcnRDb25maWcgaW5zdGVhZCcpO1xuXG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgIGdyYXBoX25hbWU6IGdyYXBoTmFtZSxcbiAgICAgIGxhYmVsczogbGFiZWxzIHx8IFtdLFxuICAgICAgbGltaXQ6IGxpbWl0LnRvU3RyaW5nKCksXG4gICAgfTtcblxuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgc3RyZWFtID0gKHRoaXMuY3R4LmNsaWVudHMuZGF0YVNlcnZpY2UgYXMgYW55KS5FeHBvcnROb2RlcyhyZXF1ZXN0LCBtZXRhZGF0YSk7XG5cbiAgICAgIHN0cmVhbS5vbignZGF0YScsIChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgIGNhbGxiYWNrKHtcbiAgICAgICAgICAgIG5vZGVzOiAocmVzcG9uc2Uubm9kZXMgfHwgW10pLm1hcCgobjogYW55KSA9PiAoe1xuICAgICAgICAgICAgICBpZDogbi5pZCB8fCAnJyxcbiAgICAgICAgICAgICAgbGFiZWxzOiBuLmxhYmVscyB8fCBbXSxcbiAgICAgICAgICAgICAgcHJvcGVydGllczogY29udmVydFByb3RvUHJvcGVydGllcyhuLnByb3BlcnRpZXMgfHwge30pLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgaGFzTW9yZTogcmVzcG9uc2UuaGFzX21vcmUgfHwgZmFsc2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBzdHJlYW0ub24oJ2VuZCcsICgpID0+IHJlc29sdmUoKSk7XG4gICAgICBzdHJlYW0ub24oJ2Vycm9yJywgKGVycm9yOiBhbnkpID0+IHJlamVjdChlcnJvcikpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0cmVhbSBlZGdlcyBmcm9tIGEgZ3JhcGguXG4gICAqIEBkZXByZWNhdGVkIFVzZSBleHBvcnQoKSB3aXRoIEV4cG9ydENvbmZpZyBpbnN0ZWFkXG4gICAqL1xuICBhc3luYyBleHBvcnRFZGdlcyhcbiAgICBncmFwaE5hbWU6IHN0cmluZyxcbiAgICBsYWJlbHM/OiBzdHJpbmdbXSxcbiAgICBsaW1pdDogbnVtYmVyID0gMCxcbiAgICBjYWxsYmFjaz86IChyZXN1bHQ6IEV4cG9ydEVkZ2VzUmVzdWx0KSA9PiB2b2lkXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnNvbGUud2FybignZXhwb3J0RWRnZXMgaXMgZGVwcmVjYXRlZCwgdXNlIGV4cG9ydCgpIHdpdGggRXhwb3J0Q29uZmlnIGluc3RlYWQnKTtcblxuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBncmFwaF9uYW1lOiBncmFwaE5hbWUsXG4gICAgICBsYWJlbHM6IGxhYmVscyB8fCBbXSxcbiAgICAgIGxpbWl0OiBsaW1pdC50b1N0cmluZygpLFxuICAgIH07XG5cbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHN0cmVhbSA9ICh0aGlzLmN0eC5jbGllbnRzLmRhdGFTZXJ2aWNlIGFzIGFueSkuRXhwb3J0RWRnZXMocmVxdWVzdCwgbWV0YWRhdGEpO1xuXG4gICAgICBzdHJlYW0ub24oJ2RhdGEnLCAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICBjYWxsYmFjayh7XG4gICAgICAgICAgICBlZGdlczogKHJlc3BvbnNlLmVkZ2VzIHx8IFtdKS5tYXAoKGU6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgaWQ6IGUuaWQgfHwgJycsXG4gICAgICAgICAgICAgIGxhYmVsOiBlLmxhYmVsIHx8ICcnLFxuICAgICAgICAgICAgICBmcm9tTm9kZUlkOiBlLmZyb21fbm9kZV9pZCB8fCAnJyxcbiAgICAgICAgICAgICAgdG9Ob2RlSWQ6IGUudG9fbm9kZV9pZCB8fCAnJyxcbiAgICAgICAgICAgICAgcHJvcGVydGllczogY29udmVydFByb3RvUHJvcGVydGllcyhlLnByb3BlcnRpZXMgfHwge30pLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgaGFzTW9yZTogcmVzcG9uc2UuaGFzX21vcmUgfHwgZmFsc2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBzdHJlYW0ub24oJ2VuZCcsICgpID0+IHJlc29sdmUoKSk7XG4gICAgICBzdHJlYW0ub24oJ2Vycm9yJywgKGVycm9yOiBhbnkpID0+IHJlamVjdChlcnJvcikpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2RhdGEtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQWNILDBDQUE0QztBQUM1Qyw2Q0FBd0Y7QUFHeEY7O0dBRUc7QUFDSCxNQUFhLFdBQVc7SUFDRjtJQUFwQixZQUFvQixHQUFtQjtRQUFuQixRQUFHLEdBQUgsR0FBRyxDQUFnQjtJQUFHLENBQUM7SUFFM0M7O09BRUc7SUFDSCxLQUFLLENBQUMsV0FBVyxDQUNmLFNBQWlCLEVBQ2pCLEtBQWlCLEVBQ2pCLE1BQTBCO1FBRTFCLE1BQU0sT0FBTyxHQUFRO1lBQ25CLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFBLDRCQUFlLEVBQUMsQ0FBQyxDQUFDLENBQUM7U0FDNUMsQ0FBQztRQUVGLHNGQUFzRjtRQUN0Rix3RkFBd0Y7UUFDeEYsT0FBTyxDQUFDLE9BQU8sR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBVyxFQUFFLENBQUM7UUFFbkUsSUFBSSxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztZQUNoQyxPQUFPLENBQUMsc0JBQXNCLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDO1FBQzlELENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDL0MsTUFBTSxRQUFRLEdBQVEsTUFBTSxJQUFBLHdCQUFhLEVBQ3ZDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFDNUIsYUFBYSxFQUNiLE9BQU8sRUFDUCxRQUFRLENBQ1QsQ0FBQztRQUVGLE9BQU87WUFDTCxPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU8s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RSxDQUFDLFFBQWEsRUFBRSxFQUFFO2dCQUNsQyxJQUFJLFFBQVEsRUFBRSxDQUFDO29CQUNiLFFBQVEsQ0FBQzt3QkFDUCxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQzs0QkFDN0MsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRTs0QkFDZCxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFOzRCQUNwQixVQUFVLEVBQUUsQ0FBQyxDQUFDLFlBQVksSUFBSSxFQUFFOzRCQUNoQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLFVBQVUsSUFBSSxFQUFFOzRCQUM1QixVQUFVLEVBQUUsSUFBQSxtQ0FBc0IsRUFBQyxDQUFDLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQzt5QkFDdkQsQ0FBQyxDQUFDO3dCQUNILE9BQU8sRUFBRSxRQUFRLENBQUMsUUFBUSxJQUFJLEtBQUs7cUJBQ3BDLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXRSRCxrQ0FzUkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERhdGEgc2VydmljZSBoYW5kbGVzIG5vZGUgYW5kIGVkZ2UgaW5zZXJ0L2RlbGV0ZS9leHBvcnQgb3BlcmF0aW9ucy5cbiAqL1xuXG5pbXBvcnQgeyBTZXJ2aWNlQ29udGV4dCB9IGZyb20gJy4vc2VydmljZS1jb250ZXh0JztcbmltcG9ydCB7XG4gIEluc2VydE5vZGVzUmVzdWx0LFxuICBJbnNlcnRFZGdlc1Jlc3VsdCxcbiAgRGVsZXRlUmVzdWx0LFxuICBFeHBvcnROb2Rlc1Jlc3VsdCxcbiAgRXhwb3J0RWRnZXNSZXN1bHQsXG4gIEV4cG9ydENvbmZpZyxcbiAgRXhwb3J0Q2h1bmssXG4gIEV4cG9ydFN0YXRzLFxufSBmcm9tICcuLi9yZXNwb25zZSc7XG5pbXBvcnQgeyBOb2RlRGF0YSwgRWRnZURhdGEgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBwcm9taXNpZnlDYWxsIH0gZnJvbSAnLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgbm9kZURhdGFUb1Byb3RvLCBlZGdlRGF0YVRvUHJvdG8sIGNvbnZlcnRQcm90b1Byb3BlcnRpZXMgfSBmcm9tICcuL2NvbnZlcnRlcnMnO1xuaW1wb3J0IHsgSW5zZXJ0Tm9kZXNDb25maWcsIEluc2VydEVkZ2VzQ29uZmlnIH0gZnJvbSAnLi4vY2xpZW50JztcblxuLyoqXG4gKiBEYXRhIHNlcnZpY2UgZm9yIGluc2VydGluZywgZGVsZXRpbmcsIGFuZCBleHBvcnRpbmcgZ3JhcGggZGF0YS5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjdHg6IFNlcnZpY2VDb250ZXh0KSB7fVxuXG4gIC8qKlxuICAgKiBJbnNlcnQgbXVsdGlwbGUgbm9kZXMgaW50byBhIGdyYXBoLlxuICAgKi9cbiAgYXN5bmMgaW5zZXJ0Tm9kZXMoXG4gICAgZ3JhcGhOYW1lOiBzdHJpbmcsXG4gICAgbm9kZXM6IE5vZGVEYXRhW10sXG4gICAgY29uZmlnPzogSW5zZXJ0Tm9kZXNDb25maWdcbiAgKTogUHJvbWlzZTxJbnNlcnROb2Rlc1Jlc3VsdD4ge1xuICAgIGNvbnN0IHJlcXVlc3Q6IGFueSA9IHtcbiAgICAgIGdyYXBoX25hbWU6IGdyYXBoTmFtZSxcbiAgICAgIG5vZGVzOiBub2Rlcy5tYXAoKG4pID0+IG5vZGVEYXRhVG9Qcm90byhuKSksXG4gICAgfTtcblxuICAgIC8vIEFMV0FZUyBzZXQgb3B0aW9ucyAoZXZlbiB3aGVuIHVuZGVmaW5lZCkgdG8gYXZvaWQgZGVwcmVjYXRlZCBidWxrIG9wZXJhdGlvbnMgZXJyb3IuXG4gICAgLy8gYG1vZGVgIGlzIGEgbnVtZXJpYyBlbnVtIGFsaWduZWQgd2l0aCBwcm90byBJbnNlcnRNb2RlIHZhbHVlczsgcGFzcyB0aHJvdWdoIGRpcmVjdGx5LlxuICAgIHJlcXVlc3Qub3B0aW9ucyA9IHsgbW9kZTogKGNvbmZpZz8ub3B0aW9ucz8ubW9kZSA/PyAwKSBhcyBudW1iZXIgfTtcblxuICAgIGlmIChjb25maWc/LmJ1bGtJbXBvcnRTZXNzaW9uSWQpIHtcbiAgICAgIHJlcXVlc3QuYnVsa19pbXBvcnRfc2Vzc2lvbl9pZCA9IGNvbmZpZy5idWxrSW1wb3J0U2Vzc2lvbklkO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XG4gICAgY29uc3QgcmVzcG9uc2U6IGFueSA9IGF3YWl0IHByb21pc2lmeUNhbGwoXG4gICAgICB0aGlzLmN0eC5jbGllbnRzLmRhdGFTZXJ2aWNlLFxuICAgICAgJ0luc2VydE5vZGVzJyxcbiAgICAgIHJlcXVlc3QsXG4gICAgICBtZXRhZGF0YVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogcmVzcG9uc2Uuc3VjY2VzcyB8fCBmYWxzZSxcbiAgICAgIG5vZGVJZHM6IHJlc3BvbnNlLm5vZGVfaWRzIHx8IFtdLFxuICAgICAgbm9kZUNvdW50OiBwYXJzZUludChyZXNwb25zZS5ub2RlX2NvdW50IHx8ICcwJywgMTApLFxuICAgICAgbWVzc2FnZTogcmVzcG9uc2UubWVzc2FnZSB8fCAnJyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEluc2VydCBtdWx0aXBsZSBlZGdlcyBpbnRvIGEgZ3JhcGguXG4gICAqL1xuICBhc3luYyBpbnNlcnRFZGdlcyhcbiAgICBncmFwaE5hbWU6IHN0cmluZyxcbiAgICBlZGdlczogRWRnZURhdGFbXSxcbiAgICBjb25maWc/OiBJbnNlcnRFZGdlc0NvbmZpZ1xuICApOiBQcm9taXNlPEluc2VydEVkZ2VzUmVzdWx0PiB7XG4gICAgY29uc3QgcmVxdWVzdDogYW55ID0ge1xuICAgICAgZ3JhcGhfbmFtZTogZ3JhcGhOYW1lLFxuICAgICAgZWRnZXM6IGVkZ2VzLm1hcCgoZSkgPT4gZWRnZURhdGFUb1Byb3RvKGUpKSxcbiAgICB9O1xuXG4gICAgLy8gQUxXQVlTIHNldCBvcHRpb25zIChldmVuIHdoZW4gdW5kZWZpbmVkKSB0byBhdm9pZCBkZXByZWNhdGVkIGJ1bGsgb3BlcmF0aW9ucyBlcnJvci5cbiAgICByZXF1ZXN0Lm9wdGlvbnMgPSB7XG4gICAgICBza2lwX2ludmFsaWRfbm9kZXM6IGNvbmZpZz8ub3B0aW9ucz8uc2tpcEludmFsaWROb2RlcyB8fCBmYWxzZSxcbiAgICAgIG1vZGU6IChjb25maWc/Lm9wdGlvbnM/Lm1vZGUgPz8gMCkgYXMgbnVtYmVyLFxuICAgIH07XG5cbiAgICBpZiAoY29uZmlnPy5idWxrSW1wb3J0U2Vzc2lvbklkKSB7XG4gICAgICByZXF1ZXN0LmJ1bGtfaW1wb3J0X3Nlc3Npb25faWQgPSBjb25maWcuYnVsa0ltcG9ydFNlc3Npb25JZDtcbiAgICB9XG5cbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsKFxuICAgICAgdGhpcy5jdHguY2xpZW50cy5kYXRhU2VydmljZSxcbiAgICAgICdJbnNlcnRFZGdlcycsXG4gICAgICByZXF1ZXN0LFxuICAgICAgbWV0YWRhdGFcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHJlc3BvbnNlLnN1Y2Nlc3MgfHwgZmFsc2UsXG4gICAgICBlZGdlSWRzOiByZXNwb25zZS5lZGdlX2lkcyB8fCBbXSxcbiAgICAgIGVkZ2VDb3VudDogcGFyc2VJbnQocmVzcG9uc2UuZWRnZV9jb3VudCB8fCAnMCcsIDEwKSxcbiAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLm1lc3NhZ2UgfHwgJycsXG4gICAgICBza2lwcGVkQ291bnQ6IHBhcnNlSW50KHJlc3BvbnNlLnNraXBwZWRfY291bnQgfHwgJzAnLCAxMCksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgbm9kZXMgZnJvbSBhIGdyYXBoLlxuICAgKi9cbiAgYXN5bmMgZGVsZXRlTm9kZXMoXG4gICAgZ3JhcGhOYW1lOiBzdHJpbmcsXG4gICAgbm9kZUlkcz86IHN0cmluZ1tdLFxuICAgIGxhYmVscz86IHN0cmluZ1tdLFxuICAgIHdoZXJlPzogc3RyaW5nXG4gICk6IFByb21pc2U8RGVsZXRlUmVzdWx0PiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgIGdyYXBoX25hbWU6IGdyYXBoTmFtZSxcbiAgICAgIG5vZGVfaWRzOiBub2RlSWRzIHx8IFtdLFxuICAgICAgbGFiZWxzOiBsYWJlbHMgfHwgW10sXG4gICAgICB3aGVyZTogd2hlcmUgfHwgJycsXG4gICAgfTtcblxuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XG4gICAgY29uc3QgcmVzcG9uc2U6IGFueSA9IGF3YWl0IHByb21pc2lmeUNhbGwoXG4gICAgICB0aGlzLmN0eC5jbGllbnRzLmRhdGFTZXJ2aWNlLFxuICAgICAgJ0RlbGV0ZU5vZGVzJyxcbiAgICAgIHJlcXVlc3QsXG4gICAgICBtZXRhZGF0YVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogcmVzcG9uc2Uuc3VjY2VzcyB8fCBmYWxzZSxcbiAgICAgIGRlbGV0ZWRDb3VudDogcGFyc2VJbnQocmVzcG9uc2UuZGVsZXRlZF9jb3VudCB8fCAnMCcsIDEwKSxcbiAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLm1lc3NhZ2UgfHwgJycsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgZWRnZXMgZnJvbSBhIGdyYXBoLlxuICAgKi9cbiAgYXN5bmMgZGVsZXRlRWRnZXMoXG4gICAgZ3JhcGhOYW1lOiBzdHJpbmcsXG4gICAgZWRnZUlkcz86IHN0cmluZ1tdLFxuICAgIGxhYmVsPzogc3RyaW5nLFxuICAgIHdoZXJlPzogc3RyaW5nXG4gICk6IFByb21pc2U8RGVsZXRlUmVzdWx0PiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgIGdyYXBoX25hbWU6IGdyYXBoTmFtZSxcbiAgICAgIGVkZ2VfaWRzOiBlZGdlSWRzIHx8IFtdLFxuICAgICAgbGFiZWw6IGxhYmVsIHx8ICcnLFxuICAgICAgd2hlcmU6IHdoZXJlIHx8ICcnLFxuICAgIH07XG5cbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsKFxuICAgICAgdGhpcy5jdHguY2xpZW50cy5kYXRhU2VydmljZSxcbiAgICAgICdEZWxldGVFZGdlcycsXG4gICAgICByZXF1ZXN0LFxuICAgICAgbWV0YWRhdGFcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHJlc3BvbnNlLnN1Y2Nlc3MgfHwgZmFsc2UsXG4gICAgICBkZWxldGVkQ291bnQ6IHBhcnNlSW50KHJlc3BvbnNlLmRlbGV0ZWRfY291bnQgfHwgJzAnLCAxMCksXG4gICAgICBtZXNzYWdlOiByZXNwb25zZS5tZXNzYWdlIHx8ICcnLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRXhwb3J0IGdyYXBoIGRhdGEgaW4gSlNPTiBMaW5lcyBmb3JtYXQgKHN0cmVhbWluZykuXG4gICAqL1xuICBhc3luYyBleHBvcnQoXG4gICAgY29uZmlnOiBFeHBvcnRDb25maWcsXG4gICAgY2FsbGJhY2s/OiAoY2h1bms6IEV4cG9ydENodW5rKSA9PiB2b2lkXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBncmFwaF9uYW1lOiBjb25maWcuZ3JhcGhOYW1lLFxuICAgICAgYmF0Y2hfc2l6ZTogY29uZmlnLmJhdGNoU2l6ZSB8fCAwLFxuICAgICAgZXhwb3J0X25vZGVzOiBjb25maWcuZXhwb3J0Tm9kZXMgIT09IGZhbHNlLFxuICAgICAgZXhwb3J0X2VkZ2VzOiBjb25maWcuZXhwb3J0RWRnZXMgIT09IGZhbHNlLFxuICAgICAgbm9kZV9sYWJlbHM6IGNvbmZpZy5ub2RlTGFiZWxzIHx8IFtdLFxuICAgICAgZWRnZV9sYWJlbHM6IGNvbmZpZy5lZGdlTGFiZWxzIHx8IFtdLFxuICAgICAgaW5jbHVkZV9tZXRhZGF0YTogY29uZmlnLmluY2x1ZGVNZXRhZGF0YSB8fCBmYWxzZSxcbiAgICB9O1xuXG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBzdHJlYW0gPSAodGhpcy5jdHguY2xpZW50cy5kYXRhU2VydmljZSBhcyBhbnkpLkV4cG9ydChyZXF1ZXN0LCBtZXRhZGF0YSk7XG5cbiAgICAgIHN0cmVhbS5vbignZGF0YScsIChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgIGxldCBzdGF0czogRXhwb3J0U3RhdHMgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXRzKSB7XG4gICAgICAgICAgICBzdGF0cyA9IHtcbiAgICAgICAgICAgICAgbm9kZXNFeHBvcnRlZDogcGFyc2VJbnQocmVzcG9uc2Uuc3RhdHMubm9kZXNfZXhwb3J0ZWQgfHwgJzAnLCAxMCksXG4gICAgICAgICAgICAgIGVkZ2VzRXhwb3J0ZWQ6IHBhcnNlSW50KHJlc3BvbnNlLnN0YXRzLmVkZ2VzX2V4cG9ydGVkIHx8ICcwJywgMTApLFxuICAgICAgICAgICAgICBieXRlc1dyaXR0ZW46IHBhcnNlSW50KHJlc3BvbnNlLnN0YXRzLmJ5dGVzX3dyaXR0ZW4gfHwgJzAnLCAxMCksXG4gICAgICAgICAgICAgIGR1cmF0aW9uTXM6IHBhcnNlSW50KHJlc3BvbnNlLnN0YXRzLmR1cmF0aW9uX21zIHx8ICcwJywgMTApLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBjaHVuazogRXhwb3J0Q2h1bmsgPSB7XG4gICAgICAgICAgICBkYXRhOiBCdWZmZXIuZnJvbShyZXNwb25zZS5kYXRhIHx8IFtdKSxcbiAgICAgICAgICAgIGlzRmluYWw6IHJlc3BvbnNlLmlzX2ZpbmFsIHx8IGZhbHNlLFxuICAgICAgICAgICAgc3RhdHMsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNhbGxiYWNrKGNodW5rKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXNwb25zZS5pc19maW5hbCkge1xuICAgICAgICAgIHN0cmVhbS5jYW5jZWwoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHN0cmVhbS5vbignZW5kJywgKCkgPT4gcmVzb2x2ZSgpKTtcbiAgICAgIHN0cmVhbS5vbignZXJyb3InLCAoZXJyb3I6IGFueSkgPT4gcmVqZWN0KGVycm9yKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3RyZWFtIG5vZGVzIGZyb20gYSBncmFwaC5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIGV4cG9ydCgpIHdpdGggRXhwb3J0Q29uZmlnIGluc3RlYWRcbiAgICovXG4gIGFzeW5jIGV4cG9ydE5vZGVzKFxuICAgIGdyYXBoTmFtZTogc3RyaW5nLFxuICAgIGxhYmVscz86IHN0cmluZ1tdLFxuICAgIGxpbWl0OiBudW1iZXIgPSAwLFxuICAgIGNhbGxiYWNrPzogKHJlc3VsdDogRXhwb3J0Tm9kZXNSZXN1bHQpID0+IHZvaWRcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc29sZS53YXJuKCdleHBvcnROb2RlcyBpcyBkZXByZWNhdGVkLCB1c2UgZXhwb3J0KCkgd2l0aCBFeHBvcnRDb25maWcgaW5zdGVhZCcpO1xuXG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgIGdyYXBoX25hbWU6IGdyYXBoTmFtZSxcbiAgICAgIGxhYmVsczogbGFiZWxzIHx8IFtdLFxuICAgICAgbGltaXQ6IGxpbWl0LnRvU3RyaW5nKCksXG4gICAgfTtcblxuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgc3RyZWFtID0gKHRoaXMuY3R4LmNsaWVudHMuZGF0YVNlcnZpY2UgYXMgYW55KS5FeHBvcnROb2RlcyhyZXF1ZXN0LCBtZXRhZGF0YSk7XG5cbiAgICAgIHN0cmVhbS5vbignZGF0YScsIChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgIGNhbGxiYWNrKHtcbiAgICAgICAgICAgIG5vZGVzOiAocmVzcG9uc2Uubm9kZXMgfHwgW10pLm1hcCgobjogYW55KSA9PiAoe1xuICAgICAgICAgICAgICBpZDogbi5pZCB8fCAnJyxcbiAgICAgICAgICAgICAgbGFiZWxzOiBuLmxhYmVscyB8fCBbXSxcbiAgICAgICAgICAgICAgcHJvcGVydGllczogY29udmVydFByb3RvUHJvcGVydGllcyhuLnByb3BlcnRpZXMgfHwge30pLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgaGFzTW9yZTogcmVzcG9uc2UuaGFzX21vcmUgfHwgZmFsc2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBzdHJlYW0ub24oJ2VuZCcsICgpID0+IHJlc29sdmUoKSk7XG4gICAgICBzdHJlYW0ub24oJ2Vycm9yJywgKGVycm9yOiBhbnkpID0+IHJlamVjdChlcnJvcikpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0cmVhbSBlZGdlcyBmcm9tIGEgZ3JhcGguXG4gICAqIEBkZXByZWNhdGVkIFVzZSBleHBvcnQoKSB3aXRoIEV4cG9ydENvbmZpZyBpbnN0ZWFkXG4gICAqL1xuICBhc3luYyBleHBvcnRFZGdlcyhcbiAgICBncmFwaE5hbWU6IHN0cmluZyxcbiAgICBsYWJlbHM/OiBzdHJpbmdbXSxcbiAgICBsaW1pdDogbnVtYmVyID0gMCxcbiAgICBjYWxsYmFjaz86IChyZXN1bHQ6IEV4cG9ydEVkZ2VzUmVzdWx0KSA9PiB2b2lkXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnNvbGUud2FybignZXhwb3J0RWRnZXMgaXMgZGVwcmVjYXRlZCwgdXNlIGV4cG9ydCgpIHdpdGggRXhwb3J0Q29uZmlnIGluc3RlYWQnKTtcblxuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBncmFwaF9uYW1lOiBncmFwaE5hbWUsXG4gICAgICBsYWJlbHM6IGxhYmVscyB8fCBbXSxcbiAgICAgIGxpbWl0OiBsaW1pdC50b1N0cmluZygpLFxuICAgIH07XG5cbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHN0cmVhbSA9ICh0aGlzLmN0eC5jbGllbnRzLmRhdGFTZXJ2aWNlIGFzIGFueSkuRXhwb3J0RWRnZXMocmVxdWVzdCwgbWV0YWRhdGEpO1xuXG4gICAgICBzdHJlYW0ub24oJ2RhdGEnLCAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICBjYWxsYmFjayh7XG4gICAgICAgICAgICBlZGdlczogKHJlc3BvbnNlLmVkZ2VzIHx8IFtdKS5tYXAoKGU6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgaWQ6IGUuaWQgfHwgJycsXG4gICAgICAgICAgICAgIGxhYmVsOiBlLmxhYmVsIHx8ICcnLFxuICAgICAgICAgICAgICBmcm9tTm9kZUlkOiBlLmZyb21fbm9kZV9pZCB8fCAnJyxcbiAgICAgICAgICAgICAgdG9Ob2RlSWQ6IGUudG9fbm9kZV9pZCB8fCAnJyxcbiAgICAgICAgICAgICAgcHJvcGVydGllczogY29udmVydFByb3RvUHJvcGVydGllcyhlLnByb3BlcnRpZXMgfHwge30pLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgaGFzTW9yZTogcmVzcG9uc2UuaGFzX21vcmUgfHwgZmFsc2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBzdHJlYW0ub24oJ2VuZCcsICgpID0+IHJlc29sdmUoKSk7XG4gICAgICBzdHJlYW0ub24oJ2Vycm9yJywgKGVycm9yOiBhbnkpID0+IHJlamVjdChlcnJvcikpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -22,8 +22,19 @@ export declare class QueryService {
22
22
  private calculateTimeout;
23
23
  /**
24
24
  * Execute a GQL query and return the result.
25
+ *
26
+ * Falls back to GqlStream + client-side aggregation when the server
27
+ * rejects the result set as too large for non-streaming RPC
28
+ * (RESOURCE_EXHAUSTED with "use streaming API" detail).
25
29
  */
26
30
  gql(query: string, config?: QueryConfig): Promise<Response>;
31
+ /**
32
+ * Run GqlStream and aggregate chunks into a single Response.
33
+ *
34
+ * Used as fallback from gql() when the server rejects the result set
35
+ * as too large for non-streaming RPC.
36
+ */
37
+ private gqlStreamCollect;
27
38
  /**
28
39
  * Execute a GQL query and stream the results.
29
40
  */
@@ -2,8 +2,43 @@
2
2
  /**
3
3
  * Query service handles GQL query execution.
4
4
  */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
5
38
  Object.defineProperty(exports, "__esModule", { value: true });
6
39
  exports.QueryService = void 0;
40
+ const grpc = __importStar(require("@grpc/grpc-js"));
41
+ const response_1 = require("../response");
7
42
  const errors_1 = require("../errors");
8
43
  const services_1 = require("../services");
9
44
  const converters_1 = require("./converters");
@@ -37,6 +72,10 @@ class QueryService {
37
72
  }
38
73
  /**
39
74
  * Execute a GQL query and return the result.
75
+ *
76
+ * Falls back to GqlStream + client-side aggregation when the server
77
+ * rejects the result set as too large for non-streaming RPC
78
+ * (RESOURCE_EXHAUSTED with "use streaming API" detail).
40
79
  */
41
80
  async gql(query, config) {
42
81
  if (!query) {
@@ -60,9 +99,39 @@ class QueryService {
60
99
  return (0, converters_1.convertGqlResponse)(response);
61
100
  }
62
101
  catch (error) {
102
+ if (error?.code === grpc.status.RESOURCE_EXHAUSTED &&
103
+ typeof error?.details === 'string' &&
104
+ error.details.includes('use streaming API')) {
105
+ return this.gqlStreamCollect(query, config);
106
+ }
63
107
  throw new errors_1.QueryFailedError(error.message || 'Query failed');
64
108
  }
65
109
  }
110
+ /**
111
+ * Run GqlStream and aggregate chunks into a single Response.
112
+ *
113
+ * Used as fallback from gql() when the server rejects the result set
114
+ * as too large for non-streaming RPC.
115
+ */
116
+ async gqlStreamCollect(query, config) {
117
+ const chunks = [];
118
+ await this.gqlStream(query, config, (chunk) => {
119
+ chunks.push(chunk);
120
+ });
121
+ if (chunks.length === 0) {
122
+ return new response_1.Response([], [], 0, false, [], 0);
123
+ }
124
+ const columns = chunks[0].columns;
125
+ const rows = chunks.flatMap(c => c.rows);
126
+ const warnings = chunks.flatMap(c => c.warnings);
127
+ let rowsAffected = 0;
128
+ for (const c of chunks) {
129
+ if (c.rowsAffected) {
130
+ rowsAffected = c.rowsAffected;
131
+ }
132
+ }
133
+ return new response_1.Response(columns, rows, rows.length, false, warnings, rowsAffected);
134
+ }
66
135
  /**
67
136
  * Execute a GQL query and stream the results.
68
137
  */
@@ -117,4 +186,4 @@ class QueryService {
117
186
  }
118
187
  }
119
188
  exports.QueryService = QueryService;
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9xdWVyeS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBSUgsc0NBQThEO0FBQzlELDBDQUF3RDtBQUN4RCw2Q0FHc0I7QUFHdEI7O0dBRUc7QUFDSCxNQUFhLFlBQVk7SUFDSDtJQUFwQixZQUFvQixHQUFtQjtRQUFuQixRQUFHLEdBQUgsR0FBRyxDQUFnQjtJQUFHLENBQUM7SUFFM0M7Ozs7Ozs7O09BUUc7SUFDSyxnQkFBZ0IsQ0FBQyxNQUFvQjtRQUMzQyxnRUFBZ0U7UUFDaEUsSUFBSSxNQUFNLEVBQUUsT0FBTyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQ3hCLENBQUM7UUFFRCx1Q0FBdUM7UUFDdkMsd0VBQXdFO1FBQ3hFLHNDQUFzQztRQUV0QyxxREFBcUQ7UUFDckQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBYSxFQUFFLE1BQW9CO1FBQzNDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSx3QkFBZSxFQUFFLENBQUM7UUFDOUIsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUEsNEJBQWUsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FB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QUUsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMvQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEQsTUFBTSxRQUFRLEdBQVEsTUFBTSxJQUFBLG9DQUF5QixFQUNuRCxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQzdCLFNBQVMsRUFDVCxPQUFPLEVBQ1AsU0FBUyxFQUNULFFBQVEsQ0FDVCxDQUFDO1FBRUYsT0FBTyxRQUFRLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0NBQ0Y7QUFuSkQsb0NBbUpDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBRdWVyeSBzZXJ2aWNlIGhhbmRsZXMgR1FMIHF1ZXJ5IGV4ZWN1dGlvbi5cbiAqL1xuXG5pbXBvcnQgeyBTZXJ2aWNlQ29udGV4dCB9IGZyb20gJy4vc2VydmljZS1jb250ZXh0JztcbmltcG9ydCB7IFJlc3BvbnNlIH0gZnJvbSAnLi4vcmVzcG9uc2UnO1xuaW1wb3J0IHsgRW1wdHlRdWVyeUVycm9yLCBRdWVyeUZhaWxlZEVycm9yIH0gZnJvbSAnLi4vZXJyb3JzJztcbmltcG9ydCB7IHByb21pc2lmeUNhbGxXaXRoRGVhZGxpbmUgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XG5pbXBvcnQge1xuICBidWlsZEdxbFJlcXVlc3QsXG4gIGNvbnZlcnRHcWxSZXNwb25zZSxcbn0gZnJvbSAnLi9jb252ZXJ0ZXJzJztcbmltcG9ydCB7IFF1ZXJ5Q29uZmlnIH0gZnJvbSAnLi4vY2xpZW50JztcblxuLyoqXG4gKiBRdWVyeSBzZXJ2aWNlIGZvciBleGVjdXRpbmcgR1FMIHF1ZXJpZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBRdWVyeVNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGN0eDogU2VydmljZUNvbnRleHQpIHt9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZSB0aW1lb3V0IHdpdGggdGhlIGZvbGxvd2luZyBwcmlvcml0eTpcbiAgICogMS4gUXVlcnlDb25maWcudGltZW91dCAoaGlnaGVzdCBwcmlvcml0eSkgLSBleHBsaWNpdGx5IHNwZWNpZmllZCB0aW1lb3V0XG4gICAqIDIuIENvbnRleHQgZGVhZGxpbmUgKG1lZGl1bSBwcmlvcml0eSkgLSByZW1haW5pbmcgdGltZSBmcm9tIGNvbnRleHQgZGVhZGxpbmVcbiAgICogMy4gY2xpZW50LmNvbmZpZy50aW1lb3V0IChkZWZhdWx0KSAtIGRlZmF1bHQgdGltZW91dCBmcm9tIGNsaWVudCBjb25maWdcbiAgICpcbiAgICogQHBhcmFtIGNvbmZpZyBPcHRpb25hbCBxdWVyeSBjb25maWd1cmF0aW9uXG4gICAqIEByZXR1cm5zIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzXG4gICAqL1xuICBwcml2YXRlIGNhbGN1bGF0ZVRpbWVvdXQoY29uZmlnPzogUXVlcnlDb25maWcpOiBudW1iZXIge1xuICAgIC8vIFByaW9yaXR5IDE6IFVzZSBleHBsaWNpdGx5IHNwZWNpZmllZCB0aW1lb3V0IGZyb20gUXVlcnlDb25maWdcbiAgICBpZiAoY29uZmlnPy50aW1lb3V0ICYmIGNvbmZpZy50aW1lb3V0ID4gMCkge1xuICAgICAgcmV0dXJuIGNvbmZpZy50aW1lb3V0O1xuICAgIH1cblxuICAgIC8vIFByaW9yaXR5IDI6IENvbnRleHQgZGVhZGxpbmUgc3VwcG9ydFxuICAgIC8vIE5vdGU6IE5vZGUuanMgU0RLIGRvZXNuJ3QgY3VycmVudGx5IGV4cG9zZSBjb250ZXh0IGRlYWRsaW5lIHBhcmFtZXRlclxuICAgIC8vIFRoaXMgaXMgbGVmdCBmb3IgZnV0dXJlIGVuaGFuY2VtZW50XG5cbiAgICAvLyBQcmlvcml0eSAzOiBVc2UgZGVmYXVsdCB0aW1lb3V0IGZyb20gY2xpZW50IGNvbmZpZ1xuICAgIHJldHVybiB0aGlzLmN0eC5jb25maWcudGltZW91dCB8fCAzMDAwMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIGEgR1FMIHF1ZXJ5IGFuZCByZXR1cm4gdGhlIHJlc3VsdC5cbiAgICovXG4gIGFzeW5jIGdxbChxdWVyeTogc3RyaW5nLCBjb25maWc/OiBRdWVyeUNvbmZpZyk6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICBpZiAoIXF1ZXJ5KSB7XG4gICAgICB0aHJvdyBuZXcgRW1wdHlRdWVyeUVycm9yKCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuY3R4LnNlc3Npb25zLmdldFNlc3Npb24oKTtcbiAgICBjb25zdCByZXF1ZXN0ID0gYnVpbGRHcWxSZXF1ZXN0KHF1ZXJ5LCBzZXNzaW9uLCB0aGlzLmN0eC5jb25maWcsIGNvbmZpZyk7XG4gICAgY29uc3QgdGltZW91dE1zID0gdGhpcy5jYWxjdWxhdGVUaW1lb3V0KGNvbmZpZyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsV2l0aERlYWRsaW5lKFxuICAgICAgICB0aGlzLmN0eC5jbGllbnRzLnF1ZXJ5U2VydmljZSxcbiAgICAgICAgJ0dxbCcsXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIHRpbWVvdXRNcyxcbiAgICAgICAgbWV0YWRhdGFcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuY3R4LnVwZGF0ZUFjdGl2aXR5KCk7XG5cbiAgICAgIC8vIFVwZGF0ZSBkZWZhdWx0IGdyYXBoIGlmIHRoZSBxdWVyeSBpcyBhIFVTRSBHUkFQSCBzdGF0ZW1lbnRcbiAgICAgIGNvbnN0IHN0cmlwcGVkID0gcXVlcnkudHJpbSgpO1xuICAgICAgaWYgKHN0cmlwcGVkLnRvVXBwZXJDYXNlKCkuc3RhcnRzV2l0aCgnVVNFIEdSQVBIJykpIHtcbiAgICAgICAgY29uc3QgbmV3R3JhcGggPSBzdHJpcHBlZC5zdWJzdHJpbmcoJ1VTRSBHUkFQSCcubGVuZ3RoKS50cmltKCkucmVwbGFjZSgvOyskLywgJycpLnRyaW0oKTtcbiAgICAgICAgaWYgKG5ld0dyYXBoKSB7XG4gICAgICAgICAgdGhpcy5jdHguc2Vzc2lvbnMuc2V0RGVmYXVsdEdyYXBoKG5ld0dyYXBoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udmVydEdxbFJlc3BvbnNlKHJlc3BvbnNlKTtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICB0aHJvdyBuZXcgUXVlcnlGYWlsZWRFcnJvcihlcnJvci5tZXNzYWdlIHx8ICdRdWVyeSBmYWlsZWQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSBhIEdRTCBxdWVyeSBhbmQgc3RyZWFtIHRoZSByZXN1bHRzLlxuICAgKi9cbiAgYXN5bmMgZ3FsU3RyZWFtKFxuICAgIHF1ZXJ5OiBzdHJpbmcsXG4gICAgY29uZmlnPzogUXVlcnlDb25maWcsXG4gICAgY2FsbGJhY2s/OiAocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB2b2lkXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghcXVlcnkpIHtcbiAgICAgIHRocm93IG5ldyBFbXB0eVF1ZXJ5RXJyb3IoKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5jdHguc2Vzc2lvbnMuZ2V0U2Vzc2lvbigpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSBidWlsZEdxbFJlcXVlc3QocXVlcnksIHNlc3Npb24sIHRoaXMuY3R4LmNvbmZpZywgY29uZmlnKTtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuICAgIGNvbnN0IHRpbWVvdXRNcyA9IHRoaXMuY2FsY3VsYXRlVGltZW91dChjb25maWcpO1xuICAgIGNvbnN0IGRlYWRsaW5lID0gbmV3IERhdGUoRGF0ZS5ub3coKSArIHRpbWVvdXRNcyk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgc3RyZWFtID0gKHRoaXMuY3R4LmNsaWVudHMucXVlcnlTZXJ2aWNlIGFzIGFueSkuR3FsU3RyZWFtKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgeyBkZWFkbGluZSB9XG4gICAgICApO1xuXG4gICAgICBzdHJlYW0ub24oJ2RhdGEnLCAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmN0eC51cGRhdGVBY3Rpdml0eSgpO1xuICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICBjYWxsYmFjayhjb252ZXJ0R3FsUmVzcG9uc2UocmVzcG9uc2UpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHN0cmVhbS5vbignZW5kJywgKCkgPT4gcmVzb2x2ZSgpKTtcbiAgICAgIHN0cmVhbS5vbignZXJyb3InLCAoZXJyb3I6IGFueSkgPT4gcmVqZWN0KG5ldyBRdWVyeUZhaWxlZEVycm9yKGVycm9yLm1lc3NhZ2UpKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBleGVjdXRpb24gcGxhbiBmb3IgYSBxdWVyeS5cbiAgICovXG4gIGFzeW5jIGV4cGxhaW4ocXVlcnk6IHN0cmluZywgY29uZmlnPzogUXVlcnlDb25maWcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICghcXVlcnkpIHtcbiAgICAgIHRocm93IG5ldyBFbXB0eVF1ZXJ5RXJyb3IoKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5jdHguc2Vzc2lvbnMuZ2V0U2Vzc2lvbigpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSBidWlsZEdxbFJlcXVlc3QocXVlcnksIHNlc3Npb24sIHRoaXMuY3R4LmNvbmZpZywgY29uZmlnKTtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuICAgIGNvbnN0IHRpbWVvdXRNcyA9IHRoaXMuY2FsY3VsYXRlVGltZW91dChjb25maWcpO1xuICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsV2l0aERlYWRsaW5lKFxuICAgICAgdGhpcy5jdHguY2xpZW50cy5xdWVyeVNlcnZpY2UsXG4gICAgICAnRXhwbGFpbicsXG4gICAgICByZXF1ZXN0LFxuICAgICAgdGltZW91dE1zLFxuICAgICAgbWV0YWRhdGFcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlLnBsYW4gfHwgJyc7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSBhIHF1ZXJ5IHdpdGggcHJvZmlsaW5nIGFuZCByZXR1cm4gc3RhdGlzdGljcy5cbiAgICovXG4gIGFzeW5jIHByb2ZpbGUocXVlcnk6IHN0cmluZywgY29uZmlnPzogUXVlcnlDb25maWcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICghcXVlcnkpIHtcbiAgICAgIHRocm93IG5ldyBFbXB0eVF1ZXJ5RXJyb3IoKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5jdHguc2Vzc2lvbnMuZ2V0U2Vzc2lvbigpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSBidWlsZEdxbFJlcXVlc3QocXVlcnksIHNlc3Npb24sIHRoaXMuY3R4LmNvbmZpZywgY29uZmlnKTtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuICAgIGNvbnN0IHRpbWVvdXRNcyA9IHRoaXMuY2FsY3VsYXRlVGltZW91dChjb25maWcpO1xuICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsV2l0aERlYWRsaW5lKFxuICAgICAgdGhpcy5jdHguY2xpZW50cy5xdWVyeVNlcnZpY2UsXG4gICAgICAnUHJvZmlsZScsXG4gICAgICByZXF1ZXN0LFxuICAgICAgdGltZW91dE1zLFxuICAgICAgbWV0YWRhdGFcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlLnByb2ZpbGUgfHwgJyc7XG4gIH1cbn1cbiJdfQ==
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9xdWVyeS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsb0RBQXNDO0FBRXRDLDBDQUF1QztBQUN2QyxzQ0FBOEQ7QUFDOUQsMENBQXdEO0FBQ3hELDZDQUdzQjtBQUd0Qjs7R0FFRztBQUNILE1BQWEsWUFBWTtJQUNIO0lBQXBCLFlBQW9CLEdBQW1CO1FBQW5CLFFBQUcsR0FBSCxHQUFHLENBQWdCO0lBQUcsQ0FBQztJQUUzQzs7Ozs7Ozs7T0FRRztJQUNLLGdCQUFnQixDQUFDLE1BQW9CO1FBQzNDLGdFQUFnRTtRQUNoRSxJQUFJLE1BQU0sRUFBRSxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDeEIsQ0FBQztRQUVELHVDQUF1QztRQUN2Qyx3RUFBd0U7UUFDeEUsc0NBQXNDO1FBRXRDLHFEQUFxRDtRQUNyRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBYSxFQUFFLE1BQW9CO1FBQzNDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSx3QkFBZSxFQUFFLENBQUM7UUFDOUIsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUEsNEJBQWUsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FB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SUFBSSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFhLEVBQUUsTUFBb0I7UUFDL0MsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLHdCQUFlLEVBQUUsQ0FBQztRQUM5QixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBQSw0QkFBZSxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDekUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQy9DLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRCxNQUFNLFFBQVEsR0FBUSxNQUFNLElBQUEsb0NBQXlCLEVBQ25ELElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksRUFDN0IsU0FBUyxFQUNULE9BQU8sRUFDUCxTQUFTLEVBQ1QsUUFBUSxDQUNULENBQUM7UUFFRixPQUFPLFFBQVEsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO0lBQ2hDLENBQUM7Q0FDRjtBQTFMRCxvQ0EwTEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFF1ZXJ5IHNlcnZpY2UgaGFuZGxlcyBHUUwgcXVlcnkgZXhlY3V0aW9uLlxuICovXG5cbmltcG9ydCAqIGFzIGdycGMgZnJvbSAnQGdycGMvZ3JwYy1qcyc7XG5pbXBvcnQgeyBTZXJ2aWNlQ29udGV4dCB9IGZyb20gJy4vc2VydmljZS1jb250ZXh0JztcbmltcG9ydCB7IFJlc3BvbnNlIH0gZnJvbSAnLi4vcmVzcG9uc2UnO1xuaW1wb3J0IHsgRW1wdHlRdWVyeUVycm9yLCBRdWVyeUZhaWxlZEVycm9yIH0gZnJvbSAnLi4vZXJyb3JzJztcbmltcG9ydCB7IHByb21pc2lmeUNhbGxXaXRoRGVhZGxpbmUgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XG5pbXBvcnQge1xuICBidWlsZEdxbFJlcXVlc3QsXG4gIGNvbnZlcnRHcWxSZXNwb25zZSxcbn0gZnJvbSAnLi9jb252ZXJ0ZXJzJztcbmltcG9ydCB7IFF1ZXJ5Q29uZmlnIH0gZnJvbSAnLi4vY2xpZW50JztcblxuLyoqXG4gKiBRdWVyeSBzZXJ2aWNlIGZvciBleGVjdXRpbmcgR1FMIHF1ZXJpZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBRdWVyeVNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGN0eDogU2VydmljZUNvbnRleHQpIHt9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZSB0aW1lb3V0IHdpdGggdGhlIGZvbGxvd2luZyBwcmlvcml0eTpcbiAgICogMS4gUXVlcnlDb25maWcudGltZW91dCAoaGlnaGVzdCBwcmlvcml0eSkgLSBleHBsaWNpdGx5IHNwZWNpZmllZCB0aW1lb3V0XG4gICAqIDIuIENvbnRleHQgZGVhZGxpbmUgKG1lZGl1bSBwcmlvcml0eSkgLSByZW1haW5pbmcgdGltZSBmcm9tIGNvbnRleHQgZGVhZGxpbmVcbiAgICogMy4gY2xpZW50LmNvbmZpZy50aW1lb3V0IChkZWZhdWx0KSAtIGRlZmF1bHQgdGltZW91dCBmcm9tIGNsaWVudCBjb25maWdcbiAgICpcbiAgICogQHBhcmFtIGNvbmZpZyBPcHRpb25hbCBxdWVyeSBjb25maWd1cmF0aW9uXG4gICAqIEByZXR1cm5zIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzXG4gICAqL1xuICBwcml2YXRlIGNhbGN1bGF0ZVRpbWVvdXQoY29uZmlnPzogUXVlcnlDb25maWcpOiBudW1iZXIge1xuICAgIC8vIFByaW9yaXR5IDE6IFVzZSBleHBsaWNpdGx5IHNwZWNpZmllZCB0aW1lb3V0IGZyb20gUXVlcnlDb25maWdcbiAgICBpZiAoY29uZmlnPy50aW1lb3V0ICYmIGNvbmZpZy50aW1lb3V0ID4gMCkge1xuICAgICAgcmV0dXJuIGNvbmZpZy50aW1lb3V0O1xuICAgIH1cblxuICAgIC8vIFByaW9yaXR5IDI6IENvbnRleHQgZGVhZGxpbmUgc3VwcG9ydFxuICAgIC8vIE5vdGU6IE5vZGUuanMgU0RLIGRvZXNuJ3QgY3VycmVudGx5IGV4cG9zZSBjb250ZXh0IGRlYWRsaW5lIHBhcmFtZXRlclxuICAgIC8vIFRoaXMgaXMgbGVmdCBmb3IgZnV0dXJlIGVuaGFuY2VtZW50XG5cbiAgICAvLyBQcmlvcml0eSAzOiBVc2UgZGVmYXVsdCB0aW1lb3V0IGZyb20gY2xpZW50IGNvbmZpZ1xuICAgIHJldHVybiB0aGlzLmN0eC5jb25maWcudGltZW91dCB8fCAzMDAwMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIGEgR1FMIHF1ZXJ5IGFuZCByZXR1cm4gdGhlIHJlc3VsdC5cbiAgICpcbiAgICogRmFsbHMgYmFjayB0byBHcWxTdHJlYW0gKyBjbGllbnQtc2lkZSBhZ2dyZWdhdGlvbiB3aGVuIHRoZSBzZXJ2ZXJcbiAgICogcmVqZWN0cyB0aGUgcmVzdWx0IHNldCBhcyB0b28gbGFyZ2UgZm9yIG5vbi1zdHJlYW1pbmcgUlBDXG4gICAqIChSRVNPVVJDRV9FWEhBVVNURUQgd2l0aCBcInVzZSBzdHJlYW1pbmcgQVBJXCIgZGV0YWlsKS5cbiAgICovXG4gIGFzeW5jIGdxbChxdWVyeTogc3RyaW5nLCBjb25maWc/OiBRdWVyeUNvbmZpZyk6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICBpZiAoIXF1ZXJ5KSB7XG4gICAgICB0aHJvdyBuZXcgRW1wdHlRdWVyeUVycm9yKCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuY3R4LnNlc3Npb25zLmdldFNlc3Npb24oKTtcbiAgICBjb25zdCByZXF1ZXN0ID0gYnVpbGRHcWxSZXF1ZXN0KHF1ZXJ5LCBzZXNzaW9uLCB0aGlzLmN0eC5jb25maWcsIGNvbmZpZyk7XG4gICAgY29uc3QgdGltZW91dE1zID0gdGhpcy5jYWxjdWxhdGVUaW1lb3V0KGNvbmZpZyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsV2l0aERlYWRsaW5lKFxuICAgICAgICB0aGlzLmN0eC5jbGllbnRzLnF1ZXJ5U2VydmljZSxcbiAgICAgICAgJ0dxbCcsXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIHRpbWVvdXRNcyxcbiAgICAgICAgbWV0YWRhdGFcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuY3R4LnVwZGF0ZUFjdGl2aXR5KCk7XG5cbiAgICAgIC8vIFVwZGF0ZSBkZWZhdWx0IGdyYXBoIGlmIHRoZSBxdWVyeSBpcyBhIFVTRSBHUkFQSCBzdGF0ZW1lbnRcbiAgICAgIGNvbnN0IHN0cmlwcGVkID0gcXVlcnkudHJpbSgpO1xuICAgICAgaWYgKHN0cmlwcGVkLnRvVXBwZXJDYXNlKCkuc3RhcnRzV2l0aCgnVVNFIEdSQVBIJykpIHtcbiAgICAgICAgY29uc3QgbmV3R3JhcGggPSBzdHJpcHBlZC5zdWJzdHJpbmcoJ1VTRSBHUkFQSCcubGVuZ3RoKS50cmltKCkucmVwbGFjZSgvOyskLywgJycpLnRyaW0oKTtcbiAgICAgICAgaWYgKG5ld0dyYXBoKSB7XG4gICAgICAgICAgdGhpcy5jdHguc2Vzc2lvbnMuc2V0RGVmYXVsdEdyYXBoKG5ld0dyYXBoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udmVydEdxbFJlc3BvbnNlKHJlc3BvbnNlKTtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICBpZiAoXG4gICAgICAgIGVycm9yPy5jb2RlID09PSBncnBjLnN0YXR1cy5SRVNPVVJDRV9FWEhBVVNURUQgJiZcbiAgICAgICAgdHlwZW9mIGVycm9yPy5kZXRhaWxzID09PSAnc3RyaW5nJyAmJlxuICAgICAgICBlcnJvci5kZXRhaWxzLmluY2x1ZGVzKCd1c2Ugc3RyZWFtaW5nIEFQSScpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3FsU3RyZWFtQ29sbGVjdChxdWVyeSwgY29uZmlnKTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBRdWVyeUZhaWxlZEVycm9yKGVycm9yLm1lc3NhZ2UgfHwgJ1F1ZXJ5IGZhaWxlZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW4gR3FsU3RyZWFtIGFuZCBhZ2dyZWdhdGUgY2h1bmtzIGludG8gYSBzaW5nbGUgUmVzcG9uc2UuXG4gICAqXG4gICAqIFVzZWQgYXMgZmFsbGJhY2sgZnJvbSBncWwoKSB3aGVuIHRoZSBzZXJ2ZXIgcmVqZWN0cyB0aGUgcmVzdWx0IHNldFxuICAgKiBhcyB0b28gbGFyZ2UgZm9yIG5vbi1zdHJlYW1pbmcgUlBDLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBncWxTdHJlYW1Db2xsZWN0KHF1ZXJ5OiBzdHJpbmcsIGNvbmZpZz86IFF1ZXJ5Q29uZmlnKTogUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIGNvbnN0IGNodW5rczogUmVzcG9uc2VbXSA9IFtdO1xuICAgIGF3YWl0IHRoaXMuZ3FsU3RyZWFtKHF1ZXJ5LCBjb25maWcsIChjaHVuazogUmVzcG9uc2UpID0+IHtcbiAgICAgIGNodW5rcy5wdXNoKGNodW5rKTtcbiAgICB9KTtcblxuICAgIGlmIChjaHVua3MubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKFtdLCBbXSwgMCwgZmFsc2UsIFtdLCAwKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb2x1bW5zID0gY2h1bmtzWzBdLmNvbHVtbnM7XG4gICAgY29uc3Qgcm93cyA9IGNodW5rcy5mbGF0TWFwKGMgPT4gYy5yb3dzKTtcbiAgICBjb25zdCB3YXJuaW5ncyA9IGNodW5rcy5mbGF0TWFwKGMgPT4gYy53YXJuaW5ncyk7XG4gICAgbGV0IHJvd3NBZmZlY3RlZCA9IDA7XG4gICAgZm9yIChjb25zdCBjIG9mIGNodW5rcykge1xuICAgICAgaWYgKGMucm93c0FmZmVjdGVkKSB7XG4gICAgICAgIHJvd3NBZmZlY3RlZCA9IGMucm93c0FmZmVjdGVkO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKGNvbHVtbnMsIHJvd3MsIHJvd3MubGVuZ3RoLCBmYWxzZSwgd2FybmluZ3MsIHJvd3NBZmZlY3RlZCk7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSBhIEdRTCBxdWVyeSBhbmQgc3RyZWFtIHRoZSByZXN1bHRzLlxuICAgKi9cbiAgYXN5bmMgZ3FsU3RyZWFtKFxuICAgIHF1ZXJ5OiBzdHJpbmcsXG4gICAgY29uZmlnPzogUXVlcnlDb25maWcsXG4gICAgY2FsbGJhY2s/OiAocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB2b2lkXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghcXVlcnkpIHtcbiAgICAgIHRocm93IG5ldyBFbXB0eVF1ZXJ5RXJyb3IoKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5jdHguc2Vzc2lvbnMuZ2V0U2Vzc2lvbigpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSBidWlsZEdxbFJlcXVlc3QocXVlcnksIHNlc3Npb24sIHRoaXMuY3R4LmNvbmZpZywgY29uZmlnKTtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuICAgIGNvbnN0IHRpbWVvdXRNcyA9IHRoaXMuY2FsY3VsYXRlVGltZW91dChjb25maWcpO1xuICAgIGNvbnN0IGRlYWRsaW5lID0gbmV3IERhdGUoRGF0ZS5ub3coKSArIHRpbWVvdXRNcyk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgc3RyZWFtID0gKHRoaXMuY3R4LmNsaWVudHMucXVlcnlTZXJ2aWNlIGFzIGFueSkuR3FsU3RyZWFtKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgeyBkZWFkbGluZSB9XG4gICAgICApO1xuXG4gICAgICBzdHJlYW0ub24oJ2RhdGEnLCAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmN0eC51cGRhdGVBY3Rpdml0eSgpO1xuICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICBjYWxsYmFjayhjb252ZXJ0R3FsUmVzcG9uc2UocmVzcG9uc2UpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHN0cmVhbS5vbignZW5kJywgKCkgPT4gcmVzb2x2ZSgpKTtcbiAgICAgIHN0cmVhbS5vbignZXJyb3InLCAoZXJyb3I6IGFueSkgPT4gcmVqZWN0KG5ldyBRdWVyeUZhaWxlZEVycm9yKGVycm9yLm1lc3NhZ2UpKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBleGVjdXRpb24gcGxhbiBmb3IgYSBxdWVyeS5cbiAgICovXG4gIGFzeW5jIGV4cGxhaW4ocXVlcnk6IHN0cmluZywgY29uZmlnPzogUXVlcnlDb25maWcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICghcXVlcnkpIHtcbiAgICAgIHRocm93IG5ldyBFbXB0eVF1ZXJ5RXJyb3IoKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5jdHguc2Vzc2lvbnMuZ2V0U2Vzc2lvbigpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSBidWlsZEdxbFJlcXVlc3QocXVlcnksIHNlc3Npb24sIHRoaXMuY3R4LmNvbmZpZywgY29uZmlnKTtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuICAgIGNvbnN0IHRpbWVvdXRNcyA9IHRoaXMuY2FsY3VsYXRlVGltZW91dChjb25maWcpO1xuICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsV2l0aERlYWRsaW5lKFxuICAgICAgdGhpcy5jdHguY2xpZW50cy5xdWVyeVNlcnZpY2UsXG4gICAgICAnRXhwbGFpbicsXG4gICAgICByZXF1ZXN0LFxuICAgICAgdGltZW91dE1zLFxuICAgICAgbWV0YWRhdGFcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlLnBsYW4gfHwgJyc7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSBhIHF1ZXJ5IHdpdGggcHJvZmlsaW5nIGFuZCByZXR1cm4gc3RhdGlzdGljcy5cbiAgICovXG4gIGFzeW5jIHByb2ZpbGUocXVlcnk6IHN0cmluZywgY29uZmlnPzogUXVlcnlDb25maWcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICghcXVlcnkpIHtcbiAgICAgIHRocm93IG5ldyBFbXB0eVF1ZXJ5RXJyb3IoKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5jdHguc2Vzc2lvbnMuZ2V0U2Vzc2lvbigpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSBidWlsZEdxbFJlcXVlc3QocXVlcnksIHNlc3Npb24sIHRoaXMuY3R4LmNvbmZpZywgY29uZmlnKTtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuICAgIGNvbnN0IHRpbWVvdXRNcyA9IHRoaXMuY2FsY3VsYXRlVGltZW91dChjb25maWcpO1xuICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsV2l0aERlYWRsaW5lKFxuICAgICAgdGhpcy5jdHguY2xpZW50cy5xdWVyeVNlcnZpY2UsXG4gICAgICAnUHJvZmlsZScsXG4gICAgICByZXF1ZXN0LFxuICAgICAgdGltZW91dE1zLFxuICAgICAgbWV0YWRhdGFcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlLnByb2ZpbGUgfHwgJyc7XG4gIH1cbn1cbiJdfQ==
@@ -1,13 +1,27 @@
1
1
  /**
2
2
  * Bulk import types for GQLDB Node.js driver.
3
3
  */
4
- /** Options for bulk node creation */
4
+ import { InsertType } from './convenience';
5
+ /**
6
+ * Options for bulk node creation.
7
+ *
8
+ * `mode` selects duplicate-`_id` semantics. See {@link InsertType}
9
+ * docs for the three values (`Normal` / `Overwrite` / `Upsert`) and
10
+ * their differences. Defaults to `InsertType.Normal`.
11
+ */
5
12
  export interface BulkCreateNodesOptions {
6
- overwrite?: boolean;
13
+ mode?: InsertType;
7
14
  }
8
- /** Options for bulk edge creation */
15
+ /**
16
+ * Options for bulk edge creation.
17
+ *
18
+ * See {@link BulkCreateNodesOptions} for the `mode` semantic split.
19
+ * Edge `Overwrite` and `Upsert` require EDGE_ID enabled on the
20
+ * target graph.
21
+ */
9
22
  export interface BulkCreateEdgesOptions {
10
23
  skipInvalidNodes?: boolean;
24
+ mode?: InsertType;
11
25
  }
12
26
  /** Options for starting a bulk import session */
13
27
  export interface BulkImportOptions {
@@ -3,4 +3,4 @@
3
3
  * Bulk import types for GQLDB Node.js driver.
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsa19pbXBvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvYnVsa19pbXBvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCdWxrIGltcG9ydCB0eXBlcyBmb3IgR1FMREIgTm9kZS5qcyBkcml2ZXIuXG4gKi9cblxuLyoqIE9wdGlvbnMgZm9yIGJ1bGsgbm9kZSBjcmVhdGlvbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWxrQ3JlYXRlTm9kZXNPcHRpb25zIHtcbiAgb3ZlcndyaXRlPzogYm9vbGVhbjtcbn1cblxuLyoqIE9wdGlvbnMgZm9yIGJ1bGsgZWRnZSBjcmVhdGlvbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWxrQ3JlYXRlRWRnZXNPcHRpb25zIHtcbiAgc2tpcEludmFsaWROb2Rlcz86IGJvb2xlYW47XG59XG5cbi8qKiBPcHRpb25zIGZvciBzdGFydGluZyBhIGJ1bGsgaW1wb3J0IHNlc3Npb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVsa0ltcG9ydE9wdGlvbnMge1xuICAvKiogQGRlcHJlY2F0ZWQgTm8gbG9uZ2VyIHVzZWQuIFNlcnZlciBpZ25vcmVzIHRoaXMgdmFsdWUuICovXG4gIGNoZWNrcG9pbnRFdmVyeT86IG51bWJlcjtcbiAgLyoqIEhpbnQgZm9yIHByZS1hbGxvY2F0aW5nIG5vZGUgSUQgY2FjaGUgKi9cbiAgZXN0aW1hdGVkTm9kZXM/OiBudW1iZXI7XG4gIC8qKiBIaW50IGZvciBlZGdlIGJhdGNoIHNpemluZyAqL1xuICBlc3RpbWF0ZWRFZGdlcz86IG51bWJlcjtcbn1cblxuLyoqIFJlc3VsdCBvZiBzdGFydGluZyBhIGJ1bGsgaW1wb3J0IHNlc3Npb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVsa0ltcG9ydFNlc3Npb24ge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKiogUmVzdWx0IG9mIGEgY2hlY2twb2ludCBvcGVyYXRpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2twb2ludFJlc3VsdCB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIHJlY29yZENvdW50OiBudW1iZXI7XG4gIGxhc3RDaGVja3BvaW50Q291bnQ6IG51bWJlcjtcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKiogUmVzdWx0IG9mIGVuZGluZyBhIGJ1bGsgaW1wb3J0IHNlc3Npb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5kQnVsa0ltcG9ydFJlc3VsdCB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIHRvdGFsUmVjb3JkczogbnVtYmVyO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKiBSZXN1bHQgb2YgYWJvcnRpbmcgYSBidWxrIGltcG9ydCBzZXNzaW9uICovXG5leHBvcnQgaW50ZXJmYWNlIEFib3J0QnVsa0ltcG9ydFJlc3VsdCB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqIFN0YXR1cyBvZiBhIGJ1bGsgaW1wb3J0IHNlc3Npb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVsa0ltcG9ydFN0YXR1cyB7XG4gIGlzQWN0aXZlOiBib29sZWFuO1xuICBncmFwaE5hbWU6IHN0cmluZztcbiAgcmVjb3JkQ291bnQ6IG51bWJlcjtcbiAgbGFzdENoZWNrcG9pbnRDb3VudDogbnVtYmVyO1xuICBjcmVhdGVkQXQ6IG51bWJlcjtcbiAgbGFzdEFjdGl2aXR5OiBudW1iZXI7XG59XG4iXX0=
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsa19pbXBvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvYnVsa19pbXBvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCdWxrIGltcG9ydCB0eXBlcyBmb3IgR1FMREIgTm9kZS5qcyBkcml2ZXIuXG4gKi9cblxuaW1wb3J0IHsgSW5zZXJ0VHlwZSB9IGZyb20gJy4vY29udmVuaWVuY2UnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGJ1bGsgbm9kZSBjcmVhdGlvbi5cbiAqXG4gKiBgbW9kZWAgc2VsZWN0cyBkdXBsaWNhdGUtYF9pZGAgc2VtYW50aWNzLiBTZWUge0BsaW5rIEluc2VydFR5cGV9XG4gKiBkb2NzIGZvciB0aGUgdGhyZWUgdmFsdWVzIChgTm9ybWFsYCAvIGBPdmVyd3JpdGVgIC8gYFVwc2VydGApIGFuZFxuICogdGhlaXIgZGlmZmVyZW5jZXMuIERlZmF1bHRzIHRvIGBJbnNlcnRUeXBlLk5vcm1hbGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVsa0NyZWF0ZU5vZGVzT3B0aW9ucyB7XG4gIG1vZGU/OiBJbnNlcnRUeXBlO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGJ1bGsgZWRnZSBjcmVhdGlvbi5cbiAqXG4gKiBTZWUge0BsaW5rIEJ1bGtDcmVhdGVOb2Rlc09wdGlvbnN9IGZvciB0aGUgYG1vZGVgIHNlbWFudGljIHNwbGl0LlxuICogRWRnZSBgT3ZlcndyaXRlYCBhbmQgYFVwc2VydGAgcmVxdWlyZSBFREdFX0lEIGVuYWJsZWQgb24gdGhlXG4gKiB0YXJnZXQgZ3JhcGguXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVsa0NyZWF0ZUVkZ2VzT3B0aW9ucyB7XG4gIHNraXBJbnZhbGlkTm9kZXM/OiBib29sZWFuO1xuICBtb2RlPzogSW5zZXJ0VHlwZTtcbn1cblxuLyoqIE9wdGlvbnMgZm9yIHN0YXJ0aW5nIGEgYnVsayBpbXBvcnQgc2Vzc2lvbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWxrSW1wb3J0T3B0aW9ucyB7XG4gIC8qKiBAZGVwcmVjYXRlZCBObyBsb25nZXIgdXNlZC4gU2VydmVyIGlnbm9yZXMgdGhpcyB2YWx1ZS4gKi9cbiAgY2hlY2twb2ludEV2ZXJ5PzogbnVtYmVyO1xuICAvKiogSGludCBmb3IgcHJlLWFsbG9jYXRpbmcgbm9kZSBJRCBjYWNoZSAqL1xuICBlc3RpbWF0ZWROb2Rlcz86IG51bWJlcjtcbiAgLyoqIEhpbnQgZm9yIGVkZ2UgYmF0Y2ggc2l6aW5nICovXG4gIGVzdGltYXRlZEVkZ2VzPzogbnVtYmVyO1xufVxuXG4vKiogUmVzdWx0IG9mIHN0YXJ0aW5nIGEgYnVsayBpbXBvcnQgc2Vzc2lvbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWxrSW1wb3J0U2Vzc2lvbiB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIHNlc3Npb25JZDogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKiBSZXN1bHQgb2YgYSBjaGVja3BvaW50IG9wZXJhdGlvbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGVja3BvaW50UmVzdWx0IHtcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgcmVjb3JkQ291bnQ6IG51bWJlcjtcbiAgbGFzdENoZWNrcG9pbnRDb3VudDogbnVtYmVyO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKiBSZXN1bHQgb2YgZW5kaW5nIGEgYnVsayBpbXBvcnQgc2Vzc2lvbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmRCdWxrSW1wb3J0UmVzdWx0IHtcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgdG90YWxSZWNvcmRzOiBudW1iZXI7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqIFJlc3VsdCBvZiBhYm9ydGluZyBhIGJ1bGsgaW1wb3J0IHNlc3Npb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWJvcnRCdWxrSW1wb3J0UmVzdWx0IHtcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKiogU3RhdHVzIG9mIGEgYnVsayBpbXBvcnQgc2Vzc2lvbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWxrSW1wb3J0U3RhdHVzIHtcbiAgaXNBY3RpdmU6IGJvb2xlYW47XG4gIGdyYXBoTmFtZTogc3RyaW5nO1xuICByZWNvcmRDb3VudDogbnVtYmVyO1xuICBsYXN0Q2hlY2twb2ludENvdW50OiBudW1iZXI7XG4gIGNyZWF0ZWRBdDogbnVtYmVyO1xuICBsYXN0QWN0aXZpdHk6IG51bWJlcjtcbn1cbiJdfQ==