@pipeline-builder/api-core 5.2.6 → 5.2.7

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 (181) hide show
  1. package/lib/constants/ai-providers.js +1 -1
  2. package/lib/constants/http-status.js +1 -1
  3. package/lib/constants/index.js +1 -1
  4. package/lib/constants/time.js +1 -1
  5. package/lib/errors/app-errors.js +1 -1
  6. package/lib/errors/index.js +1 -1
  7. package/lib/helpers/access-helpers.d.ts +19 -0
  8. package/lib/helpers/access-helpers.js +24 -4
  9. package/lib/helpers/content-disposition.js +1 -1
  10. package/lib/helpers/crud-helpers.js +1 -1
  11. package/lib/helpers/index.d.ts +1 -1
  12. package/lib/helpers/index.js +2 -2
  13. package/lib/helpers/org-hierarchy-http.js +1 -1
  14. package/lib/helpers/org-hierarchy.js +1 -1
  15. package/lib/helpers/restore-helpers.js +1 -1
  16. package/lib/helpers/sse-helpers.js +13 -2
  17. package/lib/helpers/support-calendar.js +1 -1
  18. package/lib/index.js +1 -1
  19. package/lib/middleware/ask-provenance.js +1 -1
  20. package/lib/middleware/assurance.js +1 -1
  21. package/lib/middleware/auth.js +1 -1
  22. package/lib/middleware/deferred-quota-check.js +1 -1
  23. package/lib/middleware/ecosystem-guard.js +1 -1
  24. package/lib/middleware/index.js +1 -1
  25. package/lib/middleware/jwt-verify.js +1 -1
  26. package/lib/middleware/mongo-sanitize.js +1 -1
  27. package/lib/middleware/on-behalf.js +1 -1
  28. package/lib/middleware/permission-gates.js +1 -1
  29. package/lib/middleware/quota-exempt-routes.js +1 -1
  30. package/lib/middleware/revocation.js +1 -1
  31. package/lib/middleware/route-table.js +16 -1
  32. package/lib/middleware/service-tokens.js +1 -1
  33. package/lib/middleware/step-up.js +1 -1
  34. package/lib/middleware/system-org.d.ts +18 -5
  35. package/lib/middleware/system-org.js +19 -6
  36. package/lib/openapi/extend-zod.js +1 -1
  37. package/lib/openapi/index.js +1 -1
  38. package/lib/openapi/registry.js +1 -1
  39. package/lib/openapi/routes/ask-routes.js +1 -1
  40. package/lib/openapi/routes/billing-routes.js +1 -1
  41. package/lib/openapi/routes/image-registry-routes.js +1 -1
  42. package/lib/openapi/routes/index.js +1 -1
  43. package/lib/openapi/routes/message-routes.js +1 -1
  44. package/lib/openapi/routes/pipeline-routes.js +1 -1
  45. package/lib/openapi/routes/pipeline-template-routes.js +1 -1
  46. package/lib/openapi/routes/plugin-routes.js +1 -1
  47. package/lib/openapi/routes/quota-routes.js +1 -1
  48. package/lib/openapi/schema-registry.js +1 -1
  49. package/lib/routes/health.js +1 -1
  50. package/lib/routes/index.js +1 -1
  51. package/lib/services/ai-call-weight.js +1 -1
  52. package/lib/services/alert-delivery.js +1 -1
  53. package/lib/services/api-key-exchange.js +1 -1
  54. package/lib/services/audit-context.js +1 -1
  55. package/lib/services/audit-spool.js +1 -1
  56. package/lib/services/cache-service.js +1 -1
  57. package/lib/services/circuit-breaker.js +1 -1
  58. package/lib/services/compliance-client.js +1 -1
  59. package/lib/services/compliance-event-subscriber.js +1 -1
  60. package/lib/services/durable-event-bus.js +1 -1
  61. package/lib/services/ecosystem-notify-client.d.ts +7 -1
  62. package/lib/services/ecosystem-notify-client.js +9 -3
  63. package/lib/services/entity-events.js +1 -1
  64. package/lib/services/env-redis.js +1 -1
  65. package/lib/services/http-client.js +19 -3
  66. package/lib/services/index.d.ts +1 -1
  67. package/lib/services/index.js +2 -2
  68. package/lib/services/jwks-cache.js +1 -1
  69. package/lib/services/leader-lock.js +1 -1
  70. package/lib/services/notification-channels.js +1 -1
  71. package/lib/services/org-ai-client.js +1 -1
  72. package/lib/services/pagerduty-inbound.js +1 -1
  73. package/lib/services/pagerduty.js +1 -1
  74. package/lib/services/quota-increment-batcher.js +1 -1
  75. package/lib/services/quota.js +1 -1
  76. package/lib/services/remote-audit-client.js +1 -1
  77. package/lib/services/retry-forever.js +1 -1
  78. package/lib/services/retry-strategy.js +1 -1
  79. package/lib/services/s3-client.js +1 -1
  80. package/lib/services/scheduler.js +1 -1
  81. package/lib/services/service-boot.js +1 -1
  82. package/lib/services/service-keys.js +2 -2
  83. package/lib/services/sse-ticket-store.js +1 -1
  84. package/lib/services/system-notification.js +1 -1
  85. package/lib/services/token-revocation.js +1 -1
  86. package/lib/services/version-vuln-policy.d.ts +11 -0
  87. package/lib/services/version-vuln-policy.js +33 -7
  88. package/lib/types/ai-catalog.js +1 -1
  89. package/lib/types/ask-proposals.d.ts +23 -0
  90. package/lib/types/ask-proposals.js +29 -1
  91. package/lib/types/audit-events.js +1 -1
  92. package/lib/types/build-catalog.d.ts +65 -0
  93. package/lib/types/build-catalog.js +95 -1
  94. package/lib/types/catalog-metadata.js +1 -1
  95. package/lib/types/common.js +1 -1
  96. package/lib/types/compliance-exemption.js +1 -1
  97. package/lib/types/ecosystem-notifications.d.ts +9 -0
  98. package/lib/types/ecosystem-notifications.js +15 -6
  99. package/lib/types/ecosystem.d.ts +1 -6
  100. package/lib/types/ecosystem.js +18 -5
  101. package/lib/types/error-codes.js +1 -1
  102. package/lib/types/feature-flags.d.ts +17 -1
  103. package/lib/types/feature-flags.js +1 -1
  104. package/lib/types/http.js +1 -1
  105. package/lib/types/index.d.ts +3 -3
  106. package/lib/types/index.js +4 -4
  107. package/lib/types/metadata-keys.js +1 -1
  108. package/lib/types/permissions.d.ts +60 -13
  109. package/lib/types/permissions.js +63 -14
  110. package/lib/types/pipeline-template.js +1 -1
  111. package/lib/types/pipeline.js +1 -1
  112. package/lib/types/plugin-catalog.js +1 -1
  113. package/lib/types/plugin-health.js +1 -1
  114. package/lib/types/plugin-scan.d.ts +69 -0
  115. package/lib/types/plugin-scan.js +77 -1
  116. package/lib/types/quota-catalog.js +15 -2
  117. package/lib/types/quota-tiers.d.ts +27 -160
  118. package/lib/types/quota-tiers.js +47 -255
  119. package/lib/types/remote-audit-actions.d.ts +1 -1
  120. package/lib/types/remote-audit-actions.js +9 -1
  121. package/lib/types/reserved-tags.js +1 -1
  122. package/lib/types/tier-limits.d.ts +210 -0
  123. package/lib/types/tier-limits.js +254 -0
  124. package/lib/types/usage-projection.js +1 -1
  125. package/lib/types/visibility.js +1 -1
  126. package/lib/types/wire-vocabulary.d.ts +7 -0
  127. package/lib/types/wire-vocabulary.js +7 -1
  128. package/lib/utils/alias-resolver.js +1 -1
  129. package/lib/utils/api-key.js +1 -1
  130. package/lib/utils/audit.js +1 -1
  131. package/lib/utils/aws-scrub.js +1 -1
  132. package/lib/utils/compliance-attributes.js +1 -1
  133. package/lib/utils/concurrency-gate.d.ts +98 -0
  134. package/lib/utils/concurrency-gate.js +110 -0
  135. package/lib/utils/concurrency.js +1 -1
  136. package/lib/utils/crash-handlers.js +1 -1
  137. package/lib/utils/date.js +1 -1
  138. package/lib/utils/dsse.js +1 -1
  139. package/lib/utils/env.d.ts +11 -0
  140. package/lib/utils/env.js +14 -1
  141. package/lib/utils/headers.js +1 -1
  142. package/lib/utils/identity.js +1 -1
  143. package/lib/utils/index.d.ts +1 -0
  144. package/lib/utils/index.js +2 -1
  145. package/lib/utils/jwk.js +2 -2
  146. package/lib/utils/logger.js +1 -1
  147. package/lib/utils/metric-emitter.js +1 -1
  148. package/lib/utils/object.js +1 -1
  149. package/lib/utils/params.js +1 -1
  150. package/lib/utils/plugin-compliance.d.ts +9 -1
  151. package/lib/utils/plugin-compliance.js +1 -1
  152. package/lib/utils/proof-of-work.js +1 -1
  153. package/lib/utils/response.js +1 -1
  154. package/lib/utils/retention.js +1 -1
  155. package/lib/utils/safe-require.js +1 -1
  156. package/lib/utils/secret-encryption.js +1 -1
  157. package/lib/utils/secret-rotation.js +1 -1
  158. package/lib/utils/secure-compare.js +1 -1
  159. package/lib/utils/sensitive-patterns.js +1 -1
  160. package/lib/utils/service-registry.js +1 -1
  161. package/lib/utils/ssrf.js +1 -1
  162. package/lib/validation/ai-schemas.js +1 -1
  163. package/lib/validation/common-schemas.js +1 -1
  164. package/lib/validation/dockerfile-static.js +1 -1
  165. package/lib/validation/index.d.ts +1 -1
  166. package/lib/validation/index.js +2 -2
  167. package/lib/validation/message-schemas.d.ts +73 -0
  168. package/lib/validation/message-schemas.js +63 -2
  169. package/lib/validation/middleware.js +1 -1
  170. package/lib/validation/pipeline-schemas.js +1 -1
  171. package/lib/validation/pipeline-template-schemas.js +1 -1
  172. package/lib/validation/plugin-base-images.js +1 -1
  173. package/lib/validation/plugin-catalog-detect.js +1 -1
  174. package/lib/validation/plugin-catalog-metadata.js +1 -1
  175. package/lib/validation/plugin-heuristics.js +1 -1
  176. package/lib/validation/plugin-lint.js +1 -1
  177. package/lib/validation/plugin-name-confusable.js +1 -1
  178. package/lib/validation/plugin-schemas.js +1 -1
  179. package/lib/validation/plugin-spec-schema.js +1 -1
  180. package/lib/validation/plugin-template-contract.js +1 -1
  181. package/package.json +11 -4
@@ -161,4 +161,4 @@ export class CircuitOpenError extends Error {
161
161
  this.name = 'CircuitOpenError';
162
162
  }
163
163
  }
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2lyY3VpdC1icmVha2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2NpcmN1aXQtYnJlYWtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFekQsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFhL0MsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQXlCO0lBQzFELGdCQUFnQixFQUFFLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDaEUsVUFBVSxFQUFFLE1BQU0sQ0FBQyx5QkFBeUIsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDaEUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUM7Q0FDOUMsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sY0FBYztJQVNOLEdBQUc7SUFDSCxNQUFNO0lBVGpCLEtBQUssR0FBaUIsUUFBUSxDQUFDO0lBQy9CLG1CQUFtQixHQUFHLENBQUMsQ0FBQztJQUN4QixRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUM5QixrRkFBa0Y7SUFDMUUsY0FBYyxHQUFHLENBQUMsQ0FBQztJQUUzQixZQUNtQixHQUFXLEVBQ1gsTUFBTSxHQUF5QixzQkFBc0I7bUJBRHJELEdBQUc7c0JBQ0gsTUFBTTtJQUN0QixDQUFDO0lB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Q0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNuQixDQUFDO0FBRUQsc0ZBQXNGO0FBQ3RGLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxLQUFLO0lBQ2hDLElBQUksR0FBRyxjQUFjLENBQUM7SUFDL0IsWUFBWSxNQUFjO1FBQ3hCLEtBQUssQ0FBQyxvQkFBb0IsTUFBTSw4QkFBOEIsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxJQUFJLEdBQUcsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogUGVyLXRhcmdldCBjaXJjdWl0IGJyZWFrZXIgZm9yIHNlcnZpY2UtdG8tc2VydmljZSBjYWxscy5cbiAqXG4gKiBUaGUgc2hhcmVkIHtAbGluayBJbnRlcm5hbEh0dHBDbGllbnR9IGFscmVhZHkgaGFzIHRpbWVvdXRzLCBhIGJvdW5kZWQgc29ja2V0XG4gKiBwb29sLCBhbmQgYm91bmRlZCByZXRyeS13aXRoLWppdHRlciDigJQgYnV0IG5vIGxvYWQtc2hlZGRpbmcuIFVuZGVyIGEgc3VzdGFpbmVkXG4gKiBkb3duc3RyZWFtIGJyb3dub3V0IGV2ZXJ5IGNhbGxlciBrZWVwcyBwYXlpbmcgYHRpbWVvdXQgw5cgKG1heFJldHJpZXMrMSlgIHBlclxuICogcmVxdWVzdCwgc2F0dXJhdGluZyB0aGUgc29ja2V0IHBvb2wgYW5kIHR1cm5pbmcgb25lIHNsb3cgZGVwZW5kZW5jeSBpbnRvIGFcbiAqIGZsZWV0LXdpZGUgbGF0ZW5jeSBjYXNjYWRlICh0aGUgY2xhc3NpYyByZXRyeSBzdG9ybSkuIFdvcnNlIGZvciBmYWlsLUNMT1NFRFxuICogZGVwZW5kZW5jaWVzIChjb21wbGlhbmNlKTogYSBicm93bm91dCB0aGVyZSBibG9ja3MgcGx1Z2luL3BpcGVsaW5lIGNyZWF0aW9uXG4gKiB3aXRoIGZ1bGwgcmV0cnkgbGF0ZW5jeSBvbiBldmVyeSByZXF1ZXN0LlxuICpcbiAqIFRoaXMgYnJlYWtlciBzaG9ydC1jaXJjdWl0cyB0aGF0OiBhZnRlciBgZmFpbHVyZVRocmVzaG9sZGAgY29uc2VjdXRpdmVcbiAqIGZhaWx1cmVzIHRvIGEgdGFyZ2V0IGl0IE9QRU5TIGFuZCBmYXN0LWZhaWxzIChubyBuZXR3b3JrLCBubyByZXRyaWVzKSBmb3JcbiAqIGBjb29sZG93bk1zYCwgdGhlbiBhbGxvd3MgYSBzaW5nbGUgaGFsZi1vcGVuIHByb2JlLiBBIGZhaWwtY2xvc2VkIGNhbGxlciBzdGlsbFxuICogZmFpbHMgY2xvc2VkIOKAlCBqdXN0IGltbWVkaWF0ZWx5LCBpbnN0ZWFkIG9mIGFmdGVyIHRoZSBmdWxsIHJldHJ5IGJ1ZGdldDsgYVxuICogZmFpbC1vcGVuIGNhbGxlciAoY3JlYXRlU2FmZUNsaWVudCkgZ2V0cyBpdHMgYG51bGxgIGltbWVkaWF0ZWx5LlxuICpcbiAqIFN0YXRlIGlzIGtleWVkIGJ5IGBob3N0OnBvcnRgIHBsdXMgYSByb3V0ZSBjbGFzcyAoe0BsaW5rIGNpcmN1aXRCcmVha2VyS2V5fSlcbiAqIGluIGEgcHJvY2Vzcy1sZXZlbCByZWdpc3RyeSBzbyBpdCBpcyBzaGFyZWQgZXZlbiB3aGVuIGNhbGxlcnMgbWludCBhIGZyZXNoXG4gKiBjbGllbnQgcGVyIHJlcXVlc3Qg4oCUIG9uZSBiYWQgdGFyZ2V0IHRyaXBzIG9uY2UsIG5vdCBvbmNlLXBlci1jbGllbnQg4oCUIHdoaWxlXG4gKiBvbmUgZmFpbGluZyBzdXJmYWNlIG9mIGEgc2VydmljZSBjYW4ndCBzaGVkIHRyYWZmaWMgdG8gaXRzIG90aGVyIHN1cmZhY2VzLiBEaXNhYmxlIGVudGlyZWx5IHdpdGggYFMyU19CUkVBS0VSX0VOQUJMRUQ9ZmFsc2VgLlxuICovXG5cbmltcG9ydCB7IGVudkludCwgZW52Qm9vbCB9IGZyb20gJy4uL3V0aWxzL2Vudi5qcyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgZW1pdENvdW50ZXIgfSBmcm9tICcuLi91dGlscy9tZXRyaWMtZW1pdHRlci5qcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignY2lyY3VpdC1icmVha2VyJyk7XG5cbmV4cG9ydCB0eXBlIENpcmN1aXRTdGF0ZSA9ICdjbG9zZWQnIHwgJ29wZW4nIHwgJ2hhbGYtb3Blbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2lyY3VpdEJyZWFrZXJDb25maWcge1xuICAvKiogQ29uc2VjdXRpdmUgZmFpbHVyZXMgdGhhdCB0cmlwIHRoZSBicmVha2VyIGZyb20gY2xvc2VkIOKGkiBvcGVuLiAqL1xuICBmYWlsdXJlVGhyZXNob2xkOiBudW1iZXI7XG4gIC8qKiBIb3cgbG9uZyB0byBzdGF5IG9wZW4gYmVmb3JlIGFsbG93aW5nIGEgaGFsZi1vcGVuIHByb2JlIChtcykuICovXG4gIGNvb2xkb3duTXM6IG51bWJlcjtcbiAgLyoqIE1hc3RlciBzd2l0Y2gg4oCUIHdoZW4gZmFsc2UsIGFsbG93UmVxdWVzdCgpIGlzIGFsd2F5cyB0cnVlIGFuZCBubyBzdGF0ZSBtb3Zlcy4gKi9cbiAgZW5hYmxlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQlJFQUtFUl9DT05GSUc6IENpcmN1aXRCcmVha2VyQ29uZmlnID0ge1xuICBmYWlsdXJlVGhyZXNob2xkOiBlbnZJbnQoJ1MyU19CUkVBS0VSX1RIUkVTSE9MRCcsIDUsIHsgbWluOiAxIH0pLFxuICBjb29sZG93bk1zOiBlbnZJbnQoJ1MyU19CUkVBS0VSX0NPT0xET1dOX01TJywgMTAwMDAsIHsgbWluOiAxIH0pLFxuICBlbmFibGVkOiBlbnZCb29sKCdTMlNfQlJFQUtFUl9FTkFCTEVEJywgdHJ1ZSksXG59O1xuXG4vKipcbiAqIEEgc2luZ2xlIHRhcmdldCdzIGJyZWFrZXIuIE5vdCBjb25jdXJyZW5jeS1sb2NrZWQgKEpTIGlzIHNpbmdsZS10aHJlYWRlZCBwZXJcbiAqIGV2ZW50IGxvb3ApOyBgcHJvYmVJbkZsaWdodGAgZ2F0ZXMgaGFsZi1vcGVuIHRvIG9uZSBpbi1mbGlnaHQgcHJvYmUgc28gYSBidXJzdFxuICogZHVyaW5nIGNvb2xkb3duIGRvZXNuJ3Qgc3RhbXBlZGUgdGhlIHJlY292ZXJpbmcgZG93bnN0cmVhbS5cbiAqL1xuZXhwb3J0IGNsYXNzIENpcmN1aXRCcmVha2VyIHtcbiAgcHJpdmF0ZSBzdGF0ZTogQ2lyY3VpdFN0YXRlID0gJ2Nsb3NlZCc7XG4gIHByaXZhdGUgY29uc2VjdXRpdmVGYWlsdXJlcyA9IDA7XG4gIHByaXZhdGUgb3BlbmVkQXQgPSAwO1xuICBwcml2YXRlIHByb2JlSW5GbGlnaHQgPSBmYWxzZTtcbiAgLyoqIFdoZW4gdGhlIGN1cnJlbnQgaGFsZi1vcGVuIHByb2JlIHdhcyBhZG1pdHRlZCAoZm9yIGV4cGlyaW5nIGEgc3R1Y2sgcHJvYmUpLiAqL1xuICBwcml2YXRlIHByb2JlU3RhcnRlZEF0ID0gMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGtleTogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBDaXJjdWl0QnJlYWtlckNvbmZpZyA9IERFRkFVTFRfQlJFQUtFUl9DT05GSUcsXG4gICkge31cblxuICBnZXRTdGF0ZSgpOiBDaXJjdWl0U3RhdGUge1xuICAgIHJldHVybiB0aGlzLnN0YXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYSByZXF1ZXN0IG1heSBwcm9jZWVkLiBUcmFuc2l0aW9ucyBvcGVu4oaSaGFsZi1vcGVuIG9uY2UgdGhlIGNvb2xkb3duXG4gICAqIGVsYXBzZXMgYW5kIGxldHMgZXhhY3RseSBPTkUgcHJvYmUgdGhyb3VnaC4gUmV0dXJucyBmYWxzZSB3aGVuIG9wZW4gKG9yIGFcbiAgICogcHJvYmUgaXMgYWxyZWFkeSBpbiBmbGlnaHQpIOKAlCB0aGUgY2FsbGVyIG11c3QgZmFzdC1mYWlsIHdpdGhvdXQgYW55IG5ldHdvcmsuXG4gICAqL1xuICBhbGxvd1JlcXVlc3QoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5lbmFibGVkKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ2Nsb3NlZCcpIHJldHVybiB0cnVlO1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdvcGVuJykge1xuICAgICAgaWYgKG5vdyAtIHRoaXMub3BlbmVkQXQgPj0gdGhpcy5jb25maWcuY29vbGRvd25Ncykge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2hhbGYtb3Blbic7XG4gICAgICAgIHRoaXMuYWRtaXRQcm9iZShub3cpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gaGFsZi1vcGVuOiBhbGxvdyBvbmx5IGEgc2luZ2xlIHByb2JlIGF0IGEgdGltZSDigJQgYnV0IGEgcHJvYmUgdGhhdCBoYXMgYmVlblxuICAgIC8vIGluIGZsaWdodCBsb25nZXIgdGhhbiB0aGUgY29vbGRvd24gaXMgcHJlc3VtZWQgbG9zdCAoaXRzIGNhbGxlciBuZXZlclxuICAgIC8vIHJlcG9ydGVkIGJhY2s6IGh1bmcgc29ja2V0LCBzd2FsbG93ZWQgcHJvbWlzZSkuIFdpdGhvdXQgdGhpcyBleHBpcnkgdGhlXG4gICAgLy8gYnJlYWtlciB3b3VsZCBzdGF5IGhhbGYtb3BlbiB3aXRoIHRoZSBnYXRlIHNodXQgRk9SRVZFUiwgZmFzdC1mYWlsaW5nXG4gICAgLy8gZXZlcnkgcmVxdWVzdCB0byBhIGRvd25zdHJlYW0gdGhhdCBtYXkgbG9uZyBzaW5jZSBoYXZlIHJlY292ZXJlZC5cbiAgICBpZiAodGhpcy5wcm9iZUluRmxpZ2h0ICYmIG5vdyAtIHRoaXMucHJvYmVTdGFydGVkQXQgPCB0aGlzLmNvbmZpZy5jb29sZG93bk1zKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHRoaXMucHJvYmVJbkZsaWdodCkgZW1pdENvdW50ZXIoJ3Myc19jaXJjdWl0X3Byb2JlX2V4cGlyZWRfdG90YWwnLCB7IHRhcmdldDogdGhpcy5rZXkgfSk7XG4gICAgdGhpcy5hZG1pdFByb2JlKG5vdyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIGFkbWl0UHJvYmUobm93OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnByb2JlSW5GbGlnaHQgPSB0cnVlO1xuICAgIHRoaXMucHJvYmVTdGFydGVkQXQgPSBub3c7XG4gIH1cblxuICAvKiogQSBsb2dpY2FsIHJlcXVlc3Qgc3VjY2VlZGVkICgyeHgvM3h4LzR4eCB0aGF0IGlzbid0IGEgZG93bnN0cmVhbSBmYXVsdCkuICovXG4gIHJlY29yZFN1Y2Nlc3MoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5lbmFibGVkKSByZXR1cm47XG4gICAgdGhpcy5jb25zZWN1dGl2ZUZhaWx1cmVzID0gMDtcbiAgICB0aGlzLnByb2JlSW5GbGlnaHQgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ2Nsb3NlZCcpIHtcbiAgICAgIGxvZ2dlci5pbmZvKCdjaXJjdWl0IGNsb3NlZCAoZG93bnN0cmVhbSByZWNvdmVyZWQpJywgeyB0YXJnZXQ6IHRoaXMua2V5IH0pO1xuICAgICAgdGhpcy5zdGF0ZSA9ICdjbG9zZWQnO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBBIGxvZ2ljYWwgcmVxdWVzdCBmYWlsZWQgKGNvbm5lY3Rpb24gZXJyb3IsIHRpbWVvdXQsIG9yIDV4eCByZXNwb25zZSkuICovXG4gIHJlY29yZEZhaWx1cmUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5lbmFibGVkKSByZXR1cm47XG4gICAgdGhpcy5wcm9iZUluRmxpZ2h0ID0gZmFsc2U7XG4gICAgdGhpcy5jb25zZWN1dGl2ZUZhaWx1cmVzKys7XG4gICAgLy8gQSBmYWlsZWQgaGFsZi1vcGVuIHByb2JlIG1lYW5zIHRoZSBkb3duc3RyZWFtIGlzIHN0aWxsIGJhZCDigJQgcmUtb3Blbi5cbiAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ2hhbGYtb3BlbicpIHtcbiAgICAgIHRoaXMub3BlbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ2Nsb3NlZCcgJiYgdGhpcy5jb25zZWN1dGl2ZUZhaWx1cmVzID49IHRoaXMuY29uZmlnLmZhaWx1cmVUaHJlc2hvbGQpIHtcbiAgICAgIHRoaXMub3BlbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb3BlbigpOiB2b2lkIHtcbiAgICBjb25zdCB3YXNPcGVuID0gdGhpcy5zdGF0ZSA9PT0gJ29wZW4nO1xuICAgIHRoaXMuc3RhdGUgPSAnb3Blbic7XG4gICAgdGhpcy5vcGVuZWRBdCA9IERhdGUubm93KCk7XG4gICAgaWYgKCF3YXNPcGVuKSB7XG4gICAgICBsb2dnZXIud2FybignY2lyY3VpdCBvcGVuZWQg4oCUIHNoZWRkaW5nIGxvYWQgdG8gdGFyZ2V0Jywge1xuICAgICAgICB0YXJnZXQ6IHRoaXMua2V5LFxuICAgICAgICBjb25zZWN1dGl2ZUZhaWx1cmVzOiB0aGlzLmNvbnNlY3V0aXZlRmFpbHVyZXMsXG4gICAgICAgIGNvb2xkb3duTXM6IHRoaXMuY29uZmlnLmNvb2xkb3duTXMsXG4gICAgICB9KTtcbiAgICAgIGVtaXRDb3VudGVyKCdzMnNfY2lyY3VpdF9vcGVuZWRfdG90YWwnLCB7IHRhcmdldDogdGhpcy5rZXkgfSk7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IHJlZ2lzdHJ5ID0gbmV3IE1hcDxzdHJpbmcsIENpcmN1aXRCcmVha2VyPigpO1xuXG4vKipcbiAqIFRoZSBicmVha2VyIGtleSBmb3IgYSB0YXJnZXQgYW5kIGEgUk9VVEUgQ0xBU1MuIEJyZWFrZXJzIGFyZSBwZXJcbiAqIGBob3N0OnBvcnRgICsgY2xhc3MsIHNvIG9uZSBmYWlsaW5nIHN1cmZhY2Ugb2YgYSBzZXJ2aWNlIChzYXkgcGxhdGZvcm0nc1xuICogYXVkaXQgaW5nZXN0IHJldHVybmluZyA1eHgpIGNhbid0IG9wZW4gdGhlIGJyZWFrZXIgZm9yIGFuIHVucmVsYXRlZCBvbmVcbiAqIChwbGF0Zm9ybSdzIEpXS1MgLyBrZXkgZXhjaGFuZ2UpLiBUaGUgY2xhc3MgaXMgYSBzbWFsbCwgY2FsbGVyLWNob3NlbiBsYWJlbCDigJRcbiAqIG5ldmVyIGRlcml2ZWQgZnJvbSB0aGUgcGF0aCwgd2hpY2ggY2FycmllcyBpZHMgYW5kIHdvdWxkIGV4cGxvZGUgdGhlIHJlZ2lzdHJ5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2lyY3VpdEJyZWFrZXJLZXkodGFyZ2V0OiBzdHJpbmcsIHJvdXRlQ2xhc3M/OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcm91dGVDbGFzcyAmJiByb3V0ZUNsYXNzICE9PSBERUZBVUxUX1JPVVRFX0NMQVNTID8gYCR7dGFyZ2V0fSMke3JvdXRlQ2xhc3N9YCA6IHRhcmdldDtcbn1cblxuLyoqIFRoZSByb3V0ZSBjbGFzcyBvZiBhIHJlcXVlc3QgdGhhdCBuYW1lcyBub25lLiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUk9VVEVfQ0xBU1MgPSAnZGVmYXVsdCc7XG5cbi8qKiBHZXQgKG9yIGxhemlseSBjcmVhdGUpIHRoZSBzaGFyZWQgYnJlYWtlciBmb3IgYSB7QGxpbmsgY2lyY3VpdEJyZWFrZXJLZXl9LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENpcmN1aXRCcmVha2VyKGtleTogc3RyaW5nKTogQ2lyY3VpdEJyZWFrZXIge1xuICBsZXQgYnJlYWtlciA9IHJlZ2lzdHJ5LmdldChrZXkpO1xuICBpZiAoIWJyZWFrZXIpIHtcbiAgICBicmVha2VyID0gbmV3IENpcmN1aXRCcmVha2VyKGtleSk7XG4gICAgcmVnaXN0cnkuc2V0KGtleSwgYnJlYWtlcik7XG4gIH1cbiAgcmV0dXJuIGJyZWFrZXI7XG59XG5cbi8qKiBUZXN0IGhlbHBlcjogY2xlYXIgYWxsIGJyZWFrZXIgc3RhdGUgc28gc3VpdGVzIGRvbid0IGxlYWsgYWNyb3NzIGVhY2ggb3RoZXIuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRDaXJjdWl0QnJlYWtlcnMoKTogdm9pZCB7XG4gIHJlZ2lzdHJ5LmNsZWFyKCk7XG59XG5cbi8qKiBUaHJvd24gYnkgdGhlIGNsaWVudCB3aGVuIGEgcmVxdWVzdCBpcyBmYXN0LWZhaWxlZCBiZWNhdXNlIHRoZSBicmVha2VyIGlzIG9wZW4uICovXG5leHBvcnQgY2xhc3MgQ2lyY3VpdE9wZW5FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcmVhZG9ubHkgY29kZSA9ICdDSVJDVUlUX09QRU4nO1xuICBjb25zdHJ1Y3Rvcih0YXJnZXQ6IHN0cmluZykge1xuICAgIHN1cGVyKGBDaXJjdWl0IG9wZW4gZm9yICR7dGFyZ2V0fSDigJQgZmFzdC1mYWlsaW5nIHRvIHNoZWQgbG9hZGApO1xuICAgIHRoaXMubmFtZSA9ICdDaXJjdWl0T3BlbkVycm9yJztcbiAgfVxufVxuIl19
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2lyY3VpdC1icmVha2VyLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvY2lyY3VpdC1icmVha2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQWEvQyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBeUI7SUFDMUQsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLHVCQUF1QixFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNoRSxVQUFVLEVBQUUsTUFBTSxDQUFDLHlCQUF5QixFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNoRSxPQUFPLEVBQUUsT0FBTyxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQztDQUM5QyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxjQUFjO0lBU04sR0FBRztJQUNILE1BQU07SUFUakIsS0FBSyxHQUFpQixRQUFRLENBQUM7SUFDL0IsbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDYixhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQzlCLGtGQUFrRjtJQUMxRSxjQUFjLEdBQUcsQ0FBQyxDQUFDO0lBRTNCLFlBQ21CLEdBQVcsRUFDWCxNQUFNLEdBQXlCLHNCQUFzQjttQkFEckQsR0FBRztzQkFDSCxNQUFNO0lBQ3RCLENBQUM7SUFFSixRQUFRO1FBQ04sT0FB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QUFDO0FBQ25CLENBQUM7QUFFRCxzRkFBc0Y7QUFDdEYsTUFBTSxPQUFPLGdCQUFpQixTQUFRLEtBQUs7SUFDaEMsSUFBSSxHQUFHLGNBQWMsQ0FBQztJQUMvQixZQUFZLE1BQWM7UUFDeEIsS0FBSyxDQUFDLG9CQUFvQixNQUFNLDhCQUE4QixDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLElBQUksR0FBRyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBQZXItdGFyZ2V0IGNpcmN1aXQgYnJlYWtlciBmb3Igc2VydmljZS10by1zZXJ2aWNlIGNhbGxzLlxuICpcbiAqIFRoZSBzaGFyZWQge0BsaW5rIEludGVybmFsSHR0cENsaWVudH0gYWxyZWFkeSBoYXMgdGltZW91dHMsIGEgYm91bmRlZCBzb2NrZXRcbiAqIHBvb2wsIGFuZCBib3VuZGVkIHJldHJ5LXdpdGgtaml0dGVyIOKAlCBidXQgbm8gbG9hZC1zaGVkZGluZy4gVW5kZXIgYSBzdXN0YWluZWRcbiAqIGRvd25zdHJlYW0gYnJvd25vdXQgZXZlcnkgY2FsbGVyIGtlZXBzIHBheWluZyBgdGltZW91dCDDlyAobWF4UmV0cmllcysxKWAgcGVyXG4gKiByZXF1ZXN0LCBzYXR1cmF0aW5nIHRoZSBzb2NrZXQgcG9vbCBhbmQgdHVybmluZyBvbmUgc2xvdyBkZXBlbmRlbmN5IGludG8gYVxuICogZmxlZXQtd2lkZSBsYXRlbmN5IGNhc2NhZGUgKHRoZSBjbGFzc2ljIHJldHJ5IHN0b3JtKS4gV29yc2UgZm9yIGZhaWwtQ0xPU0VEXG4gKiBkZXBlbmRlbmNpZXMgKGNvbXBsaWFuY2UpOiBhIGJyb3dub3V0IHRoZXJlIGJsb2NrcyBwbHVnaW4vcGlwZWxpbmUgY3JlYXRpb25cbiAqIHdpdGggZnVsbCByZXRyeSBsYXRlbmN5IG9uIGV2ZXJ5IHJlcXVlc3QuXG4gKlxuICogVGhpcyBicmVha2VyIHNob3J0LWNpcmN1aXRzIHRoYXQ6IGFmdGVyIGBmYWlsdXJlVGhyZXNob2xkYCBjb25zZWN1dGl2ZVxuICogZmFpbHVyZXMgdG8gYSB0YXJnZXQgaXQgT1BFTlMgYW5kIGZhc3QtZmFpbHMgKG5vIG5ldHdvcmssIG5vIHJldHJpZXMpIGZvclxuICogYGNvb2xkb3duTXNgLCB0aGVuIGFsbG93cyBhIHNpbmdsZSBoYWxmLW9wZW4gcHJvYmUuIEEgZmFpbC1jbG9zZWQgY2FsbGVyIHN0aWxsXG4gKiBmYWlscyBjbG9zZWQg4oCUIGp1c3QgaW1tZWRpYXRlbHksIGluc3RlYWQgb2YgYWZ0ZXIgdGhlIGZ1bGwgcmV0cnkgYnVkZ2V0OyBhXG4gKiBmYWlsLW9wZW4gY2FsbGVyIChjcmVhdGVTYWZlQ2xpZW50KSBnZXRzIGl0cyBgbnVsbGAgaW1tZWRpYXRlbHkuXG4gKlxuICogU3RhdGUgaXMga2V5ZWQgYnkgYGhvc3Q6cG9ydGAgcGx1cyBhIHJvdXRlIGNsYXNzICh7QGxpbmsgY2lyY3VpdEJyZWFrZXJLZXl9KVxuICogaW4gYSBwcm9jZXNzLWxldmVsIHJlZ2lzdHJ5IHNvIGl0IGlzIHNoYXJlZCBldmVuIHdoZW4gY2FsbGVycyBtaW50IGEgZnJlc2hcbiAqIGNsaWVudCBwZXIgcmVxdWVzdCDigJQgb25lIGJhZCB0YXJnZXQgdHJpcHMgb25jZSwgbm90IG9uY2UtcGVyLWNsaWVudCDigJQgd2hpbGVcbiAqIG9uZSBmYWlsaW5nIHN1cmZhY2Ugb2YgYSBzZXJ2aWNlIGNhbid0IHNoZWQgdHJhZmZpYyB0byBpdHMgb3RoZXIgc3VyZmFjZXMuIERpc2FibGUgZW50aXJlbHkgd2l0aCBgUzJTX0JSRUFLRVJfRU5BQkxFRD1mYWxzZWAuXG4gKi9cblxuaW1wb3J0IHsgZW52SW50LCBlbnZCb29sIH0gZnJvbSAnLi4vdXRpbHMvZW52LmpzJztcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5pbXBvcnQgeyBlbWl0Q291bnRlciB9IGZyb20gJy4uL3V0aWxzL21ldHJpYy1lbWl0dGVyLmpzJztcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCdjaXJjdWl0LWJyZWFrZXInKTtcblxuZXhwb3J0IHR5cGUgQ2lyY3VpdFN0YXRlID0gJ2Nsb3NlZCcgfCAnb3BlbicgfCAnaGFsZi1vcGVuJztcblxuZXhwb3J0IGludGVyZmFjZSBDaXJjdWl0QnJlYWtlckNvbmZpZyB7XG4gIC8qKiBDb25zZWN1dGl2ZSBmYWlsdXJlcyB0aGF0IHRyaXAgdGhlIGJyZWFrZXIgZnJvbSBjbG9zZWQg4oaSIG9wZW4uICovXG4gIGZhaWx1cmVUaHJlc2hvbGQ6IG51bWJlcjtcbiAgLyoqIEhvdyBsb25nIHRvIHN0YXkgb3BlbiBiZWZvcmUgYWxsb3dpbmcgYSBoYWxmLW9wZW4gcHJvYmUgKG1zKS4gKi9cbiAgY29vbGRvd25NczogbnVtYmVyO1xuICAvKiogTWFzdGVyIHN3aXRjaCDigJQgd2hlbiBmYWxzZSwgYWxsb3dSZXF1ZXN0KCkgaXMgYWx3YXlzIHRydWUgYW5kIG5vIHN0YXRlIG1vdmVzLiAqL1xuICBlbmFibGVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9CUkVBS0VSX0NPTkZJRzogQ2lyY3VpdEJyZWFrZXJDb25maWcgPSB7XG4gIGZhaWx1cmVUaHJlc2hvbGQ6IGVudkludCgnUzJTX0JSRUFLRVJfVEhSRVNIT0xEJywgNSwgeyBtaW46IDEgfSksXG4gIGNvb2xkb3duTXM6IGVudkludCgnUzJTX0JSRUFLRVJfQ09PTERPV05fTVMnLCAxMDAwMCwgeyBtaW46IDEgfSksXG4gIGVuYWJsZWQ6IGVudkJvb2woJ1MyU19CUkVBS0VSX0VOQUJMRUQnLCB0cnVlKSxcbn07XG5cbi8qKlxuICogQSBzaW5nbGUgdGFyZ2V0J3MgYnJlYWtlci4gTm90IGNvbmN1cnJlbmN5LWxvY2tlZCAoSlMgaXMgc2luZ2xlLXRocmVhZGVkIHBlclxuICogZXZlbnQgbG9vcCk7IGBwcm9iZUluRmxpZ2h0YCBnYXRlcyBoYWxmLW9wZW4gdG8gb25lIGluLWZsaWdodCBwcm9iZSBzbyBhIGJ1cnN0XG4gKiBkdXJpbmcgY29vbGRvd24gZG9lc24ndCBzdGFtcGVkZSB0aGUgcmVjb3ZlcmluZyBkb3duc3RyZWFtLlxuICovXG5leHBvcnQgY2xhc3MgQ2lyY3VpdEJyZWFrZXIge1xuICBwcml2YXRlIHN0YXRlOiBDaXJjdWl0U3RhdGUgPSAnY2xvc2VkJztcbiAgcHJpdmF0ZSBjb25zZWN1dGl2ZUZhaWx1cmVzID0gMDtcbiAgcHJpdmF0ZSBvcGVuZWRBdCA9IDA7XG4gIHByaXZhdGUgcHJvYmVJbkZsaWdodCA9IGZhbHNlO1xuICAvKiogV2hlbiB0aGUgY3VycmVudCBoYWxmLW9wZW4gcHJvYmUgd2FzIGFkbWl0dGVkIChmb3IgZXhwaXJpbmcgYSBzdHVjayBwcm9iZSkuICovXG4gIHByaXZhdGUgcHJvYmVTdGFydGVkQXQgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkga2V5OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IENpcmN1aXRCcmVha2VyQ29uZmlnID0gREVGQVVMVF9CUkVBS0VSX0NPTkZJRyxcbiAgKSB7fVxuXG4gIGdldFN0YXRlKCk6IENpcmN1aXRTdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGU7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciBhIHJlcXVlc3QgbWF5IHByb2NlZWQuIFRyYW5zaXRpb25zIG9wZW7ihpJoYWxmLW9wZW4gb25jZSB0aGUgY29vbGRvd25cbiAgICogZWxhcHNlcyBhbmQgbGV0cyBleGFjdGx5IE9ORSBwcm9iZSB0aHJvdWdoLiBSZXR1cm5zIGZhbHNlIHdoZW4gb3BlbiAob3IgYVxuICAgKiBwcm9iZSBpcyBhbHJlYWR5IGluIGZsaWdodCkg4oCUIHRoZSBjYWxsZXIgbXVzdCBmYXN0LWZhaWwgd2l0aG91dCBhbnkgbmV0d29yay5cbiAgICovXG4gIGFsbG93UmVxdWVzdCgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmVuYWJsZWQpIHJldHVybiB0cnVlO1xuICAgIGlmICh0aGlzLnN0YXRlID09PSAnY2xvc2VkJykgcmV0dXJuIHRydWU7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ29wZW4nKSB7XG4gICAgICBpZiAobm93IC0gdGhpcy5vcGVuZWRBdCA+PSB0aGlzLmNvbmZpZy5jb29sZG93bk1zKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnaGFsZi1vcGVuJztcbiAgICAgICAgdGhpcy5hZG1pdFByb2JlKG5vdyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBoYWxmLW9wZW46IGFsbG93IG9ubHkgYSBzaW5nbGUgcHJvYmUgYXQgYSB0aW1lIOKAlCBidXQgYSBwcm9iZSB0aGF0IGhhcyBiZWVuXG4gICAgLy8gaW4gZmxpZ2h0IGxvbmdlciB0aGFuIHRoZSBjb29sZG93biBpcyBwcmVzdW1lZCBsb3N0IChpdHMgY2FsbGVyIG5ldmVyXG4gICAgLy8gcmVwb3J0ZWQgYmFjazogaHVuZyBzb2NrZXQsIHN3YWxsb3dlZCBwcm9taXNlKS4gV2l0aG91dCB0aGlzIGV4cGlyeSB0aGVcbiAgICAvLyBicmVha2VyIHdvdWxkIHN0YXkgaGFsZi1vcGVuIHdpdGggdGhlIGdhdGUgc2h1dCBGT1JFVkVSLCBmYXN0LWZhaWxpbmdcbiAgICAvLyBldmVyeSByZXF1ZXN0IHRvIGEgZG93bnN0cmVhbSB0aGF0IG1heSBsb25nIHNpbmNlIGhhdmUgcmVjb3ZlcmVkLlxuICAgIGlmICh0aGlzLnByb2JlSW5GbGlnaHQgJiYgbm93IC0gdGhpcy5wcm9iZVN0YXJ0ZWRBdCA8IHRoaXMuY29uZmlnLmNvb2xkb3duTXMpIHJldHVybiBmYWxzZTtcbiAgICBpZiAodGhpcy5wcm9iZUluRmxpZ2h0KSBlbWl0Q291bnRlcignczJzX2NpcmN1aXRfcHJvYmVfZXhwaXJlZF90b3RhbCcsIHsgdGFyZ2V0OiB0aGlzLmtleSB9KTtcbiAgICB0aGlzLmFkbWl0UHJvYmUobm93KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgYWRtaXRQcm9iZShub3c6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucHJvYmVJbkZsaWdodCA9IHRydWU7XG4gICAgdGhpcy5wcm9iZVN0YXJ0ZWRBdCA9IG5vdztcbiAgfVxuXG4gIC8qKiBBIGxvZ2ljYWwgcmVxdWVzdCBzdWNjZWVkZWQgKDJ4eC8zeHgvNHh4IHRoYXQgaXNuJ3QgYSBkb3duc3RyZWFtIGZhdWx0KS4gKi9cbiAgcmVjb3JkU3VjY2VzcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmVuYWJsZWQpIHJldHVybjtcbiAgICB0aGlzLmNvbnNlY3V0aXZlRmFpbHVyZXMgPSAwO1xuICAgIHRoaXMucHJvYmVJbkZsaWdodCA9IGZhbHNlO1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSAnY2xvc2VkJykge1xuICAgICAgbG9nZ2VyLmluZm8oJ2NpcmN1aXQgY2xvc2VkIChkb3duc3RyZWFtIHJlY292ZXJlZCknLCB7IHRhcmdldDogdGhpcy5rZXkgfSk7XG4gICAgICB0aGlzLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgfVxuICB9XG5cbiAgLyoqIEEgbG9naWNhbCByZXF1ZXN0IGZhaWxlZCAoY29ubmVjdGlvbiBlcnJvciwgdGltZW91dCwgb3IgNXh4IHJlc3BvbnNlKS4gKi9cbiAgcmVjb3JkRmFpbHVyZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmVuYWJsZWQpIHJldHVybjtcbiAgICB0aGlzLnByb2JlSW5GbGlnaHQgPSBmYWxzZTtcbiAgICB0aGlzLmNvbnNlY3V0aXZlRmFpbHVyZXMrKztcbiAgICAvLyBBIGZhaWxlZCBoYWxmLW9wZW4gcHJvYmUgbWVhbnMgdGhlIGRvd25zdHJlYW0gaXMgc3RpbGwgYmFkIOKAlCByZS1vcGVuLlxuICAgIGlmICh0aGlzLnN0YXRlID09PSAnaGFsZi1vcGVuJykge1xuICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnN0YXRlID09PSAnY2xvc2VkJyAmJiB0aGlzLmNvbnNlY3V0aXZlRmFpbHVyZXMgPj0gdGhpcy5jb25maWcuZmFpbHVyZVRocmVzaG9sZCkge1xuICAgICAgdGhpcy5vcGVuKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvcGVuKCk6IHZvaWQge1xuICAgIGNvbnN0IHdhc09wZW4gPSB0aGlzLnN0YXRlID09PSAnb3Blbic7XG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuJztcbiAgICB0aGlzLm9wZW5lZEF0ID0gRGF0ZS5ub3coKTtcbiAgICBpZiAoIXdhc09wZW4pIHtcbiAgICAgIGxvZ2dlci53YXJuKCdjaXJjdWl0IG9wZW5lZCDigJQgc2hlZGRpbmcgbG9hZCB0byB0YXJnZXQnLCB7XG4gICAgICAgIHRhcmdldDogdGhpcy5rZXksXG4gICAgICAgIGNvbnNlY3V0aXZlRmFpbHVyZXM6IHRoaXMuY29uc2VjdXRpdmVGYWlsdXJlcyxcbiAgICAgICAgY29vbGRvd25NczogdGhpcy5jb25maWcuY29vbGRvd25NcyxcbiAgICAgIH0pO1xuICAgICAgZW1pdENvdW50ZXIoJ3Myc19jaXJjdWl0X29wZW5lZF90b3RhbCcsIHsgdGFyZ2V0OiB0aGlzLmtleSB9KTtcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgcmVnaXN0cnkgPSBuZXcgTWFwPHN0cmluZywgQ2lyY3VpdEJyZWFrZXI+KCk7XG5cbi8qKlxuICogVGhlIGJyZWFrZXIga2V5IGZvciBhIHRhcmdldCBhbmQgYSBST1VURSBDTEFTUy4gQnJlYWtlcnMgYXJlIHBlclxuICogYGhvc3Q6cG9ydGAgKyBjbGFzcywgc28gb25lIGZhaWxpbmcgc3VyZmFjZSBvZiBhIHNlcnZpY2UgKHNheSBwbGF0Zm9ybSdzXG4gKiBhdWRpdCBpbmdlc3QgcmV0dXJuaW5nIDV4eCkgY2FuJ3Qgb3BlbiB0aGUgYnJlYWtlciBmb3IgYW4gdW5yZWxhdGVkIG9uZVxuICogKHBsYXRmb3JtJ3MgSldLUyAvIGtleSBleGNoYW5nZSkuIFRoZSBjbGFzcyBpcyBhIHNtYWxsLCBjYWxsZXItY2hvc2VuIGxhYmVsIOKAlFxuICogbmV2ZXIgZGVyaXZlZCBmcm9tIHRoZSBwYXRoLCB3aGljaCBjYXJyaWVzIGlkcyBhbmQgd291bGQgZXhwbG9kZSB0aGUgcmVnaXN0cnkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaXJjdWl0QnJlYWtlcktleSh0YXJnZXQ6IHN0cmluZywgcm91dGVDbGFzcz86IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByb3V0ZUNsYXNzICYmIHJvdXRlQ2xhc3MgIT09IERFRkFVTFRfUk9VVEVfQ0xBU1MgPyBgJHt0YXJnZXR9IyR7cm91dGVDbGFzc31gIDogdGFyZ2V0O1xufVxuXG4vKiogVGhlIHJvdXRlIGNsYXNzIG9mIGEgcmVxdWVzdCB0aGF0IG5hbWVzIG5vbmUuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9ST1VURV9DTEFTUyA9ICdkZWZhdWx0JztcblxuLyoqIEdldCAob3IgbGF6aWx5IGNyZWF0ZSkgdGhlIHNoYXJlZCBicmVha2VyIGZvciBhIHtAbGluayBjaXJjdWl0QnJlYWtlcktleX0uICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2lyY3VpdEJyZWFrZXIoa2V5OiBzdHJpbmcpOiBDaXJjdWl0QnJlYWtlciB7XG4gIGxldCBicmVha2VyID0gcmVnaXN0cnkuZ2V0KGtleSk7XG4gIGlmICghYnJlYWtlcikge1xuICAgIGJyZWFrZXIgPSBuZXcgQ2lyY3VpdEJyZWFrZXIoa2V5KTtcbiAgICByZWdpc3RyeS5zZXQoa2V5LCBicmVha2VyKTtcbiAgfVxuICByZXR1cm4gYnJlYWtlcjtcbn1cblxuLyoqIFRlc3QgaGVscGVyOiBjbGVhciBhbGwgYnJlYWtlciBzdGF0ZSBzbyBzdWl0ZXMgZG9uJ3QgbGVhayBhY3Jvc3MgZWFjaCBvdGhlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNldENpcmN1aXRCcmVha2VycygpOiB2b2lkIHtcbiAgcmVnaXN0cnkuY2xlYXIoKTtcbn1cblxuLyoqIFRocm93biBieSB0aGUgY2xpZW50IHdoZW4gYSByZXF1ZXN0IGlzIGZhc3QtZmFpbGVkIGJlY2F1c2UgdGhlIGJyZWFrZXIgaXMgb3Blbi4gKi9cbmV4cG9ydCBjbGFzcyBDaXJjdWl0T3BlbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICByZWFkb25seSBjb2RlID0gJ0NJUkNVSVRfT1BFTic7XG4gIGNvbnN0cnVjdG9yKHRhcmdldDogc3RyaW5nKSB7XG4gICAgc3VwZXIoYENpcmN1aXQgb3BlbiBmb3IgJHt0YXJnZXR9IOKAlCBmYXN0LWZhaWxpbmcgdG8gc2hlZCBsb2FkYCk7XG4gICAgdGhpcy5uYW1lID0gJ0NpcmN1aXRPcGVuRXJyb3InO1xuICB9XG59XG4iXX0=
@@ -132,4 +132,4 @@ export function createComplianceClient(config) {
132
132
  },
