@pipeline-builder/api-core 5.2.6 → 5.2.8

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 (189) 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 +3 -2
  22. package/lib/middleware/client-version.d.ts +45 -0
  23. package/lib/middleware/client-version.js +97 -0
  24. package/lib/middleware/deferred-quota-check.js +1 -1
  25. package/lib/middleware/ecosystem-guard.js +1 -1
  26. package/lib/middleware/index.d.ts +1 -0
  27. package/lib/middleware/index.js +2 -1
  28. package/lib/middleware/jwt-verify.js +1 -1
  29. package/lib/middleware/mongo-sanitize.js +1 -1
  30. package/lib/middleware/on-behalf.js +1 -1
  31. package/lib/middleware/permission-gates.js +1 -1
  32. package/lib/middleware/quota-exempt-routes.js +1 -1
  33. package/lib/middleware/revocation.js +1 -1
  34. package/lib/middleware/route-table.js +16 -1
  35. package/lib/middleware/service-tokens.js +1 -1
  36. package/lib/middleware/step-up.js +1 -1
  37. package/lib/middleware/system-org.d.ts +18 -5
  38. package/lib/middleware/system-org.js +19 -6
  39. package/lib/openapi/extend-zod.js +1 -1
  40. package/lib/openapi/index.js +1 -1
  41. package/lib/openapi/registry.js +1 -1
  42. package/lib/openapi/routes/ask-routes.js +1 -1
  43. package/lib/openapi/routes/billing-routes.js +1 -1
  44. package/lib/openapi/routes/image-registry-routes.js +1 -1
  45. package/lib/openapi/routes/index.js +1 -1
  46. package/lib/openapi/routes/message-routes.js +1 -1
  47. package/lib/openapi/routes/pipeline-routes.js +1 -1
  48. package/lib/openapi/routes/pipeline-template-routes.js +1 -1
  49. package/lib/openapi/routes/plugin-routes.js +1 -1
  50. package/lib/openapi/routes/quota-routes.js +1 -1
  51. package/lib/openapi/schema-registry.js +1 -1
  52. package/lib/routes/health.js +1 -1
  53. package/lib/routes/index.js +1 -1
  54. package/lib/services/ai-call-weight.js +1 -1
  55. package/lib/services/alert-delivery.js +1 -1
  56. package/lib/services/api-key-exchange.d.ts +4 -2
  57. package/lib/services/api-key-exchange.js +15 -8
  58. package/lib/services/audit-context.d.ts +3 -0
  59. package/lib/services/audit-context.js +2 -1
  60. package/lib/services/audit-spool.js +1 -1
  61. package/lib/services/cache-service.js +1 -1
  62. package/lib/services/circuit-breaker.js +1 -1
  63. package/lib/services/compliance-client.js +1 -1
  64. package/lib/services/compliance-event-subscriber.js +1 -1
  65. package/lib/services/durable-event-bus.js +1 -1
  66. package/lib/services/ecosystem-notify-client.d.ts +7 -1
  67. package/lib/services/ecosystem-notify-client.js +9 -3
  68. package/lib/services/entity-events.js +1 -1
  69. package/lib/services/env-redis.js +1 -1
  70. package/lib/services/http-client.js +19 -3
  71. package/lib/services/index.d.ts +1 -1
  72. package/lib/services/index.js +2 -2
  73. package/lib/services/jwks-cache.js +1 -1
  74. package/lib/services/leader-lock.js +1 -1
  75. package/lib/services/notification-channels.js +1 -1
  76. package/lib/services/org-ai-client.js +1 -1
  77. package/lib/services/pagerduty-inbound.js +1 -1
  78. package/lib/services/pagerduty.js +1 -1
  79. package/lib/services/quota-increment-batcher.js +1 -1
  80. package/lib/services/quota.js +1 -1
  81. package/lib/services/remote-audit-client.js +1 -1
  82. package/lib/services/retry-forever.js +1 -1
  83. package/lib/services/retry-strategy.js +1 -1
  84. package/lib/services/s3-client.js +1 -1
  85. package/lib/services/scheduler.js +1 -1
  86. package/lib/services/service-boot.js +1 -1
  87. package/lib/services/service-keys.js +2 -2
  88. package/lib/services/sse-ticket-store.js +1 -1
  89. package/lib/services/system-notification.js +1 -1
  90. package/lib/services/token-revocation.js +1 -1
  91. package/lib/services/version-vuln-policy.d.ts +11 -0
  92. package/lib/services/version-vuln-policy.js +33 -7
  93. package/lib/types/ai-catalog.js +1 -1
  94. package/lib/types/ask-proposals.d.ts +23 -0
  95. package/lib/types/ask-proposals.js +29 -1
  96. package/lib/types/audit-events.js +1 -1
  97. package/lib/types/build-catalog.d.ts +65 -0
  98. package/lib/types/build-catalog.js +95 -1
  99. package/lib/types/catalog-metadata.js +1 -1
  100. package/lib/types/common.js +1 -1
  101. package/lib/types/compliance-exemption.js +1 -1
  102. package/lib/types/ecosystem-notifications.d.ts +9 -0
  103. package/lib/types/ecosystem-notifications.js +15 -6
  104. package/lib/types/ecosystem.d.ts +1 -6
  105. package/lib/types/ecosystem.js +18 -5
  106. package/lib/types/error-codes.d.ts +3 -0
  107. package/lib/types/error-codes.js +6 -1
  108. package/lib/types/feature-flags.d.ts +17 -1
  109. package/lib/types/feature-flags.js +1 -1
  110. package/lib/types/http.js +1 -1
  111. package/lib/types/index.d.ts +3 -3
  112. package/lib/types/index.js +4 -4
  113. package/lib/types/metadata-keys.js +1 -1
  114. package/lib/types/permissions.d.ts +60 -13
  115. package/lib/types/permissions.js +63 -14
  116. package/lib/types/pipeline-template.js +1 -1
  117. package/lib/types/pipeline.js +1 -1
  118. package/lib/types/plugin-catalog.js +1 -1
  119. package/lib/types/plugin-health.js +1 -1
  120. package/lib/types/plugin-scan.d.ts +69 -0
  121. package/lib/types/plugin-scan.js +77 -1
  122. package/lib/types/quota-catalog.js +15 -2
  123. package/lib/types/quota-tiers.d.ts +27 -160
  124. package/lib/types/quota-tiers.js +47 -255
  125. package/lib/types/remote-audit-actions.d.ts +1 -1
  126. package/lib/types/remote-audit-actions.js +9 -1
  127. package/lib/types/reserved-tags.js +1 -1
  128. package/lib/types/tier-limits.d.ts +210 -0
  129. package/lib/types/tier-limits.js +254 -0
  130. package/lib/types/usage-projection.js +1 -1
  131. package/lib/types/visibility.js +1 -1
  132. package/lib/types/wire-vocabulary.d.ts +7 -0
  133. package/lib/types/wire-vocabulary.js +7 -1
  134. package/lib/utils/alias-resolver.js +1 -1
  135. package/lib/utils/api-key.js +1 -1
  136. package/lib/utils/audit.js +1 -1
  137. package/lib/utils/aws-scrub.js +1 -1
  138. package/lib/utils/compliance-attributes.js +1 -1
  139. package/lib/utils/concurrency-gate.d.ts +98 -0
  140. package/lib/utils/concurrency-gate.js +110 -0
  141. package/lib/utils/concurrency.js +1 -1
  142. package/lib/utils/crash-handlers.js +1 -1
  143. package/lib/utils/date.js +1 -1
  144. package/lib/utils/dsse.js +1 -1
  145. package/lib/utils/env.d.ts +11 -0
  146. package/lib/utils/env.js +14 -1
  147. package/lib/utils/headers.js +1 -1
  148. package/lib/utils/identity.js +1 -1
  149. package/lib/utils/index.d.ts +2 -0
  150. package/lib/utils/index.js +3 -1
  151. package/lib/utils/jwk.js +2 -2
  152. package/lib/utils/logger.js +1 -1
  153. package/lib/utils/metric-emitter.js +1 -1
  154. package/lib/utils/object.js +1 -1
  155. package/lib/utils/params.js +1 -1
  156. package/lib/utils/plugin-compliance.d.ts +9 -1
  157. package/lib/utils/plugin-compliance.js +1 -1
  158. package/lib/utils/proof-of-work.js +1 -1
  159. package/lib/utils/response.js +1 -1
  160. package/lib/utils/retention.js +1 -1
  161. package/lib/utils/safe-require.js +1 -1
  162. package/lib/utils/secret-encryption.js +1 -1
  163. package/lib/utils/secret-rotation.js +1 -1
  164. package/lib/utils/secure-compare.js +1 -1
  165. package/lib/utils/semver.d.ts +18 -0
  166. package/lib/utils/semver.js +120 -0
  167. package/lib/utils/sensitive-patterns.js +1 -1
  168. package/lib/utils/service-registry.js +1 -1
  169. package/lib/utils/ssrf.js +1 -1
  170. package/lib/validation/ai-schemas.js +1 -1
  171. package/lib/validation/common-schemas.js +1 -1
  172. package/lib/validation/dockerfile-static.js +1 -1
  173. package/lib/validation/index.d.ts +1 -1
  174. package/lib/validation/index.js +2 -2
  175. package/lib/validation/message-schemas.d.ts +73 -0
  176. package/lib/validation/message-schemas.js +63 -2
  177. package/lib/validation/middleware.js +1 -1
  178. package/lib/validation/pipeline-schemas.js +1 -1
  179. package/lib/validation/pipeline-template-schemas.js +1 -1
  180. package/lib/validation/plugin-base-images.js +1 -1
  181. package/lib/validation/plugin-catalog-detect.js +1 -1
  182. package/lib/validation/plugin-catalog-metadata.js +1 -1
  183. package/lib/validation/plugin-heuristics.js +1 -1
  184. package/lib/validation/plugin-lint.js +1 -1
  185. package/lib/validation/plugin-name-confusable.js +1 -1
  186. package/lib/validation/plugin-schemas.js +1 -1
  187. package/lib/validation/plugin-spec-schema.js +1 -1
  188. package/lib/validation/plugin-template-contract.js +1 -1
  189. package/package.json +11 -4
@@ -160,4 +160,4 @@ export function pluginSpecRequiredFieldsProblem(spec) {
160
160
  }
161
161
  return null;
