@aerokit/sdk 12.78.0 → 12.80.0

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 (84) hide show
  1. package/dist/cjs/bpm/process.js +4 -1
  2. package/dist/cjs/bpm/tasks.js +3 -1
  3. package/dist/cjs/bpm/tracer.js +3 -1
  4. package/dist/cjs/cms/cmis.js +105 -177
  5. package/dist/cjs/db/database.js +5 -1
  6. package/dist/cjs/db/query.js +19 -1
  7. package/dist/cjs/db/repository.js +2 -1
  8. package/dist/cjs/db/sql.js +5 -2
  9. package/dist/cjs/etcd/client.js +4 -1
  10. package/dist/cjs/http/errors/ForbiddenError.js +9 -9
  11. package/dist/cjs/http/errors/ValidationError.js +9 -9
  12. package/dist/cjs/http/request.js +2 -1
  13. package/dist/cjs/http/response.js +102 -188
  14. package/dist/cjs/http/rs/resource-http-controller.js +4 -1
  15. package/dist/cjs/http/rs/resource-mappings.js +6 -3
  16. package/dist/cjs/http/rs/resource-method.js +10 -1
  17. package/dist/cjs/http/rs/resource.js +11 -1
  18. package/dist/cjs/http/upload.js +3 -1
  19. package/dist/cjs/io/files.js +5 -7
  20. package/dist/cjs/io/streams.js +5 -1
  21. package/dist/cjs/io/zip.js +4 -1
  22. package/dist/cjs/job/scheduler.js +4 -1
  23. package/dist/cjs/kafka/consumer.js +3 -2
  24. package/dist/cjs/kafka/producer.js +3 -1
  25. package/dist/cjs/log/logging.js +2 -1
  26. package/dist/cjs/mail/client.js +2 -1
  27. package/dist/cjs/messaging/consumer.js +3 -1
  28. package/dist/cjs/messaging/producer.js +3 -1
  29. package/dist/cjs/mongodb/client.js +26 -1
  30. package/dist/cjs/mongodb/dao.js +3 -1
  31. package/dist/cjs/net/soap.js +15 -1
  32. package/dist/cjs/net/websockets.js +5 -1
  33. package/dist/cjs/platform/engines.js +2 -1
  34. package/dist/cjs/platform/os.js +7 -9
  35. package/dist/cjs/platform/problems.js +7 -13
  36. package/dist/cjs/platform/registry.js +4 -1
  37. package/dist/cjs/platform/repository.js +4 -1
  38. package/dist/cjs/platform/workspace.js +8 -1
  39. package/dist/cjs/redis/client.js +2 -1
  40. package/dist/cjs/security/oauth.js +2 -1
  41. package/dist/cjs/template/engines.js +6 -1
  42. package/dist/dts/db/query.d.ts +10 -0
  43. package/dist/esm/bpm/process.mjs +4 -1
  44. package/dist/esm/bpm/tasks.mjs +3 -1
  45. package/dist/esm/bpm/tracer.mjs +3 -1
  46. package/dist/esm/cms/cmis.mjs +105 -177
  47. package/dist/esm/db/database.mjs +5 -1
  48. package/dist/esm/db/query.mjs +19 -1
  49. package/dist/esm/db/repository.mjs +2 -1
  50. package/dist/esm/db/sql.mjs +5 -2
  51. package/dist/esm/etcd/client.mjs +4 -1
  52. package/dist/esm/http/errors/ForbiddenError.mjs +9 -9
  53. package/dist/esm/http/errors/ValidationError.mjs +9 -9
  54. package/dist/esm/http/request.mjs +2 -1
  55. package/dist/esm/http/response.mjs +102 -188
  56. package/dist/esm/http/rs/resource-http-controller.mjs +4 -1
  57. package/dist/esm/http/rs/resource-mappings.mjs +6 -3
  58. package/dist/esm/http/rs/resource-method.mjs +10 -1
  59. package/dist/esm/http/rs/resource.mjs +11 -1
  60. package/dist/esm/http/upload.mjs +3 -1
  61. package/dist/esm/io/files.mjs +5 -7
  62. package/dist/esm/io/streams.mjs +5 -1
  63. package/dist/esm/io/zip.mjs +4 -1
  64. package/dist/esm/job/scheduler.mjs +4 -1
  65. package/dist/esm/kafka/consumer.mjs +3 -2
  66. package/dist/esm/kafka/producer.mjs +3 -1
  67. package/dist/esm/log/logging.mjs +2 -1
  68. package/dist/esm/mail/client.mjs +2 -1
  69. package/dist/esm/messaging/consumer.mjs +3 -1
  70. package/dist/esm/messaging/producer.mjs +3 -1
  71. package/dist/esm/mongodb/client.mjs +26 -1
  72. package/dist/esm/mongodb/dao.mjs +3 -1
  73. package/dist/esm/net/soap.mjs +15 -1
  74. package/dist/esm/net/websockets.mjs +5 -1
  75. package/dist/esm/platform/engines.mjs +2 -1
  76. package/dist/esm/platform/os.mjs +7 -9
  77. package/dist/esm/platform/problems.mjs +7 -13
  78. package/dist/esm/platform/registry.mjs +4 -1
  79. package/dist/esm/platform/repository.mjs +4 -1
  80. package/dist/esm/platform/workspace.mjs +8 -1
  81. package/dist/esm/redis/client.mjs +2 -1
  82. package/dist/esm/security/oauth.mjs +2 -1
  83. package/dist/esm/template/engines.mjs +6 -1
  84. package/package.json +1 -1