133
133
  };
134
134
  }
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxpYW5jZS1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvY29tcGxpYW5jZS1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsa0JBQWtCLEVBQXVCLE1BQU0sa0JBQWtCLENBQUM7QUFFM0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRS9ELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBRWpEOzs7R0FHRztBQUNILE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxDQUFDO0FBRTlEOzs7OztHQUtHO0FBQ0gsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsZ0NBQWdDLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUEyRXZGOzs7R0FHRztBQUNILFNBQVMsWUFBWSxDQUFDLE9BQWdDO0lBQ3BELE1BQU0sQ0FBQyxJQUFJLENBQUMsMERBQTBELEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakYsT0FBTztRQUNMLE1BQU0sRUFBRSxJQUFJO1FBQ1osT0FBTyxFQUFFLEtBQUs7UUFDZCxVQUFVLEVBQUUsRUFBRTtRQUNkLFFBQVEsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxP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QUFFLGdCQUFnQixFQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkYsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IEludGVybmFsSHR0cENsaWVudCwgdHlwZSBSZXF1ZXN0T3B0aW9ucyB9IGZyb20gJy4vaHR0cC1jbGllbnQuanMnO1xuaW1wb3J0IHR5cGUgeyBTZXJ2aWNlQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMvY29tbW9uLmpzJztcbmltcG9ydCB7IGVudkJvb2wsIGVudkludCB9IGZyb20gJy4uL3V0aWxzL2Vudi5qcyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW5Db21wbGlhbmNlQXR0cmlidXRlcyB9IGZyb20gJy4uL3V0aWxzL3BsdWdpbi1jb21wbGlhbmNlLmpzJztcbmltcG9ydCB7IHNlcnZpY2VFbmRwb2ludCB9IGZyb20gJy4uL3V0aWxzL3NlcnZpY2UtcmVnaXN0cnkuanMnO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ2NvbXBsaWFuY2UtY2xpZW50Jyk7XG5cbi8qKlxuICogV2hlbiB0cnVlLCBjb21wbGlhbmNlIGNoZWNrcyBhcmUgYnlwYXNzZWQgaWYgdGhlIHNlcnZpY2UgaXMgdW5hdmFpbGFibGVcbiAqIChmYWlsLW9wZW4pLiBEZWZhdWx0IGlzIGZhaWwtY2xvc2VkIChlcnJvcnMgcHJvcGFnYXRlIGFuZCBibG9jayB0aGUgb3BlcmF0aW9uKS5cbiAqL1xuY29uc3QgQ09NUExJQU5DRV9CWVBBU1MgPSBlbnZCb29sKCdDT01QTElBTkNFX0JZUEFTUycsIGZhbHNlKTtcblxuLyoqXG4gKiBQZXItYXR0ZW1wdCB0aW1lb3V0IGZvciBhIHZhbGlkYXRpb24gUE9TVCAoZW52OiBgQ09NUExJQU5DRV9WQUxJREFURV9USU1FT1VUX01TYCkuXG4gKiBEZWxpYmVyYXRlbHkgVElHSFRFUiB0aGFuIHRoZSA1cyBjbGllbnQgZGVmYXVsdCBzbyB0aGUgZW5mb3JjZWQgcmV0cmllcyAoYmVsb3cpXG4gKiBmaXQgaW5zaWRlIGEgYm91bmRlZCB0b3RhbCBidWRnZXQgcmF0aGVyIHRoYW4gc3RhY2tpbmcgdGhyZWUgNXMgc3RhbGxzIG9udG8gYVxuICogc2luZ2xlIGludGVyYWN0aXZlIHJlcXVlc3QuXG4gKi9cbmNvbnN0IFZBTElEQVRFX1RJTUVPVVRfTVMgPSBlbnZJbnQoJ0NPTVBMSUFOQ0VfVkFMSURBVEVfVElNRU9VVF9NUycsIDQwMDAsIHsgbWluOiAxIH0pO1xuXG4vKipcbiAqIFJlc3VsdCBvZiBhIGNvbXBsaWFuY2UgdmFsaWRhdGlvbiBjaGVjay5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wbGlhbmNlQ2hlY2tSZXN1bHQge1xuICBwYXNzZWQ6IGJvb2xlYW47XG4gIHZpb2xhdGlvbnM6IENvbXBsaWFuY2VWaW9sYXRpb25bXTtcbiAgd2FybmluZ3M6IENvbXBsaWFuY2VWaW9sYXRpb25bXTtcbiAgYmxvY2tlZDogYm9vbGVhbjtcbiAgcnVsZXNFdmFsdWF0ZWQ6IG51bWJlcjtcbiAgcnVsZXNTa2lwcGVkOiBudW1iZXI7XG4gIGV4ZW1wdGlvbnNBcHBsaWVkOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wbGlhbmNlVmlvbGF0aW9uIHtcbiAgcnVsZUlkOiBzdHJpbmc7XG4gIHJ1bGVOYW1lOiBzdHJpbmc7XG4gIHBvbGljeUlkPzogc3RyaW5nIHwgbnVsbDtcbiAgZmllbGQ6IHN0cmluZztcbiAgb3BlcmF0b3I6IHN0cmluZztcbiAgZXhwZWN0ZWRWYWx1ZTogdW5rbm93bjtcbiAgYWN0dWFsVmFsdWU6IHVua25vd247XG4gIHNldmVyaXR5OiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb21wbGlhbmNlIHNlcnZpY2UgY2xpZW50IGludGVyZmFjZS5cbiAqIFVzZXMgZmFpbC1jbG9zZWQgZGVzaWduOiBlcnJvcnMgcHJvcGFnYXRlIHRvIGJsb2NrIHRoZSBvcGVyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGxpYW5jZUNsaWVudCB7XG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBwbHVnaW4gYXR0cmlidXRlcyBhZ2FpbnN0IG9yZyBydWxlcy4gVGhyb3dzIG9uIHNlcnZpY2UgZXJyb3IgKGZhaWwtY2xvc2VkKS5cbiAgICpcbiAgICogYGRlZmVycmVkRmllbGRzYCBuYW1lcyBhdHRyaWJ1dGVzIHRoaXMgY2hlY2sgY2Fubm90IGtub3cgeWV0OyBydWxlcyB0aGF0XG4gICAqIHJlYWQgdGhlbSBhcmUgc2tpcHBlZCAoY291bnRlZCBpbiBgcnVsZXNTa2lwcGVkYCwgbmV2ZXIgcGFzc2VkKSBhbmQgbXVzdCBiZVxuICAgKiBldmFsdWF0ZWQgYnkgYSBsYXRlciBjaGVjayB0aGF0IGhhcyB0aGVtIOKAlCB0aGUgYnVpbGQgd29ya2VyJ3MgcG9zdC1idWlsZFxuICAgKiByZS12YWxpZGF0aW9uIGZvciB7QGxpbmsgUExVR0lOX0lNQUdFX0NPTVBMSUFOQ0VfRklFTERTfS5cbiAgICovXG4gIHZhbGlkYXRlUGx1Z2luKFxuICAgIG9yZ0lkOiBzdHJpbmcsXG4gICAgYXR0cmlidXRlczogUGx1Z2luQ29tcGxpYW5jZUF0dHJpYnV0ZXMsXG4gICAgYXV0aEhlYWRlcjogc3RyaW5nLFxuICAgIGVudGl0eUlkPzogc3RyaW5nLFxuICAgIGVudGl0eU5hbWU/OiBzdHJpbmcsXG4gICAgYWN0aW9uPzogc3RyaW5nLFxuICAgIGRlZmVycmVkRmllbGRzPzogcmVhZG9ubHkgc3RyaW5nW10sXG4gICk6IFByb21pc2U8Q29tcGxpYW5jZUNoZWNrUmVzdWx0PjtcblxuICAvKiogVmFsaWRhdGUgcGlwZWxpbmUgYXR0cmlidXRlcyBhZ2FpbnN0IG9yZyBydWxlcy4gVGhyb3dzIG9uIHNlcnZpY2UgZXJyb3IgKGZhaWwtY2xvc2VkKS4gKi9cbiAgdmFsaWRhdGVQaXBlbGluZShcbiAgICBvcmdJZDogc3RyaW5nLFxuICAgIGF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIGF1dGhIZWFkZXI6IHN0cmluZyxcbiAgICBlbnRpdHlJZD86IHN0cmluZyxcbiAgICBlbnRpdHlOYW1lPzogc3RyaW5nLFxuICAgIGFjdGlvbj86IHN0cmluZyxcbiAgKTogUHJvbWlzZTxDb21wbGlhbmNlQ2hlY2tSZXN1bHQ+O1xuXG4gIC8qKiBQcmUtZmxpZ2h0IGNoZWNrIGZvciBwbHVnaW4gKG5vIGF1ZGl0LCBubyBub3RpZmljYXRpb24pLiAqL1xuICBkcnlSdW5QbHVnaW4oXG4gICAgb3JnSWQ6IHN0cmluZyxcbiAgICBhdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICBhdXRoSGVhZGVyOiBzdHJpbmcsXG4gICk6IFByb21pc2U8Q29tcGxpYW5jZUNoZWNrUmVzdWx0PjtcblxuICAvKiogUHJlLWZsaWdodCBjaGVjayBmb3IgcGlwZWxpbmUgKG5vIGF1ZGl0LCBubyBub3RpZmljYXRpb24pLiAqL1xuICBkcnlSdW5QaXBlbGluZShcbiAgICBvcmdJZDogc3RyaW5nLFxuICAgIGF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIGF1dGhIZWFkZXI6IHN0cmluZyxcbiAgKTogUHJvbWlzZTxDb21wbGlhbmNlQ2hlY2tSZXN1bHQ+O1xufVxuXG4vKipcbiAqIFJldHVybiBhIHBhc3MtdGhyb3VnaCByZXN1bHQgd2hlbiBDT01QTElBTkNFX0JZUEFTUyBpcyBlbmFibGVkIGFuZCB0aGVcbiAqIGNvbXBsaWFuY2Ugc2VydmljZSBpcyB1bnJlYWNoYWJsZS5cbiAqL1xuZnVuY3Rpb24gYnlwYXNzUmVzdWx0KGNvbnRleHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogQ29tcGxpYW5jZUNoZWNrUmVzdWx0IHtcbiAgbG9nZ2VyLndhcm4oJ0NPTVBMSUFOQ0VfQllQQVNTOiBTZXJ2aWNlIHVuYXZhaWxhYmxlLCBhbGxvd2luZyByZXF1ZXN0JywgY29udGV4dCk7XG4gIHJldHVybiB7XG4gICAgcGFzc2VkOiB0cnVlLFxuICAgIGJsb2NrZWQ6IGZhbHNlLFxuICAgIHZpb2xhdGlvbnM6IFtdLFxuICAgIHdhcm5pbmdzOiBbeyBydWxlSWQ6ICcnLCBydWxlTmFtZTogJycsIGZpZWxkOiAnJywgb3BlcmF0b3I6ICcnLCBleHBlY3RlZFZhbHVlOiBudWxsLCBhY3R1YWxWYWx1ZTogbnVsbCwgc2V2ZXJpdHk6ICd3YXJuaW5nJywgbWVzc2FnZTogJ0NvbXBsaWFuY2UgY2hlY2sgc2tpcHBlZCAoc2VydmljZSB1bmF2YWlsYWJsZSknIH1dLFxuICAgIHJ1bGVzRXZhbHVhdGVkOiAwLFxuICAgIHJ1bGVzU2tpcHBlZDogMCxcbiAgICBleGVtcHRpb25zQXBwbGllZDogW10sXG4gIH07XG59XG5cbi8qKlxuICogQnVpbGQgY29tbW9uIHJlcXVlc3QgaGVhZGVycyBmb3IgY29tcGxpYW5jZSBjYWxscy5cbiAqL1xuZnVuY3Rpb24gYnVpbGRIZWFkZXJzKG9yZ0lkOiBzdHJpbmcsIGF1dGhIZWFkZXI6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICd4LW9yZy1pZCc6IG9yZ0lkLFxuICB9O1xuICAvLyBDb21wbGlhbmNlIHJvdXRlcyBhdXRoZW50aWNhdGUgdGhlIGNhbGxlciB2aWEgdGhlIGBBdXRob3JpemF0aW9uYCBzZXJ2aWNlXG4gIC8vIEpXVCAoYHJlcXVpcmVTZXJ2aWNlUHJpbmNpcGFsYCk7IG5vIHBsYWludGV4dCBoZWFkZXIgaXMgdHJ1c3RlZC5cbiAgaWYgKGF1dGhIZWFkZXIpIGhlYWRlcnMuQXV0aG9yaXphdGlvbiA9IGF1dGhIZWFkZXI7XG4gIHJldHVybiBoZWFkZXJzO1xufVxuXG4vKipcbiAqIFJlcXVlc3Qgb3B0aW9ucyBmb3IgYSBjb21wbGlhbmNlIHZhbGlkYXRpb24gUE9TVC5cbiAqXG4gKiBUaGVzZSBjYWxscyBhcmUgc2lkZS1lZmZlY3QtZnJlZSAodGhleSBldmFsdWF0ZSBydWxlcyBhbmQgcmV0dXJuIGEgdmVyZGljdDtcbiAqIGFueSBhdWRpdC9ub3RpZmljYXRpb24gdGhlIGNvbXBsaWFuY2Ugc2VydmljZSB3cml0ZXMgaXMgZGVyaXZlZCwgbm90IGEgbXV0YXRpb25cbiAqIHRoZSBjYWxsZXIgZGVwZW5kcyBvbiBiZWluZyBvbmNlLW9ubHkpLCBzbyB0aGV5IGFyZSBtYXJrZWQgYGlkZW1wb3RlbnQ6IHRydWVgLlxuICogVGhhdCBsZXRzIHRoZSBIVFRQIGNsaWVudCBhdXRvLXJldHJ5IGEgdHJhbnNpZW50IDUwMyAvIGNvbm5lY3Rpb24gcmVzZXQgL1xuICogdGltZW91dCBpbnN0ZWFkIG9mIHN1cmZhY2luZyBpdCBhcyBhIGhhcmQgZmFpbHVyZSDigJQgd2hpY2gsIHVuZGVyIHRoZVxuICogZmFpbC1jbG9zZWQgZGVmYXVsdCwgd291bGQgd3JvbmdseSBSRUpFQ1QgYSBsZWdpdGltYXRlIHBsdWdpbiB1cGxvYWQgLyBwaXBlbGluZVxuICogY3JlYXRlIGp1c3QgYmVjYXVzZSBjb21wbGlhbmNlIGJyaWVmbHkgc3RhbGxlZC4gUGFpcmVkIHdpdGggdGhlIHRpZ2h0ZXJcbiAqIHBlci1hdHRlbXB0IHRpbWVvdXQgc28gdGhlIHJldHJpZXMgc3RheSB3aXRoaW4gYSBib3VuZGVkIHRvdGFsIGJ1ZGdldC5cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVPcHRpb25zKG9yZ0lkOiBzdHJpbmcsIGF1dGhIZWFkZXI6IHN0cmluZyk6IFJlcXVlc3RPcHRpb25zIHtcbiAgcmV0dXJuIHtcbiAgICBoZWFkZXJzOiBidWlsZEhlYWRlcnMob3JnSWQsIGF1dGhIZWFkZXIpLFxuICAgIGlkZW1wb3RlbnQ6IHRydWUsXG4gICAgdGltZW91dDogVkFMSURBVEVfVElNRU9VVF9NUyxcbiAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBjb21wbGlhbmNlIGNsaWVudC5cbiAqXG4gKiBJTVBPUlRBTlQ6IFRoaXMgY2xpZW50IGlzIGZhaWwtY2xvc2VkIOKAlCBpZiB0aGUgY29tcGxpYW5jZSBzZXJ2aWNlIGlzXG4gKiB1bnJlYWNoYWJsZSBvciByZXR1cm5zIGFuIGVycm9yLCB0aGUgZXJyb3IgcHJvcGFnYXRlcyBhbmQgdGhlIGNhbGxpbmdcbiAqIG9wZXJhdGlvbiAocGx1Z2luIHVwbG9hZCwgcGlwZWxpbmUgY3JlYXRlKSBpcyByZWplY3RlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbXBsaWFuY2VDbGllbnQoY29uZmlnPzogUGFydGlhbDxTZXJ2aWNlQ29uZmlnPik6IENvbXBsaWFuY2VDbGllbnQge1xuICBjb25zdCBzZXJ2aWNlQ29uZmlnOiBTZXJ2aWNlQ29uZmlnID0ge1xuICAgIGhvc3Q6IGNvbmZpZz8uaG9zdCA/PyBzZXJ2aWNlRW5kcG9pbnQoJ2NvbXBsaWFuY2UnKS5ob3N0LFxuICAgIHBvcnQ6IGNvbmZpZz8ucG9ydCA/PyBzZXJ2aWNlRW5kcG9pbnQoJ2NvbXBsaWFuY2UnKS5wb3J0LFxuICB9O1xuXG4gIGNvbnN0IGNsaWVudCA9IG5ldyBJbnRlcm5hbEh0dHBDbGllbnQoc2VydmljZUNvbmZpZyk7XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHJlc3BvbnNlIHNoYXBlICsgc3RhdHVzLiBUaGUgSFRUUCBjbGllbnQgZG9lc24ndCB0aHJvdyBvbiBub24tMnh4XG4gICAqIChpdCBqdXN0IHJldHVybnMgdGhlIGJvZHkpLCBzbyB3aXRob3V0IHRoaXMgYW4gYXV0aCBmYWlsdXJlIC8gcm91dGUgbWlzc1xuICAgKiBzaWxlbnRseSBwcm9kdWNlZCBgcmVzcG9uc2UuYm9keS5kYXRhID09PSB1bmRlZmluZWRgIGFuZCB0aGUgY2FsbGVyXG4gICAqIGNyYXNoZWQgb24gYC5ibG9ja2VkYC4gTm93IG5vbi0yeHggc3VyZmFjZXMgYXMgYSB0aHJvd24gZXJyb3IgdGhhdCB0aGVcbiAgICogb3V0ZXIgdHJ5L2NhdGNoIGNhbiB0dXJuIGludG8gZWl0aGVyIGZhaWwtY2xvc2VkIChkZWZhdWx0KSBvclxuICAgKiBDT01QTElBTkNFX0JZUEFTUyAoZmFpbC1vcGVuKS5cbiAgICovXG4gIGZ1bmN0aW9uIHVud3JhcChcbiAgICByZXNwb25zZTogeyBzdGF0dXNDb2RlOiBudW1iZXI7IGJvZHk6IHsgc3VjY2Vzcz86IGJvb2xlYW47IGRhdGE/OiBDb21wbGlhbmNlQ2hlY2tSZXN1bHQ7IG1lc3NhZ2U/OiBzdHJpbmcgfSB9LFxuICAgIG9wOiBzdHJpbmcsXG4gICk6IENvbXBsaWFuY2VDaGVja1Jlc3VsdCB7XG4gICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgPCAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzQ29kZSA+PSAzMDApIHtcbiAgICAgIGNvbnN0IG1zZyA9IHJlc3BvbnNlLmJvZHk/Lm1lc3NhZ2UgPz8gYEhUVFAgJHtyZXNwb25zZS5zdGF0dXNDb2RlfWA7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGNvbXBsaWFuY2UgJHtvcH0gZmFpbGVkOiAke21zZ31gKTtcbiAgICB9XG4gICAgaWYgKCFyZXNwb25zZS5ib2R5Py5kYXRhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGNvbXBsaWFuY2UgJHtvcH0gcmV0dXJuZWQgbm8gZGF0YSAoc3RhdHVzICR7cmVzcG9uc2Uuc3RhdHVzQ29kZX0pYCk7XG4gICAgfVxuICAgIHJldHVybiByZXNwb25zZS5ib2R5LmRhdGE7XG4gIH1cblxuICAvLyBTaGFyZWQgYm9keSBmb3IgYWxsIGZvdXIgdmFsaWRhdGUvZHJ5LXJ1biBjYWxsczogUE9TVCDihpIgdW53cmFwLCBhbmQgb24gYVxuICAvLyB0cmFuc3BvcnQvSFRUUCBmYWlsdXJlIGVpdGhlciByZXR1cm4gYSBmYWlsLW9wZW4gYnlwYXNzIHJlc3VsdCAod2hlblxuICAvLyBDT01QTElBTkNFX0JZUEFTUykgb3IgcmV0aHJvdy4gVGhlIGZvdXIgbWV0aG9kcyBkaWZmZXIgT05MWSBpbiBwYXRoLCByZXF1ZXN0XG4gIC8vIGJvZHksIG9wIGxhYmVsLCBhbmQgYnlwYXNzIGNvbnRleHQuXG4gIGFzeW5jIGZ1bmN0aW9uIHJ1blZhbGlkYXRpb24oXG4gICAgb3JnSWQ6IHN0cmluZyxcbiAgICBhdXRoSGVhZGVyOiBzdHJpbmcsXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGJvZHk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIG9wOiBzdHJpbmcsXG4gICAgYnlwYXNzQ3R4OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgKTogUHJvbWlzZTxDb21wbGlhbmNlQ2hlY2tSZXN1bHQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdDx7IHN1Y2Nlc3M6IGJvb2xlYW47IGRhdGE6IENvbXBsaWFuY2VDaGVja1Jlc3VsdDsgbWVzc2FnZT86IHN0cmluZyB9PihcbiAgICAgICAgcGF0aCwgYm9keSwgdmFsaWRhdGVPcHRpb25zKG9yZ0lkLCBhdXRoSGVhZGVyKSxcbiAgICAgICk7XG4gICAgICByZXR1cm4gdW53cmFwKHJlc3BvbnNlLCBvcCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChDT01QTElBTkNFX0JZUEFTUykgcmV0dXJuIGJ5cGFzc1Jlc3VsdChieXBhc3NDdHgpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB2YWxpZGF0ZVBsdWdpbihvcmdJZCwgYXR0cmlidXRlcywgYXV0aEhlYWRlciwgZW50aXR5SWQsIGVudGl0eU5hbWUsIGFjdGlvbiwgZGVmZXJyZWRGaWVsZHMpIHtcbiAgICAgIHJldHVybiBydW5WYWxpZGF0aW9uKG9yZ0lkLCBhdXRoSGVhZGVyLCAnL2NvbXBsaWFuY2UvdmFsaWRhdGUvcGx1Z2luJyxcbiAgICAgICAge1xuICAgICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgZW50aXR5SWQsXG4gICAgICAgICAgZW50aXR5TmFtZSxcbiAgICAgICAgICBhY3Rpb246IGFjdGlvbiA/PyAndXBsb2FkJyxcbiAgICAgICAgICAuLi4oZGVmZXJyZWRGaWVsZHMgJiYgZGVmZXJyZWRGaWVsZHMubGVuZ3RoID4gMCA/IHsgZGVmZXJyZWRGaWVsZHM6IFsuLi5kZWZlcnJlZEZpZWxkc10gfSA6IHt9KSxcbiAgICAgICAgfSwgJ3ZhbGlkYXRlUGx1Z2luJyxcbiAgICAgICAgeyBvcmdJZCwgZW50aXR5VHlwZTogJ3BsdWdpbicsIGVudGl0eUlkLCBlbnRpdHlOYW1lIH0pO1xuICAgIH0sXG5cbiAgICB2YWxpZGF0ZVBpcGVsaW5lKG9yZ0lkLCBhdHRyaWJ1dGVzLCBhdXRoSGVhZGVyLCBlbnRpdHlJZCwgZW50aXR5TmFtZSwgYWN0aW9uKSB7XG4gICAgICByZXR1cm4gcnVuVmFsaWRhdGlvbihvcmdJZCwgYXV0aEhlYWRlciwgJy9jb21wbGlhbmNlL3ZhbGlkYXRlL3BpcGVsaW5lJyxcbiAgICAgICAgeyBhdHRyaWJ1dGVzLCBlbnRpdHlJZCwgZW50aXR5TmFtZSwgYWN0aW9uOiBhY3Rpb24gPz8gJ2NyZWF0ZScgfSwgJ3ZhbGlkYXRlUGlwZWxpbmUnLFxuICAgICAgICB7IG9yZ0lkLCBlbnRpdHlUeXBlOiAncGlwZWxpbmUnLCBlbnRpdHlJZCwgZW50aXR5TmFtZSB9KTtcbiAgICB9LFxuXG4gICAgZHJ5UnVuUGx1Z2luKG9yZ0lkLCBhdHRyaWJ1dGVzLCBhdXRoSGVhZGVyKSB7XG4gICAgICByZXR1cm4gcnVuVmFsaWRhdGlvbihvcmdJZCwgYXV0aEhlYWRlciwgJy9jb21wbGlhbmNlL3ZhbGlkYXRlL3BsdWdpbi9kcnktcnVuJyxcbiAgICAgICAgeyBhdHRyaWJ1dGVzIH0sICdkcnlSdW5QbHVnaW4nLCB7IG9yZ0lkLCBlbnRpdHlUeXBlOiAncGx1Z2luJywgZHJ5UnVuOiB0cnVlIH0pO1xuICAgIH0sXG5cbiAgICBkcnlSdW5QaXBlbGluZShvcmdJZCwgYXR0cmlidXRlcywgYXV0aEhlYWRlcikge1xuICAgICAgcmV0dXJuIHJ1blZhbGlkYXRpb24ob3JnSWQsIGF1dGhIZWFkZXIsICcvY29tcGxpYW5jZS92YWxpZGF0ZS9waXBlbGluZS9kcnktcnVuJyxcbiAgICAgICAgeyBhdHRyaWJ1dGVzIH0sICdkcnlSdW5QaXBlbGluZScsIHsgb3JnSWQsIGVudGl0eVR5cGU6ICdwaXBlbGluZScsIGRyeVJ1bjogdHJ1ZSB9KTtcbiAgICB9LFxuICB9O1xufVxuIl19
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxpYW5jZS1jbGllbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9jb21wbGlhbmNlLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxrQkFBa0IsRUFBdUIsTUFBTSxrQkFBa0IsQ0FBQztBQUUzRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFL0QsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFFakQ7OztHQUdHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFOUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxnQ0FBZ0MsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQTJFdkY7OztHQUdHO0FBQ0gsU0FBUyxZQUFZLENBQUMsT0FBZ0M7SUFDcEQsTUFBTSxDQUFDLElBQUksQ0FBQywwREFBMEQsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqRixPQUFPO1FBQ0wsTUFBTSxFQUFFLElBQUk7UUFDWixPQUFPLEVBQUUsS0FBSztRQUNkLFVBQVUsRUFBRSxFQUFFO1FBQ2QsUUFBUSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxnREFBZ0Qs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RUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN2RixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgSW50ZXJuYWxIdHRwQ2xpZW50LCB0eXBlIFJlcXVlc3RPcHRpb25zIH0gZnJvbSAnLi9odHRwLWNsaWVudC5qcyc7XG5pbXBvcnQgdHlwZSB7IFNlcnZpY2VDb25maWcgfSBmcm9tICcuLi90eXBlcy9jb21tb24uanMnO1xuaW1wb3J0IHsgZW52Qm9vbCwgZW52SW50IH0gZnJvbSAnLi4vdXRpbHMvZW52LmpzJztcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpbkNvbXBsaWFuY2VBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vdXRpbHMvcGx1Z2luLWNvbXBsaWFuY2UuanMnO1xuaW1wb3J0IHsgc2VydmljZUVuZHBvaW50IH0gZnJvbSAnLi4vdXRpbHMvc2VydmljZS1yZWdpc3RyeS5qcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignY29tcGxpYW5jZS1jbGllbnQnKTtcblxuLyoqXG4gKiBXaGVuIHRydWUsIGNvbXBsaWFuY2UgY2hlY2tzIGFyZSBieXBhc3NlZCBpZiB0aGUgc2VydmljZSBpcyB1bmF2YWlsYWJsZVxuICogKGZhaWwtb3BlbikuIERlZmF1bHQgaXMgZmFpbC1jbG9zZWQgKGVycm9ycyBwcm9wYWdhdGUgYW5kIGJsb2NrIHRoZSBvcGVyYXRpb24pLlxuICovXG5jb25zdCBDT01QTElBTkNFX0JZUEFTUyA9IGVudkJvb2woJ0NPTVBMSUFOQ0VfQllQQVNTJywgZmFsc2UpO1xuXG4vKipcbiAqIFBlci1hdHRlbXB0IHRpbWVvdXQgZm9yIGEgdmFsaWRhdGlvbiBQT1NUIChlbnY6IGBDT01QTElBTkNFX1ZBTElEQVRFX1RJTUVPVVRfTVNgKS5cbiAqIERlbGliZXJhdGVseSBUSUdIVEVSIHRoYW4gdGhlIDVzIGNsaWVudCBkZWZhdWx0IHNvIHRoZSBlbmZvcmNlZCByZXRyaWVzIChiZWxvdylcbiAqIGZpdCBpbnNpZGUgYSBib3VuZGVkIHRvdGFsIGJ1ZGdldCByYXRoZXIgdGhhbiBzdGFja2luZyB0aHJlZSA1cyBzdGFsbHMgb250byBhXG4gKiBzaW5nbGUgaW50ZXJhY3RpdmUgcmVxdWVzdC5cbiAqL1xuY29uc3QgVkFMSURBVEVfVElNRU9VVF9NUyA9IGVudkludCgnQ09NUExJQU5DRV9WQUxJREFURV9USU1FT1VUX01TJywgNDAwMCwgeyBtaW46IDEgfSk7XG5cbi8qKlxuICogUmVzdWx0IG9mIGEgY29tcGxpYW5jZSB2YWxpZGF0aW9uIGNoZWNrLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBsaWFuY2VDaGVja1Jlc3VsdCB7XG4gIHBhc3NlZDogYm9vbGVhbjtcbiAgdmlvbGF0aW9uczogQ29tcGxpYW5jZVZpb2xhdGlvbltdO1xuICB3YXJuaW5nczogQ29tcGxpYW5jZVZpb2xhdGlvbltdO1xuICBibG9ja2VkOiBib29sZWFuO1xuICBydWxlc0V2YWx1YXRlZDogbnVtYmVyO1xuICBydWxlc1NraXBwZWQ6IG51bWJlcjtcbiAgZXhlbXB0aW9uc0FwcGxpZWQ6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBsaWFuY2VWaW9sYXRpb24ge1xuICBydWxlSWQ6IHN0cmluZztcbiAgcnVsZU5hbWU6IHN0cmluZztcbiAgcG9saWN5SWQ/OiBzdHJpbmcgfCBudWxsO1xuICBmaWVsZDogc3RyaW5nO1xuICBvcGVyYXRvcjogc3RyaW5nO1xuICBleHBlY3RlZFZhbHVlOiB1bmtub3duO1xuICBhY3R1YWxWYWx1ZTogdW5rbm93bjtcbiAgc2V2ZXJpdHk6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbXBsaWFuY2Ugc2VydmljZSBjbGllbnQgaW50ZXJmYWNlLlxuICogVXNlcyBmYWlsLWNsb3NlZCBkZXNpZ246IGVycm9ycyBwcm9wYWdhdGUgdG8gYmxvY2sgdGhlIG9wZXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wbGlhbmNlQ2xpZW50IHtcbiAgLyoqXG4gICAqIFZhbGlkYXRlIHBsdWdpbiBhdHRyaWJ1dGVzIGFnYWluc3Qgb3JnIHJ1bGVzLiBUaHJvd3Mgb24gc2VydmljZSBlcnJvciAoZmFpbC1jbG9zZWQpLlxuICAgKlxuICAgKiBgZGVmZXJyZWRGaWVsZHNgIG5hbWVzIGF0dHJpYnV0ZXMgdGhpcyBjaGVjayBjYW5ub3Qga25vdyB5ZXQ7IHJ1bGVzIHRoYXRcbiAgICogcmVhZCB0aGVtIGFyZSBza2lwcGVkIChjb3VudGVkIGluIGBydWxlc1NraXBwZWRgLCBuZXZlciBwYXNzZWQpIGFuZCBtdXN0IGJlXG4gICAqIGV2YWx1YXRlZCBieSBhIGxhdGVyIGNoZWNrIHRoYXQgaGFzIHRoZW0g4oCUIHRoZSBidWlsZCB3b3JrZXIncyBwb3N0LWJ1aWxkXG4gICAqIHJlLXZhbGlkYXRpb24gZm9yIHtAbGluayBQTFVHSU5fSU1BR0VfQ09NUExJQU5DRV9GSUVMRFN9LlxuICAgKi9cbiAgdmFsaWRhdGVQbHVnaW4oXG4gICAgb3JnSWQ6IHN0cmluZyxcbiAgICBhdHRyaWJ1dGVzOiBQbHVnaW5Db21wbGlhbmNlQXR0cmlidXRlcyxcbiAgICBhdXRoSGVhZGVyOiBzdHJpbmcsXG4gICAgZW50aXR5SWQ/OiBzdHJpbmcsXG4gICAgZW50aXR5TmFtZT86IHN0cmluZyxcbiAgICBhY3Rpb24/OiBzdHJpbmcsXG4gICAgZGVmZXJyZWRGaWVsZHM/OiByZWFkb25seSBzdHJpbmdbXSxcbiAgKTogUHJvbWlzZTxDb21wbGlhbmNlQ2hlY2tSZXN1bHQ+O1xuXG4gIC8qKiBWYWxpZGF0ZSBwaXBlbGluZSBhdHRyaWJ1dGVzIGFnYWluc3Qgb3JnIHJ1bGVzLiBUaHJvd3Mgb24gc2VydmljZSBlcnJvciAoZmFpbC1jbG9zZWQpLiAqL1xuICB2YWxpZGF0ZVBpcGVsaW5lKFxuICAgIG9yZ0lkOiBzdHJpbmcsXG4gICAgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgYXV0aEhlYWRlcjogc3RyaW5nLFxuICAgIGVudGl0eUlkPzogc3RyaW5nLFxuICAgIGVudGl0eU5hbWU/OiBzdHJpbmcsXG4gICAgYWN0aW9uPzogc3RyaW5nLFxuICApOiBQcm9taXNlPENvbXBsaWFuY2VDaGVja1Jlc3VsdD47XG5cbiAgLyoqIFByZS1mbGlnaHQgY2hlY2sgZm9yIHBsdWdpbiAobm8gYXVkaXQsIG5vIG5vdGlmaWNhdGlvbikuICovXG4gIGRyeVJ1blBsdWdpbihcbiAgICBvcmdJZDogc3RyaW5nLFxuICAgIGF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIGF1dGhIZWFkZXI6IHN0cmluZyxcbiAgKTogUHJvbWlzZTxDb21wbGlhbmNlQ2hlY2tSZXN1bHQ+O1xuXG4gIC8qKiBQcmUtZmxpZ2h0IGNoZWNrIGZvciBwaXBlbGluZSAobm8gYXVkaXQsIG5vIG5vdGlmaWNhdGlvbikuICovXG4gIGRyeVJ1blBpcGVsaW5lKFxuICAgIG9yZ0lkOiBzdHJpbmcsXG4gICAgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgYXV0aEhlYWRlcjogc3RyaW5nLFxuICApOiBQcm9taXNlPENvbXBsaWFuY2VDaGVja1Jlc3VsdD47XG59XG5cbi8qKlxuICogUmV0dXJuIGEgcGFzcy10aHJvdWdoIHJlc3VsdCB3aGVuIENPTVBMSUFOQ0VfQllQQVNTIGlzIGVuYWJsZWQgYW5kIHRoZVxuICogY29tcGxpYW5jZSBzZXJ2aWNlIGlzIHVucmVhY2hhYmxlLlxuICovXG5mdW5jdGlvbiBieXBhc3NSZXN1bHQoY29udGV4dDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBDb21wbGlhbmNlQ2hlY2tSZXN1bHQge1xuICBsb2dnZXIud2FybignQ09NUExJQU5DRV9CWVBBU1M6IFNlcnZpY2UgdW5hdmFpbGFibGUsIGFsbG93aW5nIHJlcXVlc3QnLCBjb250ZXh0KTtcbiAgcmV0dXJuIHtcbiAgICBwYXNzZWQ6IHRydWUsXG4gICAgYmxvY2tlZDogZmFsc2UsXG4gICAgdmlvbGF0aW9uczogW10sXG4gICAgd2FybmluZ3M6IFt7IHJ1bGVJZDogJycsIHJ1bGVOYW1lOiAnJywgZmllbGQ6ICcnLCBvcGVyYXRvcjogJycsIGV4cGVjdGVkVmFsdWU6IG51bGwsIGFjdHVhbFZhbHVlOiBudWxsLCBzZXZlcml0eTogJ3dhcm5pbmcnLCBtZXNzYWdlOiAnQ29tcGxpYW5jZSBjaGVjayBza2lwcGVkIChzZXJ2aWNlIHVuYXZhaWxhYmxlKScgfV0sXG4gICAgcnVsZXNFdmFsdWF0ZWQ6IDAsXG4gICAgcnVsZXNTa2lwcGVkOiAwLFxuICAgIGV4ZW1wdGlvbnNBcHBsaWVkOiBbXSxcbiAgfTtcbn1cblxuLyoqXG4gKiBCdWlsZCBjb21tb24gcmVxdWVzdCBoZWFkZXJzIGZvciBjb21wbGlhbmNlIGNhbGxzLlxuICovXG5mdW5jdGlvbiBidWlsZEhlYWRlcnMob3JnSWQ6IHN0cmluZywgYXV0aEhlYWRlcjogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgJ3gtb3JnLWlkJzogb3JnSWQsXG4gIH07XG4gIC8vIENvbXBsaWFuY2Ugcm91dGVzIGF1dGhlbnRpY2F0ZSB0aGUgY2FsbGVyIHZpYSB0aGUgYEF1dGhvcml6YXRpb25gIHNlcnZpY2VcbiAgLy8gSldUIChgcmVxdWlyZVNlcnZpY2VQcmluY2lwYWxgKTsgbm8gcGxhaW50ZXh0IGhlYWRlciBpcyB0cnVzdGVkLlxuICBpZiAoYXV0aEhlYWRlcikgaGVhZGVycy5BdXRob3JpemF0aW9uID0gYXV0aEhlYWRlcjtcbiAgcmV0dXJuIGhlYWRlcnM7XG59XG5cbi8qKlxuICogUmVxdWVzdCBvcHRpb25zIGZvciBhIGNvbXBsaWFuY2UgdmFsaWRhdGlvbiBQT1NULlxuICpcbiAqIFRoZXNlIGNhbGxzIGFyZSBzaWRlLWVmZmVjdC1mcmVlICh0aGV5IGV2YWx1YXRlIHJ1bGVzIGFuZCByZXR1cm4gYSB2ZXJkaWN0O1xuICogYW55IGF1ZGl0L25vdGlmaWNhdGlvbiB0aGUgY29tcGxpYW5jZSBzZXJ2aWNlIHdyaXRlcyBpcyBkZXJpdmVkLCBub3QgYSBtdXRhdGlvblxuICogdGhlIGNhbGxlciBkZXBlbmRzIG9uIGJlaW5nIG9uY2Utb25seSksIHNvIHRoZXkgYXJlIG1hcmtlZCBgaWRlbXBvdGVudDogdHJ1ZWAuXG4gKiBUaGF0IGxldHMgdGhlIEhUVFAgY2xpZW50IGF1dG8tcmV0cnkgYSB0cmFuc2llbnQgNTAzIC8gY29ubmVjdGlvbiByZXNldCAvXG4gKiB0aW1lb3V0IGluc3RlYWQgb2Ygc3VyZmFjaW5nIGl0IGFzIGEgaGFyZCBmYWlsdXJlIOKAlCB3aGljaCwgdW5kZXIgdGhlXG4gKiBmYWlsLWNsb3NlZCBkZWZhdWx0LCB3b3VsZCB3cm9uZ2x5IFJFSkVDVCBhIGxlZ2l0aW1hdGUgcGx1Z2luIHVwbG9hZCAvIHBpcGVsaW5lXG4gKiBjcmVhdGUganVzdCBiZWNhdXNlIGNvbXBsaWFuY2UgYnJpZWZseSBzdGFsbGVkLiBQYWlyZWQgd2l0aCB0aGUgdGlnaHRlclxuICogcGVyLWF0dGVtcHQgdGltZW91dCBzbyB0aGUgcmV0cmllcyBzdGF5IHdpdGhpbiBhIGJvdW5kZWQgdG90YWwgYnVkZ2V0LlxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZU9wdGlvbnMob3JnSWQ6IHN0cmluZywgYXV0aEhlYWRlcjogc3RyaW5nKTogUmVxdWVzdE9wdGlvbnMge1xuICByZXR1cm4ge1xuICAgIGhlYWRlcnM6IGJ1aWxkSGVhZGVycyhvcmdJZCwgYXV0aEhlYWRlciksXG4gICAgaWRlbXBvdGVudDogdHJ1ZSxcbiAgICB0aW1lb3V0OiBWQUxJREFURV9USU1FT1VUX01TLFxuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGNvbXBsaWFuY2UgY2xpZW50LlxuICpcbiAqIElNUE9SVEFOVDogVGhpcyBjbGllbnQgaXMgZmFpbC1jbG9zZWQg4oCUIGlmIHRoZSBjb21wbGlhbmNlIHNlcnZpY2UgaXNcbiAqIHVucmVhY2hhYmxlIG9yIHJldHVybnMgYW4gZXJyb3IsIHRoZSBlcnJvciBwcm9wYWdhdGVzIGFuZCB0aGUgY2FsbGluZ1xuICogb3BlcmF0aW9uIChwbHVnaW4gdXBsb2FkLCBwaXBlbGluZSBjcmVhdGUpIGlzIHJlamVjdGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29tcGxpYW5jZUNsaWVudChjb25maWc/OiBQYXJ0aWFsPFNlcnZpY2VDb25maWc+KTogQ29tcGxpYW5jZUNsaWVudCB7XG4gIGNvbnN0IHNlcnZpY2VDb25maWc6IFNlcnZpY2VDb25maWcgPSB7XG4gICAgaG9zdDogY29uZmlnPy5ob3N0ID8/IHNlcnZpY2VFbmRwb2ludCgnY29tcGxpYW5jZScpLmhvc3QsXG4gICAgcG9ydDogY29uZmlnPy5wb3J0ID8/IHNlcnZpY2VFbmRwb2ludCgnY29tcGxpYW5jZScpLnBvcnQsXG4gIH07XG5cbiAgY29uc3QgY2xpZW50ID0gbmV3IEludGVybmFsSHR0cENsaWVudChzZXJ2aWNlQ29uZmlnKTtcblxuICAvKipcbiAgICogVmFsaWRhdGUgcmVzcG9uc2Ugc2hhcGUgKyBzdGF0dXMuIFRoZSBIVFRQIGNsaWVudCBkb2Vzbid0IHRocm93IG9uIG5vbi0yeHhcbiAgICogKGl0IGp1c3QgcmV0dXJucyB0aGUgYm9keSksIHNvIHdpdGhvdXQgdGhpcyBhbiBhdXRoIGZhaWx1cmUgLyByb3V0ZSBtaXNzXG4gICAqIHNpbGVudGx5IHByb2R1Y2VkIGByZXNwb25zZS5ib2R5LmRhdGEgPT09IHVuZGVmaW5lZGAgYW5kIHRoZSBjYWxsZXJcbiAgICogY3Jhc2hlZCBvbiBgLmJsb2NrZWRgLiBOb3cgbm9uLTJ4eCBzdXJmYWNlcyBhcyBhIHRocm93biBlcnJvciB0aGF0IHRoZVxuICAgKiBvdXRlciB0cnkvY2F0Y2ggY2FuIHR1cm4gaW50byBlaXRoZXIgZmFpbC1jbG9zZWQgKGRlZmF1bHQpIG9yXG4gICAqIENPTVBMSUFOQ0VfQllQQVNTIChmYWlsLW9wZW4pLlxuICAgKi9cbiAgZnVuY3Rpb24gdW53cmFwKFxuICAgIHJlc3BvbnNlOiB7IHN0YXR1c0NvZGU6IG51bWJlcjsgYm9keTogeyBzdWNjZXNzPzogYm9vbGVhbjsgZGF0YT86IENvbXBsaWFuY2VDaGVja1Jlc3VsdDsgbWVzc2FnZT86IHN0cmluZyB9IH0sXG4gICAgb3A6IHN0cmluZyxcbiAgKTogQ29tcGxpYW5jZUNoZWNrUmVzdWx0IHtcbiAgICBpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSA8IDIwMCB8fCByZXNwb25zZS5zdGF0dXNDb2RlID49IDMwMCkge1xuICAgICAgY29uc3QgbXNnID0gcmVzcG9uc2UuYm9keT8ubWVzc2FnZSA/PyBgSFRUUCAke3Jlc3BvbnNlLnN0YXR1c0NvZGV9YDtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgY29tcGxpYW5jZSAke29wfSBmYWlsZWQ6ICR7bXNnfWApO1xuICAgIH1cbiAgICBpZiAoIXJlc3BvbnNlLmJvZHk/LmRhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgY29tcGxpYW5jZSAke29wfSByZXR1cm5lZCBubyBkYXRhIChzdGF0dXMgJHtyZXNwb25zZS5zdGF0dXNDb2RlfSlgKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3BvbnNlLmJvZHkuZGF0YTtcbiAgfVxuXG4gIC8vIFNoYXJlZCBib2R5IGZvciBhbGwgZm91ciB2YWxpZGF0ZS9kcnktcnVuIGNhbGxzOiBQT1NUIOKGkiB1bndyYXAsIGFuZCBvbiBhXG4gIC8vIHRyYW5zcG9ydC9IVFRQIGZhaWx1cmUgZWl0aGVyIHJldHVybiBhIGZhaWwtb3BlbiBieXBhc3MgcmVzdWx0ICh3aGVuXG4gIC8vIENPTVBMSUFOQ0VfQllQQVNTKSBvciByZXRocm93LiBUaGUgZm91ciBtZXRob2RzIGRpZmZlciBPTkxZIGluIHBhdGgsIHJlcXVlc3RcbiAgLy8gYm9keSwgb3AgbGFiZWwsIGFuZCBieXBhc3MgY29udGV4dC5cbiAgYXN5bmMgZnVuY3Rpb24gcnVuVmFsaWRhdGlvbihcbiAgICBvcmdJZDogc3RyaW5nLFxuICAgIGF1dGhIZWFkZXI6IHN0cmluZyxcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgYm9keTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgb3A6IHN0cmluZyxcbiAgICBieXBhc3NDdHg6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICApOiBQcm9taXNlPENvbXBsaWFuY2VDaGVja1Jlc3VsdD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0PHsgc3VjY2VzczogYm9vbGVhbjsgZGF0YTogQ29tcGxpYW5jZUNoZWNrUmVzdWx0OyBtZXNzYWdlPzogc3RyaW5nIH0+KFxuICAgICAgICBwYXRoLCBib2R5LCB2YWxpZGF0ZU9wdGlvbnMob3JnSWQsIGF1dGhIZWFkZXIpLFxuICAgICAgKTtcbiAgICAgIHJldHVybiB1bndyYXAocmVzcG9uc2UsIG9wKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKENPTVBMSUFOQ0VfQllQQVNTKSByZXR1cm4gYnlwYXNzUmVzdWx0KGJ5cGFzc0N0eCk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHZhbGlkYXRlUGx1Z2luKG9yZ0lkLCBhdHRyaWJ1dGVzLCBhdXRoSGVhZGVyLCBlbnRpdHlJZCwgZW50aXR5TmFtZSwgYWN0aW9uLCBkZWZlcnJlZEZpZWxkcykge1xuICAgICAgcmV0dXJuIHJ1blZhbGlkYXRpb24ob3JnSWQsIGF1dGhIZWFkZXIsICcvY29tcGxpYW5jZS92YWxpZGF0ZS9wbHVnaW4nLFxuICAgICAgICB7XG4gICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICBlbnRpdHlJZCxcbiAgICAgICAgICBlbnRpdHlOYW1lLFxuICAgICAgICAgIGFjdGlvbjogYWN0aW9uID8/ICd1cGxvYWQnLFxuICAgICAgICAgIC4uLihkZWZlcnJlZEZpZWxkcyAmJiBkZWZlcnJlZEZpZWxkcy5sZW5ndGggPiAwID8geyBkZWZlcnJlZEZpZWxkczogWy4uLmRlZmVycmVkRmllbGRzXSB9IDoge30pLFxuICAgICAgICB9LCAndmFsaWRhdGVQbHVnaW4nLFxuICAgICAgICB7IG9yZ0lkLCBlbnRpdHlUeXBlOiAncGx1Z2luJywgZW50aXR5SWQsIGVudGl0eU5hbWUgfSk7XG4gICAgfSxcblxuICAgIHZhbGlkYXRlUGlwZWxpbmUob3JnSWQsIGF0dHJpYnV0ZXMsIGF1dGhIZWFkZXIsIGVudGl0eUlkLCBlbnRpdHlOYW1lLCBhY3Rpb24pIHtcbiAgICAgIHJldHVybiBydW5WYWxpZGF0aW9uKG9yZ0lkLCBhdXRoSGVhZGVyLCAnL2NvbXBsaWFuY2UvdmFsaWRhdGUvcGlwZWxpbmUnLFxuICAgICAgICB7IGF0dHJpYnV0ZXMsIGVudGl0eUlkLCBlbnRpdHlOYW1lLCBhY3Rpb246IGFjdGlvbiA/PyAnY3JlYXRlJyB9LCAndmFsaWRhdGVQaXBlbGluZScsXG4gICAgICAgIHsgb3JnSWQsIGVudGl0eVR5cGU6ICdwaXBlbGluZScsIGVudGl0eUlkLCBlbnRpdHlOYW1lIH0pO1xuICAgIH0sXG5cbiAgICBkcnlSdW5QbHVnaW4ob3JnSWQsIGF0dHJpYnV0ZXMsIGF1dGhIZWFkZXIpIHtcbiAgICAgIHJldHVybiBydW5WYWxpZGF0aW9uKG9yZ0lkLCBhdXRoSGVhZGVyLCAnL2NvbXBsaWFuY2UvdmFsaWRhdGUvcGx1Z2luL2RyeS1ydW4nLFxuICAgICAgICB7IGF0dHJpYnV0ZXMgfSwgJ2RyeVJ1blBsdWdpbicsIHsgb3JnSWQsIGVudGl0eVR5cGU6ICdwbHVnaW4nLCBkcnlSdW46IHRydWUgfSk7XG4gICAgfSxcblxuICAgIGRyeVJ1blBpcGVsaW5lKG9yZ0lkLCBhdHRyaWJ1dGVzLCBhdXRoSGVhZGVyKSB7XG4gICAgICByZXR1cm4gcnVuVmFsaWRhdGlvbihvcmdJZCwgYXV0aEhlYWRlciwgJy9jb21wbGlhbmNlL3ZhbGlkYXRlL3BpcGVsaW5lL2RyeS1ydW4nLFxuICAgICAgICB7IGF0dHJpYnV0ZXMgfSwgJ2RyeVJ1blBpcGVsaW5lJywgeyBvcmdJZCwgZW50aXR5VHlwZTogJ3BpcGVsaW5lJywgZHJ5UnVuOiB0cnVlIH0pO1xuICAgIH0sXG4gIH07XG59XG4iXX0=
@@ -80,4 +80,4 @@ export function registerComplianceEventSubscriber(config, serviceName = serviceI
80
80
  port: serviceConfig.port,
81
81
  });
