@appium/base-driver 8.2.3 → 8.3.1

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 (128) hide show
  1. package/build/lib/basedriver/capabilities.js +2 -4
  2. package/build/lib/basedriver/commands/event.js +2 -4
  3. package/build/lib/basedriver/commands/find.js +5 -14
  4. package/build/lib/basedriver/commands/index.js +2 -4
  5. package/build/lib/basedriver/commands/log.js +4 -9
  6. package/build/lib/basedriver/commands/session.js +19 -30
  7. package/build/lib/basedriver/commands/settings.js +5 -11
  8. package/build/lib/basedriver/commands/timeout.js +11 -18
  9. package/build/lib/basedriver/desired-caps.js +2 -4
  10. package/build/lib/basedriver/device-settings.js +15 -5
  11. package/build/lib/basedriver/driver.js +36 -23
  12. package/build/lib/basedriver/helpers.js +10 -12
  13. package/build/lib/basedriver/logger.js +2 -4
  14. package/build/lib/constants.js +2 -4
  15. package/build/lib/express/crash.js +2 -4
  16. package/build/lib/express/express-logging.js +3 -5
  17. package/build/lib/express/idempotency.js +3 -5
  18. package/build/lib/express/logger.js +2 -4
  19. package/build/lib/express/middleware.js +2 -4
  20. package/build/lib/express/server.js +2 -4
  21. package/build/lib/express/static.js +2 -4
  22. package/build/lib/express/websocket.js +2 -4
  23. package/build/lib/helpers/capabilities.js +37 -0
  24. package/build/lib/index.js +4 -8
  25. package/build/lib/jsonwp-proxy/protocol-converter.js +19 -15
  26. package/build/lib/jsonwp-proxy/proxy.js +20 -15
  27. package/build/lib/jsonwp-status/status.js +2 -4
  28. package/build/lib/protocol/errors.js +2 -4
  29. package/build/lib/protocol/helpers.js +2 -4
  30. package/build/lib/protocol/index.js +2 -4
  31. package/build/lib/protocol/protocol.js +37 -30
  32. package/build/lib/protocol/routes.js +68 -4
  33. package/build/lib/protocol/validators.js +2 -4
  34. package/build/test/basedriver/README.md +5 -0
  35. package/build/test/basedriver/driver-e2e-tests.js +2 -4
  36. package/build/test/basedriver/driver-tests.js +12 -17
  37. package/build/test/basedriver/index.js +2 -4
  38. package/build/test/e2e/basedriver/driver.e2e.spec.js +15 -0
  39. package/build/test/e2e/basedriver/helpers.e2e.spec.js +192 -0
  40. package/build/test/e2e/basedriver/websockets.e2e.spec.js +82 -0
  41. package/build/test/e2e/express/server.e2e.spec.js +159 -0
  42. package/build/test/e2e/jsonwp-proxy/proxy.e2e.spec.js +59 -0
  43. package/build/test/e2e/protocol/fake-driver.js +163 -0
  44. package/build/test/e2e/protocol/helpers.js +25 -0
  45. package/build/test/e2e/protocol/protocol.e2e.spec.js +1186 -0
  46. package/build/test/helpers.js +2 -4
  47. package/build/test/unit/basedriver/capabilities.spec.js +672 -0
  48. package/build/test/unit/basedriver/capability.spec.js +353 -0
  49. package/build/test/unit/basedriver/commands/event.spec.js +110 -0
  50. package/build/test/unit/basedriver/commands/log.spec.js +85 -0
  51. package/build/test/unit/basedriver/driver.spec.js +15 -0
  52. package/build/test/unit/basedriver/helpers.spec.js +151 -0
  53. package/build/test/unit/basedriver/timeout.spec.js +135 -0
  54. package/build/test/unit/express/server.spec.js +155 -0
  55. package/build/test/unit/express/static.spec.js +26 -0
  56. package/build/test/unit/jsonwp-proxy/mock-request.js +91 -0
  57. package/build/test/unit/jsonwp-proxy/protocol-converter.spec.js +171 -0
  58. package/build/test/unit/jsonwp-proxy/proxy.spec.js +292 -0
  59. package/build/test/unit/jsonwp-proxy/url.spec.js +165 -0
  60. package/build/test/unit/jsonwp-status/status.spec.js +34 -0
  61. package/build/test/unit/protocol/errors.spec.js +390 -0
  62. package/build/test/unit/protocol/routes.spec.js +80 -0
  63. package/build/test/unit/protocol/validator.spec.js +149 -0
  64. package/lib/basedriver/commands/find.js +3 -6
  65. package/lib/basedriver/commands/log.js +2 -4
  66. package/lib/basedriver/commands/session.js +21 -22
  67. package/lib/basedriver/commands/settings.js +3 -5
  68. package/lib/basedriver/commands/timeout.js +9 -10
  69. package/lib/basedriver/device-settings.js +10 -1
  70. package/lib/basedriver/driver.js +36 -12
  71. package/lib/basedriver/helpers.js +13 -11
  72. package/lib/express/express-logging.js +1 -1
  73. package/lib/express/idempotency.js +1 -1
  74. package/lib/helpers/capabilities.js +25 -0
  75. package/lib/index.js +2 -2
  76. package/lib/jsonwp-proxy/protocol-converter.js +14 -13
  77. package/lib/jsonwp-proxy/proxy.js +16 -12
  78. package/lib/protocol/protocol.js +34 -29
  79. package/lib/protocol/routes.js +60 -1
  80. package/package.json +36 -24
  81. package/test/basedriver/README.md +5 -0
  82. package/test/basedriver/driver-e2e-tests.js +1 -1
  83. package/test/basedriver/driver-tests.js +12 -7
  84. package/build/lib/protocol/sessions-cache.js +0 -88
  85. package/build/test/basedriver/capabilities-specs.js +0 -632
  86. package/build/test/basedriver/capability-specs.js +0 -396
  87. package/build/test/basedriver/commands/event-specs.js +0 -112
  88. package/build/test/basedriver/commands/log-specs.js +0 -80
  89. package/build/test/basedriver/driver-e2e-specs.js +0 -17
  90. package/build/test/basedriver/driver-specs.js +0 -17
  91. package/build/test/basedriver/helpers-e2e-specs.js +0 -194
  92. package/build/test/basedriver/helpers-specs.js +0 -153
  93. package/build/test/basedriver/timeout-specs.js +0 -139
  94. package/build/test/basedriver/websockets-e2e-specs.js +0 -84
  95. package/build/test/express/server-e2e-specs.js +0 -156
  96. package/build/test/express/server-specs.js +0 -151
  97. package/build/test/express/static-specs.js +0 -23
  98. package/build/test/jsonwp-proxy/mock-request.js +0 -93
  99. package/build/test/jsonwp-proxy/protocol-converter-specs.js +0 -173
  100. package/build/test/jsonwp-proxy/proxy-e2e-specs.js +0 -61
  101. package/build/test/jsonwp-proxy/proxy-specs.js +0 -294
  102. package/build/test/jsonwp-proxy/url-specs.js +0 -167
  103. package/build/test/jsonwp-status/status-specs.js +0 -36
  104. package/build/test/protocol/errors-specs.js +0 -388
  105. package/build/test/protocol/fake-driver.js +0 -168
  106. package/build/test/protocol/helpers.js +0 -27
  107. package/build/test/protocol/protocol-e2e-specs.js +0 -1182
  108. package/build/test/protocol/routes-specs.js +0 -82
  109. package/build/test/protocol/validator-specs.js +0 -151
  110. package/lib/protocol/sessions-cache.js +0 -74
  111. package/test/basedriver/capabilities-specs.js +0 -505
  112. package/test/basedriver/capability-specs.js +0 -409
  113. package/test/basedriver/commands/event-specs.js +0 -74
  114. package/test/basedriver/commands/log-specs.js +0 -70
  115. package/test/basedriver/driver-e2e-specs.js +0 -8
  116. package/test/basedriver/driver-specs.js +0 -8
  117. package/test/basedriver/fixtures/BadZippedApp.zip +0 -1
  118. package/test/basedriver/fixtures/FakeAndroidApp.apk +0 -1
  119. package/test/basedriver/fixtures/FakeAndroidApp.asd +0 -0
  120. package/test/basedriver/fixtures/FakeIOSApp.app +0 -1
  121. package/test/basedriver/fixtures/FakeIOSApp.app.zip +0 -0
  122. package/test/basedriver/fixtures/FakeIOSApp.ipa +0 -0
  123. package/test/basedriver/fixtures/custom-element-finder-bad.js +0 -5
  124. package/test/basedriver/fixtures/custom-element-finder.js +0 -29
  125. package/test/basedriver/helpers-e2e-specs.js +0 -187
  126. package/test/basedriver/helpers-specs.js +0 -137
  127. package/test/basedriver/timeout-specs.js +0 -133
  128. package/test/basedriver/websockets-e2e-specs.js +0 -75
@@ -31,7 +31,7 @@ var _http = _interopRequireDefault(require("http"));
31
31
 
32
32
  var _https = _interopRequireDefault(require("https"));
33
33
 
34
- const log = _support.logger.getLogger('WD Proxy');
34
+ const DEFAULT_LOG = _support.logger.getLogger('WD Proxy');
35
35
 
36
36
  const DEFAULT_REQUEST_TIMEOUT = 240000;
37
37
  const COMPACT_ERROR_PATTERNS = [/\bECONNREFUSED\b/, /socket hang up/];
@@ -64,7 +64,14 @@ class JWProxy {
64
64
  };
65
65
  this.httpAgent = new _http.default.Agent(agentOpts);
66
66
  this.httpsAgent = new _https.default.Agent(agentOpts);
67
- this.protocolConverter = new _protocolConverter.default(this.proxy.bind(this));
67
+ this.protocolConverter = new _protocolConverter.default(this.proxy.bind(this), opts.log);
68
+ this._log = opts.log;
69
+ }
70
+
71
+ get log() {
72
+ var _this$_log;
73
+
74
+ return (_this$_log = this._log) !== null && _this$_log !== void 0 ? _this$_log : DEFAULT_LOG;
68
75
  }
69
76
 
70
77
  async request(requestConfig) {
@@ -186,7 +193,7 @@ class JWProxy {
186
193
  }
187
194
  }
188
195
 
189
- log.debug(`Proxying [${method} ${url || '/'}] to [${method} ${newUrl}] ` + (reqOpts.data ? `with body: ${truncateBody(reqOpts.data)}` : 'with no body'));
196
+ this.log.debug(`Proxying [${method} ${url || '/'}] to [${method} ${newUrl}] ` + (reqOpts.data ? `with body: ${truncateBody(reqOpts.data)}` : 'with no body'));
190
197
 
191
198
  const throwProxyError = error => {
192
199
  const err = new Error(`The request to ${url} has failed`);
@@ -210,7 +217,7 @@ class JWProxy {
210
217
  throwProxyError(data);
211
218
  }
212
219
 
213
- log.debug(`Got response with status ${status}: ${truncateBody(data)}`);
220
+ this.log.debug(`Got response with status ${status}: ${truncateBody(data)}`);
214
221
  isResponseLogged = true;
215
222
  const isSessionCreationRequest = /\/session$/.test(url) && method === 'POST';
216
223
 
@@ -220,7 +227,7 @@ class JWProxy {
220
227
  }
221
228
 
222
229
  this.downstreamProtocol = this.getProtocolFromResBody(data);
223
- log.info(`Determined the downstream protocol as '${this.downstreamProtocol}'`);
230
+ this.log.info(`Determined the downstream protocol as '${this.downstreamProtocol}'`);
224
231
  }
225
232
 
