@privateconnect/sdk 0.3.0 → 0.3.5

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.
package/dist/index.d.ts CHANGED
@@ -27,6 +27,8 @@ export interface PrivateConnectConfig {
27
27
  hubUrl?: string;
28
28
  /** Agent ID (auto-detected from config if not provided) */
29
29
  agentId?: string;
30
+ /** Disable usage tracking (default: false) */
31
+ disableTracking?: boolean;
30
32
  }
31
33
  export interface Service {
32
34
  id: string;
package/dist/index.js CHANGED
@@ -24,6 +24,20 @@
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
25
  exports.PrivateConnect = exports.SessionsAPI = exports.ServicesAPI = exports.AgentsAPI = void 0;
26
26
  exports.connect = connect;
27
+ // Track SDK usage (fire and forget)
28
+ function trackSdkUsage(hubUrl) {
29
+ const data = JSON.stringify({
30
+ os: typeof process !== 'undefined' ? process.platform : 'browser',
31
+ arch: typeof process !== 'undefined' ? (process.arch === 'arm64' ? 'arm64' : 'x64') : 'unknown',
32
+ version: 'sdk',
33
+ source: 'sdk',
34
+ });
35
+ fetch(`${hubUrl}/v1/events/install`, {
36
+ method: 'POST',
37
+ headers: { 'Content-Type': 'application/json' },
38
+ body: data,
39
+ }).catch(() => { }); // Silently ignore errors
40
+ }
27
41
  /**
28
42
  * Agents API for discovery and orchestration
29
43
  */
@@ -253,6 +267,10 @@ class PrivateConnect {
253
267
  this.agents = new AgentsAPI(this);
254
268
  this.services = new ServicesAPI(this);
255
269
  this.sessions = new SessionsAPI(this);
270
+ // Track SDK usage (non-blocking)
271
+ if (!config.disableTracking) {
272
+ trackSdkUsage(this.config.hubUrl);
273
+ }
256
274
  }
257
275
  /**
258
276
  * Get the agent ID
@@ -306,4 +324,4 @@ async function connect(serviceName, config) {
306
324
  const client = new PrivateConnect({ ...config, apiKey });
307
325
  return client.connect(serviceName);
308
326
  }
309
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7OztBQTBYSCwwQkFRQztBQXZVRDs7R0FFRztBQUNILE1BQWEsU0FBUztJQUNwQixZQUFvQixNQUFzQjtRQUF0QixXQUFNLEdBQU4sTUFBTSxDQUFnQjtJQUFHLENBQUM7SUFFOUM7O09BRUc7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQWtDO1FBQzNDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUNyRSxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUUvQixJQUFJLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQztZQUN4QixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDN0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFO1lBQ1IsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO1lBQ1osS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO1lBQ2QsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRO1lBQ3BCLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVTtZQUN4QixZQUFZLEVBQUUsQ0FBQyxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQzNELFFB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QUFjLENBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQcml2YXRlIENvbm5lY3QgU0RLXG4gKiBcbiAqIFByb2dyYW1tYXRpYyBhY2Nlc3MgdG8gUHJpdmF0ZSBDb25uZWN0IHNlcnZpY2VzIGFuZCBhZ2VudCBvcmNoZXN0cmF0aW9uLlxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgUHJpdmF0ZUNvbm5lY3QgfSBmcm9tICdAcHJpdmF0ZWNvbm5lY3Qvc2RrJztcbiAqIFxuICogY29uc3QgcGMgPSBuZXcgUHJpdmF0ZUNvbm5lY3QoeyBhcGlLZXk6ICd5b3VyLWFwaS1rZXknIH0pO1xuICogXG4gKiAvLyBDb25uZWN0IHRvIGEgc2VydmljZVxuICogY29uc3QgZGIgPSBhd2FpdCBwYy5jb25uZWN0KCdwb3N0Z3Jlcy1wcm9kJyk7XG4gKiBjb25zb2xlLmxvZyhkYi5jb25uZWN0aW9uU3RyaW5nKTsgLy8gcG9zdGdyZXM6Ly9sb2NhbGhvc3Q6NTQzMi8uLi5cbiAqIFxuICogLy8gTGlzdCBhbGwgYWdlbnRzXG4gKiBjb25zdCBhZ2VudHMgPSBhd2FpdCBwYy5hZ2VudHMubGlzdCgpO1xuICogXG4gKiAvLyBTZW5kIG1lc3NhZ2UgdG8gYW5vdGhlciBhZ2VudFxuICogYXdhaXQgcGMuYWdlbnRzLnNlbmRNZXNzYWdlKHRhcmdldEFnZW50SWQsIHsgYWN0aW9uOiAnZGVwbG95JyB9KTtcbiAqIGBgYFxuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJpdmF0ZUNvbm5lY3RDb25maWcge1xuICAvKiogQVBJIGtleSBmb3IgYXV0aGVudGljYXRpb24gKi9cbiAgYXBpS2V5OiBzdHJpbmc7XG4gIC8qKiBIdWIgVVJMIChkZWZhdWx0OiBodHRwczovL2FwaS5wcml2YXRlY29ubmVjdC5jbykgKi9cbiAgaHViVXJsPzogc3RyaW5nO1xuICAvKiogQWdlbnQgSUQgKGF1dG8tZGV0ZWN0ZWQgZnJvbSBjb25maWcgaWYgbm90IHByb3ZpZGVkKSAqL1xuICBhZ2VudElkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2Uge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHRhcmdldEhvc3Q6IHN0cmluZztcbiAgdGFyZ2V0UG9ydDogbnVtYmVyO1xuICB0dW5uZWxQb3J0PzogbnVtYmVyO1xuICBwcm90b2NvbDogc3RyaW5nO1xuICBzdGF0dXM6IHN0cmluZztcbiAgYWdlbnRMYWJlbD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZ2VudCB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGlzT25saW5lOiBib29sZWFuO1xuICBsYXN0U2VlbkF0OiBzdHJpbmc7XG4gIGNhcGFiaWxpdGllczogc3RyaW5nW107XG4gIHNlcnZpY2VzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25uZWN0aW9uIHtcbiAgc2VydmljZTogc3RyaW5nO1xuICBob3N0OiBzdHJpbmc7XG4gIHBvcnQ6IG51bWJlcjtcbiAgY29ubmVjdGlvblN0cmluZzogc3RyaW5nO1xuICBlbnZWYXI6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlIHtcbiAgaWQ6IHN0cmluZztcbiAgZnJvbTogeyBpZDogc3RyaW5nOyBuYW1lPzogc3RyaW5nOyBsYWJlbD86IHN0cmluZyB9O1xuICBjaGFubmVsOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgcGF5bG9hZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuICBpc1JlYWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgY3JlYXRlZEJ5OiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuICBleHBpcmVzQXQ6IHN0cmluZztcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLyoqXG4gKiBBZ2VudHMgQVBJIGZvciBkaXNjb3ZlcnkgYW5kIG9yY2hlc3RyYXRpb25cbiAqL1xuZXhwb3J0IGNsYXNzIEFnZW50c0FQSSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2xpZW50OiBQcml2YXRlQ29ubmVjdCkge31cblxuICAvKipcbiAgICogTGlzdCBhbGwgYWdlbnRzIGluIHRoZSB3b3Jrc3BhY2VcbiAgICovXG4gIGFzeW5jIGxpc3Qob3B0aW9ucz86IHsgb25saW5lT25seT86IGJvb2xlYW4gfSk6IFByb21pc2U8QWdlbnRbXT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jbGllbnQuZmV0Y2goJy92MS9hZ2VudHMvb3JjaGVzdHJhdGlvbicpO1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgbGV0IGFnZW50cyA9IGRhdGEuYWdlbnRzIHx8IFtdO1xuICAgIFxuICAgIGlmIChvcHRpb25zPy5vbmxpbmVPbmx5KSB7XG4gICAgICBhZ2VudHMgPSBhZ2VudHMuZmlsdGVyKChhOiBhbnkpID0+IGEuaXNPbmxpbmUpO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gYWdlbnRzLm1hcCgoYTogYW55KSA9PiAoe1xuICAgICAgaWQ6IGEuaWQsXG4gICAgICBuYW1lOiBhLm5hbWUsXG4gICAgICBsYWJlbDogYS5sYWJlbCxcbiAgICAgIGlzT25saW5lOiBhLmlzT25saW5lLFxuICAgICAgbGFzdFNlZW5BdDogYS5sYXN0U2VlbkF0LFxuICAgICAgY2FwYWJpbGl0aWVzOiBhLmNhcGFiaWxpdGllcz8ubWFwKChjOiBhbnkpID0+IGMubmFtZSkgfHwgW10sXG4gICAgICBzZXJ2aWNlczogYS5zZXJ2aWNlcz8ubWFwKChzOiBhbnkpID0+IHMubmFtZSkgfHwgW10sXG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgYWdlbnRzIGJ5IGNhcGFiaWxpdHlcbiAgICovXG4gIGFzeW5jIGZpbmRCeUNhcGFiaWxpdHkoY2FwYWJpbGl0eTogc3RyaW5nKTogUHJvbWlzZTxBZ2VudFtdPiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNsaWVudC5mZXRjaChgL3YxL2FnZW50cy9ieS1jYXBhYmlsaXR5LyR7ZW5jb2RlVVJJQ29tcG9uZW50KGNhcGFiaWxpdHkpfWApO1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgcmV0dXJuIGRhdGEuYWdlbnRzIHx8IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGNhcGFiaWxpdGllcyBmb3IgdGhpcyBhZ2VudFxuICAgKi9cbiAgYXN5bmMgcmVnaXN0ZXJDYXBhYmlsaXRpZXMoY2FwYWJpbGl0aWVzOiBBcnJheTx7IG5hbWU6IHN0cmluZzsgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9Pik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuY2xpZW50LmZldGNoKGAvdjEvYWdlbnRzLyR7dGhpcy5jbGllbnQuYWdlbnRJZH0vY2FwYWJpbGl0aWVzYCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGNhcGFiaWxpdGllcyB9KSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZW5kIGEgbWVzc2FnZSB0byBhbm90aGVyIGFnZW50XG4gICAqL1xuICBhc3luYyBzZW5kTWVzc2FnZShcbiAgICB0b0FnZW50SWQ6IHN0cmluZyxcbiAgICBwYXlsb2FkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICBvcHRpb25zPzogeyBjaGFubmVsPzogc3RyaW5nOyB0eXBlPzogJ3JlcXVlc3QnIHwgJ3Jlc3BvbnNlJyB8ICdldmVudCcgfVxuICApOiBQcm9taXNlPHsgbWVzc2FnZUlkOiBzdHJpbmcgfT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jbGllbnQuZmV0Y2goYC92MS9hZ2VudHMvJHt0aGlzLmNsaWVudC5hZ2VudElkfS9tZXNzYWdlcy9zZW5kYCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHRvQWdlbnRJZCwgcGF5bG9hZCwgLi4ub3B0aW9ucyB9KSxcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzcG9uc2UuanNvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJyb2FkY2FzdCBhIG1lc3NhZ2UgdG8gYWxsIG9ubGluZSBhZ2VudHNcbiAgICovXG4gIGFzeW5jIGJyb2FkY2FzdChcbiAgICBwYXlsb2FkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICBvcHRpb25zPzogeyBjaGFubmVsPzogc3RyaW5nIH1cbiAgKTogUHJvbWlzZTx7IHNlbnQ6IG51bWJlciB9PiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNsaWVudC5mZXRjaChgL3YxL2FnZW50cy8ke3RoaXMuY2xpZW50LmFnZW50SWR9L21lc3NhZ2VzL2Jyb2FkY2FzdGAsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBwYXlsb2FkLCAuLi5vcHRpb25zIH0pLFxuICAgIH0pO1xuICAgIHJldHVybiByZXNwb25zZS5qc29uKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IG1lc3NhZ2VzIGZvciB0aGlzIGFnZW50XG4gICAqL1xuICBhc3luYyBnZXRNZXNzYWdlcyhvcHRpb25zPzogeyBjaGFubmVsPzogc3RyaW5nOyB1bnJlYWRPbmx5PzogYm9vbGVhbjsgbGltaXQ/OiBudW1iZXIgfSk6IFByb21pc2U8TWVzc2FnZVtdPiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgIGlmIChvcHRpb25zPy5jaGFubmVsKSBwYXJhbXMuc2V0KCdjaGFubmVsJywgb3B0aW9ucy5jaGFubmVsKTtcbiAgICBpZiAob3B0aW9ucz8udW5yZWFkT25seSAhPT0gdW5kZWZpbmVkKSBwYXJhbXMuc2V0KCd1bnJlYWRPbmx5JywgU3RyaW5nKG9wdGlvbnMudW5yZWFkT25seSkpO1xuICAgIGlmIChvcHRpb25zPy5saW1pdCkgcGFyYW1zLnNldCgnbGltaXQnLCBTdHJpbmcob3B0aW9ucy5saW1pdCkpO1xuICAgIFxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jbGllbnQuZmV0Y2goYC92MS9hZ2VudHMvJHt0aGlzLmNsaWVudC5hZ2VudElkfS9tZXNzYWdlcz8ke3BhcmFtc31gKTtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICAgIHJldHVybiBkYXRhLm1lc3NhZ2VzIHx8IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcmsgbWVzc2FnZXMgYXMgcmVhZFxuICAgKi9cbiAgYXN5bmMgbWFya1JlYWQobWVzc2FnZUlkczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmNsaWVudC5mZXRjaChgL3YxL2FnZW50cy8ke3RoaXMuY2xpZW50LmFnZW50SWR9L21lc3NhZ2VzL3JlYWRgLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgbWVzc2FnZUlkcyB9KSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFNlcnZpY2VzIEFQSSBmb3IgY29ubmVjdGluZyB0byBhbmQgbWFuYWdpbmcgc2VydmljZXNcbiAqL1xuZXhwb3J0IGNsYXNzIFNlcnZpY2VzQVBJIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjbGllbnQ6IFByaXZhdGVDb25uZWN0KSB7fVxuXG4gIC8qKlxuICAgKiBMaXN0IGFsbCBzZXJ2aWNlc1xuICAgKi9cbiAgYXN5bmMgbGlzdCgpOiBQcm9taXNlPFNlcnZpY2VbXT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jbGllbnQuZmV0Y2goJy92MS9zZXJ2aWNlcycpO1xuICAgIHJldHVybiByZXNwb25zZS5qc29uKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgc3BlY2lmaWMgc2VydmljZSBieSBuYW1lXG4gICAqL1xuICBhc3luYyBnZXQobmFtZTogc3RyaW5nKTogUHJvbWlzZTxTZXJ2aWNlIHwgbnVsbD4ge1xuICAgIGNvbnN0IHNlcnZpY2VzID0gYXdhaXQgdGhpcy5saXN0KCk7XG4gICAgcmV0dXJuIHNlcnZpY2VzLmZpbmQocyA9PiBzLm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZS50b0xvd2VyQ2FzZSgpKSB8fCBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjb25uZWN0aW9uIGRldGFpbHMgZm9yIGEgc2VydmljZVxuICAgKi9cbiAgYXN5bmMgZ2V0Q29ubmVjdGlvbihzZXJ2aWNlTmFtZTogc3RyaW5nKTogUHJvbWlzZTxDb25uZWN0aW9uPiB7XG4gICAgY29uc3Qgc2VydmljZSA9IGF3YWl0IHRoaXMuZ2V0KHNlcnZpY2VOYW1lKTtcbiAgICBpZiAoIXNlcnZpY2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU2VydmljZSBcIiR7c2VydmljZU5hbWV9XCIgbm90IGZvdW5kYCk7XG4gICAgfVxuXG4gICAgY29uc3QgcG9ydCA9IHNlcnZpY2UudHVubmVsUG9ydCB8fCBzZXJ2aWNlLnRhcmdldFBvcnQ7XG4gICAgY29uc3QgaG9zdCA9ICdsb2NhbGhvc3QnO1xuICAgIFxuICAgIGxldCBjb25uZWN0aW9uU3RyaW5nID0gJyc7XG4gICAgbGV0IGVudlZhciA9ICdTRVJWSUNFX1VSTCc7XG4gICAgXG4gICAgaWYgKHNlcnZpY2UudGFyZ2V0UG9ydCA9PT0gNTQzMiB8fCBzZXJ2aWNlLnByb3RvY29sID09PSAncG9zdGdyZXMnKSB7XG4gICAgICBjb25uZWN0aW9uU3RyaW5nID0gYHBvc3RncmVzOi8vJHtob3N0fToke3BvcnR9L3Bvc3RncmVzYDtcbiAgICAgIGVudlZhciA9ICdEQVRBQkFTRV9VUkwnO1xuICAgIH0gZWxzZSBpZiAoc2VydmljZS50YXJnZXRQb3J0ID09PSAzMzA2IHx8IHNlcnZpY2UucHJvdG9jb2wgPT09ICdteXNxbCcpIHtcbiAgICAgIGNvbm5lY3Rpb25TdHJpbmcgPSBgbXlzcWw6Ly8ke2hvc3R9OiR7cG9ydH1gO1xuICAgICAgZW52VmFyID0gJ0RBVEFCQVNFX1VSTCc7XG4gICAgfSBlbHNlIGlmIChzZXJ2aWNlLnRhcmdldFBvcnQgPT09IDYzNzkgfHwgc2VydmljZS5wcm90b2NvbCA9PT0gJ3JlZGlzJykge1xuICAgICAgY29ubmVjdGlvblN0cmluZyA9IGByZWRpczovLyR7aG9zdH06JHtwb3J0fWA7XG4gICAgICBlbnZWYXIgPSAnUkVESVNfVVJMJztcbiAgICB9IGVsc2UgaWYgKHNlcnZpY2UudGFyZ2V0UG9ydCA9PT0gMjcwMTcgfHwgc2VydmljZS5wcm90b2NvbCA9PT0gJ21vbmdvZGInKSB7XG4gICAgICBjb25uZWN0aW9uU3RyaW5nID0gYG1vbmdvZGI6Ly8ke2hvc3R9OiR7cG9ydH1gO1xuICAgICAgZW52VmFyID0gJ01PTkdPREJfVVJJJztcbiAgICB9IGVsc2UgaWYgKHNlcnZpY2UucHJvdG9jb2wgPT09ICdodHRwJyB8fCBzZXJ2aWNlLnByb3RvY29sID09PSAnaHR0cHMnKSB7XG4gICAgICBjb25uZWN0aW9uU3RyaW5nID0gYGh0dHA6Ly8ke2hvc3R9OiR7cG9ydH1gO1xuICAgICAgZW52VmFyID0gJ0FQSV9VUkwnO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25uZWN0aW9uU3RyaW5nID0gYHRjcDovLyR7aG9zdH06JHtwb3J0fWA7XG4gICAgICBlbnZWYXIgPSBgJHtzZXJ2aWNlTmFtZS50b1VwcGVyQ2FzZSgpLnJlcGxhY2UoLy0vZywgJ18nKX1fVVJMYDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2VydmljZTogc2VydmljZU5hbWUsXG4gICAgICBob3N0LFxuICAgICAgcG9ydCxcbiAgICAgIGNvbm5lY3Rpb25TdHJpbmcsXG4gICAgICBlbnZWYXIsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIFNlc3Npb25zIEFQSSBmb3IgZXBoZW1lcmFsIG9yY2hlc3RyYXRpb24gc2Vzc2lvbnNcbiAqL1xuZXhwb3J0IGNsYXNzIFNlc3Npb25zQVBJIHtcbiAgcHJpdmF0ZSBhY3RpdmVTZXNzaW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBTZXNzaW9uPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2xpZW50OiBQcml2YXRlQ29ubmVjdCkge31cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIG9yY2hlc3RyYXRpb24gc2Vzc2lvblxuICAgKi9cbiAgYXN5bmMgY3JlYXRlKG5hbWU6IHN0cmluZywgb3B0aW9ucz86IHsgdHRsTWludXRlcz86IG51bWJlcjsgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9KTogUHJvbWlzZTxTZXNzaW9uPiB7XG4gICAgY29uc3QgdHRsTWludXRlcyA9IG9wdGlvbnM/LnR0bE1pbnV0ZXMgfHwgNjA7XG4gICAgY29uc3Qgc2Vzc2lvbklkID0gYCR7dGhpcy5jbGllbnQuYWdlbnRJZH0tJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLCA4KX1gO1xuICAgIGNvbnN0IGV4cGlyZXNBdCA9IG5ldyBEYXRlKERhdGUubm93KCkgKyB0dGxNaW51dGVzICogNjAgKiAxMDAwKTtcblxuICAgIGNvbnN0IHNlc3Npb246IFNlc3Npb24gPSB7XG4gICAgICBpZDogc2Vzc2lvbklkLFxuICAgICAgbmFtZSxcbiAgICAgIGNyZWF0ZWRCeTogdGhpcy5jbGllbnQuYWdlbnRJZCEsXG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIGV4cGlyZXNBdDogZXhwaXJlc0F0LnRvSVNPU3RyaW5nKCksXG4gICAgICBtZXRhZGF0YTogb3B0aW9ucz8ubWV0YWRhdGEsXG4gICAgfTtcblxuICAgIHRoaXMuYWN0aXZlU2Vzc2lvbnMuc2V0KHNlc3Npb25JZCwgc2Vzc2lvbik7XG5cbiAgICAvLyBCcm9hZGNhc3Qgc2Vzc2lvbiBjcmVhdGlvblxuICAgIGF3YWl0IHRoaXMuY2xpZW50LmFnZW50cy5icm9hZGNhc3QoXG4gICAgICB7IHR5cGU6ICdzZXNzaW9uOmNyZWF0ZWQnLCBzZXNzaW9uIH0sXG4gICAgICB7IGNoYW5uZWw6ICdvcmNoZXN0cmF0aW9uJyB9XG4gICAgKTtcblxuICAgIHJldHVybiBzZXNzaW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuZCBhbiBvcmNoZXN0cmF0aW9uIHNlc3Npb25cbiAgICovXG4gIGFzeW5jIGVuZChzZXNzaW9uSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuYWN0aXZlU2Vzc2lvbnMuZGVsZXRlKHNlc3Npb25JZCk7XG5cbiAgICAvLyBCcm9hZGNhc3Qgc2Vzc2lvbiBlbmRcbiAgICBhd2FpdCB0aGlzLmNsaWVudC5hZ2VudHMuYnJvYWRjYXN0KFxuICAgICAge1xuICAgICAgICB0eXBlOiAnc2Vzc2lvbjplbmRlZCcsXG4gICAgICAgIHNlc3Npb25JZCxcbiAgICAgICAgZW5kZWRCeTogdGhpcy5jbGllbnQuYWdlbnRJZCxcbiAgICAgICAgZW5kZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgfSxcbiAgICAgIHsgY2hhbm5lbDogJ29yY2hlc3RyYXRpb24nIH1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhY3RpdmUgc2Vzc2lvbnNcbiAgICovXG4gIGdldEFjdGl2ZSgpOiBTZXNzaW9uW10ge1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgYWN0aXZlOiBTZXNzaW9uW10gPSBbXTtcbiAgICBcbiAgICBmb3IgKGNvbnN0IFtpZCwgc2Vzc2lvbl0gb2YgdGhpcy5hY3RpdmVTZXNzaW9ucykge1xuICAgICAgaWYgKG5ldyBEYXRlKHNlc3Npb24uZXhwaXJlc0F0KSA+IG5vdykge1xuICAgICAgICBhY3RpdmUucHVzaChzZXNzaW9uKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYWN0aXZlU2Vzc2lvbnMuZGVsZXRlKGlkKTtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGFjdGl2ZTtcbiAgfVxufVxuXG4vKipcbiAqIE1haW4gUHJpdmF0ZSBDb25uZWN0IFNESyBjbGllbnRcbiAqL1xuZXhwb3J0IGNsYXNzIFByaXZhdGVDb25uZWN0IHtcbiAgcHJpdmF0ZSBjb25maWc6IFJlcXVpcmVkPFByaXZhdGVDb25uZWN0Q29uZmlnPjtcbiAgXG4gIC8qKiBBZ2VudHMgQVBJIGZvciBkaXNjb3ZlcnkgYW5kIG9yY2hlc3RyYXRpb24gKi9cbiAgcHVibGljIGFnZW50czogQWdlbnRzQVBJO1xuICBcbiAgLyoqIFNlcnZpY2VzIEFQSSBmb3IgY29ubmVjdGluZyB0byBzZXJ2aWNlcyAqL1xuICBwdWJsaWMgc2VydmljZXM6IFNlcnZpY2VzQVBJO1xuICBcbiAgLyoqIFNlc3Npb25zIEFQSSBmb3IgZXBoZW1lcmFsIG9yY2hlc3RyYXRpb24gKi9cbiAgcHVibGljIHNlc3Npb25zOiBTZXNzaW9uc0FQSTtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFByaXZhdGVDb25uZWN0Q29uZmlnKSB7XG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICBhcGlLZXk6IGNvbmZpZy5hcGlLZXksXG4gICAgICBodWJVcmw6IGNvbmZpZy5odWJVcmwgfHwgJ2h0dHBzOi8vYXBpLnByaXZhdGVjb25uZWN0LmNvJyxcbiAgICAgIGFnZW50SWQ6IGNvbmZpZy5hZ2VudElkIHx8IHRoaXMuZGV0ZWN0QWdlbnRJZCgpLFxuICAgIH07XG5cbiAgICB0aGlzLmFnZW50cyA9IG5ldyBBZ2VudHNBUEkodGhpcyk7XG4gICAgdGhpcy5zZXJ2aWNlcyA9IG5ldyBTZXJ2aWNlc0FQSSh0aGlzKTtcbiAgICB0aGlzLnNlc3Npb25zID0gbmV3IFNlc3Npb25zQVBJKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgYWdlbnQgSURcbiAgICovXG4gIGdldCBhZ2VudElkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmFnZW50SWQ7XG4gIH1cblxuICAvKipcbiAgICogQ29ubmVjdCB0byBhIHNlcnZpY2UgYW5kIGdldCBjb25uZWN0aW9uIGRldGFpbHNcbiAgICovXG4gIGFzeW5jIGNvbm5lY3Qoc2VydmljZU5hbWU6IHN0cmluZyk6IFByb21pc2U8Q29ubmVjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLnNlcnZpY2VzLmdldENvbm5lY3Rpb24oc2VydmljZU5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEludGVybmFsIGZldGNoIGhlbHBlclxuICAgKi9cbiAgYXN5bmMgZmV0Y2gocGF0aDogc3RyaW5nLCBvcHRpb25zPzogUmVxdWVzdEluaXQpOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5jb25maWcuaHViVXJsfSR7cGF0aH1gO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAneC1hcGkta2V5JzogdGhpcy5jb25maWcuYXBpS2V5LFxuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAuLi5vcHRpb25zPy5oZWFkZXJzLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIGNvbnN0IGVycm9yID0gYXdhaXQgcmVzcG9uc2UuanNvbigpLmNhdGNoKCgpID0+ICh7IG1lc3NhZ2U6ICdVbmtub3duIGVycm9yJyB9KSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSB8fCBgUmVxdWVzdCBmYWlsZWQ6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICAgIH1cblxuICAgIHJldHVybiByZXNwb25zZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcnkgdG8gZGV0ZWN0IGFnZW50IElEIGZyb20gbG9jYWwgY29uZmlnXG4gICAqL1xuICBwcml2YXRlIGRldGVjdEFnZW50SWQoKTogc3RyaW5nIHtcbiAgICAvLyBJbiBhIHJlYWwgaW1wbGVtZW50YXRpb24sIHRoaXMgd291bGQgcmVhZCBmcm9tIH4vLmNvbm5lY3QvY29uZmlnLmpzb25cbiAgICAvLyBGb3Igbm93LCBnZW5lcmF0ZSBhIGRlZmF1bHQgSURcbiAgICByZXR1cm4gYHNkay0ke0RhdGUubm93KCl9YDtcbiAgfVxufVxuXG4vLyBEZWZhdWx0IGV4cG9ydFxuZXhwb3J0IGRlZmF1bHQgUHJpdmF0ZUNvbm5lY3Q7XG5cbi8vIENvbnZlbmllbmNlIGZ1bmN0aW9uXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29ubmVjdChzZXJ2aWNlTmFtZTogc3RyaW5nLCBjb25maWc/OiBQcml2YXRlQ29ubmVjdENvbmZpZyk6IFByb21pc2U8Q29ubmVjdGlvbj4ge1xuICBjb25zdCBhcGlLZXkgPSBjb25maWc/LmFwaUtleSB8fCBwcm9jZXNzLmVudi5QUklWQVRFQ09OTkVDVF9BUElfS0VZO1xuICBpZiAoIWFwaUtleSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQVBJIGtleSByZXF1aXJlZC4gU2V0IFBSSVZBVEVDT05ORUNUX0FQSV9LRVkgb3IgcGFzcyBjb25maWcuYXBpS2V5Jyk7XG4gIH1cbiAgXG4gIGNvbnN0IGNsaWVudCA9IG5ldyBQcml2YXRlQ29ubmVjdCh7IC4uLmNvbmZpZywgYXBpS2V5IH0pO1xuICByZXR1cm4gY2xpZW50LmNvbm5lY3Qoc2VydmljZU5hbWUpO1xufVxuXG4iXX0=
327
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7OztBQWlaSCwwQkFRQztBQTVZRCxvQ0FBb0M7QUFDcEMsU0FBUyxhQUFhLENBQUMsTUFBYztJQUNuQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQzFCLEVBQUUsRUFBRSxPQUFPLE9BQU8sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDakUsSUFBSSxFQUFFLE9BQU8sT0FBTyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUMvRixPQUFPLEVBQUUsS0FBSztRQUNkLE1BQU0sRUFBRSxLQUFLO0tBQ2QsQ0FBQyxDQUFDO0lBRUgsS0FBSyxDQUFDLEdBQUcsTUFBTSxvQkFBb0IsRUFBRTtRQUNuQyxNQUFNLEVBQUUsTUFBTTtRQUNkLE9BQU8sRUFBRSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRTtRQUMvQyxJQUFJLEVBQUUsSUFBSTtLQUNYLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyx5QkFBeUI7QUFDL0MsQ0FBQztBQWtERDs7R0FFRztBQUNILE1BQWEsU0FBUztJQUNwQixZQUFvQixNQUFzQjtRQUF0QixXQUFNLEdBQU4sTUFBTSxDQUFnQjtJQUFHLENBQUM7SUFFOUM7O09BRUc7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQWtDO1FBQzNDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUNyRSxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUUvQixJQUFJLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQztZQUN4QixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDN0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFO1lBQ1IsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO1lBQ1osS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO1lBQ2QsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRO1lBQ3BCLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVTtZQUN4QixZQUFZLEVBQUUsQ0FBQyxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQzNELFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7U0FDcEQsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsVUFBa0I7UUFDdkMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsa0JBQWtCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZHLE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLG9CQUFvQixDQUFDLFlBQXlFO1FBQ2xHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sZUFBZSxFQUFFO1lBQ3hFLE1BQU0sRUFBRSxNQUFNO1lBQ2QsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQztTQUN2QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsV0FBVyxDQUNmLFNBQWlCLEVBQ2pCLE9BQWdDLEVBQ2hDLE9BQXVFO1FBRXZFLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sZ0JBQWdCLEVBQUU7WUFDMUYsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztTQUN6RCxDQUFDLENBQUM7UUFDSCxPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsU0FBUyxDQUNiLE9BQWdDLEVBQ2hDLE9BQThCO1FBRTlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8scUJBQXFCLEVBQUU7WUFDL0YsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1NBQzlDLENBQUMsQ0FBQztRQUNILE9BQU8sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBb0U7UUFDcEYsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUNyQyxJQUFJLE9BQU8sRUFBRSxPQUFPO1lBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdELElBQUksT0FBTyxFQUFFLFVBQVUsS0FBSyxTQUFTO1lBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQzVGLElBQUksT0FBTyxFQUFFLEtBQUs7WUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFL0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxhQUFhLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDakcsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkMsT0FBTyxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQW9CO1FBQ2pDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sZ0JBQWdCLEVBQUU7WUFDekUsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDO1NBQ3JDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQWpHRCw4QkFpR0M7QUFFRDs7R0FFRztBQUNILE1BQWEsV0FBVztJQUN0QixZQUFvQixNQUFzQjtRQUF0QixXQUFNLEdBQU4sTUFBTSxDQUFnQjtJQUFHLENBQUM7SUFFOUM7O09BRUc7SUFDSCxLQUFLLENBQUMsSUFBSTtRQUNSLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDekQsT0FBTyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFZO1FBQ3BCLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25DLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDO0lBQ2pGLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxhQUFhLENBQUMsV0FBbUI7UUFDckMsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxXQUFXLGFBQWEsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDdEQsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDO1FBRXpCLElBQUksZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQzFCLElBQUksTUFBTSxHQUFHLGFBQWEsQ0FBQztRQUUzQixJQUFJLE9BQU8sQ0FBQyxVQUFVLEtBQUssSUFBSSxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDbkUsZ0JBQWdCLEdBQUcsY0FBYyxJQUFJLElBQUksSUFBSSxXQUFXLENBQUM7WUFDekQsTUFBTSxHQUFHLGNBQWMsQ0FBQztRQUMxQixDQUFDO2FBQU0sSUFBSSxPQUFPLENBQUMsVUFBVSxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3ZFLGdCQUFnQixHQUFHLFdBQVcsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzdDLE1BQU0sR0FBRyxjQUFjLENBQUM7UUFDMUIsQ0FBQzthQUFNLElBQUksT0FBTyxDQUFDLFVBQVUsS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUN2RSxnQkFBZ0IsR0FBRyxXQUFXLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUM3QyxNQUFNLEdBQUcsV0FBVyxDQUFDO1FBQ3ZCLENBQUM7YUFBTSxJQUFJLE9BQU8sQ0FBQyxVQUFVLEtBQUssS0FBSyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDMUUsZ0JBQWdCLEdBQUcsYUFBYSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7WUFDL0MsTUFBTSxHQUFHLGFBQWEsQ0FBQztRQUN6QixDQUFDO2FBQU0sSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLE1BQU0sSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3ZFLGdCQUFnQixHQUFHLFVBQVUsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzVDLE1BQU0sR0FBRyxTQUFTLENBQUM7UUFDckIsQ0FBQzthQUFNLENBQUM7WUFDTixnQkFBZ0IsR0FBRyxTQUFTLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMzQyxNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDO1FBQ2pFLENBQUM7UUFFRCxPQUFPO1lBQ0wsT0FBTyxFQUFFLFdBQVc7WUFDcEIsSUFBSTtZQUNKLElBQUk7WUFDSixnQkFBZ0I7WUFDaEIsTUFBTTtTQUNQLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUE5REQsa0NBOERDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLFdBQVc7SUFHdEIsWUFBb0IsTUFBc0I7UUFBdEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFGbEMsbUJBQWMsR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztJQUVQLENBQUM7SUFFOUM7O09BRUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLElBQVksRUFBRSxPQUFxRTtRQUM5RixNQUFNLFVBQVUsR0FBRyxPQUFPLEVBQUUsVUFBVSxJQUFJLEVBQUUsQ0FBQztRQUM3QyxNQUFNLFNBQVMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN2RyxNQUFNLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsVUFBVSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUVoRSxNQUFNLE9BQU8sR0FBWTtZQUN2QixFQUFFLEVBQUUsU0FBUztZQUNiLElBQUk7WUFDSixTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFRO1lBQy9CLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtZQUNuQyxTQUFTLEVBQUUsU0FBUyxDQUFDLFdBQVcsRUFBRTtZQUNsQyxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVE7U0FDNUIsQ0FBQztRQUVGLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUU1Qyw2QkFBNkI7UUFDN0IsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQ2hDLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxFQUNwQyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsQ0FDN0IsQ0FBQztRQUVGLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBaUI7UUFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFdEMsd0JBQXdCO1FBQ3hCLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUNoQztZQUNFLElBQUksRUFBRSxlQUFlO1lBQ3JCLFNBQVM7WUFDVCxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO1lBQzVCLE9BQU8sRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtTQUNsQyxFQUNELEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxDQUM3QixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsU0FBUztRQUNQLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsTUFBTSxNQUFNLEdBQWMsRUFBRSxDQUFDO1FBRTdCLEtBQUssTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDaEQsSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7Z0JBQ3RDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdkIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2pDLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGO0FBcEVELGtDQW9FQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxjQUFjO0lBWXpCLFlBQVksTUFBNEI7UUFDdEMsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtZQUNyQixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sSUFBSSwrQkFBK0I7WUFDeEQsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtTQUNoRCxDQUFDO1FBRUYsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdEMsaUNBQWlDO1FBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDNUIsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFtQjtRQUMvQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBWSxFQUFFLE9BQXFCO1FBQzdDLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDM0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ2hDLEdBQUcsT0FBTztZQUNWLE9BQU8sRUFBRTtnQkFDUCxXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO2dCQUMvQixjQUFjLEVBQUUsa0JBQWtCO2dCQUNsQyxHQUFHLE9BQU8sRUFBRSxPQUFPO2FBQ3BCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNqQixNQUFNLEtBQUssR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEYsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLG1CQUFtQixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssYUFBYTtRQUNuQix3RUFBd0U7UUFDeEUsaUNBQWlDO1FBQ2pDLE9BQU8sT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUM3QixDQUFDO0NBQ0Y7QUF6RUQsd0NBeUVDO0FBRUQsaUJBQWlCO0FBQ2pCLGtCQUFlLGNBQWMsQ0FBQztBQUU5Qix1QkFBdUI7QUFDaEIsS0FBSyxVQUFVLE9BQU8sQ0FBQyxXQUFtQixFQUFFLE1BQTZCO0lBQzlFLE1BQU0sTUFBTSxHQUFHLE1BQU0sRUFBRSxNQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQztJQUNwRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWixNQUFNLElBQUksS0FBSyxDQUFDLG9FQUFvRSxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLElBQUksY0FBYyxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN6RCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDckMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUHJpdmF0ZSBDb25uZWN0IFNES1xuICogXG4gKiBQcm9ncmFtbWF0aWMgYWNjZXNzIHRvIFByaXZhdGUgQ29ubmVjdCBzZXJ2aWNlcyBhbmQgYWdlbnQgb3JjaGVzdHJhdGlvbi5cbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IFByaXZhdGVDb25uZWN0IH0gZnJvbSAnQHByaXZhdGVjb25uZWN0L3Nkayc7XG4gKiBcbiAqIGNvbnN0IHBjID0gbmV3IFByaXZhdGVDb25uZWN0KHsgYXBpS2V5OiAneW91ci1hcGkta2V5JyB9KTtcbiAqIFxuICogLy8gQ29ubmVjdCB0byBhIHNlcnZpY2VcbiAqIGNvbnN0IGRiID0gYXdhaXQgcGMuY29ubmVjdCgncG9zdGdyZXMtcHJvZCcpO1xuICogY29uc29sZS5sb2coZGIuY29ubmVjdGlvblN0cmluZyk7IC8vIHBvc3RncmVzOi8vbG9jYWxob3N0OjU0MzIvLi4uXG4gKiBcbiAqIC8vIExpc3QgYWxsIGFnZW50c1xuICogY29uc3QgYWdlbnRzID0gYXdhaXQgcGMuYWdlbnRzLmxpc3QoKTtcbiAqIFxuICogLy8gU2VuZCBtZXNzYWdlIHRvIGFub3RoZXIgYWdlbnRcbiAqIGF3YWl0IHBjLmFnZW50cy5zZW5kTWVzc2FnZSh0YXJnZXRBZ2VudElkLCB7IGFjdGlvbjogJ2RlcGxveScgfSk7XG4gKiBgYGBcbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIFByaXZhdGVDb25uZWN0Q29uZmlnIHtcbiAgLyoqIEFQSSBrZXkgZm9yIGF1dGhlbnRpY2F0aW9uICovXG4gIGFwaUtleTogc3RyaW5nO1xuICAvKiogSHViIFVSTCAoZGVmYXVsdDogaHR0cHM6Ly9hcGkucHJpdmF0ZWNvbm5lY3QuY28pICovXG4gIGh1YlVybD86IHN0cmluZztcbiAgLyoqIEFnZW50IElEIChhdXRvLWRldGVjdGVkIGZyb20gY29uZmlnIGlmIG5vdCBwcm92aWRlZCkgKi9cbiAgYWdlbnRJZD86IHN0cmluZztcbiAgLyoqIERpc2FibGUgdXNhZ2UgdHJhY2tpbmcgKGRlZmF1bHQ6IGZhbHNlKSAqL1xuICBkaXNhYmxlVHJhY2tpbmc/OiBib29sZWFuO1xufVxuXG4vLyBUcmFjayBTREsgdXNhZ2UgKGZpcmUgYW5kIGZvcmdldClcbmZ1bmN0aW9uIHRyYWNrU2RrVXNhZ2UoaHViVXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgZGF0YSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICBvczogdHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnID8gcHJvY2Vzcy5wbGF0Zm9ybSA6ICdicm93c2VyJyxcbiAgICBhcmNoOiB0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgPyAocHJvY2Vzcy5hcmNoID09PSAnYXJtNjQnID8gJ2FybTY0JyA6ICd4NjQnKSA6ICd1bmtub3duJyxcbiAgICB2ZXJzaW9uOiAnc2RrJyxcbiAgICBzb3VyY2U6ICdzZGsnLFxuICB9KTtcbiAgXG4gIGZldGNoKGAke2h1YlVybH0vdjEvZXZlbnRzL2luc3RhbGxgLCB7XG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gICAgYm9keTogZGF0YSxcbiAgfSkuY2F0Y2goKCkgPT4ge30pOyAvLyBTaWxlbnRseSBpZ25vcmUgZXJyb3JzXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZSB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgdGFyZ2V0SG9zdDogc3RyaW5nO1xuICB0YXJnZXRQb3J0OiBudW1iZXI7XG4gIHR1bm5lbFBvcnQ/OiBudW1iZXI7XG4gIHByb3RvY29sOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICBhZ2VudExhYmVsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFnZW50IHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgaXNPbmxpbmU6IGJvb2xlYW47XG4gIGxhc3RTZWVuQXQ6IHN0cmluZztcbiAgY2FwYWJpbGl0aWVzOiBzdHJpbmdbXTtcbiAgc2VydmljZXM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbm5lY3Rpb24ge1xuICBzZXJ2aWNlOiBzdHJpbmc7XG4gIGhvc3Q6IHN0cmluZztcbiAgcG9ydDogbnVtYmVyO1xuICBjb25uZWN0aW9uU3RyaW5nOiBzdHJpbmc7XG4gIGVudlZhcjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2Uge1xuICBpZDogc3RyaW5nO1xuICBmcm9tOiB7IGlkOiBzdHJpbmc7IG5hbWU/OiBzdHJpbmc7IGxhYmVsPzogc3RyaW5nIH07XG4gIGNoYW5uZWw6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBwYXlsb2FkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIGlzUmVhZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXNzaW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBjcmVhdGVkQnk6IHN0cmluZztcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIGV4cGlyZXNBdDogc3RyaW5nO1xuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKipcbiAqIEFnZW50cyBBUEkgZm9yIGRpc2NvdmVyeSBhbmQgb3JjaGVzdHJhdGlvblxuICovXG5leHBvcnQgY2xhc3MgQWdlbnRzQVBJIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjbGllbnQ6IFByaXZhdGVDb25uZWN0KSB7fVxuXG4gIC8qKlxuICAgKiBMaXN0IGFsbCBhZ2VudHMgaW4gdGhlIHdvcmtzcGFjZVxuICAgKi9cbiAgYXN5bmMgbGlzdChvcHRpb25zPzogeyBvbmxpbmVPbmx5PzogYm9vbGVhbiB9KTogUHJvbWlzZTxBZ2VudFtdPiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNsaWVudC5mZXRjaCgnL3YxL2FnZW50cy9vcmNoZXN0cmF0aW9uJyk7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICBsZXQgYWdlbnRzID0gZGF0YS5hZ2VudHMgfHwgW107XG4gICAgXG4gICAgaWYgKG9wdGlvbnM/Lm9ubGluZU9ubHkpIHtcbiAgICAgIGFnZW50cyA9IGFnZW50cy5maWx0ZXIoKGE6IGFueSkgPT4gYS5pc09ubGluZSk7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBhZ2VudHMubWFwKChhOiBhbnkpID0+ICh7XG4gICAgICBpZDogYS5pZCxcbiAgICAgIG5hbWU6IGEubmFtZSxcbiAgICAgIGxhYmVsOiBhLmxhYmVsLFxuICAgICAgaXNPbmxpbmU6IGEuaXNPbmxpbmUsXG4gICAgICBsYXN0U2VlbkF0OiBhLmxhc3RTZWVuQXQsXG4gICAgICBjYXBhYmlsaXRpZXM6IGEuY2FwYWJpbGl0aWVzPy5tYXAoKGM6IGFueSkgPT4gYy5uYW1lKSB8fCBbXSxcbiAgICAgIHNlcnZpY2VzOiBhLnNlcnZpY2VzPy5tYXAoKHM6IGFueSkgPT4gcy5uYW1lKSB8fCBbXSxcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogRmluZCBhZ2VudHMgYnkgY2FwYWJpbGl0eVxuICAgKi9cbiAgYXN5bmMgZmluZEJ5Q2FwYWJpbGl0eShjYXBhYmlsaXR5OiBzdHJpbmcpOiBQcm9taXNlPEFnZW50W10+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuY2xpZW50LmZldGNoKGAvdjEvYWdlbnRzL2J5LWNhcGFiaWxpdHkvJHtlbmNvZGVVUklDb21wb25lbnQoY2FwYWJpbGl0eSl9YCk7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICByZXR1cm4gZGF0YS5hZ2VudHMgfHwgW107XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgY2FwYWJpbGl0aWVzIGZvciB0aGlzIGFnZW50XG4gICAqL1xuICBhc3luYyByZWdpc3RlckNhcGFiaWxpdGllcyhjYXBhYmlsaXRpZXM6IEFycmF5PHsgbmFtZTogc3RyaW5nOyBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH0+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5jbGllbnQuZmV0Y2goYC92MS9hZ2VudHMvJHt0aGlzLmNsaWVudC5hZ2VudElkfS9jYXBhYmlsaXRpZXNgLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgY2FwYWJpbGl0aWVzIH0pLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbmQgYSBtZXNzYWdlIHRvIGFub3RoZXIgYWdlbnRcbiAgICovXG4gIGFzeW5jIHNlbmRNZXNzYWdlKFxuICAgIHRvQWdlbnRJZDogc3RyaW5nLFxuICAgIHBheWxvYWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIG9wdGlvbnM/OiB7IGNoYW5uZWw/OiBzdHJpbmc7IHR5cGU/OiAncmVxdWVzdCcgfCAncmVzcG9uc2UnIHwgJ2V2ZW50JyB9XG4gICk6IFByb21pc2U8eyBtZXNzYWdlSWQ6IHN0cmluZyB9PiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNsaWVudC5mZXRjaChgL3YxL2FnZW50cy8ke3RoaXMuY2xpZW50LmFnZW50SWR9L21lc3NhZ2VzL3NlbmRgLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgdG9BZ2VudElkLCBwYXlsb2FkLCAuLi5vcHRpb25zIH0pLFxuICAgIH0pO1xuICAgIHJldHVybiByZXNwb25zZS5qc29uKCk7XG4gIH1cblxuICAvKipcbiAgICogQnJvYWRjYXN0IGEgbWVzc2FnZSB0byBhbGwgb25saW5lIGFnZW50c1xuICAgKi9cbiAgYXN5bmMgYnJvYWRjYXN0KFxuICAgIHBheWxvYWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIG9wdGlvbnM/OiB7IGNoYW5uZWw/OiBzdHJpbmcgfVxuICApOiBQcm9taXNlPHsgc2VudDogbnVtYmVyIH0+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuY2xpZW50LmZldGNoKGAvdjEvYWdlbnRzLyR7dGhpcy5jbGllbnQuYWdlbnRJZH0vbWVzc2FnZXMvYnJvYWRjYXN0YCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHBheWxvYWQsIC4uLm9wdGlvbnMgfSksXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbWVzc2FnZXMgZm9yIHRoaXMgYWdlbnRcbiAgICovXG4gIGFzeW5jIGdldE1lc3NhZ2VzKG9wdGlvbnM/OiB7IGNoYW5uZWw/OiBzdHJpbmc7IHVucmVhZE9ubHk/OiBib29sZWFuOyBsaW1pdD86IG51bWJlciB9KTogUHJvbWlzZTxNZXNzYWdlW10+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgaWYgKG9wdGlvbnM/LmNoYW5uZWwpIHBhcmFtcy5zZXQoJ2NoYW5uZWwnLCBvcHRpb25zLmNoYW5uZWwpO1xuICAgIGlmIChvcHRpb25zPy51bnJlYWRPbmx5ICE9PSB1bmRlZmluZWQpIHBhcmFtcy5zZXQoJ3VucmVhZE9ubHknLCBTdHJpbmcob3B0aW9ucy51bnJlYWRPbmx5KSk7XG4gICAgaWYgKG9wdGlvbnM/LmxpbWl0KSBwYXJhbXMuc2V0KCdsaW1pdCcsIFN0cmluZyhvcHRpb25zLmxpbWl0KSk7XG4gICAgXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNsaWVudC5mZXRjaChgL3YxL2FnZW50cy8ke3RoaXMuY2xpZW50LmFnZW50SWR9L21lc3NhZ2VzPyR7cGFyYW1zfWApO1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgcmV0dXJuIGRhdGEubWVzc2FnZXMgfHwgW107XG4gIH1cblxuICAvKipcbiAgICogTWFyayBtZXNzYWdlcyBhcyByZWFkXG4gICAqL1xuICBhc3luYyBtYXJrUmVhZChtZXNzYWdlSWRzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuY2xpZW50LmZldGNoKGAvdjEvYWdlbnRzLyR7dGhpcy5jbGllbnQuYWdlbnRJZH0vbWVzc2FnZXMvcmVhZGAsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBtZXNzYWdlSWRzIH0pLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogU2VydmljZXMgQVBJIGZvciBjb25uZWN0aW5nIHRvIGFuZCBtYW5hZ2luZyBzZXJ2aWNlc1xuICovXG5leHBvcnQgY2xhc3MgU2VydmljZXNBUEkge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNsaWVudDogUHJpdmF0ZUNvbm5lY3QpIHt9XG5cbiAgLyoqXG4gICAqIExpc3QgYWxsIHNlcnZpY2VzXG4gICAqL1xuICBhc3luYyBsaXN0KCk6IFByb21pc2U8U2VydmljZVtdPiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNsaWVudC5mZXRjaCgnL3YxL3NlcnZpY2VzJyk7XG4gICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzcGVjaWZpYyBzZXJ2aWNlIGJ5IG5hbWVcbiAgICovXG4gIGFzeW5jIGdldChuYW1lOiBzdHJpbmcpOiBQcm9taXNlPFNlcnZpY2UgfCBudWxsPiB7XG4gICAgY29uc3Qgc2VydmljZXMgPSBhd2FpdCB0aGlzLmxpc3QoKTtcbiAgICByZXR1cm4gc2VydmljZXMuZmluZChzID0+IHMubmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lLnRvTG93ZXJDYXNlKCkpIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNvbm5lY3Rpb24gZGV0YWlscyBmb3IgYSBzZXJ2aWNlXG4gICAqL1xuICBhc3luYyBnZXRDb25uZWN0aW9uKHNlcnZpY2VOYW1lOiBzdHJpbmcpOiBQcm9taXNlPENvbm5lY3Rpb24+IHtcbiAgICBjb25zdCBzZXJ2aWNlID0gYXdhaXQgdGhpcy5nZXQoc2VydmljZU5hbWUpO1xuICAgIGlmICghc2VydmljZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZXJ2aWNlIFwiJHtzZXJ2aWNlTmFtZX1cIiBub3QgZm91bmRgKTtcbiAgICB9XG5cbiAgICBjb25zdCBwb3J0ID0gc2VydmljZS50dW5uZWxQb3J0IHx8IHNlcnZpY2UudGFyZ2V0UG9ydDtcbiAgICBjb25zdCBob3N0ID0gJ2xvY2FsaG9zdCc7XG4gICAgXG4gICAgbGV0IGNvbm5lY3Rpb25TdHJpbmcgPSAnJztcbiAgICBsZXQgZW52VmFyID0gJ1NFUlZJQ0VfVVJMJztcbiAgICBcbiAgICBpZiAoc2VydmljZS50YXJnZXRQb3J0ID09PSA1NDMyIHx8IHNlcnZpY2UucHJvdG9jb2wgPT09ICdwb3N0Z3JlcycpIHtcbiAgICAgIGNvbm5lY3Rpb25TdHJpbmcgPSBgcG9zdGdyZXM6Ly8ke2hvc3R9OiR7cG9ydH0vcG9zdGdyZXNgO1xuICAgICAgZW52VmFyID0gJ0RBVEFCQVNFX1VSTCc7XG4gICAgfSBlbHNlIGlmIChzZXJ2aWNlLnRhcmdldFBvcnQgPT09IDMzMDYgfHwgc2VydmljZS5wcm90b2NvbCA9PT0gJ215c3FsJykge1xuICAgICAgY29ubmVjdGlvblN0cmluZyA9IGBteXNxbDovLyR7aG9zdH06JHtwb3J0fWA7XG4gICAgICBlbnZWYXIgPSAnREFUQUJBU0VfVVJMJztcbiAgICB9IGVsc2UgaWYgKHNlcnZpY2UudGFyZ2V0UG9ydCA9PT0gNjM3OSB8fCBzZXJ2aWNlLnByb3RvY29sID09PSAncmVkaXMnKSB7XG4gICAgICBjb25uZWN0aW9uU3RyaW5nID0gYHJlZGlzOi8vJHtob3N0fToke3BvcnR9YDtcbiAgICAgIGVudlZhciA9ICdSRURJU19VUkwnO1xuICAgIH0gZWxzZSBpZiAoc2VydmljZS50YXJnZXRQb3J0ID09PSAyNzAxNyB8fCBzZXJ2aWNlLnByb3RvY29sID09PSAnbW9uZ29kYicpIHtcbiAgICAgIGNvbm5lY3Rpb25TdHJpbmcgPSBgbW9uZ29kYjovLyR7aG9zdH06JHtwb3J0fWA7XG4gICAgICBlbnZWYXIgPSAnTU9OR09EQl9VUkknO1xuICAgIH0gZWxzZSBpZiAoc2VydmljZS5wcm90b2NvbCA9PT0gJ2h0dHAnIHx8IHNlcnZpY2UucHJvdG9jb2wgPT09ICdodHRwcycpIHtcbiAgICAgIGNvbm5lY3Rpb25TdHJpbmcgPSBgaHR0cDovLyR7aG9zdH06JHtwb3J0fWA7XG4gICAgICBlbnZWYXIgPSAnQVBJX1VSTCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbm5lY3Rpb25TdHJpbmcgPSBgdGNwOi8vJHtob3N0fToke3BvcnR9YDtcbiAgICAgIGVudlZhciA9IGAke3NlcnZpY2VOYW1lLnRvVXBwZXJDYXNlKCkucmVwbGFjZSgvLS9nLCAnXycpfV9VUkxgO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzZXJ2aWNlOiBzZXJ2aWNlTmFtZSxcbiAgICAgIGhvc3QsXG4gICAgICBwb3J0LFxuICAgICAgY29ubmVjdGlvblN0cmluZyxcbiAgICAgIGVudlZhcixcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogU2Vzc2lvbnMgQVBJIGZvciBlcGhlbWVyYWwgb3JjaGVzdHJhdGlvbiBzZXNzaW9uc1xuICovXG5leHBvcnQgY2xhc3MgU2Vzc2lvbnNBUEkge1xuICBwcml2YXRlIGFjdGl2ZVNlc3Npb25zID0gbmV3IE1hcDxzdHJpbmcsIFNlc3Npb24+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjbGllbnQ6IFByaXZhdGVDb25uZWN0KSB7fVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gb3JjaGVzdHJhdGlvbiBzZXNzaW9uXG4gICAqL1xuICBhc3luYyBjcmVhdGUobmFtZTogc3RyaW5nLCBvcHRpb25zPzogeyB0dGxNaW51dGVzPzogbnVtYmVyOyBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH0pOiBQcm9taXNlPFNlc3Npb24+IHtcbiAgICBjb25zdCB0dGxNaW51dGVzID0gb3B0aW9ucz8udHRsTWludXRlcyB8fCA2MDtcbiAgICBjb25zdCBzZXNzaW9uSWQgPSBgJHt0aGlzLmNsaWVudC5hZ2VudElkfS0ke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDgpfWA7XG4gICAgY29uc3QgZXhwaXJlc0F0ID0gbmV3IERhdGUoRGF0ZS5ub3coKSArIHR0bE1pbnV0ZXMgKiA2MCAqIDEwMDApO1xuXG4gICAgY29uc3Qgc2Vzc2lvbjogU2Vzc2lvbiA9IHtcbiAgICAgIGlkOiBzZXNzaW9uSWQsXG4gICAgICBuYW1lLFxuICAgICAgY3JlYXRlZEJ5OiB0aGlzLmNsaWVudC5hZ2VudElkISxcbiAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgZXhwaXJlc0F0OiBleHBpcmVzQXQudG9JU09TdHJpbmcoKSxcbiAgICAgIG1ldGFkYXRhOiBvcHRpb25zPy5tZXRhZGF0YSxcbiAgICB9O1xuXG4gICAgdGhpcy5hY3RpdmVTZXNzaW9ucy5zZXQoc2Vzc2lvbklkLCBzZXNzaW9uKTtcblxuICAgIC8vIEJyb2FkY2FzdCBzZXNzaW9uIGNyZWF0aW9uXG4gICAgYXdhaXQgdGhpcy5jbGllbnQuYWdlbnRzLmJyb2FkY2FzdChcbiAgICAgIHsgdHlwZTogJ3Nlc3Npb246Y3JlYXRlZCcsIHNlc3Npb24gfSxcbiAgICAgIHsgY2hhbm5lbDogJ29yY2hlc3RyYXRpb24nIH1cbiAgICApO1xuXG4gICAgcmV0dXJuIHNlc3Npb247XG4gIH1cblxuICAvKipcbiAgICogRW5kIGFuIG9yY2hlc3RyYXRpb24gc2Vzc2lvblxuICAgKi9cbiAgYXN5bmMgZW5kKHNlc3Npb25JZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5hY3RpdmVTZXNzaW9ucy5kZWxldGUoc2Vzc2lvbklkKTtcblxuICAgIC8vIEJyb2FkY2FzdCBzZXNzaW9uIGVuZFxuICAgIGF3YWl0IHRoaXMuY2xpZW50LmFnZW50cy5icm9hZGNhc3QoXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdzZXNzaW9uOmVuZGVkJyxcbiAgICAgICAgc2Vzc2lvbklkLFxuICAgICAgICBlbmRlZEJ5OiB0aGlzLmNsaWVudC5hZ2VudElkLFxuICAgICAgICBlbmRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9LFxuICAgICAgeyBjaGFubmVsOiAnb3JjaGVzdHJhdGlvbicgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFjdGl2ZSBzZXNzaW9uc1xuICAgKi9cbiAgZ2V0QWN0aXZlKCk6IFNlc3Npb25bXSB7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBhY3RpdmU6IFNlc3Npb25bXSA9IFtdO1xuICAgIFxuICAgIGZvciAoY29uc3QgW2lkLCBzZXNzaW9uXSBvZiB0aGlzLmFjdGl2ZVNlc3Npb25zKSB7XG4gICAgICBpZiAobmV3IERhdGUoc2Vzc2lvbi5leHBpcmVzQXQpID4gbm93KSB7XG4gICAgICAgIGFjdGl2ZS5wdXNoKHNlc3Npb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hY3RpdmVTZXNzaW9ucy5kZWxldGUoaWQpO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICByZXR1cm4gYWN0aXZlO1xuICB9XG59XG5cbi8qKlxuICogTWFpbiBQcml2YXRlIENvbm5lY3QgU0RLIGNsaWVudFxuICovXG5leHBvcnQgY2xhc3MgUHJpdmF0ZUNvbm5lY3Qge1xuICBwcml2YXRlIGNvbmZpZzogeyBhcGlLZXk6IHN0cmluZzsgaHViVXJsOiBzdHJpbmc7IGFnZW50SWQ6IHN0cmluZyB9O1xuICBcbiAgLyoqIEFnZW50cyBBUEkgZm9yIGRpc2NvdmVyeSBhbmQgb3JjaGVzdHJhdGlvbiAqL1xuICBwdWJsaWMgYWdlbnRzOiBBZ2VudHNBUEk7XG4gIFxuICAvKiogU2VydmljZXMgQVBJIGZvciBjb25uZWN0aW5nIHRvIHNlcnZpY2VzICovXG4gIHB1YmxpYyBzZXJ2aWNlczogU2VydmljZXNBUEk7XG4gIFxuICAvKiogU2Vzc2lvbnMgQVBJIGZvciBlcGhlbWVyYWwgb3JjaGVzdHJhdGlvbiAqL1xuICBwdWJsaWMgc2Vzc2lvbnM6IFNlc3Npb25zQVBJO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogUHJpdmF0ZUNvbm5lY3RDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIGFwaUtleTogY29uZmlnLmFwaUtleSxcbiAgICAgIGh1YlVybDogY29uZmlnLmh1YlVybCB8fCAnaHR0cHM6Ly9hcGkucHJpdmF0ZWNvbm5lY3QuY28nLFxuICAgICAgYWdlbnRJZDogY29uZmlnLmFnZW50SWQgfHwgdGhpcy5kZXRlY3RBZ2VudElkKCksXG4gICAgfTtcblxuICAgIHRoaXMuYWdlbnRzID0gbmV3IEFnZW50c0FQSSh0aGlzKTtcbiAgICB0aGlzLnNlcnZpY2VzID0gbmV3IFNlcnZpY2VzQVBJKHRoaXMpO1xuICAgIHRoaXMuc2Vzc2lvbnMgPSBuZXcgU2Vzc2lvbnNBUEkodGhpcyk7XG5cbiAgICAvLyBUcmFjayBTREsgdXNhZ2UgKG5vbi1ibG9ja2luZylcbiAgICBpZiAoIWNvbmZpZy5kaXNhYmxlVHJhY2tpbmcpIHtcbiAgICAgIHRyYWNrU2RrVXNhZ2UodGhpcy5jb25maWcuaHViVXJsKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBhZ2VudCBJRFxuICAgKi9cbiAgZ2V0IGFnZW50SWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuYWdlbnRJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25uZWN0IHRvIGEgc2VydmljZSBhbmQgZ2V0IGNvbm5lY3Rpb24gZGV0YWlsc1xuICAgKi9cbiAgYXN5bmMgY29ubmVjdChzZXJ2aWNlTmFtZTogc3RyaW5nKTogUHJvbWlzZTxDb25uZWN0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VydmljZXMuZ2V0Q29ubmVjdGlvbihzZXJ2aWNlTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJuYWwgZmV0Y2ggaGVscGVyXG4gICAqL1xuICBhc3luYyBmZXRjaChwYXRoOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0SW5pdCk6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmNvbmZpZy5odWJVcmx9JHtwYXRofWA7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICd4LWFwaS1rZXknOiB0aGlzLmNvbmZpZy5hcGlLZXksXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIC4uLm9wdGlvbnM/LmhlYWRlcnMsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgY29uc3QgZXJyb3IgPSBhd2FpdCByZXNwb25zZS5qc29uKCkuY2F0Y2goKCkgPT4gKHsgbWVzc2FnZTogJ1Vua25vd24gZXJyb3InIH0pKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlIHx8IGBSZXF1ZXN0IGZhaWxlZDogJHtyZXNwb25zZS5zdGF0dXN9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyeSB0byBkZXRlY3QgYWdlbnQgSUQgZnJvbSBsb2NhbCBjb25maWdcbiAgICovXG4gIHByaXZhdGUgZGV0ZWN0QWdlbnRJZCgpOiBzdHJpbmcge1xuICAgIC8vIEluIGEgcmVhbCBpbXBsZW1lbnRhdGlvbiwgdGhpcyB3b3VsZCByZWFkIGZyb20gfi8uY29ubmVjdC9jb25maWcuanNvblxuICAgIC8vIEZvciBub3csIGdlbmVyYXRlIGEgZGVmYXVsdCBJRFxuICAgIHJldHVybiBgc2RrLSR7RGF0ZS5ub3coKX1gO1xuICB9XG59XG5cbi8vIERlZmF1bHQgZXhwb3J0XG5leHBvcnQgZGVmYXVsdCBQcml2YXRlQ29ubmVjdDtcblxuLy8gQ29udmVuaWVuY2UgZnVuY3Rpb25cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb25uZWN0KHNlcnZpY2VOYW1lOiBzdHJpbmcsIGNvbmZpZz86IFByaXZhdGVDb25uZWN0Q29uZmlnKTogUHJvbWlzZTxDb25uZWN0aW9uPiB7XG4gIGNvbnN0IGFwaUtleSA9IGNvbmZpZz8uYXBpS2V5IHx8IHByb2Nlc3MuZW52LlBSSVZBVEVDT05ORUNUX0FQSV9LRVk7XG4gIGlmICghYXBpS2V5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBUEkga2V5IHJlcXVpcmVkLiBTZXQgUFJJVkFURUNPTk5FQ1RfQVBJX0tFWSBvciBwYXNzIGNvbmZpZy5hcGlLZXknKTtcbiAgfVxuICBcbiAgY29uc3QgY2xpZW50ID0gbmV3IFByaXZhdGVDb25uZWN0KHsgLi4uY29uZmlnLCBhcGlLZXkgfSk7XG4gIHJldHVybiBjbGllbnQuY29ubmVjdChzZXJ2aWNlTmFtZSk7XG59XG5cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@privateconnect/sdk",
3
- "version": "0.3.0",
3
+ "version": "0.3.5",
4
4
  "description": "TypeScript SDK for Private Connect - programmatic access to services and agent orchestration",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",