82
82
  }
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxpYW5jZS1ldmVudC1zdWJzY3JpYmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2NvbXBsaWFuY2UtZXZlbnQtc3Vic2NyaWJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxZQUFZLEVBQWdELE1BQU0sb0JBQW9CLENBQUM7QUFDaEcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBc0IsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFL0QsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFFakQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLFVBQVUsaUNBQWlDLENBQy9DLE1BQStCLEVBQy9CLFdBQVcsR0FBVyxlQUFlLEVBQUU7SUFFdkMsTUFBTSxhQUFhLEdBQWtCO1FBQ25DLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxJQUFJLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJO1FBQ3hELElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxJQUFJLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJO0tBQ3pELENBQUM7SUFFRixNQUFNLE1BQU0sR0FBRyxJQUFJLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRXJELE1BQU0sVUFBVSxHQUEwQjtRQUN4QyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQWtCO1lBQ3BDLElBQUksQ0FBQztnQkFDSCxnRUFBZ0U7Z0JBQ2hFLGtFQUFrRTtnQkFDbEUsb0RBQW9EO2dCQUNwRCw2REFBNkQ7Z0JBQzdELEVBQUU7Z0JBQ0Ysb0VBQW9FO2dCQUNwRSw2REFBNkQ7Z0JBQzdELHNFQUFzRTtnQkFDdEUsdUVBQXVFO2dCQUN2RSx3RUFBd0U7Z0JBQ3hFLDZEQUE2RDtnQkFDN0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLDJCQUEyQixFQUFFLEtBQUssRUFBRTtvQkFDckUsT0FBTyxFQUFFO3dCQUNQLGVBQWUsRUFBRSxvQkFBb0IsQ0FBQyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7d0JBQzFGLGlCQUFpQixFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtxQkFDM0c7aUJBQ0YsQ0FBQyxDQUFDO2dCQUNILHdFQUF3RTtnQkFDeEUsdUVBQXVFO2dCQUN2RSx3RUFBd0U7Z0JBQ3hFLHVFQUF1RTtnQkFDdkUsaUVBQWlFO2dCQUNqRSxJQUFJLFFBQVEsQ0FBQyxVQUFVLEdBQUcsR0FBRyxJQUFJLFFBQVEsQ0FBQyxVQUFVLElBQUksR0FBRyxFQUFFLENBQUM7b0JBQzVELE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO2dCQUMzRixDQUFDO1lBQ0gsQ0FBQztZQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQ2Isc0VBQXNFO2dCQUN0RSx3RUFBd0U7Z0JBQ3hFLHlEQUF5RDtnQkFDekQsV0FBVyxDQUFDLDZCQUE2QixFQUFFLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQzNGLE1BQU0sQ0FBQyxJQUFJLENBQUMscURBQXFELEVBQUU7b0JBQ2pFLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtvQkFDcEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO29CQUMxQixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7b0JBQ3hCLEtBQUssRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDO2lCQUN6QixDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztLQUNGLENBQUM7SUFFRixZQUFZLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ25DLE1BQU0sQ0FBQyxJQUFJLENBQUMsd0NBQXdDLEVBQUU7UUFDcEQsSUFBSSxFQUFFLGFBQWEsQ0FBQyxJQUFJO1FBQ3hCLElBQUksRUFBRSxhQUFhLENBQUMsSUFBSTtLQUN6QixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGVudGl0eUV2ZW50cywgdHlwZSBFbnRpdHlFdmVudCwgdHlwZSBFbnRpdHlFdmVudFN1YnNjcmliZXIgfSBmcm9tICcuL2VudGl0eS1ldmVudHMuanMnO1xuaW1wb3J0IHsgSW50ZXJuYWxIdHRwQ2xpZW50IH0gZnJvbSAnLi9odHRwLWNsaWVudC5qcyc7XG5pbXBvcnQgeyBzZXJ2aWNlSWRlbnRpdHkgfSBmcm9tICcuL3NlcnZpY2Uta2V5cy5qcyc7XG5pbXBvcnQgeyBnZXRTZXJ2aWNlQXV0aEhlYWRlciB9IGZyb20gJy4uL21pZGRsZXdhcmUvc2VydmljZS10b2tlbnMuanMnO1xuaW1wb3J0IHsgdHlwZSBTZXJ2aWNlQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMvY29tbW9uLmpzJztcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5pbXBvcnQgeyBlbWl0Q291bnRlciB9IGZyb20gJy4uL3V0aWxzL21ldHJpYy1lbWl0dGVyLmpzJztcbmltcG9ydCB7IGVycm9yTWVzc2FnZSB9IGZyb20gJy4uL3V0aWxzL3Jlc3BvbnNlLmpzJztcbmltcG9ydCB7IHNlcnZpY2VFbmRwb2ludCB9IGZyb20gJy4uL3V0aWxzL3NlcnZpY2UtcmVnaXN0cnkuanMnO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ2NvbXBsaWFuY2UtZXZlbnRzJyk7XG5cbi8qKlxuICogUmVnaXN0ZXJzIGFuIGVudGl0eSBldmVudCBzdWJzY3JpYmVyIHRoYXQgZm9yd2FyZHMgZXZlbnRzIHRvIHRoZSBjb21wbGlhbmNlIHNlcnZpY2UuXG4gKlxuICogQ2FsbCB0aGlzIGF0IHNlcnZpY2Ugc3RhcnR1cCAoaW4gaW5kZXgudHMpIHRvIGVuYWJsZSBhdXRvbWF0aWMgY29tcGxpYW5jZVxuICogbm90aWZpY2F0aW9uIG9uIGVudGl0eSBtdXRhdGlvbnMuIEV2ZW50cyBhcmUgZmlyZS1hbmQtZm9yZ2V0IOKAlCBmYWlsdXJlc1xuICogYXJlIGxvZ2dlZCBidXQgbmV2ZXIgYmxvY2sgdGhlIG9yaWdpbmFsIHJlcXVlc3QuXG4gKlxuICogQHBhcmFtIGNvbmZpZyAtIE9wdGlvbmFsIHNlcnZpY2UgY29uZmlnIG92ZXJyaWRlIChkZWZhdWx0cyB0byBDT01QTElBTkNFX1NFUlZJQ0VfSE9TVC9QT1JUIGVudiB2YXJzKVxuICogQHBhcmFtIHNlcnZpY2VOYW1lIC0gU2VydmljZSBpZGVudGlmaWVyIGJha2VkIGludG8gdGhlIHNpZ25lZCBKV1QncyBgc3ViYFxuICogICAoZS5nLiAncGlwZWxpbmUnLCAncGx1Z2luJykuIFRoZSBjb21wbGlhbmNlIHJvdXRlIGlzIGFuIElOVEVSTkFMIHJvdXRlOiBpdFxuICogICBhZG1pdHMgb25seSB0aG9zZSB0d28gc2VydmljZXMnIG93biBzaWduZWQgdG9rZW5zLCBhbmQgbm8gdXNlciB0b2tlbi5cbiAqICAgRGVmYXVsdHMgdG8gVEhJUyBwcm9jZXNzJ3MgaWRlbnRpdHkgKGBTRVJWSUNFX05BTUVgKSDigJQgc2luY2UgIzE0IGEgc2VydmljZVxuICogICBob2xkcyBvbmx5IGl0cyBvd24gc2lnbmluZyBrZXksIHNvIGEgcGxhY2Vob2xkZXIgbmFtZSB3b3VsZCBtaW50IGEgdG9rZW4gbm9cbiAqICAgcGVlciBjb3VsZCB2ZXJpZnkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckNvbXBsaWFuY2VFdmVudFN1YnNjcmliZXIoXG4gIGNvbmZpZz86IFBhcnRpYWw8U2VydmljZUNvbmZpZz4sXG4gIHNlcnZpY2VOYW1lOiBzdHJpbmcgPSBzZXJ2aWNlSWRlbnRpdHkoKSxcbik6IHZvaWQge1xuICBjb25zdCBzZXJ2aWNlQ29uZmlnOiBTZXJ2aWNlQ29uZmlnID0ge1xuICAgIGhvc3Q6IGNvbmZpZz8uaG9zdCA/PyBzZXJ2aWNlRW5kcG9pbnQoJ2NvbXBsaWFuY2UnKS5ob3N0LFxuICAgIHBvcnQ6IGNvbmZpZz8ucG9ydCA/PyBzZXJ2aWNlRW5kcG9pbnQoJ2NvbXBsaWFuY2UnKS5wb3J0LFxuICB9O1xuXG4gIGNvbnN0IGNsaWVudCA9IG5ldyBJbnRlcm5hbEh0dHBDbGllbnQoc2VydmljZUNvbmZpZyk7XG5cbiAgY29uc3Qgc3Vic2NyaWJlcjogRW50aXR5RXZlbnRTdWJzY3JpYmVyID0ge1xuICAgIGFzeW5jIG9uRW50aXR5RXZlbnQoZXZlbnQ6IEVudGl0eUV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBNaW50IGEgcGVyLWV2ZW50IHNlcnZpY2UgSldUIHNjb3BlZCB0byB0aGUgZXZlbnQncyBvcmcgc28gdGhlXG4gICAgICAgIC8vIGNvbXBsaWFuY2Ugcm91dGUncyBgcnVuV2l0aFRlbmFudENvbnRleHRgIHNlZXMgdGhlIHJpZ2h0IHRlbmFudFxuICAgICAgICAvLyBHVUMuIFRoZSBjb21wbGlhbmNlIHNpZGUgZW5mb3JjZXMgYHJlcXVpcmVBdXRoYCArXG4gICAgICAgIC8vIGByZXF1aXJlU2VydmljZVByaW5jaXBhbGA7IG5vIHBsYWludGV4dCBoZWFkZXIgaXMgdHJ1c3RlZC5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gVGhpcyBIVFRQIG5vdGlmeSBpcyB0aGUgU0lOR0xFIGRlbGl2ZXJ5IGNoYW5uZWwgZm9yIHBvc3QtbXV0YXRpb25cbiAgICAgICAgLy8gcmUtdmFsaWRhdGlvbiAocHJpbWFyeSBlbmZvcmNlbWVudCBpcyB0aGUgZmFpbC1DTE9TRUQgbGl2ZVxuICAgICAgICAvLyB2YWxpZGF0ZSBwYXRoKS4gQSBzdGFibGUgcGVyLWV2ZW50IGBJZGVtcG90ZW5jeS1LZXlgIG1ha2VzIHRoZSBQT1NUXG4gICAgICAgIC8vIHJldHJ5LXNhZmUgaW4gdGhlIGh0dHAtY2xpZW50LCBzbyBhIHRyYW5zaWVudCA1eHgvdGltZW91dCBpcyByZXRyaWVkXG4gICAgICAgIC8vIHJhdGhlciB0aGFuIGRyb3BwZWQgb24gdGhlIGZpcnN0IGF0dGVtcHQ7IGNvbXBsaWFuY2UgcmUtZXZhbHVhdGlvbiBpc1xuICAgICAgICAvLyBuYXR1cmFsbHkgaWRlbXBvdGVudCwgc28gYSBkdXBsaWNhdGUgZGVsaXZlcnkgaXMgaGFybWxlc3MuXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3QoJy9jb21wbGlhbmNlL2V2ZW50cy9lbnRpdHknLCBldmVudCwge1xuICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogZ2V0U2VydmljZUF1dGhIZWFkZXIoeyBzZXJ2aWNlTmFtZSwgb3JnSWQ6IGV2ZW50Lm9yZ0lkLCByb2xlOiAnbWVtYmVyJyB9KSxcbiAgICAgICAgICAgICdJZGVtcG90ZW5jeS1LZXknOiBgJHtldmVudC50YXJnZXR9OiR7ZXZlbnQuZW50aXR5SWR9OiR7ZXZlbnQuZXZlbnRUeXBlfToke2V2ZW50LnRpbWVzdGFtcC50b0lTT1N0cmluZygpfWAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIFRoZSBjbGllbnQgUkVUVVJOUyBhIHRlcm1pbmFsIDR4eC81eHggKHJldHJpZXMgZXhoYXVzdGVkKSByYXRoZXIgdGhhblxuICAgICAgICAvLyB0aHJvd2luZywgc28gYW4gdW5jaGVja2VkIGNhbGwgY291bnRlZCBldmVyeSByZWplY3Rpb24gYXMgZGVsaXZlcmVkOlxuICAgICAgICAvLyBhIDQwMyBmcm9tIGEgbWlzLXByb3Zpc2lvbmVkIHNlcnZpY2UgaWRlbnRpdHksIG9yIGEgNTAwIGZyb20gYSBicm9rZW5cbiAgICAgICAgLy8gY29tcGxpYW5jZSBkZXBsb3ksIGRyb3BwZWQgZXZlcnkgcmUtdmFsaWRhdGlvbiB3aXRoIG5vIG1ldHJpYyBhbmQgbm9cbiAgICAgICAgLy8gbG9nLiBSb3V0ZSBpdCB0aHJvdWdoIHRoZSBzYW1lIGRyb3AgcGF0aCBhcyBhIHRyYW5zcG9ydCBlcnJvci5cbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgPCAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzQ29kZSA+PSAzMDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGNvbXBsaWFuY2UgcmVqZWN0ZWQgdGhlIGVudGl0eSBldmVudCB3aXRoIEhUVFAgJHtyZXNwb25zZS5zdGF0dXNDb2RlfWApO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgLy8gRmlyZS1hbmQtZm9yZ2V0OiBsb2cgKyBhIGRyb3AgbWV0cmljIHNvIHN1c3RhaW5lZCBsb3NzIGlzIGFsZXJ0YWJsZVxuICAgICAgICAvLyAob3BlcmF0b3JzIGNhbid0IGFjdCBvbiBhIHdhcm4gbGluZSBhbG9uZSksIHRoZW4gc3dhbGxvdyDigJQgY29tcGxpYW5jZVxuICAgICAgICAvLyBub3RpZmljYXRpb24gaXMgbm9uLWZhdGFsIHRvIHRoZSBvcmlnaW5hdGluZyBtdXRhdGlvbi5cbiAgICAgICAgZW1pdENvdW50ZXIoJ2NvbXBsaWFuY2VfZXZlbnRfZHJvcF90b3RhbCcsIHsgc2VydmljZTogc2VydmljZU5hbWUsIHRhcmdldDogZXZlbnQudGFyZ2V0IH0pO1xuICAgICAgICBsb2dnZXIud2FybignRmFpbGVkIHRvIG5vdGlmeSBjb21wbGlhbmNlIHNlcnZpY2Ugb2YgZW50aXR5IGV2ZW50Jywge1xuICAgICAgICAgIHRhcmdldDogZXZlbnQudGFyZ2V0LFxuICAgICAgICAgIGV2ZW50VHlwZTogZXZlbnQuZXZlbnRUeXBlLFxuICAgICAgICAgIGVudGl0eUlkOiBldmVudC5lbnRpdHlJZCxcbiAgICAgICAgICBlcnJvcjogZXJyb3JNZXNzYWdlKGVyciksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gIH07XG5cbiAgZW50aXR5RXZlbnRzLnN1YnNjcmliZShzdWJzY3JpYmVyKTtcbiAgbG9nZ2VyLmluZm8oJ0NvbXBsaWFuY2UgZXZlbnQgc3Vic2NyaWJlciByZWdpc3RlcmVkJywge1xuICAgIGhvc3Q6IHNlcnZpY2VDb25maWcuaG9zdCxcbiAgICBwb3J0OiBzZXJ2aWNlQ29uZmlnLnBvcnQsXG4gIH0pO1xufVxuIl19
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxpYW5jZS1ldmVudC1zdWJzY3JpYmVyLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvY29tcGxpYW5jZS1ldmVudC1zdWJzY3JpYmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLFlBQVksRUFBZ0QsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFzQixNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUvRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUVqRDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sVUFBVSxpQ0FBaUMsQ0FDL0MsTUFBK0IsRUFDL0IsV0FBVyxHQUFXLGVBQWUsRUFBRTtJQUV2QyxNQUFNLGFBQWEsR0FBa0I7UUFDbkMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLElBQUksZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUk7UUFDeEQsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLElBQUksZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUk7S0FDekQsQ0FBQztJQUVGLE1BQU0sTUFBTSxHQUFHLElBQUksa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFckQsTUFBTSxVQUFVLEdBQTBCO1FBQ3hDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBa0I7WUFDcEMsSUFBSSxDQUFDO2dCQUNILGdFQUFnRTtnQkFDaEUsa0VBQWtFO2dCQUNsRSxvREFBb0Q7Z0JBQ3BELDZEQUE2RDtnQkFDN0QsRUFBRTtnQkFDRixvRUFBb0U7Z0JBQ3BFLDZEQUE2RDtnQkFDN0Qsc0VBQXNFO2dCQUN0RSx1RUFBdUU7Z0JBQ3ZFLHdFQUF3RTtnQkFDeEUsNkRBQTZEO2dCQUM3RCxNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsS0FBSyxFQUFFO29CQUNyRSxPQUFPLEVBQUU7d0JBQ1AsZUFBZSxFQUFFLG9CQUFvQixDQUFDLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQzt3QkFDMUYsaUJBQWlCLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxFQUFFO3FCQUMzRztpQkFDRixDQUFDLENBQUM7Z0JBQ0gsd0VBQXdFO2dCQUN4RSx1RUFBdUU7Z0JBQ3ZFLHdFQUF3RTtnQkFDeEUsdUVBQXVFO2dCQUN2RSxpRUFBaUU7Z0JBQ2pFLElBQUksUUFBUSxDQUFDLFVBQVUsR0FBRyxHQUFHLElBQUksUUFBUSxDQUFDLFVBQVUsSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDNUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7Z0JBQzNGLENBQUM7WUFDSCxDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDYixzRUFBc0U7Z0JBQ3RFLHdFQUF3RTtnQkFDeEUseURBQXlEO2dCQUN6RCxXQUFXLENBQUMsNkJBQTZCLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztnQkFDM0YsTUFBTSxDQUFDLElBQUksQ0FBQyxxREFBcUQsRUFBRTtvQkFDakUsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO29CQUNwQixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7b0JBQzFCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtvQkFDeEIsS0FBSyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUM7aUJBQ3pCLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO0tBQ0YsQ0FBQztJQUVGLFlBQVksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkMsTUFBTSxDQUFDLElBQUksQ0FBQyx3Q0FBd0MsRUFBRTtRQUNwRCxJQUFJLEVBQUUsYUFBYSxDQUFDLElBQUk7UUFDeEIsSUFBSSxFQUFFLGFBQWEsQ0FBQyxJQUFJO0tBQ3pCLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgZW50aXR5RXZlbnRzLCB0eXBlIEVudGl0eUV2ZW50LCB0eXBlIEVudGl0eUV2ZW50U3Vic2NyaWJlciB9IGZyb20gJy4vZW50aXR5LWV2ZW50cy5qcyc7XG5pbXBvcnQgeyBJbnRlcm5hbEh0dHBDbGllbnQgfSBmcm9tICcuL2h0dHAtY2xpZW50LmpzJztcbmltcG9ydCB7IHNlcnZpY2VJZGVudGl0eSB9IGZyb20gJy4vc2VydmljZS1rZXlzLmpzJztcbmltcG9ydCB7IGdldFNlcnZpY2VBdXRoSGVhZGVyIH0gZnJvbSAnLi4vbWlkZGxld2FyZS9zZXJ2aWNlLXRva2Vucy5qcyc7XG5pbXBvcnQgeyB0eXBlIFNlcnZpY2VDb25maWcgfSBmcm9tICcuLi90eXBlcy9jb21tb24uanMnO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCB7IGVtaXRDb3VudGVyIH0gZnJvbSAnLi4vdXRpbHMvbWV0cmljLWVtaXR0ZXIuanMnO1xuaW1wb3J0IHsgZXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vdXRpbHMvcmVzcG9uc2UuanMnO1xuaW1wb3J0IHsgc2VydmljZUVuZHBvaW50IH0gZnJvbSAnLi4vdXRpbHMvc2VydmljZS1yZWdpc3RyeS5qcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignY29tcGxpYW5jZS1ldmVudHMnKTtcblxuLyoqXG4gKiBSZWdpc3RlcnMgYW4gZW50aXR5IGV2ZW50IHN1YnNjcmliZXIgdGhhdCBmb3J3YXJkcyBldmVudHMgdG8gdGhlIGNvbXBsaWFuY2Ugc2VydmljZS5cbiAqXG4gKiBDYWxsIHRoaXMgYXQgc2VydmljZSBzdGFydHVwIChpbiBpbmRleC50cykgdG8gZW5hYmxlIGF1dG9tYXRpYyBjb21wbGlhbmNlXG4gKiBub3RpZmljYXRpb24gb24gZW50aXR5IG11dGF0aW9ucy4gRXZlbnRzIGFyZSBmaXJlLWFuZC1mb3JnZXQg4oCUIGZhaWx1cmVzXG4gKiBhcmUgbG9nZ2VkIGJ1dCBuZXZlciBibG9jayB0aGUgb3JpZ2luYWwgcmVxdWVzdC5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIC0gT3B0aW9uYWwgc2VydmljZSBjb25maWcgb3ZlcnJpZGUgKGRlZmF1bHRzIHRvIENPTVBMSUFOQ0VfU0VSVklDRV9IT1NUL1BPUlQgZW52IHZhcnMpXG4gKiBAcGFyYW0gc2VydmljZU5hbWUgLSBTZXJ2aWNlIGlkZW50aWZpZXIgYmFrZWQgaW50byB0aGUgc2lnbmVkIEpXVCdzIGBzdWJgXG4gKiAgIChlLmcuICdwaXBlbGluZScsICdwbHVnaW4nKS4gVGhlIGNvbXBsaWFuY2Ugcm91dGUgaXMgYW4gSU5URVJOQUwgcm91dGU6IGl0XG4gKiAgIGFkbWl0cyBvbmx5IHRob3NlIHR3byBzZXJ2aWNlcycgb3duIHNpZ25lZCB0b2tlbnMsIGFuZCBubyB1c2VyIHRva2VuLlxuICogICBEZWZhdWx0cyB0byBUSElTIHByb2Nlc3MncyBpZGVudGl0eSAoYFNFUlZJQ0VfTkFNRWApIOKAlCBzaW5jZSAjMTQgYSBzZXJ2aWNlXG4gKiAgIGhvbGRzIG9ubHkgaXRzIG93biBzaWduaW5nIGtleSwgc28gYSBwbGFjZWhvbGRlciBuYW1lIHdvdWxkIG1pbnQgYSB0b2tlbiBub1xuICogICBwZWVyIGNvdWxkIHZlcmlmeS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyQ29tcGxpYW5jZUV2ZW50U3Vic2NyaWJlcihcbiAgY29uZmlnPzogUGFydGlhbDxTZXJ2aWNlQ29uZmlnPixcbiAgc2VydmljZU5hbWU6IHN0cmluZyA9IHNlcnZpY2VJZGVudGl0eSgpLFxuKTogdm9pZCB7XG4gIGNvbnN0IHNlcnZpY2VDb25maWc6IFNlcnZpY2VDb25maWcgPSB7XG4gICAgaG9zdDogY29uZmlnPy5ob3N0ID8/IHNlcnZpY2VFbmRwb2ludCgnY29tcGxpYW5jZScpLmhvc3QsXG4gICAgcG9ydDogY29uZmlnPy5wb3J0ID8/IHNlcnZpY2VFbmRwb2ludCgnY29tcGxpYW5jZScpLnBvcnQsXG4gIH07XG5cbiAgY29uc3QgY2xpZW50ID0gbmV3IEludGVybmFsSHR0cENsaWVudChzZXJ2aWNlQ29uZmlnKTtcblxuICBjb25zdCBzdWJzY3JpYmVyOiBFbnRpdHlFdmVudFN1YnNjcmliZXIgPSB7XG4gICAgYXN5bmMgb25FbnRpdHlFdmVudChldmVudDogRW50aXR5RXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIE1pbnQgYSBwZXItZXZlbnQgc2VydmljZSBKV1Qgc2NvcGVkIHRvIHRoZSBldmVudCdzIG9yZyBzbyB0aGVcbiAgICAgICAgLy8gY29tcGxpYW5jZSByb3V0ZSdzIGBydW5XaXRoVGVuYW50Q29udGV4dGAgc2VlcyB0aGUgcmlnaHQgdGVuYW50XG4gICAgICAgIC8vIEdVQy4gVGhlIGNvbXBsaWFuY2Ugc2lkZSBlbmZvcmNlcyBgcmVxdWlyZUF1dGhgICtcbiAgICAgICAgLy8gYHJlcXVpcmVTZXJ2aWNlUHJpbmNpcGFsYDsgbm8gcGxhaW50ZXh0IGhlYWRlciBpcyB0cnVzdGVkLlxuICAgICAgICAvL1xuICAgICAgICAvLyBUaGlzIEhUVFAgbm90aWZ5IGlzIHRoZSBTSU5HTEUgZGVsaXZlcnkgY2hhbm5lbCBmb3IgcG9zdC1tdXRhdGlvblxuICAgICAgICAvLyByZS12YWxpZGF0aW9uIChwcmltYXJ5IGVuZm9yY2VtZW50IGlzIHRoZSBmYWlsLUNMT1NFRCBsaXZlXG4gICAgICAgIC8vIHZhbGlkYXRlIHBhdGgpLiBBIHN0YWJsZSBwZXItZXZlbnQgYElkZW1wb3RlbmN5LUtleWAgbWFrZXMgdGhlIFBPU1RcbiAgICAgICAgLy8gcmV0cnktc2FmZSBpbiB0aGUgaHR0cC1jbGllbnQsIHNvIGEgdHJhbnNpZW50IDV4eC90aW1lb3V0IGlzIHJldHJpZWRcbiAgICAgICAgLy8gcmF0aGVyIHRoYW4gZHJvcHBlZCBvbiB0aGUgZmlyc3QgYXR0ZW1wdDsgY29tcGxpYW5jZSByZS1ldmFsdWF0aW9uIGlzXG4gICAgICAgIC8vIG5hdHVyYWxseSBpZGVtcG90ZW50LCBzbyBhIGR1cGxpY2F0ZSBkZWxpdmVyeSBpcyBoYXJtbGVzcy5cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdCgnL2NvbXBsaWFuY2UvZXZlbnRzL2VudGl0eScsIGV2ZW50LCB7XG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBnZXRTZXJ2aWNlQXV0aEhlYWRlcih7IHNlcnZpY2VOYW1lLCBvcmdJZDogZXZlbnQub3JnSWQsIHJvbGU6ICdtZW1iZXInIH0pLFxuICAgICAgICAgICAgJ0lkZW1wb3RlbmN5LUtleSc6IGAke2V2ZW50LnRhcmdldH06JHtldmVudC5lbnRpdHlJZH06JHtldmVudC5ldmVudFR5cGV9OiR7ZXZlbnQudGltZXN0YW1wLnRvSVNPU3RyaW5nKCl9YCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgLy8gVGhlIGNsaWVudCBSRVRVUk5TIGEgdGVybWluYWwgNHh4LzV4eCAocmV0cmllcyBleGhhdXN0ZWQpIHJhdGhlciB0aGFuXG4gICAgICAgIC8vIHRocm93aW5nLCBzbyBhbiB1bmNoZWNrZWQgY2FsbCBjb3VudGVkIGV2ZXJ5IHJlamVjdGlvbiBhcyBkZWxpdmVyZWQ6XG4gICAgICAgIC8vIGEgNDAzIGZyb20gYSBtaXMtcHJvdmlzaW9uZWQgc2VydmljZSBpZGVudGl0eSwgb3IgYSA1MDAgZnJvbSBhIGJyb2tlblxuICAgICAgICAvLyBjb21wbGlhbmNlIGRlcGxveSwgZHJvcHBlZCBldmVyeSByZS12YWxpZGF0aW9uIHdpdGggbm8gbWV0cmljIGFuZCBub1xuICAgICAgICAvLyBsb2cuIFJvdXRlIGl0IHRocm91Z2ggdGhlIHNhbWUgZHJvcCBwYXRoIGFzIGEgdHJhbnNwb3J0IGVycm9yLlxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSA8IDIwMCB8fCByZXNwb25zZS5zdGF0dXNDb2RlID49IDMwMCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgY29tcGxpYW5jZSByZWplY3RlZCB0aGUgZW50aXR5IGV2ZW50IHdpdGggSFRUUCAke3Jlc3BvbnNlLnN0YXR1c0NvZGV9YCk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAvLyBGaXJlLWFuZC1mb3JnZXQ6IGxvZyArIGEgZHJvcCBtZXRyaWMgc28gc3VzdGFpbmVkIGxvc3MgaXMgYWxlcnRhYmxlXG4gICAgICAgIC8vIChvcGVyYXRvcnMgY2FuJ3QgYWN0IG9uIGEgd2FybiBsaW5lIGFsb25lKSwgdGhlbiBzd2FsbG93IOKAlCBjb21wbGlhbmNlXG4gICAgICAgIC8vIG5vdGlmaWNhdGlvbiBpcyBub24tZmF0YWwgdG8gdGhlIG9yaWdpbmF0aW5nIG11dGF0aW9uLlxuICAgICAgICBlbWl0Q291bnRlcignY29tcGxpYW5jZV9ldmVudF9kcm9wX3RvdGFsJywgeyBzZXJ2aWNlOiBzZXJ2aWNlTmFtZSwgdGFyZ2V0OiBldmVudC50YXJnZXQgfSk7XG4gICAgICAgIGxvZ2dlci53YXJuKCdGYWlsZWQgdG8gbm90aWZ5IGNvbXBsaWFuY2Ugc2VydmljZSBvZiBlbnRpdHkgZXZlbnQnLCB7XG4gICAgICAgICAgdGFyZ2V0OiBldmVudC50YXJnZXQsXG4gICAgICAgICAgZXZlbnRUeXBlOiBldmVudC5ldmVudFR5cGUsXG4gICAgICAgICAgZW50aXR5SWQ6IGV2ZW50LmVudGl0eUlkLFxuICAgICAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcblxuICBlbnRpdHlFdmVudHMuc3Vic2NyaWJlKHN1YnNjcmliZXIpO1xuICBsb2dnZXIuaW5mbygnQ29tcGxpYW5jZSBldmVudCBzdWJzY3JpYmVyIHJlZ2lzdGVyZWQnLCB7XG4gICAgaG9zdDogc2VydmljZUNvbmZpZy5ob3N0LFxuICAgIHBvcnQ6IHNlcnZpY2VDb25maWcucG9ydCxcbiAgfSk7XG59XG4iXX0=
@@ -263,4 +263,4 @@ export function createEnvRedisDurableEventBus(opts = {}) {
263
263
  logger.info('Redis durable event bus initialized');
264
264
  return createRedisDurableEventBus(inst, opts);
265
265
  }
