@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.
- package/lib/constants/ai-providers.js +1 -1
- package/lib/constants/http-status.js +1 -1
- package/lib/constants/index.js +1 -1
- package/lib/constants/time.js +1 -1
- package/lib/errors/app-errors.js +1 -1
- package/lib/errors/index.js +1 -1
- package/lib/helpers/access-helpers.d.ts +19 -0
- package/lib/helpers/access-helpers.js +24 -4
- package/lib/helpers/content-disposition.js +1 -1
- package/lib/helpers/crud-helpers.js +1 -1
- package/lib/helpers/index.d.ts +1 -1
- package/lib/helpers/index.js +2 -2
- package/lib/helpers/org-hierarchy-http.js +1 -1
- package/lib/helpers/org-hierarchy.js +1 -1
- package/lib/helpers/restore-helpers.js +1 -1
- package/lib/helpers/sse-helpers.js +13 -2
- package/lib/helpers/support-calendar.js +1 -1
- package/lib/index.js +1 -1
- package/lib/middleware/ask-provenance.js +1 -1
- package/lib/middleware/assurance.js +1 -1
- package/lib/middleware/auth.js +3 -2
- package/lib/middleware/client-version.d.ts +45 -0
- package/lib/middleware/client-version.js +97 -0
- package/lib/middleware/deferred-quota-check.js +1 -1
- package/lib/middleware/ecosystem-guard.js +1 -1
- package/lib/middleware/index.d.ts +1 -0
- package/lib/middleware/index.js +2 -1
- package/lib/middleware/jwt-verify.js +1 -1
- package/lib/middleware/mongo-sanitize.js +1 -1
- package/lib/middleware/on-behalf.js +1 -1
- package/lib/middleware/permission-gates.js +1 -1
- package/lib/middleware/quota-exempt-routes.js +1 -1
- package/lib/middleware/revocation.js +1 -1
- package/lib/middleware/route-table.js +16 -1
- package/lib/middleware/service-tokens.js +1 -1
- package/lib/middleware/step-up.js +1 -1
- package/lib/middleware/system-org.d.ts +18 -5
- package/lib/middleware/system-org.js +19 -6
- package/lib/openapi/extend-zod.js +1 -1
- package/lib/openapi/index.js +1 -1
- package/lib/openapi/registry.js +1 -1
- package/lib/openapi/routes/ask-routes.js +1 -1
- package/lib/openapi/routes/billing-routes.js +1 -1
- package/lib/openapi/routes/image-registry-routes.js +1 -1
- package/lib/openapi/routes/index.js +1 -1
- package/lib/openapi/routes/message-routes.js +1 -1
- package/lib/openapi/routes/pipeline-routes.js +1 -1
- package/lib/openapi/routes/pipeline-template-routes.js +1 -1
- package/lib/openapi/routes/plugin-routes.js +1 -1
- package/lib/openapi/routes/quota-routes.js +1 -1
- package/lib/openapi/schema-registry.js +1 -1
- package/lib/routes/health.js +1 -1
- package/lib/routes/index.js +1 -1
- package/lib/services/ai-call-weight.js +1 -1
- package/lib/services/alert-delivery.js +1 -1
- package/lib/services/api-key-exchange.d.ts +4 -2
- package/lib/services/api-key-exchange.js +15 -8
- package/lib/services/audit-context.d.ts +3 -0
- package/lib/services/audit-context.js +2 -1
- package/lib/services/audit-spool.js +1 -1
- package/lib/services/cache-service.js +1 -1
- package/lib/services/circuit-breaker.js +1 -1
- package/lib/services/compliance-client.js +1 -1
- package/lib/services/compliance-event-subscriber.js +1 -1
- package/lib/services/durable-event-bus.js +1 -1
- package/lib/services/ecosystem-notify-client.d.ts +7 -1
- package/lib/services/ecosystem-notify-client.js +9 -3
- package/lib/services/entity-events.js +1 -1
- package/lib/services/env-redis.js +1 -1
- package/lib/services/http-client.js +19 -3
- package/lib/services/index.d.ts +1 -1
- package/lib/services/index.js +2 -2
- package/lib/services/jwks-cache.js +1 -1
- package/lib/services/leader-lock.js +1 -1
- package/lib/services/notification-channels.js +1 -1
- package/lib/services/org-ai-client.js +1 -1
- package/lib/services/pagerduty-inbound.js +1 -1
- package/lib/services/pagerduty.js +1 -1
- package/lib/services/quota-increment-batcher.js +1 -1
- package/lib/services/quota.js +1 -1
- package/lib/services/remote-audit-client.js +1 -1
- package/lib/services/retry-forever.js +1 -1
- package/lib/services/retry-strategy.js +1 -1
- package/lib/services/s3-client.js +1 -1
- package/lib/services/scheduler.js +1 -1
- package/lib/services/service-boot.js +1 -1
- package/lib/services/service-keys.js +2 -2
- package/lib/services/sse-ticket-store.js +1 -1
- package/lib/services/system-notification.js +1 -1
- package/lib/services/token-revocation.js +1 -1
- package/lib/services/version-vuln-policy.d.ts +11 -0
- package/lib/services/version-vuln-policy.js +33 -7
- package/lib/types/ai-catalog.js +1 -1
- package/lib/types/ask-proposals.d.ts +23 -0
- package/lib/types/ask-proposals.js +29 -1
- package/lib/types/audit-events.js +1 -1
- package/lib/types/build-catalog.d.ts +65 -0
- package/lib/types/build-catalog.js +95 -1
- package/lib/types/catalog-metadata.js +1 -1
- package/lib/types/common.js +1 -1
- package/lib/types/compliance-exemption.js +1 -1
- package/lib/types/ecosystem-notifications.d.ts +9 -0
- package/lib/types/ecosystem-notifications.js +15 -6
- package/lib/types/ecosystem.d.ts +1 -6
- package/lib/types/ecosystem.js +18 -5
- package/lib/types/error-codes.d.ts +3 -0
- package/lib/types/error-codes.js +6 -1
- package/lib/types/feature-flags.d.ts +17 -1
- package/lib/types/feature-flags.js +1 -1
- package/lib/types/http.js +1 -1
- package/lib/types/index.d.ts +3 -3
- package/lib/types/index.js +4 -4
- package/lib/types/metadata-keys.js +1 -1
- package/lib/types/permissions.d.ts +60 -13
- package/lib/types/permissions.js +63 -14
- package/lib/types/pipeline-template.js +1 -1
- package/lib/types/pipeline.js +1 -1
- package/lib/types/plugin-catalog.js +1 -1
- package/lib/types/plugin-health.js +1 -1
- package/lib/types/plugin-scan.d.ts +69 -0
- package/lib/types/plugin-scan.js +77 -1
- package/lib/types/quota-catalog.js +15 -2
- package/lib/types/quota-tiers.d.ts +27 -160
- package/lib/types/quota-tiers.js +47 -255
- package/lib/types/remote-audit-actions.d.ts +1 -1
- package/lib/types/remote-audit-actions.js +9 -1
- package/lib/types/reserved-tags.js +1 -1
- package/lib/types/tier-limits.d.ts +210 -0
- package/lib/types/tier-limits.js +254 -0
- package/lib/types/usage-projection.js +1 -1
- package/lib/types/visibility.js +1 -1
- package/lib/types/wire-vocabulary.d.ts +7 -0
- package/lib/types/wire-vocabulary.js +7 -1
- package/lib/utils/alias-resolver.js +1 -1
- package/lib/utils/api-key.js +1 -1
- package/lib/utils/audit.js +1 -1
- package/lib/utils/aws-scrub.js +1 -1
- package/lib/utils/compliance-attributes.js +1 -1
- package/lib/utils/concurrency-gate.d.ts +98 -0
- package/lib/utils/concurrency-gate.js +110 -0
- package/lib/utils/concurrency.js +1 -1
- package/lib/utils/crash-handlers.js +1 -1
- package/lib/utils/date.js +1 -1
- package/lib/utils/dsse.js +1 -1
- package/lib/utils/env.d.ts +11 -0
- package/lib/utils/env.js +14 -1
- package/lib/utils/headers.js +1 -1
- package/lib/utils/identity.js +1 -1
- package/lib/utils/index.d.ts +2 -0
- package/lib/utils/index.js +3 -1
- package/lib/utils/jwk.js +2 -2
- package/lib/utils/logger.js +1 -1
- package/lib/utils/metric-emitter.js +1 -1
- package/lib/utils/object.js +1 -1
- package/lib/utils/params.js +1 -1
- package/lib/utils/plugin-compliance.d.ts +9 -1
- package/lib/utils/plugin-compliance.js +1 -1
- package/lib/utils/proof-of-work.js +1 -1
- package/lib/utils/response.js +1 -1
- package/lib/utils/retention.js +1 -1
- package/lib/utils/safe-require.js +1 -1
- package/lib/utils/secret-encryption.js +1 -1
- package/lib/utils/secret-rotation.js +1 -1
- package/lib/utils/secure-compare.js +1 -1
- package/lib/utils/semver.d.ts +18 -0
- package/lib/utils/semver.js +120 -0
- package/lib/utils/sensitive-patterns.js +1 -1
- package/lib/utils/service-registry.js +1 -1
- package/lib/utils/ssrf.js +1 -1
- package/lib/validation/ai-schemas.js +1 -1
- package/lib/validation/common-schemas.js +1 -1
- package/lib/validation/dockerfile-static.js +1 -1
- package/lib/validation/index.d.ts +1 -1
- package/lib/validation/index.js +2 -2
- package/lib/validation/message-schemas.d.ts +73 -0
- package/lib/validation/message-schemas.js +63 -2
- package/lib/validation/middleware.js +1 -1
- package/lib/validation/pipeline-schemas.js +1 -1
- package/lib/validation/pipeline-template-schemas.js +1 -1
- package/lib/validation/plugin-base-images.js +1 -1
- package/lib/validation/plugin-catalog-detect.js +1 -1
- package/lib/validation/plugin-catalog-metadata.js +1 -1
- package/lib/validation/plugin-heuristics.js +1 -1
- package/lib/validation/plugin-lint.js +1 -1
- package/lib/validation/plugin-name-confusable.js +1 -1
- package/lib/validation/plugin-schemas.js +1 -1
- package/lib/validation/plugin-spec-schema.js +1 -1
- package/lib/validation/plugin-template-contract.js +1 -1
- package/package.json +11 -4
|
@@ -210,4 +210,4 @@ export function createEnvRedisAuditSpool(opts) {
|
|
|
210
210
|
// every command waits (bounded) for readiness.
|
|
211
211
|
return createRedisAuditSpool(inst, { ...opts, ready: createRedisReadyGate(inst, 10_000) });
|
|
212
212
|
}
|
|
213
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtc3Bvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvYXVkaXQtc3Bvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVwRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7QUEwRTNDOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsV0FBbUI7SUFDL0MsT0FBTyxlQUFlLFdBQVcsRUFBRSxDQUFDO0FBQ3RDLENBQUM7QUFFRCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQztBQUNqQyxzRkFBc0Y7QUFDdEYsTUFBTSxzQkFBc0IsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDO0FBQzNDLG9GQUFvRjtBQUNwRixNQUFNLG1CQUFtQixHQUFHLE9BQU8sQ0FBQztBQUVwQyxTQUFTLFNBQVMsQ0FBQyxHQUFXO0lBQzVCLElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFvQixDQUFDO1FBQ2xELE9BQU8sTUFBTSxJQUFJLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdEUsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FB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RixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QixDQUFDLElBQTJDO0lBQ2xGLE1BQU0sSUFBSSxHQUFHLG9CQUFvQixDQUFvQyxhQUFhLENBQUMsQ0FBQztJQUNwRixJQUFJLENBQUMsSUFBSTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUMsK0JBQStCLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDaEUsNEVBQTRFO0lBQzVFLDRFQUE0RTtJQUM1RSwrQ0FBK0M7SUFDL0MsT0FBTyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxLQUFLLEVBQUUsb0JBQW9CLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IHJhbmRvbVVVSUQgfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgY3JlYXRlRW52UmVkaXNDbGllbnQsIGNyZWF0ZVJlZGlzUmVhZHlHYXRlLCB0eXBlIFJlYWR5QXdhcmVSZWRpcyB9IGZyb20gJy4vZW52LXJlZGlzLmpzJztcbmltcG9ydCB0eXBlIHsgUmVtb3RlQXVkaXRFdmVudCB9IGZyb20gJy4vcmVtb3RlLWF1ZGl0LWNsaWVudC5qcyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgZW1pdENvdW50ZXIgfSBmcm9tICcuLi91dGlscy9tZXRyaWMtZW1pdHRlci5qcyc7XG5pbXBvcnQgeyBlcnJvck1lc3NhZ2UgfSBmcm9tICcuLi91dGlscy9yZXNwb25zZS5qcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignYXVkaXQtc3Bvb2wnKTtcblxuLyoqIEEgYnVmZmVyZWQgZW1pc3Npb246IHRoZSBldmVudCBwbHVzIHdoaWNoIHNlcnZpY2UgbXVzdCByZS1kZWxpdmVyIGl0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdWRpdFNwb29sRW50cnkge1xuICBldmVudDogUmVtb3RlQXVkaXRFdmVudDtcbiAgc2VydmljZU5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBEdXJhYmxlIGJ1ZmZlciBmb3IgYXVkaXQgZXZlbnRzIHRoYXQgZmFpbGVkIExJVkUgZGVsaXZlcnkgdG8gdGhlIHBsYXRmb3JtXG4gKiAocmV0cmllcyBleGhhdXN0ZWQgZHVyaW5nIGEgc3VzdGFpbmVkIG91dGFnZSkuIFdpdGhvdXQgdGhpcywgdGhlIGF1ZGl0IHRyYWlsIOKAlFxuICogYSBzZWN1cml0eSBsb2cg4oCUIGlzIHNpbGVudGx5IGxvc3QgdGhlIG1vbWVudCB0aGUgcGxhdGZvcm0gaXMgZG93biBmb3IgbG9uZ2VyXG4gKiB0aGFuIHRoZSBjbGllbnQncyBzbWFsbCByZXRyeSBidWRnZXQuXG4gKlxuICogQ29udHJhY3Q6XG4gKiAtIEJPVU5ERUQuIEEgc2VjdXJpdHkgbG9nIG11c3QgZGVncmFkZSB0byBcImRyb3BwZWQgdGhlIG9sZGVzdCwgbG91ZGx5XCIgKGFcbiAqICAgbWV0cmljKSByYXRoZXIgdGhhbiBncm93IHdpdGhvdXQgbGltaXQgYW5kIE9PTSB0aGUgZW1pdHRlci5cbiAqIC0gRkFJTC1TQUZFLiBFdmVyeSBtZXRob2Qgc3dhbGxvd3MgaXRzIG93biBlcnJvcnMg4oCUIGEgYnJva2VuL3VucmVhY2hhYmxlIHNwb29sXG4gKiAgIG11c3QgbmV2ZXIgYnJlYWsgb3IgYmxvY2sgdGhlIGF1ZGl0IGVtaXNzaW9uIHBhdGggKHdoaWNoIGlzIGl0c2VsZlxuICogICBmaXJlLWFuZC1mb3JnZXQpLiBBIHNwb29sIHByb2JsZW0gZGVncmFkZXMgdG8gdGhlIHByZS1zcG9vbCBiZWhhdmlvci5cbiAqIC0gT3JkZXJpbmcgaXMgYmVzdC1lZmZvcnQuIFJlLWRlbGl2ZXJlZCBldmVudHMgY2hhaW4gYXQgcmUtZGVsaXZlcnkgdGltZVxuICogICAodGhhdCdzIHdoZW4gdGhlIHBsYXRmb3JtIGluc2VydHMgdGhlbSksIHNvIGVhY2ggZXZlbnQgYWxzbyBjYXJyaWVzIGFuXG4gKiAgIGBvY2N1cnJlZEF0YCBzdGFtcGVkIGF0IGVtaXNzaW9uIGZvciByZXZpZXdlcnMg4oCUIHNlZSBSZW1vdGVBdWRpdEV2ZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1ZGl0U3Bvb2wge1xuICAvKiogQnVmZmVyIGFuIGV2ZW50IHRoYXQgZmFpbGVkIGxpdmUgZGVsaXZlcnkuICovXG4gIGVucXVldWUoZW50cnk6IEF1ZGl0U3Bvb2xFbnRyeSk6IFByb21pc2U8dm9pZD47XG4gIC8qKlxuICAgKiBBdG9taWNhbGx5IE1PVkUgdXAgdG8gYG1heGAgYnVmZmVyZWQgZW50cmllcyBvbnRvIGFuIGluLXByb2dyZXNzIGxpc3QgYW5kXG4gICAqIHJldHVybiB0aGVtLiBCZWNhdXNlIHRoZSBlbnRyaWVzIGFyZSBtb3ZlZCAobm90IHBvcHBlZC1hbmQtZHJvcHBlZCksIGEgY3Jhc2hcbiAgICogbWlkLWRyYWluIGxlYXZlcyB0aGVtIHJlY292ZXJhYmxlIG9uIHRoZSBpbi1wcm9ncmVzcyBsaXN0IOKAlCBzZWUgYHJlY292ZXJgLlxuICAgKiBFYWNoIHRha2VuIGVudHJ5IE1VU1QgYmUgcmVzb2x2ZWQgd2l0aCBleGFjdGx5IG9uZSBvZiBgYWNrYCAoZGVsaXZlcmVkKSBvclxuICAgKiBgcmVxdWV1ZWAgKHN0aWxsIGZhaWxpbmcpLCBvciBpdCBsaW5nZXJzIG9uIHRoZSBpbi1wcm9ncmVzcyBsaXN0IHVudGlsIHRoZVxuICAgKiBuZXh0IGByZWNvdmVyYC5cbiAgICovXG4gIHRha2UobWF4OiBudW1iZXIpOiBQcm9taXNlPEF1ZGl0U3Bvb2xFbnRyeVtdPjtcbiAgLyoqIEFja25vd2xlZGdlIHN1Y2Nlc3NmdWxseSByZS1kZWxpdmVyZWQgZW50cmllcyDigJQgcmVtb3ZlcyB0aGVtIGZyb20gdGhlXG4gICAqICBpbi1wcm9ncmVzcyBsaXN0IHNvIHRoZXkgYXJlIG5vdCByZWNvdmVyZWQgYWdhaW4uICovXG4gIGFjayhlbnRyaWVzOiBBdWRpdFNwb29sRW50cnlbXSk6IFByb21pc2U8dm9pZD47XG4gIC8qKiBSZXR1cm4gZW50cmllcyB3aG9zZSByZS1kZWxpdmVyeSBmYWlsZWQgdG8gdGhlIEhFQUQgb2YgdGhlIGJ1ZmZlciAocmV0cmllZFxuICAgKiAgZmlyc3QpIGFuZCBjbGVhciB0aGVtIGZyb20gdGhlIGluLXByb2dyZXNzIGxpc3QuIEJlc3QtZWZmb3J0LiAqL1xuICByZXF1ZXVlKGVudHJpZXM6IEF1ZGl0U3Bvb2xFbnRyeVtdKTogUHJvbWlzZTx2b2lkPjtcbiAgLyoqXG4gICAqIFJlY2xhaW0gZW50cmllcyBzdHJhbmRlZCBvbiBBQkFORE9ORUQgaW4tcHJvZ3Jlc3MgbGlzdHMg4oCUIHRob3NlIG9mIG93bmVyc1xuICAgKiAoc3Bvb2wgaW5zdGFuY2VzLCBpLmUuIHBvZHMpIHdob3NlIGhlYXJ0YmVhdCBpcyBvbGRlciB0aGFuIHRoZSBzdGFsZVxuICAgKiB0aHJlc2hvbGQg4oCUIG1vdmluZyB0aGVtIGJhY2sgdG8gdGhlIGhlYWQgb2YgdGhlIG1haW4gYnVmZmVyLiBBIExJVkUgb3duZXInc1xuICAgKiBpbi1mbGlnaHQgYmF0Y2ggaXMgbmV2ZXIgdG91Y2hlZCwgc28gYSBwZWVyJ3MgcmVjb3ZlciBjYW4ndCBkdXBsaWNhdGUgd29ya1xuICAgKiB0aGF0IG93bmVyIGlzIHN0aWxsIGRlbGl2ZXJpbmcuIFNhZmUgdG8gY2FsbCBwZXJpb2RpY2FsbHk7IHJldHVybnMgdGhlXG4gICAqIG51bWJlciByZWNsYWltZWQuXG4gICAqL1xuICByZWNvdmVyKCk6IFByb21pc2U8bnVtYmVyPjtcbiAgLyoqIE1hcmsgdGhpcyBvd25lciBhbGl2ZSAoc28gbm8gcGVlciByZWNsYWltcyBpdHMgaW4tZmxpZ2h0IGJhdGNoKS4gKi9cbiAgaGVhcnRiZWF0KCk6IFByb21pc2U8dm9pZD47XG4gIC8qKiBBcHByb3hpbWF0ZSBjdXJyZW50IGRlcHRoIChmb3IgbWV0cmljcyAvIGRyYWluIGRlY2lzaW9ucykuICovXG4gIGRlcHRoKCk6IFByb21pc2U8bnVtYmVyPjtcbn1cblxuLyoqIE1pbmltYWwgUmVkaXMgTElTVCBzdXJmYWNlIHRoZSBzcG9vbCBuZWVkcyAoYSBzdWJzZXQgb2YgaW9yZWRpcykuICovXG5pbnRlcmZhY2UgUmVkaXNMaXN0Q2xpZW50IHtcbiAgcnB1c2goa2V5OiBzdHJpbmcsIC4uLnZhbHVlczogc3RyaW5nW10pOiBQcm9taXNlPG51bWJlcj47XG4gIGxwdXNoKGtleTogc3RyaW5nLCAuLi52YWx1ZXM6IHN0cmluZ1tdKTogUHJvbWlzZTxudW1iZXI+O1xuICBscG9wKGtleTogc3RyaW5nLCBjb3VudDogbnVtYmVyKTogUHJvbWlzZTxzdHJpbmdbXSB8IG51bGw+O1xuICBsdHJpbShrZXk6IHN0cmluZywgc3RhcnQ6IG51bWJlciwgc3RvcDogbnVtYmVyKTogUHJvbWlzZTx1bmtub3duPjtcbiAgbGxlbihrZXk6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPjtcbiAgLyoqIEF0b21pY2FsbHkgcG9wIGZyb20gb25lIGxpc3QgZW5kIGFuZCBwdXNoIHRvIGFub3RoZXIgKFJlZGlzIOKJpSA2LjIpLiAqL1xuICBsbW92ZShzb3VyY2U6IHN0cmluZywgZGVzdGluYXRpb246IHN0cmluZywgZnJvbTogJ0xFRlQnIHwgJ1JJR0hUJywgdG86ICdMRUZUJyB8ICdSSUdIVCcpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xuICAvKiogUmVtb3ZlIGBjb3VudGAgb2NjdXJyZW5jZXMgb2YgYHZhbHVlYCBmcm9tIGEgbGlzdC4gKi9cbiAgbHJlbShrZXk6IHN0cmluZywgY291bnQ6IG51bWJlciwgdmFsdWU6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPjtcbiAgLyoqIE93bmVyIGhlYXJ0YmVhdHM6IGEgc29ydGVkIHNldCBvZiBvd25lciBpZCDihpIgbGFzdC1zZWVuIGVwb2NoIG1zLiAqL1xuICB6YWRkKGtleTogc3RyaW5nLCBzY29yZTogbnVtYmVyLCBtZW1iZXI6IHN0cmluZyk6IFByb21pc2U8dW5rbm93bj47XG4gIHpyYW5nZWJ5c2NvcmUoa2V5OiBzdHJpbmcsIG1pbjogbnVtYmVyIHwgc3RyaW5nLCBtYXg6IG51bWJlciB8IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+O1xuICB6cmVtKGtleTogc3RyaW5nLCBtZW1iZXI6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPjtcbn1cblxuLyoqXG4gKiBUaGUgc3Bvb2wga2V5IGZvciBvbmUgc2VydmljZSdzIGJ1ZmZlcmVkIGF1ZGl0IGV2ZW50cy4gUGVyIFNFUlZJQ0Ugb25cbiAqIHB1cnBvc2U6IHJlLWRlbGl2ZXJ5IG1pbnRzIGEgc2VydmljZSB0b2tlbiBhcyBgZW50cnkuc2VydmljZU5hbWVgLCB3aGljaCBvbmx5XG4gKiB0aGF0IHNlcnZpY2UncyBwb2RzIGNhbiBzaWduIChwZXItc2VydmljZSBrZXlzKS4gQSBzaGFyZWQga2V5IGxldCBhIHBvZCBvZlxuICogb25lIHNlcnZpY2UgdGFrZSBhbm90aGVyJ3MgZW50cmllcywgZmFpbCB0byBzaWduIGZvciB0aGVtLCBhbmQgcmVxdWV1ZSB0aGVtXG4gKiBmb3JldmVyIOKAlCB3aGlsZSB0aGF0IHNlcnZpY2UncyBvd24gcG9kcyBuZXZlciBzYXcgdGhlbS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGF1ZGl0U3Bvb2xLZXkoc2VydmljZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgYXVkaXQ6c3Bvb2w6JHtzZXJ2aWNlTmFtZX1gO1xufVxuXG5jb25zdCBERUZBVUxUX01BWF9ERVBUSCA9IDEwXzAwMDtcbi8qKiBBbiBvd25lciB3aG9zZSBoZWFydGJlYXQgaXMgb2xkZXIgdGhhbiB0aGlzIGlzIHByZXN1bWVkIGRlYWQgKGl0cyBwb2QgY3Jhc2hlZCkuICovXG5jb25zdCBERUZBVUxUX1NUQUxFX09XTkVSX01TID0gMTAgKiA2MF8wMDA7XG4vKiogR3VhcmQgc28gYSBwYXRob2xvZ2ljYWwgaW4tcHJvZ3Jlc3MgbGlzdCBjYW4ndCBzcGluIGByZWNvdmVyYC9gdGFrZWAgZm9yZXZlci4gKi9cbmNvbnN0IE1BWF9NT1ZFX0lURVJBVElPTlMgPSAxMDBfMDAwO1xuXG5mdW5jdGlvbiBzYWZlUGFyc2UocmF3OiBzdHJpbmcpOiBBdWRpdFNwb29sRW50cnkgfCBudWxsIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHJhdykgYXMgQXVkaXRTcG9vbEVudHJ5O1xuICAgIHJldHVybiBwYXJzZWQgJiYgcGFyc2VkLmV2ZW50ICYmIHBhcnNlZC5zZXJ2aWNlTmFtZSA/IHBhcnNlZCA6IG51bGw7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKlxuICogUmVkaXMtTElTVC1iYWNrZWQgc3Bvb2wuIER1cmFibGUgYWNyb3NzIHByb2Nlc3MgcmVzdGFydHMgKHVubGlrZSBhbiBpbi1tZW1vcnlcbiAqIG9yIHBlci1wb2QtZGlzayBidWZmZXIpLCBzaGFyZWQgYnkgYWxsIHJlcGxpY2FzIG9mIGEgc2VydmljZSwgYW5kIGJvdW5kZWQgdmlhXG4gKiBhIHRyaW0tdG8tdGFpbCBvbiBvdmVyZmxvdyAoZHJvcHMgdGhlIE9MREVTVCwgZW1pdHRpbmcgYGF1ZGl0X3Nwb29sX2Ryb3BwZWRfdG90YWxgKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWRpc0F1ZGl0U3Bvb2xPcHRpb25zIHtcbiAgLyoqIFRoZSBidWZmZXIncyBSZWRpcyBrZXkg4oCUIG9uZSBwZXIgc2VydmljZSAoe0BsaW5rIGF1ZGl0U3Bvb2xLZXl9KS4gKi9cbiAga2V5OiBzdHJpbmc7XG4gIG1heERlcHRoPzogbnVtYmVyO1xuICAvKiogVGhpcyBpbnN0YW5jZSdzIG93bmVyIGlkIChkZWZhdWx0OiByYW5kb20gcGVyIGluc3RhbmNlKS4gKi9cbiAgb3duZXJJZD86IHN0cmluZztcbiAgLyoqIEhlYXJ0YmVhdCBhZ2UgYWZ0ZXIgd2hpY2ggYW4gb3duZXIncyBpbi1mbGlnaHQgYmF0Y2ggaXMgcmVjbGFpbWFibGUuICovXG4gIHN0YWxlT3duZXJNcz86IG51bWJlcjtcbiAgLyoqIEF3YWl0ZWQgYmVmb3JlIGVhY2ggY29tbWFuZCDigJQgZS5nLiBhIHJlYWRpbmVzcyBnYXRlIGZvciBhIGxhemlseSBjb25uZWN0aW5nIGNsaWVudC4gKi9cbiAgcmVhZHk/OiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVkaXNBdWRpdFNwb29sKHJlZGlzOiBSZWRpc0xpc3RDbGllbnQsIG9wdHM6IFJlZGlzQXVkaXRTcG9vbE9wdGlvbnMpOiBBdWRpdFNwb29sIHtcbiAgY29uc3Qga2V5ID0gb3B0cy5rZXk7XG4gIGNvbnN0IG93bmVySWQgPSBvcHRzLm93bmVySWQgPz8gcmFuZG9tVVVJRCgpO1xuICBjb25zdCBzdGFsZU93bmVyTXMgPSBNYXRoLm1heCgxLCBvcHRzLnN0YWxlT3duZXJNcyA/PyBERUZBVUxUX1NUQUxFX09XTkVSX01TKTtcbiAgY29uc3QgcmVhZHkgPSBvcHRzLnJlYWR5ID8/ICgoKSA9PiBQcm9taXNlLnJlc29sdmUoKSk7XG4gIC8vIFBFUi1PV05FUiBpbi1wcm9ncmVzcyBsaXN0IOKAlCBhIHRha2VuIGJhdGNoIGxpdmVzIGhlcmUgdW50aWwgaXQgaXMgYWNrZWRcbiAgLy8gKGRlbGl2ZXJlZCkgb3IgcmVxdWV1ZWQgKHN0aWxsIGZhaWxpbmcpLiBJdCBpcyBhIHNlY3VyaXR5IGxvZydzIGR1cmFiaWxpdHlcbiAgLy8gbmV0OiBhIGNyYXNoIGJldHdlZW4gdGFrZSBhbmQgYWNrL3JlcXVldWUgbGVhdmVzIHRoZSBiYXRjaCBoZXJlLCBhbmQgYSBwZWVyJ3NcbiAgLy8gKG9yIHRoaXMgcG9kJ3Mgc3VjY2Vzc29yJ3MpIGByZWNvdmVyYCByZWNsYWltcyBpdCBvbmNlIHRoZSBvd25lcidzIGhlYXJ0YmVhdFxuICAvLyBnb2VzIHN0YWxlLiBPbmUgc2hhcmVkIGluLWZsaWdodCBsaXN0IGxldCBhbnkgcmVwbGljYSdzIHN0YXJ0dXAgcmVjb3ZlclxuICAvLyBzdGVhbCBiYXRjaGVzIGl0cyBsaXZlIHNpYmxpbmdzIHdlcmUgbWlkLXdheSB0aHJvdWdoIGRlbGl2ZXJpbmcuXG4gIGNvbnN0IGluZmxpZ2h0S2V5T2YgPSAob3duZXI6IHN0cmluZykgPT4gYCR7a2V5fTppbmZsaWdodDoke293bmVyfWA7XG4gIGNvbnN0IGluUHJvZ3Jlc3NLZXkgPSBpbmZsaWdodEtleU9mKG93bmVySWQpO1xuICBjb25zdCBvd25lcnNLZXkgPSBgJHtrZXl9Om93bmVyc2A7XG4gIGNvbnN0IG1heERlcHRoID0gTWF0aC5tYXgoMSwgb3B0cy5tYXhEZXB0aCA/PyBERUZBVUxUX01BWF9ERVBUSCk7XG5cbiAgY29uc3QgYmVhdCA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBhd2FpdCByZWRpcy56YWRkKG93bmVyc0tleSwgRGF0ZS5ub3coKSwgb3duZXJJZCk7XG4gIH07XG5cbiAgLy8gVGhlIEVYQUNUIHNlcmlhbGl6ZWQgc3RyaW5nIGVhY2ggcmV0dXJuZWQgZW50cnkgd2FzIHBhcnNlZCBmcm9tLCBzbyBgYWNrYCAvXG4gIC8vIGByZXF1ZXVlYCBjYW4gTFJFTSB0aGUgcHJlY2lzZSB2YWx1ZSBvZmYgdGhlIGluLXByb2dyZXNzIGxpc3QuIEtleWVkIGJ5IHRoZVxuICAvLyByZXR1cm5lZCBvYmplY3QgaWRlbnRpdHkgKHRoZSBkcmFpbiBjb25zdW1lciBwYXNzZXMgdGhlIFNBTUUgb2JqZWN0cyBiYWNrKSxcbiAgLy8gc28gaXQgbmVlZHMgbm8gc3RhYmxlIHJlLXNlcmlhbGl6YXRpb24uIFdlYWtNYXAg4oaSIGVudHJpZXMgR0MgbmF0dXJhbGx5LlxuICBjb25zdCByYXdCeUVudHJ5ID0gbmV3IFdlYWtNYXA8QXVkaXRTcG9vbEVudHJ5LCBzdHJpbmc+KCk7XG4gIGNvbnN0IHJhd09mID0gKGVudHJ5OiBBdWRpdFNwb29sRW50cnkpOiBzdHJpbmcgPT4gcmF3QnlFbnRyeS5nZXQoZW50cnkpID8/IEpTT04uc3RyaW5naWZ5KGVudHJ5KTtcblxuICByZXR1cm4ge1xuICAgIGFzeW5jIGVucXVldWUoZW50cnkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHJlYWR5KCk7XG4gICAgICAgIGNvbnN0IGxlbiA9IGF3YWl0IHJlZGlzLnJwdXNoKGtleSwgSlNPTi5zdHJpbmdpZnkoZW50cnkpKTtcbiAgICAgICAgZW1pdENvdW50ZXIoJ2F1ZGl0X3Nwb29sX2VucXVldWVkX3RvdGFsJywgeyBzZXJ2aWNlOiBlbnRyeS5zZXJ2aWNlTmFtZSB9KTtcbiAgICAgICAgaWYgKGxlbiA+IG1heERlcHRoKSB7XG4gICAgICAgICAgLy8gS2VlcCBvbmx5IHRoZSBuZXdlc3QgYG1heERlcHRoYDsgZHJvcCB0aGUgb3ZlcmZsb3cgYXQgdGhlIGhlYWQuXG4gICAgICAgICAgY29uc3QgZHJvcHBlZCA9IGxlbiAtIG1heERlcHRoO1xuICAgICAgICAgIGF3YWl0IHJlZGlzLmx0cmltKGtleSwgZHJvcHBlZCwgLTEpO1xuICAgICAgICAgIGVtaXRDb3VudGVyKCdhdWRpdF9zcG9vbF9kcm9wcGVkX3RvdGFsJywgeyBzZXJ2aWNlOiBlbnRyeS5zZXJ2aWNlTmFtZSB9LCBkcm9wcGVkKTtcbiAgICAgICAgICBsb2dnZXIud2FybignQXVkaXQgc3Bvb2wgb3ZlcmZsb3cg4oCUIGRyb3BwZWQgb2xkZXN0IGJ1ZmZlcmVkIGV2ZW50cycsIHsgZHJvcHBlZCwgbWF4RGVwdGggfSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBsb2dnZXIud2FybignQXVkaXQgc3Bvb2wgZW5xdWV1ZSBmYWlsZWQgKGV2ZW50IGxvc3QpJywgeyBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFzeW5jIHRha2UobWF4KSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCByZWFkeSgpO1xuICAgICAgICBhd2FpdCBiZWF0KCk7XG4gICAgICAgIGNvbnN0IG91dDogQXVkaXRTcG9vbEVudHJ5W10gPSBbXTtcbiAgICAgICAgY29uc3QgbGltaXQgPSBNYXRoLm1heCgxLCBtYXgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbWl0OyBpKyspIHtcbiAgICAgICAgICAvLyBBdG9taWNhbGx5IE1PVkUgaGVhZOKGkmluLXByb2dyZXNzLXRhaWwgc28gdGhlIGVudHJ5IGlzIG5ldmVyIGluIGxpbWJvOlxuICAgICAgICAgIC8vIGl0IGlzIG9uIGV4YWN0bHkgb25lIGxpc3QgYXQgYWxsIHRpbWVzLCByZWNvdmVyYWJsZSBhZnRlciBhIGNyYXNoLlxuICAgICAgICAgIGNvbnN0IHJhdyA9IGF3YWl0IHJlZGlzLmxtb3ZlKGtleSwgaW5Qcm9ncmVzc0tleSwgJ0xFRlQnLCAnUklHSFQnKTtcbiAgICAgICAgICBpZiAocmF3ID09PSBudWxsIHx8IHJhdyA9PT0gdW5kZWZpbmVkKSBicmVhaztcbiAgICAgICAgICBjb25zdCBwYXJzZWQgPSBzYWZlUGFyc2UocmF3KTtcbiAgICAgICAgICBpZiAocGFyc2VkKSB7XG4gICAgICAgICAgICByYXdCeUVudHJ5LnNldChwYXJzZWQsIHJhdyk7XG4gICAgICAgICAgICBvdXQucHVzaChwYXJzZWQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBDb3JydXB0IHBheWxvYWQg4oCUIGRyb3AgaXQgb2ZmIHRoZSBpbi1wcm9ncmVzcyBsaXN0IHNvIGl0IGNhbid0IHdlZGdlXG4gICAgICAgICAgICAvLyB0aGUgZHJhaW4sIGFuZCBhY2NvdW50IGZvciBpdC5cbiAgICAgICAgICAgIGF3YWl0IHJlZGlzLmxyZW0oaW5Qcm9ncmVzc0tleSwgMSwgcmF3KTtcbiAgICAgICAgICAgIGVtaXRDb3VudGVyKCdhdWRpdF9zcG9vbF9kcm9wcGVkX3RvdGFsJywgeyBzZXJ2aWNlOiAndW5rbm93bicgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oJ0F1ZGl0IHNwb29sIHRha2UgZmFpbGVkJywgeyBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYXN5bmMgYWNrKGVudHJpZXMpIHtcbiAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgcmVhZHkoKTtcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgYXdhaXQgcmVkaXMubHJlbShpblByb2dyZXNzS2V5LCAxLCByYXdPZihlbnRyeSkpO1xuICAgICAgICAgIHJhd0J5RW50cnkuZGVsZXRlKGVudHJ5KTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKCdBdWRpdCBzcG9vbCBhY2sgZmFpbGVkIChtYXkgcmUtZGVsaXZlciBvbiByZWNvdmVyKScsIHsgZXJyb3I6IGVycm9yTWVzc2FnZShlcnIpIH0pO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhc3luYyByZXF1ZXVlKGVudHJpZXMpIHtcbiAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gUHV0IGZhaWxlZCByZS1kZWxpdmVyaWVzIGJhY2sgYXQgdGhlIEhFQUQgc28gdGhleSdyZSByZXRyaWVkIGZpcnN0IGFuZFxuICAgICAgICAvLyByb3VnaCBlbWlzc2lvbiBvcmRlciBpcyBwcmVzZXJ2ZWQgYWNyb3NzIHRoZSBvdXRhZ2Ug4oCUIGFuZCBjbGVhciB0aGVtXG4gICAgICAgIC8vIGZyb20gdGhlIGluLXByb2dyZXNzIGxpc3Qgc28gYHJlY292ZXJgIGRvZXNuJ3QgZG91YmxlIHRoZW0uIEl0ZXJhdGUgaW5cbiAgICAgICAgLy8gcmV2ZXJzZSBzbyBscHVzaCByZXN0b3JlcyB0aGUgYmF0Y2gncyBvcmlnaW5hbCBvcmRlciBhdCB0aGUgaGVhZC5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gT1JERVJJTkcgSU5WQVJJQU5UIChhdC1sZWFzdC1vbmNlKTogbHB1c2ggdG8gdGhlIG1haW4gbGlzdCBGSVJTVCwgVEhFTlxuICAgICAgICAvLyBscmVtIGZyb20gaW4tcHJvZ3Jlc3MuIEEgY3Jhc2ggYmV0d2VlbiB0aGUgdHdvIGxlYXZlcyB0aGUgZW50cnkgb24gQk9USFxuICAgICAgICAvLyBsaXN0cyDihpIgaGFybWxlc3MgZG91YmxlLWRlbGl2ZXJ5IChkZWR1cGVkIGRvd25zdHJlYW0gYnkgaWRlbXBvdGVuY3lcbiAgICAgICAgLy8gcmV1c2UpLCBuZXZlciBhIExPU1MuIFRoZSByZXZlcnNlIG9yZGVyIChscmVtIHRoZW4gbHB1c2gpIHdvdWxkIGRyb3AgdGhlXG4gICAgICAgIC8vIGV2ZW50IG91dHJpZ2h0IG9uIGEgY3Jhc2ggaW4gdGhlIGdhcCwgd2hpY2ggYSBzZWN1cml0eSBsb2cgbXVzdCBub3QgZG8uXG4gICAgICAgIGF3YWl0IHJlYWR5KCk7XG4gICAgICAgIGZvciAobGV0IGkgPSBlbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgY29uc3QgcmF3ID0gcmF3T2YoZW50cmllc1tpXSk7XG4gICAgICAgICAgYXdhaXQgcmVkaXMubHB1c2goa2V5LCByYXcpO1xuICAgICAgICAgIGF3YWl0IHJlZGlzLmxyZW0oaW5Qcm9ncmVzc0tleSwgMSwgcmF3KTtcbiAgICAgICAgICByYXdCeUVudHJ5LmRlbGV0ZShlbnRyaWVzW2ldKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKCdBdWRpdCBzcG9vbCByZXF1ZXVlIGZhaWxlZCAoZXZlbnRzIGxvc3QpJywgeyBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFzeW5jIHJlY292ZXIoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCByZWFkeSgpO1xuICAgICAgICBhd2FpdCBiZWF0KCk7XG4gICAgICAgIGxldCByZWNsYWltZWQgPSAwO1xuICAgICAgICBjb25zdCBzdGFsZSA9IGF3YWl0IHJlZGlzLnpyYW5nZWJ5c2NvcmUob3duZXJzS2V5LCAnLWluZicsIERhdGUubm93KCkgLSBzdGFsZU93bmVyTXMpO1xuICAgICAgICBmb3IgKGNvbnN0IG93bmVyIG9mIHN0YWxlKSB7XG4gICAgICAgICAgaWYgKG93bmVyID09PSBvd25lcklkKSBjb250aW51ZTtcbiAgICAgICAgICBjb25zdCBzb3VyY2UgPSBpbmZsaWdodEtleU9mKG93bmVyKTtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE1BWF9NT1ZFX0lURVJBVElPTlM7IGkrKykge1xuICAgICAgICAgICAgLy8gTW92ZSBpbi1wcm9ncmVzcy10YWlsIOKGkiBtYWluLWhlYWQ6IGFuIG9sZGVyIHN0cmFuZGVkIGVudHJ5IChuZWFyZXJcbiAgICAgICAgICAgIC8vIHRoZSBpbi1wcm9ncmVzcyBoZWFkKSBlbmRzIHVwIGFoZWFkIG9mIGEgbmV3ZXIgb25lLCBwcmVzZXJ2aW5nIG9yZGVyLlxuICAgICAgICAgICAgY29uc3QgcmF3ID0gYXdhaXQgcmVkaXMubG1vdmUoc291cmNlLCBrZXksICdSSUdIVCcsICdMRUZUJyk7XG4gICAgICAgICAgICBpZiAocmF3ID09PSBudWxsIHx8IHJhdyA9PT0gdW5kZWZpbmVkKSBicmVhaztcbiAgICAgICAgICAgIHJlY2xhaW1lZCsrO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBPbmx5IGZvcmdldCB0aGUgb3duZXIgb25jZSBpdHMgbGlzdCBpcyBlbXB0eS5cbiAgICAgICAgICBhd2FpdCByZWRpcy56cmVtKG93bmVyc0tleSwgb3duZXIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZWNsYWltZWQgPiAwKSB7XG4gICAgICAgICAgZW1pdENvdW50ZXIoJ2F1ZGl0X3Nwb29sX3JlY292ZXJlZF90b3RhbCcsIHt9LCByZWNsYWltZWQpO1xuICAgICAgICAgIGxvZ2dlci53YXJuKCdBdWRpdCBzcG9vbCByZWNvdmVyZWQgZXZlbnRzIHN0cmFuZGVkIGJ5IGEgZGVhZCBvd25lcicsIHsgcmVjbGFpbWVkIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWNsYWltZWQ7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oJ0F1ZGl0IHNwb29sIHJlY292ZXIgZmFpbGVkJywgeyBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhc3luYyBoZWFydGJlYXQoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCByZWFkeSgpO1xuICAgICAgICBhd2FpdCBiZWF0KCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKCdBdWRpdCBzcG9vbCBoZWFydGJlYXQgZmFpbGVkJywgeyBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFzeW5jIGRlcHRoKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlZGlzLmxsZW4oa2V5KTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgUmVkaXMtYmFja2VkIGF1ZGl0IHNwb29sIGZyb20gdGhlIGFtYmllbnQgYFJFRElTX1VSTGAgLyBgUkVESVNfU0VOVElORUxTYFxuICogZW52IHZpYSB0aGUgc2hhcmVkIGBjcmVhdGVFbnZSZWRpc0NsaWVudGAuIFJldHVybnMgYG51bGxgIHdoZW4gUmVkaXMgaXMgbm90XG4gKiBjb25maWd1cmVkIOKAlCB0aGUgY2FsbGVyIHRoZW4gcnVucyB3aXRob3V0IGEgc3Bvb2wgKGJlc3QtZWZmb3J0IGJlaGF2aW9yKS4gVGhlIHNoYXJlZCBoZWxwZXIgbG9hZHNcbiAqIGlvcmVkaXMgdmlhIGBjcmVhdGVSZXF1aXJlYCwgc28gdGhpcyBzdGF5cyBpbXBvcnRhYmxlIHdoZXJlIFJlZGlzIGlzbid0IHByZXNlbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFbnZSZWRpc0F1ZGl0U3Bvb2wob3B0czogT21pdDxSZWRpc0F1ZGl0U3Bvb2xPcHRpb25zLCAncmVhZHknPik6IEF1ZGl0U3Bvb2wgfCBudWxsIHtcbiAgY29uc3QgaW5zdCA9IGNyZWF0ZUVudlJlZGlzQ2xpZW50PFJlZGlzTGlzdENsaWVudCAmIFJlYWR5QXdhcmVSZWRpcz4oJ2F1ZGl0LXNwb29sJyk7XG4gIGlmICghaW5zdCkgcmV0dXJuIG51bGw7XG4gIGxvZ2dlci5pbmZvKCdSZWRpcyBhdWRpdCBzcG9vbCBpbml0aWFsaXplZCcsIHsga2V5OiBvcHRzLmtleSB9KTtcbiAgLy8gVGhlIGVudiBjbGllbnQgaGFzIG5vIG9mZmxpbmUgcXVldWU6IGEgYm9vdC10aW1lIHJlY292ZXIoKSBydW4gYmVmb3JlIHRoZVxuICAvLyBjb25uZWN0aW9uIGlzIHVwIHdvdWxkIGZhaWwgYW5kIHN0cmFuZCBiYXRjaGVzIHVudGlsIHRoZSBuZXh0IHJlc3RhcnQsIHNvXG4gIC8vIGV2ZXJ5IGNvbW1hbmQgd2FpdHMgKGJvdW5kZWQpIGZvciByZWFkaW5lc3MuXG4gIHJldHVybiBjcmVhdGVSZWRpc0F1ZGl0U3Bvb2woaW5zdCwgeyAuLi5vcHRzLCByZWFkeTogY3JlYXRlUmVkaXNSZWFkeUdhdGUoaW5zdCwgMTBfMDAwKSB9KTtcbn1cbiJdfQ==
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtc3Bvb2wuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9hdWRpdC1zcG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixFQUF3QixNQUFNLGdCQUFnQixDQUFDO0FBRWxHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXBELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztBQTBFM0M7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxXQUFtQjtJQUMvQyxPQUFPLGVBQWUsV0FBVyxFQUFFLENBQUM7QUFDdEMsQ0FBQztBQUVELE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDO0FBQ2pDLHNGQUFzRjtBQUN0RixNQUFNLHNCQUFzQixHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUM7QUFDM0Msb0ZBQW9GO0FBQ3BGLE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDO0FBRXBDLFNBQVMsU0FBUyxDQUFDLEdBQVc7SUFDNUIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQW9CLENBQUM7UUFDbEQsT0FBTyxNQUFNLElBQUksTUFBTSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN0RSxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQztBQW1C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O0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsSUFBMkM7SUFDbEYsTUFBTSxJQUFJLEdBQUcsb0JBQW9CLENBQW9DLGFBQWEsQ0FBQyxDQUFDO0lBQ3BGLElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQywrQkFBK0IsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNoRSw0RUFBNEU7SUFDNUUsNEVBQTRFO0lBQzVFLCtDQUErQztJQUMvQyxPQUFPLHFCQUFxQixDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLEtBQUssRUFBRSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgcmFuZG9tVVVJRCB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyBjcmVhdGVFbnZSZWRpc0NsaWVudCwgY3JlYXRlUmVkaXNSZWFkeUdhdGUsIHR5cGUgUmVhZHlBd2FyZVJlZGlzIH0gZnJvbSAnLi9lbnYtcmVkaXMuanMnO1xuaW1wb3J0IHR5cGUgeyBSZW1vdGVBdWRpdEV2ZW50IH0gZnJvbSAnLi9yZW1vdGUtYXVkaXQtY2xpZW50LmpzJztcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5pbXBvcnQgeyBlbWl0Q291bnRlciB9IGZyb20gJy4uL3V0aWxzL21ldHJpYy1lbWl0dGVyLmpzJztcbmltcG9ydCB7IGVycm9yTWVzc2FnZSB9IGZyb20gJy4uL3V0aWxzL3Jlc3BvbnNlLmpzJztcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCdhdWRpdC1zcG9vbCcpO1xuXG4vKiogQSBidWZmZXJlZCBlbWlzc2lvbjogdGhlIGV2ZW50IHBsdXMgd2hpY2ggc2VydmljZSBtdXN0IHJlLWRlbGl2ZXIgaXQuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1ZGl0U3Bvb2xFbnRyeSB7XG4gIGV2ZW50OiBSZW1vdGVBdWRpdEV2ZW50O1xuICBzZXJ2aWNlTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIER1cmFibGUgYnVmZmVyIGZvciBhdWRpdCBldmVudHMgdGhhdCBmYWlsZWQgTElWRSBkZWxpdmVyeSB0byB0aGUgcGxhdGZvcm1cbiAqIChyZXRyaWVzIGV4aGF1c3RlZCBkdXJpbmcgYSBzdXN0YWluZWQgb3V0YWdlKS4gV2l0aG91dCB0aGlzLCB0aGUgYXVkaXQgdHJhaWwg4oCUXG4gKiBhIHNlY3VyaXR5IGxvZyDigJQgaXMgc2lsZW50bHkgbG9zdCB0aGUgbW9tZW50IHRoZSBwbGF0Zm9ybSBpcyBkb3duIGZvciBsb25nZXJcbiAqIHRoYW4gdGhlIGNsaWVudCdzIHNtYWxsIHJldHJ5IGJ1ZGdldC5cbiAqXG4gKiBDb250cmFjdDpcbiAqIC0gQk9VTkRFRC4gQSBzZWN1cml0eSBsb2cgbXVzdCBkZWdyYWRlIHRvIFwiZHJvcHBlZCB0aGUgb2xkZXN0LCBsb3VkbHlcIiAoYVxuICogICBtZXRyaWMpIHJhdGhlciB0aGFuIGdyb3cgd2l0aG91dCBsaW1pdCBhbmQgT09NIHRoZSBlbWl0dGVyLlxuICogLSBGQUlMLVNBRkUuIEV2ZXJ5IG1ldGhvZCBzd2FsbG93cyBpdHMgb3duIGVycm9ycyDigJQgYSBicm9rZW4vdW5yZWFjaGFibGUgc3Bvb2xcbiAqICAgbXVzdCBuZXZlciBicmVhayBvciBibG9jayB0aGUgYXVkaXQgZW1pc3Npb24gcGF0aCAod2hpY2ggaXMgaXRzZWxmXG4gKiAgIGZpcmUtYW5kLWZvcmdldCkuIEEgc3Bvb2wgcHJvYmxlbSBkZWdyYWRlcyB0byB0aGUgcHJlLXNwb29sIGJlaGF2aW9yLlxuICogLSBPcmRlcmluZyBpcyBiZXN0LWVmZm9ydC4gUmUtZGVsaXZlcmVkIGV2ZW50cyBjaGFpbiBhdCByZS1kZWxpdmVyeSB0aW1lXG4gKiAgICh0aGF0J3Mgd2hlbiB0aGUgcGxhdGZvcm0gaW5zZXJ0cyB0aGVtKSwgc28gZWFjaCBldmVudCBhbHNvIGNhcnJpZXMgYW5cbiAqICAgYG9jY3VycmVkQXRgIHN0YW1wZWQgYXQgZW1pc3Npb24gZm9yIHJldmlld2VycyDigJQgc2VlIFJlbW90ZUF1ZGl0RXZlbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXVkaXRTcG9vbCB7XG4gIC8qKiBCdWZmZXIgYW4gZXZlbnQgdGhhdCBmYWlsZWQgbGl2ZSBkZWxpdmVyeS4gKi9cbiAgZW5xdWV1ZShlbnRyeTogQXVkaXRTcG9vbEVudHJ5KTogUHJvbWlzZTx2b2lkPjtcbiAgLyoqXG4gICAqIEF0b21pY2FsbHkgTU9WRSB1cCB0byBgbWF4YCBidWZmZXJlZCBlbnRyaWVzIG9udG8gYW4gaW4tcHJvZ3Jlc3MgbGlzdCBhbmRcbiAgICogcmV0dXJuIHRoZW0uIEJlY2F1c2UgdGhlIGVudHJpZXMgYXJlIG1vdmVkIChub3QgcG9wcGVkLWFuZC1kcm9wcGVkKSwgYSBjcmFzaFxuICAgKiBtaWQtZHJhaW4gbGVhdmVzIHRoZW0gcmVjb3ZlcmFibGUgb24gdGhlIGluLXByb2dyZXNzIGxpc3Qg4oCUIHNlZSBgcmVjb3ZlcmAuXG4gICAqIEVhY2ggdGFrZW4gZW50cnkgTVVTVCBiZSByZXNvbHZlZCB3aXRoIGV4YWN0bHkgb25lIG9mIGBhY2tgIChkZWxpdmVyZWQpIG9yXG4gICAqIGByZXF1ZXVlYCAoc3RpbGwgZmFpbGluZyksIG9yIGl0IGxpbmdlcnMgb24gdGhlIGluLXByb2dyZXNzIGxpc3QgdW50aWwgdGhlXG4gICAqIG5leHQgYHJlY292ZXJgLlxuICAgKi9cbiAgdGFrZShtYXg6IG51bWJlcik6IFByb21pc2U8QXVkaXRTcG9vbEVudHJ5W10+O1xuICAvKiogQWNrbm93bGVkZ2Ugc3VjY2Vzc2Z1bGx5IHJlLWRlbGl2ZXJlZCBlbnRyaWVzIOKAlCByZW1vdmVzIHRoZW0gZnJvbSB0aGVcbiAgICogIGluLXByb2dyZXNzIGxpc3Qgc28gdGhleSBhcmUgbm90IHJlY292ZXJlZCBhZ2Fpbi4gKi9cbiAgYWNrKGVudHJpZXM6IEF1ZGl0U3Bvb2xFbnRyeVtdKTogUHJvbWlzZTx2b2lkPjtcbiAgLyoqIFJldHVybiBlbnRyaWVzIHdob3NlIHJlLWRlbGl2ZXJ5IGZhaWxlZCB0byB0aGUgSEVBRCBvZiB0aGUgYnVmZmVyIChyZXRyaWVkXG4gICAqICBmaXJzdCkgYW5kIGNsZWFyIHRoZW0gZnJvbSB0aGUgaW4tcHJvZ3Jlc3MgbGlzdC4gQmVzdC1lZmZvcnQuICovXG4gIHJlcXVldWUoZW50cmllczogQXVkaXRTcG9vbEVudHJ5W10pOiBQcm9taXNlPHZvaWQ+O1xuICAvKipcbiAgICogUmVjbGFpbSBlbnRyaWVzIHN0cmFuZGVkIG9uIEFCQU5ET05FRCBpbi1wcm9ncmVzcyBsaXN0cyDigJQgdGhvc2Ugb2Ygb3duZXJzXG4gICAqIChzcG9vbCBpbnN0YW5jZXMsIGkuZS4gcG9kcykgd2hvc2UgaGVhcnRiZWF0IGlzIG9sZGVyIHRoYW4gdGhlIHN0YWxlXG4gICAqIHRocmVzaG9sZCDigJQgbW92aW5nIHRoZW0gYmFjayB0byB0aGUgaGVhZCBvZiB0aGUgbWFpbiBidWZmZXIuIEEgTElWRSBvd25lcidzXG4gICAqIGluLWZsaWdodCBiYXRjaCBpcyBuZXZlciB0b3VjaGVkLCBzbyBhIHBlZXIncyByZWNvdmVyIGNhbid0IGR1cGxpY2F0ZSB3b3JrXG4gICAqIHRoYXQgb3duZXIgaXMgc3RpbGwgZGVsaXZlcmluZy4gU2FmZSB0byBjYWxsIHBlcmlvZGljYWxseTsgcmV0dXJucyB0aGVcbiAgICogbnVtYmVyIHJlY2xhaW1lZC5cbiAgICovXG4gIHJlY292ZXIoKTogUHJvbWlzZTxudW1iZXI+O1xuICAvKiogTWFyayB0aGlzIG93bmVyIGFsaXZlIChzbyBubyBwZWVyIHJlY2xhaW1zIGl0cyBpbi1mbGlnaHQgYmF0Y2gpLiAqL1xuICBoZWFydGJlYXQoKTogUHJvbWlzZTx2b2lkPjtcbiAgLyoqIEFwcHJveGltYXRlIGN1cnJlbnQgZGVwdGggKGZvciBtZXRyaWNzIC8gZHJhaW4gZGVjaXNpb25zKS4gKi9cbiAgZGVwdGgoKTogUHJvbWlzZTxudW1iZXI+O1xufVxuXG4vKiogTWluaW1hbCBSZWRpcyBMSVNUIHN1cmZhY2UgdGhlIHNwb29sIG5lZWRzIChhIHN1YnNldCBvZiBpb3JlZGlzKS4gKi9cbmludGVyZmFjZSBSZWRpc0xpc3RDbGllbnQge1xuICBycHVzaChrZXk6IHN0cmluZywgLi4udmFsdWVzOiBzdHJpbmdbXSk6IFByb21pc2U8bnVtYmVyPjtcbiAgbHB1c2goa2V5OiBzdHJpbmcsIC4uLnZhbHVlczogc3RyaW5nW10pOiBQcm9taXNlPG51bWJlcj47XG4gIGxwb3Aoa2V5OiBzdHJpbmcsIGNvdW50OiBudW1iZXIpOiBQcm9taXNlPHN0cmluZ1tdIHwgbnVsbD47XG4gIGx0cmltKGtleTogc3RyaW5nLCBzdGFydDogbnVtYmVyLCBzdG9wOiBudW1iZXIpOiBQcm9taXNlPHVua25vd24+O1xuICBsbGVuKGtleTogc3RyaW5nKTogUHJvbWlzZTxudW1iZXI+O1xuICAvKiogQXRvbWljYWxseSBwb3AgZnJvbSBvbmUgbGlzdCBlbmQgYW5kIHB1c2ggdG8gYW5vdGhlciAoUmVkaXMg4omlIDYuMikuICovXG4gIGxtb3ZlKHNvdXJjZTogc3RyaW5nLCBkZXN0aW5hdGlvbjogc3RyaW5nLCBmcm9tOiAnTEVGVCcgfCAnUklHSFQnLCB0bzogJ0xFRlQnIHwgJ1JJR0hUJyk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD47XG4gIC8qKiBSZW1vdmUgYGNvdW50YCBvY2N1cnJlbmNlcyBvZiBgdmFsdWVgIGZyb20gYSBsaXN0LiAqL1xuICBscmVtKGtleTogc3RyaW5nLCBjb3VudDogbnVtYmVyLCB2YWx1ZTogc3RyaW5nKTogUHJvbWlzZTxudW1iZXI+O1xuICAvKiogT3duZXIgaGVhcnRiZWF0czogYSBzb3J0ZWQgc2V0IG9mIG93bmVyIGlkIOKGkiBsYXN0LXNlZW4gZXBvY2ggbXMuICovXG4gIHphZGQoa2V5OiBzdHJpbmcsIHNjb3JlOiBudW1iZXIsIG1lbWJlcjogc3RyaW5nKTogUHJvbWlzZTx1bmtub3duPjtcbiAgenJhbmdlYnlzY29yZShrZXk6IHN0cmluZywgbWluOiBudW1iZXIgfCBzdHJpbmcsIG1heDogbnVtYmVyIHwgc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT47XG4gIHpyZW0oa2V5OiBzdHJpbmcsIG1lbWJlcjogc3RyaW5nKTogUHJvbWlzZTxudW1iZXI+O1xufVxuXG4vKipcbiAqIFRoZSBzcG9vbCBrZXkgZm9yIG9uZSBzZXJ2aWNlJ3MgYnVmZmVyZWQgYXVkaXQgZXZlbnRzLiBQZXIgU0VSVklDRSBvblxuICogcHVycG9zZTogcmUtZGVsaXZlcnkgbWludHMgYSBzZXJ2aWNlIHRva2VuIGFzIGBlbnRyeS5zZXJ2aWNlTmFtZWAsIHdoaWNoIG9ubHlcbiAqIHRoYXQgc2VydmljZSdzIHBvZHMgY2FuIHNpZ24gKHBlci1zZXJ2aWNlIGtleXMpLiBBIHNoYXJlZCBrZXkgbGV0IGEgcG9kIG9mXG4gKiBvbmUgc2VydmljZSB0YWtlIGFub3RoZXIncyBlbnRyaWVzLCBmYWlsIHRvIHNpZ24gZm9yIHRoZW0sIGFuZCByZXF1ZXVlIHRoZW1cbiAqIGZvcmV2ZXIg4oCUIHdoaWxlIHRoYXQgc2VydmljZSdzIG93biBwb2RzIG5ldmVyIHNhdyB0aGVtLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXVkaXRTcG9vbEtleShzZXJ2aWNlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBhdWRpdDpzcG9vbDoke3NlcnZpY2VOYW1lfWA7XG59XG5cbmNvbnN0IERFRkFVTFRfTUFYX0RFUFRIID0gMTBfMDAwO1xuLyoqIEFuIG93bmVyIHdob3NlIGhlYXJ0YmVhdCBpcyBvbGRlciB0aGFuIHRoaXMgaXMgcHJlc3VtZWQgZGVhZCAoaXRzIHBvZCBjcmFzaGVkKS4gKi9cbmNvbnN0IERFRkFVTFRfU1RBTEVfT1dORVJfTVMgPSAxMCAqIDYwXzAwMDtcbi8qKiBHdWFyZCBzbyBhIHBhdGhvbG9naWNhbCBpbi1wcm9ncmVzcyBsaXN0IGNhbid0IHNwaW4gYHJlY292ZXJgL2B0YWtlYCBmb3JldmVyLiAqL1xuY29uc3QgTUFYX01PVkVfSVRFUkFUSU9OUyA9IDEwMF8wMDA7XG5cbmZ1bmN0aW9uIHNhZmVQYXJzZShyYXc6IHN0cmluZyk6IEF1ZGl0U3Bvb2xFbnRyeSB8IG51bGwge1xuICB0cnkge1xuICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UocmF3KSBhcyBBdWRpdFNwb29sRW50cnk7XG4gICAgcmV0dXJuIHBhcnNlZCAmJiBwYXJzZWQuZXZlbnQgJiYgcGFyc2VkLnNlcnZpY2VOYW1lID8gcGFyc2VkIDogbnVsbDtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBSZWRpcy1MSVNULWJhY2tlZCBzcG9vbC4gRHVyYWJsZSBhY3Jvc3MgcHJvY2VzcyByZXN0YXJ0cyAodW5saWtlIGFuIGluLW1lbW9yeVxuICogb3IgcGVyLXBvZC1kaXNrIGJ1ZmZlciksIHNoYXJlZCBieSBhbGwgcmVwbGljYXMgb2YgYSBzZXJ2aWNlLCBhbmQgYm91bmRlZCB2aWFcbiAqIGEgdHJpbS10by10YWlsIG9uIG92ZXJmbG93IChkcm9wcyB0aGUgT0xERVNULCBlbWl0dGluZyBgYXVkaXRfc3Bvb2xfZHJvcHBlZF90b3RhbGApLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZGlzQXVkaXRTcG9vbE9wdGlvbnMge1xuICAvKiogVGhlIGJ1ZmZlcidzIFJlZGlzIGtleSDigJQgb25lIHBlciBzZXJ2aWNlICh7QGxpbmsgYXVkaXRTcG9vbEtleX0pLiAqL1xuICBrZXk6IHN0cmluZztcbiAgbWF4RGVwdGg/OiBudW1iZXI7XG4gIC8qKiBUaGlzIGluc3RhbmNlJ3Mgb3duZXIgaWQgKGRlZmF1bHQ6IHJhbmRvbSBwZXIgaW5zdGFuY2UpLiAqL1xuICBvd25lcklkPzogc3RyaW5nO1xuICAvKiogSGVhcnRiZWF0IGFnZSBhZnRlciB3aGljaCBhbiBvd25lcidzIGluLWZsaWdodCBiYXRjaCBpcyByZWNsYWltYWJsZS4gKi9cbiAgc3RhbGVPd25lck1zPzogbnVtYmVyO1xuICAvKiogQXdhaXRlZCBiZWZvcmUgZWFjaCBjb21tYW5kIOKAlCBlLmcuIGEgcmVhZGluZXNzIGdhdGUgZm9yIGEgbGF6aWx5IGNvbm5lY3RpbmcgY2xpZW50LiAqL1xuICByZWFkeT86ICgpID0+IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWRpc0F1ZGl0U3Bvb2wocmVkaXM6IFJlZGlzTGlzdENsaWVudCwgb3B0czogUmVkaXNBdWRpdFNwb29sT3B0aW9ucyk6IEF1ZGl0U3Bvb2wge1xuICBjb25zdCBrZXkgPSBvcHRzLmtleTtcbiAgY29uc3Qgb3duZXJJZCA9IG9wdHMub3duZXJJZCA/PyByYW5kb21VVUlEKCk7XG4gIGNvbnN0IHN0YWxlT3duZXJNcyA9IE1hdGgubWF4KDEsIG9wdHMuc3RhbGVPd25lck1zID8/IERFRkFVTFRfU1RBTEVfT1dORVJfTVMpO1xuICBjb25zdCByZWFkeSA9IG9wdHMucmVhZHkgPz8gKCgpID0+IFByb21pc2UucmVzb2x2ZSgpKTtcbiAgLy8gUEVSLU9XTkVSIGluLXByb2dyZXNzIGxpc3Qg4oCUIGEgdGFrZW4gYmF0Y2ggbGl2ZXMgaGVyZSB1bnRpbCBpdCBpcyBhY2tlZFxuICAvLyAoZGVsaXZlcmVkKSBvciByZXF1ZXVlZCAoc3RpbGwgZmFpbGluZykuIEl0IGlzIGEgc2VjdXJpdHkgbG9nJ3MgZHVyYWJpbGl0eVxuICAvLyBuZXQ6IGEgY3Jhc2ggYmV0d2VlbiB0YWtlIGFuZCBhY2svcmVxdWV1ZSBsZWF2ZXMgdGhlIGJhdGNoIGhlcmUsIGFuZCBhIHBlZXInc1xuICAvLyAob3IgdGhpcyBwb2QncyBzdWNjZXNzb3IncykgYHJlY292ZXJgIHJlY2xhaW1zIGl0IG9uY2UgdGhlIG93bmVyJ3MgaGVhcnRiZWF0XG4gIC8vIGdvZXMgc3RhbGUuIE9uZSBzaGFyZWQgaW4tZmxpZ2h0IGxpc3QgbGV0IGFueSByZXBsaWNhJ3Mgc3RhcnR1cCByZWNvdmVyXG4gIC8vIHN0ZWFsIGJhdGNoZXMgaXRzIGxpdmUgc2libGluZ3Mgd2VyZSBtaWQtd2F5IHRocm91Z2ggZGVsaXZlcmluZy5cbiAgY29uc3QgaW5mbGlnaHRLZXlPZiA9IChvd25lcjogc3RyaW5nKSA9PiBgJHtrZXl9OmluZmxpZ2h0OiR7b3duZXJ9YDtcbiAgY29uc3QgaW5Qcm9ncmVzc0tleSA9IGluZmxpZ2h0S2V5T2Yob3duZXJJZCk7XG4gIGNvbnN0IG93bmVyc0tleSA9IGAke2tleX06b3duZXJzYDtcbiAgY29uc3QgbWF4RGVwdGggPSBNYXRoLm1heCgxLCBvcHRzLm1heERlcHRoID8/IERFRkFVTFRfTUFYX0RFUFRIKTtcblxuICBjb25zdCBiZWF0ID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGF3YWl0IHJlZGlzLnphZGQob3duZXJzS2V5LCBEYXRlLm5vdygpLCBvd25lcklkKTtcbiAgfTtcblxuICAvLyBUaGUgRVhBQ1Qgc2VyaWFsaXplZCBzdHJpbmcgZWFjaCByZXR1cm5lZCBlbnRyeSB3YXMgcGFyc2VkIGZyb20sIHNvIGBhY2tgIC9cbiAgLy8gYHJlcXVldWVgIGNhbiBMUkVNIHRoZSBwcmVjaXNlIHZhbHVlIG9mZiB0aGUgaW4tcHJvZ3Jlc3MgbGlzdC4gS2V5ZWQgYnkgdGhlXG4gIC8vIHJldHVybmVkIG9iamVjdCBpZGVudGl0eSAodGhlIGRyYWluIGNvbnN1bWVyIHBhc3NlcyB0aGUgU0FNRSBvYmplY3RzIGJhY2spLFxuICAvLyBzbyBpdCBuZWVkcyBubyBzdGFibGUgcmUtc2VyaWFsaXphdGlvbi4gV2Vha01hcCDihpIgZW50cmllcyBHQyBuYXR1cmFsbHkuXG4gIGNvbnN0IHJhd0J5RW50cnkgPSBuZXcgV2Vha01hcDxBdWRpdFNwb29sRW50cnksIHN0cmluZz4oKTtcbiAgY29uc3QgcmF3T2YgPSAoZW50cnk6IEF1ZGl0U3Bvb2xFbnRyeSk6IHN0cmluZyA9PiByYXdCeUVudHJ5LmdldChlbnRyeSkgPz8gSlNPTi5zdHJpbmdpZnkoZW50cnkpO1xuXG4gIHJldHVybiB7XG4gICAgYXN5bmMgZW5xdWV1ZShlbnRyeSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgcmVhZHkoKTtcbiAgICAgICAgY29uc3QgbGVuID0gYXdhaXQgcmVkaXMucnB1c2goa2V5LCBKU09OLnN0cmluZ2lmeShlbnRyeSkpO1xuICAgICAgICBlbWl0Q291bnRlcignYXVkaXRfc3Bvb2xfZW5xdWV1ZWRfdG90YWwnLCB7IHNlcnZpY2U6IGVudHJ5LnNlcnZpY2VOYW1lIH0pO1xuICAgICAgICBpZiAobGVuID4gbWF4RGVwdGgpIHtcbiAgICAgICAgICAvLyBLZWVwIG9ubHkgdGhlIG5ld2VzdCBgbWF4RGVwdGhgOyBkcm9wIHRoZSBvdmVyZmxvdyBhdCB0aGUgaGVhZC5cbiAgICAgICAgICBjb25zdCBkcm9wcGVkID0gbGVuIC0gbWF4RGVwdGg7XG4gICAgICAgICAgYXdhaXQgcmVkaXMubHRyaW0oa2V5LCBkcm9wcGVkLCAtMSk7XG4gICAgICAgICAgZW1pdENvdW50ZXIoJ2F1ZGl0X3Nwb29sX2Ryb3BwZWRfdG90YWwnLCB7IHNlcnZpY2U6IGVudHJ5LnNlcnZpY2VOYW1lIH0sIGRyb3BwZWQpO1xuICAgICAgICAgIGxvZ2dlci53YXJuKCdBdWRpdCBzcG9vbCBvdmVyZmxvdyDigJQgZHJvcHBlZCBvbGRlc3QgYnVmZmVyZWQgZXZlbnRzJywgeyBkcm9wcGVkLCBtYXhEZXB0aCB9KTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKCdBdWRpdCBzcG9vbCBlbnF1ZXVlIGZhaWxlZCAoZXZlbnQgbG9zdCknLCB7IGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSB9KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYXN5bmMgdGFrZShtYXgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHJlYWR5KCk7XG4gICAgICAgIGF3YWl0IGJlYXQoKTtcbiAgICAgICAgY29uc3Qgb3V0OiBBdWRpdFNwb29sRW50cnlbXSA9IFtdO1xuICAgICAgICBjb25zdCBsaW1pdCA9IE1hdGgubWF4KDEsIG1heCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGltaXQ7IGkrKykge1xuICAgICAgICAgIC8vIEF0b21pY2FsbHkgTU9WRSBoZWFk4oaSaW4tcHJvZ3Jlc3MtdGFpbCBzbyB0aGUgZW50cnkgaXMgbmV2ZXIgaW4gbGltYm86XG4gICAgICAgICAgLy8gaXQgaXMgb24gZXhhY3RseSBvbmUgbGlzdCBhdCBhbGwgdGltZXMsIHJlY292ZXJhYmxlIGFmdGVyIGEgY3Jhc2guXG4gICAgICAgICAgY29uc3QgcmF3ID0gYXdhaXQgcmVkaXMubG1vdmUoa2V5LCBpblByb2dyZXNzS2V5LCAnTEVGVCcsICdSSUdIVCcpO1xuICAgICAgICAgIGlmIChyYXcgPT09IG51bGwgfHwgcmF3ID09PSB1bmRlZmluZWQpIGJyZWFrO1xuICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IHNhZmVQYXJzZShyYXcpO1xuICAgICAgICAgIGlmIChwYXJzZWQpIHtcbiAgICAgICAgICAgIHJhd0J5RW50cnkuc2V0KHBhcnNlZCwgcmF3KTtcbiAgICAgICAgICAgIG91dC5wdXNoKHBhcnNlZCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIENvcnJ1cHQgcGF5bG9hZCDigJQgZHJvcCBpdCBvZmYgdGhlIGluLXByb2dyZXNzIGxpc3Qgc28gaXQgY2FuJ3Qgd2VkZ2VcbiAgICAgICAgICAgIC8vIHRoZSBkcmFpbiwgYW5kIGFjY291bnQgZm9yIGl0LlxuICAgICAgICAgICAgYXdhaXQgcmVkaXMubHJlbShpblByb2dyZXNzS2V5LCAxLCByYXcpO1xuICAgICAgICAgICAgZW1pdENvdW50ZXIoJ2F1ZGl0X3Nwb29sX2Ryb3BwZWRfdG90YWwnLCB7IHNlcnZpY2U6ICd1bmtub3duJyB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBsb2dnZXIud2FybignQXVkaXQgc3Bvb2wgdGFrZSBmYWlsZWQnLCB7IGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSB9KTtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhc3luYyBhY2soZW50cmllcykge1xuICAgICAgaWYgKGVudHJpZXMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCByZWFkeSgpO1xuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgICBhd2FpdCByZWRpcy5scmVtKGluUHJvZ3Jlc3NLZXksIDEsIHJhd09mKGVudHJ5KSk7XG4gICAgICAgICAgcmF3QnlFbnRyeS5kZWxldGUoZW50cnkpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oJ0F1ZGl0IHNwb29sIGFjayBmYWlsZWQgKG1heSByZS1kZWxpdmVyIG9uIHJlY292ZXIpJywgeyBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFzeW5jIHJlcXVldWUoZW50cmllcykge1xuICAgICAgaWYgKGVudHJpZXMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgICB0cnkge1xuICAgICAgICAvLyBQdXQgZmFpbGVkIHJlLWRlbGl2ZXJpZXMgYmFjayBhdCB0aGUgSEVBRCBzbyB0aGV5J3JlIHJldHJpZWQgZmlyc3QgYW5kXG4gICAgICAgIC8vIHJvdWdoIGVtaXNzaW9uIG9yZGVyIGlzIHByZXNlcnZlZCBhY3Jvc3MgdGhlIG91dGFnZSDigJQgYW5kIGNsZWFyIHRoZW1cbiAgICAgICAgLy8gZnJvbSB0aGUgaW4tcHJvZ3Jlc3MgbGlzdCBzbyBgcmVjb3ZlcmAgZG9lc24ndCBkb3VibGUgdGhlbS4gSXRlcmF0ZSBpblxuICAgICAgICAvLyByZXZlcnNlIHNvIGxwdXNoIHJlc3RvcmVzIHRoZSBiYXRjaCdzIG9yaWdpbmFsIG9yZGVyIGF0IHRoZSBoZWFkLlxuICAgICAgICAvL1xuICAgICAgICAvLyBPUkRFUklORyBJTlZBUklBTlQgKGF0LWxlYXN0LW9uY2UpOiBscHVzaCB0byB0aGUgbWFpbiBsaXN0IEZJUlNULCBUSEVOXG4gICAgICAgIC8vIGxyZW0gZnJvbSBpbi1wcm9ncmVzcy4gQSBjcmFzaCBiZXR3ZWVuIHRoZSB0d28gbGVhdmVzIHRoZSBlbnRyeSBvbiBCT1RIXG4gICAgICAgIC8vIGxpc3RzIOKGkiBoYXJtbGVzcyBkb3VibGUtZGVsaXZlcnkgKGRlZHVwZWQgZG93bnN0cmVhbSBieSBpZGVtcG90ZW5jeVxuICAgICAgICAvLyByZXVzZSksIG5ldmVyIGEgTE9TUy4gVGhlIHJldmVyc2Ugb3JkZXIgKGxyZW0gdGhlbiBscHVzaCkgd291bGQgZHJvcCB0aGVcbiAgICAgICAgLy8gZXZlbnQgb3V0cmlnaHQgb24gYSBjcmFzaCBpbiB0aGUgZ2FwLCB3aGljaCBhIHNlY3VyaXR5IGxvZyBtdXN0IG5vdCBkby5cbiAgICAgICAgYXdhaXQgcmVhZHkoKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IGVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICBjb25zdCByYXcgPSByYXdPZihlbnRyaWVzW2ldKTtcbiAgICAgICAgICBhd2FpdCByZWRpcy5scHVzaChrZXksIHJhdyk7XG4gICAgICAgICAgYXdhaXQgcmVkaXMubHJlbShpblByb2dyZXNzS2V5LCAxLCByYXcpO1xuICAgICAgICAgIHJhd0J5RW50cnkuZGVsZXRlKGVudHJpZXNbaV0pO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oJ0F1ZGl0IHNwb29sIHJlcXVldWUgZmFpbGVkIChldmVudHMgbG9zdCknLCB7IGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSB9KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYXN5bmMgcmVjb3ZlcigpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHJlYWR5KCk7XG4gICAgICAgIGF3YWl0IGJlYXQoKTtcbiAgICAgICAgbGV0IHJlY2xhaW1lZCA9IDA7XG4gICAgICAgIGNvbnN0IHN0YWxlID0gYXdhaXQgcmVkaXMuenJhbmdlYnlzY29yZShvd25lcnNLZXksICctaW5mJywgRGF0ZS5ub3coKSAtIHN0YWxlT3duZXJNcyk7XG4gICAgICAgIGZvciAoY29uc3Qgb3duZXIgb2Ygc3RhbGUpIHtcbiAgICAgICAgICBpZiAob3duZXIgPT09IG93bmVySWQpIGNvbnRpbnVlO1xuICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGluZmxpZ2h0S2V5T2Yob3duZXIpO1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTUFYX01PVkVfSVRFUkFUSU9OUzsgaSsrKSB7XG4gICAgICAgICAgICAvLyBNb3ZlIGluLXByb2dyZXNzLXRhaWwg4oaSIG1haW4taGVhZDogYW4gb2xkZXIgc3RyYW5kZWQgZW50cnkgKG5lYXJlclxuICAgICAgICAgICAgLy8gdGhlIGluLXByb2dyZXNzIGhlYWQpIGVuZHMgdXAgYWhlYWQgb2YgYSBuZXdlciBvbmUsIHByZXNlcnZpbmcgb3JkZXIuXG4gICAgICAgICAgICBjb25zdCByYXcgPSBhd2FpdCByZWRpcy5sbW92ZShzb3VyY2UsIGtleSwgJ1JJR0hUJywgJ0xFRlQnKTtcbiAgICAgICAgICAgIGlmIChyYXcgPT09IG51bGwgfHwgcmF3ID09PSB1bmRlZmluZWQpIGJyZWFrO1xuICAgICAgICAgICAgcmVjbGFpbWVkKys7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIE9ubHkgZm9yZ2V0IHRoZSBvd25lciBvbmNlIGl0cyBsaXN0IGlzIGVtcHR5LlxuICAgICAgICAgIGF3YWl0IHJlZGlzLnpyZW0ob3duZXJzS2V5LCBvd25lcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlY2xhaW1lZCA+IDApIHtcbiAgICAgICAgICBlbWl0Q291bnRlcignYXVkaXRfc3Bvb2xfcmVjb3ZlcmVkX3RvdGFsJywge30sIHJlY2xhaW1lZCk7XG4gICAgICAgICAgbG9nZ2VyLndhcm4oJ0F1ZGl0IHNwb29sIHJlY292ZXJlZCBldmVudHMgc3RyYW5kZWQgYnkgYSBkZWFkIG93bmVyJywgeyByZWNsYWltZWQgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlY2xhaW1lZDtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBsb2dnZXIud2FybignQXVkaXQgc3Bvb2wgcmVjb3ZlciBmYWlsZWQnLCB7IGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSB9KTtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFzeW5jIGhlYXJ0YmVhdCgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHJlYWR5KCk7XG4gICAgICAgIGF3YWl0IGJlYXQoKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBsb2dnZXIuZGVidWcoJ0F1ZGl0IHNwb29sIGhlYXJ0YmVhdCBmYWlsZWQnLCB7IGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSB9KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYXN5bmMgZGVwdGgoKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgcmVkaXMubGxlbihrZXkpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogQnVpbGQgYSBSZWRpcy1iYWNrZWQgYXVkaXQgc3Bvb2wgZnJvbSB0aGUgYW1iaWVudCBgUkVESVNfVVJMYCAvIGBSRURJU19TRU5USU5FTFNgXG4gKiBlbnYgdmlhIHRoZSBzaGFyZWQgYGNyZWF0ZUVudlJlZGlzQ2xpZW50YC4gUmV0dXJucyBgbnVsbGAgd2hlbiBSZWRpcyBpcyBub3RcbiAqIGNvbmZpZ3VyZWQg4oCUIHRoZSBjYWxsZXIgdGhlbiBydW5zIHdpdGhvdXQgYSBzcG9vbCAoYmVzdC1lZmZvcnQgYmVoYXZpb3IpLiBUaGUgc2hhcmVkIGhlbHBlciBsb2Fkc1xuICogaW9yZWRpcyB2aWEgYGNyZWF0ZVJlcXVpcmVgLCBzbyB0aGlzIHN0YXlzIGltcG9ydGFibGUgd2hlcmUgUmVkaXMgaXNuJ3QgcHJlc2VudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVudlJlZGlzQXVkaXRTcG9vbChvcHRzOiBPbWl0PFJlZGlzQXVkaXRTcG9vbE9wdGlvbnMsICdyZWFkeSc+KTogQXVkaXRTcG9vbCB8IG51bGwge1xuICBjb25zdCBpbnN0ID0gY3JlYXRlRW52UmVkaXNDbGllbnQ8UmVkaXNMaXN0Q2xpZW50ICYgUmVhZHlBd2FyZVJlZGlzPignYXVkaXQtc3Bvb2wnKTtcbiAgaWYgKCFpbnN0KSByZXR1cm4gbnVsbDtcbiAgbG9nZ2VyLmluZm8oJ1JlZGlzIGF1ZGl0IHNwb29sIGluaXRpYWxpemVkJywgeyBrZXk6IG9wdHMua2V5IH0pO1xuICAvLyBUaGUgZW52IGNsaWVudCBoYXMgbm8gb2ZmbGluZSBxdWV1ZTogYSBib290LXRpbWUgcmVjb3ZlcigpIHJ1biBiZWZvcmUgdGhlXG4gIC8vIGNvbm5lY3Rpb24gaXMgdXAgd291bGQgZmFpbCBhbmQgc3RyYW5kIGJhdGNoZXMgdW50aWwgdGhlIG5leHQgcmVzdGFydCwgc29cbiAgLy8gZXZlcnkgY29tbWFuZCB3YWl0cyAoYm91bmRlZCkgZm9yIHJlYWRpbmVzcy5cbiAgcmV0dXJuIGNyZWF0ZVJlZGlzQXVkaXRTcG9vbChpbnN0LCB7IC4uLm9wdHMsIHJlYWR5OiBjcmVhdGVSZWRpc1JlYWR5R2F0ZShpbnN0LCAxMF8wMDApIH0pO1xufVxuIl19
|
|
@@ -369,4 +369,4 @@ export class CacheService {
|
|
|
369
369
|
export function createCacheService(prefix, defaultTtlSeconds = 300) {
|
|
370
370
|
return new CacheService({ prefix, defaultTtlSeconds });
|
|
371
371
|
}
|
|
372
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9jYWNoZS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVwQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVwRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7QUFVN0M7Ozs7Ozs7R0FPRztBQUNILFNBQVMsVUFBVSxDQUFJLEtBQVE7SUFDN0IsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVE7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUM5RCxJQUFJLENBQUM7UUFDSCxPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQU0sQ0FBQztJQUNoRCxDQUFDO0FBQ0gsQ0FBQztBQWtFRCxNQUFNLDBCQUEwQixHQUFHLGtCQUFrQixDQUFDO0FBRXREOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSwrQkFBK0IsQ0FBQyxTQUFrQztJQUNoRixNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDekMsTUFBTSxlQUFlLEdBQW1ELEVBQUUsQ0FBQztJQUMzRSxNQUFN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Q0FBQztRQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUM7WUFDSCxPQUFPLFVBQVUsQ0FBQyxNQUFNLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsS0FBSztRQUNULElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxzREFBc0Q7SUFDdEQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztJQUMxQixDQUFDO0NBQ0Y7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxNQUFjLEVBQUUsaUJBQWlCLEdBQUcsR0FBRztJQUN4RSxPQUFPLElBQUksWUFBWSxDQUFDLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBQztBQUN6RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogTGlnaHR3ZWlnaHQgY2FjaGluZyBzZXJ2aWNlIHdpdGggVFRMIHN1cHBvcnQuXG4gKlxuICogU3RvcmFnZSBpcyBhIHBlci1wcm9jZXNzIHRydWUtTFJVIE1hcCAobm8gZXh0ZXJuYWwgZGVwZW5kZW5jaWVzKS5cbiAqXG4gKiBDcm9zcy1yZXBsaWNhIGludmFsaWRhdGlvbjogZXZlcnkgc2VydmljZSBydW5zIHNldmVyYWxcbiAqIHJlcGxpY2FzIChIUEEpLCBlYWNoIHdpdGggaXRzIE9XTiBpbi1tZW1vcnkgY2FjaGUuIEFuIGludmFsaWRhdGlvbiBwZXJmb3JtZWQgb25cbiAqIG9uZSBwb2QgKGBkZWxgIC8gYGludmFsaWRhdGVQYXR0ZXJuYCAvIGBjbGVhcmApIGlzIGJyb2FkY2FzdCBvdmVyIFJlZGlzIHB1Yi9zdWJcbiAqICh7QGxpbmsgQ2FjaGVJbnZhbGlkYXRpb25CdXN9LCB3aXJlZCBmcm9tIHRoZSBhbWJpZW50IFJlZGlzIGVudiBieSBkZWZhdWx0KSBhbmRcbiAqIGFwcGxpZWQgYnkgZXZlcnkgb3RoZXIgcG9kLCBzbyBhIHdyaXRlIG9uIHBvZCBBIGNhbid0IGxlYXZlIHBvZCBCIHNlcnZpbmcgdGhlXG4gKiBzdGFsZSBlbnRyeSB1bnRpbCBpdHMgVFRMIGxhcHNlcy4gQSBwb2Qgd2hvc2Ugc3Vic2NyaWJlciAocmUpY29ubmVjdHMgZmx1c2hlc1xuICogaXRzIGxvY2FsIGNhY2hlIOKAlCBpdCBtYXkgaGF2ZSBtaXNzZWQgaW52YWxpZGF0aW9ucyB3aGlsZSBkaXNjb25uZWN0ZWQg4oCUIGFuZCBhXG4gKiBgZ2V0T3JTZXRgIHdob3NlIGZhY3RvcnkgcmFjZWQgYW4gaW52YWxpZGF0aW9uIGRvZXMgbm90IGNhY2hlIGl0cyByZXN1bHQuXG4gKlxuICogRGVzaWduOlxuICogLSBBbGwgb3BlcmF0aW9ucyBhcmUgZmFpbC1zYWZlOiBjYWNoZSBtaXNzZXMvZXJyb3JzIHJldHVybiBudWxsLCBuZXZlciB0aHJvd1xuICogLSBSZWFkcyBkZWVwLWNsb25lLCBzbyBldmVyeSBjYWxsZXIgZ2V0cyBhbiBpbmRlcGVuZGVudCBjb3B5IChtdXRhdGluZyBhXG4gKiAgIHJlc3VsdCBpcyBhbHdheXMgc2FmZSlcbiAqIC0gYGdldE9yU2V0YCBpcyBzaW5nbGUtZmxpZ2h0OiBjb25jdXJyZW50IG1pc3NlcyBzaGFyZSBvbmUgZmFjdG9yeSgpIGNhbGxcbiAqIC0gS2V5IG5hbWVzcGFjZSBwcmVmaXhpbmcgdG8gYXZvaWQgY29sbGlzaW9ucyBiZXR3ZWVuIHNlcnZpY2VzXG4gKi9cblxuaW1wb3J0IHsgcmFuZG9tVVVJRCB9IGZyb20gJ2NyeXB0byc7XG5cbmltcG9ydCB7IGNyZWF0ZUVudlJlZGlzQ2xpZW50IH0gZnJvbSAnLi9lbnYtcmVkaXMuanMnO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCB7IGVtaXRDb3VudGVyIH0gZnJvbSAnLi4vdXRpbHMvbWV0cmljLWVtaXR0ZXIuanMnO1xuaW1wb3J0IHsgZXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vdXRpbHMvcmVzcG9uc2UuanMnO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ2NhY2hlLXNlcnZpY2UnKTtcblxuLyoqXG4gKiBDYWNoZSBlbnRyeSB3aXRoIHZhbHVlIGFuZCBleHBpcmF0aW9uIHRpbWUuXG4gKi9cbmludGVyZmFjZSBDYWNoZUVudHJ5PFQ+IHtcbiAgdmFsdWU6IFQ7XG4gIGV4cGlyZXNBdDogbnVtYmVyOyAvLyBVbml4IHRpbWVzdGFtcCBpbiBtc1xufVxuXG4vKipcbiAqIERlZXAtY2xvbmUgYSB2YWx1ZSBzbyB0aGUgY2FjaGUgaGFuZHMgYmFjayBhbiBJTkRFUEVOREVOVCBjb3B5IG9uIGV2ZXJ5IHJlYWQuXG4gKiBXaXRob3V0IHRoaXMgaXQgcmV0dXJucyB0aGUgc2FtZSBzdG9yZWQgb2JqZWN0IHJlZmVyZW5jZSwgc28gYSBjb25zdW1lclxuICogbXV0YXRpbmcgYSBcImNhY2hlZFwiIG9iamVjdCBzaWxlbnRseSBjb3JydXB0cyB0aGUgc2hhcmVkIGNhY2hlLlxuICpcbiAqIFByaW1pdGl2ZXMgYXJlIHJldHVybmVkIGFzLWlzLiBQcmVmZXJzIHRoZSBzdHJ1Y3R1cmVkLWNsb25lIGFsZ29yaXRobTsgZmFsbHNcbiAqIGJhY2sgdG8gYSBKU09OIHJvdW5kLXRyaXAgb24gb2xkZXIgcnVudGltZXMgb3IgZXhvdGljIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gY2xvbmVWYWx1ZTxUPih2YWx1ZTogVCk6IFQge1xuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JykgcmV0dXJuIHZhbHVlO1xuICB0cnkge1xuICAgIHJldHVybiBzdHJ1Y3R1cmVkQ2xvbmUodmFsdWUpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh2YWx1ZSkpIGFzIFQ7XG4gIH1cbn1cblxuLyoqXG4gKiBNaW5pbWFsIFJlZGlzIGtleS92YWx1ZSBjbGllbnQgc3VyZmFjZSAoc3Vic2V0IG9mIGlvcmVkaXMpIHNoYXJlZCBieSB0aGVcbiAqIHRva2VuLXJldm9jYXRpb24gcHVibGlzaGVyL3JlYWRlciBhbmQgcGxhdGZvcm0ncyBSZWRpcyBoZWxwZXJzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZGlzQ2FjaGVDbGllbnQge1xuICBnZXQoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xuICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIC4uLmFyZ3M6IHVua25vd25bXSk6IFByb21pc2U8dW5rbm93bj47XG4gIGRlbCguLi5rZXlzOiBzdHJpbmdbXSk6IFByb21pc2U8bnVtYmVyPjtcbiAgLyoqXG4gICAqIFNlcnZlci1zaWRlIEx1YSAoaW9yZWRpcyBgZXZhbChzY3JpcHQsIG51bUtleXMsIC4uLmtleXNBbmRBcmdzKWApLiBPcHRpb25hbFxuICAgKiBzbyBhIHBsYWluIGtleS92YWx1ZSBmYWtlIHN0aWxsIHNhdGlzZmllcyB0aGUgaW50ZXJmYWNlOyB0aGUgd3JpdGVycyB0aGF0XG4gICAqIG5lZWQgYXRvbWljIGNvbXBhcmUtYW5kLXNldCAoZS5nLiBgcHVibGlzaFRva2VuUmV2b2NhdGlvbmApIHJlZnVzZSBhIGNsaWVudFxuICAgKiB3aXRob3V0IGl0IHJhdGhlciB0aGFuIGZhbGwgYmFjayB0byBhIHJhY3kgcmVhZC1tb2RpZnktd3JpdGUuXG4gICAqL1xuICBldmFsPyhzY3JpcHQ6IHN0cmluZywgbnVtS2V5czogbnVtYmVyLCAuLi5hcmdzOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+KTogUHJvbWlzZTx1bmtub3duPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYWNoZUNvbmZpZyB7XG4gIC8qKiBLZXkgcHJlZml4IGZvciBuYW1lc3BhY2UgaXNvbGF0aW9uIChlLmcuLCAncGx1Z2luOicsICdjb21wbGlhbmNlOicpICovXG4gIHByZWZpeDogc3RyaW5nO1xuICAvKiogRGVmYXVsdCBUVEwgaW4gc2Vjb25kcyAqL1xuICBkZWZhdWx0VHRsU2Vjb25kczogbnVtYmVyO1xuICAvKiogTWF4IGVudHJpZXMgZm9yIHRoZSBjYWNoZSAoZGVmYXVsdCAxMDAwKSAqL1xuICBtYXhFbnRyaWVzPzogbnVtYmVyO1xuICAvKipcbiAgICogQ3Jvc3MtcmVwbGljYSBpbnZhbGlkYXRpb24gYnVzLiBPbWl0IHRvIHVzZSB0aGUgc2hhcmVkIGVudi1SZWRpcyBidXMgKG51bGxcbiAgICogd2hlbiBSZWRpcyBpc24ndCBjb25maWd1cmVkIOKGkiBzaW5nbGUtcHJvY2VzcyBzZW1hbnRpY3MpOyBwYXNzIGBudWxsYCB0b1xuICAgKiBkaXNhYmxlIGV4cGxpY2l0bHkuXG4gICAqL1xuICBpbnZhbGlkYXRpb25CdXM/OiBDYWNoZUludmFsaWRhdGlvbkJ1cyB8IG51bGw7XG59XG5cbi8qKiBPbmUgaW52YWxpZGF0aW9uIGJyb2FkY2FzdCB0byBldmVyeSByZXBsaWNhLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYWNoZUludmFsaWRhdGlvbk1lc3NhZ2Uge1xuICAvKiogSWQgb2YgdGhlIENhY2hlU2VydmljZSBpbnN0YW5jZSB0aGF0IGludmFsaWRhdGVkIChpdCBpZ25vcmVzIGl0cyBvd24gZWNobykuICovXG4gIG9yaWdpbjogc3RyaW5nO1xuICAvKiogVGhlIGNhY2hlIG5hbWVzcGFjZSAoYENhY2hlQ29uZmlnLnByZWZpeGApIHRoZSBpbnZhbGlkYXRpb24gYXBwbGllcyB0by4gKi9cbiAgcHJlZml4OiBzdHJpbmc7XG4gIG9wOiAnZGVsJyB8ICdwYXR0ZXJuJyB8ICdjbGVhcic7XG4gIC8qKiBVbi1wcmVmaXhlZCBrZXkgKGBkZWxgKSBvciBnbG9iIHBhdHRlcm4gKGBwYXR0ZXJuYCkuICovXG4gIGtleT86IHN0cmluZztcbn1cblxuLyoqIFRyYW5zcG9ydCB0aGF0IGZhbnMgY2FjaGUgaW52YWxpZGF0aW9ucyBvdXQgdG8gZXZlcnkgcmVwbGljYS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FjaGVJbnZhbGlkYXRpb25CdXMge1xuICAvKiogRmlyZS1hbmQtZm9yZ2V0IGJyb2FkY2FzdC4gTmV2ZXIgdGhyb3dzLiAqL1xuICBwdWJsaXNoKG1zZzogQ2FjaGVJbnZhbGlkYXRpb25NZXNzYWdlKTogdm9pZDtcbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGhhbmRsZXJzLiBgb25NZXNzYWdlYCByZWNlaXZlcyBldmVyeSBicm9hZGNhc3QgKGluY2x1ZGluZyB0aGlzXG4gICAqIHByb2Nlc3MncyBvd24pOyBgb25SZXN5bmNgIGZpcmVzIHdoZW5ldmVyIHRoZSBzdWJzY3JpcHRpb24gaXMgKHJlKWVzdGFibGlzaGVkLFxuICAgKiBpLmUuIHdoZW5ldmVyIGludmFsaWRhdGlvbnMgbWF5IGhhdmUgYmVlbiBtaXNzZWQuXG4gICAqL1xuICBzdWJzY3JpYmUob25NZXNzYWdlOiAobXNnOiBDYWNoZUludmFsaWRhdGlvbk1lc3NhZ2UpID0+IHZvaWQsIG9uUmVzeW5jOiAoKSA9PiB2b2lkKTogdm9pZDtcbn1cblxuLyoqIE1pbmltYWwgaW9yZWRpcyBwdWIvc3ViIHN1cmZhY2UgdGhlIGVudiBidXMgbmVlZHMuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZGlzSW52YWxpZGF0aW9uQ2xpZW50IHtcbiAgcHVibGlzaChjaGFubmVsOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPjtcbiAgc3Vic2NyaWJlKC4uLmNoYW5uZWxzOiBzdHJpbmdbXSk6IFByb21pc2U8dW5rbm93bj47XG4gIG9uKGV2ZW50OiBzdHJpbmcsIGNiOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQpOiB1bmtub3duO1xuICBkdXBsaWNhdGUoKTogUmVkaXNJbnZhbGlkYXRpb25DbGllbnQ7XG4gIHN0YXR1cz86IHN0cmluZztcbn1cblxuY29uc3QgQ0FDSEVfSU5WQUxJREFUSU9OX0NIQU5ORUwgPSAnY2FjaGU6aW52YWxpZGF0ZSc7XG5cbi8qKlxuICogUmVkaXMgcHViL3N1YiBpbnZhbGlkYXRpb24gYnVzLiBQVUJMSVNIIG9uIHRoZSBnaXZlbiBjbGllbnQ7IFNVQlNDUklCRSBvbiBhXG4gKiBgZHVwbGljYXRlKClgIChhIHN1YnNjcmliZWQgaW9yZWRpcyBjb25uZWN0aW9uIGNhbid0IHJ1biBvdGhlciBjb21tYW5kcykuXG4gKlxuICogVGhlIFNVQlNDUklCRSBpcyBpc3N1ZWQgb24gZXZlcnkgYHJlYWR5YCAoaW5pdGlhbCBjb25uZWN0IEFORCBlYWNoIHJlY29ubmVjdClcbiAqIHJhdGhlciB0aGFuIG9uY2UgYXQgY29uc3RydWN0aW9uOiB0aGUgZW52IGNsaWVudCBydW5zIHdpdGhvdXQgYW4gb2ZmbGluZVxuICogcXVldWUsIHNvIGEgc3Vic2NyaWJlIGlzc3VlZCBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gaXMgdXAgaXMgcmVqZWN0ZWQgYW5kIHdvdWxkXG4gKiBuZXZlciBiZSByZXRyaWVkLiBFYWNoIGByZWFkeWAgYWxzbyB0cmlnZ2VycyBgb25SZXN5bmNgIHNvIGV2ZXJ5IGNhY2hlIGZsdXNoZXNcbiAqIHdoYXRldmVyIGl0IG1heSBoYXZlIG1pc3NlZCB3aGlsZSBkaXNjb25uZWN0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWRpc0NhY2hlSW52YWxpZGF0aW9uQnVzKHB1Ymxpc2hlcjogUmVkaXNJbnZhbGlkYXRpb25DbGllbnQpOiBDYWNoZUludmFsaWRhdGlvbkJ1cyB7XG4gIGNvbnN0IHN1YnNjcmliZXIgPSBwdWJsaXNoZXIuZHVwbGljYXRlKCk7XG4gIGNvbnN0IG1lc3NhZ2VIYW5kbGVyczogQXJyYXk8KG1zZzogQ2FjaGVJbnZhbGlkYXRpb25NZXNzYWdlKSA9PiB2b2lkPiA9IFtdO1xuICBjb25zdCByZXN5bmNIYW5kbGVyczogQXJyYXk8KCkgPT4gdm9pZD4gPSBbXTtcblxuICBjb25zdCByZXN5bmMgPSAoKTogdm9pZCA9PiB7XG4gICAgZm9yIChjb25zdCBoIG9mIHJlc3luY0hhbmRsZXJzKSB7XG4gICAgICB0cnkgeyBoKCk7IH0gY2F0Y2ggeyAvKiBpc29sYXRlZCAqLyB9XG4gICAgfVxuICB9O1xuICBjb25zdCBkb1N1YnNjcmliZSA9ICgpOiB2b2lkID0+IHtcbiAgICB2b2lkIFByb21pc2UucmVzb2x2ZShzdWJzY3JpYmVyLnN1YnNjcmliZShDQUNIRV9JTlZBTElEQVRJT05fQ0hBTk5FTCkpXG4gICAgICAudGhlbigoKSA9PiByZXN5bmMoKSlcbiAgICAgIC5jYXRjaCgoZXJyOiB1bmtub3duKSA9PiB7XG4gICAgICAgIGVtaXRDb3VudGVyKCdjYWNoZV9pbnZhbGlkYXRpb25fc3Vic2NyaWJlX2ZhaWxlZF90b3RhbCcsIHt9KTtcbiAgICAgICAgbG9nZ2VyLndhcm4oJ0NhY2hlIGludmFsaWRhdGlvbiBzdWJzY3JpYmUgZmFpbGVkOyB3aWxsIHJldHJ5IG9uIG5leHQgcmVjb25uZWN0Jywge1xuICAgICAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfTtcblxuICBzdWJzY3JpYmVyLm9uKCdtZXNzYWdlJywgKGNoYW5uZWw6IHN0cmluZywgcmF3OiBzdHJpbmcpID0+IHtcbiAgICBpZiAoY2hhbm5lbCAhPT0gQ0FDSEVfSU5WQUxJREFUSU9OX0NIQU5ORUwpIHJldHVybjtcbiAgICBsZXQgbXNnOiBDYWNoZUludmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgdHJ5IHtcbiAgICAgIG1zZyA9IEpTT04ucGFyc2UocmF3KSBhcyBDYWNoZUludmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAoY29uc3QgaCBvZiBtZXNzYWdlSGFuZGxlcnMpIHtcbiAgICAgIHRyeSB7IGgobXNnKTsgfSBjYXRjaCB7IC8qIG9uZSBjYWNoZSBjYW4ndCBicmVhayB0aGUgb3RoZXJzICovIH1cbiAgICB9XG4gIH0pO1xuICBzdWJzY3JpYmVyLm9uKCdyZWFkeScsIGRvU3Vic2NyaWJlKTtcbiAgc3Vic2NyaWJlci5vbignZXJyb3InLCAoZTogdW5rbm93bikgPT5cbiAgICBsb2dnZXIud2FybignQ2FjaGUgaW52YWxpZGF0aW9uIHN1YnNjcmliZXIgZXJyb3InLCB7IGVycm9yOiBlcnJvck1lc3NhZ2UoZSkgfSkpO1xuICBpZiAoc3Vic2NyaWJlci5zdGF0dXMgPT09ICdyZWFkeScpIGRvU3Vic2NyaWJlKCk7XG5cbiAgcmV0dXJuIHtcbiAgICBwdWJsaXNoKG1zZykge1xuICAgICAgdm9pZCBQcm9taXNlLnJlc29sdmUoKVxuICAgICAgICAudGhlbigoKSA9PiBwdWJsaXNoZXIucHVibGlzaChDQUNIRV9JTlZBTElEQVRJT05fQ0hBTk5FTCwgSlNPTi5zdHJpbmdpZnkobXNnKSkpXG4gICAgICAgIC5jYXRjaCgoZXJyOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgZW1pdENvdW50ZXIoJ2NhY2hlX2ludmFsaWRhdGlvbl9wdWJsaXNoX2ZhaWxlZF90b3RhbCcsIHsgcHJlZml4OiBtc2cucHJlZml4IH0pO1xuICAgICAgICAgIGxvZ2dlci53YXJuKCdDYWNoZSBpbnZhbGlkYXRpb24gcHVibGlzaCBmYWlsZWQgKG90aGVyIHJlcGxpY2FzIGtlZXAgdGhlIGVudHJ5IHVudGlsIFRUTCknLCB7XG4gICAgICAgICAgICBwcmVmaXg6IG1zZy5wcmVmaXgsIG9wOiBtc2cub3AsIGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBzdWJzY3JpYmUob25NZXNzYWdlLCBvblJlc3luYykge1xuICAgICAgbWVzc2FnZUhhbmRsZXJzLnB1c2gob25NZXNzYWdlKTtcbiAgICAgIHJlc3luY0hhbmRsZXJzLnB1c2gob25SZXN5bmMpO1xuICAgIH0sXG4gIH07XG59XG5cbi8vIHVuZGVmaW5lZCA9IG5vdCB5ZXQgYXR0ZW1wdGVkOyBudWxsID0gYXR0ZW1wdGVkLCBSZWRpcyBub3QgY29uZmlndXJlZC5cbmxldCBlbnZJbnZhbGlkYXRpb25CdXM6IENhY2hlSW52YWxpZGF0aW9uQnVzIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuLyoqIFByb2Nlc3Mtd2lkZSBpbnZhbGlkYXRpb24gYnVzIGZyb20gdGhlIGFtYmllbnQgUmVkaXMgZW52IChudWxsIHdpdGhvdXQgUmVkaXMpLiAqL1xuZnVuY3Rpb24gZ2V0RW52Q2FjaGVJbnZhbGlkYXRpb25CdXMoKTogQ2FjaGVJbnZhbGlkYXRpb25CdXMgfCBudWxsIHtcbiAgaWYgKGVudkludmFsaWRhdGlvbkJ1cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgY2xpZW50ID0gY3JlYXRlRW52UmVkaXNDbGllbnQ8UmVkaXNJbnZhbGlkYXRpb25DbGllbnQ+KCdjYWNoZS1pbnZhbGlkYXRpb24nKTtcbiAgICBlbnZJbnZhbGlkYXRpb25CdXMgPSBjbGllbnQgPyBjcmVhdGVSZWRpc0NhY2hlSW52YWxpZGF0aW9uQnVzKGNsaWVudCkgOiBudWxsO1xuICB9XG4gIHJldHVybiBlbnZJbnZhbGlkYXRpb25CdXM7XG59XG5cbi8qKlxuICogQ2FjaGUgc2VydmljZSB3aXRoIGdldC9zZXQvZGVsIG9wZXJhdGlvbnMgYW5kIGF1dG9tYXRpYyBUVEwgZXhwaXJ5LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBjYWNoZSA9IG5ldyBDYWNoZVNlcnZpY2UoeyBwcmVmaXg6ICdwbHVnaW46JywgZGVmYXVsdFR0bFNlY29uZHM6IDMwMCB9KTtcbiAqXG4gKiAvLyBTZXQgd2l0aCBkZWZhdWx0IFRUTFxuICogYXdhaXQgY2FjaGUuc2V0KCdvcmcxMjM6bGlzdCcsIHBsdWdpbnMpO1xuICpcbiAqIC8vIEdldCAocmV0dXJucyBudWxsIG9uIG1pc3MpXG4gKiBjb25zdCBjYWNoZWQgPSBhd2FpdCBjYWNoZS5nZXQ8UGx1Z2luW10+KCdvcmcxMjM6bGlzdCcpO1xuICpcbiAqIC8vIEludmFsaWRhdGVcbiAqIGF3YWl0IGNhY2hlLmRlbCgnb3JnMTIzOmxpc3QnKTtcbiAqXG4gKiAvLyBJbnZhbGlkYXRlIGJ5IHBhdHRlcm5cbiAqIGF3YWl0IGNhY2hlLmludmFsaWRhdGVQYXR0ZXJuKCdvcmcxMjM6KicpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBDYWNoZVNlcnZpY2Uge1xuICBwcml2YXRlIG1lbW9yeSA9IG5ldyBNYXA8c3RyaW5nLCBDYWNoZUVudHJ5PHVua25vd24+PigpO1xuICAvKipcbiAgICogSW4tZmxpZ2h0IGBnZXRPclNldGAgZmFjdG9yeSBwcm9taXNlcywga2V5ZWQgYnkgZnVsbCBjYWNoZSBrZXkuIENvYWxlc2Nlc1xuICAgKiBjb25jdXJyZW50IGNvbGQgY2FsbGVycyBvbnRvIGEgc2luZ2xlIGBmYWN0b3J5KClgIGludm9jYXRpb24gKHNpbmdsZS1mbGlnaHRcbiAgICogLyBzdGFtcGVkZSBwcm90ZWN0aW9uKTsgZW50cmllcyBhcmUgY2xlYXJlZCBvbmNlIHRoZSBwcm9taXNlIHNldHRsZXMuXG4gICAqL1xuICBwcml2YXRlIGluZmxpZ2h0ID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8dW5rbm93bj4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJlZml4OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFR0bE1zOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWF4RW50cmllczogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IGJ1czogQ2FjaGVJbnZhbGlkYXRpb25CdXMgfCBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IGluc3RhbmNlSWQgPSByYW5kb21VVUlEKCk7XG4gIC8qKlxuICAgKiBCdW1wZWQgb24gRVZFUlkgaW52YWxpZGF0aW9uIChsb2NhbCBvciByZW1vdGUpLiBgZ2V0T3JTZXRgIG9ubHkgY2FjaGVzIGFcbiAgICogZmFjdG9yeSByZXN1bHQgaWYgbm8gaW52YWxpZGF0aW9uIGhhcHBlbmVkIHdoaWxlIHRoZSBmYWN0b3J5IHJhbiDigJQgb3RoZXJ3aXNlXG4gICAqIGl0IGNvdWxkIHJlLWNhY2hlIGEgdmFsdWUgcmVhZCBiZWZvcmUgdGhlIHdyaXRlIHRoYXQgaW52YWxpZGF0ZWQgaXQuXG4gICAqL1xuICBwcml2YXRlIGdlbmVyYXRpb24gPSAwO1xuXG4gIC8qKiBDYWNoZSBtZXRyaWNzIOKAlCB0cmFja3MgaGl0cywgbWlzc2VzLCBhbmQgaW52YWxpZGF0aW9ucy4gKi9cbiAgcmVhZG9ubHkgbWV0cmljcyA9IHsgaGl0czogMCwgbWlzc2VzOiAwLCBzZXRzOiAwLCBpbnZhbGlkYXRpb25zOiAwIH07XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBDYWNoZUNvbmZpZykge1xuICAgIHRoaXMucHJlZml4ID0gY29uZmlnLnByZWZpeDtcbiAgICB0aGlzLmRlZmF1bHRUdGxNcyA9IGNvbmZpZy5kZWZhdWx0VHRsU2Vjb25kcyAqIDEwMDA7XG4gICAgdGhpcy5tYXhFbnRyaWVzID0gY29uZmlnLm1heEVudHJpZXMgPz8gMTAwMDtcbiAgICB0aGlzLmJ1cyA9IGNvbmZpZy5pbnZhbGlkYXRpb25CdXMgPT09IHVuZGVmaW5lZCA/IGdldEVudkNhY2hlSW52YWxpZGF0aW9uQnVzKCkgOiBjb25maWcuaW52YWxpZGF0aW9uQnVzO1xuICAgIHRoaXMuYnVzPy5zdWJzY3JpYmUoXG4gICAgICAobXNnKSA9PiB7XG4gICAgICAgIGlmIChtc2cub3JpZ2luID09PSB0aGlzLmluc3RhbmNlSWQgfHwgbXNnLnByZWZpeCAhPT0gdGhpcy5wcmVmaXgpIHJldHVybjtcbiAgICAgICAgdGhpcy5hcHBseUxvY2FsSW52YWxpZGF0aW9uKG1zZy5vcCwgbXNnLmtleSk7XG4gICAgICB9LFxuICAgICAgKCkgPT4gdGhpcy5hcHBseUxvY2FsSW52YWxpZGF0aW9uKCdjbGVhcicpLFxuICAgICk7XG4gIH1cblxuICAvKiogQnJvYWRjYXN0IGFuIGludmFsaWRhdGlvbiB0byB0aGUgb3RoZXIgcmVwbGljYXMuICovXG4gIHByaXZhdGUgYnJvYWRjYXN0KG9wOiBDYWNoZUludmFsaWRhdGlvbk1lc3NhZ2VbJ29wJ10sIGtleT86IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuYnVzPy5wdWJsaXNoKHsgb3JpZ2luOiB0aGlzLmluc3RhbmNlSWQsIHByZWZpeDogdGhpcy5wcmVmaXgsIG9wLCAuLi4oa2V5ICE9PSB1bmRlZmluZWQgJiYgeyBrZXkgfSkgfSk7XG4gIH1cblxuICAvKiogQXBwbHkgYW4gaW52YWxpZGF0aW9uIHRvIFRISVMgcHJvY2VzcydzIGluLW1lbW9yeSBlbnRyaWVzLiBSZXR1cm5zIHRoZSBjb3VudCByZW1vdmVkLiAqL1xuICBwcml2YXRlIGFwcGx5TG9jYWxJbnZhbGlkYXRpb24ob3A6IENhY2hlSW52YWxpZGF0aW9uTWVzc2FnZVsnb3AnXSwga2V5Pzogc3RyaW5nKTogbnVtYmVyIHtcbiAgICB0aGlzLmdlbmVyYXRpb24rKztcbiAgICBpZiAob3AgPT09ICdjbGVhcicpIHtcbiAgICAgIGNvbnN0IG4gPSB0aGlzLm1lbW9yeS5zaXplO1xuICAgICAgdGhpcy5tZW1vcnkuY2xlYXIoKTtcbiAgICAgIHJldHVybiBuO1xuICAgIH1cbiAgICBpZiAob3AgPT09ICdkZWwnKSB7XG4gICAgICByZXR1cm4gdGhpcy5tZW1vcnkuZGVsZXRlKHRoaXMuZnVsbEtleShrZXkgPz8gJycpKSA/IDEgOiAwO1xuICAgIH1cbiAgICAvLyBHbG9iIHBhdHRlcm4uIEVzY2FwZSByZWdleCBtZXRhY2hhcmFjdGVycyBmaXJzdCBzbyBhIGxpdGVyYWwgYC5gL2AoYC9gW2BcbiAgICAvLyBpbiBhIGtleSBwcmVmaXggKGUuZy4gYG9yZzp2MS4yOipgKSBjYW4ndCBvdmVyLW1hdGNoIG9yIHRocm93IChhIHRocm93XG4gICAgLy8gaGVyZSB3b3VsZCBsZWF2ZSBlbnRyaWVzIHN0YWxlKTsgb25seSBgKmAgaXMgdHJlYXRlZCBhcyBhIHdpbGRjYXJkLlxuICAgIGNvbnN0IGZwID0gdGhpcy5mdWxsS2V5KGtleSA/PyAnJyk7XG4gICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKCdeJyArIGZwLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJykucmVwbGFjZSgvXFxcXFxcKi9nLCAnLionKSArICckJyk7XG4gICAgbGV0IGRlbGV0ZWQgPSAwO1xuICAgIGZvciAoY29uc3QgayBvZiB0aGlzLm1lbW9yeS5rZXlzKCkpIHtcbiAgICAgIGlmIChyZWdleC50ZXN0KGspKSB7XG4gICAgICAgIHRoaXMubWVtb3J5LmRlbGV0ZShrKTtcbiAgICAgICAgZGVsZXRlZCsrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGVsZXRlZDtcbiAgfVxuXG4gIHByaXZhdGUgZnVsbEtleShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMucHJlZml4fSR7a2V5fWA7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgY2FjaGVkIHZhbHVlLiBSZXR1cm5zIG51bGwgb24gbWlzcyBvciBlcnJvci5cbiAgICpcbiAgICogVGhlIHJldHVybmVkIHZhbHVlIGlzIGFuIElOREVQRU5ERU5UIGRlZXAgY29weSDigJQgbXV0YXRpbmcgaXQgbmV2ZXIgYWZmZWN0c1xuICAgKiB0aGUgY2FjaGVkIGVudHJ5LlxuICAgKi9cbiAgYXN5bmMgZ2V0PFQ+KGtleTogc3RyaW5nKTogUHJvbWlzZTxUIHwgbnVsbD4ge1xuICAgIGNvbnN0IGZrID0gdGhpcy5mdWxsS2V5KGtleSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZW50cnkgPSB0aGlzLm1lbW9yeS5nZXQoZmspO1xuICAgICAgaWYgKCFlbnRyeSkgeyB0aGlzLm1ldHJpY3MubWlzc2VzKys7IHJldHVybiBudWxsOyB9XG4gICAgICBpZiAoRGF0ZS5ub3coKSA+IGVudHJ5LmV4cGlyZXNBdCkge1xuICAgICAgICB0aGlzLm1lbW9yeS5kZWxldGUoZmspO1xuICAgICAgICB0aGlzLm1ldHJpY3MubWlzc2VzKys7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgLy8gTFJVIHRvdWNoOiBkZWxldGUgKyByZS1pbnNlcnQgbW92ZXMgdGhpcyBrZXkgdG8gdGhlIG5ld2VzdCBwb3NpdGlvblxuICAgICAgLy8gKE1hcCBwcmVzZXJ2ZXMgaW5zZXJ0aW9uIG9yZGVyKSwgc28gYHNldGAncyBvbGRlc3QtZmlyc3QgZXZpY3Rpb24gaXMgYVxuICAgICAgLy8gdHJ1ZSBsZWFzdC1yZWNlbnRseS1VU0VEIGV2aWN0aW9uIHJhdGhlciB0aGFuIGZpcnN0LWluc2VydGVkIChGSUZPKS5cbiAgICAgIHRoaXMubWVtb3J5LmRlbGV0ZShmayk7XG4gICAgICB0aGlzLm1lbW9yeS5zZXQoZmssIGVudHJ5KTtcbiAgICAgIHRoaXMubWV0cmljcy5oaXRzKys7XG4gICAgICAvLyBDbG9uZSBzbyBhIGNhbGxlciBtdXRhdGluZyB0aGUgcmVzdWx0IGNhbid0IGNvcnJ1cHQgdGhlIHNoYXJlZCBlbnRyeS5cbiAgICAgIHJldHVybiBjbG9uZVZhbHVlKGVudHJ5LnZhbHVlKSBhcyBUO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5tZXRyaWNzLm1pc3NlcysrO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCBhIGNhY2hlZCB2YWx1ZSB3aXRoIG9wdGlvbmFsIFRUTCBvdmVycmlkZS5cbiAgICpcbiAgICogQHBhcmFtIGtleSAtIENhY2hlIGtleSAocHJlZml4IGlzIGFkZGVkIGF1dG9tYXRpY2FsbHkpXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFZhbHVlIHRvIGNhY2hlXG4gICAqIEBwYXJhbSB0dGxTZWNvbmRzIC0gVFRMIG92ZXJyaWRlICh1c2VzIGRlZmF1bHQgaWYgbm90IHByb3ZpZGVkKVxuICAgKi9cbiAgYXN5bmMgc2V0PFQ+KGtleTogc3RyaW5nLCB2YWx1ZTogVCwgdHRsU2Vjb25kcz86IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGZrID0gdGhpcy5mdWxsS2V5KGtleSk7XG4gICAgY29uc3QgdHRsID0gdHRsU2Vjb25kcyA/PyB0aGlzLmRlZmF1bHRUdGxNcyAvIDEwMDA7XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5tZXRyaWNzLnNldHMrKztcbiAgICAgIC8vIEEgd3JpdGUgY291bnRzIGFzIGEgdXNlLCBzbyBkcm9wIGFueSBleGlzdGluZyBlbnRyeSBmaXJzdFxuICAgICAgLy8gYW5kIHJlLWluc2VydCBiZWxvdyBhcyB0aGUgbmV3ZXN0IChNYXAgcHJlc2VydmVzIGluc2VydGlvbiBvcmRlcikuIFRoaXNcbiAgICAgIC8vIGtlZXBzIHRoZSBNYXAgb3JkZXJlZCBvbGRlc3QtVVNFRCDihpIgbmV3ZXN0LVVTRUQgc28gdGhlIGV2aWN0aW9uIGJlbG93IGlzXG4gICAgICAvLyB0cnVlIExSVSwgYW5kIGF2b2lkcyBldmljdGluZyBhIHZpY3RpbSB3aGVuIG1lcmVseSB1cGRhdGluZyBhIGtleS5cbiAgICAgIHRoaXMubWVtb3J5LmRlbGV0ZShmayk7XG4gICAgICBpZiAodGhpcy5tZW1vcnkuc2l6ZSA+PSB0aGlzLm1heEVudHJpZXMpIHtcbiAgICAgICAgY29uc3QgZmlyc3RLZXkgPSB0aGlzLm1lbW9yeS5rZXlzKCkubmV4dCgpLnZhbHVlO1xuICAgICAgICBpZiAoZmlyc3RLZXkpIHRoaXMubWVtb3J5LmRlbGV0ZShmaXJzdEtleSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubWVtb3J5LnNldChmaywge1xuICAgICAgICB2YWx1ZSxcbiAgICAgICAgZXhwaXJlc0F0OiBEYXRlLm5vdygpICsgdHRsICogMTAwMCxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gQ2FjaGUgc2V0IGZhaWx1cmUgaXMgbm9uLWZhdGFsXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhIGNhY2hlZCB2YWx1ZS5cbiAgICovXG4gIGFzeW5jIGRlbChrZXk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmFwcGx5TG9jYWxJbnZhbGlkYXRpb24oJ2RlbCcsIGtleSk7XG4gICAgICB0aGlzLmJyb2FkY2FzdCgnZGVsJywga2V5KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIENhY2hlIGRlbGV0ZSBmYWlsdXJlIGlzIG5vbi1mYXRhbFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbnZhbGlkYXRlIGFsbCBrZXlzIG1hdGNoaW5nIGEgcGF0dGVybiAoZS5nLiwgJ29yZzEyMzoqJykuXG4gICAqIE9ubHkgYCpgIGlzIGEgd2lsZGNhcmQuXG4gICAqL1xuICBhc3luYyBpbnZhbGlkYXRlUGF0dGVybihwYXR0ZXJuOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBBcHBseSBsb2NhbGx5LCB0aGVuIGZhbiBvdXQgdG8gdGhlIG90aGVyIHJlcGxpY2FzLlxuICAgICAgY29uc3QgZGVsZXRlZCA9IHRoaXMuYXBwbHlMb2NhbEludmFsaWRhdGlvbigncGF0dGVybicsIHBhdHRlcm4pO1xuICAgICAgdGhpcy5icm9hZGNhc3QoJ3BhdHRlcm4nLCBwYXR0ZXJuKTtcbiAgICAgIHRoaXMubWV0cmljcy5pbnZhbGlkYXRpb25zICs9IGRlbGV0ZWQ7XG4gICAgICByZXR1cm4gZGVsZXRlZDtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgb3IgY29tcHV0ZTogcmV0dXJucyBjYWNoZWQgdmFsdWUgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgY2FsbHMgdGhlXG4gICAqIGZhY3RvcnkgZnVuY3Rpb24sIGNhY2hlcyB0aGUgcmVzdWx0LCBhbmQgcmV0dXJucyBpdC5cbiAgICpcbiAgICogU2luZ2xlLWZsaWdodCAvIHN0YW1wZWRlIHByb3RlY3Rpb246IHdoZW4gTiBjYWxsZXJzIG1pc3MgY29uY3VycmVudGx5IGZvclxuICAgKiB0aGUgc2FtZSBrZXksIG9ubHkgT05FIGBmYWN0b3J5KClgIHJ1bnMg4oCUIHRoZSByZXN0IGF3YWl0IGl0cyBzaGFyZWQgcHJvbWlzZS5cbiAgICogVGhlIGluLWZsaWdodCBlbnRyeSBpcyBjbGVhcmVkIG9uY2UgaXQgc2V0dGxlcyAoc3VjY2VzcyBvciBmYWlsdXJlKSwgc28gYVxuICAgKiBmYWlsZWQgZmFjdG9yeSBkb2Vzbid0IHBvaXNvbiBsYXRlciBjYWxscy5cbiAgICpcbiAgICogQHBhcmFtIGtleSAtIENhY2hlIGtleVxuICAgKiBAcGFyYW0gZmFjdG9yeSAtIEFzeW5jIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlIHZhbHVlIG9uIGNhY2hlIG1pc3NcbiAgICogQHBhcmFtIHR0bFNlY29uZHMgLSBPcHRpb25hbCBUVEwgb3ZlcnJpZGVcbiAgICogQHJldHVybnMgVGhlIGNhY2hlZCBvciBjb21wdXRlZCB2YWx1ZVxuICAgKi9cbiAgYXN5bmMgZ2V0T3JTZXQ8VD4oa2V5OiBzdHJpbmcsIGZhY3Rvcnk6ICgpID0+IFByb21pc2U8VD4sIHR0bFNlY29uZHM/OiBudW1iZXIpOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCBjYWNoZWQgPSBhd2FpdCB0aGlzLmdldDxUPihrZXkpO1xuICAgIGlmIChjYWNoZWQgIT09IG51bGwpIHJldHVybiBjYWNoZWQ7XG5cbiAgICBjb25zdCBmayA9IHRoaXMuZnVsbEtleShrZXkpO1xuICAgIC8vIENvYWxlc2NlIGNvbmN1cnJlbnQgY29sZCBjYWxsZXJzIG9udG8gYSBzaW5nbGUgZmFjdG9yeSgpIGludm9jYXRpb24uIFRoZVxuICAgIC8vIGluLWZsaWdodCBwcm9taXNlIHJlc29sdmVzIHRvIHRoZSBSQVcgdmFsdWU7IGVhY2ggYXdhaXRlciAodGhlIHByaW1hcnlcbiAgICAvLyBjYWxsZXIgYmVsb3cgQU5EIGV2ZXJ5IGNvYWxlc2NlZCBjYWxsZXIgaGVyZSkgY2xvbmVzIGl0IElOREVQRU5ERU5UTFkuXG4gICAgLy8gQ2xvbmluZyBpbnNpZGUgdGhlIGZsaWdodCBpbnN0ZWFkIHdvdWxkIGhhbmQgb25lIHNoYXJlZCBjbG9uZSB0byBhbGwgTlxuICAgIC8vIGNvYWxlc2NlZCBjYWxsZXJzLCBzbyBvbmUgY2FsbGVyIG11dGF0aW5nIGl0cyBcImluZGVwZW5kZW50XCIgcmVzdWx0IHdvdWxkXG4gICAgLy8gY29ycnVwdCB3aGF0IHRoZSBvdGhlcnMgcmVhZCDigJQgdGhlIGV4YWN0IGZvb3RndW4gZ2V0KCkncyBjbG9uZS1vbi1yZWFkXG4gICAgLy8gcHJldmVudHMuXG4gICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLmluZmxpZ2h0LmdldChmaykgYXMgUHJvbWlzZTxUPiB8IHVuZGVmaW5lZDtcbiAgICBpZiAoZXhpc3RpbmcpIHJldHVybiBjbG9uZVZhbHVlKGF3YWl0IGV4aXN0aW5nKTtcblxuICAgIGNvbnN0IGdlbmVyYXRpb25BdFN0YXJ0ID0gdGhpcy5nZW5lcmF0aW9uO1xuICAgIGNvbnN0IGZsaWdodCA9IChhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IGZhY3RvcnkoKTtcbiAgICAgIC8vIEFuIGludmFsaWRhdGlvbiAoaGVyZSBvciBvbiBhbm90aGVyIHJlcGxpY2EpIGxhbmRlZCB3aGlsZSB0aGUgZmFjdG9yeVxuICAgICAgLy8gcmFuOiBpdHMgcmVhZCBtYXkgcHJlZGF0ZSB0aGF0IHdyaXRlLCBzbyBkb24ndCBjYWNoZSBpdC5cbiAgICAgIGlmICh0aGlzLmdlbmVyYXRpb24gPT09IGdlbmVyYXRpb25BdFN0YXJ0KSBhd2FpdCB0aGlzLnNldChrZXksIHZhbHVlLCB0dGxTZWNvbmRzKTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9KSgpO1xuICAgIHRoaXMuaW5mbGlnaHQuc2V0KGZrLCBmbGlnaHQpO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gY2xvbmVWYWx1ZShhd2FpdCBmbGlnaHQpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmluZmxpZ2h0LmRlbGV0ZShmayk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIGFsbCBlbnRyaWVzICh1c2VmdWwgZm9yIHRlc3RpbmcpLlxuICAgKi9cbiAgYXN5bmMgY2xlYXIoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5hcHBseUxvY2FsSW52YWxpZGF0aW9uKCdjbGVhcicpO1xuICAgIHRoaXMuYnJvYWRjYXN0KCdjbGVhcicpO1xuICB9XG5cbiAgLyoqIEN1cnJlbnQgaW4tbWVtb3J5IGNhY2hlIHNpemUgKGZvciBkaWFnbm9zdGljcykuICovXG4gIGdldCBzaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubWVtb3J5LnNpemU7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBjYWNoZSBzZXJ2aWNlIGluc3RhbmNlLlxuICpcbiAqIEBwYXJhbSBwcmVmaXggLSBOYW1lc3BhY2UgcHJlZml4IChlLmcuLCAnY29tcGxpYW5jZTonLCAncGx1Z2luOicpXG4gKiBAcGFyYW0gZGVmYXVsdFR0bFNlY29uZHMgLSBEZWZhdWx0IFRUTCBpbiBzZWNvbmRzIChkZWZhdWx0IDMwMCA9IDUgbWluKVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2FjaGVTZXJ2aWNlKHByZWZpeDogc3RyaW5nLCBkZWZhdWx0VHRsU2Vjb25kcyA9IDMwMCk6IENhY2hlU2VydmljZSB7XG4gIHJldHVybiBuZXcgQ2FjaGVTZXJ2aWNlKHsgcHJlZml4LCBkZWZhdWx0VHRsU2Vjb25kcyB9KTtcbn1cbiJdfQ==
|
|
372
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtc2VydmljZS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2NhY2hlLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRXBDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXBELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQztBQVU3Qzs7Ozs7OztHQU9HO0FBQ0gsU0FBUyxVQUFVLENBQUksS0FBUTtJQUM3QixJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzlELElBQUksQ0FBQztRQUNILE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBTSxDQUFDO0lBQ2hELENBQUM7QUFDSCxDQUFDO0FBa0VELE1BQU0sMEJBQTBCLEdBQUcsa0JBQWtCLENBQUM7QUFFdEQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLCtCQUErQixDQUFDLFNBQWtDO0lBQ2hGLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN6QyxNQUFNLGVBQWUsR0FBbUQsRUFBRSxDQUFDO0lBQzNFLE1BQU0sY0FBYyxHQUFzQixFQUFFLENBQUM7SUFFN0MsTUFBTSxNQUFNLEdBQUcsR0FBUyxFQUFFO1FBQ3hCLEtBQUssTUFBTSxDQUFDLElBQUksY0FBYyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDO2dCQUFDLENBQUMsRUFBRSxDQUFDO1lBQUMsQ0FBQztZQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDLENBQUM7SUFDRixNQUFNLFdBQVcsR0FBRyxHQUFTLEVBQUU7UUFDN0IsS0FBSyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsMEJBQTBCLENBQUMsQ0FBQzthQUNuRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDcEIsS0FBSyxDQUFDLENBQUMsR0FBWSxFQUFFLEVBQUU7WUFDdEIsV0FBVyxDQUFDLDJDQUEyQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzdELE1BQU0sQ0FBQyxJQUFJLENBQUMsbUVBQW1FLEVBQUU7Z0JBQy9FLEtBQUssRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDO2FBQ3pCLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDO0lBRUYsVUFBVSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxPQUFlLEVBQUUsR0FBVyxFQUFFLEVBQUU7UUFDeEQsSUFBSSxPQUFPLEtBQUssMEJBQTBCO1lBQUUsT0FBTztRQUNuRCxJQUFJLEdBQTZCLENBQUM7UUFDbEMsSUFBSSxDQUFDO1lBQ0gsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUE2QixDQUFDO1FBQ3BELENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPO1FBQ1QsQ0FBQztRQUNELEtBQUssTUFBTSxDQUFDLElBQUksZUFBZSxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDO2dCQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUFDLENBQUM7WUFBQyxNQUFNLENBQUMsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUNILFVBQVUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3BDLFVBQVUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FDcEMsTUFBTSxDQUFDLElBQUksQ0FBQyxxQ0FBcUMsRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEYsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLE9BQU87UUFBRSxXQUFXLEVBQUUsQ0FBQztJQUVqRCxPQUFPO1FBQ0wsT0FBTyxDQUFDLEdBQUc7WUFDVCxLQUFLLE9BQU8sQ0FBQyxPQUFPLEVBQUU7aUJBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLDBCQUEwQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztpQkFDOUUsS0FBSyxDQUFDLENBQUMsR0FBWSxFQUFFLEVBQUU7Z0JBQ3RCLFdBQVcsQ0FBQyx5Q0FBeUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztnQkFDL0UsTUFBTSxDQUFDLElBQUksQ0FBQyw2RUFBNkUsRUFBRTtvQkFDekYsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUM7aUJBQ3pELENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUNELFNBQVMsQ0FBQyxTQUFTLEVBQUUsUUFBUTtZQUMzQixlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2hDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQseUVBQXlFO0FBQ3pFLElBQUksa0JBQTJELENBQUM7QUFFaEUscUZBQXFGO0FBQ3JGLFNBQVMsMEJBQTBCO0lBQ2pDLElBQUksa0JBQWtCLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDckMsTUFBTSxNQUFNLEdBQUcsb0JBQW9CLENBQTBCLG9CQUFvQixDQUFDLENBQUM7UUFDbkYsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQywrQkFBK0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQy9FLENBQUM7SUFDRCxPQUFPLGtCQUFrQixDQUFDO0FBQzVCLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBQ2YsTUFBTSxHQUFHLElBQUksR0FBRyxFQUErQixDQUFDO0lBQ3hEOzs7O09BSUc7SUFDSyxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQTRCLENBQUM7SUFDdEMsTUFBTSxDQUFTO0lBQ2YsWUFBWSxDQUFTO0lBQ3JCLFVBQVUsQ0FBUztJQUNuQixHQUFHLENBQThCO0lBQ2pDLFVBQVUsR0FBRyxVQUFVLEVBQUUsQ0FBQztJQUMzQzs7OztPQUlHO0lBQ0ssVUFBVSxHQUFHLENBQUMsQ0FBQztJQUV2Qiw4REFBOEQ7SUFDckQsT0FBTyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBRXJFLFlBQVksTUFBbUI7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQzVCLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUNwRCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDO1FBQzVDLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLGVBQWUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUM7UUFDeEcsSUFBSSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQ2pCLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDTixJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU87WUFDekUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLENBQUMsRUFDRCxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQzNDLENBQUM7SUFDSixDQUFDO0lBRUQsdURBQXVEO0lBQy9DLFNBQVMsQ0FBQyxFQUFrQyxFQUFFLEdBQVk7UUFDaEUsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsS0FBSyxTQUFTLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3RyxDQUFDO0lBRUQsNEZBQTRGO0lBQ3BGLHNCQUFzQixDQUFDLEVBQWtDLEVBQUUsR0FBWTtRQUM3RSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxFQUFFLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDbkIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNwQixPQUFPLENBQUMsQ0FBQztRQUNYLENBQUM7UUFDRCxJQUFJLEVBQUUsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNqQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFDRCwyRUFBMkU7UUFDM0UseUVBQXlFO1FBQ3pFLHNFQUFzRTtRQUN0RSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNuQyxNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZHLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNoQixLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNuQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRU8sT0FBTyxDQUFDLEdBQVc7UUFDekIsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLEdBQUcsQ0FBSSxHQUFXO1FBQ3RCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFN0IsSUFBSSxDQUFDO1lBQ0gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQUMsT0FBTyxJQUFJLENBQUM7WUFBQyxDQUFDO1lBQ25ELElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3RCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUNELHNFQUFzRTtZQUN0RSx5RUFBeUU7WUFDekUsdUVBQXVFO1lBQ3ZFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BCLHdFQUF3RTtZQUN4RSxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFNLENBQUM7UUFDdEMsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxHQUFHLENBQUksR0FBVyxFQUFFLEtBQVEsRUFBRSxVQUFtQjtRQUNyRCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLE1BQU0sR0FBRyxHQUFHLFVBQVUsSUFBSSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUVuRCxJQUFJLENBQUM7WUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BCLDREQUE0RDtZQUM1RCwwRUFBMEU7WUFDMUUsMkVBQTJFO1lBQzNFLHFFQUFxRTtZQUNyRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN2QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDeEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUM7Z0JBQ2pELElBQUksUUFBUTtvQkFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM3QyxDQUFDO1lBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFO2dCQUNsQixLQUFLO2dCQUNMLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUk7YUFDbkMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLGlDQUFpQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFXO1FBQ25CLElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLG9DQUFvQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFlO1FBQ3JDLElBQUksQ0FBQztZQUNILHFEQUFxRDtZQUNyRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2hFLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxJQUFJLE9BQU8sQ0FBQztZQUN0QyxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDSCxLQUFLLENBQUMsUUFBUSxDQUFJLEdBQVcsRUFBRSxPQUF5QixFQUFFLFVBQW1CO1FBQzNFLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBSSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLE1BQU0sS0FBSyxJQUFJO1lBQUUsT0FBTyxNQUFNLENBQUM7UUFFbkMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QiwyRUFBMkU7UUFDM0UseUVBQXlFO1FBQ3pFLHlFQUF5RTtRQUN6RSx5RUFBeUU7UUFDekUsMkVBQTJFO1FBQzNFLHlFQUF5RTtRQUN6RSxZQUFZO1FBQ1osTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUEyQixDQUFDO1FBQ2pFLElBQUksUUFBUTtZQUFFLE9BQU8sVUFBVSxDQUFDLE1BQU0sUUFBUSxDQUFDLENBQUM7UUFFaEQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQzFDLE1BQU0sTUFBTSxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDekIsTUFBTSxLQUFLLEdBQUcsTUFBTSxPQUFPLEVBQUUsQ0FBQztZQUM5Qix3RUFBd0U7WUFDeEUsMkRBQTJEO1lBQzNELElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxpQkFBaUI7Z0JBQUUsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDbEYsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQztZQUNILE9BQU8sVUFBVSxDQUFDLE1BQU0sTUFBTSxDQUFDLENBQUM7UUFDbEMsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxLQUFLO1FBQ1QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELHNEQUFzRDtJQUN0RCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQzFCLENBQUM7Q0FDRjtBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE1BQWMsRUFBRSxpQkFBaUIsR0FBRyxHQUFHO0lBQ3hFLE9BQU8sSUFBSSxZQUFZLENBQUMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO0FBQ3pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBMaWdodHdlaWdodCBjYWNoaW5nIHNlcnZpY2Ugd2l0aCBUVEwgc3VwcG9ydC5cbiAqXG4gKiBTdG9yYWdlIGlzIGEgcGVyLXByb2Nlc3MgdHJ1ZS1MUlUgTWFwIChubyBleHRlcm5hbCBkZXBlbmRlbmNpZXMpLlxuICpcbiAqIENyb3NzLXJlcGxpY2EgaW52YWxpZGF0aW9uOiBldmVyeSBzZXJ2aWNlIHJ1bnMgc2V2ZXJhbFxuICogcmVwbGljYXMgKEhQQSksIGVhY2ggd2l0aCBpdHMgT1dOIGluLW1lbW9yeSBjYWNoZS4gQW4gaW52YWxpZGF0aW9uIHBlcmZvcm1lZCBvblxuICogb25lIHBvZCAoYGRlbGAgLyBgaW52YWxpZGF0ZVBhdHRlcm5gIC8gYGNsZWFyYCkgaXMgYnJvYWRjYXN0IG92ZXIgUmVkaXMgcHViL3N1YlxuICogKHtAbGluayBDYWNoZUludmFsaWRhdGlvbkJ1c30sIHdpcmVkIGZyb20gdGhlIGFtYmllbnQgUmVkaXMgZW52IGJ5IGRlZmF1bHQpIGFuZFxuICogYXBwbGllZCBieSBldmVyeSBvdGhlciBwb2QsIHNvIGEgd3JpdGUgb24gcG9kIEEgY2FuJ3QgbGVhdmUgcG9kIEIgc2VydmluZyB0aGVcbiAqIHN0YWxlIGVudHJ5IHVudGlsIGl0cyBUVEwgbGFwc2VzLiBBIHBvZCB3aG9zZSBzdWJzY3JpYmVyIChyZSljb25uZWN0cyBmbHVzaGVzXG4gKiBpdHMgbG9jYWwgY2FjaGUg4oCUIGl0IG1heSBoYXZlIG1pc3NlZCBpbnZhbGlkYXRpb25zIHdoaWxlIGRpc2Nvbm5lY3RlZCDigJQgYW5kIGFcbiAqIGBnZXRPclNldGAgd2hvc2UgZmFjdG9yeSByYWNlZCBhbiBpbnZhbGlkYXRpb24gZG9lcyBub3QgY2FjaGUgaXRzIHJlc3VsdC5cbiAqXG4gKiBEZXNpZ246XG4gKiAtIEFsbCBvcGVyYXRpb25zIGFyZSBmYWlsLXNhZmU6IGNhY2hlIG1pc3Nlcy9lcnJvcnMgcmV0dXJuIG51bGwsIG5ldmVyIHRocm93XG4gKiAtIFJlYWRzIGRlZXAtY2xvbmUsIHNvIGV2ZXJ5IGNhbGxlciBnZXRzIGFuIGluZGVwZW5kZW50IGNvcHkgKG11dGF0aW5nIGFcbiAqICAgcmVzdWx0IGlzIGFsd2F5cyBzYWZlKVxuICogLSBgZ2V0T3JTZXRgIGlzIHNpbmdsZS1mbGlnaHQ6IGNvbmN1cnJlbnQgbWlzc2VzIHNoYXJlIG9uZSBmYWN0b3J5KCkgY2FsbFxuICogLSBLZXkgbmFtZXNwYWNlIHByZWZpeGluZyB0byBhdm9pZCBjb2xsaXNpb25zIGJldHdlZW4gc2VydmljZXNcbiAqL1xuXG5pbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSAnY3J5cHRvJztcblxuaW1wb3J0IHsgY3JlYXRlRW52UmVkaXNDbGllbnQgfSBmcm9tICcuL2Vudi1yZWRpcy5qcyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgZW1pdENvdW50ZXIgfSBmcm9tICcuLi91dGlscy9tZXRyaWMtZW1pdHRlci5qcyc7XG5pbXBvcnQgeyBlcnJvck1lc3NhZ2UgfSBmcm9tICcuLi91dGlscy9yZXNwb25zZS5qcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignY2FjaGUtc2VydmljZScpO1xuXG4vKipcbiAqIENhY2hlIGVudHJ5IHdpdGggdmFsdWUgYW5kIGV4cGlyYXRpb24gdGltZS5cbiAqL1xuaW50ZXJmYWNlIENhY2hlRW50cnk8VD4ge1xuICB2YWx1ZTogVDtcbiAgZXhwaXJlc0F0OiBudW1iZXI7IC8vIFVuaXggdGltZXN0YW1wIGluIG1zXG59XG5cbi8qKlxuICogRGVlcC1jbG9uZSBhIHZhbHVlIHNvIHRoZSBjYWNoZSBoYW5kcyBiYWNrIGFuIElOREVQRU5ERU5UIGNvcHkgb24gZXZlcnkgcmVhZC5cbiAqIFdpdGhvdXQgdGhpcyBpdCByZXR1cm5zIHRoZSBzYW1lIHN0b3JlZCBvYmplY3QgcmVmZXJlbmNlLCBzbyBhIGNvbnN1bWVyXG4gKiBtdXRhdGluZyBhIFwiY2FjaGVkXCIgb2JqZWN0IHNpbGVudGx5IGNvcnJ1cHRzIHRoZSBzaGFyZWQgY2FjaGUuXG4gKlxuICogUHJpbWl0aXZlcyBhcmUgcmV0dXJuZWQgYXMtaXMuIFByZWZlcnMgdGhlIHN0cnVjdHVyZWQtY2xvbmUgYWxnb3JpdGhtOyBmYWxsc1xuICogYmFjayB0byBhIEpTT04gcm91bmQtdHJpcCBvbiBvbGRlciBydW50aW1lcyBvciBleG90aWMgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBjbG9uZVZhbHVlPFQ+KHZhbHVlOiBUKTogVCB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSByZXR1cm4gdmFsdWU7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHN0cnVjdHVyZWRDbG9uZSh2YWx1ZSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHZhbHVlKSkgYXMgVDtcbiAgfVxufVxuXG4vKipcbiAqIE1pbmltYWwgUmVkaXMga2V5L3ZhbHVlIGNsaWVudCBzdXJmYWNlIChzdWJzZXQgb2YgaW9yZWRpcykgc2hhcmVkIGJ5IHRoZVxuICogdG9rZW4tcmV2b2NhdGlvbiBwdWJsaXNoZXIvcmVhZGVyIGFuZCBwbGF0Zm9ybSdzIFJlZGlzIGhlbHBlcnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVkaXNDYWNoZUNsaWVudCB7XG4gIGdldChrZXk6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD47XG4gIHNldChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKTogUHJvbWlzZTx1bmtub3duPjtcbiAgZGVsKC4uLmtleXM6IHN0cmluZ1tdKTogUHJvbWlzZTxudW1iZXI+O1xuICAvKipcbiAgICogU2VydmVyLXNpZGUgTHVhIChpb3JlZGlzIGBldmFsKHNjcmlwdCwgbnVtS2V5cywgLi4ua2V5c0FuZEFyZ3MpYCkuIE9wdGlvbmFsXG4gICAqIHNvIGEgcGxhaW4ga2V5L3ZhbHVlIGZha2Ugc3RpbGwgc2F0aXNmaWVzIHRoZSBpbnRlcmZhY2U7IHRoZSB3cml0ZXJzIHRoYXRcbiAgICogbmVlZCBhdG9taWMgY29tcGFyZS1hbmQtc2V0IChlLmcuIGBwdWJsaXNoVG9rZW5SZXZvY2F0aW9uYCkgcmVmdXNlIGEgY2xpZW50XG4gICAqIHdpdGhvdXQgaXQgcmF0aGVyIHRoYW4gZmFsbCBiYWNrIHRvIGEgcmFjeSByZWFkLW1vZGlmeS13cml0ZS5cbiAgICovXG4gIGV2YWw/KHNjcmlwdDogc3RyaW5nLCBudW1LZXlzOiBudW1iZXIsIC4uLmFyZ3M6IEFycmF5PHN0cmluZyB8IG51bWJlcj4pOiBQcm9taXNlPHVua25vd24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlQ29uZmlnIHtcbiAgLyoqIEtleSBwcmVmaXggZm9yIG5hbWVzcGFjZSBpc29sYXRpb24gKGUuZy4sICdwbHVnaW46JywgJ2NvbXBsaWFuY2U6JykgKi9cbiAgcHJlZml4OiBzdHJpbmc7XG4gIC8qKiBEZWZhdWx0IFRUTCBpbiBzZWNvbmRzICovXG4gIGRlZmF1bHRUdGxTZWNvbmRzOiBudW1iZXI7XG4gIC8qKiBNYXggZW50cmllcyBmb3IgdGhlIGNhY2hlIChkZWZhdWx0IDEwMDApICovXG4gIG1heEVudHJpZXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBDcm9zcy1yZXBsaWNhIGludmFsaWRhdGlvbiBidXMuIE9taXQgdG8gdXNlIHRoZSBzaGFyZWQgZW52LVJlZGlzIGJ1cyAobnVsbFxuICAgKiB3aGVuIFJlZGlzIGlzbid0IGNvbmZpZ3VyZWQg4oaSIHNpbmdsZS1wcm9jZXNzIHNlbWFudGljcyk7IHBhc3MgYG51bGxgIHRvXG4gICAqIGRpc2FibGUgZXhwbGljaXRseS5cbiAgICovXG4gIGludmFsaWRhdGlvbkJ1cz86IENhY2hlSW52YWxpZGF0aW9uQnVzIHwgbnVsbDtcbn1cblxuLyoqIE9uZSBpbnZhbGlkYXRpb24gYnJvYWRjYXN0IHRvIGV2ZXJ5IHJlcGxpY2EuICovXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlSW52YWxpZGF0aW9uTWVzc2FnZSB7XG4gIC8qKiBJZCBvZiB0aGUgQ2FjaGVTZXJ2aWNlIGluc3RhbmNlIHRoYXQgaW52YWxpZGF0ZWQgKGl0IGlnbm9yZXMgaXRzIG93biBlY2hvKS4gKi9cbiAgb3JpZ2luOiBzdHJpbmc7XG4gIC8qKiBUaGUgY2FjaGUgbmFtZXNwYWNlIChgQ2FjaGVDb25maWcucHJlZml4YCkgdGhlIGludmFsaWRhdGlvbiBhcHBsaWVzIHRvLiAqL1xuICBwcmVmaXg6IHN0cmluZztcbiAgb3A6ICdkZWwnIHwgJ3BhdHRlcm4nIHwgJ2NsZWFyJztcbiAgLyoqIFVuLXByZWZpeGVkIGtleSAoYGRlbGApIG9yIGdsb2IgcGF0dGVybiAoYHBhdHRlcm5gKS4gKi9cbiAga2V5Pzogc3RyaW5nO1xufVxuXG4vKiogVHJhbnNwb3J0IHRoYXQgZmFucyBjYWNoZSBpbnZhbGlkYXRpb25zIG91dCB0byBldmVyeSByZXBsaWNhLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYWNoZUludmFsaWRhdGlvbkJ1cyB7XG4gIC8qKiBGaXJlLWFuZC1mb3JnZXQgYnJvYWRjYXN0LiBOZXZlciB0aHJvd3MuICovXG4gIHB1Ymxpc2gobXNnOiBDYWNoZUludmFsaWRhdGlvbk1lc3NhZ2UpOiB2b2lkO1xuICAvKipcbiAgICogUmVnaXN0ZXIgaGFuZGxlcnMuIGBvbk1lc3NhZ2VgIHJlY2VpdmVzIGV2ZXJ5IGJyb2FkY2FzdCAoaW5jbHVkaW5nIHRoaXNcbiAgICogcHJvY2VzcydzIG93bik7IGBvblJlc3luY2AgZmlyZXMgd2hlbmV2ZXIgdGhlIHN1YnNjcmlwdGlvbiBpcyAocmUpZXN0YWJsaXNoZWQsXG4gICAqIGkuZS4gd2hlbmV2ZXIgaW52YWxpZGF0aW9ucyBtYXkgaGF2ZSBiZWVuIG1pc3NlZC5cbiAgICovXG4gIHN1YnNjcmliZShvbk1lc3NhZ2U6IChtc2c6IENhY2hlSW52YWxpZGF0aW9uTWVzc2FnZSkgPT4gdm9pZCwgb25SZXN5bmM6ICgpID0+IHZvaWQpOiB2b2lkO1xufVxuXG4vKiogTWluaW1hbCBpb3JlZGlzIHB1Yi9zdWIgc3VyZmFjZSB0aGUgZW52IGJ1cyBuZWVkcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVkaXNJbnZhbGlkYXRpb25DbGllbnQge1xuICBwdWJsaXNoKGNoYW5uZWw6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKTogUHJvbWlzZTxudW1iZXI+O1xuICBzdWJzY3JpYmUoLi4uY2hhbm5lbHM6IHN0cmluZ1tdKTogUHJvbWlzZTx1bmtub3duPjtcbiAgb24oZXZlbnQ6IHN0cmluZywgY2I6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCk6IHVua25vd247XG4gIGR1cGxpY2F0ZSgpOiBSZWRpc0ludmFsaWRhdGlvbkNsaWVudDtcbiAgc3RhdHVzPzogc3RyaW5nO1xufVxuXG5jb25zdCBDQUNIRV9JTlZBTElEQVRJT05fQ0hBTk5FTCA9ICdjYWNoZTppbnZhbGlkYXRlJztcblxuLyoqXG4gKiBSZWRpcyBwdWIvc3ViIGludmFsaWRhdGlvbiBidXMuIFBVQkxJU0ggb24gdGhlIGdpdmVuIGNsaWVudDsgU1VCU0NSSUJFIG9uIGFcbiAqIGBkdXBsaWNhdGUoKWAgKGEgc3Vic2NyaWJlZCBpb3JlZGlzIGNvbm5lY3Rpb24gY2FuJ3QgcnVuIG90aGVyIGNvbW1hbmRzKS5cbiAqXG4gKiBUaGUgU1VCU0NSSUJFIGlzIGlzc3VlZCBvbiBldmVyeSBgcmVhZHlgIChpbml0aWFsIGNvbm5lY3QgQU5EIGVhY2ggcmVjb25uZWN0KVxuICogcmF0aGVyIHRoYW4gb25jZSBhdCBjb25zdHJ1Y3Rpb246IHRoZSBlbnYgY2xpZW50IHJ1bnMgd2l0aG91dCBhbiBvZmZsaW5lXG4gKiBxdWV1ZSwgc28gYSBzdWJzY3JpYmUgaXNzdWVkIGJlZm9yZSB0aGUgY29ubmVjdGlvbiBpcyB1cCBpcyByZWplY3RlZCBhbmQgd291bGRcbiAqIG5ldmVyIGJlIHJldHJpZWQuIEVhY2ggYHJlYWR5YCBhbHNvIHRyaWdnZXJzIGBvblJlc3luY2Agc28gZXZlcnkgY2FjaGUgZmx1c2hlc1xuICogd2hhdGV2ZXIgaXQgbWF5IGhhdmUgbWlzc2VkIHdoaWxlIGRpc2Nvbm5lY3RlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlZGlzQ2FjaGVJbnZhbGlkYXRpb25CdXMocHVibGlzaGVyOiBSZWRpc0ludmFsaWRhdGlvbkNsaWVudCk6IENhY2hlSW52YWxpZGF0aW9uQnVzIHtcbiAgY29uc3Qgc3Vic2NyaWJlciA9IHB1Ymxpc2hlci5kdXBsaWNhdGUoKTtcbiAgY29uc3QgbWVzc2FnZUhhbmRsZXJzOiBBcnJheTwobXNnOiBDYWNoZUludmFsaWRhdGlvbk1lc3NhZ2UpID0+IHZvaWQ+ID0gW107XG4gIGNvbnN0IHJlc3luY0hhbmRsZXJzOiBBcnJheTwoKSA9PiB2b2lkPiA9IFtdO1xuXG4gIGNvbnN0IHJlc3luYyA9ICgpOiB2b2lkID0+IHtcbiAgICBmb3IgKGNvbnN0IGggb2YgcmVzeW5jSGFuZGxlcnMpIHtcbiAgICAgIHRyeSB7IGgoKTsgfSBjYXRjaCB7IC8qIGlzb2xhdGVkICovIH1cbiAgICB9XG4gIH07XG4gIGNvbnN0IGRvU3Vic2NyaWJlID0gKCk6IHZvaWQgPT4ge1xuICAgIHZvaWQgUHJvbWlzZS5yZXNvbHZlKHN1YnNjcmliZXIuc3Vic2NyaWJlKENBQ0hFX0lOVkFMSURBVElPTl9DSEFOTkVMKSlcbiAgICAgIC50aGVuKCgpID0+IHJlc3luYygpKVxuICAgICAgLmNhdGNoKChlcnI6IHVua25vd24pID0+IHtcbiAgICAgICAgZW1pdENvdW50ZXIoJ2NhY2hlX2ludmFsaWRhdGlvbl9zdWJzY3JpYmVfZmFpbGVkX3RvdGFsJywge30pO1xuICAgICAgICBsb2dnZXIud2FybignQ2FjaGUgaW52YWxpZGF0aW9uIHN1YnNjcmliZSBmYWlsZWQ7IHdpbGwgcmV0cnkgb24gbmV4dCByZWNvbm5lY3QnLCB7XG4gICAgICAgICAgZXJyb3I6IGVycm9yTWVzc2FnZShlcnIpLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIHN1YnNjcmliZXIub24oJ21lc3NhZ2UnLCAoY2hhbm5lbDogc3RyaW5nLCByYXc6IHN0cmluZykgPT4ge1xuICAgIGlmIChjaGFubmVsICE9PSBDQUNIRV9JTlZBTElEQVRJT05fQ0hBTk5FTCkgcmV0dXJuO1xuICAgIGxldCBtc2c6IENhY2hlSW52YWxpZGF0aW9uTWVzc2FnZTtcbiAgICB0cnkge1xuICAgICAgbXNnID0gSlNPTi5wYXJzZShyYXcpIGFzIENhY2hlSW52YWxpZGF0aW9uTWVzc2FnZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZm9yIChjb25zdCBoIG9mIG1lc3NhZ2VIYW5kbGVycykge1xuICAgICAgdHJ5IHsgaChtc2cpOyB9IGNhdGNoIHsgLyogb25lIGNhY2hlIGNhbid0IGJyZWFrIHRoZSBvdGhlcnMgKi8gfVxuICAgIH1cbiAgfSk7XG4gIHN1YnNjcmliZXIub24oJ3JlYWR5JywgZG9TdWJzY3JpYmUpO1xuICBzdWJzY3JpYmVyLm9uKCdlcnJvcicsIChlOiB1bmtub3duKSA9PlxuICAgIGxvZ2dlci53YXJuKCdDYWNoZSBpbnZhbGlkYXRpb24gc3Vic2NyaWJlciBlcnJvcicsIHsgZXJyb3I6IGVycm9yTWVzc2FnZShlKSB9KSk7XG4gIGlmIChzdWJzY3JpYmVyLnN0YXR1cyA9PT0gJ3JlYWR5JykgZG9TdWJzY3JpYmUoKTtcblxuICByZXR1cm4ge1xuICAgIHB1Ymxpc2gobXNnKSB7XG4gICAgICB2b2lkIFByb21pc2UucmVzb2x2ZSgpXG4gICAgICAgIC50aGVuKCgpID0+IHB1Ymxpc2hlci5wdWJsaXNoKENBQ0hFX0lOVkFMSURBVElPTl9DSEFOTkVMLCBKU09OLnN0cmluZ2lmeShtc2cpKSlcbiAgICAgICAgLmNhdGNoKChlcnI6IHVua25vd24pID0+IHtcbiAgICAgICAgICBlbWl0Q291bnRlcignY2FjaGVfaW52YWxpZGF0aW9uX3B1Ymxpc2hfZmFpbGVkX3RvdGFsJywgeyBwcmVmaXg6IG1zZy5wcmVmaXggfSk7XG4gICAgICAgICAgbG9nZ2VyLndhcm4oJ0NhY2hlIGludmFsaWRhdGlvbiBwdWJsaXNoIGZhaWxlZCAob3RoZXIgcmVwbGljYXMga2VlcCB0aGUgZW50cnkgdW50aWwgVFRMKScsIHtcbiAgICAgICAgICAgIHByZWZpeDogbXNnLnByZWZpeCwgb3A6IG1zZy5vcCwgZXJyb3I6IGVycm9yTWVzc2FnZShlcnIpLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIHN1YnNjcmliZShvbk1lc3NhZ2UsIG9uUmVzeW5jKSB7XG4gICAgICBtZXNzYWdlSGFuZGxlcnMucHVzaChvbk1lc3NhZ2UpO1xuICAgICAgcmVzeW5jSGFuZGxlcnMucHVzaChvblJlc3luYyk7XG4gICAgfSxcbiAgfTtcbn1cblxuLy8gdW5kZWZpbmVkID0gbm90IHlldCBhdHRlbXB0ZWQ7IG51bGwgPSBhdHRlbXB0ZWQsIFJlZGlzIG5vdCBjb25maWd1cmVkLlxubGV0IGVudkludmFsaWRhdGlvbkJ1czogQ2FjaGVJbnZhbGlkYXRpb25CdXMgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG4vKiogUHJvY2Vzcy13aWRlIGludmFsaWRhdGlvbiBidXMgZnJvbSB0aGUgYW1iaWVudCBSZWRpcyBlbnYgKG51bGwgd2l0aG91dCBSZWRpcykuICovXG5mdW5jdGlvbiBnZXRFbnZDYWNoZUludmFsaWRhdGlvbkJ1cygpOiBDYWNoZUludmFsaWRhdGlvbkJ1cyB8IG51bGwge1xuICBpZiAoZW52SW52YWxpZGF0aW9uQnVzID09PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBjbGllbnQgPSBjcmVhdGVFbnZSZWRpc0NsaWVudDxSZWRpc0ludmFsaWRhdGlvbkNsaWVudD4oJ2NhY2hlLWludmFsaWRhdGlvbicpO1xuICAgIGVudkludmFsaWRhdGlvbkJ1cyA9IGNsaWVudCA/IGNyZWF0ZVJlZGlzQ2FjaGVJbnZhbGlkYXRpb25CdXMoY2xpZW50KSA6IG51bGw7XG4gIH1cbiAgcmV0dXJuIGVudkludmFsaWRhdGlvbkJ1cztcbn1cblxuLyoqXG4gKiBDYWNoZSBzZXJ2aWNlIHdpdGggZ2V0L3NldC9kZWwgb3BlcmF0aW9ucyBhbmQgYXV0b21hdGljIFRUTCBleHBpcnkuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGNhY2hlID0gbmV3IENhY2hlU2VydmljZSh7IHByZWZpeDogJ3BsdWdpbjonLCBkZWZhdWx0VHRsU2Vjb25kczogMzAwIH0pO1xuICpcbiAqIC8vIFNldCB3aXRoIGRlZmF1bHQgVFRMXG4gKiBhd2FpdCBjYWNoZS5zZXQoJ29yZzEyMzpsaXN0JywgcGx1Z2lucyk7XG4gKlxuICogLy8gR2V0IChyZXR1cm5zIG51bGwgb24gbWlzcylcbiAqIGNvbnN0IGNhY2hlZCA9IGF3YWl0IGNhY2hlLmdldDxQbHVnaW5bXT4oJ29yZzEyMzpsaXN0Jyk7XG4gKlxuICogLy8gSW52YWxpZGF0ZVxuICogYXdhaXQgY2FjaGUuZGVsKCdvcmcxMjM6bGlzdCcpO1xuICpcbiAqIC8vIEludmFsaWRhdGUgYnkgcGF0dGVyblxuICogYXdhaXQgY2FjaGUuaW52YWxpZGF0ZVBhdHRlcm4oJ29yZzEyMzoqJyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIENhY2hlU2VydmljZSB7XG4gIHByaXZhdGUgbWVtb3J5ID0gbmV3IE1hcDxzdHJpbmcsIENhY2hlRW50cnk8dW5rbm93bj4+KCk7XG4gIC8qKlxuICAgKiBJbi1mbGlnaHQgYGdldE9yU2V0YCBmYWN0b3J5IHByb21pc2VzLCBrZXllZCBieSBmdWxsIGNhY2hlIGtleS4gQ29hbGVzY2VzXG4gICAqIGNvbmN1cnJlbnQgY29sZCBjYWxsZXJzIG9udG8gYSBzaW5nbGUgYGZhY3RvcnkoKWAgaW52b2NhdGlvbiAoc2luZ2xlLWZsaWdodFxuICAgKiAvIHN0YW1wZWRlIHByb3RlY3Rpb24pOyBlbnRyaWVzIGFyZSBjbGVhcmVkIG9uY2UgdGhlIHByb21pc2Ugc2V0dGxlcy5cbiAgICovXG4gIHByaXZhdGUgaW5mbGlnaHQgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTx1bmtub3duPj4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwcmVmaXg6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0VHRsTXM6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBtYXhFbnRyaWVzOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgYnVzOiBDYWNoZUludmFsaWRhdGlvbkJ1cyB8IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW5zdGFuY2VJZCA9IHJhbmRvbVVVSUQoKTtcbiAgLyoqXG4gICAqIEJ1bXBlZCBvbiBFVkVSWSBpbnZhbGlkYXRpb24gKGxvY2FsIG9yIHJlbW90ZSkuIGBnZXRPclNldGAgb25seSBjYWNoZXMgYVxuICAgKiBmYWN0b3J5IHJlc3VsdCBpZiBubyBpbnZhbGlkYXRpb24gaGFwcGVuZWQgd2hpbGUgdGhlIGZhY3RvcnkgcmFuIOKAlCBvdGhlcndpc2VcbiAgICogaXQgY291bGQgcmUtY2FjaGUgYSB2YWx1ZSByZWFkIGJlZm9yZSB0aGUgd3JpdGUgdGhhdCBpbnZhbGlkYXRlZCBpdC5cbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGlvbiA9IDA7XG5cbiAgLyoqIENhY2hlIG1ldHJpY3Mg4oCUIHRyYWNrcyBoaXRzLCBtaXNzZXMsIGFuZCBpbnZhbGlkYXRpb25zLiAqL1xuICByZWFkb25seSBtZXRyaWNzID0geyBoaXRzOiAwLCBtaXNzZXM6IDAsIHNldHM6IDAsIGludmFsaWRhdGlvbnM6IDAgfTtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IENhY2hlQ29uZmlnKSB7XG4gICAgdGhpcy5wcmVmaXggPSBjb25maWcucHJlZml4O1xuICAgIHRoaXMuZGVmYXVsdFR0bE1zID0gY29uZmlnLmRlZmF1bHRUdGxTZWNvbmRzICogMTAwMDtcbiAgICB0aGlzLm1heEVudHJpZXMgPSBjb25maWcubWF4RW50cmllcyA/PyAxMDAwO1xuICAgIHRoaXMuYnVzID0gY29uZmlnLmludmFsaWRhdGlvbkJ1cyA9PT0gdW5kZWZpbmVkID8gZ2V0RW52Q2FjaGVJbnZhbGlkYXRpb25CdXMoKSA6IGNvbmZpZy5pbnZhbGlkYXRpb25CdXM7XG4gICAgdGhpcy5idXM/LnN1YnNjcmliZShcbiAgICAgIChtc2cpID0+IHtcbiAgICAgICAgaWYgKG1zZy5vcmlnaW4gPT09IHRoaXMuaW5zdGFuY2VJZCB8fCBtc2cucHJlZml4ICE9PSB0aGlzLnByZWZpeCkgcmV0dXJuO1xuICAgICAgICB0aGlzLmFwcGx5TG9jYWxJbnZhbGlkYXRpb24obXNnLm9wLCBtc2cua2V5KTtcbiAgICAgIH0sXG4gICAgICAoKSA9PiB0aGlzLmFwcGx5TG9jYWxJbnZhbGlkYXRpb24oJ2NsZWFyJyksXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBCcm9hZGNhc3QgYW4gaW52YWxpZGF0aW9uIHRvIHRoZSBvdGhlciByZXBsaWNhcy4gKi9cbiAgcHJpdmF0ZSBicm9hZGNhc3Qob3A6IENhY2hlSW52YWxpZGF0aW9uTWVzc2FnZVsnb3AnXSwga2V5Pzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5idXM/LnB1Ymxpc2goeyBvcmlnaW46IHRoaXMuaW5zdGFuY2VJZCwgcHJlZml4OiB0aGlzLnByZWZpeCwgb3AsIC4uLihrZXkgIT09IHVuZGVmaW5lZCAmJiB7IGtleSB9KSB9KTtcbiAgfVxuXG4gIC8qKiBBcHBseSBhbiBpbnZhbGlkYXRpb24gdG8gVEhJUyBwcm9jZXNzJ3MgaW4tbWVtb3J5IGVudHJpZXMuIFJldHVybnMgdGhlIGNvdW50IHJlbW92ZWQuICovXG4gIHByaXZhdGUgYXBwbHlMb2NhbEludmFsaWRhdGlvbihvcDogQ2FjaGVJbnZhbGlkYXRpb25NZXNzYWdlWydvcCddLCBrZXk/OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHRoaXMuZ2VuZXJhdGlvbisrO1xuICAgIGlmIChvcCA9PT0gJ2NsZWFyJykge1xuICAgICAgY29uc3QgbiA9IHRoaXMubWVtb3J5LnNpemU7XG4gICAgICB0aGlzLm1lbW9yeS5jbGVhcigpO1xuICAgICAgcmV0dXJuIG47XG4gICAgfVxuICAgIGlmIChvcCA9PT0gJ2RlbCcpIHtcbiAgICAgIHJldHVybiB0aGlzLm1lbW9yeS5kZWxldGUodGhpcy5mdWxsS2V5KGtleSA/PyAnJykpID8gMSA6IDA7XG4gICAgfVxuICAgIC8vIEdsb2IgcGF0dGVybi4gRXNjYXBlIHJlZ2V4IG1ldGFjaGFyYWN0ZXJzIGZpcnN0IHNvIGEgbGl0ZXJhbCBgLmAvYChgL2BbYFxuICAgIC8vIGluIGEga2V5IHByZWZpeCAoZS5nLiBgb3JnOnYxLjI6KmApIGNhbid0IG92ZXItbWF0Y2ggb3IgdGhyb3cgKGEgdGhyb3dcbiAgICAvLyBoZXJlIHdvdWxkIGxlYXZlIGVudHJpZXMgc3RhbGUpOyBvbmx5IGAqYCBpcyB0cmVhdGVkIGFzIGEgd2lsZGNhcmQuXG4gICAgY29uc3QgZnAgPSB0aGlzLmZ1bGxLZXkoa2V5ID8/ICcnKTtcbiAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoJ14nICsgZnAucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csICdcXFxcJCYnKS5yZXBsYWNlKC9cXFxcXFwqL2csICcuKicpICsgJyQnKTtcbiAgICBsZXQgZGVsZXRlZCA9IDA7XG4gICAgZm9yIChjb25zdCBrIG9mIHRoaXMubWVtb3J5LmtleXMoKSkge1xuICAgICAgaWYgKHJlZ2V4LnRlc3QoaykpIHtcbiAgICAgICAgdGhpcy5tZW1vcnkuZGVsZXRlKGspO1xuICAgICAgICBkZWxldGVkKys7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkZWxldGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBmdWxsS2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5wcmVmaXh9JHtrZXl9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBjYWNoZWQgdmFsdWUuIFJldHVybnMgbnVsbCBvbiBtaXNzIG9yIGVycm9yLlxuICAgKlxuICAgKiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYW4gSU5ERVBFTkRFTlQgZGVlcCBjb3B5IOKAlCBtdXRhdGluZyBpdCBuZXZlciBhZmZlY3RzXG4gICAqIHRoZSBjYWNoZWQgZW50cnkuXG4gICAqL1xuICBhc3luYyBnZXQ8VD4oa2V5OiBzdHJpbmcpOiBQcm9taXNlPFQgfCBudWxsPiB7XG4gICAgY29uc3QgZmsgPSB0aGlzLmZ1bGxLZXkoa2V5KTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBlbnRyeSA9IHRoaXMubWVtb3J5LmdldChmayk7XG4gICAgICBpZiAoIWVudHJ5KSB7IHRoaXMubWV0cmljcy5taXNzZXMrKzsgcmV0dXJuIG51bGw7IH1cbiAgICAgIGlmIChEYXRlLm5vdygpID4gZW50cnkuZXhwaXJlc0F0KSB7XG4gICAgICAgIHRoaXMubWVtb3J5LmRlbGV0ZShmayk7XG4gICAgICAgIHRoaXMubWV0cmljcy5taXNzZXMrKztcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICAvLyBMUlUgdG91Y2g6IGRlbGV0ZSArIHJlLWluc2VydCBtb3ZlcyB0aGlzIGtleSB0byB0aGUgbmV3ZXN0IHBvc2l0aW9uXG4gICAgICAvLyAoTWFwIHByZXNlcnZlcyBpbnNlcnRpb24gb3JkZXIpLCBzbyBgc2V0YCdzIG9sZGVzdC1maXJzdCBldmljdGlvbiBpcyBhXG4gICAgICAvLyB0cnVlIGxlYXN0LXJlY2VudGx5LVVTRUQgZXZpY3Rpb24gcmF0aGVyIHRoYW4gZmlyc3QtaW5zZXJ0ZWQgKEZJRk8pLlxuICAgICAgdGhpcy5tZW1vcnkuZGVsZXRlKGZrKTtcbiAgICAgIHRoaXMubWVtb3J5LnNldChmaywgZW50cnkpO1xuICAgICAgdGhpcy5tZXRyaWNzLmhpdHMrKztcbiAgICAgIC8vIENsb25lIHNvIGEgY2FsbGVyIG11dGF0aW5nIHRoZSByZXN1bHQgY2FuJ3QgY29ycnVwdCB0aGUgc2hhcmVkIGVudHJ5LlxuICAgICAgcmV0dXJuIGNsb25lVmFsdWUoZW50cnkudmFsdWUpIGFzIFQ7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLm1ldHJpY3MubWlzc2VzKys7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgY2FjaGVkIHZhbHVlIHdpdGggb3B0aW9uYWwgVFRMIG92ZXJyaWRlLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IC0gQ2FjaGUga2V5IChwcmVmaXggaXMgYWRkZWQgYXV0b21hdGljYWxseSlcbiAgICogQHBhcmFtIHZhbHVlIC0gVmFsdWUgdG8gY2FjaGVcbiAgICogQHBhcmFtIHR0bFNlY29uZHMgLSBUVEwgb3ZlcnJpZGUgKHVzZXMgZGVmYXVsdCBpZiBub3QgcHJvdmlkZWQpXG4gICAqL1xuICBhc3luYyBzZXQ8VD4oa2V5OiBzdHJpbmcsIHZhbHVlOiBULCB0dGxTZWNvbmRzPzogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZmsgPSB0aGlzLmZ1bGxLZXkoa2V5KTtcbiAgICBjb25zdCB0dGwgPSB0dGxTZWNvbmRzID8/IHRoaXMuZGVmYXVsdFR0bE1zIC8gMTAwMDtcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLm1ldHJpY3Muc2V0cysrO1xuICAgICAgLy8gQSB3cml0ZSBjb3VudHMgYXMgYSB1c2UsIHNvIGRyb3AgYW55IGV4aXN0aW5nIGVudHJ5IGZpcnN0XG4gICAgICAvLyBhbmQgcmUtaW5zZXJ0IGJlbG93IGFzIHRoZSBuZXdlc3QgKE1hcCBwcmVzZXJ2ZXMgaW5zZXJ0aW9uIG9yZGVyKS4gVGhpc1xuICAgICAgLy8ga2VlcHMgdGhlIE1hcCBvcmRlcmVkIG9sZGVzdC1VU0VEIOKGkiBuZXdlc3QtVVNFRCBzbyB0aGUgZXZpY3Rpb24gYmVsb3cgaXNcbiAgICAgIC8vIHRydWUgTFJVLCBhbmQgYXZvaWRzIGV2aWN0aW5nIGEgdmljdGltIHdoZW4gbWVyZWx5IHVwZGF0aW5nIGEga2V5LlxuICAgICAgdGhpcy5tZW1vcnkuZGVsZXRlKGZrKTtcbiAgICAgIGlmICh0aGlzLm1lbW9yeS5zaXplID49IHRoaXMubWF4RW50cmllcykge1xuICAgICAgICBjb25zdCBmaXJzdEtleSA9IHRoaXMubWVtb3J5LmtleXMoKS5uZXh0KCkudmFsdWU7XG4gICAgICAgIGlmIChmaXJzdEtleSkgdGhpcy5tZW1vcnkuZGVsZXRlKGZpcnN0S2V5KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5tZW1vcnkuc2V0KGZrLCB7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBleHBpcmVzQXQ6IERhdGUubm93KCkgKyB0dGwgKiAxMDAwLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBDYWNoZSBzZXQgZmFpbHVyZSBpcyBub24tZmF0YWxcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGEgY2FjaGVkIHZhbHVlLlxuICAgKi9cbiAgYXN5bmMgZGVsKGtleTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuYXBwbHlMb2NhbEludmFsaWRhdGlvbignZGVsJywga2V5KTtcbiAgICAgIHRoaXMuYnJvYWRjYXN0KCdkZWwnLCBrZXkpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gQ2FjaGUgZGVsZXRlIGZhaWx1cmUgaXMgbm9uLWZhdGFsXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEludmFsaWRhdGUgYWxsIGtleXMgbWF0Y2hpbmcgYSBwYXR0ZXJuIChlLmcuLCAnb3JnMTIzOionKS5cbiAgICogT25seSBgKmAgaXMgYSB3aWxkY2FyZC5cbiAgICovXG4gIGFzeW5jIGludmFsaWRhdGVQYXR0ZXJuKHBhdHRlcm46IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIEFwcGx5IGxvY2FsbHksIHRoZW4gZmFuIG91dCB0byB0aGUgb3RoZXIgcmVwbGljYXMuXG4gICAgICBjb25zdCBkZWxldGVkID0gdGhpcy5hcHBseUxvY2FsSW52YWxpZGF0aW9uKCdwYXR0ZXJuJywgcGF0dGVybik7XG4gICAgICB0aGlzLmJyb2FkY2FzdCgncGF0dGVybicsIHBhdHRlcm4pO1xuICAgICAgdGhpcy5tZXRyaWNzLmludmFsaWRhdGlvbnMgKz0gZGVsZXRlZDtcbiAgICAgIHJldHVybiBkZWxldGVkO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBvciBjb21wdXRlOiByZXR1cm5zIGNhY2hlZCB2YWx1ZSBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSBjYWxscyB0aGVcbiAgICogZmFjdG9yeSBmdW5jdGlvbiwgY2FjaGVzIHRoZSByZXN1bHQsIGFuZCByZXR1cm5zIGl0LlxuICAgKlxuICAgKiBTaW5nbGUtZmxpZ2h0IC8gc3RhbXBlZGUgcHJvdGVjdGlvbjogd2hlbiBOIGNhbGxlcnMgbWlzcyBjb25jdXJyZW50bHkgZm9yXG4gICAqIHRoZSBzYW1lIGtleSwgb25seSBPTkUgYGZhY3RvcnkoKWAgcnVucyDigJQgdGhlIHJlc3QgYXdhaXQgaXRzIHNoYXJlZCBwcm9taXNlLlxuICAgKiBUaGUgaW4tZmxpZ2h0IGVudHJ5IGlzIGNsZWFyZWQgb25jZSBpdCBzZXR0bGVzIChzdWNjZXNzIG9yIGZhaWx1cmUpLCBzbyBhXG4gICAqIGZhaWxlZCBmYWN0b3J5IGRvZXNuJ3QgcG9pc29uIGxhdGVyIGNhbGxzLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IC0gQ2FjaGUga2V5XG4gICAqIEBwYXJhbSBmYWN0b3J5IC0gQXN5bmMgZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgdmFsdWUgb24gY2FjaGUgbWlzc1xuICAgKiBAcGFyYW0gdHRsU2Vjb25kcyAtIE9wdGlvbmFsIFRUTCBvdmVycmlkZVxuICAgKiBAcmV0dXJucyBUaGUgY2FjaGVkIG9yIGNvbXB1dGVkIHZhbHVlXG4gICAqL1xuICBhc3luYyBnZXRPclNldDxUPihrZXk6IHN0cmluZywgZmFjdG9yeTogKCkgPT4gUHJvbWlzZTxUPiwgdHRsU2Vjb25kcz86IG51bWJlcik6IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IGNhY2hlZCA9IGF3YWl0IHRoaXMuZ2V0PFQ+KGtleSk7XG4gICAgaWYgKGNhY2hlZCAhPT0gbnVsbCkgcmV0dXJuIGNhY2hlZDtcblxuICAgIGNvbnN0IGZrID0gdGhpcy5mdWxsS2V5KGtleSk7XG4gICAgLy8gQ29hbGVzY2UgY29uY3VycmVudCBjb2xkIGNhbGxlcnMgb250byBhIHNpbmdsZSBmYWN0b3J5KCkgaW52b2NhdGlvbi4gVGhlXG4gICAgLy8gaW4tZmxpZ2h0IHByb21pc2UgcmVzb2x2ZXMgdG8gdGhlIFJBVyB2YWx1ZTsgZWFjaCBhd2FpdGVyICh0aGUgcHJpbWFyeVxuICAgIC8vIGNhbGxlciBiZWxvdyBBTkQgZXZlcnkgY29hbGVzY2VkIGNhbGxlciBoZXJlKSBjbG9uZXMgaXQgSU5ERVBFTkRFTlRMWS5cbiAgICAvLyBDbG9uaW5nIGluc2lkZSB0aGUgZmxpZ2h0IGluc3RlYWQgd291bGQgaGFuZCBvbmUgc2hhcmVkIGNsb25lIHRvIGFsbCBOXG4gICAgLy8gY29hbGVzY2VkIGNhbGxlcnMsIHNvIG9uZSBjYWxsZXIgbXV0YXRpbmcgaXRzIFwiaW5kZXBlbmRlbnRcIiByZXN1bHQgd291bGRcbiAgICAvLyBjb3JydXB0IHdoYXQgdGhlIG90aGVycyByZWFkIOKAlCB0aGUgZXhhY3QgZm9vdGd1biBnZXQoKSdzIGNsb25lLW9uLXJlYWRcbiAgICAvLyBwcmV2ZW50cy5cbiAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuaW5mbGlnaHQuZ2V0KGZrKSBhcyBQcm9taXNlPFQ+IHwgdW5kZWZpbmVkO1xuICAgIGlmIChleGlzdGluZykgcmV0dXJuIGNsb25lVmFsdWUoYXdhaXQgZXhpc3RpbmcpO1xuXG4gICAgY29uc3QgZ2VuZXJhdGlvbkF0U3RhcnQgPSB0aGlzLmdlbmVyYXRpb247XG4gICAgY29uc3QgZmxpZ2h0ID0gKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gYXdhaXQgZmFjdG9yeSgpO1xuICAgICAgLy8gQW4gaW52YWxpZGF0aW9uIChoZXJlIG9yIG9uIGFub3RoZXIgcmVwbGljYSkgbGFuZGVkIHdoaWxlIHRoZSBmYWN0b3J5XG4gICAgICAvLyByYW46IGl0cyByZWFkIG1heSBwcmVkYXRlIHRoYXQgd3JpdGUsIHNvIGRvbid0IGNhY2hlIGl0LlxuICAgICAgaWYgKHRoaXMuZ2VuZXJhdGlvbiA9PT0gZ2VuZXJhdGlvbkF0U3RhcnQpIGF3YWl0IHRoaXMuc2V0KGtleSwgdmFsdWUsIHR0bFNlY29uZHMpO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0pKCk7XG4gICAgdGhpcy5pbmZsaWdodC5zZXQoZmssIGZsaWdodCk7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBjbG9uZVZhbHVlKGF3YWl0IGZsaWdodCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaW5mbGlnaHQuZGVsZXRlKGZrKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgYWxsIGVudHJpZXMgKHVzZWZ1bCBmb3IgdGVzdGluZykuXG4gICAqL1xuICBhc3luYyBjbGVhcigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmFwcGx5TG9jYWxJbnZhbGlkYXRpb24oJ2NsZWFyJyk7XG4gICAgdGhpcy5icm9hZGNhc3QoJ2NsZWFyJyk7XG4gIH1cblxuICAvKiogQ3VycmVudCBpbi1tZW1vcnkgY2FjaGUgc2l6ZSAoZm9yIGRpYWdub3N0aWNzKS4gKi9cbiAgZ2V0IHNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5tZW1vcnkuc2l6ZTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIGNhY2hlIHNlcnZpY2UgaW5zdGFuY2UuXG4gKlxuICogQHBhcmFtIHByZWZpeCAtIE5hbWVzcGFjZSBwcmVmaXggKGUuZy4sICdjb21wbGlhbmNlOicsICdwbHVnaW46JylcbiAqIEBwYXJhbSBkZWZhdWx0VHRsU2Vjb25kcyAtIERlZmF1bHQgVFRMIGluIHNlY29uZHMgKGRlZmF1bHQgMzAwID0gNSBtaW4pXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDYWNoZVNlcnZpY2UocHJlZml4OiBzdHJpbmcsIGRlZmF1bHRUdGxTZWNvbmRzID0gMzAwKTogQ2FjaGVTZXJ2aWNlIHtcbiAgcmV0dXJuIG5ldyBDYWNoZVNlcnZpY2UoeyBwcmVmaXgsIGRlZmF1bHRUdGxTZWNvbmRzIH0pO1xufVxuIl19
|
|
@@ -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,
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxpYW5jZS1ldmVudC1zdWJzY3JpYmVyLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvY29tcGxpYW5jZS1ldmVudC1zdWJzY3JpYmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLFlBQVksRUFBZ0QsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFzQixNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUvRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUVqRDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sVUFBVSxpQ0FBaUMsQ0FDL0MsTUFBK0IsRUFDL0IsV0FBVyxHQUFXLGVBQWUsRUFBRTtJQUV2QyxNQUFNLGFBQWEsR0FBa0I7UUFDbkMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLElBQUksZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUk7UUFDeEQsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLElBQUksZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUk7S0FDekQsQ0FBQztJQUVGLE1BQU0sTUFBTSxHQUFHLElBQUksa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFckQsTUFBTSxVQUFVLEdBQTBCO1FBQ3hDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBa0I7WUFDcEMsSUFBSSxDQUFDO2dCQUNILGdFQUFnRTtnQkFDaEUsa0VBQWtFO2dCQUNsRSxvREFBb0Q7Z0JBQ3BELDZEQUE2RDtnQkFDN0QsRUFBRTtnQkFDRixvRUFBb0U7Z0JBQ3BFLDZEQUE2RDtnQkFDN0Qsc0VBQXNFO2dCQUN0RSx1RUFBdUU7Z0JBQ3ZFLHdFQUF3RTtnQkFDeEUsNkRBQTZEO2dCQUM3RCxNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsS0FBSyxFQUFFO29CQUNyRSxPQUFPLEVBQUU7d0JBQ1AsZUFBZSxFQUFFLG9CQUFvQixDQUFDLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQzt3QkFDMUYsaUJBQWlCLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxFQUFFO3FCQUMzRztpQkFDRixDQUFDLENBQUM7Z0JBQ0gsd0VBQXdFO2dCQUN4RSx1RUFBdUU7Z0JBQ3ZFLHdFQUF3RTtnQkFDeEUsdUVBQXVFO2dCQUN2RSxpRUFBaUU7Z0JBQ2pFLElBQUksUUFBUSxDQUFDLFVBQVUsR0FBRyxHQUFHLElBQUksUUFBUSxDQUFDLFVBQVUsSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDNUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7Z0JBQzNGLENBQUM7WUFDSCxDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDYixzRUFBc0U7Z0JBQ3RFLHdFQUF3RTtnQkFDeEUseURBQXlEO2dCQUN6RCxXQUFXLENBQUMsNkJBQTZCLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztnQkFDM0YsTUFBTSxDQUFDLElBQUksQ0FBQyxxREFBcUQsRUFBRTtvQkFDakUsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO29CQUNwQixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7b0JBQzFCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtvQkFDeEIsS0FBSyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUM7aUJBQ3pCLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO0tBQ0YsQ0FBQztJQUVGLFlBQVksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkMsTUFBTSxDQUFDLElBQUksQ0FBQyx3Q0FBd0MsRUFBRTtRQUNwRCxJQUFJLEVBQUUsYUFBYSxDQUFDLElBQUk7UUFDeEIsSUFBSSxFQUFFLGFBQWEsQ0FBQyxJQUFJO0tBQ3pCLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgZW50aXR5RXZlbnRzLCB0eXBlIEVudGl0eUV2ZW50LCB0eXBlIEVudGl0eUV2ZW50U3Vic2NyaWJlciB9IGZyb20gJy4vZW50aXR5LWV2ZW50cy5qcyc7XG5pbXBvcnQgeyBJbnRlcm5hbEh0dHBDbGllbnQgfSBmcm9tICcuL2h0dHAtY2xpZW50LmpzJztcbmltcG9ydCB7IHNlcnZpY2VJZGVudGl0eSB9IGZyb20gJy4vc2VydmljZS1rZXlzLmpzJztcbmltcG9ydCB7IGdldFNlcnZpY2VBdXRoSGVhZGVyIH0gZnJvbSAnLi4vbWlkZGxld2FyZS9zZXJ2aWNlLXRva2Vucy5qcyc7XG5pbXBvcnQgeyB0eXBlIFNlcnZpY2VDb25maWcgfSBmcm9tICcuLi90eXBlcy9jb21tb24uanMnO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCB7IGVtaXRDb3VudGVyIH0gZnJvbSAnLi4vdXRpbHMvbWV0cmljLWVtaXR0ZXIuanMnO1xuaW1wb3J0IHsgZXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vdXRpbHMvcmVzcG9uc2UuanMnO1xuaW1wb3J0IHsgc2VydmljZUVuZHBvaW50IH0gZnJvbSAnLi4vdXRpbHMvc2VydmljZS1yZWdpc3RyeS5qcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignY29tcGxpYW5jZS1ldmVudHMnKTtcblxuLyoqXG4gKiBSZWdpc3RlcnMgYW4gZW50aXR5IGV2ZW50IHN1YnNjcmliZXIgdGhhdCBmb3J3YXJkcyBldmVudHMgdG8gdGhlIGNvbXBsaWFuY2Ugc2VydmljZS5cbiAqXG4gKiBDYWxsIHRoaXMgYXQgc2VydmljZSBzdGFydHVwIChpbiBpbmRleC50cykgdG8gZW5hYmxlIGF1dG9tYXRpYyBjb21wbGlhbmNlXG4gKiBub3RpZmljYXRpb24gb24gZW50aXR5IG11dGF0aW9ucy4gRXZlbnRzIGFyZSBmaXJlLWFuZC1mb3JnZXQg4oCUIGZhaWx1cmVzXG4gKiBhcmUgbG9nZ2VkIGJ1dCBuZXZlciBibG9jayB0aGUgb3JpZ2luYWwgcmVxdWVzdC5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIC0gT3B0aW9uYWwgc2VydmljZSBjb25maWcgb3ZlcnJpZGUgKGRlZmF1bHRzIHRvIENPTVBMSUFOQ0VfU0VSVklDRV9IT1NUL1BPUlQgZW52IHZhcnMpXG4gKiBAcGFyYW0gc2VydmljZU5hbWUgLSBTZXJ2aWNlIGlkZW50aWZpZXIgYmFrZWQgaW50byB0aGUgc2lnbmVkIEpXVCdzIGBzdWJgXG4gKiAgIChlLmcuICdwaXBlbGluZScsICdwbHVnaW4nKS4gVGhlIGNvbXBsaWFuY2Ugcm91dGUgaXMgYW4gSU5URVJOQUwgcm91dGU6IGl0XG4gKiAgIGFkbWl0cyBvbmx5IHRob3NlIHR3byBzZXJ2aWNlcycgb3duIHNpZ25lZCB0b2tlbnMsIGFuZCBubyB1c2VyIHRva2VuLlxuICogICBEZWZhdWx0cyB0byBUSElTIHByb2Nlc3MncyBpZGVudGl0eSAoYFNFUlZJQ0VfTkFNRWApIOKAlCBzaW5jZSAjMTQgYSBzZXJ2aWNlXG4gKiAgIGhvbGRzIG9ubHkgaXRzIG93biBzaWduaW5nIGtleSwgc28gYSBwbGFjZWhvbGRlciBuYW1lIHdvdWxkIG1pbnQgYSB0b2tlbiBub1xuICogICBwZWVyIGNvdWxkIHZlcmlmeS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyQ29tcGxpYW5jZUV2ZW50U3Vic2NyaWJlcihcbiAgY29uZmlnPzogUGFydGlhbDxTZXJ2aWNlQ29uZmlnPixcbiAgc2VydmljZU5hbWU6IHN0cmluZyA9IHNlcnZpY2VJZGVudGl0eSgpLFxuKTogdm9pZCB7XG4gIGNvbnN0IHNlcnZpY2VDb25maWc6IFNlcnZpY2VDb25maWcgPSB7XG4gICAgaG9zdDogY29uZmlnPy5ob3N0ID8/IHNlcnZpY2VFbmRwb2ludCgnY29tcGxpYW5jZScpLmhvc3QsXG4gICAgcG9ydDogY29uZmlnPy5wb3J0ID8/IHNlcnZpY2VFbmRwb2ludCgnY29tcGxpYW5jZScpLnBvcnQsXG4gIH07XG5cbiAgY29uc3QgY2xpZW50ID0gbmV3IEludGVybmFsSHR0cENsaWVudChzZXJ2aWNlQ29uZmlnKTtcblxuICBjb25zdCBzdWJzY3JpYmVyOiBFbnRpdHlFdmVudFN1YnNjcmliZXIgPSB7XG4gICAgYXN5bmMgb25FbnRpdHlFdmVudChldmVudDogRW50aXR5RXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIE1pbnQgYSBwZXItZXZlbnQgc2VydmljZSBKV1Qgc2NvcGVkIHRvIHRoZSBldmVudCdzIG9yZyBzbyB0aGVcbiAgICAgICAgLy8gY29tcGxpYW5jZSByb3V0ZSdzIGBydW5XaXRoVGVuYW50Q29udGV4dGAgc2VlcyB0aGUgcmlnaHQgdGVuYW50XG4gICAgICAgIC8vIEdVQy4gVGhlIGNvbXBsaWFuY2Ugc2lkZSBlbmZvcmNlcyBgcmVxdWlyZUF1dGhgICtcbiAgICAgICAgLy8gYHJlcXVpcmVTZXJ2aWNlUHJpbmNpcGFsYDsgbm8gcGxhaW50ZXh0IGhlYWRlciBpcyB0cnVzdGVkLlxuICAgICAgICAvL1xuICAgICAgICAvLyBUaGlzIEhUVFAgbm90aWZ5IGlzIHRoZSBTSU5HTEUgZGVsaXZlcnkgY2hhbm5lbCBmb3IgcG9zdC1tdXRhdGlvblxuICAgICAgICAvLyByZS12YWxpZGF0aW9uIChwcmltYXJ5IGVuZm9yY2VtZW50IGlzIHRoZSBmYWlsLUNMT1NFRCBsaXZlXG4gICAgICAgIC8vIHZhbGlkYXRlIHBhdGgpLiBBIHN0YWJsZSBwZXItZXZlbnQgYElkZW1wb3RlbmN5LUtleWAgbWFrZXMgdGhlIFBPU1RcbiAgICAgICAgLy8gcmV0cnktc2FmZSBpbiB0aGUgaHR0cC1jbGllbnQsIHNvIGEgdHJhbnNpZW50IDV4eC90aW1lb3V0IGlzIHJldHJpZWRcbiAgICAgICAgLy8gcmF0aGVyIHRoYW4gZHJvcHBlZCBvbiB0aGUgZmlyc3QgYXR0ZW1wdDsgY29tcGxpYW5jZSByZS1ldmFsdWF0aW9uIGlzXG4gICAgICAgIC8vIG5hdHVyYWxseSBpZGVtcG90ZW50LCBzbyBhIGR1cGxpY2F0ZSBkZWxpdmVyeSBpcyBoYXJtbGVzcy5cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdCgnL2NvbXBsaWFuY2UvZXZlbnRzL2VudGl0eScsIGV2ZW50LCB7XG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBnZXRTZXJ2aWNlQXV0aEhlYWRlcih7IHNlcnZpY2VOYW1lLCBvcmdJZDogZXZlbnQub3JnSWQsIHJvbGU6ICdtZW1iZXInIH0pLFxuICAgICAgICAgICAgJ0lkZW1wb3RlbmN5LUtleSc6IGAke2V2ZW50LnRhcmdldH06JHtldmVudC5lbnRpdHlJZH06JHtldmVudC5ldmVudFR5cGV9OiR7ZXZlbnQudGltZXN0YW1wLnRvSVNPU3RyaW5nKCl9YCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgLy8gVGhlIGNsaWVudCBSRVRVUk5TIGEgdGVybWluYWwgNHh4LzV4eCAocmV0cmllcyBleGhhdXN0ZWQpIHJhdGhlciB0aGFuXG4gICAgICAgIC8vIHRocm93aW5nLCBzbyBhbiB1bmNoZWNrZWQgY2FsbCBjb3VudGVkIGV2ZXJ5IHJlamVjdGlvbiBhcyBkZWxpdmVyZWQ6XG4gICAgICAgIC8vIGEgNDAzIGZyb20gYSBtaXMtcHJvdmlzaW9uZWQgc2VydmljZSBpZGVudGl0eSwgb3IgYSA1MDAgZnJvbSBhIGJyb2tlblxuICAgICAgICAvLyBjb21wbGlhbmNlIGRlcGxveSwgZHJvcHBlZCBldmVyeSByZS12YWxpZGF0aW9uIHdpdGggbm8gbWV0cmljIGFuZCBub1xuICAgICAgICAvLyBsb2cuIFJvdXRlIGl0IHRocm91Z2ggdGhlIHNhbWUgZHJvcCBwYXRoIGFzIGEgdHJhbnNwb3J0IGVycm9yLlxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSA8IDIwMCB8fCByZXNwb25zZS5zdGF0dXNDb2RlID49IDMwMCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgY29tcGxpYW5jZSByZWplY3RlZCB0aGUgZW50aXR5IGV2ZW50IHdpdGggSFRUUCAke3Jlc3BvbnNlLnN0YXR1c0NvZGV9YCk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAvLyBGaXJlLWFuZC1mb3JnZXQ6IGxvZyArIGEgZHJvcCBtZXRyaWMgc28gc3VzdGFpbmVkIGxvc3MgaXMgYWxlcnRhYmxlXG4gICAgICAgIC8vIChvcGVyYXRvcnMgY2FuJ3QgYWN0IG9uIGEgd2FybiBsaW5lIGFsb25lKSwgdGhlbiBzd2FsbG93IOKAlCBjb21wbGlhbmNlXG4gICAgICAgIC8vIG5vdGlmaWNhdGlvbiBpcyBub24tZmF0YWwgdG8gdGhlIG9yaWdpbmF0aW5nIG11dGF0aW9uLlxuICAgICAgICBlbWl0Q291bnRlcignY29tcGxpYW5jZV9ldmVudF9kcm9wX3RvdGFsJywgeyBzZXJ2aWNlOiBzZXJ2aWNlTmFtZSwgdGFyZ2V0OiBldmVudC50YXJnZXQgfSk7XG4gICAgICAgIGxvZ2dlci53YXJuKCdGYWlsZWQgdG8gbm90aWZ5IGNvbXBsaWFuY2Ugc2VydmljZSBvZiBlbnRpdHkgZXZlbnQnLCB7XG4gICAgICAgICAgdGFyZ2V0OiBldmVudC50YXJnZXQsXG4gICAgICAgICAgZXZlbnRUeXBlOiBldmVudC5ldmVudFR5cGUsXG4gICAgICAgICAgZW50aXR5SWQ6IGV2ZW50LmVudGl0eUlkLFxuICAgICAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcblxuICBlbnRpdHlFdmVudHMuc3Vic2NyaWJlKHN1YnNjcmliZXIpO1xuICBsb2dnZXIuaW5mbygnQ29tcGxpYW5jZSBldmVudCBzdWJzY3JpYmVyIHJlZ2lzdGVyZWQnLCB7XG4gICAgaG9zdDogc2VydmljZUNvbmZpZy5ob3N0LFxuICAgIHBvcnQ6IHNlcnZpY2VDb25maWcucG9ydCxcbiAgfSk7XG59XG4iXX0=
|