162
162
  }
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLXNwZWMtc2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhbGlkYXRpb24vcGx1Z2luLXNwZWMtc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7OztHQVNHO0FBRUgsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixPQUFPLEVBQ0wsYUFBYSxFQUFFLDRCQUE0QixFQUFFLGdCQUFnQixFQUFFLGVBQWUsR0FDL0UsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV4RSxnRkFBZ0Y7QUFDaEYsZUFBZTtBQUNmLGdGQUFnRjtBQUVoRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxlQUFlLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixDQUFVLENBQUM7QUFDMUYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQVUsQ0FBQztBQUN0RixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFVLENBQUM7QUFDNUUsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLGVBQWUsQ0FBVSxDQUFDO0FBR3hGLDBEQUEwRDtBQUMxRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxjQUFjLENBQUM7QUFDbEQsaUZBQWlGO0FBQ2pGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLHNEQUFzRCxDQUFDO0FBRTdGLGdGQUFnRjtBQUNoRiw0Q0FBNEM7QUFDNUMsZ0ZBQWdGO0FBRWhGLCtDQUErQztBQUMvQyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7QUFFbkM7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QUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogVGhlIHBsdWdpbiBQQUNLQUdFIHNjaGVtYXM6IGBwbHVnaW4tc3BlYy55YW1sYCBhbmQgYGNvbmZpZy55YW1sYCwgZXhhY3RseSBhc1xuICogdGhlIHBsdWdpbiBzZXJ2aWNlIHZhbGlkYXRlcyBhbiB1cGxvYWQuIFNoYXJlZCBmcm9tIGFwaS1jb3JlIHNvIHRoZSB1cGxvYWRcbiAqIHBhdGggKGFwaS9wbHVnaW4pIGFuZCB0aGUgQ0xJIChgcGlwZWxpbmUtbWFuYWdlciBwbHVnaW4gdmFsaWRhdGVgIC9cbiAqIGBwbHVnaW4gcHVibGlzaGApIGFwcGx5IE9ORSBzY2hlbWEgYW5kIGNhbid0IGRyaWZ0LlxuICpcbiAqIFB1cmU6IG5vIFlBTUwgcGFyc2luZywgbm8gZmlsZXN5c3RlbS4gQ2FsbGVycyBwYXJzZSAod2l0aCB0aGVpciBvd24gc2l6ZSBhbmRcbiAqIGFsaWFzIGJvdW5kcykgYW5kIGhhbmQgdGhlIHJlc3VsdGluZyBvYmplY3QgdG8ge0BsaW5rIGNoZWNrUGx1Z2luU3BlY30gL1xuICoge0BsaW5rIGNoZWNrUGx1Z2luQ29uZmlnfS5cbiAqL1xuXG5pbXBvcnQgeyB6IH0gZnJvbSAnem9kJztcblxuaW1wb3J0IHtcbiAgSWNvbktleVNjaGVtYSwgUExVR0lOX0NBVEFMT0dfRklFTERfU0NIRU1BUywgUHJvamVjdFVybFNjaGVtYSwgaXNBbGxvd2VkU3BkeElkLFxufSBmcm9tICcuL3BsdWdpbi1jYXRhbG9nLW1ldGFkYXRhLmpzJztcbmltcG9ydCB7IFBMVUdJTl9DSEFOR0VMT0dfTUFYX0JZVEVTIH0gZnJvbSAnLi4vdHlwZXMvcGx1Z2luLWNhdGFsb2cuanMnO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVm9jYWJ1bGFyaWVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgY29uc3QgUExVR0lOX1RZUEVTID0gWydDb2RlQnVpbGRTdGVwJywgJ1NoZWxsU3RlcCcsICdNYW51YWxBcHByb3ZhbFN0ZXAnXSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBQTFVHSU5fQ09NUFVURV9UWVBFUyA9IFsnU01BTEwnLCAnTUVESVVNJywgJ0xBUkdFJywgJ1gyX0xBUkdFJ10gYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgUExVR0lOX0ZBSUxVUkVfQkVIQVZJT1JTID0gWydmYWlsJywgJ3dhcm4nLCAnaWdub3JlJ10gYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgUExVR0lOX0JVSUxEX1RZUEVTID0gWydidWlsZF9pbWFnZScsICdwcmVidWlsdCcsICdtZXRhZGF0YV9vbmx5J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5CdWlsZFR5cGUgPSB0eXBlb2YgUExVR0lOX0JVSUxEX1RZUEVTW251bWJlcl07XG5cbi8qKiBQbHVnaW4gbmFtZTogbG93ZXJjYXNlIGxldHRlcnMsIGRpZ2l0cyBhbmQgaHlwaGVucy4gKi9cbmV4cG9ydCBjb25zdCBQTFVHSU5fTkFNRV9QQVRURVJOID0gL15bYS16MC05LV0rJC87XG4vKiogUGx1Z2luIHZlcnNpb246IHNlbXZlciwgd2l0aCBvcHRpb25hbCBgLXByZXJlbGVhc2VgIGFuZCBgK2J1aWxkYCBtZXRhZGF0YS4gKi9cbmV4cG9ydCBjb25zdCBQTFVHSU5fVkVSU0lPTl9QQVRURVJOID0gL15cXGQrXFwuXFxkK1xcLlxcZCsoLVthLXpBLVowLTkuLV0rKT8oXFwrW2EtekEtWjAtOS4tXSspPyQvO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gbmV0d29yay5lZ3Jlc3MgKHNwZWMtb25seSB0cnVzdCBtZXRhZGF0YSlcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBNYXggZGVjbGFyZWQgYG5ldHdvcmsuZWdyZXNzYCBob3N0bmFtZXMuICovXG5leHBvcnQgY29uc3QgRUdSRVNTX01BWF9IT1NUUyA9IDUwO1xuXG4vKipcbiAqIEEgYmFyZSBETlMgaG9zdG5hbWUsIG9wdGlvbmFsbHkgd2l0aCBPTkUgbGVhZGluZyBgKi5gIHdpbGRjYXJkIGxhYmVsLiBOb1xuICogc2NoZW1lLCBwb3J0LCBwYXRoLCB1c2VyaW5mbyBvciBJUCBsaXRlcmFsIOKAlCBhIGRlY2xhcmVkIGVncmVzcyB0YXJnZXQgaXMgYVxuICogbmFtZSB0aGUgcmV2aWV3ZXIgY2FuIHJlYWQuXG4gKi9cbmNvbnN0IEVHUkVTU19IT1NUX1BBVFRFUk4gPSAvXig/OlxcKlxcLik/KD86W2EtejAtOV0oPzpbYS16MC05LV17MCw2MX1bYS16MC05XSk/XFwuKStbYS16XVthLXowLTktXXswLDYxfVthLXowLTldJC87XG5cbi8qKiBUcnVlIHdoZW4gYGhvc3RgIGlzIGFuIGFjY2VwdGFibGUgYG5ldHdvcmsuZWdyZXNzYCBlbnRyeS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkRWdyZXNzSG9zdChob3N0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGhvc3QubGVuZ3RoIDw9IDI1MyAmJiBFR1JFU1NfSE9TVF9QQVRURVJOLnRlc3QoaG9zdCk7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBjb25maWcueWFtbFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGNvbnN0IFBsdWdpbkNvbmZpZ1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgcGx1Z2luU3BlYzogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBkb2NrZXJmaWxlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGJ1aWxkVHlwZTogei5lbnVtKFBMVUdJTl9CVUlMRF9UWVBFUykub3B0aW9uYWwoKSxcbiAgLy8gRGV0ZXJtaW5pc3RpYyBidWlsZCB0YWcgd3JpdHRlbiBieSBidWlsZC1wbHVnaW4taW1hZ2VzLnNoXG4gIC8vIChgcC08bmFtZT4tPHNoYTI1NjoxMj5gKS4gSW5mb3JtYXRpb25hbCBvbmx5IG9uIHRoZSB1cGxvYWQgcGF0aCDigJRcbiAgLy8gdGhlIHBsYXRmb3JtIGRvZXNuJ3QgYWN0IG9uIGl0LCBidXQgaXQgbGl2ZXMgaW4gdGhlIHNhbWUgY29uZmlnXG4gIC8vIGZpbGUgYXMgdGhlIHJlc3Qgb2YgdGhlIGJ1aWxkIG1ldGFkYXRhIHNvIHJlLXJ1bnMgY2FuIHNob3J0LWNpcmN1aXRcbiAgLy8gdW5jaGFuZ2VkIHBsdWdpbnMgd2l0aG91dCBuZWVkaW5nIGEgc2VwYXJhdGUgLmltYWdlLWhhc2ggc2lkZWNhci5cbiAgaW1hZ2VUYWc6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pLnN0cmljdCgpXG4gIC5yZWZpbmUoZCA9PiAhKGQuYnVpbGRUeXBlID09PSAncHJlYnVpbHQnICYmIGQuZG9ja2VyZmlsZSksIHtcbiAgICBtZXNzYWdlOiAnZG9ja2VyZmlsZSBpcyBub3QgYWxsb3dlZCB3aGVuIGJ1aWxkVHlwZSBpcyBwcmVidWlsdCcsXG4gIH0pXG4gIC5yZWZpbmUoZCA9PiAhKGQuYnVpbGRUeXBlID09PSAnbWV0YWRhdGFfb25seScgJiYgZC5kb2NrZXJmaWxlKSwge1xuICAgIG1lc3NhZ2U6ICdkb2NrZXJmaWxlIGlzIG5vdCBhbGxvd2VkIHdoZW4gYnVpbGRUeXBlIGlzIG1ldGFkYXRhX29ubHknLFxuICB9KTtcbmV4cG9ydCB0eXBlIFBsdWdpbkNvbmZpZ0lucHV0ID0gei5pbmZlcjx0eXBlb2YgUGx1Z2luQ29uZmlnU2NoZW1hPjtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIHBsdWdpbi1zcGVjLnlhbWxcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIG5hbWUvdmVyc2lvbi9jb21tYW5kcyBhcmUgdGhlIHJlcXVpcmVkLWZpZWxkIGNvbnRyYWN0LCBidXQgdGhleSdyZSBjaGVja2VkIGJ5XG4vLyB7QGxpbmsgcGx1Z2luU3BlY1JlcXVpcmVkRmllbGRzUHJvYmxlbX0gKHRoZSBzdGFibGUgXCJuYW1lLCB2ZXJzaW9uLCBhbmRcbi8vIGNvbW1hbmRzIGFyZSByZXF1aXJlZFwiIG1lc3NhZ2UgYW5kIHRoZSBNYW51YWxBcHByb3ZhbFN0ZXAgY2FydmUtb3V0KS4gSGVyZVxuLy8gdGhleSdyZSBvcHRpb25hbCBzdHJpbmdzOyB0aGUgc2NoZW1hJ3Mgam9iIGlzIHRvIHJlamVjdCBtYWxmb3JtZWQgKnR5cGVzKiBvblxuLy8gdGhlIGZpZWxkcyB0aGF0IGZsb3cgZG93bnN0cmVhbSB1bmNoZWNrZWQuXG5leHBvcnQgY29uc3QgUGx1Z2luU3BlY1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBrZXl3b3Jkczogei5hcnJheSh6LnN0cmluZygpKS5vcHRpb25hbCgpLFxuICBjYXRlZ29yeTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB2ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHBsdWdpblR5cGU6IHouZW51bShQTFVHSU5fVFlQRVMpLm9wdGlvbmFsKCksXG4gIGNvbXB1dGVUeXBlOiB6LmVudW0oUExVR0lOX0NPTVBVVEVfVFlQRVMpLm9wdGlvbmFsKCksXG4gIC8vID49IDAgbWludXRlczogTWFudWFsQXBwcm92YWxTdGVwIHNwZWNzIGxlZ2l0aW1hdGVseSBkZWNsYXJlIGB0aW1lb3V0OiAwYC5cbiAgdGltZW91dDogei5udW1iZXIoKS5pbnQoKS5ub25uZWdhdGl2ZSgpLm9wdGlvbmFsKCksXG4gIGZhaWx1cmVCZWhhdmlvcjogei5lbnVtKFBMVUdJTl9GQUlMVVJFX0JFSEFWSU9SUykub3B0aW9uYWwoKSxcbiAgc2VjcmV0czogei5hcnJheSh6Lm9iamVjdCh7XG4gICAgbmFtZTogei5zdHJpbmcoKS5taW4oMSksXG4gICAgcmVxdWlyZWQ6IHouYm9vbGVhbigpLFxuICAgIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pKS5vcHRpb25hbCgpLFxuICAvLyBBY2NlcHQgYW4gZXhwbGljaXQgYHByaW1hcnlPdXRwdXREaXJlY3Rvcnk6IG51bGxgIChhIE1hbnVhbEFwcHJvdmFsU3RlcCAvXG4gIC8vIG91dHB1dC1sZXNzIHN0ZXAgbGVnaXRpbWF0ZWx5IGRlY2xhcmVzIGl0KSBhbmQgbm9ybWFsaXplIGl0IHRvIGB1bmRlZmluZWRgLlxuICAvLyBXaXRob3V0IGAubnVsbGlzaCgpYCBhIHByZXNlbnQgWUFNTCBgbnVsbGAgZmFpbHMgdGhlIGJhcmUgc3RyaW5nIGNoZWNrIGFuZFxuICAvLyA0MDBzIHRoZSB3aG9sZSB1cGxvYWQuXG4gIHByaW1hcnlPdXRwdXREaXJlY3Rvcnk6IHouc3RyaW5nKCkubnVsbGlzaCgpLnRyYW5zZm9ybSgodikgPT4gdiA/PyB1bmRlZmluZWQpLFxuICBtZXRhZGF0YTogei5yZWNvcmQoei5zdHJpbmcoKSwgei51bmlvbihbei5zdHJpbmcoKSwgei5udW1iZXIoKSwgei5ib29sZWFuKCldKSkub3B0aW9uYWwoKSxcbiAgZG9ja2VyZmlsZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBpbnN0YWxsQ29tbWFuZHM6IHouYXJyYXkoei5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbiAgY29tbWFuZHM6IHouYXJyYXkoei5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbiAgZW52OiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnN0cmluZygpKS5vcHRpb25hbCgpLFxuICBidWlsZEFyZ3M6IHoucmVjb3JkKHouc3RyaW5nKCksIHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG4gIHJlcXVpcmVkTWV0YWRhdGE6IHouYXJyYXkoei5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbiAgcmVxdWlyZWRWYXJzOiB6LmFycmF5KHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG4gIC8vIEtlcHQgYXMgZnJlZS1zdHJpbmcgbWFwcyByYXRoZXIgdGhhbiBhIHZhbHVlIGVudW06IHNoaXBwZWQgc3BlY3MgdXNlIGJvdGhcbiAgLy8gYGJvb2xgIGFuZCBgYm9vbGVhbmAsIGFuZCB0aGUgY29lcmNpb24tdnMtZGVjbGFyZWQtdHlwZSBjb25zaXN0ZW5jeSBpc1xuICAvLyBlbmZvcmNlZCBzZXBhcmF0ZWx5IGJ5IHRoZSB0ZW1wbGF0ZSBjb250cmFjdCBjaGVjay4gVGhlIHNjaGVtYSBvbmx5XG4gIC8vIGd1YXJhbnRlZXMgdGhleSdyZSBzdHJpbmctdmFsdWVkIHJlY29yZHMgaGVyZS5cbiAgbWV0YWRhdGFUeXBlczogei5yZWNvcmQoei5zdHJpbmcoKSwgei5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbiAgdmFyc1R5cGVzOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnN0cmluZygpKS5vcHRpb25hbCgpLFxuICAvLyBBIGNvbW1hbmQgdGhlIGJ1aWxkIHRvb2xpbmcgcnVucyBhZ2FpbnN0IHRoZSBidWlsdCBpbWFnZVxuICAvLyAoYnVpbGQtcGx1Z2luLWltYWdlcy5zaCwgdGVzdC1wbHVnaW5zLnNoIC0tYnVpbGQsIGBwbHVnaW4gdGVzdGApLlxuICBzbW9rZVRlc3Q6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgLy8gRG9jdW1lbnRhdGlvbiArIHRydXN0IG1ldGFkYXRhLiBUaGUgUkVBRE1FIGlzIE5PVCBhIHNwZWMgZmllbGQg4oCUIGl0XG4gIC8vIGlzIFJFQURNRS5tZCBhdCB0aGUgemlwIHJvb3QuXG4gIGxpY2Vuc2U6IHouc3RyaW5nKCkucmVmaW5lKGlzQWxsb3dlZFNwZHhJZCwge1xuICAgIG1lc3NhZ2U6ICdtdXN0IGJlIGEgc3VwcG9ydGVkIFNQRFggbGljZW5zZSBpZGVudGlmaWVyIChlLmcuIEFwYWNoZS0yLjAsIE1JVCknLFxuICB9KS5vcHRpb25hbCgpLFxuICBjaGFuZ2Vsb2c6IHouc3RyaW5nKCkucmVmaW5lKCh2KSA9PiBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodikubGVuZ3RoIDw9IFBMVUdJTl9DSEFOR0VMT0dfTUFYX0JZVEVTLCB7XG4gICAgbWVzc2FnZTogYG11c3QgYmUgYXQgbW9zdCAke1BMVUdJTl9DSEFOR0VMT0dfTUFYX0JZVEVTfSBieXRlc2AsXG4gIH0pLm9wdGlvbmFsKCksXG4gIGhvbWVwYWdlVXJsOiBQcm9qZWN0VXJsU2NoZW1hLm9wdGlvbmFsKCksXG4gIHNvdXJjZVVybDogUHJvamVjdFVybFNjaGVtYS5vcHRpb25hbCgpLFxuICAvLyBDYXRhbG9nIG1ldGFkYXRhOiB0aGUgY2FyZCBvbmUtbGluZXIgYW5kIHRoZSBkb2NzIGxpbmsuIFNhbWVcbiAgLy8gdmFsaWRhdG9ycyBhcyBhIHZhbHVlIHR5cGVkIGludG8gdGhlIHVwbG9hZCBmb3JtLlxuICBzdW1tYXJ5OiBQTFVHSU5fQ0FUQUxPR19GSUVMRF9TQ0hFTUFTLnN1bW1hcnkub3B0aW9uYWwoKSxcbiAgZG9jdW1lbnRhdGlvblVybDogUHJvamVjdFVybFNjaGVtYS5vcHRpb25hbCgpLFxuICBpY29uOiB6LnVuaW9uKFtcbiAgICBJY29uS2V5U2NoZW1hLFxuICAgIHoub2JqZWN0KHsga2V5OiBJY29uS2V5U2NoZW1hLCBiYWRnZTogSWNvbktleVNjaGVtYS5vcHRpb25hbCgpIH0pLnN0cmljdCgpLFxuICBdKS5vcHRpb25hbCgpLFxuICBuZXR3b3JrOiB6Lm9iamVjdCh7XG4gICAgZWdyZXNzOiB6LmFycmF5KHouc3RyaW5nKCkucmVmaW5lKGlzVmFsaWRFZ3Jlc3NIb3N0LCB7XG4gICAgICBtZXNzYWdlOiAnbXVzdCBiZSBhIGJhcmUgaG9zdG5hbWUgKG5vIHNjaGVtZSwgcG9ydCBvciBwYXRoOyBvbmUgbGVhZGluZyAqLiBhbGxvd2VkKScsXG4gICAgfSkpLm1heChFR1JFU1NfTUFYX0hPU1RTKS5vcHRpb25hbCgpLFxuICB9KS5zdHJpY3QoKS5vcHRpb25hbCgpLFxufSkuc3RyaWN0KCk7XG5leHBvcnQgdHlwZSBQbHVnaW5TcGVjSW5wdXQgPSB6LmluZmVyPHR5cGVvZiBQbHVnaW5TcGVjU2NoZW1hPjtcblxuLyoqXG4gKiBSZXN1bHQgb2YgY2hlY2tpbmcgYSBwYXJzZWQgWUFNTCBkb2N1bWVudCBhZ2FpbnN0IGEgcGFja2FnZSBzY2hlbWE6XG4gKiBgaXNzdWVzYCBhcmUgdGhlIGluZGl2aWR1YWwgcHJvYmxlbXMsIGBtZXNzYWdlYCB0aGUgb25lLWxpbmUgZm9ybSB0aGUgdXBsb2FkXG4gKiBBUEkgcmVwb3J0cyAoYHBsdWdpbi1zcGVjLnlhbWw6IDxwYXRoPjogPHByb2JsZW0+OyDigKZgKS5cbiAqL1xuZXhwb3J0IHR5cGUgUGFja2FnZUNoZWNrPFQ+ID0geyBvazogdHJ1ZTsgdmFsdWU6IFQgfSB8IHsgb2s6IGZhbHNlOyBpc3N1ZXM6IHN0cmluZ1tdOyBtZXNzYWdlOiBzdHJpbmcgfTtcblxuY29uc3QgaXNNYXBwaW5nID0gKHJhdzogdW5rbm93bik6IHJhdyBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PlxuICB0eXBlb2YgcmF3ID09PSAnb2JqZWN0JyAmJiByYXcgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkocmF3KTtcblxuZnVuY3Rpb24gY2hlY2tBZ2FpbnN0PFQ+KGZpbGU6IHN0cmluZywgcmF3OiB1bmtub3duLCBzY2hlbWE6IHouWm9kVHlwZTxUPiwgd2l0aFBhdGg6IGJvb2xlYW4pOiBQYWNrYWdlQ2hlY2s8VD4ge1xuICBpZiAoIWlzTWFwcGluZyhyYXcpKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGAke2ZpbGV9IG11c3QgYmUgYSBZQU1MIG1hcHBpbmdgO1xuICAgIHJldHVybiB7IG9rOiBmYWxzZSwgaXNzdWVzOiBbbWVzc2FnZV0sIG1lc3NhZ2UgfTtcbiAgfVxuICBjb25zdCByZXN1bHQgPSBzY2hlbWEuc2FmZVBhcnNlKHJhdyk7XG4gIGlmIChyZXN1bHQuc3VjY2VzcykgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiByZXN1bHQuZGF0YSB9O1xuICBjb25zdCBpc3N1ZXMgPSByZXN1bHQuZXJyb3IuaXNzdWVzLm1hcChpID0+ICh3aXRoUGF0aCA/IGAke2kucGF0aC5qb2luKCcuJykgfHwgJyhyb290KSd9OiAke2kubWVzc2FnZX1gIDogaS5tZXNzYWdlKSk7XG4gIHJldHVybiB7IG9rOiBmYWxzZSwgaXNzdWVzLCBtZXNzYWdlOiBgJHtmaWxlfTogJHtpc3N1ZXMuam9pbignOyAnKX1gIH07XG59XG5cbi8qKiBDaGVjayBhIHBhcnNlZCBgcGx1Z2luLXNwZWMueWFtbGAgZG9jdW1lbnQgYWdhaW5zdCB7QGxpbmsgUGx1Z2luU3BlY1NjaGVtYX0uICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tQbHVnaW5TcGVjKHJhdzogdW5rbm93bik6IFBhY2thZ2VDaGVjazxQbHVnaW5TcGVjSW5wdXQ+IHtcbiAgcmV0dXJuIGNoZWNrQWdhaW5zdCgncGx1Z2luLXNwZWMueWFtbCcsIHJhdywgUGx1Z2luU3BlY1NjaGVtYSwgdHJ1ZSk7XG59XG5cbi8qKiBDaGVjayBhIHBhcnNlZCBgY29uZmlnLnlhbWxgIGRvY3VtZW50IGFnYWluc3Qge0BsaW5rIFBsdWdpbkNvbmZpZ1NjaGVtYX0uICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tQbHVnaW5Db25maWcocmF3OiB1bmtub3duKTogUGFja2FnZUNoZWNrPFBsdWdpbkNvbmZpZ0lucHV0PiB7XG4gIHJldHVybiBjaGVja0FnYWluc3QoJ2NvbmZpZy55YW1sJywgcmF3LCBQbHVnaW5Db25maWdTY2hlbWEsIGZhbHNlKTtcbn1cblxuLyoqXG4gKiBUaGUgcmVxdWlyZWQtZmllbGQgY29udHJhY3Q6IGBuYW1lYCBhbmQgYHZlcnNpb25gIGFsd2F5cywgYGNvbW1hbmRzYCBmb3JcbiAqIGV2ZXJ5IHR5cGUgZXhjZXB0IGBNYW51YWxBcHByb3ZhbFN0ZXBgLiBSZXR1cm5zIHRoZSB1cGxvYWQncyBtZXNzYWdlLCBvciBudWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGx1Z2luU3BlY1JlcXVpcmVkRmllbGRzUHJvYmxlbShzcGVjOiBQaWNrPFBsdWdpblNwZWNJbnB1dCwgJ25hbWUnIHwgJ3ZlcnNpb24nIHwgJ2NvbW1hbmRzJyB8ICdwbHVnaW5UeXBlJz4pOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgaXNBcHByb3ZhbFN0ZXAgPSBzcGVjLnBsdWdpblR5cGUgPT09ICdNYW51YWxBcHByb3ZhbFN0ZXAnO1xuICBpZiAoIXNwZWMubmFtZSB8fCAhc3BlYy52ZXJzaW9uIHx8ICghaXNBcHByb3ZhbFN0ZXAgJiYgIXNwZWMuY29tbWFuZHMpKSB7XG4gICAgcmV0dXJuICdJbnZhbGlkIHNwZWM6IG5hbWUsIHZlcnNpb24sIGFuZCBjb21tYW5kcyBhcmUgcmVxdWlyZWQnO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuIl19
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLXNwZWMtc2NoZW1hLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmFsaWRhdGlvbi9wbHVnaW4tc3BlYy1zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7O0dBU0c7QUFFSCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXhCLE9BQU8sRUFDTCxhQUFhLEVBQUUsNEJBQTRCLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxHQUMvRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXhFLGdGQUFnRjtBQUNoRixlQUFlO0FBQ2YsZ0ZBQWdGO0FBRWhGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLENBQVUsQ0FBQztBQUMxRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBVSxDQUFDO0FBQ3RGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQVUsQ0FBQztBQUM1RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsZUFBZSxDQUFVLENBQUM7QUFHeEYsMERBQTBEO0FBQzFELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLGNBQWMsQ0FBQztBQUNsRCxpRkFBaUY7QUFDakYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsc0RBQXNELENBQUM7QUFFN0YsZ0ZBQWdGO0FBQ2hGLDRDQUE0QztBQUM1QyxnRkFBZ0Y7QUFFaEYsK0NBQStDO0FBQy9DLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztBQUVuQzs7OztHQUlHO0FBQ0gsTUFB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QUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBUaGUgcGx1Z2luIFBBQ0tBR0Ugc2NoZW1hczogYHBsdWdpbi1zcGVjLnlhbWxgIGFuZCBgY29uZmlnLnlhbWxgLCBleGFjdGx5IGFzXG4gKiB0aGUgcGx1Z2luIHNlcnZpY2UgdmFsaWRhdGVzIGFuIHVwbG9hZC4gU2hhcmVkIGZyb20gYXBpLWNvcmUgc28gdGhlIHVwbG9hZFxuICogcGF0aCAoYXBpL3BsdWdpbikgYW5kIHRoZSBDTEkgKGBwaXBlbGluZS1tYW5hZ2VyIHBsdWdpbiB2YWxpZGF0ZWAgL1xuICogYHBsdWdpbiBwdWJsaXNoYCkgYXBwbHkgT05FIHNjaGVtYSBhbmQgY2FuJ3QgZHJpZnQuXG4gKlxuICogUHVyZTogbm8gWUFNTCBwYXJzaW5nLCBubyBmaWxlc3lzdGVtLiBDYWxsZXJzIHBhcnNlICh3aXRoIHRoZWlyIG93biBzaXplIGFuZFxuICogYWxpYXMgYm91bmRzKSBhbmQgaGFuZCB0aGUgcmVzdWx0aW5nIG9iamVjdCB0byB7QGxpbmsgY2hlY2tQbHVnaW5TcGVjfSAvXG4gKiB7QGxpbmsgY2hlY2tQbHVnaW5Db25maWd9LlxuICovXG5cbmltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuXG5pbXBvcnQge1xuICBJY29uS2V5U2NoZW1hLCBQTFVHSU5fQ0FUQUxPR19GSUVMRF9TQ0hFTUFTLCBQcm9qZWN0VXJsU2NoZW1hLCBpc0FsbG93ZWRTcGR4SWQsXG59IGZyb20gJy4vcGx1Z2luLWNhdGFsb2ctbWV0YWRhdGEuanMnO1xuaW1wb3J0IHsgUExVR0lOX0NIQU5HRUxPR19NQVhfQllURVMgfSBmcm9tICcuLi90eXBlcy9wbHVnaW4tY2F0YWxvZy5qcyc7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBWb2NhYnVsYXJpZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBjb25zdCBQTFVHSU5fVFlQRVMgPSBbJ0NvZGVCdWlsZFN0ZXAnLCAnU2hlbGxTdGVwJywgJ01hbnVhbEFwcHJvdmFsU3RlcCddIGFzIGNvbnN0O1xuZXhwb3J0IGNvbnN0IFBMVUdJTl9DT01QVVRFX1RZUEVTID0gWydTTUFMTCcsICdNRURJVU0nLCAnTEFSR0UnLCAnWDJfTEFSR0UnXSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBQTFVHSU5fRkFJTFVSRV9CRUhBVklPUlMgPSBbJ2ZhaWwnLCAnd2FybicsICdpZ25vcmUnXSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBQTFVHSU5fQlVJTERfVFlQRVMgPSBbJ2J1aWxkX2ltYWdlJywgJ3ByZWJ1aWx0JywgJ21ldGFkYXRhX29ubHknXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFBsdWdpbkJ1aWxkVHlwZSA9IHR5cGVvZiBQTFVHSU5fQlVJTERfVFlQRVNbbnVtYmVyXTtcblxuLyoqIFBsdWdpbiBuYW1lOiBsb3dlcmNhc2UgbGV0dGVycywgZGlnaXRzIGFuZCBoeXBoZW5zLiAqL1xuZXhwb3J0IGNvbnN0IFBMVUdJTl9OQU1FX1BBVFRFUk4gPSAvXlthLXowLTktXSskLztcbi8qKiBQbHVnaW4gdmVyc2lvbjogc2VtdmVyLCB3aXRoIG9wdGlvbmFsIGAtcHJlcmVsZWFzZWAgYW5kIGArYnVpbGRgIG1ldGFkYXRhLiAqL1xuZXhwb3J0IGNvbnN0IFBMVUdJTl9WRVJTSU9OX1BBVFRFUk4gPSAvXlxcZCtcXC5cXGQrXFwuXFxkKygtW2EtekEtWjAtOS4tXSspPyhcXCtbYS16QS1aMC05Li1dKyk/JC87XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBuZXR3b3JrLmVncmVzcyAoc3BlYy1vbmx5IHRydXN0IG1ldGFkYXRhKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIE1heCBkZWNsYXJlZCBgbmV0d29yay5lZ3Jlc3NgIGhvc3RuYW1lcy4gKi9cbmV4cG9ydCBjb25zdCBFR1JFU1NfTUFYX0hPU1RTID0gNTA7XG5cbi8qKlxuICogQSBiYXJlIEROUyBob3N0bmFtZSwgb3B0aW9uYWxseSB3aXRoIE9ORSBsZWFkaW5nIGAqLmAgd2lsZGNhcmQgbGFiZWwuIE5vXG4gKiBzY2hlbWUsIHBvcnQsIHBhdGgsIHVzZXJpbmZvIG9yIElQIGxpdGVyYWwg4oCUIGEgZGVjbGFyZWQgZWdyZXNzIHRhcmdldCBpcyBhXG4gKiBuYW1lIHRoZSByZXZpZXdlciBjYW4gcmVhZC5cbiAqL1xuY29uc3QgRUdSRVNTX0hPU1RfUEFUVEVSTiA9IC9eKD86XFwqXFwuKT8oPzpbYS16MC05XSg/OlthLXowLTktXXswLDYxfVthLXowLTldKT9cXC4pK1thLXpdW2EtejAtOS1dezAsNjF9W2EtejAtOV0kLztcblxuLyoqIFRydWUgd2hlbiBgaG9zdGAgaXMgYW4gYWNjZXB0YWJsZSBgbmV0d29yay5lZ3Jlc3NgIGVudHJ5LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRFZ3Jlc3NIb3N0KGhvc3Q6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gaG9zdC5sZW5ndGggPD0gMjUzICYmIEVHUkVTU19IT1NUX1BBVFRFUk4udGVzdChob3N0KTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIGNvbmZpZy55YW1sXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgY29uc3QgUGx1Z2luQ29uZmlnU2NoZW1hID0gei5vYmplY3Qoe1xuICBwbHVnaW5TcGVjOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGRvY2tlcmZpbGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgYnVpbGRUeXBlOiB6LmVudW0oUExVR0lOX0JVSUxEX1RZUEVTKS5vcHRpb25hbCgpLFxuICAvLyBEZXRlcm1pbmlzdGljIGJ1aWxkIHRhZyB3cml0dGVuIGJ5IGJ1aWxkLXBsdWdpbi1pbWFnZXMuc2hcbiAgLy8gKGBwLTxuYW1lPi08c2hhMjU2OjEyPmApLiBJbmZvcm1hdGlvbmFsIG9ubHkgb24gdGhlIHVwbG9hZCBwYXRoIOKAlFxuICAvLyB0aGUgcGxhdGZvcm0gZG9lc24ndCBhY3Qgb24gaXQsIGJ1dCBpdCBsaXZlcyBpbiB0aGUgc2FtZSBjb25maWdcbiAgLy8gZmlsZSBhcyB0aGUgcmVzdCBvZiB0aGUgYnVpbGQgbWV0YWRhdGEgc28gcmUtcnVucyBjYW4gc2hvcnQtY2lyY3VpdFxuICAvLyB1bmNoYW5nZWQgcGx1Z2lucyB3aXRob3V0IG5lZWRpbmcgYSBzZXBhcmF0ZSAuaW1hZ2UtaGFzaCBzaWRlY2FyLlxuICBpbWFnZVRhZzogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxufSkuc3RyaWN0KClcbiAgLnJlZmluZShkID0+ICEoZC5idWlsZFR5cGUgPT09ICdwcmVidWlsdCcgJiYgZC5kb2NrZXJmaWxlKSwge1xuICAgIG1lc3NhZ2U6ICdkb2NrZXJmaWxlIGlzIG5vdCBhbGxvd2VkIHdoZW4gYnVpbGRUeXBlIGlzIHByZWJ1aWx0JyxcbiAgfSlcbiAgLnJlZmluZShkID0+ICEoZC5idWlsZFR5cGUgPT09ICdtZXRhZGF0YV9vbmx5JyAmJiBkLmRvY2tlcmZpbGUpLCB7XG4gICAgbWVzc2FnZTogJ2RvY2tlcmZpbGUgaXMgbm90IGFsbG93ZWQgd2hlbiBidWlsZFR5cGUgaXMgbWV0YWRhdGFfb25seScsXG4gIH0pO1xuZXhwb3J0IHR5cGUgUGx1Z2luQ29uZmlnSW5wdXQgPSB6LmluZmVyPHR5cGVvZiBQbHVnaW5Db25maWdTY2hlbWE+O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gcGx1Z2luLXNwZWMueWFtbFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gbmFtZS92ZXJzaW9uL2NvbW1hbmRzIGFyZSB0aGUgcmVxdWlyZWQtZmllbGQgY29udHJhY3QsIGJ1dCB0aGV5J3JlIGNoZWNrZWQgYnlcbi8vIHtAbGluayBwbHVnaW5TcGVjUmVxdWlyZWRGaWVsZHNQcm9ibGVtfSAodGhlIHN0YWJsZSBcIm5hbWUsIHZlcnNpb24sIGFuZFxuLy8gY29tbWFuZHMgYXJlIHJlcXVpcmVkXCIgbWVzc2FnZSBhbmQgdGhlIE1hbnVhbEFwcHJvdmFsU3RlcCBjYXJ2ZS1vdXQpLiBIZXJlXG4vLyB0aGV5J3JlIG9wdGlvbmFsIHN0cmluZ3M7IHRoZSBzY2hlbWEncyBqb2IgaXMgdG8gcmVqZWN0IG1hbGZvcm1lZCAqdHlwZXMqIG9uXG4vLyB0aGUgZmllbGRzIHRoYXQgZmxvdyBkb3duc3RyZWFtIHVuY2hlY2tlZC5cbmV4cG9ydCBjb25zdCBQbHVnaW5TcGVjU2NoZW1hID0gei5vYmplY3Qoe1xuICBuYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGtleXdvcmRzOiB6LmFycmF5KHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG4gIGNhdGVnb3J5OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHZlcnNpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcGx1Z2luVHlwZTogei5lbnVtKFBMVUdJTl9UWVBFUykub3B0aW9uYWwoKSxcbiAgY29tcHV0ZVR5cGU6IHouZW51bShQTFVHSU5fQ09NUFVURV9UWVBFUykub3B0aW9uYWwoKSxcbiAgLy8gPj0gMCBtaW51dGVzOiBNYW51YWxBcHByb3ZhbFN0ZXAgc3BlY3MgbGVnaXRpbWF0ZWx5IGRlY2xhcmUgYHRpbWVvdXQ6IDBgLlxuICB0aW1lb3V0OiB6Lm51bWJlcigpLmludCgpLm5vbm5lZ2F0aXZlKCkub3B0aW9uYWwoKSxcbiAgZmFpbHVyZUJlaGF2aW9yOiB6LmVudW0oUExVR0lOX0ZBSUxVUkVfQkVIQVZJT1JTKS5vcHRpb25hbCgpLFxuICBzZWNyZXRzOiB6LmFycmF5KHoub2JqZWN0KHtcbiAgICBuYW1lOiB6LnN0cmluZygpLm1pbigxKSxcbiAgICByZXF1aXJlZDogei5ib29sZWFuKCksXG4gICAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSkpLm9wdGlvbmFsKCksXG4gIC8vIEFjY2VwdCBhbiBleHBsaWNpdCBgcHJpbWFyeU91dHB1dERpcmVjdG9yeTogbnVsbGAgKGEgTWFudWFsQXBwcm92YWxTdGVwIC9cbiAgLy8gb3V0cHV0LWxlc3Mgc3RlcCBsZWdpdGltYXRlbHkgZGVjbGFyZXMgaXQpIGFuZCBub3JtYWxpemUgaXQgdG8gYHVuZGVmaW5lZGAuXG4gIC8vIFdpdGhvdXQgYC5udWxsaXNoKClgIGEgcHJlc2VudCBZQU1MIGBudWxsYCBmYWlscyB0aGUgYmFyZSBzdHJpbmcgY2hlY2sgYW5kXG4gIC8vIDQwMHMgdGhlIHdob2xlIHVwbG9hZC5cbiAgcHJpbWFyeU91dHB1dERpcmVjdG9yeTogei5zdHJpbmcoKS5udWxsaXNoKCkudHJhbnNmb3JtKCh2KSA9PiB2ID8/IHVuZGVmaW5lZCksXG4gIG1ldGFkYXRhOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnVuaW9uKFt6LnN0cmluZygpLCB6Lm51bWJlcigpLCB6LmJvb2xlYW4oKV0pKS5vcHRpb25hbCgpLFxuICBkb2NrZXJmaWxlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGluc3RhbGxDb21tYW5kczogei5hcnJheSh6LnN0cmluZygpKS5vcHRpb25hbCgpLFxuICBjb21tYW5kczogei5hcnJheSh6LnN0cmluZygpKS5vcHRpb25hbCgpLFxuICBlbnY6IHoucmVjb3JkKHouc3RyaW5nKCksIHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG4gIGJ1aWxkQXJnczogei5yZWNvcmQoei5zdHJpbmcoKSwgei5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbiAgcmVxdWlyZWRNZXRhZGF0YTogei5hcnJheSh6LnN0cmluZygpKS5vcHRpb25hbCgpLFxuICByZXF1aXJlZFZhcnM6IHouYXJyYXkoei5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbiAgLy8gS2VwdCBhcyBmcmVlLXN0cmluZyBtYXBzIHJhdGhlciB0aGFuIGEgdmFsdWUgZW51bTogc2hpcHBlZCBzcGVjcyB1c2UgYm90aFxuICAvLyBgYm9vbGAgYW5kIGBib29sZWFuYCwgYW5kIHRoZSBjb2VyY2lvbi12cy1kZWNsYXJlZC10eXBlIGNvbnNpc3RlbmN5IGlzXG4gIC8vIGVuZm9yY2VkIHNlcGFyYXRlbHkgYnkgdGhlIHRlbXBsYXRlIGNvbnRyYWN0IGNoZWNrLiBUaGUgc2NoZW1hIG9ubHlcbiAgLy8gZ3VhcmFudGVlcyB0aGV5J3JlIHN0cmluZy12YWx1ZWQgcmVjb3JkcyBoZXJlLlxuICBtZXRhZGF0YVR5cGVzOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnN0cmluZygpKS5vcHRpb25hbCgpLFxuICB2YXJzVHlwZXM6IHoucmVjb3JkKHouc3RyaW5nKCksIHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG4gIC8vIEEgY29tbWFuZCB0aGUgYnVpbGQgdG9vbGluZyBydW5zIGFnYWluc3QgdGhlIGJ1aWx0IGltYWdlXG4gIC8vIChidWlsZC1wbHVnaW4taW1hZ2VzLnNoLCB0ZXN0LXBsdWdpbnMuc2ggLS1idWlsZCwgYHBsdWdpbiB0ZXN0YCkuXG4gIHNtb2tlVGVzdDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAvLyBEb2N1bWVudGF0aW9uICsgdHJ1c3QgbWV0YWRhdGEuIFRoZSBSRUFETUUgaXMgTk9UIGEgc3BlYyBmaWVsZCDigJQgaXRcbiAgLy8gaXMgUkVBRE1FLm1kIGF0IHRoZSB6aXAgcm9vdC5cbiAgbGljZW5zZTogei5zdHJpbmcoKS5yZWZpbmUoaXNBbGxvd2VkU3BkeElkLCB7XG4gICAgbWVzc2FnZTogJ211c3QgYmUgYSBzdXBwb3J0ZWQgU1BEWCBsaWNlbnNlIGlkZW50aWZpZXIgKGUuZy4gQXBhY2hlLTIuMCwgTUlUKScsXG4gIH0pLm9wdGlvbmFsKCksXG4gIGNoYW5nZWxvZzogei5zdHJpbmcoKS5yZWZpbmUoKHYpID0+IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZSh2KS5sZW5ndGggPD0gUExVR0lOX0NIQU5HRUxPR19NQVhfQllURVMsIHtcbiAgICBtZXNzYWdlOiBgbXVzdCBiZSBhdCBtb3N0ICR7UExVR0lOX0NIQU5HRUxPR19NQVhfQllURVN9IGJ5dGVzYCxcbiAgfSkub3B0aW9uYWwoKSxcbiAgaG9tZXBhZ2VVcmw6IFByb2plY3RVcmxTY2hlbWEub3B0aW9uYWwoKSxcbiAgc291cmNlVXJsOiBQcm9qZWN0VXJsU2NoZW1hLm9wdGlvbmFsKCksXG4gIC8vIENhdGFsb2cgbWV0YWRhdGE6IHRoZSBjYXJkIG9uZS1saW5lciBhbmQgdGhlIGRvY3MgbGluay4gU2FtZVxuICAvLyB2YWxpZGF0b3JzIGFzIGEgdmFsdWUgdHlwZWQgaW50byB0aGUgdXBsb2FkIGZvcm0uXG4gIHN1bW1hcnk6IFBMVUdJTl9DQVRBTE9HX0ZJRUxEX1NDSEVNQVMuc3VtbWFyeS5vcHRpb25hbCgpLFxuICBkb2N1bWVudGF0aW9uVXJsOiBQcm9qZWN0VXJsU2NoZW1hLm9wdGlvbmFsKCksXG4gIGljb246IHoudW5pb24oW1xuICAgIEljb25LZXlTY2hlbWEsXG4gICAgei5vYmplY3QoeyBrZXk6IEljb25LZXlTY2hlbWEsIGJhZGdlOiBJY29uS2V5U2NoZW1hLm9wdGlvbmFsKCkgfSkuc3RyaWN0KCksXG4gIF0pLm9wdGlvbmFsKCksXG4gIG5ldHdvcms6IHoub2JqZWN0KHtcbiAgICBlZ3Jlc3M6IHouYXJyYXkoei5zdHJpbmcoKS5yZWZpbmUoaXNWYWxpZEVncmVzc0hvc3QsIHtcbiAgICAgIG1lc3NhZ2U6ICdtdXN0IGJlIGEgYmFyZSBob3N0bmFtZSAobm8gc2NoZW1lLCBwb3J0IG9yIHBhdGg7IG9uZSBsZWFkaW5nICouIGFsbG93ZWQpJyxcbiAgICB9KSkubWF4KEVHUkVTU19NQVhfSE9TVFMpLm9wdGlvbmFsKCksXG4gIH0pLnN0cmljdCgpLm9wdGlvbmFsKCksXG59KS5zdHJpY3QoKTtcbmV4cG9ydCB0eXBlIFBsdWdpblNwZWNJbnB1dCA9IHouaW5mZXI8dHlwZW9mIFBsdWdpblNwZWNTY2hlbWE+O1xuXG4vKipcbiAqIFJlc3VsdCBvZiBjaGVja2luZyBhIHBhcnNlZCBZQU1MIGRvY3VtZW50IGFnYWluc3QgYSBwYWNrYWdlIHNjaGVtYTpcbiAqIGBpc3N1ZXNgIGFyZSB0aGUgaW5kaXZpZHVhbCBwcm9ibGVtcywgYG1lc3NhZ2VgIHRoZSBvbmUtbGluZSBmb3JtIHRoZSB1cGxvYWRcbiAqIEFQSSByZXBvcnRzIChgcGx1Z2luLXNwZWMueWFtbDogPHBhdGg+OiA8cHJvYmxlbT47IOKApmApLlxuICovXG5leHBvcnQgdHlwZSBQYWNrYWdlQ2hlY2s8VD4gPSB7IG9rOiB0cnVlOyB2YWx1ZTogVCB9IHwgeyBvazogZmFsc2U7IGlzc3Vlczogc3RyaW5nW107IG1lc3NhZ2U6IHN0cmluZyB9O1xuXG5jb25zdCBpc01hcHBpbmcgPSAocmF3OiB1bmtub3duKTogcmF3IGlzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+XG4gIHR5cGVvZiByYXcgPT09ICdvYmplY3QnICYmIHJhdyAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShyYXcpO1xuXG5mdW5jdGlvbiBjaGVja0FnYWluc3Q8VD4oZmlsZTogc3RyaW5nLCByYXc6IHVua25vd24sIHNjaGVtYTogei5ab2RUeXBlPFQ+LCB3aXRoUGF0aDogYm9vbGVhbik6IFBhY2thZ2VDaGVjazxUPiB7XG4gIGlmICghaXNNYXBwaW5nKHJhdykpIHtcbiAgICBjb25zdCBtZXNzYWdlID0gYCR7ZmlsZX0gbXVzdCBiZSBhIFlBTUwgbWFwcGluZ2A7XG4gICAgcmV0dXJuIHsgb2s6IGZhbHNlLCBpc3N1ZXM6IFttZXNzYWdlXSwgbWVzc2FnZSB9O1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9IHNjaGVtYS5zYWZlUGFyc2UocmF3KTtcbiAgaWYgKHJlc3VsdC5zdWNjZXNzKSByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWU6IHJlc3VsdC5kYXRhIH07XG4gIGNvbnN0IGlzc3VlcyA9IHJlc3VsdC5lcnJvci5pc3N1ZXMubWFwKGkgPT4gKHdpdGhQYXRoID8gYCR7aS5wYXRoLmpvaW4oJy4nKSB8fCAnKHJvb3QpJ306ICR7aS5tZXNzYWdlfWAgOiBpLm1lc3NhZ2UpKTtcbiAgcmV0dXJuIHsgb2s6IGZhbHNlLCBpc3N1ZXMsIG1lc3NhZ2U6IGAke2ZpbGV9OiAke2lzc3Vlcy5qb2luKCc7ICcpfWAgfTtcbn1cblxuLyoqIENoZWNrIGEgcGFyc2VkIGBwbHVnaW4tc3BlYy55YW1sYCBkb2N1bWVudCBhZ2FpbnN0IHtAbGluayBQbHVnaW5TcGVjU2NoZW1hfS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1BsdWdpblNwZWMocmF3OiB1bmtub3duKTogUGFja2FnZUNoZWNrPFBsdWdpblNwZWNJbnB1dD4ge1xuICByZXR1cm4gY2hlY2tBZ2FpbnN0KCdwbHVnaW4tc3BlYy55YW1sJywgcmF3LCBQbHVnaW5TcGVjU2NoZW1hLCB0cnVlKTtcbn1cblxuLyoqIENoZWNrIGEgcGFyc2VkIGBjb25maWcueWFtbGAgZG9jdW1lbnQgYWdhaW5zdCB7QGxpbmsgUGx1Z2luQ29uZmlnU2NoZW1hfS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1BsdWdpbkNvbmZpZyhyYXc6IHVua25vd24pOiBQYWNrYWdlQ2hlY2s8UGx1Z2luQ29uZmlnSW5wdXQ+IHtcbiAgcmV0dXJuIGNoZWNrQWdhaW5zdCgnY29uZmlnLnlhbWwnLCByYXcsIFBsdWdpbkNvbmZpZ1NjaGVtYSwgZmFsc2UpO1xufVxuXG4vKipcbiAqIFRoZSByZXF1aXJlZC1maWVsZCBjb250cmFjdDogYG5hbWVgIGFuZCBgdmVyc2lvbmAgYWx3YXlzLCBgY29tbWFuZHNgIGZvclxuICogZXZlcnkgdHlwZSBleGNlcHQgYE1hbnVhbEFwcHJvdmFsU3RlcGAuIFJldHVybnMgdGhlIHVwbG9hZCdzIG1lc3NhZ2UsIG9yIG51bGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwbHVnaW5TcGVjUmVxdWlyZWRGaWVsZHNQcm9ibGVtKHNwZWM6IFBpY2s8UGx1Z2luU3BlY0lucHV0LCAnbmFtZScgfCAndmVyc2lvbicgfCAnY29tbWFuZHMnIHwgJ3BsdWdpblR5cGUnPik6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBpc0FwcHJvdmFsU3RlcCA9IHNwZWMucGx1Z2luVHlwZSA9PT0gJ01hbnVhbEFwcHJvdmFsU3RlcCc7XG4gIGlmICghc3BlYy5uYW1lIHx8ICFzcGVjLnZlcnNpb24gfHwgKCFpc0FwcHJvdmFsU3RlcCAmJiAhc3BlYy5jb21tYW5kcykpIHtcbiAgICByZXR1cm4gJ0ludmFsaWQgc3BlYzogbmFtZSwgdmVyc2lvbiwgYW5kIGNvbW1hbmRzIGFyZSByZXF1aXJlZCc7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG4iXX0=
@@ -110,4 +110,4 @@ export function formatPluginTemplateIssue(issue) {
110
110
  return issue.message;
111
111
  return `[${issue.field}${issue.line !== undefined ? `:${issue.line}:${issue.col}` : ''}] ${issue.message}`;
112
112
  }
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLXRlbXBsYXRlLWNvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhbGlkYXRpb24vcGx1Z2luLXRlbXBsYXRlLWNvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7R0FVRztBQUVILG1EQUFtRDtBQUNuRCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFVLENBQUM7QUFFbEYsaUVBQWlFO0FBQ2pFLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFVLENBQUM7QUFFckgsaUZBQWlGO0FBQ2pGLE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxLQUFhO0lBQ3BELE9BQU8seUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdEgsQ0FBQztBQTZCRCxNQUFNLGNBQWMsR0FBcUMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBRTFHLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBVSxFQUFZLEVBQUUsQ0FDMUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFlLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxD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SUFDSCxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELGtHQUFrRztBQUNsRyxNQUFNLFVBQVUseUJBQXlCLENBQUMsS0FBMEI7SUFDbEUsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFVBQVU7UUFBRSxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDcEQsT0FBTyxJQUFJLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDN0csQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFRoZSBwbHVnaW4gc3BlYydzIGB7eyAuLi4gfX1gIFRFTVBMQVRFIENPTlRSQUNULCBleGFjdGx5IGFzIHRoZSBwbHVnaW5cbiAqIHNlcnZpY2UgY2hlY2tzIGFuIHVwbG9hZC4gU2hhcmVkIGZyb20gYXBpLWNvcmUgc28gdGhlIHVwbG9hZCBwYXRoXG4gKiAoYXBpL3BsdWdpbikgYW5kIHRoZSBDTEkgKGBwaXBlbGluZS1tYW5hZ2VyIHBsdWdpbiB2YWxpZGF0ZWAgLyBgdGVzdGAgL1xuICogYHB1Ymxpc2hgKSBhcHBseSBPTkUgY2hlY2sgYW5kIGNhbid0IGRyaWZ0IChwbHVnaW4tZWNvc3lzdGVtIFc2KS5cbiAqXG4gKiBQdXJlOiBpdCByZXR1cm5zIGlzc3VlcyBhbmQgbmV2ZXIgdGhyb3dzLiBUaGUgdGVtcGxhdGUgZW5naW5lICh0b2tlbml6ZXIgYW5kXG4gKiBzY29wZSB2YWxpZGF0b3IpIGxpdmVzIGluIHBpcGVsaW5lLWNvcmUsIHdoaWNoIGRlcGVuZHMgb24gYXBpLWNvcmUsIHNvIHRoZVxuICogY2FsbGVyIGhhbmRzIGl0IGluIGFzIHtAbGluayBQbHVnaW5UZW1wbGF0ZUVuZ2luZX07IHBpcGVsaW5lLWNvcmUncyBtb2R1bGVcbiAqIHNhdGlzZmllcyB0aGUgaW50ZXJmYWNlIGFzLWlzLlxuICovXG5cbi8qKiBTY29wZSByb290cyBhIHBsdWdpbiB0ZW1wbGF0ZSBtYXkgcmVmZXJlbmNlLiAqL1xuZXhwb3J0IGNvbnN0IFBMVUdJTl9URU1QTEFURV9TQ09QRV9ST09UUyA9IFsncGlwZWxpbmUnLCAncGx1Z2luJywgJ2VudiddIGFzIGNvbnN0O1xuXG4vKiogU3BlYyBmaWVsZHMgd2hvc2Ugc3RyaW5ncyBtYXkgY2FycnkgYHt7IC4uLiB9fWAgdGVtcGxhdGVzLiAqL1xuZXhwb3J0IGNvbnN0IFBMVUdJTl9URU1QTEFUQUJMRV9GSUVMRFMgPSBbJ2Rlc2NyaXB0aW9uJywgJ2NvbW1hbmRzJywgJ2luc3RhbGxDb21tYW5kcycsICdlbnYnLCAnYnVpbGRBcmdzJ10gYXMgY29uc3Q7XG5cbi8qKiBUcnVlIHdoZW4gYSB3YWxrZWQgZmllbGQgcGF0aCAoYGNvbW1hbmRzWzJdYCwgYGVudi5TVEFHRWApIGlzIHRlbXBsYXRhYmxlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUGx1Z2luVGVtcGxhdGFibGVGaWVsZChmaWVsZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBQTFVHSU5fVEVNUExBVEFCTEVfRklFTERTLnNvbWUoKGYpID0+IGZpZWxkID09PSBmIHx8IGZpZWxkLnN0YXJ0c1dpdGgoYCR7Zn1bYCkgfHwgZmllbGQuc3RhcnRzV2l0aChgJHtmfS5gKSk7XG59XG5cbi8qKiBUaGUgc2xpY2Ugb2YgcGlwZWxpbmUtY29yZSdzIHRlbXBsYXRlIGVuZ2luZSB0aGlzIGNoZWNrIHVzZXMuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpblRlbXBsYXRlRW5naW5lIHtcbiAgYWxsb3dlZFNjb3BlUm9vdHMocm9vdHM6IHN0cmluZ1tdKTogKHBhdGg6IHN0cmluZ1tdKSA9PiBib29sZWFuO1xuICB2YWxpZGF0ZVRlbXBsYXRlcyhcbiAgICBkb2M6IG9iamVjdCxcbiAgICBpc1RlbXBsYXRhYmxlOiAoZmllbGQ6IHN0cmluZykgPT4gYm9vbGVhbixcbiAgICBpc0tub3duUGF0aDogKHBhdGg6IHN0cmluZ1tdKSA9PiBib29sZWFuLFxuICApOiB7IGVycm9yczogUmVhZG9ubHlBcnJheTx7IGZpZWxkOiBzdHJpbmc7IGxpbmU/OiBudW1iZXI7IGNvbD86IG51bWJlcjsgbWVzc2FnZTogc3RyaW5nIH0+IH07XG4gIHRva2VuaXplKHNvdXJjZTogc3RyaW5nKTogUmVhZG9ubHlBcnJheTx7IGtpbmQ6IHN0cmluZzsgcGF0aD86IHN0cmluZ1tdOyBkZWZhdWx0VmFsdWU/OiBzdHJpbmc7IGNvZXJjZT86IHN0cmluZyB9Pjtcbn1cblxuLyoqXG4gKiBPbmUgdGVtcGxhdGUtY29udHJhY3QgcHJvYmxlbS5cbiAqIC0gYHRlbXBsYXRlYDogYSBwYXJzZSBlcnJvciwgdW5rbm93biBzY29wZSByb290IG9yIHJlc2VydmVkIGBzZWNyZXRzLipgIHBhdGguXG4gKiAtIGB1bmRlY2xhcmVkYDogYHt7IHBpcGVsaW5lLm1ldGFkYXRhLlggfX1gIC8gYHt7IHBpcGVsaW5lLnZhcnMuWCB9fWAgd2l0aG91dFxuICogICBgWGAgaW4gYHJlcXVpcmVkTWV0YWRhdGFgIC8gYHJlcXVpcmVkVmFyc2AgKGFuZCBubyBgfCBkZWZhdWx0OmApLlxuICogLSBgdHlwZS1taXNtYXRjaGA6IGEgYHwgbnVtYmVyfGJvb2x8anNvbmAgZmlsdGVyIHdob3NlIGRlY2xhcmVkIHR5cGUgZGlmZmVycy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5UZW1wbGF0ZUlzc3VlIHtcbiAga2luZDogJ3RlbXBsYXRlJyB8ICd1bmRlY2xhcmVkJyB8ICd0eXBlLW1pc21hdGNoJztcbiAgLyoqIFRoZSBzcGVjIGZpZWxkIChgY29tbWFuZHNbMF1gKSBmb3IgYHRlbXBsYXRlYCBpc3N1ZXM7IHRoZSBzY29wZSBwYXRoIG90aGVyd2lzZS4gKi9cbiAgZmllbGQ6IHN0cmluZztcbiAgbGluZT86IG51bWJlcjtcbiAgY29sPzogbnVtYmVyO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbmNvbnN0IENPRVJDRV9UT19UWVBFOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiA9IHsgbnVtYmVyOiAnbnVtYmVyJywgYm9vbDogJ2Jvb2wnLCBqc29uOiAnanNvbicgfTtcblxuY29uc3Qgc3RyaW5nTGlzdCA9ICh2OiB1bmtub3duKTogc3RyaW5nW10gPT5cbiAgKEFycmF5LmlzQXJyYXkodikgPyB2LmZpbHRlcigoeCk6IHggaXMgc3RyaW5nID0+IHR5cGVvZiB4ID09PSAnc3RyaW5nJykgOiBbXSk7XG5jb25zdCBzdHJpbmdWYWx1ZXMgPSAodjogdW5rbm93bik6IHN0cmluZ1tdID0+XG4gICh2ICYmIHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2KVxuICAgID8gT2JqZWN0LnZhbHVlcyh2IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5maWx0ZXIoKHgpOiB4IGlzIHN0cmluZyA9PiB0eXBlb2YgeCA9PT0gJ3N0cmluZycpXG4gICAgOiBbXSk7XG5jb25zdCBzdHJpbmdNYXAgPSAodjogdW5rbm93bik6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPT5cbiAgKHYgJiYgdHlwZW9mIHYgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHYpID8gdiBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IDoge30pO1xuXG4vKipcbiAqIEV2ZXJ5IGB7eyAuLi4gfX1gIHByb2JsZW0gaW4gYSBwbHVnaW4gc3BlYzogcGFyc2UgZXJyb3JzIGFuZCBzY29wZSByb290c1xuICogKG9ubHkgYHBpcGVsaW5lYCwgYHBsdWdpbmAsIGBlbnZgOyBgc2VjcmV0c2AgaXMgcmVzZXJ2ZWQpLCB0aGVuIHBlclxuICogYHt7IHBpcGVsaW5lLm1ldGFkYXRhLlggfX1gIC8gYHt7IHBpcGVsaW5lLnZhcnMuWCB9fWAgcmVmZXJlbmNlIChhKSB0aGF0IGBYYFxuICogaXMgZGVjbGFyZWQgaW4gYHJlcXVpcmVkTWV0YWRhdGFgIC8gYHJlcXVpcmVkVmFyc2AgdW5sZXNzIGl0IGhhcyBhXG4gKiBgfCBkZWZhdWx0OmAsIGFuZCAoYikgdGhhdCBhIGNvZXJjaW9uIGZpbHRlciBtYXRjaGVzIHRoZSBkZWNsYXJlZCB0eXBlIGluXG4gKiBgbWV0YWRhdGFUeXBlc2AgLyBgdmFyc1R5cGVzYCAodW5kZWNsYXJlZCA9IGBzdHJpbmdgOyBgYm9vbGVhbmAgPSBgYm9vbGApLlxuICpcbiAqIFRha2VzIHRoZSByYXcgc3BlYyBvYmplY3QsIHNvIGEgc3BlYyB0aGF0IGZhaWxlZCB0aGUgc2NoZW1hIGlzIHN0aWxsIGNoZWNrZWQuXG4gKiBJc3N1ZXMgYXJlIGRlLWR1cGxpY2F0ZWQ7IGFuIGVtcHR5IGFycmF5IG1lYW5zIHRoZSBzcGVjIHBhc3Nlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUGx1Z2luVGVtcGxhdGVzKHNwZWM6IG9iamVjdCwgZW5naW5lOiBQbHVnaW5UZW1wbGF0ZUVuZ2luZSk6IFBsdWdpblRlbXBsYXRlSXNzdWVbXSB7XG4gIGNvbnN0IHMgPSBzcGVjIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBjb25zdCBkb2MgPSB7XG4gICAgZGVzY3JpcHRpb246IHMuZGVzY3JpcHRpb24sXG4gICAgY29tbWFuZHM6IHMuY29tbWFuZHMsXG4gICAgaW5zdGFsbENvbW1hbmRzOiBzLmluc3RhbGxDb21tYW5kcyxcbiAgICBlbnY6IHMuZW52LFxuICAgIGJ1aWxkQXJnczogcy5idWlsZEFyZ3MsXG4gIH07XG4gIGNvbnN0IGlzc3VlczogUGx1Z2luVGVtcGxhdGVJc3N1ZVtdID0gW107XG5cbiAgY29uc3QgeyBlcnJvcnMgfSA9IGVuZ2luZS52YWxpZGF0ZVRlbXBsYXRlcyhkb2MsIGlzUGx1Z2luVGVtcGxhdGFibGVGaWVsZCwgZW5naW5lLmFsbG93ZWRTY29wZVJvb3RzKFsuLi5QTFVHSU5fVEVNUExBVEVfU0NPUEVfUk9PVFNdKSk7XG4gIGZvciAoY29uc3QgZSBvZiBlcnJvcnMpIHtcbiAgICBpc3N1ZXMucHVzaCh7IGtpbmQ6ICd0ZW1wbGF0ZScsIGZpZWxkOiBlLmZpZWxkLCAuLi4oZS5saW5lICE9PSB1bmRlZmluZWQgJiYgeyBsaW5lOiBlLmxpbmUsIGNvbDogZS5jb2wgfSksIG1lc3NhZ2U6IGUubWVzc2FnZSB9KTtcbiAgfVxuXG4gIGNvbnN0IHJlcXVpcmVkID0geyBtZXRhZGF0YTogbmV3IFNldChzdHJpbmdMaXN0KHMucmVxdWlyZWRNZXRhZGF0YSkpLCB2YXJzOiBuZXcgU2V0KHN0cmluZ0xpc3Qocy5yZXF1aXJlZFZhcnMpKSB9O1xuICBjb25zdCB0eXBlcyA9IHsgbWV0YWRhdGE6IHN0cmluZ01hcChzLm1ldGFkYXRhVHlwZXMpLCB2YXJzOiBzdHJpbmdNYXAocy52YXJzVHlwZXMpIH07XG4gIGNvbnN0IHNvdXJjZXMgPSBbXG4gICAgLi4uKHR5cGVvZiBzLmRlc2NyaXB0aW9uID09PSAnc3RyaW5nJyA/IFtzLmRlc2NyaXB0aW9uXSA6IFtdKSxcbiAgICAuLi5zdHJpbmdMaXN0KHMuY29tbWFuZHMpLCAuLi5zdHJpbmdMaXN0KHMuaW5zdGFsbENvbW1hbmRzKSwgLi4uc3RyaW5nVmFsdWVzKHMuZW52KSwgLi4uc3RyaW5nVmFsdWVzKHMuYnVpbGRBcmdzKSxcbiAgXTtcbiAgY29uc3Qgc2VlbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCBhZGQgPSAoaXNzdWU6IFBsdWdpblRlbXBsYXRlSXNzdWUpID0+IHtcbiAgICBjb25zdCBrZXkgPSBgJHtpc3N1ZS5raW5kfVxcdTAwMDAke2lzc3VlLm1lc3NhZ2V9YDtcbiAgICBpZiAoIXNlZW4uaGFzKGtleSkpIHsgc2Vlbi5hZGQoa2V5KTsgaXNzdWVzLnB1c2goaXNzdWUpOyB9XG4gIH07XG5cbiAgZm9yIChjb25zdCBzb3VyY2Ugb2Ygc291cmNlcykge1xuICAgIGlmICghc291cmNlLmluY2x1ZGVzKCd7eycpKSBjb250aW51ZTtcbiAgICBsZXQgdG9rZW5zO1xuICAgIHRyeSB7IHRva2VucyA9IGVuZ2luZS50b2tlbml6ZShzb3VyY2UpOyB9IGNhdGNoIHsgY29udGludWU7IC8qIHJlcG9ydGVkIGFzIGEgYHRlbXBsYXRlYCBpc3N1ZSBhYm92ZSAqLyB9XG4gICAgZm9yIChjb25zdCB0IG9mIHRva2Vucykge1xuICAgICAgaWYgKHQua2luZCAhPT0gJ2V4cHInIHx8ICF0LnBhdGgpIGNvbnRpbnVlO1xuICAgICAgY29uc3QgW3Jvb3QsIHN1Yiwga2V5XSA9IHQucGF0aDtcbiAgICAgIGlmIChyb290ICE9PSAncGlwZWxpbmUnIHx8IChzdWIgIT09ICdtZXRhZGF0YScgJiYgc3ViICE9PSAndmFycycpIHx8ICFrZXkpIGNvbnRpbnVlO1xuICAgICAgY29uc3Qgc2NvcGVQYXRoID0gYHBpcGVsaW5lLiR7c3VifS4ke2tleX1gO1xuICAgICAgY29uc3QgZGVjbGFyZWRJbiA9IHN1YiA9PT0gJ21ldGFkYXRhJyA/ICdyZXF1aXJlZE1ldGFkYXRhJyA6ICdyZXF1aXJlZFZhcnMnO1xuICAgICAgY29uc3QgdHlwZXNJbiA9IHN1YiA9PT0gJ21ldGFkYXRhJyA/ICdtZXRhZGF0YVR5cGVzJyA6ICd2YXJzVHlwZXMnO1xuXG4gICAgICBpZiAodC5kZWZhdWx0VmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhcmVxdWlyZWRbc3ViXS5oYXMoa2V5KSkge1xuICAgICAgICBhZGQoeyBraW5kOiAndW5kZWNsYXJlZCcsIGZpZWxkOiBzY29wZVBhdGgsIG1lc3NhZ2U6IGAke3Njb3BlUGF0aH0gaXMgbm90IGRlY2xhcmVkIGluICcke2RlY2xhcmVkSW59JyAoZGVjbGFyZSBpdCwgb3IgYWRkICd8IGRlZmF1bHQ6IC4uLicpYCB9KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGV4cGVjdGVkID0gdC5jb2VyY2UgPyBDT0VSQ0VfVE9fVFlQRVt0LmNvZXJjZV0gOiB1bmRlZmluZWQ7XG4gICAgICBpZiAoZXhwZWN0ZWQpIHtcbiAgICAgICAgLy8gU2hpcHBlZCBzcGVjcyBzcGVsbCB0aGUgYm9vbGVhbiB0eXBlIGJvdGggYGJvb2xgIGFuZCBgYm9vbGVhbmA7IHRoZVxuICAgICAgICAvLyBzdG9yZWQgY29udHJhY3QgKGFuZCB0aGUgZmlsdGVyKSB1c2UgYGJvb2xgLlxuICAgICAgICBjb25zdCByYXcgPSB0eXBlc1tzdWJdW2tleV0gPz8gJ3N0cmluZyc7XG4gICAgICAgIGNvbnN0IGRlY2xhcmVkID0gcmF3ID09PSAnYm9vbGVhbicgPyAnYm9vbCcgOiByYXc7XG4gICAgICAgIGlmIChkZWNsYXJlZCAhPT0gZXhwZWN0ZWQpIHtcbiAgICAgICAgICBhZGQoe1xuICAgICAgICAgICAga2luZDogJ3R5cGUtbWlzbWF0Y2gnLFxuICAgICAgICAgICAgZmllbGQ6IHNjb3BlUGF0aCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGAke3Njb3BlUGF0aH0gdXNlcyAnfCAke3QuY29lcmNlfScgYnV0IGRlY2xhcmVkIHR5cGUgaXMgJyR7ZGVjbGFyZWR9JyAoYWRkICcke2tleX06ICR7ZXhwZWN0ZWR9JyB0byAke3R5cGVzSW59KWAsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGlzc3Vlcztcbn1cblxuLyoqIE9uZSBsaW5lIHBlciBpc3N1ZTogYFtjb21tYW5kc1swXToxOjVdIG1lc3NhZ2VgIGZvciB0ZW1wbGF0ZSBpc3N1ZXMsIHRoZSBtZXNzYWdlIG90aGVyd2lzZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRQbHVnaW5UZW1wbGF0ZUlzc3VlKGlzc3VlOiBQbHVnaW5UZW1wbGF0ZUlzc3VlKTogc3RyaW5nIHtcbiAgaWYgKGlzc3VlLmtpbmQgIT09ICd0ZW1wbGF0ZScpIHJldHVybiBpc3N1ZS5tZXNzYWdlO1xuICByZXR1cm4gYFske2lzc3VlLmZpZWxkfSR7aXNzdWUubGluZSAhPT0gdW5kZWZpbmVkID8gYDoke2lzc3VlLmxpbmV9OiR7aXNzdWUuY29sfWAgOiAnJ31dICR7aXNzdWUubWVzc2FnZX1gO1xufVxuIl19
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLXRlbXBsYXRlLWNvbnRyYWN0LmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmFsaWRhdGlvbi9wbHVnaW4tdGVtcGxhdGUtY29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7OztHQVVHO0FBRUgsbURBQW1EO0FBQ25ELE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQVUsQ0FBQztBQUVsRixpRUFBaUU7QUFDakUsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxXQUFXLENBQVUsQ0FBQztBQUVySCxpRkFBaUY7QUFDakYsTUFBTSxVQUFVLHdCQUF3QixDQUFDLEtBQWE7SUFDcEQsT0FBTyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN0SCxDQUFDO0FBNkJELE1BQU0sY0FBYyxHQUFxQyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFFMUcsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFVLEVBQVksRUFBRSxDQUMxQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQWUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRixNQUFNLFlBQVksR0FBRyxDQUFDLENBQVUsRUFBWSxFQUFFLENBQzVDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQTRCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQWUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQztJQUMvRixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDVixNQUFNLFNBQVMsR0FBRyxDQUFDLENBQVUsRUFBMEIsRUFBRSxDQUN2RCxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUEyQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUV2Rjs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLElBQVksRUFBRSxNQUE0QjtJQUM3RSxNQUFNLENBQUMsR0FBRyxJQUErQixDQUFDO0lBQzFDLE1BQU0sR0FBRyxHQUFHO1FBQ1YsV0FBVyxFQUFFLENBQUMsQ0FBQyxXQUFXO1FBQzFCLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUTtRQUNwQixlQUFlLEVBQUUsQ0FBQyxDQUFDLGVBQWU7UUFDbEMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHO1FBQ1YsU0FBUyxFQUFFLENBQUMsQ0FBQyxTQUFTO0tBQ3ZCLENBQUM7SUFDRixNQUFNLE1BQU0sR0FBMEIsRUFBRSxDQUFDO0lBRXpDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEdBQUcsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkksS0FBSyxNQUFNLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ25JLENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDbEgsTUFBTSxLQUFLLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO0lBQ3JGLE1BQU0sT0FBTyxHQUFHO1FBQ2QsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDN0QsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsRUFBRSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztLQUNsSCxDQUFDO0lBQ0YsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUMvQixNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQTBCLEVBQUUsRUFBRTtRQUN6QyxNQUFNLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLFNBQVMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUFDLENBQUM7SUFDNUQsQ0FBQyxDQUFDO0lBRUYsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFBRSxTQUFTO1FBQ3JDLElBQUksTUFBTSxDQUFDO1FBQ1gsSUFBSSxDQUFDO1lBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFBQyxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQUMsU0FBUyxDQUFDLDBDQUEwQztRQUFDLENBQUM7UUFDeEcsS0FBSyxNQUFNLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQUUsU0FBUztZQUMzQyxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ2hDLElBQUksSUFBSSxLQUFLLFVBQVUsSUFBSSxDQUFDLEdBQUcsS0FBSyxVQUFVLElBQUksR0FBRyxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRztnQkFBRSxTQUFTO1lBQ3BGLE1BQU0sU0FBUyxHQUFHLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQzNDLE1BQU0sVUFBVSxHQUFHLEdBQUcsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7WUFDNUUsTUFBTSxPQUFPLEdBQUcsR0FBRyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7WUFFbkUsSUFBSSxDQUFDLENBQUMsWUFBWSxLQUFLLFNBQVMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDNUQsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxHQUFHLFNBQVMsd0JBQXdCLFVBQVUseUNBQXlDLEVBQUUsQ0FBQyxDQUFDO1lBQ2xKLENBQUM7WUFDRCxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDakUsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDYixzRUFBc0U7Z0JBQ3RFLCtDQUErQztnQkFDL0MsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQztnQkFDeEMsTUFBTSxRQUFRLEdBQUcsR0FBRyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7Z0JBQ2xELElBQUksUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUMxQixHQUFHLENBQUM7d0JBQ0YsSUFBSSxFQUFFLGVBQWU7d0JBQ3JCLEtBQUssRUFBRSxTQUFTO3dCQUNoQixPQUFPLEVBQUUsR0FBRyxTQUFTLFlBQVksQ0FBQyxDQUFDLE1BQU0sMkJBQTJCLFFBQVEsV0FBVyxHQUFHLEtBQUssUUFBUSxRQUFRLE9BQU8sR0FBRztxQkFDMUgsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsa0dBQWtHO0FBQ2xHLE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxLQUEwQjtJQUNsRSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssVUFBVTtRQUFFLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUNwRCxPQUFPLElBQUksS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUM3RyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogVGhlIHBsdWdpbiBzcGVjJ3MgYHt7IC4uLiB9fWAgVEVNUExBVEUgQ09OVFJBQ1QsIGV4YWN0bHkgYXMgdGhlIHBsdWdpblxuICogc2VydmljZSBjaGVja3MgYW4gdXBsb2FkLiBTaGFyZWQgZnJvbSBhcGktY29yZSBzbyB0aGUgdXBsb2FkIHBhdGhcbiAqIChhcGkvcGx1Z2luKSBhbmQgdGhlIENMSSAoYHBpcGVsaW5lLW1hbmFnZXIgcGx1Z2luIHZhbGlkYXRlYCAvIGB0ZXN0YCAvXG4gKiBgcHVibGlzaGApIGFwcGx5IE9ORSBjaGVjayBhbmQgY2FuJ3QgZHJpZnQgKHBsdWdpbi1lY29zeXN0ZW0gVzYpLlxuICpcbiAqIFB1cmU6IGl0IHJldHVybnMgaXNzdWVzIGFuZCBuZXZlciB0aHJvd3MuIFRoZSB0ZW1wbGF0ZSBlbmdpbmUgKHRva2VuaXplciBhbmRcbiAqIHNjb3BlIHZhbGlkYXRvcikgbGl2ZXMgaW4gcGlwZWxpbmUtY29yZSwgd2hpY2ggZGVwZW5kcyBvbiBhcGktY29yZSwgc28gdGhlXG4gKiBjYWxsZXIgaGFuZHMgaXQgaW4gYXMge0BsaW5rIFBsdWdpblRlbXBsYXRlRW5naW5lfTsgcGlwZWxpbmUtY29yZSdzIG1vZHVsZVxuICogc2F0aXNmaWVzIHRoZSBpbnRlcmZhY2UgYXMtaXMuXG4gKi9cblxuLyoqIFNjb3BlIHJvb3RzIGEgcGx1Z2luIHRlbXBsYXRlIG1heSByZWZlcmVuY2UuICovXG5leHBvcnQgY29uc3QgUExVR0lOX1RFTVBMQVRFX1NDT1BFX1JPT1RTID0gWydwaXBlbGluZScsICdwbHVnaW4nLCAnZW52J10gYXMgY29uc3Q7XG5cbi8qKiBTcGVjIGZpZWxkcyB3aG9zZSBzdHJpbmdzIG1heSBjYXJyeSBge3sgLi4uIH19YCB0ZW1wbGF0ZXMuICovXG5leHBvcnQgY29uc3QgUExVR0lOX1RFTVBMQVRBQkxFX0ZJRUxEUyA9IFsnZGVzY3JpcHRpb24nLCAnY29tbWFuZHMnLCAnaW5zdGFsbENvbW1hbmRzJywgJ2VudicsICdidWlsZEFyZ3MnXSBhcyBjb25zdDtcblxuLyoqIFRydWUgd2hlbiBhIHdhbGtlZCBmaWVsZCBwYXRoIChgY29tbWFuZHNbMl1gLCBgZW52LlNUQUdFYCkgaXMgdGVtcGxhdGFibGUuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQbHVnaW5UZW1wbGF0YWJsZUZpZWxkKGZpZWxkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIFBMVUdJTl9URU1QTEFUQUJMRV9GSUVMRFMuc29tZSgoZikgPT4gZmllbGQgPT09IGYgfHwgZmllbGQuc3RhcnRzV2l0aChgJHtmfVtgKSB8fCBmaWVsZC5zdGFydHNXaXRoKGAke2Z9LmApKTtcbn1cblxuLyoqIFRoZSBzbGljZSBvZiBwaXBlbGluZS1jb3JlJ3MgdGVtcGxhdGUgZW5naW5lIHRoaXMgY2hlY2sgdXNlcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luVGVtcGxhdGVFbmdpbmUge1xuICBhbGxvd2VkU2NvcGVSb290cyhyb290czogc3RyaW5nW10pOiAocGF0aDogc3RyaW5nW10pID0+IGJvb2xlYW47XG4gIHZhbGlkYXRlVGVtcGxhdGVzKFxuICAgIGRvYzogb2JqZWN0LFxuICAgIGlzVGVtcGxhdGFibGU6IChmaWVsZDogc3RyaW5nKSA9PiBib29sZWFuLFxuICAgIGlzS25vd25QYXRoOiAocGF0aDogc3RyaW5nW10pID0+IGJvb2xlYW4sXG4gICk6IHsgZXJyb3JzOiBSZWFkb25seUFycmF5PHsgZmllbGQ6IHN0cmluZzsgbGluZT86IG51bWJlcjsgY29sPzogbnVtYmVyOyBtZXNzYWdlOiBzdHJpbmcgfT4gfTtcbiAgdG9rZW5pemUoc291cmNlOiBzdHJpbmcpOiBSZWFkb25seUFycmF5PHsga2luZDogc3RyaW5nOyBwYXRoPzogc3RyaW5nW107IGRlZmF1bHRWYWx1ZT86IHN0cmluZzsgY29lcmNlPzogc3RyaW5nIH0+O1xufVxuXG4vKipcbiAqIE9uZSB0ZW1wbGF0ZS1jb250cmFjdCBwcm9ibGVtLlxuICogLSBgdGVtcGxhdGVgOiBhIHBhcnNlIGVycm9yLCB1bmtub3duIHNjb3BlIHJvb3Qgb3IgcmVzZXJ2ZWQgYHNlY3JldHMuKmAgcGF0aC5cbiAqIC0gYHVuZGVjbGFyZWRgOiBge3sgcGlwZWxpbmUubWV0YWRhdGEuWCB9fWAgLyBge3sgcGlwZWxpbmUudmFycy5YIH19YCB3aXRob3V0XG4gKiAgIGBYYCBpbiBgcmVxdWlyZWRNZXRhZGF0YWAgLyBgcmVxdWlyZWRWYXJzYCAoYW5kIG5vIGB8IGRlZmF1bHQ6YCkuXG4gKiAtIGB0eXBlLW1pc21hdGNoYDogYSBgfCBudW1iZXJ8Ym9vbHxqc29uYCBmaWx0ZXIgd2hvc2UgZGVjbGFyZWQgdHlwZSBkaWZmZXJzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpblRlbXBsYXRlSXNzdWUge1xuICBraW5kOiAndGVtcGxhdGUnIHwgJ3VuZGVjbGFyZWQnIHwgJ3R5cGUtbWlzbWF0Y2gnO1xuICAvKiogVGhlIHNwZWMgZmllbGQgKGBjb21tYW5kc1swXWApIGZvciBgdGVtcGxhdGVgIGlzc3VlczsgdGhlIHNjb3BlIHBhdGggb3RoZXJ3aXNlLiAqL1xuICBmaWVsZDogc3RyaW5nO1xuICBsaW5lPzogbnVtYmVyO1xuICBjb2w/OiBudW1iZXI7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuY29uc3QgQ09FUkNFX1RPX1RZUEU6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0geyBudW1iZXI6ICdudW1iZXInLCBib29sOiAnYm9vbCcsIGpzb246ICdqc29uJyB9O1xuXG5jb25zdCBzdHJpbmdMaXN0ID0gKHY6IHVua25vd24pOiBzdHJpbmdbXSA9PlxuICAoQXJyYXkuaXNBcnJheSh2KSA/IHYuZmlsdGVyKCh4KTogeCBpcyBzdHJpbmcgPT4gdHlwZW9mIHggPT09ICdzdHJpbmcnKSA6IFtdKTtcbmNvbnN0IHN0cmluZ1ZhbHVlcyA9ICh2OiB1bmtub3duKTogc3RyaW5nW10gPT5cbiAgKHYgJiYgdHlwZW9mIHYgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHYpXG4gICAgPyBPYmplY3QudmFsdWVzKHYgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pLmZpbHRlcigoeCk6IHggaXMgc3RyaW5nID0+IHR5cGVvZiB4ID09PSAnc3RyaW5nJylcbiAgICA6IFtdKTtcbmNvbnN0IHN0cmluZ01hcCA9ICh2OiB1bmtub3duKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9PlxuICAodiAmJiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodikgPyB2IGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4gOiB7fSk7XG5cbi8qKlxuICogRXZlcnkgYHt7IC4uLiB9fWAgcHJvYmxlbSBpbiBhIHBsdWdpbiBzcGVjOiBwYXJzZSBlcnJvcnMgYW5kIHNjb3BlIHJvb3RzXG4gKiAob25seSBgcGlwZWxpbmVgLCBgcGx1Z2luYCwgYGVudmA7IGBzZWNyZXRzYCBpcyByZXNlcnZlZCksIHRoZW4gcGVyXG4gKiBge3sgcGlwZWxpbmUubWV0YWRhdGEuWCB9fWAgLyBge3sgcGlwZWxpbmUudmFycy5YIH19YCByZWZlcmVuY2UgKGEpIHRoYXQgYFhgXG4gKiBpcyBkZWNsYXJlZCBpbiBgcmVxdWlyZWRNZXRhZGF0YWAgLyBgcmVxdWlyZWRWYXJzYCB1bmxlc3MgaXQgaGFzIGFcbiAqIGB8IGRlZmF1bHQ6YCwgYW5kIChiKSB0aGF0IGEgY29lcmNpb24gZmlsdGVyIG1hdGNoZXMgdGhlIGRlY2xhcmVkIHR5cGUgaW5cbiAqIGBtZXRhZGF0YVR5cGVzYCAvIGB2YXJzVHlwZXNgICh1bmRlY2xhcmVkID0gYHN0cmluZ2A7IGBib29sZWFuYCA9IGBib29sYCkuXG4gKlxuICogVGFrZXMgdGhlIHJhdyBzcGVjIG9iamVjdCwgc28gYSBzcGVjIHRoYXQgZmFpbGVkIHRoZSBzY2hlbWEgaXMgc3RpbGwgY2hlY2tlZC5cbiAqIElzc3VlcyBhcmUgZGUtZHVwbGljYXRlZDsgYW4gZW1wdHkgYXJyYXkgbWVhbnMgdGhlIHNwZWMgcGFzc2VzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tQbHVnaW5UZW1wbGF0ZXMoc3BlYzogb2JqZWN0LCBlbmdpbmU6IFBsdWdpblRlbXBsYXRlRW5naW5lKTogUGx1Z2luVGVtcGxhdGVJc3N1ZVtdIHtcbiAgY29uc3QgcyA9IHNwZWMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IGRvYyA9IHtcbiAgICBkZXNjcmlwdGlvbjogcy5kZXNjcmlwdGlvbixcbiAgICBjb21tYW5kczogcy5jb21tYW5kcyxcbiAgICBpbnN0YWxsQ29tbWFuZHM6IHMuaW5zdGFsbENvbW1hbmRzLFxuICAgIGVudjogcy5lbnYsXG4gICAgYnVpbGRBcmdzOiBzLmJ1aWxkQXJncyxcbiAgfTtcbiAgY29uc3QgaXNzdWVzOiBQbHVnaW5UZW1wbGF0ZUlzc3VlW10gPSBbXTtcblxuICBjb25zdCB7IGVycm9ycyB9ID0gZW5naW5lLnZhbGlkYXRlVGVtcGxhdGVzKGRvYywgaXNQbHVnaW5UZW1wbGF0YWJsZUZpZWxkLCBlbmdpbmUuYWxsb3dlZFNjb3BlUm9vdHMoWy4uLlBMVUdJTl9URU1QTEFURV9TQ09QRV9ST09UU10pKTtcbiAgZm9yIChjb25zdCBlIG9mIGVycm9ycykge1xuICAgIGlzc3Vlcy5wdXNoKHsga2luZDogJ3RlbXBsYXRlJywgZmllbGQ6IGUuZmllbGQsIC4uLihlLmxpbmUgIT09IHVuZGVmaW5lZCAmJiB7IGxpbmU6IGUubGluZSwgY29sOiBlLmNvbCB9KSwgbWVzc2FnZTogZS5tZXNzYWdlIH0pO1xuICB9XG5cbiAgY29uc3QgcmVxdWlyZWQgPSB7IG1ldGFkYXRhOiBuZXcgU2V0KHN0cmluZ0xpc3Qocy5yZXF1aXJlZE1ldGFkYXRhKSksIHZhcnM6IG5ldyBTZXQoc3RyaW5nTGlzdChzLnJlcXVpcmVkVmFycykpIH07XG4gIGNvbnN0IHR5cGVzID0geyBtZXRhZGF0YTogc3RyaW5nTWFwKHMubWV0YWRhdGFUeXBlcyksIHZhcnM6IHN0cmluZ01hcChzLnZhcnNUeXBlcykgfTtcbiAgY29uc3Qgc291cmNlcyA9IFtcbiAgICAuLi4odHlwZW9mIHMuZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnID8gW3MuZGVzY3JpcHRpb25dIDogW10pLFxuICAgIC4uLnN0cmluZ0xpc3Qocy5jb21tYW5kcyksIC4uLnN0cmluZ0xpc3Qocy5pbnN0YWxsQ29tbWFuZHMpLCAuLi5zdHJpbmdWYWx1ZXMocy5lbnYpLCAuLi5zdHJpbmdWYWx1ZXMocy5idWlsZEFyZ3MpLFxuICBdO1xuICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGNvbnN0IGFkZCA9IChpc3N1ZTogUGx1Z2luVGVtcGxhdGVJc3N1ZSkgPT4ge1xuICAgIGNvbnN0IGtleSA9IGAke2lzc3VlLmtpbmR9XFx1MDAwMCR7aXNzdWUubWVzc2FnZX1gO1xuICAgIGlmICghc2Vlbi5oYXMoa2V5KSkgeyBzZWVuLmFkZChrZXkpOyBpc3N1ZXMucHVzaChpc3N1ZSk7IH1cbiAgfTtcblxuICBmb3IgKGNvbnN0IHNvdXJjZSBvZiBzb3VyY2VzKSB7XG4gICAgaWYgKCFzb3VyY2UuaW5jbHVkZXMoJ3t7JykpIGNvbnRpbnVlO1xuICAgIGxldCB0b2tlbnM7XG4gICAgdHJ5IHsgdG9rZW5zID0gZW5naW5lLnRva2VuaXplKHNvdXJjZSk7IH0gY2F0Y2ggeyBjb250aW51ZTsgLyogcmVwb3J0ZWQgYXMgYSBgdGVtcGxhdGVgIGlzc3VlIGFib3ZlICovIH1cbiAgICBmb3IgKGNvbnN0IHQgb2YgdG9rZW5zKSB7XG4gICAgICBpZiAodC5raW5kICE9PSAnZXhwcicgfHwgIXQucGF0aCkgY29udGludWU7XG4gICAgICBjb25zdCBbcm9vdCwgc3ViLCBrZXldID0gdC5wYXRoO1xuICAgICAgaWYgKHJvb3QgIT09ICdwaXBlbGluZScgfHwgKHN1YiAhPT0gJ21ldGFkYXRhJyAmJiBzdWIgIT09ICd2YXJzJykgfHwgIWtleSkgY29udGludWU7XG4gICAgICBjb25zdCBzY29wZVBhdGggPSBgcGlwZWxpbmUuJHtzdWJ9LiR7a2V5fWA7XG4gICAgICBjb25zdCBkZWNsYXJlZEluID0gc3ViID09PSAnbWV0YWRhdGEnID8gJ3JlcXVpcmVkTWV0YWRhdGEnIDogJ3JlcXVpcmVkVmFycyc7XG4gICAgICBjb25zdCB0eXBlc0luID0gc3ViID09PSAnbWV0YWRhdGEnID8gJ21ldGFkYXRhVHlwZXMnIDogJ3ZhcnNUeXBlcyc7XG5cbiAgICAgIGlmICh0LmRlZmF1bHRWYWx1ZSA9PT0gdW5kZWZpbmVkICYmICFyZXF1aXJlZFtzdWJdLmhhcyhrZXkpKSB7XG4gICAgICAgIGFkZCh7IGtpbmQ6ICd1bmRlY2xhcmVkJywgZmllbGQ6IHNjb3BlUGF0aCwgbWVzc2FnZTogYCR7c2NvcGVQYXRofSBpcyBub3QgZGVjbGFyZWQgaW4gJyR7ZGVjbGFyZWRJbn0nIChkZWNsYXJlIGl0LCBvciBhZGQgJ3wgZGVmYXVsdDogLi4uJylgIH0pO1xuICAgICAgfVxuICAgICAgY29uc3QgZXhwZWN0ZWQgPSB0LmNvZXJjZSA/IENPRVJDRV9UT19UWVBFW3QuY29lcmNlXSA6IHVuZGVmaW5lZDtcbiAgICAgIGlmIChleHBlY3RlZCkge1xuICAgICAgICAvLyBTaGlwcGVkIHNwZWNzIHNwZWxsIHRoZSBib29sZWFuIHR5cGUgYm90aCBgYm9vbGAgYW5kIGBib29sZWFuYDsgdGhlXG4gICAgICAgIC8vIHN0b3JlZCBjb250cmFjdCAoYW5kIHRoZSBmaWx0ZXIpIHVzZSBgYm9vbGAuXG4gICAgICAgIGNvbnN0IHJhdyA9IHR5cGVzW3N1Yl1ba2V5XSA/PyAnc3RyaW5nJztcbiAgICAgICAgY29uc3QgZGVjbGFyZWQgPSByYXcgPT09ICdib29sZWFuJyA/ICdib29sJyA6IHJhdztcbiAgICAgICAgaWYgKGRlY2xhcmVkICE9PSBleHBlY3RlZCkge1xuICAgICAgICAgIGFkZCh7XG4gICAgICAgICAgICBraW5kOiAndHlwZS1taXNtYXRjaCcsXG4gICAgICAgICAgICBmaWVsZDogc2NvcGVQYXRoLFxuICAgICAgICAgICAgbWVzc2FnZTogYCR7c2NvcGVQYXRofSB1c2VzICd8ICR7dC5jb2VyY2V9JyBidXQgZGVjbGFyZWQgdHlwZSBpcyAnJHtkZWNsYXJlZH0nIChhZGQgJyR7a2V5fTogJHtleHBlY3RlZH0nIHRvICR7dHlwZXNJbn0pYCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gaXNzdWVzO1xufVxuXG4vKiogT25lIGxpbmUgcGVyIGlzc3VlOiBgW2NvbW1hbmRzWzBdOjE6NV0gbWVzc2FnZWAgZm9yIHRlbXBsYXRlIGlzc3VlcywgdGhlIG1lc3NhZ2Ugb3RoZXJ3aXNlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFBsdWdpblRlbXBsYXRlSXNzdWUoaXNzdWU6IFBsdWdpblRlbXBsYXRlSXNzdWUpOiBzdHJpbmcge1xuICBpZiAoaXNzdWUua2luZCAhPT0gJ3RlbXBsYXRlJykgcmV0dXJuIGlzc3VlLm1lc3NhZ2U7XG4gIHJldHVybiBgWyR7aXNzdWUuZmllbGR9JHtpc3N1ZS5saW5lICE9PSB1bmRlZmluZWQgPyBgOiR7aXNzdWUubGluZX06JHtpc3N1ZS5jb2x9YCA6ICcnfV0gJHtpc3N1ZS5tZXNzYWdlfWA7XG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pipeline-builder/api-core",
3
- "description": "Core server-side utilities (auth middleware, response helpers, error codes, quota service, HTTP client, logging, AI provider catalog) shared by every Pipeline Builder backend service.",
3
+ "description": "Auth, permissions, responses and quota helpers shared by every Pipeline Builder service.",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/mwashburn160/pipeline-builder.git"
@@ -13,7 +13,7 @@
13
13
  "@types/node": "^26",