266
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVyYWJsZS1ldmVudC1idXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvZHVyYWJsZS1ldmVudC1idXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkc7QUFFSCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVwRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQW9GakQsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDO0FBQzlCLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztBQUN6QixNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQztBQUMvQixNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQztBQUNuQyxNQUFNLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztBQUVsQyxTQUFTLFNBQVMsQ0FBQyxLQUFhO0lBQzlCLE9BQU8sT0FBTyxLQUFLLEVBQUUsQ0FBQztBQUN4QixDQUFDO0FBRUQsc0NBQXNDO0FBQ3RDLE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxLQUFhO0lBQy9DLE9BQU8sT0FBTyxLQUFLLE1BQU0sQ0FBQztBQUM1QixDQUFDO0FBRUQsbUZBQW1GO0FBQ25GLFNBQVMsaUJBQWlCLENBQUMsRUFBVTtJQUNuQyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFB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QUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7WUFFckYsT0FBTztnQkFDTCxLQUFLLENBQUMsSUFBSTtvQkFDUixPQUFPLEdBQUcsSUFBSSxDQUFDO29CQUNmLHdFQUF3RTtvQkFDeEUsd0VBQXdFO29CQUN4RSx5RUFBeUU7b0JBQ3pFLE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDekMsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNoRSxDQUFDO2FBQ0YsQ0FBQztRQUNKLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLDZCQUE2QixDQUFDLElBQUksR0FBd0IsRUFBRTtJQUMxRSxNQUFNLElBQUksR0FBRyxvQkFBb0IsQ0FBb0IsV0FBVyxDQUFDLENBQUM7SUFDbEUsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPLElBQUksQ0FBQztJQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDLHFDQUFxQyxDQUFDLENBQUM7SUFDbkQsT0FBTywwQkFBMEIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDaEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIER1cmFibGUsIGF0LWxlYXN0LW9uY2UgZXZlbnQgYmFja2JvbmUgKFJlZGlzIFN0cmVhbXMpLlxuICpcbiAqIFRoZSBwbGF0Zm9ybSdzIGNyb3NzLXNlcnZpY2Ugc2lnbmFsbGluZyB0b2RheSBpcyBwb2ludC10by1wb2ludCBIVFRQIHBsdXNcbiAqIHBvbGxpbmcgcmVjb25jaWxlcnMgcGx1cyBhbiBJTi1QUk9DRVNTIGJlc3QtZWZmb3J0IGVtaXR0ZXIgKHtAbGluayBlbnRpdHlFdmVudHN9KS5cbiAqIFRoZXJlIGlzIG5vIGR1cmFibGUgYnVzLCBzbyBhIHNpZ25hbCBwcm9kdWNlZCBvbiBvbmUgcG9kIGlzIGVpdGhlciBkZWxpdmVyZWRcbiAqIHN5bmNocm9ub3VzbHkgb3ZlciBIVFRQIChjb3VwbGluZyArIHJldHJ5LXN0b3JtIHJpc2spIG9yIGxvc3QgaWYgdGhlIGNvbnN1bWVyXG4gKiBpcyBtb21lbnRhcmlseSBkb3duICh0aGUgcmVjb25jaWxlcnMgZXhpc3QgdG8gcGFwZXIgb3ZlciBleGFjdGx5IHRoYXQpLlxuICpcbiAqIFRoaXMgaXMgdGhhdCBtaXNzaW5nIGJ1cywgYXMgYSByZXVzYWJsZSBwcmltaXRpdmU6XG4gKiAgLSAqKnB1Ymxpc2godG9waWMsIHBheWxvYWQpKiog4oaSIGBYQUREYCBvbnRvIGEgYm91bmRlZCAoYE1BWExFTiB+YCkgcGVyLXRvcGljXG4gKiAgICBzdHJlYW0uIER1cmFibGUgYWNyb3NzIHJlc3RhcnRzLCBzaGFyZWQgYnkgYWxsIHJlcGxpY2FzLlxuICogIC0gKipzdWJzY3JpYmUoe3RvcGljLCBncm91cCwgY29uc3VtZXIsIGhhbmRsZXJ9KSoqIOKGkiBhIGBYUkVBREdST1VQYCBjb25zdW1lclxuICogICAgb24gaXRzIE9XTiBjb25uZWN0aW9uIChgZHVwbGljYXRlKClgKSwgc28gYSBibG9ja2luZyByZWFkIG5ldmVyIGRlbGF5cyBhXG4gKiAgICBwdWJsaXNoLiBDb25zdW1lciBHUk9VUFMgZ2l2ZSBhdC1sZWFzdC1vbmNlOiBlYWNoIGdyb3VwIGdldHMgZXZlcnkgbWVzc2FnZVxuICogICAgb25jZSwgYSBtZXNzYWdlIHN0YXlzIHBlbmRpbmcgdW50aWwgdGhlIGhhbmRsZXIgYFhBQ0tgcyBpdCwgYW5kIGBYQVVUT0NMQUlNYFxuICogICAgcmVjbGFpbXMgbWVzc2FnZXMgc3RyYW5kZWQgYnkgYSBjcmFzaGVkIGNvbnN1bWVyLiBBIG1lc3NhZ2UgdGhhdCBoYXMgYmVlblxuICogICAgZGVsaXZlcmVkIGBtYXhEZWxpdmVyaWVzYCB0aW1lcyB3aXRob3V0IGFuIGFjayBpcyBtb3ZlZCB0byBhIGRlYWQtbGV0dGVyXG4gKiAgICBzdHJlYW0gKGBldnQ6PHRvcGljPjpkbHFgKSBhbmQgYWNrZWQsIHNvIGEgcG9pc29uIG1lc3NhZ2UgY2FuJ3QgcmVkZWxpdmVyXG4gKiAgICBmb3JldmVyLiBNdWx0aXBsZSBncm91cHMgb24gb25lIHRvcGljID0gaW5kZXBlbmRlbnQgZmFuLW91dC5cbiAqXG4gKiBGQUlMLVNBRkUgKyBPUFQtSU4sIGV4YWN0bHkgbGlrZSB0aGUgYXVkaXQgc3Bvb2w6IHtAbGluayBjcmVhdGVFbnZSZWRpc0R1cmFibGVFdmVudEJ1c31cbiAqIHJldHVybnMgYG51bGxgIHdoZW4gUmVkaXMgaXNuJ3QgY29uZmlndXJlZCwgc28gYSBzZXJ2aWNlIHdpdGhvdXQgaXQgc2ltcGx5XG4gKiBkb2Vzbid0IHVzZSB0aGUgYnVzIChrZWVwcyB0b2RheSdzIGJlaGF2aW9yKS4gQSBwdWJsaXNoIGZhaWx1cmUgaXMgZHJvcHBlZC13aXRoLVxuICogLW1ldHJpYywgbmV2ZXIgdGhyb3duOyBhIGhhbmRsZXIgdGhyb3cgbGVhdmVzIHRoZSBtZXNzYWdlIHVuLWFja2VkIGZvciByZWRlbGl2ZXJ5LlxuICpcbiAqL1xuXG5pbXBvcnQgeyBjcmVhdGVFbnZSZWRpc0NsaWVudCB9IGZyb20gJy4vZW52LXJlZGlzLmpzJztcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5pbXBvcnQgeyBlbWl0Q291bnRlciB9IGZyb20gJy4uL3V0aWxzL21ldHJpYy1lbWl0dGVyLmpzJztcbmltcG9ydCB7IGVycm9yTWVzc2FnZSB9IGZyb20gJy4uL3V0aWxzL3Jlc3BvbnNlLmpzJztcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCdkdXJhYmxlLWV2ZW50LWJ1cycpO1xuXG4vKiogQSBkZWxpdmVyZWQgZXZlbnQ6IGl0cyBzdHJlYW0gaWQsIHRvcGljLCBwdWJsaXNoIHRpbWUsIGFuZCBkZWNvZGVkIHBheWxvYWQuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50RW52ZWxvcGU8VCA9IHVua25vd24+IHtcbiAgLyoqIFJlZGlzIFN0cmVhbSBlbnRyeSBpZCAoYDxtcz4tPHNlcT5gKSDigJQgYWxzbyB0aGUgaWRlbXBvdGVuY3kgaGFuZGxlLiAqL1xuICBpZDogc3RyaW5nO1xuICB0b3BpYzogc3RyaW5nO1xuICAvKipcbiAgICogV2hlbiB0aGUgZXZlbnQgd2FzIHB1Ymxpc2hlZCAodGhlIFJlZGlzIHNlcnZlciB0aW1lIGVtYmVkZGVkIGluIHRoZSBzdHJlYW1cbiAgICogaWQpLiBBIHJlZGVsaXZlcnkga2VlcHMgaXRzIE9SSUdJTkFMIHB1Ymxpc2ggdGltZSwgc28gYSBjb25zdW1lciBhcHBseWluZ1xuICAgKiBsYXN0LXdyaXRlci13aW5zIHN0YXRlIChlLmcuIGFuIGVudGl0bGVtZW50IHN5bmMpIGNhbiBvcmRlciBldmVudHMgYnkgaXRcbiAgICogaW5zdGVhZCBvZiBieSBkZWxpdmVyeSB0aW1lIGFuZCByZWZ1c2UgdG8gbGV0IGEgc3RhbGUgcmV0cnkgb3ZlcndyaXRlIGFcbiAgICogbmV3ZXIgc3RhdGUuXG4gICAqL1xuICBwdWJsaXNoZWRBdDogRGF0ZTtcbiAgcGF5bG9hZDogVDtcbn1cblxuLyoqXG4gKiBBIHBhcnNlZCBzdHJlYW0gZW50cnksIHdoaWNoIG1heSBoYXZlIE5PIHVzYWJsZSBwYXlsb2FkLlxuICpcbiAqIFNlcGFyYXRlIGZyb20ge0BsaW5rIEV2ZW50RW52ZWxvcGV9IGJlY2F1c2UgdGhlIHR3byBhcmUgZ2VudWluZWx5IGRpZmZlcmVudCB0aGluZ3MgYW5kXG4gKiBjb25mbGF0aW5nIHRoZW0gY29zdCB0aHJlZSBgdW5kZWZpbmVkIGFzIHVua25vd24gYXMgVGAgY2FzdHM6IGFuIGVudHJ5IHdpdGggbm8gYGRgIGZpZWxkXG4gKiBvciB3aXRoIHVucGFyc2VhYmxlIEpTT04gaXMgYSBwb2lzb24gbWVzc2FnZSwgYW5kIGl0IGhhcyB0byB0cmF2ZWwgZmFyIGVub3VnaCBmb3JcbiAqIGBkZWxpdmVyKClgIHRvIEFDSyBpdCAobGVhdmluZyBpdCBwZW5kaW5nIHdvdWxkIHdlZGdlIHRoZSBncm91cCBmb3JldmVyKS4gRGVjbGFyaW5nIHRoYXRcbiAqIHBvc3NpYmlsaXR5IGhlcmUgbWVhbnMgdGhlIEFDSy13aXRob3V0LWhhbmRsaW5nIHBhdGggaXMgYSB0eXBlIE5BUlJPV0lORyByYXRoZXIgdGhhbiBhXG4gKiBydW50aW1lIGNvbnZlbnRpb24gdGhlIHR5cGUgc3lzdGVtIHdhcyBsaWVkIHRvIGFib3V0IOKAlCBhIGhhbmRsZXIgc3RpbGwgb25seSBldmVyIHNlZXNcbiAqIGBwYXlsb2FkOiBUYC5cbiAqL1xudHlwZSBQYXJzZWRFbnZlbG9wZTxUPiA9IE9taXQ8RXZlbnRFbnZlbG9wZTxUPiwgJ3BheWxvYWQnPiAmIHsgcGF5bG9hZDogVCB8IHVuZGVmaW5lZCB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN1YnNjcmliZU9wdGlvbnM8VCA9IHVua25vd24+IHtcbiAgLyoqIFRvcGljIChzdHJlYW0pIHRvIGNvbnN1bWUuICovXG4gIHRvcGljOiBzdHJpbmc7XG4gIC8qKiBDb25zdW1lciBncm91cCDigJQgb25lIGRlbGl2ZXJ5IHBlciBncm91cDsgZGlzdGluY3QgZ3JvdXBzIGZhbiBvdXQuICovXG4gIGdyb3VwOiBzdHJpbmc7XG4gIC8qKiBUaGlzIGNvbnN1bWVyJ3MgaWQgd2l0aGluIHRoZSBncm91cCAoZS5nLiBgJHtzZXJ2aWNlfS0ke3BpZH1gKS4gKi9cbiAgY29uc3VtZXI6IHN0cmluZztcbiAgLyoqIEFzeW5jIGhhbmRsZXIuIFJlc29sdmVzIOKHkiB0aGUgbWVzc2FnZSBpcyBhY2tlZDsgdGhyb3dzIOKHkiBsZWZ0IHBlbmRpbmcgZm9yIHJlZGVsaXZlcnkuICovXG4gIGhhbmRsZXI6IChlbnY6IEV2ZW50RW52ZWxvcGU8VD4pID0+IFByb21pc2U8dm9pZD47XG4gIC8qKiBNYXggbWVzc2FnZXMgcGVyIHJlYWQgKGRlZmF1bHQgMTYpLiAqL1xuICBiYXRjaFNpemU/OiBudW1iZXI7XG4gIC8qKiBYUkVBREdST1VQIGJsb2NrIHRpbWUgaW4gbXMgKGRlZmF1bHQgNTAwMCkuICovXG4gIGJsb2NrTXM/OiBudW1iZXI7XG4gIC8qKiBBIHBlbmRpbmcgbWVzc2FnZSBpZGxlIHRoaXMgbG9uZyAobXMpIGlzIHJlY2xhaW1lZCBmcm9tIGEgZGVhZCBjb25zdW1lciAoZGVmYXVsdCA2MDAwMCkuICovXG4gIG1pbklkbGVNcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIERlbGl2ZXJpZXMgYWZ0ZXIgd2hpY2ggYW4gdW4tYWNrZWQgbWVzc2FnZSBpcyBkZWFkLWxldHRlcmVkIHRvXG4gICAqIGBldnQ6PHRvcGljPjpkbHFgIGFuZCBhY2tlZCBpbnN0ZWFkIG9mIGJlaW5nIHJlZGVsaXZlcmVkIGFnYWluIChkZWZhdWx0IDEwKS5cbiAgICovXG4gIG1heERlbGl2ZXJpZXM/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRTdWJzY3JpcHRpb24ge1xuICAvKiogU3RvcCB0aGUgY29uc3VtZXIgbG9vcC4gUmVzb2x2ZXMgb25jZSB0aGUgaW4tZmxpZ2h0IHJlYWQgcmV0dXJucy4gKi9cbiAgc3RvcCgpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIER1cmFibGVFdmVudEJ1cyB7XG4gIC8qKiBQdWJsaXNoIGEgcGF5bG9hZCB0byBhIHRvcGljLiBSZXR1cm5zIHRoZSBzdHJlYW0gaWQsIG9yIG51bGwgb24gZmFpbHVyZSAoZHJvcHBlZCwgbmV2ZXIgdGhyb3dzKS4gKi9cbiAgcHVibGlzaDxUPih0b3BpYzogc3RyaW5nLCBwYXlsb2FkOiBUKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPjtcbiAgLyoqIFN0YXJ0IGEgY29uc3VtZXItZ3JvdXAgcmVhZGVyIGZvciBhIHRvcGljLiBGaXJlLWFuZC1mb3JnZXQgbG9vcDsgY2FsbCBgc3RvcCgpYCB0byBlbmQgaXQuICovXG4gIHN1YnNjcmliZTxUPihvcHRzOiBTdWJzY3JpYmVPcHRpb25zPFQ+KTogRXZlbnRTdWJzY3JpcHRpb247XG59XG5cbi8qKlxuICogVGhlIHN1YnNldCBvZiBpb3JlZGlzJyBTdHJlYW0gQVBJIHRoZSBidXMgdXNlcy4gS2VwdCBtaW5pbWFsIHNvIGEgdGVzdCBjYW5cbiAqIHN1cHBseSBhbiBpbi1tZW1vcnkgZmFrZSBhbmQgc28gbWVyZWx5IGltcG9ydGluZyB0aGlzIG5ldmVyIGhhcmQtZGVwZW5kcyBvblxuICogaW9yZWRpcyAoY29uc3RydWN0ZWQgdmlhIHRoZSBzaGFyZWQgZW52IGhlbHBlcikuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVkaXNTdHJlYW1DbGllbnQge1xuICB4YWRkKGtleTogc3RyaW5nLCAuLi5hcmdzOiAoc3RyaW5nIHwgbnVtYmVyKVtdKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPjtcbiAgeGdyb3VwKC4uLmFyZ3M6IChzdHJpbmcgfCBudW1iZXIpW10pOiBQcm9taXNlPHVua25vd24+O1xuICB4cmVhZGdyb3VwKC4uLmFyZ3M6IChzdHJpbmcgfCBudW1iZXIpW10pOiBQcm9taXNlPHVua25vd24+O1xuICB4YWNrKGtleTogc3RyaW5nLCBncm91cDogc3RyaW5nLCAuLi5pZHM6IHN0cmluZ1tdKTogUHJvbWlzZTxudW1iZXI+O1xuICB4YXV0b2NsYWltKC4uLmFyZ3M6IChzdHJpbmcgfCBudW1iZXIpW10pOiBQcm9taXNlPHVua25vd24+O1xuICB4cGVuZGluZyhrZXk6IHN0cmluZywgZ3JvdXA6IHN0cmluZywgLi4uYXJnczogKHN0cmluZyB8IG51bWJlcilbXSk6IFByb21pc2U8dW5rbm93bj47XG4gIHhyYW5nZShrZXk6IHN0cmluZywgc3RhcnQ6IHN0cmluZywgZW5kOiBzdHJpbmcsIC4uLmFyZ3M6IChzdHJpbmcgfCBudW1iZXIpW10pOiBQcm9taXNlPHVua25vd24+O1xuICAvKiogQSBuZXcgY29ubmVjdGlvbiB3aXRoIHRoZSBzYW1lIG9wdGlvbnMg4oCUIGVhY2ggc3Vic2NyaWJlciByZWFkcyBvbiBpdHMgb3duLiAqL1xuICBkdXBsaWNhdGUoKTogUmVkaXNTdHJlYW1DbGllbnQ7XG4gIHF1aXQ/KCk6IFByb21pc2U8dW5rbm93bj47XG4gIG9uPyhldmVudDogJ2Vycm9yJywgY2I6IChlcnI6IHVua25vd24pID0+IHZvaWQpOiB1bmtub3duO1xufVxuXG5jb25zdCBERUZBVUxUX01BWExFTiA9IDEwXzAwMDtcbmNvbnN0IERFRkFVTFRfQkFUQ0ggPSAxNjtcbmNvbnN0IERFRkFVTFRfQkxPQ0tfTVMgPSA1XzAwMDtcbmNvbnN0IERFRkFVTFRfTUlOX0lETEVfTVMgPSA2MF8wMDA7XG5jb25zdCBERUZBVUxUX01BWF9ERUxJVkVSSUVTID0gMTA7XG5cbmZ1bmN0aW9uIHN0cmVhbUtleSh0b3BpYzogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBldnQ6JHt0b3BpY31gO1xufVxuXG4vKiogRGVhZC1sZXR0ZXIgc3RyZWFtIGZvciBhIHRvcGljLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlYWRMZXR0ZXJTdHJlYW1LZXkodG9waWM6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgZXZ0OiR7dG9waWN9OmRscWA7XG59XG5cbi8qKiBQdWJsaXNoIHRpbWUgZnJvbSBhIHN0cmVhbSBpZCAoYDxtcz4tPHNlcT5gKTsgZXBvY2ggMCBmb3IgYW4gdW5wYXJzZWFibGUgaWQuICovXG5mdW5jdGlvbiBwdWJsaXNoZWRBdEZyb21JZChpZDogc3RyaW5nKTogRGF0ZSB7XG4gIGNvbnN0IG1zID0gTnVtYmVyKGlkLnNwbGl0KCctJylbMF0pO1xuICByZXR1cm4gbmV3IERhdGUoTnVtYmVyLmlzRmluaXRlKG1zKSA/IG1zIDogMCk7XG59XG5cbi8qKiBUcnVlIHdoZW4gdGhlIGVycm9yIGlzIFJlZGlzJyBcImdyb3VwIGFscmVhZHkgZXhpc3RzXCIgKGlkZW1wb3RlbnQgY3JlYXRlKS4gKi9cbmZ1bmN0aW9uIGlzQnVzeUdyb3VwKGVycjogdW5rbm93bik6IGJvb2xlYW4ge1xuICByZXR1cm4gZXJyb3JNZXNzYWdlKGVycikuaW5jbHVkZXMoJ0JVU1lHUk9VUCcpO1xufVxuXG4vKipcbiAqIFBhcnNlIHRoZSBuZXN0ZWQgYXJyYXkgc2hhcGUgWFJFQURHUk9VUCAvIFhBVVRPQ0xBSU0gcmV0dXJuIGludG8gZmxhdCBlbnZlbG9wZXMuXG4gKiBYUkVBREdST1VQOiBgW1tzdHJlYW1LZXksIFtbaWQsIFtmLCB2LCAuLi5dXSwgLi4uXV1dYC5cbiAqIFhBVVRPQ0xBSU06IGBbbmV4dEN1cnNvciwgW1tpZCwgW2YsIHYsIC4uLl1dLCAuLi5dLCBkZWxldGVkSWRzXWAuXG4gKiBXZSBzdG9yZSB0aGUgSlNPTiBwYXlsb2FkIHVuZGVyIGEgc2luZ2xlIGZpZWxkIGBkYC5cbiAqL1xuZnVuY3Rpb24gcGFyc2VFbnRyaWVzPFQ+KHRvcGljOiBzdHJpbmcsIGVudHJpZXM6IHVua25vd24pOiBQYXJzZWRFbnZlbG9wZTxUPltdIHtcbiAgY29uc3Qgb3V0OiBQYXJzZWRFbnZlbG9wZTxUPltdID0gW107XG4gIGlmICghQXJyYXkuaXNBcnJheShlbnRyaWVzKSkgcmV0dXJuIG91dDtcbiAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGVudHJ5KSB8fCBlbnRyeS5sZW5ndGggPCAyKSBjb250aW51ZTtcbiAgICBjb25zdCBpZCA9IFN0cmluZyhlbnRyeVswXSk7XG4gICAgY29uc3QgZmllbGRzID0gZW50cnlbMV07XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGZpZWxkcykpIGNvbnRpbnVlO1xuICAgIC8vIGZpZWxkcyBpcyBbbmFtZSwgdmFsdWUsIG5hbWUsIHZhbHVlLCAuLi5dOyBmaW5kICdkJy5cbiAgICBsZXQgcmF3OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgKyAxIDwgZmllbGRzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICBpZiAoU3RyaW5nKGZpZWxkc1tpXSkgPT09ICdkJykgeyByYXcgPSBTdHJpbmcoZmllbGRzW2kgKyAxXSk7IGJyZWFrOyB9XG4gICAgfVxuICAgIC8vIEEgbWlzc2luZyBgZGAgZmllbGQgKGFuIGVudHJ5IG5vdCB3cml0dGVuIGJ5IHB1Ymxpc2goKSkgT1IgYSBjb3JydXB0IEpTT05cbiAgICAvLyBwYXlsb2FkIGJvdGggeWllbGQgYW4gdW5kZWZpbmVkLXBheWxvYWQgZW52ZWxvcGUgc28gYGRlbGl2ZXIoKWAgQUNLcyBpdCDigJRcbiAgICAvLyBhIHBvaXNvbiBtZXNzYWdlIG11c3QgbmV2ZXIgd2VkZ2UgdGhlIGdyb3VwIGJ5IHN0YXlpbmcgcGVycGV0dWFsbHkgcGVuZGluZy5cbiAgICBjb25zdCBwdWJsaXNoZWRBdCA9IHB1Ymxpc2hlZEF0RnJvbUlkKGlkKTtcbiAgICBpZiAocmF3ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG91dC5wdXNoKHsgaWQsIHRvcGljLCBwdWJsaXNoZWRBdCwgcGF5bG9hZDogdW5kZWZpbmVkIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBvdXQucHVzaCh7IGlkLCB0b3BpYywgcHVibGlzaGVkQXQsIHBheWxvYWQ6IEpTT04ucGFyc2UocmF3KSBhcyBUIH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgb3V0LnB1c2goeyBpZCwgdG9waWMsIHB1Ymxpc2hlZEF0LCBwYXlsb2FkOiB1bmRlZmluZWQgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXQ7XG59XG5cbi8qKiBCdWlsZCBhIGR1cmFibGUgZXZlbnQgYnVzIG92ZXIgYSBSZWRpcyBTdHJlYW1zIGNsaWVudC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWRpc0R1cmFibGVFdmVudEJ1cyhcbiAgcmVkaXM6IFJlZGlzU3RyZWFtQ2xpZW50LFxuICBvcHRzOiB7IG1heExlbj86IG51bWJlciB9ID0ge30sXG4pOiBEdXJhYmxlRXZlbnRCdXMge1xuICBjb25zdCBtYXhMZW4gPSBNYXRoLm1heCgxLCBvcHRzLm1heExlbiA/PyBERUZBVUxUX01BWExFTik7XG5cbiAgcmV0dXJuIHtcbiAgICBhc3luYyBwdWJsaXNoPFQ+KHRvcGljOiBzdHJpbmcsIHBheWxvYWQ6IFQpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICAgIGNvbnN0IGtleSA9IHN0cmVhbUtleSh0b3BpYyk7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBNQVhMRU4gfiA8bj4gYm91bmRzIHRoZSBzdHJlYW0gYXBwcm94aW1hdGVseSAoY2hlYXApOyBgKmAgPSBzZXJ2ZXIgaWQuXG4gICAgICAgIGNvbnN0IGlkID0gYXdhaXQgcmVkaXMueGFkZChrZXksICdNQVhMRU4nLCAnficsIG1heExlbiwgJyonLCAnZCcsIEpTT04uc3RyaW5naWZ5KHBheWxvYWQpKTtcbiAgICAgICAgZW1pdENvdW50ZXIoJ2V2ZW50X2J1c19wdWJsaXNoZWRfdG90YWwnLCB7IHRvcGljIH0pO1xuICAgICAgICByZXR1cm4gaWQ7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgZW1pdENvdW50ZXIoJ2V2ZW50X2J1c19wdWJsaXNoX2ZhaWxlZF90b3RhbCcsIHsgdG9waWMgfSk7XG4gICAgICAgIGxvZ2dlci53YXJuKCdFdmVudCBidXMgcHVibGlzaCBmYWlsZWQgKGV2ZW50IGRyb3BwZWQpJywgeyB0b3BpYywgZXJyb3I6IGVycm9yTWVzc2FnZShlcnIpIH0pO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgc3Vic2NyaWJlPFQ+KHN1Yk9wdHM6IFN1YnNjcmliZU9wdGlvbnM8VD4pOiBFdmVudFN1YnNjcmlwdGlvbiB7XG4gICAgICBjb25zdCB7IHRvcGljLCBncm91cCwgY29uc3VtZXIsIGhhbmRsZXIgfSA9IHN1Yk9wdHM7XG4gICAgICBjb25zdCBrZXkgPSBzdHJlYW1LZXkodG9waWMpO1xuICAgICAgY29uc3QgZGxxS2V5ID0gZGVhZExldHRlclN0cmVhbUtleSh0b3BpYyk7XG4gICAgICBjb25zdCBiYXRjaCA9IE1hdGgubWF4KDEsIHN1Yk9wdHMuYmF0Y2hTaXplID8/IERFRkFVTFRfQkFUQ0gpO1xuICAgICAgY29uc3QgYmxvY2tNcyA9IE1hdGgubWF4KDAsIHN1Yk9wdHMuYmxvY2tNcyA/PyBERUZBVUxUX0JMT0NLX01TKTtcbiAgICAgIGNvbnN0IG1pbklkbGUgPSBNYXRoLm1heCgwLCBzdWJPcHRzLm1pbklkbGVNcyA/PyBERUZBVUxUX01JTl9JRExFX01TKTtcbiAgICAgIGNvbnN0IG1heERlbGl2ZXJpZXMgPSBNYXRoLm1heCgxLCBzdWJPcHRzLm1heERlbGl2ZXJpZXMgPz8gREVGQVVMVF9NQVhfREVMSVZFUklFUyk7XG5cbiAgICAgIC8vIGBYUkVBREdST1VQIEJMT0NLYCBob2xkcyBpdHMgY29ubmVjdGlvbiBmb3IgdXAgdG8gYGJsb2NrTXNgOyBvbiB0aGVcbiAgICAgIC8vIHNoYXJlZCBjbGllbnQgZXZlcnkgcHVibGlzaCBxdWV1ZWQgYmVoaW5kIGl0LiBSZWFkIG9uIGEgZGVkaWNhdGVkIG9uZS5cbiAgICAgIGNvbnN0IHJlYWRlciA9IHJlZGlzLmR1cGxpY2F0ZSgpO1xuICAgICAgLy8gQSBkdXBsaWNhdGVkIGlvcmVkaXMgY29ubmVjdGlvbiBkb2Vzbid0IGluaGVyaXQgbGlzdGVuZXJzOyB3aXRob3V0IG9uZSBhXG4gICAgICAvLyBjb25uZWN0aW9uIGVycm9yIGlzIGFuIHVuaGFuZGxlZCAnZXJyb3InIGV2ZW50IHRoYXQgY3Jhc2hlcyB0aGUgcHJvY2Vzcy5cbiAgICAgIHJlYWRlci5vbj8uKCdlcnJvcicsIChlcnIpID0+IGxvZ2dlci53YXJuKCdFdmVudCBidXMgcmVhZGVyIGNvbm5lY3Rpb24gZXJyb3InLCB7IHRvcGljLCBncm91cCwgZXJyb3I6IGVycm9yTWVzc2FnZShlcnIpIH0pKTtcblxuICAgICAgbGV0IHN0b3BwZWQgPSBmYWxzZTtcblxuICAgICAgY29uc3QgZGVsaXZlciA9IGFzeW5jIChlbnZzOiBQYXJzZWRFbnZlbG9wZTxUPltdKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgZW52IG9mIGVudnMpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gVGhlIG5hcnJvd2luZyB0aGF0IHVzZWQgdG8gYmUgYSBjYXN0OiBpbnNpZGUgdGhpcyBicmFuY2ggYHBheWxvYWRgIGlzIGBUYCxcbiAgICAgICAgICAgIC8vIHNvIGBlbnZgIHJlYWxseSBpcyBhbiBFdmVudEVudmVsb3BlPFQ+IGFuZCB0aGUgaGFuZGxlcidzIHR5cGUgaXMgaG9uZXN0LlxuICAgICAgICAgICAgaWYgKGVudi5wYXlsb2FkICE9PSB1bmRlZmluZWQpIGF3YWl0IGhhbmRsZXIoZW52IGFzIEV2ZW50RW52ZWxvcGU8VD4pO1xuICAgICAgICAgICAgLy8gQWNrIG9uIHN1Y2Nlc3MgT1Igb24gYW4gdW5kZWZpbmVkIChjb3JydXB0KSBwYXlsb2FkIOKAlCBhIHBvaXNvblxuICAgICAgICAgICAgLy8gbWVzc2FnZSBtdXN0IG5vdCBibG9jayB0aGUgZ3JvdXAgZm9yZXZlci5cbiAgICAgICAgICAgIGF3YWl0IHJlYWRlci54YWNrKGtleSwgZ3JvdXAsIGVudi5pZCk7XG4gICAgICAgICAgICBlbWl0Q291bnRlcignZXZlbnRfYnVzX2RlbGl2ZXJlZF90b3RhbCcsIHsgdG9waWMsIGdyb3VwIH0pO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgLy8gTGVhdmUgaXQgcGVuZGluZyAobm8gWEFDSykg4oCUIFhBVVRPQ0xBSU0gcmVkZWxpdmVycyBpdCBhZnRlciBtaW5JZGxlLlxuICAgICAgICAgICAgZW1pdENvdW50ZXIoJ2V2ZW50X2J1c19oYW5kbGVyX2ZhaWxlZF90b3RhbCcsIHsgdG9waWMsIGdyb3VwIH0pO1xuICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ0V2ZW50IGhhbmRsZXIgZmFpbGVkOyBsZWF2aW5nIG1lc3NhZ2UgcGVuZGluZyBmb3IgcmVkZWxpdmVyeScsIHtcbiAgICAgICAgICAgICAgdG9waWMsIGdyb3VwLCBpZDogZW52LmlkLCBlcnJvcjogZXJyb3JNZXNzYWdlKGVyciksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIC8qKlxuICAgICAgICogTW92ZSBldmVyeSBpZGxlIHBlbmRpbmcgbWVzc2FnZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gZGVsaXZlcmVkXG4gICAgICAgKiBgbWF4RGVsaXZlcmllc2AgdGltZXMgdG8gdGhlIGRlYWQtbGV0dGVyIHN0cmVhbSBhbmQgYWNrIGl0LiBUaGUgZW50cnlcbiAgICAgICAqIGtlZXBzIGl0cyBwYXlsb2FkIHBsdXMgd2hlcmUgaXQgY2FtZSBmcm9tLCBzbyBhbiBvcGVyYXRvciBjYW4gaW5zcGVjdCBvclxuICAgICAgICogcmVwbGF5IGl0LiBJZiBjb3B5aW5nIGZhaWxzIHRoZSBtZXNzYWdlIGlzIGxlZnQgcGVuZGluZyAocmV0cmllZCBuZXh0XG4gICAgICAgKiBwYXNzKSDigJQgaXQgaXMgbmV2ZXIgYWNrZWQgd2l0aG91dCBiZWluZyBwcmVzZXJ2ZWQuXG4gICAgICAgKi9cbiAgICAgIGNvbnN0IGRlYWRMZXR0ZXJFeGhhdXN0ZWQgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIGNvbnN0IHBlbmRpbmcgPSBhd2FpdCByZWFkZXIueHBlbmRpbmcoa2V5LCBncm91cCwgJ0lETEUnLCBtaW5JZGxlLCAnLScsICcrJywgYmF0Y2gpO1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkocGVuZGluZykpIHJldHVybjtcbiAgICAgICAgZm9yIChjb25zdCBwIG9mIHBlbmRpbmcpIHtcbiAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkocCkgfHwgcC5sZW5ndGggPCA0KSBjb250aW51ZTtcbiAgICAgICAgICBjb25zdCBpZCA9IFN0cmluZyhwWzBdKTtcbiAgICAgICAgICBjb25zdCBkZWxpdmVyaWVzID0gTnVtYmVyKHBbM10pO1xuICAgICAgICAgIGlmICghKGRlbGl2ZXJpZXMgPj0gbWF4RGVsaXZlcmllcykpIGNvbnRpbnVlO1xuICAgICAgICAgIGNvbnN0IGVudHJpZXMgPSBhd2FpdCByZWFkZXIueHJhbmdlKGtleSwgaWQsIGlkKTtcbiAgICAgICAgICBjb25zdCBmaWVsZHMgPSBBcnJheS5pc0FycmF5KGVudHJpZXMpICYmIEFycmF5LmlzQXJyYXkoZW50cmllc1swXSkgJiYgQXJyYXkuaXNBcnJheShlbnRyaWVzWzBdWzFdKSA/IGVudHJpZXNbMF1bMV0gOiBbXTtcbiAgICAgICAgICBsZXQgcmF3ID0gJyc7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgKyAxIDwgZmllbGRzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICAgICAgICBpZiAoU3RyaW5nKGZpZWxkc1tpXSkgPT09ICdkJykgeyByYXcgPSBTdHJpbmcoZmllbGRzW2kgKyAxXSk7IGJyZWFrOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGF3YWl0IHJlYWRlci54YWRkKFxuICAgICAgICAgICAgZGxxS2V5LCAnTUFYTEVOJywgJ34nLCBtYXhMZW4sICcqJyxcbiAgICAgICAgICAgICdkJywgcmF3LCAnc291cmNlSWQnLCBpZCwgJ2dyb3VwJywgZ3JvdXAsICdkZWxpdmVyaWVzJywgZGVsaXZlcmllcyxcbiAgICAgICAgICApO1xuICAgICAgICAgIGF3YWl0IHJlYWRlci54YWNrKGtleSwgZ3JvdXAsIGlkKTtcbiAgICAgICAgICBlbWl0Q291bnRlcignZXZlbnRfYnVzX2RlYWRfbGV0dGVyZWRfdG90YWwnLCB7IHRvcGljLCBncm91cCB9KTtcbiAgICAgICAgICBsb2dnZXIuZXJyb3IoJ0V2ZW50IGV4Y2VlZGVkIG1heCBkZWxpdmVyaWVzOyBtb3ZlZCB0byBkZWFkLWxldHRlciBzdHJlYW0nLCB7XG4gICAgICAgICAgICB0b3BpYywgZ3JvdXAsIGlkLCBkZWxpdmVyaWVzLCBkZWFkTGV0dGVyU3RyZWFtOiBkbHFLZXksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIC8vIFRoZSBjb25zdW1lciBncm91cCBtdXN0IGV4aXN0IGJlZm9yZSBYUkVBREdST1VQIGNhbiBzdWNjZWVkLiBDcmVhdGluZyBpdFxuICAgICAgLy8gaXMgcmV0cmllZCBpbnNpZGUgdGhlIGxvb3A6IGF0IHN0YXJ0dXAgdGhlIGNsaWVudCBtYXkgbm90IGhhdmUgY29ubmVjdGVkXG4gICAgICAvLyB5ZXQsIGFuZCBhIHNpbmdsZSBmYWlsZWQgYXR0ZW1wdCB3b3VsZCBsZWF2ZSB0aGUgY29uc3VtZXIgcmVhZGluZyBhXG4gICAgICAvLyBncm91cCB0aGF0IHdhcyBuZXZlciBjcmVhdGVkIOKAlCBmb3JldmVyLlxuICAgICAgbGV0IGdyb3VwUmVhZHkgPSBmYWxzZTtcbiAgICAgIGNvbnN0IGVuc3VyZUdyb3VwID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIE1LU1RSRUFNIHNvIHRoZSBzdHJlYW0gbmVlZCBub3QgZXhpc3QgeWV0OyAnJCcgPSBvbmx5IG5ldyBtZXNzYWdlcy5cbiAgICAgICAgICBhd2FpdCByZWFkZXIueGdyb3VwKCdDUkVBVEUnLCBrZXksIGdyb3VwLCAnJCcsICdNS1NUUkVBTScpO1xuICAgICAgICAgIGdyb3VwUmVhZHkgPSB0cnVlO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBpZiAoIWlzQnVzeUdyb3VwKGVycikpIHRocm93IGVycjtcbiAgICAgICAgICBncm91cFJlYWR5ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3QgbG9vcCA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgd2hpbGUgKCFzdG9wcGVkKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICghZ3JvdXBSZWFkeSkgYXdhaXQgZW5zdXJlR3JvdXAoKTtcbiAgICAgICAgICAgIC8vIDEpIERlYWQtbGV0dGVyIG1lc3NhZ2VzIHRoYXQgaGF2ZSBleGhhdXN0ZWQgdGhlaXIgZGVsaXZlcmllcywgdGhlblxuICAgICAgICAgICAgLy8gICAgcmVjbGFpbSB0aGUgcmVzdCBzdHJhbmRlZCBieSBhIGZhaWxlZC9jcmFzaGVkIGNvbnN1bWVyLlxuICAgICAgICAgICAgYXdhaXQgZGVhZExldHRlckV4aGF1c3RlZCgpO1xuICAgICAgICAgICAgY29uc3QgY2xhaW1lZCA9IGF3YWl0IHJlYWRlci54YXV0b2NsYWltKGtleSwgZ3JvdXAsIGNvbnN1bWVyLCBtaW5JZGxlLCAnMCcsICdDT1VOVCcsIGJhdGNoKTtcbiAgICAgICAgICAgIC8vIFhBVVRPQ0xBSU0gcmVwbHk6IFtuZXh0Q3Vyc29yLCBlbnRyaWVzLCBkZWxldGVkSWRzXVxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2xhaW1lZCkgJiYgY2xhaW1lZC5sZW5ndGggPj0gMikge1xuICAgICAgICAgICAgICBhd2FpdCBkZWxpdmVyKHBhcnNlRW50cmllczxUPih0b3BpYywgY2xhaW1lZFsxXSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0b3BwZWQpIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyAyKSBSZWFkIG5ldywgbmV2ZXItZGVsaXZlcmVkIG1lc3NhZ2VzIGZvciB0aGlzIGdyb3VwICgnPicpLlxuICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgcmVhZGVyLnhyZWFkZ3JvdXAoXG4gICAgICAgICAgICAgICdHUk9VUCcsIGdyb3VwLCBjb25zdW1lciwgJ0NPVU5UJywgYmF0Y2gsICdCTE9DSycsIGJsb2NrTXMsICdTVFJFQU1TJywga2V5LCAnPicsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgLy8gWFJFQURHUk9VUCByZXBseTogW1tzdHJlYW1LZXksIGVudHJpZXNdXSB8IG51bGwgKG9uIGJsb2NrIHRpbWVvdXQpXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXMpICYmIHJlcy5sZW5ndGggPiAwICYmIEFycmF5LmlzQXJyYXkocmVzWzBdKSAmJiByZXNbMF0ubGVuZ3RoID49IDIpIHtcbiAgICAgICAgICAgICAgYXdhaXQgZGVsaXZlcihwYXJzZUVudHJpZXM8VD4odG9waWMsIHJlc1swXVsxXSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgaWYgKHN0b3BwZWQpIGJyZWFrO1xuICAgICAgICAgICAgLy8gVGhlIHN0cmVhbSBvciBncm91cCB3YXMgZGVsZXRlZCBvdXQgZnJvbSB1bmRlciB1cyDigJQgcmVjcmVhdGUgaXQuXG4gICAgICAgICAgICBpZiAoL05PR1JPVVAvaS50ZXN0KGVycm9yTWVzc2FnZShlcnIpKSkgZ3JvdXBSZWFkeSA9IGZhbHNlO1xuICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ0V2ZW50IGJ1cyBjb25zdW1lciBsb29wIGVycm9yOyBiYWNraW5nIG9mZicsIHsgdG9waWMsIGdyb3VwLCBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gICAgICAgICAgICAvLyBCYWNrIG9mZiBzbyBhIHBlcnNpc3RlbnQgUmVkaXMgZXJyb3IgZG9lc24ndCBob3Qtc3Bpbi5cbiAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIDEwMDApKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGxvb3BQcm9taXNlID0gbG9vcCgpO1xuICAgICAgbG9nZ2VyLmluZm8oJ0V2ZW50IGJ1cyBjb25zdW1lciBzdGFydGVkJywgeyB0b3BpYywgZ3JvdXAsIGNvbnN1bWVyLCBtYXhEZWxpdmVyaWVzIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBhc3luYyBzdG9wKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAgIHN0b3BwZWQgPSB0cnVlO1xuICAgICAgICAgIC8vIEF3YWl0IHRoZSBpbi1mbGlnaHQgcmVhZC9oYW5kbGVyIHNvIGEgY2FsbGVyIChlLmcuIGEgc2VydmljZSBzaHV0dGluZ1xuICAgICAgICAgIC8vIGRvd24gaXRzIERCKSBkb2Vzbid0IHJhY2UgYSBtZXNzYWdlIHN0aWxsIGJlaW5nIHByb2Nlc3NlZC4gQm91bmRlZCBieVxuICAgICAgICAgIC8vIHRoZSBYUkVBREdST1VQIEJMT0NLIHdpbmRvdy4gTmV2ZXIgcmVqZWN0cyDigJQgdGhlIGxvb3Agc3dhbGxvd3MgZXJyb3JzLlxuICAgICAgICAgIGF3YWl0IGxvb3BQcm9taXNlLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gICAgICAgICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKHJlYWRlci5xdWl0Py4oKSkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBCdWlsZCBhIGR1cmFibGUgZXZlbnQgYnVzIGZyb20gdGhlIGFtYmllbnQgUmVkaXMgZW52IHZpYSB0aGUgc2hhcmVkXG4gKiBgY3JlYXRlRW52UmVkaXNDbGllbnRgLiBSZXR1cm5zIGBudWxsYCB3aGVuIFJlZGlzIGlzIG5vdCBjb25maWd1cmVkIOKAlCB0aGVcbiAqIGNhbGxlciB0aGVuIHJ1bnMgd2l0aG91dCBhIGJ1cyAodG9kYXkncyBIVFRQL3JlY29uY2lsZXIgYmVoYXZpb3IpLCBuZXZlclxuICogY3Jhc2hpbmcuIE9wdCBpbiB3aXRoIGEgc2luZ2xlIGJvb3QgbGluZSB3aGVyZSBhIHNlcnZpY2Ugd2FudHMgZHVyYWJsZSBldmVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFbnZSZWRpc0R1cmFibGVFdmVudEJ1cyhvcHRzOiB7IG1heExlbj86IG51bWJlciB9ID0ge30pOiBEdXJhYmxlRXZlbnRCdXMgfCBudWxsIHtcbiAgY29uc3QgaW5zdCA9IGNyZWF0ZUVudlJlZGlzQ2xpZW50PFJlZGlzU3RyZWFtQ2xpZW50PignZXZlbnQtYnVzJyk7XG4gIGlmICghaW5zdCkgcmV0dXJuIG51bGw7XG4gIGxvZ2dlci5pbmZvKCdSZWRpcyBkdXJhYmxlIGV2ZW50IGJ1cyBpbml0aWFsaXplZCcpO1xuICByZXR1cm4gY3JlYXRlUmVkaXNEdXJhYmxlRXZlbnRCdXMoaW5zdCwgb3B0cyk7XG59XG4iXX0=
266
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVyYWJsZS1ldmVudC1idXMuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9kdXJhYmxlLWV2ZW50LWJ1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCRztBQUVILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXBELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBb0ZqRCxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUM7QUFDOUIsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO0FBQ3pCLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0FBQy9CLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDO0FBQ25DLE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxDQUFDO0FBRWxDLFNBQVMsU0FBUyxDQUFDLEtBQWE7SUFDOUIsT0FBTyxPQUFPLEtBQUssRUFBRSxDQUFDO0FBQ3hCLENBQUM7QUFFRCxzQ0FBc0M7QUFDdEMsTUFBTSxVQUFVLG1CQUFtQixDQUFDLEtBQWE7SUFDL0MsT0FBTyxPQUFPLEtBQUssTUFBTSxDQUFDO0FBQzVCLENBQUM7QUFFRCxtRkFBbUY7QUFDbkYsU0FBUyxpQkFBaUIsQ0FBQyxFQUFVO0lBQ25DLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FB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RSxRQUFRLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztZQUVyRixPQUFPO2dCQUNMLEtBQUssQ0FBQyxJQUFJO29CQUNSLE9BQU8sR0FBRyxJQUFJLENBQUM7b0JBQ2Ysd0VBQXdFO29CQUN4RSx3RUFBd0U7b0JBQ3hFLHlFQUF5RTtvQkFDekUsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUN6QyxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2hFLENBQUM7YUFDRixDQUFDO1FBQ0osQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsNkJBQTZCLENBQUMsSUFBSSxHQUF3QixFQUFFO0lBQzFFLE1BQU0sSUFBSSxHQUFHLG9CQUFvQixDQUFvQixXQUFXLENBQUMsQ0FBQztJQUNsRSxJQUFJLENBQUMsSUFBSTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUMscUNBQXFDLENBQUMsQ0FBQztJQUNuRCxPQUFPLDBCQUEwQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNoRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogRHVyYWJsZSwgYXQtbGVhc3Qtb25jZSBldmVudCBiYWNrYm9uZSAoUmVkaXMgU3RyZWFtcykuXG4gKlxuICogVGhlIHBsYXRmb3JtJ3MgY3Jvc3Mtc2VydmljZSBzaWduYWxsaW5nIHRvZGF5IGlzIHBvaW50LXRvLXBvaW50IEhUVFAgcGx1c1xuICogcG9sbGluZyByZWNvbmNpbGVycyBwbHVzIGFuIElOLVBST0NFU1MgYmVzdC1lZmZvcnQgZW1pdHRlciAoe0BsaW5rIGVudGl0eUV2ZW50c30pLlxuICogVGhlcmUgaXMgbm8gZHVyYWJsZSBidXMsIHNvIGEgc2lnbmFsIHByb2R1Y2VkIG9uIG9uZSBwb2QgaXMgZWl0aGVyIGRlbGl2ZXJlZFxuICogc3luY2hyb25vdXNseSBvdmVyIEhUVFAgKGNvdXBsaW5nICsgcmV0cnktc3Rvcm0gcmlzaykgb3IgbG9zdCBpZiB0aGUgY29uc3VtZXJcbiAqIGlzIG1vbWVudGFyaWx5IGRvd24gKHRoZSByZWNvbmNpbGVycyBleGlzdCB0byBwYXBlciBvdmVyIGV4YWN0bHkgdGhhdCkuXG4gKlxuICogVGhpcyBpcyB0aGF0IG1pc3NpbmcgYnVzLCBhcyBhIHJldXNhYmxlIHByaW1pdGl2ZTpcbiAqICAtICoqcHVibGlzaCh0b3BpYywgcGF5bG9hZCkqKiDihpIgYFhBRERgIG9udG8gYSBib3VuZGVkIChgTUFYTEVOIH5gKSBwZXItdG9waWNcbiAqICAgIHN0cmVhbS4gRHVyYWJsZSBhY3Jvc3MgcmVzdGFydHMsIHNoYXJlZCBieSBhbGwgcmVwbGljYXMuXG4gKiAgLSAqKnN1YnNjcmliZSh7dG9waWMsIGdyb3VwLCBjb25zdW1lciwgaGFuZGxlcn0pKiog4oaSIGEgYFhSRUFER1JPVVBgIGNvbnN1bWVyXG4gKiAgICBvbiBpdHMgT1dOIGNvbm5lY3Rpb24gKGBkdXBsaWNhdGUoKWApLCBzbyBhIGJsb2NraW5nIHJlYWQgbmV2ZXIgZGVsYXlzIGFcbiAqICAgIHB1Ymxpc2guIENvbnN1bWVyIEdST1VQUyBnaXZlIGF0LWxlYXN0LW9uY2U6IGVhY2ggZ3JvdXAgZ2V0cyBldmVyeSBtZXNzYWdlXG4gKiAgICBvbmNlLCBhIG1lc3NhZ2Ugc3RheXMgcGVuZGluZyB1bnRpbCB0aGUgaGFuZGxlciBgWEFDS2BzIGl0LCBhbmQgYFhBVVRPQ0xBSU1gXG4gKiAgICByZWNsYWltcyBtZXNzYWdlcyBzdHJhbmRlZCBieSBhIGNyYXNoZWQgY29uc3VtZXIuIEEgbWVzc2FnZSB0aGF0IGhhcyBiZWVuXG4gKiAgICBkZWxpdmVyZWQgYG1heERlbGl2ZXJpZXNgIHRpbWVzIHdpdGhvdXQgYW4gYWNrIGlzIG1vdmVkIHRvIGEgZGVhZC1sZXR0ZXJcbiAqICAgIHN0cmVhbSAoYGV2dDo8dG9waWM+OmRscWApIGFuZCBhY2tlZCwgc28gYSBwb2lzb24gbWVzc2FnZSBjYW4ndCByZWRlbGl2ZXJcbiAqICAgIGZvcmV2ZXIuIE11bHRpcGxlIGdyb3VwcyBvbiBvbmUgdG9waWMgPSBpbmRlcGVuZGVudCBmYW4tb3V0LlxuICpcbiAqIEZBSUwtU0FGRSArIE9QVC1JTiwgZXhhY3RseSBsaWtlIHRoZSBhdWRpdCBzcG9vbDoge0BsaW5rIGNyZWF0ZUVudlJlZGlzRHVyYWJsZUV2ZW50QnVzfVxuICogcmV0dXJucyBgbnVsbGAgd2hlbiBSZWRpcyBpc24ndCBjb25maWd1cmVkLCBzbyBhIHNlcnZpY2Ugd2l0aG91dCBpdCBzaW1wbHlcbiAqIGRvZXNuJ3QgdXNlIHRoZSBidXMgKGtlZXBzIHRvZGF5J3MgYmVoYXZpb3IpLiBBIHB1Ymxpc2ggZmFpbHVyZSBpcyBkcm9wcGVkLXdpdGgtXG4gKiAtbWV0cmljLCBuZXZlciB0aHJvd247IGEgaGFuZGxlciB0aHJvdyBsZWF2ZXMgdGhlIG1lc3NhZ2UgdW4tYWNrZWQgZm9yIHJlZGVsaXZlcnkuXG4gKlxuICovXG5cbmltcG9ydCB7IGNyZWF0ZUVudlJlZGlzQ2xpZW50IH0gZnJvbSAnLi9lbnYtcmVkaXMuanMnO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCB7IGVtaXRDb3VudGVyIH0gZnJvbSAnLi4vdXRpbHMvbWV0cmljLWVtaXR0ZXIuanMnO1xuaW1wb3J0IHsgZXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vdXRpbHMvcmVzcG9uc2UuanMnO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ2R1cmFibGUtZXZlbnQtYnVzJyk7XG5cbi8qKiBBIGRlbGl2ZXJlZCBldmVudDogaXRzIHN0cmVhbSBpZCwgdG9waWMsIHB1Ymxpc2ggdGltZSwgYW5kIGRlY29kZWQgcGF5bG9hZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRFbnZlbG9wZTxUID0gdW5rbm93bj4ge1xuICAvKiogUmVkaXMgU3RyZWFtIGVudHJ5IGlkIChgPG1zPi08c2VxPmApIOKAlCBhbHNvIHRoZSBpZGVtcG90ZW5jeSBoYW5kbGUuICovXG4gIGlkOiBzdHJpbmc7XG4gIHRvcGljOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBXaGVuIHRoZSBldmVudCB3YXMgcHVibGlzaGVkICh0aGUgUmVkaXMgc2VydmVyIHRpbWUgZW1iZWRkZWQgaW4gdGhlIHN0cmVhbVxuICAgKiBpZCkuIEEgcmVkZWxpdmVyeSBrZWVwcyBpdHMgT1JJR0lOQUwgcHVibGlzaCB0aW1lLCBzbyBhIGNvbnN1bWVyIGFwcGx5aW5nXG4gICAqIGxhc3Qtd3JpdGVyLXdpbnMgc3RhdGUgKGUuZy4gYW4gZW50aXRsZW1lbnQgc3luYykgY2FuIG9yZGVyIGV2ZW50cyBieSBpdFxuICAgKiBpbnN0ZWFkIG9mIGJ5IGRlbGl2ZXJ5IHRpbWUgYW5kIHJlZnVzZSB0byBsZXQgYSBzdGFsZSByZXRyeSBvdmVyd3JpdGUgYVxuICAgKiBuZXdlciBzdGF0ZS5cbiAgICovXG4gIHB1Ymxpc2hlZEF0OiBEYXRlO1xuICBwYXlsb2FkOiBUO1xufVxuXG4vKipcbiAqIEEgcGFyc2VkIHN0cmVhbSBlbnRyeSwgd2hpY2ggbWF5IGhhdmUgTk8gdXNhYmxlIHBheWxvYWQuXG4gKlxuICogU2VwYXJhdGUgZnJvbSB7QGxpbmsgRXZlbnRFbnZlbG9wZX0gYmVjYXVzZSB0aGUgdHdvIGFyZSBnZW51aW5lbHkgZGlmZmVyZW50IHRoaW5ncyBhbmRcbiAqIGNvbmZsYXRpbmcgdGhlbSBjb3N0IHRocmVlIGB1bmRlZmluZWQgYXMgdW5rbm93biBhcyBUYCBjYXN0czogYW4gZW50cnkgd2l0aCBubyBgZGAgZmllbGRcbiAqIG9yIHdpdGggdW5wYXJzZWFibGUgSlNPTiBpcyBhIHBvaXNvbiBtZXNzYWdlLCBhbmQgaXQgaGFzIHRvIHRyYXZlbCBmYXIgZW5vdWdoIGZvclxuICogYGRlbGl2ZXIoKWAgdG8gQUNLIGl0IChsZWF2aW5nIGl0IHBlbmRpbmcgd291bGQgd2VkZ2UgdGhlIGdyb3VwIGZvcmV2ZXIpLiBEZWNsYXJpbmcgdGhhdFxuICogcG9zc2liaWxpdHkgaGVyZSBtZWFucyB0aGUgQUNLLXdpdGhvdXQtaGFuZGxpbmcgcGF0aCBpcyBhIHR5cGUgTkFSUk9XSU5HIHJhdGhlciB0aGFuIGFcbiAqIHJ1bnRpbWUgY29udmVudGlvbiB0aGUgdHlwZSBzeXN0ZW0gd2FzIGxpZWQgdG8gYWJvdXQg4oCUIGEgaGFuZGxlciBzdGlsbCBvbmx5IGV2ZXIgc2Vlc1xuICogYHBheWxvYWQ6IFRgLlxuICovXG50eXBlIFBhcnNlZEVudmVsb3BlPFQ+ID0gT21pdDxFdmVudEVudmVsb3BlPFQ+LCAncGF5bG9hZCc+ICYgeyBwYXlsb2FkOiBUIHwgdW5kZWZpbmVkIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3Vic2NyaWJlT3B0aW9uczxUID0gdW5rbm93bj4ge1xuICAvKiogVG9waWMgKHN0cmVhbSkgdG8gY29uc3VtZS4gKi9cbiAgdG9waWM6IHN0cmluZztcbiAgLyoqIENvbnN1bWVyIGdyb3VwIOKAlCBvbmUgZGVsaXZlcnkgcGVyIGdyb3VwOyBkaXN0aW5jdCBncm91cHMgZmFuIG91dC4gKi9cbiAgZ3JvdXA6IHN0cmluZztcbiAgLyoqIFRoaXMgY29uc3VtZXIncyBpZCB3aXRoaW4gdGhlIGdyb3VwIChlLmcuIGAke3NlcnZpY2V9LSR7cGlkfWApLiAqL1xuICBjb25zdW1lcjogc3RyaW5nO1xuICAvKiogQXN5bmMgaGFuZGxlci4gUmVzb2x2ZXMg4oeSIHRoZSBtZXNzYWdlIGlzIGFja2VkOyB0aHJvd3Mg4oeSIGxlZnQgcGVuZGluZyBmb3IgcmVkZWxpdmVyeS4gKi9cbiAgaGFuZGxlcjogKGVudjogRXZlbnRFbnZlbG9wZTxUPikgPT4gUHJvbWlzZTx2b2lkPjtcbiAgLyoqIE1heCBtZXNzYWdlcyBwZXIgcmVhZCAoZGVmYXVsdCAxNikuICovXG4gIGJhdGNoU2l6ZT86IG51bWJlcjtcbiAgLyoqIFhSRUFER1JPVVAgYmxvY2sgdGltZSBpbiBtcyAoZGVmYXVsdCA1MDAwKS4gKi9cbiAgYmxvY2tNcz86IG51bWJlcjtcbiAgLyoqIEEgcGVuZGluZyBtZXNzYWdlIGlkbGUgdGhpcyBsb25nIChtcykgaXMgcmVjbGFpbWVkIGZyb20gYSBkZWFkIGNvbnN1bWVyIChkZWZhdWx0IDYwMDAwKS4gKi9cbiAgbWluSWRsZU1zPzogbnVtYmVyO1xuICAvKipcbiAgICogRGVsaXZlcmllcyBhZnRlciB3aGljaCBhbiB1bi1hY2tlZCBtZXNzYWdlIGlzIGRlYWQtbGV0dGVyZWQgdG9cbiAgICogYGV2dDo8dG9waWM+OmRscWAgYW5kIGFja2VkIGluc3RlYWQgb2YgYmVpbmcgcmVkZWxpdmVyZWQgYWdhaW4gKGRlZmF1bHQgMTApLlxuICAgKi9cbiAgbWF4RGVsaXZlcmllcz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFdmVudFN1YnNjcmlwdGlvbiB7XG4gIC8qKiBTdG9wIHRoZSBjb25zdW1lciBsb29wLiBSZXNvbHZlcyBvbmNlIHRoZSBpbi1mbGlnaHQgcmVhZCByZXR1cm5zLiAqL1xuICBzdG9wKCk6IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHVyYWJsZUV2ZW50QnVzIHtcbiAgLyoqIFB1Ymxpc2ggYSBwYXlsb2FkIHRvIGEgdG9waWMuIFJldHVybnMgdGhlIHN0cmVhbSBpZCwgb3IgbnVsbCBvbiBmYWlsdXJlIChkcm9wcGVkLCBuZXZlciB0aHJvd3MpLiAqL1xuICBwdWJsaXNoPFQ+KHRvcGljOiBzdHJpbmcsIHBheWxvYWQ6IFQpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xuICAvKiogU3RhcnQgYSBjb25zdW1lci1ncm91cCByZWFkZXIgZm9yIGEgdG9waWMuIEZpcmUtYW5kLWZvcmdldCBsb29wOyBjYWxsIGBzdG9wKClgIHRvIGVuZCBpdC4gKi9cbiAgc3Vic2NyaWJlPFQ+KG9wdHM6IFN1YnNjcmliZU9wdGlvbnM8VD4pOiBFdmVudFN1YnNjcmlwdGlvbjtcbn1cblxuLyoqXG4gKiBUaGUgc3Vic2V0IG9mIGlvcmVkaXMnIFN0cmVhbSBBUEkgdGhlIGJ1cyB1c2VzLiBLZXB0IG1pbmltYWwgc28gYSB0ZXN0IGNhblxuICogc3VwcGx5IGFuIGluLW1lbW9yeSBmYWtlIGFuZCBzbyBtZXJlbHkgaW1wb3J0aW5nIHRoaXMgbmV2ZXIgaGFyZC1kZXBlbmRzIG9uXG4gKiBpb3JlZGlzIChjb25zdHJ1Y3RlZCB2aWEgdGhlIHNoYXJlZCBlbnYgaGVscGVyKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWRpc1N0cmVhbUNsaWVudCB7XG4gIHhhZGQoa2V5OiBzdHJpbmcsIC4uLmFyZ3M6IChzdHJpbmcgfCBudW1iZXIpW10pOiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xuICB4Z3JvdXAoLi4uYXJnczogKHN0cmluZyB8IG51bWJlcilbXSk6IFByb21pc2U8dW5rbm93bj47XG4gIHhyZWFkZ3JvdXAoLi4uYXJnczogKHN0cmluZyB8IG51bWJlcilbXSk6IFByb21pc2U8dW5rbm93bj47XG4gIHhhY2soa2V5OiBzdHJpbmcsIGdyb3VwOiBzdHJpbmcsIC4uLmlkczogc3RyaW5nW10pOiBQcm9taXNlPG51bWJlcj47XG4gIHhhdXRvY2xhaW0oLi4uYXJnczogKHN0cmluZyB8IG51bWJlcilbXSk6IFByb21pc2U8dW5rbm93bj47XG4gIHhwZW5kaW5nKGtleTogc3RyaW5nLCBncm91cDogc3RyaW5nLCAuLi5hcmdzOiAoc3RyaW5nIHwgbnVtYmVyKVtdKTogUHJvbWlzZTx1bmtub3duPjtcbiAgeHJhbmdlKGtleTogc3RyaW5nLCBzdGFydDogc3RyaW5nLCBlbmQ6IHN0cmluZywgLi4uYXJnczogKHN0cmluZyB8IG51bWJlcilbXSk6IFByb21pc2U8dW5rbm93bj47XG4gIC8qKiBBIG5ldyBjb25uZWN0aW9uIHdpdGggdGhlIHNhbWUgb3B0aW9ucyDigJQgZWFjaCBzdWJzY3JpYmVyIHJlYWRzIG9uIGl0cyBvd24uICovXG4gIGR1cGxpY2F0ZSgpOiBSZWRpc1N0cmVhbUNsaWVudDtcbiAgcXVpdD8oKTogUHJvbWlzZTx1bmtub3duPjtcbiAgb24/KGV2ZW50OiAnZXJyb3InLCBjYjogKGVycjogdW5rbm93bikgPT4gdm9pZCk6IHVua25vd247XG59XG5cbmNvbnN0IERFRkFVTFRfTUFYTEVOID0gMTBfMDAwO1xuY29uc3QgREVGQVVMVF9CQVRDSCA9IDE2O1xuY29uc3QgREVGQVVMVF9CTE9DS19NUyA9IDVfMDAwO1xuY29uc3QgREVGQVVMVF9NSU5fSURMRV9NUyA9IDYwXzAwMDtcbmNvbnN0IERFRkFVTFRfTUFYX0RFTElWRVJJRVMgPSAxMDtcblxuZnVuY3Rpb24gc3RyZWFtS2V5KHRvcGljOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYGV2dDoke3RvcGljfWA7XG59XG5cbi8qKiBEZWFkLWxldHRlciBzdHJlYW0gZm9yIGEgdG9waWMuICovXG5leHBvcnQgZnVuY3Rpb24gZGVhZExldHRlclN0cmVhbUtleSh0b3BpYzogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBldnQ6JHt0b3BpY306ZGxxYDtcbn1cblxuLyoqIFB1Ymxpc2ggdGltZSBmcm9tIGEgc3RyZWFtIGlkIChgPG1zPi08c2VxPmApOyBlcG9jaCAwIGZvciBhbiB1bnBhcnNlYWJsZSBpZC4gKi9cbmZ1bmN0aW9uIHB1Ymxpc2hlZEF0RnJvbUlkKGlkOiBzdHJpbmcpOiBEYXRlIHtcbiAgY29uc3QgbXMgPSBOdW1iZXIoaWQuc3BsaXQoJy0nKVswXSk7XG4gIHJldHVybiBuZXcgRGF0ZShOdW1iZXIuaXNGaW5pdGUobXMpID8gbXMgOiAwKTtcbn1cblxuLyoqIFRydWUgd2hlbiB0aGUgZXJyb3IgaXMgUmVkaXMnIFwiZ3JvdXAgYWxyZWFkeSBleGlzdHNcIiAoaWRlbXBvdGVudCBjcmVhdGUpLiAqL1xuZnVuY3Rpb24gaXNCdXN5R3JvdXAoZXJyOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIHJldHVybiBlcnJvck1lc3NhZ2UoZXJyKS5pbmNsdWRlcygnQlVTWUdST1VQJyk7XG59XG5cbi8qKlxuICogUGFyc2UgdGhlIG5lc3RlZCBhcnJheSBzaGFwZSBYUkVBREdST1VQIC8gWEFVVE9DTEFJTSByZXR1cm4gaW50byBmbGF0IGVudmVsb3Blcy5cbiAqIFhSRUFER1JPVVA6IGBbW3N0cmVhbUtleSwgW1tpZCwgW2YsIHYsIC4uLl1dLCAuLi5dXV1gLlxuICogWEFVVE9DTEFJTTogYFtuZXh0Q3Vyc29yLCBbW2lkLCBbZiwgdiwgLi4uXV0sIC4uLl0sIGRlbGV0ZWRJZHNdYC5cbiAqIFdlIHN0b3JlIHRoZSBKU09OIHBheWxvYWQgdW5kZXIgYSBzaW5nbGUgZmllbGQgYGRgLlxuICovXG5mdW5jdGlvbiBwYXJzZUVudHJpZXM8VD4odG9waWM6IHN0cmluZywgZW50cmllczogdW5rbm93bik6IFBhcnNlZEVudmVsb3BlPFQ+W10ge1xuICBjb25zdCBvdXQ6IFBhcnNlZEVudmVsb3BlPFQ+W10gPSBbXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGVudHJpZXMpKSByZXR1cm4gb3V0O1xuICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZW50cnkpIHx8IGVudHJ5Lmxlbmd0aCA8IDIpIGNvbnRpbnVlO1xuICAgIGNvbnN0IGlkID0gU3RyaW5nKGVudHJ5WzBdKTtcbiAgICBjb25zdCBmaWVsZHMgPSBlbnRyeVsxXTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZmllbGRzKSkgY29udGludWU7XG4gICAgLy8gZmllbGRzIGlzIFtuYW1lLCB2YWx1ZSwgbmFtZSwgdmFsdWUsIC4uLl07IGZpbmQgJ2QnLlxuICAgIGxldCByYXc6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSArIDEgPCBmaWVsZHMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgIGlmIChTdHJpbmcoZmllbGRzW2ldKSA9PT0gJ2QnKSB7IHJhdyA9IFN0cmluZyhmaWVsZHNbaSArIDFdKTsgYnJlYWs7IH1cbiAgICB9XG4gICAgLy8gQSBtaXNzaW5nIGBkYCBmaWVsZCAoYW4gZW50cnkgbm90IHdyaXR0ZW4gYnkgcHVibGlzaCgpKSBPUiBhIGNvcnJ1cHQgSlNPTlxuICAgIC8vIHBheWxvYWQgYm90aCB5aWVsZCBhbiB1bmRlZmluZWQtcGF5bG9hZCBlbnZlbG9wZSBzbyBgZGVsaXZlcigpYCBBQ0tzIGl0IOKAlFxuICAgIC8vIGEgcG9pc29uIG1lc3NhZ2UgbXVzdCBuZXZlciB3ZWRnZSB0aGUgZ3JvdXAgYnkgc3RheWluZyBwZXJwZXR1YWxseSBwZW5kaW5nLlxuICAgIGNvbnN0IHB1Ymxpc2hlZEF0ID0gcHVibGlzaGVkQXRGcm9tSWQoaWQpO1xuICAgIGlmIChyYXcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgb3V0LnB1c2goeyBpZCwgdG9waWMsIHB1Ymxpc2hlZEF0LCBwYXlsb2FkOiB1bmRlZmluZWQgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIG91dC5wdXNoKHsgaWQsIHRvcGljLCBwdWJsaXNoZWRBdCwgcGF5bG9hZDogSlNPTi5wYXJzZShyYXcpIGFzIFQgfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICBvdXQucHVzaCh7IGlkLCB0b3BpYywgcHVibGlzaGVkQXQsIHBheWxvYWQ6IHVuZGVmaW5lZCB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cblxuLyoqIEJ1aWxkIGEgZHVyYWJsZSBldmVudCBidXMgb3ZlciBhIFJlZGlzIFN0cmVhbXMgY2xpZW50LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlZGlzRHVyYWJsZUV2ZW50QnVzKFxuICByZWRpczogUmVkaXNTdHJlYW1DbGllbnQsXG4gIG9wdHM6IHsgbWF4TGVuPzogbnVtYmVyIH0gPSB7fSxcbik6IER1cmFibGVFdmVudEJ1cyB7XG4gIGNvbnN0IG1heExlbiA9IE1hdGgubWF4KDEsIG9wdHMubWF4TGVuID8/IERFRkFVTFRfTUFYTEVOKTtcblxuICByZXR1cm4ge1xuICAgIGFzeW5jIHB1Ymxpc2g8VD4odG9waWM6IHN0cmluZywgcGF5bG9hZDogVCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgICAgY29uc3Qga2V5ID0gc3RyZWFtS2V5KHRvcGljKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIE1BWExFTiB+IDxuPiBib3VuZHMgdGhlIHN0cmVhbSBhcHByb3hpbWF0ZWx5IChjaGVhcCk7IGAqYCA9IHNlcnZlciBpZC5cbiAgICAgICAgY29uc3QgaWQgPSBhd2FpdCByZWRpcy54YWRkKGtleSwgJ01BWExFTicsICd+JywgbWF4TGVuLCAnKicsICdkJywgSlNPTi5zdHJpbmdpZnkocGF5bG9hZCkpO1xuICAgICAgICBlbWl0Q291bnRlcignZXZlbnRfYnVzX3B1Ymxpc2hlZF90b3RhbCcsIHsgdG9waWMgfSk7XG4gICAgICAgIHJldHVybiBpZDtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBlbWl0Q291bnRlcignZXZlbnRfYnVzX3B1Ymxpc2hfZmFpbGVkX3RvdGFsJywgeyB0b3BpYyB9KTtcbiAgICAgICAgbG9nZ2VyLndhcm4oJ0V2ZW50IGJ1cyBwdWJsaXNoIGZhaWxlZCAoZXZlbnQgZHJvcHBlZCknLCB7IHRvcGljLCBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBzdWJzY3JpYmU8VD4oc3ViT3B0czogU3Vic2NyaWJlT3B0aW9uczxUPik6IEV2ZW50U3Vic2NyaXB0aW9uIHtcbiAgICAgIGNvbnN0IHsgdG9waWMsIGdyb3VwLCBjb25zdW1lciwgaGFuZGxlciB9ID0gc3ViT3B0cztcbiAgICAgIGNvbnN0IGtleSA9IHN0cmVhbUtleSh0b3BpYyk7XG4gICAgICBjb25zdCBkbHFLZXkgPSBkZWFkTGV0dGVyU3RyZWFtS2V5KHRvcGljKTtcbiAgICAgIGNvbnN0IGJhdGNoID0gTWF0aC5tYXgoMSwgc3ViT3B0cy5iYXRjaFNpemUgPz8gREVGQVVMVF9CQVRDSCk7XG4gICAgICBjb25zdCBibG9ja01zID0gTWF0aC5tYXgoMCwgc3ViT3B0cy5ibG9ja01zID8/IERFRkFVTFRfQkxPQ0tfTVMpO1xuICAgICAgY29uc3QgbWluSWRsZSA9IE1hdGgubWF4KDAsIHN1Yk9wdHMubWluSWRsZU1zID8/IERFRkFVTFRfTUlOX0lETEVfTVMpO1xuICAgICAgY29uc3QgbWF4RGVsaXZlcmllcyA9IE1hdGgubWF4KDEsIHN1Yk9wdHMubWF4RGVsaXZlcmllcyA/PyBERUZBVUxUX01BWF9ERUxJVkVSSUVTKTtcblxuICAgICAgLy8gYFhSRUFER1JPVVAgQkxPQ0tgIGhvbGRzIGl0cyBjb25uZWN0aW9uIGZvciB1cCB0byBgYmxvY2tNc2A7IG9uIHRoZVxuICAgICAgLy8gc2hhcmVkIGNsaWVudCBldmVyeSBwdWJsaXNoIHF1ZXVlZCBiZWhpbmQgaXQuIFJlYWQgb24gYSBkZWRpY2F0ZWQgb25lLlxuICAgICAgY29uc3QgcmVhZGVyID0gcmVkaXMuZHVwbGljYXRlKCk7XG4gICAgICAvLyBBIGR1cGxpY2F0ZWQgaW9yZWRpcyBjb25uZWN0aW9uIGRvZXNuJ3QgaW5oZXJpdCBsaXN0ZW5lcnM7IHdpdGhvdXQgb25lIGFcbiAgICAgIC8vIGNvbm5lY3Rpb24gZXJyb3IgaXMgYW4gdW5oYW5kbGVkICdlcnJvcicgZXZlbnQgdGhhdCBjcmFzaGVzIHRoZSBwcm9jZXNzLlxuICAgICAgcmVhZGVyLm9uPy4oJ2Vycm9yJywgKGVycikgPT4gbG9nZ2VyLndhcm4oJ0V2ZW50IGJ1cyByZWFkZXIgY29ubmVjdGlvbiBlcnJvcicsIHsgdG9waWMsIGdyb3VwLCBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSkpO1xuXG4gICAgICBsZXQgc3RvcHBlZCA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBkZWxpdmVyID0gYXN5bmMgKGVudnM6IFBhcnNlZEVudmVsb3BlPFQ+W10pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBlbnYgb2YgZW52cykge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBUaGUgbmFycm93aW5nIHRoYXQgdXNlZCB0byBiZSBhIGNhc3Q6IGluc2lkZSB0aGlzIGJyYW5jaCBgcGF5bG9hZGAgaXMgYFRgLFxuICAgICAgICAgICAgLy8gc28gYGVudmAgcmVhbGx5IGlzIGFuIEV2ZW50RW52ZWxvcGU8VD4gYW5kIHRoZSBoYW5kbGVyJ3MgdHlwZSBpcyBob25lc3QuXG4gICAgICAgICAgICBpZiAoZW52LnBheWxvYWQgIT09IHVuZGVmaW5lZCkgYXdhaXQgaGFuZGxlcihlbnYgYXMgRXZlbnRFbnZlbG9wZTxUPik7XG4gICAgICAgICAgICAvLyBBY2sgb24gc3VjY2VzcyBPUiBvbiBhbiB1bmRlZmluZWQgKGNvcnJ1cHQpIHBheWxvYWQg4oCUIGEgcG9pc29uXG4gICAgICAgICAgICAvLyBtZXNzYWdlIG11c3Qgbm90IGJsb2NrIHRoZSBncm91cCBmb3JldmVyLlxuICAgICAgICAgICAgYXdhaXQgcmVhZGVyLnhhY2soa2V5LCBncm91cCwgZW52LmlkKTtcbiAgICAgICAgICAgIGVtaXRDb3VudGVyKCdldmVudF9idXNfZGVsaXZlcmVkX3RvdGFsJywgeyB0b3BpYywgZ3JvdXAgfSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAvLyBMZWF2ZSBpdCBwZW5kaW5nIChubyBYQUNLKSDigJQgWEFVVE9DTEFJTSByZWRlbGl2ZXJzIGl0IGFmdGVyIG1pbklkbGUuXG4gICAgICAgICAgICBlbWl0Q291bnRlcignZXZlbnRfYnVzX2hhbmRsZXJfZmFpbGVkX3RvdGFsJywgeyB0b3BpYywgZ3JvdXAgfSk7XG4gICAgICAgICAgICBsb2dnZXIud2FybignRXZlbnQgaGFuZGxlciBmYWlsZWQ7IGxlYXZpbmcgbWVzc2FnZSBwZW5kaW5nIGZvciByZWRlbGl2ZXJ5Jywge1xuICAgICAgICAgICAgICB0b3BpYywgZ3JvdXAsIGlkOiBlbnYuaWQsIGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgLyoqXG4gICAgICAgKiBNb3ZlIGV2ZXJ5IGlkbGUgcGVuZGluZyBtZXNzYWdlIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBkZWxpdmVyZWRcbiAgICAgICAqIGBtYXhEZWxpdmVyaWVzYCB0aW1lcyB0byB0aGUgZGVhZC1sZXR0ZXIgc3RyZWFtIGFuZCBhY2sgaXQuIFRoZSBlbnRyeVxuICAgICAgICoga2VlcHMgaXRzIHBheWxvYWQgcGx1cyB3aGVyZSBpdCBjYW1lIGZyb20sIHNvIGFuIG9wZXJhdG9yIGNhbiBpbnNwZWN0IG9yXG4gICAgICAgKiByZXBsYXkgaXQuIElmIGNvcHlpbmcgZmFpbHMgdGhlIG1lc3NhZ2UgaXMgbGVmdCBwZW5kaW5nIChyZXRyaWVkIG5leHRcbiAgICAgICAqIHBhc3MpIOKAlCBpdCBpcyBuZXZlciBhY2tlZCB3aXRob3V0IGJlaW5nIHByZXNlcnZlZC5cbiAgICAgICAqL1xuICAgICAgY29uc3QgZGVhZExldHRlckV4aGF1c3RlZCA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgY29uc3QgcGVuZGluZyA9IGF3YWl0IHJlYWRlci54cGVuZGluZyhrZXksIGdyb3VwLCAnSURMRScsIG1pbklkbGUsICctJywgJysnLCBiYXRjaCk7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShwZW5kaW5nKSkgcmV0dXJuO1xuICAgICAgICBmb3IgKGNvbnN0IHAgb2YgcGVuZGluZykge1xuICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShwKSB8fCBwLmxlbmd0aCA8IDQpIGNvbnRpbnVlO1xuICAgICAgICAgIGNvbnN0IGlkID0gU3RyaW5nKHBbMF0pO1xuICAgICAgICAgIGNvbnN0IGRlbGl2ZXJpZXMgPSBOdW1iZXIocFszXSk7XG4gICAgICAgICAgaWYgKCEoZGVsaXZlcmllcyA+PSBtYXhEZWxpdmVyaWVzKSkgY29udGludWU7XG4gICAgICAgICAgY29uc3QgZW50cmllcyA9IGF3YWl0IHJlYWRlci54cmFuZ2Uoa2V5LCBpZCwgaWQpO1xuICAgICAgICAgIGNvbnN0IGZpZWxkcyA9IEFycmF5LmlzQXJyYXkoZW50cmllcykgJiYgQXJyYXkuaXNBcnJheShlbnRyaWVzWzBdKSAmJiBBcnJheS5pc0FycmF5KGVudHJpZXNbMF1bMV0pID8gZW50cmllc1swXVsxXSA6IFtdO1xuICAgICAgICAgIGxldCByYXcgPSAnJztcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSArIDEgPCBmaWVsZHMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgICAgIGlmIChTdHJpbmcoZmllbGRzW2ldKSA9PT0gJ2QnKSB7IHJhdyA9IFN0cmluZyhmaWVsZHNbaSArIDFdKTsgYnJlYWs7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYXdhaXQgcmVhZGVyLnhhZGQoXG4gICAgICAgICAgICBkbHFLZXksICdNQVhMRU4nLCAnficsIG1heExlbiwgJyonLFxuICAgICAgICAgICAgJ2QnLCByYXcsICdzb3VyY2VJZCcsIGlkLCAnZ3JvdXAnLCBncm91cCwgJ2RlbGl2ZXJpZXMnLCBkZWxpdmVyaWVzLFxuICAgICAgICAgICk7XG4gICAgICAgICAgYXdhaXQgcmVhZGVyLnhhY2soa2V5LCBncm91cCwgaWQpO1xuICAgICAgICAgIGVtaXRDb3VudGVyKCdldmVudF9idXNfZGVhZF9sZXR0ZXJlZF90b3RhbCcsIHsgdG9waWMsIGdyb3VwIH0pO1xuICAgICAgICAgIGxvZ2dlci5lcnJvcignRXZlbnQgZXhjZWVkZWQgbWF4IGRlbGl2ZXJpZXM7IG1vdmVkIHRvIGRlYWQtbGV0dGVyIHN0cmVhbScsIHtcbiAgICAgICAgICAgIHRvcGljLCBncm91cCwgaWQsIGRlbGl2ZXJpZXMsIGRlYWRMZXR0ZXJTdHJlYW06IGRscUtleSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgLy8gVGhlIGNvbnN1bWVyIGdyb3VwIG11c3QgZXhpc3QgYmVmb3JlIFhSRUFER1JPVVAgY2FuIHN1Y2NlZWQuIENyZWF0aW5nIGl0XG4gICAgICAvLyBpcyByZXRyaWVkIGluc2lkZSB0aGUgbG9vcDogYXQgc3RhcnR1cCB0aGUgY2xpZW50IG1heSBub3QgaGF2ZSBjb25uZWN0ZWRcbiAgICAgIC8vIHlldCwgYW5kIGEgc2luZ2xlIGZhaWxlZCBhdHRlbXB0IHdvdWxkIGxlYXZlIHRoZSBjb25zdW1lciByZWFkaW5nIGFcbiAgICAgIC8vIGdyb3VwIHRoYXQgd2FzIG5ldmVyIGNyZWF0ZWQg4oCUIGZvcmV2ZXIuXG4gICAgICBsZXQgZ3JvdXBSZWFkeSA9IGZhbHNlO1xuICAgICAgY29uc3QgZW5zdXJlR3JvdXAgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gTUtTVFJFQU0gc28gdGhlIHN0cmVhbSBuZWVkIG5vdCBleGlzdCB5ZXQ7ICckJyA9IG9ubHkgbmV3IG1lc3NhZ2VzLlxuICAgICAgICAgIGF3YWl0IHJlYWRlci54Z3JvdXAoJ0NSRUFURScsIGtleSwgZ3JvdXAsICckJywgJ01LU1RSRUFNJyk7XG4gICAgICAgICAgZ3JvdXBSZWFkeSA9IHRydWU7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGlmICghaXNCdXN5R3JvdXAoZXJyKSkgdGhyb3cgZXJyO1xuICAgICAgICAgIGdyb3VwUmVhZHkgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBsb29wID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICB3aGlsZSAoIXN0b3BwZWQpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKCFncm91cFJlYWR5KSBhd2FpdCBlbnN1cmVHcm91cCgpO1xuICAgICAgICAgICAgLy8gMSkgRGVhZC1sZXR0ZXIgbWVzc2FnZXMgdGhhdCBoYXZlIGV4aGF1c3RlZCB0aGVpciBkZWxpdmVyaWVzLCB0aGVuXG4gICAgICAgICAgICAvLyAgICByZWNsYWltIHRoZSByZXN0IHN0cmFuZGVkIGJ5IGEgZmFpbGVkL2NyYXNoZWQgY29uc3VtZXIuXG4gICAgICAgICAgICBhd2FpdCBkZWFkTGV0dGVyRXhoYXVzdGVkKCk7XG4gICAgICAgICAgICBjb25zdCBjbGFpbWVkID0gYXdhaXQgcmVhZGVyLnhhdXRvY2xhaW0oa2V5LCBncm91cCwgY29uc3VtZXIsIG1pbklkbGUsICcwJywgJ0NPVU5UJywgYmF0Y2gpO1xuICAgICAgICAgICAgLy8gWEFVVE9DTEFJTSByZXBseTogW25leHRDdXJzb3IsIGVudHJpZXMsIGRlbGV0ZWRJZHNdXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjbGFpbWVkKSAmJiBjbGFpbWVkLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICAgIGF3YWl0IGRlbGl2ZXIocGFyc2VFbnRyaWVzPFQ+KHRvcGljLCBjbGFpbWVkWzFdKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RvcHBlZCkgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vIDIpIFJlYWQgbmV3LCBuZXZlci1kZWxpdmVyZWQgbWVzc2FnZXMgZm9yIHRoaXMgZ3JvdXAgKCc+JykuXG4gICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCByZWFkZXIueHJlYWRncm91cChcbiAgICAgICAgICAgICAgJ0dST1VQJywgZ3JvdXAsIGNvbnN1bWVyLCAnQ09VTlQnLCBiYXRjaCwgJ0JMT0NLJywgYmxvY2tNcywgJ1NUUkVBTVMnLCBrZXksICc+JyxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICAvLyBYUkVBREdST1VQIHJlcGx5OiBbW3N0cmVhbUtleSwgZW50cmllc11dIHwgbnVsbCAob24gYmxvY2sgdGltZW91dClcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlcykgJiYgcmVzLmxlbmd0aCA+IDAgJiYgQXJyYXkuaXNBcnJheShyZXNbMF0pICYmIHJlc1swXS5sZW5ndGggPj0gMikge1xuICAgICAgICAgICAgICBhd2FpdCBkZWxpdmVyKHBhcnNlRW50cmllczxUPih0b3BpYywgcmVzWzBdWzFdKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBpZiAoc3RvcHBlZCkgYnJlYWs7XG4gICAgICAgICAgICAvLyBUaGUgc3RyZWFtIG9yIGdyb3VwIHdhcyBkZWxldGVkIG91dCBmcm9tIHVuZGVyIHVzIOKAlCByZWNyZWF0ZSBpdC5cbiAgICAgICAgICAgIGlmICgvTk9HUk9VUC9pLnRlc3QoZXJyb3JNZXNzYWdlKGVycikpKSBncm91cFJlYWR5ID0gZmFsc2U7XG4gICAgICAgICAgICBsb2dnZXIud2FybignRXZlbnQgYnVzIGNvbnN1bWVyIGxvb3AgZXJyb3I7IGJhY2tpbmcgb2ZmJywgeyB0b3BpYywgZ3JvdXAsIGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSB9KTtcbiAgICAgICAgICAgIC8vIEJhY2sgb2ZmIHNvIGEgcGVyc2lzdGVudCBSZWRpcyBlcnJvciBkb2Vzbid0IGhvdC1zcGluLlxuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHIpID0+IHNldFRpbWVvdXQociwgMTAwMCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3QgbG9vcFByb21pc2UgPSBsb29wKCk7XG4gICAgICBsb2dnZXIuaW5mbygnRXZlbnQgYnVzIGNvbnN1bWVyIHN0YXJ0ZWQnLCB7IHRvcGljLCBncm91cCwgY29uc3VtZXIsIG1heERlbGl2ZXJpZXMgfSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFzeW5jIHN0b3AoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgICAgc3RvcHBlZCA9IHRydWU7XG4gICAgICAgICAgLy8gQXdhaXQgdGhlIGluLWZsaWdodCByZWFkL2hhbmRsZXIgc28gYSBjYWxsZXIgKGUuZy4gYSBzZXJ2aWNlIHNodXR0aW5nXG4gICAgICAgICAgLy8gZG93biBpdHMgREIpIGRvZXNuJ3QgcmFjZSBhIG1lc3NhZ2Ugc3RpbGwgYmVpbmcgcHJvY2Vzc2VkLiBCb3VuZGVkIGJ5XG4gICAgICAgICAgLy8gdGhlIFhSRUFER1JPVVAgQkxPQ0sgd2luZG93LiBOZXZlciByZWplY3RzIOKAlCB0aGUgbG9vcCBzd2FsbG93cyBlcnJvcnMuXG4gICAgICAgICAgYXdhaXQgbG9vcFByb21pc2UuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgICAgICAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUocmVhZGVyLnF1aXQ/LigpKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgZHVyYWJsZSBldmVudCBidXMgZnJvbSB0aGUgYW1iaWVudCBSZWRpcyBlbnYgdmlhIHRoZSBzaGFyZWRcbiAqIGBjcmVhdGVFbnZSZWRpc0NsaWVudGAuIFJldHVybnMgYG51bGxgIHdoZW4gUmVkaXMgaXMgbm90IGNvbmZpZ3VyZWQg4oCUIHRoZVxuICogY2FsbGVyIHRoZW4gcnVucyB3aXRob3V0IGEgYnVzICh0b2RheSdzIEhUVFAvcmVjb25jaWxlciBiZWhhdmlvciksIG5ldmVyXG4gKiBjcmFzaGluZy4gT3B0IGluIHdpdGggYSBzaW5nbGUgYm9vdCBsaW5lIHdoZXJlIGEgc2VydmljZSB3YW50cyBkdXJhYmxlIGV2ZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVudlJlZGlzRHVyYWJsZUV2ZW50QnVzKG9wdHM6IHsgbWF4TGVuPzogbnVtYmVyIH0gPSB7fSk6IER1cmFibGVFdmVudEJ1cyB8IG51bGwge1xuICBjb25zdCBpbnN0ID0gY3JlYXRlRW52UmVkaXNDbGllbnQ8UmVkaXNTdHJlYW1DbGllbnQ+KCdldmVudC1idXMnKTtcbiAgaWYgKCFpbnN0KSByZXR1cm4gbnVsbDtcbiAgbG9nZ2VyLmluZm8oJ1JlZGlzIGR1cmFibGUgZXZlbnQgYnVzIGluaXRpYWxpemVkJyk7XG4gIHJldHVybiBjcmVhdGVSZWRpc0R1cmFibGVFdmVudEJ1cyhpbnN0LCBvcHRzKTtcbn1cbiJdfQ==
@@ -1,6 +1,12 @@
1
1
  import { type EcosystemNotifyRequest } from '../types/ecosystem-notifications.js';
