testcafe 3.3.0 → 3.4.0-rc.2

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.
Files changed (32) hide show
  1. package/lib/api/request-hooks/request-logger.js +6 -3
  2. package/lib/api/structure/fixture.js +6 -1
  3. package/lib/api/structure/test-file.js +2 -2
  4. package/lib/api/structure/testing-unit.js +2 -1
  5. package/lib/api/test-page-url.js +2 -2
  6. package/lib/browser/connection/index.js +3 -1
  7. package/lib/cli/argument-parser/index.js +2 -2
  8. package/lib/client/automation/index.js +133 -189
  9. package/lib/client/automation/index.min.js +1 -1
  10. package/lib/client/browser/idle-page/index.html.mustache +1 -1
  11. package/lib/client/core/index.js +61 -295
  12. package/lib/client/core/index.min.js +1 -1
  13. package/lib/client/core/utils/array.js +3 -18
  14. package/lib/client/core/utils/dom.js +12 -32
  15. package/lib/client/driver/index.js +4 -32
  16. package/lib/client/driver/index.min.js +1 -1
  17. package/lib/client/test-run/index.js.mustache +1 -6
  18. package/lib/client/ui/index.js +63 -48
  19. package/lib/client/ui/index.min.js +1 -1
  20. package/lib/client/ui/styles.css +62 -2
  21. package/lib/client-functions/selectors/selector-text-filter.js +1 -3
  22. package/lib/compiler/test-file/formats/typescript/compiler.js +2 -1
  23. package/lib/errors/runtime/templates.js +2 -2
  24. package/lib/native-automation/client/deps/hammerhead.js +25 -0
  25. package/lib/native-automation/client/event-descriptor.js +12 -1
  26. package/lib/native-automation/client/input.js +17 -5
  27. package/lib/native-automation/request-hooks/event-factory/request-paused-event-based.js +2 -2
  28. package/lib/role/index.js +1 -4
  29. package/lib/role/role.js +9 -1
  30. package/lib/runner/browser-job.js +32 -5
  31. package/lib/test-run/index.js +4 -1
  32. package/package.json +16 -17
@@ -35,6 +35,9 @@ class RequestLoggerImplementation extends hook_1.default {
35
35
  if (!logOptions.logResponseBody && logOptions.stringifyResponseBody)
36
36
  throw new runtime_1.APIError('RequestLogger', types_1.RUNTIME_ERRORS.requestHookConfigureAPIError, 'RequestLogger', 'Cannot stringify the response body because it is not logged. Specify { logResponseBody: true } in log options.');
37
37
  }
