openclaw-productboard 1.0.18 → 1.0.20

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.
@@ -257,13 +257,23 @@ export class ProductBoardClient {
257
257
  // User Methods
258
258
  // ============================================
259
259
  async getCurrentUser() {
260
+ // ProductBoard API doesn't have a /users/me endpoint
261
+ // We validate the token by making a simple API call instead
260
262
  const cacheKey = ApiCache.generateKey('pb_user_current', {});
261
263
  return this.cache.wrap(cacheKey, async () => {
262
- const result = await this.request({
264
+ // Validate token by fetching products (lightweight call)
265
+ await this.request({
263
266
  method: 'GET',
264
- url: '/users/me',
267
+ url: '/products',
268
+ params: { pageLimit: 1 },
265
269
  });
266
- return result.data;
270
+ // Return placeholder since we can't get actual user info
271
+ return {
272
+ id: 'authenticated',
273
+ email: 'unknown',
274
+ name: 'API Token User',
275
+ role: 'api',
276
+ };
267
277
  });
268
278
  }
269
279
  async listUsers(params = {}) {
@@ -377,4 +387,4 @@ export class ProductBoardClient {
377
387
  return this.rateLimiter.stats();
378
388
  }
379
389
  }
380
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvYXBpLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sS0FBd0QsTUFBTSxPQUFPLENBQUM7QUFxQjdFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYixpQkFBaUIsR0FDbEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQWUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdkUsTUFBTSxnQkFBZ0IsR0FBRyw4QkFBOEIsQ0FBQztBQUN4RCxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFFdEIsTUFBTSxPQUFPLGtCQUFrQjtJQUNyQixNQUFNLENBQWdCO0lBQ3RCLEtBQUssQ0FBVztJQUNoQixXQUFXLENBQWM7SUFDekIsT0FBTyxDQUFTO0lBRXhCLFlBQVksTUFBb0I7UUFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxJQUFJLGdCQUFnQixDQUFDO1FBRXJELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsT0FBTyxFQUFFO2dCQUNQLGVBQWUsRUFBRSxVQUFVLE1BQU0sQ0FBQyxRQUFRLEVBQUU7Z0JBQzVDLGNBQWMsRUFBRSxrQkFBa0I7Z0JBQ2xDLFdBQVcsRUFBRSxHQUFHO2FBQ2pCO1lBQ0QsT0FBTyxFQUFFLEtBQUs7U0FDZixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztZQUNwQixHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsZUFBZSxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUk7U0FDNUMsQ0FBQyxDQUFDO1FB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LE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELCtDQUErQztJQUMvQyxrQkFBa0I7SUFDbEIsK0NBQStDO0lBRS9DOztPQUVHO0lBQ0gsS0FBSyxDQUFDLGFBQWE7UUFDakIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDNUIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVTtRQUNSLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2xDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUHJvZHVjdEJvYXJkIEFQSSBDbGllbnRcbiAqL1xuXG5pbXBvcnQgYXhpb3MsIHsgQXhpb3NJbnN0YW5jZSwgQXhpb3NFcnJvciwgQXhpb3NSZXF1ZXN0Q29uZmlnIH0gZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHtcbiAgRmVhdHVyZSxcbiAgUHJvZHVjdCxcbiAgQ29tcG9uZW50LFxuICBOb3RlLFxuICBVc2VyLFxuICBDdXJyZW50VXNlcixcbiAgU2VhcmNoUmVzdWx0LFxuICBQYWdpbmF0ZWRSZXNwb25zZSxcbiAgQ3JlYXRlRmVhdHVyZVBhcmFtcyxcbiAgVXBkYXRlRmVhdHVyZVBhcmFtcyxcbiAgTGlzdEZlYXR1cmVzUGFyYW1zLFxuICBMaXN0UHJvZHVjdHNQYXJhbXMsXG4gIENyZWF0ZU5vdGVQYXJhbXMsXG4gIExpc3ROb3Rlc1BhcmFtcyxcbiAgTGlzdFVzZXJzUGFyYW1zLFxuICBTZWFyY2hQYXJhbXMsXG4gIFBsdWdpbkNvbmZpZyxcbiAgUHJvZHVjdEhpZXJhcmNoeSxcbn0gZnJvbSAnLi90eXBlcy5qcyc7XG5pbXBvcnQge1xuICBwYXJzZUFwaUVycm9yLFxuICBpc1JldHJ5YWJsZUVycm9yLFxuICBnZXRSZXRyeURlbGF5LFxuICBQcm9kdWN0Qm9hcmRFcnJvcixcbn0gZnJvbSAnLi9lcnJvcnMuanMnO1xuaW1wb3J0IHsgQXBpQ2FjaGUsIGdldENhY2hlIH0gZnJvbSAnLi4vdXRpbHMvY2FjaGUuanMnO1xuaW1wb3J0IHsgUmF0ZUxpbWl0ZXIsIGdldFJhdGVMaW1pdGVyIH0gZnJvbSAnLi4vdXRpbHMvcmF0ZS1saW1pdGVyLmpzJztcblxuY29uc3QgREVGQVVMVF9CQVNFX1VSTCA9ICdodHRwczovL2FwaS5wcm9kdWN0Ym9hcmQuY29tJztcbmNvbnN0IE1BWF9SRVRSSUVTID0gMztcblxuZXhwb3J0IGNsYXNzIFByb2R1Y3RCb2FyZENsaWVudCB7XG4gIHByaXZhdGUgY2xpZW50OiBBeGlvc0luc3RhbmNlO1xuICBwcml2YXRlIGNhY2hlOiBBcGlDYWNoZTtcbiAgcHJpdmF0ZSByYXRlTGltaXRlcjogUmF0ZUxpbWl0ZXI7XG4gIHByaXZhdGUgYmFzZVVybDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogUGx1Z2luQ29uZmlnKSB7XG4gICAgdGhpcy5iYXNlVXJsID0gY29uZmlnLmFwaUJhc2VVcmwgfHwgREVGQVVMVF9CQVNFX1VSTDtcblxuICAgIHRoaXMuY2xpZW50ID0gYXhpb3MuY3JlYXRlKHtcbiAgICAgIGJhc2VVUkw6IHRoaXMuYmFzZVVybCxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7Y29uZmlnLmFwaVRva2VufWAsXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICdYLVZlcnNpb24nOiAnMScsXG4gICAgICB9LFxuICAgICAgdGltZW91dDogMzAwMDAsXG4gICAgfSk7XG5cbiAgICB0aGlzLmNhY2hlID0gZ2V0Q2FjaGUoe1xuICAgICAgdHRsOiAoY29uZmlnLmNhY2hlVHRsU2Vjb25kcyB8fCAzMDApICogMTAwMCxcbiAgICB9KTtcblxuICAgIHRoaXMucmF0ZUxpbWl0ZXIgPSBnZXRSYXRlTGltaXRlcih7XG4gICAgICBtYXhUb2tlbnM6IGNvbmZpZy5yYXRlTGltaXRQZXJNaW51dGUgfHwgMTAwLFxuICAgIH0pO1xuXG4gICAgdGhpcy5zZXR1cEludGVyY2VwdG9ycygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEludGVyY2VwdG9ycygpOiB2b2lkIHtcbiAgICAvLyBSZXNwb25zZSBpbnRlcmNlcHRvciBmb3IgZXJyb3IgaGFuZGxpbmdcbiAgICB0aGlzLmNsaWVudC5pbnRlcmNlcHRvcnMucmVzcG9uc2UudXNlKFxuICAgICAgKHJlc3BvbnNlKSA9PiByZXNwb25zZSxcbiAgICAgIChlcnJvcjogQXhpb3NFcnJvcikgPT4ge1xuICAgICAgICBpZiAoZXJyb3IucmVzcG9uc2UpIHtcbiAgICAgICAgICBjb25zdCB7IHN0YXR1cywgZGF0YSwgaGVhZGVycyB9ID0gZXJyb3IucmVzcG9uc2U7XG4gICAgICAgICAgdGhyb3cgcGFyc2VBcGlFcnJvcihcbiAgICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICBoZWFkZXJzWydyZXRyeS1hZnRlciddIGFzIHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IFByb2R1Y3RCb2FyZEVycm9yKFxuICAgICAgICAgIGVycm9yLm1lc3NhZ2UgfHwgJ05ldHdvcmsgZXJyb3InLFxuICAgICAgICAgICdORVRXT1JLX0VSUk9SJyxcbiAgICAgICAgICAwXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIGEgcmVxdWVzdCB3aXRoIHJldHJ5IGxvZ2ljIGFuZCByYXRlIGxpbWl0aW5nXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHJlcXVlc3Q8VD4oXG4gICAgY29uZmlnOiBBeGlvc1JlcXVlc3RDb25maWcsXG4gICAgcmV0cnlDb3VudCA9IDBcbiAgKTogUHJvbWlzZTxUPiB7XG4gICAgYXdhaXQgdGhpcy5yYXRlTGltaXRlci5hY3F1aXJlKCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNsaWVudC5yZXF1ZXN0PFQ+KGNvbmZpZyk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGlzUmV0cnlhYmxlRXJyb3IoZXJyb3IpICYmIHJldHJ5Q291bnQgPCBNQVhfUkVUUklFUykge1xuICAgICAgICBjb25zdCBkZWxheSA9IGdldFJldHJ5RGVsYXkoZXJyb3IsIHJldHJ5Q291bnQpO1xuICAgICAgICBhd2FpdCB0aGlzLnNsZWVwKGRlbGF5KTtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdDxUPihjb25maWcsIHJldHJ5Q291bnQgKyAxKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2xlZXAobXM6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhZ2luYXRlIHRocm91Z2ggYWxsIHJlc3VsdHNcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgcGFnaW5hdGU8VD4oXG4gICAgZW5kcG9pbnQ6IHN0cmluZyxcbiAgICBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge30sXG4gICAgbWF4SXRlbXM/OiBudW1iZXJcbiAgKTogUHJvbWlzZTxUW10+IHtcbiAgICBjb25zdCByZXN1bHRzOiBUW10gPSBbXTtcbiAgICBsZXQgY3Vyc29yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgcGFnZUxpbWl0ID0gTWF0aC5taW4obWF4SXRlbXMgfHwgMTAwLCAxMDApO1xuXG4gICAgLy8gUmVtb3ZlICdsaW1pdCcgZnJvbSBwYXJhbXMgYXMgUHJvZHVjdEJvYXJkIHVzZXMgJ3BhZ2VMaW1pdCdcbiAgICBjb25zdCB7IGxpbWl0OiBfaWdub3JlZCwgLi4uY2xlYW5QYXJhbXMgfSA9IHBhcmFtcztcblxuICAgIGRvIHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5yZXF1ZXN0PFBhZ2luYXRlZFJlc3BvbnNlPFQ+Pih7XG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIHVybDogZW5kcG9pbnQsXG4gICAgICAgIHBhcmFtczogeyAuLi5jbGVhblBhcmFtcywgcGFnZUxpbWl0LCBwYWdlQ3Vyc29yOiBjdXJzb3IgfSxcbiAgICAgIH0pO1xuXG4gICAgICByZXN1bHRzLnB1c2goLi4ucmVzcG9uc2UuZGF0YSk7XG5cbiAgICAgIGlmIChtYXhJdGVtcyAmJiByZXN1bHRzLmxlbmd0aCA+PSBtYXhJdGVtcykge1xuICAgICAgICByZXR1cm4gcmVzdWx0cy5zbGljZSgwLCBtYXhJdGVtcyk7XG4gICAgICB9XG5cbiAgICAgIGN1cnNvciA9IHJlc3BvbnNlLmxpbmtzPy5uZXh0XG4gICAgICAgID8gbmV3IFVSTChyZXNwb25zZS5saW5rcy5uZXh0KS5zZWFyY2hQYXJhbXMuZ2V0KCdwYWdlQ3Vyc29yJykgfHwgdW5kZWZpbmVkXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH0gd2hpbGUgKGN1cnNvcik7XG5cbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEZlYXR1cmUgTWV0aG9kc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIGFzeW5jIGNyZWF0ZUZlYXR1cmUocGFyYW1zOiBDcmVhdGVGZWF0dXJlUGFyYW1zKTogUHJvbWlzZTxGZWF0dXJlPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5yZXF1ZXN0PHsgZGF0YTogRmVhdHVyZSB9Pih7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIHVybDogJy9mZWF0dXJlcycsXG4gICAgICBkYXRhOiB7IGRhdGE6IHBhcmFtcyB9LFxuICAgIH0pO1xuXG4gICAgLy8gSW52YWxpZGF0ZSBmZWF0dXJlIGxpc3QgY2FjaGVzXG4gICAgdGhpcy5jYWNoZS5pbnZhbGlkYXRlUGF0dGVybigncGJfZmVhdHVyZV9saXN0OicpO1xuICAgIHRoaXMuY2FjaGUuaW52YWxpZGF0ZVBhdHRlcm4oJ3BiX2ZlYXR1cmVfc2VhcmNoOicpO1xuXG4gICAgcmV0dXJuIHJlc3VsdC5kYXRhO1xuICB9XG5cbiAgYXN5bmMgbGlzdEZlYXR1cmVzKHBhcmFtczogTGlzdEZlYXR1cmVzUGFyYW1zID0ge30pOiBQcm9taXNlPEZlYXR1cmVbXT4ge1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gQXBpQ2FjaGUuZ2VuZXJhdGVLZXkoJ3BiX2ZlYXR1cmVfbGlzdCcsIHBhcmFtcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik7XG5cbiAgICByZXR1cm4gdGhpcy5jYWNoZS53cmFwKGNhY2hlS2V5LCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBxdWVyeVBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICAgICAgaWYgKHBhcmFtcy5wcm9kdWN0SWQpIHF1ZXJ5UGFyYW1zWydwcm9kdWN0LmlkJ10gPSBwYXJhbXMucHJvZHVjdElkO1xuICAgICAgaWYgKHBhcmFtcy5jb21wb25lbnRJZCkgcXVlcnlQYXJhbXNbJ2NvbXBvbmVudC5pZCddID0gcGFyYW1zLmNvbXBvbmVudElkO1xuICAgICAgaWYgKHBhcmFtcy5zdGF0dXMpIHF1ZXJ5UGFyYW1zLnN0YXR1cyA9IHBhcmFtcy5zdGF0dXM7XG4gICAgICBpZiAocGFyYW1zLm93bmVySWQpIHF1ZXJ5UGFyYW1zWydvd25lci5pZCddID0gcGFyYW1zLm93bmVySWQ7XG5cbiAgICAgIHJldHVybiB0aGlzLnBhZ2luYXRlPEZlYXR1cmU+KCcvZmVhdHVyZXMnLCBxdWVyeVBhcmFtcywgcGFyYW1zLmxpbWl0KTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGdldEZlYXR1cmUoaWQ6IHN0cmluZyk6IFByb21pc2U8RmVhdHVyZT4ge1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gQXBpQ2FjaGUuZ2VuZXJhdGVLZXkoJ3BiX2ZlYXR1cmVfZ2V0JywgeyBpZCB9KTtcblxuICAgIHJldHVybiB0aGlzLmNhY2hlLndyYXAoY2FjaGVLZXksIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucmVxdWVzdDx7IGRhdGE6IEZlYXR1cmUgfT4oe1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICB1cmw6IGAvZmVhdHVyZXMvJHtpZH1gLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVGZWF0dXJlKGlkOiBzdHJpbmcsIHBhcmFtczogVXBkYXRlRmVhdHVyZVBhcmFtcyk6IFByb21pc2U8RmVhdHVyZT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucmVxdWVzdDx7IGRhdGE6IEZlYXR1cmUgfT4oe1xuICAgICAgbWV0aG9kOiAnUEFUQ0gnLFxuICAgICAgdXJsOiBgL2ZlYXR1cmVzLyR7aWR9YCxcbiAgICAgIGRhdGE6IHsgZGF0YTogcGFyYW1zIH0sXG4gICAgfSk7XG5cbiAgICAvLyBJbnZhbGlkYXRlIGNhY2hlc1xuICAgIHRoaXMuY2FjaGUuZGVsZXRlKEFwaUNhY2hlLmdlbmVyYXRlS2V5KCdwYl9mZWF0dXJlX2dldCcsIHsgaWQgfSkpO1xuICAgIHRoaXMuY2FjaGUuaW52YWxpZGF0ZVBhdHRlcm4oJ3BiX2ZlYXR1cmVfbGlzdDonKTtcbiAgICB0aGlzLmNhY2hlLmludmFsaWRhdGVQYXR0ZXJuKCdwYl9mZWF0dXJlX3NlYXJjaDonKTtcblxuICAgIHJldHVybiByZXN1bHQuZGF0YTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUZlYXR1cmUoaWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMucmVxdWVzdDx2b2lkPih7XG4gICAgICBtZXRob2Q6ICdERUxFVEUnLFxuICAgICAgdXJsOiBgL2ZlYXR1cmVzLyR7aWR9YCxcbiAgICB9KTtcblxuICAgIC8vIEludmFsaWRhdGUgY2FjaGVzXG4gICAgdGhpcy5jYWNoZS5kZWxldGUoQXBpQ2FjaGUuZ2VuZXJhdGVLZXkoJ3BiX2ZlYXR1cmVfZ2V0JywgeyBpZCB9KSk7XG4gICAgdGhpcy5jYWNoZS5pbnZhbGlkYXRlUGF0dGVybigncGJfZmVhdHVyZV9saXN0OicpO1xuICAgIHRoaXMuY2FjaGUuaW52YWxpZGF0ZVBhdHRlcm4oJ3BiX2ZlYXR1cmVfc2VhcmNoOicpO1xuICB9XG5cbiAgYXN5bmMgc2VhcmNoRmVhdHVyZXMocXVlcnk6IHN0cmluZywgbGltaXQgPSA1MCk6IFByb21pc2U8RmVhdHVyZVtdPiB7XG4gICAgaWYgKCFxdWVyeSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGNhY2hlS2V5ID0gQXBpQ2FjaGUuZ2VuZXJhdGVLZXkoJ3BiX2ZlYXR1cmVfc2VhcmNoJywgeyBxdWVyeSwgbGltaXQgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5jYWNoZS53cmFwKGNhY2hlS2V5LCBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBQcm9kdWN0Qm9hcmQgZG9lc24ndCBoYXZlIGEgZGVkaWNhdGVkIHNlYXJjaCBlbmRwb2ludCBmb3IgZmVhdHVyZXNcbiAgICAgIC8vIFdlJ2xsIGxpc3QgYWxsIGFuZCBmaWx0ZXIgY2xpZW50LXNpZGVcbiAgICAgIGNvbnN0IGZlYXR1cmVzID0gYXdhaXQgdGhpcy5saXN0RmVhdHVyZXMoeyBsaW1pdDogNTAwIH0pO1xuICAgICAgY29uc3QgcXVlcnlMb3dlciA9IHF1ZXJ5LnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgIHJldHVybiBmZWF0dXJlc1xuICAgICAgICAuZmlsdGVyKChmKSA9PiB7XG4gICAgICAgICAgY29uc3QgbmFtZU1hdGNoID0gZi5uYW1lPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5TG93ZXIpO1xuICAgICAgICAgIGNvbnN0IGRlc2NNYXRjaCA9IGYuZGVzY3JpcHRpb24/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnlMb3dlcik7XG4gICAgICAgICAgcmV0dXJuIG5hbWVNYXRjaCB8fCBkZXNjTWF0Y2g7XG4gICAgICAgIH0pXG4gICAgICAgIC5zbGljZSgwLCBsaW1pdCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBQcm9kdWN0IE1ldGhvZHNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBhc3luYyBsaXN0UHJvZHVjdHMocGFyYW1zOiBMaXN0UHJvZHVjdHNQYXJhbXMgPSB7fSk6IFByb21pc2U8UHJvZHVjdFtdPiB7XG4gICAgY29uc3QgY2FjaGVLZXkgPSBBcGlDYWNoZS5nZW5lcmF0ZUtleSgncGJfcHJvZHVjdF9saXN0JywgcGFyYW1zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcblxuICAgIHJldHVybiB0aGlzLmNhY2hlLndyYXAoY2FjaGVLZXksIGFzeW5jICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnBhZ2luYXRlPFByb2R1Y3Q+KCcvcHJvZHVjdHMnLCB7fSwgcGFyYW1zLmxpbWl0KTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGdldFByb2R1Y3QoaWQ6IHN0cmluZyk6IFByb21pc2U8UHJvZHVjdD4ge1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gQXBpQ2FjaGUuZ2VuZXJhdGVLZXkoJ3BiX3Byb2R1Y3RfZ2V0JywgeyBpZCB9KTtcblxuICAgIHJldHVybiB0aGlzLmNhY2hlLndyYXAoY2FjaGVLZXksIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucmVxdWVzdDx7IGRhdGE6IFByb2R1Y3QgfT4oe1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICB1cmw6IGAvcHJvZHVjdHMvJHtpZH1gLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBsaXN0Q29tcG9uZW50cyhwYXJhbXM6IHsgcHJvZHVjdElkPzogc3RyaW5nOyBsaW1pdD86IG51bWJlciB9ID0ge30pOiBQcm9taXNlPENvbXBvbmVudFtdPiB7XG4gICAgY29uc3QgY2FjaGVLZXkgPSBBcGlDYWNoZS5nZW5lcmF0ZUtleSgncGJfY29tcG9uZW50X2xpc3QnLCBwYXJhbXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pO1xuXG4gICAgcmV0dXJuIHRoaXMuY2FjaGUud3JhcChjYWNoZUtleSwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcXVlcnlQYXJhbXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gICAgICBpZiAocGFyYW1zLnByb2R1Y3RJZCkgcXVlcnlQYXJhbXNbJ3Byb2R1Y3QuaWQnXSA9IHBhcmFtcy5wcm9kdWN0SWQ7XG5cbiAgICAgIHJldHVybiB0aGlzLnBhZ2luYXRlPENvbXBvbmVudD4oJy9jb21wb25lbnRzJywgcXVlcnlQYXJhbXMsIHBhcmFtcy5saW1pdCk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBnZXRQcm9kdWN0SGllcmFyY2h5KCk6IFByb21pc2U8UHJvZHVjdEhpZXJhcmNoeT4ge1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gQXBpQ2FjaGUuZ2VuZXJhdGVLZXkoJ3BiX3Byb2R1Y3RfaGllcmFyY2h5Jywge30pO1xuXG4gICAgcmV0dXJuIHRoaXMuY2FjaGUud3JhcChjYWNoZUtleSwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgW3Byb2R1Y3RzLCBjb21wb25lbnRzXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgdGhpcy5saXN0UHJvZHVjdHMoeyBsaW1pdDogNTAwIH0pLFxuICAgICAgICB0aGlzLmxpc3RDb21wb25lbnRzKHsgbGltaXQ6IDUwMCB9KSxcbiAgICAgIF0pO1xuXG4gICAgICByZXR1cm4geyBwcm9kdWN0cywgY29tcG9uZW50cyB9O1xuICAgIH0pO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gTm90ZSBNZXRob2RzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgYXN5bmMgY3JlYXRlTm90ZShwYXJhbXM6IENyZWF0ZU5vdGVQYXJhbXMpOiBQcm9taXNlPE5vdGU+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJlcXVlc3Q8eyBkYXRhOiBOb3RlIH0+KHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgdXJsOiAnL25vdGVzJyxcbiAgICAgIGRhdGE6IHsgZGF0YTogcGFyYW1zIH0sXG4gICAgfSk7XG5cbiAgICAvLyBJbnZhbGlkYXRlIG5vdGUgbGlzdCBjYWNoZXNcbiAgICB0aGlzLmNhY2hlLmludmFsaWRhdGVQYXR0ZXJuKCdwYl9ub3RlX2xpc3Q6Jyk7XG5cbiAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gIH1cblxuICBhc3luYyBsaXN0Tm90ZXMocGFyYW1zOiBMaXN0Tm90ZXNQYXJhbXMgPSB7fSk6IFByb21pc2U8Tm90ZVtdPiB7XG4gICAgY29uc3QgY2FjaGVLZXkgPSBBcGlDYWNoZS5nZW5lcmF0ZUtleSgncGJfbm90ZV9saXN0JywgcGFyYW1zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcblxuICAgIHJldHVybiB0aGlzLmNhY2hlLndyYXAoY2FjaGVLZXksIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICAgICAgaWYgKHBhcmFtcy5jcmVhdGVkRnJvbSkgcXVlcnlQYXJhbXMuY3JlYXRlZEZyb20gPSBwYXJhbXMuY3JlYXRlZEZyb207XG4gICAgICBpZiAocGFyYW1zLmNyZWF0ZWRUbykgcXVlcnlQYXJhbXMuY3JlYXRlZFRvID0gcGFyYW1zLmNyZWF0ZWRUbztcblxuICAgICAgcmV0dXJuIHRoaXMucGFnaW5hdGU8Tm90ZT4oJy9ub3RlcycsIHF1ZXJ5UGFyYW1zLCBwYXJhbXMubGltaXQpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZ2V0Tm90ZShpZDogc3RyaW5nKTogUHJvbWlzZTxOb3RlPiB7XG4gICAgY29uc3QgY2FjaGVLZXkgPSBBcGlDYWNoZS5nZW5lcmF0ZUtleSgncGJfbm90ZV9nZXQnLCB7IGlkIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuY2FjaGUud3JhcChjYWNoZUtleSwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5yZXF1ZXN0PHsgZGF0YTogTm90ZSB9Pih7XG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIHVybDogYC9ub3Rlcy8ke2lkfWAsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQuZGF0YTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGF0dGFjaE5vdGVUb0ZlYXR1cmUobm90ZUlkOiBzdHJpbmcsIGZlYXR1cmVJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5yZXF1ZXN0PHZvaWQ+KHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgdXJsOiBgL25vdGVzLyR7bm90ZUlkfS9jb25uZWN0aW9uc2AsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBmZWF0dXJlOiB7IGlkOiBmZWF0dXJlSWQgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBJbnZhbGlkYXRlIGNhY2hlc1xuICAgIHRoaXMuY2FjaGUuZGVsZXRlKEFwaUNhY2hlLmdlbmVyYXRlS2V5KCdwYl9ub3RlX2dldCcsIHsgaWQ6IG5vdGVJZCB9KSk7XG4gICAgdGhpcy5jYWNoZS5kZWxldGUoQXBpQ2FjaGUuZ2VuZXJhdGVLZXkoJ3BiX2ZlYXR1cmVfZ2V0JywgeyBpZDogZmVhdHVyZUlkIH0pKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFVzZXIgTWV0aG9kc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIGFzeW5jIGdldEN1cnJlbnRVc2VyKCk6IFByb21pc2U8Q3VycmVudFVzZXI+IHtcbiAgICBjb25zdCBjYWNoZUtleSA9IEFwaUNhY2hlLmdlbmVyYXRlS2V5KCdwYl91c2VyX2N1cnJlbnQnLCB7fSk7XG5cbiAgICByZXR1cm4gdGhpcy5jYWNoZS53cmFwKGNhY2hlS2V5LCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJlcXVlc3Q8eyBkYXRhOiBDdXJyZW50VXNlciB9Pih7XG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIHVybDogJy91c2Vycy9tZScsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQuZGF0YTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RVc2VycyhwYXJhbXM6IExpc3RVc2Vyc1BhcmFtcyA9IHt9KTogUHJvbWlzZTxVc2VyW10+IHtcbiAgICBjb25zdCBjYWNoZUtleSA9IEFwaUNhY2hlLmdlbmVyYXRlS2V5KCdwYl91c2VyX2xpc3QnLCBwYXJhbXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pO1xuXG4gICAgcmV0dXJuIHRoaXMuY2FjaGUud3JhcChjYWNoZUtleSwgYXN5bmMgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMucGFnaW5hdGU8VXNlcj4oJy91c2VycycsIHt9LCBwYXJhbXMubGltaXQpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gU2VhcmNoIE1ldGhvZHNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBhc3luYyBzZWFyY2gocGFyYW1zOiBTZWFyY2hQYXJhbXMpOiBQcm9taXNlPFNlYXJjaFJlc3VsdFtdPiB7XG4gICAgaWYgKCFwYXJhbXMucXVlcnkpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBjYWNoZUtleSA9IEFwaUNhY2hlLmdlbmVyYXRlS2V5KCdwYl9zZWFyY2gnLCB7IHF1ZXJ5OiBwYXJhbXMucXVlcnksIHR5cGU6IHBhcmFtcy50eXBlLCBsaW1pdDogcGFyYW1zLmxpbWl0IH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuY2FjaGUud3JhcChjYWNoZUtleSwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0czogU2VhcmNoUmVzdWx0W10gPSBbXTtcbiAgICAgIGNvbnN0IHF1ZXJ5TG93ZXIgPSBwYXJhbXMucXVlcnkudG9Mb3dlckNhc2UoKTtcbiAgICAgIGNvbnN0IGxpbWl0ID0gcGFyYW1zLmxpbWl0IHx8IDUwO1xuXG4gICAgICAvLyBTZWFyY2ggZmVhdHVyZXNcbiAgICAgIGlmICghcGFyYW1zLnR5cGUgfHwgcGFyYW1zLnR5cGUgPT09ICdmZWF0dXJlJykge1xuICAgICAgICBjb25zdCBmZWF0dXJlcyA9IGF3YWl0IHRoaXMuc2VhcmNoRmVhdHVyZXMocXVlcnlMb3dlciwgbGltaXQpO1xuICAgICAgICByZXN1bHRzLnB1c2goXG4gICAgICAgICAgLi4uZmVhdHVyZXMubWFwKChmKSA9PiAoe1xuICAgICAgICAgICAgdHlwZTogJ2ZlYXR1cmUnIGFzIGNvbnN0LFxuICAgICAgICAgICAgaWQ6IGYuaWQsXG4gICAgICAgICAgICBuYW1lOiBmLm5hbWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogZi5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGxpbmtzOiBmLmxpbmtzLFxuICAgICAgICAgIH0pKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBTZWFyY2ggcHJvZHVjdHNcbiAgICAgIGlmICghcGFyYW1zLnR5cGUgfHwgcGFyYW1zLnR5cGUgPT09ICdwcm9kdWN0Jykge1xuICAgICAgICBjb25zdCBwcm9kdWN0cyA9IGF3YWl0IHRoaXMubGlzdFByb2R1Y3RzKHsgbGltaXQ6IDEwMCB9KTtcbiAgICAgICAgY29uc3QgbWF0Y2hpbmdQcm9kdWN0cyA9IHByb2R1Y3RzXG4gICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgIChwKSA9PlxuICAgICAgICAgICAgICBwLm5hbWU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnlMb3dlcikgfHxcbiAgICAgICAgICAgICAgcC5kZXNjcmlwdGlvbj8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeUxvd2VyKVxuICAgICAgICAgIClcbiAgICAgICAgICAuc2xpY2UoMCwgbGltaXQpO1xuXG4gICAgICAgIHJlc3VsdHMucHVzaChcbiAgICAgICAgICAuLi5tYXRjaGluZ1Byb2R1Y3RzLm1hcCgocCkgPT4gKHtcbiAgICAgICAgICAgIHR5cGU6ICdwcm9kdWN0JyBhcyBjb25zdCxcbiAgICAgICAgICAgIGlkOiBwLmlkLFxuICAgICAgICAgICAgbmFtZTogcC5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHAuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBsaW5rczogcC5saW5rcyxcbiAgICAgICAgICB9KSlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2VhcmNoIGNvbXBvbmVudHNcbiAgICAgIGlmICghcGFyYW1zLnR5cGUgfHwgcGFyYW1zLnR5cGUgPT09ICdjb21wb25lbnQnKSB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudHMgPSBhd2FpdCB0aGlzLmxpc3RDb21wb25lbnRzKHsgbGltaXQ6IDEwMCB9KTtcbiAgICAgICAgY29uc3QgbWF0Y2hpbmdDb21wb25lbnRzID0gY29tcG9uZW50c1xuICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAoYykgPT5cbiAgICAgICAgICAgICAgYy5uYW1lPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5TG93ZXIpIHx8XG4gICAgICAgICAgICAgIGMuZGVzY3JpcHRpb24/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnlMb3dlcilcbiAgICAgICAgICApXG4gICAgICAgICAgLnNsaWNlKDAsIGxpbWl0KTtcblxuICAgICAgICByZXN1bHRzLnB1c2goXG4gICAgICAgICAgLi4ubWF0Y2hpbmdDb21wb25lbnRzLm1hcCgoYykgPT4gKHtcbiAgICAgICAgICAgIHR5cGU6ICdjb21wb25lbnQnIGFzIGNvbnN0LFxuICAgICAgICAgICAgaWQ6IGMuaWQsXG4gICAgICAgICAgICBuYW1lOiBjLm5hbWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogYy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGxpbmtzOiBjLmxpbmtzLFxuICAgICAgICAgIH0pKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBTZWFyY2ggbm90ZXNcbiAgICAgIGlmICghcGFyYW1zLnR5cGUgfHwgcGFyYW1zLnR5cGUgPT09ICdub3RlJykge1xuICAgICAgICBjb25zdCBub3RlcyA9IGF3YWl0IHRoaXMubGlzdE5vdGVzKHsgbGltaXQ6IDEwMCB9KTtcbiAgICAgICAgY29uc3QgbWF0Y2hpbmdOb3RlcyA9IG5vdGVzXG4gICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgIChuKSA9PlxuICAgICAgICAgICAgICBuLnRpdGxlPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5TG93ZXIpIHx8XG4gICAgICAgICAgICAgIG4uY29udGVudD8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeUxvd2VyKVxuICAgICAgICAgIClcbiAgICAgICAgICAuc2xpY2UoMCwgbGltaXQpO1xuXG4gICAgICAgIHJlc3VsdHMucHVzaChcbiAgICAgICAgICAuLi5tYXRjaGluZ05vdGVzLm1hcCgobikgPT4gKHtcbiAgICAgICAgICAgIHR5cGU6ICdub3RlJyBhcyBjb25zdCxcbiAgICAgICAgICAgIGlkOiBuLmlkLFxuICAgICAgICAgICAgdGl0bGU6IG4udGl0bGUsXG4gICAgICAgICAgICBjb250ZW50OiBuLmNvbnRlbnQ/LnN1YnN0cmluZygwLCAyMDApLFxuICAgICAgICAgICAgbGlua3M6IG4ubGlua3MsXG4gICAgICAgICAgfSkpXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHRzLnNsaWNlKDAsIGxpbWl0KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFV0aWxpdHkgTWV0aG9kc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGUgQVBJIHRva2VuIGJ5IG1ha2luZyBhIHRlc3QgcmVxdWVzdFxuICAgKi9cbiAgYXN5bmMgdmFsaWRhdGVUb2tlbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5nZXRDdXJyZW50VXNlcigpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIGFsbCBjYWNoZWQgZGF0YVxuICAgKi9cbiAgY2xlYXJDYWNoZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNhY2hlLmNsZWFyKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNhY2hlIHN0YXRpc3RpY3NcbiAgICovXG4gIGdldENhY2hlU3RhdHMoKTogeyBzaXplOiBudW1iZXI7IG1heDogbnVtYmVyIH0ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlLnN0YXRzKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHJhdGUgbGltaXRlciBzdGF0aXN0aWNzXG4gICAqL1xuICBnZXRSYXRlTGltaXRlclN0YXRzKCk6IHsgdG9rZW5zOiBudW1iZXI7IG1heFRva2VuczogbnVtYmVyOyB3YWl0VGltZTogbnVtYmVyIH0ge1xuICAgIHJldHVybiB0aGlzLnJhdGVMaW1pdGVyLnN0YXRzKCk7XG4gIH1cbn1cbiJdfQ==
390
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvYXBpLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sS0FBd0QsTUFBTSxPQUFPLENBQUM7QUFxQjdFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYixpQkFBaUIsR0FDbEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQWUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdkUsTUFBTSxnQkFBZ0IsR0FBRyw4QkFBOEIsQ0FBQztBQUN4RCxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFFdEIsTUFBTSxPQUFPLGtCQUFrQjtJQUNyQixNQUFNLENBQWdCO0lBQ3RCLEtBQUssQ0FBVztJQUNoQixXQUFXLENBQWM7SUFDekIsT0FBTyxDQUFTO0lBRXhCLFlBQVksTUFBb0I7UUFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxJQUFJLGdCQUFnQixDQUFDO1FBRXJELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsT0FBTyxFQUFFO2dCQUNQLGVBQWUsRUFBRSxVQUFVLE1BQU0sQ0FBQyxRQUFRLEVBQUU7Z0JBQzVDLGNBQWMsRUFBRSxrQkFBa0I7Z0JBQ2xDLFdBQVcsRUFBRSxHQUFHO2FBQ2pCO1lBQ0QsT0FBTyxFQUFFLEtBQUs7U0FDZixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztZQUNwQixHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsZUFBZSxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUk7U0FDNUMsQ0FBQyxDQUFDO1FB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QUFDLENBQUMsS0FBSztvQkFDZCxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQztvQkFDckMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO2lCQUNmLENBQUMsQ0FBQyxDQUNKLENBQUM7WUFDSixDQUFDO1lBRUQsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCwrQ0FBK0M7SUFDL0Msa0JBQWtCO0lBQ2xCLCtDQUErQztJQUUvQzs7T0FFRztJQUNILEtBQUssQ0FBQyxhQUFhO1FBQ2pCLElBQUksQ0FBQztZQUNILE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzVCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVU7UUFDUixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFByb2R1Y3RCb2FyZCBBUEkgQ2xpZW50XG4gKi9cblxuaW1wb3J0IGF4aW9zLCB7IEF4aW9zSW5zdGFuY2UsIEF4aW9zRXJyb3IsIEF4aW9zUmVxdWVzdENvbmZpZyB9IGZyb20gJ2F4aW9zJztcbmltcG9ydCB7XG4gIEZlYXR1cmUsXG4gIFByb2R1Y3QsXG4gIENvbXBvbmVudCxcbiAgTm90ZSxcbiAgVXNlcixcbiAgQ3VycmVudFVzZXIsXG4gIFNlYXJjaFJlc3VsdCxcbiAgUGFnaW5hdGVkUmVzcG9uc2UsXG4gIENyZWF0ZUZlYXR1cmVQYXJhbXMsXG4gIFVwZGF0ZUZlYXR1cmVQYXJhbXMsXG4gIExpc3RGZWF0dXJlc1BhcmFtcyxcbiAgTGlzdFByb2R1Y3RzUGFyYW1zLFxuICBDcmVhdGVOb3RlUGFyYW1zLFxuICBMaXN0Tm90ZXNQYXJhbXMsXG4gIExpc3RVc2Vyc1BhcmFtcyxcbiAgU2VhcmNoUGFyYW1zLFxuICBQbHVnaW5Db25maWcsXG4gIFByb2R1Y3RIaWVyYXJjaHksXG59IGZyb20gJy4vdHlwZXMuanMnO1xuaW1wb3J0IHtcbiAgcGFyc2VBcGlFcnJvcixcbiAgaXNSZXRyeWFibGVFcnJvcixcbiAgZ2V0UmV0cnlEZWxheSxcbiAgUHJvZHVjdEJvYXJkRXJyb3IsXG59IGZyb20gJy4vZXJyb3JzLmpzJztcbmltcG9ydCB7IEFwaUNhY2hlLCBnZXRDYWNoZSB9IGZyb20gJy4uL3V0aWxzL2NhY2hlLmpzJztcbmltcG9ydCB7IFJhdGVMaW1pdGVyLCBnZXRSYXRlTGltaXRlciB9IGZyb20gJy4uL3V0aWxzL3JhdGUtbGltaXRlci5qcyc7XG5cbmNvbnN0IERFRkFVTFRfQkFTRV9VUkwgPSAnaHR0cHM6Ly9hcGkucHJvZHVjdGJvYXJkLmNvbSc7XG5jb25zdCBNQVhfUkVUUklFUyA9IDM7XG5cbmV4cG9ydCBjbGFzcyBQcm9kdWN0Qm9hcmRDbGllbnQge1xuICBwcml2YXRlIGNsaWVudDogQXhpb3NJbnN0YW5jZTtcbiAgcHJpdmF0ZSBjYWNoZTogQXBpQ2FjaGU7XG4gIHByaXZhdGUgcmF0ZUxpbWl0ZXI6IFJhdGVMaW1pdGVyO1xuICBwcml2YXRlIGJhc2VVcmw6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFBsdWdpbkNvbmZpZykge1xuICAgIHRoaXMuYmFzZVVybCA9IGNvbmZpZy5hcGlCYXNlVXJsIHx8IERFRkFVTFRfQkFTRV9VUkw7XG5cbiAgICB0aGlzLmNsaWVudCA9IGF4aW9zLmNyZWF0ZSh7XG4gICAgICBiYXNlVVJMOiB0aGlzLmJhc2VVcmwsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke2NvbmZpZy5hcGlUb2tlbn1gLFxuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAnWC1WZXJzaW9uJzogJzEnLFxuICAgICAgfSxcbiAgICAgIHRpbWVvdXQ6IDMwMDAwLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jYWNoZSA9IGdldENhY2hlKHtcbiAgICAgIHR0bDogKGNvbmZpZy5jYWNoZVR0bFNlY29uZHMgfHwgMzAwKSAqIDEwMDAsXG4gICAgfSk7XG5cbiAgICB0aGlzLnJhdGVMaW1pdGVyID0gZ2V0UmF0ZUxpbWl0ZXIoe1xuICAgICAgbWF4VG9rZW5zOiBjb25maWcucmF0ZUxpbWl0UGVyTWludXRlIHx8IDEwMCxcbiAgICB9KTtcblxuICAgIHRoaXMuc2V0dXBJbnRlcmNlcHRvcnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBJbnRlcmNlcHRvcnMoKTogdm9pZCB7XG4gICAgLy8gUmVzcG9uc2UgaW50ZXJjZXB0b3IgZm9yIGVycm9yIGhhbmRsaW5nXG4gICAgdGhpcy5jbGllbnQuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLnVzZShcbiAgICAgIChyZXNwb25zZSkgPT4gcmVzcG9uc2UsXG4gICAgICAoZXJyb3I6IEF4aW9zRXJyb3IpID0+IHtcbiAgICAgICAgaWYgKGVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgICAgY29uc3QgeyBzdGF0dXMsIGRhdGEsIGhlYWRlcnMgfSA9IGVycm9yLnJlc3BvbnNlO1xuICAgICAgICAgIHRocm93IHBhcnNlQXBpRXJyb3IoXG4gICAgICAgICAgICBzdGF0dXMsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgaGVhZGVyc1sncmV0cnktYWZ0ZXInXSBhcyBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBQcm9kdWN0Qm9hcmRFcnJvcihcbiAgICAgICAgICBlcnJvci5tZXNzYWdlIHx8ICdOZXR3b3JrIGVycm9yJyxcbiAgICAgICAgICAnTkVUV09SS19FUlJPUicsXG4gICAgICAgICAgMFxuICAgICAgICApO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSBhIHJlcXVlc3Qgd2l0aCByZXRyeSBsb2dpYyBhbmQgcmF0ZSBsaW1pdGluZ1xuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyByZXF1ZXN0PFQ+KFxuICAgIGNvbmZpZzogQXhpb3NSZXF1ZXN0Q29uZmlnLFxuICAgIHJldHJ5Q291bnQgPSAwXG4gICk6IFByb21pc2U8VD4ge1xuICAgIGF3YWl0IHRoaXMucmF0ZUxpbWl0ZXIuYWNxdWlyZSgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jbGllbnQucmVxdWVzdDxUPihjb25maWcpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChpc1JldHJ5YWJsZUVycm9yKGVycm9yKSAmJiByZXRyeUNvdW50IDwgTUFYX1JFVFJJRVMpIHtcbiAgICAgICAgY29uc3QgZGVsYXkgPSBnZXRSZXRyeURlbGF5KGVycm9yLCByZXRyeUNvdW50KTtcbiAgICAgICAgYXdhaXQgdGhpcy5zbGVlcChkZWxheSk7XG4gICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8VD4oY29uZmlnLCByZXRyeUNvdW50ICsgMSk7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNsZWVwKG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYWdpbmF0ZSB0aHJvdWdoIGFsbCByZXN1bHRzXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHBhZ2luYXRlPFQ+KFxuICAgIGVuZHBvaW50OiBzdHJpbmcsXG4gICAgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9LFxuICAgIG1heEl0ZW1zPzogbnVtYmVyXG4gICk6IFByb21pc2U8VFtdPiB7XG4gICAgY29uc3QgcmVzdWx0czogVFtdID0gW107XG4gICAgbGV0IGN1cnNvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHBhZ2VMaW1pdCA9IE1hdGgubWluKG1heEl0ZW1zIHx8IDEwMCwgMTAwKTtcblxuICAgIC8vIFJlbW92ZSAnbGltaXQnIGZyb20gcGFyYW1zIGFzIFByb2R1Y3RCb2FyZCB1c2VzICdwYWdlTGltaXQnXG4gICAgY29uc3QgeyBsaW1pdDogX2lnbm9yZWQsIC4uLmNsZWFuUGFyYW1zIH0gPSBwYXJhbXM7XG5cbiAgICBkbyB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdDxQYWdpbmF0ZWRSZXNwb25zZTxUPj4oe1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICB1cmw6IGVuZHBvaW50LFxuICAgICAgICBwYXJhbXM6IHsgLi4uY2xlYW5QYXJhbXMsIHBhZ2VMaW1pdCwgcGFnZUN1cnNvcjogY3Vyc29yIH0sXG4gICAgICB9KTtcblxuICAgICAgcmVzdWx0cy5wdXNoKC4uLnJlc3BvbnNlLmRhdGEpO1xuXG4gICAgICBpZiAobWF4SXRlbXMgJiYgcmVzdWx0cy5sZW5ndGggPj0gbWF4SXRlbXMpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdHMuc2xpY2UoMCwgbWF4SXRlbXMpO1xuICAgICAgfVxuXG4gICAgICBjdXJzb3IgPSByZXNwb25zZS5saW5rcz8ubmV4dFxuICAgICAgICA/IG5ldyBVUkwocmVzcG9uc2UubGlua3MubmV4dCkuc2VhcmNoUGFyYW1zLmdldCgncGFnZUN1cnNvcicpIHx8IHVuZGVmaW5lZFxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9IHdoaWxlIChjdXJzb3IpO1xuXG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBGZWF0dXJlIE1ldGhvZHNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBhc3luYyBjcmVhdGVGZWF0dXJlKHBhcmFtczogQ3JlYXRlRmVhdHVyZVBhcmFtcyk6IFByb21pc2U8RmVhdHVyZT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucmVxdWVzdDx7IGRhdGE6IEZlYXR1cmUgfT4oe1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICB1cmw6ICcvZmVhdHVyZXMnLFxuICAgICAgZGF0YTogeyBkYXRhOiBwYXJhbXMgfSxcbiAgICB9KTtcblxuICAgIC8vIEludmFsaWRhdGUgZmVhdHVyZSBsaXN0IGNhY2hlc1xuICAgIHRoaXMuY2FjaGUuaW52YWxpZGF0ZVBhdHRlcm4oJ3BiX2ZlYXR1cmVfbGlzdDonKTtcbiAgICB0aGlzLmNhY2hlLmludmFsaWRhdGVQYXR0ZXJuKCdwYl9mZWF0dXJlX3NlYXJjaDonKTtcblxuICAgIHJldHVybiByZXN1bHQuZGF0YTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RGZWF0dXJlcyhwYXJhbXM6IExpc3RGZWF0dXJlc1BhcmFtcyA9IHt9KTogUHJvbWlzZTxGZWF0dXJlW10+IHtcbiAgICBjb25zdCBjYWNoZUtleSA9IEFwaUNhY2hlLmdlbmVyYXRlS2V5KCdwYl9mZWF0dXJlX2xpc3QnLCBwYXJhbXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pO1xuXG4gICAgcmV0dXJuIHRoaXMuY2FjaGUud3JhcChjYWNoZUtleSwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcXVlcnlQYXJhbXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgICAgIGlmIChwYXJhbXMucHJvZHVjdElkKSBxdWVyeVBhcmFtc1sncHJvZHVjdC5pZCddID0gcGFyYW1zLnByb2R1Y3RJZDtcbiAgICAgIGlmIChwYXJhbXMuY29tcG9uZW50SWQpIHF1ZXJ5UGFyYW1zWydjb21wb25lbnQuaWQnXSA9IHBhcmFtcy5jb21wb25lbnRJZDtcbiAgICAgIGlmIChwYXJhbXMuc3RhdHVzKSBxdWVyeVBhcmFtcy5zdGF0dXMgPSBwYXJhbXMuc3RhdHVzO1xuICAgICAgaWYgKHBhcmFtcy5vd25lcklkKSBxdWVyeVBhcmFtc1snb3duZXIuaWQnXSA9IHBhcmFtcy5vd25lcklkO1xuXG4gICAgICByZXR1cm4gdGhpcy5wYWdpbmF0ZTxGZWF0dXJlPignL2ZlYXR1cmVzJywgcXVlcnlQYXJhbXMsIHBhcmFtcy5saW1pdCk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBnZXRGZWF0dXJlKGlkOiBzdHJpbmcpOiBQcm9taXNlPEZlYXR1cmU+IHtcbiAgICBjb25zdCBjYWNoZUtleSA9IEFwaUNhY2hlLmdlbmVyYXRlS2V5KCdwYl9mZWF0dXJlX2dldCcsIHsgaWQgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5jYWNoZS53cmFwKGNhY2hlS2V5LCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJlcXVlc3Q8eyBkYXRhOiBGZWF0dXJlIH0+KHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgdXJsOiBgL2ZlYXR1cmVzLyR7aWR9YCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlRmVhdHVyZShpZDogc3RyaW5nLCBwYXJhbXM6IFVwZGF0ZUZlYXR1cmVQYXJhbXMpOiBQcm9taXNlPEZlYXR1cmU+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJlcXVlc3Q8eyBkYXRhOiBGZWF0dXJlIH0+KHtcbiAgICAgIG1ldGhvZDogJ1BBVENIJyxcbiAgICAgIHVybDogYC9mZWF0dXJlcy8ke2lkfWAsXG4gICAgICBkYXRhOiB7IGRhdGE6IHBhcmFtcyB9LFxuICAgIH0pO1xuXG4gICAgLy8gSW52YWxpZGF0ZSBjYWNoZXNcbiAgICB0aGlzLmNhY2hlLmRlbGV0ZShBcGlDYWNoZS5nZW5lcmF0ZUtleSgncGJfZmVhdHVyZV9nZXQnLCB7IGlkIH0pKTtcbiAgICB0aGlzLmNhY2hlLmludmFsaWRhdGVQYXR0ZXJuKCdwYl9mZWF0dXJlX2xpc3Q6Jyk7XG4gICAgdGhpcy5jYWNoZS5pbnZhbGlkYXRlUGF0dGVybigncGJfZmVhdHVyZV9zZWFyY2g6Jyk7XG5cbiAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gIH1cblxuICBhc3luYyBkZWxldGVGZWF0dXJlKGlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnJlcXVlc3Q8dm9pZD4oe1xuICAgICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgICAgIHVybDogYC9mZWF0dXJlcy8ke2lkfWAsXG4gICAgfSk7XG5cbiAgICAvLyBJbnZhbGlkYXRlIGNhY2hlc1xuICAgIHRoaXMuY2FjaGUuZGVsZXRlKEFwaUNhY2hlLmdlbmVyYXRlS2V5KCdwYl9mZWF0dXJlX2dldCcsIHsgaWQgfSkpO1xuICAgIHRoaXMuY2FjaGUuaW52YWxpZGF0ZVBhdHRlcm4oJ3BiX2ZlYXR1cmVfbGlzdDonKTtcbiAgICB0aGlzLmNhY2hlLmludmFsaWRhdGVQYXR0ZXJuKCdwYl9mZWF0dXJlX3NlYXJjaDonKTtcbiAgfVxuXG4gIGFzeW5jIHNlYXJjaEZlYXR1cmVzKHF1ZXJ5OiBzdHJpbmcsIGxpbWl0ID0gNTApOiBQcm9taXNlPEZlYXR1cmVbXT4ge1xuICAgIGlmICghcXVlcnkpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBjYWNoZUtleSA9IEFwaUNhY2hlLmdlbmVyYXRlS2V5KCdwYl9mZWF0dXJlX3NlYXJjaCcsIHsgcXVlcnksIGxpbWl0IH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuY2FjaGUud3JhcChjYWNoZUtleSwgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gUHJvZHVjdEJvYXJkIGRvZXNuJ3QgaGF2ZSBhIGRlZGljYXRlZCBzZWFyY2ggZW5kcG9pbnQgZm9yIGZlYXR1cmVzXG4gICAgICAvLyBXZSdsbCBsaXN0IGFsbCBhbmQgZmlsdGVyIGNsaWVudC1zaWRlXG4gICAgICBjb25zdCBmZWF0dXJlcyA9IGF3YWl0IHRoaXMubGlzdEZlYXR1cmVzKHsgbGltaXQ6IDUwMCB9KTtcbiAgICAgIGNvbnN0IHF1ZXJ5TG93ZXIgPSBxdWVyeS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICByZXR1cm4gZmVhdHVyZXNcbiAgICAgICAgLmZpbHRlcigoZikgPT4ge1xuICAgICAgICAgIGNvbnN0IG5hbWVNYXRjaCA9IGYubmFtZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeUxvd2VyKTtcbiAgICAgICAgICBjb25zdCBkZXNjTWF0Y2ggPSBmLmRlc2NyaXB0aW9uPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5TG93ZXIpO1xuICAgICAgICAgIHJldHVybiBuYW1lTWF0Y2ggfHwgZGVzY01hdGNoO1xuICAgICAgICB9KVxuICAgICAgICAuc2xpY2UoMCwgbGltaXQpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUHJvZHVjdCBNZXRob2RzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgYXN5bmMgbGlzdFByb2R1Y3RzKHBhcmFtczogTGlzdFByb2R1Y3RzUGFyYW1zID0ge30pOiBQcm9taXNlPFByb2R1Y3RbXT4ge1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gQXBpQ2FjaGUuZ2VuZXJhdGVLZXkoJ3BiX3Byb2R1Y3RfbGlzdCcsIHBhcmFtcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik7XG5cbiAgICByZXR1cm4gdGhpcy5jYWNoZS53cmFwKGNhY2hlS2V5LCBhc3luYyAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5wYWdpbmF0ZTxQcm9kdWN0PignL3Byb2R1Y3RzJywge30sIHBhcmFtcy5saW1pdCk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBnZXRQcm9kdWN0KGlkOiBzdHJpbmcpOiBQcm9taXNlPFByb2R1Y3Q+IHtcbiAgICBjb25zdCBjYWNoZUtleSA9IEFwaUNhY2hlLmdlbmVyYXRlS2V5KCdwYl9wcm9kdWN0X2dldCcsIHsgaWQgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5jYWNoZS53cmFwKGNhY2hlS2V5LCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJlcXVlc3Q8eyBkYXRhOiBQcm9kdWN0IH0+KHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgdXJsOiBgL3Byb2R1Y3RzLyR7aWR9YCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgbGlzdENvbXBvbmVudHMocGFyYW1zOiB7IHByb2R1Y3RJZD86IHN0cmluZzsgbGltaXQ/OiBudW1iZXIgfSA9IHt9KTogUHJvbWlzZTxDb21wb25lbnRbXT4ge1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gQXBpQ2FjaGUuZ2VuZXJhdGVLZXkoJ3BiX2NvbXBvbmVudF9saXN0JywgcGFyYW1zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcblxuICAgIHJldHVybiB0aGlzLmNhY2hlLndyYXAoY2FjaGVLZXksIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICAgICAgaWYgKHBhcmFtcy5wcm9kdWN0SWQpIHF1ZXJ5UGFyYW1zWydwcm9kdWN0LmlkJ10gPSBwYXJhbXMucHJvZHVjdElkO1xuXG4gICAgICByZXR1cm4gdGhpcy5wYWdpbmF0ZTxDb21wb25lbnQ+KCcvY29tcG9uZW50cycsIHF1ZXJ5UGFyYW1zLCBwYXJhbXMubGltaXQpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZ2V0UHJvZHVjdEhpZXJhcmNoeSgpOiBQcm9taXNlPFByb2R1Y3RIaWVyYXJjaHk+IHtcbiAgICBjb25zdCBjYWNoZUtleSA9IEFwaUNhY2hlLmdlbmVyYXRlS2V5KCdwYl9wcm9kdWN0X2hpZXJhcmNoeScsIHt9KTtcblxuICAgIHJldHVybiB0aGlzLmNhY2hlLndyYXAoY2FjaGVLZXksIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IFtwcm9kdWN0cywgY29tcG9uZW50c10gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgIHRoaXMubGlzdFByb2R1Y3RzKHsgbGltaXQ6IDUwMCB9KSxcbiAgICAgICAgdGhpcy5saXN0Q29tcG9uZW50cyh7IGxpbWl0OiA1MDAgfSksXG4gICAgICBdKTtcblxuICAgICAgcmV0dXJuIHsgcHJvZHVjdHMsIGNvbXBvbmVudHMgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIE5vdGUgTWV0aG9kc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIGFzeW5jIGNyZWF0ZU5vdGUocGFyYW1zOiBDcmVhdGVOb3RlUGFyYW1zKTogUHJvbWlzZTxOb3RlPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5yZXF1ZXN0PHsgZGF0YTogTm90ZSB9Pih7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIHVybDogJy9ub3RlcycsXG4gICAgICBkYXRhOiB7IGRhdGE6IHBhcmFtcyB9LFxuICAgIH0pO1xuXG4gICAgLy8gSW52YWxpZGF0ZSBub3RlIGxpc3QgY2FjaGVzXG4gICAgdGhpcy5jYWNoZS5pbnZhbGlkYXRlUGF0dGVybigncGJfbm90ZV9saXN0OicpO1xuXG4gICAgcmV0dXJuIHJlc3VsdC5kYXRhO1xuICB9XG5cbiAgYXN5bmMgbGlzdE5vdGVzKHBhcmFtczogTGlzdE5vdGVzUGFyYW1zID0ge30pOiBQcm9taXNlPE5vdGVbXT4ge1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gQXBpQ2FjaGUuZ2VuZXJhdGVLZXkoJ3BiX25vdGVfbGlzdCcsIHBhcmFtcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik7XG5cbiAgICByZXR1cm4gdGhpcy5jYWNoZS53cmFwKGNhY2hlS2V5LCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBxdWVyeVBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgICAgIGlmIChwYXJhbXMuY3JlYXRlZEZyb20pIHF1ZXJ5UGFyYW1zLmNyZWF0ZWRGcm9tID0gcGFyYW1zLmNyZWF0ZWRGcm9tO1xuICAgICAgaWYgKHBhcmFtcy5jcmVhdGVkVG8pIHF1ZXJ5UGFyYW1zLmNyZWF0ZWRUbyA9IHBhcmFtcy5jcmVhdGVkVG87XG5cbiAgICAgIHJldHVybiB0aGlzLnBhZ2luYXRlPE5vdGU+KCcvbm90ZXMnLCBxdWVyeVBhcmFtcywgcGFyYW1zLmxpbWl0KTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGdldE5vdGUoaWQ6IHN0cmluZyk6IFByb21pc2U8Tm90ZT4ge1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gQXBpQ2FjaGUuZ2VuZXJhdGVLZXkoJ3BiX25vdGVfZ2V0JywgeyBpZCB9KTtcblxuICAgIHJldHVybiB0aGlzLmNhY2hlLndyYXAoY2FjaGVLZXksIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucmVxdWVzdDx7IGRhdGE6IE5vdGUgfT4oe1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICB1cmw6IGAvbm90ZXMvJHtpZH1gLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBhdHRhY2hOb3RlVG9GZWF0dXJlKG5vdGVJZDogc3RyaW5nLCBmZWF0dXJlSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMucmVxdWVzdDx2b2lkPih7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIHVybDogYC9ub3Rlcy8ke25vdGVJZH0vY29ubmVjdGlvbnNgLFxuICAgICAgZGF0YToge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgZmVhdHVyZTogeyBpZDogZmVhdHVyZUlkIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gSW52YWxpZGF0ZSBjYWNoZXNcbiAgICB0aGlzLmNhY2hlLmRlbGV0ZShBcGlDYWNoZS5nZW5lcmF0ZUtleSgncGJfbm90ZV9nZXQnLCB7IGlkOiBub3RlSWQgfSkpO1xuICAgIHRoaXMuY2FjaGUuZGVsZXRlKEFwaUNhY2hlLmdlbmVyYXRlS2V5KCdwYl9mZWF0dXJlX2dldCcsIHsgaWQ6IGZlYXR1cmVJZCB9KSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBVc2VyIE1ldGhvZHNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBhc3luYyBnZXRDdXJyZW50VXNlcigpOiBQcm9taXNlPEN1cnJlbnRVc2VyPiB7XG4gICAgLy8gUHJvZHVjdEJvYXJkIEFQSSBkb2Vzbid0IGhhdmUgYSAvdXNlcnMvbWUgZW5kcG9pbnRcbiAgICAvLyBXZSB2YWxpZGF0ZSB0aGUgdG9rZW4gYnkgbWFraW5nIGEgc2ltcGxlIEFQSSBjYWxsIGluc3RlYWRcbiAgICBjb25zdCBjYWNoZUtleSA9IEFwaUNhY2hlLmdlbmVyYXRlS2V5KCdwYl91c2VyX2N1cnJlbnQnLCB7fSk7XG5cbiAgICByZXR1cm4gdGhpcy5jYWNoZS53cmFwKGNhY2hlS2V5LCBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBWYWxpZGF0ZSB0b2tlbiBieSBmZXRjaGluZyBwcm9kdWN0cyAobGlnaHR3ZWlnaHQgY2FsbClcbiAgICAgIGF3YWl0IHRoaXMucmVxdWVzdDxQYWdpbmF0ZWRSZXNwb25zZTxQcm9kdWN0Pj4oe1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICB1cmw6ICcvcHJvZHVjdHMnLFxuICAgICAgICBwYXJhbXM6IHsgcGFnZUxpbWl0OiAxIH0sXG4gICAgICB9KTtcblxuICAgICAgLy8gUmV0dXJuIHBsYWNlaG9sZGVyIHNpbmNlIHdlIGNhbid0IGdldCBhY3R1YWwgdXNlciBpbmZvXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogJ2F1dGhlbnRpY2F0ZWQnLFxuICAgICAgICBlbWFpbDogJ3Vua25vd24nLFxuICAgICAgICBuYW1lOiAnQVBJIFRva2VuIFVzZXInLFxuICAgICAgICByb2xlOiAnYXBpJyxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBsaXN0VXNlcnMocGFyYW1zOiBMaXN0VXNlcnNQYXJhbXMgPSB7fSk6IFByb21pc2U8VXNlcltdPiB7XG4gICAgY29uc3QgY2FjaGVLZXkgPSBBcGlDYWNoZS5nZW5lcmF0ZUtleSgncGJfdXNlcl9saXN0JywgcGFyYW1zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcblxuICAgIHJldHVybiB0aGlzLmNhY2hlLndyYXAoY2FjaGVLZXksIGFzeW5jICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnBhZ2luYXRlPFVzZXI+KCcvdXNlcnMnLCB7fSwgcGFyYW1zLmxpbWl0KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFNlYXJjaCBNZXRob2RzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgYXN5bmMgc2VhcmNoKHBhcmFtczogU2VhcmNoUGFyYW1zKTogUHJvbWlzZTxTZWFyY2hSZXN1bHRbXT4ge1xuICAgIGlmICghcGFyYW1zLnF1ZXJ5KSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgY2FjaGVLZXkgPSBBcGlDYWNoZS5nZW5lcmF0ZUtleSgncGJfc2VhcmNoJywgeyBxdWVyeTogcGFyYW1zLnF1ZXJ5LCB0eXBlOiBwYXJhbXMudHlwZSwgbGltaXQ6IHBhcmFtcy5saW1pdCB9KTtcblxuICAgIHJldHVybiB0aGlzLmNhY2hlLndyYXAoY2FjaGVLZXksIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdHM6IFNlYXJjaFJlc3VsdFtdID0gW107XG4gICAgICBjb25zdCBxdWVyeUxvd2VyID0gcGFyYW1zLnF1ZXJ5LnRvTG93ZXJDYXNlKCk7XG4gICAgICBjb25zdCBsaW1pdCA9IHBhcmFtcy5saW1pdCB8fCA1MDtcblxuICAgICAgLy8gU2VhcmNoIGZlYXR1cmVzXG4gICAgICBpZiAoIXBhcmFtcy50eXBlIHx8IHBhcmFtcy50eXBlID09PSAnZmVhdHVyZScpIHtcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBhd2FpdCB0aGlzLnNlYXJjaEZlYXR1cmVzKHF1ZXJ5TG93ZXIsIGxpbWl0KTtcbiAgICAgICAgcmVzdWx0cy5wdXNoKFxuICAgICAgICAgIC4uLmZlYXR1cmVzLm1hcCgoZikgPT4gKHtcbiAgICAgICAgICAgIHR5cGU6ICdmZWF0dXJlJyBhcyBjb25zdCxcbiAgICAgICAgICAgIGlkOiBmLmlkLFxuICAgICAgICAgICAgbmFtZTogZi5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGYuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBsaW5rczogZi5saW5rcyxcbiAgICAgICAgICB9KSlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2VhcmNoIHByb2R1Y3RzXG4gICAgICBpZiAoIXBhcmFtcy50eXBlIHx8IHBhcmFtcy50eXBlID09PSAncHJvZHVjdCcpIHtcbiAgICAgICAgY29uc3QgcHJvZHVjdHMgPSBhd2FpdCB0aGlzLmxpc3RQcm9kdWN0cyh7IGxpbWl0OiAxMDAgfSk7XG4gICAgICAgIGNvbnN0IG1hdGNoaW5nUHJvZHVjdHMgPSBwcm9kdWN0c1xuICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAocCkgPT5cbiAgICAgICAgICAgICAgcC5uYW1lPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5TG93ZXIpIHx8XG4gICAgICAgICAgICAgIHAuZGVzY3JpcHRpb24/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnlMb3dlcilcbiAgICAgICAgICApXG4gICAgICAgICAgLnNsaWNlKDAsIGxpbWl0KTtcblxuICAgICAgICByZXN1bHRzLnB1c2goXG4gICAgICAgICAgLi4ubWF0Y2hpbmdQcm9kdWN0cy5tYXAoKHApID0+ICh7XG4gICAgICAgICAgICB0eXBlOiAncHJvZHVjdCcgYXMgY29uc3QsXG4gICAgICAgICAgICBpZDogcC5pZCxcbiAgICAgICAgICAgIG5hbWU6IHAubmFtZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgbGlua3M6IHAubGlua3MsXG4gICAgICAgICAgfSkpXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNlYXJjaCBjb21wb25lbnRzXG4gICAgICBpZiAoIXBhcmFtcy50eXBlIHx8IHBhcmFtcy50eXBlID09PSAnY29tcG9uZW50Jykge1xuICAgICAgICBjb25zdCBjb21wb25lbnRzID0gYXdhaXQgdGhpcy5saXN0Q29tcG9uZW50cyh7IGxpbWl0OiAxMDAgfSk7XG4gICAgICAgIGNvbnN0IG1hdGNoaW5nQ29tcG9uZW50cyA9IGNvbXBvbmVudHNcbiAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgKGMpID0+XG4gICAgICAgICAgICAgIGMubmFtZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeUxvd2VyKSB8fFxuICAgICAgICAgICAgICBjLmRlc2NyaXB0aW9uPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5TG93ZXIpXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zbGljZSgwLCBsaW1pdCk7XG5cbiAgICAgICAgcmVzdWx0cy5wdXNoKFxuICAgICAgICAgIC4uLm1hdGNoaW5nQ29tcG9uZW50cy5tYXAoKGMpID0+ICh7XG4gICAgICAgICAgICB0eXBlOiAnY29tcG9uZW50JyBhcyBjb25zdCxcbiAgICAgICAgICAgIGlkOiBjLmlkLFxuICAgICAgICAgICAgbmFtZTogYy5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGMuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBsaW5rczogYy5saW5rcyxcbiAgICAgICAgICB9KSlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2VhcmNoIG5vdGVzXG4gICAgICBpZiAoIXBhcmFtcy50eXBlIHx8IHBhcmFtcy50eXBlID09PSAnbm90ZScpIHtcbiAgICAgICAgY29uc3Qgbm90ZXMgPSBhd2FpdCB0aGlzLmxpc3ROb3Rlcyh7IGxpbWl0OiAxMDAgfSk7XG4gICAgICAgIGNvbnN0IG1hdGNoaW5nTm90ZXMgPSBub3Rlc1xuICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAobikgPT5cbiAgICAgICAgICAgICAgbi50aXRsZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeUxvd2VyKSB8fFxuICAgICAgICAgICAgICBuLmNvbnRlbnQ/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnlMb3dlcilcbiAgICAgICAgICApXG4gICAgICAgICAgLnNsaWNlKDAsIGxpbWl0KTtcblxuICAgICAgICByZXN1bHRzLnB1c2goXG4gICAgICAgICAgLi4ubWF0Y2hpbmdOb3Rlcy5tYXAoKG4pID0+ICh7XG4gICAgICAgICAgICB0eXBlOiAnbm90ZScgYXMgY29uc3QsXG4gICAgICAgICAgICBpZDogbi5pZCxcbiAgICAgICAgICAgIHRpdGxlOiBuLnRpdGxlLFxuICAgICAgICAgICAgY29udGVudDogbi5jb250ZW50Py5zdWJzdHJpbmcoMCwgMjAwKSxcbiAgICAgICAgICAgIGxpbmtzOiBuLmxpbmtzLFxuICAgICAgICAgIH0pKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0cy5zbGljZSgwLCBsaW1pdCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBVdGlsaXR5IE1ldGhvZHNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhlIEFQSSB0b2tlbiBieSBtYWtpbmcgYSB0ZXN0IHJlcXVlc3RcbiAgICovXG4gIGFzeW5jIHZhbGlkYXRlVG9rZW4oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciBhbGwgY2FjaGVkIGRhdGFcbiAgICovXG4gIGNsZWFyQ2FjaGUoKTogdm9pZCB7XG4gICAgdGhpcy5jYWNoZS5jbGVhcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjYWNoZSBzdGF0aXN0aWNzXG4gICAqL1xuICBnZXRDYWNoZVN0YXRzKCk6IHsgc2l6ZTogbnVtYmVyOyBtYXg6IG51bWJlciB9IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZS5zdGF0cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCByYXRlIGxpbWl0ZXIgc3RhdGlzdGljc1xuICAgKi9cbiAgZ2V0UmF0ZUxpbWl0ZXJTdGF0cygpOiB7IHRva2VuczogbnVtYmVyOyBtYXhUb2tlbnM6IG51bWJlcjsgd2FpdFRpbWU6IG51bWJlciB9IHtcbiAgICByZXR1cm4gdGhpcy5yYXRlTGltaXRlci5zdGF0cygpO1xuICB9XG59XG4iXX0=
@@ -62,27 +62,24 @@ export function createSearchTools(client) {
62
62
  // pb_user_current
63
63
  {
64
64
  name: 'pb_user_current',
65
- description: 'Get information about the currently authenticated user, including workspace details.',
65
+ description: 'Validate the API token and confirm access to ProductBoard. Note: ProductBoard API does not expose current user details.',
66
66
  parameters: {
67
67
  type: 'object',
68
68
  properties: {},
69
69
  },
70
70
  execute: async () => {
71
- const user = await client.getCurrentUser();
71
+ await client.getCurrentUser();
72
72
  return {
73
- id: user.id,
74
- email: user.email,
75
- name: user.name,
76
- role: user.role,
77
- workspaceId: user.workspaceId,
78
- workspaceName: user.workspaceName,
73
+ authenticated: true,
74
+ message: 'API token is valid and has access to ProductBoard',
75
+ note: 'ProductBoard API does not provide current user details. Use pb_user_list to see workspace members.',
79
76
  };
80
77
  },
81
78
  },
82
79
  // pb_user_list
83
80
  {
84
81
  name: 'pb_user_list',
85
- description: 'List all users in the ProductBoard workspace. Useful for finding user IDs for assigning features.',
82
+ description: 'List customer/feedback users in ProductBoard. These are people who have provided feedback, not workspace team members.',
86
83
  parameters: {
87
84
  type: 'object',
88
85
  properties: {
@@ -103,11 +100,10 @@ export function createSearchTools(client) {
103
100
  id: u.id,
104
101
  email: u.email,
105
102
  name: u.name,
106
- role: u.role,
107
103
  })),
108
104
  };
109
105
  },
110
106
  },
111
107
  ];
112
108
  }
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rvb2xzL3NlYXJjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUtILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxNQUEwQjtJQUMxRCxPQUFPO1FBQ0wsWUFBWTtRQUNaO1lBQ0UsSUFBSSxFQUFFLFdBQVc7WUFDakIsV0FBVyxFQUNULG1IQUFtSDtZQUNySCxVQUFVLEVBQUU7Z0JBQ1YsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsVUFBVSxFQUFFO29CQUNWLEtBQUssRUFBRTt3QkFDTCxJQUFJLEVBQUUsUUFBUTt3QkFDZCxXQUFXLEVBQUUsbUJBQW1CO3FCQUNqQztvQkFDRCxJQUFJLEVBQUU7d0JBQ0osSUFBSSxFQUFFLFFBQVE7d0JBQ2QsV0FBVyxFQUFFLCtCQUErQjt3QkFDNUMsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDO3FCQUNsRDtvQkFDRCxLQUFLLEVBQUU7d0JBQ0wsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsV0FBVyxFQUFFLHlDQUF5Qzt3QkFDdEQsT0FBTyxFQUFFLEVBQUU7cUJBQ1o7aUJBQ0Y7Z0JBQ0QsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDO2FBQ3BCO1lBQ0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTtnQkFDeEIsTUFBTSxZQUFZLEdBQWlCO29CQUNqQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQWU7b0JBQzdCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBZ0U7b0JBQzdFLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBZSxJQUFJLEVBQUU7aUJBQ3BDLENBQUM7Z0JBRUYsTUFBTSxPQUFPLEdBQUcsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUVsRCx3QkFBd0I7Z0JBQ3hCLE1BQU0sT0FBTyxHQUE4QjtvQkFDekMsUUFBUSxFQUFFLEVBQUU7b0JBQ1osUUFBUSxFQUFFLEVBQUU7b0JBQ1osVUFBVSxFQUFFLEVBQUU7b0JBQ2QsS0FBSyxFQUFFLEVBQUU7aUJBQ1YsQ0FBQztnQkFFRixLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUM3QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztvQkFDOUIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQzs0QkFDaEIsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFOzRCQUNiLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLOzRCQUNqQyxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsT0FBTzs0QkFDakQsR0FBRyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSTt5QkFDeEIsQ0FBQyxDQUFDO29CQUNMLENBQUM7Z0JBQ0gsQ0FBQztnQkFFRCxPQUFPO29CQUNMLFVBQVUsRUFBRSxPQUFPLENBQUMsTUFBTTtvQkFDMUIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO29CQUNuQixPQUFPLEVBQUUsT0FBTztpQkFDakIsQ0FBQztZQUNKLENBQUM7U0FDRjtRQUVELGtCQUFrQjtRQUNsQjtZQUNFLElBQUksRUFBRSxpQkFBaUI7WUFDdkIsV0FBVyxFQUNULHNGQUFzRjtZQUN4RixVQUFVLEVBQUU7Z0JBQ1YsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsVUFBVSxFQUFFLEVBQUU7YUFDZjtZQUNELE9BQU8sRUFBRSxLQUFLLElBQUksRUFBRTtnQkFDbEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzNDLE9BQU87b0JBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO29CQUNYLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztvQkFDakIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO29CQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtvQkFDZixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7b0JBQzdCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtpQkFDbEMsQ0FBQztZQUNKLENBQUM7U0FDRjtRQUVELGVBQWU7UUFDZjtZQUNFLElBQUksRUFBRSxjQUFjO1lBQ3BCLFdBQVcsRUFDVCxtR0FBbUc7WUFDckcsVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRSxRQUFRO2dCQUNkLFVBQVUsRUFBRTtvQkFDVixLQUFLLEVBQUU7d0JBQ0wsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsV0FBVyxFQUFFLGtEQUFrRDt3QkFDL0QsT0FBTyxFQUFFLEdBQUc7cUJBQ2I7aUJBQ0Y7YUFDRjtZQUNELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQ3hCLE1BQU0sS0FBSyxHQUFHLE1BQU0sTUFBTSxDQUFDLFNBQVMsQ0FBQztvQkFDbkMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFlLElBQUksR0FBRztpQkFDckMsQ0FBQyxDQUFDO2dCQUNILE9BQU87b0JBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNO29CQUNuQixLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDdkIsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFO3dCQUNSLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSzt3QkFDZCxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUk7d0JBQ1osSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO3FCQUNiLENBQUMsQ0FBQztpQkFDSixDQUFDO1lBQ0osQ0FBQztTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFByb2R1Y3RCb2FyZCBTZWFyY2ggYW5kIFVzZXIgVG9vbHNcbiAqL1xuXG5pbXBvcnQgeyBQcm9kdWN0Qm9hcmRDbGllbnQgfSBmcm9tICcuLi9jbGllbnQvYXBpLWNsaWVudC5qcyc7XG5pbXBvcnQgeyBUb29sRGVmaW5pdGlvbiwgU2VhcmNoUGFyYW1zIH0gZnJvbSAnLi4vY2xpZW50L3R5cGVzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNlYXJjaFRvb2xzKGNsaWVudDogUHJvZHVjdEJvYXJkQ2xpZW50KTogVG9vbERlZmluaXRpb25bXSB7XG4gIHJldHVybiBbXG4gICAgLy8gcGJfc2VhcmNoXG4gICAge1xuICAgICAgbmFtZTogJ3BiX3NlYXJjaCcsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0dsb2JhbCBzZWFyY2ggYWNyb3NzIFByb2R1Y3RCb2FyZC4gU2VhcmNoZXMgZmVhdHVyZXMsIHByb2R1Y3RzLCBjb21wb25lbnRzLCBhbmQgbm90ZXMgYnkgbmFtZSwgdGl0bGUsIG9yIGNvbnRlbnQuJyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1NlYXJjaCBxdWVyeSB0ZXh0JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdMaW1pdCBzZWFyY2ggdG8gc3BlY2lmaWMgdHlwZScsXG4gICAgICAgICAgICBlbnVtOiBbJ2ZlYXR1cmUnLCAncHJvZHVjdCcsICdjb21wb25lbnQnLCAnbm90ZSddLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbGltaXQ6IHtcbiAgICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdNYXhpbXVtIHJlc3VsdHMgdG8gcmV0dXJuIChkZWZhdWx0OiAyNSknLFxuICAgICAgICAgICAgZGVmYXVsdDogMjUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVxdWlyZWQ6IFsncXVlcnknXSxcbiAgICAgIH0sXG4gICAgICBleGVjdXRlOiBhc3luYyAocGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlYXJjaFBhcmFtczogU2VhcmNoUGFyYW1zID0ge1xuICAgICAgICAgIHF1ZXJ5OiBwYXJhbXMucXVlcnkgYXMgc3RyaW5nLFxuICAgICAgICAgIHR5cGU6IHBhcmFtcy50eXBlIGFzICdmZWF0dXJlJyB8ICdub3RlJyB8ICdwcm9kdWN0JyB8ICdjb21wb25lbnQnIHwgdW5kZWZpbmVkLFxuICAgICAgICAgIGxpbWl0OiBwYXJhbXMubGltaXQgYXMgbnVtYmVyIHx8IDI1LFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBjbGllbnQuc2VhcmNoKHNlYXJjaFBhcmFtcyk7XG5cbiAgICAgICAgLy8gR3JvdXAgcmVzdWx0cyBieSB0eXBlXG4gICAgICAgIGNvbnN0IGdyb3VwZWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd25bXT4gPSB7XG4gICAgICAgICAgZmVhdHVyZXM6IFtdLFxuICAgICAgICAgIHByb2R1Y3RzOiBbXSxcbiAgICAgICAgICBjb21wb25lbnRzOiBbXSxcbiAgICAgICAgICBub3RlczogW10sXG4gICAgICAgIH07XG5cbiAgICAgICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0cykge1xuICAgICAgICAgIGNvbnN0IGtleSA9IHJlc3VsdC50eXBlICsgJ3MnO1xuICAgICAgICAgIGlmIChncm91cGVkW2tleV0pIHtcbiAgICAgICAgICAgIGdyb3VwZWRba2V5XS5wdXNoKHtcbiAgICAgICAgICAgICAgaWQ6IHJlc3VsdC5pZCxcbiAgICAgICAgICAgICAgbmFtZTogcmVzdWx0Lm5hbWUgfHwgcmVzdWx0LnRpdGxlLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcmVzdWx0LmRlc2NyaXB0aW9uIHx8IHJlc3VsdC5jb250ZW50LFxuICAgICAgICAgICAgICB1cmw6IHJlc3VsdC5saW5rcz8uaHRtbCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdG90YWxDb3VudDogcmVzdWx0cy5sZW5ndGgsXG4gICAgICAgICAgcXVlcnk6IHBhcmFtcy5xdWVyeSxcbiAgICAgICAgICByZXN1bHRzOiBncm91cGVkLFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9LFxuXG4gICAgLy8gcGJfdXNlcl9jdXJyZW50XG4gICAge1xuICAgICAgbmFtZTogJ3BiX3VzZXJfY3VycmVudCcsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0dldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudGx5IGF1dGhlbnRpY2F0ZWQgdXNlciwgaW5jbHVkaW5nIHdvcmtzcGFjZSBkZXRhaWxzLicsXG4gICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7fSxcbiAgICAgIH0sXG4gICAgICBleGVjdXRlOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSBhd2FpdCBjbGllbnQuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpZDogdXNlci5pZCxcbiAgICAgICAgICBlbWFpbDogdXNlci5lbWFpbCxcbiAgICAgICAgICBuYW1lOiB1c2VyLm5hbWUsXG4gICAgICAgICAgcm9sZTogdXNlci5yb2xlLFxuICAgICAgICAgIHdvcmtzcGFjZUlkOiB1c2VyLndvcmtzcGFjZUlkLFxuICAgICAgICAgIHdvcmtzcGFjZU5hbWU6IHVzZXIud29ya3NwYWNlTmFtZSxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIC8vIHBiX3VzZXJfbGlzdFxuICAgIHtcbiAgICAgIG5hbWU6ICdwYl91c2VyX2xpc3QnLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdMaXN0IGFsbCB1c2VycyBpbiB0aGUgUHJvZHVjdEJvYXJkIHdvcmtzcGFjZS4gVXNlZnVsIGZvciBmaW5kaW5nIHVzZXIgSURzIGZvciBhc3NpZ25pbmcgZmVhdHVyZXMuJyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBsaW1pdDoge1xuICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ01heGltdW0gbnVtYmVyIG9mIHVzZXJzIHRvIHJldHVybiAoZGVmYXVsdDogMTAwKScsXG4gICAgICAgICAgICBkZWZhdWx0OiAxMDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBleGVjdXRlOiBhc3luYyAocGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZXJzID0gYXdhaXQgY2xpZW50Lmxpc3RVc2Vycyh7XG4gICAgICAgICAgbGltaXQ6IHBhcmFtcy5saW1pdCBhcyBudW1iZXIgfHwgMTAwLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb3VudDogdXNlcnMubGVuZ3RoLFxuICAgICAgICAgIHVzZXJzOiB1c2Vycy5tYXAoKHUpID0+ICh7XG4gICAgICAgICAgICBpZDogdS5pZCxcbiAgICAgICAgICAgIGVtYWlsOiB1LmVtYWlsLFxuICAgICAgICAgICAgbmFtZTogdS5uYW1lLFxuICAgICAgICAgICAgcm9sZTogdS5yb2xlLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgfSxcbiAgXTtcbn1cbiJdfQ==
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rvb2xzL3NlYXJjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUtILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxNQUEwQjtJQUMxRCxPQUFPO1FBQ0wsWUFBWTtRQUNaO1lBQ0UsSUFBSSxFQUFFLFdBQVc7WUFDakIsV0FBVyxFQUNULG1IQUFtSDtZQUNySCxVQUFVLEVBQUU7Z0JBQ1YsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsVUFBVSxFQUFFO29CQUNWLEtBQUssRUFBRTt3QkFDTCxJQUFJLEVBQUUsUUFBUTt3QkFDZCxXQUFXLEVBQUUsbUJBQW1CO3FCQUNqQztvQkFDRCxJQUFJLEVBQUU7d0JBQ0osSUFBSSxFQUFFLFFBQVE7d0JBQ2QsV0FBVyxFQUFFLCtCQUErQjt3QkFDNUMsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDO3FCQUNsRDtvQkFDRCxLQUFLLEVBQUU7d0JBQ0wsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsV0FBVyxFQUFFLHlDQUF5Qzt3QkFDdEQsT0FBTyxFQUFFLEVBQUU7cUJBQ1o7aUJBQ0Y7Z0JBQ0QsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDO2FBQ3BCO1lBQ0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTtnQkFDeEIsTUFBTSxZQUFZLEdBQWlCO29CQUNqQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQWU7b0JBQzdCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBZ0U7b0JBQzdFLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBZSxJQUFJLEVBQUU7aUJBQ3BDLENBQUM7Z0JBRUYsTUFBTSxPQUFPLEdBQUcsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUVsRCx3QkFBd0I7Z0JBQ3hCLE1BQU0sT0FBTyxHQUE4QjtvQkFDekMsUUFBUSxFQUFFLEVBQUU7b0JBQ1osUUFBUSxFQUFFLEVBQUU7b0JBQ1osVUFBVSxFQUFFLEVBQUU7b0JBQ2QsS0FBSyxFQUFFLEVBQUU7aUJBQ1YsQ0FBQztnQkFFRixLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUM3QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztvQkFDOUIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQzs0QkFDaEIsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFOzRCQUNiLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLOzRCQUNqQyxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsT0FBTzs0QkFDakQsR0FBRyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSTt5QkFDeEIsQ0FBQyxDQUFDO29CQUNMLENBQUM7Z0JBQ0gsQ0FBQztnQkFFRCxPQUFPO29CQUNMLFVBQVUsRUFBRSxPQUFPLENBQUMsTUFBTTtvQkFDMUIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO29CQUNuQixPQUFPLEVBQUUsT0FBTztpQkFDakIsQ0FBQztZQUNKLENBQUM7U0FDRjtRQUVELGtCQUFrQjtRQUNsQjtZQUNFLElBQUksRUFBRSxpQkFBaUI7WUFDdkIsV0FBVyxFQUNULHlIQUF5SDtZQUMzSCxVQUFVLEVBQUU7Z0JBQ1YsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsVUFBVSxFQUFFLEVBQUU7YUFDZjtZQUNELE9BQU8sRUFBRSxLQUFLLElBQUksRUFBRTtnQkFDbEIsTUFBTSxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzlCLE9BQU87b0JBQ0wsYUFBYSxFQUFFLElBQUk7b0JBQ25CLE9BQU8sRUFBRSxtREFBbUQ7b0JBQzVELElBQUksRUFBRSxvR0FBb0c7aUJBQzNHLENBQUM7WUFDSixDQUFDO1NBQ0Y7UUFFRCxlQUFlO1FBQ2Y7WUFDRSxJQUFJLEVBQUUsY0FBYztZQUNwQixXQUFXLEVBQ1Qsd0hBQXdIO1lBQzFILFVBQVUsRUFBRTtnQkFDVixJQUFJLEVBQUUsUUFBUTtnQkFDZCxVQUFVLEVBQUU7b0JBQ1YsS0FBSyxFQUFFO3dCQUNMLElBQUksRUFBRSxRQUFRO3dCQUNkLFdBQVcsRUFBRSxrREFBa0Q7d0JBQy9ELE9BQU8sRUFBRSxHQUFHO3FCQUNiO2lCQUNGO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUN4QixNQUFNLEtBQUssR0FBRyxNQUFNLE1BQU0sQ0FBQyxTQUFTLENBQUM7b0JBQ25DLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBZSxJQUFJLEdBQUc7aUJBQ3JDLENBQUMsQ0FBQztnQkFDSCxPQUFPO29CQUNMLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTTtvQkFDbkIsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQ3ZCLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRTt3QkFDUixLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7d0JBQ2QsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO3FCQUNiLENBQUMsQ0FBQztpQkFDSixDQUFDO1lBQ0osQ0FBQztTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFByb2R1Y3RCb2FyZCBTZWFyY2ggYW5kIFVzZXIgVG9vbHNcbiAqL1xuXG5pbXBvcnQgeyBQcm9kdWN0Qm9hcmRDbGllbnQgfSBmcm9tICcuLi9jbGllbnQvYXBpLWNsaWVudC5qcyc7XG5pbXBvcnQgeyBUb29sRGVmaW5pdGlvbiwgU2VhcmNoUGFyYW1zIH0gZnJvbSAnLi4vY2xpZW50L3R5cGVzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNlYXJjaFRvb2xzKGNsaWVudDogUHJvZHVjdEJvYXJkQ2xpZW50KTogVG9vbERlZmluaXRpb25bXSB7XG4gIHJldHVybiBbXG4gICAgLy8gcGJfc2VhcmNoXG4gICAge1xuICAgICAgbmFtZTogJ3BiX3NlYXJjaCcsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0dsb2JhbCBzZWFyY2ggYWNyb3NzIFByb2R1Y3RCb2FyZC4gU2VhcmNoZXMgZmVhdHVyZXMsIHByb2R1Y3RzLCBjb21wb25lbnRzLCBhbmQgbm90ZXMgYnkgbmFtZSwgdGl0bGUsIG9yIGNvbnRlbnQuJyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1NlYXJjaCBxdWVyeSB0ZXh0JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdMaW1pdCBzZWFyY2ggdG8gc3BlY2lmaWMgdHlwZScsXG4gICAgICAgICAgICBlbnVtOiBbJ2ZlYXR1cmUnLCAncHJvZHVjdCcsICdjb21wb25lbnQnLCAnbm90ZSddLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbGltaXQ6IHtcbiAgICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdNYXhpbXVtIHJlc3VsdHMgdG8gcmV0dXJuIChkZWZhdWx0OiAyNSknLFxuICAgICAgICAgICAgZGVmYXVsdDogMjUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVxdWlyZWQ6IFsncXVlcnknXSxcbiAgICAgIH0sXG4gICAgICBleGVjdXRlOiBhc3luYyAocGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlYXJjaFBhcmFtczogU2VhcmNoUGFyYW1zID0ge1xuICAgICAgICAgIHF1ZXJ5OiBwYXJhbXMucXVlcnkgYXMgc3RyaW5nLFxuICAgICAgICAgIHR5cGU6IHBhcmFtcy50eXBlIGFzICdmZWF0dXJlJyB8ICdub3RlJyB8ICdwcm9kdWN0JyB8ICdjb21wb25lbnQnIHwgdW5kZWZpbmVkLFxuICAgICAgICAgIGxpbWl0OiBwYXJhbXMubGltaXQgYXMgbnVtYmVyIHx8IDI1LFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBjbGllbnQuc2VhcmNoKHNlYXJjaFBhcmFtcyk7XG5cbiAgICAgICAgLy8gR3JvdXAgcmVzdWx0cyBieSB0eXBlXG4gICAgICAgIGNvbnN0IGdyb3VwZWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd25bXT4gPSB7XG4gICAgICAgICAgZmVhdHVyZXM6IFtdLFxuICAgICAgICAgIHByb2R1Y3RzOiBbXSxcbiAgICAgICAgICBjb21wb25lbnRzOiBbXSxcbiAgICAgICAgICBub3RlczogW10sXG4gICAgICAgIH07XG5cbiAgICAgICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0cykge1xuICAgICAgICAgIGNvbnN0IGtleSA9IHJlc3VsdC50eXBlICsgJ3MnO1xuICAgICAgICAgIGlmIChncm91cGVkW2tleV0pIHtcbiAgICAgICAgICAgIGdyb3VwZWRba2V5XS5wdXNoKHtcbiAgICAgICAgICAgICAgaWQ6IHJlc3VsdC5pZCxcbiAgICAgICAgICAgICAgbmFtZTogcmVzdWx0Lm5hbWUgfHwgcmVzdWx0LnRpdGxlLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcmVzdWx0LmRlc2NyaXB0aW9uIHx8IHJlc3VsdC5jb250ZW50LFxuICAgICAgICAgICAgICB1cmw6IHJlc3VsdC5saW5rcz8uaHRtbCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdG90YWxDb3VudDogcmVzdWx0cy5sZW5ndGgsXG4gICAgICAgICAgcXVlcnk6IHBhcmFtcy5xdWVyeSxcbiAgICAgICAgICByZXN1bHRzOiBncm91cGVkLFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9LFxuXG4gICAgLy8gcGJfdXNlcl9jdXJyZW50XG4gICAge1xuICAgICAgbmFtZTogJ3BiX3VzZXJfY3VycmVudCcsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ1ZhbGlkYXRlIHRoZSBBUEkgdG9rZW4gYW5kIGNvbmZpcm0gYWNjZXNzIHRvIFByb2R1Y3RCb2FyZC4gTm90ZTogUHJvZHVjdEJvYXJkIEFQSSBkb2VzIG5vdCBleHBvc2UgY3VycmVudCB1c2VyIGRldGFpbHMuJyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgIHByb3BlcnRpZXM6IHt9LFxuICAgICAgfSxcbiAgICAgIGV4ZWN1dGU6IGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgY2xpZW50LmdldEN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYXV0aGVudGljYXRlZDogdHJ1ZSxcbiAgICAgICAgICBtZXNzYWdlOiAnQVBJIHRva2VuIGlzIHZhbGlkIGFuZCBoYXMgYWNjZXNzIHRvIFByb2R1Y3RCb2FyZCcsXG4gICAgICAgICAgbm90ZTogJ1Byb2R1Y3RCb2FyZCBBUEkgZG9lcyBub3QgcHJvdmlkZSBjdXJyZW50IHVzZXIgZGV0YWlscy4gVXNlIHBiX3VzZXJfbGlzdCB0byBzZWUgd29ya3NwYWNlIG1lbWJlcnMuJyxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIC8vIHBiX3VzZXJfbGlzdFxuICAgIHtcbiAgICAgIG5hbWU6ICdwYl91c2VyX2xpc3QnLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdMaXN0IGN1c3RvbWVyL2ZlZWRiYWNrIHVzZXJzIGluIFByb2R1Y3RCb2FyZC4gVGhlc2UgYXJlIHBlb3BsZSB3aG8gaGF2ZSBwcm92aWRlZCBmZWVkYmFjaywgbm90IHdvcmtzcGFjZSB0ZWFtIG1lbWJlcnMuJyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBsaW1pdDoge1xuICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ01heGltdW0gbnVtYmVyIG9mIHVzZXJzIHRvIHJldHVybiAoZGVmYXVsdDogMTAwKScsXG4gICAgICAgICAgICBkZWZhdWx0OiAxMDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBleGVjdXRlOiBhc3luYyAocGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZXJzID0gYXdhaXQgY2xpZW50Lmxpc3RVc2Vycyh7XG4gICAgICAgICAgbGltaXQ6IHBhcmFtcy5saW1pdCBhcyBudW1iZXIgfHwgMTAwLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb3VudDogdXNlcnMubGVuZ3RoLFxuICAgICAgICAgIHVzZXJzOiB1c2Vycy5tYXAoKHUpID0+ICh7XG4gICAgICAgICAgICBpZDogdS5pZCxcbiAgICAgICAgICAgIGVtYWlsOiB1LmVtYWlsLFxuICAgICAgICAgICAgbmFtZTogdS5uYW1lLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgfSxcbiAgXTtcbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openclaw-productboard",
3
- "version": "1.0.18",
3
+ "version": "1.0.20",
4
4
  "description": "OpenClaw plugin for ProductBoard integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",