2
2
  /** The relay path on platform. */
3
- export declare const ECOSYSTEM_NOTIFY_PATH = "/internal/notify-email";
3
+ /**
4
+ * Platform's internal notify-email endpoint. Named for the ENDPOINT, not for one
5
+ * of its callers: five services post here (billing, compliance, plugin, quota,
6
+ * reporting), and this was spelled three times — here, in quota's threshold
7
+ * notifier and in billing's offer mailer, each as its own const.
8
+ */
9
+ export declare const NOTIFY_EMAIL_PATH = "/internal/notify-email";
4
10
  /** What one send achieved. `ok: false` means nothing was confirmed delivered. */
5
11
  export interface EcosystemNotifyResult {
6
12
  ok: boolean;
@@ -24,7 +24,13 @@ import { errorMessage } from '../utils/response.js';
24
24
  import { serviceEndpoint } from '../utils/service-registry.js';
25
25
  const logger = createLogger('ecosystem-notify-client');
26
26
  /** The relay path on platform. */
27
- export const ECOSYSTEM_NOTIFY_PATH = '/internal/notify-email';
27
+ /**
28
+ * Platform's internal notify-email endpoint. Named for the ENDPOINT, not for one
29
+ * of its callers: five services post here (billing, compliance, plugin, quota,
30
+ * reporting), and this was spelled three times — here, in quota's threshold
31
+ * notifier and in billing's offer mailer, each as its own const.
32
+ */
33
+ export const NOTIFY_EMAIL_PATH = '/internal/notify-email';
28
34
  /**
29
35
  * Create the relay client. Never throws from `send` for a transport problem —
30
36
  * it resolves `{ ok: false }` and counts `ecosystem_notification_failed_total
@@ -48,7 +54,7 @@ export function createEcosystemNotifyClient(config) {
48
54
  // System-org scoped, least privilege: the relay authorizes the CALLER by
49
55
  // its key-bound service name, not by a role or permission on the token.
50
56
  const authorization = getServiceAuthHeader({ serviceName: config.serviceName, orgId: SYSTEM_ORG_ID, role: 'member' });
51
- const response = await client.post(ECOSYSTEM_NOTIFY_PATH, parsed, { headers: { Authorization: authorization } });
57
+ const response = await client.post(NOTIFY_EMAIL_PATH, parsed, { headers: { Authorization: authorization } });
52
58
  const status = response?.statusCode;
53
59
  const ok = status !== undefined && status >= 200 && status < 300;
54
60
  if (!ok) {
@@ -68,4 +74,4 @@ export function createEcosystemNotifyClient(config) {
68
74
  },
69
75
  };
70
76
  }
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNvc3lzdGVtLW5vdGlmeS1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvZWNvc3lzdGVtLW5vdGlmeS1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7OztHQWFHO0FBRUgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTVELE9BQU8sRUFBRSwyQkFBMkIsRUFBK0IsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFL0QsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFFdkQsa0NBQWtDO0FBQ2xDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLHdCQUF3QixDQUFDO0FBMEI5RDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsMkJBQTJCLENBQUMsTUFBbUM7SUFDN0UsTUFBTSxhQUFhLEdBQWtCO1FBQ25DLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJO1FBQ3JELElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJO1FBQ3JELE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxJQUFJLE1BQU07S0FDbEMsQ0FBQztJQUNGLE1BQU0sTUFBTSxHQUFHLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRS9DLE9BQU87UUFDTCxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQStCO1lBQ3hDLE1BQU0sTUFBTSxHQUFHLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BELElBQUksT0FBTyxNQUFNLEtBQUssUUFBUTtnQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQzdGLElBQUksQ0FBQztnQkFDSCx5RUFBeUU7Z0JBQ3pFLHdFQUF3RTtnQkFDeEUsTUFBTSxhQUFhLEdBQUcsb0JBQW9CLENBQUMsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUN0SCxNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQ2hDLHFCQUFxQixFQUFFLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsRUFBRSxDQUM3RSxDQUFDO2dCQUNGLE1BQU0sTUFBTSxHQUFHLFFBQVEsRUFBRSxVQUFVLENBQUM7Z0JBQ3BDLE1BQU0sRUFBRSxHQUFHLE1BQU0sS0FBSyxTQUFTLElBQUksTUFBTSxJQUFJLEdBQUcsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDO2dCQUNqRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQ1IsV0FBVyxDQUFDLHFDQUFxQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO29CQUM1RSxNQUFNLENBQUMsSUFBSSxDQUFDLHNDQUFzQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxhQUFhLEVBQUUsQ0FBQyxDQUFDO29CQUM5RyxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDcEUsQ0FBQztnQkFDRCxNQUFNLElBQUksR0FBRyxRQUFTLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDbEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQztnQkFDeEUsT0FBTyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxPQUFPLGNBQWMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDakcsQ0FBQztZQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQ2IsV0FBVyxDQUFDLHFDQUFxQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUM1RSxNQUFNLENBQUMsSUFBSSxDQUFDLCtCQUErQixFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2hHLE9BQU8sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDdkIsQ0FBQztRQUNILENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFNlbmRlciBzaWRlIG9mIHRoZSBwbHVnaW4tZWNvc3lzdGVtIG5vdGlmaWNhdGlvbiByZWxheVxuICogKGRvY3MvcGx1Z2luLXB1Ymxpc2hpbmcubWQpLlxuICpcbiAqIFBsYXRmb3JtIG93bnMgU01UUCwgdGhlIHVzZXIgZGlyZWN0b3J5IGFuZCB0aGUgUm9sZXMsIHNvIGFuIGVjb3N5c3RlbSBub3RpY2VcbiAqIGlzIE9ORSBpbnRlcm5hbCBjYWxsIOKAlCBgUE9TVCAvaW50ZXJuYWwvbm90aWZ5LWVtYWlsYCB3aXRoIGFuXG4gKiB7QGxpbmsgRWNvc3lzdGVtTm90aWZ5UmVxdWVzdH0g4oCUIGFuZCBwbGF0Zm9ybSByZXNvbHZlcyB0aGUgcmVjaXBpZW50IFJVTEVTLFxuICogYXBwbGllcyBlYWNoIHVzZXIncyBgZWNvc3lzdGVtLipgIGVtYWlsIHByZWZlcmVuY2VzLCBtYWlscyBldmVyeSByZWNpcGllbnRcbiAqIGluZGl2aWR1YWxseSBhbmQgZHJvcHMgdGhlIGluLWFwcCBjb3B5IGludG8gdGhlaXIgaW5ib3ggdGhyb3VnaCB0aGUgbWVzc2FnZVxuICogc2VydmljZS4gVGhlIGNhbGxpbmcgc2VydmljZSBuZXZlciBzZWVzIGFuIGFkZHJlc3Mgb3IgYSBtZW1iZXIgbGlzdC5cbiAqXG4gKiBUaGUgcmVxdWVzdCBpcyB2YWxpZGF0ZWQgSEVSRSB3aXRoIHRoZSBzYW1lIHBhcnNlciB0aGUgcmVsYXkgdXNlcywgc28gYVxuICogbWFsZm9ybWVkIG5vdGljZSBmYWlscyBhdCB0aGUgY2FsbCBzaXRlIHJhdGhlciB0aGFuIGFzIGEgNDAwIGF0IGZsdXNoIHRpbWUuXG4gKi9cblxuaW1wb3J0IHsgY3JlYXRlU2FmZUNsaWVudCB9IGZyb20gJy4vaHR0cC1jbGllbnQuanMnO1xuaW1wb3J0IHsgZ2V0U2VydmljZUF1dGhIZWFkZXIgfSBmcm9tICcuLi9taWRkbGV3YXJlL3NlcnZpY2UtdG9rZW5zLmpzJztcbmltcG9ydCB7IFNZU1RFTV9PUkdfSUQgfSBmcm9tICcuLi9taWRkbGV3YXJlL3N5c3RlbS1vcmcuanMnO1xuaW1wb3J0IHR5cGUgeyBTZXJ2aWNlQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMvY29tbW9uLmpzJztcbmltcG9ydCB7IHBhcnNlRWNvc3lzdGVtTm90aWZ5UmVxdWVzdCwgdHlwZSBFY29zeXN0ZW1Ob3RpZnlSZXF1ZXN0IH0gZnJvbSAnLi4vdHlwZXMvZWNvc3lzdGVtLW5vdGlmaWNhdGlvbnMuanMnO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCB7IGVtaXRDb3VudGVyIH0gZnJvbSAnLi4vdXRpbHMvbWV0cmljLWVtaXR0ZXIuanMnO1xuaW1wb3J0IHsgZXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vdXRpbHMvcmVzcG9uc2UuanMnO1xuaW1wb3J0IHsgc2VydmljZUVuZHBvaW50IH0gZnJvbSAnLi4vdXRpbHMvc2VydmljZS1yZWdpc3RyeS5qcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignZWNvc3lzdGVtLW5vdGlmeS1jbGllbnQnKTtcblxuLyoqIFRoZSByZWxheSBwYXRoIG9uIHBsYXRmb3JtLiAqL1xuZXhwb3J0IGNvbnN0IEVDT1NZU1RFTV9OT1RJRllfUEFUSCA9ICcvaW50ZXJuYWwvbm90aWZ5LWVtYWlsJztcblxuLyoqIFdoYXQgb25lIHNlbmQgYWNoaWV2ZWQuIGBvazogZmFsc2VgIG1lYW5zIG5vdGhpbmcgd2FzIGNvbmZpcm1lZCBkZWxpdmVyZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIEVjb3N5c3RlbU5vdGlmeVJlc3VsdCB7XG4gIG9rOiBib29sZWFuO1xuICAvKiogSFRUUCBzdGF0dXMgZnJvbSBwbGF0Zm9ybSAoYWJzZW50IHdoZW4gaXQgd2FzIHVucmVhY2hhYmxlKS4gKi9cbiAgc3RhdHVzPzogbnVtYmVyO1xuICAvKiogVXNlcnMgKGFuZCBhZGRyZXNzZXMpIHRoZSBydWxlcyByZXNvbHZlZCB0by4gKi9cbiAgcmVjaXBpZW50Q291bnQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWNvc3lzdGVtTm90aWZ5Q2xpZW50IHtcbiAgc2VuZChyZXF1ZXN0OiBFY29zeXN0ZW1Ob3RpZnlSZXF1ZXN0KTogUHJvbWlzZTxFY29zeXN0ZW1Ob3RpZnlSZXN1bHQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVjb3N5c3RlbU5vdGlmeUNsaWVudENvbmZpZyB7XG4gIC8qKiBUaGUgY2FsbGluZyBzZXJ2aWNlIOKAlCBtdXN0IGJlIG9uZSBvZiB0aGUgcmVsYXkncyBhbGxvd2VkIGNhbGxlcnMuICovXG4gIHNlcnZpY2VOYW1lOiBzdHJpbmc7XG4gIC8qKiBQbGF0Zm9ybSBob3N0IChkZWZhdWx0IGVudiBQTEFURk9STV9TRVJWSUNFX0hPU1Qgb3IgJ3BsYXRmb3JtJykuICovXG4gIGhvc3Q/OiBzdHJpbmc7XG4gIC8qKiBQbGF0Zm9ybSBwb3J0IChkZWZhdWx0IGVudiBQTEFURk9STV9TRVJWSUNFX1BPUlQgb3IgMzAwMCkuICovXG4gIHBvcnQ/OiBudW1iZXI7XG4gIC8qKiBSZXF1ZXN0IHRpbWVvdXQgbXMgKGRlZmF1bHQgMTAgMDAwIOKAlCBhIGZhbi1vdXQgdG8gbWFueSByZWNpcGllbnRzKS4gKi9cbiAgdGltZW91dD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDcmVhdGUgdGhlIHJlbGF5IGNsaWVudC4gTmV2ZXIgdGhyb3dzIGZyb20gYHNlbmRgIGZvciBhIHRyYW5zcG9ydCBwcm9ibGVtIOKAlFxuICogaXQgcmVzb2x2ZXMgYHsgb2s6IGZhbHNlIH1gIGFuZCBjb3VudHMgYGVjb3N5c3RlbV9ub3RpZmljYXRpb25fZmFpbGVkX3RvdGFsXG4gKiB7ZXZlbnR9YCBzbyB0aGUgY2FsbGVyICh0aGUgZGlnZXN0IGRpc3BhdGNoZXIpIGNhbiBrZWVwIHRoZSByb3cgZm9yIHJldHJ5LlxuICogSXQgRE9FUyB0aHJvdyBmb3IgYW4gaW52YWxpZCByZXF1ZXN0OiB0aGF0IGlzIGEgcHJvZ3JhbW1pbmcgZXJyb3IsIGFuZFxuICogcmV0cnlpbmcgaXQgd291bGQgbmV2ZXIgc3VjY2VlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVjb3N5c3RlbU5vdGlmeUNsaWVudChjb25maWc6IEVjb3N5c3RlbU5vdGlmeUNsaWVudENvbmZpZyk6IEVjb3N5c3RlbU5vdGlmeUNsaWVudCB7XG4gIGNvbnN0IHNlcnZpY2VDb25maWc6IFNlcnZpY2VDb25maWcgPSB7XG4gICAgaG9zdDogY29uZmlnLmhvc3QgPz8gc2VydmljZUVuZHBvaW50KCdwbGF0Zm9ybScpLmhvc3QsXG4gICAgcG9ydDogY29uZmlnLnBvcnQgPz8gc2VydmljZUVuZHBvaW50KCdwbGF0Zm9ybScpLnBvcnQsXG4gICAgdGltZW91dDogY29uZmlnLnRpbWVvdXQgPz8gMTBfMDAwLFxuICB9O1xuICBjb25zdCBjbGllbnQgPSBjcmVhdGVTYWZlQ2xpZW50KHNlcnZpY2VDb25maWcpO1xuXG4gIHJldHVybiB7XG4gICAgYXN5bmMgc2VuZChyZXF1ZXN0OiBFY29zeXN0ZW1Ob3RpZnlSZXF1ZXN0KTogUHJvbWlzZTxFY29zeXN0ZW1Ob3RpZnlSZXN1bHQ+IHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlRWNvc3lzdGVtTm90aWZ5UmVxdWVzdChyZXF1ZXN0KTtcbiAgICAgIGlmICh0eXBlb2YgcGFyc2VkID09PSAnc3RyaW5nJykgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGVjb3N5c3RlbSBub3RpZmljYXRpb246ICR7cGFyc2VkfWApO1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gU3lzdGVtLW9yZyBzY29wZWQsIGxlYXN0IHByaXZpbGVnZTogdGhlIHJlbGF5IGF1dGhvcml6ZXMgdGhlIENBTExFUiBieVxuICAgICAgICAvLyBpdHMga2V5LWJvdW5kIHNlcnZpY2UgbmFtZSwgbm90IGJ5IGEgcm9sZSBvciBwZXJtaXNzaW9uIG9uIHRoZSB0b2tlbi5cbiAgICAgICAgY29uc3QgYXV0aG9yaXphdGlvbiA9IGdldFNlcnZpY2VBdXRoSGVhZGVyKHsgc2VydmljZU5hbWU6IGNvbmZpZy5zZXJ2aWNlTmFtZSwgb3JnSWQ6IFNZU1RFTV9PUkdfSUQsIHJvbGU6ICdtZW1iZXInIH0pO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0PHsgZGF0YT86IHsgcmVjaXBpZW50Q291bnQ/OiBudW1iZXIgfTsgcmVjaXBpZW50Q291bnQ/OiBudW1iZXIgfT4oXG4gICAgICAgICAgRUNPU1lTVEVNX05PVElGWV9QQVRILCBwYXJzZWQsIHsgaGVhZGVyczogeyBBdXRob3JpemF0aW9uOiBhdXRob3JpemF0aW9uIH0gfSxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gcmVzcG9uc2U/LnN0YXR1c0NvZGU7XG4gICAgICAgIGNvbnN0IG9rID0gc3RhdHVzICE9PSB1bmRlZmluZWQgJiYgc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDA7XG4gICAgICAgIGlmICghb2spIHtcbiAgICAgICAgICBlbWl0Q291bnRlcignZWNvc3lzdGVtX25vdGlmaWNhdGlvbl9mYWlsZWRfdG90YWwnLCB7IGV2ZW50OiBwYXJzZWQuZXZlbnQgfSk7XG4gICAgICAgICAgbG9nZ2VyLndhcm4oJ0Vjb3N5c3RlbSBub3RpZmljYXRpb24gbm90IGRlbGl2ZXJlZCcsIHsgZXZlbnQ6IHBhcnNlZC5ldmVudCwgc3RhdHVzOiBzdGF0dXMgPz8gJ3VucmVhY2hhYmxlJyB9KTtcbiAgICAgICAgICByZXR1cm4geyBvazogZmFsc2UsIC4uLihzdGF0dXMgIT09IHVuZGVmaW5lZCA/IHsgc3RhdHVzIH0gOiB7fSkgfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBib2R5ID0gcmVzcG9uc2UhLmJvZHkgPz8ge307XG4gICAgICAgIGNvbnN0IHJlY2lwaWVudENvdW50ID0gYm9keS5kYXRhPy5yZWNpcGllbnRDb3VudCA/PyBib2R5LnJlY2lwaWVudENvdW50O1xuICAgICAgICByZXR1cm4geyBvazogdHJ1ZSwgc3RhdHVzLCAuLi4odHlwZW9mIHJlY2lwaWVudENvdW50ID09PSAnbnVtYmVyJyA/IHsgcmVjaXBpZW50Q291bnQgfSA6IHt9KSB9O1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGVtaXRDb3VudGVyKCdlY29zeXN0ZW1fbm90aWZpY2F0aW9uX2ZhaWxlZF90b3RhbCcsIHsgZXZlbnQ6IHBhcnNlZC5ldmVudCB9KTtcbiAgICAgICAgbG9nZ2VyLndhcm4oJ0Vjb3N5c3RlbSBub3RpZmljYXRpb24gZmFpbGVkJywgeyBldmVudDogcGFyc2VkLmV2ZW50LCBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gICAgICAgIHJldHVybiB7IG9rOiBmYWxzZSB9O1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG4iXX0=
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNvc3lzdGVtLW5vdGlmeS1jbGllbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9lY29zeXN0ZW0tbm90aWZ5LWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFFSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFNUQsT0FBTyxFQUFFLDJCQUEyQixFQUErQixNQUFNLHFDQUFxQyxDQUFDO0FBQy9HLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUvRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUV2RCxrQ0FBa0M7QUFDbEM7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyx3QkFBd0IsQ0FBQztBQTBCMUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLDJCQUEyQixDQUFDLE1BQW1DO0lBQzdFLE1BQU0sYUFBYSxHQUFrQjtRQUNuQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksSUFBSSxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSTtRQUNyRCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksSUFBSSxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSTtRQUNyRCxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sSUFBSSxNQUFNO0tBQ2xDLENBQUM7SUFDRixNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUUvQyxPQUFPO1FBQ0wsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUErQjtZQUN4QyxNQUFNLE1BQU0sR0FBRywyQkFBMkIsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVE7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUM3RixJQUFJLENBQUM7Z0JBQ0gseUVBQXlFO2dCQUN6RSx3RUFBd0U7Z0JBQ3hFLE1BQU0sYUFBYSxHQUFHLG9CQUFvQixDQUFDLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDdEgsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUNoQyxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLEVBQUUsQ0FDekUsQ0FBQztnQkFDRixNQUFNLE1BQU0sR0FBRyxRQUFRLEVBQUUsVUFBVSxDQUFDO2dCQUNwQyxNQUFNLEVBQUUsR0FBRyxNQUFNLEtBQUssU0FBUyxJQUFJLE1BQU0sSUFBSSxHQUFHLElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQztnQkFDakUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUNSLFdBQVcsQ0FBQyxxQ0FBcUMsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztvQkFDNUUsTUFBTSxDQUFDLElBQUksQ0FBQyxzQ0FBc0MsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksYUFBYSxFQUFFLENBQUMsQ0FBQztvQkFDOUcsT0FBTyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BFLENBQUM7Z0JBQ0QsTUFBTSxJQUFJLEdBQUcsUUFBUyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsY0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUM7Z0JBQ3hFLE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsT0FBTyxjQUFjLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2pHLENBQUM7WUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNiLFdBQVcsQ0FBQyxxQ0FBcUMsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDNUUsTUFBTSxDQUFDLElBQUksQ0FBQywrQkFBK0IsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRyxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLENBQUM7UUFDSCxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBTZW5kZXIgc2lkZSBvZiB0aGUgcGx1Z2luLWVjb3N5c3RlbSBub3RpZmljYXRpb24gcmVsYXlcbiAqIChkb2NzL3BsdWdpbi1wdWJsaXNoaW5nLm1kKS5cbiAqXG4gKiBQbGF0Zm9ybSBvd25zIFNNVFAsIHRoZSB1c2VyIGRpcmVjdG9yeSBhbmQgdGhlIFJvbGVzLCBzbyBhbiBlY29zeXN0ZW0gbm90aWNlXG4gKiBpcyBPTkUgaW50ZXJuYWwgY2FsbCDigJQgYFBPU1QgL2ludGVybmFsL25vdGlmeS1lbWFpbGAgd2l0aCBhblxuICoge0BsaW5rIEVjb3N5c3RlbU5vdGlmeVJlcXVlc3R9IOKAlCBhbmQgcGxhdGZvcm0gcmVzb2x2ZXMgdGhlIHJlY2lwaWVudCBSVUxFUyxcbiAqIGFwcGxpZXMgZWFjaCB1c2VyJ3MgYGVjb3N5c3RlbS4qYCBlbWFpbCBwcmVmZXJlbmNlcywgbWFpbHMgZXZlcnkgcmVjaXBpZW50XG4gKiBpbmRpdmlkdWFsbHkgYW5kIGRyb3BzIHRoZSBpbi1hcHAgY29weSBpbnRvIHRoZWlyIGluYm94IHRocm91Z2ggdGhlIG1lc3NhZ2VcbiAqIHNlcnZpY2UuIFRoZSBjYWxsaW5nIHNlcnZpY2UgbmV2ZXIgc2VlcyBhbiBhZGRyZXNzIG9yIGEgbWVtYmVyIGxpc3QuXG4gKlxuICogVGhlIHJlcXVlc3QgaXMgdmFsaWRhdGVkIEhFUkUgd2l0aCB0aGUgc2FtZSBwYXJzZXIgdGhlIHJlbGF5IHVzZXMsIHNvIGFcbiAqIG1hbGZvcm1lZCBub3RpY2UgZmFpbHMgYXQgdGhlIGNhbGwgc2l0ZSByYXRoZXIgdGhhbiBhcyBhIDQwMCBhdCBmbHVzaCB0aW1lLlxuICovXG5cbmltcG9ydCB7IGNyZWF0ZVNhZmVDbGllbnQgfSBmcm9tICcuL2h0dHAtY2xpZW50LmpzJztcbmltcG9ydCB7IGdldFNlcnZpY2VBdXRoSGVhZGVyIH0gZnJvbSAnLi4vbWlkZGxld2FyZS9zZXJ2aWNlLXRva2Vucy5qcyc7XG5pbXBvcnQgeyBTWVNURU1fT1JHX0lEIH0gZnJvbSAnLi4vbWlkZGxld2FyZS9zeXN0ZW0tb3JnLmpzJztcbmltcG9ydCB0eXBlIHsgU2VydmljZUNvbmZpZyB9IGZyb20gJy4uL3R5cGVzL2NvbW1vbi5qcyc7XG5pbXBvcnQgeyBwYXJzZUVjb3N5c3RlbU5vdGlmeVJlcXVlc3QsIHR5cGUgRWNvc3lzdGVtTm90aWZ5UmVxdWVzdCB9IGZyb20gJy4uL3R5cGVzL2Vjb3N5c3RlbS1ub3RpZmljYXRpb25zLmpzJztcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5pbXBvcnQgeyBlbWl0Q291bnRlciB9IGZyb20gJy4uL3V0aWxzL21ldHJpYy1lbWl0dGVyLmpzJztcbmltcG9ydCB7IGVycm9yTWVzc2FnZSB9IGZyb20gJy4uL3V0aWxzL3Jlc3BvbnNlLmpzJztcbmltcG9ydCB7IHNlcnZpY2VFbmRwb2ludCB9IGZyb20gJy4uL3V0aWxzL3NlcnZpY2UtcmVnaXN0cnkuanMnO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ2Vjb3N5c3RlbS1ub3RpZnktY2xpZW50Jyk7XG5cbi8qKiBUaGUgcmVsYXkgcGF0aCBvbiBwbGF0Zm9ybS4gKi9cbi8qKlxuICogUGxhdGZvcm0ncyBpbnRlcm5hbCBub3RpZnktZW1haWwgZW5kcG9pbnQuIE5hbWVkIGZvciB0aGUgRU5EUE9JTlQsIG5vdCBmb3Igb25lXG4gKiBvZiBpdHMgY2FsbGVyczogZml2ZSBzZXJ2aWNlcyBwb3N0IGhlcmUgKGJpbGxpbmcsIGNvbXBsaWFuY2UsIHBsdWdpbiwgcXVvdGEsXG4gKiByZXBvcnRpbmcpLCBhbmQgdGhpcyB3YXMgc3BlbGxlZCB0aHJlZSB0aW1lcyDigJQgaGVyZSwgaW4gcXVvdGEncyB0aHJlc2hvbGRcbiAqIG5vdGlmaWVyIGFuZCBpbiBiaWxsaW5nJ3Mgb2ZmZXIgbWFpbGVyLCBlYWNoIGFzIGl0cyBvd24gY29uc3QuXG4gKi9cbmV4cG9ydCBjb25zdCBOT1RJRllfRU1BSUxfUEFUSCA9ICcvaW50ZXJuYWwvbm90aWZ5LWVtYWlsJztcblxuLyoqIFdoYXQgb25lIHNlbmQgYWNoaWV2ZWQuIGBvazogZmFsc2VgIG1lYW5zIG5vdGhpbmcgd2FzIGNvbmZpcm1lZCBkZWxpdmVyZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIEVjb3N5c3RlbU5vdGlmeVJlc3VsdCB7XG4gIG9rOiBib29sZWFuO1xuICAvKiogSFRUUCBzdGF0dXMgZnJvbSBwbGF0Zm9ybSAoYWJzZW50IHdoZW4gaXQgd2FzIHVucmVhY2hhYmxlKS4gKi9cbiAgc3RhdHVzPzogbnVtYmVyO1xuICAvKiogVXNlcnMgKGFuZCBhZGRyZXNzZXMpIHRoZSBydWxlcyByZXNvbHZlZCB0by4gKi9cbiAgcmVjaXBpZW50Q291bnQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWNvc3lzdGVtTm90aWZ5Q2xpZW50IHtcbiAgc2VuZChyZXF1ZXN0OiBFY29zeXN0ZW1Ob3RpZnlSZXF1ZXN0KTogUHJvbWlzZTxFY29zeXN0ZW1Ob3RpZnlSZXN1bHQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVjb3N5c3RlbU5vdGlmeUNsaWVudENvbmZpZyB7XG4gIC8qKiBUaGUgY2FsbGluZyBzZXJ2aWNlIOKAlCBtdXN0IGJlIG9uZSBvZiB0aGUgcmVsYXkncyBhbGxvd2VkIGNhbGxlcnMuICovXG4gIHNlcnZpY2VOYW1lOiBzdHJpbmc7XG4gIC8qKiBQbGF0Zm9ybSBob3N0IChkZWZhdWx0IGVudiBQTEFURk9STV9TRVJWSUNFX0hPU1Qgb3IgJ3BsYXRmb3JtJykuICovXG4gIGhvc3Q/OiBzdHJpbmc7XG4gIC8qKiBQbGF0Zm9ybSBwb3J0IChkZWZhdWx0IGVudiBQTEFURk9STV9TRVJWSUNFX1BPUlQgb3IgMzAwMCkuICovXG4gIHBvcnQ/OiBudW1iZXI7XG4gIC8qKiBSZXF1ZXN0IHRpbWVvdXQgbXMgKGRlZmF1bHQgMTAgMDAwIOKAlCBhIGZhbi1vdXQgdG8gbWFueSByZWNpcGllbnRzKS4gKi9cbiAgdGltZW91dD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDcmVhdGUgdGhlIHJlbGF5IGNsaWVudC4gTmV2ZXIgdGhyb3dzIGZyb20gYHNlbmRgIGZvciBhIHRyYW5zcG9ydCBwcm9ibGVtIOKAlFxuICogaXQgcmVzb2x2ZXMgYHsgb2s6IGZhbHNlIH1gIGFuZCBjb3VudHMgYGVjb3N5c3RlbV9ub3RpZmljYXRpb25fZmFpbGVkX3RvdGFsXG4gKiB7ZXZlbnR9YCBzbyB0aGUgY2FsbGVyICh0aGUgZGlnZXN0IGRpc3BhdGNoZXIpIGNhbiBrZWVwIHRoZSByb3cgZm9yIHJldHJ5LlxuICogSXQgRE9FUyB0aHJvdyBmb3IgYW4gaW52YWxpZCByZXF1ZXN0OiB0aGF0IGlzIGEgcHJvZ3JhbW1pbmcgZXJyb3IsIGFuZFxuICogcmV0cnlpbmcgaXQgd291bGQgbmV2ZXIgc3VjY2VlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVjb3N5c3RlbU5vdGlmeUNsaWVudChjb25maWc6IEVjb3N5c3RlbU5vdGlmeUNsaWVudENvbmZpZyk6IEVjb3N5c3RlbU5vdGlmeUNsaWVudCB7XG4gIGNvbnN0IHNlcnZpY2VDb25maWc6IFNlcnZpY2VDb25maWcgPSB7XG4gICAgaG9zdDogY29uZmlnLmhvc3QgPz8gc2VydmljZUVuZHBvaW50KCdwbGF0Zm9ybScpLmhvc3QsXG4gICAgcG9ydDogY29uZmlnLnBvcnQgPz8gc2VydmljZUVuZHBvaW50KCdwbGF0Zm9ybScpLnBvcnQsXG4gICAgdGltZW91dDogY29uZmlnLnRpbWVvdXQgPz8gMTBfMDAwLFxuICB9O1xuICBjb25zdCBjbGllbnQgPSBjcmVhdGVTYWZlQ2xpZW50KHNlcnZpY2VDb25maWcpO1xuXG4gIHJldHVybiB7XG4gICAgYXN5bmMgc2VuZChyZXF1ZXN0OiBFY29zeXN0ZW1Ob3RpZnlSZXF1ZXN0KTogUHJvbWlzZTxFY29zeXN0ZW1Ob3RpZnlSZXN1bHQ+IHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlRWNvc3lzdGVtTm90aWZ5UmVxdWVzdChyZXF1ZXN0KTtcbiAgICAgIGlmICh0eXBlb2YgcGFyc2VkID09PSAnc3RyaW5nJykgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGVjb3N5c3RlbSBub3RpZmljYXRpb246ICR7cGFyc2VkfWApO1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gU3lzdGVtLW9yZyBzY29wZWQsIGxlYXN0IHByaXZpbGVnZTogdGhlIHJlbGF5IGF1dGhvcml6ZXMgdGhlIENBTExFUiBieVxuICAgICAgICAvLyBpdHMga2V5LWJvdW5kIHNlcnZpY2UgbmFtZSwgbm90IGJ5IGEgcm9sZSBvciBwZXJtaXNzaW9uIG9uIHRoZSB0b2tlbi5cbiAgICAgICAgY29uc3QgYXV0aG9yaXphdGlvbiA9IGdldFNlcnZpY2VBdXRoSGVhZGVyKHsgc2VydmljZU5hbWU6IGNvbmZpZy5zZXJ2aWNlTmFtZSwgb3JnSWQ6IFNZU1RFTV9PUkdfSUQsIHJvbGU6ICdtZW1iZXInIH0pO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0PHsgZGF0YT86IHsgcmVjaXBpZW50Q291bnQ/OiBudW1iZXIgfTsgcmVjaXBpZW50Q291bnQ/OiBudW1iZXIgfT4oXG4gICAgICAgICAgTk9USUZZX0VNQUlMX1BBVEgsIHBhcnNlZCwgeyBoZWFkZXJzOiB7IEF1dGhvcml6YXRpb246IGF1dGhvcml6YXRpb24gfSB9LFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBzdGF0dXMgPSByZXNwb25zZT8uc3RhdHVzQ29kZTtcbiAgICAgICAgY29uc3Qgb2sgPSBzdGF0dXMgIT09IHVuZGVmaW5lZCAmJiBzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMDtcbiAgICAgICAgaWYgKCFvaykge1xuICAgICAgICAgIGVtaXRDb3VudGVyKCdlY29zeXN0ZW1fbm90aWZpY2F0aW9uX2ZhaWxlZF90b3RhbCcsIHsgZXZlbnQ6IHBhcnNlZC5ldmVudCB9KTtcbiAgICAgICAgICBsb2dnZXIud2FybignRWNvc3lzdGVtIG5vdGlmaWNhdGlvbiBub3QgZGVsaXZlcmVkJywgeyBldmVudDogcGFyc2VkLmV2ZW50LCBzdGF0dXM6IHN0YXR1cyA/PyAndW5yZWFjaGFibGUnIH0pO1xuICAgICAgICAgIHJldHVybiB7IG9rOiBmYWxzZSwgLi4uKHN0YXR1cyAhPT0gdW5kZWZpbmVkID8geyBzdGF0dXMgfSA6IHt9KSB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJvZHkgPSByZXNwb25zZSEuYm9keSA/PyB7fTtcbiAgICAgICAgY29uc3QgcmVjaXBpZW50Q291bnQgPSBib2R5LmRhdGE/LnJlY2lwaWVudENvdW50ID8/IGJvZHkucmVjaXBpZW50Q291bnQ7XG4gICAgICAgIHJldHVybiB7IG9rOiB0cnVlLCBzdGF0dXMsIC4uLih0eXBlb2YgcmVjaXBpZW50Q291bnQgPT09ICdudW1iZXInID8geyByZWNpcGllbnRDb3VudCB9IDoge30pIH07XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgZW1pdENvdW50ZXIoJ2Vjb3N5c3RlbV9ub3RpZmljYXRpb25fZmFpbGVkX3RvdGFsJywgeyBldmVudDogcGFyc2VkLmV2ZW50IH0pO1xuICAgICAgICBsb2dnZXIud2FybignRWNvc3lzdGVtIG5vdGlmaWNhdGlvbiBmYWlsZWQnLCB7IGV2ZW50OiBwYXJzZWQuZXZlbnQsIGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSB9KTtcbiAgICAgICAgcmV0dXJuIHsgb2s6IGZhbHNlIH07XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
@@ -77,4 +77,4 @@ class EntityEventEmitter {
77
77
  }
78
78
  /** Singleton entity event emitter — shared across the process */
79
79
  export const entityEvents = new EntityEventEmitter();
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWV2ZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9lbnRpdHktZXZlbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHO0FBRUgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFcEQsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBOEI3QyxNQUFNLGtCQUFrQjtJQUNkLFdBQVcsR0FBNEIsRUFBRSxDQUFDO0lBRWxEOztPQUVHO0lBQ0gsU0FBUyxDQUFDLFVBQWlDO1FBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxVQUFpQztRQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssVUFBVSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksQ0FBQyxLQUFrQjtRQUNyQixLQUFLLE1BQU0sVUFBVSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMxQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUM1Qyx5RUFBeUU7Z0JBQ3pFLHlFQUF5RTtnQkFDekUsNERBQTREO2dCQUM1RCxXQUFXLENBQUMsc0NBQXNDLEVBQUU7b0JBQ2xELE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtvQkFDcEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO2lCQUMzQixDQUFDLENBQUM7Z0JBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsRUFBRTtvQkFDN0MsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO29CQUNwQixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7b0JBQzFCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtvQkFDeEIsS0FBSyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUM7aUJBQ3pCLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO0lBQ2pDLENBQUM7Q0FDRjtBQUVELGlFQUFpRTtBQUNqRSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogTGlnaHR3ZWlnaHQgaW4tcHJvY2VzcyBldmVudCBlbWl0dGVyIGZvciBlbnRpdHkgbGlmZWN5Y2xlIGV2ZW50cy5cbiAqXG4gKiBTZXJ2aWNlcyBlbWl0IGV2ZW50cyBhZnRlciBtdXRhdGlvbnMgKGNyZWF0ZS91cGRhdGUvZGVsZXRlKSB2aWEgQ3J1ZFNlcnZpY2UgaG9va3MuXG4gKiBTdWJzY3JpYmVycyByZWFjdCBhc3luY2hyb25vdXNseSB0byBlbnRpdHkgY2hhbmdlcy5cbiAqXG4gKiBBY3RpdmUgc3Vic2NyaWJlcnM6XG4gKiAtICoqQ29tcGxpYW5jZSBldmVudCBzdWJzY3JpYmVyKiogKGByZWdpc3RlckNvbXBsaWFuY2VFdmVudFN1YnNjcmliZXIoKWApIOKAlCBmb3J3YXJkc1xuICogICBlbnRpdHkgZXZlbnRzIHRvIHRoZSBjb21wbGlhbmNlIHNlcnZpY2UgZm9yIHBvc3QtbXV0YXRpb24gcnVsZSBldmFsdWF0aW9uLlxuICogICBSZWdpc3RlcmVkIGF0IHN0YXJ0dXAgaW4gcGx1Z2luIGFuZCBwaXBlbGluZSBzZXJ2aWNlIGluZGV4LnRzLlxuICpcbiAqIERlc2lnbjpcbiAqIC0gRmlyZS1hbmQtZm9yZ2V0OiBlbWl0KCkgbmV2ZXIgdGhyb3dzLCBzdWJzY3JpYmVyIGVycm9ycyBhcmUgbG9nZ2VkXG4gKiAtIEluLXByb2Nlc3Mgb25seTogbm8gbmV0d29yaywgbm8gUmVkaXMsIG5vIGluZnJhc3RydWN0dXJlXG4gKiAtIFN1YnNjcmliZXJzIHJ1biBhc3luYzogbmV2ZXIgYmxvY2sgdGhlIG9yaWdpbmFsIHJlcXVlc3RcbiAqXG4gKiBEdXJhYmlsaXR5IGNvbnRyYWN0IChkZWxpYmVyYXRlbHkgQkVTVC1FRkZPUlQpOlxuICogLSBUaGUgcG9zdC1tdXRhdGlvbiBjb21wbGlhbmNlIGV2YWx1YXRpb24gdGhpcyBmZWVkcyBpcyBOT1QgdGhlIGVuZm9yY2VtZW50XG4gKiAgIGdhdGUg4oCUIExJVkUgdmFsaWRhdGlvbiBvbiB0aGUgbXV0YXRpb24gcGF0aCBhbHJlYWR5IGVuZm9yY2VzIGNvbXBsaWFuY2VcbiAqICAgYmVmb3JlIHRoZSB3cml0ZSBjb21taXRzLiBUaGlzIGFzeW5jIGZhbi1vdXQgaXMgYSBjb252ZW5pZW5jZS9yZXBvcnRpbmdcbiAqICAgc2lnbmFsLCBzbyBhIGxvc3QgZGVsaXZlcnkgKHN1YnNjcmliZXIgdGhyb3csIHByb2Nlc3MgY3Jhc2ggbWlkLWNhbGxiYWNrKVxuICogICBkb3duZ3JhZGVzIHRpbWVsaW5lc3MsIG5vdCBjb3JyZWN0bmVzcy4gQmFja2luZyBpdCB3aXRoIHRoZSBkdXJhYmxlIFJlZGlzXG4gKiAgIHNwb29sIHdvdWxkIHB1bGwgbmV0d29yay9pbmZyYSBpbnRvIGEgbW9kdWxlIHdob3NlIHdob2xlIHBvaW50IGlzIHRvIGhhdmVcbiAqICAgbm9uZSwgZm9yIG5vIGVuZm9yY2VtZW50IGJlbmVmaXQg4oCUIHNvIGluc3RlYWQgYSBkcm9wcGVkIGRlbGl2ZXJ5IGlzIG1hZGVcbiAqICAgT0JTRVJWQUJMRSB2aWEgdGhlIGBlbnRpdHlfZXZlbnRfc3Vic2NyaWJlcl9mYWlsZWRfdG90YWxgIGNvdW50ZXIgKGFsZXJ0IG9uXG4gKiAgIGEgc3VzdGFpbmVkIHJhdGUpIHJhdGhlciB0aGFuIHNpbGVudGx5IHN3YWxsb3dlZCBhdCBkZWJ1ZyBsZXZlbC5cbiAqL1xuXG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgZW1pdENvdW50ZXIgfSBmcm9tICcuLi91dGlscy9tZXRyaWMtZW1pdHRlci5qcyc7XG5pbXBvcnQgeyBlcnJvck1lc3NhZ2UgfSBmcm9tICcuLi91dGlscy9yZXNwb25zZS5qcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignZW50aXR5LWV2ZW50cycpO1xuXG5leHBvcnQgdHlwZSBFbnRpdHlFdmVudFR5cGUgPSAnY3JlYXRlZCcgfCAndXBkYXRlZCcgfCAnZGVsZXRlZCc7XG5leHBvcnQgdHlwZSBFbnRpdHlUYXJnZXQgPSAncGx1Z2luJyB8ICdwaXBlbGluZScgfCAnbWVzc2FnZScgfCAnb3JnYW5pemF0aW9uJyB8ICd1c2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlFdmVudCB7XG4gIC8qKiBUaGUgdHlwZSBvZiBtdXRhdGlvbiB0aGF0IG9jY3VycmVkICovXG4gIGV2ZW50VHlwZTogRW50aXR5RXZlbnRUeXBlO1xuICAvKiogVGhlIGVudGl0eSB0eXBlIHRoYXQgd2FzIG11dGF0ZWQgKi9cbiAgdGFyZ2V0OiBFbnRpdHlUYXJnZXQ7XG4gIC8qKiBUaGUgZW50aXR5J3MgdW5pcXVlIElEICovXG4gIGVudGl0eUlkOiBzdHJpbmc7XG4gIC8qKiBUaGUgb3JnYW5pemF0aW9uIHRoYXQgb3ducyB0aGlzIGVudGl0eSAqL1xuICBvcmdJZDogc3RyaW5nO1xuICAvKiogT3JnIOKGkiB0ZWFtIGhpZXJhcmNoeTogdGhlIG93bmluZyBvcmcncyBwYXJlbnQgKHByZXNlbnQgb25seSB3aGVuIGBvcmdJZGAgaXNcbiAgICogIGEgdGVhbSkuIExldHMgY29tcGxpYW5jZSBldmFsdWF0ZSBwYXJlbnQgYHByb3BhZ2F0ZVRvQ2hpbGRyZW5gIHJ1bGVzIG9uIHRoZVxuICAgKiAgYXN5bmMgZXZlbnQgcGF0aCwgbWF0Y2hpbmcgbGl2ZSB2YWxpZGF0aW9uLiAqL1xuICBwYXJlbnRPcmdJZD86IHN0cmluZztcbiAgLyoqIFRoZSB1c2VyIHdobyBwZXJmb3JtZWQgdGhlIG11dGF0aW9uICovXG4gIHVzZXJJZDogc3RyaW5nO1xuICAvKiogV2hlbiB0aGUgZXZlbnQgb2NjdXJyZWQgKi9cbiAgdGltZXN0YW1wOiBEYXRlO1xuICAvKiogU25hcHNob3Qgb2YgZW50aXR5IGF0dHJpYnV0ZXMgKGZvciBjb21wbGlhbmNlIGV2YWx1YXRpb24pICovXG4gIGF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eUV2ZW50U3Vic2NyaWJlciB7XG4gIG9uRW50aXR5RXZlbnQoZXZlbnQ6IEVudGl0eUV2ZW50KTogUHJvbWlzZTx2b2lkPjtcbn1cblxuY2xhc3MgRW50aXR5RXZlbnRFbWl0dGVyIHtcbiAgcHJpdmF0ZSBzdWJzY3JpYmVyczogRW50aXR5RXZlbnRTdWJzY3JpYmVyW10gPSBbXTtcblxuICAvKipcbiAgICogUmVnaXN0ZXIgYSBzdWJzY3JpYmVyIHRvIHJlY2VpdmUgZW50aXR5IGV2ZW50cy5cbiAgICovXG4gIHN1YnNjcmliZShzdWJzY3JpYmVyOiBFbnRpdHlFdmVudFN1YnNjcmliZXIpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmliZXJzLnB1c2goc3Vic2NyaWJlcik7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGEgc3Vic2NyaWJlci5cbiAgICovXG4gIHVuc3Vic2NyaWJlKHN1YnNjcmliZXI6IEVudGl0eUV2ZW50U3Vic2NyaWJlcik6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaWJlcnMgPSB0aGlzLnN1YnNjcmliZXJzLmZpbHRlcigocykgPT4gcyAhPT0gc3Vic2NyaWJlcik7XG4gIH1cblxuICAvKipcbiAgICogRW1pdCBhbiBlbnRpdHkgZXZlbnQgdG8gYWxsIHN1YnNjcmliZXJzLlxuICAgKiBGaXJlLWFuZC1mb3JnZXQ6IGVycm9ycyBhcmUgY2F1Z2h0IGFuZCBsb2dnZWQsIG5ldmVyIHRocm93bi5cbiAgICovXG4gIGVtaXQoZXZlbnQ6IEVudGl0eUV2ZW50KTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBzdWJzY3JpYmVyIG9mIHRoaXMuc3Vic2NyaWJlcnMpIHtcbiAgICAgIHN1YnNjcmliZXIub25FbnRpdHlFdmVudChldmVudCkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICAvLyBNYWtlIHRoZSBkcm9wIG9ic2VydmFibGUg4oCUIGEgbG9zdCBhc3luYyBjb21wbGlhbmNlIGV2YWwgaXMgYmVzdC1lZmZvcnRcbiAgICAgICAgLy8gKGxpdmUgdmFsaWRhdGlvbiBhbHJlYWR5IGVuZm9yY2VkKSwgYnV0IGEgc3VzdGFpbmVkIGZhaWx1cmUgcmF0ZSBpcyBhblxuICAgICAgICAvLyBvcGVyYXRpb25hbCBzaWduYWwsIG5vdCBzb21ldGhpbmcgdG8gYnVyeSBhdCBkZWJ1ZyBsZXZlbC5cbiAgICAgICAgZW1pdENvdW50ZXIoJ2VudGl0eV9ldmVudF9zdWJzY3JpYmVyX2ZhaWxlZF90b3RhbCcsIHtcbiAgICAgICAgICB0YXJnZXQ6IGV2ZW50LnRhcmdldCxcbiAgICAgICAgICBldmVudFR5cGU6IGV2ZW50LmV2ZW50VHlwZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZygnRW50aXR5IGV2ZW50IHN1YnNjcmliZXIgZmFpbGVkJywge1xuICAgICAgICAgIHRhcmdldDogZXZlbnQudGFyZ2V0LFxuICAgICAgICAgIGV2ZW50VHlwZTogZXZlbnQuZXZlbnRUeXBlLFxuICAgICAgICAgIGVudGl0eUlkOiBldmVudC5lbnRpdHlJZCxcbiAgICAgICAgICBlcnJvcjogZXJyb3JNZXNzYWdlKGVyciksXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY3VycmVudCBzdWJzY3JpYmVyIGNvdW50IChmb3IgdGVzdGluZy9kaWFnbm9zdGljcykuXG4gICAqL1xuICBnZXQgc3Vic2NyaWJlckNvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3Vic2NyaWJlcnMubGVuZ3RoO1xuICB9XG59XG5cbi8qKiBTaW5nbGV0b24gZW50aXR5IGV2ZW50IGVtaXR0ZXIg4oCUIHNoYXJlZCBhY3Jvc3MgdGhlIHByb2Nlc3MgKi9cbmV4cG9ydCBjb25zdCBlbnRpdHlFdmVudHMgPSBuZXcgRW50aXR5RXZlbnRFbWl0dGVyKCk7XG4iXX0=
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWV2ZW50cy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2VudGl0eS1ldmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkc7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVwRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7QUE4QjdDLE1BQU0sa0JBQWtCO0lBQ2QsV0FBVyxHQUE0QixFQUFFLENBQUM7SUFFbEQ7O09BRUc7SUFDSCxTQUFTLENBQUMsVUFBaUM7UUFDekMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVyxDQUFDLFVBQWlDO1FBQzNDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxVQUFVLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLEtBQWtCO1FBQ3JCLEtBQUssTUFBTSxVQUFVLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQzVDLHlFQUF5RTtnQkFDekUseUVBQXlFO2dCQUN6RSw0REFBNEQ7Z0JBQzVELFdBQVcsQ0FBQyxzQ0FBc0MsRUFBRTtvQkFDbEQsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO29CQUNwQixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7aUJBQzNCLENBQUMsQ0FBQztnQkFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxFQUFFO29CQUM3QyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07b0JBQ3BCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztvQkFDMUIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO29CQUN4QixLQUFLLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQztpQkFDekIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDakMsQ0FBQztDQUNGO0FBRUQsaUVBQWlFO0FBQ2pFLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBMaWdodHdlaWdodCBpbi1wcm9jZXNzIGV2ZW50IGVtaXR0ZXIgZm9yIGVudGl0eSBsaWZlY3ljbGUgZXZlbnRzLlxuICpcbiAqIFNlcnZpY2VzIGVtaXQgZXZlbnRzIGFmdGVyIG11dGF0aW9ucyAoY3JlYXRlL3VwZGF0ZS9kZWxldGUpIHZpYSBDcnVkU2VydmljZSBob29rcy5cbiAqIFN1YnNjcmliZXJzIHJlYWN0IGFzeW5jaHJvbm91c2x5IHRvIGVudGl0eSBjaGFuZ2VzLlxuICpcbiAqIEFjdGl2ZSBzdWJzY3JpYmVyczpcbiAqIC0gKipDb21wbGlhbmNlIGV2ZW50IHN1YnNjcmliZXIqKiAoYHJlZ2lzdGVyQ29tcGxpYW5jZUV2ZW50U3Vic2NyaWJlcigpYCkg4oCUIGZvcndhcmRzXG4gKiAgIGVudGl0eSBldmVudHMgdG8gdGhlIGNvbXBsaWFuY2Ugc2VydmljZSBmb3IgcG9zdC1tdXRhdGlvbiBydWxlIGV2YWx1YXRpb24uXG4gKiAgIFJlZ2lzdGVyZWQgYXQgc3RhcnR1cCBpbiBwbHVnaW4gYW5kIHBpcGVsaW5lIHNlcnZpY2UgaW5kZXgudHMuXG4gKlxuICogRGVzaWduOlxuICogLSBGaXJlLWFuZC1mb3JnZXQ6IGVtaXQoKSBuZXZlciB0aHJvd3MsIHN1YnNjcmliZXIgZXJyb3JzIGFyZSBsb2dnZWRcbiAqIC0gSW4tcHJvY2VzcyBvbmx5OiBubyBuZXR3b3JrLCBubyBSZWRpcywgbm8gaW5mcmFzdHJ1Y3R1cmVcbiAqIC0gU3Vic2NyaWJlcnMgcnVuIGFzeW5jOiBuZXZlciBibG9jayB0aGUgb3JpZ2luYWwgcmVxdWVzdFxuICpcbiAqIER1cmFiaWxpdHkgY29udHJhY3QgKGRlbGliZXJhdGVseSBCRVNULUVGRk9SVCk6XG4gKiAtIFRoZSBwb3N0LW11dGF0aW9uIGNvbXBsaWFuY2UgZXZhbHVhdGlvbiB0aGlzIGZlZWRzIGlzIE5PVCB0aGUgZW5mb3JjZW1lbnRcbiAqICAgZ2F0ZSDigJQgTElWRSB2YWxpZGF0aW9uIG9uIHRoZSBtdXRhdGlvbiBwYXRoIGFscmVhZHkgZW5mb3JjZXMgY29tcGxpYW5jZVxuICogICBiZWZvcmUgdGhlIHdyaXRlIGNvbW1pdHMuIFRoaXMgYXN5bmMgZmFuLW91dCBpcyBhIGNvbnZlbmllbmNlL3JlcG9ydGluZ1xuICogICBzaWduYWwsIHNvIGEgbG9zdCBkZWxpdmVyeSAoc3Vic2NyaWJlciB0aHJvdywgcHJvY2VzcyBjcmFzaCBtaWQtY2FsbGJhY2spXG4gKiAgIGRvd25ncmFkZXMgdGltZWxpbmVzcywgbm90IGNvcnJlY3RuZXNzLiBCYWNraW5nIGl0IHdpdGggdGhlIGR1cmFibGUgUmVkaXNcbiAqICAgc3Bvb2wgd291bGQgcHVsbCBuZXR3b3JrL2luZnJhIGludG8gYSBtb2R1bGUgd2hvc2Ugd2hvbGUgcG9pbnQgaXMgdG8gaGF2ZVxuICogICBub25lLCBmb3Igbm8gZW5mb3JjZW1lbnQgYmVuZWZpdCDigJQgc28gaW5zdGVhZCBhIGRyb3BwZWQgZGVsaXZlcnkgaXMgbWFkZVxuICogICBPQlNFUlZBQkxFIHZpYSB0aGUgYGVudGl0eV9ldmVudF9zdWJzY3JpYmVyX2ZhaWxlZF90b3RhbGAgY291bnRlciAoYWxlcnQgb25cbiAqICAgYSBzdXN0YWluZWQgcmF0ZSkgcmF0aGVyIHRoYW4gc2lsZW50bHkgc3dhbGxvd2VkIGF0IGRlYnVnIGxldmVsLlxuICovXG5cbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5pbXBvcnQgeyBlbWl0Q291bnRlciB9IGZyb20gJy4uL3V0aWxzL21ldHJpYy1lbWl0dGVyLmpzJztcbmltcG9ydCB7IGVycm9yTWVzc2FnZSB9IGZyb20gJy4uL3V0aWxzL3Jlc3BvbnNlLmpzJztcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCdlbnRpdHktZXZlbnRzJyk7XG5cbmV4cG9ydCB0eXBlIEVudGl0eUV2ZW50VHlwZSA9ICdjcmVhdGVkJyB8ICd1cGRhdGVkJyB8ICdkZWxldGVkJztcbmV4cG9ydCB0eXBlIEVudGl0eVRhcmdldCA9ICdwbHVnaW4nIHwgJ3BpcGVsaW5lJyB8ICdtZXNzYWdlJyB8ICdvcmdhbml6YXRpb24nIHwgJ3VzZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eUV2ZW50IHtcbiAgLyoqIFRoZSB0eXBlIG9mIG11dGF0aW9uIHRoYXQgb2NjdXJyZWQgKi9cbiAgZXZlbnRUeXBlOiBFbnRpdHlFdmVudFR5cGU7XG4gIC8qKiBUaGUgZW50aXR5IHR5cGUgdGhhdCB3YXMgbXV0YXRlZCAqL1xuICB0YXJnZXQ6IEVudGl0eVRhcmdldDtcbiAgLyoqIFRoZSBlbnRpdHkncyB1bmlxdWUgSUQgKi9cbiAgZW50aXR5SWQ6IHN0cmluZztcbiAgLyoqIFRoZSBvcmdhbml6YXRpb24gdGhhdCBvd25zIHRoaXMgZW50aXR5ICovXG4gIG9yZ0lkOiBzdHJpbmc7XG4gIC8qKiBPcmcg4oaSIHRlYW0gaGllcmFyY2h5OiB0aGUgb3duaW5nIG9yZydzIHBhcmVudCAocHJlc2VudCBvbmx5IHdoZW4gYG9yZ0lkYCBpc1xuICAgKiAgYSB0ZWFtKS4gTGV0cyBjb21wbGlhbmNlIGV2YWx1YXRlIHBhcmVudCBgcHJvcGFnYXRlVG9DaGlsZHJlbmAgcnVsZXMgb24gdGhlXG4gICAqICBhc3luYyBldmVudCBwYXRoLCBtYXRjaGluZyBsaXZlIHZhbGlkYXRpb24uICovXG4gIHBhcmVudE9yZ0lkPzogc3RyaW5nO1xuICAvKiogVGhlIHVzZXIgd2hvIHBlcmZvcm1lZCB0aGUgbXV0YXRpb24gKi9cbiAgdXNlcklkOiBzdHJpbmc7XG4gIC8qKiBXaGVuIHRoZSBldmVudCBvY2N1cnJlZCAqL1xuICB0aW1lc3RhbXA6IERhdGU7XG4gIC8qKiBTbmFwc2hvdCBvZiBlbnRpdHkgYXR0cmlidXRlcyAoZm9yIGNvbXBsaWFuY2UgZXZhbHVhdGlvbikgKi9cbiAgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5RXZlbnRTdWJzY3JpYmVyIHtcbiAgb25FbnRpdHlFdmVudChldmVudDogRW50aXR5RXZlbnQpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG5jbGFzcyBFbnRpdHlFdmVudEVtaXR0ZXIge1xuICBwcml2YXRlIHN1YnNjcmliZXJzOiBFbnRpdHlFdmVudFN1YnNjcmliZXJbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIHN1YnNjcmliZXIgdG8gcmVjZWl2ZSBlbnRpdHkgZXZlbnRzLlxuICAgKi9cbiAgc3Vic2NyaWJlKHN1YnNjcmliZXI6IEVudGl0eUV2ZW50U3Vic2NyaWJlcik6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaWJlcnMucHVzaChzdWJzY3JpYmVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYSBzdWJzY3JpYmVyLlxuICAgKi9cbiAgdW5zdWJzY3JpYmUoc3Vic2NyaWJlcjogRW50aXR5RXZlbnRTdWJzY3JpYmVyKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpYmVycyA9IHRoaXMuc3Vic2NyaWJlcnMuZmlsdGVyKChzKSA9PiBzICE9PSBzdWJzY3JpYmVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0IGFuIGVudGl0eSBldmVudCB0byBhbGwgc3Vic2NyaWJlcnMuXG4gICAqIEZpcmUtYW5kLWZvcmdldDogZXJyb3JzIGFyZSBjYXVnaHQgYW5kIGxvZ2dlZCwgbmV2ZXIgdGhyb3duLlxuICAgKi9cbiAgZW1pdChldmVudDogRW50aXR5RXZlbnQpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHN1YnNjcmliZXIgb2YgdGhpcy5zdWJzY3JpYmVycykge1xuICAgICAgc3Vic2NyaWJlci5vbkVudGl0eUV2ZW50KGV2ZW50KS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIC8vIE1ha2UgdGhlIGRyb3Agb2JzZXJ2YWJsZSDigJQgYSBsb3N0IGFzeW5jIGNvbXBsaWFuY2UgZXZhbCBpcyBiZXN0LWVmZm9ydFxuICAgICAgICAvLyAobGl2ZSB2YWxpZGF0aW9uIGFscmVhZHkgZW5mb3JjZWQpLCBidXQgYSBzdXN0YWluZWQgZmFpbHVyZSByYXRlIGlzIGFuXG4gICAgICAgIC8vIG9wZXJhdGlvbmFsIHNpZ25hbCwgbm90IHNvbWV0aGluZyB0byBidXJ5IGF0IGRlYnVnIGxldmVsLlxuICAgICAgICBlbWl0Q291bnRlcignZW50aXR5X2V2ZW50X3N1YnNjcmliZXJfZmFpbGVkX3RvdGFsJywge1xuICAgICAgICAgIHRhcmdldDogZXZlbnQudGFyZ2V0LFxuICAgICAgICAgIGV2ZW50VHlwZTogZXZlbnQuZXZlbnRUeXBlLFxuICAgICAgICB9KTtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKCdFbnRpdHkgZXZlbnQgc3Vic2NyaWJlciBmYWlsZWQnLCB7XG4gICAgICAgICAgdGFyZ2V0OiBldmVudC50YXJnZXQsXG4gICAgICAgICAgZXZlbnRUeXBlOiBldmVudC5ldmVudFR5cGUsXG4gICAgICAgICAgZW50aXR5SWQ6IGV2ZW50LmVudGl0eUlkLFxuICAgICAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW50IHN1YnNjcmliZXIgY291bnQgKGZvciB0ZXN0aW5nL2RpYWdub3N0aWNzKS5cbiAgICovXG4gIGdldCBzdWJzY3JpYmVyQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zdWJzY3JpYmVycy5sZW5ndGg7XG4gIH1cbn1cblxuLyoqIFNpbmdsZXRvbiBlbnRpdHkgZXZlbnQgZW1pdHRlciDigJQgc2hhcmVkIGFjcm9zcyB0aGUgcHJvY2VzcyAqL1xuZXhwb3J0IGNvbnN0IGVudGl0eUV2ZW50cyA9IG5ldyBFbnRpdHlFdmVudEVtaXR0ZXIoKTtcbiJdfQ==