38
+ static _getInternalRequestKey({ requestId, sessionId }) {
39
+ return `${sessionId}:${requestId}`;
40
+ }
38
41
  async onRequest(event) {
39
42
  const loggedReq = {
40
43
  id: event._requestInfo.requestId,
@@ -50,10 +53,10 @@ class RequestLoggerImplementation extends hook_1.default {
50
53
  loggedReq.request.headers = Object.assign({}, event._requestInfo.headers);
51
54
  if (this._options.logRequestBody)
52
55
  loggedReq.request.body = this._options.stringifyRequestBody ? event._requestInfo.body.toString() : event._requestInfo.body;
53
- this._internalRequests[loggedReq.id] = loggedReq;
56
+ this._internalRequests[RequestLoggerImplementation._getInternalRequestKey(event._requestInfo)] = loggedReq;
54
57
  }
55
58
  async onResponse(event) {
56
- const loggedReq = this._internalRequests[event.requestId];
59
+ const loggedReq = this._internalRequests[RequestLoggerImplementation._getInternalRequestKey(event)];
57
60
  // NOTE: If the 'clear' method is called during a long running request,
58
61
  // we should not save a response part - request part has been already removed.
59
62
  if (!loggedReq)
@@ -111,4 +114,4 @@ function createRequestLogger(requestFilterRuleInit, logOptions) {
111
114
  }
112
115
  exports.default = createRequestLogger;
113
116
  module.exports = exports.default;
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1sb2dnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3JlcXVlc3QtaG9va3MvcmVxdWVzdC1sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2REFLNkI7QUFFN0Isa0RBQWlDO0FBQ2pDLG1FQUE4RDtBQUM5RCwyRUFBaUQ7QUFDakQsOEZBQW9FO0FBQ3BFLGtEQUFnRDtBQUNoRCw4Q0FBb0Q7QUFVcEQsTUFBTSxlQUFlLEdBQTBCO0lBQzNDLGlCQUFpQixFQUFNLEtBQUs7SUFDNUIsY0FBYyxFQUFTLEtBQUs7SUFDNUIsb0JBQW9CLEVBQUcsS0FBSztJQUM1QixrQkFBa0IsRUFBSyxLQUFLO0lBQzVCLGVBQWUsRUFBUSxLQUFLO0lBQzVCLHFCQUFxQixFQUFFLEtBQUs7Q0FDL0IsQ0FBQztBQXlCRixNQUFNLHlCQUF5QixHQUFHLGVBQWUsQ0FBQztBQUVsRCxNQUFNLDJCQUE0QixTQUFRLGNBQVc7SUFJakQsWUFBb0IscUJBQXVFLEVBQUUsT0FBbUM7UUFDNUgsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxlQUFlLEVBQUUsT0FBTyxDQUEwQixDQUFDO1FBRTlGLDJCQUEyQixDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFaEUsTUFBTSw2QkFBNkIsR0FBRyxJQUFJLG1EQUE2QixDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRS9JLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO1FBRTVELElBQUksQ0FBQyxVQUFVLEdBQVUseUJBQXlCLENBQUM7UUFDbkQsSUFBSSxDQUFDLFFBQVEsR0FBWSxnQkFBZ0IsQ0FBQztRQUMxQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTyxNQUFNLENBQUMsaUJB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aUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxQyxDQUFDLENBQUMsQ0FBQztTQUNOOztZQUVHLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7SUFDOUMsQ0FBQztDQUNKO0FBRUQsU0FBd0IsbUJBQW1CLENBQUUscUJBQWtGLEVBQUUsVUFBcUM7SUFDbEssT0FBTyxJQUFJLDJCQUEyQixDQUFDLHFCQUFxQixFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzlFLENBQUM7QUFGRCxzQ0FFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29uZmlndXJlUmVzcG9uc2VFdmVudE9wdGlvbnMsXG4gICAgUmVxdWVzdEV2ZW50LFxuICAgIFJlc3BvbnNlRXZlbnQsXG4gICAgUmVxdWVzdEZpbHRlclJ1bGVJbml0LFxufSBmcm9tICd0ZXN0Y2FmZS1oYW1tZXJoZWFkJztcblxuaW1wb3J0IFJlcXVlc3RIb29rIGZyb20gJy4vaG9vayc7XG5pbXBvcnQgeyBwYXJzZVVzZXJBZ2VudCB9IGZyb20gJy4uLy4uL3V0aWxzL3BhcnNlLXVzZXItYWdlbnQnO1xuaW1wb3J0IHRlc3RSdW5UcmFja2VyIGZyb20gJy4uL3Rlc3QtcnVuLXRyYWNrZXInO1xuaW1wb3J0IFJlRXhlY3V0YWJsZVByb21pc2UgZnJvbSAnLi4vLi4vdXRpbHMvcmUtZXhlY3V0YWJsZS1wcm9taXNlJztcbmltcG9ydCB7IEFQSUVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3J1bnRpbWUnO1xuaW1wb3J0IHsgUlVOVElNRV9FUlJPUlMgfSBmcm9tICcuLi8uLi9lcnJvcnMvdHlwZXMnO1xuXG5pbXBvcnQge1xuICAgIFJlcXVlc3RIb29rTG9nT3B0aW9uc0luaXQsXG4gICAgUmVxdWVzdEhvb2tMb2dPcHRpb25zLFxufSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9pbnRlcmZhY2VzJztcblxuXG5jb25zdCBERUZBVUxUX09QVElPTlM6IFJlcXVlc3RIb29rTG9nT3B0aW9ucyA9IHtcbiAgICBsb2dSZXF1ZXN0SGVhZGVyczogICAgIGZhbHNlLFxuICAgIGxvZ1JlcXVlc3RCb2R5OiAgICAgICAgZmFsc2UsXG4gICAgc3RyaW5naWZ5UmVxdWVzdEJvZHk6ICBmYWxzZSxcbiAgICBsb2dSZXNwb25zZUhlYWRlcnM6ICAgIGZhbHNlLFxuICAgIGxvZ1Jlc3BvbnNlQm9keTogICAgICAgZmFsc2UsXG4gICAgc3RyaW5naWZ5UmVzcG9uc2VCb2R5OiBmYWxzZSxcbn07XG5cbmludGVyZmFjZSBPcHRpb25hbGx5TG9nZ2VkUGFydCB7XG4gICAgaGVhZGVycz86IGFueTtcbiAgICBib2R5PzogQnVmZmVyIHwgc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgTG9nZ2VkUmVxdWVzdFBhcnQgZXh0ZW5kcyBPcHRpb25hbGx5TG9nZ2VkUGFydCB7XG4gICAgdGltZXN0YW1wOiBudW1iZXI7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgbWV0aG9kOiBzdHJpbmc7XG59XG5pbnRlcmZhY2UgTG9nZ2VkUmVzcG9uc2VQYXJ0IGV4dGVuZHMgT3B0aW9uYWxseUxvZ2dlZFBhcnQge1xuICAgIHN0YXR1c0NvZGU6IG51bWJlcjtcbiAgICB0aW1lc3RhbXA6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIExvZ2dlZFJlcXVlc3Qge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgdGVzdFJ1bklkOiBzdHJpbmc7XG4gICAgdXNlckFnZW50OiBzdHJpbmc7XG4gICAgcmVxdWVzdDogTG9nZ2VkUmVxdWVzdFBhcnQ7XG4gICAgcmVzcG9uc2U/OiBMb2dnZWRSZXNwb25zZVBhcnQ7XG59XG5cbmNvbnN0IFJFUVVFU1RfTE9HR0VSX0NMQVNTX05BTUUgPSAnUmVxdWVzdExvZ2dlcic7XG5cbmNsYXNzIFJlcXVlc3RMb2dnZXJJbXBsZW1lbnRhdGlvbiBleHRlbmRzIFJlcXVlc3RIb29rIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vcHRpb25zOiBSZXF1ZXN0SG9va0xvZ09wdGlvbnM7XG4gICAgcHJpdmF0ZSBfaW50ZXJuYWxSZXF1ZXN0czogRGljdGlvbmFyeTxMb2dnZWRSZXF1ZXN0PjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAocmVxdWVzdEZpbHRlclJ1bGVJbml0PzogUmVxdWVzdEZpbHRlclJ1bGVJbml0IHwgUmVxdWVzdEZpbHRlclJ1bGVJbml0W10sIG9wdGlvbnM/OiBSZXF1ZXN0SG9va0xvZ09wdGlvbnNJbml0KSB7XG4gICAgICAgIGNvbnN0IGVmZmVjdGl2ZU9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX09QVElPTlMsIG9wdGlvbnMpIGFzIFJlcXVlc3RIb29rTG9nT3B0aW9ucztcblxuICAgICAgICBSZXF1ZXN0TG9nZ2VySW1wbGVtZW50YXRpb24uX2Fzc2VydExvZ09wdGlvbnMoZWZmZWN0aXZlT3B0aW9ucyk7XG5cbiAgICAgICAgY29uc3QgY29uZmlndXJlUmVzcG9uc2VFdmVudE9wdGlvbnMgPSBuZXcgQ29uZmlndXJlUmVzcG9uc2VFdmVudE9wdGlvbnMoZWZmZWN0aXZlT3B0aW9ucy5sb2dSZXNwb25zZUhlYWRlcnMsIGVmZmVjdGl2ZU9wdGlvbnMubG9nUmVzcG9uc2VCb2R5KTtcblxuICAgICAgICBzdXBlcihyZXF1ZXN0RmlsdGVyUnVsZUluaXQsIGNvbmZpZ3VyZVJlc3BvbnNlRXZlbnRPcHRpb25zKTtcblxuICAgICAgICB0aGlzLl9jbGFzc05hbWUgICAgICAgID0gUkVRVUVTVF9MT0dHRVJfQ0xBU1NfTkFNRTtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyAgICAgICAgICA9IGVmZmVjdGl2ZU9wdGlvbnM7XG4gICAgICAgIHRoaXMuX2ludGVybmFsUmVxdWVzdHMgPSB7fTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfYXNzZXJ0TG9nT3B0aW9ucyAobG9nT3B0aW9uczogUmVxdWVzdEhvb2tMb2dPcHRpb25zKTogdm9pZCB7XG4gICAgICAgIGlmICghbG9nT3B0aW9ucy5sb2dSZXF1ZXN0Qm9keSAmJiBsb2dPcHRpb25zLnN0cmluZ2lmeVJlcXVlc3RCb2R5KVxuICAgICAgICAgICAgdGhyb3cgbmV3IEFQSUVycm9yKCdSZXF1ZXN0TG9nZ2VyJywgUlVOVElNRV9FUlJPUlMucmVxdWVzdEhvb2tDb25maWd1cmVBUElFcnJvciwgJ1JlcXVlc3RMb2dnZXInLCAnQ2Fubm90IHN0cmluZ2lmeSB0aGUgcmVxdWVzdCBib2R5IGJlY2F1c2UgaXQgaXMgbm90IGxvZ2dlZC4gU3BlY2lmeSB7IGxvZ1JlcXVlc3RCb2R5OiB0cnVlIH0gaW4gbG9nIG9wdGlvbnMuJyk7XG5cbiAgICAgICAgaWYgKCFsb2dPcHRpb25zLmxvZ1Jlc3BvbnNlQm9keSAmJiBsb2dPcHRpb25zLnN0cmluZ2lmeVJlc3BvbnNlQm9keSlcbiAgICAgICAgICAgIHRocm93IG5ldyBBUElFcnJvcignUmVxdWVzdExvZ2dlcicsIFJVTlRJTUVfRVJST1JTLnJlcXVlc3RIb29rQ29uZmlndXJlQVBJRXJyb3IsICdSZXF1ZXN0TG9nZ2VyJywgJ0Nhbm5vdCBzdHJpbmdpZnkgdGhlIHJlc3BvbnNlIGJvZHkgYmVjYXVzZSBpdCBpcyBub3QgbG9nZ2VkLiBTcGVjaWZ5IHsgbG9nUmVzcG9uc2VCb2R5OiB0cnVlIH0gaW4gbG9nIG9wdGlvbnMuJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIG9uUmVxdWVzdCAoZXZlbnQ6IFJlcXVlc3RFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBsb2dnZWRSZXE6IExvZ2dlZFJlcXVlc3QgPSB7XG4gICAgICAgICAgICBpZDogICAgICAgIGV2ZW50Ll9yZXF1ZXN0SW5mby5yZXF1ZXN0SWQsXG4gICAgICAgICAgICB0ZXN0UnVuSWQ6IGV2ZW50Ll9yZXF1ZXN0SW5mby5zZXNzaW9uSWQsXG4gICAgICAgICAgICB1c2VyQWdlbnQ6IHBhcnNlVXNlckFnZW50KGV2ZW50Ll9yZXF1ZXN0SW5mby51c2VyQWdlbnQpLnByZXR0eVVzZXJBZ2VudCxcbiAgICAgICAgICAgIHJlcXVlc3Q6ICAge1xuICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKSxcbiAgICAgICAgICAgICAgICB1cmw6ICAgICAgIGV2ZW50Ll9yZXF1ZXN0SW5mby51cmwsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAgICBldmVudC5fcmVxdWVzdEluZm8ubWV0aG9kLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5fb3B0aW9ucy5sb2dSZXF1ZXN0SGVhZGVycylcbiAgICAgICAgICAgIGxvZ2dlZFJlcS5yZXF1ZXN0LmhlYWRlcnMgPSBPYmplY3QuYXNzaWduKHt9LCBldmVudC5fcmVxdWVzdEluZm8uaGVhZGVycyk7XG5cbiAgICAgICAgaWYgKHRoaXMuX29wdGlvbnMubG9nUmVxdWVzdEJvZHkpXG4gICAgICAgICAgICBsb2dnZWRSZXEucmVxdWVzdC5ib2R5ID0gdGhpcy5fb3B0aW9ucy5zdHJpbmdpZnlSZXF1ZXN0Qm9keSA/IGV2ZW50Ll9yZXF1ZXN0SW5mby5ib2R5LnRvU3RyaW5nKCkgOiBldmVudC5fcmVxdWVzdEluZm8uYm9keTtcblxuICAgICAgICB0aGlzLl9pbnRlcm5hbFJlcXVlc3RzW2xvZ2dlZFJlcS5pZF0gPSBsb2dnZWRSZXE7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIG9uUmVzcG9uc2UgKGV2ZW50OiBSZXNwb25zZUV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGxvZ2dlZFJlcSA9IHRoaXMuX2ludGVybmFsUmVxdWVzdHNbZXZlbnQucmVxdWVzdElkXTtcblxuICAgICAgICAvLyBOT1RFOiBJZiB0aGUgJ2NsZWFyJyBtZXRob2QgaXMgY2FsbGVkIGR1cmluZyBhIGxvbmcgcnVubmluZyByZXF1ZXN0LFxuICAgICAgICAvLyB3ZSBzaG91bGQgbm90IHNhdmUgYSByZXNwb25zZSBwYXJ0IC0gcmVxdWVzdCBwYXJ0IGhhcyBiZWVuIGFscmVhZHkgcmVtb3ZlZC5cbiAgICAgICAgaWYgKCFsb2dnZWRSZXEpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgbG9nZ2VkUmVxLnJlc3BvbnNlID0ge1xuICAgICAgICAgICAgc3RhdHVzQ29kZTogZXZlbnQuc3RhdHVzQ29kZSxcbiAgICAgICAgICAgIHRpbWVzdGFtcDogIERhdGUubm93KCksXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHRoaXMuX29wdGlvbnMubG9nUmVzcG9uc2VIZWFkZXJzKVxuICAgICAgICAgICAgbG9nZ2VkUmVxLnJlc3BvbnNlLmhlYWRlcnMgPSBPYmplY3QuYXNzaWduKHt9LCBldmVudC5oZWFkZXJzKTtcblxuICAgICAgICBpZiAodGhpcy5fb3B0aW9ucy5sb2dSZXNwb25zZUJvZHkpIHtcbiAgICAgICAgICAgIGxvZ2dlZFJlcS5yZXNwb25zZS5ib2R5ID0gdGhpcy5fb3B0aW9ucy5zdHJpbmdpZnlSZXNwb25zZUJvZHkgJiYgZXZlbnQuYm9keVxuICAgICAgICAgICAgICAgID8gZXZlbnQuYm9keS50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgOiBldmVudC5ib2R5O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcHJlcGFyZUludGVybmFsUmVxdWVzdEluZm8gKCk6IExvZ2dlZFJlcXVlc3RbXSB7XG4gICAgICAgIGNvbnN0IHRlc3RSdW4gICAgICAgID0gdGVzdFJ1blRyYWNrZXIucmVzb2x2ZUNvbnRleHRUZXN0UnVuKCk7XG4gICAgICAgIGxldCBwcmVwYXJlZFJlcXVlc3RzID0gT2JqZWN0LnZhbHVlcyh0aGlzLl9pbnRlcm5hbFJlcXVlc3RzKTtcblxuICAgICAgICBpZiAodGVzdFJ1bilcbiAgICAgICAgICAgIHByZXBhcmVkUmVxdWVzdHMgPSBwcmVwYXJlZFJlcXVlc3RzLmZpbHRlcihyID0+IHIudGVzdFJ1bklkID09PSB0ZXN0UnVuLmlkKTtcblxuICAgICAgICByZXR1cm4gcHJlcGFyZWRSZXF1ZXN0cztcbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXRDb21wbGV0ZWRSZXF1ZXN0cyAoKTogTG9nZ2VkUmVxdWVzdFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ByZXBhcmVJbnRlcm5hbFJlcXVlc3RJbmZvKCkuZmlsdGVyKHIgPT4gci5yZXNwb25zZSk7XG4gICAgfVxuXG4gICAgLy8gQVBJXG4gICAgcHVibGljIGNvbnRhaW5zIChwcmVkaWNhdGU6IChyZXF1ZXN0OiBMb2dnZWRSZXF1ZXN0KSA9PiBib29sZWFuKTogUmVFeGVjdXRhYmxlUHJvbWlzZSB7XG4gICAgICAgIHJldHVybiBSZUV4ZWN1dGFibGVQcm9taXNlLmZyb21Gbihhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gISF0aGlzLl9nZXRDb21wbGV0ZWRSZXF1ZXN0cygpLmZpbmQocHJlZGljYXRlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvdW50IChwcmVkaWNhdGU6IChyZXF1ZXN0OiBMb2dnZWRSZXF1ZXN0KSA9PiBib29sZWFuKTogUmVFeGVjdXRhYmxlUHJvbWlzZSB7XG4gICAgICAgIHJldHVybiBSZUV4ZWN1dGFibGVQcm9taXNlLmZyb21Gbihhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZ2V0Q29tcGxldGVkUmVxdWVzdHMoKS5maWx0ZXIocHJlZGljYXRlKS5sZW5ndGg7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhciAoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRlc3RSdW4gPSB0ZXN0UnVuVHJhY2tlci5yZXNvbHZlQ29udGV4dFRlc3RSdW4oKTtcblxuICAgICAgICBpZiAodGVzdFJ1bikge1xuICAgICAgICAgICAgT2JqZWN0LmtleXModGhpcy5faW50ZXJuYWxSZXF1ZXN0cykuZm9yRWFjaChpZCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2ludGVybmFsUmVxdWVzdHNbaWRdLnRlc3RSdW5JZCA9PT0gdGVzdFJ1bi5pZClcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2ludGVybmFsUmVxdWVzdHNbaWRdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5faW50ZXJuYWxSZXF1ZXN0cyA9IHt9O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmVxdWVzdHMgKCk6IExvZ2dlZFJlcXVlc3RbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcmVwYXJlSW50ZXJuYWxSZXF1ZXN0SW5mbygpO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlUmVxdWVzdExvZ2dlciAocmVxdWVzdEZpbHRlclJ1bGVJbml0OiBSZXF1ZXN0RmlsdGVyUnVsZUluaXQgfCBSZXF1ZXN0RmlsdGVyUnVsZUluaXRbXSB8IHVuZGVmaW5lZCwgbG9nT3B0aW9uczogUmVxdWVzdEhvb2tMb2dPcHRpb25zSW5pdCk6IFJlcXVlc3RMb2dnZXJJbXBsZW1lbnRhdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBSZXF1ZXN0TG9nZ2VySW1wbGVtZW50YXRpb24ocmVxdWVzdEZpbHRlclJ1bGVJbml0LCBsb2dPcHRpb25zKTtcbn1cbiJdfQ==
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1sb2dnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3JlcXVlc3QtaG9va3MvcmVxdWVzdC1sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2REFLNkI7QUFFN0Isa0RBQWlDO0FBQ2pDLG1FQUE4RDtBQUM5RCwyRUFBaUQ7QUFDakQsOEZBQW9FO0FBQ3BFLGtEQUFnRDtBQUNoRCw4Q0FBb0Q7QUFVcEQsTUFBTSxlQUFlLEdBQTBCO0lBQzNDLGlCQUFpQixFQUFNLEtBQUs7SUFDNUIsY0FBYyxFQUFTLEtBQUs7SUFDNUIsb0JBQW9CLEVBQUcsS0FBSztJQUM1QixrQkFBa0IsRUFBSyxLQUFLO0lBQzVCLGVBQWUsRUFBUSxLQUFLO0lBQzVCLHFCQUFxQixFQUFFLEtBQUs7Q0FDL0IsQ0FBQztBQXlCRixNQUFNLHlCQUF5QixHQUFHLGVBQWUsQ0FBQztBQUVsRCxNQUFNLDJCQUE0QixTQUFRLGNBQVc7SUFJakQsWUFBb0IscUJBQXVFLEVBQUUsT0FBbUM7UUFDNUgsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxlQUFlLEVBQUUsT0FBTyxDQUEwQixDQUFDO1FBRTlGLDJCQUEyQixDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFaEUsTUFBTSw2QkFBNkIsR0FBRyxJQUFJLG1EQUE2QixDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRS9JLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO1FBRTVELElBQUksQ0FBQyxVQUFVLEdBQVUseUJBQXlCLENBQUM7UUFDbkQsSUFBSSxDQUFDLFFBQVEsR0FBWSxnQkFBZ0IsQ0FBQztRQUMxQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTyxNQUFNLENBQUMsaUJB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SUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLEtBQUssT0FBTyxDQUFDLEVBQUU7b0JBQ25ELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLENBQUMsQ0FBQyxDQUFDO1NBQ047O1lBRUcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2YsT0FBTyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0NBQ0o7QUFFRCxTQUF3QixtQkFBbUIsQ0FBRSxxQkFBa0YsRUFBRSxVQUFxQztJQUNsSyxPQUFPLElBQUksMkJBQTJCLENBQUMscUJBQXFCLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDOUUsQ0FBQztBQUZELHNDQUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb25maWd1cmVSZXNwb25zZUV2ZW50T3B0aW9ucyxcbiAgICBSZXF1ZXN0RXZlbnQsXG4gICAgUmVzcG9uc2VFdmVudCxcbiAgICBSZXF1ZXN0RmlsdGVyUnVsZUluaXQsXG59IGZyb20gJ3Rlc3RjYWZlLWhhbW1lcmhlYWQnO1xuXG5pbXBvcnQgUmVxdWVzdEhvb2sgZnJvbSAnLi9ob29rJztcbmltcG9ydCB7IHBhcnNlVXNlckFnZW50IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGFyc2UtdXNlci1hZ2VudCc7XG5pbXBvcnQgdGVzdFJ1blRyYWNrZXIgZnJvbSAnLi4vdGVzdC1ydW4tdHJhY2tlcic7XG5pbXBvcnQgUmVFeGVjdXRhYmxlUHJvbWlzZSBmcm9tICcuLi8uLi91dGlscy9yZS1leGVjdXRhYmxlLXByb21pc2UnO1xuaW1wb3J0IHsgQVBJRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvcnMvcnVudGltZSc7XG5pbXBvcnQgeyBSVU5USU1FX0VSUk9SUyB9IGZyb20gJy4uLy4uL2Vycm9ycy90eXBlcyc7XG5cbmltcG9ydCB7XG4gICAgUmVxdWVzdEhvb2tMb2dPcHRpb25zSW5pdCxcbiAgICBSZXF1ZXN0SG9va0xvZ09wdGlvbnMsXG59IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL2ludGVyZmFjZXMnO1xuXG5cbmNvbnN0IERFRkFVTFRfT1BUSU9OUzogUmVxdWVzdEhvb2tMb2dPcHRpb25zID0ge1xuICAgIGxvZ1JlcXVlc3RIZWFkZXJzOiAgICAgZmFsc2UsXG4gICAgbG9nUmVxdWVzdEJvZHk6ICAgICAgICBmYWxzZSxcbiAgICBzdHJpbmdpZnlSZXF1ZXN0Qm9keTogIGZhbHNlLFxuICAgIGxvZ1Jlc3BvbnNlSGVhZGVyczogICAgZmFsc2UsXG4gICAgbG9nUmVzcG9uc2VCb2R5OiAgICAgICBmYWxzZSxcbiAgICBzdHJpbmdpZnlSZXNwb25zZUJvZHk6IGZhbHNlLFxufTtcblxuaW50ZXJmYWNlIE9wdGlvbmFsbHlMb2dnZWRQYXJ0IHtcbiAgICBoZWFkZXJzPzogYW55O1xuICAgIGJvZHk/OiBCdWZmZXIgfCBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBMb2dnZWRSZXF1ZXN0UGFydCBleHRlbmRzIE9wdGlvbmFsbHlMb2dnZWRQYXJ0IHtcbiAgICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgICB1cmw6IHN0cmluZztcbiAgICBtZXRob2Q6IHN0cmluZztcbn1cbmludGVyZmFjZSBMb2dnZWRSZXNwb25zZVBhcnQgZXh0ZW5kcyBPcHRpb25hbGx5TG9nZ2VkUGFydCB7XG4gICAgc3RhdHVzQ29kZTogbnVtYmVyO1xuICAgIHRpbWVzdGFtcDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgTG9nZ2VkUmVxdWVzdCB7XG4gICAgaWQ6IHN0cmluZztcbiAgICB0ZXN0UnVuSWQ6IHN0cmluZztcbiAgICB1c2VyQWdlbnQ6IHN0cmluZztcbiAgICByZXF1ZXN0OiBMb2dnZWRSZXF1ZXN0UGFydDtcbiAgICByZXNwb25zZT86IExvZ2dlZFJlc3BvbnNlUGFydDtcbn1cblxuY29uc3QgUkVRVUVTVF9MT0dHRVJfQ0xBU1NfTkFNRSA9ICdSZXF1ZXN0TG9nZ2VyJztcblxuY2xhc3MgUmVxdWVzdExvZ2dlckltcGxlbWVudGF0aW9uIGV4dGVuZHMgUmVxdWVzdEhvb2sge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29wdGlvbnM6IFJlcXVlc3RIb29rTG9nT3B0aW9ucztcbiAgICBwcml2YXRlIF9pbnRlcm5hbFJlcXVlc3RzOiBEaWN0aW9uYXJ5PExvZ2dlZFJlcXVlc3Q+O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChyZXF1ZXN0RmlsdGVyUnVsZUluaXQ/OiBSZXF1ZXN0RmlsdGVyUnVsZUluaXQgfCBSZXF1ZXN0RmlsdGVyUnVsZUluaXRbXSwgb3B0aW9ucz86IFJlcXVlc3RIb29rTG9nT3B0aW9uc0luaXQpIHtcbiAgICAgICAgY29uc3QgZWZmZWN0aXZlT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfT1BUSU9OUywgb3B0aW9ucykgYXMgUmVxdWVzdEhvb2tMb2dPcHRpb25zO1xuXG4gICAgICAgIFJlcXVlc3RMb2dnZXJJbXBsZW1lbnRhdGlvbi5fYXNzZXJ0TG9nT3B0aW9ucyhlZmZlY3RpdmVPcHRpb25zKTtcblxuICAgICAgICBjb25zdCBjb25maWd1cmVSZXNwb25zZUV2ZW50T3B0aW9ucyA9IG5ldyBDb25maWd1cmVSZXNwb25zZUV2ZW50T3B0aW9ucyhlZmZlY3RpdmVPcHRpb25zLmxvZ1Jlc3BvbnNlSGVhZGVycywgZWZmZWN0aXZlT3B0aW9ucy5sb2dSZXNwb25zZUJvZHkpO1xuXG4gICAgICAgIHN1cGVyKHJlcXVlc3RGaWx0ZXJSdWxlSW5pdCwgY29uZmlndXJlUmVzcG9uc2VFdmVudE9wdGlvbnMpO1xuXG4gICAgICAgIHRoaXMuX2NsYXNzTmFtZSAgICAgICAgPSBSRVFVRVNUX0xPR0dFUl9DTEFTU19OQU1FO1xuICAgICAgICB0aGlzLl9vcHRpb25zICAgICAgICAgID0gZWZmZWN0aXZlT3B0aW9ucztcbiAgICAgICAgdGhpcy5faW50ZXJuYWxSZXF1ZXN0cyA9IHt9O1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9hc3NlcnRMb2dPcHRpb25zIChsb2dPcHRpb25zOiBSZXF1ZXN0SG9va0xvZ09wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFsb2dPcHRpb25zLmxvZ1JlcXVlc3RCb2R5ICYmIGxvZ09wdGlvbnMuc3RyaW5naWZ5UmVxdWVzdEJvZHkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgQVBJRXJyb3IoJ1JlcXVlc3RMb2dnZXInLCBSVU5USU1FX0VSUk9SUy5yZXF1ZXN0SG9va0NvbmZpZ3VyZUFQSUVycm9yLCAnUmVxdWVzdExvZ2dlcicsICdDYW5ub3Qgc3RyaW5naWZ5IHRoZSByZXF1ZXN0IGJvZHkgYmVjYXVzZSBpdCBpcyBub3QgbG9nZ2VkLiBTcGVjaWZ5IHsgbG9nUmVxdWVzdEJvZHk6IHRydWUgfSBpbiBsb2cgb3B0aW9ucy4nKTtcblxuICAgICAgICBpZiAoIWxvZ09wdGlvbnMubG9nUmVzcG9uc2VCb2R5ICYmIGxvZ09wdGlvbnMuc3RyaW5naWZ5UmVzcG9uc2VCb2R5KVxuICAgICAgICAgICAgdGhyb3cgbmV3IEFQSUVycm9yKCdSZXF1ZXN0TG9nZ2VyJywgUlVOVElNRV9FUlJPUlMucmVxdWVzdEhvb2tDb25maWd1cmVBUElFcnJvciwgJ1JlcXVlc3RMb2dnZXInLCAnQ2Fubm90IHN0cmluZ2lmeSB0aGUgcmVzcG9uc2UgYm9keSBiZWNhdXNlIGl0IGlzIG5vdCBsb2dnZWQuIFNwZWNpZnkgeyBsb2dSZXNwb25zZUJvZHk6IHRydWUgfSBpbiBsb2cgb3B0aW9ucy4nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfZ2V0SW50ZXJuYWxSZXF1ZXN0S2V5ICh7IHJlcXVlc3RJZCwgc2Vzc2lvbklkIH06IGFueSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHtzZXNzaW9uSWR9OiR7cmVxdWVzdElkfWA7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIG9uUmVxdWVzdCAoZXZlbnQ6IFJlcXVlc3RFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBsb2dnZWRSZXE6IExvZ2dlZFJlcXVlc3QgPSB7XG4gICAgICAgICAgICBpZDogICAgICAgIGV2ZW50Ll9yZXF1ZXN0SW5mby5yZXF1ZXN0SWQsXG4gICAgICAgICAgICB0ZXN0UnVuSWQ6IGV2ZW50Ll9yZXF1ZXN0SW5mby5zZXNzaW9uSWQsXG4gICAgICAgICAgICB1c2VyQWdlbnQ6IHBhcnNlVXNlckFnZW50KGV2ZW50Ll9yZXF1ZXN0SW5mby51c2VyQWdlbnQpLnByZXR0eVVzZXJBZ2VudCxcbiAgICAgICAgICAgIHJlcXVlc3Q6ICAge1xuICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKSxcbiAgICAgICAgICAgICAgICB1cmw6ICAgICAgIGV2ZW50Ll9yZXF1ZXN0SW5mby51cmwsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAgICBldmVudC5fcmVxdWVzdEluZm8ubWV0aG9kLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5fb3B0aW9ucy5sb2dSZXF1ZXN0SGVhZGVycylcbiAgICAgICAgICAgIGxvZ2dlZFJlcS5yZXF1ZXN0LmhlYWRlcnMgPSBPYmplY3QuYXNzaWduKHt9LCBldmVudC5fcmVxdWVzdEluZm8uaGVhZGVycyk7XG5cbiAgICAgICAgaWYgKHRoaXMuX29wdGlvbnMubG9nUmVxdWVzdEJvZHkpXG4gICAgICAgICAgICBsb2dnZWRSZXEucmVxdWVzdC5ib2R5ID0gdGhpcy5fb3B0aW9ucy5zdHJpbmdpZnlSZXF1ZXN0Qm9keSA/IGV2ZW50Ll9yZXF1ZXN0SW5mby5ib2R5LnRvU3RyaW5nKCkgOiBldmVudC5fcmVxdWVzdEluZm8uYm9keTtcblxuICAgICAgICB0aGlzLl9pbnRlcm5hbFJlcXVlc3RzW1JlcXVlc3RMb2dnZXJJbXBsZW1lbnRhdGlvbi5fZ2V0SW50ZXJuYWxSZXF1ZXN0S2V5KGV2ZW50Ll9yZXF1ZXN0SW5mbyldID0gbG9nZ2VkUmVxO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBvblJlc3BvbnNlIChldmVudDogUmVzcG9uc2VFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBsb2dnZWRSZXEgPSB0aGlzLl9pbnRlcm5hbFJlcXVlc3RzW1JlcXVlc3RMb2dnZXJJbXBsZW1lbnRhdGlvbi5fZ2V0SW50ZXJuYWxSZXF1ZXN0S2V5KGV2ZW50KV07XG5cbiAgICAgICAgLy8gTk9URTogSWYgdGhlICdjbGVhcicgbWV0aG9kIGlzIGNhbGxlZCBkdXJpbmcgYSBsb25nIHJ1bm5pbmcgcmVxdWVzdCxcbiAgICAgICAgLy8gd2Ugc2hvdWxkIG5vdCBzYXZlIGEgcmVzcG9uc2UgcGFydCAtIHJlcXVlc3QgcGFydCBoYXMgYmVlbiBhbHJlYWR5IHJlbW92ZWQuXG4gICAgICAgIGlmICghbG9nZ2VkUmVxKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGxvZ2dlZFJlcS5yZXNwb25zZSA9IHtcbiAgICAgICAgICAgIHN0YXR1c0NvZGU6IGV2ZW50LnN0YXR1c0NvZGUsXG4gICAgICAgICAgICB0aW1lc3RhbXA6ICBEYXRlLm5vdygpLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLl9vcHRpb25zLmxvZ1Jlc3BvbnNlSGVhZGVycylcbiAgICAgICAgICAgIGxvZ2dlZFJlcS5yZXNwb25zZS5oZWFkZXJzID0gT2JqZWN0LmFzc2lnbih7fSwgZXZlbnQuaGVhZGVycyk7XG5cbiAgICAgICAgaWYgKHRoaXMuX29wdGlvbnMubG9nUmVzcG9uc2VCb2R5KSB7XG4gICAgICAgICAgICBsb2dnZWRSZXEucmVzcG9uc2UuYm9keSA9IHRoaXMuX29wdGlvbnMuc3RyaW5naWZ5UmVzcG9uc2VCb2R5ICYmIGV2ZW50LmJvZHlcbiAgICAgICAgICAgICAgICA/IGV2ZW50LmJvZHkudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgIDogZXZlbnQuYm9keTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3ByZXBhcmVJbnRlcm5hbFJlcXVlc3RJbmZvICgpOiBMb2dnZWRSZXF1ZXN0W10ge1xuICAgICAgICBjb25zdCB0ZXN0UnVuICAgICAgICA9IHRlc3RSdW5UcmFja2VyLnJlc29sdmVDb250ZXh0VGVzdFJ1bigpO1xuICAgICAgICBsZXQgcHJlcGFyZWRSZXF1ZXN0cyA9IE9iamVjdC52YWx1ZXModGhpcy5faW50ZXJuYWxSZXF1ZXN0cyk7XG5cbiAgICAgICAgaWYgKHRlc3RSdW4pXG4gICAgICAgICAgICBwcmVwYXJlZFJlcXVlc3RzID0gcHJlcGFyZWRSZXF1ZXN0cy5maWx0ZXIociA9PiByLnRlc3RSdW5JZCA9PT0gdGVzdFJ1bi5pZCk7XG5cbiAgICAgICAgcmV0dXJuIHByZXBhcmVkUmVxdWVzdHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0Q29tcGxldGVkUmVxdWVzdHMgKCk6IExvZ2dlZFJlcXVlc3RbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcmVwYXJlSW50ZXJuYWxSZXF1ZXN0SW5mbygpLmZpbHRlcihyID0+IHIucmVzcG9uc2UpO1xuICAgIH1cblxuICAgIC8vIEFQSVxuICAgIHB1YmxpYyBjb250YWlucyAocHJlZGljYXRlOiAocmVxdWVzdDogTG9nZ2VkUmVxdWVzdCkgPT4gYm9vbGVhbik6IFJlRXhlY3V0YWJsZVByb21pc2Uge1xuICAgICAgICByZXR1cm4gUmVFeGVjdXRhYmxlUHJvbWlzZS5mcm9tRm4oYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICEhdGhpcy5fZ2V0Q29tcGxldGVkUmVxdWVzdHMoKS5maW5kKHByZWRpY2F0ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3VudCAocHJlZGljYXRlOiAocmVxdWVzdDogTG9nZ2VkUmVxdWVzdCkgPT4gYm9vbGVhbik6IFJlRXhlY3V0YWJsZVByb21pc2Uge1xuICAgICAgICByZXR1cm4gUmVFeGVjdXRhYmxlUHJvbWlzZS5mcm9tRm4oYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldENvbXBsZXRlZFJlcXVlc3RzKCkuZmlsdGVyKHByZWRpY2F0ZSkubGVuZ3RoO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXIgKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0ZXN0UnVuID0gdGVzdFJ1blRyYWNrZXIucmVzb2x2ZUNvbnRleHRUZXN0UnVuKCk7XG5cbiAgICAgICAgaWYgKHRlc3RSdW4pIHtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMuX2ludGVybmFsUmVxdWVzdHMpLmZvckVhY2goaWQgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9pbnRlcm5hbFJlcXVlc3RzW2lkXS50ZXN0UnVuSWQgPT09IHRlc3RSdW4uaWQpXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9pbnRlcm5hbFJlcXVlc3RzW2lkXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMuX2ludGVybmFsUmVxdWVzdHMgPSB7fTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJlcXVlc3RzICgpOiBMb2dnZWRSZXF1ZXN0W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJlcGFyZUludGVybmFsUmVxdWVzdEluZm8oKTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVJlcXVlc3RMb2dnZXIgKHJlcXVlc3RGaWx0ZXJSdWxlSW5pdDogUmVxdWVzdEZpbHRlclJ1bGVJbml0IHwgUmVxdWVzdEZpbHRlclJ1bGVJbml0W10gfCB1bmRlZmluZWQsIGxvZ09wdGlvbnM6IFJlcXVlc3RIb29rTG9nT3B0aW9uc0luaXQpOiBSZXF1ZXN0TG9nZ2VySW1wbGVtZW50YXRpb24ge1xuICAgIHJldHVybiBuZXcgUmVxdWVzdExvZ2dlckltcGxlbWVudGF0aW9uKHJlcXVlc3RGaWx0ZXJSdWxlSW5pdCwgbG9nT3B0aW9ucyk7XG59XG4iXX0=
@@ -26,6 +26,7 @@ class Fixture extends testing_unit_1.default {
26
26
  this.afterFn = null;
27
27
  this.globalBeforeFn = null;
28
28
  this.globalAfterFn = null;
29
+ this.disableConcurrency = false;
29
30
  if (returnApiOrigin)
30
31
  return this.apiOrigin;
31
32
  }
@@ -39,6 +40,10 @@ class Fixture extends testing_unit_1.default {
39
40
  this.testFile.currentFixture = this;
40
41
  return this.apiOrigin;
41
42
  }
43
+ _disableConcurrency$() {
44
+ this.disableConcurrency = true;
45
+ return this.apiOrigin;
46
+ }
42
47
  _before$(fn) {
43
48
  (0, type_assertions_1.assertType)(type_assertions_1.is.function, 'before', 'The fixture.before hook', fn);
44
49
  this.beforeFn = fn;
@@ -81,4 +86,4 @@ class Fixture extends testing_unit_1.default {
81
86
  exports.default = Fixture;
82
87
  testing_unit_1.default.makeAPIListForChildClass(Fixture);
83
88
  module.exports = exports.default;
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvc3RydWN0dXJlL2ZpeHR1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBZ0Q7QUFDaEQsa0VBQXlDO0FBQ3pDLDREQUFtQztBQUNuQywwRUFBc0U7QUFDdEUsa0ZBQXdEO0FBQ3hELCtFQUFxRDtBQUNyRCwrRUFBaUU7QUFDakUsMEZBQTZFO0FBQzdFLG9GQUE0RDtBQUM1RCxrREFBZ0Q7QUFDaEQsOENBQW9EO0FBSXBELDZEQUF5RDtBQU96RCxNQUFxQixPQUFRLFNBQVEsc0JBQVc7SUFTNUMsWUFBb0IsUUFBa0IsRUFBRSxPQUFnQixFQUFFLGVBQWUsR0FBRyxJQUFJO1FBQzVFLE1BQU0sT0FBTyxHQUFHLE9BQU8sSUFBSSx3Q0FBa0IsQ0FBQztRQUU5QyxLQUFLLENBQUMsUUFBUSxFQUFFLG1CQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUVwRCxJQUFJLENBQUMsSUFBSSxHQUFhLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDeEMsSUFBSSxDQUFDLFlBQVksR0FBSyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBTSxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBUyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBVSxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBSSxJQUFJLENBQUM7UUFFM0IsSUFBSSxlQUFlO1lBQ2YsT0FBTyxJQUFJLENBQUMsU0FBK0IsQ0FBQztJQUNwRCxDQUFDO0lBRU0sTUFBTSxDQUFDLElBQUksQ0FBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQXNCO1FBQ3pELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9B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QUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7Q0FDSjtBQXBHRCwwQkFvR0M7QUFFRCxzQkFBVyxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmxhdHRlbkRlZXAgYXMgZmxhdHRlbiB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgVGVzdGluZ1VuaXQgZnJvbSAnLi90ZXN0aW5nLXVuaXQnO1xuaW1wb3J0IFVuaXRUeXBlIGZyb20gJy4vdW5pdC10eXBlJztcbmltcG9ydCB7IGFzc2VydFR5cGUsIGlzIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3J1bnRpbWUvdHlwZS1hc3NlcnRpb25zJztcbmltcG9ydCBoYW5kbGVUYWdBcmdzIGZyb20gJy4uLy4uL3V0aWxzL2hhbmRsZS10YWctYXJncyc7XG5pbXBvcnQgd3JhcFRlc3RGdW5jdGlvbiBmcm9tICcuLi93cmFwLXRlc3QtZnVuY3Rpb24nO1xuaW1wb3J0IGFzc2VydFJlcXVlc3RIb29rVHlwZSBmcm9tICcuLi9yZXF1ZXN0LWhvb2tzL2Fzc2VydC10eXBlJztcbmltcG9ydCBhc3NlcnRDbGllbnRTY3JpcHRUeXBlIGZyb20gJy4uLy4uL2N1c3RvbS1jbGllbnQtc2NyaXB0cy9hc3NlcnQtdHlwZSc7XG5pbXBvcnQgT1BUSU9OX05BTUVTIGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vb3B0aW9uLW5hbWVzJztcbmltcG9ydCB7IEFQSUVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3J1bnRpbWUnO1xuaW1wb3J0IHsgUlVOVElNRV9FUlJPUlMgfSBmcm9tICcuLi8uLi9lcnJvcnMvdHlwZXMnO1xuaW1wb3J0IFRlc3RGaWxlIGZyb20gJy4vdGVzdC1maWxlJztcbmltcG9ydCBSZXF1ZXN0SG9vayBmcm9tICcuLi9yZXF1ZXN0LWhvb2tzL2hvb2snO1xuaW1wb3J0IENsaWVudFNjcmlwdEluaXQgZnJvbSAnLi4vLi4vY3VzdG9tLWNsaWVudC1zY3JpcHRzL2NsaWVudC1zY3JpcHQtaW5pdCc7XG5pbXBvcnQgeyBTUEVDSUFMX0JMQU5LX1BBR0UgfSBmcm9tICd0ZXN0Y2FmZS1oYW1tZXJoZWFkJztcblxuaW50ZXJmYWNlIEZpeHR1cmVJbml0T3B0aW9ucyB7XG4gICAgYmFzZVVybD86IHN0cmluZztcbiAgICB0ZXN0RmlsZTogVGVzdEZpbGU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZpeHR1cmUgZXh0ZW5kcyBUZXN0aW5nVW5pdCB7XG4gICAgcHVibGljIHBhdGg6IHN0cmluZztcbiAgICBwdWJsaWMgYmVmb3JlRWFjaEZuOiBGdW5jdGlvbiB8IG51bGw7XG4gICAgcHVibGljIGFmdGVyRWFjaEZuOiBGdW5jdGlvbiB8IG51bGw7XG4gICAgcHVibGljIGJlZm9yZUZuOiBGdW5jdGlvbiB8IG51bGw7XG4gICAgcHVibGljIGFmdGVyRm46IEZ1bmN0aW9uIHwgbnVsbDtcbiAgICBwdWJsaWMgZ2xvYmFsQmVmb3JlRm46IEZ1bmN0aW9uIHwgbnVsbDtcbiAgICBwdWJsaWMgZ2xvYmFsQWZ0ZXJGbjogRnVuY3Rpb24gfCBudWxsO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yICh0ZXN0RmlsZTogVGVzdEZpbGUsIGJhc2VVcmw/OiBzdHJpbmcsIHJldHVybkFwaU9yaWdpbiA9IHRydWUpIHtcbiAgICAgICAgY29uc3QgcGFnZVVybCA9IGJhc2VVcmwgfHwgU1BFQ0lBTF9CTEFOS19QQUdFO1xuXG4gICAgICAgIHN1cGVyKHRlc3RGaWxlLCBVbml0VHlwZS5maXh0dXJlLCBwYWdlVXJsLCBiYXNlVXJsKTtcblxuICAgICAgICB0aGlzLnBhdGggICAgICAgICAgID0gdGVzdEZpbGUuZmlsZW5hbWU7XG4gICAgICAgIHRoaXMuYmVmb3JlRWFjaEZuICAgPSBudWxsO1xuICAgICAgICB0aGlzLmFmdGVyRWFjaEZuICAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5iZWZvcmVGbiAgICAgICA9IG51bGw7XG4gICAgICAgIHRoaXMuYWZ0ZXJGbiAgICAgICAgPSBudWxsO1xuICAgICAgICB0aGlzLmdsb2JhbEJlZm9yZUZuID0gbnVsbDtcbiAgICAgICAgdGhpcy5nbG9iYWxBZnRlckZuICA9IG51bGw7XG5cbiAgICAgICAgaWYgKHJldHVybkFwaU9yaWdpbilcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbiBhcyB1bmtub3duIGFzIEZpeHR1cmU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpbml0ICh7IHRlc3RGaWxlLCBiYXNlVXJsIH06IEZpeHR1cmVJbml0T3B0aW9ucyk6IEZpeHR1cmUge1xuICAgICAgICByZXR1cm4gc3VwZXIuaW5pdChGaXh0dXJlLCB0ZXN0RmlsZSwgYmFzZVVybCkgYXMgdW5rbm93biBhcyBGaXh0dXJlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfYWRkIChuYW1lOiBzdHJpbmcsIC4uLnJlc3Q6IHVua25vd25bXSk6IEZ1bmN0aW9uIHtcbiAgICAgICAgbmFtZSA9IGhhbmRsZVRhZ0FyZ3MobmFtZSwgcmVzdCk7XG5cbiAgICAgICAgYXNzZXJ0VHlwZShpcy5zdHJpbmcsICdhcGlPcmlnaW4nLCAnVGhlIGZpeHR1cmUgbmFtZScsIG5hbWUpO1xuXG4gICAgICAgIHRoaXMubmFtZSAgICAgICAgICAgICAgICAgICAgPSBuYW1lO1xuICAgICAgICB0aGlzLnRlc3RGaWxlLmN1cnJlbnRGaXh0dXJlID0gdGhpcztcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYmVmb3JlJCAoZm46IEZ1bmN0aW9uKTogRnVuY3Rpb24ge1xuICAgICAgICBhc3NlcnRUeXBlKGlzLmZ1bmN0aW9uLCAnYmVmb3JlJywgJ1RoZSBmaXh0dXJlLmJlZm9yZSBob29rJywgZm4pO1xuXG4gICAgICAgIHRoaXMuYmVmb3JlRm4gPSBmbjtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYWZ0ZXIkIChmbjogRnVuY3Rpb24pOiBGdW5jdGlvbiB7XG4gICAgICAgIGFzc2VydFR5cGUoaXMuZnVuY3Rpb24sICdhZnRlcicsICdUaGUgZml4dHVyZS5hZnRlciBob29rJywgZm4pO1xuXG4gICAgICAgIHRoaXMuYWZ0ZXJGbiA9IGZuO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9iZWZvcmVFYWNoJCAoZm46IEZ1bmN0aW9uKTogRnVuY3Rpb24ge1xuICAgICAgICBhc3NlcnRUeXBlKGlzLmZ1bmN0aW9uLCAnYmVmb3JlRWFjaCcsICdUaGUgZml4dHVyZS5iZWZvcmVFYWNoIGhvb2snLCBmbik7XG5cbiAgICAgICAgdGhpcy5iZWZvcmVFYWNoRm4gPSB3cmFwVGVzdEZ1bmN0aW9uKGZuKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYWZ0ZXJFYWNoJCAoZm46IEZ1bmN0aW9uKTogRnVuY3Rpb24ge1xuICAgICAgICBhc3NlcnRUeXBlKGlzLmZ1bmN0aW9uLCAnYWZ0ZXJFYWNoJywgJ1RoZSBmaXh0dXJlLmFmdGVyRWFjaCBob29rJywgZm4pO1xuXG4gICAgICAgIHRoaXMuYWZ0ZXJFYWNoRm4gPSB3cmFwVGVzdEZ1bmN0aW9uKGZuKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVxdWVzdEhvb2tzJCAoLi4uaG9va3M6IFJlcXVlc3RIb29rW10pOiBGdW5jdGlvbiB7XG4gICAgICAgIGlmICh0aGlzLmFwaU1ldGhvZFdhc0NhbGxlZC5yZXF1ZXN0SG9va3MpXG4gICAgICAgICAgICB0aHJvdyBuZXcgQVBJRXJyb3IoT1BUSU9OX05BTUVTLnJlcXVlc3RIb29rcywgUlVOVElNRV9FUlJPUlMubXVsdGlwbGVBUElNZXRob2RDYWxsRm9yYmlkZGVuLCBPUFRJT05fTkFNRVMucmVxdWVzdEhvb2tzKTtcblxuICAgICAgICBob29rcyA9IGZsYXR0ZW4oaG9va3MpO1xuXG4gICAgICAgIGFzc2VydFJlcXVlc3RIb29rVHlwZShob29rcyk7XG5cbiAgICAgICAgdGhpcy5yZXF1ZXN0SG9va3MgICAgICAgICAgICAgICAgICAgID0gaG9va3M7XG4gICAgICAgIHRoaXMuYXBpTWV0aG9kV2FzQ2FsbGVkLnJlcXVlc3RIb29rcyA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NsaWVudFNjcmlwdHMkICguLi5zY3JpcHRzOiBDbGllbnRTY3JpcHRJbml0W10pOiBGdW5jdGlvbiB7XG4gICAgICAgIGlmICh0aGlzLmFwaU1ldGhvZFdhc0NhbGxlZC5jbGllbnRTY3JpcHRzKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEFQSUVycm9yKE9QVElPTl9OQU1FUy5jbGllbnRTY3JpcHRzLCBSVU5USU1FX0VSUk9SUy5tdWx0aXBsZUFQSU1ldGhvZENhbGxGb3JiaWRkZW4sIE9QVElPTl9OQU1FUy5jbGllbnRTY3JpcHRzKTtcblxuICAgICAgICBzY3JpcHRzID0gZmxhdHRlbihzY3JpcHRzKTtcblxuICAgICAgICBhc3NlcnRDbGllbnRTY3JpcHRUeXBlKHNjcmlwdHMpO1xuXG4gICAgICAgIHRoaXMuY2xpZW50U2NyaXB0cyAgICAgICAgICAgICAgICAgICAgPSBzY3JpcHRzO1xuICAgICAgICB0aGlzLmFwaU1ldGhvZFdhc0NhbGxlZC5jbGllbnRTY3JpcHRzID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxufVxuXG5UZXN0aW5nVW5pdC5tYWtlQVBJTGlzdEZvckNoaWxkQ2xhc3MoRml4dHVyZSk7XG4iXX0=
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvc3RydWN0dXJlL2ZpeHR1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBZ0Q7QUFDaEQsa0VBQXlDO0FBQ3pDLDREQUFtQztBQUNuQywwRUFBc0U7QUFDdEUsa0ZBQXdEO0FBQ3hELCtFQUFxRDtBQUNyRCwrRUFBaUU7QUFDakUsMEZBQTZFO0FBQzdFLG9GQUE0RDtBQUM1RCxrREFBZ0Q7QUFDaEQsOENBQW9EO0FBSXBELDZEQUF5RDtBQU96RCxNQUFxQixPQUFRLFNBQVEsc0JBQVc7SUFVNUMsWUFBb0IsUUFBa0IsRUFBRSxPQUFnQixFQUFFLGVBQWUsR0FBRyxJQUFJO1FBQzVFLE1BQU0sT0FBTyxHQUFHLE9BQU8sSUFBSSx3Q0FBa0IsQ0FBQztRQUU5QyxLQUFLLENBQUMsUUFBUSxFQUFFLG1CQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUVwRCxJQUFJLENBQUMsSUFBSSxHQUFpQixRQUFRLENBQUMsUUFBUSxDQUFDO1FBQzVDLElBQUksQ0FBQyxZQUFZLEdBQVMsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQVUsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxRQUFRLEdBQWEsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxPQUFPLEdBQWMsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxjQUFjLEdBQU8sSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxhQUFhLEdBQVEsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFFaEMsSUFBSSxlQUFlO1lBQ2YsT0FBTyxJQUFJLENBQUMsU0FBK0IsQ0FBQztJQUNwRCxDQUFDO0lBRU0sTUFBTSxDQUFDLElBQUksQ0FBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQXNCO1FBQ3pELE9BQU8sS0FB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LHFCQUFzQixFQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWhDLElBQUksQ0FBQyxhQUFhLEdBQXNCLE9BQU8sQ0FBQztRQUNoRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUU3QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztDQUNKO0FBNUdELDBCQTRHQztBQUVELHNCQUFXLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmbGF0dGVuRGVlcCBhcyBmbGF0dGVuIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBUZXN0aW5nVW5pdCBmcm9tICcuL3Rlc3RpbmctdW5pdCc7XG5pbXBvcnQgVW5pdFR5cGUgZnJvbSAnLi91bml0LXR5cGUnO1xuaW1wb3J0IHsgYXNzZXJ0VHlwZSwgaXMgfSBmcm9tICcuLi8uLi9lcnJvcnMvcnVudGltZS90eXBlLWFzc2VydGlvbnMnO1xuaW1wb3J0IGhhbmRsZVRhZ0FyZ3MgZnJvbSAnLi4vLi4vdXRpbHMvaGFuZGxlLXRhZy1hcmdzJztcbmltcG9ydCB3cmFwVGVzdEZ1bmN0aW9uIGZyb20gJy4uL3dyYXAtdGVzdC1mdW5jdGlvbic7XG5pbXBvcnQgYXNzZXJ0UmVxdWVzdEhvb2tUeXBlIGZyb20gJy4uL3JlcXVlc3QtaG9va3MvYXNzZXJ0LXR5cGUnO1xuaW1wb3J0IGFzc2VydENsaWVudFNjcmlwdFR5cGUgZnJvbSAnLi4vLi4vY3VzdG9tLWNsaWVudC1zY3JpcHRzL2Fzc2VydC10eXBlJztcbmltcG9ydCBPUFRJT05fTkFNRVMgZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9vcHRpb24tbmFtZXMnO1xuaW1wb3J0IHsgQVBJRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvcnMvcnVudGltZSc7XG5pbXBvcnQgeyBSVU5USU1FX0VSUk9SUyB9IGZyb20gJy4uLy4uL2Vycm9ycy90eXBlcyc7XG5pbXBvcnQgVGVzdEZpbGUgZnJvbSAnLi90ZXN0LWZpbGUnO1xuaW1wb3J0IFJlcXVlc3RIb29rIGZyb20gJy4uL3JlcXVlc3QtaG9va3MvaG9vayc7XG5pbXBvcnQgQ2xpZW50U2NyaXB0SW5pdCBmcm9tICcuLi8uLi9jdXN0b20tY2xpZW50LXNjcmlwdHMvY2xpZW50LXNjcmlwdC1pbml0JztcbmltcG9ydCB7IFNQRUNJQUxfQkxBTktfUEFHRSB9IGZyb20gJ3Rlc3RjYWZlLWhhbW1lcmhlYWQnO1xuXG5pbnRlcmZhY2UgRml4dHVyZUluaXRPcHRpb25zIHtcbiAgICBiYXNlVXJsPzogc3RyaW5nO1xuICAgIHRlc3RGaWxlOiBUZXN0RmlsZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRml4dHVyZSBleHRlbmRzIFRlc3RpbmdVbml0IHtcbiAgICBwdWJsaWMgcGF0aDogc3RyaW5nO1xuICAgIHB1YmxpYyBkaXNhYmxlQ29uY3VycmVuY3k6IGJvb2xlYW47XG4gICAgcHVibGljIGJlZm9yZUVhY2hGbjogRnVuY3Rpb24gfCBudWxsO1xuICAgIHB1YmxpYyBhZnRlckVhY2hGbjogRnVuY3Rpb24gfCBudWxsO1xuICAgIHB1YmxpYyBiZWZvcmVGbjogRnVuY3Rpb24gfCBudWxsO1xuICAgIHB1YmxpYyBhZnRlckZuOiBGdW5jdGlvbiB8IG51bGw7XG4gICAgcHVibGljIGdsb2JhbEJlZm9yZUZuOiBGdW5jdGlvbiB8IG51bGw7XG4gICAgcHVibGljIGdsb2JhbEFmdGVyRm46IEZ1bmN0aW9uIHwgbnVsbDtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAodGVzdEZpbGU6IFRlc3RGaWxlLCBiYXNlVXJsPzogc3RyaW5nLCByZXR1cm5BcGlPcmlnaW4gPSB0cnVlKSB7XG4gICAgICAgIGNvbnN0IHBhZ2VVcmwgPSBiYXNlVXJsIHx8IFNQRUNJQUxfQkxBTktfUEFHRTtcblxuICAgICAgICBzdXBlcih0ZXN0RmlsZSwgVW5pdFR5cGUuZml4dHVyZSwgcGFnZVVybCwgYmFzZVVybCk7XG5cbiAgICAgICAgdGhpcy5wYXRoICAgICAgICAgICAgICAgPSB0ZXN0RmlsZS5maWxlbmFtZTtcbiAgICAgICAgdGhpcy5iZWZvcmVFYWNoRm4gICAgICAgPSBudWxsO1xuICAgICAgICB0aGlzLmFmdGVyRWFjaEZuICAgICAgICA9IG51bGw7XG4gICAgICAgIHRoaXMuYmVmb3JlRm4gICAgICAgICAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5hZnRlckZuICAgICAgICAgICAgPSBudWxsO1xuICAgICAgICB0aGlzLmdsb2JhbEJlZm9yZUZuICAgICA9IG51bGw7XG4gICAgICAgIHRoaXMuZ2xvYmFsQWZ0ZXJGbiAgICAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5kaXNhYmxlQ29uY3VycmVuY3kgPSBmYWxzZTtcblxuICAgICAgICBpZiAocmV0dXJuQXBpT3JpZ2luKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luIGFzIHVua25vd24gYXMgRml4dHVyZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGluaXQgKHsgdGVzdEZpbGUsIGJhc2VVcmwgfTogRml4dHVyZUluaXRPcHRpb25zKTogRml4dHVyZSB7XG4gICAgICAgIHJldHVybiBzdXBlci5pbml0KEZpeHR1cmUsIHRlc3RGaWxlLCBiYXNlVXJsKSBhcyB1bmtub3duIGFzIEZpeHR1cmU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9hZGQgKG5hbWU6IHN0cmluZywgLi4ucmVzdDogdW5rbm93bltdKTogRnVuY3Rpb24ge1xuICAgICAgICBuYW1lID0gaGFuZGxlVGFnQXJncyhuYW1lLCByZXN0KTtcblxuICAgICAgICBhc3NlcnRUeXBlKGlzLnN0cmluZywgJ2FwaU9yaWdpbicsICdUaGUgZml4dHVyZSBuYW1lJywgbmFtZSk7XG5cbiAgICAgICAgdGhpcy5uYW1lICAgICAgICAgICAgICAgICAgICA9IG5hbWU7XG4gICAgICAgIHRoaXMudGVzdEZpbGUuY3VycmVudEZpeHR1cmUgPSB0aGlzO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9kaXNhYmxlQ29uY3VycmVuY3kkICgpOiBGdW5jdGlvbiB7XG4gICAgICAgIHRoaXMuZGlzYWJsZUNvbmN1cnJlbmN5ID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYmVmb3JlJCAoZm46IEZ1bmN0aW9uKTogRnVuY3Rpb24ge1xuICAgICAgICBhc3NlcnRUeXBlKGlzLmZ1bmN0aW9uLCAnYmVmb3JlJywgJ1RoZSBmaXh0dXJlLmJlZm9yZSBob29rJywgZm4pO1xuXG4gICAgICAgIHRoaXMuYmVmb3JlRm4gPSBmbjtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYWZ0ZXIkIChmbjogRnVuY3Rpb24pOiBGdW5jdGlvbiB7XG4gICAgICAgIGFzc2VydFR5cGUoaXMuZnVuY3Rpb24sICdhZnRlcicsICdUaGUgZml4dHVyZS5hZnRlciBob29rJywgZm4pO1xuXG4gICAgICAgIHRoaXMuYWZ0ZXJGbiA9IGZuO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9iZWZvcmVFYWNoJCAoZm46IEZ1bmN0aW9uKTogRnVuY3Rpb24ge1xuICAgICAgICBhc3NlcnRUeXBlKGlzLmZ1bmN0aW9uLCAnYmVmb3JlRWFjaCcsICdUaGUgZml4dHVyZS5iZWZvcmVFYWNoIGhvb2snLCBmbik7XG5cbiAgICAgICAgdGhpcy5iZWZvcmVFYWNoRm4gPSB3cmFwVGVzdEZ1bmN0aW9uKGZuKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYWZ0ZXJFYWNoJCAoZm46IEZ1bmN0aW9uKTogRnVuY3Rpb24ge1xuICAgICAgICBhc3NlcnRUeXBlKGlzLmZ1bmN0aW9uLCAnYWZ0ZXJFYWNoJywgJ1RoZSBmaXh0dXJlLmFmdGVyRWFjaCBob29rJywgZm4pO1xuXG4gICAgICAgIHRoaXMuYWZ0ZXJFYWNoRm4gPSB3cmFwVGVzdEZ1bmN0aW9uKGZuKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVxdWVzdEhvb2tzJCAoLi4uaG9va3M6IFJlcXVlc3RIb29rW10pOiBGdW5jdGlvbiB7XG4gICAgICAgIGlmICh0aGlzLmFwaU1ldGhvZFdhc0NhbGxlZC5yZXF1ZXN0SG9va3MpXG4gICAgICAgICAgICB0aHJvdyBuZXcgQVBJRXJyb3IoT1BUSU9OX05BTUVTLnJlcXVlc3RIb29rcywgUlVOVElNRV9FUlJPUlMubXVsdGlwbGVBUElNZXRob2RDYWxsRm9yYmlkZGVuLCBPUFRJT05fTkFNRVMucmVxdWVzdEhvb2tzKTtcblxuICAgICAgICBob29rcyA9IGZsYXR0ZW4oaG9va3MpO1xuXG4gICAgICAgIGFzc2VydFJlcXVlc3RIb29rVHlwZShob29rcyk7XG5cbiAgICAgICAgdGhpcy5yZXF1ZXN0SG9va3MgICAgICAgICAgICAgICAgICAgID0gaG9va3M7XG4gICAgICAgIHRoaXMuYXBpTWV0aG9kV2FzQ2FsbGVkLnJlcXVlc3RIb29rcyA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NsaWVudFNjcmlwdHMkICguLi5zY3JpcHRzOiBDbGllbnRTY3JpcHRJbml0W10pOiBGdW5jdGlvbiB7XG4gICAgICAgIGlmICh0aGlzLmFwaU1ldGhvZFdhc0NhbGxlZC5jbGllbnRTY3JpcHRzKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEFQSUVycm9yKE9QVElPTl9OQU1FUy5jbGllbnRTY3JpcHRzLCBSVU5USU1FX0VSUk9SUy5tdWx0aXBsZUFQSU1ldGhvZENhbGxGb3JiaWRkZW4sIE9QVElPTl9OQU1FUy5jbGllbnRTY3JpcHRzKTtcblxuICAgICAgICBzY3JpcHRzID0gZmxhdHRlbihzY3JpcHRzKTtcblxuICAgICAgICBhc3NlcnRDbGllbnRTY3JpcHRUeXBlKHNjcmlwdHMpO1xuXG4gICAgICAgIHRoaXMuY2xpZW50U2NyaXB0cyAgICAgICAgICAgICAgICAgICAgPSBzY3JpcHRzO1xuICAgICAgICB0aGlzLmFwaU1ldGhvZFdhc0NhbGxlZC5jbGllbnRTY3JpcHRzID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxufVxuXG5UZXN0aW5nVW5pdC5tYWtlQVBJTGlzdEZvckNoaWxkQ2xhc3MoRml4dHVyZSk7XG4iXX0=
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const base_unit_1 = __importDefault(require("./base-unit"));
7
7
  const unit_type_1 = __importDefault(require("./unit-type"));
8
- const BORROWED_TEST_PROPERTIES = ['skip', 'only', 'pageUrl', 'authCredentials'];
8
+ const BORROWED_TEST_PROPERTIES = ['skip', 'only', 'pageUrl', 'authCredentials', 'disableConcurrency'];
9
9
  class TestFile extends base_unit_1.default {
10
10
  constructor(filename) {
11
11
  super(unit_type_1.default.testFile);
@@ -31,4 +31,4 @@ class TestFile extends base_unit_1.default {
31
31
  }
32
32
  exports.default = TestFile;
33
33
  module.exports = exports.default;
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1maWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9zdHJ1Y3R1cmUvdGVzdC1maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNERBQW1DO0FBQ25DLDREQUFtQztBQUluQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztBQUVoRixNQUFxQixRQUFTLFNBQVEsbUJBQVE7SUFLMUMsWUFBb0IsUUFBZ0I7UUFDaEMsS0FBSyxDQUFDLG1CQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFekIsSUFBSSxDQUFDLFFBQVEsR0FBUyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVNLFFBQVE7UUFDWCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMvQix3QkFBd0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3BDLDREQUE0RDtnQkFDNUQsWUFBWTtnQkFDWixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEQsQ0FBQyxDQUFDLENBQUM7WUFFSCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBa0IsQ0FBQztZQUU1QyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxLQUFLLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxXQUFXLENBQUMsa0JBQWtCLENBQUM7WUFFN0QsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0I7Z0JBQ3hCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxXQUFXLENBQUMsa0JBQWtCLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDL0IsQ0FBQztDQUNKO0FBaENELDJCQWdDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCYXNlVW5pdCBmcm9tICcuL2Jhc2UtdW5pdCc7XG5pbXBvcnQgVW5pdFR5cGUgZnJvbSAnLi91bml0LXR5cGUnO1xuaW1wb3J0IEZpeHR1cmUgZnJvbSAnLi9maXh0dXJlJztcbmltcG9ydCBUZXN0IGZyb20gJy4vdGVzdCc7XG5cbmNvbnN0IEJPUlJPV0VEX1RFU1RfUFJPUEVSVElFUyA9IFsnc2tpcCcsICdvbmx5JywgJ3BhZ2VVcmwnLCAnYXV0aENyZWRlbnRpYWxzJ107XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlc3RGaWxlIGV4dGVuZHMgQmFzZVVuaXQge1xuICAgIHB1YmxpYyBmaWxlbmFtZTogc3RyaW5nO1xuICAgIHB1YmxpYyBjdXJyZW50Rml4dHVyZTogRml4dHVyZSB8IG51bGw7XG4gICAgcHVibGljIGNvbGxlY3RlZFRlc3RzOiBUZXN0W107XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKGZpbGVuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoVW5pdFR5cGUudGVzdEZpbGUpO1xuXG4gICAgICAgIHRoaXMuZmlsZW5hbWUgICAgICAgPSBmaWxlbmFtZTtcbiAgICAgICAgdGhpcy5jdXJyZW50Rml4dHVyZSA9IG51bGw7XG4gICAgICAgIHRoaXMuY29sbGVjdGVkVGVzdHMgPSBbXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VGVzdHMgKCk6IFRlc3RbXSB7XG4gICAgICAgIHRoaXMuY29sbGVjdGVkVGVzdHMuZm9yRWFjaCh0ZXN0ID0+IHtcbiAgICAgICAgICAgIEJPUlJPV0VEX1RFU1RfUFJPUEVSVElFUy5mb3JFYWNoKHByb3AgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IGFkZCBpbmRleCBzaWduYXR1cmUgdG8gdGhlIFRlc3QgYW5kIEZpeHR1cmUgY2xhc3Nlc1xuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIHRlc3RbcHJvcF0gPSB0ZXN0W3Byb3BdIHx8IHRlc3QuZml4dHVyZVtwcm9wXTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCB0ZXN0Rml4dHVyZSA9IHRlc3QuZml4dHVyZSBhcyBGaXh0dXJlO1xuXG4gICAgICAgICAgICBpZiAodGVzdC5kaXNhYmxlUGFnZVJlbG9hZHMgPT09IHZvaWQgMClcbiAgICAgICAgICAgICAgICB0ZXN0LmRpc2FibGVQYWdlUmVsb2FkcyA9IHRlc3RGaXh0dXJlLmRpc2FibGVQYWdlUmVsb2FkcztcblxuICAgICAgICAgICAgaWYgKCF0ZXN0LmRpc2FibGVQYWdlQ2FjaGluZylcbiAgICAgICAgICAgICAgICB0ZXN0LmRpc2FibGVQYWdlQ2FjaGluZyA9IHRlc3RGaXh0dXJlLmRpc2FibGVQYWdlQ2FjaGluZztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY29sbGVjdGVkVGVzdHM7XG4gICAgfVxufVxuIl19
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1maWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9zdHJ1Y3R1cmUvdGVzdC1maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNERBQW1DO0FBQ25DLDREQUFtQztBQUluQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztBQUV0RyxNQUFxQixRQUFTLFNBQVEsbUJBQVE7SUFLMUMsWUFBb0IsUUFBZ0I7UUFDaEMsS0FBSyxDQUFDLG1CQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFekIsSUFBSSxDQUFDLFFBQVEsR0FBUyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVNLFFBQVE7UUFDWCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMvQix3QkFBd0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3BDLDREQUE0RDtnQkFDNUQsWUFBWTtnQkFDWixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEQsQ0FBQyxDQUFDLENBQUM7WUFFSCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBa0IsQ0FBQztZQUU1QyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxLQUFLLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxXQUFXLENBQUMsa0JBQWtCLENBQUM7WUFFN0QsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0I7Z0JBQ3hCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxXQUFXLENBQUMsa0JBQWtCLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDL0IsQ0FBQztDQUNKO0FBaENELDJCQWdDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCYXNlVW5pdCBmcm9tICcuL2Jhc2UtdW5pdCc7XG5pbXBvcnQgVW5pdFR5cGUgZnJvbSAnLi91bml0LXR5cGUnO1xuaW1wb3J0IEZpeHR1cmUgZnJvbSAnLi9maXh0dXJlJztcbmltcG9ydCBUZXN0IGZyb20gJy4vdGVzdCc7XG5cbmNvbnN0IEJPUlJPV0VEX1RFU1RfUFJPUEVSVElFUyA9IFsnc2tpcCcsICdvbmx5JywgJ3BhZ2VVcmwnLCAnYXV0aENyZWRlbnRpYWxzJywgJ2Rpc2FibGVDb25jdXJyZW5jeSddO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZXN0RmlsZSBleHRlbmRzIEJhc2VVbml0IHtcbiAgICBwdWJsaWMgZmlsZW5hbWU6IHN0cmluZztcbiAgICBwdWJsaWMgY3VycmVudEZpeHR1cmU6IEZpeHR1cmUgfCBudWxsO1xuICAgIHB1YmxpYyBjb2xsZWN0ZWRUZXN0czogVGVzdFtdO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChmaWxlbmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKFVuaXRUeXBlLnRlc3RGaWxlKTtcblxuICAgICAgICB0aGlzLmZpbGVuYW1lICAgICAgID0gZmlsZW5hbWU7XG4gICAgICAgIHRoaXMuY3VycmVudEZpeHR1cmUgPSBudWxsO1xuICAgICAgICB0aGlzLmNvbGxlY3RlZFRlc3RzID0gW107XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRlc3RzICgpOiBUZXN0W10ge1xuICAgICAgICB0aGlzLmNvbGxlY3RlZFRlc3RzLmZvckVhY2godGVzdCA9PiB7XG4gICAgICAgICAgICBCT1JST1dFRF9URVNUX1BST1BFUlRJRVMuZm9yRWFjaChwcm9wID0+IHtcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBhZGQgaW5kZXggc2lnbmF0dXJlIHRvIHRoZSBUZXN0IGFuZCBGaXh0dXJlIGNsYXNzZXNcbiAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICB0ZXN0W3Byb3BdID0gdGVzdFtwcm9wXSB8fCB0ZXN0LmZpeHR1cmVbcHJvcF07XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgdGVzdEZpeHR1cmUgPSB0ZXN0LmZpeHR1cmUgYXMgRml4dHVyZTtcblxuICAgICAgICAgICAgaWYgKHRlc3QuZGlzYWJsZVBhZ2VSZWxvYWRzID09PSB2b2lkIDApXG4gICAgICAgICAgICAgICAgdGVzdC5kaXNhYmxlUGFnZVJlbG9hZHMgPSB0ZXN0Rml4dHVyZS5kaXNhYmxlUGFnZVJlbG9hZHM7XG5cbiAgICAgICAgICAgIGlmICghdGVzdC5kaXNhYmxlUGFnZUNhY2hpbmcpXG4gICAgICAgICAgICAgICAgdGVzdC5kaXNhYmxlUGFnZUNhY2hpbmcgPSB0ZXN0Rml4dHVyZS5kaXNhYmxlUGFnZUNhY2hpbmc7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmNvbGxlY3RlZFRlc3RzO1xuICAgIH1cbn1cbiJdfQ==
@@ -24,6 +24,7 @@ class TestingUnit extends base_unit_1.default {
24
24
  this.meta = {};
25
25
  this.only = false;
26
26
  this.skip = false;
27
+ this.disableConcurrency = false;
27
28
  this.requestHooks = [];
28
29
  this.clientScripts = [];
29
30
  this.disablePageReloads = void 0;
@@ -113,4 +114,4 @@ exports.default = TestingUnit;
113
114
  // @ts-ignore
114
115
  TestingUnit.API_LIST = (0, delegated_api_1.getDelegatedAPIList)(TestingUnit.prototype);
115
116
  module.exports = exports.default;
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy11bml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9zdHJ1Y3R1cmUvdGVzdGluZy11bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNERBQW1DO0FBQ25DLG9EQUkwQjtBQUMxQixrRkFBd0Q7QUFDeEQsNkRBQTZFO0FBQzdFLDBFQUFzRTtBQUN0RSxzRUFBNkM7QUFDN0Msb0ZBQTREO0FBUzVELCtCQUErQjtBQUMvQiwyRUFBeUY7QUFDekYsa0RBQW9FO0FBRXBFLE1BQThCLFdBQVksU0FBUSxtQkFBUTtJQWlCdEQsWUFBdUIsUUFBa0IsRUFBRSxRQUFrQixFQUFFLE9BQWUsRUFBRSxPQUFnQjtRQUM1RixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFFekIsSUFBSSxDQUFDLElBQUksR0FBYyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBVyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBVyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLElBQUksR0FBYyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBYyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLElBQUksR0FBYyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksR0FBTSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsR0FBSyxFQUFFLENBQUM7UUFFMUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFFaEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksbUJBQVEsQ0FBQyxDQUFDLHNCQUFZLENBQUMsYUFBYSxFQUFFLHNCQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUVoRyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7UUFFbEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLFNBQVMsQ0FBRSxHQUFHLElBQWU7WUFDbkQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDO1FBRUYsWUFBWTtRQUNaLElBQUEsMkJBQVcsRUFBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUlPLFlBQVk7UUFDaEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFFakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFTyxZQUFZO1FBQ2hCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBRWpCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRU8sMEJBQTBCO1FBQzlCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFFL0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFTyx5QkFBeUI7UUFDN0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztRQUVoQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVPLE1BQU0sQ0FBRSxHQUFXLEVBQUUsR0FBRyxJQUFlO1FBQzNDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBQSx5QkFBYSxFQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBQSxjQUFPLEVBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUvRCxNQUFNLElBQUksR0FBRyxJQUFBLDhCQUFjLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTFDLElBQUEsNEJBQVUsRUFBQyxvQkFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1RCxJQUFBLDZCQUFhLEVBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVwQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUEsc0JBQU0sRUFBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRTFDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRU8sY0FBYyxDQUFFLFVBQThHLElBQUk7UUFDdEksSUFBQSw0QkFBVSxFQUFDLENBQUUsb0JBQUUsQ0FBQyxPQUFPLEVBQUUsb0JBQUUsQ0FBQyxhQUFhLEVBQUUsb0JBQUUsQ0FBQyxRQUFRLENBQUUsRUFBRSxjQUFjLEVBQUUsbUNBQW1DLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFeEgsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE9BQU8sQ0FBQztRQUVuQyxJQUFBLGdEQUErQixFQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxzQ0FBNEIsQ0FBQyxDQUFDO1FBRXhGLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRU8sVUFBVSxDQUFFLFdBQTRCO1FBQzVDLElBQUEsNEJBQVUsRUFBQyxvQkFBRSxDQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDekUsSUFBQSw0QkFBVSxFQUFDLG9CQUFFLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxzQkFBc0IsRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEYsSUFBQSw0QkFBVSxFQUFDLG9CQUFFLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxzQkFBc0IsRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFaEYsSUFBSSxXQUFXLENBQUMsTUFBTTtZQUNsQixJQUFBLDRCQUFVLEVBQUMsb0JBQUUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLG9CQUFvQixFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRixJQUFJLFdBQVcsQ0FBQyxXQUFXO1lBQ3ZCLElBQUEsNEJBQVUsRUFBQyxvQkFBRSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUseUJBQXlCLEVBQUUsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTFGLElBQUksQ0FBQyxlQUFlLEdBQUcsV0FBVyxDQUFDO1FBRW5DLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRU8sTUFBTSxDQUFFLEdBQWdDLEVBQUUsS0FBYztRQUM1RCxJQUFBLDRCQUFVLEVBQUMsQ0FBQyxvQkFBRSxDQUFDLE1BQU0sRUFBRSxvQkFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUVoRixNQUFNLElBQUksR0FBRyxPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBeUIsQ0FBQztRQUU5RixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRU8sMEJBQTBCO1FBQzlCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFFL0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFTSxNQUFNLENBQUMsd0JBQXdCLENBQUUsVUFBbUI7UUFDdkQsWUFBWTtRQUNaLFVBQVUsQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBQSxtQ0FBbUIsRUFBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRU0sTUFBTSxDQUFDLElBQUksQ0FBRSxVQUFtQixFQUFFLEdBQUcsU0FBb0I7UUFDNUQsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQWUsRUFBWSxFQUFFO1lBQ3hDLFlBQVk7WUFDWixNQUFNLFNBQVMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLFNBQVMsQ0FBd0IsQ0FBQztZQUV0RSxPQUFPLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQztRQUVGLE1BQU0sVUFBVSxHQUFHLEdBQVksRUFBRTtZQUM3QixZQUFZO1lBQ1osT0FBTyxJQUFJLFVBQVUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUM7UUFFRixZQUFZO1FBQ1osSUFBQSwyQkFBVyxFQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUVyRCxPQUFPLEVBQTRCLENBQUM7SUFDeEMsQ0FBQztDQUNKO0FBekpELDhCQXlKQztBQUVELGFBQWE7QUFDYixXQUFXLENBQUMsUUFBUSxHQUFHLElBQUEsbUNBQW1CLEVBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2VVbml0IGZyb20gJy4vYmFzZS11bml0JztcbmltcG9ydCB7XG4gICAgYXNzZXJ0UGFnZVVybCxcbiAgICBnZXRVcmwsXG4gICAgcHJlcGFyZUJhc2VVcmwsXG59IGZyb20gJy4uL3Rlc3QtcGFnZS11cmwnO1xuaW1wb3J0IGhhbmRsZVRhZ0FyZ3MgZnJvbSAnLi4vLi4vdXRpbHMvaGFuZGxlLXRhZy1hcmdzJztcbmltcG9ydCB7IGRlbGVnYXRlQVBJLCBnZXREZWxlZ2F0ZWRBUElMaXN0IH0gZnJvbSAnLi4vLi4vdXRpbHMvZGVsZWdhdGVkLWFwaSc7XG5pbXBvcnQgeyBhc3NlcnRUeXBlLCBpcyB9IGZyb20gJy4uLy4uL2Vycm9ycy9ydW50aW1lL3R5cGUtYXNzZXJ0aW9ucyc7XG5pbXBvcnQgRmxhZ0xpc3QgZnJvbSAnLi4vLi4vdXRpbHMvZmxhZy1saXN0JztcbmltcG9ydCBPUFRJT05fTkFNRVMgZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9vcHRpb24tbmFtZXMnO1xuaW1wb3J0IFVuaXRUeXBlIGZyb20gJy4vdW5pdC10eXBlJztcbmltcG9ydCBSZXF1ZXN0SG9vayBmcm9tICcuLi9yZXF1ZXN0LWhvb2tzL2hvb2snO1xuaW1wb3J0IENsaWVudFNjcmlwdEluaXQgZnJvbSAnLi4vLi4vY3VzdG9tLWNsaWVudC1zY3JpcHRzL2NsaWVudC1zY3JpcHQtaW5pdCc7XG5pbXBvcnQgVGVzdEZpbGUgZnJvbSAnLi90ZXN0LWZpbGUnO1xuaW1wb3J0IHsgQXV0aENyZWRlbnRpYWxzIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gICAgRGljdGlvbmFyeSwgU2tpcEpzRXJyb3JzQ2FsbGJhY2ssIFNraXBKc0Vycm9yc0NhbGxiYWNrV2l0aE9wdGlvbnNPYmplY3QsXG59IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyB2YWxpZGF0ZVNraXBKc0Vycm9yc09wdGlvblZhbHVlIH0gZnJvbSAnLi4vLi4vdXRpbHMvZ2V0LW9wdGlvbnMvc2tpcC1qcy1lcnJvcnMnO1xuaW1wb3J0IHsgU2tpcEpzRXJyb3JzQXJndW1lbnRBcGlFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9ycy9ydW50aW1lJztcblxuZXhwb3J0IGRlZmF1bHQgYWJzdHJhY3QgY2xhc3MgVGVzdGluZ1VuaXQgZXh0ZW5kcyBCYXNlVW5pdCB7XG4gICAgcHVibGljIHJlYWRvbmx5IHRlc3RGaWxlOiBUZXN0RmlsZTtcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgICBwdWJsaWMgcGFnZVVybDogc3RyaW5nO1xuICAgIHB1YmxpYyBiYXNlVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgcHVibGljIGF1dGhDcmVkZW50aWFsczogbnVsbCB8IEF1dGhDcmVkZW50aWFscztcbiAgICBwdWJsaWMgbWV0YTogTWV0YWRhdGE7XG4gICAgcHVibGljIG9ubHk6IGJvb2xlYW47XG4gICAgcHVibGljIHNraXA6IGJvb2xlYW47XG4gICAgcHVibGljIHJlcXVlc3RIb29rczogUmVxdWVzdEhvb2tbXTtcbiAgICBwdWJsaWMgY2xpZW50U2NyaXB0czogQ2xpZW50U2NyaXB0SW5pdFtdO1xuICAgIHB1YmxpYyBkaXNhYmxlUGFnZVJlbG9hZHM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgcHVibGljIGRpc2FibGVQYWdlQ2FjaGluZzogYm9vbGVhbjtcbiAgICBwdWJsaWMgYXBpTWV0aG9kV2FzQ2FsbGVkOiBGbGFnTGlzdDtcbiAgICBwdWJsaWMgYXBpT3JpZ2luOiBGdW5jdGlvbjtcbiAgICBwdWJsaWMgc2tpcEpzRXJyb3JzT3B0aW9ucz86IGJvb2xlYW4gfCBTa2lwSnNFcnJvcnNPcHRpb25zT2JqZWN0IHwgU2tpcEpzRXJyb3JzQ2FsbGJhY2t8IFNraXBKc0Vycm9yc0NhbGxiYWNrV2l0aE9wdGlvbnNPYmplY3Q7XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IgKHRlc3RGaWxlOiBUZXN0RmlsZSwgdW5pdFR5cGU6IFVuaXRUeXBlLCBwYWdlVXJsOiBzdHJpbmcsIGJhc2VVcmw/OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIodW5pdFR5cGUpO1xuXG4gICAgICAgIHRoaXMudGVzdEZpbGUgPSB0ZXN0RmlsZTtcblxuICAgICAgICB0aGlzLm5hbWUgICAgICAgICAgICA9IG51bGw7XG4gICAgICAgIHRoaXMucGFnZVVybCAgICAgICAgID0gcGFnZVVybDtcbiAgICAgICAgdGhpcy5iYXNlVXJsICAgICAgICAgPSBiYXNlVXJsO1xuICAgICAgICB0aGlzLmF1dGhDcmVkZW50aWFscyA9IG51bGw7XG4gICAgICAgIHRoaXMubWV0YSAgICAgICAgICAgID0ge307XG4gICAgICAgIHRoaXMub25seSAgICAgICAgICAgID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2tpcCAgICAgICAgICAgID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVxdWVzdEhvb2tzICAgID0gW107XG4gICAgICAgIHRoaXMuY2xpZW50U2NyaXB0cyAgID0gW107XG5cbiAgICAgICAgdGhpcy5kaXNhYmxlUGFnZVJlbG9hZHMgPSB2b2lkIDA7XG4gICAgICAgIHRoaXMuZGlzYWJsZVBhZ2VDYWNoaW5nID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5hcGlNZXRob2RXYXNDYWxsZWQgPSBuZXcgRmxhZ0xpc3QoW09QVElPTl9OQU1FUy5jbGllbnRTY3JpcHRzLCBPUFRJT05fTkFNRVMucmVxdWVzdEhvb2tzXSk7XG5cbiAgICAgICAgY29uc3QgdW5pdCA9IHRoaXM7XG5cbiAgICAgICAgdGhpcy5hcGlPcmlnaW4gPSBmdW5jdGlvbiBhcGlPcmlnaW4gKC4uLmFyZ3M6IHVua25vd25bXSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuaXQuX2FkZCguLi5hcmdzKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgZGVsZWdhdGVBUEkodGhpcy5hcGlPcmlnaW4sIHRoaXMuY29uc3RydWN0b3IuQVBJX0xJU1QsIHsgaGFuZGxlcjogdGhpcyB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgX2FkZCAoLi4uYXJnczogdW5rbm93bltdKTogdW5rbm93bjtcblxuICAgIHByaXZhdGUgX29ubHkkZ2V0dGVyICgpOiBGdW5jdGlvbiB7XG4gICAgICAgIHRoaXMub25seSA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NraXAkZ2V0dGVyICgpOiBGdW5jdGlvbiB7XG4gICAgICAgIHRoaXMuc2tpcCA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2Rpc2FibGVQYWdlUmVsb2FkcyRnZXR0ZXIgKCk6IEZ1bmN0aW9uIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlUGFnZVJlbG9hZHMgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9lbmFibGVQYWdlUmVsb2FkcyRnZXR0ZXIgKCk6IEZ1bmN0aW9uIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlUGFnZVJlbG9hZHMgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFnZSQgKHVybDogc3RyaW5nLCAuLi5yZXN0OiB1bmtub3duW10pOiBGdW5jdGlvbiB7XG4gICAgICAgIHRoaXMucGFnZVVybCA9IGhhbmRsZVRhZ0FyZ3ModXJsLCByZXN0KTtcbiAgICAgICAgdGhpcy5iYXNlVXJsID0gdGhpcy5iYXNlVXJsIHx8IGRpcm5hbWUodGhpcy50ZXN0RmlsZS5maWxlbmFtZSk7XG5cbiAgICAgICAgY29uc3QgYmFzZSA9IHByZXBhcmVCYXNlVXJsKHRoaXMuYmFzZVVybCk7XG5cbiAgICAgICAgYXNzZXJ0VHlwZShpcy5zdHJpbmcsICdwYWdlJywgJ1RoZSBwYWdlIFVSTCcsIHRoaXMucGFnZVVybCk7XG4gICAgICAgIGFzc2VydFBhZ2VVcmwodGhpcy5wYWdlVXJsLCAncGFnZScpO1xuXG4gICAgICAgIHRoaXMucGFnZVVybCA9IGdldFVybCh0aGlzLnBhZ2VVcmwsIGJhc2UpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9za2lwSnNFcnJvcnMkIChvcHRpb25zOiBib29sZWFuIHwgU2tpcEpzRXJyb3JzT3B0aW9uc09iamVjdCB8IFNraXBKc0Vycm9yc0NhbGxiYWNrIHwgU2tpcEpzRXJyb3JzQ2FsbGJhY2tXaXRoT3B0aW9uc09iamVjdCA9IHRydWUpOiBGdW5jdGlvbiB7XG4gICAgICAgIGFzc2VydFR5cGUoWyBpcy5ib29sZWFuLCBpcy5ub25OdWxsT2JqZWN0LCBpcy5mdW5jdGlvbiBdLCAnc2tpcEpzRXJyb3JzJywgJ1RoZSBza2lwSnNFcnJvcnMgb3B0aW9ucyBhcmd1bWVudCcsIG9wdGlvbnMpO1xuXG4gICAgICAgIHRoaXMuc2tpcEpzRXJyb3JzT3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICAgICAgdmFsaWRhdGVTa2lwSnNFcnJvcnNPcHRpb25WYWx1ZSh0aGlzLnNraXBKc0Vycm9yc09wdGlvbnMsIFNraXBKc0Vycm9yc0FyZ3VtZW50QXBpRXJyb3IpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9odHRwQXV0aCQgKGNyZWRlbnRpYWxzOiBBdXRoQ3JlZGVudGlhbHMpOiBGdW5jdGlvbiB7XG4gICAgICAgIGFzc2VydFR5cGUoaXMubm9uTnVsbE9iamVjdCwgJ2h0dHBBdXRoJywgJ1RoZSBjcmVkZW50aWFscycsIGNyZWRlbnRpYWxzKTtcbiAgICAgICAgYXNzZXJ0VHlwZShpcy5zdHJpbmcsICdodHRwQXV0aCcsICdjcmVkZW50aWFscy51c2VybmFtZScsIGNyZWRlbnRpYWxzLnVzZXJuYW1lKTtcbiAgICAgICAgYXNzZXJ0VHlwZShpcy5zdHJpbmcsICdodHRwQXV0aCcsICdjcmVkZW50aWFscy5wYXNzd29yZCcsIGNyZWRlbnRpYWxzLnBhc3N3b3JkKTtcblxuICAgICAgICBpZiAoY3JlZGVudGlhbHMuZG9tYWluKVxuICAgICAgICAgICAgYXNzZXJ0VHlwZShpcy5zdHJpbmcsICdodHRwQXV0aCcsICdjcmVkZW50aWFscy5kb21haW4nLCBjcmVkZW50aWFscy5kb21haW4pO1xuICAgICAgICBpZiAoY3JlZGVudGlhbHMud29ya3N0YXRpb24pXG4gICAgICAgICAgICBhc3NlcnRUeXBlKGlzLnN0cmluZywgJ2h0dHBBdXRoJywgJ2NyZWRlbnRpYWxzLndvcmtzdGF0aW9uJywgY3JlZGVudGlhbHMud29ya3N0YXRpb24pO1xuXG4gICAgICAgIHRoaXMuYXV0aENyZWRlbnRpYWxzID0gY3JlZGVudGlhbHM7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luO1xuICAgIH1cblxuICAgIHByaXZhdGUgX21ldGEkIChrZXk6IHN0cmluZyB8IERpY3Rpb25hcnk8c3RyaW5nPiwgdmFsdWU/OiBzdHJpbmcpOiBGdW5jdGlvbiB7XG4gICAgICAgIGFzc2VydFR5cGUoW2lzLnN0cmluZywgaXMubm9uTnVsbE9iamVjdF0sICdtZXRhJywgYCR7dGhpcy51bml0VHlwZX0ubWV0YWAsIGtleSk7XG5cbiAgICAgICAgY29uc3QgZGF0YSA9IHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnID8geyBba2V5XTogdmFsdWUgYXMgc3RyaW5nIH0gOiBrZXkgYXMgRGljdGlvbmFyeTxzdHJpbmc+O1xuXG4gICAgICAgIE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2gocHJvcE5hbWUgPT4ge1xuICAgICAgICAgICAgdGhpcy5tZXRhW3Byb3BOYW1lXSA9IGRhdGFbcHJvcE5hbWVdO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGlzYWJsZVBhZ2VDYWNoaW5nJGdldHRlciAoKTogRnVuY3Rpb24ge1xuICAgICAgICB0aGlzLmRpc2FibGVQYWdlQ2FjaGluZyA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgbWFrZUFQSUxpc3RGb3JDaGlsZENsYXNzIChDaGlsZENsYXNzOiB1bmtub3duKTogdm9pZCB7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBDaGlsZENsYXNzLkFQSV9MSVNUID0gVGVzdGluZ1VuaXQuQVBJX0xJU1QuY29uY2F0KGdldERlbGVnYXRlZEFQSUxpc3QoQ2hpbGRDbGFzcy5wcm90b3R5cGUpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGluaXQgKENoaWxkQ2xhc3M6IHVua25vd24sIC4uLmluaXRQcm9wczogdW5rbm93bltdKTogVGVzdGluZ1VuaXQge1xuICAgICAgICBjb25zdCBmbiA9ICguLi5hcmdzOiB1bmtub3duW10pIDogdW5rbm93biA9PiB7XG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgICAgIGNvbnN0IGFwaU9yaWdpbiA9IG5ldyBDaGlsZENsYXNzKC4uLmluaXRQcm9wcykgYXMgdW5rbm93biBhcyBGdW5jdGlvbjtcblxuICAgICAgICAgICAgcmV0dXJuIGFwaU9yaWdpbiguLi5hcmdzKTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBnZXRIYW5kbGVyID0gKCk6IHVua25vd24gPT4ge1xuICAgICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgICByZXR1cm4gbmV3IENoaWxkQ2xhc3MoLi4uaW5pdFByb3BzLCBmYWxzZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGRlbGVnYXRlQVBJKGZuLCBDaGlsZENsYXNzLkFQSV9MSVNULCB7IGdldEhhbmRsZXIgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZuIGFzIHVua25vd24gYXMgVGVzdGluZ1VuaXQ7XG4gICAgfVxufVxuXG4vLyBAdHMtaWdub3JlXG5UZXN0aW5nVW5pdC5BUElfTElTVCA9IGdldERlbGVnYXRlZEFQSUxpc3QoVGVzdGluZ1VuaXQucHJvdG90eXBlKTtcblxuXG4iXX0=
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy11bml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9zdHJ1Y3R1cmUvdGVzdGluZy11bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNERBQW1DO0FBQ25DLG9EQUkwQjtBQUMxQixrRkFBd0Q7QUFDeEQsNkRBQTZFO0FBQzdFLDBFQUFzRTtBQUN0RSxzRUFBNkM7QUFDN0Msb0ZBQTREO0FBUzVELCtCQUErQjtBQUMvQiwyRUFBeUY7QUFDekYsa0RBQW9FO0FBRXBFLE1BQThCLFdBQVksU0FBUSxtQkFBUTtJQWtCdEQsWUFBdUIsUUFBa0IsRUFBRSxRQUFrQixFQUFFLE9BQWUsRUFBRSxPQUFnQjtRQUM1RixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFFekIsSUFBSSxDQUFDLElBQUksR0FBaUIsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxPQUFPLEdBQWMsT0FBTyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQWMsT0FBTyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxlQUFlLEdBQU0sSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLEdBQWlCLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsSUFBSSxHQUFpQixLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksR0FBaUIsS0FBSyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBUyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGFBQWEsR0FBUSxFQUFFLENBQUM7UUFFN0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFFaEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksbUJBQVEs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QUUsVUFBbUI7UUFDdkQsWUFBWTtRQUNaLFVBQVUsQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBQSxtQ0FBbUIsRUFBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRU0sTUFBTSxDQUFDLElBQUksQ0FBRSxVQUFtQixFQUFFLEdBQUcsU0FBb0I7UUFDNUQsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQWUsRUFBWSxFQUFFO1lBQ3hDLFlBQVk7WUFDWixNQUFNLFNBQVMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLFNBQVMsQ0FBd0IsQ0FBQztZQUV0RSxPQUFPLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQztRQUVGLE1BQU0sVUFBVSxHQUFHLEdBQVksRUFBRTtZQUM3QixZQUFZO1lBQ1osT0FBTyxJQUFJLFVBQVUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUM7UUFFRixZQUFZO1FBQ1osSUFBQSwyQkFBVyxFQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUVyRCxPQUFPLEVBQTRCLENBQUM7SUFDeEMsQ0FBQztDQUNKO0FBNUpELDhCQTRKQztBQUVELGFBQWE7QUFDYixXQUFXLENBQUMsUUFBUSxHQUFHLElBQUEsbUNBQW1CLEVBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2VVbml0IGZyb20gJy4vYmFzZS11bml0JztcbmltcG9ydCB7XG4gICAgYXNzZXJ0UGFnZVVybCxcbiAgICBnZXRVcmwsXG4gICAgcHJlcGFyZUJhc2VVcmwsXG59IGZyb20gJy4uL3Rlc3QtcGFnZS11cmwnO1xuaW1wb3J0IGhhbmRsZVRhZ0FyZ3MgZnJvbSAnLi4vLi4vdXRpbHMvaGFuZGxlLXRhZy1hcmdzJztcbmltcG9ydCB7IGRlbGVnYXRlQVBJLCBnZXREZWxlZ2F0ZWRBUElMaXN0IH0gZnJvbSAnLi4vLi4vdXRpbHMvZGVsZWdhdGVkLWFwaSc7XG5pbXBvcnQgeyBhc3NlcnRUeXBlLCBpcyB9IGZyb20gJy4uLy4uL2Vycm9ycy9ydW50aW1lL3R5cGUtYXNzZXJ0aW9ucyc7XG5pbXBvcnQgRmxhZ0xpc3QgZnJvbSAnLi4vLi4vdXRpbHMvZmxhZy1saXN0JztcbmltcG9ydCBPUFRJT05fTkFNRVMgZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9vcHRpb24tbmFtZXMnO1xuaW1wb3J0IFVuaXRUeXBlIGZyb20gJy4vdW5pdC10eXBlJztcbmltcG9ydCBSZXF1ZXN0SG9vayBmcm9tICcuLi9yZXF1ZXN0LWhvb2tzL2hvb2snO1xuaW1wb3J0IENsaWVudFNjcmlwdEluaXQgZnJvbSAnLi4vLi4vY3VzdG9tLWNsaWVudC1zY3JpcHRzL2NsaWVudC1zY3JpcHQtaW5pdCc7XG5pbXBvcnQgVGVzdEZpbGUgZnJvbSAnLi90ZXN0LWZpbGUnO1xuaW1wb3J0IHsgQXV0aENyZWRlbnRpYWxzIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gICAgRGljdGlvbmFyeSwgU2tpcEpzRXJyb3JzQ2FsbGJhY2ssIFNraXBKc0Vycm9yc0NhbGxiYWNrV2l0aE9wdGlvbnNPYmplY3QsXG59IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyB2YWxpZGF0ZVNraXBKc0Vycm9yc09wdGlvblZhbHVlIH0gZnJvbSAnLi4vLi4vdXRpbHMvZ2V0LW9wdGlvbnMvc2tpcC1qcy1lcnJvcnMnO1xuaW1wb3J0IHsgU2tpcEpzRXJyb3JzQXJndW1lbnRBcGlFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9ycy9ydW50aW1lJztcblxuZXhwb3J0IGRlZmF1bHQgYWJzdHJhY3QgY2xhc3MgVGVzdGluZ1VuaXQgZXh0ZW5kcyBCYXNlVW5pdCB7XG4gICAgcHVibGljIHJlYWRvbmx5IHRlc3RGaWxlOiBUZXN0RmlsZTtcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgICBwdWJsaWMgZGlzYWJsZUNvbmN1cnJlbmN5OiBib29sZWFuO1xuICAgIHB1YmxpYyBwYWdlVXJsOiBzdHJpbmc7XG4gICAgcHVibGljIGJhc2VVcmw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBwdWJsaWMgYXV0aENyZWRlbnRpYWxzOiBudWxsIHwgQXV0aENyZWRlbnRpYWxzO1xuICAgIHB1YmxpYyBtZXRhOiBNZXRhZGF0YTtcbiAgICBwdWJsaWMgb25seTogYm9vbGVhbjtcbiAgICBwdWJsaWMgc2tpcDogYm9vbGVhbjtcbiAgICBwdWJsaWMgcmVxdWVzdEhvb2tzOiBSZXF1ZXN0SG9va1tdO1xuICAgIHB1YmxpYyBjbGllbnRTY3JpcHRzOiBDbGllbnRTY3JpcHRJbml0W107XG4gICAgcHVibGljIGRpc2FibGVQYWdlUmVsb2FkczogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICBwdWJsaWMgZGlzYWJsZVBhZ2VDYWNoaW5nOiBib29sZWFuO1xuICAgIHB1YmxpYyBhcGlNZXRob2RXYXNDYWxsZWQ6IEZsYWdMaXN0O1xuICAgIHB1YmxpYyBhcGlPcmlnaW46IEZ1bmN0aW9uO1xuICAgIHB1YmxpYyBza2lwSnNFcnJvcnNPcHRpb25zPzogYm9vbGVhbiB8IFNraXBKc0Vycm9yc09wdGlvbnNPYmplY3QgfCBTa2lwSnNFcnJvcnNDYWxsYmFja3wgU2tpcEpzRXJyb3JzQ2FsbGJhY2tXaXRoT3B0aW9uc09iamVjdDtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvciAodGVzdEZpbGU6IFRlc3RGaWxlLCB1bml0VHlwZTogVW5pdFR5cGUsIHBhZ2VVcmw6IHN0cmluZywgYmFzZVVybD86IHN0cmluZykge1xuICAgICAgICBzdXBlcih1bml0VHlwZSk7XG5cbiAgICAgICAgdGhpcy50ZXN0RmlsZSA9IHRlc3RGaWxlO1xuXG4gICAgICAgIHRoaXMubmFtZSAgICAgICAgICAgICAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5wYWdlVXJsICAgICAgICAgICAgPSBwYWdlVXJsO1xuICAgICAgICB0aGlzLmJhc2VVcmwgICAgICAgICAgICA9IGJhc2VVcmw7XG4gICAgICAgIHRoaXMuYXV0aENyZWRlbnRpYWxzICAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5tZXRhICAgICAgICAgICAgICAgPSB7fTtcbiAgICAgICAgdGhpcy5vbmx5ICAgICAgICAgICAgICAgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5za2lwICAgICAgICAgICAgICAgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5kaXNhYmxlQ29uY3VycmVuY3kgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZXF1ZXN0SG9va3MgICAgICAgPSBbXTtcbiAgICAgICAgdGhpcy5jbGllbnRTY3JpcHRzICAgICAgPSBbXTtcblxuICAgICAgICB0aGlzLmRpc2FibGVQYWdlUmVsb2FkcyA9IHZvaWQgMDtcbiAgICAgICAgdGhpcy5kaXNhYmxlUGFnZUNhY2hpbmcgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmFwaU1ldGhvZFdhc0NhbGxlZCA9IG5ldyBGbGFnTGlzdChbT1BUSU9OX05BTUVTLmNsaWVudFNjcmlwdHMsIE9QVElPTl9OQU1FUy5yZXF1ZXN0SG9va3NdKTtcblxuICAgICAgICBjb25zdCB1bml0ID0gdGhpcztcblxuICAgICAgICB0aGlzLmFwaU9yaWdpbiA9IGZ1bmN0aW9uIGFwaU9yaWdpbiAoLi4uYXJnczogdW5rbm93bltdKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5pdC5fYWRkKC4uLmFyZ3MpO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBkZWxlZ2F0ZUFQSSh0aGlzLmFwaU9yaWdpbiwgdGhpcy5jb25zdHJ1Y3Rvci5BUElfTElTVCwgeyBoYW5kbGVyOiB0aGlzIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBfYWRkICguLi5hcmdzOiB1bmtub3duW10pOiB1bmtub3duO1xuXG4gICAgcHJpdmF0ZSBfb25seSRnZXR0ZXIgKCk6IEZ1bmN0aW9uIHtcbiAgICAgICAgdGhpcy5vbmx5ID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2tpcCRnZXR0ZXIgKCk6IEZ1bmN0aW9uIHtcbiAgICAgICAgdGhpcy5za2lwID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGlzYWJsZVBhZ2VSZWxvYWRzJGdldHRlciAoKTogRnVuY3Rpb24ge1xuICAgICAgICB0aGlzLmRpc2FibGVQYWdlUmVsb2FkcyA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2VuYWJsZVBhZ2VSZWxvYWRzJGdldHRlciAoKTogRnVuY3Rpb24ge1xuICAgICAgICB0aGlzLmRpc2FibGVQYWdlUmVsb2FkcyA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYWdlJCAodXJsOiBzdHJpbmcsIC4uLnJlc3Q6IHVua25vd25bXSk6IEZ1bmN0aW9uIHtcbiAgICAgICAgdGhpcy5wYWdlVXJsID0gaGFuZGxlVGFnQXJncyh1cmwsIHJlc3QpO1xuICAgICAgICB0aGlzLmJhc2VVcmwgPSB0aGlzLmJhc2VVcmwgfHwgZGlybmFtZSh0aGlzLnRlc3RGaWxlLmZpbGVuYW1lKTtcblxuICAgICAgICBjb25zdCBiYXNlID0gcHJlcGFyZUJhc2VVcmwodGhpcy5iYXNlVXJsKTtcblxuICAgICAgICBhc3NlcnRUeXBlKGlzLnN0cmluZywgJ3BhZ2UnLCAnVGhlIHBhZ2UgVVJMJywgdGhpcy5wYWdlVXJsKTtcbiAgICAgICAgYXNzZXJ0UGFnZVVybCh0aGlzLnBhZ2VVcmwsICdwYWdlJyk7XG5cbiAgICAgICAgdGhpcy5wYWdlVXJsID0gZ2V0VXJsKHRoaXMucGFnZVVybCwgYmFzZSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luO1xuICAgIH1cblxuXG4gICAgcHJpdmF0ZSBfc2tpcEpzRXJyb3JzJCAob3B0aW9uczogYm9vbGVhbiB8IFNraXBKc0Vycm9yc09wdGlvbnNPYmplY3QgfCBTa2lwSnNFcnJvcnNDYWxsYmFjayB8IFNraXBKc0Vycm9yc0NhbGxiYWNrV2l0aE9wdGlvbnNPYmplY3QgPSB0cnVlKTogRnVuY3Rpb24ge1xuICAgICAgICBhc3NlcnRUeXBlKFsgaXMuYm9vbGVhbiwgaXMubm9uTnVsbE9iamVjdCwgaXMuZnVuY3Rpb24gXSwgJ3NraXBKc0Vycm9ycycsICdUaGUgc2tpcEpzRXJyb3JzIG9wdGlvbnMgYXJndW1lbnQnLCBvcHRpb25zKTtcblxuICAgICAgICB0aGlzLnNraXBKc0Vycm9yc09wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgICAgIHZhbGlkYXRlU2tpcEpzRXJyb3JzT3B0aW9uVmFsdWUodGhpcy5za2lwSnNFcnJvcnNPcHRpb25zLCBTa2lwSnNFcnJvcnNBcmd1bWVudEFwaUVycm9yKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaHR0cEF1dGgkIChjcmVkZW50aWFsczogQXV0aENyZWRlbnRpYWxzKTogRnVuY3Rpb24ge1xuICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk51bGxPYmplY3QsICdodHRwQXV0aCcsICdUaGUgY3JlZGVudGlhbHMnLCBjcmVkZW50aWFscyk7XG4gICAgICAgIGFzc2VydFR5cGUoaXMuc3RyaW5nLCAnaHR0cEF1dGgnLCAnY3JlZGVudGlhbHMudXNlcm5hbWUnLCBjcmVkZW50aWFscy51c2VybmFtZSk7XG4gICAgICAgIGFzc2VydFR5cGUoaXMuc3RyaW5nLCAnaHR0cEF1dGgnLCAnY3JlZGVudGlhbHMucGFzc3dvcmQnLCBjcmVkZW50aWFscy5wYXNzd29yZCk7XG5cbiAgICAgICAgaWYgKGNyZWRlbnRpYWxzLmRvbWFpbilcbiAgICAgICAgICAgIGFzc2VydFR5cGUoaXMuc3RyaW5nLCAnaHR0cEF1dGgnLCAnY3JlZGVudGlhbHMuZG9tYWluJywgY3JlZGVudGlhbHMuZG9tYWluKTtcbiAgICAgICAgaWYgKGNyZWRlbnRpYWxzLndvcmtzdGF0aW9uKVxuICAgICAgICAgICAgYXNzZXJ0VHlwZShpcy5zdHJpbmcsICdodHRwQXV0aCcsICdjcmVkZW50aWFscy53b3Jrc3RhdGlvbicsIGNyZWRlbnRpYWxzLndvcmtzdGF0aW9uKTtcblxuICAgICAgICB0aGlzLmF1dGhDcmVkZW50aWFscyA9IGNyZWRlbnRpYWxzO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9tZXRhJCAoa2V5OiBzdHJpbmcgfCBEaWN0aW9uYXJ5PHN0cmluZz4sIHZhbHVlPzogc3RyaW5nKTogRnVuY3Rpb24ge1xuICAgICAgICBhc3NlcnRUeXBlKFtpcy5zdHJpbmcsIGlzLm5vbk51bGxPYmplY3RdLCAnbWV0YScsIGAke3RoaXMudW5pdFR5cGV9Lm1ldGFgLCBrZXkpO1xuXG4gICAgICAgIGNvbnN0IGRhdGEgPSB0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyA/IHsgW2tleV06IHZhbHVlIGFzIHN0cmluZyB9IDoga2V5IGFzIERpY3Rpb25hcnk8c3RyaW5nPjtcblxuICAgICAgICBPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKHByb3BOYW1lID0+IHtcbiAgICAgICAgICAgIHRoaXMubWV0YVtwcm9wTmFtZV0gPSBkYXRhW3Byb3BOYW1lXTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2Rpc2FibGVQYWdlQ2FjaGluZyRnZXR0ZXIgKCk6IEZ1bmN0aW9uIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlUGFnZUNhY2hpbmcgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG1ha2VBUElMaXN0Rm9yQ2hpbGRDbGFzcyAoQ2hpbGRDbGFzczogdW5rbm93bik6IHZvaWQge1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgQ2hpbGRDbGFzcy5BUElfTElTVCA9IFRlc3RpbmdVbml0LkFQSV9MSVNULmNvbmNhdChnZXREZWxlZ2F0ZWRBUElMaXN0KENoaWxkQ2xhc3MucHJvdG90eXBlKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpbml0IChDaGlsZENsYXNzOiB1bmtub3duLCAuLi5pbml0UHJvcHM6IHVua25vd25bXSk6IFRlc3RpbmdVbml0IHtcbiAgICAgICAgY29uc3QgZm4gPSAoLi4uYXJnczogdW5rbm93bltdKSA6IHVua25vd24gPT4ge1xuICAgICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgICBjb25zdCBhcGlPcmlnaW4gPSBuZXcgQ2hpbGRDbGFzcyguLi5pbml0UHJvcHMpIGFzIHVua25vd24gYXMgRnVuY3Rpb247XG5cbiAgICAgICAgICAgIHJldHVybiBhcGlPcmlnaW4oLi4uYXJncyk7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgZ2V0SGFuZGxlciA9ICgpOiB1bmtub3duID0+IHtcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICAgICAgcmV0dXJuIG5ldyBDaGlsZENsYXNzKC4uLmluaXRQcm9wcywgZmFsc2UpO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBkZWxlZ2F0ZUFQSShmbiwgQ2hpbGRDbGFzcy5BUElfTElTVCwgeyBnZXRIYW5kbGVyIH0pO1xuXG4gICAgICAgIHJldHVybiBmbiBhcyB1bmtub3duIGFzIFRlc3RpbmdVbml0O1xuICAgIH1cbn1cblxuLy8gQHRzLWlnbm9yZVxuVGVzdGluZ1VuaXQuQVBJX0xJU1QgPSBnZXREZWxlZ2F0ZWRBUElMaXN0KFRlc3RpbmdVbml0LnByb3RvdHlwZSk7XG5cblxuIl19
@@ -41,7 +41,7 @@ function getUrl(url, base) {
41
41
  throw new Error('Relative urls require a base path');
42
42
  return resolveRelativeUrl(url, base);
43
43
  }
44
- else if (isAbsolute(url))
44
+ if (isAbsolute(url))
45
45
  return (0, url_1.pathToFileURL)(url).toString();
46
46
  return ensureProtocol(url);
47
47
  }
@@ -73,4 +73,4 @@ function assertRoleUrl(url, callsiteName) {
73
73
  throw new runtime_1.APIError(callsiteName, types_1.RUNTIME_ERRORS.roleInitializedWithRelativeUrl);
74
74
  }
75
75
  exports.assertRoleUrl = assertRoleUrl;
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1wYWdlLXVybC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvdGVzdC1wYWdlLXVybC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw2QkFBeUM7QUFDekMsMERBQTJCO0FBQzNCLCtDQUE2QztBQUM3QywyQ0FBaUQ7QUFDakQsNkRBQXlEO0FBQ3pELCtCQUE0QjtBQUU1QixNQUFNLFdBQVcsR0FBYSxxQkFBcUIsQ0FBQztBQUNwRCxNQUFNLHFCQUFxQixHQUFHLGlCQUFpQixDQUFDO0FBQ2hELE1BQU0sb0JBQW9CLEdBQUksT0FBTyxDQUFDO0FBQ3RDLE1BQU0sZ0JBQWdCLEdBQVEsU0FBUyxDQUFDO0FBQ3hDLE1BQU0sb0JBQW9CLEdBQUksV0FBVyxDQUFDO0FBQzFDLE1BQU0sZ0JBQWdCLEdBQVEsYUFBYSxDQUFDO0FBRTVDLFNBQWdCLFVBQVUsQ0FBRSxHQUFXO0lBQ25DLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFGRCxnQ0FFQztBQUVELFNBQVMsVUFBVSxDQUFFLEdBQVc7SUFDNUIsb0VBQW9FO0lBQ3BFLE9BQU8sbUJBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hGLENBQUM7QUFFRCxTQUFnQixrQkFBa0IsQ0FBRSxJQUFZLEVBQUUsSUFBUztJQUN2RCxNQUFNLEdBQUcsR0FBRyxJQUFJLFNBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFaEMsT0FBTyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDMUIsQ0FBQztBQUpELGdEQUlDO0FBRUQsU0FBUyxjQUFjLENBQUUsR0FBVztJQUNoQyxJQUFJLHFCQUFxQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEtBQUssd0NBQWtCO1FBQzdELE9BQU8sR0FBRyxDQUFDO0lBRWYsTUFBTSxRQUFRLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUV0RSxPQUFPLFFBQVEsR0FBRyxHQUFHLENBQUM7QUFDMUIsQ0FBQztBQUVELFNBQWdCLE1BQU0sQ0FBRSxHQUFXLEVBQUUsSUFBVTtJQUMzQyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNqQixJQUFJLENBQUMsSUFBSTtZQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUV6RCxPQUFPLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUN4QztTQUVJLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUNwQixPQUFPLElBQUEsbUJBQWEsRUFBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUV6QyxPQUFPLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvQixDQUFDO0FBWkQsd0JBWUM7QUFFRCxTQUFnQixjQUFjLENBQUUsR0FBVztJQUN2QyxHQUFHLEdBQUcsSUFBQSxXQUFJLEVBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFBLG1CQUFhLEVBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQy9ELENBQUM7QUFIRCx3Q0FHQztBQUVELFNBQWdCLGFBQWEsQ0FBRSxHQUFXLEVBQUUsWUFBb0I7SUFDNUQsY0FBYyxDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUZELHNDQUVDO0FBRUQsU0FBUyxjQUFjLENBQUUsR0FBVyxFQUFFLFlBQW9CLEVBQUUsSUFBWTtJQUNwRSxNQUFNLFFBQVEsR0FBaUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0RCxNQUFNLHNCQUFzQixHQUFHLFFBQVEsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1RSxNQUFNLGlCQUFpQixHQUFRLG1CQUFFLENBQUMsR0FBRyxJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUV4RSxJQUFJLHNCQUFzQixJQUFJLENBQUMsaUJBQWlCLElBQUksR0FBRyxLQUFLLHdDQUFrQjtRQUMxRSxNQUFNLElBQUksa0JBQVEsQ0FBQyxZQUFZLEVBQUUsc0JBQWMsQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUgsQ0FBQztBQUVELFNBQWdCLGFBQWEsQ0FBRSxHQUFXLEVBQUUsWUFBb0I7SUFDNUQsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDO1FBQ2YsTUFBTSxJQUFJLGtCQUFRLENBQUMsWUFBWSxFQUFFLHNCQUFjLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBRTFFLGNBQWMsQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ2xELENBQUM7QUFMRCxzQ0FLQztBQUVELFNBQWdCLGFBQWEsQ0FBRSxHQUFXLEVBQUUsWUFBb0I7SUFDNUQsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDO1FBQ2YsTUFBTSxJQUFJLGtCQUFRLENBQUMsWUFBWSxFQUFFLHNCQUFjLENBQUMsOEJBQThCLENBQUMsQ0FBQztBQUN4RixDQUFDO0FBSEQsc0NBR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVUkwsIHBhdGhUb0ZpbGVVUkwgfSBmcm9tICd1cmwnO1xuaW1wb3J0IE9TIGZyb20gJ29zLWZhbWlseSc7XG5pbXBvcnQgeyBBUElFcnJvciB9IGZyb20gJy4uL2Vycm9ycy9ydW50aW1lJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi4vZXJyb3JzL3R5cGVzJztcbmltcG9ydCB7IFNQRUNJQUxfQkxBTktfUEFHRSB9IGZyb20gJ3Rlc3RjYWZlLWhhbW1lcmhlYWQnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuXG5jb25zdCBQUk9UT0NPTF9SRSAgICAgICAgICAgPSAvXihbXFx3LV0rPykoPz06XFwvXFwvKS87XG5jb25zdCBTVVBQT1JURURfUFJPVE9DT0xfUkUgPSAvXihodHRwcz98ZmlsZSk6LztcbmNvbnN0IElNUExJQ0lUX1BST1RPQ09MX1JFICA9IC9eXFwvXFwvLztcbmNvbnN0IEFCU09MVVRFX1BBVEhfUkUgICAgICA9IC9eXFwvW14vXS87XG5jb25zdCBXSU5fQUJTT0xVVEVfUEFUSF9SRSAgPSAvXlxcdzpbL1xcXFxdLztcbmNvbnN0IFJFTEFUSVZFX1BBVEhfUkUgICAgICA9IC9eXFwuXFwuP1svXFxcXF0vO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNSZWxhdGl2ZSAodXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gUkVMQVRJVkVfUEFUSF9SRS50ZXN0KHVybCk7XG59XG5cbmZ1bmN0aW9uIGlzQWJzb2x1dGUgKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgLy8gTk9URTogcGF0aC5pc0Fic29sdXRlIHRyZWF0cyB0aGUgJy8vZXhhbXBsZS5jb20nIHBhdGggYXMgYWJzb2x1dGVcbiAgICByZXR1cm4gT1Mud2luID8gV0lOX0FCU09MVVRFX1BBVEhfUkUudGVzdCh1cmwpIDogQUJTT0xVVEVfUEFUSF9SRS50ZXN0KHVybCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUmVsYXRpdmVVcmwgKHBhdGg6IHN0cmluZywgYmFzZTogVVJMKTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHBhdGgsIGJhc2UpO1xuXG4gICAgcmV0dXJuIHVybC50b1N0cmluZygpO1xufVxuXG5mdW5jdGlvbiBlbnN1cmVQcm90b2NvbCAodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChTVVBQT1JURURfUFJPVE9DT0xfUkUudGVzdCh1cmwpIHx8IHVybCA9PT0gU1BFQ0lBTF9CTEFOS19QQUdFKVxuICAgICAgICByZXR1cm4gdXJsO1xuXG4gICAgY29uc3QgcHJvdG9jb2wgPSBJTVBMSUNJVF9QUk9UT0NPTF9SRS50ZXN0KHVybCkgPyAnaHR0cDonIDogJ2h0dHA6Ly8nO1xuXG4gICAgcmV0dXJuIHByb3RvY29sICsgdXJsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXJsICh1cmw6IHN0cmluZywgYmFzZT86IFVSTCk6IHN0cmluZyB7XG4gICAgaWYgKGlzUmVsYXRpdmUodXJsKSkge1xuICAgICAgICBpZiAoIWJhc2UpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlbGF0aXZlIHVybHMgcmVxdWlyZSBhIGJhc2UgcGF0aCcpO1xuXG4gICAgICAgIHJldHVybiByZXNvbHZlUmVsYXRpdmVVcmwodXJsLCBiYXNlKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChpc0Fic29sdXRlKHVybCkpXG4gICAgICAgIHJldHVybiBwYXRoVG9GaWxlVVJMKHVybCkudG9TdHJpbmcoKTtcblxuICAgIHJldHVybiBlbnN1cmVQcm90b2NvbCh1cmwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZUJhc2VVcmwgKHVybDogc3RyaW5nKTogVVJMIHtcbiAgICB1cmwgPSBqb2luKHVybCwgJy8nKTtcbiAgICByZXR1cm4gaXNBYnNvbHV0ZSh1cmwpID8gcGF0aFRvRmlsZVVSTCh1cmwpIDogbmV3IFVSTCh1cmwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0UGFnZVVybCAodXJsOiBzdHJpbmcsIGNhbGxzaXRlTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgYXNzZXJ0UHJvdG9jb2wodXJsLCBjYWxsc2l0ZU5hbWUsICd0ZXN0IHBhZ2UgVVJMJyk7XG59XG5cbmZ1bmN0aW9uIGFzc2VydFByb3RvY29sICh1cmw6IHN0cmluZywgY2FsbHNpdGVOYW1lOiBzdHJpbmcsIHdoYXQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHByb3RvY29sICAgICAgICAgICAgICAgPSB1cmwubWF0Y2goUFJPVE9DT0xfUkUpO1xuICAgIGNvbnN0IGhhc1Vuc3VwcG9ydGVkUHJvdG9jb2wgPSBwcm90b2NvbCAmJiAhU1VQUE9SVEVEX1BST1RPQ09MX1JFLnRlc3QodXJsKTtcbiAgICBjb25zdCBpc1dpbkFic29sdXRlUGF0aCAgICAgID0gT1Mud2luICYmIFdJTl9BQlNPTFVURV9QQVRIX1JFLnRlc3QodXJsKTtcblxuICAgIGlmIChoYXNVbnN1cHBvcnRlZFByb3RvY29sICYmICFpc1dpbkFic29sdXRlUGF0aCAmJiB1cmwgIT09IFNQRUNJQUxfQkxBTktfUEFHRSlcbiAgICAgICAgdGhyb3cgbmV3IEFQSUVycm9yKGNhbGxzaXRlTmFtZSwgUlVOVElNRV9FUlJPUlMudW5zdXBwb3J0ZWRVcmxQcm90b2NvbCwgd2hhdCwgdXJsLCB3aGF0LCBwcm90b2NvbCAmJiBwcm90b2NvbFswXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRCYXNlVXJsICh1cmw6IHN0cmluZywgY2FsbHNpdGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoaXNSZWxhdGl2ZSh1cmwpKVxuICAgICAgICB0aHJvdyBuZXcgQVBJRXJyb3IoY2FsbHNpdGVOYW1lLCBSVU5USU1FX0VSUk9SUy5yZWxhdGl2ZUJhc2VVcmwsIHVybCk7XG5cbiAgICBhc3NlcnRQcm90b2NvbCh1cmwsIGNhbGxzaXRlTmFtZSwgJ2Jhc2UgVVJMJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRSb2xlVXJsICh1cmw6IHN0cmluZywgY2FsbHNpdGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoaXNSZWxhdGl2ZSh1cmwpKVxuICAgICAgICB0aHJvdyBuZXcgQVBJRXJyb3IoY2FsbHNpdGVOYW1lLCBSVU5USU1FX0VSUk9SUy5yb2xlSW5pdGlhbGl6ZWRXaXRoUmVsYXRpdmVVcmwpO1xufVxuIl19
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1wYWdlLXVybC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvdGVzdC1wYWdlLXVybC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw2QkFBeUM7QUFDekMsMERBQTJCO0FBQzNCLCtDQUE2QztBQUM3QywyQ0FBaUQ7QUFDakQsNkRBQXlEO0FBQ3pELCtCQUE0QjtBQUU1QixNQUFNLFdBQVcsR0FBYSxxQkFBcUIsQ0FBQztBQUNwRCxNQUFNLHFCQUFxQixHQUFHLGlCQUFpQixDQUFDO0FBQ2hELE1BQU0sb0JBQW9CLEdBQUksT0FBTyxDQUFDO0FBQ3RDLE1BQU0sZ0JBQWdCLEdBQVEsU0FBUyxDQUFDO0FBQ3hDLE1BQU0sb0JBQW9CLEdBQUksV0FBVyxDQUFDO0FBQzFDLE1BQU0sZ0JBQWdCLEdBQVEsYUFBYSxDQUFDO0FBRTVDLFNBQWdCLFVBQVUsQ0FBRSxHQUFXO0lBQ25DLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFGRCxnQ0FFQztBQUVELFNBQVMsVUFBVSxDQUFFLEdBQVc7SUFDNUIsb0VBQW9FO0lBQ3BFLE9BQU8sbUJBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hGLENBQUM7QUFFRCxTQUFnQixrQkFBa0IsQ0FBRSxJQUFZLEVBQUUsSUFBUztJQUN2RCxNQUFNLEdBQUcsR0FBRyxJQUFJLFNBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFaEMsT0FBTyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDMUIsQ0FBQztBQUpELGdEQUlDO0FBRUQsU0FBUyxjQUFjLENBQUUsR0FBVztJQUNoQyxJQUFJLHFCQUFxQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEtBQUssd0NBQWtCO1FBQzdELE9BQU8sR0FBRyxDQUFDO0lBRWYsTUFBTSxRQUFRLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUV0RSxPQUFPLFFBQVEsR0FBRyxHQUFHLENBQUM7QUFDMUIsQ0FBQztBQUVELFNBQWdCLE1BQU0sQ0FBRSxHQUFXLEVBQUUsSUFBVTtJQUMzQyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNqQixJQUFJLENBQUMsSUFBSTtZQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUV6RCxPQUFPLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUN4QztJQUVELElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUNmLE9BQU8sSUFBQSxtQkFBYSxFQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBRXpDLE9BQU8sY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFaRCx3QkFZQztBQUVELFNBQWdCLGNBQWMsQ0FBRSxHQUFXO0lBQ3ZDLEdBQUcsR0FBRyxJQUFBLFdBQUksRUFBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDckIsT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUEsbUJBQWEsRUFBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUhELHdDQUdDO0FBRUQsU0FBZ0IsYUFBYSxDQUFFLEdBQVcsRUFBRSxZQUFvQjtJQUM1RCxjQUFjLENBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSxlQUFlLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRkQsc0NBRUM7QUFFRCxTQUFTLGNBQWMsQ0FBRSxHQUFXLEVBQUUsWUFBb0IsRUFBRSxJQUFZO0lBQ3BFLE1BQU0sUUFBUSxHQUFpQixHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3RELE1BQU0sc0JBQXNCLEdBQUcsUUFBUSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVFLE1BQU0saUJBQWlCLEdBQVEsbUJBQUUsQ0FBQyxHQUFHLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXhFLElBQUksc0JBQXNCLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxHQUFHLEtBQUssd0NBQWtCO1FBQzFFLE1BQU0sSUFBSSxrQkFBUSxDQUFDLFlBQVksRUFBRSxzQkFBYyxDQUFDLHNCQUFzQixFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVEsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxSCxDQUFDO0FBRUQsU0FBZ0IsYUFBYSxDQUFFLEdBQVcsRUFBRSxZQUFvQjtJQUM1RCxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUM7UUFDZixNQUFNLElBQUksa0JBQVEsQ0FBQyxZQUFZLEVBQUUsc0JBQWMsQ0FBQyxlQUFlLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFMUUsY0FBYyxDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDbEQsQ0FBQztBQUxELHNDQUtDO0FBRUQsU0FBZ0IsYUFBYSxDQUFFLEdBQVcsRUFBRSxZQUFvQjtJQUM1RCxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUM7UUFDZixNQUFNLElBQUksa0JBQVEsQ0FBQyxZQUFZLEVBQUUsc0JBQWMsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0FBQ3hGLENBQUM7QUFIRCxzQ0FHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVSTCwgcGF0aFRvRmlsZVVSTCB9IGZyb20gJ3VybCc7XG5pbXBvcnQgT1MgZnJvbSAnb3MtZmFtaWx5JztcbmltcG9ydCB7IEFQSUVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL3J1bnRpbWUnO1xuaW1wb3J0IHsgUlVOVElNRV9FUlJPUlMgfSBmcm9tICcuLi9lcnJvcnMvdHlwZXMnO1xuaW1wb3J0IHsgU1BFQ0lBTF9CTEFOS19QQUdFIH0gZnJvbSAndGVzdGNhZmUtaGFtbWVyaGVhZCc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCc7XG5cbmNvbnN0IFBST1RPQ09MX1JFICAgICAgICAgICA9IC9eKFtcXHctXSs/KSg/PTpcXC9cXC8pLztcbmNvbnN0IFNVUFBPUlRFRF9QUk9UT0NPTF9SRSA9IC9eKGh0dHBzP3xmaWxlKTovO1xuY29uc3QgSU1QTElDSVRfUFJPVE9DT0xfUkUgID0gL15cXC9cXC8vO1xuY29uc3QgQUJTT0xVVEVfUEFUSF9SRSAgICAgID0gL15cXC9bXi9dLztcbmNvbnN0IFdJTl9BQlNPTFVURV9QQVRIX1JFICA9IC9eXFx3OlsvXFxcXF0vO1xuY29uc3QgUkVMQVRJVkVfUEFUSF9SRSAgICAgID0gL15cXC5cXC4/Wy9cXFxcXS87XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JlbGF0aXZlICh1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBSRUxBVElWRV9QQVRIX1JFLnRlc3QodXJsKTtcbn1cblxuZnVuY3Rpb24gaXNBYnNvbHV0ZSAodXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBOT1RFOiBwYXRoLmlzQWJzb2x1dGUgdHJlYXRzIHRoZSAnLy9leGFtcGxlLmNvbScgcGF0aCBhcyBhYnNvbHV0ZVxuICAgIHJldHVybiBPUy53aW4gPyBXSU5fQUJTT0xVVEVfUEFUSF9SRS50ZXN0KHVybCkgOiBBQlNPTFVURV9QQVRIX1JFLnRlc3QodXJsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVSZWxhdGl2ZVVybCAocGF0aDogc3RyaW5nLCBiYXNlOiBVUkwpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwocGF0aCwgYmFzZSk7XG5cbiAgICByZXR1cm4gdXJsLnRvU3RyaW5nKCk7XG59XG5cbmZ1bmN0aW9uIGVuc3VyZVByb3RvY29sICh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKFNVUFBPUlRFRF9QUk9UT0NPTF9SRS50ZXN0KHVybCkgfHwgdXJsID09PSBTUEVDSUFMX0JMQU5LX1BBR0UpXG4gICAgICAgIHJldHVybiB1cmw7XG5cbiAgICBjb25zdCBwcm90b2NvbCA9IElNUExJQ0lUX1BST1RPQ09MX1JFLnRlc3QodXJsKSA/ICdodHRwOicgOiAnaHR0cDovLyc7XG5cbiAgICByZXR1cm4gcHJvdG9jb2wgKyB1cmw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRVcmwgKHVybDogc3RyaW5nLCBiYXNlPzogVVJMKTogc3RyaW5nIHtcbiAgICBpZiAoaXNSZWxhdGl2ZSh1cmwpKSB7XG4gICAgICAgIGlmICghYmFzZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVsYXRpdmUgdXJscyByZXF1aXJlIGEgYmFzZSBwYXRoJyk7XG5cbiAgICAgICAgcmV0dXJuIHJlc29sdmVSZWxhdGl2ZVVybCh1cmwsIGJhc2UpO1xuICAgIH1cblxuICAgIGlmIChpc0Fic29sdXRlKHVybCkpXG4gICAgICAgIHJldHVybiBwYXRoVG9GaWxlVVJMKHVybCkudG9TdHJpbmcoKTtcblxuICAgIHJldHVybiBlbnN1cmVQcm90b2NvbCh1cmwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZUJhc2VVcmwgKHVybDogc3RyaW5nKTogVVJMIHtcbiAgICB1cmwgPSBqb2luKHVybCwgJy8nKTtcbiAgICByZXR1cm4gaXNBYnNvbHV0ZSh1cmwpID8gcGF0aFRvRmlsZVVSTCh1cmwpIDogbmV3IFVSTCh1cmwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0UGFnZVVybCAodXJsOiBzdHJpbmcsIGNhbGxzaXRlTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgYXNzZXJ0UHJvdG9jb2wodXJsLCBjYWxsc2l0ZU5hbWUsICd0ZXN0IHBhZ2UgVVJMJyk7XG59XG5cbmZ1bmN0aW9uIGFzc2VydFByb3RvY29sICh1cmw6IHN0cmluZywgY2FsbHNpdGVOYW1lOiBzdHJpbmcsIHdoYXQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHByb3RvY29sICAgICAgICAgICAgICAgPSB1cmwubWF0Y2goUFJPVE9DT0xfUkUpO1xuICAgIGNvbnN0IGhhc1Vuc3VwcG9ydGVkUHJvdG9jb2wgPSBwcm90b2NvbCAmJiAhU1VQUE9SVEVEX1BST1RPQ09MX1JFLnRlc3QodXJsKTtcbiAgICBjb25zdCBpc1dpbkFic29sdXRlUGF0aCAgICAgID0gT1Mud2luICYmIFdJTl9BQlNPTFVURV9QQVRIX1JFLnRlc3QodXJsKTtcblxuICAgIGlmIChoYXNVbnN1cHBvcnRlZFByb3RvY29sICYmICFpc1dpbkFic29sdXRlUGF0aCAmJiB1cmwgIT09IFNQRUNJQUxfQkxBTktfUEFHRSlcbiAgICAgICAgdGhyb3cgbmV3IEFQSUVycm9yKGNhbGxzaXRlTmFtZSwgUlVOVElNRV9FUlJPUlMudW5zdXBwb3J0ZWRVcmxQcm90b2NvbCwgd2hhdCwgdXJsLCB3aGF0LCBwcm90b2NvbCAmJiBwcm90b2NvbFswXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRCYXNlVXJsICh1cmw6IHN0cmluZywgY2FsbHNpdGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoaXNSZWxhdGl2ZSh1cmwpKVxuICAgICAgICB0aHJvdyBuZXcgQVBJRXJyb3IoY2FsbHNpdGVOYW1lLCBSVU5USU1FX0VSUk9SUy5yZWxhdGl2ZUJhc2VVcmwsIHVybCk7XG5cbiAgICBhc3NlcnRQcm90b2NvbCh1cmwsIGNhbGxzaXRlTmFtZSwgJ2Jhc2UgVVJMJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRSb2xlVXJsICh1cmw6IHN0cmluZywgY2FsbHNpdGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoaXNSZWxhdGl2ZSh1cmwpKVxuICAgICAgICB0aHJvdyBuZXcgQVBJRXJyb3IoY2FsbHNpdGVOYW1lLCBSVU5USU1FX0VSUk9SUy5yb2xlSW5pdGlhbGl6ZWRXaXRoUmVsYXRpdmVVcmwpO1xufVxuIl19
@@ -182,6 +182,8 @@ class BrowserConnection extends events_1.EventEmitter {
182
182
  return new runtime_1.GeneralError(types_1.RUNTIME_ERRORS.browserDisconnected, this.userAgent);
183
183
  }
184
184
  _waitForHeartbeat() {
185
+ if (this._options.developmentMode)
186
+ return;
185
187
  this.heartbeatTimeout = setTimeout(() => {
186
188
  const err = this._createBrowserDisconnectedError();
187
189
  this.status = status_1.default.disconnected;
@@ -433,4 +435,4 @@ class BrowserConnection extends events_1.EventEmitter {
433
435
  }
434
436
  exports.default = BrowserConnection;
435
437
  module.exports = exports.default;
436
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnJvd3Nlci9jb25uZWN0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0RBQTBCO0FBQzFCLDRFQUEyQztBQUMzQyxtQ0FBc0M7QUFDdEMsd0RBQWdDO0FBQ2hDLG1DQUF3QztBQUN4QyxtRUFHc0M7QUFDdEMsMkRBQXNEO0FBQ3RELHNFQUE2QztBQUM3QyxtQ0FBZ0M7QUFDaEMsd0RBQWdDO0FBQ2hDLHNEQUErQztBQUMvQywwRUFBaUQ7QUFDakQsa0RBQWtFO0FBQ2xFLDhDQUFvRDtBQUdwRCxrRkFBeUQ7QUFFekQsc0VBQThDO0FBQzlDLHlGQU1pRDtBQUVqRCx3REFBaUQ7QUFTakQsTUFBTSw4QkFBOEIsR0FBRyxDQUFDLEVBQVUsRUFBVSxFQUFFLENBQUMsK0JBQStCLEVBQUUsRUFBRSxDQUFDO0FBRW5HLE1BQU0sa0JBQWtCLEdBQUcsSUFBQSw2QkFBSSxFQUFDLG9EQUFvRCxDQUFDLENBQUM7QUFtRHRGLE1BQU0sa0NBQWtDLEdBQUc7SUFDdkMsc0JBQXNCLEVBQUUsS0FBSztJQUM3QixlQUFlLEVBQVMsS0FBSztJQUM3QixnQkFBZ0IsRUFBUSxLQUFLO0NBQ2hDLENBQUM7QUFFRixNQUFxQixpQkFBa0IsU0FBUSxxQkFBWTtJQTRDdkQsWUFDSSxPQUFpQyxFQUNqQyxXQUF3QixFQUN4QixTQUFrQixFQUNsQixVQUE2QyxFQUFFLEVBQy9DLFVBQXVCO1FBQ3ZCLEtBQUssRUFBRSxDQUFDO1FBM0NKLG9CQUFlLEdBQW1CLElBQUksQ0FBQztRQVN4QyxRQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ1QsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNaLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFD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Q0FBcUMsQ0FBRSxhQUFpQjtRQUNqRSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMscUNBQXFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRU0sS0FBSyxDQUFDLDBCQUEwQjtRQUNuQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTSxPQUFPO1FBQ1YsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLGdCQUF1QixDQUFDLEtBQUs7WUFDaEQsSUFBSSxDQUFDLE1BQU0sS0FBSyxnQkFBdUIsQ0FBQyxNQUFNO1lBQzlDLElBQUksQ0FBQyxNQUFNLEtBQUssZ0JBQXVCLENBQUMsT0FBTyxDQUFDO0lBQ3hELENBQUM7SUFFTSxVQUFVO1FBQ2IsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVsRSxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFTSx1QkFBdUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVNLG1CQUFtQjtRQUN0QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFTSx5QkFBeUI7UUFDNUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDO0lBQzFDLENBQUM7Q0FDSjtBQTFpQkQsb0NBMGlCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgdGltZUxpbWl0IGZyb20gJ3RpbWUtbGltaXQtcHJvbWlzZSc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdldmVudHMnO1xuaW1wb3J0IE11c3RhY2hlIGZyb20gJ211c3RhY2hlJztcbmltcG9ydCB7IHB1bGwgYXMgcmVtb3ZlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gICAgUGFyc2VkVXNlckFnZW50LFxuICAgIHBhcnNlVXNlckFnZW50LFxufSBmcm9tICcuLi8uLi91dGlscy9wYXJzZS11c2VyLWFnZW50JztcbmltcG9ydCB7IHJlYWRTeW5jIGFzIHJlYWQgfSBmcm9tICdyZWFkLWZpbGUtcmVsYXRpdmUnO1xuaW1wb3J0IHByb21pc2lmeUV2ZW50IGZyb20gJ3Byb21pc2lmeS1ldmVudCc7XG5pbXBvcnQgeyBuYW5vaWQgfSBmcm9tICduYW5vaWQnO1xuaW1wb3J0IENPTU1BTkQgZnJvbSAnLi9jb21tYW5kJztcbmltcG9ydCBCcm93c2VyQ29ubmVjdGlvblN0YXR1cyBmcm9tICcuL3N0YXR1cyc7XG5pbXBvcnQgSGVhcnRiZWF0U3RhdHVzIGZyb20gJy4vaGVhcnRiZWF0LXN0YXR1cyc7XG5pbXBvcnQgeyBHZW5lcmFsRXJyb3IsIFRpbWVvdXRFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9ycy9ydW50aW1lJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3R5cGVzJztcbmltcG9ydCBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkgZnJvbSAnLi9nYXRld2F5JztcbmltcG9ydCBCcm93c2VySm9iIGZyb20gJy4uLy4uL3J1bm5lci9icm93c2VyLWpvYic7XG5pbXBvcnQgV2FybmluZ0xvZyBmcm9tICcuLi8uLi9ub3RpZmljYXRpb25zL3dhcm5pbmctbG9nJztcbmltcG9ydCBCcm93c2VyUHJvdmlkZXIgZnJvbSAnLi4vcHJvdmlkZXInO1xuaW1wb3J0IFNFUlZJQ0VfUk9VVEVTIGZyb20gJy4vc2VydmljZS1yb3V0ZXMnO1xuaW1wb3J0IHtcbiAgICBCUk9XU0VSX1JFU1RBUlRfVElNRU9VVCxcbiAgICBCUk9XU0VSX0NMT1NFX1RJTUVPVVQsXG4gICAgSEVBUlRCRUFUX1RJTUVPVVQsXG4gICAgTE9DQUxfQlJPV1NFUl9JTklUX1RJTUVPVVQsXG4gICAgUkVNT1RFX0JST1dTRVJfSU5JVF9USU1FT1VULFxufSBmcm9tICcuLi8uLi91dGlscy9icm93c2VyLWNvbm5lY3Rpb24tdGltZW91dHMnO1xuaW1wb3J0IE1lc3NhZ2VCdXMgZnJvbSAnLi4vLi4vdXRpbHMvbWVzc2FnZS1idXMnO1xuaW1wb3J0IEJyb3dzZXJDb25uZWN0aW9uVHJhY2tlciBmcm9tICcuL3RyYWNrZXInO1xuaW1wb3J0IFRlc3RSdW4gZnJvbSAnLi4vLi4vdGVzdC1ydW4nO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgVGVzdFJ1biBhcyBMZWdhY3lUZXN0UnVuIH0gZnJvbSAndGVzdGNhZmUtbGVnYWN5LWFwaSc7XG5pbXBvcnQgeyBQcm94eSB9IGZyb20gJ3Rlc3RjYWZlLWhhbW1lcmhlYWQnO1xuaW1wb3J0IHsgTmV4dFRlc3RSdW5JbmZvLCBPcGVuQnJvd3NlckFkZGl0aW9uYWxPcHRpb25zIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3R5cGVzJztcbmltcG9ydCB7IEV2ZW50VHlwZSB9IGZyb20gJy4uLy4uL25hdGl2ZS1hdXRvbWF0aW9uL3R5cGVzJztcbmltcG9ydCBOYXRpdmVBdXRvbWF0aW9uIGZyb20gJy4uLy4uL25hdGl2ZS1hdXRvbWF0aW9uJztcblxuY29uc3QgZ2V0QnJvd3NlckNvbm5lY3Rpb25EZWJ1Z1Njb3BlID0gKGlkOiBzdHJpbmcpOiBzdHJpbmcgPT4gYHRlc3RjYWZlOmJyb3dzZXI6Y29ubmVjdGlvbjoke2lkfWA7XG5cbmNvbnN0IElETEVfUEFHRV9URU1QTEFURSA9IHJlYWQoJy4uLy4uL2NsaWVudC9icm93c2VyL2lkbGUtcGFnZS9pbmRleC5odG1sLm11c3RhY2hlJyk7XG5cblxuaW50ZXJmYWNlIERpc2Nvbm5lY3Rpb25Qcm9taXNlPFQ+IGV4dGVuZHMgUHJvbWlzZTxUPiB7XG4gICAgcmVzb2x2ZTogRnVuY3Rpb247XG4gICAgcmVqZWN0OiBGdW5jdGlvbjtcbn1cblxuaW50ZXJmYWNlIEJyb3dzZXJDb25uZWN0aW9uU3RhdHVzUmVzdWx0IHtcbiAgICBjbWQ6IHN0cmluZztcbiAgICB1cmw6IHN0cmluZztcbiAgICB0ZXN0UnVuSWQ6IHN0cmluZyB8IG51bGw7XG59XG5cbmludGVyZmFjZSBIZWFydGJlYXRTdGF0dXNSZXN1bHQge1xuICAgIGNvZGU6IEhlYXJ0YmVhdFN0YXR1cztcbiAgICB1cmw6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEluaXRTY3JpcHQge1xuICAgIGNvZGU6IHN0cmluZyB8IG51bGw7XG59XG5cbmludGVyZmFjZSBJbml0U2NyaXB0VGFzayBleHRlbmRzIEluaXRTY3JpcHQge1xuICAgIHJlc29sdmU6IEZ1bmN0aW9uO1xufVxuXG5pbnRlcmZhY2UgUHJvdmlkZXJNZXRhSW5mb09wdGlvbnMge1xuICAgIGFwcGVuZFRvVXNlckFnZW50PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCcm93c2VyQ2xvc2luZ0luZm8ge1xuICAgIGlzUmVzdGFydGluZz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnJvd3NlckluZm8ge1xuICAgIGFsaWFzOiBzdHJpbmc7XG4gICAgYnJvd3Nlck5hbWU6IHN0cmluZztcbiAgICBicm93c2VyT3B0aW9uOiB1bmtub3duO1xuICAgIHByb3ZpZGVyTmFtZTogc3RyaW5nO1xuICAgIHByb3ZpZGVyOiBCcm93c2VyUHJvdmlkZXI7XG4gICAgdXNlckFnZW50UHJvdmlkZXJNZXRhSW5mbzogc3RyaW5nO1xuICAgIHBhcnNlZFVzZXJBZ2VudDogUGFyc2VkVXNlckFnZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJyb3dzZXJDb25uZWN0aW9uT3B0aW9ucyB7XG4gICAgZGlzYWJsZU11bHRpcGxlV2luZG93czogYm9vbGVhbjtcbiAgICBkZXZlbG9wbWVudE1vZGU6IGJvb2xlYW47XG4gICAgbmF0aXZlQXV0b21hdGlvbjogYm9vbGVhbjtcbn1cblxuY29uc3QgREVGQVVMVF9CUk9XU0VSX0NPTk5FQ1RJT05fT1BUSU9OUyA9IHtcbiAgICBkaXNhYmxlTXVsdGlwbGVXaW5kb3dzOiBmYWxzZSxcbiAgICBkZXZlbG9wbWVudE1vZGU6ICAgICAgICBmYWxzZSxcbiAgICBuYXRpdmVBdXRvbWF0aW9uOiAgICAgICBmYWxzZSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJyb3dzZXJDb25uZWN0aW9uIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgICBwdWJsaWMgcGVybWFuZW50OiBib29sZWFuO1xuICAgIHB1YmxpYyBwcmV2aW91c0FjdGl2ZVdpbmRvd0lkOiBzdHJpbmcgfCBudWxsO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgSEVBUlRCRUFUX1RJTUVPVVQ6IG51bWJlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IEJST1dTRVJfQ0xPU0VfVElNRU9VVDogbnVtYmVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgQlJPV1NFUl9SRVNUQVJUX1RJTUVPVVQ6IG51bWJlcjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgICBwcml2YXRlIF9jdXJyZW50VGVzdFJ1bjogVGVzdFJ1biB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgam9iUXVldWU6IEJyb3dzZXJKb2JbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluaXRTY3JpcHRzUXVldWU6IEluaXRTY3JpcHRUYXNrW107XG4gICAgcHVibGljIGJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheTogQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5O1xuICAgIHByaXZhdGUgZGlzY29ubmVjdGlvblByb21pc2U6IERpc2Nvbm5lY3Rpb25Qcm9taXNlPHZvaWQ+IHwgbnVsbDtcbiAgICBwcml2YXRlIHRlc3RSdW5BYm9ydGVkOiBib29sZWFuO1xuICAgIHB1YmxpYyBzdGF0dXM6IEJyb3dzZXJDb25uZWN0aW9uU3RhdHVzO1xuICAgIHByaXZhdGUgaGVhcnRiZWF0VGltZW91dDogTm9kZUpTLlRpbWVvdXQgfCBudWxsO1xuICAgIHByaXZhdGUgcGVuZGluZ1Rlc3RSdW5JbmZvOiBOZXh0VGVzdFJ1bkluZm8gfCBudWxsO1xuICAgIHB1YmxpYyB1cmwgPSAnJztcbiAgICBwdWJsaWMgaWRsZVVybCA9ICcnO1xuICAgIHByaXZhdGUgZm9yY2VkSWRsZVVybCA9ICcnO1xuICAgIHByaXZhdGUgaW5pdFNjcmlwdFVybCA9ICcnO1xuICAgIHB1YmxpYyBoZWFydGJlYXRVcmwgPSAnJztcbiAgICBwdWJsaWMgc3RhdHVzVXJsID0gJyc7XG4gICAgcHVibGljIGFjdGl2ZVdpbmRvd0lkVXJsID0gJyc7XG4gICAgcHVibGljIGNsb3NlV2luZG93VXJsID0gJyc7XG4gICAgcHVibGljIHN0YXR1c0RvbmVVcmwgPSAnJztcbiAgICBwdWJsaWMgaGVhcnRiZWF0UmVsYXRpdmVVcmwgPSAnJztcbiAgICBwdWJsaWMgc3RhdHVzUmVsYXRpdmVVcmwgPSAnJztcbiAgICBwdWJsaWMgc3RhdHVzRG9uZVJlbGF0aXZlVXJsID0gJyc7XG4gICAgcHVibGljIGlkbGVSZWxhdGl2ZVVybCA9ICcnO1xuICAgIHB1YmxpYyBvcGVuRmlsZVByb3RvY29sUmVsYXRpdmVVcmwgPSAnJztcbiAgICBwdWJsaWMgb3BlbkZpbGVQcm90b2NvbFVybCA9ICcnO1xuICAgIHB1YmxpYyBkaXNwYXRjaE5hdGl2ZUF1dG9tYXRpb25FdmVudFJlbGF0aXZlVXJsID0gJyc7XG4gICAgcHVibGljIGRpc3BhdGNoTmF0aXZlQXV0b21hdGlvbkV2ZW50U2VxdWVuY2VSZWxhdGl2ZVVybCA9ICcnO1xuICAgIHB1YmxpYyBwYXJzZVNlbGVjdG9yUmVsYXRpdmVVcmwgPSAnJztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlYnVnTG9nZ2VyOiBkZWJ1Zy5EZWJ1Z2dlcjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgd2FybmluZ0xvZzogV2FybmluZ0xvZztcbiAgICBwcml2YXRlIF9tZXNzYWdlQnVzPzogTWVzc2FnZUJ1cztcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vcHRpb25zOiBCcm93c2VyQ29ubmVjdGlvbk9wdGlvbnM7XG5cbiAgICBwdWJsaWMgaWRsZTogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBicm93c2VySW5mbzogQnJvd3NlckluZm87XG4gICAgcHVibGljIHByb3ZpZGVyOiBhbnk7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKFxuICAgICAgICBnYXRld2F5OiBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXksXG4gICAgICAgIGJyb3dzZXJJbmZvOiBCcm93c2VySW5mbyxcbiAgICAgICAgcGVybWFuZW50OiBib29sZWFuLFxuICAgICAgICBvcHRpb25zOiBQYXJ0aWFsPEJyb3dzZXJDb25uZWN0aW9uT3B0aW9ucz4gPSB7fSxcbiAgICAgICAgbWVzc2FnZUJ1cz86IE1lc3NhZ2VCdXMpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICB0aGlzLkhFQVJUQkVBVF9USU1FT1VUICAgICAgID0gSEVBUlRCRUFUX1RJTUVPVVQ7XG4gICAgICAgIHRoaXMuQlJPV1NFUl9DTE9TRV9USU1FT1VUICAgPSBCUk9XU0VSX0NMT1NFX1RJTUVPVVQ7XG4gICAgICAgIHRoaXMuQlJPV1NFUl9SRVNUQVJUX1RJTUVPVVQgPSBCUk9XU0VSX1JFU1RBUlRfVElNRU9VVDtcblxuICAgICAgICB0aGlzLmlkICAgICAgICAgICAgICAgICAgICAgICA9IEJyb3dzZXJDb25uZWN0aW9uLl9nZW5lcmF0ZUlkKCk7XG4gICAgICAgIHRoaXMuam9iUXVldWUgICAgICAgICAgICAgICAgID0gW107XG4gICAgICAgIHRoaXMuaW5pdFNjcmlwdHNRdWV1ZSAgICAgICAgID0gW107XG4gICAgICAgIHRoaXMuYnJvd3NlckNvbm5lY3Rpb25HYXRld2F5ID0gZ2F0ZXdheTtcbiAgICAgICAgdGhpcy5kaXNjb25uZWN0aW9uUHJvbWlzZSAgICAgPSBudWxsO1xuICAgICAgICB0aGlzLnRlc3RSdW5BYm9ydGVkICAgICAgICAgICA9IGZhbHNlO1xuICAgICAgICB0aGlzLndhcm5pbmdMb2cgICAgICAgICAgICAgICA9IG5ldyBXYXJuaW5nTG9nKG51bGwsIFdhcm5pbmdMb2cuY3JlYXRlQWRkV2FybmluZ0NhbGxiYWNrKG1lc3NhZ2VCdXMpKTtcbiAgICAgICAgdGhpcy5kZWJ1Z0xvZ2dlciAgICAgICAgICAgICAgPSBkZWJ1ZyhnZXRCcm93c2VyQ29ubmVjdGlvbkRlYnVnU2NvcGUodGhpcy5pZCkpO1xuXG4gICAgICAgIGlmIChtZXNzYWdlQnVzKSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VCdXMgPSBtZXNzYWdlQnVzO1xuXG4gICAgICAgICAgICB0aGlzLmluaXRNZXNzYWdlQnVzKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJyb3dzZXJJbmZvICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBicm93c2VySW5mbztcbiAgICAgICAgdGhpcy5icm93c2VySW5mby51c2VyQWdlbnRQcm92aWRlck1ldGFJbmZvID0gJyc7XG5cbiAgICAgICAgdGhpcy5wcm92aWRlciA9IGJyb3dzZXJJbmZvLnByb3ZpZGVyO1xuXG4gICAgICAgIHRoaXMucGVybWFuZW50ICAgICAgICAgICAgICA9IHBlcm1hbmVudDtcbiAgICAgICAgdGhpcy5zdGF0dXMgICAgICAgICAgICAgICAgID0gQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMudW5pbml0aWFsaXplZDtcbiAgICAgICAgdGhpcy5pZGxlICAgICAgICAgICAgICAgICAgID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5oZWFydGJlYXRUaW1lb3V0ICAgICAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5wZW5kaW5nVGVzdFJ1bkluZm8gICAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyAgICAgICAgICAgICAgID0gdGhpcy5fY2FsY3VsYXRlUmVzdWx0T3B0aW9ucyhvcHRpb25zKTtcblxuICAgICAgICB0aGlzLl9zZXRFdmVudEhhbmRsZXJzKCk7XG5cbiAgICAgICAgQnJvd3NlckNvbm5lY3Rpb25UcmFja2VyLmFkZCh0aGlzKTtcblxuICAgICAgICB0aGlzLnByZXZpb3VzQWN0aXZlV2luZG93SWQgPSBudWxsO1xuXG4gICAgICAgIHRoaXMuYnJvd3NlckNvbm5lY3Rpb25HYXRld2F5LnN0YXJ0U2VydmluZ0Nvbm5lY3Rpb24odGhpcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlUmVzdWx0T3B0aW9ucyAob3B0aW9uczogUGFydGlhbDxCcm93c2VyQ29ubmVjdGlvbk9wdGlvbnM+KTogQnJvd3NlckNvbm5lY3Rpb25PcHRpb25zIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfQlJPV1NFUl9DT05ORUNUSU9OX09QVElPTlMsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2J1aWxkQ29tbXVuaWNhdGlvblVybHMgKHByb3h5OiBQcm94eSk6IHZvaWQge1xuICAgICAgICB0aGlzLnVybCAgICAgICAgICAgPSBwcm94eS5yZXNvbHZlUmVsYXRpdmVTZXJ2aWNlVXJsKGAke1NFUlZJQ0VfUk9VVEVTLmNvbm5lY3R9LyR7dGhpcy5pZH1gKTtcbiAgICAgICAgdGhpcy5mb3JjZWRJZGxlVXJsID0gcHJveHkucmVzb2x2ZVJlbGF0aXZlU2VydmljZVVybChgJHtTRVJWSUNFX1JPVVRFUy5pZGxlRm9yY2VkfS8ke3RoaXMuaWR9YCk7XG4gICAgICAgIHRoaXMuaW5pdFNjcmlwdFVybCA9IHByb3h5LnJlc29sdmVSZWxhdGl2ZVNlcnZpY2VVcmwoYCR7U0VSVklDRV9ST1VURVMuaW5pdFNjcmlwdH0vJHt0aGlzLmlkfWApO1xuXG4gICAgICAgIHRoaXMuaGVhcnRiZWF0UmVsYXRpdmVVcmwgICAgICAgICAgICAgICAgICAgICAgPSBgJHtTRVJWSUNFX1JPVVRFUy5oZWFydGJlYXR9LyR7dGhpcy5pZH1gO1xuICAgICAgICB0aGlzLnN0YXR1c1JlbGF0aXZlVXJsICAgICAgICAgICAgICAgICAgICAgICAgID0gYCR7U0VSVklDRV9ST1VURVMuc3RhdHVzfS8ke3RoaXMuaWR9YDtcbiAgICAgICAgdGhpcy5zdGF0dXNEb25lUmVsYXRpdmVVcmwgICAgICAgICAgICAgICAgICAgICA9IGAke1NFUlZJQ0VfUk9VVEVTLnN0YXR1c0RvbmV9LyR7dGhpcy5pZH1gO1xuICAgICAgICB0aGlzLmlkbGVSZWxhdGl2ZVVybCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYCR7U0VSVklDRV9ST1VURVMuaWRsZX0vJHt0aGlzLmlkfWA7XG4gICAgICAgIHRoaXMuYWN0aXZlV2luZG93SWRVcmwgICAgICAgICAgICAgICAgICAgICAgICAgPSBgJHtTRVJWSUNFX1JPVVRFUy5hY3RpdmVXaW5kb3dJZH0vJHt0aGlzLmlkfWA7XG4gICAgICAgIHRoaXMuY2xvc2VXaW5kb3dVcmwgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBgJHtTRVJWSUNFX1JPVVRFUy5jbG9zZVdpbmRvd30vJHt0aGlzLmlkfWA7XG4gICAgICAgIHRoaXMub3BlbkZpbGVQcm90b2NvbFJlbGF0aXZlVXJsICAgICAgICAgICAgICAgPSBgJHtTRVJWSUNFX1JPVVRFUy5vcGVuRmlsZVByb3RvY29sfS8ke3RoaXMuaWR9YDtcbiAgICAgICAgdGhpcy5kaXNwYXRjaE5hdGl2ZUF1dG9tYXRpb25FdmVudFJlbGF0aXZlVXJsICAgICAgICAgPSBgJHtTRVJWSUNFX1JPVVRFUy5kaXNwYXRjaE5hdGl2ZUF1dG9tYXRpb25FdmVudH0vJHt0aGlzLmlkfWA7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hOYXRpdmVBdXRvbWF0aW9uRXZlbnRTZXF1ZW5jZVJlbGF0aXZlVXJsID0gYCR7U0VSVklDRV9ST1VURVMuZGlzcGF0Y2hOYXRpdmVBdXRvbWF0aW9uRXZlbnRTZXF1ZW5jZX0vJHt0aGlzLmlkfWA7XG4gICAgICAgIHRoaXMucGFyc2VTZWxlY3RvclJlbGF0aXZlVXJsICAgICAgICAgICAgICAgICAgICAgICAgID0gYCR7U0VSVklDRV9ST1VURVMucGFyc2VTZWxlY3Rvcn0vJHt0aGlzLmlkfWA7XG5cbiAgICAgICAgdGhpcy5pZGxlVXJsICAgICAgICAgICAgID0gcHJveHkucmVzb2x2ZVJlbGF0aXZlU2VydmljZVVybCh0aGlzLmlkbGVSZWxhdGl2ZVVybCk7XG4gICAgICAgIHRoaXMuaGVhcnRiZWF0VXJsICAgICAgICA9IHByb3h5LnJlc29sdmVSZWxhdGl2ZVNlcnZpY2VVcmwodGhpcy5oZWFydGJlYXRSZWxhdGl2ZVVybCk7XG4gICAgICAgIHRoaXMuc3RhdHVzVXJsICAgICAgICAgICA9IHByb3h5LnJlc29sdmVSZWxhdGl2ZVNlcnZpY2VVcmwodGhpcy5zdGF0dXNSZWxhdGl2ZVVybCk7XG4gICAgICAgIHRoaXMuc3RhdHVzRG9uZVVybCAgICAgICA9IHByb3h5LnJlc29sdmVSZWxhdGl2ZVNlcnZpY2VVcmwodGhpcy5zdGF0dXNEb25lUmVsYXRpdmVVcmwpO1xuICAgICAgICB0aGlzLm9wZW5GaWxlUHJvdG9jb2xVcmwgPSBwcm94eS5yZXNvbHZlUmVsYXRpdmVTZXJ2aWNlVXJsKHRoaXMub3BlbkZpbGVQcm90b2NvbFJlbGF0aXZlVXJsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5pdE1lc3NhZ2VCdXMgKCk6IHZvaWQge1xuICAgICAgICB0aGlzLndhcm5pbmdMb2cuY2FsbGJhY2sgPSBXYXJuaW5nTG9nLmNyZWF0ZUFkZFdhcm5pbmdDYWxsYmFjayh0aGlzLl9tZXNzYWdlQnVzKTtcblxuICAgICAgICB0aGlzLmFzc2lnblRlc3RSdW5TdGFydEV2ZW50TGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy5lbWl0KCdtZXNzYWdlLWJ1cy1pbml0aWFsaXplZCcsIHRoaXMuX21lc3NhZ2VCdXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3NpZ25UZXN0UnVuU3RhcnRFdmVudExpc3RlbmVyICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9tZXNzYWdlQnVzKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuX21lc3NhZ2VCdXMub24oJ3Rlc3QtcnVuLXN0YXJ0JywgdGVzdFJ1biA9PiB7XG4gICAgICAgICAgICBpZiAodGVzdFJ1bi5icm93c2VyQ29ubmVjdGlvbi5pZCA9PT0gdGhpcy5pZClcbiAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50VGVzdFJ1biA9IHRlc3RSdW47XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgbWVzc2FnZUJ1cyAobWVzc2FnZUJ1czogTWVzc2FnZUJ1cyB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9tZXNzYWdlQnVzID0gbWVzc2FnZUJ1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1lc3NhZ2VCdXMgKCk6IE1lc3NhZ2VCdXMgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWVzc2FnZUJ1cztcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRFdmVudEhhbmRsZXJzICgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbignZXJyb3InLCBlID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGVidWdMb2dnZXIoZSk7XG4gICAgICAgICAgICB0aGlzLl9mb3JjZUlkbGUoKTtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZm9yIChjb25zdCBuYW1lIGluIEJyb3dzZXJDb25uZWN0aW9uU3RhdHVzKSB7XG4gICAgICAgICAgICBjb25zdCBzdGF0dXMgPSBCcm93c2VyQ29ubmVjdGlvblN0YXR1c1tuYW1lIGFzIGtleW9mIHR5cGVvZiBCcm93c2VyQ29ubmVjdGlvblN0YXR1c107XG5cbiAgICAgICAgICAgIHRoaXMub24oc3RhdHVzLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWJ1Z0xvZ2dlcihgc3RhdHVzIGNoYW5nZWQgdG8gJyR7c3RhdHVzfSdgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX2dlbmVyYXRlSWQgKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBuYW5vaWQoNyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0QWRkaXRpb25hbEJyb3dzZXJPcHRpb25zICgpOiBPcGVuQnJvd3NlckFkZGl0aW9uYWxPcHRpb25zIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRpc2FibGVNdWx0aXBsZVdpbmRvd3M6IHRoaXMuX29wdGlvbnMuZGlzYWJsZU11bHRpcGxlV2luZG93cyxcbiAgICAgICAgICAgIG5hdGl2ZUF1dG9tYXRpb246ICAgICAgIHRoaXMuX29wdGlvbnMubmF0aXZlQXV0b21hdGlvbixcbiAgICAgICAgICAgIGRldmVsb3BtZW50TW9kZTogICAgICAgIHRoaXMuX29wdGlvbnMuZGV2ZWxvcG1lbnRNb2RlLFxuICAgICAgICAgICAgc2VydmljZURvbWFpbnM6ICAgICAgICAgW1xuICAgICAgICAgICAgICAgIHRoaXMuYnJvd3NlckNvbm5lY3Rpb25HYXRld2F5LnByb3h5LnNlcnZlcjFJbmZvLmRvbWFpbixcbiAgICAgICAgICAgICAgICB0aGlzLmJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5wcm94eS5zZXJ2ZXIySW5mby5kb21haW4sXG4gICAgICAgICAgICBdLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3J1bkJyb3dzZXIgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgYWRkaXRpb25hbE9wdGlvbnMgPSB0aGlzLl9nZXRBZGRpdGlvbmFsQnJvd3Nlck9wdGlvbnMoKTtcblxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm92aWRlci5vcGVuQnJvd3Nlcih0aGlzLmlkLCB0aGlzLnVybCwgdGhpcy5icm93c2VySW5mby5icm93c2VyT3B0aW9uLCBhZGRpdGlvbmFsT3B0aW9ucyk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyAhPT0gQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMucmVhZHkpXG4gICAgICAgICAgICAgICAgYXdhaXQgcHJvbWlzaWZ5RXZlbnQodGhpcywgJ3JlYWR5Jyk7XG5cbiAgICAgICAgICAgIHRoaXMuc3RhdHVzID0gQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMub3BlbmVkO1xuICAgICAgICAgICAgdGhpcy5lbWl0KCdvcGVuZWQnKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgICAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBuZXcgR2VuZXJhbEVycm9yKFxuICAgICAgICAgICAgICAgIFJVTlRJTUVfRVJST1JTLnVuYWJsZVRvT3BlbkJyb3dzZXIsXG4gICAgICAgICAgICAgICAgdGhpcy5icm93c2VySW5mby5wcm92aWRlck5hbWUgKyAnOicgKyB0aGlzLmJyb3dzZXJJbmZvLmJyb3dzZXJOYW1lLFxuICAgICAgICAgICAgICAgIGVyci5zdGFja1xuICAgICAgICAgICAgKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9jbG9zZUJyb3dzZXIgKGRhdGE6IEJyb3dzZXJDbG9zaW5nSW5mbyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghdGhpcy5pZGxlKVxuICAgICAgICAgICAgYXdhaXQgcHJvbWlzaWZ5RXZlbnQodGhpcywgJ2lkbGUnKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm92aWRlci5jbG9zZUJyb3dzZXIodGhpcy5pZCwgZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgLy8gTk9URTogQSB3YXJuaW5nIHdvdWxkIGJlIHJlYWxseSBuaWNlIGhlcmUsIGJ1dCBpdCBjYW4ndCBiZSBkb25lIHdoaWxlIGxvZyBpcyBzdG9yZWQgaW4gYSB0YXNrLlxuICAgICAgICAgICAgdGhpcy5kZWJ1Z0xvZ2dlcihlcnIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZm9yY2VJZGxlICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlkbGUpIHtcbiAgICAgICAgICAgIHRoaXMuaWRsZSA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMuZW1pdCgnaWRsZScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY3JlYXRlQnJvd3NlckRpc2Nvbm5lY3RlZEVycm9yICgpOiBHZW5lcmFsRXJyb3Ige1xuICAgICAgICByZXR1cm4gbmV3IEdlbmVyYWxFcnJvcihSVU5USU1FX0VSUk9SUy5icm93c2VyRGlzY29ubmVjdGVkLCB0aGlzLnVzZXJBZ2VudCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfd2FpdEZvckhlYXJ0YmVhdCAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGVhcnRiZWF0VGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZXJyID0gdGhpcy5fY3JlYXRlQnJvd3NlckRpc2Nvbm5lY3RlZEVycm9yKCk7XG5cbiAgICAgICAgICAgIHRoaXMuc3RhdHVzICAgICAgICAgPSBCcm93c2VyQ29ubmVjdGlvblN0YXR1cy5kaXNjb25uZWN0ZWQ7XG4gICAgICAgICAgICB0aGlzLnRlc3RSdW5BYm9ydGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5lbWl0KCdkaXNjb25uZWN0ZWQnLCBlcnIpO1xuXG4gICAgICAgICAgICB0aGlzLl9yZXN0YXJ0QnJvd3Nlck9uRGlzY29ubmVjdChlcnIpO1xuICAgICAgICB9LCB0aGlzLkhFQVJUQkVBVF9USU1FT1VUKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9nZXRUZXN0UnVuSW5mbyAobmVlZFBvcE5leHQ6IGJvb2xlYW4pOiBQcm9taXNlPE5leHRUZXN0UnVuSW5mbz4ge1xuICAgICAgICBpZiAobmVlZFBvcE5leHQgfHwgIXRoaXMucGVuZGluZ1Rlc3RSdW5JbmZvKVxuICAgICAgICAgICAgdGhpcy5wZW5kaW5nVGVzdFJ1bkluZm8gPSBhd2FpdCB0aGlzLl9wb3BOZXh0VGVzdFJ1bkluZm8oKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5wZW5kaW5nVGVzdFJ1bkluZm8gYXMgTmV4dFRlc3RSdW5JbmZvO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3BvcE5leHRUZXN0UnVuSW5mbyAoKTogUHJvbWlzZTxOZXh0VGVzdFJ1bkluZm8gfCBudWxsPiB7XG4gICAgICAgIHdoaWxlICh0aGlzLmhhc1F1ZXVlZEpvYnMgJiYgIXRoaXMuY3VycmVudEpvYi5oYXNRdWV1ZWRUZXN0UnVucylcbiAgICAgICAgICAgIHRoaXMuam9iUXVldWUuc2hpZnQoKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5oYXNRdWV1ZWRKb2JzID8gYXdhaXQgdGhpcy5jdXJyZW50Sm9iLnBvcE5leHRUZXN0UnVuSW5mbyh0aGlzKSA6IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEN1cnJlbnRUZXN0UnVuICgpOiBMZWdhY3lUZXN0UnVuIHwgVGVzdFJ1biB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFRlc3RSdW47XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRCeUlkIChpZDogc3RyaW5nKTogQnJvd3NlckNvbm5lY3Rpb24gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIEJyb3dzZXJDb25uZWN0aW9uVHJhY2tlci5hY3RpdmVCcm93c2VyQ29ubmVjdGlvbnNbaWRdIHx8IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcmVzdGFydEJyb3dzZXIgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLnN0YXR1cyA9IEJyb3dzZXJDb25uZWN0aW9uU3RhdHVzLnVuaW5pdGlhbGl6ZWQ7XG5cbiAgICAgICAgdGhpcy5fZm9yY2VJZGxlKCk7XG5cbiAgICAgICAgbGV0IHJlc29sdmVUaW1lb3V0OiBGdW5jdGlvbiB8IG51bGwgPSBudWxsO1xuICAgICAgICBsZXQgaXNUaW1lb3V0RXhwaXJlZCAgICAgICAgICAgICAgICA9IGZhbHNlO1xuICAgICAgICBsZXQgdGltZW91dDogTm9kZUpTLlRpbWVvdXQgfCBudWxsICA9IG51bGw7XG5cbiAgICAgICAgY29uc3QgcmVzdGFydFByb21pc2UgPSB0aW1lTGltaXQodGhpcy5fY2xvc2VCcm93c2VyKHsgaXNSZXN0YXJ0aW5nOiB0cnVlIH0pLCB0aGlzLkJST1dTRVJfQ0xPU0VfVElNRU9VVCwgeyByZWplY3RXaXRoOiBuZXcgVGltZW91dEVycm9yKCkgfSlcbiAgICAgICAgICAgIC5jYXRjaChlcnIgPT4gdGhpcy5kZWJ1Z0xvZ2dlcihlcnIpKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5fcnVuQnJvd3NlcigpKTtcblxuICAgICAgICBjb25zdCB0aW1lb3V0UHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZVRpbWVvdXQgPSByZXNvbHZlO1xuXG4gICAgICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaXNUaW1lb3V0RXhwaXJlZCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9LCB0aGlzLkJST1dTRVJfUkVTVEFSVF9USU1FT1VUKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmFjZShbcmVzdGFydFByb21pc2UsIHRpbWVvdXRQcm9taXNlXSlcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCBhcyBOb2RlSlMuVGltZW91dCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNUaW1lb3V0RXhwaXJlZClcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIHRoaXMuX2NyZWF0ZUJyb3dzZXJEaXNjb25uZWN0ZWRFcnJvcigpKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIChyZXNvbHZlVGltZW91dCBhcyBGdW5jdGlvbikoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3Jlc3RhcnRCcm93c2VyT25EaXNjb25uZWN0IChlcnI6IEVycm9yKTogdm9pZCB7XG4gICAgICAgIGxldCByZXNvbHZlRm46IEZ1bmN0aW9uIHwgbnVsbCA9IG51bGw7XG4gICAgICAgIGxldCByZWplY3RGbjogRnVuY3Rpb24gfCBudWxsICA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5kaXNjb25uZWN0aW9uUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmVGbiA9IHJlc29sdmU7XG5cbiAgICAgICAgICAgIHJlamVjdEZuID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgKHJlamVjdEZuIGFzIEZ1bmN0aW9uKSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3RhcnRCcm93c2VyKCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBlKTtcbiAgICAgICAgICAgIH0pIGFzIERpc2Nvbm5lY3Rpb25Qcm9taXNlPHZvaWQ+O1xuXG4gICAgICAgIHRoaXMuZGlzY29ubmVjdGlvblByb21pc2UucmVzb2x2ZSA9IHJlc29sdmVGbiBhcyB1bmtub3duIGFzIEZ1bmN0aW9uO1xuICAgICAgICB0aGlzLmRpc2Nvbm5lY3Rpb25Qcm9taXNlLnJlamVjdCAgPSByZWplY3RGbiBhcyB1bmtub3duIGFzIEZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXREZWZhdWx0QnJvd3NlckluaXRUaW1lb3V0ICgpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICBjb25zdCBpc0xvY2FsQnJvd3NlciA9IGF3YWl0IHRoaXMucHJvdmlkZXIuaXNMb2NhbEJyb3dzZXIodGhpcy5pZCwgdGhpcy5icm93c2VySW5mby5icm93c2VyTmFtZSk7XG5cbiAgICAgICAgcmV0dXJuIGlzTG9jYWxCcm93c2VyID8gTE9DQUxfQlJPV1NFUl9JTklUX1RJTUVPVVQgOiBSRU1PVEVfQlJPV1NFUl9JTklUX1RJTUVPVVQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHByb2Nlc3NEaXNjb25uZWN0aW9uIChkaXNjb25uZWN0aW9uVGhyZXNob2xkRXhjZWVkZWQ6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgeyByZXNvbHZlLCByZWplY3QgfSA9IHRoaXMuZGlzY29ubmVjdGlvblByb21pc2UgYXMgRGlzY29ubmVjdGlvblByb21pc2U8dm9pZD47XG5cbiAgICAgICAgaWYgKGRpc2Nvbm5lY3Rpb25UaHJlc2hvbGRFeGNlZWRlZClcbiAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFdhcm5pbmcgKG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogYW55W10pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEpvYilcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEpvYi53YXJuaW5nTG9nLmFkZFdhcm5pbmcobWVzc2FnZSwgLi4uYXJncyk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMud2FybmluZ0xvZy5hZGRXYXJuaW5nKG1lc3NhZ2UsIC4uLmFyZ3MpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2FwcGVuZFRvUHJldHR5VXNlckFnZW50IChzdHI6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmJyb3dzZXJJbmZvLnBhcnNlZFVzZXJBZ2VudC5wcmV0dHlVc2VyQWdlbnQgKz0gYCAoJHtzdHJ9KWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbW92ZVdhcm5pbmdMb2dUb0pvYiAoam9iOiBCcm93c2VySm9iKTogdm9pZCB7XG4gICAgICAgIGpvYi53YXJuaW5nTG9nLmNvcHlGcm9tKHRoaXMud2FybmluZ0xvZyk7XG4gICAgICAgIHRoaXMud2FybmluZ0xvZy5jbGVhcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRQcm92aWRlck1ldGFJbmZvIChzdHI6IHN0cmluZywgb3B0aW9ucz86IFByb3ZpZGVyTWV0YUluZm9PcHRpb25zKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFwcGVuZFRvVXNlckFnZW50ID0gb3B0aW9ucz8uYXBwZW5kVG9Vc2VyQWdlbnQgYXMgYm9vbGVhbjtcblxuICAgICAgICBpZiAoYXBwZW5kVG9Vc2VyQWdlbnQpIHtcbiAgICAgICAgICAgIC8vIE5PVEU6XG4gICAgICAgICAgICAvLyBjaGFuZ2UgcHJldHR5VXNlckFnZW50IG9ubHkgd2hlbiBjb25uZWN0aW9uIGFscmVhZHkgd2FzIGVzdGFibGlzaGVkXG4gICAgICAgICAgICBpZiAodGhpcy5pc1JlYWR5KCkpXG4gICAgICAgICAgICAgICAgdGhpcy5fYXBwZW5kVG9QcmV0dHlVc2VyQWdlbnQoc3RyKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0aGlzLm9uKCdyZWFkeScsICgpID0+IHRoaXMuX2FwcGVuZFRvUHJldHR5VXNlckFnZW50KHN0cikpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJyb3dzZXJJbmZvLnVzZXJBZ2VudFByb3ZpZGVyTWV0YUluZm8gPSBzdHI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB1c2VyQWdlbnQgKCk6IHN0cmluZyB7XG4gICAgICAgIGxldCB1c2VyQWdlbnQgPSB0aGlzLmJyb3dzZXJJbmZvLnBhcnNlZFVzZXJBZ2VudC5wcmV0dHlVc2VyQWdlbnQ7XG5cbiAgICAgICAgaWYgKHRoaXMuYnJvd3NlckluZm8udXNlckFnZW50UHJvdmlkZXJNZXRhSW5mbylcbiAgICAgICAgICAgIHVzZXJBZ2VudCArPSBgICgke3RoaXMuYnJvd3NlckluZm8udXNlckFnZW50UHJvdmlkZXJNZXRhSW5mb30pYDtcblxuICAgICAgICByZXR1cm4gdXNlckFnZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmV0cnlUZXN0UGFnZXMgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5icm93c2VyQ29ubmVjdGlvbkdhdGV3YXkucmV0cnlUZXN0UGFnZXM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNRdWV1ZWRKb2JzICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5qb2JRdWV1ZS5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXJyZW50Sm9iICgpOiBCcm93c2VySm9iIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuam9iUXVldWVbMF07XG4gICAgfVxuXG4gICAgLy8gQVBJXG4gICAgcHVibGljIHJ1bkluaXRTY3JpcHQgKGNvZGU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgdW5rbm93bj4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB0aGlzLmluaXRTY3JpcHRzUXVldWUucHVzaCh7IGNvZGUsIHJlc29sdmUgfSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRKb2IgKGpvYjogQnJvd3NlckpvYik6IHZvaWQge1xuICAgICAgICB0aGlzLmpvYlF1ZXVlLnB1c2goam9iKTtcblxuICAgICAgICB0aGlzLl9tb3ZlV2FybmluZ0xvZ1RvSm9iKGpvYik7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUpvYiAoam9iOiBCcm93c2VySm9iKTogdm9pZCB7XG4gICAgICAgIHJlbW92ZSh0aGlzLmpvYlF1ZXVlLCBqb2IpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjbG9zZSAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMuY2xvc2luZyB8fCB0aGlzLnN0YXR1cyA9PT0gQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMuY2xvc2VkKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuc3RhdHVzID0gQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMuY2xvc2luZztcbiAgICAgICAgdGhpcy5lbWl0KEJyb3dzZXJDb25uZWN0aW9uU3RhdHVzLmNsb3NpbmcpO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuX2Nsb3NlQnJvd3NlcigpO1xuXG4gICAgICAgIHRoaXMuYnJvd3NlckNvbm5lY3Rpb25HYXRld2F5LnN0b3BTZXJ2aW5nQ29ubmVjdGlvbih0aGlzKTtcblxuICAgICAgICBpZiAodGhpcy5oZWFydGJlYXRUaW1lb3V0KVxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaGVhcnRiZWF0VGltZW91dCk7XG5cbiAgICAgICAgQnJvd3NlckNvbm5lY3Rpb25UcmFja2VyLnJlbW92ZSh0aGlzKTtcblxuICAgICAgICB0aGlzLnN0YXR1cyA9IEJyb3dzZXJDb25uZWN0aW9uU3RhdHVzLmNsb3NlZDtcbiAgICAgICAgdGhpcy5lbWl0KEJyb3dzZXJDb25uZWN0aW9uU3RhdHVzLmNsb3NlZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGVzdGFibGlzaCAodXNlckFnZW50OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qgb3NJbmZvID0gYXdhaXQgdGhpcy5wcm92aWRlci5nZXRPU0luZm8odGhpcy5pZCk7XG5cbiAgICAgICAgdGhpcy5zdGF0dXMgICAgICAgICAgICAgICAgICAgICAgPSBCcm93c2VyQ29ubmVjdGlvblN0YXR1cy5yZWFkeTtcbiAgICAgICAgdGhpcy5icm93c2VySW5mby5wYXJzZWRVc2VyQWdlbnQgPSBwYXJzZVVzZXJBZ2VudCh1c2VyQWdlbnQsIG9zSW5mbyk7XG5cbiAgICAgICAgdGhpcy5fd2FpdEZvckhlYXJ0YmVhdCgpO1xuICAgICAgICB0aGlzLmVtaXQoJ3JlYWR5Jyk7XG4gICAgfVxuXG4gICAgcHVibGljIGhlYXJ0YmVhdCAoKTogSGVhcnRiZWF0U3RhdHVzUmVzdWx0IHtcbiAgICAgICAgaWYgKHRoaXMuaGVhcnRiZWF0VGltZW91dClcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmhlYXJ0YmVhdFRpbWVvdXQpO1xuXG4gICAgICAgIHRoaXMuX3dhaXRGb3JIZWFydGJlYXQoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29kZTogdGhpcy5zdGF0dXMgPT09IEJyb3dzZXJDb25uZWN0aW9uU3RhdHVzLmNsb3NpbmcgPyBIZWFydGJlYXRTdGF0dXMuY2xvc2luZyA6IEhlYXJ0YmVhdFN0YXR1cy5vayxcbiAgICAgICAgICAgIHVybDogIHRoaXMuc3RhdHVzID09PSBCcm93c2VyQ29ubmVjdGlvblN0YXR1cy5jbG9zaW5nID8gdGhpcy5pZGxlVXJsIDogJycsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIHJlbmRlcklkbGVQYWdlICgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gTXVzdGFjaGUucmVuZGVyKElETEVfUEFHRV9URU1QTEFURSBhcyBzdHJpbmcsIHtcbiAgICAgICAgICAgIHVzZXJBZ2VudDogICAgICAgICAgIHRoaXMudXNlckFnZW50LFxuICAgICAgICAgICAgc3RhdHVzVXJsOiAgICAgICAgICAgdGhpcy5zdGF0dXNVcmwsXG4gICAgICAgICAgICBoZWFydGJlYXRVcmw6ICAgICAgICB0aGlzLmhlYXJ0YmVhdFVybCxcbiAgICAgICAgICAgIGluaXRTY3JpcHRVcmw6ICAgICAgIHRoaXMuaW5pdFNjcmlwdFVybCxcbiAgICAgICAgICAgIG9wZW5GaWxlUHJvdG9jb2xVcmw6IHRoaXMub3BlbkZpbGVQcm90b2NvbFVybCxcbiAgICAgICAgICAgIHJldHJ5VGVzdFBhZ2VzOiAgICAgICEhdGhpcy5icm93c2VyQ29ubmVjdGlvbkdhdGV3YXkucmV0cnlUZXN0UGFnZXMsXG4gICAgICAgICAgICBuYXRpdmVBdXRvbWF0aW9uOiAgICB0aGlzLl9vcHRpb25zLm5hdGl2ZUF1dG9tYXRpb24sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJbml0U2NyaXB0ICgpOiBJbml0U2NyaXB0IHtcbiAgICAgICAgY29uc3QgaW5pdFNjcmlwdFByb21pc2UgPSB0aGlzLmluaXRTY3JpcHRzUXVldWVbMF07XG5cbiAgICAgICAgcmV0dXJuIHsgY29kZTogaW5pdFNjcmlwdFByb21pc2UgPyBpbml0U2NyaXB0UHJvbWlzZS5jb2RlIDogbnVsbCB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVJbml0U2NyaXB0UmVzdWx0IChkYXRhOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5pdFNjcmlwdFByb21pc2UgPSB0aGlzLmluaXRTY3JpcHRzUXVldWUuc2hpZnQoKTtcblxuICAgICAgICBpZiAoaW5pdFNjcmlwdFByb21pc2UpXG4gICAgICAgICAgICBpbml0U2NyaXB0UHJvbWlzZS5yZXNvbHZlKEpTT04ucGFyc2UoZGF0YSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0hlYWRsZXNzQnJvd3NlciAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3ZpZGVyLmlzSGVhZGxlc3NCcm93c2VyKHRoaXMuaWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZXBvcnRKb2JSZXN1bHQgKHN0YXR1czogc3RyaW5nLCBkYXRhOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBhd2FpdCB0aGlzLnByb3ZpZGVyLnJlcG9ydEpvYlJlc3VsdCh0aGlzLmlkLCBzdGF0dXMsIGRhdGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRTdGF0dXMgKGlzVGVzdERvbmU6IGJvb2xlYW4pOiBQcm9taXNlPEJyb3dzZXJDb25uZWN0aW9uU3RhdHVzUmVzdWx0PiB7XG4gICAgICAgIGlmICghdGhpcy5pZGxlICYmICFpc1Rlc3REb25lKSB7XG4gICAgICAgICAgICB0aGlzLmlkbGUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5lbWl0KCdpZGxlJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IEJyb3dzZXJDb25uZWN0aW9uU3RhdHVzLm9wZW5lZCkge1xuICAgICAgICAgICAgY29uc3QgbmV4dFRlc3RSdW5JbmZvID0gYXdhaXQgdGhpcy5fZ2V0VGVzdFJ1bkluZm8oaXNUZXN0RG9uZSB8fCB0aGlzLnRlc3RSdW5BYm9ydGVkKTtcblxuICAgICAgICAgICAgdGhpcy50ZXN0UnVuQWJvcnRlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAobmV4dFRlc3RSdW5JbmZvKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pZGxlID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBjbWQ6ICAgICAgIENPTU1BTkQucnVuLFxuICAgICAgICAgICAgICAgICAgICB0ZXN0UnVuSWQ6IG5leHRUZXN0UnVuSW5mby50ZXN0UnVuSWQsXG4gICAgICAgICAgICAgICAgICAgIHVybDogICAgICAgbmV4dFRlc3RSdW5JbmZvLnVybCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNtZDogICAgICAgQ09NTUFORC5pZGxlLFxuICAgICAgICAgICAgdXJsOiAgICAgICB0aGlzLmlkbGVVcmwsXG4gICAgICAgICAgICB0ZXN0UnVuSWQ6IG51bGwsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhY3RpdmVXaW5kb3dJZCAoKTogbnVsbCB8IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3ZpZGVyLmdldEFjdGl2ZVdpbmRvd0lkKHRoaXMuaWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgYWN0aXZlV2luZG93SWQgKHZhbCkge1xuICAgICAgICB0aGlzLnByZXZpb3VzQWN0aXZlV2luZG93SWQgPSB0aGlzLmFjdGl2ZVdpbmRvd0lkO1xuXG4gICAgICAgIHRoaXMucHJvdmlkZXIuc2V0QWN0aXZlV2luZG93SWQodGhpcy5pZCwgdmFsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgb3BlbkZpbGVQcm90b2NvbCAodXJsOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIub3BlbkZpbGVQcm90b2NvbCh0aGlzLmlkLCB1cmwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBkaXNwYXRjaE5hdGl2ZUF1dG9tYXRpb25FdmVudCAodHlwZTogRXZlbnRUeXBlLCBvcHRpb25zOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuZGlzcGF0Y2hOYXRpdmVBdXRvbWF0aW9uRXZlbnQodGhpcy5pZCwgdHlwZSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGRpc3BhdGNoTmF0aXZlQXV0b21hdGlvbkV2ZW50U2VxdWVuY2UgKGV2ZW50U2VxdWVuY2U6IFtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3ZpZGVyLmRpc3BhdGNoTmF0aXZlQXV0b21hdGlvbkV2ZW50U2VxdWVuY2UodGhpcy5pZCwgZXZlbnRTZXF1ZW5jZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNhblVzZURlZmF1bHRXaW5kb3dBY3Rpb25zICgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuY2FuVXNlRGVmYXVsdFdpbmRvd0FjdGlvbnModGhpcy5pZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzUmVhZHkgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0dXMgPT09IEJyb3dzZXJDb25uZWN0aW9uU3RhdHVzLnJlYWR5IHx8XG4gICAgICAgICAgICB0aGlzLnN0YXR1cyA9PT0gQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMub3BlbmVkIHx8XG4gICAgICAgICAgICB0aGlzLnN0YXR1cyA9PT0gQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMuY2xvc2luZztcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5pdGlhbGl6ZSAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2J1aWxkQ29tbXVuaWNhdGlvblVybHModGhpcy5icm93c2VyQ29ubmVjdGlvbkdhdGV3YXkucHJveHkpO1xuXG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gdGhpcy5fcnVuQnJvd3NlcigpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3VwcG9ydE5hdGl2ZUF1dG9tYXRpb24gKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm92aWRlci5zdXBwb3J0TmF0aXZlQXV0b21hdGlvbigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXROYXRpdmVBdXRvbWF0aW9uICgpOiBOYXRpdmVBdXRvbWF0aW9uIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuZ2V0TmF0aXZlQXV0b21hdGlvbih0aGlzLmlkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNOYXRpdmVBdXRvbWF0aW9uRW5hYmxlZCAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zLm5hdGl2ZUF1dG9tYXRpb247XG4gICAgfVxufVxuIl19
438
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnJvd3Nlci9jb25uZWN0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0RBQTBCO0FBQzFCLDRFQUEyQztBQUMzQyxtQ0FBc0M7QUFDdEMsd0RBQWdDO0FBQ2hDLG1DQUF3QztBQUN4QyxtRUFHc0M7QUFDdEMsMkRBQXNEO0FBQ3RELHNFQUE2QztBQUM3QyxtQ0FBZ0M7QUFDaEMsd0RBQWdDO0FBQ2hDLHNEQUErQztBQUMvQywwRUFBaUQ7QUFDakQsa0RBQWtFO0FBQ2xFLDhDQUFvRDtBQUdwRCxrRkFBeUQ7QUFFekQsc0VBQThDO0FBQzlDLHlGQU1pRDtBQUVqRCx3REFBaUQ7QUFTakQsTUFBTSw4QkFBOEIsR0FBRyxDQUFDLEVBQVUsRUFBVSxFQUFFLENBQUMsK0JBQStCLEVBQUUsRUFBRSxDQUFDO0FBRW5HLE1BQU0sa0JBQWtCLEdBQUcsSUFBQSw2QkFBSSxFQUFDLG9EQUFvRCxDQUFDLENBQUM7QUFtRHRGLE1BQU0sa0NBQWtDLEdBQUc7SUFDdkMsc0JBQXNCLEVBQUUsS0FBSztJQUM3QixlQUFlLEVBQVMsS0FBSztJQUM3QixnQkFBZ0IsRUFBUSxLQUFLO0NBQ2hDLENBQUM7QUFFRixNQUFxQixpQkFBa0IsU0FBUSxxQkFBWTtJQTRDdkQsWUFDSSxPQUFpQyxFQUNqQyxXQUF3QixFQUN4QixTQUFrQixFQUNsQixVQUE2QyxFQUFFLEVBQy9DLFVBQXVCO1FBQ3ZCLEtBQUssRUFBRSxDQUFDO1FBM0NKLG9CQUFlLEdBQW1CLElBQUksQ0FBQztRQVN4QyxRQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ1QsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNaLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFD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QUFFLE9BQU8sQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFTSxLQUFLLENBQUMscUNBQXFDLENBQUUsYUFBaUI7UUFDakUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLHFDQUFxQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVNLEtBQUssQ0FBQywwQkFBMEI7UUFDbkMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU0sT0FBTztRQUNWLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxnQkFBdUIsQ0FBQyxLQUFLO1lBQ2hELElBQUksQ0FBQyxNQUFNLEtBQUssZ0JBQXVCLENBQUMsTUFBTTtZQUM5QyxJQUFJLENBQUMsTUFBTSxLQUFLLGdCQUF1QixDQUFDLE9BQU8sQ0FBQztJQUN4RCxDQUFDO0lBRU0sVUFBVTtRQUNiLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbEUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU0sdUJBQXVCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFTSxtQkFBbUI7UUFDdEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU0seUJBQXlCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztJQUMxQyxDQUFDO0NBQ0o7QUE3aUJELG9DQTZpQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHRpbWVMaW1pdCBmcm9tICd0aW1lLWxpbWl0LXByb21pc2UnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcbmltcG9ydCBNdXN0YWNoZSBmcm9tICdtdXN0YWNoZSc7XG5pbXBvcnQgeyBwdWxsIGFzIHJlbW92ZSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1xuICAgIFBhcnNlZFVzZXJBZ2VudCxcbiAgICBwYXJzZVVzZXJBZ2VudCxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvcGFyc2UtdXNlci1hZ2VudCc7XG5pbXBvcnQgeyByZWFkU3luYyBhcyByZWFkIH0gZnJvbSAncmVhZC1maWxlLXJlbGF0aXZlJztcbmltcG9ydCBwcm9taXNpZnlFdmVudCBmcm9tICdwcm9taXNpZnktZXZlbnQnO1xuaW1wb3J0IHsgbmFub2lkIH0gZnJvbSAnbmFub2lkJztcbmltcG9ydCBDT01NQU5EIGZyb20gJy4vY29tbWFuZCc7XG5pbXBvcnQgQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMgZnJvbSAnLi9zdGF0dXMnO1xuaW1wb3J0IEhlYXJ0YmVhdFN0YXR1cyBmcm9tICcuL2hlYXJ0YmVhdC1zdGF0dXMnO1xuaW1wb3J0IHsgR2VuZXJhbEVycm9yLCBUaW1lb3V0RXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvcnMvcnVudGltZSc7XG5pbXBvcnQgeyBSVU5USU1FX0VSUk9SUyB9IGZyb20gJy4uLy4uL2Vycm9ycy90eXBlcyc7XG5pbXBvcnQgQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5IGZyb20gJy4vZ2F0ZXdheSc7XG5pbXBvcnQgQnJvd3NlckpvYiBmcm9tICcuLi8uLi9ydW5uZXIvYnJvd3Nlci1qb2InO1xuaW1wb3J0IFdhcm5pbmdMb2cgZnJvbSAnLi4vLi4vbm90aWZpY2F0aW9ucy93YXJuaW5nLWxvZyc7XG5pbXBvcnQgQnJvd3NlclByb3ZpZGVyIGZyb20gJy4uL3Byb3ZpZGVyJztcbmltcG9ydCBTRVJWSUNFX1JPVVRFUyBmcm9tICcuL3NlcnZpY2Utcm91dGVzJztcbmltcG9ydCB7XG4gICAgQlJPV1NFUl9SRVNUQVJUX1RJTUVPVVQsXG4gICAgQlJPV1NFUl9DTE9TRV9USU1FT1VULFxuICAgIEhFQVJUQkVBVF9USU1FT1VULFxuICAgIExPQ0FMX0JST1dTRVJfSU5JVF9USU1FT1VULFxuICAgIFJFTU9URV9CUk9XU0VSX0lOSVRfVElNRU9VVCxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvYnJvd3Nlci1jb25uZWN0aW9uLXRpbWVvdXRzJztcbmltcG9ydCBNZXNzYWdlQnVzIGZyb20gJy4uLy4uL3V0aWxzL21lc3NhZ2UtYnVzJztcbmltcG9ydCBCcm93c2VyQ29ubmVjdGlvblRyYWNrZXIgZnJvbSAnLi90cmFja2VyJztcbmltcG9ydCBUZXN0UnVuIGZyb20gJy4uLy4uL3Rlc3QtcnVuJztcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IFRlc3RSdW4gYXMgTGVnYWN5VGVzdFJ1biB9IGZyb20gJ3Rlc3RjYWZlLWxlZ2FjeS1hcGknO1xuaW1wb3J0IHsgUHJveHkgfSBmcm9tICd0ZXN0Y2FmZS1oYW1tZXJoZWFkJztcbmltcG9ydCB7IE5leHRUZXN0UnVuSW5mbywgT3BlbkJyb3dzZXJBZGRpdGlvbmFsT3B0aW9ucyB9IGZyb20gJy4uLy4uL3NoYXJlZC90eXBlcyc7XG5pbXBvcnQgeyBFdmVudFR5cGUgfSBmcm9tICcuLi8uLi9uYXRpdmUtYXV0b21hdGlvbi90eXBlcyc7XG5pbXBvcnQgTmF0aXZlQXV0b21hdGlvbiBmcm9tICcuLi8uLi9uYXRpdmUtYXV0b21hdGlvbic7XG5cbmNvbnN0IGdldEJyb3dzZXJDb25uZWN0aW9uRGVidWdTY29wZSA9IChpZDogc3RyaW5nKTogc3RyaW5nID0+IGB0ZXN0Y2FmZTpicm93c2VyOmNvbm5lY3Rpb246JHtpZH1gO1xuXG5jb25zdCBJRExFX1BBR0VfVEVNUExBVEUgPSByZWFkKCcuLi8uLi9jbGllbnQvYnJvd3Nlci9pZGxlLXBhZ2UvaW5kZXguaHRtbC5tdXN0YWNoZScpO1xuXG5cbmludGVyZmFjZSBEaXNjb25uZWN0aW9uUHJvbWlzZTxUPiBleHRlbmRzIFByb21pc2U8VD4ge1xuICAgIHJlc29sdmU6IEZ1bmN0aW9uO1xuICAgIHJlamVjdDogRnVuY3Rpb247XG59XG5cbmludGVyZmFjZSBCcm93c2VyQ29ubmVjdGlvblN0YXR1c1Jlc3VsdCB7XG4gICAgY21kOiBzdHJpbmc7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgdGVzdFJ1bklkOiBzdHJpbmcgfCBudWxsO1xufVxuXG5pbnRlcmZhY2UgSGVhcnRiZWF0U3RhdHVzUmVzdWx0IHtcbiAgICBjb2RlOiBIZWFydGJlYXRTdGF0dXM7XG4gICAgdXJsOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJbml0U2NyaXB0IHtcbiAgICBjb2RlOiBzdHJpbmcgfCBudWxsO1xufVxuXG5pbnRlcmZhY2UgSW5pdFNjcmlwdFRhc2sgZXh0ZW5kcyBJbml0U2NyaXB0IHtcbiAgICByZXNvbHZlOiBGdW5jdGlvbjtcbn1cblxuaW50ZXJmYWNlIFByb3ZpZGVyTWV0YUluZm9PcHRpb25zIHtcbiAgICBhcHBlbmRUb1VzZXJBZ2VudD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnJvd3NlckNsb3NpbmdJbmZvIHtcbiAgICBpc1Jlc3RhcnRpbmc/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJyb3dzZXJJbmZvIHtcbiAgICBhbGlhczogc3RyaW5nO1xuICAgIGJyb3dzZXJOYW1lOiBzdHJpbmc7XG4gICAgYnJvd3Nlck9wdGlvbjogdW5rbm93bjtcbiAgICBwcm92aWRlck5hbWU6IHN0cmluZztcbiAgICBwcm92aWRlcjogQnJvd3NlclByb3ZpZGVyO1xuICAgIHVzZXJBZ2VudFByb3ZpZGVyTWV0YUluZm86IHN0cmluZztcbiAgICBwYXJzZWRVc2VyQWdlbnQ6IFBhcnNlZFVzZXJBZ2VudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCcm93c2VyQ29ubmVjdGlvbk9wdGlvbnMge1xuICAgIGRpc2FibGVNdWx0aXBsZVdpbmRvd3M6IGJvb2xlYW47XG4gICAgZGV2ZWxvcG1lbnRNb2RlOiBib29sZWFuO1xuICAgIG5hdGl2ZUF1dG9tYXRpb246IGJvb2xlYW47XG59XG5cbmNvbnN0IERFRkFVTFRfQlJPV1NFUl9DT05ORUNUSU9OX09QVElPTlMgPSB7XG4gICAgZGlzYWJsZU11bHRpcGxlV2luZG93czogZmFsc2UsXG4gICAgZGV2ZWxvcG1lbnRNb2RlOiAgICAgICAgZmFsc2UsXG4gICAgbmF0aXZlQXV0b21hdGlvbjogICAgICAgZmFsc2UsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCcm93c2VyQ29ubmVjdGlvbiBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gICAgcHVibGljIHBlcm1hbmVudDogYm9vbGVhbjtcbiAgICBwdWJsaWMgcHJldmlvdXNBY3RpdmVXaW5kb3dJZDogc3RyaW5nIHwgbnVsbDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IEhFQVJUQkVBVF9USU1FT1VUOiBudW1iZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBCUk9XU0VSX0NMT1NFX1RJTUVPVVQ6IG51bWJlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IEJST1dTRVJfUkVTVEFSVF9USU1FT1VUOiBudW1iZXI7XG4gICAgcHVibGljIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfY3VycmVudFRlc3RSdW46IFRlc3RSdW4gfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGpvYlF1ZXVlOiBCcm93c2VySm9iW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBpbml0U2NyaXB0c1F1ZXVlOiBJbml0U2NyaXB0VGFza1tdO1xuICAgIHB1YmxpYyBicm93c2VyQ29ubmVjdGlvbkdhdGV3YXk6IEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheTtcbiAgICBwcml2YXRlIGRpc2Nvbm5lY3Rpb25Qcm9taXNlOiBEaXNjb25uZWN0aW9uUHJvbWlzZTx2b2lkPiB8IG51bGw7XG4gICAgcHJpdmF0ZSB0ZXN0UnVuQWJvcnRlZDogYm9vbGVhbjtcbiAgICBwdWJsaWMgc3RhdHVzOiBCcm93c2VyQ29ubmVjdGlvblN0YXR1cztcbiAgICBwcml2YXRlIGhlYXJ0YmVhdFRpbWVvdXQ6IE5vZGVKUy5UaW1lb3V0IHwgbnVsbDtcbiAgICBwcml2YXRlIHBlbmRpbmdUZXN0UnVuSW5mbzogTmV4dFRlc3RSdW5JbmZvIHwgbnVsbDtcbiAgICBwdWJsaWMgdXJsID0gJyc7XG4gICAgcHVibGljIGlkbGVVcmwgPSAnJztcbiAgICBwcml2YXRlIGZvcmNlZElkbGVVcmwgPSAnJztcbiAgICBwcml2YXRlIGluaXRTY3JpcHRVcmwgPSAnJztcbiAgICBwdWJsaWMgaGVhcnRiZWF0VXJsID0gJyc7XG4gICAgcHVibGljIHN0YXR1c1VybCA9ICcnO1xuICAgIHB1YmxpYyBhY3RpdmVXaW5kb3dJZFVybCA9ICcnO1xuICAgIHB1YmxpYyBjbG9zZVdpbmRvd1VybCA9ICcnO1xuICAgIHB1YmxpYyBzdGF0dXNEb25lVXJsID0gJyc7XG4gICAgcHVibGljIGhlYXJ0YmVhdFJlbGF0aXZlVXJsID0gJyc7XG4gICAgcHVibGljIHN0YXR1c1JlbGF0aXZlVXJsID0gJyc7XG4gICAgcHVibGljIHN0YXR1c0RvbmVSZWxhdGl2ZVVybCA9ICcnO1xuICAgIHB1YmxpYyBpZGxlUmVsYXRpdmVVcmwgPSAnJztcbiAgICBwdWJsaWMgb3BlbkZpbGVQcm90b2NvbFJlbGF0aXZlVXJsID0gJyc7XG4gICAgcHVibGljIG9wZW5GaWxlUHJvdG9jb2xVcmwgPSAnJztcbiAgICBwdWJsaWMgZGlzcGF0Y2hOYXRpdmVBdXRvbWF0aW9uRXZlbnRSZWxhdGl2ZVVybCA9ICcnO1xuICAgIHB1YmxpYyBkaXNwYXRjaE5hdGl2ZUF1dG9tYXRpb25FdmVudFNlcXVlbmNlUmVsYXRpdmVVcmwgPSAnJztcbiAgICBwdWJsaWMgcGFyc2VTZWxlY3RvclJlbGF0aXZlVXJsID0gJyc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWJ1Z0xvZ2dlcjogZGVidWcuRGVidWdnZXI7XG4gICAgcHVibGljIHJlYWRvbmx5IHdhcm5pbmdMb2c6IFdhcm5pbmdMb2c7XG4gICAgcHJpdmF0ZSBfbWVzc2FnZUJ1cz86IE1lc3NhZ2VCdXM7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfb3B0aW9uczogQnJvd3NlckNvbm5lY3Rpb25PcHRpb25zO1xuXG4gICAgcHVibGljIGlkbGU6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgYnJvd3NlckluZm86IEJyb3dzZXJJbmZvO1xuICAgIHB1YmxpYyBwcm92aWRlcjogYW55O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChcbiAgICAgICAgZ2F0ZXdheTogQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5LFxuICAgICAgICBicm93c2VySW5mbzogQnJvd3NlckluZm8sXG4gICAgICAgIHBlcm1hbmVudDogYm9vbGVhbixcbiAgICAgICAgb3B0aW9uczogUGFydGlhbDxCcm93c2VyQ29ubmVjdGlvbk9wdGlvbnM+ID0ge30sXG4gICAgICAgIG1lc3NhZ2VCdXM/OiBNZXNzYWdlQnVzKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgdGhpcy5IRUFSVEJFQVRfVElNRU9VVCAgICAgICA9IEhFQVJUQkVBVF9USU1FT1VUO1xuICAgICAgICB0aGlzLkJST1dTRVJfQ0xPU0VfVElNRU9VVCAgID0gQlJPV1NFUl9DTE9TRV9USU1FT1VUO1xuICAgICAgICB0aGlzLkJST1dTRVJfUkVTVEFSVF9USU1FT1VUID0gQlJPV1NFUl9SRVNUQVJUX1RJTUVPVVQ7XG5cbiAgICAgICAgdGhpcy5pZCAgICAgICAgICAgICAgICAgICAgICAgPSBCcm93c2VyQ29ubmVjdGlvbi5fZ2VuZXJhdGVJZCgpO1xuICAgICAgICB0aGlzLmpvYlF1ZXVlICAgICAgICAgICAgICAgICA9IFtdO1xuICAgICAgICB0aGlzLmluaXRTY3JpcHRzUXVldWUgICAgICAgICA9IFtdO1xuICAgICAgICB0aGlzLmJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheSA9IGdhdGV3YXk7XG4gICAgICAgIHRoaXMuZGlzY29ubmVjdGlvblByb21pc2UgICAgID0gbnVsbDtcbiAgICAgICAgdGhpcy50ZXN0UnVuQWJvcnRlZCAgICAgICAgICAgPSBmYWxzZTtcbiAgICAgICAgdGhpcy53YXJuaW5nTG9nICAgICAgICAgICAgICAgPSBuZXcgV2FybmluZ0xvZyhudWxsLCBXYXJuaW5nTG9nLmNyZWF0ZUFkZFdhcm5pbmdDYWxsYmFjayhtZXNzYWdlQnVzKSk7XG4gICAgICAgIHRoaXMuZGVidWdMb2dnZXIgICAgICAgICAgICAgID0gZGVidWcoZ2V0QnJvd3NlckNvbm5lY3Rpb25EZWJ1Z1Njb3BlKHRoaXMuaWQpKTtcblxuICAgICAgICBpZiAobWVzc2FnZUJ1cykge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlQnVzID0gbWVzc2FnZUJ1cztcblxuICAgICAgICAgICAgdGhpcy5pbml0TWVzc2FnZUJ1cygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5icm93c2VySW5mbyAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYnJvd3NlckluZm87XG4gICAgICAgIHRoaXMuYnJvd3NlckluZm8udXNlckFnZW50UHJvdmlkZXJNZXRhSW5mbyA9ICcnO1xuXG4gICAgICAgIHRoaXMucHJvdmlkZXIgPSBicm93c2VySW5mby5wcm92aWRlcjtcblxuICAgICAgICB0aGlzLnBlcm1hbmVudCAgICAgICAgICAgICAgPSBwZXJtYW5lbnQ7XG4gICAgICAgIHRoaXMuc3RhdHVzICAgICAgICAgICAgICAgICA9IEJyb3dzZXJDb25uZWN0aW9uU3RhdHVzLnVuaW5pdGlhbGl6ZWQ7XG4gICAgICAgIHRoaXMuaWRsZSAgICAgICAgICAgICAgICAgICA9IHRydWU7XG4gICAgICAgIHRoaXMuaGVhcnRiZWF0VGltZW91dCAgICAgICA9IG51bGw7XG4gICAgICAgIHRoaXMucGVuZGluZ1Rlc3RSdW5JbmZvICAgICA9IG51bGw7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgICAgICAgICAgICAgICA9IHRoaXMuX2NhbGN1bGF0ZVJlc3VsdE9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICAgICAgdGhpcy5fc2V0RXZlbnRIYW5kbGVycygpO1xuXG4gICAgICAgIEJyb3dzZXJDb25uZWN0aW9uVHJhY2tlci5hZGQodGhpcyk7XG5cbiAgICAgICAgdGhpcy5wcmV2aW91c0FjdGl2ZVdpbmRvd0lkID0gbnVsbDtcblxuICAgICAgICB0aGlzLmJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5zdGFydFNlcnZpbmdDb25uZWN0aW9uKHRoaXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NhbGN1bGF0ZVJlc3VsdE9wdGlvbnMgKG9wdGlvbnM6IFBhcnRpYWw8QnJvd3NlckNvbm5lY3Rpb25PcHRpb25zPik6IEJyb3dzZXJDb25uZWN0aW9uT3B0aW9ucyB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX0JST1dTRVJfQ09OTkVDVElPTl9PUFRJT05TLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9idWlsZENvbW11bmljYXRpb25VcmxzIChwcm94eTogUHJveHkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cmwgICAgICAgICAgID0gcHJveHkucmVzb2x2ZVJlbGF0aXZlU2VydmljZVVybChgJHtTRVJWSUNFX1JPVVRFUy5jb25uZWN0fS8ke3RoaXMuaWR9YCk7XG4gICAgICAgIHRoaXMuZm9yY2VkSWRsZVVybCA9IHByb3h5LnJlc29sdmVSZWxhdGl2ZVNlcnZpY2VVcmwoYCR7U0VSVklDRV9ST1VURVMuaWRsZUZvcmNlZH0vJHt0aGlzLmlkfWApO1xuICAgICAgICB0aGlzLmluaXRTY3JpcHRVcmwgPSBwcm94eS5yZXNvbHZlUmVsYXRpdmVTZXJ2aWNlVXJsKGAke1NFUlZJQ0VfUk9VVEVTLmluaXRTY3JpcHR9LyR7dGhpcy5pZH1gKTtcblxuICAgICAgICB0aGlzLmhlYXJ0YmVhdFJlbGF0aXZlVXJsICAgICAgICAgICAgICAgICAgICAgID0gYCR7U0VSVklDRV9ST1VURVMuaGVhcnRiZWF0fS8ke3RoaXMuaWR9YDtcbiAgICAgICAgdGhpcy5zdGF0dXNSZWxhdGl2ZVVybCAgICAgICAgICAgICAgICAgICAgICAgICA9IGAke1NFUlZJQ0VfUk9VVEVTLnN0YXR1c30vJHt0aGlzLmlkfWA7XG4gICAgICAgIHRoaXMuc3RhdHVzRG9uZVJlbGF0aXZlVXJsICAgICAgICAgICAgICAgICAgICAgPSBgJHtTRVJWSUNFX1JPVVRFUy5zdGF0dXNEb25lfS8ke3RoaXMuaWR9YDtcbiAgICAgICAgdGhpcy5pZGxlUmVsYXRpdmVVcmwgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGAke1NFUlZJQ0VfUk9VVEVTLmlkbGV9LyR7dGhpcy5pZH1gO1xuICAgICAgICB0aGlzLmFjdGl2ZVdpbmRvd0lkVXJsICAgICAgICAgICAgICAgICAgICAgICAgID0gYCR7U0VSVklDRV9ST1VURVMuYWN0aXZlV2luZG93SWR9LyR7dGhpcy5pZH1gO1xuICAgICAgICB0aGlzLmNsb3NlV2luZG93VXJsICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYCR7U0VSVklDRV9ST1VURVMuY2xvc2VXaW5kb3d9LyR7dGhpcy5pZH1gO1xuICAgICAgICB0aGlzLm9wZW5GaWxlUHJvdG9jb2xSZWxhdGl2ZVVybCAgICAgICAgICAgICAgID0gYCR7U0VSVklDRV9ST1VURVMub3BlbkZpbGVQcm90b2NvbH0vJHt0aGlzLmlkfWA7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hOYXRpdmVBdXRvbWF0aW9uRXZlbnRSZWxhdGl2ZVVybCAgICAgICAgID0gYCR7U0VSVklDRV9ST1VURVMuZGlzcGF0Y2hOYXRpdmVBdXRvbWF0aW9uRXZlbnR9LyR7dGhpcy5pZH1gO1xuICAgICAgICB0aGlzLmRpc3BhdGNoTmF0aXZlQXV0b21hdGlvbkV2ZW50U2VxdWVuY2VSZWxhdGl2ZVVybCA9IGAke1NFUlZJQ0VfUk9VVEVTLmRpc3BhdGNoTmF0aXZlQXV0b21hdGlvbkV2ZW50U2VxdWVuY2V9LyR7dGhpcy5pZH1gO1xuICAgICAgICB0aGlzLnBhcnNlU2VsZWN0b3JSZWxhdGl2ZVVybCAgICAgICAgICAgICAgICAgICAgICAgICA9IGAke1NFUlZJQ0VfUk9VVEVTLnBhcnNlU2VsZWN0b3J9LyR7dGhpcy5pZH1gO1xuXG4gICAgICAgIHRoaXMuaWRsZVVybCAgICAgICAgICAgICA9IHByb3h5LnJlc29sdmVSZWxhdGl2ZVNlcnZpY2VVcmwodGhpcy5pZGxlUmVsYXRpdmVVcmwpO1xuICAgICAgICB0aGlzLmhlYXJ0YmVhdFVybCAgICAgICAgPSBwcm94eS5yZXNvbHZlUmVsYXRpdmVTZXJ2aWNlVXJsKHRoaXMuaGVhcnRiZWF0UmVsYXRpdmVVcmwpO1xuICAgICAgICB0aGlzLnN0YXR1c1VybCAgICAgICAgICAgPSBwcm94eS5yZXNvbHZlUmVsYXRpdmVTZXJ2aWNlVXJsKHRoaXMuc3RhdHVzUmVsYXRpdmVVcmwpO1xuICAgICAgICB0aGlzLnN0YXR1c0RvbmVVcmwgICAgICAgPSBwcm94eS5yZXNvbHZlUmVsYXRpdmVTZXJ2aWNlVXJsKHRoaXMuc3RhdHVzRG9uZVJlbGF0aXZlVXJsKTtcbiAgICAgICAgdGhpcy5vcGVuRmlsZVByb3RvY29sVXJsID0gcHJveHkucmVzb2x2ZVJlbGF0aXZlU2VydmljZVVybCh0aGlzLm9wZW5GaWxlUHJvdG9jb2xSZWxhdGl2ZVVybCk7XG4gICAgfVxuXG4gICAgcHVibGljIGluaXRNZXNzYWdlQnVzICgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53YXJuaW5nTG9nLmNhbGxiYWNrID0gV2FybmluZ0xvZy5jcmVhdGVBZGRXYXJuaW5nQ2FsbGJhY2sodGhpcy5fbWVzc2FnZUJ1cyk7XG5cbiAgICAgICAgdGhpcy5hc3NpZ25UZXN0UnVuU3RhcnRFdmVudExpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMuZW1pdCgnbWVzc2FnZS1idXMtaW5pdGlhbGl6ZWQnLCB0aGlzLl9tZXNzYWdlQnVzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNzaWduVGVzdFJ1blN0YXJ0RXZlbnRMaXN0ZW5lciAoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fbWVzc2FnZUJ1cylcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB0aGlzLl9tZXNzYWdlQnVzLm9uKCd0ZXN0LXJ1bi1zdGFydCcsIHRlc3RSdW4gPT4ge1xuICAgICAgICAgICAgaWYgKHRlc3RSdW4uYnJvd3NlckNvbm5lY3Rpb24uaWQgPT09IHRoaXMuaWQpXG4gICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudFRlc3RSdW4gPSB0ZXN0UnVuO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IG1lc3NhZ2VCdXMgKG1lc3NhZ2VCdXM6IE1lc3NhZ2VCdXMgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fbWVzc2FnZUJ1cyA9IG1lc3NhZ2VCdXM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtZXNzYWdlQnVzICgpOiBNZXNzYWdlQnVzIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21lc3NhZ2VCdXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2V0RXZlbnRIYW5kbGVycyAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub24oJ2Vycm9yJywgZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRlYnVnTG9nZ2VyKGUpO1xuICAgICAgICAgICAgdGhpcy5fZm9yY2VJZGxlKCk7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBpbiBCcm93c2VyQ29ubmVjdGlvblN0YXR1cykge1xuICAgICAgICAgICAgY29uc3Qgc3RhdHVzID0gQnJvd3NlckNvbm5lY3Rpb25TdGF0dXNbbmFtZSBhcyBrZXlvZiB0eXBlb2YgQnJvd3NlckNvbm5lY3Rpb25TdGF0dXNdO1xuXG4gICAgICAgICAgICB0aGlzLm9uKHN0YXR1cywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVidWdMb2dnZXIoYHN0YXR1cyBjaGFuZ2VkIHRvICcke3N0YXR1c30nYCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9nZW5lcmF0ZUlkICgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gbmFub2lkKDcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldEFkZGl0aW9uYWxCcm93c2VyT3B0aW9ucyAoKTogT3BlbkJyb3dzZXJBZGRpdGlvbmFsT3B0aW9ucyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkaXNhYmxlTXVsdGlwbGVXaW5kb3dzOiB0aGlzLl9vcHRpb25zLmRpc2FibGVNdWx0aXBsZVdpbmRvd3MsXG4gICAgICAgICAgICBuYXRpdmVBdXRvbWF0aW9uOiAgICAgICB0aGlzLl9vcHRpb25zLm5hdGl2ZUF1dG9tYXRpb24sXG4gICAgICAgICAgICBkZXZlbG9wbWVudE1vZGU6ICAgICAgICB0aGlzLl9vcHRpb25zLmRldmVsb3BtZW50TW9kZSxcbiAgICAgICAgICAgIHNlcnZpY2VEb21haW5zOiAgICAgICAgIFtcbiAgICAgICAgICAgICAgICB0aGlzLmJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5wcm94eS5zZXJ2ZXIxSW5mby5kb21haW4sXG4gICAgICAgICAgICAgICAgdGhpcy5icm93c2VyQ29ubmVjdGlvbkdhdGV3YXkucHJveHkuc2VydmVyMkluZm8uZG9tYWluLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9ydW5Ccm93c2VyICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxPcHRpb25zID0gdGhpcy5fZ2V0QWRkaXRpb25hbEJyb3dzZXJPcHRpb25zKCk7XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvdmlkZXIub3BlbkJyb3dzZXIodGhpcy5pZCwgdGhpcy51cmwsIHRoaXMuYnJvd3NlckluZm8uYnJvd3Nlck9wdGlvbiwgYWRkaXRpb25hbE9wdGlvbnMpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgIT09IEJyb3dzZXJDb25uZWN0aW9uU3RhdHVzLnJlYWR5KVxuICAgICAgICAgICAgICAgIGF3YWl0IHByb21pc2lmeUV2ZW50KHRoaXMsICdyZWFkeScpO1xuXG4gICAgICAgICAgICB0aGlzLnN0YXR1cyA9IEJyb3dzZXJDb25uZWN0aW9uU3RhdHVzLm9wZW5lZDtcbiAgICAgICAgICAgIHRoaXMuZW1pdCgnb3BlbmVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEdlbmVyYWxFcnJvcihcbiAgICAgICAgICAgICAgICBSVU5USU1FX0VSUk9SUy51bmFibGVUb09wZW5Ccm93c2VyLFxuICAgICAgICAgICAgICAgIHRoaXMuYnJvd3NlckluZm8ucHJvdmlkZXJOYW1lICsgJzonICsgdGhpcy5icm93c2VySW5mby5icm93c2VyTmFtZSxcbiAgICAgICAgICAgICAgICBlcnIuc3RhY2tcbiAgICAgICAgICAgICkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfY2xvc2VCcm93c2VyIChkYXRhOiBCcm93c2VyQ2xvc2luZ0luZm8gPSB7fSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoIXRoaXMuaWRsZSlcbiAgICAgICAgICAgIGF3YWl0IHByb21pc2lmeUV2ZW50KHRoaXMsICdpZGxlJyk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvdmlkZXIuY2xvc2VCcm93c2VyKHRoaXMuaWQsIGRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIC8vIE5PVEU6IEEgd2FybmluZyB3b3VsZCBiZSByZWFsbHkgbmljZSBoZXJlLCBidXQgaXQgY2FuJ3QgYmUgZG9uZSB3aGlsZSBsb2cgaXMgc3RvcmVkIGluIGEgdGFzay5cbiAgICAgICAgICAgIHRoaXMuZGVidWdMb2dnZXIoZXJyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2ZvcmNlSWRsZSAoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pZGxlKSB7XG4gICAgICAgICAgICB0aGlzLmlkbGUgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLmVtaXQoJ2lkbGUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2NyZWF0ZUJyb3dzZXJEaXNjb25uZWN0ZWRFcnJvciAoKTogR2VuZXJhbEVycm9yIHtcbiAgICAgICAgcmV0dXJuIG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMuYnJvd3NlckRpc2Nvbm5lY3RlZCwgdGhpcy51c2VyQWdlbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3dhaXRGb3JIZWFydGJlYXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fb3B0aW9ucy5kZXZlbG9wbWVudE1vZGUpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgdGhpcy5oZWFydGJlYXRUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlcnIgPSB0aGlzLl9jcmVhdGVCcm93c2VyRGlzY29ubmVjdGVkRXJyb3IoKTtcblxuICAgICAgICAgICAgdGhpcy5zdGF0dXMgICAgICAgICA9IEJyb3dzZXJDb25uZWN0aW9uU3RhdHVzLmRpc2Nvbm5lY3RlZDtcbiAgICAgICAgICAgIHRoaXMudGVzdFJ1bkFib3J0ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLmVtaXQoJ2Rpc2Nvbm5lY3RlZCcsIGVycik7XG5cbiAgICAgICAgICAgIHRoaXMuX3Jlc3RhcnRCcm93c2VyT25EaXNjb25uZWN0KGVycik7XG4gICAgICAgIH0sIHRoaXMuSEVBUlRCRUFUX1RJTUVPVVQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2dldFRlc3RSdW5JbmZvIChuZWVkUG9wTmV4dDogYm9vbGVhbik6IFByb21pc2U8TmV4dFRlc3RSdW5JbmZvPiB7XG4gICAgICAgIGlmIChuZWVkUG9wTmV4dCB8fCAhdGhpcy5wZW5kaW5nVGVzdFJ1bkluZm8pXG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdUZXN0UnVuSW5mbyA9IGF3YWl0IHRoaXMuX3BvcE5leHRUZXN0UnVuSW5mbygpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnBlbmRpbmdUZXN0UnVuSW5mbyBhcyBOZXh0VGVzdFJ1bkluZm87XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcG9wTmV4dFRlc3RSdW5JbmZvICgpOiBQcm9taXNlPE5leHRUZXN0UnVuSW5mbyB8IG51bGw+IHtcbiAgICAgICAgd2hpbGUgKHRoaXMuaGFzUXVldWVkSm9icyAmJiAhdGhpcy5jdXJyZW50Sm9iLmhhc1F1ZXVlZFRlc3RSdW5zKVxuICAgICAgICAgICAgdGhpcy5qb2JRdWV1ZS5zaGlmdCgpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmhhc1F1ZXVlZEpvYnMgPyBhd2FpdCB0aGlzLmN1cnJlbnRKb2IucG9wTmV4dFRlc3RSdW5JbmZvKHRoaXMpIDogbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q3VycmVudFRlc3RSdW4gKCk6IExlZ2FjeVRlc3RSdW4gfCBUZXN0UnVuIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50VGVzdFJ1bjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEJ5SWQgKGlkOiBzdHJpbmcpOiBCcm93c2VyQ29ubmVjdGlvbiB8IG51bGwge1xuICAgICAgICByZXR1cm4gQnJvd3NlckNvbm5lY3Rpb25UcmFja2VyLmFjdGl2ZUJyb3dzZXJDb25uZWN0aW9uc1tpZF0gfHwgbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9yZXN0YXJ0QnJvd3NlciAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMudW5pbml0aWFsaXplZDtcblxuICAgICAgICB0aGlzLl9mb3JjZUlkbGUoKTtcblxuICAgICAgICBsZXQgcmVzb2x2ZVRpbWVvdXQ6IEZ1bmN0aW9uIHwgbnVsbCA9IG51bGw7XG4gICAgICAgIGxldCBpc1RpbWVvdXRFeHBpcmVkICAgICAgICAgICAgICAgID0gZmFsc2U7XG4gICAgICAgIGxldCB0aW1lb3V0OiBOb2RlSlMuVGltZW91dCB8IG51bGwgID0gbnVsbDtcblxuICAgICAgICBjb25zdCByZXN0YXJ0UHJvbWlzZSA9IHRpbWVMaW1pdCh0aGlzLl9jbG9zZUJyb3dzZXIoeyBpc1Jlc3RhcnRpbmc6IHRydWUgfSksIHRoaXMuQlJPV1NFUl9DTE9TRV9USU1FT1VULCB7IHJlamVjdFdpdGg6IG5ldyBUaW1lb3V0RXJyb3IoKSB9KVxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB0aGlzLmRlYnVnTG9nZ2VyKGVycikpXG4gICAgICAgICAgICAudGhlbigoKSA9PiB0aGlzLl9ydW5Ccm93c2VyKCkpO1xuXG4gICAgICAgIGNvbnN0IHRpbWVvdXRQcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlVGltZW91dCA9IHJlc29sdmU7XG5cbiAgICAgICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpc1RpbWVvdXRFeHBpcmVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0sIHRoaXMuQlJPV1NFUl9SRVNUQVJUX1RJTUVPVVQpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yYWNlKFtyZXN0YXJ0UHJvbWlzZSwgdGltZW91dFByb21pc2VdKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0IGFzIE5vZGVKUy5UaW1lb3V0KTtcblxuICAgICAgICAgICAgICAgIGlmIChpc1RpbWVvdXRFeHBpcmVkKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgdGhpcy5fY3JlYXRlQnJvd3NlckRpc2Nvbm5lY3RlZEVycm9yKCkpO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgKHJlc29sdmVUaW1lb3V0IGFzIEZ1bmN0aW9uKSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVzdGFydEJyb3dzZXJPbkRpc2Nvbm5lY3QgKGVycjogRXJyb3IpOiB2b2lkIHtcbiAgICAgICAgbGV0IHJlc29sdmVGbjogRnVuY3Rpb24gfCBudWxsID0gbnVsbDtcbiAgICAgICAgbGV0IHJlamVjdEZuOiBGdW5jdGlvbiB8IG51bGwgID0gbnVsbDtcblxuICAgICAgICB0aGlzLmRpc2Nvbm5lY3Rpb25Qcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZUZuID0gcmVzb2x2ZTtcblxuICAgICAgICAgICAgcmVqZWN0Rm4gPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAocmVqZWN0Rm4gYXMgRnVuY3Rpb24pKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVzdGFydEJyb3dzZXIoKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIGUpO1xuICAgICAgICAgICAgfSkgYXMgRGlzY29ubmVjdGlvblByb21pc2U8dm9pZD47XG5cbiAgICAgICAgdGhpcy5kaXNjb25uZWN0aW9uUHJvbWlzZS5yZXNvbHZlID0gcmVzb2x2ZUZuIGFzIHVua25vd24gYXMgRnVuY3Rpb247XG4gICAgICAgIHRoaXMuZGlzY29ubmVjdGlvblByb21pc2UucmVqZWN0ICA9IHJlamVjdEZuIGFzIHVua25vd24gYXMgRnVuY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldERlZmF1bHRCcm93c2VySW5pdFRpbWVvdXQgKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIGNvbnN0IGlzTG9jYWxCcm93c2VyID0gYXdhaXQgdGhpcy5wcm92aWRlci5pc0xvY2FsQnJvd3Nlcih0aGlzLmlkLCB0aGlzLmJyb3dzZXJJbmZvLmJyb3dzZXJOYW1lKTtcblxuICAgICAgICByZXR1cm4gaXNMb2NhbEJyb3dzZXIgPyBMT0NBTF9CUk9XU0VSX0lOSVRfVElNRU9VVCA6IFJFTU9URV9CUk9XU0VSX0lOSVRfVElNRU9VVDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcHJvY2Vzc0Rpc2Nvbm5lY3Rpb24gKGRpc2Nvbm5lY3Rpb25UaHJlc2hvbGRFeGNlZWRlZDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB7IHJlc29sdmUsIHJlamVjdCB9ID0gdGhpcy5kaXNjb25uZWN0aW9uUHJvbWlzZSBhcyBEaXNjb25uZWN0aW9uUHJvbWlzZTx2b2lkPjtcblxuICAgICAgICBpZiAoZGlzY29ubmVjdGlvblRocmVzaG9sZEV4Y2VlZGVkKVxuICAgICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkV2FybmluZyAobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50Sm9iKVxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Sm9iLndhcm5pbmdMb2cuYWRkV2FybmluZyhtZXNzYWdlLCAuLi5hcmdzKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy53YXJuaW5nTG9nLmFkZFdhcm5pbmcobWVzc2FnZSwgLi4uYXJncyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYXBwZW5kVG9QcmV0dHlVc2VyQWdlbnQgKHN0cjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYnJvd3NlckluZm8ucGFyc2VkVXNlckFnZW50LnByZXR0eVVzZXJBZ2VudCArPSBgICgke3N0cn0pYDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9tb3ZlV2FybmluZ0xvZ1RvSm9iIChqb2I6IEJyb3dzZXJKb2IpOiB2b2lkIHtcbiAgICAgICAgam9iLndhcm5pbmdMb2cuY29weUZyb20odGhpcy53YXJuaW5nTG9nKTtcbiAgICAgICAgdGhpcy53YXJuaW5nTG9nLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFByb3ZpZGVyTWV0YUluZm8gKHN0cjogc3RyaW5nLCBvcHRpb25zPzogUHJvdmlkZXJNZXRhSW5mb09wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYXBwZW5kVG9Vc2VyQWdlbnQgPSBvcHRpb25zPy5hcHBlbmRUb1VzZXJBZ2VudCBhcyBib29sZWFuO1xuXG4gICAgICAgIGlmIChhcHBlbmRUb1VzZXJBZ2VudCkge1xuICAgICAgICAgICAgLy8gTk9URTpcbiAgICAgICAgICAgIC8vIGNoYW5nZSBwcmV0dHlVc2VyQWdlbnQgb25seSB3aGVuIGNvbm5lY3Rpb24gYWxyZWFkeSB3YXMgZXN0YWJsaXNoZWRcbiAgICAgICAgICAgIGlmICh0aGlzLmlzUmVhZHkoKSlcbiAgICAgICAgICAgICAgICB0aGlzLl9hcHBlbmRUb1ByZXR0eVVzZXJBZ2VudChzdHIpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRoaXMub24oJ3JlYWR5JywgKCkgPT4gdGhpcy5fYXBwZW5kVG9QcmV0dHlVc2VyQWdlbnQoc3RyKSk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYnJvd3NlckluZm8udXNlckFnZW50UHJvdmlkZXJNZXRhSW5mbyA9IHN0cjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHVzZXJBZ2VudCAoKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHVzZXJBZ2VudCA9IHRoaXMuYnJvd3NlckluZm8ucGFyc2VkVXNlckFnZW50LnByZXR0eVVzZXJBZ2VudDtcblxuICAgICAgICBpZiAodGhpcy5icm93c2VySW5mby51c2VyQWdlbnRQcm92aWRlck1ldGFJbmZvKVxuICAgICAgICAgICAgdXNlckFnZW50ICs9IGAgKCR7dGhpcy5icm93c2VySW5mby51c2VyQWdlbnRQcm92aWRlck1ldGFJbmZvfSlgO1xuXG4gICAgICAgIHJldHVybiB1c2VyQWdlbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByZXRyeVRlc3RQYWdlcyAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5yZXRyeVRlc3RQYWdlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc1F1ZXVlZEpvYnMgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmpvYlF1ZXVlLmxlbmd0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1cnJlbnRKb2IgKCk6IEJyb3dzZXJKb2Ige1xuICAgICAgICByZXR1cm4gdGhpcy5qb2JRdWV1ZVswXTtcbiAgICB9XG5cbiAgICAvLyBBUElcbiAgICBwdWJsaWMgcnVuSW5pdFNjcmlwdCAoY29kZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCB1bmtub3duPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHRoaXMuaW5pdFNjcmlwdHNRdWV1ZS5wdXNoKHsgY29kZSwgcmVzb2x2ZSB9KSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEpvYiAoam9iOiBCcm93c2VySm9iKTogdm9pZCB7XG4gICAgICAgIHRoaXMuam9iUXVldWUucHVzaChqb2IpO1xuXG4gICAgICAgIHRoaXMuX21vdmVXYXJuaW5nTG9nVG9Kb2Ioam9iKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlSm9iIChqb2I6IEJyb3dzZXJKb2IpOiB2b2lkIHtcbiAgICAgICAgcmVtb3ZlKHRoaXMuam9iUXVldWUsIGpvYik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNsb3NlICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSBCcm93c2VyQ29ubmVjdGlvblN0YXR1cy5jbG9zaW5nIHx8IHRoaXMuc3RhdHVzID09PSBCcm93c2VyQ29ubmVjdGlvblN0YXR1cy5jbG9zZWQpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgdGhpcy5zdGF0dXMgPSBCcm93c2VyQ29ubmVjdGlvblN0YXR1cy5jbG9zaW5nO1xuICAgICAgICB0aGlzLmVtaXQoQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMuY2xvc2luZyk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5fY2xvc2VCcm93c2VyKCk7XG5cbiAgICAgICAgdGhpcy5icm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuc3RvcFNlcnZpbmdDb25uZWN0aW9uKHRoaXMpO1xuXG4gICAgICAgIGlmICh0aGlzLmhlYXJ0YmVhdFRpbWVvdXQpXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5oZWFydGJlYXRUaW1lb3V0KTtcblxuICAgICAgICBCcm93c2VyQ29ubmVjdGlvblRyYWNrZXIucmVtb3ZlKHRoaXMpO1xuXG4gICAgICAgIHRoaXMuc3RhdHVzID0gQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMuY2xvc2VkO1xuICAgICAgICB0aGlzLmVtaXQoQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMuY2xvc2VkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZXN0YWJsaXNoICh1c2VyQWdlbnQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBvc0luZm8gPSBhd2FpdCB0aGlzLnByb3ZpZGVyLmdldE9TSW5mbyh0aGlzLmlkKTtcblxuICAgICAgICB0aGlzLnN0YXR1cyAgICAgICAgICAgICAgICAgICAgICA9IEJyb3dzZXJDb25uZWN0aW9uU3RhdHVzLnJlYWR5O1xuICAgICAgICB0aGlzLmJyb3dzZXJJbmZvLnBhcnNlZFVzZXJBZ2VudCA9IHBhcnNlVXNlckFnZW50KHVzZXJBZ2VudCwgb3NJbmZvKTtcblxuICAgICAgICB0aGlzLl93YWl0Rm9ySGVhcnRiZWF0KCk7XG4gICAgICAgIHRoaXMuZW1pdCgncmVhZHknKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGVhcnRiZWF0ICgpOiBIZWFydGJlYXRTdGF0dXNSZXN1bHQge1xuICAgICAgICBpZiAodGhpcy5oZWFydGJlYXRUaW1lb3V0KVxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaGVhcnRiZWF0VGltZW91dCk7XG5cbiAgICAgICAgdGhpcy5fd2FpdEZvckhlYXJ0YmVhdCgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb2RlOiB0aGlzLnN0YXR1cyA9PT0gQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMuY2xvc2luZyA/IEhlYXJ0YmVhdFN0YXR1cy5jbG9zaW5nIDogSGVhcnRiZWF0U3RhdHVzLm9rLFxuICAgICAgICAgICAgdXJsOiAgdGhpcy5zdGF0dXMgPT09IEJyb3dzZXJDb25uZWN0aW9uU3RhdHVzLmNsb3NpbmcgPyB0aGlzLmlkbGVVcmwgOiAnJyxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVuZGVySWRsZVBhZ2UgKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBNdXN0YWNoZS5yZW5kZXIoSURMRV9QQUdFX1RFTVBMQVRFIGFzIHN0cmluZywge1xuICAgICAgICAgICAgdXNlckFnZW50OiAgICAgICAgICAgdGhpcy51c2VyQWdlbnQsXG4gICAgICAgICAgICBzdGF0dXNVcmw6ICAgICAgICAgICB0aGlzLnN0YXR1c1VybCxcbiAgICAgICAgICAgIGhlYXJ0YmVhdFVybDogICAgICAgIHRoaXMuaGVhcnRiZWF0VXJsLFxuICAgICAgICAgICAgaW5pdFNjcmlwdFVybDogICAgICAgdGhpcy5pbml0U2NyaXB0VXJsLFxuICAgICAgICAgICAgb3BlbkZpbGVQcm90b2NvbFVybDogdGhpcy5vcGVuRmlsZVByb3RvY29sVXJsLFxuICAgICAgICAgICAgcmV0cnlUZXN0UGFnZXM6ICAgICAgISF0aGlzLmJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5yZXRyeVRlc3RQYWdlcyxcbiAgICAgICAgICAgIG5hdGl2ZUF1dG9tYXRpb246ICAgIHRoaXMuX29wdGlvbnMubmF0aXZlQXV0b21hdGlvbixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEluaXRTY3JpcHQgKCk6IEluaXRTY3JpcHQge1xuICAgICAgICBjb25zdCBpbml0U2NyaXB0UHJvbWlzZSA9IHRoaXMuaW5pdFNjcmlwdHNRdWV1ZVswXTtcblxuICAgICAgICByZXR1cm4geyBjb2RlOiBpbml0U2NyaXB0UHJvbWlzZSA/IGluaXRTY3JpcHRQcm9taXNlLmNvZGUgOiBudWxsIH07XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZUluaXRTY3JpcHRSZXN1bHQgKGRhdGE6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbml0U2NyaXB0UHJvbWlzZSA9IHRoaXMuaW5pdFNjcmlwdHNRdWV1ZS5zaGlmdCgpO1xuXG4gICAgICAgIGlmIChpbml0U2NyaXB0UHJvbWlzZSlcbiAgICAgICAgICAgIGluaXRTY3JpcHRQcm9taXNlLnJlc29sdmUoSlNPTi5wYXJzZShkYXRhKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzSGVhZGxlc3NCcm93c2VyICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuaXNIZWFkbGVzc0Jyb3dzZXIodGhpcy5pZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlcG9ydEpvYlJlc3VsdCAoc3RhdHVzOiBzdHJpbmcsIGRhdGE6IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGF3YWl0IHRoaXMucHJvdmlkZXIucmVwb3J0Sm9iUmVzdWx0KHRoaXMuaWQsIHN0YXR1cywgZGF0YSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldFN0YXR1cyAoaXNUZXN0RG9uZTogYm9vbGVhbik6IFByb21pc2U8QnJvd3NlckNvbm5lY3Rpb25TdGF0dXNSZXN1bHQ+IHtcbiAgICAgICAgaWYgKCF0aGlzLmlkbGUgJiYgIWlzVGVzdERvbmUpIHtcbiAgICAgICAgICAgIHRoaXMuaWRsZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmVtaXQoJ2lkbGUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMub3BlbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0VGVzdFJ1bkluZm8gPSBhd2FpdCB0aGlzLl9nZXRUZXN0UnVuSW5mbyhpc1Rlc3REb25lIHx8IHRoaXMudGVzdFJ1bkFib3J0ZWQpO1xuXG4gICAgICAgICAgICB0aGlzLnRlc3RSdW5BYm9ydGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmIChuZXh0VGVzdFJ1bkluZm8pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlkbGUgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGNtZDogICAgICAgQ09NTUFORC5ydW4sXG4gICAgICAgICAgICAgICAgICAgIHRlc3RSdW5JZDogbmV4dFRlc3RSdW5JbmZvLnRlc3RSdW5JZCxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAgICAgICBuZXh0VGVzdFJ1bkluZm8udXJsLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY21kOiAgICAgICBDT01NQU5ELmlkbGUsXG4gICAgICAgICAgICB1cmw6ICAgICAgIHRoaXMuaWRsZVVybCxcbiAgICAgICAgICAgIHRlc3RSdW5JZDogbnVsbCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFjdGl2ZVdpbmRvd0lkICgpOiBudWxsIHwgc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuZ2V0QWN0aXZlV2luZG93SWQodGhpcy5pZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBhY3RpdmVXaW5kb3dJZCAodmFsKSB7XG4gICAgICAgIHRoaXMucHJldmlvdXNBY3RpdmVXaW5kb3dJZCA9IHRoaXMuYWN0aXZlV2luZG93SWQ7XG5cbiAgICAgICAgdGhpcy5wcm92aWRlci5zZXRBY3RpdmVXaW5kb3dJZCh0aGlzLmlkLCB2YWwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBvcGVuRmlsZVByb3RvY29sICh1cmw6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm92aWRlci5vcGVuRmlsZVByb3RvY29sKHRoaXMuaWQsIHVybCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGRpc3BhdGNoTmF0aXZlQXV0b21hdGlvbkV2ZW50ICh0eXBlOiBFdmVudFR5cGUsIG9wdGlvbnM6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm92aWRlci5kaXNwYXRjaE5hdGl2ZUF1dG9tYXRpb25FdmVudCh0aGlzLmlkLCB0eXBlLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZGlzcGF0Y2hOYXRpdmVBdXRvbWF0aW9uRXZlbnRTZXF1ZW5jZSAoZXZlbnRTZXF1ZW5jZTogW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuZGlzcGF0Y2hOYXRpdmVBdXRvbWF0aW9uRXZlbnRTZXF1ZW5jZSh0aGlzLmlkLCBldmVudFNlcXVlbmNlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2FuVXNlRGVmYXVsdFdpbmRvd0FjdGlvbnMgKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm92aWRlci5jYW5Vc2VEZWZhdWx0V2luZG93QWN0aW9ucyh0aGlzLmlkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNSZWFkeSAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXR1cyA9PT0gQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMucmVhZHkgfHxcbiAgICAgICAgICAgIHRoaXMuc3RhdHVzID09PSBCcm93c2VyQ29ubmVjdGlvblN0YXR1cy5vcGVuZWQgfHxcbiAgICAgICAgICAgIHRoaXMuc3RhdHVzID09PSBCcm93c2VyQ29ubmVjdGlvblN0YXR1cy5jbG9zaW5nO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbml0aWFsaXplICgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYnVpbGRDb21tdW5pY2F0aW9uVXJscyh0aGlzLmJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5wcm94eSk7XG5cbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB0aGlzLl9ydW5Ccm93c2VyKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdXBwb3J0TmF0aXZlQXV0b21hdGlvbiAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3ZpZGVyLnN1cHBvcnROYXRpdmVBdXRvbWF0aW9uKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE5hdGl2ZUF1dG9tYXRpb24gKCk6IE5hdGl2ZUF1dG9tYXRpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm92aWRlci5nZXROYXRpdmVBdXRvbWF0aW9uKHRoaXMuaWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc05hdGl2ZUF1dG9tYXRpb25FbmFibGVkICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnMubmF0aXZlQXV0b21hdGlvbjtcbiAgICB9XG59XG4iXX0=