226
233
  if (_lodash.default.has(data, 'status') && parseInt(data.status, 10) !== 0) {
@@ -241,15 +248,15 @@ class JWProxy {
241
248
  if (_support.util.hasValue(e.response)) {
242
249
  if (!isResponseLogged) {
243
250
  const error = truncateBody(e.response.data);
244
- log.info(_support.util.hasValue(e.response.status) ? `Got response with status ${e.response.status}: ${error}` : `Got response with unknown status: ${error}`);
251
+ this.log.info(_support.util.hasValue(e.response.status) ? `Got response with status ${e.response.status}: ${error}` : `Got response with unknown status: ${error}`);
245
252
  }
246
253
  } else {
247
254
  proxyErrorMsg = `Could not proxy command to the remote server. Original error: ${e.message}`;
248
255
 
249
256
  if (COMPACT_ERROR_PATTERNS.some(p => p.test(e.message))) {
250
- log.info(e.message);
257
+ this.log.info(e.message);
251
258
  } else {
252
- log.info(e.stack);
259
+ this.log.info(e.stack);
253
260
  }
254
261
  }
255
262
 
@@ -293,7 +300,7 @@ class JWProxy {
293
300
  return await this.proxy(url, method, body);
294
301
  }
295
302
 
296
- log.debug(`Matched '${url}' to command name '${commandName}'`);
303
+ this.log.debug(`Matched '${url}' to command name '${commandName}'`);
297
304
  return await this.protocolConverter.convertAndProxy(commandName, url, method, body);
298
305
  }
299
306
 
@@ -359,10 +366,10 @@ class JWProxy {
359
366
 
360
367
  if (_lodash.default.has(resBodyObj, 'sessionId')) {
361
368
  if (reqSessionId) {
362
- log.info(`Replacing sessionId ${resBodyObj.sessionId} with ${reqSessionId}`);
369
+ this.log.info(`Replacing sessionId ${resBodyObj.sessionId} with ${reqSessionId}`);
363
370
  resBodyObj.sessionId = reqSessionId;
364
371
  } else if (this.sessionId) {
365
- log.info(`Replacing sessionId ${resBodyObj.sessionId} with ${this.sessionId}`);
372
+ this.log.info(`Replacing sessionId ${resBodyObj.sessionId} with ${this.sessionId}`);
366
373
  resBodyObj.sessionId = this.sessionId;
367
374
  }
368
375
  }
@@ -375,7 +382,5 @@ class JWProxy {
375
382
 
376
383
  exports.JWProxy = JWProxy;
377
384
  var _default = JWProxy;
378
- exports.default = _default;require('source-map-support').install();
379
-
380
-
381
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9qc29ud3AtcHJveHkvcHJveHkuanMiXSwibmFtZXMiOlsibG9nIiwibG9nZ2VyIiwiZ2V0TG9nZ2VyIiwiREVGQVVMVF9SRVFVRVNUX1RJTUVPVVQiLCJDT01QQUNUX0VSUk9SX1BBVFRFUk5TIiwiTUpTT05XUCIsIlczQyIsIlBST1RPQ09MUyIsIkpXUHJveHkiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJfIiwiZGVmYXVsdHMiLCJzY2hlbWUiLCJzZXJ2ZXIiLCJwb3J0IiwiYmFzZSIsIkRFRkFVTFRfQkFTRV9QQVRIIiwicmVxQmFzZVBhdGgiLCJzZXNzaW9uSWQiLCJ0aW1lb3V0IiwidG9Mb3dlckNhc2UiLCJfYWN0aXZlUmVxdWVzdHMiLCJfZG93bnN0cmVhbVByb3RvY29sIiwiYWdlbnRPcHRzIiwia2VlcEFsaXZlIiwibWF4U29ja2V0cyIsIm1heEZyZWVTb2NrZXRzIiwiaHR0cEFnZW50IiwiaHR0cCIsIkFnZW50IiwiaHR0cHNBZ2VudCIsImh0dHBzIiwicHJvdG9jb2xDb252ZXJ0ZXIiLCJQcm90b2NvbENvbnZlcnRlciIsInByb3h5IiwiYmluZCIsInJlcXVlc3QiLCJyZXF1ZXN0Q29uZmlnIiwicmVxUHJvbWlzZSIsInB1c2giLCJwdWxsIiwiZ2V0QWN0aXZlUmVxdWVzdHNDb3VudCIsImxlbmd0aCIsImNhbmNlbEFjdGl2ZVJlcXVlc3RzIiwiZW5kcG9pbnRSZXF1aXJlc1Nlc3Npb25JZCIsImVuZHBvaW50IiwiaW5jbHVkZXMiLCJkb3duc3RyZWFtUHJvdG9jb2wiLCJ2YWx1ZSIsImdldFVybEZvclByb3h5IiwidXJsIiwicHJveHlCYXNlIiwiZW5kcG9pbnRSZSIsInJlbWFpbmluZ1VybCIsInRlc3QiLCJmaXJzdCIsIlJlZ0V4cCIsImV4ZWMiLCJFcnJvciIsInJlcGxhY2UiLCJzdHJpcFByZWZpeFJlIiwicmVxdWlyZXNTZXNzaW9uSWQiLCJzZXNzaW9uQmFzZVJlIiwibWF0Y2giLCJtZXRob2QiLCJib2R5IiwidG9VcHBlckNhc2UiLCJuZXdVcmwiLCJ0cnVuY2F0ZUJvZHkiLCJjb250ZW50IiwidHJ1bmNhdGUiLCJpc1N0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJNQVhfTE9HX0JPRFlfTEVOR1RIIiwicmVxT3B0cyIsImhlYWRlcnMiLCJhY2NlcHQiLCJ1dGlsIiwiaGFzVmFsdWUiLCJkYXRhIiwicGFyc2UiLCJlIiwiZGVidWciLCJ0aHJvd1Byb3h5RXJyb3IiLCJlcnJvciIsImVyciIsInJlc3BvbnNlIiwic3RhdHVzIiwiaXNSZXNwb25zZUxvZ2dlZCIsImlzUGxhaW5PYmplY3QiLCJpc1Nlc3Npb25DcmVhdGlvblJlcXVlc3QiLCJnZXRQcm90b2NvbEZyb21SZXNCb2R5IiwiaW5mbyIsImhhcyIsInBhcnNlSW50IiwicmVzIiwic3RhdHVzQ29kZSIsInByb3h5RXJyb3JNc2ciLCJtZXNzYWdlIiwic29tZSIsInAiLCJzdGFjayIsImVycm9ycyIsIlByb3h5UmVxdWVzdEVycm9yIiwicmVzT2JqIiwiaXNJbnRlZ2VyIiwiaXNVbmRlZmluZWQiLCJyZXF1ZXN0VG9Db21tYW5kTmFtZSIsImV4dHJhY3RDb21tYW5kTmFtZSIsInBhdHRlcm4iLCJwYXRoTWF0Y2giLCJjb21tYW5kTmFtZSIsImVzY2FwZVJlZ0V4cCIsInByb3h5Q29tbWFuZCIsImNvbnZlcnRBbmRQcm94eSIsImNvbW1hbmQiLCJyZXNCb2R5T2JqIiwiZ2V0QWN0dWFsRXJyb3IiLCJVbmtub3duRXJyb3IiLCJwcm90b2NvbCIsImlzTmFOIiwiaXNFbXB0eSIsInN0YWNrdHJhY2UiLCJnZXRTZXNzaW9uSWRGcm9tVXJsIiwicHJveHlSZXFSZXMiLCJyZXEiLCJvcmlnaW5hbFVybCIsInNldCIsInJlcVNlc3Npb25JZCIsInNlbmQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsR0FBRyxHQUFHQyxnQkFBT0MsU0FBUCxD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VyxRQUFRLENBQUNYLE9BQXZCO0FBQ0FvQixJQUFBQSxHQUFHLENBQUNnQyxHQUFKLENBQVEsY0FBUixFQUF3QnpDLFFBQVEsQ0FBQ1gsT0FBVCxDQUFpQixjQUFqQixDQUF4QjtBQUlBLFVBQU1xRCxZQUFZLEdBQUcsS0FBS0wsbUJBQUwsQ0FBeUJFLEdBQUcsQ0FBQ0MsV0FBN0IsQ0FBckI7O0FBQ0EsUUFBSXJILGdCQUFFb0YsR0FBRixDQUFNdUIsVUFBTixFQUFrQixXQUFsQixDQUFKLEVBQW9DO0FBQ2xDLFVBQUlZLFlBQUosRUFBa0I7QUFDaEJsSSxRQUFBQSxHQUFHLENBQUM4RixJQUFKLENBQVUsdUJBQXNCd0IsVUFBVSxDQUFDbkcsU0FBVSxTQUFRK0csWUFBYSxFQUExRTtBQUNBWixRQUFBQSxVQUFVLENBQUNuRyxTQUFYLEdBQXVCK0csWUFBdkI7QUFDRCxPQUhELE1BR08sSUFBSSxLQUFLL0csU0FBVCxFQUFvQjtBQUN6Qm5CLFFBQUFBLEdBQUcsQ0FBQzhGLElBQUosQ0FBVSx1QkFBc0J3QixVQUFVLENBQUNuRyxTQUFVLFNBQVEsS0FBS0EsU0FBVSxFQUE1RTtBQUNBbUcsUUFBQUEsVUFBVSxDQUFDbkcsU0FBWCxHQUF1QixLQUFLQSxTQUE1QjtBQUNEO0FBQ0Y7O0FBQ0RtRyxJQUFBQSxVQUFVLENBQUNyRSxLQUFYLEdBQW1CLGtDQUFvQnFFLFVBQVUsQ0FBQ3JFLEtBQS9CLENBQW5CO0FBQ0FnRCxJQUFBQSxHQUFHLENBQUNSLE1BQUosQ0FBV0QsUUFBUSxDQUFDVSxVQUFwQixFQUFnQ2lDLElBQWhDLENBQXFDMUQsSUFBSSxDQUFDQyxTQUFMLENBQWUsMkJBQWE0QyxVQUFiLENBQWYsQ0FBckM7QUFDRDs7QUFqVFc7OztlQXFUQzlHLE8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgbG9nZ2VyLCB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBnZXRTdW1tYXJ5QnlDb2RlIH0gZnJvbSAnLi4vanNvbndwLXN0YXR1cy9zdGF0dXMnO1xuaW1wb3J0IHtcbiAgZXJyb3JzLCBpc0Vycm9yVHlwZSwgZXJyb3JGcm9tTUpTT05XUFN0YXR1c0NvZGUsIGVycm9yRnJvbVczQ0pzb25Db2RlXG59IGZyb20gJy4uL3Byb3RvY29sL2Vycm9ycyc7XG5pbXBvcnQgeyByb3V0ZVRvQ29tbWFuZE5hbWUgfSBmcm9tICcuLi9wcm90b2NvbCc7XG5pbXBvcnQgeyBNQVhfTE9HX0JPRFlfTEVOR1RILCBERUZBVUxUX0JBU0VfUEFUSCwgUFJPVE9DT0xTIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBQcm90b2NvbENvbnZlcnRlciBmcm9tICcuL3Byb3RvY29sLWNvbnZlcnRlcic7XG5pbXBvcnQgeyBmb3JtYXRSZXNwb25zZVZhbHVlLCBmb3JtYXRTdGF0dXMgfSBmcm9tICcuLi9wcm90b2NvbC9oZWxwZXJzJztcbmltcG9ydCBodHRwIGZyb20gJ2h0dHAnO1xuaW1wb3J0IGh0dHBzIGZyb20gJ2h0dHBzJztcblxuXG5jb25zdCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdXRCBQcm94eScpO1xuY29uc3QgREVGQVVMVF9SRVFVRVNUX1RJTUVPVVQgPSAyNDAwMDA7XG5jb25zdCBDT01QQUNUX0VSUk9SX1BBVFRFUk5TID0gW1xuICAvXFxiRUNPTk5SRUZVU0VEXFxiLyxcbiAgL3NvY2tldCBoYW5nIHVwLyxcbl07XG5cbmNvbnN0IHtNSlNPTldQLCBXM0N9ID0gUFJPVE9DT0xTO1xuXG5jbGFzcyBKV1Byb3h5IHtcbiAgY29uc3RydWN0b3IgKG9wdHMgPSB7fSkge1xuICAgIF8uZGVmYXVsdHModGhpcywgb3B0cywge1xuICAgICAgc2NoZW1lOiAnaHR0cCcsXG4gICAgICBzZXJ2ZXI6ICdsb2NhbGhvc3QnLFxuICAgICAgcG9ydDogNDQ0NCxcbiAgICAgIGJhc2U6IERFRkFVTFRfQkFTRV9QQVRILFxuICAgICAgcmVxQmFzZVBhdGg6IERFRkFVTFRfQkFTRV9QQVRILFxuICAgICAgc2Vzc2lvbklkOiBudWxsLFxuICAgICAgdGltZW91dDogREVGQVVMVF9SRVFVRVNUX1RJTUVPVVQsXG4gICAgfSk7XG4gICAgdGhpcy5zY2hlbWUgPSB0aGlzLnNjaGVtZS50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMuX2FjdGl2ZVJlcXVlc3RzID0gW107XG4gICAgdGhpcy5fZG93bnN0cmVhbVByb3RvY29sID0gbnVsbDtcbiAgICBjb25zdCBhZ2VudE9wdHMgPSB7XG4gICAgICBrZWVwQWxpdmU6IG9wdHMua2VlcEFsaXZlID8/IHRydWUsXG4gICAgICBtYXhTb2NrZXRzOiAxMCxcbiAgICAgIG1heEZyZWVTb2NrZXRzOiA1LFxuICAgIH07XG4gICAgdGhpcy5odHRwQWdlbnQgPSBuZXcgaHR0cC5BZ2VudChhZ2VudE9wdHMpO1xuICAgIHRoaXMuaHR0cHNBZ2VudCA9IG5ldyBodHRwcy5BZ2VudChhZ2VudE9wdHMpO1xuICAgIHRoaXMucHJvdG9jb2xDb252ZXJ0ZXIgPSBuZXcgUHJvdG9jb2xDb252ZXJ0ZXIodGhpcy5wcm94eS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtcyByZXF1ZXN0cyB0byB0aGUgZG93bnN0cmVhbSBzZXJ2ZXJcbiAgICpcbiAgICogQHByaXZhdGUgLSBEbyBub3QgY2FsbCB0aGlzIG1ldGhvZCBkaXJlY3RseSxcbiAgICogaXQgdXNlcyBjbGllbnQtc3BlY2lmaWMgYXJndW1lbnRzIGFuZCByZXNwb25zZXMhXG4gICAqXG4gICAqIEBwYXJhbSB7QXhpb3NSZXF1ZXN0Q29uZmlnfSByZXF1ZXN0Q29uZmlnXG4gICAqIEByZXR1cm5zIHtBeGlvc1Jlc3BvbnNlfVxuICAgKi9cbiAgYXN5bmMgcmVxdWVzdCAocmVxdWVzdENvbmZpZykge1xuICAgIGNvbnN0IHJlcVByb21pc2UgPSBheGlvcyhyZXF1ZXN0Q29uZmlnKTtcbiAgICB0aGlzLl9hY3RpdmVSZXF1ZXN0cy5wdXNoKHJlcVByb21pc2UpO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgcmVxUHJvbWlzZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgXy5wdWxsKHRoaXMuX2FjdGl2ZVJlcXVlc3RzLCByZXFQcm9taXNlKTtcbiAgICB9XG4gIH1cblxuICBnZXRBY3RpdmVSZXF1ZXN0c0NvdW50ICgpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlUmVxdWVzdHMubGVuZ3RoO1xuICB9XG5cbiAgY2FuY2VsQWN0aXZlUmVxdWVzdHMgKCkge1xuICAgIHRoaXMuX2FjdGl2ZVJlcXVlc3RzID0gW107XG4gIH1cblxuICBlbmRwb2ludFJlcXVpcmVzU2Vzc2lvbklkIChlbmRwb2ludCkge1xuICAgIHJldHVybiAhXy5pbmNsdWRlcyhbJy9zZXNzaW9uJywgJy9zZXNzaW9ucycsICcvc3RhdHVzJ10sIGVuZHBvaW50KTtcbiAgfVxuXG4gIHNldCBkb3duc3RyZWFtUHJvdG9jb2wgKHZhbHVlKSB7XG4gICAgdGhpcy5fZG93bnN0cmVhbVByb3RvY29sID0gdmFsdWU7XG4gICAgdGhpcy5wcm90b2NvbENvbnZlcnRlci5kb3duc3RyZWFtUHJvdG9jb2wgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBkb3duc3RyZWFtUHJvdG9jb2wgKCkge1xuICAgIHJldHVybiB0aGlzLl9kb3duc3RyZWFtUHJvdG9jb2w7XG4gIH1cblxuICBnZXRVcmxGb3JQcm94eSAodXJsKSB7XG4gICAgaWYgKHVybCA9PT0gJycpIHtcbiAgICAgIHVybCA9ICcvJztcbiAgICB9XG4gICAgY29uc3QgcHJveHlCYXNlID0gYCR7dGhpcy5zY2hlbWV9Oi8vJHt0aGlzLnNlcnZlcn06JHt0aGlzLnBvcnR9JHt0aGlzLmJhc2V9YDtcbiAgICBjb25zdCBlbmRwb2ludFJlID0gJygvKHNlc3Npb258c3RhdHVzKSknO1xuICAgIGxldCByZW1haW5pbmdVcmwgPSAnJztcbiAgICBpZiAoL15odHRwLy50ZXN0KHVybCkpIHtcbiAgICAgIGNvbnN0IGZpcnN0ID0gKG5ldyBSZWdFeHAoYChodHRwcz86Ly8uKykke2VuZHBvaW50UmV9YCkpLmV4ZWModXJsKTtcbiAgICAgIGlmICghZmlyc3QpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdHb3QgYSBjb21wbGV0ZSB1cmwgYnV0IGNvdWxkIG5vdCBleHRyYWN0IEpXUCBlbmRwb2ludCcpO1xuICAgICAgfVxuICAgICAgcmVtYWluaW5nVXJsID0gdXJsLnJlcGxhY2UoZmlyc3RbMV0sICcnKTtcbiAgICB9IGVsc2UgaWYgKChuZXcgUmVnRXhwKCdeLycpKS50ZXN0KHVybCkpIHtcbiAgICAgIHJlbWFpbmluZ1VybCA9IHVybDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEaWQgbm90IGtub3cgd2hhdCB0byBkbyB3aXRoIHVybCAnJHt1cmx9J2ApO1xuICAgIH1cblxuICAgIGNvbnN0IHN0cmlwUHJlZml4UmUgPSBuZXcgUmVnRXhwKCdeLio/KC8oc2Vzc2lvbnxzdGF0dXMpLiopJCcpO1xuICAgIGlmIChzdHJpcFByZWZpeFJlLnRlc3QocmVtYWluaW5nVXJsKSkge1xuICAgICAgcmVtYWluaW5nVXJsID0gc3RyaXBQcmVmaXhSZS5leGVjKHJlbWFpbmluZ1VybClbMV07XG4gICAgfVxuXG4gICAgaWYgKCEobmV3IFJlZ0V4cChlbmRwb2ludFJlKSkudGVzdChyZW1haW5pbmdVcmwpKSB7XG4gICAgICByZW1haW5pbmdVcmwgPSBgL3Nlc3Npb24vJHt0aGlzLnNlc3Npb25JZH0ke3JlbWFpbmluZ1VybH1gO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcXVpcmVzU2Vzc2lvbklkID0gdGhpcy5lbmRwb2ludFJlcXVpcmVzU2Vzc2lvbklkKHJlbWFpbmluZ1VybCk7XG5cbiAgICBpZiAocmVxdWlyZXNTZXNzaW9uSWQgJiYgdGhpcy5zZXNzaW9uSWQgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVHJ5aW5nIHRvIHByb3h5IGEgc2Vzc2lvbiBjb21tYW5kIHdpdGhvdXQgc2Vzc2lvbiBpZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlc3Npb25CYXNlUmUgPSBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vKFteL10rKScpO1xuICAgIGlmIChzZXNzaW9uQmFzZVJlLnRlc3QocmVtYWluaW5nVXJsKSkge1xuICAgICAgLy8gd2UgaGF2ZSBzb21ldGhpbmcgbGlrZSAvc2Vzc2lvbi86aWQvZm9vYmFyLCBzbyB3ZSBuZWVkIHRvIHJlcGxhY2VcbiAgICAgIC8vIHRoZSBzZXNzaW9uIGlkXG4gICAgICBjb25zdCBtYXRjaCA9IHNlc3Npb25CYXNlUmUuZXhlYyhyZW1haW5pbmdVcmwpO1xuICAgICAgcmVtYWluaW5nVXJsID0gcmVtYWluaW5nVXJsLnJlcGxhY2UobWF0Y2hbMV0sIHRoaXMuc2Vzc2lvbklkKTtcbiAgICB9IGVsc2UgaWYgKHJlcXVpcmVzU2Vzc2lvbklkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIDpzZXNzaW9uIHNlY3Rpb24gZm9yIHVybDogJHtyZW1haW5pbmdVcmx9YCk7XG4gICAgfVxuICAgIHJlbWFpbmluZ1VybCA9IHJlbWFpbmluZ1VybC5yZXBsYWNlKC9cXC8kLywgJycpOyAvLyBjYW4ndCBoYXZlIHRyYWlsaW5nIHNsYXNoZXNcblxuICAgIHJldHVybiBwcm94eUJhc2UgKyByZW1haW5pbmdVcmw7XG4gIH1cblxuICBhc3luYyBwcm94eSAodXJsLCBtZXRob2QsIGJvZHkgPSBudWxsKSB7XG4gICAgbWV0aG9kID0gbWV0aG9kLnRvVXBwZXJDYXNlKCk7XG4gICAgY29uc3QgbmV3VXJsID0gdGhpcy5nZXRVcmxGb3JQcm94eSh1cmwpO1xuICAgIGNvbnN0IHRydW5jYXRlQm9keSA9IChjb250ZW50KSA9PiBfLnRydW5jYXRlKFxuICAgICAgXy5pc1N0cmluZyhjb250ZW50KSA/IGNvbnRlbnQgOiBKU09OLnN0cmluZ2lmeShjb250ZW50KSxcbiAgICAgIHsgbGVuZ3RoOiBNQVhfTE9HX0JPRFlfTEVOR1RIIH0pO1xuICAgIGNvbnN0IHJlcU9wdHMgPSB7XG4gICAgICB1cmw6IG5ld1VybCxcbiAgICAgIG1ldGhvZCxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04JyxcbiAgICAgICAgJ3VzZXItYWdlbnQnOiAnYXBwaXVtJyxcbiAgICAgICAgYWNjZXB0OiAnYXBwbGljYXRpb24vanNvbiwgKi8qJyxcbiAgICAgIH0sXG4gICAgICBwcm94eTogZmFsc2UsXG4gICAgICB0aW1lb3V0OiB0aGlzLnRpbWVvdXQsXG4gICAgICBodHRwQWdlbnQ6IHRoaXMuaHR0cEFnZW50LFxuICAgICAgaHR0cHNBZ2VudDogdGhpcy5odHRwc0FnZW50LFxuICAgIH07XG4gICAgLy8gR0VUIG1ldGhvZHMgc2hvdWxkbid0IGhhdmUgYW55IGJvZHkuIE1vc3Qgc2VydmVycyBhcmUgT0sgd2l0aCB0aGlzLCBidXQgV2ViRHJpdmVyQWdlbnQgdGhyb3dzIDQwMCBlcnJvcnNcbiAgICBpZiAodXRpbC5oYXNWYWx1ZShib2R5KSAmJiBtZXRob2QgIT09ICdHRVQnKSB7XG4gICAgICBpZiAodHlwZW9mIGJvZHkgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmVxT3B0cy5kYXRhID0gSlNPTi5wYXJzZShib2R5KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGludGVycHJldCB0aGUgcmVxdWVzdCBib2R5IGFzIHZhbGlkIEpTT046ICR7dHJ1bmNhdGVCb2R5KGJvZHkpfWApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXFPcHRzLmRhdGEgPSBib2R5O1xuICAgICAgfVxuICAgIH1cblxuICAgIGxvZy5kZWJ1ZyhgUHJveHlpbmcgWyR7bWV0aG9kfSAke3VybCB8fCAnLyd9XSB0byBbJHttZXRob2R9ICR7bmV3VXJsfV0gYCArXG4gICAgICAocmVxT3B0cy5kYXRhID8gYHdpdGggYm9keTogJHt0cnVuY2F0ZUJvZHkocmVxT3B0cy5kYXRhKX1gIDogJ3dpdGggbm8gYm9keScpKTtcblxuICAgIGNvbnN0IHRocm93UHJveHlFcnJvciA9IChlcnJvcikgPT4ge1xuICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKGBUaGUgcmVxdWVzdCB0byAke3VybH0gaGFzIGZhaWxlZGApO1xuICAgICAgZXJyLnJlc3BvbnNlID0ge1xuICAgICAgICBkYXRhOiBlcnJvcixcbiAgICAgICAgc3RhdHVzOiA1MDBcbiAgICAgIH07XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfTtcbiAgICBsZXQgaXNSZXNwb25zZUxvZ2dlZCA9IGZhbHNlO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7ZGF0YSwgc3RhdHVzLCBoZWFkZXJzfSA9IGF3YWl0IHRoaXMucmVxdWVzdChyZXFPcHRzKTtcbiAgICAgIC8vIGBkYXRhYCBtaWdodCBiZSByZWFsbHkgYmlnXG4gICAgICAvLyBCZSBjYXJlZnVsIHdoaWxlIGhhbmRsaW5nIGl0IHRvIGF2b2lkIG1lbW9yeSBsZWFrc1xuICAgICAgaWYgKCFfLmlzUGxhaW5PYmplY3QoZGF0YSkpIHtcbiAgICAgICAgLy8gVGhlIHJlc3BvbnNlIHNob3VsZCBiZSBhIHZhbGlkIEpTT04gb2JqZWN0XG4gICAgICAgIC8vIElmIGl0IGNhbm5vdCBiZSBjb2VyY2VkIHRvIGFuIG9iamVjdCB0aGVuIHRoZSByZXNwb25zZSBpcyB3cm9uZ1xuICAgICAgICB0aHJvd1Byb3h5RXJyb3IoZGF0YSk7XG4gICAgICB9XG4gICAgICBsb2cuZGVidWcoYEdvdCByZXNwb25zZSB3aXRoIHN0YXR1cyAke3N0YXR1c306ICR7dHJ1bmNhdGVCb2R5KGRhdGEpfWApO1xuICAgICAgaXNSZXNwb25zZUxvZ2dlZCA9IHRydWU7XG4gICAgICBjb25zdCBpc1Nlc3Npb25DcmVhdGlvblJlcXVlc3QgPSAvXFwvc2Vzc2lvbiQvLnRlc3QodXJsKSAmJiBtZXRob2QgPT09ICdQT1NUJztcbiAgICAgIGlmIChpc1Nlc3Npb25DcmVhdGlvblJlcXVlc3QpIHtcbiAgICAgICAgaWYgKHN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgdGhpcy5zZXNzaW9uSWQgPSBkYXRhLnNlc3Npb25JZCB8fCAoZGF0YS52YWx1ZSB8fCB7fSkuc2Vzc2lvbklkO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZG93bnN0cmVhbVByb3RvY29sID0gdGhpcy5nZXRQcm90b2NvbEZyb21SZXNCb2R5KGRhdGEpO1xuICAgICAgICBsb2cuaW5mbyhgRGV0ZXJtaW5lZCB0aGUgZG93bnN0cmVhbSBwcm90b2NvbCBhcyAnJHt0aGlzLmRvd25zdHJlYW1Qcm90b2NvbH0nYCk7XG4gICAgICB9XG4gICAgICBpZiAoXy5oYXMoZGF0YSwgJ3N0YXR1cycpICYmIHBhcnNlSW50KGRhdGEuc3RhdHVzLCAxMCkgIT09IDApIHtcbiAgICAgICAgLy8gU29tZSBzZXJ2ZXJzLCBsaWtlIGNocm9tZWRyaXZlciBtYXkgcmV0dXJuIHJlc3BvbnNlIGNvZGUgMjAwIGZvciBub24temVybyBKU09OV1Agc3RhdHVzZXNcbiAgICAgICAgdGhyb3dQcm94eUVycm9yKGRhdGEpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzID0ge3N0YXR1c0NvZGU6IHN0YXR1cywgaGVhZGVycywgYm9keTogZGF0YX07XG4gICAgICByZXR1cm4gW3JlcywgZGF0YV07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gV2Ugb25seSBjb25zaWRlciBhbiBlcnJvciB1bmV4cGVjdGVkIGlmIHRoaXMgd2FzIG5vdFxuICAgICAgLy8gYW4gYXN5bmMgcmVxdWVzdCBtb2R1bGUgZXJyb3Igb3IgaWYgdGhlIHJlc3BvbnNlIGNhbm5vdCBiZSBjYXN0IHRvXG4gICAgICAvLyBhIHZhbGlkIEpTT05cbiAgICAgIGxldCBwcm94eUVycm9yTXNnID0gZS5tZXNzYWdlO1xuICAgICAgaWYgKHV0aWwuaGFzVmFsdWUoZS5yZXNwb25zZSkpIHtcbiAgICAgICAgaWYgKCFpc1Jlc3BvbnNlTG9nZ2VkKSB7XG4gICAgICAgICAgY29uc3QgZXJyb3IgPSB0cnVuY2F0ZUJvZHkoZS5yZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICBsb2cuaW5mbyh1dGlsLmhhc1ZhbHVlKGUucmVzcG9uc2Uuc3RhdHVzKVxuICAgICAgICAgICAgPyBgR290IHJlc3BvbnNlIHdpdGggc3RhdHVzICR7ZS5yZXNwb25zZS5zdGF0dXN9OiAke2Vycm9yfWBcbiAgICAgICAgICAgIDogYEdvdCByZXNwb25zZSB3aXRoIHVua25vd24gc3RhdHVzOiAke2Vycm9yfWApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm94eUVycm9yTXNnID0gYENvdWxkIG5vdCBwcm94eSBjb21tYW5kIHRvIHRoZSByZW1vdGUgc2VydmVyLiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YDtcbiAgICAgICAgaWYgKENPTVBBQ1RfRVJST1JfUEFUVEVSTlMuc29tZSgocCkgPT4gcC50ZXN0KGUubWVzc2FnZSkpKSB7XG4gICAgICAgICAgbG9nLmluZm8oZS5tZXNzYWdlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2cuaW5mbyhlLnN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IGVycm9ycy5Qcm94eVJlcXVlc3RFcnJvcihwcm94eUVycm9yTXNnLCBlLnJlc3BvbnNlPy5kYXRhLCBlLnJlc3BvbnNlPy5zdGF0dXMpO1xuICAgIH1cbiAgfVxuXG4gIGdldFByb3RvY29sRnJvbVJlc0JvZHkgKHJlc09iaikge1xuICAgIGlmIChfLmlzSW50ZWdlcihyZXNPYmouc3RhdHVzKSkge1xuICAgICAgcmV0dXJuIE1KU09OV1A7XG4gICAgfVxuICAgIGlmICghXy5pc1VuZGVmaW5lZChyZXNPYmoudmFsdWUpKSB7XG4gICAgICByZXR1cm4gVzNDO1xuICAgIH1cbiAgfVxuXG4gIHJlcXVlc3RUb0NvbW1hbmROYW1lICh1cmwsIG1ldGhvZCkge1xuICAgIGNvbnN0IGV4dHJhY3RDb21tYW5kTmFtZSA9IChwYXR0ZXJuKSA9PiB7XG4gICAgICBjb25zdCBwYXRoTWF0Y2ggPSBwYXR0ZXJuLmV4ZWModXJsKTtcbiAgICAgIHJldHVybiBwYXRoTWF0Y2ggPyByb3V0ZVRvQ29tbWFuZE5hbWUocGF0aE1hdGNoWzFdLCBtZXRob2QsIHRoaXMucmVxQmFzZVBhdGgpIDogbnVsbDtcbiAgICB9O1xuICAgIGxldCBjb21tYW5kTmFtZSA9IHJvdXRlVG9Db21tYW5kTmFtZSh1cmwsIG1ldGhvZCwgdGhpcy5yZXFCYXNlUGF0aCk7XG4gICAgaWYgKCFjb21tYW5kTmFtZSAmJiBfLmluY2x1ZGVzKHVybCwgYCR7dGhpcy5yZXFCYXNlUGF0aH0vc2Vzc2lvbi9gKSkge1xuICAgICAgY29tbWFuZE5hbWUgPSBleHRyYWN0Q29tbWFuZE5hbWUobmV3IFJlZ0V4cChgJHtfLmVzY2FwZVJlZ0V4cCh0aGlzLnJlcUJhc2VQYXRoKX0vc2Vzc2lvbi9bXi9dKyguKylgKSk7XG4gICAgfVxuICAgIGlmICghY29tbWFuZE5hbWUgJiYgXy5pbmNsdWRlcyh1cmwsIHRoaXMucmVxQmFzZVBhdGgpKSB7XG4gICAgICBjb21tYW5kTmFtZSA9IGV4dHJhY3RDb21tYW5kTmFtZShuZXcgUmVnRXhwKGAke18uZXNjYXBlUmVnRXhwKHRoaXMucmVxQmFzZVBhdGgpfSgvLispYCkpO1xuICAgIH1cbiAgICByZXR1cm4gY29tbWFuZE5hbWU7XG4gIH1cblxuICBhc3luYyBwcm94eUNvbW1hbmQgKHVybCwgbWV0aG9kLCBib2R5ID0gbnVsbCkge1xuICAgIGNvbnN0IGNvbW1hbmROYW1lID0gdGhpcy5yZXF1ZXN0VG9Db21tYW5kTmFtZSh1cmwsIG1ldGhvZCk7XG4gICAgaWYgKCFjb21tYW5kTmFtZSkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHkodXJsLCBtZXRob2QsIGJvZHkpO1xuICAgIH1cbiAgICBsb2cuZGVidWcoYE1hdGNoZWQgJyR7dXJsfScgdG8gY29tbWFuZCBuYW1lICcke2NvbW1hbmROYW1lfSdgKTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3RvY29sQ29udmVydGVyLmNvbnZlcnRBbmRQcm94eShjb21tYW5kTmFtZSwgdXJsLCBtZXRob2QsIGJvZHkpO1xuICB9XG5cbiAgYXN5bmMgY29tbWFuZCAodXJsLCBtZXRob2QsIGJvZHkgPSBudWxsKSB7XG4gICAgbGV0IHJlc3BvbnNlO1xuICAgIGxldCByZXNCb2R5T2JqO1xuICAgIHRyeSB7XG4gICAgICBbcmVzcG9uc2UsIHJlc0JvZHlPYmpdID0gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQodXJsLCBtZXRob2QsIGJvZHkpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGlzRXJyb3JUeXBlKGVyciwgZXJyb3JzLlByb3h5UmVxdWVzdEVycm9yKSkge1xuICAgICAgICB0aHJvdyBlcnIuZ2V0QWN0dWFsRXJyb3IoKTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBlcnJvcnMuVW5rbm93bkVycm9yKGVyci5tZXNzYWdlKTtcbiAgICB9XG4gICAgY29uc3QgcHJvdG9jb2wgPSB0aGlzLmdldFByb3RvY29sRnJvbVJlc0JvZHkocmVzQm9keU9iaik7XG4gICAgaWYgKHByb3RvY29sID09PSBNSlNPTldQKSB7XG4gICAgICAvLyBHb3QgcmVzcG9uc2UgaW4gTUpTT05XUCBmb3JtYXRcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXNDb2RlID09PSAyMDAgJiYgcmVzQm9keU9iai5zdGF0dXMgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHJlc0JvZHlPYmoudmFsdWU7XG4gICAgICB9XG4gICAgICBjb25zdCBzdGF0dXMgPSBwYXJzZUludChyZXNCb2R5T2JqLnN0YXR1cywgMTApO1xuICAgICAgaWYgKCFpc05hTihzdGF0dXMpICYmIHN0YXR1cyAhPT0gMCkge1xuICAgICAgICBsZXQgbWVzc2FnZSA9IHJlc0JvZHlPYmoudmFsdWU7XG4gICAgICAgIGlmIChfLmhhcyhtZXNzYWdlLCAnbWVzc2FnZScpKSB7XG4gICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UubWVzc2FnZTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvckZyb21NSlNPTldQU3RhdHVzQ29kZShzdGF0dXMsIF8uaXNFbXB0eShtZXNzYWdlKSA/IGdldFN1bW1hcnlCeUNvZGUoc3RhdHVzKSA6IG1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJvdG9jb2wgPT09IFczQykge1xuICAgICAgLy8gR290IHJlc3BvbnNlIGluIFczQyBmb3JtYXRcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXNDb2RlIDwgMzAwKSB7XG4gICAgICAgIHJldHVybiByZXNCb2R5T2JqLnZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKF8uaXNQbGFpbk9iamVjdChyZXNCb2R5T2JqLnZhbHVlKSAmJiByZXNCb2R5T2JqLnZhbHVlLmVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yRnJvbVczQ0pzb25Db2RlKHJlc0JvZHlPYmoudmFsdWUuZXJyb3IsIHJlc0JvZHlPYmoudmFsdWUubWVzc2FnZSwgcmVzQm9keU9iai52YWx1ZS5zdGFja3RyYWNlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgPT09IDIwMCkge1xuICAgICAgLy8gVW5rbm93biBwcm90b2NvbC4gS2VlcGluZyBpdCBiZWNhdXNlIG9mIHRoZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICByZXR1cm4gcmVzQm9keU9iajtcbiAgICB9XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duRXJyb3IoYERpZCBub3Qga25vdyB3aGF0IHRvIGRvIHdpdGggcmVzcG9uc2UgY29kZSAnJHtyZXNwb25zZS5zdGF0dXNDb2RlfScgYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGFuZCByZXNwb25zZSBib2R5ICcke18udHJ1bmNhdGUoSlNPTi5zdHJpbmdpZnkocmVzQm9keU9iaiksIHtsZW5ndGg6IDMwMH0pfSdgKTtcbiAgfVxuXG4gIGdldFNlc3Npb25JZEZyb21VcmwgKHVybCkge1xuICAgIGNvbnN0IG1hdGNoID0gdXJsLm1hdGNoKC9cXC9zZXNzaW9uXFwvKFteL10rKS8pO1xuICAgIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdIDogbnVsbDtcbiAgfVxuXG4gIGFzeW5jIHByb3h5UmVxUmVzIChyZXEsIHJlcykge1xuICAgIGNvbnN0IFtyZXNwb25zZSwgcmVzQm9keU9ial0gPSBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZChyZXEub3JpZ2luYWxVcmwsIHJlcS5tZXRob2QsIHJlcS5ib2R5KTtcblxuICAgIHJlcy5oZWFkZXJzID0gcmVzcG9uc2UuaGVhZGVycztcbiAgICByZXMuc2V0KCdjb250ZW50LXR5cGUnLCByZXNwb25zZS5oZWFkZXJzWydjb250ZW50LXR5cGUnXSk7XG4gICAgLy8gaWYgdGhlIHByb3hpZWQgcmVzcG9uc2UgY29udGFpbnMgYSBzZXNzaW9uSWQgdGhhdCB0aGUgZG93bnN0cmVhbVxuICAgIC8vIGRyaXZlciBoYXMgZ2VuZXJhdGVkLCB3ZSBkb24ndCB3YW50IHRvIHJldHVybiB0aGF0IHRvIHRoZSBjbGllbnQuXG4gICAgLy8gSW5zdGVhZCwgcmV0dXJuIHRoZSBpZCBmcm9tIHRoZSByZXF1ZXN0IG9yIGZyb20gY3VycmVudCBzZXNzaW9uXG4gICAgY29uc3QgcmVxU2Vzc2lvbklkID0gdGhpcy5nZXRTZXNzaW9uSWRGcm9tVXJsKHJlcS5vcmlnaW5hbFVybCk7XG4gICAgaWYgKF8uaGFzKHJlc0JvZHlPYmosICdzZXNzaW9uSWQnKSkge1xuICAgICAgaWYgKHJlcVNlc3Npb25JZCkge1xuICAgICAgICBsb2cuaW5mbyhgUmVwbGFjaW5nIHNlc3Npb25JZCAke3Jlc0JvZHlPYmouc2Vzc2lvbklkfSB3aXRoICR7cmVxU2Vzc2lvbklkfWApO1xuICAgICAgICByZXNCb2R5T2JqLnNlc3Npb25JZCA9IHJlcVNlc3Npb25JZDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZXNzaW9uSWQpIHtcbiAgICAgICAgbG9nLmluZm8oYFJlcGxhY2luZyBzZXNzaW9uSWQgJHtyZXNCb2R5T2JqLnNlc3Npb25JZH0gd2l0aCAke3RoaXMuc2Vzc2lvbklkfWApO1xuICAgICAgICByZXNCb2R5T2JqLnNlc3Npb25JZCA9IHRoaXMuc2Vzc2lvbklkO1xuICAgICAgfVxuICAgIH1cbiAgICByZXNCb2R5T2JqLnZhbHVlID0gZm9ybWF0UmVzcG9uc2VWYWx1ZShyZXNCb2R5T2JqLnZhbHVlKTtcbiAgICByZXMuc3RhdHVzKHJlc3BvbnNlLnN0YXR1c0NvZGUpLnNlbmQoSlNPTi5zdHJpbmdpZnkoZm9ybWF0U3RhdHVzKHJlc0JvZHlPYmopKSk7XG4gIH1cbn1cblxuZXhwb3J0IHsgSldQcm94eSB9O1xuZXhwb3J0IGRlZmF1bHQgSldQcm94eTtcbiJdLCJmaWxlIjoibGliL2pzb253cC1wcm94eS9wcm94eS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
385
+ exports.default = _default;
386
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9qc29ud3AtcHJveHkvcHJveHkuanMiXSwibmFtZXMiOlsiREVGQVVMVF9MT0ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiLCJERUZBVUxUX1JFUVVFU1RfVElNRU9VVCIsIkNPTVBBQ1RfRVJST1JfUEFUVEVSTlMiLCJNSlNPTldQIiwiVzNDIiwiUFJPVE9DT0xTIiwiSldQcm94eSIsImNvbnN0cnVjdG9yIiwib3B0cyIsIl8iLCJkZWZhdWx0cyIsInNjaGVtZSIsInNlcnZlciIsInBvcnQiLCJiYXNlIiwiREVGQVVMVF9CQVNFX1BBVEgiLCJyZXFCYXNlUGF0aCIsInNlc3Npb25JZCIsInRpbWVvdXQiLCJ0b0xvd2VyQ2FzZSIsIl9hY3RpdmVSZXF1ZXN0cyIsIl9kb3duc3RyZWFtUHJvdG9jb2wiLCJhZ2VudE9wdHMiLCJrZWVwQWxpdmUiLCJtYXhTb2NrZXRzIiwibWF4RnJlZVNvY2tldHMiLCJodHRwQWdlbnQiLCJodHRwIiwiQWdlbnQiLCJodHRwc0FnZW50IiwiaHR0cHMiLCJwcm90b2NvbENvbnZlcnRlciIsIlByb3RvY29sQ29udmVydGVyIiwicHJveHkiLCJiaW5kIiwibG9nIiwiX2xvZyIsInJlcXVlc3QiLCJyZXF1ZXN0Q29uZmlnIiwicmVxUHJvbWlzZSIsInB1c2giLCJwdWxsIiwiZ2V0QWN0aXZlUmVxdWVzdHNDb3VudCIsImxlbmd0aCIsImNhbmNlbEFjdGl2ZVJlcXVlc3RzIiwiZW5kcG9pbnRSZXF1aXJlc1Nlc3Npb25JZCIsImVuZHBvaW50IiwiaW5jbHVkZXMiLCJkb3duc3RyZWFtUHJvdG9jb2wiLCJ2YWx1ZSIsImdldFVybEZvclByb3h5IiwidXJsIiwicHJveHlCYXNlIiwiZW5kcG9pbnRSZSIsInJlbWFpbmluZ1VybCIsInRlc3QiLCJmaXJzdCIsIlJlZ0V4cCIsImV4ZWMiLCJFcnJvciIsInJlcGxhY2UiLCJzdHJpcFByZWZpeFJlIiwicmVxdWlyZXNTZXNzaW9uSWQiLCJzZXNzaW9uQmFzZVJlIiwibWF0Y2giLCJtZXRob2QiLCJib2R5IiwidG9VcHBlckNhc2UiLCJuZXdVcmwiLCJ0cnVuY2F0ZUJvZHkiLCJjb250ZW50IiwidHJ1bmNhdGUiLCJpc1N0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJNQVhfTE9HX0JPRFlfTEVOR1RIIiwicmVxT3B0cyIsImhlYWRlcnMiLCJhY2NlcHQiLCJ1dGlsIiwiaGFzVmFsdWUiLCJkYXRhIiwicGFyc2UiLCJlIiwiZGVidWciLCJ0aHJvd1Byb3h5RXJyb3IiLCJlcnJvciIsImVyciIsInJlc3BvbnNlIiwic3RhdHVzIiwiaXNSZXNwb25zZUxvZ2dlZCIsImlzUGxhaW5PYmplY3QiLCJpc1Nlc3Npb25DcmVhdGlvblJlcXVlc3QiLCJnZXRQcm90b2NvbEZyb21SZXNCb2R5IiwiaW5mbyIsImhhcyIsInBhcnNlSW50IiwicmVzIiwic3RhdHVzQ29kZSIsInByb3h5RXJyb3JNc2ciLCJtZXNzYWdlIiwic29tZSIsInAiLCJzdGFjayIsImVycm9ycyIsIlByb3h5UmVxdWVzdEVycm9yIiwicmVzT2JqIiwiaXNJbnRlZ2VyIiwiaXNVbmRlZmluZWQiLCJyZXF1ZXN0VG9Db21tYW5kTmFtZSIsImV4dHJhY3RDb21tYW5kTmFtZSIsInBhdHRlcm4iLCJwYXRoTWF0Y2giLCJjb21tYW5kTmFtZSIsImVzY2FwZVJlZ0V4cCIsInByb3h5Q29tbWFuZCIsImNvbnZlcnRBbmRQcm94eSIsImNvbW1hbmQiLCJyZXNCb2R5T2JqIiwiZ2V0QWN0dWFsRXJyb3IiLCJVbmtub3duRXJyb3IiLCJwcm90b2NvbCIsImlzTmFOIiwiaXNFbXB0eSIsInN0YWNrdHJhY2UiLCJnZXRTZXNzaW9uSWRGcm9tVXJsIiwicHJveHlSZXFSZXMiLCJyZXEiLCJvcmlnaW5hbFVybCIsInNldCIsInJlcVNlc3Npb25JZCIsInNlbmQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEs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LENBQXJDO0FBQ0Q7O0FBdFRXOzs7ZUEwVENoSCxPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGxvZ2dlciwgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgZ2V0U3VtbWFyeUJ5Q29kZSB9IGZyb20gJy4uL2pzb253cC1zdGF0dXMvc3RhdHVzJztcbmltcG9ydCB7XG4gIGVycm9ycywgaXNFcnJvclR5cGUsIGVycm9yRnJvbU1KU09OV1BTdGF0dXNDb2RlLCBlcnJvckZyb21XM0NKc29uQ29kZVxufSBmcm9tICcuLi9wcm90b2NvbC9lcnJvcnMnO1xuaW1wb3J0IHsgcm91dGVUb0NvbW1hbmROYW1lIH0gZnJvbSAnLi4vcHJvdG9jb2wnO1xuaW1wb3J0IHsgTUFYX0xPR19CT0RZX0xFTkdUSCwgREVGQVVMVF9CQVNFX1BBVEgsIFBST1RPQ09MUyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgUHJvdG9jb2xDb252ZXJ0ZXIgZnJvbSAnLi9wcm90b2NvbC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgZm9ybWF0UmVzcG9uc2VWYWx1ZSwgZm9ybWF0U3RhdHVzIH0gZnJvbSAnLi4vcHJvdG9jb2wvaGVscGVycyc7XG5pbXBvcnQgaHR0cCBmcm9tICdodHRwJztcbmltcG9ydCBodHRwcyBmcm9tICdodHRwcyc7XG5cbmNvbnN0IERFRkFVTFRfTE9HID0gbG9nZ2VyLmdldExvZ2dlcignV0QgUHJveHknKTtcbmNvbnN0IERFRkFVTFRfUkVRVUVTVF9USU1FT1VUID0gMjQwMDAwO1xuY29uc3QgQ09NUEFDVF9FUlJPUl9QQVRURVJOUyA9IFtcbiAgL1xcYkVDT05OUkVGVVNFRFxcYi8sXG4gIC9zb2NrZXQgaGFuZyB1cC8sXG5dO1xuXG5jb25zdCB7TUpTT05XUCwgVzNDfSA9IFBST1RPQ09MUztcblxuY2xhc3MgSldQcm94eSB7XG4gIGNvbnN0cnVjdG9yIChvcHRzID0ge30pIHtcbiAgICBfLmRlZmF1bHRzKHRoaXMsIG9wdHMsIHtcbiAgICAgIHNjaGVtZTogJ2h0dHAnLFxuICAgICAgc2VydmVyOiAnbG9jYWxob3N0JyxcbiAgICAgIHBvcnQ6IDQ0NDQsXG4gICAgICBiYXNlOiBERUZBVUxUX0JBU0VfUEFUSCxcbiAgICAgIHJlcUJhc2VQYXRoOiBERUZBVUxUX0JBU0VfUEFUSCxcbiAgICAgIHNlc3Npb25JZDogbnVsbCxcbiAgICAgIHRpbWVvdXQ6IERFRkFVTFRfUkVRVUVTVF9USU1FT1VULFxuICAgIH0pO1xuICAgIHRoaXMuc2NoZW1lID0gdGhpcy5zY2hlbWUudG9Mb3dlckNhc2UoKTtcbiAgICB0aGlzLl9hY3RpdmVSZXF1ZXN0cyA9IFtdO1xuICAgIHRoaXMuX2Rvd25zdHJlYW1Qcm90b2NvbCA9IG51bGw7XG4gICAgY29uc3QgYWdlbnRPcHRzID0ge1xuICAgICAga2VlcEFsaXZlOiBvcHRzLmtlZXBBbGl2ZSA/PyB0cnVlLFxuICAgICAgbWF4U29ja2V0czogMTAsXG4gICAgICBtYXhGcmVlU29ja2V0czogNSxcbiAgICB9O1xuICAgIHRoaXMuaHR0cEFnZW50ID0gbmV3IGh0dHAuQWdlbnQoYWdlbnRPcHRzKTtcbiAgICB0aGlzLmh0dHBzQWdlbnQgPSBuZXcgaHR0cHMuQWdlbnQoYWdlbnRPcHRzKTtcbiAgICB0aGlzLnByb3RvY29sQ29udmVydGVyID0gbmV3IFByb3RvY29sQ29udmVydGVyKHRoaXMucHJveHkuYmluZCh0aGlzKSwgb3B0cy5sb2cpO1xuICAgIHRoaXMuX2xvZyA9IG9wdHMubG9nO1xuICB9XG5cbiAgZ2V0IGxvZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvZyA/PyBERUZBVUxUX0xPRztcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtcyByZXF1ZXN0cyB0byB0aGUgZG93bnN0cmVhbSBzZXJ2ZXJcbiAgICpcbiAgICogQHByaXZhdGUgLSBEbyBub3QgY2FsbCB0aGlzIG1ldGhvZCBkaXJlY3RseSxcbiAgICogaXQgdXNlcyBjbGllbnQtc3BlY2lmaWMgYXJndW1lbnRzIGFuZCByZXNwb25zZXMhXG4gICAqXG4gICAqIEBwYXJhbSB7QXhpb3NSZXF1ZXN0Q29uZmlnfSByZXF1ZXN0Q29uZmlnXG4gICAqIEByZXR1cm5zIHtBeGlvc1Jlc3BvbnNlfVxuICAgKi9cbiAgYXN5bmMgcmVxdWVzdCAocmVxdWVzdENvbmZpZykge1xuICAgIGNvbnN0IHJlcVByb21pc2UgPSBheGlvcyhyZXF1ZXN0Q29uZmlnKTtcbiAgICB0aGlzLl9hY3RpdmVSZXF1ZXN0cy5wdXNoKHJlcVByb21pc2UpO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgcmVxUHJvbWlzZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgXy5wdWxsKHRoaXMuX2FjdGl2ZVJlcXVlc3RzLCByZXFQcm9taXNlKTtcbiAgICB9XG4gIH1cblxuICBnZXRBY3RpdmVSZXF1ZXN0c0NvdW50ICgpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlUmVxdWVzdHMubGVuZ3RoO1xuICB9XG5cbiAgY2FuY2VsQWN0aXZlUmVxdWVzdHMgKCkge1xuICAgIHRoaXMuX2FjdGl2ZVJlcXVlc3RzID0gW107XG4gIH1cblxuICBlbmRwb2ludFJlcXVpcmVzU2Vzc2lvbklkIChlbmRwb2ludCkge1xuICAgIHJldHVybiAhXy5pbmNsdWRlcyhbJy9zZXNzaW9uJywgJy9zZXNzaW9ucycsICcvc3RhdHVzJ10sIGVuZHBvaW50KTtcbiAgfVxuXG4gIHNldCBkb3duc3RyZWFtUHJvdG9jb2wgKHZhbHVlKSB7XG4gICAgdGhpcy5fZG93bnN0cmVhbVByb3RvY29sID0gdmFsdWU7XG4gICAgdGhpcy5wcm90b2NvbENvbnZlcnRlci5kb3duc3RyZWFtUHJvdG9jb2wgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBkb3duc3RyZWFtUHJvdG9jb2wgKCkge1xuICAgIHJldHVybiB0aGlzLl9kb3duc3RyZWFtUHJvdG9jb2w7XG4gIH1cblxuICBnZXRVcmxGb3JQcm94eSAodXJsKSB7XG4gICAgaWYgKHVybCA9PT0gJycpIHtcbiAgICAgIHVybCA9ICcvJztcbiAgICB9XG4gICAgY29uc3QgcHJveHlCYXNlID0gYCR7dGhpcy5zY2hlbWV9Oi8vJHt0aGlzLnNlcnZlcn06JHt0aGlzLnBvcnR9JHt0aGlzLmJhc2V9YDtcbiAgICBjb25zdCBlbmRwb2ludFJlID0gJygvKHNlc3Npb258c3RhdHVzKSknO1xuICAgIGxldCByZW1haW5pbmdVcmwgPSAnJztcbiAgICBpZiAoL15odHRwLy50ZXN0KHVybCkpIHtcbiAgICAgIGNvbnN0IGZpcnN0ID0gKG5ldyBSZWdFeHAoYChodHRwcz86Ly8uKykke2VuZHBvaW50UmV9YCkpLmV4ZWModXJsKTtcbiAgICAgIGlmICghZmlyc3QpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdHb3QgYSBjb21wbGV0ZSB1cmwgYnV0IGNvdWxkIG5vdCBleHRyYWN0IEpXUCBlbmRwb2ludCcpO1xuICAgICAgfVxuICAgICAgcmVtYWluaW5nVXJsID0gdXJsLnJlcGxhY2UoZmlyc3RbMV0sICcnKTtcbiAgICB9IGVsc2UgaWYgKChuZXcgUmVnRXhwKCdeLycpKS50ZXN0KHVybCkpIHtcbiAgICAgIHJlbWFpbmluZ1VybCA9IHVybDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEaWQgbm90IGtub3cgd2hhdCB0byBkbyB3aXRoIHVybCAnJHt1cmx9J2ApO1xuICAgIH1cblxuICAgIGNvbnN0IHN0cmlwUHJlZml4UmUgPSBuZXcgUmVnRXhwKCdeLio/KC8oc2Vzc2lvbnxzdGF0dXMpLiopJCcpO1xuICAgIGlmIChzdHJpcFByZWZpeFJlLnRlc3QocmVtYWluaW5nVXJsKSkge1xuICAgICAgcmVtYWluaW5nVXJsID0gc3RyaXBQcmVmaXhSZS5leGVjKHJlbWFpbmluZ1VybClbMV07XG4gICAgfVxuXG4gICAgaWYgKCEobmV3IFJlZ0V4cChlbmRwb2ludFJlKSkudGVzdChyZW1haW5pbmdVcmwpKSB7XG4gICAgICByZW1haW5pbmdVcmwgPSBgL3Nlc3Npb24vJHt0aGlzLnNlc3Npb25JZH0ke3JlbWFpbmluZ1VybH1gO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcXVpcmVzU2Vzc2lvbklkID0gdGhpcy5lbmRwb2ludFJlcXVpcmVzU2Vzc2lvbklkKHJlbWFpbmluZ1VybCk7XG5cbiAgICBpZiAocmVxdWlyZXNTZXNzaW9uSWQgJiYgdGhpcy5zZXNzaW9uSWQgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVHJ5aW5nIHRvIHByb3h5IGEgc2Vzc2lvbiBjb21tYW5kIHdpdGhvdXQgc2Vzc2lvbiBpZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlc3Npb25CYXNlUmUgPSBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vKFteL10rKScpO1xuICAgIGlmIChzZXNzaW9uQmFzZVJlLnRlc3QocmVtYWluaW5nVXJsKSkge1xuICAgICAgLy8gd2UgaGF2ZSBzb21ldGhpbmcgbGlrZSAvc2Vzc2lvbi86aWQvZm9vYmFyLCBzbyB3ZSBuZWVkIHRvIHJlcGxhY2VcbiAgICAgIC8vIHRoZSBzZXNzaW9uIGlkXG4gICAgICBjb25zdCBtYXRjaCA9IHNlc3Npb25CYXNlUmUuZXhlYyhyZW1haW5pbmdVcmwpO1xuICAgICAgcmVtYWluaW5nVXJsID0gcmVtYWluaW5nVXJsLnJlcGxhY2UobWF0Y2hbMV0sIHRoaXMuc2Vzc2lvbklkKTtcbiAgICB9IGVsc2UgaWYgKHJlcXVpcmVzU2Vzc2lvbklkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIDpzZXNzaW9uIHNlY3Rpb24gZm9yIHVybDogJHtyZW1haW5pbmdVcmx9YCk7XG4gICAgfVxuICAgIHJlbWFpbmluZ1VybCA9IHJlbWFpbmluZ1VybC5yZXBsYWNlKC9cXC8kLywgJycpOyAvLyBjYW4ndCBoYXZlIHRyYWlsaW5nIHNsYXNoZXNcblxuICAgIHJldHVybiBwcm94eUJhc2UgKyByZW1haW5pbmdVcmw7XG4gIH1cblxuICBhc3luYyBwcm94eSAodXJsLCBtZXRob2QsIGJvZHkgPSBudWxsKSB7XG4gICAgbWV0aG9kID0gbWV0aG9kLnRvVXBwZXJDYXNlKCk7XG4gICAgY29uc3QgbmV3VXJsID0gdGhpcy5nZXRVcmxGb3JQcm94eSh1cmwpO1xuICAgIGNvbnN0IHRydW5jYXRlQm9keSA9IChjb250ZW50KSA9PiBfLnRydW5jYXRlKFxuICAgICAgXy5pc1N0cmluZyhjb250ZW50KSA/IGNvbnRlbnQgOiBKU09OLnN0cmluZ2lmeShjb250ZW50KSxcbiAgICAgIHsgbGVuZ3RoOiBNQVhfTE9HX0JPRFlfTEVOR1RIIH0pO1xuICAgIGNvbnN0IHJlcU9wdHMgPSB7XG4gICAgICB1cmw6IG5ld1VybCxcbiAgICAgIG1ldGhvZCxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04JyxcbiAgICAgICAgJ3VzZXItYWdlbnQnOiAnYXBwaXVtJyxcbiAgICAgICAgYWNjZXB0OiAnYXBwbGljYXRpb24vanNvbiwgKi8qJyxcbiAgICAgIH0sXG4gICAgICBwcm94eTogZmFsc2UsXG4gICAgICB0aW1lb3V0OiB0aGlzLnRpbWVvdXQsXG4gICAgICBodHRwQWdlbnQ6IHRoaXMuaHR0cEFnZW50LFxuICAgICAgaHR0cHNBZ2VudDogdGhpcy5odHRwc0FnZW50LFxuICAgIH07XG4gICAgLy8gR0VUIG1ldGhvZHMgc2hvdWxkbid0IGhhdmUgYW55IGJvZHkuIE1vc3Qgc2VydmVycyBhcmUgT0sgd2l0aCB0aGlzLCBidXQgV2ViRHJpdmVyQWdlbnQgdGhyb3dzIDQwMCBlcnJvcnNcbiAgICBpZiAodXRpbC5oYXNWYWx1ZShib2R5KSAmJiBtZXRob2QgIT09ICdHRVQnKSB7XG4gICAgICBpZiAodHlwZW9mIGJvZHkgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmVxT3B0cy5kYXRhID0gSlNPTi5wYXJzZShib2R5KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGludGVycHJldCB0aGUgcmVxdWVzdCBib2R5IGFzIHZhbGlkIEpTT046ICR7dHJ1bmNhdGVCb2R5KGJvZHkpfWApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXFPcHRzLmRhdGEgPSBib2R5O1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubG9nLmRlYnVnKGBQcm94eWluZyBbJHttZXRob2R9ICR7dXJsIHx8ICcvJ31dIHRvIFske21ldGhvZH0gJHtuZXdVcmx9XSBgICtcbiAgICAgIChyZXFPcHRzLmRhdGEgPyBgd2l0aCBib2R5OiAke3RydW5jYXRlQm9keShyZXFPcHRzLmRhdGEpfWAgOiAnd2l0aCBubyBib2R5JykpO1xuXG4gICAgY29uc3QgdGhyb3dQcm94eUVycm9yID0gKGVycm9yKSA9PiB7XG4gICAgICBjb25zdCBlcnIgPSBuZXcgRXJyb3IoYFRoZSByZXF1ZXN0IHRvICR7dXJsfSBoYXMgZmFpbGVkYCk7XG4gICAgICBlcnIucmVzcG9uc2UgPSB7XG4gICAgICAgIGRhdGE6IGVycm9yLFxuICAgICAgICBzdGF0dXM6IDUwMFxuICAgICAgfTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9O1xuICAgIGxldCBpc1Jlc3BvbnNlTG9nZ2VkID0gZmFsc2U7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHtkYXRhLCBzdGF0dXMsIGhlYWRlcnN9ID0gYXdhaXQgdGhpcy5yZXF1ZXN0KHJlcU9wdHMpO1xuICAgICAgLy8gYGRhdGFgIG1pZ2h0IGJlIHJlYWxseSBiaWdcbiAgICAgIC8vIEJlIGNhcmVmdWwgd2hpbGUgaGFuZGxpbmcgaXQgdG8gYXZvaWQgbWVtb3J5IGxlYWtzXG4gICAgICBpZiAoIV8uaXNQbGFpbk9iamVjdChkYXRhKSkge1xuICAgICAgICAvLyBUaGUgcmVzcG9uc2Ugc2hvdWxkIGJlIGEgdmFsaWQgSlNPTiBvYmplY3RcbiAgICAgICAgLy8gSWYgaXQgY2Fubm90IGJlIGNvZXJjZWQgdG8gYW4gb2JqZWN0IHRoZW4gdGhlIHJlc3BvbnNlIGlzIHdyb25nXG4gICAgICAgIHRocm93UHJveHlFcnJvcihkYXRhKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9nLmRlYnVnKGBHb3QgcmVzcG9uc2Ugd2l0aCBzdGF0dXMgJHtzdGF0dXN9OiAke3RydW5jYXRlQm9keShkYXRhKX1gKTtcbiAgICAgIGlzUmVzcG9uc2VMb2dnZWQgPSB0cnVlO1xuICAgICAgY29uc3QgaXNTZXNzaW9uQ3JlYXRpb25SZXF1ZXN0ID0gL1xcL3Nlc3Npb24kLy50ZXN0KHVybCkgJiYgbWV0aG9kID09PSAnUE9TVCc7XG4gICAgICBpZiAoaXNTZXNzaW9uQ3JlYXRpb25SZXF1ZXN0KSB7XG4gICAgICAgIGlmIChzdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgIHRoaXMuc2Vzc2lvbklkID0gZGF0YS5zZXNzaW9uSWQgfHwgKGRhdGEudmFsdWUgfHwge30pLnNlc3Npb25JZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRvd25zdHJlYW1Qcm90b2NvbCA9IHRoaXMuZ2V0UHJvdG9jb2xGcm9tUmVzQm9keShkYXRhKTtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgRGV0ZXJtaW5lZCB0aGUgZG93bnN0cmVhbSBwcm90b2NvbCBhcyAnJHt0aGlzLmRvd25zdHJlYW1Qcm90b2NvbH0nYCk7XG4gICAgICB9XG4gICAgICBpZiAoXy5oYXMoZGF0YSwgJ3N0YXR1cycpICYmIHBhcnNlSW50KGRhdGEuc3RhdHVzLCAxMCkgIT09IDApIHtcbiAgICAgICAgLy8gU29tZSBzZXJ2ZXJzLCBsaWtlIGNocm9tZWRyaXZlciBtYXkgcmV0dXJuIHJlc3BvbnNlIGNvZGUgMjAwIGZvciBub24temVybyBKU09OV1Agc3RhdHVzZXNcbiAgICAgICAgdGhyb3dQcm94eUVycm9yKGRhdGEpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzID0ge3N0YXR1c0NvZGU6IHN0YXR1cywgaGVhZGVycywgYm9keTogZGF0YX07XG4gICAgICByZXR1cm4gW3JlcywgZGF0YV07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gV2Ugb25seSBjb25zaWRlciBhbiBlcnJvciB1bmV4cGVjdGVkIGlmIHRoaXMgd2FzIG5vdFxuICAgICAgLy8gYW4gYXN5bmMgcmVxdWVzdCBtb2R1bGUgZXJyb3Igb3IgaWYgdGhlIHJlc3BvbnNlIGNhbm5vdCBiZSBjYXN0IHRvXG4gICAgICAvLyBhIHZhbGlkIEpTT05cbiAgICAgIGxldCBwcm94eUVycm9yTXNnID0gZS5tZXNzYWdlO1xuICAgICAgaWYgKHV0aWwuaGFzVmFsdWUoZS5yZXNwb25zZSkpIHtcbiAgICAgICAgaWYgKCFpc1Jlc3BvbnNlTG9nZ2VkKSB7XG4gICAgICAgICAgY29uc3QgZXJyb3IgPSB0cnVuY2F0ZUJvZHkoZS5yZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICB0aGlzLmxvZy5pbmZvKHV0aWwuaGFzVmFsdWUoZS5yZXNwb25zZS5zdGF0dXMpXG4gICAgICAgICAgICA/IGBHb3QgcmVzcG9uc2Ugd2l0aCBzdGF0dXMgJHtlLnJlc3BvbnNlLnN0YXR1c306ICR7ZXJyb3J9YFxuICAgICAgICAgICAgOiBgR290IHJlc3BvbnNlIHdpdGggdW5rbm93biBzdGF0dXM6ICR7ZXJyb3J9YCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb3h5RXJyb3JNc2cgPSBgQ291bGQgbm90IHByb3h5IGNvbW1hbmQgdG8gdGhlIHJlbW90ZSBzZXJ2ZXIuIE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gO1xuICAgICAgICBpZiAoQ09NUEFDVF9FUlJPUl9QQVRURVJOUy5zb21lKChwKSA9PiBwLnRlc3QoZS5tZXNzYWdlKSkpIHtcbiAgICAgICAgICB0aGlzLmxvZy5pbmZvKGUubWVzc2FnZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5sb2cuaW5mbyhlLnN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IGVycm9ycy5Qcm94eVJlcXVlc3RFcnJvcihwcm94eUVycm9yTXNnLCBlLnJlc3BvbnNlPy5kYXRhLCBlLnJlc3BvbnNlPy5zdGF0dXMpO1xuICAgIH1cbiAgfVxuXG4gIGdldFByb3RvY29sRnJvbVJlc0JvZHkgKHJlc09iaikge1xuICAgIGlmIChfLmlzSW50ZWdlcihyZXNPYmouc3RhdHVzKSkge1xuICAgICAgcmV0dXJuIE1KU09OV1A7XG4gICAgfVxuICAgIGlmICghXy5pc1VuZGVmaW5lZChyZXNPYmoudmFsdWUpKSB7XG4gICAgICByZXR1cm4gVzNDO1xuICAgIH1cbiAgfVxuXG4gIHJlcXVlc3RUb0NvbW1hbmROYW1lICh1cmwsIG1ldGhvZCkge1xuICAgIGNvbnN0IGV4dHJhY3RDb21tYW5kTmFtZSA9IChwYXR0ZXJuKSA9PiB7XG4gICAgICBjb25zdCBwYXRoTWF0Y2ggPSBwYXR0ZXJuLmV4ZWModXJsKTtcbiAgICAgIHJldHVybiBwYXRoTWF0Y2ggPyByb3V0ZVRvQ29tbWFuZE5hbWUocGF0aE1hdGNoWzFdLCBtZXRob2QsIHRoaXMucmVxQmFzZVBhdGgpIDogbnVsbDtcbiAgICB9O1xuICAgIGxldCBjb21tYW5kTmFtZSA9IHJvdXRlVG9Db21tYW5kTmFtZSh1cmwsIG1ldGhvZCwgdGhpcy5yZXFCYXNlUGF0aCk7XG4gICAgaWYgKCFjb21tYW5kTmFtZSAmJiBfLmluY2x1ZGVzKHVybCwgYCR7dGhpcy5yZXFCYXNlUGF0aH0vc2Vzc2lvbi9gKSkge1xuICAgICAgY29tbWFuZE5hbWUgPSBleHRyYWN0Q29tbWFuZE5hbWUobmV3IFJlZ0V4cChgJHtfLmVzY2FwZVJlZ0V4cCh0aGlzLnJlcUJhc2VQYXRoKX0vc2Vzc2lvbi9bXi9dKyguKylgKSk7XG4gICAgfVxuICAgIGlmICghY29tbWFuZE5hbWUgJiYgXy5pbmNsdWRlcyh1cmwsIHRoaXMucmVxQmFzZVBhdGgpKSB7XG4gICAgICBjb21tYW5kTmFtZSA9IGV4dHJhY3RDb21tYW5kTmFtZShuZXcgUmVnRXhwKGAke18uZXNjYXBlUmVnRXhwKHRoaXMucmVxQmFzZVBhdGgpfSgvLispYCkpO1xuICAgIH1cbiAgICByZXR1cm4gY29tbWFuZE5hbWU7XG4gIH1cblxuICBhc3luYyBwcm94eUNvbW1hbmQgKHVybCwgbWV0aG9kLCBib2R5ID0gbnVsbCkge1xuICAgIGNvbnN0IGNvbW1hbmROYW1lID0gdGhpcy5yZXF1ZXN0VG9Db21tYW5kTmFtZSh1cmwsIG1ldGhvZCk7XG4gICAgaWYgKCFjb21tYW5kTmFtZSkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHkodXJsLCBtZXRob2QsIGJvZHkpO1xuICAgIH1cbiAgICB0aGlzLmxvZy5kZWJ1ZyhgTWF0Y2hlZCAnJHt1cmx9JyB0byBjb21tYW5kIG5hbWUgJyR7Y29tbWFuZE5hbWV9J2ApO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJvdG9jb2xDb252ZXJ0ZXIuY29udmVydEFuZFByb3h5KGNvbW1hbmROYW1lLCB1cmwsIG1ldGhvZCwgYm9keSk7XG4gIH1cblxuICBhc3luYyBjb21tYW5kICh1cmwsIG1ldGhvZCwgYm9keSA9IG51bGwpIHtcbiAgICBsZXQgcmVzcG9uc2U7XG4gICAgbGV0IHJlc0JvZHlPYmo7XG4gICAgdHJ5IHtcbiAgICAgIFtyZXNwb25zZSwgcmVzQm9keU9ial0gPSBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCh1cmwsIG1ldGhvZCwgYm9keSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoaXNFcnJvclR5cGUoZXJyLCBlcnJvcnMuUHJveHlSZXF1ZXN0RXJyb3IpKSB7XG4gICAgICAgIHRocm93IGVyci5nZXRBY3R1YWxFcnJvcigpO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duRXJyb3IoZXJyLm1lc3NhZ2UpO1xuICAgIH1cbiAgICBjb25zdCBwcm90b2NvbCA9IHRoaXMuZ2V0UHJvdG9jb2xGcm9tUmVzQm9keShyZXNCb2R5T2JqKTtcbiAgICBpZiAocHJvdG9jb2wgPT09IE1KU09OV1ApIHtcbiAgICAgIC8vIEdvdCByZXNwb25zZSBpbiBNSlNPTldQIGZvcm1hdFxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgPT09IDIwMCAmJiByZXNCb2R5T2JqLnN0YXR1cyA9PT0gMCkge1xuICAgICAgICByZXR1cm4gcmVzQm9keU9iai52YWx1ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHN0YXR1cyA9IHBhcnNlSW50KHJlc0JvZHlPYmouc3RhdHVzLCAxMCk7XG4gICAgICBpZiAoIWlzTmFOKHN0YXR1cykgJiYgc3RhdHVzICE9PSAwKSB7XG4gICAgICAgIGxldCBtZXNzYWdlID0gcmVzQm9keU9iai52YWx1ZTtcbiAgICAgICAgaWYgKF8uaGFzKG1lc3NhZ2UsICdtZXNzYWdlJykpIHtcbiAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZS5tZXNzYWdlO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGVycm9yRnJvbU1KU09OV1BTdGF0dXNDb2RlKHN0YXR1cywgXy5pc0VtcHR5KG1lc3NhZ2UpID8gZ2V0U3VtbWFyeUJ5Q29kZShzdGF0dXMpIDogbWVzc2FnZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwcm90b2NvbCA9PT0gVzNDKSB7XG4gICAgICAvLyBHb3QgcmVzcG9uc2UgaW4gVzNDIGZvcm1hdFxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgPCAzMDApIHtcbiAgICAgICAgcmV0dXJuIHJlc0JvZHlPYmoudmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAoXy5pc1BsYWluT2JqZWN0KHJlc0JvZHlPYmoudmFsdWUpICYmIHJlc0JvZHlPYmoudmFsdWUuZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3JGcm9tVzNDSnNvbkNvZGUocmVzQm9keU9iai52YWx1ZS5lcnJvciwgcmVzQm9keU9iai52YWx1ZS5tZXNzYWdlLCByZXNCb2R5T2JqLnZhbHVlLnN0YWNrdHJhY2UpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG4gICAgICAvLyBVbmtub3duIHByb3RvY29sLiBLZWVwaW5nIGl0IGJlY2F1c2Ugb2YgdGhlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbiAgICAgIHJldHVybiByZXNCb2R5T2JqO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgZXJyb3JzLlVua25vd25FcnJvcihgRGlkIG5vdCBrbm93IHdoYXQgdG8gZG8gd2l0aCByZXNwb25zZSBjb2RlICcke3Jlc3BvbnNlLnN0YXR1c0NvZGV9JyBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYW5kIHJlc3BvbnNlIGJvZHkgJyR7Xy50cnVuY2F0ZShKU09OLnN0cmluZ2lmeShyZXNCb2R5T2JqKSwge2xlbmd0aDogMzAwfSl9J2ApO1xuICB9XG5cbiAgZ2V0U2Vzc2lvbklkRnJvbVVybCAodXJsKSB7XG4gICAgY29uc3QgbWF0Y2ggPSB1cmwubWF0Y2goL1xcL3Nlc3Npb25cXC8oW14vXSspLyk7XG4gICAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMV0gOiBudWxsO1xuICB9XG5cbiAgYXN5bmMgcHJveHlSZXFSZXMgKHJlcSwgcmVzKSB7XG4gICAgY29uc3QgW3Jlc3BvbnNlLCByZXNCb2R5T2JqXSA9IGF3YWl0IHRoaXMucHJveHlDb21tYW5kKHJlcS5vcmlnaW5hbFVybCwgcmVxLm1ldGhvZCwgcmVxLmJvZHkpO1xuXG4gICAgcmVzLmhlYWRlcnMgPSByZXNwb25zZS5oZWFkZXJzO1xuICAgIHJlcy5zZXQoJ2NvbnRlbnQtdHlwZScsIHJlc3BvbnNlLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddKTtcbiAgICAvLyBpZiB0aGUgcHJveGllZCByZXNwb25zZSBjb250YWlucyBhIHNlc3Npb25JZCB0aGF0IHRoZSBkb3duc3RyZWFtXG4gICAgLy8gZHJpdmVyIGhhcyBnZW5lcmF0ZWQsIHdlIGRvbid0IHdhbnQgdG8gcmV0dXJuIHRoYXQgdG8gdGhlIGNsaWVudC5cbiAgICAvLyBJbnN0ZWFkLCByZXR1cm4gdGhlIGlkIGZyb20gdGhlIHJlcXVlc3Qgb3IgZnJvbSBjdXJyZW50IHNlc3Npb25cbiAgICBjb25zdCByZXFTZXNzaW9uSWQgPSB0aGlzLmdldFNlc3Npb25JZEZyb21VcmwocmVxLm9yaWdpbmFsVXJsKTtcbiAgICBpZiAoXy5oYXMocmVzQm9keU9iaiwgJ3Nlc3Npb25JZCcpKSB7XG4gICAgICBpZiAocmVxU2Vzc2lvbklkKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYFJlcGxhY2luZyBzZXNzaW9uSWQgJHtyZXNCb2R5T2JqLnNlc3Npb25JZH0gd2l0aCAke3JlcVNlc3Npb25JZH1gKTtcbiAgICAgICAgcmVzQm9keU9iai5zZXNzaW9uSWQgPSByZXFTZXNzaW9uSWQ7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2Vzc2lvbklkKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYFJlcGxhY2luZyBzZXNzaW9uSWQgJHtyZXNCb2R5T2JqLnNlc3Npb25JZH0gd2l0aCAke3RoaXMuc2Vzc2lvbklkfWApO1xuICAgICAgICByZXNCb2R5T2JqLnNlc3Npb25JZCA9IHRoaXMuc2Vzc2lvbklkO1xuICAgICAgfVxuICAgIH1cbiAgICByZXNCb2R5T2JqLnZhbHVlID0gZm9ybWF0UmVzcG9uc2VWYWx1ZShyZXNCb2R5T2JqLnZhbHVlKTtcbiAgICByZXMuc3RhdHVzKHJlc3BvbnNlLnN0YXR1c0NvZGUpLnNlbmQoSlNPTi5zdHJpbmdpZnkoZm9ybWF0U3RhdHVzKHJlc0JvZHlPYmopKSk7XG4gIH1cbn1cblxuZXhwb3J0IHsgSldQcm94eSB9O1xuZXhwb3J0IGRlZmF1bHQgSldQcm94eTtcbiJdfQ==
@@ -133,7 +133,5 @@ function getSummaryByCode(code) {
133
133
  }
134
134
 
135
135
  var _default = codes;
136
- exports.default = _default;require('source-map-support').install();
137
-
138
-
139
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9qc29ud3Atc3RhdHVzL3N0YXR1cy5qcyJdLCJuYW1lcyI6WyJjb2RlcyIsIlN1Y2Nlc3MiLCJjb2RlIiwic3VtbWFyeSIsIk5vU3VjaERyaXZlciIsIk5vU3VjaEVsZW1lbnQiLCJOb1N1Y2hGcmFtZSIsIlVua25vd25Db21tYW5kIiwiU3RhbGVFbGVtZW50UmVmZXJlbmNlIiwiRWxlbWVudE5vdFZpc2libGUiLCJJbnZhbGlkRWxlbWVudFN0YXRlIiwiVW5rbm93bkVycm9yIiwiRWxlbWVudElzTm90U2VsZWN0YWJsZSIsIkphdmFTY3JpcHRFcnJvciIsIlhQYXRoTG9va3VwRXJyb3IiLCJUaW1lb3V0IiwiTm9TdWNoV2luZG93IiwiSW52YWxpZENvb2tpZURvbWFpbiIsIlVuYWJsZVRvU2V0Q29va2llIiwiVW5leHBlY3RlZEFsZXJ0T3BlbiIsIk5vQWxlcnRPcGVuRXJyb3IiLCJTY3JpcHRUaW1lb3V0IiwiSW52YWxpZEVsZW1lbnRDb29yZGluYXRlcyIsIklNRU5vdEF2YWlsYWJsZSIsIklNRUVuZ2luZUFjdGl2YXRpb25GYWlsZWQiLCJJbnZhbGlkU2VsZWN0b3IiLCJTZXNzaW9uTm90Q3JlYXRlZEV4Y2VwdGlvbiIsIk1vdmVUYXJnZXRPdXRPZkJvdW5kcyIsIk5vU3VjaENvbnRleHQiLCJnZXRTdW1tYXJ5QnlDb2RlIiwicGFyc2VJbnQiLCJvYmoiLCJfIiwidmFsdWVzIiwiaXNVbmRlZmluZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBOztBQUVBLE1BQU1BLEtBQUssR0FBRztBQUNaQyxFQUFBQSxPQUFPLEVBQUU7QUFDUEMsSUFBQUEsSUFBSSxFQUFFLENBREM7QUFFUEMsSUFBQUEsT0FBTyxFQUFFO0FBRkYsR0FERztBQUtaQyxFQUFBQSxZQUFZLEVBQUU7QUFDWkYsSUFBQUEsSUFBSSxFQUFFLENBRE07QUFFWkMsSUFBQUEsT0FBTyxFQUFFO0FBRkcsR0FMRjtBQVNaRSxFQUFBQSxhQUFhLEVBQUU7QUFDYkgsSUFBQUEs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eEIsSUFBQUEsSUFBSSxFQUFFLEVBRG9CO0FBRTFCQyxJQUFBQSxPQUFPLEVBQUU7QUFGaUIsR0E3RmhCO0FBaUdad0IsRUFBQUEscUJBQXFCLEVBQUU7QUFDckJ6QixJQUFBQSxJQUFJLEVBQUUsRUFEZTtBQUVyQkMsSUFBQUEsT0FBTyxFQUFFO0FBRlksR0FqR1g7QUFxR1p5QixFQUFBQSxhQUFhLEVBQUU7QUFDYjFCLElBQUFBLElBQUksRUFBRSxFQURPO0FBRWJDLElBQUFBLE9BQU8sRUFBRTtBQUZJO0FBckdILENBQWQ7OztBQTJHQSxTQUFTMEIsZ0JBQVQsQ0FBMkIzQixJQUEzQixFQUFpQztBQUMvQkEsRUFBQUEsSUFBSSxHQUFHNEIsUUFBUSxDQUFDNUIsSUFBRCxFQUFPLEVBQVAsQ0FBZjs7QUFDQSxPQUFLLElBQUk2QixHQUFULElBQWdCQyxnQkFBRUMsTUFBRixDQUFTakMsS0FBVCxDQUFoQixFQUFpQztBQUMvQixRQUFJLENBQUNnQyxnQkFBRUUsV0FBRixDQUFjSCxHQUFHLENBQUM3QixJQUFsQixDQUFELElBQTRCNkIsR0FBRyxDQUFDN0IsSUFBSixLQUFhQSxJQUE3QyxFQUFtRDtBQUNqRCxhQUFPNkIsR0FBRyxDQUFDNUIsT0FBWDtBQUNEO0FBQ0Y7O0FBQ0QsU0FBTyxtQkFBUDtBQUNEOztlQUVjSCxLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgY29kZXMgPSB7XG4gIFN1Y2Nlc3M6IHtcbiAgICBjb2RlOiAwLFxuICAgIHN1bW1hcnk6ICdUaGUgY29tbWFuZCBleGVjdXRlZCBzdWNjZXNzZnVsbHkuJ1xuICB9LFxuICBOb1N1Y2hEcml2ZXI6IHtcbiAgICBjb2RlOiA2LFxuICAgIHN1bW1hcnk6ICdBIHNlc3Npb24gaXMgZWl0aGVyIHRlcm1pbmF0ZWQgb3Igbm90IHN0YXJ0ZWQnXG4gIH0sXG4gIE5vU3VjaEVsZW1lbnQ6IHtcbiAgICBjb2RlOiA3LFxuICAgIHN1bW1hcnk6ICdBbiBlbGVtZW50IGNvdWxkIG5vdCBiZSBsb2NhdGVkIG9uIHRoZSBwYWdlIHVzaW5nIHRoZSBnaXZlbiBzZWFyY2ggcGFyYW1ldGVycy4nXG4gIH0sXG4gIE5vU3VjaEZyYW1lOiB7XG4gICAgY29kZTogOCxcbiAgICBzdW1tYXJ5OiAnQSByZXF1ZXN0IHRvIHN3aXRjaCB0byBhIGZyYW1lIGNvdWxkIG5vdCBiZSBzYXRpc2ZpZWQgYmVjYXVzZSB0aGUgZnJhbWUgY291bGQgbm90IGJlIGZvdW5kLidcbiAgfSxcbiAgVW5rbm93bkNvbW1hbmQ6IHtcbiAgICBjb2RlOiA5LFxuICAgIHN1bW1hcnk6ICdUaGUgcmVxdWVzdGVkIHJlc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCwgb3IgYSByZXF1ZXN0IHdhcyByZWNlaXZlZCB1c2luZyBhbiBIVFRQIG1ldGhvZCB0aGF0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIG1hcHBlZCByZXNvdXJjZS4nXG4gIH0sXG4gIFN0YWxlRWxlbWVudFJlZmVyZW5jZToge1xuICAgIGNvZGU6IDEwLFxuICAgIHN1bW1hcnk6ICdBbiBlbGVtZW50IGNvbW1hbmQgZmFpbGVkIGJlY2F1c2UgdGhlIHJlZmVyZW5jZWQgZWxlbWVudCBpcyBubyBsb25nZXIgYXR0YWNoZWQgdG8gdGhlIERPTS4nXG4gIH0sXG4gIEVsZW1lbnROb3RWaXNpYmxlOiB7XG4gICAgY29kZTogMTEsXG4gICAgc3VtbWFyeTogJ0FuIGVsZW1lbnQgY29tbWFuZCBjb3VsZCBub3QgYmUgY29tcGxldGVkIGJlY2F1c2UgdGhlIGVsZW1lbnQgaXMgbm90IHZpc2libGUgb24gdGhlIHBhZ2UuJ1xuICB9LFxuICBJbnZhbGlkRWxlbWVudFN0YXRlOiB7XG4gICAgY29kZTogMTIsXG4gICAgc3VtbWFyeTogJ0FuIGVsZW1lbnQgY29tbWFuZCBjb3VsZCBub3QgYmUgY29tcGxldGVkIGJlY2F1c2UgdGhlIGVsZW1lbnQgaXMgaW4gYW4gaW52YWxpZCBzdGF0ZSAoZS5nLiBhdHRlbXB0aW5nIHRvIGNsaWNrIGEgZGlzYWJsZWQgZWxlbWVudCkuJ1xuICB9LFxuICBVbmtub3duRXJyb3I6IHtcbiAgICBjb2RlOiAxMyxcbiAgICBzdW1tYXJ5OiAnQW4gdW5rbm93biBzZXJ2ZXItc2lkZSBlcnJvciBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHRoZSBjb21tYW5kLidcbiAgfSxcbiAgRWxlbWVudElzTm90U2VsZWN0YWJsZToge1xuICAgIGNvZGU6IDE1LFxuICAgIHN1bW1hcnk6ICdBbiBhdHRlbXB0IHdhcyBtYWRlIHRvIHNlbGVjdCBhbiBlbGVtZW50IHRoYXQgY2Fubm90IGJlIHNlbGVjdGVkLidcbiAgfSxcbiAgSmF2YVNjcmlwdEVycm9yOiB7XG4gICAgY29kZTogMTcsXG4gICAgc3VtbWFyeTogJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxlIGV4ZWN1dGluZyB1c2VyIHN1cHBsaWVkIEphdmFTY3JpcHQuJ1xuICB9LFxuICBYUGF0aExvb2t1cEVycm9yOiB7XG4gICAgY29kZTogMTksXG4gICAgc3VtbWFyeTogJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxlIHNlYXJjaGluZyBmb3IgYW4gZWxlbWVudCBieSBYUGF0aC4nXG4gIH0sXG4gIFRpbWVvdXQ6IHtcbiAgICBjb2RlOiAyMSxcbiAgICBzdW1tYXJ5OiAnQW4gb3BlcmF0aW9uIGRpZCBub3QgY29tcGxldGUgYmVmb3JlIGl0cyB0aW1lb3V0IGV4cGlyZWQuJ1xuICB9LFxuICBOb1N1Y2hXaW5kb3c6IHtcbiAgICBjb2RlOiAyMyxcbiAgICBzdW1tYXJ5OiAnQSByZXF1ZXN0IHRvIHN3aXRjaCB0byBhIGRpZmZlcmVudCB3aW5kb3cgY291bGQgbm90IGJlIHNhdGlzZmllZCBiZWNhdXNlIHRoZSB3aW5kb3cgY291bGQgbm90IGJlIGZvdW5kLidcbiAgfSxcbiAgSW52YWxpZENvb2tpZURvbWFpbjoge1xuICAgIGNvZGU6IDI0LFxuICAgIHN1bW1hcnk6ICdBbiBpbGxlZ2FsIGF0dGVtcHQgd2FzIG1hZGUgdG8gc2V0IGEgY29va2llIHVuZGVyIGEgZGlmZmVyZW50IGRvbWFpbiB0aGFuIHRoZSBjdXJyZW50IHBhZ2UuJ1xuICB9LFxuICBVbmFibGVUb1NldENvb2tpZToge1xuICAgIGNvZGU6IDI1LFxuICAgIHN1bW1hcnk6ICdBIHJlcXVlc3QgdG8gc2V0IGEgY29va2llXFwncyB2YWx1ZSBjb3VsZCBub3QgYmUgc2F0aXNmaWVkLidcbiAgfSxcbiAgVW5leHBlY3RlZEFsZXJ0T3Blbjoge1xuICAgIGNvZGU6IDI2LFxuICAgIHN1bW1hcnk6ICdBIG1vZGFsIGRpYWxvZyB3YXMgb3BlbiwgYmxvY2tpbmcgdGhpcyBvcGVyYXRpb24nXG4gIH0sXG4gIE5vQWxlcnRPcGVuRXJyb3I6IHtcbiAgICBjb2RlOiAyNyxcbiAgICBzdW1tYXJ5OiAnQW4gYXR0ZW1wdCB3YXMgbWFkZSB0byBvcGVyYXRlIG9uIGEgbW9kYWwgZGlhbG9nIHdoZW4gb25lIHdhcyBub3Qgb3Blbi4nXG4gIH0sXG4gIFNjcmlwdFRpbWVvdXQ6IHtcbiAgICBjb2RlOiAyOCxcbiAgICBzdW1tYXJ5OiAnQSBzY3JpcHQgZGlkIG5vdCBjb21wbGV0ZSBiZWZvcmUgaXRzIHRpbWVvdXQgZXhwaXJlZC4nXG4gIH0sXG4gIEludmFsaWRFbGVtZW50Q29vcmRpbmF0ZXM6IHtcbiAgICBjb2RlOiAyOSxcbiAgICBzdW1tYXJ5OiAnVGhlIGNvb3JkaW5hdGVzIHByb3ZpZGVkIHRvIGFuIGludGVyYWN0aW9ucyBvcGVyYXRpb24gYXJlIGludmFsaWQuJ1xuICB9LFxuICBJTUVOb3RBdmFpbGFibGU6IHtcbiAgICBjb2RlOiAzMCxcbiAgICBzdW1tYXJ5OiAnSU1FIHdhcyBub3QgYXZhaWxhYmxlLidcbiAgfSxcbiAgSU1FRW5naW5lQWN0aXZhdGlvbkZhaWxlZDoge1xuICAgIGNvZGU6IDMxLFxuICAgIHN1bW1hcnk6ICdBbiBJTUUgZW5naW5lIGNvdWxkIG5vdCBiZSBzdGFydGVkLidcbiAgfSxcbiAgSW52YWxpZFNlbGVjdG9yOiB7XG4gICAgY29kZTogMzIsXG4gICAgc3VtbWFyeTogJ0FyZ3VtZW50IHdhcyBhbiBpbnZhbGlkIHNlbGVjdG9yIChlLmcuIFhQYXRoL0NTUykuJ1xuICB9LFxuICBTZXNzaW9uTm90Q3JlYXRlZEV4Y2VwdGlvbjoge1xuICAgIGNvZGU6IDMzLFxuICAgIHN1bW1hcnk6ICdBIG5ldyBzZXNzaW9uIGNvdWxkIG5vdCBiZSBjcmVhdGVkLidcbiAgfSxcbiAgTW92ZVRhcmdldE91dE9mQm91bmRzOiB7XG4gICAgY29kZTogMzQsXG4gICAgc3VtbWFyeTogJ1RhcmdldCBwcm92aWRlZCBmb3IgYSBtb3ZlIGFjdGlvbiBpcyBvdXQgb2YgYm91bmRzLidcbiAgfSxcbiAgTm9TdWNoQ29udGV4dDoge1xuICAgIGNvZGU6IDM1LFxuICAgIHN1bW1hcnk6ICdObyBzdWNoIGNvbnRleHQgZm91bmQuJ1xuICB9XG59O1xuXG5mdW5jdGlvbiBnZXRTdW1tYXJ5QnlDb2RlIChjb2RlKSB7XG4gIGNvZGUgPSBwYXJzZUludChjb2RlLCAxMCk7XG4gIGZvciAobGV0IG9iaiBvZiBfLnZhbHVlcyhjb2RlcykpIHtcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQob2JqLmNvZGUpICYmIG9iai5jb2RlID09PSBjb2RlKSB7XG4gICAgICByZXR1cm4gb2JqLnN1bW1hcnk7XG4gICAgfVxuICB9XG4gIHJldHVybiAnQW4gZXJyb3Igb2NjdXJyZWQnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjb2RlcztcbmV4cG9ydCB7IGNvZGVzLCBnZXRTdW1tYXJ5QnlDb2RlIH07XG4iXSwiZmlsZSI6ImxpYi9qc29ud3Atc3RhdHVzL3N0YXR1cy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
136
+ exports.default = _default;
137
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9qc29ud3Atc3RhdHVzL3N0YXR1cy5qcyJdLCJuYW1lcyI6WyJjb2RlcyIsIlN1Y2Nlc3MiLCJjb2RlIiwic3VtbWFyeSIsIk5vU3VjaERyaXZlciIsIk5vU3VjaEVsZW1lbnQiLCJOb1N1Y2hGcmFtZSIsIlVua25vd25Db21tYW5kIiwiU3RhbGVFbGVtZW50UmVmZXJlbmNlIiwiRWxlbWVudE5vdFZpc2libGUiLCJJbnZhbGlkRWxlbWVudFN0YXRlIiwiVW5rbm93bkVycm9yIiwiRWxlbWVudElzTm90U2VsZWN0YWJsZSIsIkphdmFTY3JpcHRFcnJvciIsIlhQYXRoTG9va3VwRXJyb3IiLCJUaW1lb3V0IiwiTm9TdWNoV2luZG93IiwiSW52YWxpZENvb2tpZURvbWFpbiIsIlVuYWJsZVRvU2V0Q29va2llIiwiVW5leHBlY3RlZEFsZXJ0T3BlbiIsIk5vQWxlcnRPcGVuRXJyb3IiLCJTY3JpcHRUaW1lb3V0IiwiSW52YWxpZEVsZW1lbnRDb29yZGluYXRlcyIsIklNRU5vdEF2YWlsYWJsZSIsIklNRUVuZ2luZUFjdGl2YXRpb25GYWlsZWQiLCJJbnZhbGlkU2VsZWN0b3IiLCJTZXNzaW9uTm90Q3JlYXRlZEV4Y2VwdGlvbiIsIk1vdmVUYXJnZXRPdXRPZkJvdW5kcyIsIk5vU3VjaENvbnRleHQiLCJnZXRTdW1tYXJ5QnlDb2RlIiwicGFyc2VJbnQiLCJvYmoiLCJfIiwidmFsdWVzIiwiaXNVbmRlZmluZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBOztBQUVBLE1BQU1BLEtBQUssR0FBRztBQUNaQyxFQUFBQSxPQUFPLEVBQUU7QUFDUEMsSUFBQUEsSUFBSSxFQUFFLENBREM7QUFFUEMsSUFBQUEsT0FBTyxFQUFFO0FBRkYsR0FERztBQUtaQyxFQUFBQSxZQUFZLEVBQUU7QUFDWkYsSUFBQUEsSUFBSSxFQUFFLENBRE07QUFFWkMsSUFBQUEsT0FBTyxFQUFFO0FBRkcsR0FMRjtBQVNaRSxFQUFBQSxhQUFhLEVBQUU7QUFD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QUFFO0FBQzFCeEIsSUFBQUEsSUFBSSxFQUFFLEVBRG9CO0FBRTFCQyxJQUFBQSxPQUFPLEVBQUU7QUFGaUIsR0E3RmhCO0FBaUdad0IsRUFBQUEscUJBQXFCLEVBQUU7QUFDckJ6QixJQUFBQSxJQUFJLEVBQUUsRUFEZTtBQUVyQkMsSUFBQUEsT0FBTyxFQUFFO0FBRlksR0FqR1g7QUFxR1p5QixFQUFBQSxhQUFhLEVBQUU7QUFDYjFCLElBQUFBLElBQUksRUFBRSxFQURPO0FBRWJDLElBQUFBLE9BQU8sRUFBRTtBQUZJO0FBckdILENBQWQ7OztBQTJHQSxTQUFTMEIsZ0JBQVQsQ0FBMkIzQixJQUEzQixFQUFpQztBQUMvQkEsRUFBQUEsSUFBSSxHQUFHNEIsUUFBUSxDQUFDNUIsSUFBRCxFQUFPLEVBQVAsQ0FBZjs7QUFDQSxPQUFLLElBQUk2QixHQUFULElBQWdCQyxnQkFBRUMsTUFBRixDQUFTakMsS0FBVCxDQUFoQixFQUFpQztBQUMvQixRQUFJLENBQUNnQyxnQkFBRUUsV0FBRixDQUFjSCxHQUFHLENBQUM3QixJQUFsQixDQUFELElBQTRCNkIsR0FBRyxDQUFDN0IsSUFBSixLQUFhQSxJQUE3QyxFQUFtRDtBQUNqRCxhQUFPNkIsR0FBRyxDQUFDNUIsT0FBWDtBQUNEO0FBQ0Y7O0FBQ0QsU0FBTyxtQkFBUDtBQUNEOztlQUVjSCxLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgY29kZXMgPSB7XG4gIFN1Y2Nlc3M6IHtcbiAgICBjb2RlOiAwLFxuICAgIHN1bW1hcnk6ICdUaGUgY29tbWFuZCBleGVjdXRlZCBzdWNjZXNzZnVsbHkuJ1xuICB9LFxuICBOb1N1Y2hEcml2ZXI6IHtcbiAgICBjb2RlOiA2LFxuICAgIHN1bW1hcnk6ICdBIHNlc3Npb24gaXMgZWl0aGVyIHRlcm1pbmF0ZWQgb3Igbm90IHN0YXJ0ZWQnXG4gIH0sXG4gIE5vU3VjaEVsZW1lbnQ6IHtcbiAgICBjb2RlOiA3LFxuICAgIHN1bW1hcnk6ICdBbiBlbGVtZW50IGNvdWxkIG5vdCBiZSBsb2NhdGVkIG9uIHRoZSBwYWdlIHVzaW5nIHRoZSBnaXZlbiBzZWFyY2ggcGFyYW1ldGVycy4nXG4gIH0sXG4gIE5vU3VjaEZyYW1lOiB7XG4gICAgY29kZTogOCxcbiAgICBzdW1tYXJ5OiAnQSByZXF1ZXN0IHRvIHN3aXRjaCB0byBhIGZyYW1lIGNvdWxkIG5vdCBiZSBzYXRpc2ZpZWQgYmVjYXVzZSB0aGUgZnJhbWUgY291bGQgbm90IGJlIGZvdW5kLidcbiAgfSxcbiAgVW5rbm93bkNvbW1hbmQ6IHtcbiAgICBjb2RlOiA5LFxuICAgIHN1bW1hcnk6ICdUaGUgcmVxdWVzdGVkIHJlc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCwgb3IgYSByZXF1ZXN0IHdhcyByZWNlaXZlZCB1c2luZyBhbiBIVFRQIG1ldGhvZCB0aGF0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIG1hcHBlZCByZXNvdXJjZS4nXG4gIH0sXG4gIFN0YWxlRWxlbWVudFJlZmVyZW5jZToge1xuICAgIGNvZGU6IDEwLFxuICAgIHN1bW1hcnk6ICdBbiBlbGVtZW50IGNvbW1hbmQgZmFpbGVkIGJlY2F1c2UgdGhlIHJlZmVyZW5jZWQgZWxlbWVudCBpcyBubyBsb25nZXIgYXR0YWNoZWQgdG8gdGhlIERPTS4nXG4gIH0sXG4gIEVsZW1lbnROb3RWaXNpYmxlOiB7XG4gICAgY29kZTogMTEsXG4gICAgc3VtbWFyeTogJ0FuIGVsZW1lbnQgY29tbWFuZCBjb3VsZCBub3QgYmUgY29tcGxldGVkIGJlY2F1c2UgdGhlIGVsZW1lbnQgaXMgbm90IHZpc2libGUgb24gdGhlIHBhZ2UuJ1xuICB9LFxuICBJbnZhbGlkRWxlbWVudFN0YXRlOiB7XG4gICAgY29kZTogMTIsXG4gICAgc3VtbWFyeTogJ0FuIGVsZW1lbnQgY29tbWFuZCBjb3VsZCBub3QgYmUgY29tcGxldGVkIGJlY2F1c2UgdGhlIGVsZW1lbnQgaXMgaW4gYW4gaW52YWxpZCBzdGF0ZSAoZS5nLiBhdHRlbXB0aW5nIHRvIGNsaWNrIGEgZGlzYWJsZWQgZWxlbWVudCkuJ1xuICB9LFxuICBVbmtub3duRXJyb3I6IHtcbiAgICBjb2RlOiAxMyxcbiAgICBzdW1tYXJ5OiAnQW4gdW5rbm93biBzZXJ2ZXItc2lkZSBlcnJvciBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHRoZSBjb21tYW5kLidcbiAgfSxcbiAgRWxlbWVudElzTm90U2VsZWN0YWJsZToge1xuICAgIGNvZGU6IDE1LFxuICAgIHN1bW1hcnk6ICdBbiBhdHRlbXB0IHdhcyBtYWRlIHRvIHNlbGVjdCBhbiBlbGVtZW50IHRoYXQgY2Fubm90IGJlIHNlbGVjdGVkLidcbiAgfSxcbiAgSmF2YVNjcmlwdEVycm9yOiB7XG4gICAgY29kZTogMTcsXG4gICAgc3VtbWFyeTogJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxlIGV4ZWN1dGluZyB1c2VyIHN1cHBsaWVkIEphdmFTY3JpcHQuJ1xuICB9LFxuICBYUGF0aExvb2t1cEVycm9yOiB7XG4gICAgY29kZTogMTksXG4gICAgc3VtbWFyeTogJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxlIHNlYXJjaGluZyBmb3IgYW4gZWxlbWVudCBieSBYUGF0aC4nXG4gIH0sXG4gIFRpbWVvdXQ6IHtcbiAgICBjb2RlOiAyMSxcbiAgICBzdW1tYXJ5OiAnQW4gb3BlcmF0aW9uIGRpZCBub3QgY29tcGxldGUgYmVmb3JlIGl0cyB0aW1lb3V0IGV4cGlyZWQuJ1xuICB9LFxuICBOb1N1Y2hXaW5kb3c6IHtcbiAgICBjb2RlOiAyMyxcbiAgICBzdW1tYXJ5OiAnQSByZXF1ZXN0IHRvIHN3aXRjaCB0byBhIGRpZmZlcmVudCB3aW5kb3cgY291bGQgbm90IGJlIHNhdGlzZmllZCBiZWNhdXNlIHRoZSB3aW5kb3cgY291bGQgbm90IGJlIGZvdW5kLidcbiAgfSxcbiAgSW52YWxpZENvb2tpZURvbWFpbjoge1xuICAgIGNvZGU6IDI0LFxuICAgIHN1bW1hcnk6ICdBbiBpbGxlZ2FsIGF0dGVtcHQgd2FzIG1hZGUgdG8gc2V0IGEgY29va2llIHVuZGVyIGEgZGlmZmVyZW50IGRvbWFpbiB0aGFuIHRoZSBjdXJyZW50IHBhZ2UuJ1xuICB9LFxuICBVbmFibGVUb1NldENvb2tpZToge1xuICAgIGNvZGU6IDI1LFxuICAgIHN1bW1hcnk6ICdBIHJlcXVlc3QgdG8gc2V0IGEgY29va2llXFwncyB2YWx1ZSBjb3VsZCBub3QgYmUgc2F0aXNmaWVkLidcbiAgfSxcbiAgVW5leHBlY3RlZEFsZXJ0T3Blbjoge1xuICAgIGNvZGU6IDI2LFxuICAgIHN1bW1hcnk6ICdBIG1vZGFsIGRpYWxvZyB3YXMgb3BlbiwgYmxvY2tpbmcgdGhpcyBvcGVyYXRpb24nXG4gIH0sXG4gIE5vQWxlcnRPcGVuRXJyb3I6IHtcbiAgICBjb2RlOiAyNyxcbiAgICBzdW1tYXJ5OiAnQW4gYXR0ZW1wdCB3YXMgbWFkZSB0byBvcGVyYXRlIG9uIGEgbW9kYWwgZGlhbG9nIHdoZW4gb25lIHdhcyBub3Qgb3Blbi4nXG4gIH0sXG4gIFNjcmlwdFRpbWVvdXQ6IHtcbiAgICBjb2RlOiAyOCxcbiAgICBzdW1tYXJ5OiAnQSBzY3JpcHQgZGlkIG5vdCBjb21wbGV0ZSBiZWZvcmUgaXRzIHRpbWVvdXQgZXhwaXJlZC4nXG4gIH0sXG4gIEludmFsaWRFbGVtZW50Q29vcmRpbmF0ZXM6IHtcbiAgICBjb2RlOiAyOSxcbiAgICBzdW1tYXJ5OiAnVGhlIGNvb3JkaW5hdGVzIHByb3ZpZGVkIHRvIGFuIGludGVyYWN0aW9ucyBvcGVyYXRpb24gYXJlIGludmFsaWQuJ1xuICB9LFxuICBJTUVOb3RBdmFpbGFibGU6IHtcbiAgICBjb2RlOiAzMCxcbiAgICBzdW1tYXJ5OiAnSU1FIHdhcyBub3QgYXZhaWxhYmxlLidcbiAgfSxcbiAgSU1FRW5naW5lQWN0aXZhdGlvbkZhaWxlZDoge1xuICAgIGNvZGU6IDMxLFxuICAgIHN1bW1hcnk6ICdBbiBJTUUgZW5naW5lIGNvdWxkIG5vdCBiZSBzdGFydGVkLidcbiAgfSxcbiAgSW52YWxpZFNlbGVjdG9yOiB7XG4gICAgY29kZTogMzIsXG4gICAgc3VtbWFyeTogJ0FyZ3VtZW50IHdhcyBhbiBpbnZhbGlkIHNlbGVjdG9yIChlLmcuIFhQYXRoL0NTUykuJ1xuICB9LFxuICBTZXNzaW9uTm90Q3JlYXRlZEV4Y2VwdGlvbjoge1xuICAgIGNvZGU6IDMzLFxuICAgIHN1bW1hcnk6ICdBIG5ldyBzZXNzaW9uIGNvdWxkIG5vdCBiZSBjcmVhdGVkLidcbiAgfSxcbiAgTW92ZVRhcmdldE91dE9mQm91bmRzOiB7XG4gICAgY29kZTogMzQsXG4gICAgc3VtbWFyeTogJ1RhcmdldCBwcm92aWRlZCBmb3IgYSBtb3ZlIGFjdGlvbiBpcyBvdXQgb2YgYm91bmRzLidcbiAgfSxcbiAgTm9TdWNoQ29udGV4dDoge1xuICAgIGNvZGU6IDM1LFxuICAgIHN1bW1hcnk6ICdObyBzdWNoIGNvbnRleHQgZm91bmQuJ1xuICB9XG59O1xuXG5mdW5jdGlvbiBnZXRTdW1tYXJ5QnlDb2RlIChjb2RlKSB7XG4gIGNvZGUgPSBwYXJzZUludChjb2RlLCAxMCk7XG4gIGZvciAobGV0IG9iaiBvZiBfLnZhbHVlcyhjb2RlcykpIHtcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQob2JqLmNvZGUpICYmIG9iai5jb2RlID09PSBjb2RlKSB7XG4gICAgICByZXR1cm4gb2JqLnN1bW1hcnk7XG4gICAgfVxuICB9XG4gIHJldHVybiAnQW4gZXJyb3Igb2NjdXJyZWQnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjb2RlcztcbmV4cG9ydCB7IGNvZGVzLCBnZXRTdW1tYXJ5QnlDb2RlIH07XG4iXX0=