14
14
  "@typescript-eslint/eslint-plugin": "^8",
15
15
  "@typescript-eslint/parser": "^8",
16
- "@typescript/native": "npm:typescript@^7.0.2",
16
+ "@typescript/native": "npm:typescript@7.1.0-beta",
17
17
  "eslint": "^9",
18
18
  "eslint-import-resolver-typescript": "^4.4.5",
19
19
  "eslint-plugin-import": "^2.32.0",
@@ -121,10 +121,13 @@
121
121
  ],
122
122
  "usage-projection": [
123
123
  "lib/types/usage-projection.d.ts"
124
+ ],
125
+ "tier-limits": [
126
+ "lib/types/tier-limits.d.ts"
124
127
  ]
125
128
  }
126
129
  },
127
- "version": "5.2.6",
130
+ "version": "5.2.8",
128
131
  "bugs": {
129
132
  "url": "https://github.com/mwashburn160/pipeline-builder/issues"
130
133
  },
@@ -213,7 +216,7 @@
213
216
  "global": {
214
217
  "statements": 95,
215
218
  "branches": 91,
216
- "functions": 91,
219
+ "functions": 92,
217
220
  "lines": 95
218
221
  },
219
222
  "**/src/utils/audit.ts": {
@@ -271,6 +274,10 @@
271
274
  "types": "./lib/types/usage-projection.d.ts",
272
275
  "default": "./lib/types/usage-projection.js"
273
276
  },
277
+ "./tier-limits": {
278
+ "types": "./lib/types/tier-limits.d.ts",
279
+ "default": "./lib/types/tier-limits.js"
280
+ },
274
281
  "./testing": {
275
282
  "types": "./lib/testing/index.d.ts",
276
283
  "default": "./lib/testing/index.js"