@@ -22,6 +22,11 @@ __export(resource_mappings_exports, {
22
22
  module.exports = __toCommonJS(resource_mappings_exports);
23
23
  var import_resource = require("./resource");
24
24
  class ResourceMappings {
25
+ // Map of resource path (string) to the Resource instance (typed as any for flexibility)
26
+ resources = {};
27
+ controller;
28
+ // Represents the HttpController instance
29
+ execute;
25
30
  // Bound execute function from the HttpController
26
31
  /**
27
32
  * Constructor function for ResourceMappings instances.
@@ -30,8 +35,6 @@ class ResourceMappings {
30
35
  * @param controller The HttpController instance, for which this ResourceMappings handles configuration.
31
36
  */
32
37
  constructor(oConfiguration, controller) {
33
- // Map of resource path (string) to the Resource instance (typed as any for flexibility)
34
- this.resources = {};
35
38
  if (oConfiguration) {
36
39
  Object.keys(oConfiguration).forEach((sPath) => {
37
40
  this.resources[sPath] = this.resource(sPath, oConfiguration[sPath]);
@@ -127,4 +130,4 @@ class ResourceMappings {
127
130
  return;
128
131
  }
129
132
  }
130
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2h0dHAvcnMvcmVzb3VyY2UtbWFwcGluZ3MudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IFJlc291cmNlIH0gZnJvbSBcIi4vcmVzb3VyY2VcIjtcblxuLyoqXG4gKiBUaGUgUmVzb3VyY2VNYXBwaW5ncyBjbGFzcyBhYnN0cmFjdHMgdGhlIG1hcHBpbmdzIGJldHdlZW4gcmVzb3VyY2UgVVJMIHBhdGggdGVtcGxhdGVzXG4gKiBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyByZXNvdXJjZSBoYW5kbGVyIHNwZWNpZmljYXRpb25zLiBJdCBhY3RzIGFzIHRoZSBjb25maWd1cmF0aW9uXG4gKiBzdG9yZSBmb3IgdGhlIEh0dHBDb250cm9sbGVyLlxuICovXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VNYXBwaW5ncyB7XG4gICAgLy8gTWFwIG9mIHJlc291cmNlIHBhdGggKHN0cmluZykgdG8gdGhlIFJlc291cmNlIGluc3RhbmNlICh0eXBlZCBhcyBhbnkgZm9yIGZsZXhpYmlsaXR5KVxuICAgIHJlc291cmNlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgIGNvbnRyb2xsZXI6IGFueTsgLy8gUmVwcmVzZW50cyB0aGUgSHR0cENvbnRyb2xsZXIgaW5zdGFuY2VcbiAgICBleGVjdXRlOiBhbnk7IC8vIEJvdW5kIGV4ZWN1dGUgZnVuY3Rpb24gZnJvbSB0aGUgSHR0cENvbnRyb2xsZXJcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdG9yIGZ1bmN0aW9uIGZvciBSZXNvdXJjZU1hcHBpbmdzIGluc3RhbmNlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvQ29uZmlndXJhdGlvbiBDb25maWd1cmF0aW9uIG9iamVjdCBkZWZpbmluZyBpbml0aWFsIHJlc291cmNlIHBhdGhzIGFuZCB0aGVpciBoYW5kbGVycy5cbiAgICAgKiBAcGFyYW0gY29udHJvbGxlciBUaGUgSHR0cENvbnRyb2xsZXIgaW5zdGFuY2UsIGZvciB3aGljaCB0aGlzIFJlc291cmNlTWFwcGluZ3MgaGFuZGxlcyBjb25maWd1cmF0aW9uLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG9Db25maWd1cmF0aW9uOiBhbnksIGNvbnRyb2xsZXI6IGFueSkge1xuICAgICAgICBpZiAob0NvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKG9Db25maWd1cmF0aW9uKS5mb3JFYWNoKChzUGF0aDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNvdXJjZXNbc1BhdGhdID0gdGhpcy5yZXNvdXJjZShzUGF0aCwgb0NvbmZpZ3VyYXRpb25bc1BhdGhdKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbGxlciA9IGNvbnRyb2xsZXI7XG4gICAgICAgICAgICB0aGlzLmV4ZWN1dGUgPSBjb250cm9sbGVyLmV4ZWN1dGUuYmluZChjb250cm9sbGVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgb3IgcmV0cmlldmVzIGEgUmVzb3VyY2Ugb2JqZWN0IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIHBhdGguXG4gICAgICogVGhlIHNlY29uZCwgb3B0aW9uYWwgYXJndW1lbnQgY2FuIGJlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgcmVzb3VyY2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc1BhdGggVGhlIFVSTCBwYXRoIHRlbXBsYXRlIGZvciB0aGUgcmVzb3VyY2UgKGUuZy4sIFwidXNlcnMve2lkfVwiKS5cbiAgICAgKiBAcGFyYW0gb0NvbmZpZ3VyYXRpb24gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIGluaXRpYWwgcmVzb3VyY2Ugc2V0dXAuXG4gICAgICogQHJldHVybnMgVGhlIGNyZWF0ZWQgb3IgZXhpc3RpbmcgUmVzb3VyY2UgaW5zdGFuY2UuXG4gICAgICovXG4gICAgcGF0aChzUGF0aDogc3RyaW5nLCBvQ29uZmlndXJhdGlvbj86IGFueSk6IFJlc291cmNlIHtcbiAgICAgICAgaWYgKHNQYXRoICE9PSBcIlwiICYmIHNQYXRoWzBdID09PSBcIi9cIikge1xuICAgICAgICAgICAgc1BhdGggPSBzUGF0aC5zdWJzdHJpbmcoMSk7IC8vIHRyYW5zZm9ybSBcIi90ZXN0XCIgaW50byBcInRlc3RcIlxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucmVzb3VyY2VzW3NQYXRoXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBSZXNvdXJjZSBpcyB0aGUgY2xhc3MgaW1wb3J0ZWQgZnJvbSBcIi4vcmVzb3VyY2VcIlxuICAgICAgICAgICAgdGhpcy5yZXNvdXJjZXNbc1BhdGhdID0gbmV3IFJlc291cmNlKHNQYXRoLCBvQ29uZmlndXJhdGlvbiwgdGhpcy5jb250cm9sbGVyLCB0aGlzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnJlc291cmNlc1tzUGF0aF07XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEFsaWFzIGZvciBwYXRoKCkuXG4gICAgICovXG4gICAgcmVzb3VyY2VQYXRoKHNQYXRoOiBzdHJpbmcsIG9Db25maWd1cmF0aW9uPzogYW55KTogUmVzb3VyY2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXRoKHNQYXRoLCBvQ29uZmlndXJhdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWxpYXMgZm9yIHBhdGgoKS5cbiAgICAgKi9cbiAgICByZXNvdXJjZShzUGF0aDogc3RyaW5nLCBvQ29uZmlndXJhdGlvbj86IGFueSk6IFJlc291cmNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF0aChzUGF0aCwgb0NvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGNvbXBpbGVkIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciBhbGwgcmVzb3VyY2VzIG1hbmFnZWQgYnkgdGhpcyBSZXNvdXJjZU1hcHBpbmdzLlxuICAgICAqIFRoZSBjb25maWd1cmF0aW9uIGlzIHN0cnVjdHVyZWQgdG8gYmUgY29uc3VtZWQgYnkgdGhlIEh0dHBDb250cm9sbGVyJ3Mgcm91dGluZyBsb2dpYy5cbiAgICAgKi9cbiAgICBjb25maWd1cmF0aW9uKCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgICAgICBjb25zdCBfY2ZnOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMucmVzb3VyY2VzKS5mb3JFYWNoKChzUGF0aDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAvLyBBc3N1bWluZyBlYWNoIFJlc291cmNlIG9iamVjdCBoYXMgYSBjb25maWd1cmF0aW9uKCkgbWV0aG9kXG4gICAgICAgICAgICBfY2ZnW3NQYXRoXSA9IHRoaXMucmVzb3VyY2VzW3NQYXRoXS5jb25maWd1cmF0aW9uKCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gX2NmZztcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwgYnV0IEdFVCByZXNvdXJjZSBoYW5kbGVycyBmcm9tIGFsbCBtYW5hZ2VkIHJlc291cmNlcywgbWFraW5nIHRoZW0gcmVhZC1vbmx5LlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIFJlc291cmNlTWFwcGluZ3MgaW5zdGFuY2UgZm9yIG1ldGhvZCBjaGFpbmluZy5cbiAgICAgKi9cbiAgICByZWFkb25seSgpOiB0aGlzIHtcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5yZXNvdXJjZXMpLmZvckVhY2goKHNQYXRoOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVzb3VyY2VzW3NQYXRoXS5yZWFkb25seSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIERpc2FibGVzIHJlc291cmNlIGhhbmRsaW5nIHNwZWNpZmljYXRpb25zIG1hdGNoaW5nIHRoZSBhcmd1bWVudHMsIGVmZmVjdGl2ZWx5IHJlbW92aW5nIHRoZW0gZnJvbSB0aGlzIEFQSS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzUGF0aCBUaGUgcGF0aCBvZiB0aGUgcmVzb3VyY2UuXG4gICAgICogQHBhcmFtIHNWZXJiIFRoZSBIVFRQIHZlcmIgKGUuZy4sICdnZXQnLCAncG9zdCcpLlxuICAgICAqIEBwYXJhbSBhcnJDb25zdW1lcyBBcnJheSBvZiBjb25zdW1lZCBtZWRpYSB0eXBlcy5cbiAgICAgKiBAcGFyYW0gYXJyUHJvZHVjZXMgQXJyYXkgb2YgcHJvZHVjZWQgbWVkaWEgdHlwZXMuXG4gICAgICogQHJldHVybnMgVGhlIFJlc291cmNlTWFwcGluZ3MgaW5zdGFuY2UgZm9yIG1ldGhvZCBjaGFpbmluZy5cbiAgICAgKi9cbiAgICBkaXNhYmxlKHNQYXRoOiBzdHJpbmcsIHNWZXJiOiBzdHJpbmcsIGFyckNvbnN1bWVzOiBzdHJpbmdbXSwgYXJyUHJvZHVjZXM6IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgICAgIGNvbnN0IHJlc291cmNlID0gdGhpcy5yZXNvdXJjZXNbc1BhdGhdO1xuICAgICAgICAvLyBBc3N1bWluZyB0aGUgaW50ZW50aW9uIGlzIHRvIGZpbmQgdGhlIHNpbmdsZSBSZXNvdXJjZSBpbnN0YW5jZSBhbmQgY2FsbCBkaXNhYmxlIG9uIGl0XG4gICAgICAgIGlmIChyZXNvdXJjZSAmJiB0eXBlb2YgcmVzb3VyY2UuZGlzYWJsZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgIHJlc291cmNlLmRpc2FibGUoc1ZlcmIsIGFyckNvbnN1bWVzLCBhcnJQcm9kdWNlcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGVzIGEgcmVmZXJlbmNlIHRvIGEgaGFuZGxlciBzcGVjaWZpY2F0aW9uIG1hdGNoaW5nIHRoZSBzdXBwbGllZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc1BhdGggVGhlIHBhdGggb2YgdGhlIHJlc291cmNlLlxuICAgICAqIEBwYXJhbSBzVmVyYiBUaGUgSFRUUCB2ZXJiIChlLmcuLCAnZ2V0JywgJ3Bvc3QnKS5cbiAgICAgKiBAcGFyYW0gYXJyQ29uc3VtZXMgQXJyYXkgb2YgY29uc3VtZWQgbWVkaWEgdHlwZXMuXG4gICAgICogQHBhcmFtIGFyclByb2R1Y2VzIEFycmF5IG9mIHByb2R1Y2VkIG1lZGlhIHR5cGVzLlxuICAgICAqIEByZXR1cm5zIFRoZSBtYXRjaGluZyBSZXNvdXJjZSBoYW5kbGVyIHNwZWNpZmljYXRpb24gb3IgdW5kZWZpbmVkLlxuICAgICAqL1xuICAgIGZpbmQoc1BhdGg6IHN0cmluZywgc1ZlcmI6IHN0cmluZywgYXJyQ29uc3VtZXM6IHN0cmluZ1tdLCBhcnJQcm9kdWNlczogc3RyaW5nW10pOiBhbnkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodGhpcy5yZXNvdXJjZXNbc1BhdGhdKSB7XG4gICAgICAgICAgICAvLyBBc3N1bWluZyBSZXNvdXJjZSBpbnN0YW5jZSBoYXMgYSBmaW5kIG1ldGhvZFxuICAgICAgICAgICAgY29uc3QgaGl0ID0gdGhpcy5yZXNvdXJjZXNbc1BhdGhdLmZpbmQoc1ZlcmIsIGFyckNvbnN1bWVzLCBhcnJQcm9kdWNlcyk7XG4gICAgICAgICAgICBpZiAoaGl0KVxuICAgICAgICAgICAgICAgIHJldHVybiBoaXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgIH07XG59Il0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsc0JBQXlCO0FBT2xCLE1BQU0saUJBQWlCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVkxQixZQUFZLGdCQUFxQixZQUFpQjtBQVZsRDtBQUFBLHFCQUFvQyxDQUFDO0FBV2pDLFFBQUksZ0JBQWdCO0FBQ2hCLGFBQU8sS0FBSyxjQUFjLEVBQUUsUUFBUSxDQUFDLFVBQWtCO0FBQ25ELGFBQUssVUFBVSxLQUFLLElBQUksS0FBSyxTQUFTLE9BQU8sZUFBZSxLQUFLLENBQUM7QUFBQSxNQUN0RSxDQUFDO0FBQUEsSUFDTDtBQUVBLFFBQUksWUFBWTtBQUNaLFdBQUssYUFBYTtBQUNsQixXQUFLLFVBQVUsV0FBVyxRQUFRLEtBQUssVUFBVTtBQUFBLElBQ3JEO0FBQUEsRUFDSjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVVBLEtBQUssT0FBZSxnQkFBZ0M7QUFDaEQsUUFBSSxVQUFVLE1BQU0sTUFBTSxDQUFDLE1BQU0sS0FBSztBQUNsQyxjQUFRLE1BQU0sVUFBVSxDQUFDO0FBQUEsSUFDN0I7QUFFQSxRQUFJLEtBQUssVUFBVSxLQUFLLE1BQU0sUUFBVztBQUVyQyxXQUFLLFVBQVUsS0FBSyxJQUFJLElBQUkseUJBQVMsT0FBTyxnQkFBZ0IsS0FBSyxZQUFZLElBQUk7QUFBQSxJQUNyRjtBQUVBLFdBQU8sS0FBSyxVQUFVLEtBQUs7QUFBQSxFQUMvQjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0EsYUFBYSxPQUFlLGdCQUFnQztBQUN4RCxXQUFPLEtBQUssS0FBSyxPQUFPLGNBQWM7QUFBQSxFQUMxQztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0EsU0FBUyxPQUFlLGdCQUFnQztBQUNwRCxXQUFPLEtBQUssS0FBSyxPQUFPLGNBQWM7QUFBQSxFQUMxQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNQSxnQkFBd0M7QUFDcEMsVUFBTSxPQUErQixDQUFDO0FBQ3RDLFdBQU8sS0FBSyxLQUFLLFNBQVMsRUFBRSxRQUFRLENBQUMsVUFBa0I7QUFFbkQsV0FBSyxLQUFLLElBQUksS0FBSyxVQUFVLEtBQUssRUFBRSxjQUFjO0FBQUEsSUFDdEQsQ0FBQztBQUNELFdBQU87QUFBQSxFQUNYO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsV0FBaUI7QUFDYixXQUFPLEtBQUssS0FBSyxTQUFTLEVBQUUsUUFBUSxDQUFDLFVBQWtCO0FBQ25ELFdBQUssVUFBVSxLQUFLLEVBQUUsU0FBUztBQUFBLElBQ25DLENBQUM7QUFDRCxXQUFPO0FBQUEsRUFDWDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBV0EsUUFBUSxPQUFlLE9BQWUsYUFBdUIsYUFBNkI7QUFDdEYsVUFBTSxXQUFXLEtBQUssVUFBVSxLQUFLO0FBRXJDLFFBQUksWUFBWSxPQUFPLFNBQVMsWUFBWSxZQUFZO0FBQ25ELGVBQVMsUUFBUSxPQUFPLGFBQWEsV0FBVztBQUFBLElBQ3JEO0FBQ0EsV0FBTztBQUFBLEVBQ1g7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVdBLEtBQUssT0FBZSxPQUFlLGFBQXVCLGFBQXdDO0FBQzlGLFFBQUksS0FBSyxVQUFVLEtBQUssR0FBRztBQUV2QixZQUFNLE1BQU0sS0FBSyxVQUFVLEtBQUssRUFBRSxLQUFLLE9BQU8sYUFBYSxXQUFXO0FBQ3RFLFVBQUk7QUFDQSxlQUFPO0FBQUEsSUFDZjtBQUNBO0FBQUEsRUFDSjtBQUNKOyIsCiAgIm5hbWVzIjogW10KfQo=
133
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2h0dHAvcnMvcmVzb3VyY2UtbWFwcGluZ3MudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IFJlc291cmNlIH0gZnJvbSBcIi4vcmVzb3VyY2VcIjtcblxuLyoqXG4gKiBUaGUgUmVzb3VyY2VNYXBwaW5ncyBjbGFzcyBhYnN0cmFjdHMgdGhlIG1hcHBpbmdzIGJldHdlZW4gcmVzb3VyY2UgVVJMIHBhdGggdGVtcGxhdGVzXG4gKiBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyByZXNvdXJjZSBoYW5kbGVyIHNwZWNpZmljYXRpb25zLiBJdCBhY3RzIGFzIHRoZSBjb25maWd1cmF0aW9uXG4gKiBzdG9yZSBmb3IgdGhlIEh0dHBDb250cm9sbGVyLlxuICovXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VNYXBwaW5ncyB7XG4gICAgLy8gTWFwIG9mIHJlc291cmNlIHBhdGggKHN0cmluZykgdG8gdGhlIFJlc291cmNlIGluc3RhbmNlICh0eXBlZCBhcyBhbnkgZm9yIGZsZXhpYmlsaXR5KVxuICAgIHJlc291cmNlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgIGNvbnRyb2xsZXI6IGFueTsgLy8gUmVwcmVzZW50cyB0aGUgSHR0cENvbnRyb2xsZXIgaW5zdGFuY2VcbiAgICBleGVjdXRlOiBhbnk7IC8vIEJvdW5kIGV4ZWN1dGUgZnVuY3Rpb24gZnJvbSB0aGUgSHR0cENvbnRyb2xsZXJcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdG9yIGZ1bmN0aW9uIGZvciBSZXNvdXJjZU1hcHBpbmdzIGluc3RhbmNlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvQ29uZmlndXJhdGlvbiBDb25maWd1cmF0aW9uIG9iamVjdCBkZWZpbmluZyBpbml0aWFsIHJlc291cmNlIHBhdGhzIGFuZCB0aGVpciBoYW5kbGVycy5cbiAgICAgKiBAcGFyYW0gY29udHJvbGxlciBUaGUgSHR0cENvbnRyb2xsZXIgaW5zdGFuY2UsIGZvciB3aGljaCB0aGlzIFJlc291cmNlTWFwcGluZ3MgaGFuZGxlcyBjb25maWd1cmF0aW9uLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG9Db25maWd1cmF0aW9uOiBhbnksIGNvbnRyb2xsZXI6IGFueSkge1xuICAgICAgICBpZiAob0NvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKG9Db25maWd1cmF0aW9uKS5mb3JFYWNoKChzUGF0aDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNvdXJjZXNbc1BhdGhdID0gdGhpcy5yZXNvdXJjZShzUGF0aCwgb0NvbmZpZ3VyYXRpb25bc1BhdGhdKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbGxlciA9IGNvbnRyb2xsZXI7XG4gICAgICAgICAgICB0aGlzLmV4ZWN1dGUgPSBjb250cm9sbGVyLmV4ZWN1dGUuYmluZChjb250cm9sbGVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgb3IgcmV0cmlldmVzIGEgUmVzb3VyY2Ugb2JqZWN0IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIHBhdGguXG4gICAgICogVGhlIHNlY29uZCwgb3B0aW9uYWwgYXJndW1lbnQgY2FuIGJlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgcmVzb3VyY2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc1BhdGggVGhlIFVSTCBwYXRoIHRlbXBsYXRlIGZvciB0aGUgcmVzb3VyY2UgKGUuZy4sIFwidXNlcnMve2lkfVwiKS5cbiAgICAgKiBAcGFyYW0gb0NvbmZpZ3VyYXRpb24gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIGluaXRpYWwgcmVzb3VyY2Ugc2V0dXAuXG4gICAgICogQHJldHVybnMgVGhlIGNyZWF0ZWQgb3IgZXhpc3RpbmcgUmVzb3VyY2UgaW5zdGFuY2UuXG4gICAgICovXG4gICAgcGF0aChzUGF0aDogc3RyaW5nLCBvQ29uZmlndXJhdGlvbj86IGFueSk6IFJlc291cmNlIHtcbiAgICAgICAgaWYgKHNQYXRoICE9PSBcIlwiICYmIHNQYXRoWzBdID09PSBcIi9cIikge1xuICAgICAgICAgICAgc1BhdGggPSBzUGF0aC5zdWJzdHJpbmcoMSk7IC8vIHRyYW5zZm9ybSBcIi90ZXN0XCIgaW50byBcInRlc3RcIlxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucmVzb3VyY2VzW3NQYXRoXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBSZXNvdXJjZSBpcyB0aGUgY2xhc3MgaW1wb3J0ZWQgZnJvbSBcIi4vcmVzb3VyY2VcIlxuICAgICAgICAgICAgdGhpcy5yZXNvdXJjZXNbc1BhdGhdID0gbmV3IFJlc291cmNlKHNQYXRoLCBvQ29uZmlndXJhdGlvbiwgdGhpcy5jb250cm9sbGVyLCB0aGlzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnJlc291cmNlc1tzUGF0aF07XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEFsaWFzIGZvciBwYXRoKCkuXG4gICAgICovXG4gICAgcmVzb3VyY2VQYXRoKHNQYXRoOiBzdHJpbmcsIG9Db25maWd1cmF0aW9uPzogYW55KTogUmVzb3VyY2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXRoKHNQYXRoLCBvQ29uZmlndXJhdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWxpYXMgZm9yIHBhdGgoKS5cbiAgICAgKi9cbiAgICByZXNvdXJjZShzUGF0aDogc3RyaW5nLCBvQ29uZmlndXJhdGlvbj86IGFueSk6IFJlc291cmNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF0aChzUGF0aCwgb0NvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGNvbXBpbGVkIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciBhbGwgcmVzb3VyY2VzIG1hbmFnZWQgYnkgdGhpcyBSZXNvdXJjZU1hcHBpbmdzLlxuICAgICAqIFRoZSBjb25maWd1cmF0aW9uIGlzIHN0cnVjdHVyZWQgdG8gYmUgY29uc3VtZWQgYnkgdGhlIEh0dHBDb250cm9sbGVyJ3Mgcm91dGluZyBsb2dpYy5cbiAgICAgKi9cbiAgICBjb25maWd1cmF0aW9uKCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgICAgICBjb25zdCBfY2ZnOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMucmVzb3VyY2VzKS5mb3JFYWNoKChzUGF0aDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAvLyBBc3N1bWluZyBlYWNoIFJlc291cmNlIG9iamVjdCBoYXMgYSBjb25maWd1cmF0aW9uKCkgbWV0aG9kXG4gICAgICAgICAgICBfY2ZnW3NQYXRoXSA9IHRoaXMucmVzb3VyY2VzW3NQYXRoXS5jb25maWd1cmF0aW9uKCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gX2NmZztcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwgYnV0IEdFVCByZXNvdXJjZSBoYW5kbGVycyBmcm9tIGFsbCBtYW5hZ2VkIHJlc291cmNlcywgbWFraW5nIHRoZW0gcmVhZC1vbmx5LlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIFJlc291cmNlTWFwcGluZ3MgaW5zdGFuY2UgZm9yIG1ldGhvZCBjaGFpbmluZy5cbiAgICAgKi9cbiAgICByZWFkb25seSgpOiB0aGlzIHtcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5yZXNvdXJjZXMpLmZvckVhY2goKHNQYXRoOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVzb3VyY2VzW3NQYXRoXS5yZWFkb25seSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIERpc2FibGVzIHJlc291cmNlIGhhbmRsaW5nIHNwZWNpZmljYXRpb25zIG1hdGNoaW5nIHRoZSBhcmd1bWVudHMsIGVmZmVjdGl2ZWx5IHJlbW92aW5nIHRoZW0gZnJvbSB0aGlzIEFQSS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzUGF0aCBUaGUgcGF0aCBvZiB0aGUgcmVzb3VyY2UuXG4gICAgICogQHBhcmFtIHNWZXJiIFRoZSBIVFRQIHZlcmIgKGUuZy4sICdnZXQnLCAncG9zdCcpLlxuICAgICAqIEBwYXJhbSBhcnJDb25zdW1lcyBBcnJheSBvZiBjb25zdW1lZCBtZWRpYSB0eXBlcy5cbiAgICAgKiBAcGFyYW0gYXJyUHJvZHVjZXMgQXJyYXkgb2YgcHJvZHVjZWQgbWVkaWEgdHlwZXMuXG4gICAgICogQHJldHVybnMgVGhlIFJlc291cmNlTWFwcGluZ3MgaW5zdGFuY2UgZm9yIG1ldGhvZCBjaGFpbmluZy5cbiAgICAgKi9cbiAgICBkaXNhYmxlKHNQYXRoOiBzdHJpbmcsIHNWZXJiOiBzdHJpbmcsIGFyckNvbnN1bWVzOiBzdHJpbmdbXSwgYXJyUHJvZHVjZXM6IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgICAgIGNvbnN0IHJlc291cmNlID0gdGhpcy5yZXNvdXJjZXNbc1BhdGhdO1xuICAgICAgICAvLyBBc3N1bWluZyB0aGUgaW50ZW50aW9uIGlzIHRvIGZpbmQgdGhlIHNpbmdsZSBSZXNvdXJjZSBpbnN0YW5jZSBhbmQgY2FsbCBkaXNhYmxlIG9uIGl0XG4gICAgICAgIGlmIChyZXNvdXJjZSAmJiB0eXBlb2YgcmVzb3VyY2UuZGlzYWJsZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgIHJlc291cmNlLmRpc2FibGUoc1ZlcmIsIGFyckNvbnN1bWVzLCBhcnJQcm9kdWNlcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGVzIGEgcmVmZXJlbmNlIHRvIGEgaGFuZGxlciBzcGVjaWZpY2F0aW9uIG1hdGNoaW5nIHRoZSBzdXBwbGllZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc1BhdGggVGhlIHBhdGggb2YgdGhlIHJlc291cmNlLlxuICAgICAqIEBwYXJhbSBzVmVyYiBUaGUgSFRUUCB2ZXJiIChlLmcuLCAnZ2V0JywgJ3Bvc3QnKS5cbiAgICAgKiBAcGFyYW0gYXJyQ29uc3VtZXMgQXJyYXkgb2YgY29uc3VtZWQgbWVkaWEgdHlwZXMuXG4gICAgICogQHBhcmFtIGFyclByb2R1Y2VzIEFycmF5IG9mIHByb2R1Y2VkIG1lZGlhIHR5cGVzLlxuICAgICAqIEByZXR1cm5zIFRoZSBtYXRjaGluZyBSZXNvdXJjZSBoYW5kbGVyIHNwZWNpZmljYXRpb24gb3IgdW5kZWZpbmVkLlxuICAgICAqL1xuICAgIGZpbmQoc1BhdGg6IHN0cmluZywgc1ZlcmI6IHN0cmluZywgYXJyQ29uc3VtZXM6IHN0cmluZ1tdLCBhcnJQcm9kdWNlczogc3RyaW5nW10pOiBhbnkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodGhpcy5yZXNvdXJjZXNbc1BhdGhdKSB7XG4gICAgICAgICAgICAvLyBBc3N1bWluZyBSZXNvdXJjZSBpbnN0YW5jZSBoYXMgYSBmaW5kIG1ldGhvZFxuICAgICAgICAgICAgY29uc3QgaGl0ID0gdGhpcy5yZXNvdXJjZXNbc1BhdGhdLmZpbmQoc1ZlcmIsIGFyckNvbnN1bWVzLCBhcnJQcm9kdWNlcyk7XG4gICAgICAgICAgICBpZiAoaGl0KVxuICAgICAgICAgICAgICAgIHJldHVybiBoaXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgIH07XG59Il0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsc0JBQXlCO0FBT2xCLE1BQU0saUJBQWlCO0FBQUE7QUFBQSxFQUUxQixZQUFvQyxDQUFDO0FBQUEsRUFDckM7QUFBQTtBQUFBLEVBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVB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
@@ -22,6 +22,15 @@ __export(resource_method_exports, {
22
22
  module.exports = __toCommonJS(resource_method_exports);
23
23
  var import_resource_common = require("./resource-common");
24
24
  class ResourceMethod {
25
+ cfg;
26
+ _resource;
27
+ // Reference to the parent Resource instance
28
+ controller;
29
+ // Reference to the HttpController instance
30
+ // Fluent API aliases/delegates bound to ResourceMappings/Resource
31
+ resource;
32
+ resourcePath;
33
+ path;
25
34
  /**
26
35
  * @param oConfiguration Initial configuration object.
27
36
  * @param controller The HttpController instance.
@@ -215,4 +224,4 @@ class ResourceMethod {
215
224
  return this;
216
225
  }
217
226
  }
218
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2h0dHAvcnMvcmVzb3VyY2UtbWV0aG9kLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBoYW5kbGVyRnVuY3Rpb24gfSBmcm9tIFwiLi9yZXNvdXJjZS1jb21tb25cIjtcblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIHRoZSBpbnRlcm5hbCBjb25maWd1cmF0aW9uIG9iamVjdCBvZiBhIFJlc291cmNlTWV0aG9kLlxuICovXG5pbnRlcmZhY2UgUmVzb3VyY2VNZXRob2RDb25maWcge1xuICAgIGNvbnN1bWVzPzogc3RyaW5nW107XG4gICAgcHJvZHVjZXM/OiBzdHJpbmdbXTtcbiAgICBiZWZvcmU/OiBGdW5jdGlvbjtcbiAgICBzZXJ2ZT86IEZ1bmN0aW9uOyAvLyBDb3VsZCBhbHNvIGJlIG5hbWVkICdoYW5kbGVyJ1xuICAgIGNhdGNoPzogRnVuY3Rpb247XG4gICAgZmluYWxseT86IEZ1bmN0aW9uO1xuICAgIC8vIEFkZCBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9uIHByb3BlcnRpZXMgYXMgdGhleSBiZWNvbWUga25vd25cbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbi8qKlxuICogQ29uc3RydWN0b3IgZnVuY3Rpb24gZm9yIFJlc291cmNlTWV0aG9kIGluc3RhbmNlcy5cbiAqIFRoaXMgY2xhc3MgaGFuZGxlcyB0aGUgZmx1ZW50IGNvbmZpZ3VyYXRpb24gZm9yIGEgc2luZ2xlIEhUVFAgbWV0aG9kIGhhbmRsZXIgKGUuZy4sIEdFVClcbiAqIGF0dGFjaGVkIHRvIGEgUmVzb3VyY2UuXG4gKiBcbiAqIC8qKlxuICogQ29uc3RydWN0b3IgZnVuY3Rpb24gZm9yIFJlc291cmNlTWV0aG9kIGluc3RhbmNlcy5cbiAqIEFsbCBwYXJhbWV0ZXJzIG9mIHRoZSBmdW5jdGlvbiBhcmUgb3B0aW9uYWwuXG4gKlxuICogUHJvdmlkaW5nIG9Db25maWd1cmF0aW9uIHdpbGwgaW5pdGlhbGl6ZSB0aGlzIGluc3RhbmNlIHdpdGggc29tZSBpbml0aWFsIGNvbmZpZ3VyYXRpb24gaW5zdGVhZCBvZiBzdGFydGluZ1xuICogZW50aXJlbHkgZnJvbSBzY3JhdGNoLiBOb3RlIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHNjaGVtYSBtdXN0IGJlIGNvbXBsaWFudCB3aXRoIHRoZSBvbmUgcHJvZHVjZWQgYnlcbiAqIHRoZSBSZXNvdXJjZU1ldGhvZCBpdHNlbGYuIElmIHRoaXMgcGFyYW1ldGVyIGlzIG9taXRlZCwgc2V0dXAgd2lsbCBzdGFydCBmcm9tIHNjcmF0Y2guXG4gKlxuICogUHJvdmlzaW9uaW5nIGNvbnRyb2xsZXIsIHdpbGwgaW5qZWN0IGEgcmVmZXJlbmNlIHRvIHRoZSBleGVjdXRlIG1ldGhvZCBvZiB0aGUgY29udHJvbGxlciBzbyB0aGF0IGl0IGNhbiBiZVxuICogZmx1ZW50bHkgaW52b2tlZCBpbiB0aGUgc2NvcGUgb2YgdGhpcyBSZXNvdXJjZU1laHRvZCBpbnN0YW5jZSBhcyBwYXJ0IG9mIHRoZSBtZXRob2QgY2hhaW5pbmcgZmxvdy4gVGhlIGV4ZWN1dGVcbiAqIGZ1bmN0aW9uIHNjb3BlIGlzIGJvdW5kIHRvIHRoZSBjb250cm9sbGVyIGluc3RhbmNlIGZvciB0aGlzIFJlc291cmNlTWV0aG9kLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBqc1xuICogcnMuc2VydmljZSgpXG4gKiAgLnJlc291cmNlKCcnKVxuICogXHRcdC5nZXQoKVxuICogXHQuZXhlY3V0ZSgpO1xuICogYGBgXG4gKlxuICogUHJvdmlzaW9uaW5nIHJlc291cmNlLCB3aWxsIGluamVjdCBhIHJlZmVyZW5jZSBvdCB0aGUgSFRUUCBtZXRob2QgZnVuY3Rpb25zIG9mIHRoZSBSZXNvdXJjZSBjbGFzcyAoZ2V0LCBwb3N0LFxuICogcHV0LCBkZWxldGUsIHJlbW92ZSwgbWV0aG9kKSBzbyB0aGF0IHRoZXkgY2FuIGJlIGZsdWVudGx5IGludm9rZWQgaW4gdGhlIHNjb3BlIG9mIHRoaXMgUmVzb3VyY2VNZXRob2QgaW5zdGFuY2VcbiAqIGFzIHBhcnQgb2YgdGhlIG1ldGhvZCBjaGFpbmluZyBmbG93LiBUaGUgZnVuY3Rpb25zIGFyZSBib3VuZCB0byB0aGUgcmVzb3VyY2UgaW5zdGFuY2UgZm9yIHRoaXMgUmVzb3VyY2VNZXRob2QuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGpzXG4gKiBycy5zZXJ2aWNlKClcbiAqICAucmVzb3VyY2UoJycpXG4gKiBcdFx0LmdldChmdW5jdGlvbigpe30pXG4gKiBcdFx0LnBvc3QoZnVuY3Rpb24oKXt9KVxuICogXHRcdC5wdXQoZnVuY3Rpb24oKXt9KVxuICogXHRcdC5yZW1vdmUoZnVuY3Rpb24oKXt9KVxuICogLmV4ZWN1dGUoKTtcbiAqIGBgYFxuICpcbiAqIFByb3Zpc2lvbmluZyBtYXBwaW5ncywgd2lsbCBpbmplY3QgYSByZWZlcmVuY2Ugb3QgdGhlIHJlc291cmNlIG1ldGhvZCBvZiB0aGUgUmVzb3VyY2VNYXBwaW5ncyBjbGFzcyBzbyB0aGF0XG4gKiBpdCBjYW4gYmUgZmx1ZW50bHkgaW52b2tlZCBpbiB0aGUgc2NvcGUgb2YgdGhpcyBSZXNvdXJjZU1ldGhvZCBpbnN0YW5jZSBhcyBwYXJ0IG9mIHRoZSBtZXRob2QgY2hhaW5pbmcgZmxvdy5cbiAqIFRoZSBmdW5jdGlvbiBpcyBib3VuZCB0byB0aGUgbWFwcGluZ3MgaW5zdGFuY2UgZm9yIHRoaXMgUmVzb3VyY2VNZXRob2QuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGpzXG4gKiBycy5zZXJ2aWNlKClcbiAqICAucmVzb3VyY2UoJycpXG4gKiBcdFx0LmdldChmdW5jdGlvbigpe30pXG4gKiBcdC5yZXNvdXJjZSgne2lkfScpXG4gKiBcdFx0LmdldChmdW5jdGlvbigpe30pXG4gKiAuZXhlY3V0ZSgpO1xuICogYGBcbiAqIFxuICovXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VNZXRob2Qge1xuICAgIGNmZzogUmVzb3VyY2VNZXRob2RDb25maWc7XG4gICAgX3Jlc291cmNlOiBhbnk7IC8vIFJlZmVyZW5jZSB0byB0aGUgcGFyZW50IFJlc291cmNlIGluc3RhbmNlXG4gICAgY29udHJvbGxlcjogYW55OyAvLyBSZWZlcmVuY2UgdG8gdGhlIEh0dHBDb250cm9sbGVyIGluc3RhbmNlXG5cbiAgICAvLyBGbHVlbnQgQVBJIGFsaWFzZXMvZGVsZWdhdGVzIGJvdW5kIHRvIFJlc291cmNlTWFwcGluZ3MvUmVzb3VyY2VcbiAgICByZXNvdXJjZTogRnVuY3Rpb247XG4gICAgcmVzb3VyY2VQYXRoOiBGdW5jdGlvbjtcbiAgICBwYXRoOiBGdW5jdGlvbjtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBvQ29uZmlndXJhdGlvbiBJbml0aWFsIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSBjb250cm9sbGVyIFRoZSBIdHRwQ29udHJvbGxlciBpbnN0YW5jZS5cbiAgICAgKiBAcGFyYW0gcmVzb3VyY2UgVGhlIHBhcmVudCBSZXNvdXJjZSBpbnN0YW5jZS5cbiAgICAgKiBAcGFyYW0gbWFwcGluZ3MgVGhlIHBhcmVudCBSZXNvdXJjZU1hcHBpbmdzIGluc3RhbmNlLlxuICAgICAqIEByZXR1cm5zIHtSZXNvdXJjZU1ldGhvZH1cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihvQ29uZmlndXJhdGlvbjogYW55LCBjb250cm9sbGVyOiBhbnksIHJlc291cmNlOiBhbnksIG1hcHBpbmdzOiBhbnkpIHtcbiAgICAgICAgdGhpcy5jZmcgPSBvQ29uZmlndXJhdGlvbiB8fCB7fTtcbiAgICAgICAgdGhpcy5fcmVzb3VyY2UgPSByZXNvdXJjZTtcbiAgICAgICAgdGhpcy5jb250cm9sbGVyID0gY29udHJvbGxlcjtcblxuICAgICAgICBpZiAobWFwcGluZ3MpIHtcbiAgICAgICAgICAgIC8vIEJpbmQgdGhlIHJlc291cmNlL3BhdGggbWV0aG9kcyBmcm9tIFJlc291cmNlTWFwcGluZ3MgZm9yIG1ldGhvZCBjaGFpbmluZ1xuICAgICAgICAgICAgdGhpcy5yZXNvdXJjZSA9IG1hcHBpbmdzLnJlc291cmNlLmJpbmQobWFwcGluZ3MpO1xuICAgICAgICAgICAgdGhpcy5yZXNvdXJjZVBhdGggPSB0aGlzLnBhdGggPSB0aGlzLnJlc291cmNlOyAvLyBhbGlhc2VzXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWxlZ2F0ZXMgdG8gdGhlIEh0dHBDb250cm9sbGVyJ3MgZXhlY3V0ZSBmdW5jdGlvbiB0byBwcm9jZXNzIHRoZSByZXF1ZXN0LlxuICAgICAqL1xuICAgIGV4ZWN1dGUoKTogdm9pZCB7XG4gICAgICAgIC8vIFVzZSBvcHRpb25hbCBjaGFpbmluZyBhcyBjb250cm9sbGVyIG1pZ2h0IG5vdCBiZSBhdmFpbGFibGUgaW4gYWxsIHNldHVwc1xuICAgICAgICB0aGlzLmNvbnRyb2xsZXI/LmV4ZWN1dGU/LiguLi5hcmd1bWVudHMpO1xuICAgIH1cblxuICAgIC8vIC0tLSBEZWxlZ2F0aW9uIHRvIFJlc291cmNlIEhUVFAgTWV0aG9kcyBmb3IgQ2hhaW5pbmcgLS0tXG5cbiAgICAvKipcbiAgICAgKiBEZWxlZ2F0ZXMgdG8gdGhlIHBhcmVudCBSZXNvdXJjZSdzICdnZXQnIG1ldGhvZC5cbiAgICAgKi9cbiAgICBnZXQoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlPy5bXCJnZXRcIl0/LiguLi5hcmd1bWVudHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlbGVnYXRlcyB0byB0aGUgcGFyZW50IFJlc291cmNlJ3MgJ3Bvc3QnIG1ldGhvZC5cbiAgICAgKi9cbiAgICBwb3N0KCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZT8uW1wicG9zdFwiXT8uKC4uLmFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVsZWdhdGVzIHRvIHRoZSBwYXJlbnQgUmVzb3VyY2UncyAncHV0JyBtZXRob2QuXG4gICAgICovXG4gICAgcHV0KCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZT8uW1wicHV0XCJdPy4oLi4uYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWxlZ2F0ZXMgdG8gdGhlIHBhcmVudCBSZXNvdXJjZSdzICdkZWxldGUnIG1ldGhvZC5cbiAgICAgKi9cbiAgICBkZWxldGUoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlPy5bXCJkZWxldGVcIl0/LiguLi5hcmd1bWVudHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlbGVnYXRlcyB0byB0aGUgcGFyZW50IFJlc291cmNlJ3MgJ3JlbW92ZScgbWV0aG9kLlxuICAgICAqL1xuICAgIHJlbW92ZSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2U/LltcInJlbW92ZVwiXT8uKC4uLmFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVsZWdhdGVzIHRvIHRoZSBwYXJlbnQgUmVzb3VyY2UncyAnbWV0aG9kJyBtZXRob2QuXG4gICAgICovXG4gICAgbWV0aG9kKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZT8uW1wibWV0aG9kXCJdPy4oLi4uYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBjb25maWd1cmF0aW9uIG9iamVjdCBmb3IgdGhpcyBSZXNvdXJjZU1ldGhvZCBpbnN0YW5jZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBjb25maWd1cmF0aW9uIG9iamVjdC5cbiAgICAgKi9cbiAgICBjb25maWd1cmF0aW9uKCk6IFJlc291cmNlTWV0aG9kQ29uZmlnIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2ZnO1xuICAgIH07XG5cbiAgICAvLyAtLS0gSGFuZGxlciBEZWZpbml0aW9uIE1ldGhvZHMgLS0tXG5cbiAgICAvKipcbiAgICAgKiBBcHBsaWVzIGEgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIHRoZSAqKmJlZm9yZSoqIHBoYXNlIG9mIHByb2Nlc3NpbmcgYSBtYXRjaGVkIHJlc291cmNlIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZkhhbmRsZXIgQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIHRoZSBiZWZvcmUgcGhhc2UuXG4gICAgICogQHJldHVybnMgVGhlIFJlc291cmNlTWV0aG9kIGluc3RhbmNlIGZvciBtZXRob2QgY2hhaW5pbmcuXG4gICAgICovXG4gICAgYmVmb3JlKGZIYW5kbGVyOiBGdW5jdGlvbik6IFJlc291cmNlTWV0aG9kIHtcbiAgICAgICAgcmV0dXJuIGhhbmRsZXJGdW5jdGlvbih0aGlzLCB0aGlzLmNvbmZpZ3VyYXRpb24oKSwgJ2JlZm9yZScsIGZIYW5kbGVyKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQXBwbGllcyBhIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBwcm9jZXNzaW5nIGEgbWF0Y2hlZCByZXNvdXJjZSByZXF1ZXN0ICgqKnNlcnZlKiogcGhhc2UpLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZIYW5kbGVyIENhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgc2VydmUgcGhhc2UuXG4gICAgICogQHJldHVybnMgVGhlIFJlc291cmNlTWV0aG9kIGluc3RhbmNlIGZvciBtZXRob2QgY2hhaW5pbmcuXG4gICAgICovXG4gICAgc2VydmUoZkhhbmRsZXI6IEZ1bmN0aW9uKTogUmVzb3VyY2VNZXRob2Qge1xuICAgICAgICByZXR1cm4gaGFuZGxlckZ1bmN0aW9uKHRoaXMsIHRoaXMuY29uZmlndXJhdGlvbigpLCAnc2VydmUnLCBmSGFuZGxlcik7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEFwcGxpZXMgYSBjYWxsYmFjayBmdW5jdGlvbiBmb3IgdGhlICoqY2F0Y2gqKiBlcnJvcnMgcGhhc2Ugb2YgcHJvY2Vzc2luZyBhIG1hdGNoZWQgcmVzb3VyY2UgcmVxdWVzdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmSGFuZGxlciBDYWxsYmFjayBmdW5jdGlvbiBmb3IgdGhlIGNhdGNoIHBoYXNlLlxuICAgICAqIEByZXR1cm5zIFRoZSBSZXNvdXJjZU1ldGhvZCBpbnN0YW5jZSBmb3IgbWV0aG9kIGNoYWluaW5nLlxuICAgICAqL1xuICAgIGNhdGNoKGZIYW5kbGVyOiBGdW5jdGlvbik6IFJlc291cmNlTWV0aG9kIHtcbiAgICAgICAgcmV0dXJuIGhhbmRsZXJGdW5jdGlvbih0aGlzLCB0aGlzLmNvbmZpZ3VyYXRpb24oKSwgJ2NhdGNoJywgZkhhbmRsZXIpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBBcHBsaWVzIGEgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIHRoZSAqKmZpbmFsbHkqKiBwaGFzZSBvZiBwcm9jZXNzaW5nIGEgbWF0Y2hlZCByZXNvdXJjZSByZXF1ZXN0LlxuICAgICAqXG4gICAgICogQHBhcmFtIGZIYW5kbGVyIENhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgZmluYWxseSBwaGFzZS5cbiAgICAgKiBAcmV0dXJucyBUaGUgUmVzb3VyY2VNZXRob2QgaW5zdGFuY2UgZm9yIG1ldGhvZCBjaGFpbmluZy5cbiAgICAgKi9cbiAgICBmaW5hbGx5KGZIYW5kbGVyOiBGdW5jdGlvbik6IFJlc291cmNlTWV0aG9kIHtcbiAgICAgICAgcmV0dXJuIGhhbmRsZXJGdW5jdGlvbih0aGlzLCB0aGlzLmNvbmZpZ3VyYXRpb24oKSwgJ2ZpbmFsbHknLCBmSGFuZGxlcik7XG4gICAgfTtcblxuICAgIC8vIC0tLSBNSU1FIFR5cGUgQ29uZmlndXJhdGlvbiBNZXRob2RzIC0tLVxuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0aGUgY29udGVudCBNSU1FIHR5cGUocyksIHdoaWNoIHRoaXMgUmVzb3VyY2VNZXRob2QgZXhwZWN0cyBhcyBpbnB1dCAoKipjb25zdW1lcyoqKS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBtaW1lVHlwZXMgU2V0cyB0aGUgbWltZSB0eXBlcyB0aGF0IHRoaXMgUmVzb3VyY2VNZXRob2QgaXMgY2FwYWJsZSB0byBjb25zdW1lLlxuICAgICAqIEByZXR1cm5zIFRoZSBSZXNvdXJjZU1ldGhvZCBpbnN0YW5jZSBmb3IgbWV0aG9kIGNoYWluaW5nLlxuICAgICAqL1xuICAgIGNvbnN1bWVzKG1pbWVUeXBlczogc3RyaW5nIHwgc3RyaW5nW10pOiBSZXNvdXJjZU1ldGhvZCB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbWVTZXR0aW5nKCdjb25zdW1lcycsIG1pbWVUeXBlcyk7XG4gICAgfTtcblxuICAgIC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBIVFRQIHJlc3BvbnNlIHBheWxvYWQgTUlNRSB0eXBlKHMpLCB3aGljaCB0aGlzIFJlc291cmNlTWV0aG9kIHJlcXVlc3QgcHJvY2Vzc2luZyBmdW5jdGlvbiBvdXRwdXRzLCBpLmUuXG5cdCAqIHRob3NlIHRoYXQgaXQgJ3Byb2R1Y2VzJy4gQXQgcnVudGltZSwgdGhlIEFjY2VwdCByZXF1ZXN0IGhlYWRlciB3aWxsIGJlIG1hdGNoZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGlzIHNldHRpbmdcblx0ICogdG8gZWxpY2l0IHJlcXVlc3QgcHJvY2Vzc2luZyBmdW5jdGlvbnMuXG5cdCAqIE5vdGUgdGhhdCB0aGUgbWF0Y2hpbmcgaXMgcGVyZm9ybWVkIGJ5IGNvbXBhdGliaWxpdHksIG5vdCBzdHJpY3QgZXF1YWxpdHksIGkuZS4gdGhlIE1JTUUgdHlwZSBmb3JtYXQgd2lsZGNhcmRzIGFyZVxuXHQgKiBjb25zaWRlcmVkIHRvby4gRm9yIGV4YW1wbGUsIGEgcmVxdWVzdCBBY2NlcHQgaGVhZGVyIFwiKlxcL2pzb25cIiB3aWxsIG1hdGNoIGEgcHJvZHVjZXMgc2V0dGluZyBcImFwcGxpY2F0aW9uXFwvanNvblwiLlxuXHQgKiBcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGpzXG4gICAgICogcnMuc2VydmljZSgpXG4gICAgICpcdC5yZXNvdXJjZShcIlwiKVxuICAgICAqIFx0XHQuZ2V0KGZ1bmN0aW9uKCl7fSlcbiAgICAgKiBcdFx0XHQucHJvZHVjZXMoW1wiYXBwbGljYXRpb25cXC9qc29uXCJdKVxuICAgICAqIC5leGVjdXRlKCk7XG4gICAgICogXHQuXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBUYWtlIGNhcmUgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHByb2R1Y2VzIGNvbnN0cmFpbnQgY29ycmVjdGx5IGRlc2NyaWJlcyB0aGUgcmVzcG9uc2UgY29udGVudHkgTUlNRSB0eXBlcyB0aGF0IHRoZSByZXF1ZXN0XG4gICAgICogcHJvY2Vzc2luZyBmdW5jdGlvbiBjYW4gcHJvZHVjZSBzbyB0aGF0IG9ubHkgY2xpZW50IHJlcXVlc3QgdGhhdCBjYW4gYWNjZXB0IHRoZW0gbGFuZCB0aGVyZS5cbiAgICAgKlxuICAgICAqIEEgbm90ZSBhYm91dCBtZXRob2QgYXJndW1lbnQgbXVsdGlwbGljaXR5IChzdHJpbmcgdnMgYXJyYXkgb2Ygc3RyaW5ncykuXG4gICAgICogT25lIG9mIHRoZSBhcmd1bWVudHMgb2YgdGhlIHByb2R1Y2UgbWV0aG9kIHdpbGwgdHJhbnNsYXRlIHRvIHRoZSByZXNwb25zZSBDb250ZW50LVR5cGUgcHJvcGVydHksIHdoaWNoIGlzIGtub3duIHRvIGJlIGFcbiAgICAgKiBzaW5nbGUgdmFsdWUgaGVhZGVyIGJ5IFtzcGVjaWZpY2F0aW9uXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTMuMS4xLjUpLiBUaGVyZSBhcmUgdHdvIHJlYXNvbnMgd2h5XG4gICAgICogdGhlIG1ldGhvZCBhY2NlcHRzIGFycmF5IGFuZCBub3QgYSBzaW5nbGUgdmFsdWUgb25seTpcbiAgICAgKlxuICAgICAqIDEuIE5vcm1hbGx5LCB3aGVuIG1hdGNoZWQsIGNvbnRlbnQgdHlwZXMgYXJlIGV2YWx1YXRlZCBmb3Igc2VtYW50aWMgY29tcGF0aWJpbGl0eSBhbmQgbm90IHN0cmljdCBlcXVhbGl0eSBvbiBib3RoIHNpZGVzXG4gICAgICogIC0gY2xpZW50IGFuZCBzZXJ2ZXIuIFByb3ZpZGluZyBhIHJhbmdlIG9mIGNvbXBhdGlibGUgTUlNRSB0eXBlcyBpbnN0ZWFkIG9mIHNpbmdsZSB2YWx1ZSwgaW5jcmVhc2VzIHRoZSByYW5nZSBvZiBhY2NlcHRhYmxlXG4gICAgICogcmVxdWVzdHMgZm9yIHByb2Nlc2luZywgd2hpbGUgcmVkdWNpbmcgdGhlIHN0cmljbmVzcyBvZiB0aGUgcmVxdWlyZW1lbnRzIG9uIHRoZSBjbGllbnQgbWFraW5nIHRoZSByZXF1ZXN0LiBGb3IgZXhhbXBsZSxcbiAgICAgKiBkZWNsYXJpbmcgW1widGV4dC9qc29uLFwiYXBwbGljYXRpb24vanNvblwiXSBhcyBwcm9kdWNlZCB0eXBlcyBtYWtlcyByZXF1ZXN0cyB3aXRoIGFueSBvZiB0aGVzZSBhY2NlcHQgaGVhZGVycyAob3IgYSBjb21iaW5hdGlvblxuICAgICAqIG9mIHRoZW0pIGFjY2VwdGFibGUgZm9yIHByb2Nlc3Npbmc6IFwiKlxcL2pzb25cIiwgXCJ0ZXh0L2pzb25cIiwgXCJhcHBsaWNhdGlvbi9qc29uXCIsIFwiKlxcLypcIi5cbiAgICAgKlxuICAgICAqIDIuIEFsdGhvdWdoIGluIG1vc3QgY2FzZXMgYSBoYW5kbGVyIGZ1bmN0aW9uIHdpbGwgcHJvZHVjZSBwYXlsb2FkIGluIHNpbmdsZSBmb3JtYXQgKG1lZGlhIHR5cGUpLCBpdCBpcyBxdWl0ZSBwb3NzaWJsZSB0b1xuICAgICAqIGRlc2dpbiBpdCBhbHNvIGFzIGEgY29udHJvbGxlciB0aGF0IHByb2R1Y2VzIGFsdGVybmF0aXZlIHBheWxvYWQgaW4gZGlmZmVyZW50IGZvcm1hdHMuIEluIHRoZXNlIGNhc2VzIHlvdSBuZWVkIHByb2R1Y2VzXG4gICAgICogdGhhdCBkZWNsYXJlcyBhbGwgc3VwcG9ydGVkIG1lZGlhIHR5cGVzIHNvIHRoYXQgdGhlIHJlcXVlc3Qgd2l0aCBhIHJlbGF4ZWQgQWNjZXB0IGhlYWRlciBtYXRjaGluZyBhbnkgb2YgdGhlbSBjYW4gbGFuZFxuICAgICAqIGluIHRoaXMgZnVuY3Rpb24uIFRoYXQgbWFrZXMgdGhlIHJvdXRpbmcgYSBiaXQgbGVzcyB0cmFuc3BhcmVudCBhbmQgZGVwZW5kZW50IG9uIHRoZSBjbGllbnQsIGJ1dCBtYXkgcHJvdmUgdmFsdWFibGUgZm9yXG4gICAgICogY2VydGlhbiBjYXNlcy5cbiAgICAgKlxuICAgICAqIEluIGFueSBjYXNlIGl0IGlzIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSByZXF1ZXN0IHByb2Nlc3NpbmcgZnVuY3Rpb24gdG8gc2V0IHRoZSBjb3JyZWN0IENvbnRlbnQtVHlwZSBoZWFkZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWltZVR5cGVzIFNldHMgdGhlIG1pbWUgdHlwZShzKSB0aGF0IHRoaXMgUmVzb3VyY2VNZXRob2QgbWF5IHByb2R1Y2UuXG4gICAgICogQHJldHVybnMgVGhlIFJlc291cmNlTWV0aG9kIGluc3RhbmNlIGZvciBtZXRob2QgY2hhaW5pbmcuXG4gICAgICovXG4gICAgcHJvZHVjZXMobWltZVR5cGVzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IFJlc291cmNlTWV0aG9kIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWltZVNldHRpbmcoJ3Byb2R1Y2VzJywgbWltZVR5cGVzKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ29tbW1vbiBmdW5jdGlvbiBmb3IgaW5pdGlhbGl6bmcgdGhlICdjb25zdW1lcycgYW5kICdwcm9kdWNlcycgYXJyYXlzIGluIHRoZSBSZXNvdXJjZU1ldGhvZCBpbnN0YW5jZXMuXG4gICAgICogQmVmb3JlIGZpbmFsaXppbmcgdGhlIGNvbmZpZ3VyYXRpb24gc2V0dXAgdGhlIGZ1bmN0aW9uIHdpbGwgcmVtb3ZlIGR1cGxpY2F0ZXMgd2l0aCBleGFjdCBtYXRjaCBmaWx0ZXJpbmcuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWltZVNldHRpbmdOYW1lIG11c3QgYmUgZWl0aGVyICdjb25zdW1lcycgb3IgJ3Byb2R1Y2VzJy5cbiAgICAgKiBAcGFyYW0gbWltZVR5cGVzIEFuIGFycmF5IG9mIHN0cmluZ3MgZm9ybWF0dGVkIGFzIG1pbWUgdHlwZXMgKHR5cGUvc3VidHlwZSkgb3IgYSBzaW5nbGUgc3RyaW5nLlxuICAgICAqIEByZXR1cm5zIFRoZSBSZXNvdXJjZU1ldGhvZCBpbnN0YW5jZSB0byB3aGljaCB0aGUgZnVuY3Rpb24gaXMgYm91bmQuXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIG1pbWVTZXR0aW5nKG1pbWVTZXR0aW5nTmFtZTogJ2NvbnN1bWVzJyB8ICdwcm9kdWNlcycsIG1pbWVUeXBlczogc3RyaW5nIHwgc3RyaW5nW10pOiBSZXNvdXJjZU1ldGhvZCB7XG5cbiAgICAgICAgbGV0IGFyck1pbWVUeXBlczogc3RyaW5nW107XG5cbiAgICAgICAgaWYgKHR5cGVvZiBtaW1lVHlwZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBhcnJNaW1lVHlwZXMgPSBbbWltZVR5cGVzXTtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG1pbWVUeXBlcykpIHtcbiAgICAgICAgICAgIGFyck1pbWVUeXBlcyA9IG1pbWVUeXBlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBhcmd1bWVudDogJyArIG1pbWVTZXR0aW5nTmFtZSArICcgbWltZSB0eXBlIGFyZ3VtZW50IG11c3QgYmUgdmFsaWQgTUlNRSB0eXBlIHN0cmluZyBvciBhcnJheSBvZiBzdWNoIHN0cmluZ3MsIGJ1dCBpbnN0ZWFkIGlzICcgKyAodHlwZW9mIG1pbWVUeXBlcykpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXJyTWltZVR5cGVzLmZvckVhY2goKG1pbWVUeXBlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtdCA9IG1pbWVUeXBlLnNwbGl0KCcvJyk7XG4gICAgICAgICAgICBpZiAobXQubGVuZ3RoICE9PSAyIHx8ICFtdFswXSB8fCAhbXRbMV0pXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGFyZ3VtZW50LiBOb3QgYSB2YWxpZCBNSU1FIHR5cGUgZm9ybWF0IHR5cGUvc3VidHlwZTogJyArIG1pbWVUeXBlKTtcbiAgICAgICAgICAgIC8vIEJhc2ljIGZvcm1hdCBjaGVjayBpcyBzdWZmaWNpZW50XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghdGhpcy5jZmdbbWltZVNldHRpbmdOYW1lXSkge1xuICAgICAgICAgICAgdGhpcy5jZmdbbWltZVNldHRpbmdOYW1lXSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGVkdXBsaWNhdGUgZW50cmllcyBiZWZvcmUgY29uY2F0ZW5hdGlvblxuICAgICAgICBjb25zdCBleGlzdGluZ01pbWVzOiBzdHJpbmdbXSA9IHRoaXMuY2ZnW21pbWVTZXR0aW5nTmFtZV07XG4gICAgICAgIGNvbnN0IG5ld01pbWVUeXBlcyA9IGFyck1pbWVUeXBlcy5maWx0ZXIoKG1pbWVUeXBlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZXhpc3RpbmdNaW1lcy5pbmRleE9mKG1pbWVUeXBlKSA8IDA7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY2ZnW21pbWVTZXR0aW5nTmFtZV0gPSBleGlzdGluZ01pbWVzLmNvbmNhdChuZXdNaW1lVHlwZXMpO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSw2QkFBZ0M7QUF1RXpCLE1BQU0sZUFBZTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFpQnhCLFlBQVksZ0JBQXFCLFlBQWlCLFVBQWUsVUFBZTtBQUM1RSxTQUFLLE1BQU0sa0JBQWtCLENBQUM7QUFDOUIsU0FBSyxZQUFZO0FBQ2pCLFNBQUssYUFBYTtBQUVsQixRQUFJLFVBQVU7QUFFVixXQUFLLFdBQVcsU0FBUyxTQUFTLEtBQUssUUFBUTtBQUMvQyxXQUFLLGVBQWUsS0FBSyxPQUFPLEtBQUs7QUFBQSxJQUN6QztBQUFBLEVBQ0o7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBLFVBQWdC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
227
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2h0dHAvcnMvcmVzb3VyY2UtbWV0aG9kLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBoYW5kbGVyRnVuY3Rpb24gfSBmcm9tIFwiLi9yZXNvdXJjZS1jb21tb25cIjtcblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIHRoZSBpbnRlcm5hbCBjb25maWd1cmF0aW9uIG9iamVjdCBvZiBhIFJlc291cmNlTWV0aG9kLlxuICovXG5pbnRlcmZhY2UgUmVzb3VyY2VNZXRob2RDb25maWcge1xuICAgIGNvbnN1bWVzPzogc3RyaW5nW107XG4gICAgcHJvZHVjZXM/OiBzdHJpbmdbXTtcbiAgICBiZWZvcmU/OiBGdW5jdGlvbjtcbiAgICBzZXJ2ZT86IEZ1bmN0aW9uOyAvLyBDb3VsZCBhbHNvIGJlIG5hbWVkICdoYW5kbGVyJ1xuICAgIGNhdGNoPzogRnVuY3Rpb247XG4gICAgZmluYWxseT86IEZ1bmN0aW9uO1xuICAgIC8vIEFkZCBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9uIHByb3BlcnRpZXMgYXMgdGhleSBiZWNvbWUga25vd25cbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbi8qKlxuICogQ29uc3RydWN0b3IgZnVuY3Rpb24gZm9yIFJlc291cmNlTWV0aG9kIGluc3RhbmNlcy5cbiAqIFRoaXMgY2xhc3MgaGFuZGxlcyB0aGUgZmx1ZW50IGNvbmZpZ3VyYXRpb24gZm9yIGEgc2luZ2xlIEhUVFAgbWV0aG9kIGhhbmRsZXIgKGUuZy4sIEdFVClcbiAqIGF0dGFjaGVkIHRvIGEgUmVzb3VyY2UuXG4gKiBcbiAqIC8qKlxuICogQ29uc3RydWN0b3IgZnVuY3Rpb24gZm9yIFJlc291cmNlTWV0aG9kIGluc3RhbmNlcy5cbiAqIEFsbCBwYXJhbWV0ZXJzIG9mIHRoZSBmdW5jdGlvbiBhcmUgb3B0aW9uYWwuXG4gKlxuICogUHJvdmlkaW5nIG9Db25maWd1cmF0aW9uIHdpbGwgaW5pdGlhbGl6ZSB0aGlzIGluc3RhbmNlIHdpdGggc29tZSBpbml0aWFsIGNvbmZpZ3VyYXRpb24gaW5zdGVhZCBvZiBzdGFydGluZ1xuICogZW50aXJlbHkgZnJvbSBzY3JhdGNoLiBOb3RlIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHNjaGVtYSBtdXN0IGJlIGNvbXBsaWFudCB3aXRoIHRoZSBvbmUgcHJvZHVjZWQgYnlcbiAqIHRoZSBSZXNvdXJjZU1ldGhvZCBpdHNlbGYuIElmIHRoaXMgcGFyYW1ldGVyIGlzIG9taXRlZCwgc2V0dXAgd2lsbCBzdGFydCBmcm9tIHNjcmF0Y2guXG4gKlxuICogUHJvdmlzaW9uaW5nIGNvbnRyb2xsZXIsIHdpbGwgaW5qZWN0IGEgcmVmZXJlbmNlIHRvIHRoZSBleGVjdXRlIG1ldGhvZCBvZiB0aGUgY29udHJvbGxlciBzbyB0aGF0IGl0IGNhbiBiZVxuICogZmx1ZW50bHkgaW52b2tlZCBpbiB0aGUgc2NvcGUgb2YgdGhpcyBSZXNvdXJjZU1laHRvZCBpbnN0YW5jZSBhcyBwYXJ0IG9mIHRoZSBtZXRob2QgY2hhaW5pbmcgZmxvdy4gVGhlIGV4ZWN1dGVcbiAqIGZ1bmN0aW9uIHNjb3BlIGlzIGJvdW5kIHRvIHRoZSBjb250cm9sbGVyIGluc3RhbmNlIGZvciB0aGlzIFJlc291cmNlTWV0aG9kLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBqc1xuICogcnMuc2VydmljZSgpXG4gKiAgLnJlc291cmNlKCcnKVxuICogXHRcdC5nZXQoKVxuICogXHQuZXhlY3V0ZSgpO1xuICogYGBgXG4gKlxuICogUHJvdmlzaW9uaW5nIHJlc291cmNlLCB3aWxsIGluamVjdCBhIHJlZmVyZW5jZSBvdCB0aGUgSFRUUCBtZXRob2QgZnVuY3Rpb25zIG9mIHRoZSBSZXNvdXJjZSBjbGFzcyAoZ2V0LCBwb3N0LFxuICogcHV0LCBkZWxldGUsIHJlbW92ZSwgbWV0aG9kKSBzbyB0aGF0IHRoZXkgY2FuIGJlIGZsdWVudGx5IGludm9rZWQgaW4gdGhlIHNjb3BlIG9mIHRoaXMgUmVzb3VyY2VNZXRob2QgaW5zdGFuY2VcbiAqIGFzIHBhcnQgb2YgdGhlIG1ldGhvZCBjaGFpbmluZyBmbG93LiBUaGUgZnVuY3Rpb25zIGFyZSBib3VuZCB0byB0aGUgcmVzb3VyY2UgaW5zdGFuY2UgZm9yIHRoaXMgUmVzb3VyY2VNZXRob2QuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGpzXG4gKiBycy5zZXJ2aWNlKClcbiAqICAucmVzb3VyY2UoJycpXG4gKiBcdFx0LmdldChmdW5jdGlvbigpe30pXG4gKiBcdFx0LnBvc3QoZnVuY3Rpb24oKXt9KVxuICogXHRcdC5wdXQoZnVuY3Rpb24oKXt9KVxuICogXHRcdC5yZW1vdmUoZnVuY3Rpb24oKXt9KVxuICogLmV4ZWN1dGUoKTtcbiAqIGBgYFxuICpcbiAqIFByb3Zpc2lvbmluZyBtYXBwaW5ncywgd2lsbCBpbmplY3QgYSByZWZlcmVuY2Ugb3QgdGhlIHJlc291cmNlIG1ldGhvZCBvZiB0aGUgUmVzb3VyY2VNYXBwaW5ncyBjbGFzcyBzbyB0aGF0XG4gKiBpdCBjYW4gYmUgZmx1ZW50bHkgaW52b2tlZCBpbiB0aGUgc2NvcGUgb2YgdGhpcyBSZXNvdXJjZU1ldGhvZCBpbnN0YW5jZSBhcyBwYXJ0IG9mIHRoZSBtZXRob2QgY2hhaW5pbmcgZmxvdy5cbiAqIFRoZSBmdW5jdGlvbiBpcyBib3VuZCB0byB0aGUgbWFwcGluZ3MgaW5zdGFuY2UgZm9yIHRoaXMgUmVzb3VyY2VNZXRob2QuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGpzXG4gKiBycy5zZXJ2aWNlKClcbiAqICAucmVzb3VyY2UoJycpXG4gKiBcdFx0LmdldChmdW5jdGlvbigpe30pXG4gKiBcdC5yZXNvdXJjZSgne2lkfScpXG4gKiBcdFx0LmdldChmdW5jdGlvbigpe30pXG4gKiAuZXhlY3V0ZSgpO1xuICogYGBcbiAqIFxuICovXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VNZXRob2Qge1xuICAgIGNmZzogUmVzb3VyY2VNZXRob2RDb25maWc7XG4gICAgX3Jlc291cmNlOiBhbnk7IC8vIFJlZmVyZW5jZSB0byB0aGUgcGFyZW50IFJlc291cmNlIGluc3RhbmNlXG4gICAgY29udHJvbGxlcjogYW55OyAvLyBSZWZlcmVuY2UgdG8gdGhlIEh0dHBDb250cm9sbGVyIGluc3RhbmNlXG5cbiAgICAvLyBGbHVlbnQgQVBJIGFsaWFzZXMvZGVsZWdhdGVzIGJvdW5kIHRvIFJlc291cmNlTWFwcGluZ3MvUmVzb3VyY2VcbiAgICByZXNvdXJjZTogRnVuY3Rpb247XG4gICAgcmVzb3VyY2VQYXRoOiBGdW5jdGlvbjtcbiAgICBwYXRoOiBGdW5jdGlvbjtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBvQ29uZmlndXJhdGlvbiBJbml0aWFsIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSBjb250cm9sbGVyIFRoZSBIdHRwQ29udHJvbGxlciBpbnN0YW5jZS5cbiAgICAgKiBAcGFyYW0gcmVzb3VyY2UgVGhlIHBhcmVudCBSZXNvdXJjZSBpbnN0YW5jZS5cbiAgICAgKiBAcGFyYW0gbWFwcGluZ3MgVGhlIHBhcmVudCBSZXNvdXJjZU1hcHBpbmdzIGluc3RhbmNlLlxuICAgICAqIEByZXR1cm5zIHtSZXNvdXJjZU1ldGhvZH1cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihvQ29uZmlndXJhdGlvbjogYW55LCBjb250cm9sbGVyOiBhbnksIHJlc291cmNlOiBhbnksIG1hcHBpbmdzOiBhbnkpIHtcbiAgICAgICAgdGhpcy5jZmcgPSBvQ29uZmlndXJhdGlvbiB8fCB7fTtcbiAgICAgICAgdGhpcy5fcmVzb3VyY2UgPSByZXNvdXJjZTtcbiAgICAgICAgdGhpcy5jb250cm9sbGVyID0gY29udHJvbGxlcjtcblxuICAgICAgICBpZiAobWFwcGluZ3MpIHtcbiAgICAgICAgICAgIC8vIEJpbmQgdGhlIHJlc291cmNlL3BhdGggbWV0aG9kcyBmcm9tIFJlc291cmNlTWFwcGluZ3MgZm9yIG1ldGhvZCBjaGFpbmluZ1xuICAgICAgICAgICAgdGhpcy5yZXNvdXJjZSA9IG1hcHBpbmdzLnJlc291cmNlLmJpbmQobWFwcGluZ3MpO1xuICAgICAgICAgICAgdGhpcy5yZXNvdXJjZVBhdGggPSB0aGlzLnBhdGggPSB0aGlzLnJlc291cmNlOyAvLyBhbGlhc2VzXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWxlZ2F0ZXMgdG8gdGhlIEh0dHBDb250cm9sbGVyJ3MgZXhlY3V0ZSBmdW5jdGlvbiB0byBwcm9jZXNzIHRoZSByZXF1ZXN0LlxuICAgICAqL1xuICAgIGV4ZWN1dGUoKTogdm9pZCB7XG4gICAgICAgIC8vIFVzZSBvcHRpb25hbCBjaGFpbmluZyBhcyBjb250cm9sbGVyIG1pZ2h0IG5vdCBiZSBhdmFpbGFibGUgaW4gYWxsIHNldHVwc1xuICAgICAgICB0aGlzLmNvbnRyb2xsZXI/LmV4ZWN1dGU/LiguLi5hcmd1bWVudHMpO1xuICAgIH1cblxuICAgIC8vIC0tLSBEZWxlZ2F0aW9uIHRvIFJlc291cmNlIEhUVFAgTWV0aG9kcyBmb3IgQ2hhaW5pbmcgLS0tXG5cbiAgICAvKipcbiAgICAgKiBEZWxlZ2F0ZXMgdG8gdGhlIHBhcmVudCBSZXNvdXJjZSdzICdnZXQnIG1ldGhvZC5cbiAgICAgKi9cbiAgICBnZXQoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlPy5bXCJnZXRcIl0/LiguLi5hcmd1bWVudHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlbGVnYXRlcyB0byB0aGUgcGFyZW50IFJlc291cmNlJ3MgJ3Bvc3QnIG1ldGhvZC5cbiAgICAgKi9cbiAgICBwb3N0KCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZT8uW1wicG9zdFwiXT8uKC4uLmFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVsZWdhdGVzIHRvIHRoZSBwYXJlbnQgUmVzb3VyY2UncyAncHV0JyBtZXRob2QuXG4gICAgICovXG4gICAgcHV0KCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZT8uW1wicHV0XCJdPy4oLi4uYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWxlZ2F0ZXMgdG8gdGhlIHBhcmVudCBSZXNvdXJjZSdzICdkZWxldGUnIG1ldGhvZC5cbiAgICAgKi9cbiAgICBkZWxldGUoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlPy5bXCJkZWxldGVcIl0/LiguLi5hcmd1bWVudHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlbGVnYXRlcyB0byB0aGUgcGFyZW50IFJlc291cmNlJ3MgJ3JlbW92ZScgbWV0aG9kLlxuICAgICAqL1xuICAgIHJlbW92ZSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2U/LltcInJlbW92ZVwiXT8uKC4uLmFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVsZWdhdGVzIHRvIHRoZSBwYXJlbnQgUmVzb3VyY2UncyAnbWV0aG9kJyBtZXRob2QuXG4gICAgICovXG4gICAgbWV0aG9kKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZT8uW1wibWV0aG9kXCJdPy4oLi4uYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBjb25maWd1cmF0aW9uIG9iamVjdCBmb3IgdGhpcyBSZXNvdXJjZU1ldGhvZCBpbnN0YW5jZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBjb25maWd1cmF0aW9uIG9iamVjdC5cbiAgICAgKi9cbiAgICBjb25maWd1cmF0aW9uKCk6IFJlc291cmNlTWV0aG9kQ29uZmlnIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2ZnO1xuICAgIH07XG5cbiAgICAvLyAtLS0gSGFuZGxlciBEZWZpbml0aW9uIE1ldGhvZHMgLS0tXG5cbiAgICAvKipcbiAgICAgKiBBcHBsaWVzIGEgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIHRoZSAqKmJlZm9yZSoqIHBoYXNlIG9mIHByb2Nlc3NpbmcgYSBtYXRjaGVkIHJlc291cmNlIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZkhhbmRsZXIgQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIHRoZSBiZWZvcmUgcGhhc2UuXG4gICAgICogQHJldHVybnMgVGhlIFJlc291cmNlTWV0aG9kIGluc3RhbmNlIGZvciBtZXRob2QgY2hhaW5pbmcuXG4gICAgICovXG4gICAgYmVmb3JlKGZIYW5kbGVyOiBGdW5jdGlvbik6IFJlc291cmNlTWV0aG9kIHtcbiAgICAgICAgcmV0dXJuIGhhbmRsZXJGdW5jdGlvbih0aGlzLCB0aGlzLmNvbmZpZ3VyYXRpb24oKSwgJ2JlZm9yZScsIGZIYW5kbGVyKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQXBwbGllcyBhIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBwcm9jZXNzaW5nIGEgbWF0Y2hlZCByZXNvdXJjZSByZXF1ZXN0ICgqKnNlcnZlKiogcGhhc2UpLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZIYW5kbGVyIENhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgc2VydmUgcGhhc2UuXG4gICAgICogQHJldHVybnMgVGhlIFJlc291cmNlTWV0aG9kIGluc3RhbmNlIGZvciBtZXRob2QgY2hhaW5pbmcuXG4gICAgICovXG4gICAgc2VydmUoZkhhbmRsZXI6IEZ1bmN0aW9uKTogUmVzb3VyY2VNZXRob2Qge1xuICAgICAgICByZXR1cm4gaGFuZGxlckZ1bmN0aW9uKHRoaXMsIHRoaXMuY29uZmlndXJhdGlvbigpLCAnc2VydmUnLCBmSGFuZGxlcik7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEFwcGxpZXMgYSBjYWxsYmFjayBmdW5jdGlvbiBmb3IgdGhlICoqY2F0Y2gqKiBlcnJvcnMgcGhhc2Ugb2YgcHJvY2Vzc2luZyBhIG1hdGNoZWQgcmVzb3VyY2UgcmVxdWVzdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmSGFuZGxlciBDYWxsYmFjayBmdW5jdGlvbiBmb3IgdGhlIGNhdGNoIHBoYXNlLlxuICAgICAqIEByZXR1cm5zIFRoZSBSZXNvdXJjZU1ldGhvZCBpbnN0YW5jZSBmb3IgbWV0aG9kIGNoYWluaW5nLlxuICAgICAqL1xuICAgIGNhdGNoKGZIYW5kbGVyOiBGdW5jdGlvbik6IFJlc291cmNlTWV0aG9kIHtcbiAgICAgICAgcmV0dXJuIGhhbmRsZXJGdW5jdGlvbih0aGlzLCB0aGlzLmNvbmZpZ3VyYXRpb24oKSwgJ2NhdGNoJywgZkhhbmRsZXIpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBBcHBsaWVzIGEgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIHRoZSAqKmZpbmFsbHkqKiBwaGFzZSBvZiBwcm9jZXNzaW5nIGEgbWF0Y2hlZCByZXNvdXJjZSByZXF1ZXN0LlxuICAgICAqXG4gICAgICogQHBhcmFtIGZIYW5kbGVyIENhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgZmluYWxseSBwaGFzZS5cbiAgICAgKiBAcmV0dXJucyBUaGUgUmVzb3VyY2VNZXRob2QgaW5zdGFuY2UgZm9yIG1ldGhvZCBjaGFpbmluZy5cbiAgICAgKi9cbiAgICBmaW5hbGx5KGZIYW5kbGVyOiBGdW5jdGlvbik6IFJlc291cmNlTWV0aG9kIHtcbiAgICAgICAgcmV0dXJuIGhhbmRsZXJGdW5jdGlvbih0aGlzLCB0aGlzLmNvbmZpZ3VyYXRpb24oKSwgJ2ZpbmFsbHknLCBmSGFuZGxlcik7XG4gICAgfTtcblxuICAgIC8vIC0tLSBNSU1FIFR5cGUgQ29uZmlndXJhdGlvbiBNZXRob2RzIC0tLVxuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0aGUgY29udGVudCBNSU1FIHR5cGUocyksIHdoaWNoIHRoaXMgUmVzb3VyY2VNZXRob2QgZXhwZWN0cyBhcyBpbnB1dCAoKipjb25zdW1lcyoqKS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBtaW1lVHlwZXMgU2V0cyB0aGUgbWltZSB0eXBlcyB0aGF0IHRoaXMgUmVzb3VyY2VNZXRob2QgaXMgY2FwYWJsZSB0byBjb25zdW1lLlxuICAgICAqIEByZXR1cm5zIFRoZSBSZXNvdXJjZU1ldGhvZCBpbnN0YW5jZSBmb3IgbWV0aG9kIGNoYWluaW5nLlxuICAgICAqL1xuICAgIGNvbnN1bWVzKG1pbWVUeXBlczogc3RyaW5nIHwgc3RyaW5nW10pOiBSZXNvdXJjZU1ldGhvZCB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbWVTZXR0aW5nKCdjb25zdW1lcycsIG1pbWVUeXBlcyk7XG4gICAgfTtcblxuICAgIC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBIVFRQIHJlc3BvbnNlIHBheWxvYWQgTUlNRSB0eXBlKHMpLCB3aGljaCB0aGlzIFJlc291cmNlTWV0aG9kIHJlcXVlc3QgcHJvY2Vzc2luZyBmdW5jdGlvbiBvdXRwdXRzLCBpLmUuXG5cdCAqIHRob3NlIHRoYXQgaXQgJ3Byb2R1Y2VzJy4gQXQgcnVudGltZSwgdGhlIEFjY2VwdCByZXF1ZXN0IGhlYWRlciB3aWxsIGJlIG1hdGNoZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGlzIHNldHRpbmdcblx0ICogdG8gZWxpY2l0IHJlcXVlc3QgcHJvY2Vzc2luZyBmdW5jdGlvbnMuXG5cdCAqIE5vdGUgdGhhdCB0aGUgbWF0Y2hpbmcgaXMgcGVyZm9ybWVkIGJ5IGNvbXBhdGliaWxpdHksIG5vdCBzdHJpY3QgZXF1YWxpdHksIGkuZS4gdGhlIE1JTUUgdHlwZSBmb3JtYXQgd2lsZGNhcmRzIGFyZVxuXHQgKiBjb25zaWRlcmVkIHRvby4gRm9yIGV4YW1wbGUsIGEgcmVxdWVzdCBBY2NlcHQgaGVhZGVyIFwiKlxcL2pzb25cIiB3aWxsIG1hdGNoIGEgcHJvZHVjZXMgc2V0dGluZyBcImFwcGxpY2F0aW9uXFwvanNvblwiLlxuXHQgKiBcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGpzXG4gICAgICogcnMuc2VydmljZSgpXG4gICAgICpcdC5yZXNvdXJjZShcIlwiKVxuICAgICAqIFx0XHQuZ2V0KGZ1bmN0aW9uKCl7fSlcbiAgICAgKiBcdFx0XHQucHJvZHVjZXMoW1wiYXBwbGljYXRpb25cXC9qc29uXCJdKVxuICAgICAqIC5leGVjdXRlKCk7XG4gICAgICogXHQuXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBUYWtlIGNhcmUgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHByb2R1Y2VzIGNvbnN0cmFpbnQgY29ycmVjdGx5IGRlc2NyaWJlcyB0aGUgcmVzcG9uc2UgY29udGVudHkgTUlNRSB0eXBlcyB0aGF0IHRoZSByZXF1ZXN0XG4gICAgICogcHJvY2Vzc2luZyBmdW5jdGlvbiBjYW4gcHJvZHVjZSBzbyB0aGF0IG9ubHkgY2xpZW50IHJlcXVlc3QgdGhhdCBjYW4gYWNjZXB0IHRoZW0gbGFuZCB0aGVyZS5cbiAgICAgKlxuICAgICAqIEEgbm90ZSBhYm91dCBtZXRob2QgYXJndW1lbnQgbXVsdGlwbGljaXR5IChzdHJpbmcgdnMgYXJyYXkgb2Ygc3RyaW5ncykuXG4gICAgICogT25lIG9mIHRoZSBhcmd1bWVudHMgb2YgdGhlIHByb2R1Y2UgbWV0aG9kIHdpbGwgdHJhbnNsYXRlIHRvIHRoZSByZXNwb25zZSBDb250ZW50LVR5cGUgcHJvcGVydHksIHdoaWNoIGlzIGtub3duIHRvIGJlIGFcbiAgICAgKiBzaW5nbGUgdmFsdWUgaGVhZGVyIGJ5IFtzcGVjaWZpY2F0aW9uXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTMuMS4xLjUpLiBUaGVyZSBhcmUgdHdvIHJlYXNvbnMgd2h5XG4gICAgICogdGhlIG1ldGhvZCBhY2NlcHRzIGFycmF5IGFuZCBub3QgYSBzaW5nbGUgdmFsdWUgb25seTpcbiAgICAgKlxuICAgICAqIDEuIE5vcm1hbGx5LCB3aGVuIG1hdGNoZWQsIGNvbnRlbnQgdHlwZXMgYXJlIGV2YWx1YXRlZCBmb3Igc2VtYW50aWMgY29tcGF0aWJpbGl0eSBhbmQgbm90IHN0cmljdCBlcXVhbGl0eSBvbiBib3RoIHNpZGVzXG4gICAgICogIC0gY2xpZW50IGFuZCBzZXJ2ZXIuIFByb3ZpZGluZyBhIHJhbmdlIG9mIGNvbXBhdGlibGUgTUlNRSB0eXBlcyBpbnN0ZWFkIG9mIHNpbmdsZSB2YWx1ZSwgaW5jcmVhc2VzIHRoZSByYW5nZSBvZiBhY2NlcHRhYmxlXG4gICAgICogcmVxdWVzdHMgZm9yIHByb2Nlc2luZywgd2hpbGUgcmVkdWNpbmcgdGhlIHN0cmljbmVzcyBvZiB0aGUgcmVxdWlyZW1lbnRzIG9uIHRoZSBjbGllbnQgbWFraW5nIHRoZSByZXF1ZXN0LiBGb3IgZXhhbXBsZSxcbiAgICAgKiBkZWNsYXJpbmcgW1widGV4dC9qc29uLFwiYXBwbGljYXRpb24vanNvblwiXSBhcyBwcm9kdWNlZCB0eXBlcyBtYWtlcyByZXF1ZXN0cyB3aXRoIGFueSBvZiB0aGVzZSBhY2NlcHQgaGVhZGVycyAob3IgYSBjb21iaW5hdGlvblxuICAgICAqIG9mIHRoZW0pIGFjY2VwdGFibGUgZm9yIHByb2Nlc3Npbmc6IFwiKlxcL2pzb25cIiwgXCJ0ZXh0L2pzb25cIiwgXCJhcHBsaWNhdGlvbi9qc29uXCIsIFwiKlxcLypcIi5cbiAgICAgKlxuICAgICAqIDIuIEFsdGhvdWdoIGluIG1vc3QgY2FzZXMgYSBoYW5kbGVyIGZ1bmN0aW9uIHdpbGwgcHJvZHVjZSBwYXlsb2FkIGluIHNpbmdsZSBmb3JtYXQgKG1lZGlhIHR5cGUpLCBpdCBpcyBxdWl0ZSBwb3NzaWJsZSB0b1xuICAgICAqIGRlc2dpbiBpdCBhbHNvIGFzIGEgY29udHJvbGxlciB0aGF0IHByb2R1Y2VzIGFsdGVybmF0aXZlIHBheWxvYWQgaW4gZGlmZmVyZW50IGZvcm1hdHMuIEluIHRoZXNlIGNhc2VzIHlvdSBuZWVkIHByb2R1Y2VzXG4gICAgICogdGhhdCBkZWNsYXJlcyBhbGwgc3VwcG9ydGVkIG1lZGlhIHR5cGVzIHNvIHRoYXQgdGhlIHJlcXVlc3Qgd2l0aCBhIHJlbGF4ZWQgQWNjZXB0IGhlYWRlciBtYXRjaGluZyBhbnkgb2YgdGhlbSBjYW4gbGFuZFxuICAgICAqIGluIHRoaXMgZnVuY3Rpb24uIFRoYXQgbWFrZXMgdGhlIHJvdXRpbmcgYSBiaXQgbGVzcyB0cmFuc3BhcmVudCBhbmQgZGVwZW5kZW50IG9uIHRoZSBjbGllbnQsIGJ1dCBtYXkgcHJvdmUgdmFsdWFibGUgZm9yXG4gICAgICogY2VydGlhbiBjYXNlcy5cbiAgICAgKlxuICAgICAqIEluIGFueSBjYXNlIGl0IGlzIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSByZXF1ZXN0IHByb2Nlc3NpbmcgZnVuY3Rpb24gdG8gc2V0IHRoZSBjb3JyZWN0IENvbnRlbnQtVHlwZSBoZWFkZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWltZVR5cGVzIFNldHMgdGhlIG1pbWUgdHlwZShzKSB0aGF0IHRoaXMgUmVzb3VyY2VNZXRob2QgbWF5IHByb2R1Y2UuXG4gICAgICogQHJldHVybnMgVGhlIFJlc291cmNlTWV0aG9kIGluc3RhbmNlIGZvciBtZXRob2QgY2hhaW5pbmcuXG4gICAgICovXG4gICAgcHJvZHVjZXMobWltZVR5cGVzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IFJlc291cmNlTWV0aG9kIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWltZVNldHRpbmcoJ3Byb2R1Y2VzJywgbWltZVR5cGVzKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ29tbW1vbiBmdW5jdGlvbiBmb3IgaW5pdGlhbGl6bmcgdGhlICdjb25zdW1lcycgYW5kICdwcm9kdWNlcycgYXJyYXlzIGluIHRoZSBSZXNvdXJjZU1ldGhvZCBpbnN0YW5jZXMuXG4gICAgICogQmVmb3JlIGZpbmFsaXppbmcgdGhlIGNvbmZpZ3VyYXRpb24gc2V0dXAgdGhlIGZ1bmN0aW9uIHdpbGwgcmVtb3ZlIGR1cGxpY2F0ZXMgd2l0aCBleGFjdCBtYXRjaCBmaWx0ZXJpbmcuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWltZVNldHRpbmdOYW1lIG11c3QgYmUgZWl0aGVyICdjb25zdW1lcycgb3IgJ3Byb2R1Y2VzJy5cbiAgICAgKiBAcGFyYW0gbWltZVR5cGVzIEFuIGFycmF5IG9mIHN0cmluZ3MgZm9ybWF0dGVkIGFzIG1pbWUgdHlwZXMgKHR5cGUvc3VidHlwZSkgb3IgYSBzaW5nbGUgc3RyaW5nLlxuICAgICAqIEByZXR1cm5zIFRoZSBSZXNvdXJjZU1ldGhvZCBpbnN0YW5jZSB0byB3aGljaCB0aGUgZnVuY3Rpb24gaXMgYm91bmQuXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIG1pbWVTZXR0aW5nKG1pbWVTZXR0aW5nTmFtZTogJ2NvbnN1bWVzJyB8ICdwcm9kdWNlcycsIG1pbWVUeXBlczogc3RyaW5nIHwgc3RyaW5nW10pOiBSZXNvdXJjZU1ldGhvZCB7XG5cbiAgICAgICAgbGV0IGFyck1pbWVUeXBlczogc3RyaW5nW107XG5cbiAgICAgICAgaWYgKHR5cGVvZiBtaW1lVHlwZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBhcnJNaW1lVHlwZXMgPSBbbWltZVR5cGVzXTtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG1pbWVUeXBlcykpIHtcbiAgICAgICAgICAgIGFyck1pbWVUeXBlcyA9IG1pbWVUeXBlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBhcmd1bWVudDogJyArIG1pbWVTZXR0aW5nTmFtZSArICcgbWltZSB0eXBlIGFyZ3VtZW50IG11c3QgYmUgdmFsaWQgTUlNRSB0eXBlIHN0cmluZyBvciBhcnJheSBvZiBzdWNoIHN0cmluZ3MsIGJ1dCBpbnN0ZWFkIGlzICcgKyAodHlwZW9mIG1pbWVUeXBlcykpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXJyTWltZVR5cGVzLmZvckVhY2goKG1pbWVUeXBlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtdCA9IG1pbWVUeXBlLnNwbGl0KCcvJyk7XG4gICAgICAgICAgICBpZiAobXQubGVuZ3RoICE9PSAyIHx8ICFtdFswXSB8fCAhbXRbMV0pXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGFyZ3VtZW50LiBOb3QgYSB2YWxpZCBNSU1FIHR5cGUgZm9ybWF0IHR5cGUvc3VidHlwZTogJyArIG1pbWVUeXBlKTtcbiAgICAgICAgICAgIC8vIEJhc2ljIGZvcm1hdCBjaGVjayBpcyBzdWZmaWNpZW50XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghdGhpcy5jZmdbbWltZVNldHRpbmdOYW1lXSkge1xuICAgICAgICAgICAgdGhpcy5jZmdbbWltZVNldHRpbmdOYW1lXSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGVkdXBsaWNhdGUgZW50cmllcyBiZWZvcmUgY29uY2F0ZW5hdGlvblxuICAgICAgICBjb25zdCBleGlzdGluZ01pbWVzOiBzdHJpbmdbXSA9IHRoaXMuY2ZnW21pbWVTZXR0aW5nTmFtZV07XG4gICAgICAgIGNvbnN0IG5ld01pbWVUeXBlcyA9IGFyck1pbWVUeXBlcy5maWx0ZXIoKG1pbWVUeXBlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZXhpc3RpbmdNaW1lcy5pbmRleE9mKG1pbWVUeXBlKSA8IDA7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY2ZnW21pbWVTZXR0aW5nTmFtZV0gPSBleGlzdGluZ01pbWVzLmNvbmNhdChuZXdNaW1lVHlwZXMpO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSw2QkFBZ0M7QUF1RXpCLE1BQU0sZUFBZTtBQUFBLEVBQ3hCO0FBQUEsRUFDQTtBQUFBO0FBQUEsRUFDQTtBQUFBO0FBQUE7QUFBQSxFQUdBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU0EsWUFBWSxnQkFBcUIsWUFBaUIsVUFBZSxVQUFlO0FBQzVFLFNBQUssTUFBTSxrQkFBa0IsQ0FBQztBQUM5QixTQUFLLFlBQVk7QUFDakIsU0FBSyxhQUFhO0FBRWxCLFFBQUksVUFBVTtBQUVWLFdBQUssV0FBVyxTQUFTLFNBQVMsS0FBSyxRQUFRO0FBQy9DLFdB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
@@ -38,6 +38,16 @@ function arrayEquals(source, target) {
38
38
  return true;
39
39
  }
40
40
  class Resource {
41
+ /** The URL path for this resource. */
42
+ sPath;
43
+ /** The resource configuration mapping methods to handler specifications. */
44
+ cfg;
45
+ /** The optional controller instance. */
46
+ controller;
47
+ /** Bound execute function from the controller. */
48
+ execute;
49
+ /** Additional mappings object. */
50
+ mappings;
41
51
  /**
42
52
  * @param sPath The base URL path for the resource.
43
53
  * @param oConfiguration Optional configuration object (map of method handlers).
@@ -229,4 +239,4 @@ class Resource {
229
239
  return this;
230
240
  }
231
241
  }
232
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2h0dHAvcnMvcmVzb3VyY2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IGhhbmRsZXJGdW5jdGlvbiB9IGZyb20gXCIuL3Jlc291cmNlLWNvbW1vblwiO1xuaW1wb3J0IHsgUmVzb3VyY2VNZXRob2QgfSBmcm9tIFwiLi9yZXNvdXJjZS1tZXRob2RcIjtcblxuLyoqXG4gKiBDb21wYXJlcyB0d28gYXJyYXlzIGZvciBlcXVhbGl0eSBieSBpbnNwZWN0aW5nIGlmIHRoZXkgYXJlIGFycmF5cywgcmVmZXIgdG8gdGhlIHNhbWUgaW5zdGFuY2UsXG4gKiBoYXZlIHNhbWUgbGVuZ3RoIGFuZCBjb250YWluIGVxdWFsIGNvbXBvbmVudHMgaW4gdGhlIHNhbWUgb3JkZXIuXG4gKlxuICogQHBhcmFtIHNvdXJjZSBUaGUgc291cmNlIGFycmF5IHRvIGNvbXBhcmUgdG8uXG4gKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgYXJyYXkgdG8gY29tcGFyZSB3aXRoLlxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgYXJyYXlzIGFyZSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBhcnJheUVxdWFscyhzb3VyY2U6IGFueVtdIHwgdW5kZWZpbmVkLCB0YXJnZXQ6IGFueVtdIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG5cdGlmIChzb3VyY2UgPT09IHRhcmdldClcblx0XHRyZXR1cm4gdHJ1ZTtcblx0aWYgKCFBcnJheS5pc0FycmF5KHNvdXJjZSkgfHwgIUFycmF5LmlzQXJyYXkodGFyZ2V0KSlcblx0XHRyZXR1cm4gZmFsc2U7XG5cdGlmIChzb3VyY2UgIT09IHVuZGVmaW5lZCAmJiB0YXJnZXQgPT09IHVuZGVmaW5lZCB8fCBzb3VyY2UgPT09IHVuZGVmaW5lZCAmJiB0YXJnZXQgIT09IHVuZGVmaW5lZClcblx0XHRyZXR1cm4gZmFsc2U7XG5cdGlmIChzb3VyY2UubGVuZ3RoICE9PSB0YXJnZXQubGVuZ3RoKVxuXHRcdHJldHVybiBmYWxzZTtcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBzb3VyY2UubGVuZ3RoOyBpKyspIHtcblx0XHRpZiAoc291cmNlW2ldICE9PSB0YXJnZXRbaV0pXG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0cmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogQ29uc3RydWN0cyBhIG5ldyBSZXNvdXJjZSBpbnN0YW5jZSwgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgc3VwcGxpZWQgcGF0aCBwYXJhbWV0ZXIgYW5kIG9wdGlvbmFsbHkgd2l0aCB0aGUgc2Vjb25kLCBjb25maWd1cmF0aW9uIG9iamVjdCBwYXJhbWV0ZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXNvdXJjZSB7XG4gICAgLyoqIFRoZSBVUkwgcGF0aCBmb3IgdGhpcyByZXNvdXJjZS4gKi9cblx0c1BhdGg6IHN0cmluZztcbiAgICAvKiogVGhlIHJlc291cmNlIGNvbmZpZ3VyYXRpb24gbWFwcGluZyBtZXRob2RzIHRvIGhhbmRsZXIgc3BlY2lmaWNhdGlvbnMuICovXG5cdGNmZzogYW55O1xuICAgIC8qKiBUaGUgb3B0aW9uYWwgY29udHJvbGxlciBpbnN0YW5jZS4gKi9cblx0Y29udHJvbGxlcjogYW55O1xuICAgIC8qKiBCb3VuZCBleGVjdXRlIGZ1bmN0aW9uIGZyb20gdGhlIGNvbnRyb2xsZXIuICovXG5cdGV4ZWN1dGU6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgIC8qKiBBZGRpdGlvbmFsIG1hcHBpbmdzIG9iamVjdC4gKi9cblx0bWFwcGluZ3M6IGFueTtcblxuXHQvKipcbiAgICAgKiBAcGFyYW0gc1BhdGggVGhlIGJhc2UgVVJMIHBhdGggZm9yIHRoZSByZXNvdXJjZS5cbiAgICAgKiBAcGFyYW0gb0NvbmZpZ3VyYXRpb24gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvYmplY3QgKG1hcCBvZiBtZXRob2QgaGFuZGxlcnMpLlxuICAgICAqIEBwYXJhbSBjb250cm9sbGVyIE9wdGlvbmFsIGNvbnRyb2xsZXIgaW5zdGFuY2UgY29udGFpbmluZyBhbiBleGVjdXRlIG1ldGhvZC5cbiAgICAgKiBAcGFyYW0gbWFwcGluZ3MgT3B0aW9uYWwgb2JqZWN0IGZvciByZXNvdXJjZSBtYXBwaW5ncy5cbiAgICAgKi9cblx0Y29uc3RydWN0b3Ioc1BhdGg6IHN0cmluZywgb0NvbmZpZ3VyYXRpb24/OiBhbnksIGNvbnRyb2xsZXI/OiBhbnksIG1hcHBpbmdzPzogYW55KSB7XG5cdFx0dGhpcy5zUGF0aCA9IHNQYXRoO1xuXHRcdHRoaXMuY2ZnID0gb0NvbmZpZ3VyYXRpb24gfHwge307XG5cblx0XHRpZiAoY29udHJvbGxlcikge1xuXHRcdFx0dGhpcy5jb250cm9sbGVyID0gY29udHJvbGxlcjtcblx0XHRcdC8vIEJpbmQgdGhlIGNvbnRyb2xsZXIncyBleGVjdXRlIGZ1bmN0aW9uXG5cdFx0XHR0aGlzLmV4ZWN1dGUgPSBjb250cm9sbGVyLmV4ZWN1dGUuYmluZChjb250cm9sbGVyKTtcblx0XHR9XG5cdFx0aWYgKG1hcHBpbmdzKSB7XG5cdFx0XHR0aGlzLm1hcHBpbmdzID0gbWFwcGluZ3M7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG4gICAgICogU2V0cyB0aGUgVVJMIHBhdGggZm9yIHRoaXMgcmVzb3VyY2UsIG92ZXJyaWRpbmcgdGhlIG9uZSBzcGVjaWZpZWQgdXBvbiBpdHMgY29uc3RydWN0aW9uLFxuICAgICAqIGlmIGEgcGF0aCBzdHJpbmcgaXMgcHJvdmlkZWQgYXMgYXJndW1lbnQgb3QgdGhlIG1ldGhvZCAoaS5lLiBhY3RzIGFzIHNldHRlciksXG4gICAgICogb3IgcmV0dXJucyB0aGUgcGF0aCBzZXQgZm9yIHRoaXMgcmVzb3VyY2UsIGlmIHRoZSBtZXRob2QgaXMgaW52b2tlZCB3aXRob3V0IGFyZ3VtZW50cyAoaS5lLiBhY3RzIGFzIGdldHRlcikuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc1BhdGggVGhlIHBhdGggcHJvcGVydHkgdG8gYmUgc2V0IGZvciB0aGlzIHJlc291cmNlLlxuICAgICAqIEByZXR1cm5zIFRoZSByZXNvdXJjZSBpbnN0YW5jZSBmb3IgbWV0aG9kIGNoYWluaW5nIChzZXR0ZXIgbW9kZSksIG9yIHRoZSBwYXRoIHNldCBmb3IgdGhpcyByZXNvdXJjZSAoZ2V0dGVyIG1vZGUpLlxuICAgICAqL1xuXHRwYXRoKHNQYXRoPzogc3RyaW5nKTogUmVzb3VyY2UgfCBzdHJpbmcge1xuXHRcdGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKVxuXHRcdFx0cmV0dXJuIHRoaXMuc1BhdGg7XG5cdFx0dGhpcy5zUGF0aCA9IHNQYXRoITtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgbmV3IEhUVFAgbWV0aG9kIGhhbmRsaW5nIHNwZWNpZmljYXRpb24uXG5cdCAqXG5cdCAqIEBwYXJhbSBzSHR0cE1ldGhvZCBUaGUgSFRUUCBtZXRob2QgKG1ldGhvZCkgKGUuZy4sIFwiR0VUXCIpLlxuXHQgKiBAcGFyYW0gb0NvbmZpZ3VyYXRpb24gVGhlIGhhbmRsZXIgc3BlY2lmaWNhdGlvbihzKSBmb3IgdGhpcyBIVFRQIG1ldGhvZC4gQ2FuIGJlIGEgc2luZ2xlIG9iamVjdCBvciBhcnJheS5cblx0ICogQHJldHVybnMgVGhlIFJlc291cmNlTWV0aG9kIGluc3RhbmNlLCBvciBhbiBhcnJheSBvZiBSZXNvdXJjZU1ldGhvZCBpbnN0YW5jZXMuXG5cdCAqL1xuXHRtZXRob2Qoc0h0dHBNZXRob2Q6IHN0cmluZywgb0NvbmZpZ3VyYXRpb24/OiBhbnkgfCBhbnlbXSk6IFJlc291cmNlTWV0aG9kIHwgUmVzb3VyY2VNZXRob2RbXSB7XG5cdFx0aWYgKHNIdHRwTWV0aG9kID09PSB1bmRlZmluZWQpXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0lsbGVnYWwgc0h0dHBNZXRob2QgYXJndW1lbnQ6ICcgKyBzSHR0cE1ldGhvZCk7XG5cblx0XHRjb25zdCBtZXRob2QgPSBzSHR0cE1ldGhvZC50b0xvd2VyQ2FzZSgpO1xuXG5cdFx0aWYgKCF0aGlzLmNmZ1ttZXRob2RdKVxuXHRcdFx0dGhpcy5jZmdbbWV0aG9kXSA9IFtdO1xuXG5cdFx0bGV0IGFyckNvbmZpZzogYW55W10gPSBvQ29uZmlndXJhdGlvbiB8fCB7fTtcblx0XHRpZiAoIUFycmF5LmlzQXJyYXkoYXJyQ29uZmlnKSkge1xuXHRcdFx0YXJyQ29uZmlnID0gW2FyckNvbmZpZ107XG5cdFx0fVxuXG5cdFx0Y29uc3QgaGFuZGxlcnM6IFJlc291cmNlTWV0aG9kW10gPSBbXTtcblxuXHRcdGFyckNvbmZpZy5mb3JFYWNoKChoYW5kbGVyU3BlYykgPT4ge1xuXHRcdFx0Ly8gVHlwZSBjYXN0aW5nIHRvIGhhbmRsZSBvYmplY3QgcHJvcGVydHkgYWNjZXNzIGZvciBjb25zdW1lcy9wcm9kdWNlc1xuXHRcdFx0Y29uc3QgY29uc3VtZXMgPSAoaGFuZGxlclNwZWMgYXMgeyBjb25zdW1lcz86IHN0cmluZ1tdIH0pLmNvbnN1bWVzO1xuXHRcdFx0Y29uc3QgcHJvZHVjZXMgPSAoaGFuZGxlclNwZWMgYXMgeyBwcm9kdWNlcz86IHN0cmluZ1tdIH0pLnByb2R1Y2VzO1xuXG5cdFx0XHRjb25zdCBfaCA9IHRoaXMuZmluZChzSHR0cE1ldGhvZCwgY29uc3VtZXMsIHByb2R1Y2VzKTtcblx0XHRcdGlmICghX2gpIHtcblx0XHRcdFx0Ly8gY3JlYXRlIG5ld1xuXHRcdFx0XHR0aGlzLmNmZ1ttZXRob2RdLnB1c2goaGFuZGxlclNwZWMpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gdXBkYXRlIGV4aXN0aW5nIHNwZWMgaW4gY2ZnXG5cdFx0XHRcdGNvbnN0IGV4aXN0aW5nU3BlYyA9IHRoaXMuY2ZnW21ldGhvZF0uZmluZChcbiAgICAgICAgICAgICAgICAgICAgKHNwZWM6IGFueSkgPT4gYXJyYXlFcXVhbHMoc3BlYy5jb25zdW1lcywgY29uc3VtZXMpICYmIGFycmF5RXF1YWxzKHNwZWMucHJvZHVjZXMsIHByb2R1Y2VzKVxuICAgICAgICAgICAgICAgICk7XG5cdFx0XHRcdGlmIChleGlzdGluZ1NwZWMpIHtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IHByb3BOYW1lIGluIGhhbmRsZXJTcGVjKSB7XG5cdFx0XHRcdFx0XHRpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGhhbmRsZXJTcGVjLCBwcm9wTmFtZSkpIHtcblx0XHRcdFx0XHRcdFx0ZXhpc3RpbmdTcGVjW3Byb3BOYW1lXSA9IGhhbmRsZXJTcGVjW3Byb3BOYW1lXTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IFJlc291cmNlTWV0aG9kIGluc3RhbmNlIGZvciB0aGUgKHBvdGVudGlhbGx5IHVwZGF0ZWQpIHNwZWNcbiAgICAgICAgICAgIGNvbnN0IGZpbmFsSGFuZGxlclNwZWMgPSB0aGlzLmNmZ1ttZXRob2RdLmZpbmQoXG4gICAgICAgICAgICAgICAgKHNwZWM6IGFueSkgPT4gYXJyYXlFcXVhbHMoc3BlYy5jb25zdW1lcywgY29uc3VtZXMpICYmIGFycmF5RXF1YWxzKHNwZWMucHJvZHVjZXMsIHByb2R1Y2VzKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGZpbmFsSGFuZGxlclNwZWMpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVycy5wdXNoKG5ldyBSZXNvdXJjZU1ldGhvZChmaW5hbEhhbmRsZXJTcGVjLCB0aGlzLmNvbnRyb2xsZXIsIHRoaXMsIHRoaXMubWFwcGluZ3MpKTtcbiAgICAgICAgICAgIH1cblx0XHR9KTtcblxuXHRcdHJldHVybiBoYW5kbGVycy5sZW5ndGggPiAxID8gaGFuZGxlcnMgOiBoYW5kbGVyc1swXTtcblx0fTtcblxuXHQvKipcbiAgICAgKiBJbnRlcm5hbCB1dGlsaXR5IG1ldGhvZCB0byBoYW5kbGUgdGhlIGxvZ2ljIGZvciBIVFRQIHZlcmIgc2hvcnRjdXQgbWV0aG9kcyAoZ2V0LCBwb3N0LCBldGMuKS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzTWV0aG9kTmFtZSBUaGUgSFRUUCBtZXRob2QgbmFtZSAoZS5nLiwgJ2dldCcpLlxuICAgICAqIEBwYXJhbSBhcmdzIFRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBzaG9ydGN1dCBtZXRob2QuXG4gICAgICogQHJldHVybnMgVGhlIFJlc291cmNlTWV0aG9kIGluc3RhbmNlIG9yIGFuIGFycmF5IG9mIGluc3RhbmNlcy5cbiAgICAgKi9cblx0cHJpdmF0ZSBidWlsZE1ldGhvZChzTWV0aG9kTmFtZTogc3RyaW5nLCAuLi5hcmdzOiAoRnVuY3Rpb24gfCBhbnkpW10pOiBSZXNvdXJjZU1ldGhvZCB8IFJlc291cmNlTWV0aG9kW10ge1xuXHRcdGlmIChhcmdzLmxlbmd0aCA+IDApIHtcblx0XHRcdGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHQvLyAuZ2V0KGZ1bmN0aW9uKSAtPiAubWV0aG9kKCdnZXQnKS5zZXJ2ZShmdW5jdGlvbilcbiAgICAgICAgICAgICAgICAvLyBOb3RlOiBXZSBuZWVkIHRvIGNhc3QgdGhlIHJlc3VsdCBvZiBtZXRob2QoKSB0byBhY2Nlc3Mgc2VydmUoKSBhcyBpdCByZXR1cm5zIGEgUmVzb3VyY2VNZXRob2QuXG5cdFx0XHRcdHJldHVybiAodGhpcy5tZXRob2Qoc01ldGhvZE5hbWUpIGFzIFJlc291cmNlTWV0aG9kKS5zZXJ2ZShhcmdzWzBdKTtcblx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGFyZ3NbMF0gPT09ICdvYmplY3QnICYmIGFyZ3NbMF0gIT09IG51bGwpIHtcblx0XHRcdFx0Ly8gLmdldCh7Y29uZmlnfSkgLT4gLm1ldGhvZCgnZ2V0Jywge2NvbmZpZ30pXG5cdFx0XHRcdHJldHVybiB0aGlzLm1ldGhvZChzTWV0aG9kTmFtZSwgYXJnc1swXSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgYXJndW1lbnQ6IFJlc291cmNlLiR7c01ldGhvZE5hbWV9IG1ldGhvZCBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIHZhbGlkIGphdmFzY3JpcHQgZnVuY3Rpb24gb3IgY29uZmlndXJhdGlvbiBvYmplY3QsIGJ1dCBpbnN0ZWFkIGlzICR7dHlwZW9mIGFyZ3NbMF19ICR7YXJnc1swXX1gKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gLmdldCgpIC0+IC5tZXRob2QoJ2dldCcpXG5cdFx0XHRyZXR1cm4gdGhpcy5tZXRob2Qoc01ldGhvZE5hbWUpIGFzIFJlc291cmNlTWV0aG9kO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIGhhbmRsaW5nIHNwZWNpZmljYXRpb24gZm9yIHRoZSBIVFRQIG1ldGhvZCBcIkdFVFwiLlxuXHQgKiBAcGFyYW0gZlNlcnZlQ2J8b0NvbmZpZ3VyYXRpb24gU2VydmUgZnVuY3Rpb24gY2FsbGJhY2sgb3IgY29uZmlndXJhdGlvbiBvYmplY3QgdG8gaW5pdGlhbGl6ZSB0aGUgbWV0aG9kLlxuXHQgKiBAcmV0dXJucyBUaGUgUmVzb3VyY2VNZXRob2QgaW5zdGFuY2Ugb3IgYXJyYXkuXG5cdCAqL1xuXHRnZXQoZlNlcnZlQ2I6IEZ1bmN0aW9uKTogUmVzb3VyY2VNZXRob2Q7XG4gICAgZ2V0KG9Db25maWd1cmF0aW9uOiBhbnkpOiBSZXNvdXJjZU1ldGhvZCB8IFJlc291cmNlTWV0aG9kW107XG4gICAgZ2V0KCk6IFJlc291cmNlTWV0aG9kO1xuXHRnZXQoKTogUmVzb3VyY2VNZXRob2QgfCBSZXNvdXJjZU1ldGhvZFtdIHtcblx0XHRyZXR1cm4gdGhpcy5idWlsZE1ldGhvZCgnZ2V0JywgLi4uYXJndW1lbnRzKTtcblx0fTtcblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIGhhbmRsaW5nIHNwZWNpZmljYXRpb24gZm9yIHRoZSBIVFRQIG1ldGhvZCBcIlBPU1RcIi5cblx0ICogQHBhcmFtIGZTZXJ2ZUNifG9Db25maWd1cmF0aW9uIFNlcnZlIGZ1bmN0aW9uIGNhbGxiYWNrIG9yIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHRvIGluaXRpYWxpemUgdGhlIG1ldGhvZC5cblx0ICogQHJldHVybnMgVGhlIFJlc291cmNlTWV0aG9kIGluc3RhbmNlIG9yIGFycmF5LlxuXHQgKi9cblx0cG9zdChmU2VydmVDYjogRnVuY3Rpb24pOiBSZXNvdXJjZU1ldGhvZDtcbiAgICBwb3N0KG9Db25maWd1cmF0aW9uOiBhbnkpOiBSZXNvdXJjZU1ldGhvZCB8IFJlc291cmNlTWV0aG9kW107XG4gICAgcG9zdCgpOiBSZXNvdXJjZU1ldGhvZDtcblx0cG9zdCgpOiBSZXNvdXJjZU1ldGhvZCB8IFJlc291cmNlTWV0aG9kW10ge1xuXHRcdHJldHVybiB0aGlzLmJ1aWxkTWV0aG9kKCdwb3N0JywgLi4uYXJndW1lbnRzKTtcblx0fTtcblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIGhhbmRsaW5nIHNwZWNpZmljYXRpb24gZm9yIHRoZSBIVFRQIG1ldGhvZCBcIlBVVFwiLlxuXHQgKiBAcGFyYW0gZlNlcnZlQ2J8b0NvbmZpZ3VyYXRpb24gU2VydmUgZnVuY3Rpb24gY2FsbGJhY2sgb3IgY29uZmlndXJhdGlvbiBvYmplY3QgdG8gaW5pdGlhbGl6ZSB0aGUgbWV0aG9kLlxuXHQgKiBAcmV0dXJucyBUaGUgUmVzb3VyY2VNZXRob2QgaW5zdGFuY2Ugb3IgYXJyYXkuXG5cdCAqL1xuXHRwdXQoZlNlcnZlQ2I6IEZ1bmN0aW9uKTogUmVzb3VyY2VNZXRob2Q7XG4gICAgcHV0KG9Db25maWd1cmF0aW9uOiBhbnkpOiBSZXNvdXJjZU1ldGhvZCB8IFJlc291cmNlTWV0aG9kW107XG4gICAgcHV0KCk6IFJlc291cmNlTWV0aG9kO1xuXHRwdXQoKTogUmVzb3VyY2VNZXRob2QgfCBSZXNvdXJjZU1ldGhvZFtdIHtcblx0XHRyZXR1cm4gdGhpcy5idWlsZE1ldGhvZCgncHV0JywgLi4uYXJndW1lbnRzKTtcblx0fTtcblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIGhhbmRsaW5nIHNwZWNpZmljYXRpb24gZm9yIHRoZSBIVFRQIG1ldGhvZCBcIkRFTEVURVwiLlxuXHQgKiBAcGFyYW0gZlNlcnZlQ2J8b0NvbmZpZ3VyYXRpb24gU2VydmUgZnVuY3Rpb24gY2FsbGJhY2sgb3IgY29uZmlndXJhdGlvbiBvYmplY3QgdG8gaW5pdGlhbGl6ZSB0aGUgbWV0aG9kLlxuXHQgKiBAcmV0dXJucyBUaGUgUmVzb3VyY2VNZXRob2QgaW5zdGFuY2Ugb3IgYXJyYXkuXG5cdCAqL1xuXHRkZWxldGUoZlNlcnZlQ2I6IEZ1bmN0aW9uKTogUmVzb3VyY2VNZXRob2Q7XG4gICAgZGVsZXRlKG9Db25maWd1cmF0aW9uOiBhbnkpOiBSZXNvdXJjZU1ldGhvZCB8IFJlc291cmNlTWV0aG9kW107XG4gICAgZGVsZXRlKCk6IFJlc291cmNlTWV0aG9kO1xuXHRkZWxldGUoKTogUmVzb3VyY2VNZXRob2QgfCBSZXNvdXJjZU1ldGhvZFtdIHtcblx0XHRyZXR1cm4gdGhpcy5idWlsZE1ldGhvZCgnZGVsZXRlJywgLi4uYXJndW1lbnRzKTtcblx0fTtcblxuICAgIC8qKlxuXHQgKiBDcmVhdGVzIGEgaGFuZGxpbmcgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIEhUVFAgbWV0aG9kIFwiREVMRVRFXCIgKGFsaWFzIGZvciBkZWxldGUoKSkuXG5cdCAqIEBwYXJhbSBmU2VydmVDYnxvQ29uZmlndXJhdGlvbiBTZXJ2ZSBmdW5jdGlvbiBjYWxsYmFjayBvciBjb25maWd1cmF0aW9uIG9iamVjdCB0byBpbml0aWFsaXplIHRoZSBtZXRob2QuXG5cdCAqIEByZXR1cm5zIFRoZSBSZXNvdXJjZU1ldGhvZCBpbnN0YW5jZSBvciBhcnJheS5cblx0ICovXG4gICAgcmVtb3ZlKGZTZXJ2ZUNiOiBGdW5jdGlvbik6IFJlc291cmNlTWV0aG9kO1xuICAgIHJlbW92ZShvQ29uZmlndXJhdGlvbjogYW55KTogUmVzb3VyY2VNZXRob2QgfCBSZXNvdXJjZU1ldGhvZFtdO1xuICAgIHJlbW92ZSgpOiBSZXNvdXJjZU1ldGhvZDtcblx0cmVtb3ZlKCk6IFJlc291cmNlTWV0aG9kIHwgUmVzb3VyY2VNZXRob2RbXSB7XG5cdFx0cmV0dXJuIHRoaXMuYnVpbGRNZXRob2QoJ2RlbGV0ZScsIC4uLmFyZ3VtZW50cyk7XG5cdH1cblxuXHQvKipcblx0ICogRmluZHMgYSBSZXNvdXJjZU1ldGhvZCB3aXRoIHRoZSBnaXZlbiBjb25zdHJhaW50cy5cblx0ICpcblx0ICogQHBhcmFtIHNWZXJiIFRoZSBuYW1lIG9mIHRoZSBtZXRob2QgcHJvcGVydHkgb2YgdGhlIFJlc291cmNlTWV0aG9kIGluIHNlYXJjaCAoZS5nLiwgXCJHRVRcIikuXG5cdCAqIEBwYXJhbSBhcnJDb25zdW1lc01pbWVUeXBlU3RyaW5ncyBUaGUgY29uc3VtZXMgY29uc3RyYWludCBwcm9wZXJ0eSBvZiB0aGUgUmVzb3VyY2VNZXRob2QgaW4gc2VhcmNoLlxuXHQgKiBAcGFyYW0gYXJyUHJvZHVjZXNNaW1lVHlwZVN0cmluZ3MgVGhlIHByb2R1Y2VzIGNvbnN0cmFpbnQgcHJvcGVydHkgb2YgdGhlIFJlc291cmNlTWV0aG9kIGluIHNlYXJjaC5cblx0ICogQHJldHVybnMgVGhlIGZvdW5kIFJlc291cmNlTWV0aG9kIGluc3RhbmNlLCBvciB1bmRlZmluZWQgaWYgbm90IGZvdW5kLlxuXHQgKi9cblx0ZmluZChzVmVyYjogc3RyaW5nLCBhcnJDb25zdW1lc01pbWVUeXBlU3RyaW5ncz86IHN0cmluZ1tdLCBhcnJQcm9kdWNlc01pbWVUeXBlU3RyaW5ncz86IHN0cmluZ1tdKTogUmVzb3VyY2VNZXRob2QgfCB1bmRlZmluZWQge1xuXHRcdGxldCBoaXQ6IFJlc291cmNlTWV0aG9kIHwgdW5kZWZpbmVkO1xuXHRcdGNvbnN0IHNWZXJiTG93ZXIgPSBzVmVyYi50b0xvd2VyQ2FzZSgpO1xuXG5cdFx0T2JqZWN0LmtleXModGhpcy5jZmcpXG4gICAgICAgICAgICAuZmlsdGVyKChzVmVyYk5hbWUpID0+IHNWZXJiTmFtZSA9PT0gc1ZlcmJMb3dlcilcbiAgICAgICAgICAgIC5mb3JFYWNoKChzVmVyYk5hbWUpID0+IHtcblx0XHRcdCAgICB0aGlzLmNmZ1tzVmVyYk5hbWVdLmZvckVhY2goKHZlcmJIYW5kbGVyU3BlYzogYW55KSA9PiB7XG5cdFx0XHRcdCAgICBpZiAoYXJyYXlFcXVhbHModmVyYkhhbmRsZXJTcGVjLmNvbnN1bWVzLCBhcnJDb25zdW1lc01pbWVUeXBlU3RyaW5ncykgJiYgYXJyYXlFcXVhbHModmVyYkhhbmRsZXJTcGVjLnByb2R1Y2VzLCBhcnJQcm9kdWNlc01pbWVUeXBlU3RyaW5ncykpIHtcblx0XHRcdFx0XHQgICAgaGl0ID0gbmV3IFJlc291cmNlTWV0aG9kKHZlcmJIYW5kbGVyU3BlYywgdGhpcy5jb250cm9sbGVyLCB0aGlzLCB0aGlzLm1hcHBpbmdzKTtcblx0XHRcdFx0XHQgICAgcmV0dXJuO1xuXHRcdFx0XHQgICAgfVxuXHRcdFx0ICAgIH0pO1xuXHRcdFx0ICAgIGlmIChoaXQpXG5cdFx0XHRcdCAgICByZXR1cm47XG5cdFx0fSk7XG5cdFx0cmV0dXJuIGhpdDtcblx0fTtcblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGlzIHJlc291cmNlLlxuXHQgKlxuXHQgKiBAcmV0dXJucyBUaGUgcmVzb3VyY2UgY29uZmlndXJhdGlvbiBvYmplY3QuXG5cdCAqL1xuXHRjb25maWd1cmF0aW9uKCk6IGFueSB7XG5cdFx0cmV0dXJuIHRoaXMuY2ZnO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBJbnN0cnVjdHMgcmVkaXJlY3Rpb24gb2YgdGhlIHJlcXVlc3QgYmFzZSBkb24gdGhlIHBhcmFtZXRlci4gSWYgaXQgaXMgYSBzdGlybmcgcmVwcmVzZW50aW5nIFVSSSwgdGhlIHJlcXVlc3Qgd2lsbCBiZVxuXHQgKiByZWRpcmVjdGVkIHRvIHRoaXMgVVJJIGZvciBhbnkgbWV0aG9kLiBJZiBpdCdzIGEgZnVuY3Rpb24gaXQgd2lsbCBiZSBpbnZva2VkIGFuZCBlcHhlY3RlZCB0byByZXR1cm4gYSBVUkkgc3RyaW5nIHRvIHJlZGlyZWN0IHRvLlxuXHQgKlxuXHQgKiBAcGFyYW0gZlJlZGlyZWN0b3IgVGhlIGZ1bmN0aW9uIG9yIHN0cmluZyBVUkkgdG8gcmVkaXJlY3QgdG8uXG4gICAgICogQHJldHVybnMgVGhlIHJlc291cmNlIGluc3RhbmNlIGZvciBtZXRob2QgY2hhaW5pbmcuXG5cdCAqL1xuXHRyZWRpcmVjdChmUmVkaXJlY3Rvcjogc3RyaW5nIHwgRnVuY3Rpb24pOiBSZXNvdXJjZSB7XG5cdFx0aWYgKHR5cGVvZiBmUmVkaXJlY3RvciA9PT0gJ3N0cmluZycpIHtcblx0XHRcdGNvbnN0IHJlZGlyZWN0VXJpID0gZlJlZGlyZWN0b3I7XG5cdFx0XHRmUmVkaXJlY3RvciA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0cmV0dXJuIHJlZGlyZWN0VXJpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQvLyBUaGUgaW1wb3J0ZWQgaGFuZGxlckZ1bmN0aW9uIGlzIHVzZWQgaGVyZVxuXHRcdHJldHVybiBoYW5kbGVyRnVuY3Rpb24odGhpcywgdGhpcy5jb25maWd1cmF0aW9uKCksICdyZWRpcmVjdCcsIGZSZWRpcmVjdG9yKTtcblx0fTtcblxuXHQvKipcblx0ICogRGlzYWJsZXMgdGhlIFJlc291cmNlTWV0aG9kcyB0aGF0IG1hdGNoIHRoZSBnaXZlbiBjb25zdHJhaW50c1xuICAgICAqXG4gICAgICogQHBhcmFtIHNWZXJiIFRoZSBIVFRQIHZlcmIgKGUuZy4sIFwiR0VUXCIpLlxuXHQgKiBAcGFyYW0gYXJyQ29uc3VtZXNUeXBlU3RyaW5ncyBUaGUgY29uc3VtZXMgY29uc3RyYWludCBwcm9wZXJ0eSBvZiB0aGUgUmVzb3VyY2VNZXRob2QgaW4gc2VhcmNoLlxuXHQgKiBAcGFyYW0gYXJyUHJvZHVjZXNUeXBlU3RyaW5ncyBUaGUgcHJvZHVjZXMgY29uc3RyYWludCBwcm9wZXJ0eSBvZiB0aGUgUmVzb3VyY2VNZXRob2QgaW4gc2VhcmNoLlxuICAgICAqIEByZXR1cm5zIFRoZSByZXNvdXJjZSBpbnN0YW5jZSBmb3IgbWV0aG9kIGNoYWluaW5nLlxuXHQgKi9cblx0ZGlzYWJsZShzVmVyYj86IHN0cmluZywgYXJyQ29uc3VtZXNUeXBlU3RyaW5ncz86IHN0cmluZ1tdLCBhcnJQcm9kdWNlc1R5cGVTdHJpbmdzPzogc3RyaW5nW10pOiBSZXNvdXJjZSB7XG5cdFx0T2JqZWN0LmtleXModGhpcy5jZmcpXG4gICAgICAgICAgICAuZmlsdGVyKChzVmVyYk5hbWUpID0+IHNWZXJiID09PSB1bmRlZmluZWQgfHwgKHNWZXJiICYmIHNWZXJiLnRvTG93ZXJDYXNlKCkgPT09IHNWZXJiTmFtZSkpXG4gICAgICAgICAgICAuZm9yRWFjaCgoc1ZlcmJOYW1lKSA9PiB7XG5cdFx0XHQgICAgLy8gVXNlIGEgcmV2ZXJzZSBsb29wIGZvciBzYWZlIHNwbGljaW5nXG5cdFx0XHQgICAgZm9yIChsZXQgaSA9IHRoaXMuY2ZnW3NWZXJiTmFtZV0ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVyYkhhbmRsZXJTcGVjID0gdGhpcy5jZmdbc1ZlcmJOYW1lXVtpXTtcblx0XHRcdFx0ICAgIGlmIChhcnJheUVxdWFscyh2ZXJiSGFuZGxlclNwZWMuY29uc3VtZXMsIGFyckNvbnN1bWVzVHlwZVN0cmluZ3MpICYmIGFycmF5RXF1YWxzKHZlcmJIYW5kbGVyU3BlYy5wcm9kdWNlcywgYXJyUHJvZHVjZXNUeXBlU3RyaW5ncykpIHtcblx0XHRcdFx0XHQgICAgdGhpcy5jZmdbc1ZlcmJOYW1lXS5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0LyoqXG5cdCAqIERpc2FibGVzIGFsbCBidXQgJ3JlYWQnIEhUVFAgbWV0aG9kcyBpbiB0aGlzIHJlc291cmNlIChHRVQsIEhFQUQsIFRSQUNFKS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSByZXNvdXJjZSBpbnN0YW5jZSBmb3IgbWV0aG9kIGNoYWluaW5nLlxuXHQgKi9cblx0cmVhZG9ubHkoKTogUmVzb3VyY2Uge1xuXHRcdE9iamVjdC5rZXlzKHRoaXMuY2ZnKS5mb3JFYWNoKChtZXRob2QpID0+IHtcblx0XHRcdGlmICghWydnZXQnLCAnaGVhZCcsICd0cmFjZSddLmluY2x1ZGVzKG1ldGhvZCkpIHtcblx0XHRcdFx0ZGVsZXRlIHRoaXMuY2ZnW21ldGhvZF07XG4gICAgICAgICAgICB9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG59Il0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsNkJBQWdDO0FBQ2hDLDZCQUErQjtBQVUvQixTQUFTLFlBQVksUUFBMkIsUUFBb0M7QUFDbkYsTUFBSSxXQUFXO0FBQ2QsV0FBTztBQUNSLE1BQUksQ0FBQyxNQUFNLFFBQVEsTUFBTSxLQUFLLENBQUMsTUFBTSxRQUFRLE1BQU07QUFDbEQsV0FBTztBQUNSLE1BQUksV0FBVyxVQUFhLFdBQVcsVUFBYSxXQUFXLFVBQWEsV0FBVztBQUN0RixXQUFPO0FBQ1IsTUFBSSxPQUFPLFdBQVcsT0FBTztBQUM1QixXQUFPO0FBQ1IsV0FBUyxJQUFJLEdBQUcsSUFBSSxPQUFPLFFBQVEsS0FBSztBQUN2QyxRQUFJLE9BQU8sQ0FBQyxNQUFNLE9BQU8sQ0FBQztBQUN6QixhQUFPO0FBQUEsRUFDVDtBQUNBLFNBQU87QUFDUjtBQUtPLE1BQU0sU0FBUztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBa0JyQixZQUFZLE9BQWUsZ0JBQXNCLFlBQWtCLFVBQWdCO0FBQ2xGLFNBQUssUUFBUTtBQUNiLFNBQUssTUFBTSxrQkFBa0IsQ0FBQztBQUU5QixRQUFJLFlBQVk7QUFDZixXQUFLLGFBQWE7QUFFbEIsV0FBSyxVQUFVLFdBQVcsUUFBUSxLQUFLLFVBQVU7QUFBQSxJQUNsRDtBQUNBLFFBQUksVUFBVTtBQUNiLFdBQUssV0FBVztBQUFBLElBQ2pCO0FBQUEsRUFDRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFB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
242
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2h0dHAvcnMvcmVzb3VyY2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IGhhbmRsZXJGdW5jdGlvbiB9IGZyb20gXCIuL3Jlc291cmNlLWNvbW1vblwiO1xuaW1wb3J0IHsgUmVzb3VyY2VNZXRob2QgfSBmcm9tIFwiLi9yZXNvdXJjZS1tZXRob2RcIjtcblxuLyoqXG4gKiBDb21wYXJlcyB0d28gYXJyYXlzIGZvciBlcXVhbGl0eSBieSBpbnNwZWN0aW5nIGlmIHRoZXkgYXJlIGFycmF5cywgcmVmZXIgdG8gdGhlIHNhbWUgaW5zdGFuY2UsXG4gKiBoYXZlIHNhbWUgbGVuZ3RoIGFuZCBjb250YWluIGVxdWFsIGNvbXBvbmVudHMgaW4gdGhlIHNhbWUgb3JkZXIuXG4gKlxuICogQHBhcmFtIHNvdXJjZSBUaGUgc291cmNlIGFycmF5IHRvIGNvbXBhcmUgdG8uXG4gKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgYXJyYXkgdG8gY29tcGFyZSB3aXRoLlxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgYXJyYXlzIGFyZSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBhcnJheUVxdWFscyhzb3VyY2U6IGFueVtdIHwgdW5kZWZpbmVkLCB0YXJnZXQ6IGFueVtdIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG5cdGlmIChzb3VyY2UgPT09IHRhcmdldClcblx0XHRyZXR1cm4gdHJ1ZTtcblx0aWYgKCFBcnJheS5pc0FycmF5KHNvdXJjZSkgfHwgIUFycmF5LmlzQXJyYXkodGFyZ2V0KSlcblx0XHRyZXR1cm4gZmFsc2U7XG5cdGlmIChzb3VyY2UgIT09IHVuZGVmaW5lZCAmJiB0YXJnZXQgPT09IHVuZGVmaW5lZCB8fCBzb3VyY2UgPT09IHVuZGVmaW5lZCAmJiB0YXJnZXQgIT09IHVuZGVmaW5lZClcblx0XHRyZXR1cm4gZmFsc2U7XG5cdGlmIChzb3VyY2UubGVuZ3RoICE9PSB0YXJnZXQubGVuZ3RoKVxuXHRcdHJldHVybiBmYWxzZTtcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBzb3VyY2UubGVuZ3RoOyBpKyspIHtcblx0XHRpZiAoc291cmNlW2ldICE9PSB0YXJnZXRbaV0pXG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0cmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogQ29uc3RydWN0cyBhIG5ldyBSZXNvdXJjZSBpbnN0YW5jZSwgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgc3VwcGxpZWQgcGF0aCBwYXJhbWV0ZXIgYW5kIG9wdGlvbmFsbHkgd2l0aCB0aGUgc2Vjb25kLCBjb25maWd1cmF0aW9uIG9iamVjdCBwYXJhbWV0ZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXNvdXJjZSB7XG4gICAgLyoqIFRoZSBVUkwgcGF0aCBmb3IgdGhpcyByZXNvdXJjZS4gKi9cblx0c1BhdGg6IHN0cmluZztcbiAgICAvKiogVGhlIHJlc291cmNlIGNvbmZpZ3VyYXRpb24gbWFwcGluZyBtZXRob2RzIHRvIGhhbmRsZXIgc3BlY2lmaWNhdGlvbnMuICovXG5cdGNmZzogYW55O1xuICAgIC8qKiBUaGUgb3B0aW9uYWwgY29udHJvbGxlciBpbnN0YW5jZS4gKi9cblx0Y29udHJvbGxlcjogYW55O1xuICAgIC8qKiBCb3VuZCBleGVjdXRlIGZ1bmN0aW9uIGZyb20gdGhlIGNvbnRyb2xsZXIuICovXG5cdGV4ZWN1dGU6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgIC8qKiBBZGRpdGlvbmFsIG1hcHBpbmdzIG9iamVjdC4gKi9cblx0bWFwcGluZ3M6IGFueTtcblxuXHQvKipcbiAgICAgKiBAcGFyYW0gc1BhdGggVGhlIGJhc2UgVVJMIHBhdGggZm9yIHRoZSByZXNvdXJjZS5cbiAgICAgKiBAcGFyYW0gb0NvbmZpZ3VyYXRpb24gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvYmplY3QgKG1hcCBvZiBtZXRob2QgaGFuZGxlcnMpLlxuICAgICAqIEBwYXJhbSBjb250cm9sbGVyIE9wdGlvbmFsIGNvbnRyb2xsZXIgaW5zdGFuY2UgY29udGFpbmluZyBhbiBleGVjdXRlIG1ldGhvZC5cbiAgICAgKiBAcGFyYW0gbWFwcGluZ3MgT3B0aW9uYWwgb2JqZWN0IGZvciByZXNvdXJjZSBtYXBwaW5ncy5cbiAgICAgKi9cblx0Y29uc3RydWN0b3Ioc1BhdGg6IHN0cmluZywgb0NvbmZpZ3VyYXRpb24/OiBhbnksIGNvbnRyb2xsZXI/OiBhbnksIG1hcHBpbmdzPzogYW55KSB7XG5cdFx0dGhpcy5zUGF0aCA9IHNQYXRoO1xuXHRcdHRoaXMuY2ZnID0gb0NvbmZpZ3VyYXRpb24gfHwge307XG5cblx0XHRpZiAoY29udHJvbGxlcikge1xuXHRcdFx0dGhpcy5jb250cm9sbGVyID0gY29udHJvbGxlcjtcblx0XHRcdC8vIEJpbmQgdGhlIGNvbnRyb2xsZXIncyBleGVjdXRlIGZ1bmN0aW9uXG5cdFx0XHR0aGlzLmV4ZWN1dGUgPSBjb250cm9sbGVyLmV4ZWN1dGUuYmluZChjb250cm9sbGVyKTtcblx0XHR9XG5cdFx0aWYgKG1hcHBpbmdzKSB7XG5cdFx0XHR0aGlzLm1hcHBpbmdzID0gbWFwcGluZ3M7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG4gICAgICogU2V0cyB0aGUgVVJMIHBhdGggZm9yIHRoaXMgcmVzb3VyY2UsIG92ZXJyaWRpbmcgdGhlIG9uZSBzcGVjaWZpZWQgdXBvbiBpdHMgY29uc3RydWN0aW9uLFxuICAgICAqIGlmIGEgcGF0aCBzdHJpbmcgaXMgcHJvdmlkZWQgYXMgYXJndW1lbnQgb3QgdGhlIG1ldGhvZCAoaS5lLiBhY3RzIGFzIHNldHRlciksXG4gICAgICogb3IgcmV0dXJucyB0aGUgcGF0aCBzZXQgZm9yIHRoaXMgcmVzb3VyY2UsIGlmIHRoZSBtZXRob2QgaXMgaW52b2tlZCB3aXRob3V0IGFyZ3VtZW50cyAoaS5lLiBhY3RzIGFzIGdldHRlcikuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc1BhdGggVGhlIHBhdGggcHJvcGVydHkgdG8gYmUgc2V0IGZvciB0aGlzIHJlc291cmNlLlxuICAgICAqIEByZXR1cm5zIFRoZSByZXNvdXJjZSBpbnN0YW5jZSBmb3IgbWV0aG9kIGNoYWluaW5nIChzZXR0ZXIgbW9kZSksIG9yIHRoZSBwYXRoIHNldCBmb3IgdGhpcyByZXNvdXJjZSAoZ2V0dGVyIG1vZGUpLlxuICAgICAqL1xuXHRwYXRoKHNQYXRoPzogc3RyaW5nKTogUmVzb3VyY2UgfCBzdHJpbmcge1xuXHRcdGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKVxuXHRcdFx0cmV0dXJuIHRoaXMuc1BhdGg7XG5cdFx0dGhpcy5zUGF0aCA9IHNQYXRoITtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgbmV3IEhUVFAgbWV0aG9kIGhhbmRsaW5nIHNwZWNpZmljYXRpb24uXG5cdCAqXG5cdCAqIEBwYXJhbSBzSHR0cE1ldGhvZCBUaGUgSFRUUCBtZXRob2QgKG1ldGhvZCkgKGUuZy4sIFwiR0VUXCIpLlxuXHQgKiBAcGFyYW0gb0NvbmZpZ3VyYXRpb24gVGhlIGhhbmRsZXIgc3BlY2lmaWNhdGlvbihzKSBmb3IgdGhpcyBIVFRQIG1ldGhvZC4gQ2FuIGJlIGEgc2luZ2xlIG9iamVjdCBvciBhcnJheS5cblx0ICogQHJldHVybnMgVGhlIFJlc291cmNlTWV0aG9kIGluc3RhbmNlLCBvciBhbiBhcnJheSBvZiBSZXNvdXJjZU1ldGhvZCBpbnN0YW5jZXMuXG5cdCAqL1xuXHRtZXRob2Qoc0h0dHBNZXRob2Q6IHN0cmluZywgb0NvbmZpZ3VyYXRpb24/OiBhbnkgfCBhbnlbXSk6IFJlc291cmNlTWV0aG9kIHwgUmVzb3VyY2VNZXRob2RbXSB7XG5cdFx0aWYgKHNIdHRwTWV0aG9kID09PSB1bmRlZmluZWQpXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0lsbGVnYWwgc0h0dHBNZXRob2QgYXJndW1lbnQ6ICcgKyBzSHR0cE1ldGhvZCk7XG5cblx0XHRjb25zdCBtZXRob2QgPSBzSHR0cE1ldGhvZC50b0xvd2VyQ2FzZSgpO1xuXG5cdFx0aWYgKCF0aGlzLmNmZ1ttZXRob2RdKVxuXHRcdFx0dGhpcy5jZmdbbWV0aG9kXSA9IFtdO1xuXG5cdFx0bGV0IGFyckNvbmZpZzogYW55W10gPSBvQ29uZmlndXJhdGlvbiB8fCB7fTtcblx0XHRpZiAoIUFycmF5LmlzQXJyYXkoYXJyQ29uZmlnKSkge1xuXHRcdFx0YXJyQ29uZmlnID0gW2FyckNvbmZpZ107XG5cdFx0fVxuXG5cdFx0Y29uc3QgaGFuZGxlcnM6IFJlc291cmNlTWV0aG9kW10gPSBbXTtcblxuXHRcdGFyckNvbmZpZy5mb3JFYWNoKChoYW5kbGVyU3BlYykgPT4ge1xuXHRcdFx0Ly8gVHlwZSBjYXN0aW5nIHRvIGhhbmRsZSBvYmplY3QgcHJvcGVydHkgYWNjZXNzIGZvciBjb25zdW1lcy9wcm9kdWNlc1xuXHRcdFx0Y29uc3QgY29uc3VtZXMgPSAoaGFuZGxlclNwZWMgYXMgeyBjb25zdW1lcz86IHN0cmluZ1tdIH0pLmNvbnN1bWVzO1xuXHRcdFx0Y29uc3QgcHJvZHVjZXMgPSAoaGFuZGxlclNwZWMgYXMgeyBwcm9kdWNlcz86IHN0cmluZ1tdIH0pLnByb2R1Y2VzO1xuXG5cdFx0XHRjb25zdCBfaCA9IHRoaXMuZmluZChzSHR0cE1ldGhvZCwgY29uc3VtZXMsIHByb2R1Y2VzKTtcblx0XHRcdGlmICghX2gpIHtcblx0XHRcdFx0Ly8gY3JlYXRlIG5ld1xuXHRcdFx0XHR0aGlzLmNmZ1ttZXRob2RdLnB1c2goaGFuZGxlclNwZWMpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gdXBkYXRlIGV4aXN0aW5nIHNwZWMgaW4gY2ZnXG5cdFx0XHRcdGNvbnN0IGV4aXN0aW5nU3BlYyA9IHRoaXMuY2ZnW21ldGhvZF0uZmluZChcbiAgICAgICAgICAgICAgICAgICAgKHNwZWM6IGFueSkgPT4gYXJyYXlFcXVhbHMoc3BlYy5jb25zdW1lcywgY29uc3VtZXMpICYmIGFycmF5RXF1YWxzKHNwZWMucHJvZHVjZXMsIHByb2R1Y2VzKVxuICAgICAgICAgICAgICAgICk7XG5cdFx0XHRcdGlmIChleGlzdGluZ1NwZWMpIHtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IHByb3BOYW1lIGluIGhhbmRsZXJTcGVjKSB7XG5cdFx0XHRcdFx0XHRpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGhhbmRsZXJTcGVjLCBwcm9wTmFtZSkpIHtcblx0XHRcdFx0XHRcdFx0ZXhpc3RpbmdTcGVjW3Byb3BOYW1lXSA9IGhhbmRsZXJTcGVjW3Byb3BOYW1lXTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IFJlc291cmNlTWV0aG9kIGluc3RhbmNlIGZvciB0aGUgKHBvdGVudGlhbGx5IHVwZGF0ZWQpIHNwZWNcbiAgICAgICAgICAgIGNvbnN0IGZpbmFsSGFuZGxlclNwZWMgPSB0aGlzLmNmZ1ttZXRob2RdLmZpbmQoXG4gICAgICAgICAgICAgICAgKHNwZWM6IGFueSkgPT4gYXJyYXlFcXVhbHMoc3BlYy5jb25zdW1lcywgY29uc3VtZXMpICYmIGFycmF5RXF1YWxzKHNwZWMucHJvZHVjZXMsIHByb2R1Y2VzKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGZpbmFsSGFuZGxlclNwZWMpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVycy5wdXNoKG5ldyBSZXNvdXJjZU1ldGhvZChmaW5hbEhhbmRsZXJTcGVjLCB0aGlzLmNvbnRyb2xsZXIsIHRoaXMsIHRoaXMubWFwcGluZ3MpKTtcbiAgICAgICAgICAgIH1cblx0XHR9KTtcblxuXHRcdHJldHVybiBoYW5kbGVycy5sZW5ndGggPiAxID8gaGFuZGxlcnMgOiBoYW5kbGVyc1swXTtcblx0fTtcblxuXHQvKipcbiAgICAgKiBJbnRlcm5hbCB1dGlsaXR5IG1ldGhvZCB0byBoYW5kbGUgdGhlIGxvZ2ljIGZvciBIVFRQIHZlcmIgc2hvcnRjdXQgbWV0aG9kcyAoZ2V0LCBwb3N0LCBldGMuKS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzTWV0aG9kTmFtZSBUaGUgSFRUUCBtZXRob2QgbmFtZSAoZS5nLiwgJ2dldCcpLlxuICAgICAqIEBwYXJhbSBhcmdzIFRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBzaG9ydGN1dCBtZXRob2QuXG4gICAgICogQHJldHVybnMgVGhlIFJlc291cmNlTWV0aG9kIGluc3RhbmNlIG9yIGFuIGFycmF5IG9mIGluc3RhbmNlcy5cbiAgICAgKi9cblx0cHJpdmF0ZSBidWlsZE1ldGhvZChzTWV0aG9kTmFtZTogc3RyaW5nLCAuLi5hcmdzOiAoRnVuY3Rpb24gfCBhbnkpW10pOiBSZXNvdXJjZU1ldGhvZCB8IFJlc291cmNlTWV0aG9kW10ge1xuXHRcdGlmIChhcmdzLmxlbmd0aCA+IDApIHtcblx0XHRcdGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHQvLyAuZ2V0KGZ1bmN0aW9uKSAtPiAubWV0aG9kKCdnZXQnKS5zZXJ2ZShmdW5jdGlvbilcbiAgICAgICAgICAgICAgICAvLyBOb3RlOiBXZSBuZWVkIHRvIGNhc3QgdGhlIHJlc3VsdCBvZiBtZXRob2QoKSB0byBhY2Nlc3Mgc2VydmUoKSBhcyBpdCByZXR1cm5zIGEgUmVzb3VyY2VNZXRob2QuXG5cdFx0XHRcdHJldHVybiAodGhpcy5tZXRob2Qoc01ldGhvZE5hbWUpIGFzIFJlc291cmNlTWV0aG9kKS5zZXJ2ZShhcmdzWzBdKTtcblx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGFyZ3NbMF0gPT09ICdvYmplY3QnICYmIGFyZ3NbMF0gIT09IG51bGwpIHtcblx0XHRcdFx0Ly8gLmdldCh7Y29uZmlnfSkgLT4gLm1ldGhvZCgnZ2V0Jywge2NvbmZpZ30pXG5cdFx0XHRcdHJldHVybiB0aGlzLm1ldGhvZChzTWV0aG9kTmFtZSwgYXJnc1swXSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgYXJndW1lbnQ6IFJlc291cmNlLiR7c01ldGhvZE5hbWV9IG1ldGhvZCBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIHZhbGlkIGphdmFzY3JpcHQgZnVuY3Rpb24gb3IgY29uZmlndXJhdGlvbiBvYmplY3QsIGJ1dCBpbnN0ZWFkIGlzICR7dHlwZW9mIGFyZ3NbMF19ICR7YXJnc1swXX1gKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gLmdldCgpIC0+IC5tZXRob2QoJ2dldCcpXG5cdFx0XHRyZXR1cm4gdGhpcy5tZXRob2Qoc01ldGhvZE5hbWUpIGFzIFJlc291cmNlTWV0aG9kO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIGhhbmRsaW5nIHNwZWNpZmljYXRpb24gZm9yIHRoZSBIVFRQIG1ldGhvZCBcIkdFVFwiLlxuXHQgKiBAcGFyYW0gZlNlcnZlQ2J8b0NvbmZpZ3VyYXRpb24gU2VydmUgZnVuY3Rpb24gY2FsbGJhY2sgb3IgY29uZmlndXJhdGlvbiBvYmplY3QgdG8gaW5pdGlhbGl6ZSB0aGUgbWV0aG9kLlxuXHQgKiBAcmV0dXJucyBUaGUgUmVzb3VyY2VNZXRob2QgaW5zdGFuY2Ugb3IgYXJyYXkuXG5cdCAqL1xuXHRnZXQoZlNlcnZlQ2I6IEZ1bmN0aW9uKTogUmVzb3VyY2VNZXRob2Q7XG4gICAgZ2V0KG9Db25maWd1cmF0aW9uOiBhbnkpOiBSZXNvdXJjZU1ldGhvZCB8IFJlc291cmNlTWV0aG9kW107XG4gICAgZ2V0KCk6IFJlc291cmNlTWV0aG9kO1xuXHRnZXQoKTogUmVzb3VyY2VNZXRob2QgfCBSZXNvdXJjZU1ldGhvZFtdIHtcblx0XHRyZXR1cm4gdGhpcy5idWlsZE1ldGhvZCgnZ2V0JywgLi4uYXJndW1lbnRzKTtcblx0fTtcblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIGhhbmRsaW5nIHNwZWNpZmljYXRpb24gZm9yIHRoZSBIVFRQIG1ldGhvZCBcIlBPU1RcIi5cblx0ICogQHBhcmFtIGZTZXJ2ZUNifG9Db25maWd1cmF0aW9uIFNlcnZlIGZ1bmN0aW9uIGNhbGxiYWNrIG9yIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHRvIGluaXRpYWxpemUgdGhlIG1ldGhvZC5cblx0ICogQHJldHVybnMgVGhlIFJlc291cmNlTWV0aG9kIGluc3RhbmNlIG9yIGFycmF5LlxuXHQgKi9cblx0cG9zdChmU2VydmVDYjogRnVuY3Rpb24pOiBSZXNvdXJjZU1ldGhvZDtcbiAgICBwb3N0KG9Db25maWd1cmF0aW9uOiBhbnkpOiBSZXNvdXJjZU1ldGhvZCB8IFJlc291cmNlTWV0aG9kW107XG4gICAgcG9zdCgpOiBSZXNvdXJjZU1ldGhvZDtcblx0cG9zdCgpOiBSZXNvdXJjZU1ldGhvZCB8IFJlc291cmNlTWV0aG9kW10ge1xuXHRcdHJldHVybiB0aGlzLmJ1aWxkTWV0aG9kKCdwb3N0JywgLi4uYXJndW1lbnRzKTtcblx0fTtcblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIGhhbmRsaW5nIHNwZWNpZmljYXRpb24gZm9yIHRoZSBIVFRQIG1ldGhvZCBcIlBVVFwiLlxuXHQgKiBAcGFyYW0gZlNlcnZlQ2J8b0NvbmZpZ3VyYXRpb24gU2VydmUgZnVuY3Rpb24gY2FsbGJhY2sgb3IgY29uZmlndXJhdGlvbiBvYmplY3QgdG8gaW5pdGlhbGl6ZSB0aGUgbWV0aG9kLlxuXHQgKiBAcmV0dXJucyBUaGUgUmVzb3VyY2VNZXRob2QgaW5zdGFuY2Ugb3IgYXJyYXkuXG5cdCAqL1xuXHRwdXQoZlNlcnZlQ2I6IEZ1bmN0aW9uKTogUmVzb3VyY2VNZXRob2Q7XG4gICAgcHV0KG9Db25maWd1cmF0aW9uOiBhbnkpOiBSZXNvdXJjZU1ldGhvZCB8IFJlc291cmNlTWV0aG9kW107XG4gICAgcHV0KCk6IFJlc291cmNlTWV0aG9kO1xuXHRwdXQoKTogUmVzb3VyY2VNZXRob2QgfCBSZXNvdXJjZU1ldGhvZFtdIHtcblx0XHRyZXR1cm4gdGhpcy5idWlsZE1ldGhvZCgncHV0JywgLi4uYXJndW1lbnRzKTtcblx0fTtcblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIGhhbmRsaW5nIHNwZWNpZmljYXRpb24gZm9yIHRoZSBIVFRQIG1ldGhvZCBcIkRFTEVURVwiLlxuXHQgKiBAcGFyYW0gZlNlcnZlQ2J8b0NvbmZpZ3VyYXRpb24gU2VydmUgZnVuY3Rpb24gY2FsbGJhY2sgb3IgY29uZmlndXJhdGlvbiBvYmplY3QgdG8gaW5pdGlhbGl6ZSB0aGUgbWV0aG9kLlxuXHQgKiBAcmV0dXJucyBUaGUgUmVzb3VyY2VNZXRob2QgaW5zdGFuY2Ugb3IgYXJyYXkuXG5cdCAqL1xuXHRkZWxldGUoZlNlcnZlQ2I6IEZ1bmN0aW9uKTogUmVzb3VyY2VNZXRob2Q7XG4gICAgZGVsZXRlKG9Db25maWd1cmF0aW9uOiBhbnkpOiBSZXNvdXJjZU1ldGhvZCB8IFJlc291cmNlTWV0aG9kW107XG4gICAgZGVsZXRlKCk6IFJlc291cmNlTWV0aG9kO1xuXHRkZWxldGUoKTogUmVzb3VyY2VNZXRob2QgfCBSZXNvdXJjZU1ldGhvZFtdIHtcblx0XHRyZXR1cm4gdGhpcy5idWlsZE1ldGhvZCgnZGVsZXRlJywgLi4uYXJndW1lbnRzKTtcblx0fTtcblxuICAgIC8qKlxuXHQgKiBDcmVhdGVzIGEgaGFuZGxpbmcgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIEhUVFAgbWV0aG9kIFwiREVMRVRFXCIgKGFsaWFzIGZvciBkZWxldGUoKSkuXG5cdCAqIEBwYXJhbSBmU2VydmVDYnxvQ29uZmlndXJhdGlvbiBTZXJ2ZSBmdW5jdGlvbiBjYWxsYmFjayBvciBjb25maWd1cmF0aW9uIG9iamVjdCB0byBpbml0aWFsaXplIHRoZSBtZXRob2QuXG5cdCAqIEByZXR1cm5zIFRoZSBSZXNvdXJjZU1ldGhvZCBpbnN0YW5jZSBvciBhcnJheS5cblx0ICovXG4gICAgcmVtb3ZlKGZTZXJ2ZUNiOiBGdW5jdGlvbik6IFJlc291cmNlTWV0aG9kO1xuICAgIHJlbW92ZShvQ29uZmlndXJhdGlvbjogYW55KTogUmVzb3VyY2VNZXRob2QgfCBSZXNvdXJjZU1ldGhvZFtdO1xuICAgIHJlbW92ZSgpOiBSZXNvdXJjZU1ldGhvZDtcblx0cmVtb3ZlKCk6IFJlc291cmNlTWV0aG9kIHwgUmVzb3VyY2VNZXRob2RbXSB7XG5cdFx0cmV0dXJuIHRoaXMuYnVpbGRNZXRob2QoJ2RlbGV0ZScsIC4uLmFyZ3VtZW50cyk7XG5cdH1cblxuXHQvKipcblx0ICogRmluZHMgYSBSZXNvdXJjZU1ldGhvZCB3aXRoIHRoZSBnaXZlbiBjb25zdHJhaW50cy5cblx0ICpcblx0ICogQHBhcmFtIHNWZXJiIFRoZSBuYW1lIG9mIHRoZSBtZXRob2QgcHJvcGVydHkgb2YgdGhlIFJlc291cmNlTWV0aG9kIGluIHNlYXJjaCAoZS5nLiwgXCJHRVRcIikuXG5cdCAqIEBwYXJhbSBhcnJDb25zdW1lc01pbWVUeXBlU3RyaW5ncyBUaGUgY29uc3VtZXMgY29uc3RyYWludCBwcm9wZXJ0eSBvZiB0aGUgUmVzb3VyY2VNZXRob2QgaW4gc2VhcmNoLlxuXHQgKiBAcGFyYW0gYXJyUHJvZHVjZXNNaW1lVHlwZVN0cmluZ3MgVGhlIHByb2R1Y2VzIGNvbnN0cmFpbnQgcHJvcGVydHkgb2YgdGhlIFJlc291cmNlTWV0aG9kIGluIHNlYXJjaC5cblx0ICogQHJldHVybnMgVGhlIGZvdW5kIFJlc291cmNlTWV0aG9kIGluc3RhbmNlLCBvciB1bmRlZmluZWQgaWYgbm90IGZvdW5kLlxuXHQgKi9cblx0ZmluZChzVmVyYjogc3RyaW5nLCBhcnJDb25zdW1lc01pbWVUeXBlU3RyaW5ncz86IHN0cmluZ1tdLCBhcnJQcm9kdWNlc01pbWVUeXBlU3RyaW5ncz86IHN0cmluZ1tdKTogUmVzb3VyY2VNZXRob2QgfCB1bmRlZmluZWQge1xuXHRcdGxldCBoaXQ6IFJlc291cmNlTWV0aG9kIHwgdW5kZWZpbmVkO1xuXHRcdGNvbnN0IHNWZXJiTG93ZXIgPSBzVmVyYi50b0xvd2VyQ2FzZSgpO1xuXG5cdFx0T2JqZWN0LmtleXModGhpcy5jZmcpXG4gICAgICAgICAgICAuZmlsdGVyKChzVmVyYk5hbWUpID0+IHNWZXJiTmFtZSA9PT0gc1ZlcmJMb3dlcilcbiAgICAgICAgICAgIC5mb3JFYWNoKChzVmVyYk5hbWUpID0+IHtcblx0XHRcdCAgICB0aGlzLmNmZ1tzVmVyYk5hbWVdLmZvckVhY2goKHZlcmJIYW5kbGVyU3BlYzogYW55KSA9PiB7XG5cdFx0XHRcdCAgICBpZiAoYXJyYXlFcXVhbHModmVyYkhhbmRsZXJTcGVjLmNvbnN1bWVzLCBhcnJDb25zdW1lc01pbWVUeXBlU3RyaW5ncykgJiYgYXJyYXlFcXVhbHModmVyYkhhbmRsZXJTcGVjLnByb2R1Y2VzLCBhcnJQcm9kdWNlc01pbWVUeXBlU3RyaW5ncykpIHtcblx0XHRcdFx0XHQgICAgaGl0ID0gbmV3IFJlc291cmNlTWV0aG9kKHZlcmJIYW5kbGVyU3BlYywgdGhpcy5jb250cm9sbGVyLCB0aGlzLCB0aGlzLm1hcHBpbmdzKTtcblx0XHRcdFx0XHQgICAgcmV0dXJuO1xuXHRcdFx0XHQgICAgfVxuXHRcdFx0ICAgIH0pO1xuXHRcdFx0ICAgIGlmIChoaXQpXG5cdFx0XHRcdCAgICByZXR1cm47XG5cdFx0fSk7XG5cdFx0cmV0dXJuIGhpdDtcblx0fTtcblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGlzIHJlc291cmNlLlxuXHQgKlxuXHQgKiBAcmV0dXJucyBUaGUgcmVzb3VyY2UgY29uZmlndXJhdGlvbiBvYmplY3QuXG5cdCAqL1xuXHRjb25maWd1cmF0aW9uKCk6IGFueSB7XG5cdFx0cmV0dXJuIHRoaXMuY2ZnO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBJbnN0cnVjdHMgcmVkaXJlY3Rpb24gb2YgdGhlIHJlcXVlc3QgYmFzZSBkb24gdGhlIHBhcmFtZXRlci4gSWYgaXQgaXMgYSBzdGlybmcgcmVwcmVzZW50aW5nIFVSSSwgdGhlIHJlcXVlc3Qgd2lsbCBiZVxuXHQgKiByZWRpcmVjdGVkIHRvIHRoaXMgVVJJIGZvciBhbnkgbWV0aG9kLiBJZiBpdCdzIGEgZnVuY3Rpb24gaXQgd2lsbCBiZSBpbnZva2VkIGFuZCBlcHhlY3RlZCB0byByZXR1cm4gYSBVUkkgc3RyaW5nIHRvIHJlZGlyZWN0IHRvLlxuXHQgKlxuXHQgKiBAcGFyYW0gZlJlZGlyZWN0b3IgVGhlIGZ1bmN0aW9uIG9yIHN0cmluZyBVUkkgdG8gcmVkaXJlY3QgdG8uXG4gICAgICogQHJldHVybnMgVGhlIHJlc291cmNlIGluc3RhbmNlIGZvciBtZXRob2QgY2hhaW5pbmcuXG5cdCAqL1xuXHRyZWRpcmVjdChmUmVkaXJlY3Rvcjogc3RyaW5nIHwgRnVuY3Rpb24pOiBSZXNvdXJjZSB7XG5cdFx0aWYgKHR5cGVvZiBmUmVkaXJlY3RvciA9PT0gJ3N0cmluZycpIHtcblx0XHRcdGNvbnN0IHJlZGlyZWN0VXJpID0gZlJlZGlyZWN0b3I7XG5cdFx0XHRmUmVkaXJlY3RvciA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0cmV0dXJuIHJlZGlyZWN0VXJpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQvLyBUaGUgaW1wb3J0ZWQgaGFuZGxlckZ1bmN0aW9uIGlzIHVzZWQgaGVyZVxuXHRcdHJldHVybiBoYW5kbGVyRnVuY3Rpb24odGhpcywgdGhpcy5jb25maWd1cmF0aW9uKCksICdyZWRpcmVjdCcsIGZSZWRpcmVjdG9yKTtcblx0fTtcblxuXHQvKipcblx0ICogRGlzYWJsZXMgdGhlIFJlc291cmNlTWV0aG9kcyB0aGF0IG1hdGNoIHRoZSBnaXZlbiBjb25zdHJhaW50c1xuICAgICAqXG4gICAgICogQHBhcmFtIHNWZXJiIFRoZSBIVFRQIHZlcmIgKGUuZy4sIFwiR0VUXCIpLlxuXHQgKiBAcGFyYW0gYXJyQ29uc3VtZXNUeXBlU3RyaW5ncyBUaGUgY29uc3VtZXMgY29uc3RyYWludCBwcm9wZXJ0eSBvZiB0aGUgUmVzb3VyY2VNZXRob2QgaW4gc2VhcmNoLlxuXHQgKiBAcGFyYW0gYXJyUHJvZHVjZXNUeXBlU3RyaW5ncyBUaGUgcHJvZHVjZXMgY29uc3RyYWludCBwcm9wZXJ0eSBvZiB0aGUgUmVzb3VyY2VNZXRob2QgaW4gc2VhcmNoLlxuICAgICAqIEByZXR1cm5zIFRoZSByZXNvdXJjZSBpbnN0YW5jZSBmb3IgbWV0aG9kIGNoYWluaW5nLlxuXHQgKi9cblx0ZGlzYWJsZShzVmVyYj86IHN0cmluZywgYXJyQ29uc3VtZXNUeXBlU3RyaW5ncz86IHN0cmluZ1tdLCBhcnJQcm9kdWNlc1R5cGVTdHJpbmdzPzogc3RyaW5nW10pOiBSZXNvdXJjZSB7XG5cdFx0T2JqZWN0LmtleXModGhpcy5jZmcpXG4gICAgICAgICAgICAuZmlsdGVyKChzVmVyYk5hbWUpID0+IHNWZXJiID09PSB1bmRlZmluZWQgfHwgKHNWZXJiICYmIHNWZXJiLnRvTG93ZXJDYXNlKCkgPT09IHNWZXJiTmFtZSkpXG4gICAgICAgICAgICAuZm9yRWFjaCgoc1ZlcmJOYW1lKSA9PiB7XG5cdFx0XHQgICAgLy8gVXNlIGEgcmV2ZXJzZSBsb29wIGZvciBzYWZlIHNwbGljaW5nXG5cdFx0XHQgICAgZm9yIChsZXQgaSA9IHRoaXMuY2ZnW3NWZXJiTmFtZV0ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVyYkhhbmRsZXJTcGVjID0gdGhpcy5jZmdbc1ZlcmJOYW1lXVtpXTtcblx0XHRcdFx0ICAgIGlmIChhcnJheUVxdWFscyh2ZXJiSGFuZGxlclNwZWMuY29uc3VtZXMsIGFyckNvbnN1bWVzVHlwZVN0cmluZ3MpICYmIGFycmF5RXF1YWxzKHZlcmJIYW5kbGVyU3BlYy5wcm9kdWNlcywgYXJyUHJvZHVjZXNUeXBlU3RyaW5ncykpIHtcblx0XHRcdFx0XHQgICAgdGhpcy5jZmdbc1ZlcmJOYW1lXS5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0LyoqXG5cdCAqIERpc2FibGVzIGFsbCBidXQgJ3JlYWQnIEhUVFAgbWV0aG9kcyBpbiB0aGlzIHJlc291cmNlIChHRVQsIEhFQUQsIFRSQUNFKS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSByZXNvdXJjZSBpbnN0YW5jZSBmb3IgbWV0aG9kIGNoYWluaW5nLlxuXHQgKi9cblx0cmVhZG9ubHkoKTogUmVzb3VyY2Uge1xuXHRcdE9iamVjdC5rZXlzKHRoaXMuY2ZnKS5mb3JFYWNoKChtZXRob2QpID0+IHtcblx0XHRcdGlmICghWydnZXQnLCAnaGVhZCcsICd0cmFjZSddLmluY2x1ZGVzKG1ldGhvZCkpIHtcblx0XHRcdFx0ZGVsZXRlIHRoaXMuY2ZnW21ldGhvZF07XG4gICAgICAgICAgICB9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG59Il0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsNkJBQWdDO0FBQ2hDLDZCQUErQjtBQVUvQixTQUFTLFlBQVksUUFBMkIsUUFBb0M7QUFDbkYsTUFBSSxXQUFXO0FBQ2QsV0FBTztBQUNSLE1BQUksQ0FBQyxNQUFNLFFBQVEsTUFBTSxLQUFLLENBQUMsTUFBTSxRQUFRLE1BQU07QUFDbEQsV0FBTztBQUNSLE1BQUksV0FBVyxVQUFhLFdBQVcsVUFBYSxXQUFXLFVBQWEsV0FBVztBQUN0RixXQUFPO0FBQ1IsTUFBSSxPQUFPLFdBQVcsT0FBTztBQUM1QixXQUFPO0FBQ1IsV0FBUyxJQUFJLEdBQUcsSUFBSSxPQUFPLFFBQVEsS0FBSztBQUN2QyxRQUFJLE9BQU8sQ0FBQyxNQUFNLE9BQU8sQ0FBQztBQUN6QixhQUFPO0FBQUEsRUFDVDtBQUNBLFNBQU87QUFDUjtBQUtPLE1BQU0sU0FBUztBQUFBO0FBQUEsRUFFckI7QUFBQTtBQUFBLEVBRUE7QUFBQTtBQUFBLEVBRUE7QUFBQTtBQUFBLEVBRUE7QUFBQTtBQUFBLEVBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFBLFlBQVksT0FBZSxnQkFBc0IsWUFBa0IsVUFBZ0I7QUFDbEYsU0FBSyxRQUFRO0FBQ2IsU0FBSyxNQUFNLGtCQUFrQixDQUFDO0FBRTlCLFFBQUksWUFBWTtBQUNmLFdBQUssYUFBYTtBQUVsQixXQUFLLFVBQVUsV0FBVyxRQUFRLEtBQUssVUFBVTtBQUFBLElBQ2xEO0FBQ0EsUUFBSSxVQUFVO0FBQ2Is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
@@ -44,6 +44,7 @@ class Upload {
44
44
  }
45
45
  }
46
46
  class FileItems {
47
+ native;
47
48
  /**
48
49
  * @param native The native Java collection object holding the file items.
49
50
  */
@@ -68,6 +69,7 @@ class FileItems {
68
69
  }
69
70
  }
70
71
  class FileItem {
72
+ native;
71
73
  /**
72
74
  * @param native The native Java object representing the file item.
73
75
  */
@@ -141,4 +143,4 @@ class FileItem {
141
143
  if (typeof module !== "undefined") {
142
144
  module.exports = Upload;
143
145
  }
144
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2h0dHAvdXBsb2FkLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIFByb3ZpZGVzIGEgc3RhdGljIGZhXHUwMEU3YWRlIChgVXBsb2FkYCBjbGFzcykgZm9yIGNoZWNraW5nIGFuZCBwYXJzaW5nXG4gKiBtdWx0aXBhcnQvZm9ybS1kYXRhIEhUVFAgcmVxdWVzdHMsIHR5cGljYWxseSB1c2VkIGZvciBmaWxlIHVwbG9hZHMuXG4gKi9cbmltcG9ydCB7IElucHV0U3RyZWFtIH0gZnJvbSBcIkBhZXJva2l0L3Nkay9pby9zdHJlYW1zXCJcbmltcG9ydCB7IEJ5dGVzIH0gZnJvbSBcIkBhZXJva2l0L3Nkay9pby9ieXRlc1wiXG5cbmNvbnN0IEh0dHBVcGxvYWRGYWNhZGUgPSBKYXZhLnR5cGUoXCJvcmcuZWNsaXBzZS5kaXJpZ2libGUuY29tcG9uZW50cy5hcGkuaHR0cC5IdHRwVXBsb2FkRmFjYWRlXCIpO1xuXG4vKipcbiAqIFRoZSBzdGF0aWMgVXBsb2FkIGNsYXNzIHByb3ZpZGVzIG1ldGhvZHMgdG8gZGV0ZXJtaW5lIGlmIGEgcmVxdWVzdCBjb250YWluc1xuICogbXVsdGlwYXJ0IGNvbnRlbnQgYW5kIHRvIHBhcnNlIHRoYXQgY29udGVudCBpbnRvIGZpbGUgaXRlbXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBVcGxvYWQge1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IGluY29taW5nIEhUVFAgcmVxdWVzdCBjb250YWlucyBtdWx0aXBhcnQgY29udGVudFxuICAgICAqIChlLmcuLCBmcm9tIGFuIEhUTUwgZm9ybSB3aXRoIGBlbmN0eXBlPVwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiYCkuXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgcmVxdWVzdCBpcyBtdWx0aXBhcnQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGlzTXVsdGlwYXJ0Q29udGVudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIEh0dHBVcGxvYWRGYWNhZGUuaXNNdWx0aXBhcnRDb250ZW50KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFyc2VzIHRoZSBpbmNvbWluZyBtdWx0aXBhcnQgcmVxdWVzdCBjb250ZW50IGludG8gYSBjb2xsZWN0aW9uIG9mIGZpbGUgaXRlbXMuXG4gICAgICogVGhpcyBvcGVyYXRpb24gdHlwaWNhbGx5IGNvbnN1bWVzIHRoZSByZXF1ZXN0IGJvZHkuXG4gICAgICogQHJldHVybnMgQSBGaWxlSXRlbXMgb2JqZWN0IHJlcHJlc2VudGluZyBhbGwgcGFydHMgKGZpbGVzIGFuZCBmb3JtIGZpZWxkcykgb2YgdGhlIHJlcXVlc3QuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBwYXJzZVJlcXVlc3QoKTogRmlsZUl0ZW1zIHtcbiAgICAgICAgLy8gVGhlIHVuZGVybHlpbmcgbmF0aXZlIGV4ZWN1dGlvbiBjb250ZXh0IChfX2NvbnRleHQpIGlzIGFzc3VtZWQgdG8gY29udGFpblxuICAgICAgICAvLyB0aGUgcGFyc2VkIGZpbGUgaXRlbXMgdW5kZXIgdGhlIFwiZmlsZXNcIiBrZXkgYWZ0ZXIgdGhlIG5hdGl2ZSBmYWNhZGUgcHJvY2Vzc2luZy5cbiAgICAgICAgLy8gQHRzLWlnbm9yZTogX19jb250ZXh0IGlzIGFzc3VtZWQgdG8gYmUgZ2xvYmFsbHkgYXZhaWxhYmxlIGluIHRoZSBydW50aW1lIGVudmlyb25tZW50XG4gICAgICAgIHJldHVybiBuZXcgRmlsZUl0ZW1zKF9fY29udGV4dC5nZXQoXCJmaWxlc1wiKSk7XG4gICAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBjb2xsZWN0aW9uIG9mIHVwbG9hZGVkIGZpbGUgYW5kIGZvcm0gZmllbGQgaXRlbXMgcGFyc2VkIGZyb20gYSBtdWx0aXBhcnQgcmVxdWVzdC5cbiAqL1xuZXhwb3J0IGNsYXNzIEZpbGVJdGVtcyB7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIG5hdGl2ZSBUaGUgbmF0aXZlIEphdmEgY29sbGVjdGlvbiBvYmplY3QgaG9sZGluZyB0aGUgZmlsZSBpdGVtcy5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihuYXRpdmU6IGFueSkge1xuICAgICAgICB0aGlzLm5hdGl2ZSA9IG5hdGl2ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgYSBzcGVjaWZpYyBpdGVtIChmaWxlIG9yIGZvcm0gZmllbGQpIGJ5IGl0cyBpbmRleCBpbiB0aGUgY29sbGVjdGlvbi5cbiAgICAgKiBAcGFyYW0gaW5kZXggVGhlIHplcm8tYmFzZWQgaW5kZXggb2YgdGhlIGl0ZW0uXG4gICAgICogQHJldHVybnMgQSBGaWxlSXRlbSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBpdGVtIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguXG4gICAgICovXG4gICAgcHVibGljIGdldChpbmRleDogbnVtYmVyKTogRmlsZUl0ZW0ge1xuICAgICAgICBjb25zdCBuYXRpdmUgPSB0aGlzLm5hdGl2ZS5nZXQoaW5kZXgpO1xuICAgICAgICByZXR1cm4gbmV3IEZpbGVJdGVtKG5hdGl2ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zIChmaWxlcyBhbmQgZm9ybSBmaWVsZHMpIGluIHRoZSBjb2xsZWN0aW9uLlxuICAgICAqIEByZXR1cm5zIFRoZSBzaXplIG9mIHRoZSBjb2xsZWN0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyBzaXplKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5zaXplKCk7XG4gICAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBzaW5nbGUgaXRlbSAoZWl0aGVyIGFuIHVwbG9hZGVkIGZpbGUgb3IgYSByZWd1bGFyIGZvcm0gZmllbGQpXG4gKiB3aXRoaW4gYSBtdWx0aXBhcnQgcmVxdWVzdC5cbiAqL1xuZXhwb3J0IGNsYXNzIEZpbGVJdGVtIHtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmF0aXZlOiBhbnlcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBuYXRpdmUgVGhlIG5hdGl2ZSBKYXZhIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGZpbGUgaXRlbS5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihuYXRpdmU6IGFueSkge1xuICAgICAgICB0aGlzLm5hdGl2ZSA9IG5hdGl2ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGb3IgYSBmaWxlIHVwbG9hZCwgcmV0dXJucyB0aGUgb3JpZ2luYWwgZmlsZW5hbWUgYXMgcmVwb3J0ZWQgYnkgdGhlIGNsaWVudC5cbiAgICAgKiBGb3IgYSByZWd1bGFyIGZvcm0gZmllbGQsIHRoaXMgaXMgdHlwaWNhbGx5IG51bGwgb3IgdW5kZWZpbmVkLlxuICAgICAqIEByZXR1cm5zIFRoZSBvcmlnaW5hbCBmaWxlbmFtZSBzdHJpbmcuXG4gICAgICovXG4gICAgcHVibGljIGdldE5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmdldE9yaWdpbmFsRmlsZW5hbWUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBNSU1FIHR5cGUgb2YgdGhlIHVwbG9hZGVkIGZpbGUgb3IgY29udGVudCBwYXJ0LlxuICAgICAqIEByZXR1cm5zIFRoZSBjb250ZW50IHR5cGUgc3RyaW5nIChlLmcuLCAnaW1hZ2UvcG5nJywgJ3RleHQvcGxhaW4nKS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q29udGVudFR5cGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmdldENvbnRlbnRUeXBlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSB1cGxvYWRlZCBpdGVtIGlzIGVtcHR5IChlLmcuLCBhIGZpbGUgdXBsb2FkIHdpdGggemVybyBieXRlcykuXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgaXRlbSBpcyBlbXB0eSwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmUuaXNFbXB0eSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHNpemUgb2YgdGhlIHVwbG9hZGVkIGl0ZW0gaW4gYnl0ZXMuXG4gICAgICogQHJldHVybnMgVGhlIHNpemUgYXMgYSBudW1iZXIuXG4gICAgICovXG4gICAgcHVibGljIGdldFNpemUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmdldFNpemUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIGNvbnRlbnQgb2YgdGhlIGZpbGUgaXRlbSBhcyBhIEphdmFTY3JpcHQgYXJyYXkgb2YgYnl0ZXMuXG4gICAgICogVGhpcyB1c2VzIGEgdXRpbGl0eSAoYEJ5dGVzLnRvSmF2YVNjcmlwdEJ5dGVzYCkgdG8gY29udmVydCB0aGUgbmF0aXZlIEphdmEgYnl0ZSBhcnJheS5cbiAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBieXRlcyAoYGFueVtdYCkuXG4gICAgICovXG4gICAgcHVibGljIGdldEJ5dGVzKCk6IGFueVtdIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZ2V0Qnl0ZXNOYXRpdmUoKTtcbiAgICAgICAgcmV0dXJuIEJ5dGVzLnRvSmF2YVNjcmlwdEJ5dGVzKGRhdGEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgY29udGVudCBvZiB0aGUgZmlsZSBpdGVtIGFzIHRoZSBuYXRpdmUgSmF2YSBieXRlIGFycmF5LlxuICAgICAqIEByZXR1cm5zIFRoZSBuYXRpdmUgYnl0ZSBhcnJheSAoYGFueVtdYCkuXG4gICAgICovXG4gICAgcHVibGljIGdldEJ5dGVzTmF0aXZlKCk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmdldEJ5dGVzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBjb250ZW50IG9mIHRoZSBmaWxlIGl0ZW0gYXMgYSBzdHJpbmcuXG4gICAgICogTm90ZTogVGhpcyBhc3N1bWVzIHRoZSBjb250ZW50IGlzIHRleHQgYW5kIG1heSBub3QgaGFuZGxlIGFsbCBlbmNvZGluZ3MgY29ycmVjdGx5LlxuICAgICAqIEl0IHJlbGllcyBvbiBKYXZhU2NyaXB0J3MgYFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHlgIGZvciBjb252ZXJzaW9uLlxuICAgICAqIEByZXR1cm5zIFRoZSBjb250ZW50IGFzIGEgc3RyaW5nLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRUZXh0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIHRoaXMuZ2V0Qnl0ZXNOYXRpdmUoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhbiBpbnB1dCBzdHJlYW0gZm9yIHJlYWRpbmcgdGhlIGNvbnRlbnQgb2YgdGhlIGZpbGUgaXRlbS5cbiAgICAgKiBUaGlzIGlzIHVzZWZ1bCBmb3IgaGFuZGxpbmcgbGFyZ2UgZmlsZXMgd2l0aG91dCBsb2FkaW5nIHRoZSBlbnRpcmUgY29udGVudCBpbnRvIG1lbW9yeS5cbiAgICAgKiBAcmV0dXJucyBBbiBJbnB1dFN0cmVhbSBvYmplY3Qgd3JhcHBpbmcgdGhlIG5hdGl2ZSBpbnB1dCBzdHJlYW0uXG4gICAgICovXG4gICAgcHVibGljIGdldElucHV0U3RyZWFtKCk6IElucHV0U3RyZWFtIHtcbiAgICAgICAgY29uc3QgbmF0aXZlID0gdGhpcy5uYXRpdmUuZ2V0SW5wdXRTdHJlYW0oKTtcbiAgICAgICAgcmV0dXJuIG5ldyBJbnB1dFN0cmVhbShuYXRpdmUpO1xuICAgIH1cbn1cblxuLy8gQHRzLWlnbm9yZVxuaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKSB7XG5cdC8vIEB0cy1pZ25vcmVcblx0bW9kdWxlLmV4cG9ydHMgPSBVcGxvYWQ7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUEscUJBQTRCO0FBQzVCLG1CQUFzQjtBQUV0QixNQUFNLG1CQUFtQixLQUFLLEtBQUssNERBQTREO0FBTXhGLE1BQU0sT0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9oQixPQUFjLHFCQUE4QjtBQUN4QyxXQUFPLGlCQUFpQixtQkFBbUI7QUFBQSxFQUMvQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLE9BQWMsZUFBMEI7QUFJcEMsV0FBTyxJQUFJLFVBQVUsVUFBVSxJQUFJLE9BQU8sQ0FBQztBQUFBLEVBQy9DO0FBQ0o7QUFLTyxNQUFNLFVBQVU7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9uQixZQUFZLFFBQWE7QUFDckIsU0FBSyxTQUFTO0FBQUEsRUFDbEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPTyxJQUFJLE9BQXlCO0FBQ2hDLFVBQU0sU0FBUyxLQUFLLE9BQU8sSUFBSSxLQUFLO0FBQ3BDLFdBQU8sSUFBSSxTQUFTLE1BQU07QUFBQSxFQUM5QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNTyxPQUFlO0FBQ2xCLFdBQU8sS0FBSyxPQUFPLEtBQUs7QUFBQSxFQUM1QjtBQUNKO0FBTU8sTUFBTSxTQUFTO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPbEIsWUFBWSxRQUFhO0FBQ3JCLFNBQUssU0FBUztBQUFBLEVBQ2xCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT08sVUFBa0I7QUFDckIsV0FBTyxLQUFLLE9BQU8sb0JBQW9CO0FBQUEsRUFDM0M7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTU8saUJBQXlCO0FBQzVCLFdBQU8sS0FBSyxPQUFPLGVBQWU7QUFBQSxFQUN0QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNTyxVQUFtQjtBQUN0QixXQUFPLEtBQUssT0FBTyxRQUFRO0FBQUEsRUFDL0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTU8sVUFBa0I7QUFDckIsV0FBTyxLQUFLLE9BQU8sUUFBUTtBQUFBLEVBQy9CO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT08sV0FBa0I7QUFDckIsVUFBTSxPQUFPLEtBQUssZUFBZTtBQUNqQyxXQUFPLG1CQUFNLGtCQUFrQixJQUFJO0FBQUEsRUFDdkM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTU8saUJBQXdCO0FBQzNCLFdBQU8sS0FBSyxPQUFPLFNBQVM7QUFBQSxFQUNoQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sVUFBa0I7QUFDckIsV0FBTyxPQUFPLGFBQWEsTUFBTSxNQUFNLEtBQUssZUFBZSxDQUFDO0FBQUEsRUFDaEU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPTyxpQkFBOEI7QUFDakMsVUFBTSxTQUFTLEtBQUssT0FBTyxlQUFlO0FBQzFDLFdBQU8sSUFBSSwyQkFBWSxNQUFNO0FBQUEsRUFDakM7QUFDSjtBQUdBLElBQUksT0FBTyxXQUFXLGFBQWE7QUFFbEMsU0FBTyxVQUFVO0FBQ2xCOyIsCiAgIm5hbWVzIjogW10KfQo=
146
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2h0dHAvdXBsb2FkLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIFByb3ZpZGVzIGEgc3RhdGljIGZhXHUwMEU3YWRlIChgVXBsb2FkYCBjbGFzcykgZm9yIGNoZWNraW5nIGFuZCBwYXJzaW5nXG4gKiBtdWx0aXBhcnQvZm9ybS1kYXRhIEhUVFAgcmVxdWVzdHMsIHR5cGljYWxseSB1c2VkIGZvciBmaWxlIHVwbG9hZHMuXG4gKi9cbmltcG9ydCB7IElucHV0U3RyZWFtIH0gZnJvbSBcIkBhZXJva2l0L3Nkay9pby9zdHJlYW1zXCJcbmltcG9ydCB7IEJ5dGVzIH0gZnJvbSBcIkBhZXJva2l0L3Nkay9pby9ieXRlc1wiXG5cbmNvbnN0IEh0dHBVcGxvYWRGYWNhZGUgPSBKYXZhLnR5cGUoXCJvcmcuZWNsaXBzZS5kaXJpZ2libGUuY29tcG9uZW50cy5hcGkuaHR0cC5IdHRwVXBsb2FkRmFjYWRlXCIpO1xuXG4vKipcbiAqIFRoZSBzdGF0aWMgVXBsb2FkIGNsYXNzIHByb3ZpZGVzIG1ldGhvZHMgdG8gZGV0ZXJtaW5lIGlmIGEgcmVxdWVzdCBjb250YWluc1xuICogbXVsdGlwYXJ0IGNvbnRlbnQgYW5kIHRvIHBhcnNlIHRoYXQgY29udGVudCBpbnRvIGZpbGUgaXRlbXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBVcGxvYWQge1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IGluY29taW5nIEhUVFAgcmVxdWVzdCBjb250YWlucyBtdWx0aXBhcnQgY29udGVudFxuICAgICAqIChlLmcuLCBmcm9tIGFuIEhUTUwgZm9ybSB3aXRoIGBlbmN0eXBlPVwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiYCkuXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgcmVxdWVzdCBpcyBtdWx0aXBhcnQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGlzTXVsdGlwYXJ0Q29udGVudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIEh0dHBVcGxvYWRGYWNhZGUuaXNNdWx0aXBhcnRDb250ZW50KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFyc2VzIHRoZSBpbmNvbWluZyBtdWx0aXBhcnQgcmVxdWVzdCBjb250ZW50IGludG8gYSBjb2xsZWN0aW9uIG9mIGZpbGUgaXRlbXMuXG4gICAgICogVGhpcyBvcGVyYXRpb24gdHlwaWNhbGx5IGNvbnN1bWVzIHRoZSByZXF1ZXN0IGJvZHkuXG4gICAgICogQHJldHVybnMgQSBGaWxlSXRlbXMgb2JqZWN0IHJlcHJlc2VudGluZyBhbGwgcGFydHMgKGZpbGVzIGFuZCBmb3JtIGZpZWxkcykgb2YgdGhlIHJlcXVlc3QuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBwYXJzZVJlcXVlc3QoKTogRmlsZUl0ZW1zIHtcbiAgICAgICAgLy8gVGhlIHVuZGVybHlpbmcgbmF0aXZlIGV4ZWN1dGlvbiBjb250ZXh0IChfX2NvbnRleHQpIGlzIGFzc3VtZWQgdG8gY29udGFpblxuICAgICAgICAvLyB0aGUgcGFyc2VkIGZpbGUgaXRlbXMgdW5kZXIgdGhlIFwiZmlsZXNcIiBrZXkgYWZ0ZXIgdGhlIG5hdGl2ZSBmYWNhZGUgcHJvY2Vzc2luZy5cbiAgICAgICAgLy8gQHRzLWlnbm9yZTogX19jb250ZXh0IGlzIGFzc3VtZWQgdG8gYmUgZ2xvYmFsbHkgYXZhaWxhYmxlIGluIHRoZSBydW50aW1lIGVudmlyb25tZW50XG4gICAgICAgIHJldHVybiBuZXcgRmlsZUl0ZW1zKF9fY29udGV4dC5nZXQoXCJmaWxlc1wiKSk7XG4gICAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBjb2xsZWN0aW9uIG9mIHVwbG9hZGVkIGZpbGUgYW5kIGZvcm0gZmllbGQgaXRlbXMgcGFyc2VkIGZyb20gYSBtdWx0aXBhcnQgcmVxdWVzdC5cbiAqL1xuZXhwb3J0IGNsYXNzIEZpbGVJdGVtcyB7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIG5hdGl2ZSBUaGUgbmF0aXZlIEphdmEgY29sbGVjdGlvbiBvYmplY3QgaG9sZGluZyB0aGUgZmlsZSBpdGVtcy5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihuYXRpdmU6IGFueSkge1xuICAgICAgICB0aGlzLm5hdGl2ZSA9IG5hdGl2ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgYSBzcGVjaWZpYyBpdGVtIChmaWxlIG9yIGZvcm0gZmllbGQpIGJ5IGl0cyBpbmRleCBpbiB0aGUgY29sbGVjdGlvbi5cbiAgICAgKiBAcGFyYW0gaW5kZXggVGhlIHplcm8tYmFzZWQgaW5kZXggb2YgdGhlIGl0ZW0uXG4gICAgICogQHJldHVybnMgQSBGaWxlSXRlbSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBpdGVtIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguXG4gICAgICovXG4gICAgcHVibGljIGdldChpbmRleDogbnVtYmVyKTogRmlsZUl0ZW0ge1xuICAgICAgICBjb25zdCBuYXRpdmUgPSB0aGlzLm5hdGl2ZS5nZXQoaW5kZXgpO1xuICAgICAgICByZXR1cm4gbmV3IEZpbGVJdGVtKG5hdGl2ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zIChmaWxlcyBhbmQgZm9ybSBmaWVsZHMpIGluIHRoZSBjb2xsZWN0aW9uLlxuICAgICAqIEByZXR1cm5zIFRoZSBzaXplIG9mIHRoZSBjb2xsZWN0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyBzaXplKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5zaXplKCk7XG4gICAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBzaW5nbGUgaXRlbSAoZWl0aGVyIGFuIHVwbG9hZGVkIGZpbGUgb3IgYSByZWd1bGFyIGZvcm0gZmllbGQpXG4gKiB3aXRoaW4gYSBtdWx0aXBhcnQgcmVxdWVzdC5cbiAqL1xuZXhwb3J0IGNsYXNzIEZpbGVJdGVtIHtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmF0aXZlOiBhbnlcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBuYXRpdmUgVGhlIG5hdGl2ZSBKYXZhIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGZpbGUgaXRlbS5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihuYXRpdmU6IGFueSkge1xuICAgICAgICB0aGlzLm5hdGl2ZSA9IG5hdGl2ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGb3IgYSBmaWxlIHVwbG9hZCwgcmV0dXJucyB0aGUgb3JpZ2luYWwgZmlsZW5hbWUgYXMgcmVwb3J0ZWQgYnkgdGhlIGNsaWVudC5cbiAgICAgKiBGb3IgYSByZWd1bGFyIGZvcm0gZmllbGQsIHRoaXMgaXMgdHlwaWNhbGx5IG51bGwgb3IgdW5kZWZpbmVkLlxuICAgICAqIEByZXR1cm5zIFRoZSBvcmlnaW5hbCBmaWxlbmFtZSBzdHJpbmcuXG4gICAgICovXG4gICAgcHVibGljIGdldE5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmdldE9yaWdpbmFsRmlsZW5hbWUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBNSU1FIHR5cGUgb2YgdGhlIHVwbG9hZGVkIGZpbGUgb3IgY29udGVudCBwYXJ0LlxuICAgICAqIEByZXR1cm5zIFRoZSBjb250ZW50IHR5cGUgc3RyaW5nIChlLmcuLCAnaW1hZ2UvcG5nJywgJ3RleHQvcGxhaW4nKS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q29udGVudFR5cGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmdldENvbnRlbnRUeXBlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSB1cGxvYWRlZCBpdGVtIGlzIGVtcHR5IChlLmcuLCBhIGZpbGUgdXBsb2FkIHdpdGggemVybyBieXRlcykuXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgaXRlbSBpcyBlbXB0eSwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmUuaXNFbXB0eSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHNpemUgb2YgdGhlIHVwbG9hZGVkIGl0ZW0gaW4gYnl0ZXMuXG4gICAgICogQHJldHVybnMgVGhlIHNpemUgYXMgYSBudW1iZXIuXG4gICAgICovXG4gICAgcHVibGljIGdldFNpemUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmdldFNpemUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIGNvbnRlbnQgb2YgdGhlIGZpbGUgaXRlbSBhcyBhIEphdmFTY3JpcHQgYXJyYXkgb2YgYnl0ZXMuXG4gICAgICogVGhpcyB1c2VzIGEgdXRpbGl0eSAoYEJ5dGVzLnRvSmF2YVNjcmlwdEJ5dGVzYCkgdG8gY29udmVydCB0aGUgbmF0aXZlIEphdmEgYnl0ZSBhcnJheS5cbiAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBieXRlcyAoYGFueVtdYCkuXG4gICAgICovXG4gICAgcHVibGljIGdldEJ5dGVzKCk6IGFueVtdIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZ2V0Qnl0ZXNOYXRpdmUoKTtcbiAgICAgICAgcmV0dXJuIEJ5dGVzLnRvSmF2YVNjcmlwdEJ5dGVzKGRhdGEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgY29udGVudCBvZiB0aGUgZmlsZSBpdGVtIGFzIHRoZSBuYXRpdmUgSmF2YSBieXRlIGFycmF5LlxuICAgICAqIEByZXR1cm5zIFRoZSBuYXRpdmUgYnl0ZSBhcnJheSAoYGFueVtdYCkuXG4gICAgICovXG4gICAgcHVibGljIGdldEJ5dGVzTmF0aXZlKCk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmdldEJ5dGVzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBjb250ZW50IG9mIHRoZSBmaWxlIGl0ZW0gYXMgYSBzdHJpbmcuXG4gICAgICogTm90ZTogVGhpcyBhc3N1bWVzIHRoZSBjb250ZW50IGlzIHRleHQgYW5kIG1heSBub3QgaGFuZGxlIGFsbCBlbmNvZGluZ3MgY29ycmVjdGx5LlxuICAgICAqIEl0IHJlbGllcyBvbiBKYXZhU2NyaXB0J3MgYFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHlgIGZvciBjb252ZXJzaW9uLlxuICAgICAqIEByZXR1cm5zIFRoZSBjb250ZW50IGFzIGEgc3RyaW5nLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRUZXh0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIHRoaXMuZ2V0Qnl0ZXNOYXRpdmUoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhbiBpbnB1dCBzdHJlYW0gZm9yIHJlYWRpbmcgdGhlIGNvbnRlbnQgb2YgdGhlIGZpbGUgaXRlbS5cbiAgICAgKiBUaGlzIGlzIHVzZWZ1bCBmb3IgaGFuZGxpbmcgbGFyZ2UgZmlsZXMgd2l0aG91dCBsb2FkaW5nIHRoZSBlbnRpcmUgY29udGVudCBpbnRvIG1lbW9yeS5cbiAgICAgKiBAcmV0dXJucyBBbiBJbnB1dFN0cmVhbSBvYmplY3Qgd3JhcHBpbmcgdGhlIG5hdGl2ZSBpbnB1dCBzdHJlYW0uXG4gICAgICovXG4gICAgcHVibGljIGdldElucHV0U3RyZWFtKCk6IElucHV0U3RyZWFtIHtcbiAgICAgICAgY29uc3QgbmF0aXZlID0gdGhpcy5uYXRpdmUuZ2V0SW5wdXRTdHJlYW0oKTtcbiAgICAgICAgcmV0dXJuIG5ldyBJbnB1dFN0cmVhbShuYXRpdmUpO1xuICAgIH1cbn1cblxuLy8gQHRzLWlnbm9yZVxuaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKSB7XG5cdC8vIEB0cy1pZ25vcmVcblx0bW9kdWxlLmV4cG9ydHMgPSBVcGxvYWQ7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUEscUJBQTRCO0FBQzVCLG1CQUFzQjtBQUV0QixNQUFNLG1CQUFtQixLQUFLLEtBQUssNERBQTREO0FBTXhGLE1BQU0sT0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9oQixPQUFjLHFCQUE4QjtBQUN4QyxXQUFPLGlCQUFpQixtQkFBbUI7QUFBQSxFQUMvQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLE9BQWMsZUFBMEI7QUFJcEMsV0FBTyxJQUFJLFVBQVUsVUFBVSxJQUFJLE9BQU8sQ0FBQztBQUFBLEVBQy9DO0FBQ0o7QUFLTyxNQUFNLFVBQVU7QUFBQSxFQUVGO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLakIsWUFBWSxRQUFhO0FBQ3JCLFNBQUssU0FBUztBQUFBLEVBQ2xCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT08sSUFBSSxPQUF5QjtBQUNoQyxVQUFNLFNBQVMsS0FBSyxPQUFPLElBQUksS0FBSztBQUNwQyxXQUFPLElBQUksU0FBUyxNQUFNO0FBQUEsRUFDOUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTU8sT0FBZTtBQUNsQixXQUFPLEtBQUssT0FBTyxLQUFLO0FBQUEsRUFDNUI7QUFDSjtBQU1PLE1BQU0sU0FBUztBQUFBLEVBRUQ7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtqQixZQUFZLFFBQWE7QUFDckIsU0FBSyxTQUFTO0FBQUEsRUFDbEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPTyxVQUFrQjtBQUNyQixXQUFPLEtBQUssT0FBTyxvQkFBb0I7QUFBQSxFQUMzQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNTyxpQkFBeUI7QUFDNUIsV0FBTyxLQUFLLE9BQU8sZUFBZTtBQUFBLEVBQ3RDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1PLFVBQW1CO0FBQ3RCLFdBQU8sS0FBSyxPQUFPLFFBQVE7QUFBQSxFQUMvQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNTyxVQUFrQjtBQUNyQixXQUFPLEtBQUssT0FBTyxRQUFRO0FBQUEsRUFDL0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPTyxXQUFrQjtBQUNyQixVQUFNLE9BQU8sS0FBSyxlQUFlO0FBQ2pDLFdBQU8sbUJBQU0sa0JBQWtCLElBQUk7QUFBQSxFQUN2QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNTyxpQkFBd0I7QUFDM0IsV0FBTyxLQUFLLE9BQU8sU0FBUztBQUFBLEVBQ2hDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRTyxVQUFrQjtBQUNyQixXQUFPLE9BQU8sYUFBYSxNQUFNLE1BQU0sS0FBSyxlQUFlLENBQUM7QUFBQSxFQUNoRTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9PLGlCQUE4QjtBQUNqQyxVQUFNLFNBQVMsS0FBSyxPQUFPLGVBQWU7QUFDMUMsV0FBTyxJQUFJLDJCQUFZLE1BQU07QUFBQSxFQUNqQztBQUNKO0FBR0EsSUFBSSxPQUFPLFdBQVcsYUFBYTtBQUVsQyxTQUFPLFVBQVU7QUFDbEI7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -25,12 +25,10 @@ var import_bytes = require("@aerokit/sdk/io/bytes");
25
25
  const FilesFacade = Java.type("org.eclipse.dirigible.components.api.io.FilesFacade");
26
26
  const File = Java.type("java.io.File");
27
27
  class Files {
28
- static {
29
- /**
30
- * The file system-dependent name separator character (e.g., "/" on Unix, "\" on Windows).
31
- */
32
- this.separator = File.separator;
33
- }
28
+ /**
29
+ * The file system-dependent name separator character (e.g., "/" on Unix, "\" on Windows).
30
+ */
31
+ static separator = File.separator;
34
32
  /**
35
33
  * Checks if a file or directory exists at the given path.
36
34
  * @param path The path to check.
@@ -341,4 +339,4 @@ class Files {
341
339
  if (typeof module !== "undefined") {
342
340
  module.exports = Files;
343
341
  }
344
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2lvL2ZpbGVzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIFByb3ZpZGVzIGEgY29tcHJlaGVuc2l2ZSBzdGF0aWMgZmFcdTAwRTdhZGUgZm9yIGZpbGUgYW5kIGRpcmVjdG9yeSBvcGVyYXRpb25zLFxuICogYWJzdHJhY3RpbmcgdGhlIHVuZGVybHlpbmcgSmF2YSBmaWxlIHN5c3RlbSBpbXBsZW1lbnRhdGlvbi5cbiAqL1xuaW1wb3J0IHsgSW5wdXRTdHJlYW0sIE91dHB1dFN0cmVhbSB9IGZyb20gXCJAYWVyb2tpdC9zZGsvaW8vc3RyZWFtc1wiO1xuaW1wb3J0IHsgQnl0ZXMgfSBmcm9tIFwiQGFlcm9raXQvc2RrL2lvL2J5dGVzXCI7XG5cbmNvbnN0IEZpbGVzRmFjYWRlID0gSmF2YS50eXBlKFwib3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbXBvbmVudHMuYXBpLmlvLkZpbGVzRmFjYWRlXCIpO1xuY29uc3QgRmlsZSA9IEphdmEudHlwZShcImphdmEuaW8uRmlsZVwiKVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBnZW5lcmljIGZpbGUgc3lzdGVtIG9iamVjdCAoZmlsZSBvciBkaXJlY3RvcnkpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVPYmplY3Qge1xuICAgIC8qKiBUaGUgc2ltcGxlIG5hbWUgb2YgdGhlIGZpbGUgb3IgZm9sZGVyLiAqL1xuICAgIG5hbWU6IHN0cmluZztcbiAgICAvKiogVGhlIGFic29sdXRlIHBhdGggb2YgdGhlIGZpbGUgb3IgZm9sZGVyLiAqL1xuICAgIHBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgZm9sZGVyIG9iamVjdCwgZXh0ZW5kaW5nIHRoZSBiYXNpYyBmaWxlIG9iamVjdCB3aXRoIGxpc3RzIG9mIGl0cyBjb250ZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb2xkZXJPYmplY3QgZXh0ZW5kcyBGaWxlT2JqZWN0IHtcbiAgICAvKiogQSBsaXN0IG9mIGZpbGUgb2JqZWN0cyBjb250YWluZWQgd2l0aGluIHRoaXMgZm9sZGVyLiAqL1xuICAgIGZpbGVzOiBGaWxlT2JqZWN0W107XG4gICAgLyoqIEEgbGlzdCBvZiBzdWItZm9sZGVyIG9iamVjdHMgY29udGFpbmVkIHdpdGhpbiB0aGlzIGZvbGRlci4gKi9cbiAgICBmb2xkZXJzOiBGb2xkZXJPYmplY3RbXTtcbn1cblxuLyoqXG4gKiBUaGUgRmlsZXMgY2xhc3MgcHJvdmlkZXMgc3RhdGljIG1ldGhvZHMgZm9yIGhpZ2gtbGV2ZWwgZmlsZSBzeXN0ZW0gbWFuaXB1bGF0aW9uLFxuICogaW5jbHVkaW5nIGNoZWNraW5nIHByb3BlcnRpZXMsIHJlYWRpbmcvd3JpdGluZyBjb250ZW50LCBhbmQgbmF2aWdhdGluZyB0aGUgc3RydWN0dXJlLlxuICovXG5leHBvcnQgY2xhc3MgRmlsZXMge1xuXG5cdC8qKlxuXHQgKiBUaGUgZmlsZSBzeXN0ZW0tZGVwZW5kZW50IG5hbWUgc2VwYXJhdG9yIGNoYXJhY3RlciAoZS5nLiwgXCIvXCIgb24gVW5peCwgXCJcXFwiIG9uIFdpbmRvd3MpLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBzZXBhcmF0b3I6IHN0cmluZyA9IEZpbGUuc2VwYXJhdG9yO1xuXG4gICAgLyoqXG5cdCAqIENoZWNrcyBpZiBhIGZpbGUgb3IgZGlyZWN0b3J5IGV4aXN0cyBhdCB0aGUgZ2l2ZW4gcGF0aC5cblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHBhdGggZXhpc3RzLCBmYWxzZSBvdGhlcndpc2UuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGV4aXN0cyhwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gRmlsZXNGYWNhZGUuZXhpc3RzKHBhdGgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGUgZmlsZSBvciBkaXJlY3RvcnkgYXQgdGhlIGdpdmVuIHBhdGggaXMgZXhlY3V0YWJsZS5cblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgZXhlY3V0YWJsZSwgZmFsc2Ugb3RoZXJ3aXNlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBpc0V4ZWN1dGFibGUocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIEZpbGVzRmFjYWRlLmlzRXhlY3V0YWJsZShwYXRoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhlIGZpbGUgb3IgZGlyZWN0b3J5IGF0IHRoZSBnaXZlbiBwYXRoIGlzIHJlYWRhYmxlLlxuXHQgKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cblx0ICogQHJldHVybnMgVHJ1ZSBpZiByZWFkYWJsZSwgZmFsc2Ugb3RoZXJ3aXNlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBpc1JlYWRhYmxlKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBGaWxlc0ZhY2FkZS5pc1JlYWRhYmxlKHBhdGgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGUgZmlsZSBvciBkaXJlY3RvcnkgYXQgdGhlIGdpdmVuIHBhdGggaXMgd3JpdGFibGUuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHdyaXRhYmxlLCBmYWxzZSBvdGhlcndpc2UuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGlzV3JpdGFibGUocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIEZpbGVzRmFjYWRlLmlzV3JpdGFibGUocGF0aCk7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIGlmIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSBhdCB0aGUgZ2l2ZW4gcGF0aCBpcyBoaWRkZW4uXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIGhpZGRlbiwgZmFsc2Ugb3RoZXJ3aXNlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBpc0hpZGRlbihwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gRmlsZXNGYWNhZGUuaXNIaWRkZW4ocGF0aCk7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIGlmIHRoZSBwYXRoIHJlZmVycyB0byBhIGRpcmVjdG9yeS5cblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgaXQncyBhIGRpcmVjdG9yeSwgZmFsc2Ugb3RoZXJ3aXNlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBpc0RpcmVjdG9yeShwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gRmlsZXNGYWNhZGUuaXNEaXJlY3RvcnkocGF0aCk7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIGlmIHRoZSBwYXRoIHJlZmVycyB0byBhIHJlZ3VsYXIgZmlsZS5cblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgaXQncyBhIGZpbGUsIGZhbHNlIG90aGVyd2lzZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgaXNGaWxlKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBGaWxlc0ZhY2FkZS5pc0ZpbGUocGF0aCk7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIGlmIHR3byBwYXRocyByZWZlciB0byB0aGUgc2FtZSB1bmRlcmx5aW5nIGZpbGUgc3lzdGVtIG9iamVjdC5cblx0ICogQHBhcmFtIHBhdGgxIFRoZSBmaXJzdCBwYXRoLlxuXHQgKiBAcGFyYW0gcGF0aDIgVGhlIHNlY29uZCBwYXRoLlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZXkgcmVmZXJlbmNlIHRoZSBzYW1lIGZpbGUvZGlyZWN0b3J5LCBmYWxzZSBvdGhlcndpc2UuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGlzU2FtZUZpbGUocGF0aDE6IHN0cmluZywgcGF0aDI6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBGaWxlc0ZhY2FkZS5pc1NhbWVGaWxlKHBhdGgxLCBwYXRoMik7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgY2Fub25pY2FsIChhYnNvbHV0ZSBhbmQgbm9ybWFsaXplZCkgcGF0aCBmb3IgdGhlIGdpdmVuIHBhdGguXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIG5vcm1hbGl6ZS5cblx0ICogQHJldHVybnMgVGhlIGNhbm9uaWNhbCBwYXRoIHN0cmluZy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZ2V0Q2Fub25pY2FsUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdHJldHVybiBGaWxlc0ZhY2FkZS5nZXRDYW5vbmljYWxQYXRoKHBhdGgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHNpbXBsZSBuYW1lIG9mIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSBhdCB0aGUgZ2l2ZW4gcGF0aCAodGhlIGxhc3QgZWxlbWVudCkuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoLlxuXHQgKiBAcmV0dXJucyBUaGUgbmFtZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZ2V0TmFtZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdHJldHVybiBGaWxlc0ZhY2FkZS5nZXROYW1lKHBhdGgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHBhdGggb2YgdGhlIHBhcmVudCBkaXJlY3RvcnkuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoLlxuXHQgKiBAcmV0dXJucyBUaGUgcGFyZW50IHBhdGggc3RyaW5nLCBvciBudWxsL2VtcHR5IGlmIG5vbmUgZXhpc3RzLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXRQYXJlbnRQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIEZpbGVzRmFjYWRlLmdldFBhcmVudFBhdGgocGF0aCk7XG5cdH1cblxuXHQvKipcblx0ICogUmVhZHMgYWxsIGJ5dGVzIGZyb20gYSBmaWxlIGludG8gYSBKYXZhU2NyaXB0IGJ5dGUgYXJyYXkgKGFuIGFycmF5IG9mIG51bWJlcnMpLlxuXHQgKlxuXHQgKiBOb3RlOiBUaGlzIG1ldGhvZCBhdXRvbWF0aWNhbGx5IGNvbnZlcnRzIHRoZSBuYXRpdmUgSmF2YSBieXRlIGFycmF5IHRvIGFcblx0ICogSmF2YVNjcmlwdCBhcnJheSB1c2luZyBgQnl0ZXMudG9KYXZhU2NyaXB0Qnl0ZXMoKWAuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIHRoZSBmaWxlLlxuXHQgKiBAcmV0dXJucyBBIEphdmFTY3JpcHQgYXJyYXkgb2YgYnl0ZSB2YWx1ZXMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRCeXRlcyhwYXRoOiBzdHJpbmcpOiBhbnlbXSB7XG5cdFx0Y29uc3QgbmF0aXZlID0gRmlsZXNGYWNhZGUucmVhZEJ5dGVzKHBhdGgpO1xuXHRcdHJldHVybiBCeXRlcy50b0phdmFTY3JpcHRCeXRlcyhuYXRpdmUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlYWRzIGFsbCBieXRlcyBmcm9tIGEgZmlsZSBhbmQgcmV0dXJucyB0aGUgbmF0aXZlIEphdmEgYnl0ZSBhcnJheSBvYmplY3QuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIHRoZSBmaWxlLlxuXHQgKiBAcmV0dXJucyBUaGUgbmF0aXZlIEphdmEgYnl0ZSBhcnJheS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgcmVhZEJ5dGVzTmF0aXZlKHBhdGg6IHN0cmluZyk6IGFueVtdIHtcblx0XHRyZXR1cm4gRmlsZXNGYWNhZGUucmVhZEJ5dGVzKHBhdGgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlYWRzIGFsbCB0ZXh0IGNvbnRlbnQgZnJvbSBhIGZpbGUgdXNpbmcgdGhlIHBsYXRmb3JtJ3MgZGVmYXVsdCBjaGFyYWN0ZXIgZW5jb2RpbmcuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIHRoZSBmaWxlLlxuXHQgKiBAcmV0dXJucyBUaGUgY29udGVudCBvZiB0aGUgZmlsZSBhcyBhIHN0cmluZy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgcmVhZFRleHQocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRmlsZXNGYWNhZGUucmVhZFRleHQocGF0aCk7XG5cdH1cblxuXHQvKipcblx0ICogV3JpdGVzIHRoZSBjb250ZW50IG9mIGEgSmF2YVNjcmlwdCBieXRlIGFycmF5IHRvIGEgZmlsZS4gT3ZlcndyaXRlcyBleGlzdGluZyBjb250ZW50LlxuXHQgKlxuXHQgKiBOb3RlOiBUaGlzIG1ldGhvZCBhdXRvbWF0aWNhbGx5IGNvbnZlcnRzIHRoZSBKYXZhU2NyaXB0IGFycmF5IHRvIGEgbmF0aXZlXG5cdCAqIEphdmEgYnl0ZSBhcnJheSB1c2luZyBgQnl0ZXMudG9KYXZhQnl0ZXMoKWAgYmVmb3JlIHdyaXRpbmcuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIHRoZSBmaWxlLlxuXHQgKiBAcGFyYW0gZGF0YSBUaGUgSmF2YVNjcmlwdCBhcnJheSBvZiBieXRlIHZhbHVlcyB0byB3cml0ZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgd3JpdGVCeXRlcyhwYXRoOiBzdHJpbmcsIGRhdGE6IGFueVtdKTogdm9pZCB7XG5cdFx0Y29uc3QgbmF0aXZlID0gQnl0ZXMudG9KYXZhQnl0ZXMoZGF0YSk7XG5cdFx0RmlsZXNGYWNhZGUud3JpdGVCeXRlc05hdGl2ZShwYXRoLCBuYXRpdmUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdyaXRlcyB0aGUgY29udGVudCBvZiBhIG5hdGl2ZSBKYXZhIGJ5dGUgYXJyYXkgdG8gYSBmaWxlLiBPdmVyd3JpdGVzIGV4aXN0aW5nIGNvbnRlbnQuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIHRoZSBmaWxlLlxuXHQgKiBAcGFyYW0gZGF0YSBUaGUgbmF0aXZlIEphdmEgYnl0ZSBhcnJheSB0byB3cml0ZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgd3JpdGVCeXRlc05hdGl2ZShwYXRoOiBzdHJpbmcsIGRhdGE6IGFueVtdKTogdm9pZCB7XG5cdFx0RmlsZXNGYWNhZGUud3JpdGVCeXRlc05hdGl2ZShwYXRoLCBkYXRhKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBXcml0ZXMgYSBzdHJpbmcgb2YgdGV4dCB0byBhIGZpbGUgdXNpbmcgdGhlIHBsYXRmb3JtJ3MgZGVmYXVsdCBjaGFyYWN0ZXIgZW5jb2RpbmcuIE92ZXJ3cml0ZXMgZXhpc3RpbmcgY29udGVudC5cblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gdGhlIGZpbGUuXG5cdCAqIEBwYXJhbSB0ZXh0IFRoZSBzdHJpbmcgY29udGVudCB0byB3cml0ZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgd3JpdGVUZXh0KHBhdGg6IHN0cmluZywgdGV4dDogc3RyaW5nKTogdm9pZCB7XG5cdFx0RmlsZXNGYWNhZGUud3JpdGVUZXh0KHBhdGgsIHRleHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGxhc3QgbW9kaWZpZWQgdGltZSBvZiB0aGUgZmlsZSBvciBkaXJlY3RvcnkuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIHRoZSBmaWxlIG9yIGRpcmVjdG9yeS5cblx0ICogQHJldHVybnMgQSBKYXZhU2NyaXB0IERhdGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgbGFzdCBtb2RpZmllZCB0aW1lLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXRMYXN0TW9kaWZpZWQocGF0aDogc3RyaW5nKTogRGF0ZSB7XG5cdFx0cmV0dXJuIG5ldyBEYXRlKEZpbGVzRmFjYWRlLmdldExhc3RNb2RpZmllZChwYXRoKSk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgbGFzdCBtb2RpZmllZCB0aW1lIG9mIHRoZSBmaWxlIG9yIGRpcmVjdG9yeS5cblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gdGhlIGZpbGUgb3IgZGlyZWN0b3J5LlxuXHQgKiBAcGFyYW0gdGltZSBUaGUgbmV3IERhdGUgb2JqZWN0IHRvIHNldCBhcyB0aGUgbGFzdCBtb2RpZmllZCB0aW1lLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBzZXRMYXN0TW9kaWZpZWQocGF0aDogc3RyaW5nLCB0aW1lOiBEYXRlKTogdm9pZCB7XG5cdFx0RmlsZXNGYWNhZGUuc2V0TGFzdE1vZGlmaWVkKHBhdGgsIHRpbWUuZ2V0VGltZSgpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBvd25lciBvZiB0aGUgZmlsZSBvciBkaXJlY3RvcnkuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIHRoZSBmaWxlIG9yIGRpcmVjdG9yeS5cblx0ICogQHJldHVybnMgVGhlIG93bmVyIG5hbWUgYXMgYSBzdHJpbmcuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldE93bmVyKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIEZpbGVzRmFjYWRlLmdldE93bmVyKHBhdGgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIG93bmVyIG9mIHRoZSBmaWxlIG9yIGRpcmVjdG9yeS5cblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gdGhlIGZpbGUgb3IgZGlyZWN0b3J5LlxuXHQgKiBAcGFyYW0gb3duZXIgVGhlIG5ldyBvd25lciBuYW1lLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBzZXRPd25lcihwYXRoOiBzdHJpbmcsIG93bmVyOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRGaWxlc0ZhY2FkZS5zZXRPd25lcihwYXRoLCBvd25lcik7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgcGVybWlzc2lvbnMgc3RyaW5nIGZvciB0aGUgZmlsZSBvciBkaXJlY3RvcnkgKGltcGxlbWVudGF0aW9uIGRlcGVuZGVudCkuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIHRoZSBmaWxlIG9yIGRpcmVjdG9yeS5cblx0ICogQHJldHVybnMgVGhlIHBlcm1pc3Npb25zIHN0cmluZy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZ2V0UGVybWlzc2lvbnMocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRmlsZXNGYWNhZGUuZ2V0UGVybWlzc2lvbnMocGF0aCk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgcGVybWlzc2lvbnMgZm9yIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSAoaW1wbGVtZW50YXRpb24gZGVwZW5kZW50KS5cblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gdGhlIGZpbGUgb3IgZGlyZWN0b3J5LlxuXHQgKiBAcGFyYW0gcGVybWlzc2lvbnMgVGhlIHBlcm1pc3Npb25zIHN0cmluZy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgc2V0UGVybWlzc2lvbnMocGF0aDogc3RyaW5nLCBwZXJtaXNzaW9uczogc3RyaW5nKTogdm9pZCB7XG5cdFx0RmlsZXNGYWNhZGUuc2V0UGVybWlzc2lvbnMocGF0aCwgcGVybWlzc2lvbnMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHNpemUgb2YgdGhlIGZpbGUgaW4gYnl0ZXMuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIHRoZSBmaWxlLlxuXHQgKiBAcmV0dXJucyBUaGUgc2l6ZSBpbiBieXRlcy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgc2l6ZShwYXRoOiBzdHJpbmcpOiBudW1iZXIge1xuXHRcdHJldHVybiBGaWxlc0ZhY2FkZS5zaXplKHBhdGgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcsIGVtcHR5IGZpbGUgYXQgdGhlIHNwZWNpZmllZCBwYXRoLlxuXHQgKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB3aGVyZSB0aGUgZmlsZSBzaG91bGQgYmUgY3JlYXRlZC5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgY3JlYXRlRmlsZShwYXRoOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRGaWxlc0ZhY2FkZS5jcmVhdGVGaWxlKHBhdGgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcgZGlyZWN0b3J5IGF0IHRoZSBzcGVjaWZpZWQgcGF0aC5cblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggd2hlcmUgdGhlIGRpcmVjdG9yeSBzaG91bGQgYmUgY3JlYXRlZC5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgY3JlYXRlRGlyZWN0b3J5KHBhdGg6IHN0cmluZyk6IHZvaWQge1xuXHRcdEZpbGVzRmFjYWRlLmNyZWF0ZURpcmVjdG9yeShwYXRoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb3BpZXMgYSBmaWxlIG9yIGRpcmVjdG9yeSBmcm9tIGEgc291cmNlIHBhdGggdG8gYSB0YXJnZXQgcGF0aC5cblx0ICogQHBhcmFtIHNvdXJjZSBUaGUgc291cmNlIHBhdGguXG5cdCAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBwYXRoLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBjb3B5KHNvdXJjZTogc3RyaW5nLCB0YXJnZXQ6IHN0cmluZyk6IHZvaWQge1xuXHRcdEZpbGVzRmFjYWRlLmNvcHkoc291cmNlLCB0YXJnZXQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1vdmVzIG9yIHJlbmFtZXMgYSBmaWxlIG9yIGRpcmVjdG9yeS5cblx0ICogQHBhcmFtIHNvdXJjZSBUaGUgc291cmNlIHBhdGguXG5cdCAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBwYXRoLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBtb3ZlKHNvdXJjZTogc3RyaW5nLCB0YXJnZXQ6IHN0cmluZyk6IHZvaWQge1xuXHRcdEZpbGVzRmFjYWRlLm1vdmUoc291cmNlLCB0YXJnZXQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERlbGV0ZXMgdGhlIGZpbGUgYXQgdGhlIHNwZWNpZmllZCBwYXRoLlxuXHQgKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB0byB0aGUgZmlsZSB0byBkZWxldGUuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGRlbGV0ZUZpbGUocGF0aDogc3RyaW5nKTogdm9pZCB7XG5cdFx0RmlsZXNGYWNhZGUuZGVsZXRlRmlsZShwYXRoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZWxldGVzIHRoZSBkaXJlY3RvcnkgYXQgdGhlIHNwZWNpZmllZCBwYXRoLlxuXHQgKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IHRvIGRlbGV0ZS5cblx0ICogQHBhcmFtIGZvcmNlZCBJZiB0cnVlLCByZWN1cnNpdmVseSBkZWxldGVzIHRoZSBkaXJlY3RvcnkgYW5kIGl0cyBjb250ZW50cy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZGVsZXRlRGlyZWN0b3J5KHBhdGg6IHN0cmluZywgZm9yY2VkPzogYm9vbGVhbik6IHZvaWQge1xuXHRcdEZpbGVzRmFjYWRlLmRlbGV0ZURpcmVjdG9yeShwYXRoLCBmb3JjZWQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcgdGVtcG9yYXJ5IGZpbGUgd2l0aCB0aGUgZ2l2ZW4gcHJlZml4IGFuZCBzdWZmaXguXG5cdCAqIEBwYXJhbSBwcmVmaXggVGhlIHByZWZpeCBzdHJpbmcgdG8gYmUgdXNlZCBpbiBnZW5lcmF0aW5nIHRoZSBmaWxlJ3MgbmFtZS5cblx0ICogQHBhcmFtIHN1ZmZpeCBUaGUgc3VmZml4IHN0cmluZyB0byBiZSB1c2VkIGluIGdlbmVyYXRpbmcgdGhlIGZpbGUncyBuYW1lLlxuXHQgKiBAcmV0dXJucyBUaGUgcGF0aCBvZiB0aGUgY3JlYXRlZCB0ZW1wb3JhcnkgZmlsZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgY3JlYXRlVGVtcEZpbGUocHJlZml4OiBzdHJpbmcsIHN1ZmZpeDogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRmlsZXNGYWNhZGUuY3JlYXRlVGVtcEZpbGUocHJlZml4LCBzdWZmaXgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcgdGVtcG9yYXJ5IGRpcmVjdG9yeSB3aXRoIHRoZSBnaXZlbiBwcmVmaXguXG5cdCAqIEBwYXJhbSBwcmVmaXggVGhlIHByZWZpeCBzdHJpbmcgdG8gYmUgdXNlZCBpbiBnZW5lcmF0aW5nIHRoZSBkaXJlY3RvcnkncyBuYW1lLlxuXHQgKiBAcmV0dXJucyBUaGUgcGF0aCBvZiB0aGUgY3JlYXRlZCB0ZW1wb3JhcnkgZGlyZWN0b3J5LlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBjcmVhdGVUZW1wRGlyZWN0b3J5KHByZWZpeDogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRmlsZXNGYWNhZGUuY3JlYXRlVGVtcERpcmVjdG9yeShwcmVmaXgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYW5kIHJldHVybnMgYSBuZXcge0BsaW5rIElucHV0U3RyZWFtfSBmb3IgcmVhZGluZyBkYXRhIGZyb20gdGhlIGZpbGUuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIHRoZSBmaWxlLlxuXHQgKiBAcmV0dXJucyBBIG5ldyBJbnB1dFN0cmVhbSBpbnN0YW5jZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgY3JlYXRlSW5wdXRTdHJlYW0ocGF0aDogc3RyaW5nKTogSW5wdXRTdHJlYW0ge1xuXHRcdGNvbnN0IG5hdGl2ZSA9IEZpbGVzRmFjYWRlLmNyZWF0ZUlucHV0U3RyZWFtKHBhdGgpO1xuXHRcdHJldHVybiBuZXcgSW5wdXRTdHJlYW0obmF0aXZlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGFuZCByZXR1cm5zIGEgbmV3IHtAbGluayBPdXRwdXRTdHJlYW19IGZvciB3cml0aW5nIGRhdGEgdG8gdGhlIGZpbGUuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIHRoZSBmaWxlLlxuXHQgKiBAcmV0dXJucyBBIG5ldyBPdXRwdXRTdHJlYW0gaW5zdGFuY2UuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGNyZWF0ZU91dHB1dFN0cmVhbShwYXRoOiBzdHJpbmcpOiBPdXRwdXRTdHJlYW0ge1xuXHRcdGNvbnN0IG5hdGl2ZSA9IEZpbGVzRmFjYWRlLmNyZWF0ZU91dHB1dFN0cmVhbShwYXRoKTtcblx0XHRyZXR1cm4gbmV3IE91dHB1dFN0cmVhbShuYXRpdmUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRyYXZlcnNlcyBhIGRpcmVjdG9yeSBhbmQgcmV0dXJucyBhIHN0cnVjdHVyZWQge0BsaW5rIEZvbGRlck9iamVjdH0gaGllcmFyY2h5LlxuXHQgKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB0byB0aGUgZm9sZGVyIHRvIHRyYXZlcnNlLlxuXHQgKiBAcmV0dXJucyBUaGUgcm9vdCBGb2xkZXJPYmplY3QgY29udGFpbmluZyB0aGUgZmlsZSBzeXN0ZW0gdHJlZSBzdHJ1Y3R1cmUuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHRyYXZlcnNlKHBhdGg6IHN0cmluZyk6IEZvbGRlck9iamVjdFtdIHtcblx0XHRyZXR1cm4gSlNPTi5wYXJzZShGaWxlc0ZhY2FkZS50cmF2ZXJzZShwYXRoKSk7XG5cdH1cblxuXHQvKipcblx0ICogTGlzdHMgdGhlIGRpcmVjdCBjaGlsZHJlbiAoZmlsZXMgYW5kIGZvbGRlcnMpIG9mIGEgZGlyZWN0b3J5LCByZXR1cm5pbmcgb25seSB0aGVpciBwYXRocy5cblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gdGhlIGRpcmVjdG9yeS5cblx0ICogQHJldHVybnMgQW4gYXJyYXkgb2Ygc3RyaW5nIHBhdGhzIGZvciB0aGUgY29udGVudHMgb2YgdGhlIGRpcmVjdG9yeS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgbGlzdChwYXRoOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG5cdFx0Ly8gVGhlIG5hdGl2ZSBmYWNhZGUgcmV0dXJucyBhIEpTT04gYXJyYXkgb2Ygb2JqZWN0cywgd2hpY2ggaXMgdGhlbiBtYXBwZWQgdG8gYW4gYXJyYXkgb2YgcGF0aHMuXG5cdFx0cmV0dXJuIEpTT04ucGFyc2UoRmlsZXNGYWNhZGUubGlzdChwYXRoKSkubWFwKGUgPT4gZS5wYXRoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBGaW5kcyBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgbWF0Y2hpbmcgYSBzcGVjaWZpZWQgZ2xvYiBwYXR0ZXJuIHdpdGhpbiBhIGRpcmVjdG9yeSB0cmVlLlxuXHQgKiBAcGFyYW0gcGF0aCBUaGUgc3RhcnRpbmcgcGF0aCBmb3IgdGhlIHNlYXJjaC5cblx0ICogQHBhcmFtIHBhdHRlcm4gVGhlIGdsb2IgcGF0dGVybiB0byBtYXRjaCAoZS5nLiwgXCIqLmpzXCIsIFwiKioudHh0XCIpLlxuXHQgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBzdHJpbmcgcGF0aHMgdGhhdCBtYXRjaCB0aGUgcGF0dGVybi5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZmluZChwYXRoOiBzdHJpbmcsIHBhdHRlcm46IHN0cmluZyk6IHN0cmluZ1tdIHtcblx0XHRyZXR1cm4gSlNPTi5wYXJzZShGaWxlc0ZhY2FkZS5maW5kKHBhdGgsIHBhdHRlcm4pKTtcblx0fVxufVxuXG4vLyBAdHMtaWdub3JlXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0Ly8gQHRzLWlnbm9yZVxuXHRtb2R1bGUuZXhwb3J0cyA9IEZpbGVzO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUEscUJBQTBDO0FBQzFDLG1CQUFzQjtBQUV0QixNQUFNLGNBQWMsS0FBSyxLQUFLLHFEQUFxRDtBQUNuRixNQUFNLE9BQU8sS0FBSyxLQUFLLGNBQWM7QUEwQjlCLE1BQU0sTUFBTTtBQUFBLEVBS2xCO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0FBdUIsWUFBb0IsS0FBSztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT2hELE9BQWMsT0FBTyxNQUF1QjtBQUMzQyxXQUFPLFlBQVksT0FBTyxJQUFJO0FBQUEsRUFDL0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxPQUFjLGFBQWEsTUFBdUI7QUFDakQsV0FBTyxZQUFZLGFBQWEsSUFBSTtBQUFBLEVBQ3JDO0FBQUE7QUFBQTtBQUFBO0FB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
342
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2lvL2ZpbGVzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIFByb3ZpZGVzIGEgY29tcHJlaGVuc2l2ZSBzdGF0aWMgZmFcdTAwRTdhZGUgZm9yIGZpbGUgYW5kIGRpcmVjdG9yeSBvcGVyYXRpb25zLFxuICogYWJzdHJhY3RpbmcgdGhlIHVuZGVybHlpbmcgSmF2YSBmaWxlIHN5c3RlbSBpbXBsZW1lbnRhdGlvbi5cbiAqL1xuaW1wb3J0IHsgSW5wdXRTdHJlYW0sIE91dHB1dFN0cmVhbSB9IGZyb20gXCJAYWVyb2tpdC9zZGsvaW8vc3RyZWFtc1wiO1xuaW1wb3J0IHsgQnl0ZXMgfSBmcm9tIFwiQGFlcm9raXQvc2RrL2lvL2J5dGVzXCI7XG5cbmNvbnN0IEZpbGVzRmFjYWRlID0gSmF2YS50eXBlKFwib3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbXBvbmVudHMuYXBpLmlvLkZpbGVzRmFjYWRlXCIpO1xuY29uc3QgRmlsZSA9IEphdmEudHlwZShcImphdmEuaW8uRmlsZVwiKVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBnZW5lcmljIGZpbGUgc3lzdGVtIG9iamVjdCAoZmlsZSBvciBkaXJlY3RvcnkpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVPYmplY3Qge1xuICAgIC8qKiBUaGUgc2ltcGxlIG5hbWUgb2YgdGhlIGZpbGUgb3IgZm9sZGVyLiAqL1xuICAgIG5hbWU6IHN0cmluZztcbiAgICAvKiogVGhlIGFic29sdXRlIHBhdGggb2YgdGhlIGZpbGUgb3IgZm9sZGVyLiAqL1xuICAgIHBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgZm9sZGVyIG9iamVjdCwgZXh0ZW5kaW5nIHRoZSBiYXNpYyBmaWxlIG9iamVjdCB3aXRoIGxpc3RzIG9mIGl0cyBjb250ZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb2xkZXJPYmplY3QgZXh0ZW5kcyBGaWxlT2JqZWN0IHtcbiAgICAvKiogQSBsaXN0IG9mIGZpbGUgb2JqZWN0cyBjb250YWluZWQgd2l0aGluIHRoaXMgZm9sZGVyLiAqL1xuICAgIGZpbGVzOiBGaWxlT2JqZWN0W107XG4gICAgLyoqIEEgbGlzdCBvZiBzdWItZm9sZGVyIG9iamVjdHMgY29udGFpbmVkIHdpdGhpbiB0aGlzIGZvbGRlci4gKi9cbiAgICBmb2xkZXJzOiBGb2xkZXJPYmplY3RbXTtcbn1cblxuLyoqXG4gKiBUaGUgRmlsZXMgY2xhc3MgcHJvdmlkZXMgc3RhdGljIG1ldGhvZHMgZm9yIGhpZ2gtbGV2ZWwgZmlsZSBzeXN0ZW0gbWFuaXB1bGF0aW9uLFxuICogaW5jbHVkaW5nIGNoZWNraW5nIHByb3BlcnRpZXMsIHJlYWRpbmcvd3JpdGluZyBjb250ZW50LCBhbmQgbmF2aWdhdGluZyB0aGUgc3RydWN0dXJlLlxuICovXG5leHBvcnQgY2xhc3MgRmlsZXMge1xuXG5cdC8qKlxuXHQgKiBUaGUgZmlsZSBzeXN0ZW0tZGVwZW5kZW50IG5hbWUgc2VwYXJhdG9yIGNoYXJhY3RlciAoZS5nLiwgXCIvXCIgb24gVW5peCwgXCJcXFwiIG9uIFdpbmRvd3MpLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBzZXBhcmF0b3I6IHN0cmluZyA9IEZpbGUuc2VwYXJhdG9yO1xuXG4gICAgLyoqXG5cdCAqIENoZWNrcyBpZiBhIGZpbGUgb3IgZGlyZWN0b3J5IGV4aXN0cyBhdCB0aGUgZ2l2ZW4gcGF0aC5cblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHBhdGggZXhpc3RzLCBmYWxzZSBvdGhlcndpc2UuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGV4aXN0cyhwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gRmlsZXNGYWNhZGUuZXhpc3RzKHBhdGgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGUgZmlsZSBvciBkaXJlY3RvcnkgYXQgdGhlIGdpdmVuIHBhdGggaXMgZXhlY3V0YWJsZS5cblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgZXhlY3V0YWJsZSwgZmFsc2Ugb3RoZXJ3aXNlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBpc0V4ZWN1dGFibGUocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIEZpbGVzRmFjYWRlLmlzRXhlY3V0YWJsZShwYXRoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhlIGZpbGUgb3IgZGlyZWN0b3J5IGF0IHRoZSBnaXZlbiBwYXRoIGlzIHJlYWRhYmxlLlxuXHQgKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cblx0ICogQHJldHVybnMgVHJ1ZSBpZiByZWFkYWJsZSwgZmFsc2Ugb3RoZXJ3aXNlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBpc1JlYWRhYmxlKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBGaWxlc0ZhY2FkZS5pc1JlYWRhYmxlKHBhdGgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGUgZmlsZSBvciBkaXJlY3RvcnkgYXQgdGhlIGdpdmVuIHBhdGggaXMgd3JpdGFibGUuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHdyaXRhYmxlLCBmYWxzZSBvdGhlcndpc2UuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGlzV3JpdGFibGUocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIEZpbGVzRmFjYWRlLmlzV3JpdGFibGUocGF0aCk7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIGlmIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSBhdCB0aGUgZ2l2ZW4gcGF0aCBpcyBoaWRkZW4uXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIGhpZGRlbiwgZmFsc2Ugb3RoZXJ3aXNlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBpc0hpZGRlbihwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gRmlsZXNGYWNhZGUuaXNIaWRkZW4ocGF0aCk7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIGlmIHRoZSBwYXRoIHJlZmVycyB0byBhIGRpcmVjdG9yeS5cblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgaXQncyBhIGRpcmVjdG9yeSwgZmFsc2Ugb3RoZXJ3aXNlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBpc0RpcmVjdG9yeShwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gRmlsZXNGYWNhZGUuaXNEaXJlY3RvcnkocGF0aCk7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIGlmIHRoZSBwYXRoIHJlZmVycyB0byBhIHJlZ3VsYXIgZmlsZS5cblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgaXQncyBhIGZpbGUsIGZhbHNlIG90aGVyd2lzZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgaXNGaWxlKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBGaWxlc0ZhY2FkZS5pc0ZpbGUocGF0aCk7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIGlmIHR3byBwYXRocyByZWZlciB0byB0aGUgc2FtZSB1bmRlcmx5aW5nIGZpbGUgc3lzdGVtIG9iamVjdC5cblx0ICogQHBhcmFtIHBhdGgxIFRoZSBmaXJzdCBwYXRoLlxuXHQgKiBAcGFyYW0gcGF0aDIgVGhlIHNlY29uZCBwYXRoLlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZXkgcmVmZXJlbmNlIHRoZSBzYW1lIGZpbGUvZGlyZWN0b3J5LCBmYWxzZSBvdGhlcndpc2UuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGlzU2FtZUZpbGUocGF0aDE6IHN0cmluZywgcGF0aDI6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBGaWxlc0ZhY2FkZS5pc1NhbWVGaWxlKHBhdGgxLCBwYXRoMik7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgY2Fub25pY2FsIChhYnNvbHV0ZSBhbmQgbm9ybWFsaXplZCkgcGF0aCBmb3IgdGhlIGdpdmVuIHBhdGguXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIG5vcm1hbGl6ZS5cblx0ICogQHJldHVybnMgVGhlIGNhbm9uaWNhbCBwYXRoIHN0cmluZy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZ2V0Q2Fub25pY2FsUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdHJldHVybiBGaWxlc0ZhY2FkZS5nZXRDYW5vbmljYWxQYXRoKHBhdGgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHNpbXBsZSBuYW1lIG9mIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSBhdCB0aGUgZ2l2ZW4gcGF0aCAodGhlIGxhc3QgZWxlbWVudCkuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoLlxuXHQgKiBAcmV0dXJucyBUaGUgbmFtZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZ2V0TmFtZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdHJldHVybiBGaWxlc0ZhY2FkZS5nZXROYW1lKHBhdGgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHBhdGggb2YgdGhlIHBhcmVudCBkaXJlY3RvcnkuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoLlxuXHQgKiBAcmV0dXJucyBUaGUgcGFyZW50IHBhdGggc3RyaW5nLCBvciBudWxsL2VtcHR5IGlmIG5vbmUgZXhpc3RzLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXRQYXJlbnRQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIEZpbGVzRmFjYWRlLmdldFBhcmVudFBhdGgocGF0aCk7XG5cdH1cblxuXHQvKipcblx0ICogUmVhZHMgYWxsIGJ5dGVzIGZyb20gYSBmaWxlIGludG8gYSBKYXZhU2NyaXB0IGJ5dGUgYXJyYXkgKGFuIGFycmF5IG9mIG51bWJlcnMpLlxuXHQgKlxuXHQgKiBOb3RlOiBUaGlzIG1ldGhvZCBhdXRvbWF0aWNhbGx5IGNvbnZlcnRzIHRoZSBuYXRpdmUgSmF2YSBieXRlIGFycmF5IHRvIGFcblx0ICogSmF2YVNjcmlwdCBhcnJheSB1c2luZyBgQnl0ZXMudG9KYXZhU2NyaXB0Qnl0ZXMoKWAuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIHRoZSBmaWxlLlxuXHQgKiBAcmV0dXJucyBBIEphdmFTY3JpcHQgYXJyYXkgb2YgYnl0ZSB2YWx1ZXMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRCeXRlcyhwYXRoOiBzdHJpbmcpOiBhbnlbXSB7XG5cdFx0Y29uc3QgbmF0aXZlID0gRmlsZXNGYWNhZGUucmVhZEJ5dGVzKHBhdGgpO1xuXHRcdHJldHVybiBCeXRlcy50b0phdmFTY3JpcHRCeXRlcyhuYXRpdmUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlYWRzIGFsbCBieXRlcyBmcm9tIGEgZmlsZSBhbmQgcmV0dXJucyB0aGUgbmF0aXZlIEphdmEgYnl0ZSBhcnJheSBvYmplY3QuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIHRoZSBmaWxlLlxuXHQgKiBAcmV0dXJucyBUaGUgbmF0aXZlIEphdmEgYnl0ZSBhcnJheS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgcmVhZEJ5dGVzTmF0aXZlKHBhdGg6IHN0cmluZyk6IGFueVtdIHtcblx0XHRyZXR1cm4gRmlsZXNGYWNhZGUucmVhZEJ5dGVzKHBhdGgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlYWRzIGFsbCB0ZXh0IGNvbnRlbnQgZnJvbSBhIGZpbGUgdXNpbmcgdGhlIHBsYXRmb3JtJ3MgZGVmYXVsdCBjaGFyYWN0ZXIgZW5jb2RpbmcuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIHRoZSBmaWxlLlxuXHQgKiBAcmV0dXJucyBUaGUgY29udGVudCBvZiB0aGUgZmlsZSBhcyBhIHN0cmluZy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgcmVhZFRleHQocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRmlsZXNGYWNhZGUucmVhZFRleHQocGF0aCk7XG5cdH1cblxuXHQvKipcblx0ICogV3JpdGVzIHRoZSBjb250ZW50IG9mIGEgSmF2YVNjcmlwdCBieXRlIGFycmF5IHRvIGEgZmlsZS4gT3ZlcndyaXRlcyBleGlzdGluZyBjb250ZW50LlxuXHQgKlxuXHQgKiBOb3RlOiBUaGlzIG1ldGhvZCBhdXRvbWF0aWNhbGx5IGNvbnZlcnRzIHRoZSBKYXZhU2NyaXB0IGFycmF5IHRvIGEgbmF0aXZlXG5cdCAqIEphdmEgYnl0ZSBhcnJheSB1c2luZyBgQnl0ZXMudG9KYXZhQnl0ZXMoKWAgYmVmb3JlIHdyaXRpbmcuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIHRoZSBmaWxlLlxuXHQgKiBAcGFyYW0gZGF0YSBUaGUgSmF2YVNjcmlwdCBhcnJheSBvZiBieXRlIHZhbHVlcyB0byB3cml0ZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgd3JpdGVCeXRlcyhwYXRoOiBzdHJpbmcsIGRhdGE6IGFueVtdKTogdm9pZCB7XG5cdFx0Y29uc3QgbmF0aXZlID0gQnl0ZXMudG9KYXZhQnl0ZXMoZGF0YSk7XG5cdFx0RmlsZXNGYWNhZGUud3JpdGVCeXRlc05hdGl2ZShwYXRoLCBuYXRpdmUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdyaXRlcyB0aGUgY29udGVudCBvZiBhIG5hdGl2ZSBKYXZhIGJ5dGUgYXJyYXkgdG8gYSBmaWxlLiBPdmVyd3JpdGVzIGV4aXN0aW5nIGNvbnRlbnQuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIHRoZSBmaWxlLlxuXHQgKiBAcGFyYW0gZGF0YSBUaGUgbmF0aXZlIEphdmEgYnl0ZSBhcnJheSB0byB3cml0ZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgd3JpdGVCeXRlc05hdGl2ZShwYXRoOiBzdHJpbmcsIGRhdGE6IGFueVtdKTogdm9pZCB7XG5cdFx0RmlsZXNGYWNhZGUud3JpdGVCeXRlc05hdGl2ZShwYXRoLCBkYXRhKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBXcml0ZXMgYSBzdHJpbmcgb2YgdGV4dCB0byBhIGZpbGUgdXNpbmcgdGhlIHBsYXRmb3JtJ3MgZGVmYXVsdCBjaGFyYWN0ZXIgZW5jb2RpbmcuIE92ZXJ3cml0ZXMgZXhpc3RpbmcgY29udGVudC5cblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gdGhlIGZpbGUuXG5cdCAqIEBwYXJhbSB0ZXh0IFRoZSBzdHJpbmcgY29udGVudCB0byB3cml0ZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgd3JpdGVUZXh0KHBhdGg6IHN0cmluZywgdGV4dDogc3RyaW5nKTogdm9pZCB7XG5cdFx0RmlsZXNGYWNhZGUud3JpdGVUZXh0KHBhdGgsIHRleHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGxhc3QgbW9kaWZpZWQgdGltZSBvZiB0aGUgZmlsZSBvciBkaXJlY3RvcnkuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIHRoZSBmaWxlIG9yIGRpcmVjdG9yeS5cblx0ICogQHJldHVybnMgQSBKYXZhU2NyaXB0IERhdGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgbGFzdCBtb2RpZmllZCB0aW1lLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXRMYXN0TW9kaWZpZWQocGF0aDogc3RyaW5nKTogRGF0ZSB7XG5cdFx0cmV0dXJuIG5ldyBEYXRlKEZpbGVzRmFjYWRlLmdldExhc3RNb2RpZmllZChwYXRoKSk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgbGFzdCBtb2RpZmllZCB0aW1lIG9mIHRoZSBmaWxlIG9yIGRpcmVjdG9yeS5cblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gdGhlIGZpbGUgb3IgZGlyZWN0b3J5LlxuXHQgKiBAcGFyYW0gdGltZSBUaGUgbmV3IERhdGUgb2JqZWN0IHRvIHNldCBhcyB0aGUgbGFzdCBtb2RpZmllZCB0aW1lLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBzZXRMYXN0TW9kaWZpZWQocGF0aDogc3RyaW5nLCB0aW1lOiBEYXRlKTogdm9pZCB7XG5cdFx0RmlsZXNGYWNhZGUuc2V0TGFzdE1vZGlmaWVkKHBhdGgsIHRpbWUuZ2V0VGltZSgpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBvd25lciBvZiB0aGUgZmlsZSBvciBkaXJlY3RvcnkuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIHRoZSBmaWxlIG9yIGRpcmVjdG9yeS5cblx0ICogQHJldHVybnMgVGhlIG93bmVyIG5hbWUgYXMgYSBzdHJpbmcuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldE93bmVyKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIEZpbGVzRmFjYWRlLmdldE93bmVyKHBhdGgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIG93bmVyIG9mIHRoZSBmaWxlIG9yIGRpcmVjdG9yeS5cblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gdGhlIGZpbGUgb3IgZGlyZWN0b3J5LlxuXHQgKiBAcGFyYW0gb3duZXIgVGhlIG5ldyBvd25lciBuYW1lLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBzZXRPd25lcihwYXRoOiBzdHJpbmcsIG93bmVyOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRGaWxlc0ZhY2FkZS5zZXRPd25lcihwYXRoLCBvd25lcik7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgcGVybWlzc2lvbnMgc3RyaW5nIGZvciB0aGUgZmlsZSBvciBkaXJlY3RvcnkgKGltcGxlbWVudGF0aW9uIGRlcGVuZGVudCkuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIHRoZSBmaWxlIG9yIGRpcmVjdG9yeS5cblx0ICogQHJldHVybnMgVGhlIHBlcm1pc3Npb25zIHN0cmluZy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZ2V0UGVybWlzc2lvbnMocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRmlsZXNGYWNhZGUuZ2V0UGVybWlzc2lvbnMocGF0aCk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgcGVybWlzc2lvbnMgZm9yIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSAoaW1wbGVtZW50YXRpb24gZGVwZW5kZW50KS5cblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gdGhlIGZpbGUgb3IgZGlyZWN0b3J5LlxuXHQgKiBAcGFyYW0gcGVybWlzc2lvbnMgVGhlIHBlcm1pc3Npb25zIHN0cmluZy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgc2V0UGVybWlzc2lvbnMocGF0aDogc3RyaW5nLCBwZXJtaXNzaW9uczogc3RyaW5nKTogdm9pZCB7XG5cdFx0RmlsZXNGYWNhZGUuc2V0UGVybWlzc2lvbnMocGF0aCwgcGVybWlzc2lvbnMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHNpemUgb2YgdGhlIGZpbGUgaW4gYnl0ZXMuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIHRoZSBmaWxlLlxuXHQgKiBAcmV0dXJucyBUaGUgc2l6ZSBpbiBieXRlcy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgc2l6ZShwYXRoOiBzdHJpbmcpOiBudW1iZXIge1xuXHRcdHJldHVybiBGaWxlc0ZhY2FkZS5zaXplKHBhdGgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcsIGVtcHR5IGZpbGUgYXQgdGhlIHNwZWNpZmllZCBwYXRoLlxuXHQgKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB3aGVyZSB0aGUgZmlsZSBzaG91bGQgYmUgY3JlYXRlZC5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgY3JlYXRlRmlsZShwYXRoOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRGaWxlc0ZhY2FkZS5jcmVhdGVGaWxlKHBhdGgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcgZGlyZWN0b3J5IGF0IHRoZSBzcGVjaWZpZWQgcGF0aC5cblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggd2hlcmUgdGhlIGRpcmVjdG9yeSBzaG91bGQgYmUgY3JlYXRlZC5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgY3JlYXRlRGlyZWN0b3J5KHBhdGg6IHN0cmluZyk6IHZvaWQge1xuXHRcdEZpbGVzRmFjYWRlLmNyZWF0ZURpcmVjdG9yeShwYXRoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb3BpZXMgYSBmaWxlIG9yIGRpcmVjdG9yeSBmcm9tIGEgc291cmNlIHBhdGggdG8gYSB0YXJnZXQgcGF0aC5cblx0ICogQHBhcmFtIHNvdXJjZSBUaGUgc291cmNlIHBhdGguXG5cdCAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBwYXRoLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBjb3B5KHNvdXJjZTogc3RyaW5nLCB0YXJnZXQ6IHN0cmluZyk6IHZvaWQge1xuXHRcdEZpbGVzRmFjYWRlLmNvcHkoc291cmNlLCB0YXJnZXQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1vdmVzIG9yIHJlbmFtZXMgYSBmaWxlIG9yIGRpcmVjdG9yeS5cblx0ICogQHBhcmFtIHNvdXJjZSBUaGUgc291cmNlIHBhdGguXG5cdCAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBwYXRoLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBtb3ZlKHNvdXJjZTogc3RyaW5nLCB0YXJnZXQ6IHN0cmluZyk6IHZvaWQge1xuXHRcdEZpbGVzRmFjYWRlLm1vdmUoc291cmNlLCB0YXJnZXQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERlbGV0ZXMgdGhlIGZpbGUgYXQgdGhlIHNwZWNpZmllZCBwYXRoLlxuXHQgKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB0byB0aGUgZmlsZSB0byBkZWxldGUuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGRlbGV0ZUZpbGUocGF0aDogc3RyaW5nKTogdm9pZCB7XG5cdFx0RmlsZXNGYWNhZGUuZGVsZXRlRmlsZShwYXRoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZWxldGVzIHRoZSBkaXJlY3RvcnkgYXQgdGhlIHNwZWNpZmllZCBwYXRoLlxuXHQgKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IHRvIGRlbGV0ZS5cblx0ICogQHBhcmFtIGZvcmNlZCBJZiB0cnVlLCByZWN1cnNpdmVseSBkZWxldGVzIHRoZSBkaXJlY3RvcnkgYW5kIGl0cyBjb250ZW50cy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZGVsZXRlRGlyZWN0b3J5KHBhdGg6IHN0cmluZywgZm9yY2VkPzogYm9vbGVhbik6IHZvaWQge1xuXHRcdEZpbGVzRmFjYWRlLmRlbGV0ZURpcmVjdG9yeShwYXRoLCBmb3JjZWQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcgdGVtcG9yYXJ5IGZpbGUgd2l0aCB0aGUgZ2l2ZW4gcHJlZml4IGFuZCBzdWZmaXguXG5cdCAqIEBwYXJhbSBwcmVmaXggVGhlIHByZWZpeCBzdHJpbmcgdG8gYmUgdXNlZCBpbiBnZW5lcmF0aW5nIHRoZSBmaWxlJ3MgbmFtZS5cblx0ICogQHBhcmFtIHN1ZmZpeCBUaGUgc3VmZml4IHN0cmluZyB0byBiZSB1c2VkIGluIGdlbmVyYXRpbmcgdGhlIGZpbGUncyBuYW1lLlxuXHQgKiBAcmV0dXJucyBUaGUgcGF0aCBvZiB0aGUgY3JlYXRlZCB0ZW1wb3JhcnkgZmlsZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgY3JlYXRlVGVtcEZpbGUocHJlZml4OiBzdHJpbmcsIHN1ZmZpeDogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRmlsZXNGYWNhZGUuY3JlYXRlVGVtcEZpbGUocHJlZml4LCBzdWZmaXgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcgdGVtcG9yYXJ5IGRpcmVjdG9yeSB3aXRoIHRoZSBnaXZlbiBwcmVmaXguXG5cdCAqIEBwYXJhbSBwcmVmaXggVGhlIHByZWZpeCBzdHJpbmcgdG8gYmUgdXNlZCBpbiBnZW5lcmF0aW5nIHRoZSBkaXJlY3RvcnkncyBuYW1lLlxuXHQgKiBAcmV0dXJucyBUaGUgcGF0aCBvZiB0aGUgY3JlYXRlZCB0ZW1wb3JhcnkgZGlyZWN0b3J5LlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBjcmVhdGVUZW1wRGlyZWN0b3J5KHByZWZpeDogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRmlsZXNGYWNhZGUuY3JlYXRlVGVtcERpcmVjdG9yeShwcmVmaXgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYW5kIHJldHVybnMgYSBuZXcge0BsaW5rIElucHV0U3RyZWFtfSBmb3IgcmVhZGluZyBkYXRhIGZyb20gdGhlIGZpbGUuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIHRoZSBmaWxlLlxuXHQgKiBAcmV0dXJucyBBIG5ldyBJbnB1dFN0cmVhbSBpbnN0YW5jZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgY3JlYXRlSW5wdXRTdHJlYW0ocGF0aDogc3RyaW5nKTogSW5wdXRTdHJlYW0ge1xuXHRcdGNvbnN0IG5hdGl2ZSA9IEZpbGVzRmFjYWRlLmNyZWF0ZUlucHV0U3RyZWFtKHBhdGgpO1xuXHRcdHJldHVybiBuZXcgSW5wdXRTdHJlYW0obmF0aXZlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGFuZCByZXR1cm5zIGEgbmV3IHtAbGluayBPdXRwdXRTdHJlYW19IGZvciB3cml0aW5nIGRhdGEgdG8gdGhlIGZpbGUuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIHRoZSBmaWxlLlxuXHQgKiBAcmV0dXJucyBBIG5ldyBPdXRwdXRTdHJlYW0gaW5zdGFuY2UuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGNyZWF0ZU91dHB1dFN0cmVhbShwYXRoOiBzdHJpbmcpOiBPdXRwdXRTdHJlYW0ge1xuXHRcdGNvbnN0IG5hdGl2ZSA9IEZpbGVzRmFjYWRlLmNyZWF0ZU91dHB1dFN0cmVhbShwYXRoKTtcblx0XHRyZXR1cm4gbmV3IE91dHB1dFN0cmVhbShuYXRpdmUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRyYXZlcnNlcyBhIGRpcmVjdG9yeSBhbmQgcmV0dXJucyBhIHN0cnVjdHVyZWQge0BsaW5rIEZvbGRlck9iamVjdH0gaGllcmFyY2h5LlxuXHQgKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB0byB0aGUgZm9sZGVyIHRvIHRyYXZlcnNlLlxuXHQgKiBAcmV0dXJucyBUaGUgcm9vdCBGb2xkZXJPYmplY3QgY29udGFpbmluZyB0aGUgZmlsZSBzeXN0ZW0gdHJlZSBzdHJ1Y3R1cmUuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHRyYXZlcnNlKHBhdGg6IHN0cmluZyk6IEZvbGRlck9iamVjdFtdIHtcblx0XHRyZXR1cm4gSlNPTi5wYXJzZShGaWxlc0ZhY2FkZS50cmF2ZXJzZShwYXRoKSk7XG5cdH1cblxuXHQvKipcblx0ICogTGlzdHMgdGhlIGRpcmVjdCBjaGlsZHJlbiAoZmlsZXMgYW5kIGZvbGRlcnMpIG9mIGEgZGlyZWN0b3J5LCByZXR1cm5pbmcgb25seSB0aGVpciBwYXRocy5cblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gdGhlIGRpcmVjdG9yeS5cblx0ICogQHJldHVybnMgQW4gYXJyYXkgb2Ygc3RyaW5nIHBhdGhzIGZvciB0aGUgY29udGVudHMgb2YgdGhlIGRpcmVjdG9yeS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgbGlzdChwYXRoOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG5cdFx0Ly8gVGhlIG5hdGl2ZSBmYWNhZGUgcmV0dXJucyBhIEpTT04gYXJyYXkgb2Ygb2JqZWN0cywgd2hpY2ggaXMgdGhlbiBtYXBwZWQgdG8gYW4gYXJyYXkgb2YgcGF0aHMuXG5cdFx0cmV0dXJuIEpTT04ucGFyc2UoRmlsZXNGYWNhZGUubGlzdChwYXRoKSkubWFwKGUgPT4gZS5wYXRoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBGaW5kcyBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgbWF0Y2hpbmcgYSBzcGVjaWZpZWQgZ2xvYiBwYXR0ZXJuIHdpdGhpbiBhIGRpcmVjdG9yeSB0cmVlLlxuXHQgKiBAcGFyYW0gcGF0aCBUaGUgc3RhcnRpbmcgcGF0aCBmb3IgdGhlIHNlYXJjaC5cblx0ICogQHBhcmFtIHBhdHRlcm4gVGhlIGdsb2IgcGF0dGVybiB0byBtYXRjaCAoZS5nLiwgXCIqLmpzXCIsIFwiKioudHh0XCIpLlxuXHQgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBzdHJpbmcgcGF0aHMgdGhhdCBtYXRjaCB0aGUgcGF0dGVybi5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZmluZChwYXRoOiBzdHJpbmcsIHBhdHRlcm46IHN0cmluZyk6IHN0cmluZ1tdIHtcblx0XHRyZXR1cm4gSlNPTi5wYXJzZShGaWxlc0ZhY2FkZS5maW5kKHBhdGgsIHBhdHRlcm4pKTtcblx0fVxufVxuXG4vLyBAdHMtaWdub3JlXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0Ly8gQHRzLWlnbm9yZVxuXHRtb2R1bGUuZXhwb3J0cyA9IEZpbGVzO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUEscUJBQTBDO0FBQzFDLG1CQUFzQjtBQUV0QixNQUFNLGNBQWMsS0FBSyxLQUFLLHFEQUFxRDtBQUNuRixNQUFNLE9BQU8sS0FBSyxLQUFLLGNBQWM7QUEwQjlCLE1BQU0sTUFBTTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS2xCLE9BQXVCLFlBQW9CLEtBQUs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPaEQsT0FBYyxPQUFPLE1BQXVCO0FBQzNDLFdBQU8sWUFBWSxPQUFPLElBQUk7QUFBQSxFQUMvQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLE9BQWMsYUFBYSxNQUF1QjtBQUNqRCxXQUFPLFlBQVksYUFBYSxJQUFJO0FBQUEsRUFDckM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FB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
@@ -102,6 +102,8 @@ class Streams {
102
102
  }
103
103
  }
104
104
  class InputStream {
105
+ /** The underlying native Java stream object. */
106
+ native;
105
107
  /**
106
108
  * @param native The native Java InputStream object.
107
109
  */
@@ -156,6 +158,8 @@ class InputStream {
156
158
  }
157
159
  }
158
160
  class OutputStream {
161
+ /** The underlying native Java stream object. */
162
+ native;
159
163
  /**
160
164
  * @param native The native Java OutputStream object.
161
165
  */
@@ -240,4 +244,4 @@ class OutputStream {
240
244
  if (typeof module !== "undefined") {
241
245
  module.exports = Streams;
242
246
  }
243
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2lvL3N0cmVhbXMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogUHJvdmlkZXMgY29yZSBmdW5jdGlvbmFsaXR5IGZvciBpbnB1dC9vdXRwdXQgc3RyZWFtIG1hbmFnZW1lbnQsXG4gKiBpbmNsdWRpbmcgc3RyZWFtIGNyZWF0aW9uLCBkYXRhIHRyYW5zZmVyLCBhbmQgYnl0ZSBhcnJheSBoYW5kbGluZy5cbiAqL1xuaW1wb3J0IHsgQnl0ZXMgfSBmcm9tIFwiQGFlcm9raXQvc2RrL2lvL2J5dGVzXCI7XG5cbmNvbnN0IFN0cmVhbXNGYWNhZGUgPSBKYXZhLnR5cGUoXCJvcmcuZWNsaXBzZS5kaXJpZ2libGUuY29tcG9uZW50cy5hcGkuaW8uU3RyZWFtc0ZhY2FkZVwiKTtcblxuLyoqXG4gKiBUaGUgU3RyZWFtcyBjbGFzcyBwcm92aWRlcyBzdGF0aWMgdXRpbGl0eSBtZXRob2RzIGZvciBzdHJlYW0gY3JlYXRpb24sXG4gKiBtYW5pcHVsYXRpb24sIGFuZCBkYXRhIGNvcHlpbmcuXG4gKi9cbmV4cG9ydCBjbGFzcyBTdHJlYW1zIHtcblxuXHQvKipcblx0ICogQ29waWVzIGFsbCBieXRlcyBmcm9tIHRoZSBpbnB1dCBzdHJlYW0gdG8gdGhlIG91dHB1dCBzdHJlYW0uXG5cdCAqIFRoaXMgbWV0aG9kIGlzIGdlbmVyYWxseSB1c2VkIGZvciBzbWFsbGVyIHN0cmVhbXMuXG5cdCAqXG5cdCAqIEBwYXJhbSBpbnB1dCBUaGUgc291cmNlIHtAbGluayBJbnB1dFN0cmVhbX0uXG5cdCAqIEBwYXJhbSBvdXRwdXQgVGhlIGRlc3RpbmF0aW9uIHtAbGluayBPdXRwdXRTdHJlYW19LlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBjb3B5KGlucHV0OiBJbnB1dFN0cmVhbSwgb3V0cHV0OiBPdXRwdXRTdHJlYW0pOiB2b2lkIHtcblx0XHRTdHJlYW1zRmFjYWRlLmNvcHkoaW5wdXQubmF0aXZlLCBvdXRwdXQubmF0aXZlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb3BpZXMgYWxsIGJ5dGVzIGZyb20gdGhlIGlucHV0IHN0cmVhbSB0byB0aGUgb3V0cHV0IHN0cmVhbSB1c2luZyBhIGxhcmdlIGJ1ZmZlcixcblx0ICogc3VpdGFibGUgZm9yIGxhcmdlIGZpbGUgdHJhbnNmZXJzLlxuXHQgKlxuXHQgKiBAcGFyYW0gaW5wdXQgVGhlIHNvdXJjZSB7QGxpbmsgSW5wdXRTdHJlYW19LlxuXHQgKiBAcGFyYW0gb3V0cHV0IFRoZSBkZXN0aW5hdGlvbiB7QGxpbmsgT3V0cHV0U3RyZWFtfS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgY29weUxhcmdlKGlucHV0OiBJbnB1dFN0cmVhbSwgb3V0cHV0OiBPdXRwdXRTdHJlYW0pOiB2b2lkIHtcblx0XHRTdHJlYW1zRmFjYWRlLmNvcHlMYXJnZShpbnB1dC5uYXRpdmUsIG91dHB1dC5uYXRpdmUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIElucHV0U3RyZWFtfSBmcm9tIGEgcmVzb3VyY2UgYWNjZXNzaWJsZSB2aWEgdGhlIGNsYXNzIGxvYWRlci5cblx0ICogVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCB0byByZWFkIGJ1bmRsZWQgcmVzb3VyY2VzIHdpdGhpbiB0aGUgYXBwbGljYXRpb24gcnVudGltZS5cblx0ICpcblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gdGhlIHJlc291cmNlLlxuXHQgKiBAcmV0dXJucyBBIG5ldyB7QGxpbmsgSW5wdXRTdHJlYW19IGluc3RhbmNlIGZvciB0aGUgcmVzb3VyY2UuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldFJlc291cmNlQXNCeXRlQXJyYXlJbnB1dFN0cmVhbShwYXRoOiBzdHJpbmcpOiBJbnB1dFN0cmVhbSB7XG5cdFx0Y29uc3QgbmF0aXZlID0gU3RyZWFtc0ZhY2FkZS5nZXRSZXNvdXJjZUFzQnl0ZUFycmF5SW5wdXRTdHJlYW0ocGF0aCk7XG5cdFx0cmV0dXJuIG5ldyBJbnB1dFN0cmVhbShuYXRpdmUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIElucHV0U3RyZWFtfSBmcm9tIGEgSmF2YVNjcmlwdCBieXRlIGFycmF5IChgYW55W11gKS5cblx0ICpcblx0ICogQHBhcmFtIGRhdGEgVGhlIEphdmFTY3JpcHQgYXJyYXkgb2YgYnl0ZSB2YWx1ZXMgKGBudW1iZXJbXWApLlxuXHQgKiBAcmV0dXJucyBBIG5ldyB7QGxpbmsgSW5wdXRTdHJlYW19IGluc3RhbmNlIGluaXRpYWxpemVkIHdpdGggdGhlIGJ5dGUgZGF0YS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgY3JlYXRlQnl0ZUFycmF5SW5wdXRTdHJlYW0oZGF0YTogYW55W10pOiBJbnB1dFN0cmVhbSB7XG5cdFx0Ly8gQ29udmVydCBKYXZhU2NyaXB0IGJ5dGUgYXJyYXkgdG8gbmF0aXZlIEphdmEgYnl0ZSBhcnJheVxuXHRcdGNvbnN0IGFycmF5ID0gQnl0ZXMudG9KYXZhQnl0ZXMoZGF0YSk7XG5cdFx0Y29uc3QgbmF0aXZlID0gU3RyZWFtc0ZhY2FkZS5jcmVhdGVCeXRlQXJyYXlJbnB1dFN0cmVhbShhcnJheSk7XG5cdFx0cmV0dXJuIG5ldyBJbnB1dFN0cmVhbShuYXRpdmUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIE91dHB1dFN0cmVhbX0gdGhhdCB3cml0ZXMgZGF0YSBpbnRvIGFuIGluLW1lbW9yeSBieXRlIGFycmF5LlxuXHQgKiBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGFzIGEgYnVmZmVyIHRvIGNhcHR1cmUgb3V0cHV0IGJlZm9yZSBwcm9jZXNzaW5nIGl0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyBBIG5ldyB7QGxpbmsgT3V0cHV0U3RyZWFtfSBpbnN0YW5jZSBiYWNrZWQgYnkgYSBieXRlIGFycmF5LlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBjcmVhdGVCeXRlQXJyYXlPdXRwdXRTdHJlYW0oKTogT3V0cHV0U3RyZWFtIHtcblx0XHRjb25zdCBuYXRpdmUgPSBTdHJlYW1zRmFjYWRlLmNyZWF0ZUJ5dGVBcnJheU91dHB1dFN0cmVhbSgpO1xuXHRcdHJldHVybiBuZXcgT3V0cHV0U3RyZWFtKG5hdGl2ZSk7XG5cdH1cblxuXHQvKipcblx0ICogV3JhcHMgYSBuYXRpdmUgKEphdmEpIElucHV0U3RyZWFtIG9iamVjdCBpbnRvIGEgbmV3IEphdmFTY3JpcHQge0BsaW5rIElucHV0U3RyZWFtfSBpbnN0YW5jZS5cblx0ICpcblx0ICogQHBhcmFtIG5hdGl2ZSBUaGUgdW5kZXJseWluZyBuYXRpdmUgSW5wdXRTdHJlYW0gb2JqZWN0LlxuXHQgKiBAcmV0dXJucyBBIG5ldyB7QGxpbmsgSW5wdXRTdHJlYW19IHdyYXBwZXIuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGNyZWF0ZUlucHV0U3RyZWFtKG5hdGl2ZTogYW55KTogSW5wdXRTdHJlYW0ge1xuXHRcdGNvbnN0IGlucHV0U3RyZWFtID0gbmV3IElucHV0U3RyZWFtKG5hdGl2ZSk7XG5cdFx0cmV0dXJuIGlucHV0U3RyZWFtO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdyYXBzIGEgbmF0aXZlIChKYXZhKSBPdXRwdXRTdHJlYW0gb2JqZWN0IGludG8gYSBuZXcgSmF2YVNjcmlwdCB7QGxpbmsgT3V0cHV0U3RyZWFtfSBpbnN0YW5jZS5cblx0ICpcblx0ICogTm90ZTogVGhpcyBtZXRob2QgaXMgbm90IHN0YXRpYyBpbiB0aGUgb3JpZ2luYWwgZGVmaW5pdGlvbiwgYnV0IGlzIHBsYWNlZCBoZXJlIGZvciBjb21wbGV0ZW5lc3Ncblx0ICogYW5kIGNvbnNpc3RlbmN5IHdpdGggb3RoZXIgZmFjdG9yeSBtZXRob2RzLlxuXHQgKlxuXHQgKiBAcGFyYW0gbmF0aXZlIFRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBPdXRwdXRTdHJlYW0gb2JqZWN0LlxuXHQgKiBAcmV0dXJucyBBIG5ldyB7QGxpbmsgT3V0cHV0U3RyZWFtfSB3cmFwcGVyLlxuXHQgKi9cblx0cHVibGljIGNyZWF0ZU91dHB1dFN0cmVhbShuYXRpdmU6IGFueSk6IE91dHB1dFN0cmVhbSB7XG5cdFx0Y29uc3Qgb3V0cHV0U3RyZWFtID0gbmV3IE91dHB1dFN0cmVhbShuYXRpdmUpO1xuXHRcdHJldHVybiBvdXRwdXRTdHJlYW07XG5cdH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIGlucHV0IHN0cmVhbSBmb3IgcmVhZGluZyBieXRlcy5cbiAqIFRoaXMgY2xhc3Mgd3JhcHMgYSBuYXRpdmUgc3RyZWFtIG9iamVjdCBhbmQgcHJvdmlkZXMgbWV0aG9kcyBmb3IgcmVhZGluZyBkYXRhLlxuICovXG5leHBvcnQgY2xhc3MgSW5wdXRTdHJlYW0ge1xuXG5cdC8qKiBUaGUgdW5kZXJseWluZyBuYXRpdmUgSmF2YSBzdHJlYW0gb2JqZWN0LiAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cblx0LyoqXG5cdCAqIEBwYXJhbSBuYXRpdmUgVGhlIG5hdGl2ZSBKYXZhIElucHV0U3RyZWFtIG9iamVjdC5cblx0ICovXG5cdGNvbnN0cnVjdG9yKG5hdGl2ZTogYW55KSB7XG5cdFx0dGhpcy5uYXRpdmUgPSBuYXRpdmU7XG5cdH1cblxuXHQvKipcblx0ICogUmVhZHMgdGhlIG5leHQgYnl0ZSBvZiBkYXRhIGZyb20gdGhpcyBpbnB1dCBzdHJlYW0uXG5cdCAqIEByZXR1cm5zIFRoZSBuZXh0IGJ5dGUgb2YgZGF0YSwgb3IgLTEgaWYgdGhlIGVuZCBvZiB0aGUgc3RyZWFtIGlzIHJlYWNoZWQuXG5cdCAqL1xuXHRwdWJsaWMgcmVhZCgpOiBudW1iZXIge1xuXHRcdHJldHVybiBTdHJlYW1zRmFjYWRlLnJlYWQodGhpcy5uYXRpdmUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlYWRzIGFsbCByZW1haW5pbmcgYnl0ZXMgZnJvbSB0aGUgc3RyZWFtIGFuZCByZXR1cm5zIHRoZW0gYXMgYSBKYXZhU2NyaXB0IGFycmF5LlxuXHQgKlxuXHQgKiBAcmV0dXJucyBBIEphdmFTY3JpcHQgYXJyYXkgKGBudW1iZXJbXWApIG9mIHRoZSBieXRlIHZhbHVlcy5cblx0ICovXG5cdHB1YmxpYyByZWFkQnl0ZXMoKTogYW55W10ge1xuXHRcdGNvbnN0IG5hdGl2ZSA9IFN0cmVhbXNGYWNhZGUucmVhZEJ5dGVzKHRoaXMubmF0aXZlKTtcblx0XHRyZXR1cm4gQnl0ZXMudG9KYXZhU2NyaXB0Qnl0ZXMobmF0aXZlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWFkcyBhbGwgcmVtYWluaW5nIGJ5dGVzIGZyb20gdGhlIHN0cmVhbSBhbmQgcmV0dXJucyB0aGUgbmF0aXZlIEphdmEgYnl0ZSBhcnJheS5cblx0ICpcblx0ICogQHJldHVybnMgVGhlIG5hdGl2ZSBKYXZhIGJ5dGUgYXJyYXkgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHJlYWRCeXRlc05hdGl2ZSgpOiBhbnlbXSB7XG5cdFx0cmV0dXJuIFN0cmVhbXNGYWNhZGUucmVhZEJ5dGVzKHRoaXMubmF0aXZlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWFkcyBhbGwgcmVtYWluaW5nIGJ5dGVzIGZyb20gdGhlIHN0cmVhbSBhbmQgY29udmVydHMgdGhlbSB0byBhIHN0cmluZ1xuXHQgKiB1c2luZyB0aGUgcGxhdGZvcm0ncyBkZWZhdWx0IGNoYXJhY3RlciBlbmNvZGluZy5cblx0ICpcblx0ICogQHJldHVybnMgVGhlIGNvbnRlbnQgb2YgdGhlIHN0cmVhbSBhcyBhIHN0cmluZy5cblx0ICovXG5cdHB1YmxpYyByZWFkVGV4dCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiBTdHJlYW1zRmFjYWRlLnJlYWRUZXh0KHRoaXMubmF0aXZlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDbG9zZXMgdGhpcyBpbnB1dCBzdHJlYW0gYW5kIHJlbGVhc2VzIGFueSBzeXN0ZW0gcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCBpdC5cblx0ICovXG5cdHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcblx0XHRTdHJlYW1zRmFjYWRlLmNsb3NlKHRoaXMubmF0aXZlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhlIHVuZGVybHlpbmcgbmF0aXZlIHN0cmVhbSBvYmplY3QgaXMgZGVmaW5lZCBhbmQgbm9uLW51bGwuXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHN0cmVhbSBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuXHQgKi9cblx0cHVibGljIGlzVmFsaWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlICE9PSB1bmRlZmluZWQgJiYgdGhpcy5uYXRpdmUgIT09IG51bGw7XG5cdH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIG91dHB1dCBzdHJlYW0gZm9yIHdyaXRpbmcgYnl0ZXMuXG4gKiBUaGlzIGNsYXNzIHdyYXBzIGEgbmF0aXZlIHN0cmVhbSBvYmplY3QgYW5kIHByb3ZpZGVzIG1ldGhvZHMgZm9yIHdyaXRpbmcgZGF0YS5cbiAqL1xuZXhwb3J0IGNsYXNzIE91dHB1dFN0cmVhbSB7XG5cblx0LyoqIFRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBKYXZhIHN0cmVhbSBvYmplY3QuICovXG5cdHB1YmxpYyByZWFkb25seSBuYXRpdmU6IGFueTtcblxuXHQvKipcblx0ICogQHBhcmFtIG5hdGl2ZSBUaGUgbmF0aXZlIEphdmEgT3V0cHV0U3RyZWFtIG9iamVjdC5cblx0ICovXG5cdGNvbnN0cnVjdG9yKG5hdGl2ZTogYW55KSB7XG5cdFx0dGhpcy5uYXRpdmUgPSBuYXRpdmU7XG5cdH1cblxuXHQvKipcblx0ICogV3JpdGVzIHRoZSBzcGVjaWZpZWQgYnl0ZSB0byB0aGlzIG91dHB1dCBzdHJlYW0uXG5cdCAqIEBwYXJhbSBieXRlIFRoZSBieXRlIChhcyBhIG51bWJlciAwLTI1NSkgdG8gd3JpdGUuXG5cdCAqL1xuXHRwdWJsaWMgd3JpdGUoYnl0ZTogbnVtYmVyKTogdm9pZCB7XG5cdFx0U3RyZWFtc0ZhY2FkZS53cml0ZSh0aGlzLm5hdGl2ZSwgYnl0ZSk7XG5cdH1cblxuXHQvKipcblx0ICogV3JpdGVzIHRoZSBlbnRpcmUgY29udGVudCBvZiBhIEphdmFTY3JpcHQgYnl0ZSBhcnJheSB0byB0aGlzIG91dHB1dCBzdHJlYW0uXG5cdCAqXG5cdCAqIEBwYXJhbSBkYXRhIFRoZSBKYXZhU2NyaXB0IGFycmF5IChgbnVtYmVyW11gKSBvZiBieXRlIHZhbHVlcyB0byB3cml0ZS5cblx0ICovXG5cdHB1YmxpYyB3cml0ZUJ5dGVzKGRhdGE6IGFueVtdKTogdm9pZCB7XG5cdFx0Ly8gQ29udmVydCBKYXZhU2NyaXB0IGJ5dGUgYXJyYXkgdG8gbmF0aXZlIEphdmEgYnl0ZSBhcnJheVxuXHRcdGNvbnN0IG5hdGl2ZSA9IEJ5dGVzLnRvSmF2YUJ5dGVzKGRhdGEpO1xuXHRcdFN0cmVhbXNGYWNhZGUud3JpdGVCeXRlcyh0aGlzLm5hdGl2ZSwgbmF0aXZlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBXcml0ZXMgdGhlIGVudGlyZSBjb250ZW50IG9mIGEgbmF0aXZlIEphdmEgYnl0ZSBhcnJheSB0byB0aGlzIG91dHB1dCBzdHJlYW0uXG5cdCAqXG5cdCAqIEBwYXJhbSBkYXRhIFRoZSBuYXRpdmUgSmF2YSBieXRlIGFycmF5IG9iamVjdCB0byB3cml0ZS5cblx0ICovXG5cdHB1YmxpYyB3cml0ZUJ5dGVzTmF0aXZlKGRhdGE6IGFueVtdKTogdm9pZCB7XG5cdFx0U3RyZWFtc0ZhY2FkZS53cml0ZUJ5dGVzKHRoaXMubmF0aXZlLCBkYXRhKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0cyB0aGUgc3RyaW5nIHRvIGJ5dGVzIHVzaW5nIHRoZSBwbGF0Zm9ybSdzIGRlZmF1bHQgY2hhcmFjdGVyIGVuY29kaW5nXG5cdCAqIGFuZCB3cml0ZXMgdGhlbSB0byB0aGlzIG91dHB1dCBzdHJlYW0uXG5cdCAqXG5cdCAqIEBwYXJhbSB0ZXh0IFRoZSBzdHJpbmcgY29udGVudCB0byB3cml0ZS5cblx0ICovXG5cdHB1YmxpYyB3cml0ZVRleHQodGV4dDogc3RyaW5nKTogdm9pZCB7XG5cdFx0U3RyZWFtc0ZhY2FkZS53cml0ZVRleHQodGhpcy5uYXRpdmUsIHRleHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENsb3NlcyB0aGlzIG91dHB1dCBzdHJlYW0gYW5kIHJlbGVhc2VzIGFueSBzeXN0ZW0gcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCBpdC5cblx0ICovXG5cdHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcblx0XHRTdHJlYW1zRmFjYWRlLmNsb3NlKHRoaXMubmF0aXZlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGNvbnRlbnQgd3JpdHRlbiB0byB0aGlzIHN0cmVhbSBhcyBhIEphdmFTY3JpcHQgYnl0ZSBhcnJheS5cblx0ICogVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCB3aXRoIGEgQnl0ZUFycmF5T3V0cHV0U3RyZWFtLlxuXHQgKlxuXHQgKiBAcmV0dXJucyBBIEphdmFTY3JpcHQgYXJyYXkgKGBudW1iZXJbXWApIG9mIHRoZSBieXRlIHZhbHVlcyB3cml0dGVuIHRvIHRoZSBzdHJlYW0uXG5cdCAqL1xuXHRwdWJsaWMgZ2V0Qnl0ZXMoKTogYW55W10ge1xuXHRcdGNvbnN0IG5hdGl2ZSA9IFN0cmVhbXNGYWNhZGUuZ2V0Qnl0ZXModGhpcy5uYXRpdmUpO1xuXHRcdHJldHVybiBCeXRlcy50b0phdmFTY3JpcHRCeXRlcyhuYXRpdmUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgY29udGVudCB3cml0dGVuIHRvIHRoaXMgc3RyZWFtIGFzIHRoZSBuYXRpdmUgSmF2YSBieXRlIGFycmF5LlxuXHQgKiBUaGlzIGlzIHR5cGljYWxseSB1c2VkIHdpdGggYSBCeXRlQXJyYXlPdXRwdXRTdHJlYW0uXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSBuYXRpdmUgSmF2YSBieXRlIGFycmF5IG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBnZXRCeXRlc05hdGl2ZSgpOiBhbnlbXSB7XG5cdFx0cmV0dXJuIFN0cmVhbXNGYWNhZGUuZ2V0Qnl0ZXModGhpcy5uYXRpdmUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgY29udGVudCB3cml0dGVuIHRvIHRoaXMgc3RyZWFtIGFzIGEgc3RyaW5nIHVzaW5nIHRoZSBwbGF0Zm9ybSdzXG5cdCAqIGRlZmF1bHQgY2hhcmFjdGVyIGVuY29kaW5nLiBUaGlzIGlzIHR5cGljYWxseSB1c2VkIHdpdGggYSBCeXRlQXJyYXlPdXRwdXRTdHJlYW0uXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSBjb250ZW50IG9mIHRoZSBzdHJlYW0gYXMgYSBzdHJpbmcuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0VGV4dCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiBTdHJlYW1zRmFjYWRlLmdldFRleHQodGhpcy5uYXRpdmUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGUgdW5kZXJseWluZyBuYXRpdmUgc3RyZWFtIG9iamVjdCBpcyBkZWZpbmVkIGFuZCBub24tbnVsbC5cblx0ICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgc3RyZWFtIGlzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UuXG5cdCAqL1xuXHRwdWJsaWMgaXNWYWxpZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLm5hdGl2ZSAhPT0gbnVsbDtcblx0fVxufVxuXG4vLyBAdHMtaWdub3JlXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0Ly8gQHRzLWlnbm9yZVxuXHRtb2R1bGUuZXhwb3J0cyA9IFN0cmVhbXM7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUEsbUJBQXNCO0FBRXRCLE1BQU0sZ0JBQWdCLEtBQUssS0FBSyx1REFBdUQ7QUFNaEYsTUFBTSxRQUFRO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVNwQixPQUFjLEtBQUssT0FBb0IsUUFBNEI7QUFDbEUsa0JBQWMsS0FBSyxNQUFNLFFBQVEsT0FBTyxNQUFNO0FBQUEsRUFDL0M7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU0EsT0FBYyxVQUFVLE9BQW9CLFFBQTRCO0FBQ3ZFLGtCQUFjLFVBQVUsTUFBTSxRQUFRLE9BQU8sTUFBTTtBQUFBLEVBQ3BEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVNBLE9BQWMsa0NBQWtDLE1BQTJCO0FBQzFFLFVBQU0sU0FBUyxjQUFjLGtDQUFrQyxJQUFJO0FBQ25FLFdBQU8sSUFBSSxZQUFZLE1BQU07QUFBQSxFQUM5QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUUEsT0FBYywyQkFBMkIsTUFBMEI7QUFFbEUsVUFBTSxRQUFRLG1CQUFNLFlBQVksSUFBSTtBQUNwQyxVQUFNLFNBQVMsY0FBYywyQkFBMkIsS0FBSztBQUM3RCxXQUFPLElBQUksWUFBWSxNQUFNO0FBQUEsRUFDOUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFBLE9BQWMsOEJBQTRDO0FBQ3pELFVBQU0sU0FBUyxjQUFjLDRCQUE0QjtBQUN6RCxXQUFPLElBQUksYUFBYSxNQUFNO0FBQUEsRUFDL0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFBLE9BQWMsa0JBQWtCLFFBQTBCO0FBQ3pELFVBQU0sY0FBYyxJQUFJLFlBQVksTUFBTTtBQUMxQyxXQUFPO0FBQUEsRUFDUjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBV08sbUJBQW1CLFFBQTJCO0FBQ3BELFVBQU0sZUFBZSxJQUFJLGFBQWEsTUFBTTtBQUM1QyxXQUFPO0FBQUEsRUFDUjtBQUNEO0FBTU8sTUFBTSxZQUFZO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFReEIsWUFBWSxRQUFhO0FBQ3hCLFNBQUssU0FBUztBQUFBLEVBQ2Y7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTU8sT0FBZTtBQUNyQixXQUFPLGNBQWMsS0FBSyxLQUFLLE1BQU07QUFBQSxFQUN0QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9PLFlBQW1CO0FBQ3pCLFVBQU0sU0FBUyxjQUFjLFVBQVUsS0FBSyxNQUFNO0FBQ2xELFdBQU8sbUJBQU0sa0JBQWtCLE1BQU07QUFBQSxFQUN0QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9PLGtCQUF5QjtBQUMvQixXQUFPLGNBQWMsVUFBVSxLQUFLLE1BQU07QUFBQSxFQUMzQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sV0FBbUI7QUFDekIsV0FBTyxjQUFjLFNBQVMsS0FBSyxNQUFNO0FBQUEsRUFDMUM7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtPLFFBQWM7QUFDcEIsa0JBQWMsTUFBTSxLQUFLLE1BQU07QUFBQSxFQUNoQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNTyxVQUFtQjtBQUN6QixXQUFPLEtBQUssV0FBVyxVQUFhLEtBQUssV0FBVztBQUFBLEVBQ3JEO0FBQ0Q7QUFNTyxNQUFNLGFBQWE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVF6QixZQUFZLFFBQWE7QUFDeEIsU0FBSyxTQUFTO0FBQUEsRUFDZjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNTyxNQUFNLE1BQW9CO0FBQ2hDLGtCQUFjLE1BQU0sS0FBSyxRQUFRLElBQUk7QUFBQSxFQUN0QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9PLFdBQVcsTUFBbUI7QUFFcEMsVUFBTSxTQUFTLG1CQUFNLFlBQVksSUFBSTtBQUNyQyxrQkFBYyxXQUFXLEtBQUssUUFBUSxNQUFNO0FBQUEsRUFDN0M7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPTyxpQkFBaUIsTUFBbUI7QUFDMUMsa0JBQWMsV0FBVyxLQUFLLFFBQVEsSUFBSTtBQUFBLEVBQzNDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRTyxVQUFVLE1BQW9CO0FBQ3BDLGtCQUFjLFVBQVUsS0FBSyxRQUFRLElBQUk7QUFBQSxFQUMxQztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS08sUUFBYztBQUNwQixrQkFBYyxNQUFNLEtBQUssTUFBTTtBQUFBLEVBQ2hDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRTyxXQUFrQjtBQUN4QixVQUFNLFNBQVMsY0FBYyxTQUFTLEtBQUssTUFBTTtBQUNqRCxXQUFPLG1CQUFNLGtCQUFrQixNQUFNO0FBQUEsRUFDdEM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFPLGlCQUF3QjtBQUM5QixXQUFPLGNBQWMsU0FBUyxLQUFLLE1BQU07QUFBQSxFQUMxQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sVUFBa0I7QUFDeEIsV0FBTyxjQUFjLFFBQVEsS0FBSyxNQUFNO0FBQUEsRUFDekM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTU8sVUFBbUI7QUFDekIsV0FBTyxLQUFLLFdBQVcsVUFBYSxLQUFLLFdBQVc7QUFBQSxFQUNyRDtBQUNEO0FBR0EsSUFBSSxPQUFPLFdBQVcsYUFBYTtBQUVsQyxTQUFPLFVBQVU7QUFDbEI7IiwKICAibmFtZXMiOiBbXQp9Cg==
247
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2lvL3N0cmVhbXMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogUHJvdmlkZXMgY29yZSBmdW5jdGlvbmFsaXR5IGZvciBpbnB1dC9vdXRwdXQgc3RyZWFtIG1hbmFnZW1lbnQsXG4gKiBpbmNsdWRpbmcgc3RyZWFtIGNyZWF0aW9uLCBkYXRhIHRyYW5zZmVyLCBhbmQgYnl0ZSBhcnJheSBoYW5kbGluZy5cbiAqL1xuaW1wb3J0IHsgQnl0ZXMgfSBmcm9tIFwiQGFlcm9raXQvc2RrL2lvL2J5dGVzXCI7XG5cbmNvbnN0IFN0cmVhbXNGYWNhZGUgPSBKYXZhLnR5cGUoXCJvcmcuZWNsaXBzZS5kaXJpZ2libGUuY29tcG9uZW50cy5hcGkuaW8uU3RyZWFtc0ZhY2FkZVwiKTtcblxuLyoqXG4gKiBUaGUgU3RyZWFtcyBjbGFzcyBwcm92aWRlcyBzdGF0aWMgdXRpbGl0eSBtZXRob2RzIGZvciBzdHJlYW0gY3JlYXRpb24sXG4gKiBtYW5pcHVsYXRpb24sIGFuZCBkYXRhIGNvcHlpbmcuXG4gKi9cbmV4cG9ydCBjbGFzcyBTdHJlYW1zIHtcblxuXHQvKipcblx0ICogQ29waWVzIGFsbCBieXRlcyBmcm9tIHRoZSBpbnB1dCBzdHJlYW0gdG8gdGhlIG91dHB1dCBzdHJlYW0uXG5cdCAqIFRoaXMgbWV0aG9kIGlzIGdlbmVyYWxseSB1c2VkIGZvciBzbWFsbGVyIHN0cmVhbXMuXG5cdCAqXG5cdCAqIEBwYXJhbSBpbnB1dCBUaGUgc291cmNlIHtAbGluayBJbnB1dFN0cmVhbX0uXG5cdCAqIEBwYXJhbSBvdXRwdXQgVGhlIGRlc3RpbmF0aW9uIHtAbGluayBPdXRwdXRTdHJlYW19LlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBjb3B5KGlucHV0OiBJbnB1dFN0cmVhbSwgb3V0cHV0OiBPdXRwdXRTdHJlYW0pOiB2b2lkIHtcblx0XHRTdHJlYW1zRmFjYWRlLmNvcHkoaW5wdXQubmF0aXZlLCBvdXRwdXQubmF0aXZlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb3BpZXMgYWxsIGJ5dGVzIGZyb20gdGhlIGlucHV0IHN0cmVhbSB0byB0aGUgb3V0cHV0IHN0cmVhbSB1c2luZyBhIGxhcmdlIGJ1ZmZlcixcblx0ICogc3VpdGFibGUgZm9yIGxhcmdlIGZpbGUgdHJhbnNmZXJzLlxuXHQgKlxuXHQgKiBAcGFyYW0gaW5wdXQgVGhlIHNvdXJjZSB7QGxpbmsgSW5wdXRTdHJlYW19LlxuXHQgKiBAcGFyYW0gb3V0cHV0IFRoZSBkZXN0aW5hdGlvbiB7QGxpbmsgT3V0cHV0U3RyZWFtfS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgY29weUxhcmdlKGlucHV0OiBJbnB1dFN0cmVhbSwgb3V0cHV0OiBPdXRwdXRTdHJlYW0pOiB2b2lkIHtcblx0XHRTdHJlYW1zRmFjYWRlLmNvcHlMYXJnZShpbnB1dC5uYXRpdmUsIG91dHB1dC5uYXRpdmUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIElucHV0U3RyZWFtfSBmcm9tIGEgcmVzb3VyY2UgYWNjZXNzaWJsZSB2aWEgdGhlIGNsYXNzIGxvYWRlci5cblx0ICogVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCB0byByZWFkIGJ1bmRsZWQgcmVzb3VyY2VzIHdpdGhpbiB0aGUgYXBwbGljYXRpb24gcnVudGltZS5cblx0ICpcblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gdGhlIHJlc291cmNlLlxuXHQgKiBAcmV0dXJucyBBIG5ldyB7QGxpbmsgSW5wdXRTdHJlYW19IGluc3RhbmNlIGZvciB0aGUgcmVzb3VyY2UuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldFJlc291cmNlQXNCeXRlQXJyYXlJbnB1dFN0cmVhbShwYXRoOiBzdHJpbmcpOiBJbnB1dFN0cmVhbSB7XG5cdFx0Y29uc3QgbmF0aXZlID0gU3RyZWFtc0ZhY2FkZS5nZXRSZXNvdXJjZUFzQnl0ZUFycmF5SW5wdXRTdHJlYW0ocGF0aCk7XG5cdFx0cmV0dXJuIG5ldyBJbnB1dFN0cmVhbShuYXRpdmUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIElucHV0U3RyZWFtfSBmcm9tIGEgSmF2YVNjcmlwdCBieXRlIGFycmF5IChgYW55W11gKS5cblx0ICpcblx0ICogQHBhcmFtIGRhdGEgVGhlIEphdmFTY3JpcHQgYXJyYXkgb2YgYnl0ZSB2YWx1ZXMgKGBudW1iZXJbXWApLlxuXHQgKiBAcmV0dXJucyBBIG5ldyB7QGxpbmsgSW5wdXRTdHJlYW19IGluc3RhbmNlIGluaXRpYWxpemVkIHdpdGggdGhlIGJ5dGUgZGF0YS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgY3JlYXRlQnl0ZUFycmF5SW5wdXRTdHJlYW0oZGF0YTogYW55W10pOiBJbnB1dFN0cmVhbSB7XG5cdFx0Ly8gQ29udmVydCBKYXZhU2NyaXB0IGJ5dGUgYXJyYXkgdG8gbmF0aXZlIEphdmEgYnl0ZSBhcnJheVxuXHRcdGNvbnN0IGFycmF5ID0gQnl0ZXMudG9KYXZhQnl0ZXMoZGF0YSk7XG5cdFx0Y29uc3QgbmF0aXZlID0gU3RyZWFtc0ZhY2FkZS5jcmVhdGVCeXRlQXJyYXlJbnB1dFN0cmVhbShhcnJheSk7XG5cdFx0cmV0dXJuIG5ldyBJbnB1dFN0cmVhbShuYXRpdmUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIE91dHB1dFN0cmVhbX0gdGhhdCB3cml0ZXMgZGF0YSBpbnRvIGFuIGluLW1lbW9yeSBieXRlIGFycmF5LlxuXHQgKiBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGFzIGEgYnVmZmVyIHRvIGNhcHR1cmUgb3V0cHV0IGJlZm9yZSBwcm9jZXNzaW5nIGl0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyBBIG5ldyB7QGxpbmsgT3V0cHV0U3RyZWFtfSBpbnN0YW5jZSBiYWNrZWQgYnkgYSBieXRlIGFycmF5LlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBjcmVhdGVCeXRlQXJyYXlPdXRwdXRTdHJlYW0oKTogT3V0cHV0U3RyZWFtIHtcblx0XHRjb25zdCBuYXRpdmUgPSBTdHJlYW1zRmFjYWRlLmNyZWF0ZUJ5dGVBcnJheU91dHB1dFN0cmVhbSgpO1xuXHRcdHJldHVybiBuZXcgT3V0cHV0U3RyZWFtKG5hdGl2ZSk7XG5cdH1cblxuXHQvKipcblx0ICogV3JhcHMgYSBuYXRpdmUgKEphdmEpIElucHV0U3RyZWFtIG9iamVjdCBpbnRvIGEgbmV3IEphdmFTY3JpcHQge0BsaW5rIElucHV0U3RyZWFtfSBpbnN0YW5jZS5cblx0ICpcblx0ICogQHBhcmFtIG5hdGl2ZSBUaGUgdW5kZXJseWluZyBuYXRpdmUgSW5wdXRTdHJlYW0gb2JqZWN0LlxuXHQgKiBAcmV0dXJucyBBIG5ldyB7QGxpbmsgSW5wdXRTdHJlYW19IHdyYXBwZXIuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGNyZWF0ZUlucHV0U3RyZWFtKG5hdGl2ZTogYW55KTogSW5wdXRTdHJlYW0ge1xuXHRcdGNvbnN0IGlucHV0U3RyZWFtID0gbmV3IElucHV0U3RyZWFtKG5hdGl2ZSk7XG5cdFx0cmV0dXJuIGlucHV0U3RyZWFtO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdyYXBzIGEgbmF0aXZlIChKYXZhKSBPdXRwdXRTdHJlYW0gb2JqZWN0IGludG8gYSBuZXcgSmF2YVNjcmlwdCB7QGxpbmsgT3V0cHV0U3RyZWFtfSBpbnN0YW5jZS5cblx0ICpcblx0ICogTm90ZTogVGhpcyBtZXRob2QgaXMgbm90IHN0YXRpYyBpbiB0aGUgb3JpZ2luYWwgZGVmaW5pdGlvbiwgYnV0IGlzIHBsYWNlZCBoZXJlIGZvciBjb21wbGV0ZW5lc3Ncblx0ICogYW5kIGNvbnNpc3RlbmN5IHdpdGggb3RoZXIgZmFjdG9yeSBtZXRob2RzLlxuXHQgKlxuXHQgKiBAcGFyYW0gbmF0aXZlIFRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBPdXRwdXRTdHJlYW0gb2JqZWN0LlxuXHQgKiBAcmV0dXJucyBBIG5ldyB7QGxpbmsgT3V0cHV0U3RyZWFtfSB3cmFwcGVyLlxuXHQgKi9cblx0cHVibGljIGNyZWF0ZU91dHB1dFN0cmVhbShuYXRpdmU6IGFueSk6IE91dHB1dFN0cmVhbSB7XG5cdFx0Y29uc3Qgb3V0cHV0U3RyZWFtID0gbmV3IE91dHB1dFN0cmVhbShuYXRpdmUpO1xuXHRcdHJldHVybiBvdXRwdXRTdHJlYW07XG5cdH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIGlucHV0IHN0cmVhbSBmb3IgcmVhZGluZyBieXRlcy5cbiAqIFRoaXMgY2xhc3Mgd3JhcHMgYSBuYXRpdmUgc3RyZWFtIG9iamVjdCBhbmQgcHJvdmlkZXMgbWV0aG9kcyBmb3IgcmVhZGluZyBkYXRhLlxuICovXG5leHBvcnQgY2xhc3MgSW5wdXRTdHJlYW0ge1xuXG5cdC8qKiBUaGUgdW5kZXJseWluZyBuYXRpdmUgSmF2YSBzdHJlYW0gb2JqZWN0LiAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cblx0LyoqXG5cdCAqIEBwYXJhbSBuYXRpdmUgVGhlIG5hdGl2ZSBKYXZhIElucHV0U3RyZWFtIG9iamVjdC5cblx0ICovXG5cdGNvbnN0cnVjdG9yKG5hdGl2ZTogYW55KSB7XG5cdFx0dGhpcy5uYXRpdmUgPSBuYXRpdmU7XG5cdH1cblxuXHQvKipcblx0ICogUmVhZHMgdGhlIG5leHQgYnl0ZSBvZiBkYXRhIGZyb20gdGhpcyBpbnB1dCBzdHJlYW0uXG5cdCAqIEByZXR1cm5zIFRoZSBuZXh0IGJ5dGUgb2YgZGF0YSwgb3IgLTEgaWYgdGhlIGVuZCBvZiB0aGUgc3RyZWFtIGlzIHJlYWNoZWQuXG5cdCAqL1xuXHRwdWJsaWMgcmVhZCgpOiBudW1iZXIge1xuXHRcdHJldHVybiBTdHJlYW1zRmFjYWRlLnJlYWQodGhpcy5uYXRpdmUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlYWRzIGFsbCByZW1haW5pbmcgYnl0ZXMgZnJvbSB0aGUgc3RyZWFtIGFuZCByZXR1cm5zIHRoZW0gYXMgYSBKYXZhU2NyaXB0IGFycmF5LlxuXHQgKlxuXHQgKiBAcmV0dXJucyBBIEphdmFTY3JpcHQgYXJyYXkgKGBudW1iZXJbXWApIG9mIHRoZSBieXRlIHZhbHVlcy5cblx0ICovXG5cdHB1YmxpYyByZWFkQnl0ZXMoKTogYW55W10ge1xuXHRcdGNvbnN0IG5hdGl2ZSA9IFN0cmVhbXNGYWNhZGUucmVhZEJ5dGVzKHRoaXMubmF0aXZlKTtcblx0XHRyZXR1cm4gQnl0ZXMudG9KYXZhU2NyaXB0Qnl0ZXMobmF0aXZlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWFkcyBhbGwgcmVtYWluaW5nIGJ5dGVzIGZyb20gdGhlIHN0cmVhbSBhbmQgcmV0dXJucyB0aGUgbmF0aXZlIEphdmEgYnl0ZSBhcnJheS5cblx0ICpcblx0ICogQHJldHVybnMgVGhlIG5hdGl2ZSBKYXZhIGJ5dGUgYXJyYXkgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHJlYWRCeXRlc05hdGl2ZSgpOiBhbnlbXSB7XG5cdFx0cmV0dXJuIFN0cmVhbXNGYWNhZGUucmVhZEJ5dGVzKHRoaXMubmF0aXZlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWFkcyBhbGwgcmVtYWluaW5nIGJ5dGVzIGZyb20gdGhlIHN0cmVhbSBhbmQgY29udmVydHMgdGhlbSB0byBhIHN0cmluZ1xuXHQgKiB1c2luZyB0aGUgcGxhdGZvcm0ncyBkZWZhdWx0IGNoYXJhY3RlciBlbmNvZGluZy5cblx0ICpcblx0ICogQHJldHVybnMgVGhlIGNvbnRlbnQgb2YgdGhlIHN0cmVhbSBhcyBhIHN0cmluZy5cblx0ICovXG5cdHB1YmxpYyByZWFkVGV4dCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiBTdHJlYW1zRmFjYWRlLnJlYWRUZXh0KHRoaXMubmF0aXZlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDbG9zZXMgdGhpcyBpbnB1dCBzdHJlYW0gYW5kIHJlbGVhc2VzIGFueSBzeXN0ZW0gcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCBpdC5cblx0ICovXG5cdHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcblx0XHRTdHJlYW1zRmFjYWRlLmNsb3NlKHRoaXMubmF0aXZlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhlIHVuZGVybHlpbmcgbmF0aXZlIHN0cmVhbSBvYmplY3QgaXMgZGVmaW5lZCBhbmQgbm9uLW51bGwuXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHN0cmVhbSBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuXHQgKi9cblx0cHVibGljIGlzVmFsaWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlICE9PSB1bmRlZmluZWQgJiYgdGhpcy5uYXRpdmUgIT09IG51bGw7XG5cdH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIG91dHB1dCBzdHJlYW0gZm9yIHdyaXRpbmcgYnl0ZXMuXG4gKiBUaGlzIGNsYXNzIHdyYXBzIGEgbmF0aXZlIHN0cmVhbSBvYmplY3QgYW5kIHByb3ZpZGVzIG1ldGhvZHMgZm9yIHdyaXRpbmcgZGF0YS5cbiAqL1xuZXhwb3J0IGNsYXNzIE91dHB1dFN0cmVhbSB7XG5cblx0LyoqIFRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBKYXZhIHN0cmVhbSBvYmplY3QuICovXG5cdHB1YmxpYyByZWFkb25seSBuYXRpdmU6IGFueTtcblxuXHQvKipcblx0ICogQHBhcmFtIG5hdGl2ZSBUaGUgbmF0aXZlIEphdmEgT3V0cHV0U3RyZWFtIG9iamVjdC5cblx0ICovXG5cdGNvbnN0cnVjdG9yKG5hdGl2ZTogYW55KSB7XG5cdFx0dGhpcy5uYXRpdmUgPSBuYXRpdmU7XG5cdH1cblxuXHQvKipcblx0ICogV3JpdGVzIHRoZSBzcGVjaWZpZWQgYnl0ZSB0byB0aGlzIG91dHB1dCBzdHJlYW0uXG5cdCAqIEBwYXJhbSBieXRlIFRoZSBieXRlIChhcyBhIG51bWJlciAwLTI1NSkgdG8gd3JpdGUuXG5cdCAqL1xuXHRwdWJsaWMgd3JpdGUoYnl0ZTogbnVtYmVyKTogdm9pZCB7XG5cdFx0U3RyZWFtc0ZhY2FkZS53cml0ZSh0aGlzLm5hdGl2ZSwgYnl0ZSk7XG5cdH1cblxuXHQvKipcblx0ICogV3JpdGVzIHRoZSBlbnRpcmUgY29udGVudCBvZiBhIEphdmFTY3JpcHQgYnl0ZSBhcnJheSB0byB0aGlzIG91dHB1dCBzdHJlYW0uXG5cdCAqXG5cdCAqIEBwYXJhbSBkYXRhIFRoZSBKYXZhU2NyaXB0IGFycmF5IChgbnVtYmVyW11gKSBvZiBieXRlIHZhbHVlcyB0byB3cml0ZS5cblx0ICovXG5cdHB1YmxpYyB3cml0ZUJ5dGVzKGRhdGE6IGFueVtdKTogdm9pZCB7XG5cdFx0Ly8gQ29udmVydCBKYXZhU2NyaXB0IGJ5dGUgYXJyYXkgdG8gbmF0aXZlIEphdmEgYnl0ZSBhcnJheVxuXHRcdGNvbnN0IG5hdGl2ZSA9IEJ5dGVzLnRvSmF2YUJ5dGVzKGRhdGEpO1xuXHRcdFN0cmVhbXNGYWNhZGUud3JpdGVCeXRlcyh0aGlzLm5hdGl2ZSwgbmF0aXZlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBXcml0ZXMgdGhlIGVudGlyZSBjb250ZW50IG9mIGEgbmF0aXZlIEphdmEgYnl0ZSBhcnJheSB0byB0aGlzIG91dHB1dCBzdHJlYW0uXG5cdCAqXG5cdCAqIEBwYXJhbSBkYXRhIFRoZSBuYXRpdmUgSmF2YSBieXRlIGFycmF5IG9iamVjdCB0byB3cml0ZS5cblx0ICovXG5cdHB1YmxpYyB3cml0ZUJ5dGVzTmF0aXZlKGRhdGE6IGFueVtdKTogdm9pZCB7XG5cdFx0U3RyZWFtc0ZhY2FkZS53cml0ZUJ5dGVzKHRoaXMubmF0aXZlLCBkYXRhKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0cyB0aGUgc3RyaW5nIHRvIGJ5dGVzIHVzaW5nIHRoZSBwbGF0Zm9ybSdzIGRlZmF1bHQgY2hhcmFjdGVyIGVuY29kaW5nXG5cdCAqIGFuZCB3cml0ZXMgdGhlbSB0byB0aGlzIG91dHB1dCBzdHJlYW0uXG5cdCAqXG5cdCAqIEBwYXJhbSB0ZXh0IFRoZSBzdHJpbmcgY29udGVudCB0byB3cml0ZS5cblx0ICovXG5cdHB1YmxpYyB3cml0ZVRleHQodGV4dDogc3RyaW5nKTogdm9pZCB7XG5cdFx0U3RyZWFtc0ZhY2FkZS53cml0ZVRleHQodGhpcy5uYXRpdmUsIHRleHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENsb3NlcyB0aGlzIG91dHB1dCBzdHJlYW0gYW5kIHJlbGVhc2VzIGFueSBzeXN0ZW0gcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCBpdC5cblx0ICovXG5cdHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcblx0XHRTdHJlYW1zRmFjYWRlLmNsb3NlKHRoaXMubmF0aXZlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGNvbnRlbnQgd3JpdHRlbiB0byB0aGlzIHN0cmVhbSBhcyBhIEphdmFTY3JpcHQgYnl0ZSBhcnJheS5cblx0ICogVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCB3aXRoIGEgQnl0ZUFycmF5T3V0cHV0U3RyZWFtLlxuXHQgKlxuXHQgKiBAcmV0dXJucyBBIEphdmFTY3JpcHQgYXJyYXkgKGBudW1iZXJbXWApIG9mIHRoZSBieXRlIHZhbHVlcyB3cml0dGVuIHRvIHRoZSBzdHJlYW0uXG5cdCAqL1xuXHRwdWJsaWMgZ2V0Qnl0ZXMoKTogYW55W10ge1xuXHRcdGNvbnN0IG5hdGl2ZSA9IFN0cmVhbXNGYWNhZGUuZ2V0Qnl0ZXModGhpcy5uYXRpdmUpO1xuXHRcdHJldHVybiBCeXRlcy50b0phdmFTY3JpcHRCeXRlcyhuYXRpdmUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgY29udGVudCB3cml0dGVuIHRvIHRoaXMgc3RyZWFtIGFzIHRoZSBuYXRpdmUgSmF2YSBieXRlIGFycmF5LlxuXHQgKiBUaGlzIGlzIHR5cGljYWxseSB1c2VkIHdpdGggYSBCeXRlQXJyYXlPdXRwdXRTdHJlYW0uXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSBuYXRpdmUgSmF2YSBieXRlIGFycmF5IG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBnZXRCeXRlc05hdGl2ZSgpOiBhbnlbXSB7XG5cdFx0cmV0dXJuIFN0cmVhbXNGYWNhZGUuZ2V0Qnl0ZXModGhpcy5uYXRpdmUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgY29udGVudCB3cml0dGVuIHRvIHRoaXMgc3RyZWFtIGFzIGEgc3RyaW5nIHVzaW5nIHRoZSBwbGF0Zm9ybSdzXG5cdCAqIGRlZmF1bHQgY2hhcmFjdGVyIGVuY29kaW5nLiBUaGlzIGlzIHR5cGljYWxseSB1c2VkIHdpdGggYSBCeXRlQXJyYXlPdXRwdXRTdHJlYW0uXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSBjb250ZW50IG9mIHRoZSBzdHJlYW0gYXMgYSBzdHJpbmcuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0VGV4dCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiBTdHJlYW1zRmFjYWRlLmdldFRleHQodGhpcy5uYXRpdmUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGUgdW5kZXJseWluZyBuYXRpdmUgc3RyZWFtIG9iamVjdCBpcyBkZWZpbmVkIGFuZCBub24tbnVsbC5cblx0ICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgc3RyZWFtIGlzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UuXG5cdCAqL1xuXHRwdWJsaWMgaXNWYWxpZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLm5hdGl2ZSAhPT0gbnVsbDtcblx0fVxufVxuXG4vLyBAdHMtaWdub3JlXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0Ly8gQHRzLWlnbm9yZVxuXHRtb2R1bGUuZXhwb3J0cyA9IFN0cmVhbXM7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUEsbUJBQXNCO0FBRXRCLE1BQU0sZ0JBQWdCLEtBQUssS0FBSyx1REFBdUQ7QUFNaEYsTUFBTSxRQUFRO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVNwQixPQUFjLEtBQUssT0FBb0IsUUFBNEI7QUFDbEUsa0JBQWMsS0FBSyxNQUFNLFFBQVEsT0FBTyxNQUFNO0FBQUEsRUFDL0M7QUFBQTtB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