@pipeline-builder/api-core 5.2.4 → 5.2.6
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/types/index.d.ts +1 -0
- package/lib/types/index.js +5 -1
- package/lib/types/remote-audit-actions.d.ts +1 -1
- package/lib/types/remote-audit-actions.js +20 -1
- package/lib/types/usage-projection.d.ts +59 -0
- package/lib/types/usage-projection.js +98 -0
- package/lib/utils/aws-scrub.js +3 -3
- package/lib/utils/identity.d.ts +20 -0
- package/lib/utils/identity.js +21 -1
- package/package.json +8 -1
package/lib/types/index.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export { PLUGIN_SUMMARY_MAX, PLUGIN_README_MAX_BYTES, PLUGIN_CHANGELOG_MAX_BYTES
|
|
|
12
12
|
export { type HttpRequest, } from './http.js';
|
|
13
13
|
export { tierAllowsTeams, isBillingEnabled, isValidTier, getTierLimits, type QuotaTier, type QuotaTierLimits, QUOTA_TIERS, VALID_TIERS, STANDARD_TIERS, TEAM_CAPABLE_TIERS, SEAT_PACK_TIERS, seatRemedy, type SeatRemedy, DEFAULT_TIER, QUOTA_RESET_DAYS, CPU_CREDITS_PERIOD_DAYS, quotaPeriodDays, nextQuotaResetDate, AUTOMATION_CALLS_SIZING, automationCallsFor, quotaGracePct, enforcedQuotaLimit, } from './quota-tiers.js';
|
|
14
14
|
export * from './build-catalog.js';
|
|
15
|
+
export * from './usage-projection.js';
|
|
15
16
|
export * from './feature-flags.js';
|
|
16
17
|
export { permissionLabel, isValidPermission, isSystemOrgOnlyPermission, isOrgAssignablePermission, normalizePermissionSubset, intersectPermissions, resolveUserPermissions, confinePermissionsToOrg, hasPermission, type Permission, ALL_PERMISSIONS, ROLE_TEMPLATES, type RoleTemplate, PERMISSION_ACTIONS, PERMISSION_ID_SHAPE, PERMISSION_GATES, PERMISSION_CATALOG, SUPERADMIN_ONLY_PERMISSIONS, SYSTEM_ORG_ONLY_PERMISSIONS, ORG_ASSIGNABLE_PERMISSIONS, ORG_ASSIGNABLE_CATEGORIES, READ_ONLY_PERMISSIONS, ROLE_PERMISSIONS, ECOSYSTEM_MANAGER_PERMISSIONS, PLATFORM_OPERATOR_PERMISSIONS, ACCOUNT_MANAGER_PERMISSIONS, CONSOLE_ADMIN_PERMISSIONS, PLATFORM_OBSERVER_PERMISSIONS, SUPPORT_AGENT_PERMISSIONS, SUPPORT_LEAD_PERMISSIONS, SEED_BUNDLES, SEED_BUNDLE_IDS, SYSTEM_ORG_JOB_BUNDLES, ORG_AUTOMATION_BUNDLES, AUTOMATION_ACCOUNT_BUNDLES, type SeedBundleId, REGISTRY_OPERATOR_PERMISSIONS, TEAM_LEAD_PERMISSIONS, PIPELINE_AUTOMATION_PERMISSIONS, PIPELINE_REGISTRATION_PERMISSIONS, } from './permissions.js';
|
|
17
18
|
export { METADATA_KEY_CATALOG, MetadataKeys, type MetadataKey, type MetadataKeyOption, METADATA_KEY_GROUPS, } from './metadata-keys.js';
|
package/lib/types/index.js
CHANGED
|
@@ -19,6 +19,10 @@ export { tierAllowsTeams, isBillingEnabled, isValidTier, getTierLimits, QUOTA_TI
|
|
|
19
19
|
// and per-class slot defaults. Dependency-free, so the browser imports it
|
|
20
20
|
// through the `./build-catalog` subpath instead of mirroring it.
|
|
21
21
|
export * from './build-catalog.js';
|
|
22
|
+
// Where a quota counter is HEADED. Dependency-free and browser-imported
|
|
23
|
+
// through `./usage-projection`, so the quota card's forecast, the threshold
|
|
24
|
+
// notice and the usage profile's trajectory signal share ONE formula.
|
|
25
|
+
export * from './usage-projection.js';
|
|
22
26
|
export * from './feature-flags.js';
|
|
23
27
|
export { permissionLabel, isValidPermission, isSystemOrgOnlyPermission, isOrgAssignablePermission, normalizePermissionSubset, intersectPermissions, resolveUserPermissions, confinePermissionsToOrg, hasPermission, ALL_PERMISSIONS, ROLE_TEMPLATES, PERMISSION_ACTIONS, PERMISSION_ID_SHAPE, PERMISSION_GATES, PERMISSION_CATALOG, SUPERADMIN_ONLY_PERMISSIONS, SYSTEM_ORG_ONLY_PERMISSIONS, ORG_ASSIGNABLE_PERMISSIONS, ORG_ASSIGNABLE_CATEGORIES, READ_ONLY_PERMISSIONS, ROLE_PERMISSIONS, ECOSYSTEM_MANAGER_PERMISSIONS, PLATFORM_OPERATOR_PERMISSIONS, ACCOUNT_MANAGER_PERMISSIONS, CONSOLE_ADMIN_PERMISSIONS, PLATFORM_OBSERVER_PERMISSIONS, SUPPORT_AGENT_PERMISSIONS, SUPPORT_LEAD_PERMISSIONS, SEED_BUNDLES, SEED_BUNDLE_IDS, SYSTEM_ORG_JOB_BUNDLES, ORG_AUTOMATION_BUNDLES, AUTOMATION_ACCOUNT_BUNDLES, REGISTRY_OPERATOR_PERMISSIONS, TEAM_LEAD_PERMISSIONS, PIPELINE_AUTOMATION_PERMISSIONS, PIPELINE_REGISTRATION_PERMISSIONS, } from './permissions.js';
|
|
24
28
|
export { METADATA_KEY_CATALOG, MetadataKeys, METADATA_KEY_GROUPS, } from './metadata-keys.js';
|
|
@@ -29,4 +33,4 @@ export { isEcosystemNotificationEvent, parseEcosystemNotifyRequest, nextEcosyste
|
|
|
29
33
|
export { publisherTermsVersion, publisherHandleProblem, isOfficialAutoApprovalEnabled, isPluginPublishingEnabled, isAnonymousSubmissionsEnabled, isPluginReviewsEnabled, OFFICIAL_CATALOG_LOADER_ACCOUNT, DEFAULT_PUBLISHER_TERMS_VERSION, BUILTIN_RESERVED_HANDLES, TENANT_REQUEST_KINDS, PUBLISH_PERMISSION_REQUEST_KINDS, VERIFY_REQUEST_KINDS, STEP_UP_REQUEST_KINDS, REQUEST_SLA_HOURS, } from './ecosystem.js';
|
|
30
34
|
export { ageScore, vulnScore, computeHealthScore, publisherHealthScore, publisherSuccessRate, healthBand, HEALTH_COMPONENTS, HEALTH_WEIGHTS, } from './plugin-health.js';
|
|
31
35
|
export { applyVulnWaivers, asScanFlag, describeFindings, describeFix, atOrAboveFailOn, exceedsVulnFloor, failOnLabel, gatedFixableCount, isGatedFinding, newScanFindings, parseVulnWaivers, parseVulnWaiversVerbose, pluginVulnFailOn, pluginVulnGateKev, pluginVulnMaxFindings, SCAN_FLAG_TOP_FINDINGS, SCAN_SUMMARY_MAX_BINARIES, SCAN_SUMMARY_MAX_FINDINGS, scanFindingKey, vulnFlaggedMessage, vulnFlaggedWarning, vulnWaiverLabels, } from './plugin-scan.js';
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEUsT0FBTyxFQUNMLGdCQUFnQixFQUVoQixZQUFZLEVBRVosZUFBZSxFQUtmLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsa0JBQWtCLEdBTW5CLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLE9BQU8sRUFNTixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFFTixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxpRkFBaUY7QUFDakYsZ0ZBQWdGO0FBQ2hGLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxPQUFPLEVBQW1DLE1BQU0sMkJBQTJCLENBQUM7QUFDNUUsT0FBTyxFQUNMLGtCQUFrQixFQUNsQix1QkFBdUIsRUFDdkIsMEJBQTBCLEVBQzFCLGlCQUFpQixFQUVqQixxQkFBcUIsRUFFckIsMEJBQTBCLEVBQzFCLGdCQUFnQixHQUdqQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFFTixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQ0wsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsYUFBYSxFQUdiLFdBQVcsRUFDWCxXQUFXLEVBQ1gsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsVUFBVSxFQUVWLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNsQixhQUFhLEVB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dCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5leHBvcnQgeyBFcnJvckNvZGUsIGdldFN0YXR1c0ZvckVycm9yQ29kZSB9IGZyb20gJy4vZXJyb3ItY29kZXMuanMnO1xuZXhwb3J0IHtcbiAgaXNWYWxpZFF1b3RhVHlwZSxcbiAgdHlwZSBUb2tlblNjb3BlLFxuICBUT0tFTl9TQ09QRVMsXG4gIHR5cGUgUHJpbmNpcGFsVHlwZSxcbiAgUFJJTkNJUEFMX1RZUEVTLFxuICB0eXBlIFRva2VuVXNlLFxuICB0eXBlIEF1dGhNZXRob2QsXG4gIHR5cGUgQXNzdXJhbmNlTGV2ZWwsXG4gIHR5cGUgUXVvdGFUeXBlLFxuICBWQUxJRF9RVU9UQV9UWVBFUyxcbiAgUVVPVEFfVFlQRV9MQUJFTFMsXG4gIFFVT1RBX1VQR1JBREVfUEFUSCxcbiAgdHlwZSBRdW90YUNoZWNrUmVzdWx0LFxuICB0eXBlIFF1b3RhSW5mbyxcbiAgdHlwZSBBcGlSZXNwb25zZSxcbiAgdHlwZSBKd3RQYXlsb2FkLFxuICB0eXBlIEhlYWx0aENoZWNrUmVzcG9uc2UsXG59IGZyb20gJy4vY29tbW9uLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZWxpbmUuanMnO1xuZXhwb3J0IHtcbiAgdHlwZSBMaWZlY3ljbGUsXG4gIHR5cGUgQ3JpdGljYWxpdHksXG4gIHR5cGUgT3duZXJUeXBlLFxuICB0eXBlIEVudGl0eUxpbmssXG4gIHR5cGUgRW50aXR5TGFiZWxzLFxufSBmcm9tICcuL2NhdGFsb2ctbWV0YWRhdGEuanMnO1xuZXhwb3J0IHtcbiAgdHlwZSBUZW1wbGF0ZUlucHV0LFxufSBmcm9tICcuL3BpcGVsaW5lLXRlbXBsYXRlLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdmlzaWJpbGl0eS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3Jlc2VydmVkLXRhZ3MuanMnO1xuLy8gV2hhdCBlYWNoIHF1b3RhIHR5cGUgaXMgY2FsbGVkIGFuZCBob3cgaXRzIG51bWJlciByZW5kZXJzIOKAlCB0aGUgb25lIHNvdXJjZSB0aGVcbi8vIGJyb3dzZXIgYWxzbyBpbXBvcnRzIGRpcmVjdGx5IHZpYSBgQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUvcXVvdGEtY2F0YWxvZ2AuXG5leHBvcnQgKiBmcm9tICcuL3F1b3RhLWNhdGFsb2cuanMnO1xuZXhwb3J0ICogZnJvbSAnLi93aXJlLXZvY2FidWxhcnkuanMnO1xuZXhwb3J0IHsgdHlwZSBDb21wbGlhbmNlRXhlbXB0aW9uUmVxdWVzdCB9IGZyb20gJy4vY29tcGxpYW5jZS1leGVtcHRpb24uanMnO1xuZXhwb3J0IHtcbiAgUExVR0lOX1NVTU1BUllfTUFYLFxuICBQTFVHSU5fUkVBRE1FX01BWF9CWVRFUyxcbiAgUExVR0lOX0NIQU5HRUxPR19NQVhfQllURVMsXG4gIFBMVUdJTl9DQVRFR09SSUVTLFxuICB0eXBlIFBsdWdpbkNhdGFsb2dDYXRlZ29yeSxcbiAgUExVR0lOX0NBVEFMT0dfRklFTERTLFxuICB0eXBlIFBsdWdpbkNhdGFsb2dGaWVsZCxcbiAgUExVR0lOX0NBVEFMT0dfTElOS19GSUVMRFMsXG4gIE1FVEFEQVRBX1NPVVJDRVMsXG4gIHR5cGUgTWV0YWRhdGFTb3VyY2UsXG4gIHR5cGUgTWV0YWRhdGFTb3VyY2VzLFxufSBmcm9tICcuL3BsdWdpbi1jYXRhbG9nLmpzJztcbmV4cG9ydCB7XG4gIHR5cGUgSHR0cFJlcXVlc3QsXG59IGZyb20gJy4vaHR0cC5qcyc7XG5leHBvcnQge1xuICB0aWVyQWxsb3dzVGVhbXMsXG4gIGlzQmlsbGluZ0VuYWJsZWQsXG4gIGlzVmFsaWRUaWVyLFxuICBnZXRUaWVyTGltaXRzLFxuICB0eXBlIFF1b3RhVGllcixcbiAgdHlwZSBRdW90YVRpZXJMaW1pdHMsXG4gIFFVT1RBX1RJRVJTLFxuICBWQUxJRF9USUVSUyxcbiAgU1RBTkRBUkRfVElFUlMsXG4gIFRFQU1fQ0FQQUJMRV9USUVSUyxcbiAgU0VBVF9QQUNLX1RJRVJTLFxuICBzZWF0UmVtZWR5LFxuICB0eXBlIFNlYXRSZW1lZHksXG4gIERFRkFVTFRfVElFUixcbiAgUVVPVEFfUkVTRVRfREFZUyxcbiAgQ1BVX0NSRURJVFNfUEVSSU9EX0RBWVMsXG4gIHF1b3RhUGVyaW9kRGF5cyxcbiAgbmV4dFF1b3RhUmVzZXREYXRlLFxuICBBVVRPTUFUSU9OX0NBTExTX1NJWklORyxcbiAgYXV0b21hdGlvbkNhbGxzRm9yLFxuICBxdW90YUdyYWNlUGN0LFxuICBlbmZvcmNlZFF1b3RhTGltaXQsXG59IGZyb20gJy4vcXVvdGEtdGllcnMuanMnO1xuLy8gVGhlIGJ1aWxkIGNsYXNzL3NpemUgY2F0YWxvZzogaWRzLCBsYWJlbHMsIGNyZWRpdCBtdWx0aXBsaWVycywgdGllciBmbG9vcnNcbi8vIGFuZCBwZXItY2xhc3Mgc2xvdCBkZWZhdWx0cy4gRGVwZW5kZW5jeS1mcmVlLCBzbyB0aGUgYnJvd3NlciBpbXBvcnRzIGl0XG4vLyB0aHJvdWdoIHRoZSBgLi9idWlsZC1jYXRhbG9nYCBzdWJwYXRoIGluc3RlYWQgb2YgbWlycm9yaW5nIGl0LlxuZXhwb3J0ICogZnJvbSAnLi9idWlsZC1jYXRhbG9nLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZmVhdHVyZS1mbGFncy5qcyc7XG5leHBvcnQge1xuICBwZXJtaXNzaW9uTGFiZWwsXG4gIGlzVmFsaWRQZXJtaXNzaW9uLFxuICBpc1N5c3RlbU9yZ09ubHlQZXJtaXNzaW9uLFxuICBpc09yZ0Fzc2lnbmFibGVQZXJtaXNzaW9uLFxuICBub3JtYWxpemVQZXJtaXNzaW9uU3Vic2V0LFxuICBpbnRlcnNlY3RQZXJtaXNzaW9ucyxcbiAgcmVzb2x2ZVVzZXJQZXJtaXNzaW9ucyxcbiAgY29uZmluZVBlcm1pc3Npb25zVG9PcmcsXG4gIGhhc1Blcm1pc3Npb24sXG4gIHR5cGUgUGVybWlzc2lvbixcbiAgQUxMX1BFUk1JU1NJT05TLFxuICBST0xFX1RFTVBMQVRFUyxcbiAgdHlwZSBSb2xlVGVtcGxhdGUsXG4gIFBFUk1JU1NJT05fQUNUSU9OUyxcbiAgUEVSTUlTU0lPTl9JRF9TSEFQRSxcbiAgUEVSTUlTU0lPTl9HQVRFUyxcbiAgUEVSTUlTU0lPTl9DQVRBTE9HLFxuICBTVVBFUkFETUlOX09OTFlfUEVSTUlTU0lPTlMsXG4gIFNZU1RFTV9PUkdfT05MWV9QRVJNSVNTSU9OUyxcbiAgT1JHX0FTU0lHTkFCTEVfUEVSTUlTU0lPTlMsXG4gIE9SR19BU1NJR05BQkxFX0NBVEVHT1JJRVMsXG4gIFJFQURfT05MWV9QRVJNSVNTSU9OUyxcbiAgUk9MRV9QRVJNSVNTSU9OUyxcbiAgRUNPU1lTVEVNX01BTkFHRVJfUEVSTUlTU0lPTlMsXG4gIFBMQVRGT1JNX09QRVJBVE9SX1BFUk1JU1NJT05TLFxuICBBQ0NPVU5UX01BTkFHRVJfUEVSTUlTU0lPTlMsXG4gIENPTlNPTEVfQURNSU5fUEVSTUlTU0lPTlMsXG4gIFBMQVRGT1JNX09CU0VSVkVSX1BFUk1JU1NJT05TLFxuICBTVVBQT1JUX0FHRU5UX1BFUk1JU1NJT05TLFxuICBTVVBQT1JUX0xFQURfUEVSTUlTU0lPTlMsXG4gIFNFRURfQlVORExFUyxcbiAgU0VFRF9CVU5ETEVfSURTLFxuICBTWVNURU1fT1JHX0pPQl9CVU5ETEVTLFxuICBPUkdfQVVUT01BVElPTl9CVU5ETEVTLFxuICBBVVRPTUFUSU9OX0FDQ09VTlRfQlVORExFUyxcbiAgdHlwZSBTZWVkQnVuZGxlSWQsXG4gIFJFR0lTVFJZX09QRVJBVE9SX1BFUk1JU1NJT05TLFxuICBURUFNX0xFQURfUEVSTUlTU0lPTlMsXG4gIFBJUEVMSU5FX0FVVE9NQVRJT05fUEVSTUlTU0lPTlMsXG4gIFBJUEVMSU5FX1JFR0lTVFJBVElPTl9QRVJNSVNTSU9OUyxcbn0gZnJvbSAnLi9wZXJtaXNzaW9ucy5qcyc7XG5leHBvcnQge1xuICBNRVRBREFUQV9LRVlfQ0FUQUxPRyxcbiAgTWV0YWRhdGFLZXlzLFxuICB0eXBlIE1ldGFkYXRhS2V5LFxuICB0eXBlIE1ldGFkYXRhS2V5T3B0aW9uLFxuICBNRVRBREFUQV9LRVlfR1JPVVBTLFxufSBmcm9tICcuL21ldGFkYXRhLWtleXMuanMnO1xuZXhwb3J0IHtcbiAgdHlwZSBBdWRpdEV2ZW50LFxufSBmcm9tICcuL2F1ZGl0LWV2ZW50cy5qcyc7XG5leHBvcnQge1xuICBSRU1PVEVfQVVESVRfQUNUSU9OUyxcbiAgaXNSZW1vdGVBdWRpdEFjdGlvbixcbiAgdHlwZSBSZW1vdGVBdWRpdEFjdGlvbixcbn0gZnJvbSAnLi9yZW1vdGUtYXVkaXQtYWN0aW9ucy5qcyc7XG5leHBvcnQge1xuICBBU0tfQUdFTlRfUFJPUE9TRVIsXG4gIEFTS19QUk9QT1NFRF9CWV9IRUFERVIsXG4gIFBST1BPU0VEX0JZX0RFVEFJTF9LRVksXG4gIGFza1Byb3Bvc2FsQXVkaXREZXRhaWxzLFxuICByZWFkUHJvcG9zZXJDbGFpbSxcbiAgd2l0aFByb3Bvc2FsUHJvdmVuYW5jZSxcbiAgT1JHX1NFVFRJTkdfUFJPUE9TQUxfQUxMT1dMSVNULFxuICBPUkdfU0VUVElOR19QUk9QT1NBTF9FWENMVVNJT05TLFxuICBPUkdfU0VUVElOR19QUk9QT1NBTF9LRVlTLFxuICBpc1Byb3Bvc2FibGVPcmdTZXR0aW5nLFxuICBpc1ZhbGlkT3JnU2V0dGluZ1ZhbHVlLFxuICBvcmdTZXR0aW5nU3BlYyxcbiAgcGlja0FsbG93ZWQsXG4gIGRpZmZPcmdTZXR0aW5ncyxcbiAgb3JnU2V0dGluZ1JlcXVlc3RzLFxuICB0eXBlIEFza1Byb3Bvc2FsUHJvdmVuYW5jZSxcbiAgdHlwZSBQcm9wb3NlckNsYWltLFxuICB0eXBlIE9yZ1NldHRpbmdDaGFuZ2UsXG4gIHR5cGUgT3JnU2V0dGluZ0tleSxcbiAgdHlwZSBPcmdTZXR0aW5nUGF0Y2gsXG4gIHR5cGUgT3JnU2V0dGluZ1JlcXVlc3QsXG4gIHR5cGUgT3JnU2V0dGluZ1NoYXBlLFxuICB0eXBlIE9yZ1NldHRpbmdTcGVjLFxuICB0eXBlIE9yZ1NldHRpbmdTdXJmYWNlLFxuICB0eXBlIE9yZ1NldHRpbmdWYWx1ZSxcbiAgdHlwZSBQaWNrQWxsb3dlZFJlc3VsdCxcbn0gZnJvbSAnLi9hc2stcHJvcG9zYWxzLmpzJztcbmV4cG9ydCB7XG4gIGlzRWNvc3lzdGVtTm90aWZpY2F0aW9uRXZlbnQsXG4gIHBhcnNlRWNvc3lzdGVtTm90aWZ5UmVxdWVzdCxcbiAgbmV4dEVjb3N5c3RlbURpZ2VzdFRpbWUsXG4gIHJlbmRlckVjb3N5c3RlbU1hbmFnZXJDaGFuZ2UsXG4gIHJlbmRlckVjb3N5c3RlbURpZ2VzdCxcbiAgdHlwZSBFY29zeXN0ZW1Ob3RpZmljYXRpb25FdmVudElkLFxuICB0eXBlIEVjb3N5c3RlbU5vdGlmaWNhdGlvbkNoYW5uZWwsXG4gIEVDT1NZU1RFTV9FTUFJTF9QUkVGRVJFTkNFX0ZJRUxEUyxcbiAgdHlwZSBFY29zeXN0ZW1FbWFpbFByZWZlcmVuY2VGaWVsZCxcbiAgRUNPU1lTVEVNX0VNQUlMX1BSRUZFUkVOQ0VfRklFTERfTkFNRVMsXG4gIEVDT1NZU1RFTV9OT1RJRklDQVRJT05fRVZFTlRTLFxuICB0eXBlIEVjb3N5c3RlbVJlY2lwaWVudFNwZWMsXG4gIHR5cGUgRWNvc3lzdGVtTm90aWZ5UmVxdWVzdCxcbn0gZnJvbSAnLi9lY29zeXN0ZW0tbm90aWZpY2F0aW9ucy5qcyc7XG5leHBvcnQge1xuICBwdWJsaXNoZXJUZXJtc1ZlcnNpb24sXG4gIHB1Ymxpc2hlckhhbmRsZVByb2JsZW0sXG4gIGlzT2ZmaWNpYWxBdXRvQXBwcm92YWxFbmFibGVkLFxuICBpc1BsdWdpblB1Ymxpc2hpbmdFbmFibGVkLFxuICBpc0Fub255bW91c1N1Ym1pc3Npb25zRW5hYmxlZCxcbiAgaXNQbHVnaW5SZXZpZXdzRW5hYmxlZCxcbiAgT0ZGSUNJQUxfQ0FUQUxPR19MT0FERVJfQUNDT1VOVCxcbiAgREVGQVVMVF9QVUJMSVNIRVJfVEVSTVNfVkVSU0lPTixcbiAgQlVJTFRJTl9SRVNFUlZFRF9IQU5ETEVTLFxuICBURU5BTlRfUkVRVUVTVF9LSU5EUyxcbiAgUFVCTElTSF9QRVJNSVNTSU9OX1JFUVVFU1RfS0lORFMsXG4gIFZFUklGWV9SRVFVRVNUX0tJTkRTLFxuICBTVEVQX1VQX1JFUVVFU1RfS0lORFMsXG4gIFJFUVVFU1RfU0xBX0hPVVJTLFxufSBmcm9tICcuL2Vjb3N5c3RlbS5qcyc7XG5leHBvcnQge1xuICBhZ2VTY29yZSxcbiAgdnVsblNjb3JlLFxuICBjb21wdXRlSGVhbHRoU2NvcmUsXG4gIHB1Ymxpc2hlckhlYWx0aFNjb3JlLFxuICBwdWJsaXNoZXJTdWNjZXNzUmF0ZSxcbiAgaGVhbHRoQmFuZCxcbiAgSEVBTFRIX0NPTVBPTkVOVFMsXG4gIEhFQUxUSF9XRUlHSFRTLFxuICB0eXBlIEhlYWx0aEJyZWFrZG93bixcbiAgdHlwZSBIZWFsdGhDb21wb25lbnRTY29yZSxcbiAgdHlwZSBIZWFsdGhSZXN1bHQsXG4gIHR5cGUgSGVhbHRoSW5wdXRzLFxuICB0eXBlIEhlYWx0aEJhbmQsXG59IGZyb20gJy4vcGx1Z2luLWhlYWx0aC5qcyc7XG5leHBvcnQge1xuICBhcHBseVZ1bG5XYWl2ZXJzLFxuICBhc1NjYW5GbGFnLFxuICBkZXNjcmliZUZpbmRpbmdzLFxuICBkZXNjcmliZUZpeCxcbiAgYXRPckFib3ZlRmFpbE9uLFxuICBleGNlZWRzVnVsbkZsb29yLFxuICBmYWlsT25MYWJlbCxcbiAgZ2F0ZWRGaXhhYmxlQ291bnQsXG4gIGlzR2F0ZWRGaW5kaW5nLFxuICBuZXdTY2FuRmluZGluZ3MsXG4gIHBhcnNlVnVsbldhaXZlcnMsXG4gIHBhcnNlVnVsbldhaXZlcnNWZXJib3NlLFxuICBwbHVnaW5WdWxuRmFpbE9uLFxuICBwbHVnaW5WdWxuR2F0ZUtldixcbiAgcGx1Z2luVnVsbk1heEZpbmRpbmdzLFxuICBTQ0FOX0ZMQUdfVE9QX0ZJTkRJTkdTLFxuICBTQ0FOX1NVTU1BUllfTUFYX0JJTkFSSUVTLFxuICBTQ0FOX1NVTU1BUllfTUFYX0ZJTkRJTkdTLFxuICBzY2FuRmluZGluZ0tleSxcbiAgdnVsbkZsYWdnZWRNZXNzYWdlLFxuICB2dWxuRmxhZ2dlZFdhcm5pbmcsXG4gIHZ1bG5XYWl2ZXJMYWJlbHMsXG4gIHR5cGUgUGx1Z2luU2NhbkZpbmRpbmcsXG4gIHR5cGUgUGx1Z2luU2NhbkZsYWcsXG4gIHR5cGUgUGx1Z2luVnVsbkZhaWxPbixcbiAgdHlwZSBQbHVnaW5TY2FuU3VtbWFyeSxcbiAgdHlwZSBWdWxuRmxhZ2dlZFdhcm5pbmcsXG4gIHR5cGUgVnVsbldhaXZlcixcbiAgdHlwZSBWdWxuV2FpdmVyUGFyc2UsXG4gIHR5cGUgVnVsbldhaXZlclByb2JsZW0sXG4gIHR5cGUgV2FpdmVyT3V0Y29tZSxcbn0gZnJvbSAnLi9wbHVnaW4tc2Nhbi5qcyc7XG4iXX0=
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEUsT0FBTyxFQUNMLGdCQUFnQixFQUVoQixZQUFZLEVBRVosZUFBZSxFQUtmLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsa0JBQWtCLEdBTW5CLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLE9BQU8sRUFNTixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFFTixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxpRkFBaUY7QUFDakYsZ0ZBQWdGO0FBQ2hGLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxPQUFPLEVBQW1DLE1BQU0sMkJBQTJCLENBQUM7QUFDNUUsT0FBTyxFQUNMLGtCQUFrQixFQUNsQix1QkFBdUIsRUFDdkIsMEJBQTBCLEVBQzFCLGlCQUFpQixFQUVqQixxQkFBcUIsRUFFckIsMEJBQTBCLEVBQzFCLGdCQUFnQixHQUdqQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFFTixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQ0wsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsYUFBYSxFQUdiLFdBQVcsRUFDWCxXQUFXLEVBQ1gsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsVUFBVSxFQUVWLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNsQixhQUFhLEVB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LGdCQUFnQixHQVVqQixNQUFNLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmV4cG9ydCB7IEVycm9yQ29kZSwgZ2V0U3RhdHVzRm9yRXJyb3JDb2RlIH0gZnJvbSAnLi9lcnJvci1jb2Rlcy5qcyc7XG5leHBvcnQge1xuICBpc1ZhbGlkUXVvdGFUeXBlLFxuICB0eXBlIFRva2VuU2NvcGUsXG4gIFRPS0VOX1NDT1BFUyxcbiAgdHlwZSBQcmluY2lwYWxUeXBlLFxuICBQUklOQ0lQQUxfVFlQRVMsXG4gIHR5cGUgVG9rZW5Vc2UsXG4gIHR5cGUgQXV0aE1ldGhvZCxcbiAgdHlwZSBBc3N1cmFuY2VMZXZlbCxcbiAgdHlwZSBRdW90YVR5cGUsXG4gIFZBTElEX1FVT1RBX1RZUEVTLFxuICBRVU9UQV9UWVBFX0xBQkVMUyxcbiAgUVVPVEFfVVBHUkFERV9QQVRILFxuICB0eXBlIFF1b3RhQ2hlY2tSZXN1bHQsXG4gIHR5cGUgUXVvdGFJbmZvLFxuICB0eXBlIEFwaVJlc3BvbnNlLFxuICB0eXBlIEp3dFBheWxvYWQsXG4gIHR5cGUgSGVhbHRoQ2hlY2tSZXNwb25zZSxcbn0gZnJvbSAnLi9jb21tb24uanMnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlbGluZS5qcyc7XG5leHBvcnQge1xuICB0eXBlIExpZmVjeWNsZSxcbiAgdHlwZSBDcml0aWNhbGl0eSxcbiAgdHlwZSBPd25lclR5cGUsXG4gIHR5cGUgRW50aXR5TGluayxcbiAgdHlwZSBFbnRpdHlMYWJlbHMsXG59IGZyb20gJy4vY2F0YWxvZy1tZXRhZGF0YS5qcyc7XG5leHBvcnQge1xuICB0eXBlIFRlbXBsYXRlSW5wdXQsXG59IGZyb20gJy4vcGlwZWxpbmUtdGVtcGxhdGUuanMnO1xuZXhwb3J0ICogZnJvbSAnLi92aXNpYmlsaXR5LmpzJztcbmV4cG9ydCAqIGZyb20gJy4vcmVzZXJ2ZWQtdGFncy5qcyc7XG4vLyBXaGF0IGVhY2ggcXVvdGEgdHlwZSBpcyBjYWxsZWQgYW5kIGhvdyBpdHMgbnVtYmVyIHJlbmRlcnMg4oCUIHRoZSBvbmUgc291cmNlIHRoZVxuLy8gYnJvd3NlciBhbHNvIGltcG9ydHMgZGlyZWN0bHkgdmlhIGBAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZS9xdW90YS1jYXRhbG9nYC5cbmV4cG9ydCAqIGZyb20gJy4vcXVvdGEtY2F0YWxvZy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3dpcmUtdm9jYWJ1bGFyeS5qcyc7XG5leHBvcnQgeyB0eXBlIENvbXBsaWFuY2VFeGVtcHRpb25SZXF1ZXN0IH0gZnJvbSAnLi9jb21wbGlhbmNlLWV4ZW1wdGlvbi5qcyc7XG5leHBvcnQge1xuICBQTFVHSU5fU1VNTUFSWV9NQVgsXG4gIFBMVUdJTl9SRUFETUVfTUFYX0JZVEVTLFxuICBQTFVHSU5fQ0hBTkdFTE9HX01BWF9CWVRFUyxcbiAgUExVR0lOX0NBVEVHT1JJRVMsXG4gIHR5cGUgUGx1Z2luQ2F0YWxvZ0NhdGVnb3J5LFxuICBQTFVHSU5fQ0FUQUxPR19GSUVMRFMsXG4gIHR5cGUgUGx1Z2luQ2F0YWxvZ0ZpZWxkLFxuICBQTFVHSU5fQ0FUQUxPR19MSU5LX0ZJRUxEUyxcbiAgTUVUQURBVEFfU09VUkNFUyxcbiAgdHlwZSBNZXRhZGF0YVNvdXJjZSxcbiAgdHlwZSBNZXRhZGF0YVNvdXJjZXMsXG59IGZyb20gJy4vcGx1Z2luLWNhdGFsb2cuanMnO1xuZXhwb3J0IHtcbiAgdHlwZSBIdHRwUmVxdWVzdCxcbn0gZnJvbSAnLi9odHRwLmpzJztcbmV4cG9ydCB7XG4gIHRpZXJBbGxvd3NUZWFtcyxcbiAgaXNCaWxsaW5nRW5hYmxlZCxcbiAgaXNWYWxpZFRpZXIsXG4gIGdldFRpZXJMaW1pdHMsXG4gIHR5cGUgUXVvdGFUaWVyLFxuICB0eXBlIFF1b3RhVGllckxpbWl0cyxcbiAgUVVPVEFfVElFUlMsXG4gIFZBTElEX1RJRVJTLFxuICBTVEFOREFSRF9USUVSUyxcbiAgVEVBTV9DQVBBQkxFX1RJRVJTLFxuICBTRUFUX1BBQ0tfVElFUlMsXG4gIHNlYXRSZW1lZHksXG4gIHR5cGUgU2VhdFJlbWVkeSxcbiAgREVGQVVMVF9USUVSLFxuICBRVU9UQV9SRVNFVF9EQVlTLFxuICBDUFVfQ1JFRElUU19QRVJJT0RfREFZUyxcbiAgcXVvdGFQZXJpb2REYXlzLFxuICBuZXh0UXVvdGFSZXNldERhdGUsXG4gIEFVVE9NQVRJT05fQ0FMTFNfU0laSU5HLFxuICBhdXRvbWF0aW9uQ2FsbHNGb3IsXG4gIHF1b3RhR3JhY2VQY3QsXG4gIGVuZm9yY2VkUXVvdGFMaW1pdCxcbn0gZnJvbSAnLi9xdW90YS10aWVycy5qcyc7XG4vLyBUaGUgYnVpbGQgY2xhc3Mvc2l6ZSBjYXRhbG9nOiBpZHMsIGxhYmVscywgY3JlZGl0IG11bHRpcGxpZXJzLCB0aWVyIGZsb29yc1xuLy8gYW5kIHBlci1jbGFzcyBzbG90IGRlZmF1bHRzLiBEZXBlbmRlbmN5LWZyZWUsIHNvIHRoZSBicm93c2VyIGltcG9ydHMgaXRcbi8vIHRocm91Z2ggdGhlIGAuL2J1aWxkLWNhdGFsb2dgIHN1YnBhdGggaW5zdGVhZCBvZiBtaXJyb3JpbmcgaXQuXG5leHBvcnQgKiBmcm9tICcuL2J1aWxkLWNhdGFsb2cuanMnO1xuLy8gV2hlcmUgYSBxdW90YSBjb3VudGVyIGlzIEhFQURFRC4gRGVwZW5kZW5jeS1mcmVlIGFuZCBicm93c2VyLWltcG9ydGVkXG4vLyB0aHJvdWdoIGAuL3VzYWdlLXByb2plY3Rpb25gLCBzbyB0aGUgcXVvdGEgY2FyZCdzIGZvcmVjYXN0LCB0aGUgdGhyZXNob2xkXG4vLyBub3RpY2UgYW5kIHRoZSB1c2FnZSBwcm9maWxlJ3MgdHJhamVjdG9yeSBzaWduYWwgc2hhcmUgT05FIGZvcm11bGEuXG5leHBvcnQgKiBmcm9tICcuL3VzYWdlLXByb2plY3Rpb24uanMnO1xuZXhwb3J0ICogZnJvbSAnLi9mZWF0dXJlLWZsYWdzLmpzJztcbmV4cG9ydCB7XG4gIHBlcm1pc3Npb25MYWJlbCxcbiAgaXNWYWxpZFBlcm1pc3Npb24sXG4gIGlzU3lzdGVtT3JnT25seVBlcm1pc3Npb24sXG4gIGlzT3JnQXNzaWduYWJsZVBlcm1pc3Npb24sXG4gIG5vcm1hbGl6ZVBlcm1pc3Npb25TdWJzZXQsXG4gIGludGVyc2VjdFBlcm1pc3Npb25zLFxuICByZXNvbHZlVXNlclBlcm1pc3Npb25zLFxuICBjb25maW5lUGVybWlzc2lvbnNUb09yZyxcbiAgaGFzUGVybWlzc2lvbixcbiAgdHlwZSBQZXJtaXNzaW9uLFxuICBBTExfUEVSTUlTU0lPTlMsXG4gIFJPTEVfVEVNUExBVEVTLFxuICB0eXBlIFJvbGVUZW1wbGF0ZSxcbiAgUEVSTUlTU0lPTl9BQ1RJT05TLFxuICBQRVJNSVNTSU9OX0lEX1NIQVBFLFxuICBQRVJNSVNTSU9OX0dBVEVTLFxuICBQRVJNSVNTSU9OX0NBVEFMT0csXG4gIFNVUEVSQURNSU5fT05MWV9QRVJNSVNTSU9OUyxcbiAgU1lTVEVNX09SR19PTkxZX1BFUk1JU1NJT05TLFxuICBPUkdfQVNTSUdOQUJMRV9QRVJNSVNTSU9OUyxcbiAgT1JHX0FTU0lHTkFCTEVfQ0FURUdPUklFUyxcbiAgUkVBRF9PTkxZX1BFUk1JU1NJT05TLFxuICBST0xFX1BFUk1JU1NJT05TLFxuICBFQ09TWVNURU1fTUFOQUdFUl9QRVJNSVNTSU9OUyxcbiAgUExBVEZPUk1fT1BFUkFUT1JfUEVSTUlTU0lPTlMsXG4gIEFDQ09VTlRfTUFOQUdFUl9QRVJNSVNTSU9OUyxcbiAgQ09OU09MRV9BRE1JTl9QRVJNSVNTSU9OUyxcbiAgUExBVEZPUk1fT0JTRVJWRVJfUEVSTUlTU0lPTlMsXG4gIFNVUFBPUlRfQUdFTlRfUEVSTUlTU0lPTlMsXG4gIFNVUFBPUlRfTEVBRF9QRVJNSVNTSU9OUyxcbiAgU0VFRF9CVU5ETEVTLFxuICBTRUVEX0JVTkRMRV9JRFMsXG4gIFNZU1RFTV9PUkdfSk9CX0JVTkRMRVMsXG4gIE9SR19BVVRPTUFUSU9OX0JVTkRMRVMsXG4gIEFVVE9NQVRJT05fQUNDT1VOVF9CVU5ETEVTLFxuICB0eXBlIFNlZWRCdW5kbGVJZCxcbiAgUkVHSVNUUllfT1BFUkFUT1JfUEVSTUlTU0lPTlMsXG4gIFRFQU1fTEVBRF9QRVJNSVNTSU9OUyxcbiAgUElQRUxJTkVfQVVUT01BVElPTl9QRVJNSVNTSU9OUyxcbiAgUElQRUxJTkVfUkVHSVNUUkFUSU9OX1BFUk1JU1NJT05TLFxufSBmcm9tICcuL3Blcm1pc3Npb25zLmpzJztcbmV4cG9ydCB7XG4gIE1FVEFEQVRBX0tFWV9DQVRBTE9HLFxuICBNZXRhZGF0YUtleXMsXG4gIHR5cGUgTWV0YWRhdGFLZXksXG4gIHR5cGUgTWV0YWRhdGFLZXlPcHRpb24sXG4gIE1FVEFEQVRBX0tFWV9HUk9VUFMsXG59IGZyb20gJy4vbWV0YWRhdGEta2V5cy5qcyc7XG5leHBvcnQge1xuICB0eXBlIEF1ZGl0RXZlbnQsXG59IGZyb20gJy4vYXVkaXQtZXZlbnRzLmpzJztcbmV4cG9ydCB7XG4gIFJFTU9URV9BVURJVF9BQ1RJT05TLFxuICBpc1JlbW90ZUF1ZGl0QWN0aW9uLFxuICB0eXBlIFJlbW90ZUF1ZGl0QWN0aW9uLFxufSBmcm9tICcuL3JlbW90ZS1hdWRpdC1hY3Rpb25zLmpzJztcbmV4cG9ydCB7XG4gIEFTS19BR0VOVF9QUk9QT1NFUixcbiAgQVNLX1BST1BPU0VEX0JZX0hFQURFUixcbiAgUFJPUE9TRURfQllfREVUQUlMX0tFWSxcbiAgYXNrUHJvcG9zYWxBdWRpdERldGFpbHMsXG4gIHJlYWRQcm9wb3NlckNsYWltLFxuICB3aXRoUHJvcG9zYWxQcm92ZW5hbmNlLFxuICBPUkdfU0VUVElOR19QUk9QT1NBTF9BTExPV0xJU1QsXG4gIE9SR19TRVRUSU5HX1BST1BPU0FMX0VYQ0xVU0lPTlMsXG4gIE9SR19TRVRUSU5HX1BST1BPU0FMX0tFWVMsXG4gIGlzUHJvcG9zYWJsZU9yZ1NldHRpbmcsXG4gIGlzVmFsaWRPcmdTZXR0aW5nVmFsdWUsXG4gIG9yZ1NldHRpbmdTcGVjLFxuICBwaWNrQWxsb3dlZCxcbiAgZGlmZk9yZ1NldHRpbmdzLFxuICBvcmdTZXR0aW5nUmVxdWVzdHMsXG4gIHR5cGUgQXNrUHJvcG9zYWxQcm92ZW5hbmNlLFxuICB0eXBlIFByb3Bvc2VyQ2xhaW0sXG4gIHR5cGUgT3JnU2V0dGluZ0NoYW5nZSxcbiAgdHlwZSBPcmdTZXR0aW5nS2V5LFxuICB0eXBlIE9yZ1NldHRpbmdQYXRjaCxcbiAgdHlwZSBPcmdTZXR0aW5nUmVxdWVzdCxcbiAgdHlwZSBPcmdTZXR0aW5nU2hhcGUsXG4gIHR5cGUgT3JnU2V0dGluZ1NwZWMsXG4gIHR5cGUgT3JnU2V0dGluZ1N1cmZhY2UsXG4gIHR5cGUgT3JnU2V0dGluZ1ZhbHVlLFxuICB0eXBlIFBpY2tBbGxvd2VkUmVzdWx0LFxufSBmcm9tICcuL2Fzay1wcm9wb3NhbHMuanMnO1xuZXhwb3J0IHtcbiAgaXNFY29zeXN0ZW1Ob3RpZmljYXRpb25FdmVudCxcbiAgcGFyc2VFY29zeXN0ZW1Ob3RpZnlSZXF1ZXN0LFxuICBuZXh0RWNvc3lzdGVtRGlnZXN0VGltZSxcbiAgcmVuZGVyRWNvc3lzdGVtTWFuYWdlckNoYW5nZSxcbiAgcmVuZGVyRWNvc3lzdGVtRGlnZXN0LFxuICB0eXBlIEVjb3N5c3RlbU5vdGlmaWNhdGlvbkV2ZW50SWQsXG4gIHR5cGUgRWNvc3lzdGVtTm90aWZpY2F0aW9uQ2hhbm5lbCxcbiAgRUNPU1lTVEVNX0VNQUlMX1BSRUZFUkVOQ0VfRklFTERTLFxuICB0eXBlIEVjb3N5c3RlbUVtYWlsUHJlZmVyZW5jZUZpZWxkLFxuICBFQ09TWVNURU1fRU1BSUxfUFJFRkVSRU5DRV9GSUVMRF9OQU1FUyxcbiAgRUNPU1lTVEVNX05PVElGSUNBVElPTl9FVkVOVFMsXG4gIHR5cGUgRWNvc3lzdGVtUmVjaXBpZW50U3BlYyxcbiAgdHlwZSBFY29zeXN0ZW1Ob3RpZnlSZXF1ZXN0LFxufSBmcm9tICcuL2Vjb3N5c3RlbS1ub3RpZmljYXRpb25zLmpzJztcbmV4cG9ydCB7XG4gIHB1Ymxpc2hlclRlcm1zVmVyc2lvbixcbiAgcHVibGlzaGVySGFuZGxlUHJvYmxlbSxcbiAgaXNPZmZpY2lhbEF1dG9BcHByb3ZhbEVuYWJsZWQsXG4gIGlzUGx1Z2luUHVibGlzaGluZ0VuYWJsZWQsXG4gIGlzQW5vbnltb3VzU3VibWlzc2lvbnNFbmFibGVkLFxuICBpc1BsdWdpblJldmlld3NFbmFibGVkLFxuICBPRkZJQ0lBTF9DQVRBTE9HX0xPQURFUl9BQ0NPVU5ULFxuICBERUZBVUxUX1BVQkxJU0hFUl9URVJNU19WRVJTSU9OLFxuICBCVUlMVElOX1JFU0VSVkVEX0hBTkRMRVMsXG4gIFRFTkFOVF9SRVFVRVNUX0tJTkRTLFxuICBQVUJMSVNIX1BFUk1JU1NJT05fUkVRVUVTVF9LSU5EUyxcbiAgVkVSSUZZX1JFUVVFU1RfS0lORFMsXG4gIFNURVBfVVBfUkVRVUVTVF9LSU5EUyxcbiAgUkVRVUVTVF9TTEFfSE9VUlMsXG59IGZyb20gJy4vZWNvc3lzdGVtLmpzJztcbmV4cG9ydCB7XG4gIGFnZVNjb3JlLFxuICB2dWxuU2NvcmUsXG4gIGNvbXB1dGVIZWFsdGhTY29yZSxcbiAgcHVibGlzaGVySGVhbHRoU2NvcmUsXG4gIHB1Ymxpc2hlclN1Y2Nlc3NSYXRlLFxuICBoZWFsdGhCYW5kLFxuICBIRUFMVEhfQ09NUE9ORU5UUyxcbiAgSEVBTFRIX1dFSUdIVFMsXG4gIHR5cGUgSGVhbHRoQnJlYWtkb3duLFxuICB0eXBlIEhlYWx0aENvbXBvbmVudFNjb3JlLFxuICB0eXBlIEhlYWx0aFJlc3VsdCxcbiAgdHlwZSBIZWFsdGhJbnB1dHMsXG4gIHR5cGUgSGVhbHRoQmFuZCxcbn0gZnJvbSAnLi9wbHVnaW4taGVhbHRoLmpzJztcbmV4cG9ydCB7XG4gIGFwcGx5VnVsbldhaXZlcnMsXG4gIGFzU2NhbkZsYWcsXG4gIGRlc2NyaWJlRmluZGluZ3MsXG4gIGRlc2NyaWJlRml4LFxuICBhdE9yQWJvdmVGYWlsT24sXG4gIGV4Y2VlZHNWdWxuRmxvb3IsXG4gIGZhaWxPbkxhYmVsLFxuICBnYXRlZEZpeGFibGVDb3VudCxcbiAgaXNHYXRlZEZpbmRpbmcsXG4gIG5ld1NjYW5GaW5kaW5ncyxcbiAgcGFyc2VWdWxuV2FpdmVycyxcbiAgcGFyc2VWdWxuV2FpdmVyc1ZlcmJvc2UsXG4gIHBsdWdpblZ1bG5GYWlsT24sXG4gIHBsdWdpblZ1bG5HYXRlS2V2LFxuICBwbHVnaW5WdWxuTWF4RmluZGluZ3MsXG4gIFNDQU5fRkxBR19UT1BfRklORElOR1MsXG4gIFNDQU5fU1VNTUFSWV9NQVhfQklOQVJJRVMsXG4gIFNDQU5fU1VNTUFSWV9NQVhfRklORElOR1MsXG4gIHNjYW5GaW5kaW5nS2V5LFxuICB2dWxuRmxhZ2dlZE1lc3NhZ2UsXG4gIHZ1bG5GbGFnZ2VkV2FybmluZyxcbiAgdnVsbldhaXZlckxhYmVscyxcbiAgdHlwZSBQbHVnaW5TY2FuRmluZGluZyxcbiAgdHlwZSBQbHVnaW5TY2FuRmxhZyxcbiAgdHlwZSBQbHVnaW5WdWxuRmFpbE9uLFxuICB0eXBlIFBsdWdpblNjYW5TdW1tYXJ5LFxuICB0eXBlIFZ1bG5GbGFnZ2VkV2FybmluZyxcbiAgdHlwZSBWdWxuV2FpdmVyLFxuICB0eXBlIFZ1bG5XYWl2ZXJQYXJzZSxcbiAgdHlwZSBWdWxuV2FpdmVyUHJvYmxlbSxcbiAgdHlwZSBXYWl2ZXJPdXRjb21lLFxufSBmcm9tICcuL3BsdWdpbi1zY2FuLmpzJztcbiJdfQ==
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* (`admin.superadmin.grant`, `org.ownership.transfer`, `user.login`, …). Keep
|
|
18
18
|
* this list free of any platform-only action.
|
|
19
19
|
*/
|
|
20
|
-
export declare const REMOTE_AUDIT_ACTIONS: readonly ['plugin.build.completed', 'plugin.build.failed', 'plugin.build.timeout', 'plugin.scan.skipped', 'plugin.vuln.waived', 'plugin.vuln.flagged', 'plugin.vuln.cleared', 'plugin.delete', 'plugin.restore', 'plugin.purge', 'plugin.update', 'plugin.upload', 'plugin.deploy', 'plugin.bulk.update', 'plugin.bulk.delete', 'plugin.dlq.purge', 'plugin.build.retry', 'plugin.dlq.replay', 'pipeline.create', 'pipeline.update', 'pipeline.delete', 'pipeline.restore', 'pipeline.purge', 'pipeline_template.create', 'pipeline_template.update', 'pipeline_template.delete', 'pipeline_template.restore', 'pipeline_template.purge', 'pipeline.execution.start', 'pipeline.execution.cancel', 'pipeline.registry.register', 'pipeline.registry.deregister', 'quota.reset', 'quota.limit.update', 'quota.delete', 'quota.notice_settings.update', 'compliance.exemption.approve', 'compliance.exemption.revoke', 'compliance.exemption.request', 'compliance.exemption.reject', 'compliance.rule.toggle', 'compliance.rule.create', 'compliance.rule.update', 'compliance.rule.delete', 'compliance.rule.restore', 'compliance.rule.purge', 'compliance.policy.create', 'compliance.policy.update', 'compliance.policy.delete', 'compliance.policy.restore', 'compliance.policy.purge', 'compliance.scan-schedule.create', 'compliance.scan-schedule.update', 'compliance.scan-schedule.delete', 'compliance.template.apply', 'compliance.scan.create', 'compliance.scan.cancel', 'compliance.scan.complete', 'compliance.subscription.auto-subscribe', 'compliance.notification-preference.update', 'registry.gc', 'registry.image.delete', 'registry.image.copy', 'registry.image.sign', 'registry.token.issue', 'registry.quarantine.credential.mint', 'message.announcement.create', 'message.delete', 'message.restore', 'message.purge', 'message.update', 'message.attachment.upload', 'message.notify.internal', 'message.org.purge', 'support.case.open', 'support.case.reply', 'support.case.status', 'support.case.severity', 'support.case.assign', 'support.case.transfer', 'support.oncall.acknowledged', 'support.oncall.escalated', 'support.oncall.test', 'support.oncall.paged', 'support.contact.designate', 'support.contact.revoke', 'support.contact.upgrade', 'support.contact.downgrade', 'support.case.note', 'support.canned.write', 'billing.subscription.create', 'billing.subscription.update', 'billing.subscription.reactivate', 'billing.subscription.cancel', 'billing.subscription.delete', 'billing.tier.override', 'billing.support-floor.override', 'billing.support-incident.grant', 'billing.addon.add', 'billing.addon.remove', 'billing.addon.prune', 'billing.discount.generate', 'billing.discount.issue', 'billing.discount.apply', 'billing.discount.remove', 'billing.discount.revoke', 'billing.campaign.create', 'billing.campaign.update', 'billing.campaign.end', 'billing.promotion.create', 'billing.promotion.update', 'billing.promotion.revoke', 'billing.promotion.grant', 'billing.promotion.activate', 'billing.credit.consumed', 'billing.credit.exhausted', 'billing.combo.expired', 'reporting.settings.update', 'reporting.deployment.outcome', 'reporting.retention.sync', 'reporting.report.definition.create', 'reporting.report.definition.update', 'reporting.report.definition.delete', 'reporting.report.ownership.transfer', 'reporting.report.published', 'reporting.report.republished', 'reporting.report.link.created', 'reporting.report.link.revoked', 'reporting.report.recipient.added', 'reporting.report.recipient.removed', 'reporting.report.policy.update', 'reporting.report.paused', 'reporting.report.resumed', 'reporting.report.run.compose', 'reporting.report.run.notes', 'reporting.report.run.summary', 'reporting.report.recipient.resend', 'reporting.report.recipient.verified', 'reporting.report.recipient.unsubscribed', 'reporting.ingest.batch', 'reporting.ingest.rejected', 'reporting.incident.record', 'authz.denied', 'ask.query', 'ask.agent.turn', 'ask.feedback', 'pipeline.ai.generate', 'plugin.ai.generate', 'publisher.create', 'publisher.update', 'publisher.terms.accept', 'publisher.verify.request', 'publisher.verify.approve', 'publisher.verify.reject', 'publisher.tier.change', 'publisher.suspend', 'publisher.unsuspend', 'publisher.transfer.request', 'publisher.transfer.accept', 'publisher.transfer.decline', 'publisher.transfer.approve', 'publisher.transfer.reject', 'publisher.profile-change.approve', 'publisher.profile-change.reject', 'plugin.request.submit', 'plugin.request.withdraw', 'plugin.request.approve', 'plugin.request.second-approve', 'plugin.request.reject', 'plugin.request.auto-approve', 'plugin.listing.publish', 'plugin.listing.update', 'plugin.listing.state.change', 'plugin.listing.pause', 'plugin.listing.unpause', 'plugin.version.pause', 'plugin.version.yank', 'plugin.version.unyank', 'plugin.version.deprecate', 'plugin.version.prune', 'ecosystem.auto-approval-rule.create', 'ecosystem.auto-approval-rule.update', 'ecosystem.auto-approval-rule.delete', 'ecosystem.reserved-name.update', 'ecosystem.bootstrap.open', 'ecosystem.bootstrap.close', 'registry.image.publish', 'registry.image.resign', 'registry.image.yank', 'registry.image.gc', 'plugin.install.request', 'plugin.install.approve', 'plugin.install.deny', 'plugin.install.create', 'plugin.install.upgrade', 'plugin.install.change-request', 'plugin.install.change-approve', 'plugin.install.change-reject', 'plugin.install.remove', 'org.plugin-install-policy.update', 'plugin.shadowing.denied', 'plugin.review.create', 'plugin.review.update', 'plugin.review.delete', 'plugin.review.report', 'plugin.review.hold', 'plugin.review.release', 'plugin.review.remove', 'plugin.review.anonymize', 'plugin.review.reply.create', 'plugin.review.reply.update', 'plugin.review.reply.delete', 'plugin.submission.create', 'plugin.submission.verify', 'plugin.submission.gate-fail', 'plugin.submission.approve', 'plugin.submission.reject', 'plugin.submission.claim', 'plugin.submission.expire', 'plugin.advisory.create', 'plugin.advisory.update', 'plugin.advisory.publish', 'plugin.advisory.withdraw', 'plugin.security_notifications.update', 'plugin.security_notifications.external_email.verify', 'plugin.security_notifications.test', 'plugin.setup_image.promoted', 'plugin.setup_image.promote_refused', 'plugin.setup_image.kept', 'plugin.setup_image.discarded', 'pipeline.vuln.accepted', 'pipeline.vuln.false_positive', 'pipeline.vuln.reopened', 'pipeline.runtime_check.flagged', 'pipeline.plugin.upgraded', 'pipeline.security_report.upload'];
|
|
20
|
+
export declare const REMOTE_AUDIT_ACTIONS: readonly ['plugin.build.completed', 'plugin.build.failed', 'plugin.build.timeout', 'plugin.scan.skipped', 'plugin.vuln.waived', 'plugin.vuln.flagged', 'plugin.vuln.cleared', 'plugin.delete', 'plugin.restore', 'plugin.purge', 'plugin.update', 'plugin.upload', 'plugin.deploy', 'plugin.bulk.update', 'plugin.bulk.delete', 'plugin.dlq.purge', 'plugin.build.retry', 'plugin.dlq.replay', 'pipeline.create', 'pipeline.update', 'pipeline.delete', 'pipeline.restore', 'pipeline.purge', 'pipeline_template.create', 'pipeline_template.update', 'pipeline_template.delete', 'pipeline_template.restore', 'pipeline_template.purge', 'pipeline.execution.start', 'pipeline.execution.cancel', 'pipeline.registry.register', 'pipeline.registry.deregister', 'quota.reset', 'quota.limit.update', 'quota.delete', 'quota.notice_settings.update', 'compliance.exemption.approve', 'compliance.exemption.revoke', 'compliance.exemption.request', 'compliance.exemption.reject', 'compliance.rule.toggle', 'compliance.rule.create', 'compliance.rule.update', 'compliance.rule.delete', 'compliance.rule.restore', 'compliance.rule.purge', 'compliance.policy.create', 'compliance.policy.update', 'compliance.policy.delete', 'compliance.policy.restore', 'compliance.policy.purge', 'compliance.scan-schedule.create', 'compliance.scan-schedule.update', 'compliance.scan-schedule.delete', 'compliance.template.apply', 'compliance.scan.create', 'compliance.scan.cancel', 'compliance.scan.complete', 'compliance.subscription.auto-subscribe', 'compliance.notification-preference.update', 'registry.gc', 'registry.image.delete', 'registry.image.copy', 'registry.image.sign', 'registry.token.issue', 'registry.quarantine.credential.mint', 'message.announcement.create', 'message.delete', 'message.restore', 'message.purge', 'message.update', 'message.attachment.upload', 'message.notify.internal', 'message.org.purge', 'support.case.open', 'support.case.reply', 'support.case.status', 'support.case.severity', 'support.case.assign', 'support.case.transfer', 'support.oncall.acknowledged', 'support.oncall.escalated', 'support.oncall.test', 'support.oncall.paged', 'support.contact.designate', 'support.contact.revoke', 'support.contact.upgrade', 'support.contact.downgrade', 'support.case.note', 'support.canned.write', 'billing.subscription.create', 'billing.subscription.update', 'billing.subscription.reactivate', 'billing.subscription.cancel', 'billing.subscription.delete', 'billing.tier.override', 'billing.support-floor.override', 'billing.support-incident.grant', 'billing.addon.add', 'billing.addon.remove', 'billing.addon.prune', 'billing.discount.generate', 'billing.discount.issue', 'billing.discount.apply', 'billing.discount.remove', 'billing.discount.revoke', 'billing.campaign.create', 'billing.campaign.update', 'billing.campaign.end', 'billing.promotion.create', 'billing.promotion.update', 'billing.promotion.revoke', 'billing.promotion.grant', 'billing.promotion.activate', 'billing.offer.sent', 'billing.offer.withdrawn', 'billing.offer.declined', 'billing.offer.dismissed', 'billing.offer.exclusion.set', 'billing.offer.exclusion.cleared', 'billing.offer.trigger', 'billing.credit.consumed', 'billing.credit.exhausted', 'billing.combo.expired', 'reporting.settings.update', 'reporting.deployment.outcome', 'reporting.retention.sync', 'reporting.report.definition.create', 'reporting.report.definition.update', 'reporting.report.definition.delete', 'reporting.report.ownership.transfer', 'reporting.report.published', 'reporting.report.republished', 'reporting.report.link.created', 'reporting.report.link.revoked', 'reporting.report.recipient.added', 'reporting.report.recipient.removed', 'reporting.report.policy.update', 'reporting.report.paused', 'reporting.report.resumed', 'reporting.report.run.compose', 'reporting.report.run.notes', 'reporting.report.run.summary', 'reporting.report.recipient.resend', 'reporting.report.recipient.verified', 'reporting.report.recipient.unsubscribed', 'reporting.ingest.batch', 'reporting.ingest.rejected', 'reporting.incident.record', 'authz.denied', 'ask.query', 'ask.agent.turn', 'ask.feedback', 'pipeline.ai.generate', 'plugin.ai.generate', 'publisher.create', 'publisher.update', 'publisher.terms.accept', 'publisher.verify.request', 'publisher.verify.approve', 'publisher.verify.reject', 'publisher.tier.change', 'publisher.suspend', 'publisher.unsuspend', 'publisher.transfer.request', 'publisher.transfer.accept', 'publisher.transfer.decline', 'publisher.transfer.approve', 'publisher.transfer.reject', 'publisher.profile-change.approve', 'publisher.profile-change.reject', 'plugin.request.submit', 'plugin.request.withdraw', 'plugin.request.approve', 'plugin.request.second-approve', 'plugin.request.reject', 'plugin.request.auto-approve', 'plugin.listing.publish', 'plugin.listing.update', 'plugin.listing.state.change', 'plugin.listing.pause', 'plugin.listing.unpause', 'plugin.version.pause', 'plugin.version.yank', 'plugin.version.unyank', 'plugin.version.deprecate', 'plugin.version.prune', 'ecosystem.auto-approval-rule.create', 'ecosystem.auto-approval-rule.update', 'ecosystem.auto-approval-rule.delete', 'ecosystem.reserved-name.update', 'ecosystem.bootstrap.open', 'ecosystem.bootstrap.close', 'registry.image.publish', 'registry.image.resign', 'registry.image.yank', 'registry.image.gc', 'plugin.install.request', 'plugin.install.approve', 'plugin.install.deny', 'plugin.install.create', 'plugin.install.upgrade', 'plugin.install.change-request', 'plugin.install.change-approve', 'plugin.install.change-reject', 'plugin.install.remove', 'org.plugin-install-policy.update', 'plugin.shadowing.denied', 'plugin.review.create', 'plugin.review.update', 'plugin.review.delete', 'plugin.review.report', 'plugin.review.hold', 'plugin.review.release', 'plugin.review.remove', 'plugin.review.anonymize', 'plugin.review.reply.create', 'plugin.review.reply.update', 'plugin.review.reply.delete', 'plugin.submission.create', 'plugin.submission.verify', 'plugin.submission.gate-fail', 'plugin.submission.approve', 'plugin.submission.reject', 'plugin.submission.claim', 'plugin.submission.expire', 'plugin.advisory.create', 'plugin.advisory.update', 'plugin.advisory.publish', 'plugin.advisory.withdraw', 'plugin.security_notifications.update', 'plugin.security_notifications.external_email.verify', 'plugin.security_notifications.test', 'plugin.setup_image.promoted', 'plugin.setup_image.promote_refused', 'plugin.setup_image.kept', 'plugin.setup_image.discarded', 'pipeline.vuln.accepted', 'pipeline.vuln.false_positive', 'pipeline.vuln.reopened', 'pipeline.runtime_check.flagged', 'pipeline.plugin.upgraded', 'pipeline.security_report.upload'];
|
|
21
21
|
export type RemoteAuditAction = typeof REMOTE_AUDIT_ACTIONS[number];
|
|
22
22
|
/** Whether `value` is an action a remote service may emit (the ingest allow-list). */
|
|
23
23
|
export declare function isRemoteAuditAction(value: string): value is RemoteAuditAction;
|
|
@@ -305,6 +305,25 @@ export const REMOTE_AUDIT_ACTIONS = [
|
|
|
305
305
|
'billing.promotion.revoke',
|
|
306
306
|
'billing.promotion.grant',
|
|
307
307
|
'billing.promotion.activate',
|
|
308
|
+
// Expansion OFFERS (docs/plans/sales-agent.md). An automated granter needs its
|
|
309
|
+
// own trail: `declined` and `dismissed` are the account's own answers (and the
|
|
310
|
+
// pair D6's lengthened quiet window depends on — "never saw it" and "said no"
|
|
311
|
+
// must not be the same row); `exclusion.set`/`cleared` are the operator veto,
|
|
312
|
+
// which is the price of shipping the feature at all and therefore has to be
|
|
313
|
+
// attributable; `trigger` is a human asking for an offer now, recorded so a
|
|
314
|
+
// manual offer is distinguishable from an agent one in the outcome log.
|
|
315
|
+
// The agent's OWN work, under its own actor (D14 — `OFFERS_AGENT_ACTOR_ID`).
|
|
316
|
+
// `sent` is what makes "why did this account get this?" answerable from the
|
|
317
|
+
// central trail rather than only from the service's own collection, and
|
|
318
|
+
// `withdrawn` is the recall an operator reaches for on the morning a rule
|
|
319
|
+
// turns out to be wrong — both carry the rationale or the window, never copy.
|
|
320
|
+
'billing.offer.sent',
|
|
321
|
+
'billing.offer.withdrawn',
|
|
322
|
+
'billing.offer.declined',
|
|
323
|
+
'billing.offer.dismissed',
|
|
324
|
+
'billing.offer.exclusion.set',
|
|
325
|
+
'billing.offer.exclusion.cleared',
|
|
326
|
+
'billing.offer.trigger',
|
|
308
327
|
// Usage-credit realization — a customer/compliance-visible record of credit
|
|
309
328
|
// movement: `consumed` (Marketplace metered drawdown), `exhausted` (balance hit
|
|
310
329
|
// zero), and a combo ending. `details` carry cents/ids only, no payment secrets.
|
|
@@ -570,4 +589,4 @@ export const REMOTE_AUDIT_ACTIONS = [
|
|
|
570
589
|
export function isRemoteAuditAction(value) {
|
|
571
590
|
return REMOTE_AUDIT_ACTIONS.includes(value);
|
|
572
591
|
}
|
|
573
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWF1ZGl0LWFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvcmVtb3RlLWF1ZGl0LWFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7OztHQU9HO0FBR0g7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2xDLHdCQUF3QjtJQUN4QixxQkFBcUI7SUFDckIsc0JBQXNCO0lBQ3RCLDhFQUE4RTtJQUM5RSwyRUFBMkU7SUFDM0UsOEVBQThFO0lBQzlFLHFCQUFxQjtJQUNyQix1RUFBdUU7SUFDdkUsMkVBQTJFO0lBQzNFLCtFQUErRTtJQUMvRSw4RUFBOEU7SUFDOUUsa0VBQWtFO0lBQ2xFLHlFQUF5RTtJQUN6RSxvQkFBb0I7SUFDcEIsMkVBQTJFO0lBQzNFLDZFQUE2RTtJQUM3RSxzRUFBc0U7SUFDdEUsOEVBQThFO0lBQzlFLDZFQUE2RTtJQUM3RSx1RUFBdUU7SUFDdkUscUNBQXFDO0lBQ3JDLHFCQUFxQjtJQUNyQixxQkFBcUI7SUFDckIsNkVBQTZFO0lBQzdFLCtFQUErRTtJQUMvRSxxRUFBcUU7SUFDckUsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQiw0RUFBNEU7SUFDNUUsd0VBQXdFO0lBQ3hFLGNBQWM7SUFDZCxlQUFlO0lBQ2YsZUFBZTtJQUNmLGVBQWU7SUFDZiw4RUFBOEU7SUFDOUUsNEVBQTRFO0lBQzVFLG9CQUFvQjtJQUNwQixvQkFBb0I7SUFDcEIsa0JBQWtCO0lBQ2xCLHlFQUF5RTtJQUN6RSw0RUFBNEU7SUFDNUUsNEVBQTRFO0lBQzVFLHVFQUF1RTtJQUN2RSxvQkFBb0I7SUFDcEIsbUJBQW1CO0lBQ25CLGdFQUFnRTtJQUNoRSxxRUFBcUU7SUFDckUsb0RBQW9EO0lBQ3BELGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLGtCQUFrQjtJQUNsQixt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Q3hFLCtFQUErRTtJQUMvRSwyRUFBMkU7SUFDM0UsNEVBQTRFO0lBQzVFLDBCQUEwQjtJQUMxQixpQ0FBaUM7Q0FDekIsQ0FBQztBQUlYLHNGQUFzRjtBQUN0RixNQUFNLFVBQVUsbUJBQW1CLENBQUMsS0FBYTtJQUMvQyxPQUFRLG9CQUEwQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogVGhlIHJlbW90ZSAobm9uLXBsYXRmb3JtKSBhdWRpdCBBQ1RJT04gVk9DQUJVTEFSWS5cbiAqXG4gKiBLZXB0IGFwYXJ0IGZyb20gdGhlIGNsaWVudCB0aGF0IHNoaXBzIHRoZSBldmVudHMgKGBzZXJ2aWNlcy9yZW1vdGUtYXVkaXQtY2xpZW50LnRzYClcbiAqIGJlY2F1c2UgaXQgaXMgYW4gYWxsb3ctbGlzdCwgbm90IG1hY2hpbmVyeTogaXQgaXMgdGhlIHRoaW5nIGEgcmV2aWV3ZXIgcmVhZHNcbiAqIGVuZCB0byBlbmQgd2hlbiBkZWNpZGluZyB3aGV0aGVyIGEgc2VydmljZSBtYXkgZW1pdCBhIGdpdmVuIGFjdGlvbiwgYW5kIGl0IGlzXG4gKiB3aGF0IHBsYXRmb3JtJ3MgaW5nZXN0IHZhbGlkYXRlcyBhZ2FpbnN0LlxuICovXG5cblxuLyoqXG4gKiBUaGUgZXhhY3Qgc2V0IG9mIGF1ZGl0IGFjdGlvbnMgYSBOT04tUExBVEZPUk0gKHJlbW90ZSkgc2VydmljZSBpcyBwZXJtaXR0ZWQgdG9cbiAqIGVtaXQgdGhyb3VnaCBgUE9TVCAvYXVkaXQvZXZlbnRzYC4gVGhpcyBpcyB0aGUgU0lOR0xFIFNPVVJDRSDigJQgYFJlbW90ZUF1ZGl0QWN0aW9uYFxuICogaXMgZGVyaXZlZCBmcm9tIGl0LCBzbyB0aGUgdHlwZSBhbmQgdGhlIHJ1bnRpbWUgYWxsb3ctbGlzdCBjYW4gbmV2ZXIgZHJpZnQuXG4gKlxuICogU0VDVVJJVFk6IHBsYXRmb3JtJ3MgaW5nZXN0IHZhbGlkYXRlcyBgYWN0aW9uYCBhZ2FpbnN0IHRoaXMgc3Vic2V0ICh2aWFcbiAqIHtAbGluayBpc1JlbW90ZUF1ZGl0QWN0aW9ufSksIE5PVCB0aGUgZnVsbCBwbGF0Zm9ybSBgQXVkaXRBY3Rpb25gIHVuaW9uIOKAlCBhXG4gKiBgc2VydmljZToqYCB0b2tlbiBtdXN0IG5vdCBiZSBhYmxlIHRvIGZvcmdlIHBsYXRmb3JtLWF1dGhvcml0eSBldmVudHNcbiAqIChgYWRtaW4uc3VwZXJhZG1pbi5ncmFudGAsIGBvcmcub3duZXJzaGlwLnRyYW5zZmVyYCwgYHVzZXIubG9naW5gLCDigKYpLiBLZWVwXG4gKiB0aGlzIGxpc3QgZnJlZSBvZiBhbnkgcGxhdGZvcm0tb25seSBhY3Rpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBSRU1PVEVfQVVESVRfQUNUSU9OUyA9IFtcbiAgJ3BsdWdpbi5idWlsZC5jb21wbGV0ZWQnLFxuICAncGx1Z2luLmJ1aWxkLmZhaWxlZCcsXG4gICdwbHVnaW4uYnVpbGQudGltZW91dCcsXG4gIC8vIEEgdmVyc2lvbiBwZXJzaXN0ZWQgVU5TQ0FOTkVEIGJlY2F1c2UgdGhlIGJ1aWxkLXRpbWUgc2NhbiBjb3VsZCBub3QgcnVuIGFuZFxuICAvLyB0aGUgb3BlcmF0b3IgZXNjYXBlIGhhdGNoIGBQTFVHSU5fQUxMT1dfVU5TQ0FOTkVEYCBpcyBvbiAod2l0aG91dCBpdCB0aGVcbiAgLy8gYnVpbGQgZmFpbHMgYElNQUdFX1NDQU5fVU5BVkFJTEFCTEVgKS4gYGRldGFpbHNgIGNhcnJ5IG5hbWUvdmVyc2lvbi9kaWdlc3QuXG4gICdwbHVnaW4uc2Nhbi5za2lwcGVkJyxcbiAgLy8gRml4YWJsZSBDcml0aWNhbCBmaW5kaW5ncyB3ZXJlIEVYRU1QVEVEIGZyb20gdGhlIHBsYXRmb3JtIGZsb29yIGJ5IGFcbiAgLy8gYFBMVUdJTl9WVUxOX1dBSVZFUlNgIGVudHJ5LCBzbyBhIGJ1aWxkIHRoYXQgd291bGQgb3RoZXJ3aXNlIGhhdmUgZmFpbGVkXG4gIC8vIFBMVUdJTl9WVUxOX0dBVEUgd2FzIGFsbG93ZWQgdGhyb3VnaC4gVGhlIG90aGVyIGhhbGYgb2YgcGx1Z2luLnNjYW4uc2tpcHBlZDpcbiAgLy8gYm90aCBhcmUgb3BlcmF0b3IgZXNjYXBlIGhhdGNoZXMgdGhhdCBjaGFuZ2UgYSBnYXRlJ3MgdmVyZGljdCwgYW5kIGEgbWV0cmljXG4gIC8vIGFuZCBhIGxvZyBsaW5lIGFyZSBub3QgYSBkdXJhYmxlIHJlY29yZCBvZiBvbmUuIGBkZXRhaWxzYCBjYXJyeVxuICAvLyBuYW1lL3ZlcnNpb24vZGlnZXN0LCBob3cgbWFueSBmaW5kaW5ncyB3ZXJlIHdhaXZlZCBhbmQgd2hpY2ggcGFja2FnZXMuXG4gICdwbHVnaW4udnVsbi53YWl2ZWQnLFxuICAvLyBUaGUgbmlnaHRseSByZXNjYW4gRkxBR0dFRCBhIHN0b3JlZCB2ZXJzaW9uIChpdHMgZ2F0ZWQgQ3JpdGljYWwgZmluZGluZ3NcbiAgLy8gbm93IGV4Y2VlZCBQTFVHSU5fVlVMTl9NQVhfRklORElOR1Mg4oCUIGxvb2t1cCBhbmQgdGhlIHBpcGVsaW5lJ3Mgb3duZXJzIGFyZVxuICAvLyB3YXJuZWQgYXQgYGVycm9yYCBzZXZlcml0eSksIG9yIENMRUFSRUQgdGhhdCBmbGFnLiBCb3RoIGNoYW5nZSB3aGF0XG4gIC8vIHJlc29sdXRpb24gc2F5cyBhYm91dCBhIHZlcnNpb24gbm9ib2R5IHJlYnVpbHQsIG9uIG5vYm9keSdzIHJlcXVlc3QsIHNvIHRoZVxuICAvLyByZWNvcmQgb2YgV0hFTiBhbmQgV0hZIGxpdmVzIGluIHRoZSBoYXNoLWNoYWluZWQgbG9nIHJhdGhlciB0aGFuIG9ubHkgaW4gYVxuICAvLyBjb2x1bW4gdGhlIG5leHQgcmVzY2FuIG92ZXJ3cml0ZXMuIGBkZXRhaWxzYCBjYXJyeSBjb3VudHMsIHRoZSBnYXRlZFxuICAvLyBhZHZpc29yeSBpZHMgYW5kIHRoZSBpbWFnZSBkaWdlc3QuXG4gICdwbHVnaW4udnVsbi5mbGFnZ2VkJyxcbiAgJ3BsdWdpbi52dWxuLmNsZWFyZWQnLFxuICAvLyBQbHVnaW4gbGlmZWN5Y2xlIG11dGF0aW9ucyAoYXBpL3BsdWdpbiByb3V0ZSBoYW5kbGVycykg4oCUIHRoZSBkZXN0cnVjdGl2ZSAvXG4gIC8vIHB1Ymxpc2hpbmcgc3VyZmFjZSB0aGF0IGJ1aWxkcyBhbHJlYWR5IGF1ZGl0J3MgY291bnRlcnBhcnQ6IHJlZ2lzdHJ5IGRlbGV0ZSxcbiAgLy8gc291cmNlIHVwbG9hZCwgYW5kIGRlcGxveS10by1jbHVzdGVyLiBgdGFyZ2V0SWRgIGlzIHRoZSBwbHVnaW4gaWQuXG4gICdwbHVnaW4uZGVsZXRlJyxcbiAgJ3BsdWdpbi5yZXN0b3JlJyxcbiAgLy8gTWFudWFsIHB1cmdlOiBwZXJtYW5lbnQgaGFyZC1kZWxldGUgb2YgYSBzb2Z0LWRlbGV0ZWQgcGx1Z2luIHRvbWJzdG9uZSBvblxuICAvLyBkZW1hbmQgKGZpbmFsaXplcyB3aGF0IHRoZSByZXRlbnRpb24gc3dlZXAgd291bGQgb3RoZXJ3aXNlIGRvIGxhdGVyKS5cbiAgJ3BsdWdpbi5wdXJnZScsXG4gICdwbHVnaW4udXBkYXRlJyxcbiAgJ3BsdWdpbi51cGxvYWQnLFxuICAncGx1Z2luLmRlcGxveScsXG4gIC8vIFBsdWdpbiBidWxrIG11dGF0aW9ucyAoYXBpL3BsdWdpbiBidWxrLXBsdWdpbiByb3V0ZSkgKyBETFEgcHVyZ2UgKGRyb3BzIGFsbFxuICAvLyBkZWFkLWxldHRlcmVkIGJ1aWxkIGpvYnMsIGNyb3NzLW9yZywgc3lzYWRtaW4pLiBgZGV0YWlsc2AgY2FycmllcyBjb3VudHMuXG4gICdwbHVnaW4uYnVsay51cGRhdGUnLFxuICAncGx1Z2luLmJ1bGsuZGVsZXRlJyxcbiAgJ3BsdWdpbi5kbHEucHVyZ2UnLFxuICAvLyBCdWlsZCByZS1ydW5zIGZyb20gdGhlIHF1ZXVlLXRyaWFnZSBzdXJmYWNlOiByZS1lbnF1ZXVlIGEgRkFJTEVEIGJ1aWxkXG4gIC8vIChgcGx1Z2luLmJ1aWxkLnJldHJ5YCkgb3IgYSBkZWFkLWxldHRlcmVkIG9uZSAoYHBsdWdpbi5kbHEucmVwbGF5YCkuIEJvdGhcbiAgLy8gcmUtcnVuIGFuIGltYWdlIGJ1aWxkICsgcGx1Z2luIHBlcnNpc3Qgb24gdGhlIGNhbGxlcidzIGF1dGhvcml0eSwgc28gdGhleVxuICAvLyBhcmUgYXVkaXRlZCBtdXRhdGlvbnM7IGBhZmZlY3RlZE9yZ0lkYCBjYXJyaWVzIHRoZSBqb2IncyBvd25pbmcgb3JnLlxuICAncGx1Z2luLmJ1aWxkLnJldHJ5JyxcbiAgJ3BsdWdpbi5kbHEucmVwbGF5JyxcbiAgLy8gUGlwZWxpbmUgbXV0YXRpb25zIOKAlCBlbWl0dGVkIGJ5IGFwaS9waXBlbGluZSdzIHJvdXRlIGhhbmRsZXJzXG4gIC8vIChjcmVhdGUvdXBkYXRlL2RlbGV0ZSArIENvZGVQaXBlbGluZSBleGVjdXRpb24gdHJpZ2dlci9jYW5jZWwpIGFuZFxuICAvLyBwb3N0ZWQgdG8gcGxhdGZvcm0ncyBgUE9TVCAvYXVkaXQvZXZlbnRzYCBpbmdlc3QuXG4gICdwaXBlbGluZS5jcmVhdGUnLFxuICAncGlwZWxpbmUudXBkYXRlJyxcbiAgJ3BpcGVsaW5lLmRlbGV0ZScsXG4gICdwaXBlbGluZS5yZXN0b3JlJyxcbiAgLy8gTWFudWFsIHB1cmdlOiBwZXJtYW5lbnQgaGFyZC1kZWxldGUgb2YgYSBzb2Z0LWRlbGV0ZWQgcGlwZWxpbmUgL1xuICAvLyBwaXBlbGluZV90ZW1wbGF0ZSB0b21ic3RvbmUgb24gZGVtYW5kIChmaW5hbGl6ZXMgd2hhdCB0aGUgcmV0ZW50aW9uIHN3ZWVwXG4gIC8vIHdvdWxkIG90aGVyd2lzZSBkbyBsYXRlcikuIGB0YXJnZXRJZGAgaXMgdGhlIHB1cmdlZCBpZC5cbiAgJ3BpcGVsaW5lLnB1cmdlJyxcbiAgJ3BpcGVsaW5lX3RlbXBsYXRlLmNyZWF0ZScsXG4gICdwaXBlbGluZV90ZW1wbGF0ZS51cGRhdGUnLFxuICAncGlwZWxpbmVfdGVtcGxhdGUuZGVsZXRlJyxcbiAgJ3BpcGVsaW5lX3RlbXBsYXRlLnJlc3RvcmUnLFxuICAncGlwZWxpbmVfdGVtcGxhdGUucHVyZ2UnLFxuICAncGlwZWxpbmUuZXhlY3V0aW9uLnN0YXJ0JyxcbiAgJ3BpcGVsaW5lLmV4ZWN1dGlvbi5jYW5jZWwnLFxuICAvLyBDb2RlUGlwZWxpbmUgQVJOLXJlZ2lzdHJ5IGNvbmZpZyAoYXBpL3BpcGVsaW5lIHJlZ2lzdHJ5IHJvdXRlKSDigJQgcmVnaXN0ZXJpbmcgL1xuICAvLyBkZXJlZ2lzdGVyaW5nIHRoZSBleHRlcm5hbCBDb2RlUGlwZWxpbmUgdGhhdCBiYWNrcyBhIHBpcGVsaW5lIChkZXBsb3ktYWZmZWN0aW5nKS5cbiAgJ3BpcGVsaW5lLnJlZ2lzdHJ5LnJlZ2lzdGVyJyxcbiAgJ3BpcGVsaW5lLnJlZ2lzdHJ5LmRlcmVnaXN0ZXInLFxuICAvLyBRdW90YSBhZG1pbmlzdHJhdGlvbiAoYXBpL3F1b3RhKSDigJQgYSBzdXBlcmFkbWluIHJlc2V0dGluZyBhbiBvcmcncyB1c2FnZVxuICAvLyBjb3VudGVyIG9yIGVkaXRpbmcgaXRzIHRpZXIgbGltaXRzLiBgYWZmZWN0ZWRPcmdJZGAgaXMgdGhlIG9yZyBjaGFuZ2VkO1xuICAvLyBgZGV0YWlsc2AgY2FycmllcyB0aGUgcXVvdGFUeXBlICsgb2xkL25ldyB2YWx1ZS5cbiAgJ3F1b3RhLnJlc2V0JyxcbiAgJ3F1b3RhLmxpbWl0LnVwZGF0ZScsXG4gIC8vIEEgc3VwZXJhZG1pbiBkZWxldGluZyBhbiBvcmcncyBlbnRpcmUgcXVvdGEgZG9jdW1lbnQuXG4gICdxdW90YS5kZWxldGUnLFxuICAvLyBBbiBhY2NvdW50J3MgcXVvdGEgdGhyZXNob2xkLW5vdGljZSBzZXR0aW5ncyAob3B0LW91dCArIHRoZVxuICAvLyBgcXVvdGEudGhyZXNob2xkYCB3ZWJob29rIFVSTCkg4oCUIHdoZXJlIHVzYWdlIHdhcm5pbmdzIGdvLlxuICAncXVvdGEubm90aWNlX3NldHRpbmdzLnVwZGF0ZScsXG4gIC8vIENvbXBsaWFuY2UgYWRtaW5pc3RyYXRpb24gKGFwaS9jb21wbGlhbmNlKSDigJQgdGhlIGVuZm9yY2VtZW50LXBvc3R1cmUgc3VyZmFjZS5cbiAgLy8gQXBwcm92aW5nL3Jldm9raW5nIGFuIGV4ZW1wdGlvbiwgdG9nZ2xpbmcvYXV0aG9yaW5nL2RlbGV0aW5nIGEgcnVsZSxcbiAgLy8gYXV0aG9yaW5nL2RlbGV0aW5nIGEgcG9saWN5LCBtYW5hZ2luZyBzY2FuIHNjaGVkdWxlcywgYXBwbHlpbmcgYSB0ZW1wbGF0ZSxcbiAgLy8gb3IgY2FuY2VsbGluZyBhIHJ1bm5pbmcgc2Nhbi4gYHRhcmdldElkYCBpcyB0aGUgcnVsZS9wb2xpY3kvZXhlbXB0aW9uL3NjYW4gaWQuXG4gICdjb21wbGlhbmNlLmV4ZW1wdGlvbi5hcHByb3ZlJyxcbiAgJ2NvbXBsaWFuY2UuZXhlbXB0aW9uLnJldm9rZScsXG4gIC8vIEEgbWVtYmVyIEZJTElORyBhbiBleGVtcHRpb24gcmVxdWVzdCAoc2luZ2xlIG9yIGJ1bGs7IG1ldGFkYXRhIG9ubHksIG5ldmVyXG4gIC8vIHRoZSByZWFzb24pIGFuZCBhbiBhZG1pbiBSRUpFQ1RJTkcgb25lIOKAlCB0aGUgb3RoZXIgaGFsdmVzIG9mIHRoZVxuICAvLyB0d28tcGVyc29uIGRlY2lzaW9uIHdob3NlIGFwcHJvdmFsIGlzIHJlY29yZGVkIGFib3ZlLlxuICAnY29tcGxpYW5jZS5leGVtcHRpb24ucmVxdWVzdCcsXG4gICdjb21wbGlhbmNlLmV4ZW1wdGlvbi5yZWplY3QnLFxuICAnY29tcGxpYW5jZS5ydWxlLnRvZ2dsZScsXG4gICdjb21wbGlhbmNlLnJ1bGUuY3JlYXRlJyxcbiAgJ2NvbXBsaWFuY2UucnVsZS51cGRhdGUnLFxuICAnY29tcGxpYW5jZS5ydWxlLmRlbGV0ZScsXG4gICdjb21wbGlhbmNlLnJ1bGUucmVzdG9yZScsXG4gIC8vIE1hbnVhbCBvbi1kZW1hbmQgaGFyZC1kZWxldGUgKFBVUkdFKSBvZiBhIHNvZnQtZGVsZXRlZCBydWxlL3BvbGljeSB0b21ic3RvbmUg4oCUXG4gIC8vIHRoZSBjYWxsZXItaW5pdGlhdGVkIGNvdW50ZXJwYXJ0IHRvIHRoZSByZXRlbnRpb24gc3dlZXAncyBhdXRvLXB1cmdlLiBEZXN0cm95c1xuICAvLyB0aGUgdG9tYnN0b25lIHBlcm1hbmVudGx5LCBzbyBpdCBjYXJyaWVzIHRoZSBkdXJhYmxlLCB0YW1wZXItZXZpZGVudCB0cmFpbC5cbiAgJ2NvbXBsaWFuY2UucnVsZS5wdXJnZScsXG4gICdjb21wbGlhbmNlLnBvbGljeS5jcmVhdGUnLFxuICAnY29tcGxpYW5jZS5wb2xpY3kudXBkYXRlJyxcbiAgJ2NvbXBsaWFuY2UucG9saWN5LmRlbGV0ZScsXG4gICdjb21wbGlhbmNlLnBvbGljeS5yZXN0b3JlJyxcbiAgJ2NvbXBsaWFuY2UucG9saWN5LnB1cmdlJyxcbiAgJ2NvbXBsaWFuY2Uuc2Nhbi1zY2hlZHVsZS5jcmVhdGUnLFxuICAnY29tcGxpYW5jZS5zY2FuLXNjaGVkdWxlLnVwZGF0ZScsXG4gICdjb21wbGlhbmNlLnNjYW4tc2NoZWR1bGUuZGVsZXRlJyxcbiAgJ2NvbXBsaWFuY2UudGVtcGxhdGUuYXBwbHknLFxuICAvLyBMYXVuY2hpbmcgYW4gb3JnLXdpZGUgcmUtZXZhbHVhdGlvbiAodGhlIGNvdW50ZXJwYXJ0IHRvIGAuY2FuY2VsYCkg4oCUIGl0XG4gIC8vIHBlcnNpc3RzIGEgc2NhbiBhbmQgY2FuIGJsb2NrIGVudGl0aWVzIHRoYXQgcGFzc2VkIGJlZm9yZS5cbiAgJ2NvbXBsaWFuY2Uuc2Nhbi5jcmVhdGUnLFxuICAnY29tcGxpYW5jZS5zY2FuLmNhbmNlbCcsXG4gIC8vIEEgc2NhbidzIHRlcm1pbmFsIE9VVENPTUUgKGNvbXBsZXRlZCDihpIgc3VjY2VzcyB3aXRoIHRoZSBwYXNzL3dhcm4vYmxvY2tcbiAgLy8gY291bnRzLCBmYWlsZWQg4oaSIGZhaWx1cmUpLiBTY2hlZHVsZWQgc2NhbnMgYWxzbyB3cml0ZSBgY29tcGxpYW5jZS5zY2FuLmNyZWF0ZWBcbiAgLy8gKGBkZXRhaWxzLnRyaWdnZXJlZEJ5OiAnc2NoZWR1bGVkJ2ApLCBhdHRyaWJ1dGVkIHRvIHRoZSBzY2hlZHVsZSdzIGF1dGhvci5cbiAgJ2NvbXBsaWFuY2Uuc2Nhbi5jb21wbGV0ZScsXG4gIC8vIFBsYXRmb3JtIG9uYm9hcmRpbmcgc3Vic2NyaWJpbmcgYSBuZXcgb3JnIHRvIGV2ZXJ5IHB1Ymxpc2hlZCBydWxlXG4gIC8vIChJTkFDVElWRSBzdWJzY3JpcHRpb25zOyBgZGV0YWlscy5zdWJzY3JpYmVkYCBpcyB0aGUgY291bnQpLlxuICAnY29tcGxpYW5jZS5zdWJzY3JpcHRpb24uYXV0by1zdWJzY3JpYmUnLFxuICAvLyBQZXItb3JnIGNvbXBsaWFuY2Ugbm90aWZpY2F0aW9uIHNldHRpbmdzOiByZWNpcGllbnRzICsgdGhlIG91dGJvdW5kIHdlYmhvb2tcbiAgLy8gVVJML3NlY3JldC4gQmVhcmVyLWVxdWl2YWxlbnQgY29uZmlnIHRoYXQgcmVkaXJlY3RzIHZpb2xhdGlvbiBub3RpY2VzLCBzbyBhXG4gIC8vIGNoYW5nZSBjYXJyaWVzIHRoZSBkdXJhYmxlIHRyYWlsIChuZXZlciB0aGUgc2VjcmV0IGl0c2VsZikuXG4gICdjb21wbGlhbmNlLm5vdGlmaWNhdGlvbi1wcmVmZXJlbmNlLnVwZGF0ZScsXG4gIC8vIEltYWdlLXJlZ2lzdHJ5IGRlc3RydWN0aXZlIG9wcyAoYXBpL2ltYWdlLXJlZ2lzdHJ5KSDigJQgZ2FyYmFnZS1jb2xsZWN0aW9uXG4gIC8vIHN3ZWVwcyBhbmQgZXhwbGljaXQgaW1hZ2UvdGFnIGRlbGV0ZXMuXG4gICdyZWdpc3RyeS5nYycsXG4gICdyZWdpc3RyeS5pbWFnZS5kZWxldGUnLFxuICAvLyBDcm9zcy1yZXBvIHRhZy9pbWFnZSBjb3B5IChhcGkvaW1hZ2UtcmVnaXN0cnkgUE9TVCAvYXBpL2ltYWdlcy9jb3B5KS4gQVxuICAvLyBjcm9zcy10ZW5hbnQgY29weSBtb3ZlcyBkYXRhIGFjcm9zcyBjdXN0b21lciBib3VuZGFyaWVzLCBzbyBpdCBuZWVkcyB0aGVcbiAgLy8gZHVyYWJsZSwgdGFtcGVyLWV2aWRlbnQgdHJhaWwg4oCUIG5vdCBqdXN0IHRoZSBMb2tpIG9wZXJhdG9yIGxpbmUuXG4gICdyZWdpc3RyeS5pbWFnZS5jb3B5JyxcbiAgLy8gQSBwbHVnaW4gaW1hZ2Ugc2lnbmVkICsgU0JPTS1hdHRlc3RlZCBieSB0aGUgcGxhdGZvcm0ncyBwbHVnaW4tc2lnbmluZyBrZXlcbiAgLy8gKGFwaS9pbWFnZS1yZWdpc3RyeSBQT1NUIC9pbnRlcm5hbC9wbHVnaW4tc2lnbmF0dXJlcywgY2FsbGVkIGJ5IHRoZSBwbHVnaW5cbiAgLy8gYnVpbGQgd29ya2VyKS4gVGhlIGtleSBpcyB3aGF0IHN5bnRoIHRydXN0cywgc28gZXZlcnkgdXNlIGlzIG9uIHRoZSB0cmFpbC5cbiAgJ3JlZ2lzdHJ5LmltYWdlLnNpZ24nLFxuICAvLyBUaGUgRG9ja2VyIHRva2VuIGVuZHBvaW50IG1pbnRpbmcgYSByZWdpc3RyeSB0b2tlbiB0aGF0IEdSQU5UUyBhY2Nlc3NcbiAgLy8gKGBkZXRhaWxzLmdyYW50ZWRgOiByZXBvICsgYWN0aW9uczsgdGhlIHNjb3BlLWxlc3MgYGRvY2tlciBsb2dpbmAgcHJvYmUgaXNcbiAgLy8gbm90IHJlY29yZGVkKSDigJQgYW5kLCBhcyBvdXRjb21lIGZhaWx1cmUsIGEgcmVmdXNlZCBjcmVkZW50aWFsIChoYXNoZWRcbiAgLy8gdXNlcm5hbWUsIGNyZWRlbnRpYWwga2luZCBvbmx5KS5cbiAgJ3JlZ2lzdHJ5LnRva2VuLmlzc3VlJyxcbiAgLy8gQSBwdXNoIGNyZWRlbnRpYWwgbWludGVkIGZvciBvbmUgYW5vbnltb3VzIHN1Ym1pc3Npb24nc1xuICAvLyBgcXVhcmFudGluZS88c3VibWlzc2lvbklkPmAgcmVwbyAoZXhwaXJ5ICsgVFRMLCBuZXZlciB0aGUgc2VjcmV0KS5cbiAgJ3JlZ2lzdHJ5LnF1YXJhbnRpbmUuY3JlZGVudGlhbC5taW50JyxcbiAgLy8gTWVzc2FnaW5nIChhcGkvbWVzc2FnZSkg4oCUIGFkbWluIEJST0FEQ0FTVCBhbm5vdW5jZW1lbnRzICsgZGVzdHJ1Y3RpdmVcbiAgLy8gZGVsZXRlcy4gMToxIHVzZXIgbWVzc2FnZXMgYXJlIGludGVudGlvbmFsbHkgTk9UIGF1ZGl0ZWQgKG5vaXNlICsgdGhleSB3b3VsZFxuICAvLyBwdWxsIHByaXZhdGUgY29udGVudCBpbnRvIHRoZSB0cmFpbCkuIGBkZXRhaWxzYCBjYXJyeSBtZXRhZGF0YSBvbmx5XG4gIC8vIChzdWJqZWN0L3R5cGUvc2NvcGUpLCBORVZFUiBtZXNzYWdlIGJvZHkgY29udGVudC5cbiAgJ21lc3NhZ2UuYW5ub3VuY2VtZW50LmNyZWF0ZScsXG4gICdtZXNzYWdlLmRlbGV0ZScsXG4gICdtZXNzYWdlLnJlc3RvcmUnLFxuICAvLyBNYW51YWwgb24tZGVtYW5kIFBVUkdFIChwZXJtYW5lbnQgaGFyZC1kZWxldGUpIG9mIGFuIGFscmVhZHktc29mdC1kZWxldGVkXG4gIC8vIG1lc3NhZ2UgdG9tYnN0b25lIOKAlCB0aGUgZGVzdHJ1Y3RpdmUgZmluYWxpemVyIHRoZSByZXRlbnRpb24gc3dlZXAgd291bGRcbiAgLy8gb3RoZXJ3aXNlIHBlcmZvcm0gYXQgdGhlIHB1cmdlIGRlYWRsaW5lLiBgZGV0YWlsc2AgY2FycnkgbWV0YWRhdGEgb25seS5cbiAgJ21lc3NhZ2UucHVyZ2UnLFxuICAvLyBBbiBhdXRob3IncyBlZGl0IG9mIGEgc2VudCBtZXNzYWdlIChhbmQgcmVmdXNlZCBhdHRlbXB0cywgYXMgZmFpbHVyZXMpLlxuICAvLyBgZGV0YWlsc2AgY2FycnkgdGhlIG5ldyBib2R5J3MgTEVOR1RIIG9ubHkg4oCUIG5laXRoZXIgc2lkZSBvZiB0aGUgZWRpdC5cbiAgJ21lc3NhZ2UudXBkYXRlJyxcbiAgLy8gQSBtZXNzYWdlIGF0dGFjaG1lbnQgc3RvcmVkIChnZW5lcmFsIG9yIHN1cHBvcnQgbW91bnQsIGBkZXRhaWxzLnN1cmZhY2VgKS5cbiAgLy8gVHlwZSArIHNpemUgb25seSDigJQgbmV2ZXIgdGhlIGJ5dGVzLCBhbmQgbm90IHRoZSB1c2VyLWNob3NlbiBmaWxlbmFtZS5cbiAgJ21lc3NhZ2UuYXR0YWNobWVudC51cGxvYWQnLFxuICAvLyBBIFNZU1RFTSBub3RpZmljYXRpb24gZHJvcHBlZCBpbnRvIGFuIG9yZydzIGluYm94IGJ5IGFuIGludGVybmFsIHNlcnZpY2VcbiAgLy8gKFBPU1QgL21lc3NhZ2VzL2ludGVybmFsL25vdGlmeSk7IGBkZXRhaWxzLmNhbGxlcmAgbmFtZXMgdGhlIHNlcnZpY2UuXG4gICdtZXNzYWdlLm5vdGlmeS5pbnRlcm5hbCcsXG4gIC8vIFRoZSBwbGF0Zm9ybSBvcmctZGVsZXRlIGNhc2NhZGUgcmVjbGFpbWluZyBhbiBvcmcncyBhdHRhY2htZW50IEJMT0JTIOKAlFxuICAvLyBgZGV0YWlscy5ibG9ic0RlbGV0ZWRgLCBvciBhIGZhaWx1cmUgcm93IHdoZW4gdGhlIHJlY2xhaW0gZGlkIG5vdCBjb21wbGV0ZS5cbiAgJ21lc3NhZ2Uub3JnLnB1cmdlJyxcbiAgLy8gU3VwcG9ydCBjYXNlcyAoYXBpL21lc3NhZ2UpLiBEaXN0aW5jdCBmcm9tIHRoZSBgbWVzc2FnZS4qYCBmYW1pbHkgYWJvdmVcbiAgLy8gYmVjYXVzZSBhIGNhc2UgaXMgbm90IGFuIG9yZGluYXJ5IG1lc3NhZ2U6IGl0IGNhcnJpZXMgYSByZXNwb25zZS10aW1lXG4gIC8vIGNvbW1pdG1lbnQsIHNvIFdITyByYWlzZWQgaXQgYW5kIFdIRU4gd2UgZmlyc3QgYW5zd2VyZWQgYXJlIHRoZSBmYWN0cyBhXG4gIC8vIGRpc3B1dGUgdHVybnMgb24uIGBkZXRhaWxzYCBjYXJyeSB0aGUgY2FzZSBudW1iZXIsIGxldmVsIGFuZCBzZXZlcml0eSDigJRcbiAgLy8gbWV0YWRhdGEgb25seSwgbmV2ZXIgdGhlIGJvZHkgb2Ygd2hhdCBhIGN1c3RvbWVyIHdyb3RlLlxuICAvL1xuICAvLyBUd28gb2YgdGhlIG5pbmUgcGxhbm5lZCBzdXBwb3J0IGFjdGlvbnMgYXJlIGhlcmUsIGFuZCBvbmx5IHR3bzogdGhlc2UgYXJlXG4gIC8vIHRoZSBvbmVzIHdpdGggcmVhbCBlbWl0dGVycyB0b2RheS4gVGhlIHJlc3QgKGBzdGF0dXNgLCBgc2V2ZXJpdHlgLFxuICAvLyBgYXNzaWduYCwgYHRyYW5zZmVyYCwgYG5vdGVgLCBgcmVhZGApIGxhbmQgV0lUSCB0aGUgcm91dGVzIHRoYXQgZW1pdCB0aGVtIOKAlFxuICAvLyBhIGRlY2xhcmVkIGFjdGlvbiBub3RoaW5nIGVtaXRzIGlzIGRlYWQgdm9jYWJ1bGFyeSwgYW5kIHRoZSBwYXJpdHkgdGVzdFxuICAvLyB3b3VsZCB0aGVuIGZvcmNlIGEgZG9jcyByb3cgZGVzY3JpYmluZyBhbiBldmVudCB0aGF0IG5ldmVyIGZpcmVzLlxuICAvL1xuICAvLyBgc3VwcG9ydC5jYXNlLnJlYWRgIHdpbGwgbWF0dGVyIG1vc3Qgb2YgYWxsIHdoZW4gaXQgYXJyaXZlczogaXQgaXMgdGhlIG9ubHlcbiAgLy8gcmVjb3JkIHRoYXQgc29tZW9uZSBhdCB0aGUgdmVuZG9yIG9wZW5lZCBhIGN1c3RvbWVyJ3MgY2FzZS5cbiAgJ3N1cHBvcnQuY2FzZS5vcGVuJyxcbiAgJ3N1cHBvcnQuY2FzZS5yZXBseScsXG4gIC8vIFRoZSB3b3JrZmxvdyBtdXRhdGlvbnMuIEVhY2ggaXMgYXVkaXRlZCBiZWNhdXNlIGVhY2ggbW92ZXMgYSBjYXNlJ3NcbiAgLy8gcmVsYXRpb25zaGlwIHRvIGl0cyByZXNwb25zZSBjb21taXRtZW50OiBzdGF0dXMgc3RvcHMgb3IgcmVzdGFydHMgdGhlXG4gIC8vIGNsb2NrLCBzZXZlcml0eSBjaGFuZ2VzIHdoaWNoIHRhcmdldCBhcHBsaWVzLCBhbmQgdGhlIHR3byBvd25lcnNoaXBcbiAgLy8gYWN0aW9ucyBkZWNpZGUgV0hPIGlzIGFjY291bnRhYmxlIGZvciBtZWV0aW5nIGl0LiBBIHNpbGVudCBjaGFuZ2Ugb2Ygb3duZXJcbiAgLy8gaXMgaG93IGFjY291bnRhYmlsaXR5IGZvciBhIG1pc3NlZCB0YXJnZXQgZGlzYXBwZWFycy5cbiAgJ3N1cHBvcnQuY2FzZS5zdGF0dXMnLFxuICAnc3VwcG9ydC5jYXNlLnNldmVyaXR5JyxcbiAgJ3N1cHBvcnQuY2FzZS5hc3NpZ24nLFxuICAnc3VwcG9ydC5jYXNlLnRyYW5zZmVyJyxcbiAgLy8gT04tQ0FMTC4gVGhlIHByb3ZpZGVyIG93bnMgdGhlIHJvdGEsIHRoZSBlc2NhbGF0aW9uIGFuZCB0aGUgY29udGFjdFxuICAvLyBtZXRob2RzOyB3aGF0IGl0IGNhbm5vdCBvd24gaXMgYW4gYXVkaXRhYmxlIGFuc3dlciB0byBcIndobyBwaWNrZWQgdGhpcyB1cFxuICAvLyBhdCAwMzoxNFwiLiBBIGNsaWNrIG9uIGEgbGluayBpbiB0aGVpciBVSSBpcyBub3QgYW4gaWRlbnRpdHkgdGhpcyBzeXN0ZW0gY2FuXG4gIC8vIGF0dGVzdCB0bywgc28gdGhlaXIgaW5jaWRlbnQgc3RhdGUgY2hhbmdlIGlzIHJlbGF5ZWQgaGVyZSBhbmQgcmVjb3JkZWRcbiAgLy8gYWdhaW5zdCB0aGUgYWdlbnQgdGhleSBuYW1lLiBUaGUgaGFzaCBjaGFpbiBpcyB0aGUgcG9pbnQ6IGEgcG9zdC1pbmNpZGVudFxuICAvLyByZXZpZXcgbmVlZHMgdGhlIGFjayB0byBiZSBldmlkZW5jZSByYXRoZXIgdGhhbiBhIHNjcmVlbnNob3QuXG4gIC8vXG4gIC8vIGBlc2NhbGF0ZWRgIGlzIGF1ZGl0ZWQgc2VwYXJhdGVseSBiZWNhdXNlIGl0IGlzIHRoZSByZWNvcmQgdGhhdCB0aGUgRklSU1RcbiAgLy8gcmVzcG9uZGVyIGRpZCBub3QgYW5zd2VyIOKAlCB0aGUgZmFjdCBhIHJvdGEgaXMgYWRqdXN0ZWQgb24sIGFuZCB0aGUgb25lIG1vc3RcbiAgLy8gbGlrZWx5IHRvIGJlIGRpc3B1dGVkIGxhdGVyLlxuICAnc3VwcG9ydC5vbmNhbGwuYWNrbm93bGVkZ2VkJyxcbiAgJ3N1cHBvcnQub25jYWxsLmVzY2FsYXRlZCcsXG4gIC8vIFRoZSB0ZXN0IHBhZ2UuIEF1ZGl0ZWQgYmVjYXVzZSBpdCBSSU5HUyBBIFBIT05FOiB3aG9ldmVyIGl0IHdha2VzIGlzXG4gIC8vIGVudGl0bGVkIHRvIGEgcmVjb3JkIG9mIHdobyBjYXVzZWQgdGhhdCwgYXQgd2hhdGV2ZXIgaG91ciBpdCB3YXMuXG4gICdzdXBwb3J0Lm9uY2FsbC50ZXN0JyxcbiAgLy8gVGhlIHBlci1jYXNlIHN3ZWVwIHBhZ2luZyB0aGUgcm90YSBmb3IgYSBwcmVtaXVtIGNhc2UgbmVhcmluZyBpdHMgdGFyZ2V0LlxuICAvLyBSZWNvcmRlZCBvbmNlLCBvbiB0aGUgdGljayB0aGUgY2FzZSBFTlRFUkVEIHRoZSB3aW5kb3cg4oCUIHRoZSBzd2VlcCByZS1zZW5kc1xuICAvLyB0aGUgcGFnZSBldmVyeSB0aWNrLCBhbmQgdHdlbnR5LWZvdXIgcm93cyBmb3Igb25lIHBhZ2Ugd291bGQgYmUgbm9pc2UuXG4gICdzdXBwb3J0Lm9uY2FsbC5wYWdlZCcsXG4gIC8vIFRoZSB0d28gQ09OVEFDVCBhY3Rpb25zIChwbGF0Zm9ybSkuIE5vdCBjYXNlIGV2ZW50cyDigJQgZW50aXRsZW1lbnQgZXZlbnRzOlxuICAvLyBlYWNoIG9uZSBjaGFuZ2VzIHdobyBpbiBhbiBvcmcgaXMgYWJsZSB0byBjb21taXQgdXMgdG8gYSByZXNwb25zZSB0YXJnZXQgYXRcbiAgLy8gYWxsLCBhbmQgZGVzaWduYXRpbmcgc3BlbmRzIGEgc2xvdCBvZiBhIFBBSUQsIGFjY291bnQtcG9vbGVkIGFsbG93YW5jZS4gVGhlXG4gIC8vIHJldm9rZSBjYXJyaWVzIHRoZSBjb3VudCBvZiBvcGVuIGNhc2VzIGl0IGxlZnQgYmVoaW5kLCBzbyBhbiBvcnBoYW5lZCBjYXNlXG4gIC8vIGlzIGEgcmVjb3JkZWQgZmFjdCByYXRoZXIgdGhhbiBzb21ldGhpbmcgZGlzY292ZXJlZCBsYXRlci5cbiAgJ3N1cHBvcnQuY29udGFjdC5kZXNpZ25hdGUnLFxuICAnc3VwcG9ydC5jb250YWN0LnJldm9rZScsXG4gIC8vIFRoZSBwcmVtaXVtIFVQR1JBREUsIGJvdGggZGlyZWN0aW9ucy4gU2VwYXJhdGUgYWN0aW9ucyBmcm9tIGRlc2lnbmF0aW9uXG4gIC8vIGJlY2F1c2UgdGhleSBhbnN3ZXIgdG8gYSBkaWZmZXJlbnQgY2FwIGFuZCBjYXJyeSBhIGRpZmZlcmVudCBmYWN0OiB3aG8gd2FzXG4gIC8vIGVudGl0bGVkIHRvIDI0eDcgY292ZXJhZ2UsIGFuZCB3aGVuLiBBIHJlc3BvbnNlLXRpbWUgZGlzcHV0ZSBvdmVyIGFuXG4gIC8vIG91dC1vZi1ob3VycyBjYXNlIHR1cm5zIG9uIGV4YWN0bHkgdGhhdC5cbiAgJ3N1cHBvcnQuY29udGFjdC51cGdyYWRlJyxcbiAgJ3N1cHBvcnQuY29udGFjdC5kb3duZ3JhZGUnLFxuICAvLyBTdGFmZiBub3RlcyBvbiBhIGNhc2UuIEF1ZGl0ZWQgYmVjYXVzZSBhIG5vdGUgaXMgdGhlIHZlbmRvcidzIGludGVybmFsXG4gIC8vIGFzc2Vzc21lbnQgb2YgYSBjdXN0b21lciBhbmQgdGhlIG9ubHkgc3VyZmFjZSBvbiBhIGNhc2UgdGhlIHRlbmFudCBtdXN0XG4gIC8vIG5ldmVyIHNlZTsgdGhlIHRyYWlsIGNhcnJpZXMgTUVUQURBVEEgT05MWSAoY2FzZSBudW1iZXIsIG5vdGUgaWQsIGxlbmd0aClcbiAgLy8gYW5kIG5ldmVyIHRoZSBib2R5LCBzaW5jZSB0aGUgY2VudHJhbCB0cmFpbCBpcyByZWFkIGZhciBtb3JlIHdpZGVseSB0aGFuXG4gIC8vIHRoZSBzdXBwb3J0IHF1ZXVlIGlzLlxuICAnc3VwcG9ydC5jYXNlLm5vdGUnLFxuICAvLyBUaGUgY2FubmVkLXJlcGx5IGxpYnJhcnkuIE9ORSBhY3Rpb24gZm9yIGNyZWF0ZS9lZGl0L3JldGlyZSByYXRoZXIgdGhhblxuICAvLyB0aHJlZSwgYmVjYXVzZSB0aGUgdHJhaWwncyBxdWVzdGlvbiBoZXJlIGlzIFwid2hvIGNoYW5nZWQgdGhlIHdvcmRpbmcgdGhlXG4gIC8vIGRlc2sgc2VuZHMgY3VzdG9tZXJzXCIsIG5vdCB3aGljaCB2ZXJiIHRoZXkgdXNlZCDigJQgYGRldGFpbHNgIGNhcnJpZXMgdGhhdC5cbiAgLy8gU3lzdGVtLXdpZGUgcmF0aGVyIHRoYW4gcGVyLXRlbmFudCwgc28gdGhlc2Ugcm93cyBuYW1lIG5vIGFmZmVjdGVkIG9yZy5cbiAgJ3N1cHBvcnQuY2FubmVkLndyaXRlJyxcbiAgLy8gQmlsbGluZyAoYXBpL2JpbGxpbmcpIOKAlCBzdWJzY3JpcHRpb24gKyBlbnRpdGxlbWVudCBtdXRhdGlvbnMsIG1pcnJvcmVkIHRvIHRoZVxuICAvLyBjZW50cmFsIGF1ZGl0IHRyYWlsICh0aGVzZSBhbHNvIHdyaXRlIHRvIHRoZSBzZXJ2aWNlLWxvY2FsIGJpbGxpbmdfZXZlbnRzXG4gIC8vIGNvbGxlY3Rpb24pLiBgZGV0YWlsc2AgY2FycnkgcGxhbi90aWVyL2FkZG9uIGlkcyBvbmx5IOKAlCBuZXZlciBjYXJkL3BheW1lbnRcbiAgLy8gc2VjcmV0cyBvciBhbiBBV1MgYWNjb3VudCBpZC5cbiAgLy8gU3Vic2NyaXB0aW9uIGxpZmVjeWNsZSBhIENVU1RPTUVSIGRyaXZlcyAodGhlIGFkbWluIGNvdW50ZXJwYXJ0IGlzXG4gIC8vIGBiaWxsaW5nLnRpZXIub3ZlcnJpZGVgKTogc2VsZi1zZXJ2ZSBjcmVhdGUgKGRpcmVjdCBvciBNYXJrZXRwbGFjZSBjbGFpbSksXG4gIC8vIHBsYW4vaW50ZXJ2YWwgY2hhbmdlLCBjYW5jZWwtYXQtcGVyaW9kLWVuZCwgdW5kby1jYW5jZWwsIGNhc2NhZGUgZGVsZXRlLlxuICAnYmlsbGluZy5zdWJzY3JpcHRpb24uY3JlYXRlJyxcbiAgJ2JpbGxpbmcuc3Vic2NyaXB0aW9uLnVwZGF0ZScsXG4gICdiaWxsaW5nLnN1YnNjcmlwdGlvbi5yZWFjdGl2YXRlJyxcbiAgJ2JpbGxpbmcuc3Vic2NyaXB0aW9uLmNhbmNlbCcsXG4gICdiaWxsaW5nLnN1YnNjcmlwdGlvbi5kZWxldGUnLFxuICAnYmlsbGluZy50aWVyLm92ZXJyaWRlJyxcbiAgLy8gQSBORUdPVElBVEVEIHN1cHBvcnQgc2l6ZSBmbG9vciByZXBsYWNpbmcgdGhlIGNvbXB1dGVkIHJhbXAuIFN5c3RlbS1vcmdcbiAgLy8gb25seSwgYW5kIGF1ZGl0ZWQgd2l0aCB0aGUgYWdyZWVkIFBSSUNFIGFuZCB0aGUgYWdyZWVkIFNFQVQgQ09VTlQgdG9nZXRoZXI6XG4gIC8vIGEgZGlzcHV0ZSBhYm91dCB3aGF0IHdhcyBzaWduZWQgZm9yIHR1cm5zIG9uIHRoYXQgcGFpciwgYW5kIHRoZSBwcmljZSBhbG9uZVxuICAvLyBjYW5ub3QgYW5zd2VyIFwiYXQgd2hhdCBzY2FsZVwiLlxuICAnYmlsbGluZy5zdXBwb3J0LWZsb29yLm92ZXJyaWRlJyxcbiAgLy8gQSBHUkFOVEVEIG9uZS10aW1lIHN1cHBvcnQgaW5jaWRlbnQg4oCUIGEgY29tbWVyY2lhbCBjb25jZXNzaW9uLCBub3QgYSBzYWxlLlxuICAvLyBUaGVyZSBpcyBkZWxpYmVyYXRlbHkgbm8gcHVyY2hhc2UgcGF0aDogbW9udGhseSBzdXBwb3J0IGNhbmNlbHMgZnJlZWx5LCBzb1xuICAvLyBhbiBpbmNpZGVudCBwcmljZWQgYWJvdmUgYSBtb250aCBpcyBkb21pbmF0ZWQgYW5kIG9uZSBiZWxvdyBpdCBsb3NlcyBtb25leS5cbiAgLy8gVGhlIHJvdyBjYXJyaWVzIHRoZSBjb3VudCBhbmQgdGhlIHJlc3VsdGluZyBiYWxhbmNlLCB3aGljaCBpcyB3aGF0IGEgbGF0ZXJcbiAgLy8gcmV2aWV3IG9mIFwid2hvIGdhdmUgd2hhdCBhd2F5XCIgbmVlZHMuXG4gICdiaWxsaW5nLnN1cHBvcnQtaW5jaWRlbnQuZ3JhbnQnLFxuICAvLyBPcGVyYXRvci1vbmx5IHJlc2VlZCBvZiB0aGUgaW52b2ljZSBsZWRnZXIgZnJvbSB0aGUgcGF5bWVudCBwcm92aWRlcidzXG4gIC8vIGhpc3RvcnkgKFBPU1QgL2JpbGxpbmcvYWRtaW4vYmFja2ZpbGwpIOKAlCBtdXRhdGVzIGZpbmFuY2UgZGF0YSBmbGVldC13aWRlLlxuICAnYmlsbGluZy5hZGRvbi5hZGQnLFxuICAnYmlsbGluZy5hZGRvbi5yZW1vdmUnLFxuICAvLyBTeXN0ZW0taW5pdGlhdGVkIHJlbW92YWwgb2YgYSB0aWVyLWluY2x1ZGVkIGFkZC1vbiBvbiBhIHBsYW4gdXBncmFkZSAodGhlXG4gIC8vIGFjY291bnQncyBuZXcgdGllciBub3cgYnVuZGxlcyB0aGUgZmVhdHVyZSkg4oCUIGRpc3RpbmN0IGZyb20gYSB1c2VyLWluaXRpYXRlZFxuICAvLyBgcmVtb3ZlYCBzbyBmaW5hbmNlIGNhbiB0ZWxsIGFuIGF1dG8tcHJ1bmUgZnJvbSBhIGN1c3RvbWVyIGFjdGlvbi5cbiAgJ2JpbGxpbmcuYWRkb24ucHJ1bmUnLFxuICAvLyBEaXNjb3VudHMgKGRvY3MvYmlsbGluZy1kaXNjb3VudHMubWQpIOKAlCBtaW50L2lzc3VlL2FwcGx5L3JlbW92ZS9yZXZva2Ugb2YgYVxuICAvLyBwcmljZSBjb3Vwb24gb3IgdXNhZ2UgY3JlZGl0LiBgZGV0YWlsc2AgY2FycnkgdGhlIGRpc2NvdW50IGlkICsga2luZC92YWx1ZVxuICAvLyBvbmx5LCBuZXZlciB0aGUgb3BhcXVlIHRva2VuIG9yIHNpZ25pbmcga2V5LlxuICAnYmlsbGluZy5kaXNjb3VudC5nZW5lcmF0ZScsXG4gICdiaWxsaW5nLmRpc2NvdW50Lmlzc3VlJyxcbiAgJ2JpbGxpbmcuZGlzY291bnQuYXBwbHknLFxuICAnYmlsbGluZy5kaXNjb3VudC5yZW1vdmUnLFxuICAnYmlsbGluZy5kaXNjb3VudC5yZXZva2UnLFxuICAvLyBDYW1wYWlnbnMgKGRvY3MvYmlsbGluZy1kaXNjb3VudHMubWQpIOKAlCB0aGUgaWRlbnRpdHkgYSBzZXQgb2YgZGlzY291bnQgY29kZXNcbiAgLy8gYmVsb25ncyB0bywgY2FycnlpbmcgdGhlIGJ1ZGdldCwgd2luZG93IGFuZCBvbmUtcGVyLWFjY291bnQgcnVsZS4gQXV0aG9yaW5nXG4gIC8vIG9uZSBkZWNpZGVzIGhvdyBtdWNoIHRoZSBidXNpbmVzcyBtYXkgZ2l2ZSBhd2F5LCBzbyBlYWNoIGNoYW5nZSBpcyBhdWRpdGVkLlxuICAnYmlsbGluZy5jYW1wYWlnbi5jcmVhdGUnLFxuICAnYmlsbGluZy5jYW1wYWlnbi51cGRhdGUnLFxuICAnYmlsbGluZy5jYW1wYWlnbi5lbmQnLFxuICAvLyBQcm9tb3Rpb25zIChkb2NzL2JpbGxpbmctZGlzY291bnRzLm1kI3Byb21vdGlvbnMpIOKAlCBydWxlLWRyaXZlbiBhdXRvLWdyYW50XG4gIC8vIGNhbXBhaWducy4gYGRldGFpbHNgIGNhcnJ5IHRoZSBwcm9tb3Rpb24gaWQgKyBjZW50cy9ldmVudCBvbmx5LlxuICAnYmlsbGluZy5wcm9tb3Rpb24uY3JlYXRlJyxcbiAgJ2JpbGxpbmcucHJvbW90aW9uLnVwZGF0ZScsXG4gICdiaWxsaW5nLnByb21vdGlvbi5yZXZva2UnLFxuICAnYmlsbGluZy5wcm9tb3Rpb24uZ3JhbnQnLFxuICAnYmlsbGluZy5wcm9tb3Rpb24uYWN0aXZhdGUnLFxuICAvLyBVc2FnZS1jcmVkaXQgcmVhbGl6YXRpb24g4oCUIGEgY3VzdG9tZXIvY29tcGxpYW5jZS12aXNpYmxlIHJlY29yZCBvZiBjcmVkaXRcbiAgLy8gbW92ZW1lbnQ6IGBjb25zdW1lZGAgKE1hcmtldHBsYWNlIG1ldGVyZWQgZHJhd2Rvd24pLCBgZXhoYXVzdGVkYCAoYmFsYW5jZSBoaXRcbiAgLy8gemVybyksIGFuZCBhIGNvbWJvIGVuZGluZy4gYGRldGFpbHNgIGNhcnJ5IGNlbnRzL2lkcyBvbmx5LCBubyBwYXltZW50IHNlY3JldHMuXG4gICdiaWxsaW5nLmNyZWRpdC5jb25zdW1lZCcsXG4gICdiaWxsaW5nLmNyZWRpdC5leGhhdXN0ZWQnLFxuICAnYmlsbGluZy5jb21iby5leHBpcmVkJyxcbiAgLy8gUmVwb3J0aW5nIChhcGkvcmVwb3J0aW5nKSDigJQgdGhlIHRocmVlIHJlcG9ydGluZyBtdXRhdGlvbnMgd2hvc2UgZWZmZWN0XG4gIC8vIG91dGxpdmVzIGEgcmVxdWVzdCBsb2c6IHRoZSBwZXItb3JnIGNvcnJlbGF0aW9uLXdpbmRvdyBjb25maWcgd3JpdGUsIGFcbiAgLy8gcG9zdC1kZXBsb3kgb3V0Y29tZSBtYXJrZXIgKGl0IG1vdmVzIHRoZSBvcmcncyBET1JBIENGUi9NVFRSKSwgYW5kIHRoZVxuICAvLyBpbmJvdW5kIGJpbGxpbmfihpJyZXBvcnRpbmcgcmV0ZW50aW9uLWVudGl0bGVtZW50IHN5bmMgKGEgcmV0ZW50aW9uIGN1dCBpcyBhXG4gIC8vIGRhdGEtZGVzdHJveWluZyBjaGFuZ2UgYXBwbGllZCBieSB0aGUgbmV4dCBzd2VlcCkuIGBkZXRhaWxzYCBjYXJyeSB0aGVcbiAgLy8gc2V0dGluZ3Mvb3V0Y29tZSB2YWx1ZXMgb25seS5cbiAgJ3JlcG9ydGluZy5zZXR0aW5ncy51cGRhdGUnLFxuICAncmVwb3J0aW5nLmRlcGxveW1lbnQub3V0Y29tZScsXG4gICdyZXBvcnRpbmcucmV0ZW50aW9uLnN5bmMnLFxuICAvLyBTdGFrZWhvbGRlciByZXBvcnRzIOKAlCB0aGUgYWRkLW9uJ3MgYXV0aG9yaW5nIGFuZCBQVUJMSVNISU5HIHN1cmZhY2UuIFB1Ymxpc2hpbmdcbiAgLy8gaXMgdGhlIG1vbWVudCBpbnRlcm5hbCBkZWxpdmVyeSBudW1iZXJzIGxlYXZlIHRoZSBwbGF0Zm9ybSwgc28gdGhlIHdob2xlXG4gIC8vIG91dHdhcmQgcGF0aCBpcyBhdWRpdGFibGU6IHdoaWNoIHJlcG9ydCwgd2hpY2ggcGVyaW9kJ3MgZnJvemVuIHNuYXBzaG90LFxuICAvLyB3aGljaCB2ZXJzaW9uLCBhbmQgd2hvIGxldCBpdCBvdXQuIGBsaW5rLmNyZWF0ZWRgIC8gYGxpbmsucmV2b2tlZGAgY292ZXIgdGhlXG4gIC8vIFVSTHMgdGhhdCBsZXQgc29tZW9uZSB3aXRob3V0IGFuIGFjY291bnQgcmVhZCBpdDsgYHJlY2lwaWVudC5hZGRlZGAgL1xuICAvLyBgcmVjaXBpZW50LnJlbW92ZWRgIGNvdmVyIHdobyBpcyBvbiB0aGUgZGlzdHJpYnV0aW9uIGxpc3QsIHdoaWNoIGlzIHRoZSBvdGhlclxuICAvLyB3YXkgZGF0YSByZWFjaGVzIGEgcGVyc29uLiBgb3duZXJzaGlwLnRyYW5zZmVyYCBpcyBhIHByaXZpbGVnZSBtb3ZlOiBhXG4gIC8vIHNjaGVkdWxlZCBydW4gaXMgYXV0aG9yaXplZCBhcyBpdHMgT1dORVIsIHNvIGhhbmRpbmcgYSBkZWZpbml0aW9uIG92ZXIgaGFuZHNcbiAgLy8gb3ZlciB3aG9zZSBhY2Nlc3MgdGhlIG51bWJlcnMgYXJlIGNvbXB1dGVkIHdpdGguXG4gIC8vXG4gIC8vIERlbGliZXJhdGVseSBOT1QgYXVkaXRlZDogcmVhZGluZyBhIHNoYXJlZCByZXBvcnQuIFRoZSBhY2Nlc3MgaXMgbG9nZ2VkIGFuZFxuICAvLyBjb3VudGVkIHBlciBsaW5rLCBidXQgaXQgaXMgYW4gVU5BVVRIRU5USUNBVEVELCBleHRlcm5hbGx5LXRyaWdnZXJlZCBldmVudCDigJRcbiAgLy8gYW55b25lIGhvbGRpbmcgYSBVUkwgY291bGQgb3RoZXJ3aXNlIHdyaXRlIHVuYm91bmRlZCByb3dzIGludG8gdGhlIG9yZydzIGF1ZGl0XG4gIC8vIHRyYWlsLCB3aGljaCB0dXJucyBhIHJlYWQgaW50byBhIHdheSB0byBidXJ5IHRoZSBlbnRyaWVzIHRoYXQgbWF0dGVyLlxuICAncmVwb3J0aW5nLnJlcG9ydC5kZWZpbml0aW9uLmNyZWF0ZScsXG4gICdyZXBvcnRpbmcucmVwb3J0LmRlZmluaXRpb24udXBkYXRlJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQuZGVmaW5pdGlvbi5kZWxldGUnLFxuICAncmVwb3J0aW5nLnJlcG9ydC5vd25lcnNoaXAudHJhbnNmZXInLFxuICAncmVwb3J0aW5nLnJlcG9ydC5wdWJsaXNoZWQnLFxuICAncmVwb3J0aW5nLnJlcG9ydC5yZXB1Ymxpc2hlZCcsXG4gICdyZXBvcnRpbmcucmVwb3J0LmxpbmsuY3JlYXRlZCcsXG4gICdyZXBvcnRpbmcucmVwb3J0LmxpbmsucmV2b2tlZCcsXG4gICdyZXBvcnRpbmcucmVwb3J0LnJlY2lwaWVudC5hZGRlZCcsXG4gICdyZXBvcnRpbmcucmVwb3J0LnJlY2lwaWVudC5yZW1vdmVkJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQucG9saWN5LnVwZGF0ZScsXG4gIC8vIEEgZGVmaW5pdGlvbiBTVE9QUEVEIHByb2R1Y2luZyByZXBvcnRzIHdpdGhvdXQgYW55b25lIGFza2luZyBpdCB0bzogdGhlIG93bmVyXG4gIC8vIHdhcyBkZWFjdGl2YXRlZCBvciByZW1vdmVkLCBvciBsb3N0IHRoZSBwZXJtaXNzaW9uIGEgcnVuIGlzIGF1dGhvcml6ZWQgd2l0aC5cbiAgLy8gUmVjb3JkZWQgYmVjYXVzZSB0aGUgZWZmZWN0IGlzIHNpbGVudCDigJQgYSBtYW5hZ2VyIGZpbmRzIG91dCBieSBub3QgcmVjZWl2aW5nXG4gIC8vIHRoZSByZXBvcnQg4oCUIHNvIHRoZSB0cmFpbCBoYXMgdG8gc2F5IHdoaWNoIHJlcG9ydHMgc3RvcHBlZCBhbmQgd2h5LlxuICAncmVwb3J0aW5nLnJlcG9ydC5wYXVzZWQnLFxuICAvLyDigKZhbmQgc3RhcnRlZCBhZ2Fpbi4gSXRzIG93biBhY3Rpb24gcmF0aGVyIHRoYW4gYSBkZXRhaWwgb24gdGhlIHBhdXNlLCBiZWNhdXNlIHRoZVxuICAvLyBxdWVzdGlvbiBhIHJldmlld2VyIGFza3MgaXMgXCJ3YXMgdGhpcyBhY2NvdW50J3MgcmVwb3J0aW5nIG9mZiBiZXR3ZWVuIHRoZXNlIHR3b1xuICAvLyBkYXRlc1wiLCBhbmQgYW5zd2VyaW5nIGl0IGZyb20gYSBzaW5nbGUgYWN0aW9uJ3MgZGV0YWlscyBtZWFucyByZWFkaW5nIGV2ZXJ5IHJvdy5cbiAgJ3JlcG9ydGluZy5yZXBvcnQucmVzdW1lZCcsXG4gIC8vIFRoZSBkcmFmdGluZyBoYWxmIG9mIGEgcnVuOiBhIGNvbXBvc2UvcmVnZW5lcmF0ZSBmcmVlemVzIHRoZSBvcmcncyBudW1iZXJzXG4gIC8vIGludG8gYSBydW4sIHRoZSBsZWFkJ3Mgbm90ZXMgYXJlIGVkaXRlZCBvbnRvIGl0IChtZXRhZGF0YSBvbmx5IOKAlCBsZW5ndGgsXG4gIC8vIG5ldmVyIHRoZSBwcm9zZSksIGFuZCBhbiBBSSBzdW1tYXJ5IGlzIGRyYWZ0ZWQgZnJvbSBpdCAodGhlIG51bWJlcnMgd2VudCB0b1xuICAvLyBhIHByb3ZpZGVyOyBgb3V0Y29tZWAgY2FycmllcyBhIHJlZnVzYWwpLiBBIHJlc2VuZCByZS1taW50cyBhIHJlY2lwaWVudCdzXG4gIC8vIGNvbmZpcm1hdGlvbiBjcmVkZW50aWFsLiBgdmVyaWZpZWRgIC8gYHVuc3Vic2NyaWJlZGAgYXJlIHRoZSBVTkFVVEhFTlRJQ0FURURcbiAgLy8gcmVjaXBpZW50J3Mgb3duIGFjdHMgKGFjdG9yIGBhbm9ueW1vdXNgLCBhIGhhc2hlZCBhZGRyZXNzIG9ubHkpOiBib3VuZGVkIGJ5XG4gIC8vIGNvbnN0cnVjdGlvbiDigJQgdGhlIHZlcmlmeSB0b2tlbiBpcyBzaW5nbGUtdXNlLCBhbmQgb25seSB0aGUgY2xpY2sgdGhhdFxuICAvLyBhY3R1YWxseSBzdG9wcyBkZWxpdmVyeSB3cml0ZXMgYW4gdW5zdWJzY3JpYmUgcm93LlxuICAncmVwb3J0aW5nLnJlcG9ydC5ydW4uY29tcG9zZScsXG4gICdyZXBvcnRpbmcucmVwb3J0LnJ1bi5ub3RlcycsXG4gICdyZXBvcnRpbmcucmVwb3J0LnJ1bi5zdW1tYXJ5JyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQucmVjaXBpZW50LnJlc2VuZCcsXG4gICdyZXBvcnRpbmcucmVwb3J0LnJlY2lwaWVudC52ZXJpZmllZCcsXG4gICdyZXBvcnRpbmcucmVwb3J0LnJlY2lwaWVudC51bnN1YnNjcmliZWQnLFxuICAvLyBNQUNISU5FIGluZ2VzdCAoYHJlcG9ydGluZzppbmdlc3RgIHNjb3BlKS4gT25lIGBiYXRjaGAgcm93IHBlciBQT1NUIHRvIHRoZVxuICAvLyBldmVudCAvIGluY2lkZW50IC8gaW5nZXN0LWhlYWx0aCByb3V0ZXMg4oCUIGNvdW50cyBwbHVzIGNhcHBlZCBwaXBlbGluZSxcbiAgLy8gZXhlY3V0aW9uLCBFdmVudEJyaWRnZS1ldmVudCBhbmQgaW5jaWRlbnQgaWQgbGlzdHMsIGF0dHJpYnV0ZWQgdG8gdGhlXG4gIC8vIGNyZWRlbnRpYWwncyBwcmluY2lwYWwg4oCUIHNvIGEgZm9yZ2VkIG9yIG1pc3JvdXRlZCB3cml0ZSBuYW1lcyB0aGUga2V5IGJlaGluZFxuICAvLyBpdC4gYHJlamVjdGVkYCBpcyB0aGUgdGVuYW5jeSByZWZ1c2FsIGluc2lkZSBhIGJhdGNoIChldmVudHMgbmFtaW5nIGFub3RoZXJcbiAgLy8gb3JnJ3MgcGlwZWxpbmVzKTogYSBGQUlMVVJFIHJvdyB3aXRoIHRoZSBvZmZlbmRpbmcgcGlwZWxpbmUgaWRzLCBuZXZlciB0aGVcbiAgLy8gb3JnIHRoZXkgYmVsb25nIHRvLiBgaW5jaWRlbnQucmVjb3JkYCBpcyBvbmUgaW5jaWRlbnQgdGhhdCBpcyBuZXcgb3IgYWN0dWFsbHlcbiAgLy8gY2hhbmdlZCAoYmVmb3JlL2FmdGVyKTsgbGlrZSBgZGVwbG95bWVudC5vdXRjb21lYCBpdCBtb3ZlcyBDRlIvTVRUUi4gQW5cbiAgLy8gdW5jaGFuZ2VkIHJlcGVhdC1pbnRlcnZhbCByZS1wb3N0IHdyaXRlcyBub25lLlxuICAncmVwb3J0aW5nLmluZ2VzdC5iYXRjaCcsXG4gICdyZXBvcnRpbmcuaW5nZXN0LnJlamVjdGVkJyxcbiAgJ3JlcG9ydGluZy5pbmNpZGVudC5yZWNvcmQnLFxuICAvLyBEZW5pZWQgYXV0aG9yaXphdGlvbiBhdHRlbXB0IOKAlCBlbWl0dGVkIGJlc3QtZWZmb3J0IGJ5IHRoZSBzaGFyZWRcbiAgLy8gYHJlcXVpcmVQZXJtaXNzaW9uYCAvIGByZXF1aXJlU3lzdGVtQWRtaW5gIGdhdGUgd2hlbiBhIHN0YXRlLWNoYW5naW5nXG4gIC8vIChub24tR0VUKSByZXF1ZXN0IGlzIHJlamVjdGVkLCBzbyBwcm9iaW5nL2VzY2FsYXRpb24gYXR0ZW1wdHMgYXJlIHZpc2libGVcbiAgLy8gcmF0aGVyIHRoYW4gaW52aXNpYmxlLiBgZGV0YWlsc2AgY2FycmllcyB0aGUgcmVxdWlyZWQgcGVybWlzc2lvbiArIHBhdGg7XG4gIC8vIGBvdXRjb21lYCBpcyAnZmFpbHVyZScuXG4gICdhdXRoei5kZW5pZWQnLFxuICAvLyBcIkFza1wiIGFzc2lzdGFudCBhY3Rpdml0eSDigJQgdmlzaWJpbGl0eSBpbnRvIHdoYXQgdGhlIGFzc2lzdGFudCBkaWQgb24gYSB1c2VyJ3NcbiAgLy8gYmVoYWxmLiBgYXNrLnF1ZXJ5YCBpcyBhIHJlYWQtb25seSBob3ctdG8gdHVybjsgYGFzay5hZ2VudC50dXJuYCBpcyBhIHRvb2wtY2FsbGluZ1xuICAvLyB0dXJuLiBgZGV0YWlsc2AgY2FycnkgU0FGRSBNRVRBREFUQSBPTkxZICh0b29scyB1c2VkLCBwcm9wb3NhbCBraW5kcywgcXVlcnlcbiAgLy8gbGVuZ3RoLCBvdXRjb21lKSwgbmV2ZXIgdGhlIHJhdyBxdWVyeSB0ZXh0LlxuICAnYXNrLnF1ZXJ5JyxcbiAgJ2Fzay5hZ2VudC50dXJuJyxcbiAgLy8gQSByZWFkZXIgcmF0aW5nIGFuIGFuc3dlciwgb3IgYSBoZWxwIHNlYXJjaCB0aGF0IGZvdW5kIG5vdGhpbmcuIFRoZSBPTkxZXG4gIC8vIHNpZ25hbCBmb3Igd2hpY2ggZG9jcyB0aGUgYXNzaXN0YW50IGFuc3dlcnMgYmFkbHkgZnJvbSDigJQgdGhlIHR1cm4gaXRzZWxmXG4gIC8vIGNhbm5vdCB0ZWxsIGEgZ29vZCBhbnN3ZXIgZnJvbSBhIGNvbmZpZGVudCB3cm9uZyBvbmUuIGBkZXRhaWxzYCBjYXJyeSB0aGVcbiAgLy8gcmF0aW5nIGFuZCB0aGUgRE9DIElEUyBjaXRlZCAoYGF1dGhlbnRpY2F0aW9uLm1kYCksIG5ldmVyIHRoZSBxdWVzdGlvbjogdGhlXG4gIC8vIGRvYyBpcyB3aGF0IGdldHMgZml4ZWQsIGFuZCBpdCBpcyBub3QgdXNlci1lbnRlcmVkIHRleHQuXG4gICdhc2suZmVlZGJhY2snLFxuICAvLyBPbmUgQUkgZ2VuZXJhdGlvbiBvZiBhIHBpcGVsaW5lIC8gcGx1Z2luIGRyYWZ0IChgL3BpcGVsaW5lcy9nZW5lcmF0ZSpgLFxuICAvLyBgL3BsdWdpbnMvZ2VuZXJhdGUqYCksIHN1Y2Nlc3Mgb3IgZmFpbHVyZSAoaW5jbC4gY2xpZW50IGFib3J0KS4gYGRldGFpbHNgIGNhcnJ5XG4gIC8vIFNBRkUgTUVUQURBVEEgT05MWTogdGhlIHJvdXRlLCB0aGUgcHJvbXB0IExFTkdUSCwgdGhlIHNoYXJlZCBBSSB1c2FnZSBibG9ja1xuICAvLyAoYGFpYDogdGhlIHByb3ZpZGVyIGFuZCBtb2RlbCB0aGF0IEFOU1dFUkVEIGFmdGVyIGFueSBmYWlsb3ZlciwgYGZhbGxiYWNrRnJvbWAsXG4gIC8vIHdob3NlIGtleSBwYWlkIOKAlCBga2V5U291cmNlYCByZXF1ZXN0L29yZy9wbGF0Zm9ybSDigJQgdG9rZW5zIGluL291dC9jYWNoZWQsIHRoZVxuICAvLyBwcm9tcHQgdmVyc2lvbiwgaG93IHRoZSBgYWlDYWxsc2Agc2xvdCBzZXR0bGVkKSBhbmQgdGhlIHJlc2VydmF0aW9uJ3NcbiAgLy8gYHF1b3RhYCB2aWV3IOKAlCBuZXZlciB0aGUgcHJvbXB0LCB0aGUgZ2VuZXJhdGVkIG91dHB1dCwgb3IgYSBrZXkuXG4gICdwaXBlbGluZS5haS5nZW5lcmF0ZScsXG4gICdwbHVnaW4uYWkuZ2VuZXJhdGUnLFxuICAvLyBQbHVnaW4gZWNvc3lzdGVtIChkb2NzL3J1bmJvb2tzL2Vjb3N5c3RlbS1tb2RlcmF0aW9uLm1kKS4gR292ZXJuYW5jZSBhY3Rpb25zXG4gIC8vIGFyZSByZWNvcmRlZCB3aXRoIGBvcmdJZGAgPSB0aGUgc3lzdGVtIG9yZzsgYGFmZmVjdGVkT3JnSWRgIGlzIHRoZVxuICAvLyBwdWJsaXNoZXIncyBvcmcgKGxpc3RpbmcvdmVyc2lvbi9yZXZpZXcvYWR2aXNvcnkvcHVibGlzaGVyIG1vZGVyYXRpb24pIG9yXG4gIC8vIHRoZSBpbnN0YWxsaW5nIG9yZyAoaW5zdGFsbHMgKyBwb2xpY3kpLiBBbm9ueW1vdXMgc3VibWlzc2lvbnMgdXNlIHRoZVxuICAvLyBgQU5PTllNT1VTX0FDVE9SX0lEYCBhY3RvciB3aXRoIGBkZXRhaWxzLnN1Ym1pc3Npb25JZGAuIGBkZXRhaWxzYCBjYXJyeSBpZHMsXG4gIC8vIHZlcnNpb25zLCBkaWdlc3RzLCB0aWVyLCBzdGF0ZSBhbmQgcmVhc29uIGNvZGVzIG9ubHkg4oCUIG5ldmVyIHJldmlldyBib2RpZXMsXG4gIC8vIFJFQURNRSBjb250ZW50LCBzZWNyZXRzIG9yIGVtYWlscy5cbiAgLy8gUHVibGlzaGVycy5cbiAgJ3B1Ymxpc2hlci5jcmVhdGUnLFxuICAncHVibGlzaGVyLnVwZGF0ZScsXG4gICdwdWJsaXNoZXIudGVybXMuYWNjZXB0JyxcbiAgJ3B1Ymxpc2hlci52ZXJpZnkucmVxdWVzdCcsXG4gICdwdWJsaXNoZXIudmVyaWZ5LmFwcHJvdmUnLFxuICAncHVibGlzaGVyLnZlcmlmeS5yZWplY3QnLFxuICAncHVibGlzaGVyLnRpZXIuY2hhbmdlJyxcbiAgJ3B1Ymxpc2hlci5zdXNwZW5kJyxcbiAgJ3B1Ymxpc2hlci51bnN1c3BlbmQnLFxuICAncHVibGlzaGVyLnRyYW5zZmVyLnJlcXVlc3QnLFxuICAncHVibGlzaGVyLnRyYW5zZmVyLmFjY2VwdCcsXG4gICdwdWJsaXNoZXIudHJhbnNmZXIuZGVjbGluZScsXG4gICdwdWJsaXNoZXIudHJhbnNmZXIuYXBwcm92ZScsXG4gICdwdWJsaXNoZXIudHJhbnNmZXIucmVqZWN0JyxcbiAgJ3B1Ymxpc2hlci5wcm9maWxlLWNoYW5nZS5hcHByb3ZlJyxcbiAgJ3B1Ymxpc2hlci5wcm9maWxlLWNoYW5nZS5yZWplY3QnLFxuICAvLyBQdWJsaXNoIHJlcXVlc3RzICh0ZW5hbnQg4oaSIHN5c3RlbSBvcmcpLiBgZGV0YWlscy5raW5kYCBuYW1lcyB0aGUgcmVxdWVzdC5cbiAgJ3BsdWdpbi5yZXF1ZXN0LnN1Ym1pdCcsXG4gICdwbHVnaW4ucmVxdWVzdC53aXRoZHJhdycsXG4gICdwbHVnaW4ucmVxdWVzdC5hcHByb3ZlJyxcbiAgJ3BsdWdpbi5yZXF1ZXN0LnNlY29uZC1hcHByb3ZlJyxcbiAgJ3BsdWdpbi5yZXF1ZXN0LnJlamVjdCcsXG4gICdwbHVnaW4ucmVxdWVzdC5hdXRvLWFwcHJvdmUnLFxuICAvLyBMaXN0aW5ncyBhbmQgdmVyc2lvbnMgKHN5c3RlbSBvcmcsIGV4Y2VwdCB0aGUgdGVuYW50IHBhdXNlKS5cbiAgJ3BsdWdpbi5saXN0aW5nLnB1Ymxpc2gnLFxuICAvLyBOT1RFOiB0aGVyZSBpcyBubyBgcGx1Z2luLmxpc3RpbmcudW5saXN0YC4gV2l0aGRyYXdhbCBpcyBhbHJlYWR5IGV4cHJlc3NlZCBieVxuICAvLyBgcGx1Z2luLmxpc3Rpbmcuc3RhdGUuY2hhbmdlYCAoYHVubWFpbnRhaW5lZGAgLyBgc3VzcGVuZGVkYCAvIGBsaXN0ZWRgKSxcbiAgLy8gd2hpY2ggaXMgdGhlIGFjdGlvbiB0aGUgY29kZSBhY3R1YWxseSBlbWl0cywgc28gYHVubGlzdGAgd2FzIGEgc2Vjb25kIG5hbWVcbiAgLy8gZm9yIGEgdGhpbmcgdGhhdCBoYXMgb25lIOKAlCBhbmQgYSBuZXZlci1lbWl0dGVkIG9uZSBhdCB0aGF0LlxuICAncGx1Z2luLmxpc3RpbmcudXBkYXRlJyxcbiAgJ3BsdWdpbi5saXN0aW5nLnN0YXRlLmNoYW5nZScsXG4gICdwbHVnaW4ubGlzdGluZy5wYXVzZScsXG4gICdwbHVnaW4ubGlzdGluZy51bnBhdXNlJyxcbiAgJ3BsdWdpbi52ZXJzaW9uLnBhdXNlJyxcbiAgJ3BsdWdpbi52ZXJzaW9uLnlhbmsnLFxuICAncGx1Z2luLnZlcnNpb24udW55YW5rJyxcbiAgJ3BsdWdpbi52ZXJzaW9uLmRlcHJlY2F0ZScsXG4gIC8vIFJldGlyaW5nIGEgdmVyc2lvbidzIHJlZ2lzdHJ5IGltYWdlIHRvIHJlY2xhaW0gYHN0b3JhZ2VCeXRlc2AuIERpc3RpbmN0XG4gIC8vIGZyb20gdGhlIGZvdXIgYWJvdmUsIHdoaWNoIGNoYW5nZSB3aGV0aGVyIGEgdmVyc2lvbiBSRVNPTFZFUyBhbmQgZGVsZXRlXG4gIC8vIG5vdGhpbmcsIGFuZCBmcm9tIGByZWdpc3RyeS5pbWFnZS5kZWxldGVgL2ByZWdpc3RyeS50YWcuZGVsZXRlYCwgd2hpY2ggYXJlXG4gIC8vIHRoZSByZWdpc3RyeSdzIG93biBvcGVyYXRvci1zaWRlIHRyYWlsLiBUaGlzIGlzIGEgdGVuYW50IGZyZWVpbmcgc3BhY2UsIGFuZFxuICAvLyB0aGUgb25seSBhdWRpdGVkIGFjdGlvbiB0aGF0IGNhbiByZWR1Y2UgYW4gb3JnJ3Mgc3RvcmFnZSBmaWd1cmUg4oCUIHNvIGl0c1xuICAvLyByb3cgY2FycmllcyB0aGUgYnl0ZXMgaXQgZnJlZWQsIHdoaWNoIGNhbm5vdCBiZSByZWNvdmVyZWQgYWZ0ZXJ3YXJkcy5cbiAgJ3BsdWdpbi52ZXJzaW9uLnBydW5lJyxcbiAgLy8gTk9URTogbm8gYHBsdWdpbi5jb2xsZWN0aW9uLnVwZGF0ZWAuIGBlY29zeXN0ZW1fY29sbGVjdGlvbnNgIHdhcyBkZWxldGVkIChzZWVcbiAgLy8gdGhlIHRvbWJzdG9uZSBpbiBgc2NoZW1hL2Vjb3N5c3RlbS50c2ApIGJlY2F1c2Ugbm90aGluZyBldmVyIHdyb3RlIG9yIHJlYWRcbiAgLy8gb25lOyB0aGlzIGRlY2xhcmF0aW9uIG91dGxpdmVkIHRoZSB0YWJsZSBpdCBhdWRpdGVkLlxuICAvLyBFY29zeXN0ZW0gY29uZmlndXJhdGlvbiAoc3lzdGVtIG9yZykuXG4gICdlY29zeXN0ZW0uYXV0by1hcHByb3ZhbC1ydWxlLmNyZWF0ZScsXG4gICdlY29zeXN0ZW0uYXV0by1hcHByb3ZhbC1ydWxlLnVwZGF0ZScsXG4gICdlY29zeXN0ZW0uYXV0by1hcHByb3ZhbC1ydWxlLmRlbGV0ZScsXG4gICdlY29zeXN0ZW0ucmVzZXJ2ZWQtbmFtZS51cGRhdGUnLFxuICAvLyBUaGUgb25lLXRpbWUgQk9PVFNUUkFQIGV4Y2VwdGlvbiAoYXV0by1hcHByb3ZhbCBvZiB0aGUgaW5pdGlhbCBPZmZpY2lhbFxuICAvLyBjYXRhbG9nKSBvcGVuaW5nIG9uIHRoZSBmaXJzdCBPZmZpY2lhbCByZXF1ZXN0LCBhbmQgY2xvc2luZyBmb3IgZ29vZFxuICAvLyAoYGRldGFpbHMucmVhc29uYDogd2luZG93X2VsYXBzZWQgLyBsaXN0aW5nc19leGlzdCAvIGEgbWFuYWdlciBkZWNpc2lvbjtcbiAgLy8gYGRldGFpbHMuYXBwcm92ZWRgOiBob3cgbWFueSByZXF1ZXN0cyByb2RlIGl0KS5cbiAgJ2Vjb3N5c3RlbS5ib290c3RyYXAub3BlbicsXG4gICdlY29zeXN0ZW0uYm9vdHN0cmFwLmNsb3NlJyxcbiAgLy8gTk9URTogbm8gYGVjb3N5c3RlbS5zbGEudXBkYXRlYC4gVGhlIGxhbmUgU0xBcyBhcmUgSEFSRENPREVEIChzdGFuZGFyZCA0OGgsXG4gIC8vIHNlY3VyaXR5LWZpeCA0aCBpbiBgc2VydmljZXMvZWNvc3lzdGVtL3NsYS50c2ApIHdpdGggbm8gc2V0dGluZ3Mgc3VyZmFjZSwgc29cbiAgLy8gdGhlcmUgaXMgbm8gbXV0YXRpb24gdG8gYXVkaXQuIE1ha2luZyB0aGVtIG9wZXJhdG9yLXR1bmFibGUgaXMgdGhlIGNoYW5nZVxuICAvLyB0aGF0IHNob3VsZCByZS1hZGQgdGhpcy5cbiAgLy8gUHVibGljIHJlZ2lzdHJ5IG5hbWVzcGFjZSAoYHB1YmxpYy8qYCk6IGNvcHkgKyBzaWduICsgYXR0ZXN0IG9uIHB1Ymxpc2gsXG4gIC8vIHRoZSB0aWVyLWNoYW5nZS9zdXNwZW5zaW9uIHJlLXNpZ24gam9iLCB0YWcgcmVtb3ZhbCBvbiB5YW5rL3Rha2Vkb3duLCBhbmRcbiAgLy8gdGhlIHJldGVudGlvbiBzd2VlcC5cbiAgJ3JlZ2lzdHJ5LmltYWdlLnB1Ymxpc2gnLFxuICAncmVnaXN0cnkuaW1hZ2UucmVzaWduJyxcbiAgJ3JlZ2lzdHJ5LmltYWdlLnlhbmsnLFxuICAncmVnaXN0cnkuaW1hZ2UuZ2MnLFxuICAvLyBJbnN0YWxscyBhbmQgdGhlIGluc3RhbGxpbmcgb3JnJ3MgY29uc3VtcHRpb24gcG9saWN5IChvcmctbG9jYWwpLlxuICAncGx1Z2luLmluc3RhbGwucmVxdWVzdCcsXG4gICdwbHVnaW4uaW5zdGFsbC5hcHByb3ZlJyxcbiAgJ3BsdWdpbi5pbnN0YWxsLmRlbnknLFxuICAncGx1Z2luLmluc3RhbGwuY3JlYXRlJyxcbiAgJ3BsdWdpbi5pbnN0YWxsLnVwZ3JhZGUnLFxuICAvLyBBIG1lbWJlcidzIHJlcXVlc3QgdG8gY2hhbmdlIGFuIGluc3RhbGwgcGFzdCB3aGF0IHRoZXkgbWF5IGRvIGFsb25lLCBhbmQgaXRzIGRlY2lzaW9uLlxuICAncGx1Z2luLmluc3RhbGwuY2hhbmdlLXJlcXVlc3QnLFxuICAncGx1Z2luLmluc3RhbGwuY2hhbmdlLWFwcHJvdmUnLFxuICAncGx1Z2luLmluc3RhbGwuY2hhbmdlLXJlamVjdCcsXG4gICdwbHVnaW4uaW5zdGFsbC5yZW1vdmUnLFxuICAnb3JnLnBsdWdpbi1pbnN0YWxsLXBvbGljeS51cGRhdGUnLFxuICAvLyBBbiB1cGxvYWQgUkVGVVNFRCBiZWNhdXNlIGl0cyBuYW1lIHdvdWxkIG92ZXJyaWRlIHNvbWV0aGluZyB0aGUgb3JnIGFscmVhZHlcbiAgLy8gcmVzb2x2ZXMg4oCUIGEgbGlzdGluZywgb3IgYSB0ZWFtJ3MgcGFyZW50LW9yZyBwbHVnaW4g4oCUIGFuZCB0aGUgY29uc3VtcHRpb25cbiAgLy8gcG9saWN5IHNheXMgYHNoYWRvd2luZzogZGVueWAuIEF1ZGl0ZWQgYmVjYXVzZSBhIHJlZnVzYWwgb3RoZXJ3aXNlIHJldHVybnNcbiAgLy8gYW4gZXJyb3IgdG8gdGhlIGNhbGxlciBhbmQgbGVhdmVzIG5vdGhpbmcgYmVoaW5kOiBhbiBhdHRlbXB0IHRvIGRlZmluZVxuICAvLyBgdHJpdnlgIG92ZXIgdGhlIE9mZmljaWFsIHNjYW5uZXIgaXMgZXhhY3RseSB0aGUgdGhpbmcgc29tZW9uZSBzaG91bGQgYmVcbiAgLy8gYWJsZSB0byBmaW5kIGFmdGVyd2FyZHMuIGBkZXRhaWxzYCBjYXJyeSB0aGUgbmFtZSBhbmQgd2hhdCBpdCB3b3VsZCBoYXZlXG4gIC8vIG92ZXJyaWRkZW4uXG4gICdwbHVnaW4uc2hhZG93aW5nLmRlbmllZCcsXG4gIC8vIFJldmlld3MgYW5kIHJlcGxpZXMuXG4gICdwbHVnaW4ucmV2aWV3LmNyZWF0ZScsXG4gICdwbHVnaW4ucmV2aWV3LnVwZGF0ZScsXG4gICdwbHVnaW4ucmV2aWV3LmRlbGV0ZScsXG4gICdwbHVnaW4ucmV2aWV3LnJlcG9ydCcsXG4gICdwbHVnaW4ucmV2aWV3LmhvbGQnLFxuICAncGx1Z2luLnJldmlldy5yZWxlYXNlJyxcbiAgJ3BsdWdpbi5yZXZpZXcucmVtb3ZlJyxcbiAgJ3BsdWdpbi5yZXZpZXcuYW5vbnltaXplJyxcbiAgJ3BsdWdpbi5yZXZpZXcucmVwbHkuY3JlYXRlJyxcbiAgJ3BsdWdpbi5yZXZpZXcucmVwbHkudXBkYXRlJyxcbiAgJ3BsdWdpbi5yZXZpZXcucmVwbHkuZGVsZXRlJyxcbiAgLy8gQW5vbnltb3VzIHN1Ym1pc3Npb25zLlxuICAncGx1Z2luLnN1Ym1pc3Npb24uY3JlYXRlJyxcbiAgJ3BsdWdpbi5zdWJtaXNzaW9uLnZlcmlmeScsXG4gICdwbHVnaW4uc3VibWlzc2lvbi5nYXRlLWZhaWwnLFxuICAncGx1Z2luLnN1Ym1pc3Npb24uYXBwcm92ZScsXG4gICdwbHVnaW4uc3VibWlzc2lvbi5yZWplY3QnLFxuICAncGx1Z2luLnN1Ym1pc3Npb24uY2xhaW0nLFxuICAncGx1Z2luLnN1Ym1pc3Npb24uZXhwaXJlJyxcbiAgLy8gU2VjdXJpdHkgYWR2aXNvcmllcyAocHVibGlzaC93aXRoZHJhdyBhcmUgc3lzdGVtLW9yZyBvbmx5OyB1cGRhdGUgPSBhXG4gIC8vIG1vZGVyYXRvciBlZGl0aW5nIGEgZHJhZnQgYmVmb3JlIGl0IGlzIHB1Ymxpc2hlZCkuXG4gICdwbHVnaW4uYWR2aXNvcnkuY3JlYXRlJyxcbiAgJ3BsdWdpbi5hZHZpc29yeS51cGRhdGUnLFxuICAncGx1Z2luLmFkdmlzb3J5LnB1Ymxpc2gnLFxuICAncGx1Z2luLmFkdmlzb3J5LndpdGhkcmF3JyxcbiAgLy8gUGVyLW9yZyBwbHVnaW4gc2VjdXJpdHkgbm90aWZpY2F0aW9ucyAocGx1Z2luIHNjYW4gZ2F0ZXMpOiB0aGUgc2V0dGluZ3NcbiAgLy8gKHJlY2lwaWVudHMsIGRpZ2VzdCwgd2ViaG9vaywgZXh0ZXJuYWwgYWRkcmVzcyDigJQgY2hhbmdlZCBmaWVsZCBuYW1lcyBhbmRcbiAgLy8gdGhlIHdlYmhvb2sgaG9zdCBvbmx5LCBuZXZlciB0aGUgc2VjcmV0IG9yIHRoZSBhZGRyZXNzKSwgYW4gZXh0ZXJuYWxcbiAgLy8gYWRkcmVzcyBjb25maXJtZWQgdGhyb3VnaCBpdHMgZW1haWxlZCBzaW5nbGUtdXNlIGxpbmssIGFuZCBhIHRlc3Qgc2VuZC5cbiAgJ3BsdWdpbi5zZWN1cml0eV9ub3RpZmljYXRpb25zLnVwZGF0ZScsXG4gICdwbHVnaW4uc2VjdXJpdHlfbm90aWZpY2F0aW9ucy5leHRlcm5hbF9lbWFpbC52ZXJpZnknLFxuICAncGx1Z2luLnNlY3VyaXR5X25vdGlmaWNhdGlvbnMudGVzdCcsXG4gIC8vIEEgZ2F0ZS1yZWZ1c2VkIGltYWdlIEtFUFQgZnJvbSB0aGUgc2V0dXAgY2F0YWxvZyBsb2FkLCBwcm9tb3RlZCB0byBhXG4gIC8vIHZlcnNpb24gd2l0aG91dCBhIHJlYnVpbGQgKHN5c3RlbSBvcmcsIGFmdGVyIGEgZml4IHVwc3RyZWFtIG9yIGFuXG4gIC8vIGFkdmlzb3J5LWlkIHdhaXZlcikg4oCUIG9yIHJlZnVzZWQgYWdhaW4gYmVjYXVzZSB0aGUgQ1VSUkVOVCBnYXRlcyBzdGlsbFxuICAvLyBmYWlsIGl0LiBgZGV0YWlsc2AgY2FycnkgbmFtZS92ZXJzaW9uL2RpZ2VzdCBhbmQgdGhlIGZpbmRpbmdzLlxuICAncGx1Z2luLnNldHVwX2ltYWdlLnByb21vdGVkJyxcbiAgJ3BsdWdpbi5zZXR1cF9pbWFnZS5wcm9tb3RlX3JlZnVzZWQnLFxuICAvLyBBIGdhdGUtcmVmdXNlZCBzZXR1cC1sb2FkIGltYWdlIEtFUFQgKHNpZ25lZCwgaW4gdGhlIHJlZ2lzdHJ5KSBmb3IgbGF0ZXJcbiAgLy8gcHJvbW90aW9uIChgZGV0YWlsc2A6IGRpZ2VzdCwgcmVmdXNhbCBjb2RlLCBleHBpcmVzQXQpIOKAlCBhbmQgaXRzIHJvd1xuICAvLyBkcm9wcGVkIGJ5IHRoZSBzd2VlcCAoYGRldGFpbHMucmVhc29uYDogZXhwaXJlZCAvIHN1cGVyc2VkZWQpLlxuICAncGx1Z2luLnNldHVwX2ltYWdlLmtlcHQnLFxuICAncGx1Z2luLnNldHVwX2ltYWdlLmRpc2NhcmRlZCcsXG4gIC8vIEEgUElQRUxJTkUncyB0cmlhZ2Ugb2YgaXRzIGV4cG9zdXJlIHRvIGEgdnVsbmVyYWJsZSBwbHVnaW4gdmVyc2lvbjogYVxuICAvLyB0aW1lLWJveGVkIHJpc2sgYWNjZXB0YW5jZSAocmVhc29uICsgZXhwaXJ5LCB0aGUgYWNjZXB0ZWQgZmluZGluZyBrZXlzIGFuZFxuICAvLyB3aGV0aGVyIEtFViBmaW5kaW5ncyB3ZXJlIGFjY2VwdGVkKSwgYSBmYWxzZS1wb3NpdGl2ZSBkaXNtaXNzYWwsIG9yIGFcbiAgLy8gcmVvcGVuLiBBbiBhY3RpdmUgYWNjZXB0YW5jZSBleGVtcHRzIHRoYXQgcGlwZWxpbmUncyBsb29rdXBzIGFuZCBydW50aW1lXG4gIC8vIGNoZWNrcyBmcm9tIHRoZSBmbGFnIC8gS0VWIC8gSGlnaC1mbG9vciByZWZ1c2FscyBmb3IgdGhvc2UgZmluZGluZ3Mgb25seS5cbiAgJ3BpcGVsaW5lLnZ1bG4uYWNjZXB0ZWQnLFxuICAncGlwZWxpbmUudnVsbi5mYWxzZV9wb3NpdGl2ZScsXG4gICdwaXBlbGluZS52dWxuLnJlb3BlbmVkJyxcbiAgLy8gQSBwaXBlbGluZSdzIHJ1bnRpbWUgY2hlY2sgZ3JhZGVkIG9uZSBvZiBpdHMgcnVubmluZyBpbWFnZXMgYGVycm9yYCBvclxuICAvLyBsb3VkZXIgKGBkZXRhaWxzYDogc3RlcEtleSwgZGlnZXN0LCByZWFzb24gY29kZXMsIGV4ZWN1dGlvbklkIHdoZW4gc2VudCkuXG4gICdwaXBlbGluZS5ydW50aW1lX2NoZWNrLmZsYWdnZWQnLFxuICAvLyBBIHBpcGVsaW5lJ3MgcGx1Z2luIHN0ZXBzIG1vdmVkIHRvIG5ld2VyIHZlcnNpb25zIHRocm91Z2ggdGhlIHVwZ3JhZGVcbiAgLy8gZmxvdyAocHJldmlldyDihpIgYXBwbHk7IGBkZXRhaWxzYCBjYXJyeSB0aGUgc3RlcHMsIGZyb20g4oaSIHRvIHZlcnNpb25zKSwgYW5kIGFcbiAgLy8gcGlwZWxpbmUtcnVuIHNlY3VyaXR5IHNjYW5uZXIgcmVwb3J0IHVwbG9hZGVkIGZvciBhIHBpcGVsaW5lIChgZGV0YWlsc2A6XG4gIC8vIHRvb2wsIGZvcm1hdCwgc3RhZ2UsIHRoZSBmaW5kaW5nIGNvdW50cyDigJQgbmV2ZXIgdGhlIGZpbmRpbmdzIHRoZW1zZWx2ZXMpLlxuICAncGlwZWxpbmUucGx1Z2luLnVwZ3JhZGVkJyxcbiAgJ3BpcGVsaW5lLnNlY3VyaXR5X3JlcG9ydC51cGxvYWQnLFxuXSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgUmVtb3RlQXVkaXRBY3Rpb24gPSB0eXBlb2YgUkVNT1RFX0FVRElUX0FDVElPTlNbbnVtYmVyXTtcblxuLyoqIFdoZXRoZXIgYHZhbHVlYCBpcyBhbiBhY3Rpb24gYSByZW1vdGUgc2VydmljZSBtYXkgZW1pdCAodGhlIGluZ2VzdCBhbGxvdy1saXN0KS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1JlbW90ZUF1ZGl0QWN0aW9uKHZhbHVlOiBzdHJpbmcpOiB2YWx1ZSBpcyBSZW1vdGVBdWRpdEFjdGlvbiB7XG4gIHJldHVybiAoUkVNT1RFX0FVRElUX0FDVElPTlMgYXMgcmVhZG9ubHkgc3RyaW5nW10pLmluY2x1ZGVzKHZhbHVlKTtcbn1cbiJdfQ==
|
|
592
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWF1ZGl0LWFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvcmVtb3RlLWF1ZGl0LWFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7OztHQU9HO0FBR0g7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2xDLHdCQUF3QjtJQUN4QixxQkFBcUI7SUFDckIsc0JBQXNCO0lBQ3RCLDhFQUE4RTtJQUM5RSwyRUFBMkU7SUFDM0UsOEVBQThFO0lBQzlFLHFCQUFxQjtJQUNyQix1RUFBdUU7SUFDdkUsMkVBQTJFO0lBQzNFLCtFQUErRTtJQUMvRSw4RUFBOEU7SUFDOUUsa0VBQWtFO0lBQ2xFLHlFQUF5RTtJQUN6RSxvQkFBb0I7SUFDcEIsMkVBQTJFO0lBQzNFLDZFQUE2RTtJQUM3RSxzRUFBc0U7SUFDdEUsOEVBQThFO0lBQzlFLDZFQUE2RTtJQUM3RSx1RUFBdUU7SUFDdkUscUNBQXFDO0lBQ3JDLHFCQUFxQjtJQUNyQixxQkFBcUI7SUFDckIsNkVBQTZFO0lBQzdFLCtFQUErRTtJQUMvRSxxRUFBcUU7SUFDckUsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQiw0RUFBNEU7SUFDNUUsd0VBQXdFO0lBQ3hFLGNBQWM7SUFDZCxlQUFlO0lBQ2YsZUFBZTtJQUNmLGVBQWU7SUFDZiw4RUFBOEU7SUFDOUUsNEVBQTRFO0lBQzVFLG9CQUFvQjtJQUNwQixvQkFBb0I7SUFDcEIsa0JBQWtCO0lBQ2xCLHlFQUF5RTtJQUN6RSw0RUFBNEU7SUFDNUUsNEVBQTRFO0lBQzVFLHVFQUF1RTtJQUN2RSxvQkFBb0I7SUFDcEIsbUJBQW1CO0lBQ25CLGdFQUFnRTtJQUNoRSxxRUFBcUU7SUFDckUsb0RBQW9EO0lBQ3BELGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLGtCQUFrQjtJQUNsQixt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Q2pFLDZCQUE2QjtJQUM3QixvQ0FBb0M7SUFDcEMsMkVBQTJFO0lBQzNFLHVFQUF1RTtJQUN2RSxpRUFBaUU7SUFDakUseUJBQXlCO0lBQ3pCLDhCQUE4QjtJQUM5Qix3RUFBd0U7SUFDeEUsNkVBQTZFO0lBQzdFLHdFQUF3RTtJQUN4RSwyRUFBMkU7SUFDM0UsNEVBQTRFO0lBQzVFLHdCQUF3QjtJQUN4Qiw4QkFBOEI7SUFDOUIsd0JBQXdCO0lBQ3hCLHlFQUF5RTtJQUN6RSw0RUFBNEU7SUFDNUUsZ0NBQWdDO0lBQ2hDLHdFQUF3RTtJQUN4RSwrRUFBK0U7SUFDL0UsMkVBQTJFO0lBQzNFLDRFQUE0RTtJQUM1RSwwQkFBMEI7SUFDMUIsaUNBQWlDO0NBQ3pCLENBQUM7QUFJWCxzRkFBc0Y7QUFDdEYsTUFBTSxVQUFVLG1CQUFtQixDQUFDLEtBQWE7SUFDL0MsT0FBUSxvQkFBMEMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFRoZSByZW1vdGUgKG5vbi1wbGF0Zm9ybSkgYXVkaXQgQUNUSU9OIFZPQ0FCVUxBUlkuXG4gKlxuICogS2VwdCBhcGFydCBmcm9tIHRoZSBjbGllbnQgdGhhdCBzaGlwcyB0aGUgZXZlbnRzIChgc2VydmljZXMvcmVtb3RlLWF1ZGl0LWNsaWVudC50c2ApXG4gKiBiZWNhdXNlIGl0IGlzIGFuIGFsbG93LWxpc3QsIG5vdCBtYWNoaW5lcnk6IGl0IGlzIHRoZSB0aGluZyBhIHJldmlld2VyIHJlYWRzXG4gKiBlbmQgdG8gZW5kIHdoZW4gZGVjaWRpbmcgd2hldGhlciBhIHNlcnZpY2UgbWF5IGVtaXQgYSBnaXZlbiBhY3Rpb24sIGFuZCBpdCBpc1xuICogd2hhdCBwbGF0Zm9ybSdzIGluZ2VzdCB2YWxpZGF0ZXMgYWdhaW5zdC5cbiAqL1xuXG5cbi8qKlxuICogVGhlIGV4YWN0IHNldCBvZiBhdWRpdCBhY3Rpb25zIGEgTk9OLVBMQVRGT1JNIChyZW1vdGUpIHNlcnZpY2UgaXMgcGVybWl0dGVkIHRvXG4gKiBlbWl0IHRocm91Z2ggYFBPU1QgL2F1ZGl0L2V2ZW50c2AuIFRoaXMgaXMgdGhlIFNJTkdMRSBTT1VSQ0Ug4oCUIGBSZW1vdGVBdWRpdEFjdGlvbmBcbiAqIGlzIGRlcml2ZWQgZnJvbSBpdCwgc28gdGhlIHR5cGUgYW5kIHRoZSBydW50aW1lIGFsbG93LWxpc3QgY2FuIG5ldmVyIGRyaWZ0LlxuICpcbiAqIFNFQ1VSSVRZOiBwbGF0Zm9ybSdzIGluZ2VzdCB2YWxpZGF0ZXMgYGFjdGlvbmAgYWdhaW5zdCB0aGlzIHN1YnNldCAodmlhXG4gKiB7QGxpbmsgaXNSZW1vdGVBdWRpdEFjdGlvbn0pLCBOT1QgdGhlIGZ1bGwgcGxhdGZvcm0gYEF1ZGl0QWN0aW9uYCB1bmlvbiDigJQgYVxuICogYHNlcnZpY2U6KmAgdG9rZW4gbXVzdCBub3QgYmUgYWJsZSB0byBmb3JnZSBwbGF0Zm9ybS1hdXRob3JpdHkgZXZlbnRzXG4gKiAoYGFkbWluLnN1cGVyYWRtaW4uZ3JhbnRgLCBgb3JnLm93bmVyc2hpcC50cmFuc2ZlcmAsIGB1c2VyLmxvZ2luYCwg4oCmKS4gS2VlcFxuICogdGhpcyBsaXN0IGZyZWUgb2YgYW55IHBsYXRmb3JtLW9ubHkgYWN0aW9uLlxuICovXG5leHBvcnQgY29uc3QgUkVNT1RFX0FVRElUX0FDVElPTlMgPSBbXG4gICdwbHVnaW4uYnVpbGQuY29tcGxldGVkJyxcbiAgJ3BsdWdpbi5idWlsZC5mYWlsZWQnLFxuICAncGx1Z2luLmJ1aWxkLnRpbWVvdXQnLFxuICAvLyBBIHZlcnNpb24gcGVyc2lzdGVkIFVOU0NBTk5FRCBiZWNhdXNlIHRoZSBidWlsZC10aW1lIHNjYW4gY291bGQgbm90IHJ1biBhbmRcbiAgLy8gdGhlIG9wZXJhdG9yIGVzY2FwZSBoYXRjaCBgUExVR0lOX0FMTE9XX1VOU0NBTk5FRGAgaXMgb24gKHdpdGhvdXQgaXQgdGhlXG4gIC8vIGJ1aWxkIGZhaWxzIGBJTUFHRV9TQ0FOX1VOQVZBSUxBQkxFYCkuIGBkZXRhaWxzYCBjYXJyeSBuYW1lL3ZlcnNpb24vZGlnZXN0LlxuICAncGx1Z2luLnNjYW4uc2tpcHBlZCcsXG4gIC8vIEZpeGFibGUgQ3JpdGljYWwgZmluZGluZ3Mgd2VyZSBFWEVNUFRFRCBmcm9tIHRoZSBwbGF0Zm9ybSBmbG9vciBieSBhXG4gIC8vIGBQTFVHSU5fVlVMTl9XQUlWRVJTYCBlbnRyeSwgc28gYSBidWlsZCB0aGF0IHdvdWxkIG90aGVyd2lzZSBoYXZlIGZhaWxlZFxuICAvLyBQTFVHSU5fVlVMTl9HQVRFIHdhcyBhbGxvd2VkIHRocm91Z2guIFRoZSBvdGhlciBoYWxmIG9mIHBsdWdpbi5zY2FuLnNraXBwZWQ6XG4gIC8vIGJvdGggYXJlIG9wZXJhdG9yIGVzY2FwZSBoYXRjaGVzIHRoYXQgY2hhbmdlIGEgZ2F0ZSdzIHZlcmRpY3QsIGFuZCBhIG1ldHJpY1xuICAvLyBhbmQgYSBsb2cgbGluZSBhcmUgbm90IGEgZHVyYWJsZSByZWNvcmQgb2Ygb25lLiBgZGV0YWlsc2AgY2FycnlcbiAgLy8gbmFtZS92ZXJzaW9uL2RpZ2VzdCwgaG93IG1hbnkgZmluZGluZ3Mgd2VyZSB3YWl2ZWQgYW5kIHdoaWNoIHBhY2thZ2VzLlxuICAncGx1Z2luLnZ1bG4ud2FpdmVkJyxcbiAgLy8gVGhlIG5pZ2h0bHkgcmVzY2FuIEZMQUdHRUQgYSBzdG9yZWQgdmVyc2lvbiAoaXRzIGdhdGVkIENyaXRpY2FsIGZpbmRpbmdzXG4gIC8vIG5vdyBleGNlZWQgUExVR0lOX1ZVTE5fTUFYX0ZJTkRJTkdTIOKAlCBsb29rdXAgYW5kIHRoZSBwaXBlbGluZSdzIG93bmVycyBhcmVcbiAgLy8gd2FybmVkIGF0IGBlcnJvcmAgc2V2ZXJpdHkpLCBvciBDTEVBUkVEIHRoYXQgZmxhZy4gQm90aCBjaGFuZ2Ugd2hhdFxuICAvLyByZXNvbHV0aW9uIHNheXMgYWJvdXQgYSB2ZXJzaW9uIG5vYm9keSByZWJ1aWx0LCBvbiBub2JvZHkncyByZXF1ZXN0LCBzbyB0aGVcbiAgLy8gcmVjb3JkIG9mIFdIRU4gYW5kIFdIWSBsaXZlcyBpbiB0aGUgaGFzaC1jaGFpbmVkIGxvZyByYXRoZXIgdGhhbiBvbmx5IGluIGFcbiAgLy8gY29sdW1uIHRoZSBuZXh0IHJlc2NhbiBvdmVyd3JpdGVzLiBgZGV0YWlsc2AgY2FycnkgY291bnRzLCB0aGUgZ2F0ZWRcbiAgLy8gYWR2aXNvcnkgaWRzIGFuZCB0aGUgaW1hZ2UgZGlnZXN0LlxuICAncGx1Z2luLnZ1bG4uZmxhZ2dlZCcsXG4gICdwbHVnaW4udnVsbi5jbGVhcmVkJyxcbiAgLy8gUGx1Z2luIGxpZmVjeWNsZSBtdXRhdGlvbnMgKGFwaS9wbHVnaW4gcm91dGUgaGFuZGxlcnMpIOKAlCB0aGUgZGVzdHJ1Y3RpdmUgL1xuICAvLyBwdWJsaXNoaW5nIHN1cmZhY2UgdGhhdCBidWlsZHMgYWxyZWFkeSBhdWRpdCdzIGNvdW50ZXJwYXJ0OiByZWdpc3RyeSBkZWxldGUsXG4gIC8vIHNvdXJjZSB1cGxvYWQsIGFuZCBkZXBsb3ktdG8tY2x1c3Rlci4gYHRhcmdldElkYCBpcyB0aGUgcGx1Z2luIGlkLlxuICAncGx1Z2luLmRlbGV0ZScsXG4gICdwbHVnaW4ucmVzdG9yZScsXG4gIC8vIE1hbnVhbCBwdXJnZTogcGVybWFuZW50IGhhcmQtZGVsZXRlIG9mIGEgc29mdC1kZWxldGVkIHBsdWdpbiB0b21ic3RvbmUgb25cbiAgLy8gZGVtYW5kIChmaW5hbGl6ZXMgd2hhdCB0aGUgcmV0ZW50aW9uIHN3ZWVwIHdvdWxkIG90aGVyd2lzZSBkbyBsYXRlcikuXG4gICdwbHVnaW4ucHVyZ2UnLFxuICAncGx1Z2luLnVwZGF0ZScsXG4gICdwbHVnaW4udXBsb2FkJyxcbiAgJ3BsdWdpbi5kZXBsb3knLFxuICAvLyBQbHVnaW4gYnVsayBtdXRhdGlvbnMgKGFwaS9wbHVnaW4gYnVsay1wbHVnaW4gcm91dGUpICsgRExRIHB1cmdlIChkcm9wcyBhbGxcbiAgLy8gZGVhZC1sZXR0ZXJlZCBidWlsZCBqb2JzLCBjcm9zcy1vcmcsIHN5c2FkbWluKS4gYGRldGFpbHNgIGNhcnJpZXMgY291bnRzLlxuICAncGx1Z2luLmJ1bGsudXBkYXRlJyxcbiAgJ3BsdWdpbi5idWxrLmRlbGV0ZScsXG4gICdwbHVnaW4uZGxxLnB1cmdlJyxcbiAgLy8gQnVpbGQgcmUtcnVucyBmcm9tIHRoZSBxdWV1ZS10cmlhZ2Ugc3VyZmFjZTogcmUtZW5xdWV1ZSBhIEZBSUxFRCBidWlsZFxuICAvLyAoYHBsdWdpbi5idWlsZC5yZXRyeWApIG9yIGEgZGVhZC1sZXR0ZXJlZCBvbmUgKGBwbHVnaW4uZGxxLnJlcGxheWApLiBCb3RoXG4gIC8vIHJlLXJ1biBhbiBpbWFnZSBidWlsZCArIHBsdWdpbiBwZXJzaXN0IG9uIHRoZSBjYWxsZXIncyBhdXRob3JpdHksIHNvIHRoZXlcbiAgLy8gYXJlIGF1ZGl0ZWQgbXV0YXRpb25zOyBgYWZmZWN0ZWRPcmdJZGAgY2FycmllcyB0aGUgam9iJ3Mgb3duaW5nIG9yZy5cbiAgJ3BsdWdpbi5idWlsZC5yZXRyeScsXG4gICdwbHVnaW4uZGxxLnJlcGxheScsXG4gIC8vIFBpcGVsaW5lIG11dGF0aW9ucyDigJQgZW1pdHRlZCBieSBhcGkvcGlwZWxpbmUncyByb3V0ZSBoYW5kbGVyc1xuICAvLyAoY3JlYXRlL3VwZGF0ZS9kZWxldGUgKyBDb2RlUGlwZWxpbmUgZXhlY3V0aW9uIHRyaWdnZXIvY2FuY2VsKSBhbmRcbiAgLy8gcG9zdGVkIHRvIHBsYXRmb3JtJ3MgYFBPU1QgL2F1ZGl0L2V2ZW50c2AgaW5nZXN0LlxuICAncGlwZWxpbmUuY3JlYXRlJyxcbiAgJ3BpcGVsaW5lLnVwZGF0ZScsXG4gICdwaXBlbGluZS5kZWxldGUnLFxuICAncGlwZWxpbmUucmVzdG9yZScsXG4gIC8vIE1hbnVhbCBwdXJnZTogcGVybWFuZW50IGhhcmQtZGVsZXRlIG9mIGEgc29mdC1kZWxldGVkIHBpcGVsaW5lIC9cbiAgLy8gcGlwZWxpbmVfdGVtcGxhdGUgdG9tYnN0b25lIG9uIGRlbWFuZCAoZmluYWxpemVzIHdoYXQgdGhlIHJldGVudGlvbiBzd2VlcFxuICAvLyB3b3VsZCBvdGhlcndpc2UgZG8gbGF0ZXIpLiBgdGFyZ2V0SWRgIGlzIHRoZSBwdXJnZWQgaWQuXG4gICdwaXBlbGluZS5wdXJnZScsXG4gICdwaXBlbGluZV90ZW1wbGF0ZS5jcmVhdGUnLFxuICAncGlwZWxpbmVfdGVtcGxhdGUudXBkYXRlJyxcbiAgJ3BpcGVsaW5lX3RlbXBsYXRlLmRlbGV0ZScsXG4gICdwaXBlbGluZV90ZW1wbGF0ZS5yZXN0b3JlJyxcbiAgJ3BpcGVsaW5lX3RlbXBsYXRlLnB1cmdlJyxcbiAgJ3BpcGVsaW5lLmV4ZWN1dGlvbi5zdGFydCcsXG4gICdwaXBlbGluZS5leGVjdXRpb24uY2FuY2VsJyxcbiAgLy8gQ29kZVBpcGVsaW5lIEFSTi1yZWdpc3RyeSBjb25maWcgKGFwaS9waXBlbGluZSByZWdpc3RyeSByb3V0ZSkg4oCUIHJlZ2lzdGVyaW5nIC9cbiAgLy8gZGVyZWdpc3RlcmluZyB0aGUgZXh0ZXJuYWwgQ29kZVBpcGVsaW5lIHRoYXQgYmFja3MgYSBwaXBlbGluZSAoZGVwbG95LWFmZmVjdGluZykuXG4gICdwaXBlbGluZS5yZWdpc3RyeS5yZWdpc3RlcicsXG4gICdwaXBlbGluZS5yZWdpc3RyeS5kZXJlZ2lzdGVyJyxcbiAgLy8gUXVvdGEgYWRtaW5pc3RyYXRpb24gKGFwaS9xdW90YSkg4oCUIGEgc3VwZXJhZG1pbiByZXNldHRpbmcgYW4gb3JnJ3MgdXNhZ2VcbiAgLy8gY291bnRlciBvciBlZGl0aW5nIGl0cyB0aWVyIGxpbWl0cy4gYGFmZmVjdGVkT3JnSWRgIGlzIHRoZSBvcmcgY2hhbmdlZDtcbiAgLy8gYGRldGFpbHNgIGNhcnJpZXMgdGhlIHF1b3RhVHlwZSArIG9sZC9uZXcgdmFsdWUuXG4gICdxdW90YS5yZXNldCcsXG4gICdxdW90YS5saW1pdC51cGRhdGUnLFxuICAvLyBBIHN1cGVyYWRtaW4gZGVsZXRpbmcgYW4gb3JnJ3MgZW50aXJlIHF1b3RhIGRvY3VtZW50LlxuICAncXVvdGEuZGVsZXRlJyxcbiAgLy8gQW4gYWNjb3VudCdzIHF1b3RhIHRocmVzaG9sZC1ub3RpY2Ugc2V0dGluZ3MgKG9wdC1vdXQgKyB0aGVcbiAgLy8gYHF1b3RhLnRocmVzaG9sZGAgd2ViaG9vayBVUkwpIOKAlCB3aGVyZSB1c2FnZSB3YXJuaW5ncyBnby5cbiAgJ3F1b3RhLm5vdGljZV9zZXR0aW5ncy51cGRhdGUnLFxuICAvLyBDb21wbGlhbmNlIGFkbWluaXN0cmF0aW9uIChhcGkvY29tcGxpYW5jZSkg4oCUIHRoZSBlbmZvcmNlbWVudC1wb3N0dXJlIHN1cmZhY2UuXG4gIC8vIEFwcHJvdmluZy9yZXZva2luZyBhbiBleGVtcHRpb24sIHRvZ2dsaW5nL2F1dGhvcmluZy9kZWxldGluZyBhIHJ1bGUsXG4gIC8vIGF1dGhvcmluZy9kZWxldGluZyBhIHBvbGljeSwgbWFuYWdpbmcgc2NhbiBzY2hlZHVsZXMsIGFwcGx5aW5nIGEgdGVtcGxhdGUsXG4gIC8vIG9yIGNhbmNlbGxpbmcgYSBydW5uaW5nIHNjYW4uIGB0YXJnZXRJZGAgaXMgdGhlIHJ1bGUvcG9saWN5L2V4ZW1wdGlvbi9zY2FuIGlkLlxuICAnY29tcGxpYW5jZS5leGVtcHRpb24uYXBwcm92ZScsXG4gICdjb21wbGlhbmNlLmV4ZW1wdGlvbi5yZXZva2UnLFxuICAvLyBBIG1lbWJlciBGSUxJTkcgYW4gZXhlbXB0aW9uIHJlcXVlc3QgKHNpbmdsZSBvciBidWxrOyBtZXRhZGF0YSBvbmx5LCBuZXZlclxuICAvLyB0aGUgcmVhc29uKSBhbmQgYW4gYWRtaW4gUkVKRUNUSU5HIG9uZSDigJQgdGhlIG90aGVyIGhhbHZlcyBvZiB0aGVcbiAgLy8gdHdvLXBlcnNvbiBkZWNpc2lvbiB3aG9zZSBhcHByb3ZhbCBpcyByZWNvcmRlZCBhYm92ZS5cbiAgJ2NvbXBsaWFuY2UuZXhlbXB0aW9uLnJlcXVlc3QnLFxuICAnY29tcGxpYW5jZS5leGVtcHRpb24ucmVqZWN0JyxcbiAgJ2NvbXBsaWFuY2UucnVsZS50b2dnbGUnLFxuICAnY29tcGxpYW5jZS5ydWxlLmNyZWF0ZScsXG4gICdjb21wbGlhbmNlLnJ1bGUudXBkYXRlJyxcbiAgJ2NvbXBsaWFuY2UucnVsZS5kZWxldGUnLFxuICAnY29tcGxpYW5jZS5ydWxlLnJlc3RvcmUnLFxuICAvLyBNYW51YWwgb24tZGVtYW5kIGhhcmQtZGVsZXRlIChQVVJHRSkgb2YgYSBzb2Z0LWRlbGV0ZWQgcnVsZS9wb2xpY3kgdG9tYnN0b25lIOKAlFxuICAvLyB0aGUgY2FsbGVyLWluaXRpYXRlZCBjb3VudGVycGFydCB0byB0aGUgcmV0ZW50aW9uIHN3ZWVwJ3MgYXV0by1wdXJnZS4gRGVzdHJveXNcbiAgLy8gdGhlIHRvbWJzdG9uZSBwZXJtYW5lbnRseSwgc28gaXQgY2FycmllcyB0aGUgZHVyYWJsZSwgdGFtcGVyLWV2aWRlbnQgdHJhaWwuXG4gICdjb21wbGlhbmNlLnJ1bGUucHVyZ2UnLFxuICAnY29tcGxpYW5jZS5wb2xpY3kuY3JlYXRlJyxcbiAgJ2NvbXBsaWFuY2UucG9saWN5LnVwZGF0ZScsXG4gICdjb21wbGlhbmNlLnBvbGljeS5kZWxldGUnLFxuICAnY29tcGxpYW5jZS5wb2xpY3kucmVzdG9yZScsXG4gICdjb21wbGlhbmNlLnBvbGljeS5wdXJnZScsXG4gICdjb21wbGlhbmNlLnNjYW4tc2NoZWR1bGUuY3JlYXRlJyxcbiAgJ2NvbXBsaWFuY2Uuc2Nhbi1zY2hlZHVsZS51cGRhdGUnLFxuICAnY29tcGxpYW5jZS5zY2FuLXNjaGVkdWxlLmRlbGV0ZScsXG4gICdjb21wbGlhbmNlLnRlbXBsYXRlLmFwcGx5JyxcbiAgLy8gTGF1bmNoaW5nIGFuIG9yZy13aWRlIHJlLWV2YWx1YXRpb24gKHRoZSBjb3VudGVycGFydCB0byBgLmNhbmNlbGApIOKAlCBpdFxuICAvLyBwZXJzaXN0cyBhIHNjYW4gYW5kIGNhbiBibG9jayBlbnRpdGllcyB0aGF0IHBhc3NlZCBiZWZvcmUuXG4gICdjb21wbGlhbmNlLnNjYW4uY3JlYXRlJyxcbiAgJ2NvbXBsaWFuY2Uuc2Nhbi5jYW5jZWwnLFxuICAvLyBBIHNjYW4ncyB0ZXJtaW5hbCBPVVRDT01FIChjb21wbGV0ZWQg4oaSIHN1Y2Nlc3Mgd2l0aCB0aGUgcGFzcy93YXJuL2Jsb2NrXG4gIC8vIGNvdW50cywgZmFpbGVkIOKGkiBmYWlsdXJlKS4gU2NoZWR1bGVkIHNjYW5zIGFsc28gd3JpdGUgYGNvbXBsaWFuY2Uuc2Nhbi5jcmVhdGVgXG4gIC8vIChgZGV0YWlscy50cmlnZ2VyZWRCeTogJ3NjaGVkdWxlZCdgKSwgYXR0cmlidXRlZCB0byB0aGUgc2NoZWR1bGUncyBhdXRob3IuXG4gICdjb21wbGlhbmNlLnNjYW4uY29tcGxldGUnLFxuICAvLyBQbGF0Zm9ybSBvbmJvYXJkaW5nIHN1YnNjcmliaW5nIGEgbmV3IG9yZyB0byBldmVyeSBwdWJsaXNoZWQgcnVsZVxuICAvLyAoSU5BQ1RJVkUgc3Vic2NyaXB0aW9uczsgYGRldGFpbHMuc3Vic2NyaWJlZGAgaXMgdGhlIGNvdW50KS5cbiAgJ2NvbXBsaWFuY2Uuc3Vic2NyaXB0aW9uLmF1dG8tc3Vic2NyaWJlJyxcbiAgLy8gUGVyLW9yZyBjb21wbGlhbmNlIG5vdGlmaWNhdGlvbiBzZXR0aW5nczogcmVjaXBpZW50cyArIHRoZSBvdXRib3VuZCB3ZWJob29rXG4gIC8vIFVSTC9zZWNyZXQuIEJlYXJlci1lcXVpdmFsZW50IGNvbmZpZyB0aGF0IHJlZGlyZWN0cyB2aW9sYXRpb24gbm90aWNlcywgc28gYVxuICAvLyBjaGFuZ2UgY2FycmllcyB0aGUgZHVyYWJsZSB0cmFpbCAobmV2ZXIgdGhlIHNlY3JldCBpdHNlbGYpLlxuICAnY29tcGxpYW5jZS5ub3RpZmljYXRpb24tcHJlZmVyZW5jZS51cGRhdGUnLFxuICAvLyBJbWFnZS1yZWdpc3RyeSBkZXN0cnVjdGl2ZSBvcHMgKGFwaS9pbWFnZS1yZWdpc3RyeSkg4oCUIGdhcmJhZ2UtY29sbGVjdGlvblxuICAvLyBzd2VlcHMgYW5kIGV4cGxpY2l0IGltYWdlL3RhZyBkZWxldGVzLlxuICAncmVnaXN0cnkuZ2MnLFxuICAncmVnaXN0cnkuaW1hZ2UuZGVsZXRlJyxcbiAgLy8gQ3Jvc3MtcmVwbyB0YWcvaW1hZ2UgY29weSAoYXBpL2ltYWdlLXJlZ2lzdHJ5IFBPU1QgL2FwaS9pbWFnZXMvY29weSkuIEFcbiAgLy8gY3Jvc3MtdGVuYW50IGNvcHkgbW92ZXMgZGF0YSBhY3Jvc3MgY3VzdG9tZXIgYm91bmRhcmllcywgc28gaXQgbmVlZHMgdGhlXG4gIC8vIGR1cmFibGUsIHRhbXBlci1ldmlkZW50IHRyYWlsIOKAlCBub3QganVzdCB0aGUgTG9raSBvcGVyYXRvciBsaW5lLlxuICAncmVnaXN0cnkuaW1hZ2UuY29weScsXG4gIC8vIEEgcGx1Z2luIGltYWdlIHNpZ25lZCArIFNCT00tYXR0ZXN0ZWQgYnkgdGhlIHBsYXRmb3JtJ3MgcGx1Z2luLXNpZ25pbmcga2V5XG4gIC8vIChhcGkvaW1hZ2UtcmVnaXN0cnkgUE9TVCAvaW50ZXJuYWwvcGx1Z2luLXNpZ25hdHVyZXMsIGNhbGxlZCBieSB0aGUgcGx1Z2luXG4gIC8vIGJ1aWxkIHdvcmtlcikuIFRoZSBrZXkgaXMgd2hhdCBzeW50aCB0cnVzdHMsIHNvIGV2ZXJ5IHVzZSBpcyBvbiB0aGUgdHJhaWwuXG4gICdyZWdpc3RyeS5pbWFnZS5zaWduJyxcbiAgLy8gVGhlIERvY2tlciB0b2tlbiBlbmRwb2ludCBtaW50aW5nIGEgcmVnaXN0cnkgdG9rZW4gdGhhdCBHUkFOVFMgYWNjZXNzXG4gIC8vIChgZGV0YWlscy5ncmFudGVkYDogcmVwbyArIGFjdGlvbnM7IHRoZSBzY29wZS1sZXNzIGBkb2NrZXIgbG9naW5gIHByb2JlIGlzXG4gIC8vIG5vdCByZWNvcmRlZCkg4oCUIGFuZCwgYXMgb3V0Y29tZSBmYWlsdXJlLCBhIHJlZnVzZWQgY3JlZGVudGlhbCAoaGFzaGVkXG4gIC8vIHVzZXJuYW1lLCBjcmVkZW50aWFsIGtpbmQgb25seSkuXG4gICdyZWdpc3RyeS50b2tlbi5pc3N1ZScsXG4gIC8vIEEgcHVzaCBjcmVkZW50aWFsIG1pbnRlZCBmb3Igb25lIGFub255bW91cyBzdWJtaXNzaW9uJ3NcbiAgLy8gYHF1YXJhbnRpbmUvPHN1Ym1pc3Npb25JZD5gIHJlcG8gKGV4cGlyeSArIFRUTCwgbmV2ZXIgdGhlIHNlY3JldCkuXG4gICdyZWdpc3RyeS5xdWFyYW50aW5lLmNyZWRlbnRpYWwubWludCcsXG4gIC8vIE1lc3NhZ2luZyAoYXBpL21lc3NhZ2UpIOKAlCBhZG1pbiBCUk9BRENBU1QgYW5ub3VuY2VtZW50cyArIGRlc3RydWN0aXZlXG4gIC8vIGRlbGV0ZXMuIDE6MSB1c2VyIG1lc3NhZ2VzIGFyZSBpbnRlbnRpb25hbGx5IE5PVCBhdWRpdGVkIChub2lzZSArIHRoZXkgd291bGRcbiAgLy8gcHVsbCBwcml2YXRlIGNvbnRlbnQgaW50byB0aGUgdHJhaWwpLiBgZGV0YWlsc2AgY2FycnkgbWV0YWRhdGEgb25seVxuICAvLyAoc3ViamVjdC90eXBlL3Njb3BlKSwgTkVWRVIgbWVzc2FnZSBib2R5IGNvbnRlbnQuXG4gICdtZXNzYWdlLmFubm91bmNlbWVudC5jcmVhdGUnLFxuICAnbWVzc2FnZS5kZWxldGUnLFxuICAnbWVzc2FnZS5yZXN0b3JlJyxcbiAgLy8gTWFudWFsIG9uLWRlbWFuZCBQVVJHRSAocGVybWFuZW50IGhhcmQtZGVsZXRlKSBvZiBhbiBhbHJlYWR5LXNvZnQtZGVsZXRlZFxuICAvLyBtZXNzYWdlIHRvbWJzdG9uZSDigJQgdGhlIGRlc3RydWN0aXZlIGZpbmFsaXplciB0aGUgcmV0ZW50aW9uIHN3ZWVwIHdvdWxkXG4gIC8vIG90aGVyd2lzZSBwZXJmb3JtIGF0IHRoZSBwdXJnZSBkZWFkbGluZS4gYGRldGFpbHNgIGNhcnJ5IG1ldGFkYXRhIG9ubHkuXG4gICdtZXNzYWdlLnB1cmdlJyxcbiAgLy8gQW4gYXV0aG9yJ3MgZWRpdCBvZiBhIHNlbnQgbWVzc2FnZSAoYW5kIHJlZnVzZWQgYXR0ZW1wdHMsIGFzIGZhaWx1cmVzKS5cbiAgLy8gYGRldGFpbHNgIGNhcnJ5IHRoZSBuZXcgYm9keSdzIExFTkdUSCBvbmx5IOKAlCBuZWl0aGVyIHNpZGUgb2YgdGhlIGVkaXQuXG4gICdtZXNzYWdlLnVwZGF0ZScsXG4gIC8vIEEgbWVzc2FnZSBhdHRhY2htZW50IHN0b3JlZCAoZ2VuZXJhbCBvciBzdXBwb3J0IG1vdW50LCBgZGV0YWlscy5zdXJmYWNlYCkuXG4gIC8vIFR5cGUgKyBzaXplIG9ubHkg4oCUIG5ldmVyIHRoZSBieXRlcywgYW5kIG5vdCB0aGUgdXNlci1jaG9zZW4gZmlsZW5hbWUuXG4gICdtZXNzYWdlLmF0dGFjaG1lbnQudXBsb2FkJyxcbiAgLy8gQSBTWVNURU0gbm90aWZpY2F0aW9uIGRyb3BwZWQgaW50byBhbiBvcmcncyBpbmJveCBieSBhbiBpbnRlcm5hbCBzZXJ2aWNlXG4gIC8vIChQT1NUIC9tZXNzYWdlcy9pbnRlcm5hbC9ub3RpZnkpOyBgZGV0YWlscy5jYWxsZXJgIG5hbWVzIHRoZSBzZXJ2aWNlLlxuICAnbWVzc2FnZS5ub3RpZnkuaW50ZXJuYWwnLFxuICAvLyBUaGUgcGxhdGZvcm0gb3JnLWRlbGV0ZSBjYXNjYWRlIHJlY2xhaW1pbmcgYW4gb3JnJ3MgYXR0YWNobWVudCBCTE9CUyDigJRcbiAgLy8gYGRldGFpbHMuYmxvYnNEZWxldGVkYCwgb3IgYSBmYWlsdXJlIHJvdyB3aGVuIHRoZSByZWNsYWltIGRpZCBub3QgY29tcGxldGUuXG4gICdtZXNzYWdlLm9yZy5wdXJnZScsXG4gIC8vIFN1cHBvcnQgY2FzZXMgKGFwaS9tZXNzYWdlKS4gRGlzdGluY3QgZnJvbSB0aGUgYG1lc3NhZ2UuKmAgZmFtaWx5IGFib3ZlXG4gIC8vIGJlY2F1c2UgYSBjYXNlIGlzIG5vdCBhbiBvcmRpbmFyeSBtZXNzYWdlOiBpdCBjYXJyaWVzIGEgcmVzcG9uc2UtdGltZVxuICAvLyBjb21taXRtZW50LCBzbyBXSE8gcmFpc2VkIGl0IGFuZCBXSEVOIHdlIGZpcnN0IGFuc3dlcmVkIGFyZSB0aGUgZmFjdHMgYVxuICAvLyBkaXNwdXRlIHR1cm5zIG9uLiBgZGV0YWlsc2AgY2FycnkgdGhlIGNhc2UgbnVtYmVyLCBsZXZlbCBhbmQgc2V2ZXJpdHkg4oCUXG4gIC8vIG1ldGFkYXRhIG9ubHksIG5ldmVyIHRoZSBib2R5IG9mIHdoYXQgYSBjdXN0b21lciB3cm90ZS5cbiAgLy9cbiAgLy8gVHdvIG9mIHRoZSBuaW5lIHBsYW5uZWQgc3VwcG9ydCBhY3Rpb25zIGFyZSBoZXJlLCBhbmQgb25seSB0d286IHRoZXNlIGFyZVxuICAvLyB0aGUgb25lcyB3aXRoIHJlYWwgZW1pdHRlcnMgdG9kYXkuIFRoZSByZXN0IChgc3RhdHVzYCwgYHNldmVyaXR5YCxcbiAgLy8gYGFzc2lnbmAsIGB0cmFuc2ZlcmAsIGBub3RlYCwgYHJlYWRgKSBsYW5kIFdJVEggdGhlIHJvdXRlcyB0aGF0IGVtaXQgdGhlbSDigJRcbiAgLy8gYSBkZWNsYXJlZCBhY3Rpb24gbm90aGluZyBlbWl0cyBpcyBkZWFkIHZvY2FidWxhcnksIGFuZCB0aGUgcGFyaXR5IHRlc3RcbiAgLy8gd291bGQgdGhlbiBmb3JjZSBhIGRvY3Mgcm93IGRlc2NyaWJpbmcgYW4gZXZlbnQgdGhhdCBuZXZlciBmaXJlcy5cbiAgLy9cbiAgLy8gYHN1cHBvcnQuY2FzZS5yZWFkYCB3aWxsIG1hdHRlciBtb3N0IG9mIGFsbCB3aGVuIGl0IGFycml2ZXM6IGl0IGlzIHRoZSBvbmx5XG4gIC8vIHJlY29yZCB0aGF0IHNvbWVvbmUgYXQgdGhlIHZlbmRvciBvcGVuZWQgYSBjdXN0b21lcidzIGNhc2UuXG4gICdzdXBwb3J0LmNhc2Uub3BlbicsXG4gICdzdXBwb3J0LmNhc2UucmVwbHknLFxuICAvLyBUaGUgd29ya2Zsb3cgbXV0YXRpb25zLiBFYWNoIGlzIGF1ZGl0ZWQgYmVjYXVzZSBlYWNoIG1vdmVzIGEgY2FzZSdzXG4gIC8vIHJlbGF0aW9uc2hpcCB0byBpdHMgcmVzcG9uc2UgY29tbWl0bWVudDogc3RhdHVzIHN0b3BzIG9yIHJlc3RhcnRzIHRoZVxuICAvLyBjbG9jaywgc2V2ZXJpdHkgY2hhbmdlcyB3aGljaCB0YXJnZXQgYXBwbGllcywgYW5kIHRoZSB0d28gb3duZXJzaGlwXG4gIC8vIGFjdGlvbnMgZGVjaWRlIFdITyBpcyBhY2NvdW50YWJsZSBmb3IgbWVldGluZyBpdC4gQSBzaWxlbnQgY2hhbmdlIG9mIG93bmVyXG4gIC8vIGlzIGhvdyBhY2NvdW50YWJpbGl0eSBmb3IgYSBtaXNzZWQgdGFyZ2V0IGRpc2FwcGVhcnMuXG4gICdzdXBwb3J0LmNhc2Uuc3RhdHVzJyxcbiAgJ3N1cHBvcnQuY2FzZS5zZXZlcml0eScsXG4gICdzdXBwb3J0LmNhc2UuYXNzaWduJyxcbiAgJ3N1cHBvcnQuY2FzZS50cmFuc2ZlcicsXG4gIC8vIE9OLUNBTEwuIFRoZSBwcm92aWRlciBvd25zIHRoZSByb3RhLCB0aGUgZXNjYWxhdGlvbiBhbmQgdGhlIGNvbnRhY3RcbiAgLy8gbWV0aG9kczsgd2hhdCBpdCBjYW5ub3Qgb3duIGlzIGFuIGF1ZGl0YWJsZSBhbnN3ZXIgdG8gXCJ3aG8gcGlja2VkIHRoaXMgdXBcbiAgLy8gYXQgMDM6MTRcIi4gQSBjbGljayBvbiBhIGxpbmsgaW4gdGhlaXIgVUkgaXMgbm90IGFuIGlkZW50aXR5IHRoaXMgc3lzdGVtIGNhblxuICAvLyBhdHRlc3QgdG8sIHNvIHRoZWlyIGluY2lkZW50IHN0YXRlIGNoYW5nZSBpcyByZWxheWVkIGhlcmUgYW5kIHJlY29yZGVkXG4gIC8vIGFnYWluc3QgdGhlIGFnZW50IHRoZXkgbmFtZS4gVGhlIGhhc2ggY2hhaW4gaXMgdGhlIHBvaW50OiBhIHBvc3QtaW5jaWRlbnRcbiAgLy8gcmV2aWV3IG5lZWRzIHRoZSBhY2sgdG8gYmUgZXZpZGVuY2UgcmF0aGVyIHRoYW4gYSBzY3JlZW5zaG90LlxuICAvL1xuICAvLyBgZXNjYWxhdGVkYCBpcyBhdWRpdGVkIHNlcGFyYXRlbHkgYmVjYXVzZSBpdCBpcyB0aGUgcmVjb3JkIHRoYXQgdGhlIEZJUlNUXG4gIC8vIHJlc3BvbmRlciBkaWQgbm90IGFuc3dlciDigJQgdGhlIGZhY3QgYSByb3RhIGlzIGFkanVzdGVkIG9uLCBhbmQgdGhlIG9uZSBtb3N0XG4gIC8vIGxpa2VseSB0byBiZSBkaXNwdXRlZCBsYXRlci5cbiAgJ3N1cHBvcnQub25jYWxsLmFja25vd2xlZGdlZCcsXG4gICdzdXBwb3J0Lm9uY2FsbC5lc2NhbGF0ZWQnLFxuICAvLyBUaGUgdGVzdCBwYWdlLiBBdWRpdGVkIGJlY2F1c2UgaXQgUklOR1MgQSBQSE9ORTogd2hvZXZlciBpdCB3YWtlcyBpc1xuICAvLyBlbnRpdGxlZCB0byBhIHJlY29yZCBvZiB3aG8gY2F1c2VkIHRoYXQsIGF0IHdoYXRldmVyIGhvdXIgaXQgd2FzLlxuICAnc3VwcG9ydC5vbmNhbGwudGVzdCcsXG4gIC8vIFRoZSBwZXItY2FzZSBzd2VlcCBwYWdpbmcgdGhlIHJvdGEgZm9yIGEgcHJlbWl1bSBjYXNlIG5lYXJpbmcgaXRzIHRhcmdldC5cbiAgLy8gUmVjb3JkZWQgb25jZSwgb24gdGhlIHRpY2sgdGhlIGNhc2UgRU5URVJFRCB0aGUgd2luZG93IOKAlCB0aGUgc3dlZXAgcmUtc2VuZHNcbiAgLy8gdGhlIHBhZ2UgZXZlcnkgdGljaywgYW5kIHR3ZW50eS1mb3VyIHJvd3MgZm9yIG9uZSBwYWdlIHdvdWxkIGJlIG5vaXNlLlxuICAnc3VwcG9ydC5vbmNhbGwucGFnZWQnLFxuICAvLyBUaGUgdHdvIENPTlRBQ1QgYWN0aW9ucyAocGxhdGZvcm0pLiBOb3QgY2FzZSBldmVudHMg4oCUIGVudGl0bGVtZW50IGV2ZW50czpcbiAgLy8gZWFjaCBvbmUgY2hhbmdlcyB3aG8gaW4gYW4gb3JnIGlzIGFibGUgdG8gY29tbWl0IHVzIHRvIGEgcmVzcG9uc2UgdGFyZ2V0IGF0XG4gIC8vIGFsbCwgYW5kIGRlc2lnbmF0aW5nIHNwZW5kcyBhIHNsb3Qgb2YgYSBQQUlELCBhY2NvdW50LXBvb2xlZCBhbGxvd2FuY2UuIFRoZVxuICAvLyByZXZva2UgY2FycmllcyB0aGUgY291bnQgb2Ygb3BlbiBjYXNlcyBpdCBsZWZ0IGJlaGluZCwgc28gYW4gb3JwaGFuZWQgY2FzZVxuICAvLyBpcyBhIHJlY29yZGVkIGZhY3QgcmF0aGVyIHRoYW4gc29tZXRoaW5nIGRpc2NvdmVyZWQgbGF0ZXIuXG4gICdzdXBwb3J0LmNvbnRhY3QuZGVzaWduYXRlJyxcbiAgJ3N1cHBvcnQuY29udGFjdC5yZXZva2UnLFxuICAvLyBUaGUgcHJlbWl1bSBVUEdSQURFLCBib3RoIGRpcmVjdGlvbnMuIFNlcGFyYXRlIGFjdGlvbnMgZnJvbSBkZXNpZ25hdGlvblxuICAvLyBiZWNhdXNlIHRoZXkgYW5zd2VyIHRvIGEgZGlmZmVyZW50IGNhcCBhbmQgY2FycnkgYSBkaWZmZXJlbnQgZmFjdDogd2hvIHdhc1xuICAvLyBlbnRpdGxlZCB0byAyNHg3IGNvdmVyYWdlLCBhbmQgd2hlbi4gQSByZXNwb25zZS10aW1lIGRpc3B1dGUgb3ZlciBhblxuICAvLyBvdXQtb2YtaG91cnMgY2FzZSB0dXJucyBvbiBleGFjdGx5IHRoYXQuXG4gICdzdXBwb3J0LmNvbnRhY3QudXBncmFkZScsXG4gICdzdXBwb3J0LmNvbnRhY3QuZG93bmdyYWRlJyxcbiAgLy8gU3RhZmYgbm90ZXMgb24gYSBjYXNlLiBBdWRpdGVkIGJlY2F1c2UgYSBub3RlIGlzIHRoZSB2ZW5kb3IncyBpbnRlcm5hbFxuICAvLyBhc3Nlc3NtZW50IG9mIGEgY3VzdG9tZXIgYW5kIHRoZSBvbmx5IHN1cmZhY2Ugb24gYSBjYXNlIHRoZSB0ZW5hbnQgbXVzdFxuICAvLyBuZXZlciBzZWU7IHRoZSB0cmFpbCBjYXJyaWVzIE1FVEFEQVRBIE9OTFkgKGNhc2UgbnVtYmVyLCBub3RlIGlkLCBsZW5ndGgpXG4gIC8vIGFuZCBuZXZlciB0aGUgYm9keSwgc2luY2UgdGhlIGNlbnRyYWwgdHJhaWwgaXMgcmVhZCBmYXIgbW9yZSB3aWRlbHkgdGhhblxuICAvLyB0aGUgc3VwcG9ydCBxdWV1ZSBpcy5cbiAgJ3N1cHBvcnQuY2FzZS5ub3RlJyxcbiAgLy8gVGhlIGNhbm5lZC1yZXBseSBsaWJyYXJ5LiBPTkUgYWN0aW9uIGZvciBjcmVhdGUvZWRpdC9yZXRpcmUgcmF0aGVyIHRoYW5cbiAgLy8gdGhyZWUsIGJlY2F1c2UgdGhlIHRyYWlsJ3MgcXVlc3Rpb24gaGVyZSBpcyBcIndobyBjaGFuZ2VkIHRoZSB3b3JkaW5nIHRoZVxuICAvLyBkZXNrIHNlbmRzIGN1c3RvbWVyc1wiLCBub3Qgd2hpY2ggdmVyYiB0aGV5IHVzZWQg4oCUIGBkZXRhaWxzYCBjYXJyaWVzIHRoYXQuXG4gIC8vIFN5c3RlbS13aWRlIHJhdGhlciB0aGFuIHBlci10ZW5hbnQsIHNvIHRoZXNlIHJvd3MgbmFtZSBubyBhZmZlY3RlZCBvcmcuXG4gICdzdXBwb3J0LmNhbm5lZC53cml0ZScsXG4gIC8vIEJpbGxpbmcgKGFwaS9iaWxsaW5nKSDigJQgc3Vic2NyaXB0aW9uICsgZW50aXRsZW1lbnQgbXV0YXRpb25zLCBtaXJyb3JlZCB0byB0aGVcbiAgLy8gY2VudHJhbCBhdWRpdCB0cmFpbCAodGhlc2UgYWxzbyB3cml0ZSB0byB0aGUgc2VydmljZS1sb2NhbCBiaWxsaW5nX2V2ZW50c1xuICAvLyBjb2xsZWN0aW9uKS4gYGRldGFpbHNgIGNhcnJ5IHBsYW4vdGllci9hZGRvbiBpZHMgb25seSDigJQgbmV2ZXIgY2FyZC9wYXltZW50XG4gIC8vIHNlY3JldHMgb3IgYW4gQVdTIGFjY291bnQgaWQuXG4gIC8vIFN1YnNjcmlwdGlvbiBsaWZlY3ljbGUgYSBDVVNUT01FUiBkcml2ZXMgKHRoZSBhZG1pbiBjb3VudGVycGFydCBpc1xuICAvLyBgYmlsbGluZy50aWVyLm92ZXJyaWRlYCk6IHNlbGYtc2VydmUgY3JlYXRlIChkaXJlY3Qgb3IgTWFya2V0cGxhY2UgY2xhaW0pLFxuICAvLyBwbGFuL2ludGVydmFsIGNoYW5nZSwgY2FuY2VsLWF0LXBlcmlvZC1lbmQsIHVuZG8tY2FuY2VsLCBjYXNjYWRlIGRlbGV0ZS5cbiAgJ2JpbGxpbmcuc3Vic2NyaXB0aW9uLmNyZWF0ZScsXG4gICdiaWxsaW5nLnN1YnNjcmlwdGlvbi51cGRhdGUnLFxuICAnYmlsbGluZy5zdWJzY3JpcHRpb24ucmVhY3RpdmF0ZScsXG4gICdiaWxsaW5nLnN1YnNjcmlwdGlvbi5jYW5jZWwnLFxuICAnYmlsbGluZy5zdWJzY3JpcHRpb24uZGVsZXRlJyxcbiAgJ2JpbGxpbmcudGllci5vdmVycmlkZScsXG4gIC8vIEEgTkVHT1RJQVRFRCBzdXBwb3J0IHNpemUgZmxvb3IgcmVwbGFjaW5nIHRoZSBjb21wdXRlZCByYW1wLiBTeXN0ZW0tb3JnXG4gIC8vIG9ubHksIGFuZCBhdWRpdGVkIHdpdGggdGhlIGFncmVlZCBQUklDRSBhbmQgdGhlIGFncmVlZCBTRUFUIENPVU5UIHRvZ2V0aGVyOlxuICAvLyBhIGRpc3B1dGUgYWJvdXQgd2hhdCB3YXMgc2lnbmVkIGZvciB0dXJucyBvbiB0aGF0IHBhaXIsIGFuZCB0aGUgcHJpY2UgYWxvbmVcbiAgLy8gY2Fubm90IGFuc3dlciBcImF0IHdoYXQgc2NhbGVcIi5cbiAgJ2JpbGxpbmcuc3VwcG9ydC1mbG9vci5vdmVycmlkZScsXG4gIC8vIEEgR1JBTlRFRCBvbmUtdGltZSBzdXBwb3J0IGluY2lkZW50IOKAlCBhIGNvbW1lcmNpYWwgY29uY2Vzc2lvbiwgbm90IGEgc2FsZS5cbiAgLy8gVGhlcmUgaXMgZGVsaWJlcmF0ZWx5IG5vIHB1cmNoYXNlIHBhdGg6IG1vbnRobHkgc3VwcG9ydCBjYW5jZWxzIGZyZWVseSwgc29cbiAgLy8gYW4gaW5jaWRlbnQgcHJpY2VkIGFib3ZlIGEgbW9udGggaXMgZG9taW5hdGVkIGFuZCBvbmUgYmVsb3cgaXQgbG9zZXMgbW9uZXkuXG4gIC8vIFRoZSByb3cgY2FycmllcyB0aGUgY291bnQgYW5kIHRoZSByZXN1bHRpbmcgYmFsYW5jZSwgd2hpY2ggaXMgd2hhdCBhIGxhdGVyXG4gIC8vIHJldmlldyBvZiBcIndobyBnYXZlIHdoYXQgYXdheVwiIG5lZWRzLlxuICAnYmlsbGluZy5zdXBwb3J0LWluY2lkZW50LmdyYW50JyxcbiAgLy8gT3BlcmF0b3Itb25seSByZXNlZWQgb2YgdGhlIGludm9pY2UgbGVkZ2VyIGZyb20gdGhlIHBheW1lbnQgcHJvdmlkZXInc1xuICAvLyBoaXN0b3J5IChQT1NUIC9iaWxsaW5nL2FkbWluL2JhY2tmaWxsKSDigJQgbXV0YXRlcyBmaW5hbmNlIGRhdGEgZmxlZXQtd2lkZS5cbiAgJ2JpbGxpbmcuYWRkb24uYWRkJyxcbiAgJ2JpbGxpbmcuYWRkb24ucmVtb3ZlJyxcbiAgLy8gU3lzdGVtLWluaXRpYXRlZCByZW1vdmFsIG9mIGEgdGllci1pbmNsdWRlZCBhZGQtb24gb24gYSBwbGFuIHVwZ3JhZGUgKHRoZVxuICAvLyBhY2NvdW50J3MgbmV3IHRpZXIgbm93IGJ1bmRsZXMgdGhlIGZlYXR1cmUpIOKAlCBkaXN0aW5jdCBmcm9tIGEgdXNlci1pbml0aWF0ZWRcbiAgLy8gYHJlbW92ZWAgc28gZmluYW5jZSBjYW4gdGVsbCBhbiBhdXRvLXBydW5lIGZyb20gYSBjdXN0b21lciBhY3Rpb24uXG4gICdiaWxsaW5nLmFkZG9uLnBydW5lJyxcbiAgLy8gRGlzY291bnRzIChkb2NzL2JpbGxpbmctZGlzY291bnRzLm1kKSDigJQgbWludC9pc3N1ZS9hcHBseS9yZW1vdmUvcmV2b2tlIG9mIGFcbiAgLy8gcHJpY2UgY291cG9uIG9yIHVzYWdlIGNyZWRpdC4gYGRldGFpbHNgIGNhcnJ5IHRoZSBkaXNjb3VudCBpZCArIGtpbmQvdmFsdWVcbiAgLy8gb25seSwgbmV2ZXIgdGhlIG9wYXF1ZSB0b2tlbiBvciBzaWduaW5nIGtleS5cbiAgJ2JpbGxpbmcuZGlzY291bnQuZ2VuZXJhdGUnLFxuICAnYmlsbGluZy5kaXNjb3VudC5pc3N1ZScsXG4gICdiaWxsaW5nLmRpc2NvdW50LmFwcGx5JyxcbiAgJ2JpbGxpbmcuZGlzY291bnQucmVtb3ZlJyxcbiAgJ2JpbGxpbmcuZGlzY291bnQucmV2b2tlJyxcbiAgLy8gQ2FtcGFpZ25zIChkb2NzL2JpbGxpbmctZGlzY291bnRzLm1kKSDigJQgdGhlIGlkZW50aXR5IGEgc2V0IG9mIGRpc2NvdW50IGNvZGVzXG4gIC8vIGJlbG9uZ3MgdG8sIGNhcnJ5aW5nIHRoZSBidWRnZXQsIHdpbmRvdyBhbmQgb25lLXBlci1hY2NvdW50IHJ1bGUuIEF1dGhvcmluZ1xuICAvLyBvbmUgZGVjaWRlcyBob3cgbXVjaCB0aGUgYnVzaW5lc3MgbWF5IGdpdmUgYXdheSwgc28gZWFjaCBjaGFuZ2UgaXMgYXVkaXRlZC5cbiAgJ2JpbGxpbmcuY2FtcGFpZ24uY3JlYXRlJyxcbiAgJ2JpbGxpbmcuY2FtcGFpZ24udXBkYXRlJyxcbiAgJ2JpbGxpbmcuY2FtcGFpZ24uZW5kJyxcbiAgLy8gUHJvbW90aW9ucyAoZG9jcy9iaWxsaW5nLWRpc2NvdW50cy5tZCNwcm9tb3Rpb25zKSDigJQgcnVsZS1kcml2ZW4gYXV0by1ncmFudFxuICAvLyBjYW1wYWlnbnMuIGBkZXRhaWxzYCBjYXJyeSB0aGUgcHJvbW90aW9uIGlkICsgY2VudHMvZXZlbnQgb25seS5cbiAgJ2JpbGxpbmcucHJvbW90aW9uLmNyZWF0ZScsXG4gICdiaWxsaW5nLnByb21vdGlvbi51cGRhdGUnLFxuICAnYmlsbGluZy5wcm9tb3Rpb24ucmV2b2tlJyxcbiAgJ2JpbGxpbmcucHJvbW90aW9uLmdyYW50JyxcbiAgJ2JpbGxpbmcucHJvbW90aW9uLmFjdGl2YXRlJyxcbiAgLy8gRXhwYW5zaW9uIE9GRkVSUyAoZG9jcy9wbGFucy9zYWxlcy1hZ2VudC5tZCkuIEFuIGF1dG9tYXRlZCBncmFudGVyIG5lZWRzIGl0c1xuICAvLyBvd24gdHJhaWw6IGBkZWNsaW5lZGAgYW5kIGBkaXNtaXNzZWRgIGFyZSB0aGUgYWNjb3VudCdzIG93biBhbnN3ZXJzIChhbmQgdGhlXG4gIC8vIHBhaXIgRDYncyBsZW5ndGhlbmVkIHF1aWV0IHdpbmRvdyBkZXBlbmRzIG9uIOKAlCBcIm5ldmVyIHNhdyBpdFwiIGFuZCBcInNhaWQgbm9cIlxuICAvLyBtdXN0IG5vdCBiZSB0aGUgc2FtZSByb3cpOyBgZXhjbHVzaW9uLnNldGAvYGNsZWFyZWRgIGFyZSB0aGUgb3BlcmF0b3IgdmV0byxcbiAgLy8gd2hpY2ggaXMgdGhlIHByaWNlIG9mIHNoaXBwaW5nIHRoZSBmZWF0dXJlIGF0IGFsbCBhbmQgdGhlcmVmb3JlIGhhcyB0byBiZVxuICAvLyBhdHRyaWJ1dGFibGU7IGB0cmlnZ2VyYCBpcyBhIGh1bWFuIGFza2luZyBmb3IgYW4gb2ZmZXIgbm93LCByZWNvcmRlZCBzbyBhXG4gIC8vIG1hbnVhbCBvZmZlciBpcyBkaXN0aW5ndWlzaGFibGUgZnJvbSBhbiBhZ2VudCBvbmUgaW4gdGhlIG91dGNvbWUgbG9nLlxuICAvLyBUaGUgYWdlbnQncyBPV04gd29yaywgdW5kZXIgaXRzIG93biBhY3RvciAoRDE0IOKAlCBgT0ZGRVJTX0FHRU5UX0FDVE9SX0lEYCkuXG4gIC8vIGBzZW50YCBpcyB3aGF0IG1ha2VzIFwid2h5IGRpZCB0aGlzIGFjY291bnQgZ2V0IHRoaXM/XCIgYW5zd2VyYWJsZSBmcm9tIHRoZVxuICAvLyBjZW50cmFsIHRyYWlsIHJhdGhlciB0aGFuIG9ubHkgZnJvbSB0aGUgc2VydmljZSdzIG93biBjb2xsZWN0aW9uLCBhbmRcbiAgLy8gYHdpdGhkcmF3bmAgaXMgdGhlIHJlY2FsbCBhbiBvcGVyYXRvciByZWFjaGVzIGZvciBvbiB0aGUgbW9ybmluZyBhIHJ1bGVcbiAgLy8gdHVybnMgb3V0IHRvIGJlIHdyb25nIOKAlCBib3RoIGNhcnJ5IHRoZSByYXRpb25hbGUgb3IgdGhlIHdpbmRvdywgbmV2ZXIgY29weS5cbiAgJ2JpbGxpbmcub2ZmZXIuc2VudCcsXG4gICdiaWxsaW5nLm9mZmVyLndpdGhkcmF3bicsXG4gICdiaWxsaW5nLm9mZmVyLmRlY2xpbmVkJyxcbiAgJ2JpbGxpbmcub2ZmZXIuZGlzbWlzc2VkJyxcbiAgJ2JpbGxpbmcub2ZmZXIuZXhjbHVzaW9uLnNldCcsXG4gICdiaWxsaW5nLm9mZmVyLmV4Y2x1c2lvbi5jbGVhcmVkJyxcbiAgJ2JpbGxpbmcub2ZmZXIudHJpZ2dlcicsXG4gIC8vIFVzYWdlLWNyZWRpdCByZWFsaXphdGlvbiDigJQgYSBjdXN0b21lci9jb21wbGlhbmNlLXZpc2libGUgcmVjb3JkIG9mIGNyZWRpdFxuICAvLyBtb3ZlbWVudDogYGNvbnN1bWVkYCAoTWFya2V0cGxhY2UgbWV0ZXJlZCBkcmF3ZG93biksIGBleGhhdXN0ZWRgIChiYWxhbmNlIGhpdFxuICAvLyB6ZXJvKSwgYW5kIGEgY29tYm8gZW5kaW5nLiBgZGV0YWlsc2AgY2FycnkgY2VudHMvaWRzIG9ubHksIG5vIHBheW1lbnQgc2VjcmV0cy5cbiAgJ2JpbGxpbmcuY3JlZGl0LmNvbnN1bWVkJyxcbiAgJ2JpbGxpbmcuY3JlZGl0LmV4aGF1c3RlZCcsXG4gICdiaWxsaW5nLmNvbWJvLmV4cGlyZWQnLFxuICAvLyBSZXBvcnRpbmcgKGFwaS9yZXBvcnRpbmcpIOKAlCB0aGUgdGhyZWUgcmVwb3J0aW5nIG11dGF0aW9ucyB3aG9zZSBlZmZlY3RcbiAgLy8gb3V0bGl2ZXMgYSByZXF1ZXN0IGxvZzogdGhlIHBlci1vcmcgY29ycmVsYXRpb24td2luZG93IGNvbmZpZyB3cml0ZSwgYVxuICAvLyBwb3N0LWRlcGxveSBvdXRjb21lIG1hcmtlciAoaXQgbW92ZXMgdGhlIG9yZydzIERPUkEgQ0ZSL01UVFIpLCBhbmQgdGhlXG4gIC8vIGluYm91bmQgYmlsbGluZ+KGknJlcG9ydGluZyByZXRlbnRpb24tZW50aXRsZW1lbnQgc3luYyAoYSByZXRlbnRpb24gY3V0IGlzIGFcbiAgLy8gZGF0YS1kZXN0cm95aW5nIGNoYW5nZSBhcHBsaWVkIGJ5IHRoZSBuZXh0IHN3ZWVwKS4gYGRldGFpbHNgIGNhcnJ5IHRoZVxuICAvLyBzZXR0aW5ncy9vdXRjb21lIHZhbHVlcyBvbmx5LlxuICAncmVwb3J0aW5nLnNldHRpbmdzLnVwZGF0ZScsXG4gICdyZXBvcnRpbmcuZGVwbG95bWVudC5vdXRjb21lJyxcbiAgJ3JlcG9ydGluZy5yZXRlbnRpb24uc3luYycsXG4gIC8vIFN0YWtlaG9sZGVyIHJlcG9ydHMg4oCUIHRoZSBhZGQtb24ncyBhdXRob3JpbmcgYW5kIFBVQkxJU0hJTkcgc3VyZmFjZS4gUHVibGlzaGluZ1xuICAvLyBpcyB0aGUgbW9tZW50IGludGVybmFsIGRlbGl2ZXJ5IG51bWJlcnMgbGVhdmUgdGhlIHBsYXRmb3JtLCBzbyB0aGUgd2hvbGVcbiAgLy8gb3V0d2FyZCBwYXRoIGlzIGF1ZGl0YWJsZTogd2hpY2ggcmVwb3J0LCB3aGljaCBwZXJpb2QncyBmcm96ZW4gc25hcHNob3QsXG4gIC8vIHdoaWNoIHZlcnNpb24sIGFuZCB3aG8gbGV0IGl0IG91dC4gYGxpbmsuY3JlYXRlZGAgLyBgbGluay5yZXZva2VkYCBjb3ZlciB0aGVcbiAgLy8gVVJMcyB0aGF0IGxldCBzb21lb25lIHdpdGhvdXQgYW4gYWNjb3VudCByZWFkIGl0OyBgcmVjaXBpZW50LmFkZGVkYCAvXG4gIC8vIGByZWNpcGllbnQucmVtb3ZlZGAgY292ZXIgd2hvIGlzIG9uIHRoZSBkaXN0cmlidXRpb24gbGlzdCwgd2hpY2ggaXMgdGhlIG90aGVyXG4gIC8vIHdheSBkYXRhIHJlYWNoZXMgYSBwZXJzb24uIGBvd25lcnNoaXAudHJhbnNmZXJgIGlzIGEgcHJpdmlsZWdlIG1vdmU6IGFcbiAgLy8gc2NoZWR1bGVkIHJ1biBpcyBhdXRob3JpemVkIGFzIGl0cyBPV05FUiwgc28gaGFuZGluZyBhIGRlZmluaXRpb24gb3ZlciBoYW5kc1xuICAvLyBvdmVyIHdob3NlIGFjY2VzcyB0aGUgbnVtYmVycyBhcmUgY29tcHV0ZWQgd2l0aC5cbiAgLy9cbiAgLy8gRGVsaWJlcmF0ZWx5IE5PVCBhdWRpdGVkOiByZWFkaW5nIGEgc2hhcmVkIHJlcG9ydC4gVGhlIGFjY2VzcyBpcyBsb2dnZWQgYW5kXG4gIC8vIGNvdW50ZWQgcGVyIGxpbmssIGJ1dCBpdCBpcyBhbiBVTkFVVEhFTlRJQ0FURUQsIGV4dGVybmFsbHktdHJpZ2dlcmVkIGV2ZW50IOKAlFxuICAvLyBhbnlvbmUgaG9sZGluZyBhIFVSTCBjb3VsZCBvdGhlcndpc2Ugd3JpdGUgdW5ib3VuZGVkIHJvd3MgaW50byB0aGUgb3JnJ3MgYXVkaXRcbiAgLy8gdHJhaWwsIHdoaWNoIHR1cm5zIGEgcmVhZCBpbnRvIGEgd2F5IHRvIGJ1cnkgdGhlIGVudHJpZXMgdGhhdCBtYXR0ZXIuXG4gICdyZXBvcnRpbmcucmVwb3J0LmRlZmluaXRpb24uY3JlYXRlJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQuZGVmaW5pdGlvbi51cGRhdGUnLFxuICAncmVwb3J0aW5nLnJlcG9ydC5kZWZpbml0aW9uLmRlbGV0ZScsXG4gICdyZXBvcnRpbmcucmVwb3J0Lm93bmVyc2hpcC50cmFuc2ZlcicsXG4gICdyZXBvcnRpbmcucmVwb3J0LnB1Ymxpc2hlZCcsXG4gICdyZXBvcnRpbmcucmVwb3J0LnJlcHVibGlzaGVkJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQubGluay5jcmVhdGVkJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQubGluay5yZXZva2VkJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQucmVjaXBpZW50LmFkZGVkJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQucmVjaXBpZW50LnJlbW92ZWQnLFxuICAncmVwb3J0aW5nLnJlcG9ydC5wb2xpY3kudXBkYXRlJyxcbiAgLy8gQSBkZWZpbml0aW9uIFNUT1BQRUQgcHJvZHVjaW5nIHJlcG9ydHMgd2l0aG91dCBhbnlvbmUgYXNraW5nIGl0IHRvOiB0aGUgb3duZXJcbiAgLy8gd2FzIGRlYWN0aXZhdGVkIG9yIHJlbW92ZWQsIG9yIGxvc3QgdGhlIHBlcm1pc3Npb24gYSBydW4gaXMgYXV0aG9yaXplZCB3aXRoLlxuICAvLyBSZWNvcmRlZCBiZWNhdXNlIHRoZSBlZmZlY3QgaXMgc2lsZW50IOKAlCBhIG1hbmFnZXIgZmluZHMgb3V0IGJ5IG5vdCByZWNlaXZpbmdcbiAgLy8gdGhlIHJlcG9ydCDigJQgc28gdGhlIHRyYWlsIGhhcyB0byBzYXkgd2hpY2ggcmVwb3J0cyBzdG9wcGVkIGFuZCB3aHkuXG4gICdyZXBvcnRpbmcucmVwb3J0LnBhdXNlZCcsXG4gIC8vIOKApmFuZCBzdGFydGVkIGFnYWluLiBJdHMgb3duIGFjdGlvbiByYXRoZXIgdGhhbiBhIGRldGFpbCBvbiB0aGUgcGF1c2UsIGJlY2F1c2UgdGhlXG4gIC8vIHF1ZXN0aW9uIGEgcmV2aWV3ZXIgYXNrcyBpcyBcIndhcyB0aGlzIGFjY291bnQncyByZXBvcnRpbmcgb2ZmIGJldHdlZW4gdGhlc2UgdHdvXG4gIC8vIGRhdGVzXCIsIGFuZCBhbnN3ZXJpbmcgaXQgZnJvbSBhIHNpbmdsZSBhY3Rpb24ncyBkZXRhaWxzIG1lYW5zIHJlYWRpbmcgZXZlcnkgcm93LlxuICAncmVwb3J0aW5nLnJlcG9ydC5yZXN1bWVkJyxcbiAgLy8gVGhlIGRyYWZ0aW5nIGhhbGYgb2YgYSBydW46IGEgY29tcG9zZS9yZWdlbmVyYXRlIGZyZWV6ZXMgdGhlIG9yZydzIG51bWJlcnNcbiAgLy8gaW50byBhIHJ1biwgdGhlIGxlYWQncyBub3RlcyBhcmUgZWRpdGVkIG9udG8gaXQgKG1ldGFkYXRhIG9ubHkg4oCUIGxlbmd0aCxcbiAgLy8gbmV2ZXIgdGhlIHByb3NlKSwgYW5kIGFuIEFJIHN1bW1hcnkgaXMgZHJhZnRlZCBmcm9tIGl0ICh0aGUgbnVtYmVycyB3ZW50IHRvXG4gIC8vIGEgcHJvdmlkZXI7IGBvdXRjb21lYCBjYXJyaWVzIGEgcmVmdXNhbCkuIEEgcmVzZW5kIHJlLW1pbnRzIGEgcmVjaXBpZW50J3NcbiAgLy8gY29uZmlybWF0aW9uIGNyZWRlbnRpYWwuIGB2ZXJpZmllZGAgLyBgdW5zdWJzY3JpYmVkYCBhcmUgdGhlIFVOQVVUSEVOVElDQVRFRFxuICAvLyByZWNpcGllbnQncyBvd24gYWN0cyAoYWN0b3IgYGFub255bW91c2AsIGEgaGFzaGVkIGFkZHJlc3Mgb25seSk6IGJvdW5kZWQgYnlcbiAgLy8gY29uc3RydWN0aW9uIOKAlCB0aGUgdmVyaWZ5IHRva2VuIGlzIHNpbmdsZS11c2UsIGFuZCBvbmx5IHRoZSBjbGljayB0aGF0XG4gIC8vIGFjdHVhbGx5IHN0b3BzIGRlbGl2ZXJ5IHdyaXRlcyBhbiB1bnN1YnNjcmliZSByb3cuXG4gICdyZXBvcnRpbmcucmVwb3J0LnJ1bi5jb21wb3NlJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQucnVuLm5vdGVzJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQucnVuLnN1bW1hcnknLFxuICAncmVwb3J0aW5nLnJlcG9ydC5yZWNpcGllbnQucmVzZW5kJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQucmVjaXBpZW50LnZlcmlmaWVkJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQucmVjaXBpZW50LnVuc3Vic2NyaWJlZCcsXG4gIC8vIE1BQ0hJTkUgaW5nZXN0IChgcmVwb3J0aW5nOmluZ2VzdGAgc2NvcGUpLiBPbmUgYGJhdGNoYCByb3cgcGVyIFBPU1QgdG8gdGhlXG4gIC8vIGV2ZW50IC8gaW5jaWRlbnQgLyBpbmdlc3QtaGVhbHRoIHJvdXRlcyDigJQgY291bnRzIHBsdXMgY2FwcGVkIHBpcGVsaW5lLFxuICAvLyBleGVjdXRpb24sIEV2ZW50QnJpZGdlLWV2ZW50IGFuZCBpbmNpZGVudCBpZCBsaXN0cywgYXR0cmlidXRlZCB0byB0aGVcbiAgLy8gY3JlZGVudGlhbCdzIHByaW5jaXBhbCDigJQgc28gYSBmb3JnZWQgb3IgbWlzcm91dGVkIHdyaXRlIG5hbWVzIHRoZSBrZXkgYmVoaW5kXG4gIC8vIGl0LiBgcmVqZWN0ZWRgIGlzIHRoZSB0ZW5hbmN5IHJlZnVzYWwgaW5zaWRlIGEgYmF0Y2ggKGV2ZW50cyBuYW1pbmcgYW5vdGhlclxuICAvLyBvcmcncyBwaXBlbGluZXMpOiBhIEZBSUxVUkUgcm93IHdpdGggdGhlIG9mZmVuZGluZyBwaXBlbGluZSBpZHMsIG5ldmVyIHRoZVxuICAvLyBvcmcgdGhleSBiZWxvbmcgdG8uIGBpbmNpZGVudC5yZWNvcmRgIGlzIG9uZSBpbmNpZGVudCB0aGF0IGlzIG5ldyBvciBhY3R1YWxseVxuICAvLyBjaGFuZ2VkIChiZWZvcmUvYWZ0ZXIpOyBsaWtlIGBkZXBsb3ltZW50Lm91dGNvbWVgIGl0IG1vdmVzIENGUi9NVFRSLiBBblxuICAvLyB1bmNoYW5nZWQgcmVwZWF0LWludGVydmFsIHJlLXBvc3Qgd3JpdGVzIG5vbmUuXG4gICdyZXBvcnRpbmcuaW5nZXN0LmJhdGNoJyxcbiAgJ3JlcG9ydGluZy5pbmdlc3QucmVqZWN0ZWQnLFxuICAncmVwb3J0aW5nLmluY2lkZW50LnJlY29yZCcsXG4gIC8vIERlbmllZCBhdXRob3JpemF0aW9uIGF0dGVtcHQg4oCUIGVtaXR0ZWQgYmVzdC1lZmZvcnQgYnkgdGhlIHNoYXJlZFxuICAvLyBgcmVxdWlyZVBlcm1pc3Npb25gIC8gYHJlcXVpcmVTeXN0ZW1BZG1pbmAgZ2F0ZSB3aGVuIGEgc3RhdGUtY2hhbmdpbmdcbiAgLy8gKG5vbi1HRVQpIHJlcXVlc3QgaXMgcmVqZWN0ZWQsIHNvIHByb2JpbmcvZXNjYWxhdGlvbiBhdHRlbXB0cyBhcmUgdmlzaWJsZVxuICAvLyByYXRoZXIgdGhhbiBpbnZpc2libGUuIGBkZXRhaWxzYCBjYXJyaWVzIHRoZSByZXF1aXJlZCBwZXJtaXNzaW9uICsgcGF0aDtcbiAgLy8gYG91dGNvbWVgIGlzICdmYWlsdXJlJy5cbiAgJ2F1dGh6LmRlbmllZCcsXG4gIC8vIFwiQXNrXCIgYXNzaXN0YW50IGFjdGl2aXR5IOKAlCB2aXNpYmlsaXR5IGludG8gd2hhdCB0aGUgYXNzaXN0YW50IGRpZCBvbiBhIHVzZXInc1xuICAvLyBiZWhhbGYuIGBhc2sucXVlcnlgIGlzIGEgcmVhZC1vbmx5IGhvdy10byB0dXJuOyBgYXNrLmFnZW50LnR1cm5gIGlzIGEgdG9vbC1jYWxsaW5nXG4gIC8vIHR1cm4uIGBkZXRhaWxzYCBjYXJyeSBTQUZFIE1FVEFEQVRBIE9OTFkgKHRvb2xzIHVzZWQsIHByb3Bvc2FsIGtpbmRzLCBxdWVyeVxuICAvLyBsZW5ndGgsIG91dGNvbWUpLCBuZXZlciB0aGUgcmF3IHF1ZXJ5IHRleHQuXG4gICdhc2sucXVlcnknLFxuICAnYXNrLmFnZW50LnR1cm4nLFxuICAvLyBBIHJlYWRlciByYXRpbmcgYW4gYW5zd2VyLCBvciBhIGhlbHAgc2VhcmNoIHRoYXQgZm91bmQgbm90aGluZy4gVGhlIE9OTFlcbiAgLy8gc2lnbmFsIGZvciB3aGljaCBkb2NzIHRoZSBhc3Npc3RhbnQgYW5zd2VycyBiYWRseSBmcm9tIOKAlCB0aGUgdHVybiBpdHNlbGZcbiAgLy8gY2Fubm90IHRlbGwgYSBnb29kIGFuc3dlciBmcm9tIGEgY29uZmlkZW50IHdyb25nIG9uZS4gYGRldGFpbHNgIGNhcnJ5IHRoZVxuICAvLyByYXRpbmcgYW5kIHRoZSBET0MgSURTIGNpdGVkIChgYXV0aGVudGljYXRpb24ubWRgKSwgbmV2ZXIgdGhlIHF1ZXN0aW9uOiB0aGVcbiAgLy8gZG9jIGlzIHdoYXQgZ2V0cyBmaXhlZCwgYW5kIGl0IGlzIG5vdCB1c2VyLWVudGVyZWQgdGV4dC5cbiAgJ2Fzay5mZWVkYmFjaycsXG4gIC8vIE9uZSBBSSBnZW5lcmF0aW9uIG9mIGEgcGlwZWxpbmUgLyBwbHVnaW4gZHJhZnQgKGAvcGlwZWxpbmVzL2dlbmVyYXRlKmAsXG4gIC8vIGAvcGx1Z2lucy9nZW5lcmF0ZSpgKSwgc3VjY2VzcyBvciBmYWlsdXJlIChpbmNsLiBjbGllbnQgYWJvcnQpLiBgZGV0YWlsc2AgY2FycnlcbiAgLy8gU0FGRSBNRVRBREFUQSBPTkxZOiB0aGUgcm91dGUsIHRoZSBwcm9tcHQgTEVOR1RILCB0aGUgc2hhcmVkIEFJIHVzYWdlIGJsb2NrXG4gIC8vIChgYWlgOiB0aGUgcHJvdmlkZXIgYW5kIG1vZGVsIHRoYXQgQU5TV0VSRUQgYWZ0ZXIgYW55IGZhaWxvdmVyLCBgZmFsbGJhY2tGcm9tYCxcbiAgLy8gd2hvc2Uga2V5IHBhaWQg4oCUIGBrZXlTb3VyY2VgIHJlcXVlc3Qvb3JnL3BsYXRmb3JtIOKAlCB0b2tlbnMgaW4vb3V0L2NhY2hlZCwgdGhlXG4gIC8vIHByb21wdCB2ZXJzaW9uLCBob3cgdGhlIGBhaUNhbGxzYCBzbG90IHNldHRsZWQpIGFuZCB0aGUgcmVzZXJ2YXRpb24nc1xuICAvLyBgcXVvdGFgIHZpZXcg4oCUIG5ldmVyIHRoZSBwcm9tcHQsIHRoZSBnZW5lcmF0ZWQgb3V0cHV0LCBvciBhIGtleS5cbiAgJ3BpcGVsaW5lLmFpLmdlbmVyYXRlJyxcbiAgJ3BsdWdpbi5haS5nZW5lcmF0ZScsXG4gIC8vIFBsdWdpbiBlY29zeXN0ZW0gKGRvY3MvcnVuYm9va3MvZWNvc3lzdGVtLW1vZGVyYXRpb24ubWQpLiBHb3Zlcm5hbmNlIGFjdGlvbnNcbiAgLy8gYXJlIHJlY29yZGVkIHdpdGggYG9yZ0lkYCA9IHRoZSBzeXN0ZW0gb3JnOyBgYWZmZWN0ZWRPcmdJZGAgaXMgdGhlXG4gIC8vIHB1Ymxpc2hlcidzIG9yZyAobGlzdGluZy92ZXJzaW9uL3Jldmlldy9hZHZpc29yeS9wdWJsaXNoZXIgbW9kZXJhdGlvbikgb3JcbiAgLy8gdGhlIGluc3RhbGxpbmcgb3JnIChpbnN0YWxscyArIHBvbGljeSkuIEFub255bW91cyBzdWJtaXNzaW9ucyB1c2UgdGhlXG4gIC8vIGBBTk9OWU1PVVNfQUNUT1JfSURgIGFjdG9yIHdpdGggYGRldGFpbHMuc3VibWlzc2lvbklkYC4gYGRldGFpbHNgIGNhcnJ5IGlkcyxcbiAgLy8gdmVyc2lvbnMsIGRpZ2VzdHMsIHRpZXIsIHN0YXRlIGFuZCByZWFzb24gY29kZXMgb25seSDigJQgbmV2ZXIgcmV2aWV3IGJvZGllcyxcbiAgLy8gUkVBRE1FIGNvbnRlbnQsIHNlY3JldHMgb3IgZW1haWxzLlxuICAvLyBQdWJsaXNoZXJzLlxuICAncHVibGlzaGVyLmNyZWF0ZScsXG4gICdwdWJsaXNoZXIudXBkYXRlJyxcbiAgJ3B1Ymxpc2hlci50ZXJtcy5hY2NlcHQnLFxuICAncHVibGlzaGVyLnZlcmlmeS5yZXF1ZXN0JyxcbiAgJ3B1Ymxpc2hlci52ZXJpZnkuYXBwcm92ZScsXG4gICdwdWJsaXNoZXIudmVyaWZ5LnJlamVjdCcsXG4gICdwdWJsaXNoZXIudGllci5jaGFuZ2UnLFxuICAncHVibGlzaGVyLnN1c3BlbmQnLFxuICAncHVibGlzaGVyLnVuc3VzcGVuZCcsXG4gICdwdWJsaXNoZXIudHJhbnNmZXIucmVxdWVzdCcsXG4gICdwdWJsaXNoZXIudHJhbnNmZXIuYWNjZXB0JyxcbiAgJ3B1Ymxpc2hlci50cmFuc2Zlci5kZWNsaW5lJyxcbiAgJ3B1Ymxpc2hlci50cmFuc2Zlci5hcHByb3ZlJyxcbiAgJ3B1Ymxpc2hlci50cmFuc2Zlci5yZWplY3QnLFxuICAncHVibGlzaGVyLnByb2ZpbGUtY2hhbmdlLmFwcHJvdmUnLFxuICAncHVibGlzaGVyLnByb2ZpbGUtY2hhbmdlLnJlamVjdCcsXG4gIC8vIFB1Ymxpc2ggcmVxdWVzdHMgKHRlbmFudCDihpIgc3lzdGVtIG9yZykuIGBkZXRhaWxzLmtpbmRgIG5hbWVzIHRoZSByZXF1ZXN0LlxuICAncGx1Z2luLnJlcXVlc3Quc3VibWl0JyxcbiAgJ3BsdWdpbi5yZXF1ZXN0LndpdGhkcmF3JyxcbiAgJ3BsdWdpbi5yZXF1ZXN0LmFwcHJvdmUnLFxuICAncGx1Z2luLnJlcXVlc3Quc2Vjb25kLWFwcHJvdmUnLFxuICAncGx1Z2luLnJlcXVlc3QucmVqZWN0JyxcbiAgJ3BsdWdpbi5yZXF1ZXN0LmF1dG8tYXBwcm92ZScsXG4gIC8vIExpc3RpbmdzIGFuZCB2ZXJzaW9ucyAoc3lzdGVtIG9yZywgZXhjZXB0IHRoZSB0ZW5hbnQgcGF1c2UpLlxuICAncGx1Z2luLmxpc3RpbmcucHVibGlzaCcsXG4gIC8vIE5PVEU6IHRoZXJlIGlzIG5vIGBwbHVnaW4ubGlzdGluZy51bmxpc3RgLiBXaXRoZHJhd2FsIGlzIGFscmVhZHkgZXhwcmVzc2VkIGJ5XG4gIC8vIGBwbHVnaW4ubGlzdGluZy5zdGF0ZS5jaGFuZ2VgIChgdW5tYWludGFpbmVkYCAvIGBzdXNwZW5kZWRgIC8gYGxpc3RlZGApLFxuICAvLyB3aGljaCBpcyB0aGUgYWN0aW9uIHRoZSBjb2RlIGFjdHVhbGx5IGVtaXRzLCBzbyBgdW5saXN0YCB3YXMgYSBzZWNvbmQgbmFtZVxuICAvLyBmb3IgYSB0aGluZyB0aGF0IGhhcyBvbmUg4oCUIGFuZCBhIG5ldmVyLWVtaXR0ZWQgb25lIGF0IHRoYXQuXG4gICdwbHVnaW4ubGlzdGluZy51cGRhdGUnLFxuICAncGx1Z2luLmxpc3Rpbmcuc3RhdGUuY2hhbmdlJyxcbiAgJ3BsdWdpbi5saXN0aW5nLnBhdXNlJyxcbiAgJ3BsdWdpbi5saXN0aW5nLnVucGF1c2UnLFxuICAncGx1Z2luLnZlcnNpb24ucGF1c2UnLFxuICAncGx1Z2luLnZlcnNpb24ueWFuaycsXG4gICdwbHVnaW4udmVyc2lvbi51bnlhbmsnLFxuICAncGx1Z2luLnZlcnNpb24uZGVwcmVjYXRlJyxcbiAgLy8gUmV0aXJpbmcgYSB2ZXJzaW9uJ3MgcmVnaXN0cnkgaW1hZ2UgdG8gcmVjbGFpbSBgc3RvcmFnZUJ5dGVzYC4gRGlzdGluY3RcbiAgLy8gZnJvbSB0aGUgZm91ciBhYm92ZSwgd2hpY2ggY2hhbmdlIHdoZXRoZXIgYSB2ZXJzaW9uIFJFU09MVkVTIGFuZCBkZWxldGVcbiAgLy8gbm90aGluZywgYW5kIGZyb20gYHJlZ2lzdHJ5LmltYWdlLmRlbGV0ZWAvYHJlZ2lzdHJ5LnRhZy5kZWxldGVgLCB3aGljaCBhcmVcbiAgLy8gdGhlIHJlZ2lzdHJ5J3Mgb3duIG9wZXJhdG9yLXNpZGUgdHJhaWwuIFRoaXMgaXMgYSB0ZW5hbnQgZnJlZWluZyBzcGFjZSwgYW5kXG4gIC8vIHRoZSBvbmx5IGF1ZGl0ZWQgYWN0aW9uIHRoYXQgY2FuIHJlZHVjZSBhbiBvcmcncyBzdG9yYWdlIGZpZ3VyZSDigJQgc28gaXRzXG4gIC8vIHJvdyBjYXJyaWVzIHRoZSBieXRlcyBpdCBmcmVlZCwgd2hpY2ggY2Fubm90IGJlIHJlY292ZXJlZCBhZnRlcndhcmRzLlxuICAncGx1Z2luLnZlcnNpb24ucHJ1bmUnLFxuICAvLyBOT1RFOiBubyBgcGx1Z2luLmNvbGxlY3Rpb24udXBkYXRlYC4gYGVjb3N5c3RlbV9jb2xsZWN0aW9uc2Agd2FzIGRlbGV0ZWQgKHNlZVxuICAvLyB0aGUgdG9tYnN0b25lIGluIGBzY2hlbWEvZWNvc3lzdGVtLnRzYCkgYmVjYXVzZSBub3RoaW5nIGV2ZXIgd3JvdGUgb3IgcmVhZFxuICAvLyBvbmU7IHRoaXMgZGVjbGFyYXRpb24gb3V0bGl2ZWQgdGhlIHRhYmxlIGl0IGF1ZGl0ZWQuXG4gIC8vIEVjb3N5c3RlbSBjb25maWd1cmF0aW9uIChzeXN0ZW0gb3JnKS5cbiAgJ2Vjb3N5c3RlbS5hdXRvLWFwcHJvdmFsLXJ1bGUuY3JlYXRlJyxcbiAgJ2Vjb3N5c3RlbS5hdXRvLWFwcHJvdmFsLXJ1bGUudXBkYXRlJyxcbiAgJ2Vjb3N5c3RlbS5hdXRvLWFwcHJvdmFsLXJ1bGUuZGVsZXRlJyxcbiAgJ2Vjb3N5c3RlbS5yZXNlcnZlZC1uYW1lLnVwZGF0ZScsXG4gIC8vIFRoZSBvbmUtdGltZSBCT09UU1RSQVAgZXhjZXB0aW9uIChhdXRvLWFwcHJvdmFsIG9mIHRoZSBpbml0aWFsIE9mZmljaWFsXG4gIC8vIGNhdGFsb2cpIG9wZW5pbmcgb24gdGhlIGZpcnN0IE9mZmljaWFsIHJlcXVlc3QsIGFuZCBjbG9zaW5nIGZvciBnb29kXG4gIC8vIChgZGV0YWlscy5yZWFzb25gOiB3aW5kb3dfZWxhcHNlZCAvIGxpc3RpbmdzX2V4aXN0IC8gYSBtYW5hZ2VyIGRlY2lzaW9uO1xuICAvLyBgZGV0YWlscy5hcHByb3ZlZGA6IGhvdyBtYW55IHJlcXVlc3RzIHJvZGUgaXQpLlxuICAnZWNvc3lzdGVtLmJvb3RzdHJhcC5vcGVuJyxcbiAgJ2Vjb3N5c3RlbS5ib290c3RyYXAuY2xvc2UnLFxuICAvLyBOT1RFOiBubyBgZWNvc3lzdGVtLnNsYS51cGRhdGVgLiBUaGUgbGFuZSBTTEFzIGFyZSBIQVJEQ09ERUQgKHN0YW5kYXJkIDQ4aCxcbiAgLy8gc2VjdXJpdHktZml4IDRoIGluIGBzZXJ2aWNlcy9lY29zeXN0ZW0vc2xhLnRzYCkgd2l0aCBubyBzZXR0aW5ncyBzdXJmYWNlLCBzb1xuICAvLyB0aGVyZSBpcyBubyBtdXRhdGlvbiB0byBhdWRpdC4gTWFraW5nIHRoZW0gb3BlcmF0b3ItdHVuYWJsZSBpcyB0aGUgY2hhbmdlXG4gIC8vIHRoYXQgc2hvdWxkIHJlLWFkZCB0aGlzLlxuICAvLyBQdWJsaWMgcmVnaXN0cnkgbmFtZXNwYWNlIChgcHVibGljLypgKTogY29weSArIHNpZ24gKyBhdHRlc3Qgb24gcHVibGlzaCxcbiAgLy8gdGhlIHRpZXItY2hhbmdlL3N1c3BlbnNpb24gcmUtc2lnbiBqb2IsIHRhZyByZW1vdmFsIG9uIHlhbmsvdGFrZWRvd24sIGFuZFxuICAvLyB0aGUgcmV0ZW50aW9uIHN3ZWVwLlxuICAncmVnaXN0cnkuaW1hZ2UucHVibGlzaCcsXG4gICdyZWdpc3RyeS5pbWFnZS5yZXNpZ24nLFxuICAncmVnaXN0cnkuaW1hZ2UueWFuaycsXG4gICdyZWdpc3RyeS5pbWFnZS5nYycsXG4gIC8vIEluc3RhbGxzIGFuZCB0aGUgaW5zdGFsbGluZyBvcmcncyBjb25zdW1wdGlvbiBwb2xpY3kgKG9yZy1sb2NhbCkuXG4gICdwbHVnaW4uaW5zdGFsbC5yZXF1ZXN0JyxcbiAgJ3BsdWdpbi5pbnN0YWxsLmFwcHJvdmUnLFxuICAncGx1Z2luLmluc3RhbGwuZGVueScsXG4gICdwbHVnaW4uaW5zdGFsbC5jcmVhdGUnLFxuICAncGx1Z2luLmluc3RhbGwudXBncmFkZScsXG4gIC8vIEEgbWVtYmVyJ3MgcmVxdWVzdCB0byBjaGFuZ2UgYW4gaW5zdGFsbCBwYXN0IHdoYXQgdGhleSBtYXkgZG8gYWxvbmUsIGFuZCBpdHMgZGVjaXNpb24uXG4gICdwbHVnaW4uaW5zdGFsbC5jaGFuZ2UtcmVxdWVzdCcsXG4gICdwbHVnaW4uaW5zdGFsbC5jaGFuZ2UtYXBwcm92ZScsXG4gICdwbHVnaW4uaW5zdGFsbC5jaGFuZ2UtcmVqZWN0JyxcbiAgJ3BsdWdpbi5pbnN0YWxsLnJlbW92ZScsXG4gICdvcmcucGx1Z2luLWluc3RhbGwtcG9saWN5LnVwZGF0ZScsXG4gIC8vIEFuIHVwbG9hZCBSRUZVU0VEIGJlY2F1c2UgaXRzIG5hbWUgd291bGQgb3ZlcnJpZGUgc29tZXRoaW5nIHRoZSBvcmcgYWxyZWFkeVxuICAvLyByZXNvbHZlcyDigJQgYSBsaXN0aW5nLCBvciBhIHRlYW0ncyBwYXJlbnQtb3JnIHBsdWdpbiDigJQgYW5kIHRoZSBjb25zdW1wdGlvblxuICAvLyBwb2xpY3kgc2F5cyBgc2hhZG93aW5nOiBkZW55YC4gQXVkaXRlZCBiZWNhdXNlIGEgcmVmdXNhbCBvdGhlcndpc2UgcmV0dXJuc1xuICAvLyBhbiBlcnJvciB0byB0aGUgY2FsbGVyIGFuZCBsZWF2ZXMgbm90aGluZyBiZWhpbmQ6IGFuIGF0dGVtcHQgdG8gZGVmaW5lXG4gIC8vIGB0cml2eWAgb3ZlciB0aGUgT2ZmaWNpYWwgc2Nhbm5lciBpcyBleGFjdGx5IHRoZSB0aGluZyBzb21lb25lIHNob3VsZCBiZVxuICAvLyBhYmxlIHRvIGZpbmQgYWZ0ZXJ3YXJkcy4gYGRldGFpbHNgIGNhcnJ5IHRoZSBuYW1lIGFuZCB3aGF0IGl0IHdvdWxkIGhhdmVcbiAgLy8gb3ZlcnJpZGRlbi5cbiAgJ3BsdWdpbi5zaGFkb3dpbmcuZGVuaWVkJyxcbiAgLy8gUmV2aWV3cyBhbmQgcmVwbGllcy5cbiAgJ3BsdWdpbi5yZXZpZXcuY3JlYXRlJyxcbiAgJ3BsdWdpbi5yZXZpZXcudXBkYXRlJyxcbiAgJ3BsdWdpbi5yZXZpZXcuZGVsZXRlJyxcbiAgJ3BsdWdpbi5yZXZpZXcucmVwb3J0JyxcbiAgJ3BsdWdpbi5yZXZpZXcuaG9sZCcsXG4gICdwbHVnaW4ucmV2aWV3LnJlbGVhc2UnLFxuICAncGx1Z2luLnJldmlldy5yZW1vdmUnLFxuICAncGx1Z2luLnJldmlldy5hbm9ueW1pemUnLFxuICAncGx1Z2luLnJldmlldy5yZXBseS5jcmVhdGUnLFxuICAncGx1Z2luLnJldmlldy5yZXBseS51cGRhdGUnLFxuICAncGx1Z2luLnJldmlldy5yZXBseS5kZWxldGUnLFxuICAvLyBBbm9ueW1vdXMgc3VibWlzc2lvbnMuXG4gICdwbHVnaW4uc3VibWlzc2lvbi5jcmVhdGUnLFxuICAncGx1Z2luLnN1Ym1pc3Npb24udmVyaWZ5JyxcbiAgJ3BsdWdpbi5zdWJtaXNzaW9uLmdhdGUtZmFpbCcsXG4gICdwbHVnaW4uc3VibWlzc2lvbi5hcHByb3ZlJyxcbiAgJ3BsdWdpbi5zdWJtaXNzaW9uLnJlamVjdCcsXG4gICdwbHVnaW4uc3VibWlzc2lvbi5jbGFpbScsXG4gICdwbHVnaW4uc3VibWlzc2lvbi5leHBpcmUnLFxuICAvLyBTZWN1cml0eSBhZHZpc29yaWVzIChwdWJsaXNoL3dpdGhkcmF3IGFyZSBzeXN0ZW0tb3JnIG9ubHk7IHVwZGF0ZSA9IGFcbiAgLy8gbW9kZXJhdG9yIGVkaXRpbmcgYSBkcmFmdCBiZWZvcmUgaXQgaXMgcHVibGlzaGVkKS5cbiAgJ3BsdWdpbi5hZHZpc29yeS5jcmVhdGUnLFxuICAncGx1Z2luLmFkdmlzb3J5LnVwZGF0ZScsXG4gICdwbHVnaW4uYWR2aXNvcnkucHVibGlzaCcsXG4gICdwbHVnaW4uYWR2aXNvcnkud2l0aGRyYXcnLFxuICAvLyBQZXItb3JnIHBsdWdpbiBzZWN1cml0eSBub3RpZmljYXRpb25zIChwbHVnaW4gc2NhbiBnYXRlcyk6IHRoZSBzZXR0aW5nc1xuICAvLyAocmVjaXBpZW50cywgZGlnZXN0LCB3ZWJob29rLCBleHRlcm5hbCBhZGRyZXNzIOKAlCBjaGFuZ2VkIGZpZWxkIG5hbWVzIGFuZFxuICAvLyB0aGUgd2ViaG9vayBob3N0IG9ubHksIG5ldmVyIHRoZSBzZWNyZXQgb3IgdGhlIGFkZHJlc3MpLCBhbiBleHRlcm5hbFxuICAvLyBhZGRyZXNzIGNvbmZpcm1lZCB0aHJvdWdoIGl0cyBlbWFpbGVkIHNpbmdsZS11c2UgbGluaywgYW5kIGEgdGVzdCBzZW5kLlxuICAncGx1Z2luLnNlY3VyaXR5X25vdGlmaWNhdGlvbnMudXBkYXRlJyxcbiAgJ3BsdWdpbi5zZWN1cml0eV9ub3RpZmljYXRpb25zLmV4dGVybmFsX2VtYWlsLnZlcmlmeScsXG4gICdwbHVnaW4uc2VjdXJpdHlfbm90aWZpY2F0aW9ucy50ZXN0JyxcbiAgLy8gQSBnYXRlLXJlZnVzZWQgaW1hZ2UgS0VQVCBmcm9tIHRoZSBzZXR1cCBjYXRhbG9nIGxvYWQsIHByb21vdGVkIHRvIGFcbiAgLy8gdmVyc2lvbiB3aXRob3V0IGEgcmVidWlsZCAoc3lzdGVtIG9yZywgYWZ0ZXIgYSBmaXggdXBzdHJlYW0gb3IgYW5cbiAgLy8gYWR2aXNvcnktaWQgd2FpdmVyKSDigJQgb3IgcmVmdXNlZCBhZ2FpbiBiZWNhdXNlIHRoZSBDVVJSRU5UIGdhdGVzIHN0aWxsXG4gIC8vIGZhaWwgaXQuIGBkZXRhaWxzYCBjYXJyeSBuYW1lL3ZlcnNpb24vZGlnZXN0IGFuZCB0aGUgZmluZGluZ3MuXG4gICdwbHVnaW4uc2V0dXBfaW1hZ2UucHJvbW90ZWQnLFxuICAncGx1Z2luLnNldHVwX2ltYWdlLnByb21vdGVfcmVmdXNlZCcsXG4gIC8vIEEgZ2F0ZS1yZWZ1c2VkIHNldHVwLWxvYWQgaW1hZ2UgS0VQVCAoc2lnbmVkLCBpbiB0aGUgcmVnaXN0cnkpIGZvciBsYXRlclxuICAvLyBwcm9tb3Rpb24gKGBkZXRhaWxzYDogZGlnZXN0LCByZWZ1c2FsIGNvZGUsIGV4cGlyZXNBdCkg4oCUIGFuZCBpdHMgcm93XG4gIC8vIGRyb3BwZWQgYnkgdGhlIHN3ZWVwIChgZGV0YWlscy5yZWFzb25gOiBleHBpcmVkIC8gc3VwZXJzZWRlZCkuXG4gICdwbHVnaW4uc2V0dXBfaW1hZ2Uua2VwdCcsXG4gICdwbHVnaW4uc2V0dXBfaW1hZ2UuZGlzY2FyZGVkJyxcbiAgLy8gQSBQSVBFTElORSdzIHRyaWFnZSBvZiBpdHMgZXhwb3N1cmUgdG8gYSB2dWxuZXJhYmxlIHBsdWdpbiB2ZXJzaW9uOiBhXG4gIC8vIHRpbWUtYm94ZWQgcmlzayBhY2NlcHRhbmNlIChyZWFzb24gKyBleHBpcnksIHRoZSBhY2NlcHRlZCBmaW5kaW5nIGtleXMgYW5kXG4gIC8vIHdoZXRoZXIgS0VWIGZpbmRpbmdzIHdlcmUgYWNjZXB0ZWQpLCBhIGZhbHNlLXBvc2l0aXZlIGRpc21pc3NhbCwgb3IgYVxuICAvLyByZW9wZW4uIEFuIGFjdGl2ZSBhY2NlcHRhbmNlIGV4ZW1wdHMgdGhhdCBwaXBlbGluZSdzIGxvb2t1cHMgYW5kIHJ1bnRpbWVcbiAgLy8gY2hlY2tzIGZyb20gdGhlIGZsYWcgLyBLRVYgLyBIaWdoLWZsb29yIHJlZnVzYWxzIGZvciB0aG9zZSBmaW5kaW5ncyBvbmx5LlxuICAncGlwZWxpbmUudnVsbi5hY2NlcHRlZCcsXG4gICdwaXBlbGluZS52dWxuLmZhbHNlX3Bvc2l0aXZlJyxcbiAgJ3BpcGVsaW5lLnZ1bG4ucmVvcGVuZWQnLFxuICAvLyBBIHBpcGVsaW5lJ3MgcnVudGltZSBjaGVjayBncmFkZWQgb25lIG9mIGl0cyBydW5uaW5nIGltYWdlcyBgZXJyb3JgIG9yXG4gIC8vIGxvdWRlciAoYGRldGFpbHNgOiBzdGVwS2V5LCBkaWdlc3QsIHJlYXNvbiBjb2RlcywgZXhlY3V0aW9uSWQgd2hlbiBzZW50KS5cbiAgJ3BpcGVsaW5lLnJ1bnRpbWVfY2hlY2suZmxhZ2dlZCcsXG4gIC8vIEEgcGlwZWxpbmUncyBwbHVnaW4gc3RlcHMgbW92ZWQgdG8gbmV3ZXIgdmVyc2lvbnMgdGhyb3VnaCB0aGUgdXBncmFkZVxuICAvLyBmbG93IChwcmV2aWV3IOKGkiBhcHBseTsgYGRldGFpbHNgIGNhcnJ5IHRoZSBzdGVwcywgZnJvbSDihpIgdG8gdmVyc2lvbnMpLCBhbmQgYVxuICAvLyBwaXBlbGluZS1ydW4gc2VjdXJpdHkgc2Nhbm5lciByZXBvcnQgdXBsb2FkZWQgZm9yIGEgcGlwZWxpbmUgKGBkZXRhaWxzYDpcbiAgLy8gdG9vbCwgZm9ybWF0LCBzdGFnZSwgdGhlIGZpbmRpbmcgY291bnRzIOKAlCBuZXZlciB0aGUgZmluZGluZ3MgdGhlbXNlbHZlcykuXG4gICdwaXBlbGluZS5wbHVnaW4udXBncmFkZWQnLFxuICAncGlwZWxpbmUuc2VjdXJpdHlfcmVwb3J0LnVwbG9hZCcsXG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBSZW1vdGVBdWRpdEFjdGlvbiA9IHR5cGVvZiBSRU1PVEVfQVVESVRfQUNUSU9OU1tudW1iZXJdO1xuXG4vKiogV2hldGhlciBgdmFsdWVgIGlzIGFuIGFjdGlvbiBhIHJlbW90ZSBzZXJ2aWNlIG1heSBlbWl0ICh0aGUgaW5nZXN0IGFsbG93LWxpc3QpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUmVtb3RlQXVkaXRBY3Rpb24odmFsdWU6IHN0cmluZyk6IHZhbHVlIGlzIFJlbW90ZUF1ZGl0QWN0aW9uIHtcbiAgcmV0dXJuIChSRU1PVEVfQVVESVRfQUNUSU9OUyBhcyByZWFkb25seSBzdHJpbmdbXSkuaW5jbHVkZXModmFsdWUpO1xufVxuIl19
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export interface UsageProjection {
|
|
2
|
+
/** Units the counter is pacing to reach by `resetAt`. */
|
|
3
|
+
projected: number;
|
|
4
|
+
/** `projected / limit`. Above 1 means the cap is reached before the reset. */
|
|
5
|
+
ratio: number;
|
|
6
|
+
/** Whether the pace exhausts the limit before the period ends. */
|
|
7
|
+
willBreach: boolean;
|
|
8
|
+
/** Fraction of the period already elapsed, 0–1. */
|
|
9
|
+
elapsedFraction: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Project a flow counter to its period end, or `null` when there is nothing to
|
|
13
|
+
* project from.
|
|
14
|
+
*
|
|
15
|
+
* Returns null rather than zero for every unprojectable case — no usage yet, an
|
|
16
|
+
* unlimited or absent limit, a period that has not started, an unparseable
|
|
17
|
+
* reset — because zero is a FORECAST and "cannot say" is not one. A caller that
|
|
18
|
+
* treated the two alike would warn an account at 0% and offer against a
|
|
19
|
+
* trajectory nobody measured.
|
|
20
|
+
*
|
|
21
|
+
* The burn rate is LINEAR, and that is a deliberate floor rather than a model:
|
|
22
|
+
* real workloads spike, but a straight line still catches "pacing three times
|
|
23
|
+
* ahead of plan", which is the case worth acting on. Anything cleverer wants the
|
|
24
|
+
* history the profile store keeps (D16), not a better formula here.
|
|
25
|
+
*/
|
|
26
|
+
export declare function projectUsage(input: {
|
|
27
|
+
used: number;
|
|
28
|
+
limit: number;
|
|
29
|
+
resetAt: string | Date;
|
|
30
|
+
periodDays: number;
|
|
31
|
+
/** Defaults to now; injectable so a caller can project as of a period's end. */
|
|
32
|
+
now?: number;
|
|
33
|
+
}): UsageProjection | null;
|
|
34
|
+
/**
|
|
35
|
+
* The band at which a projection is worth showing a person.
|
|
36
|
+
*
|
|
37
|
+
* Shared so the card's forecast row and the profile's pressure signal agree on
|
|
38
|
+
* what "approaching" means. Below it there is a projection but no reason to say
|
|
39
|
+
* anything, which is a different state from having no projection at all.
|
|
40
|
+
*/
|
|
41
|
+
export declare const PROJECTION_NOTICE_RATIO = 0.7;
|
|
42
|
+
/** Whether a projection has crossed into the band worth surfacing. */
|
|
43
|
+
export declare function projectionWorthShowing(p: UsageProjection | null): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Days until the counter reaches its limit at the current pace, or `null` when
|
|
46
|
+
* it does not reach it inside the period.
|
|
47
|
+
*
|
|
48
|
+
* The TRAJECTORY signal's actual question (D4 Class 2) — "how long have they
|
|
49
|
+
* got" is what decides whether an offer is timely, where the projected total
|
|
50
|
+
* only says whether it is warranted. Fractional days are kept: rounding up to a
|
|
51
|
+
* whole day loses exactly the urgency the signal is for.
|
|
52
|
+
*/
|
|
53
|
+
export declare function daysToExhaustion(input: {
|
|
54
|
+
used: number;
|
|
55
|
+
limit: number;
|
|
56
|
+
resetAt: string | Date;
|
|
57
|
+
periodDays: number;
|
|
58
|
+
now?: number;
|
|
59
|
+
}): number | null;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
/**
|
|
4
|
+
* Where a quota counter is HEADED, from where it is now.
|
|
5
|
+
*
|
|
6
|
+
* Extracted out of `frontend/src/components/quotas/QuotaCard.tsx`, which owned
|
|
7
|
+
* this privately (docs/plans/sales-agent.md, Phase 0 groundwork). Three callers
|
|
8
|
+
* need the same answer and were going to compute it three ways:
|
|
9
|
+
*
|
|
10
|
+
* - the quota card's forecast row, which is where it started;
|
|
11
|
+
* - the threshold notice, which decides whether to warn;
|
|
12
|
+
* - the usage profile's TRAJECTORY signal (D4 Class 2), which is the whole
|
|
13
|
+
* basis for "when will they run out" rather than "are they out".
|
|
14
|
+
*
|
|
15
|
+
* A projection that disagreed between the page and the offer would be the worst
|
|
16
|
+
* possible split: the account reads one number on the card and gets an offer
|
|
17
|
+
* argued from another.
|
|
18
|
+
*
|
|
19
|
+
* DEPENDENCY-FREE, so the browser imports it through the `./usage-projection`
|
|
20
|
+
* subpath rather than keeping the copy it has now.
|
|
21
|
+
*/
|
|
22
|
+
/** Milliseconds in a day, named because the arithmetic below reads better for it. */
|
|
23
|
+
const DAY_MS = 24 * 60 * 60 * 1000;
|
|
24
|
+
/**
|
|
25
|
+
* Project a flow counter to its period end, or `null` when there is nothing to
|
|
26
|
+
* project from.
|
|
27
|
+
*
|
|
28
|
+
* Returns null rather than zero for every unprojectable case — no usage yet, an
|
|
29
|
+
* unlimited or absent limit, a period that has not started, an unparseable
|
|
30
|
+
* reset — because zero is a FORECAST and "cannot say" is not one. A caller that
|
|
31
|
+
* treated the two alike would warn an account at 0% and offer against a
|
|
32
|
+
* trajectory nobody measured.
|
|
33
|
+
*
|
|
34
|
+
* The burn rate is LINEAR, and that is a deliberate floor rather than a model:
|
|
35
|
+
* real workloads spike, but a straight line still catches "pacing three times
|
|
36
|
+
* ahead of plan", which is the case worth acting on. Anything cleverer wants the
|
|
37
|
+
* history the profile store keeps (D16), not a better formula here.
|
|
38
|
+
*/
|
|
39
|
+
export function projectUsage(input) {
|
|
40
|
+
const { used, limit, periodDays } = input;
|
|
41
|
+
const reset = input.resetAt instanceof Date ? input.resetAt : new Date(input.resetAt);
|
|
42
|
+
if (Number.isNaN(reset.getTime()))
|
|
43
|
+
return null;
|
|
44
|
+
// `limit <= 0` covers both an unset cap and the `-1` that means unlimited:
|
|
45
|
+
// neither has a ratio, and there is nothing to breach.
|
|
46
|
+
if (!(limit > 0) || !(used > 0) || !(periodDays > 0))
|
|
47
|
+
return null;
|
|
48
|
+
const now = input.now ?? Date.now();
|
|
49
|
+
const total = periodDays * DAY_MS;
|
|
50
|
+
const periodStart = reset.getTime() - total;
|
|
51
|
+
const elapsed = now - periodStart;
|
|
52
|
+
// Before the period opened, or exactly at its boundary: no elapsed time to
|
|
53
|
+
// divide by, and extrapolating from zero elapsed gives infinity.
|
|
54
|
+
if (elapsed <= 0)
|
|
55
|
+
return null;
|
|
56
|
+
// Past the reset the period is over; the pace IS the usage, with no
|
|
57
|
+
// extrapolation, rather than a figure scaled by a fraction above one.
|
|
58
|
+
const scale = elapsed >= total ? 1 : total / elapsed;
|
|
59
|
+
const projected = Math.round(used * scale);
|
|
60
|
+
return {
|
|
61
|
+
projected,
|
|
62
|
+
ratio: projected / limit,
|
|
63
|
+
willBreach: projected > limit,
|
|
64
|
+
elapsedFraction: Math.min(1, elapsed / total),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* The band at which a projection is worth showing a person.
|
|
69
|
+
*
|
|
70
|
+
* Shared so the card's forecast row and the profile's pressure signal agree on
|
|
71
|
+
* what "approaching" means. Below it there is a projection but no reason to say
|
|
72
|
+
* anything, which is a different state from having no projection at all.
|
|
73
|
+
*/
|
|
74
|
+
export const PROJECTION_NOTICE_RATIO = 0.7;
|
|
75
|
+
/** Whether a projection has crossed into the band worth surfacing. */
|
|
76
|
+
export function projectionWorthShowing(p) {
|
|
77
|
+
return p !== null && p.ratio >= PROJECTION_NOTICE_RATIO;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Days until the counter reaches its limit at the current pace, or `null` when
|
|
81
|
+
* it does not reach it inside the period.
|
|
82
|
+
*
|
|
83
|
+
* The TRAJECTORY signal's actual question (D4 Class 2) — "how long have they
|
|
84
|
+
* got" is what decides whether an offer is timely, where the projected total
|
|
85
|
+
* only says whether it is warranted. Fractional days are kept: rounding up to a
|
|
86
|
+
* whole day loses exactly the urgency the signal is for.
|
|
87
|
+
*/
|
|
88
|
+
export function daysToExhaustion(input) {
|
|
89
|
+
const p = projectUsage(input);
|
|
90
|
+
if (!p || !p.willBreach)
|
|
91
|
+
return null;
|
|
92
|
+
const { used, limit, periodDays } = input;
|
|
93
|
+
const perDay = used / (p.elapsedFraction * periodDays);
|
|
94
|
+
if (!(perDay > 0))
|
|
95
|
+
return null;
|
|
96
|
+
return Math.max(0, (limit - used) / perDay);
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNhZ2UtcHJvamVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy91c2FnZS1wcm9qZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUVILHFGQUFxRjtBQUNyRixNQUFNLE1BQU0sR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFhbkM7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLEtBTzVCO0lBQ0MsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQzFDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEYsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQy9DLDJFQUEyRTtJQUMzRSx1REFBdUQ7SUFDdkQsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUVsRSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNwQyxNQUFNLEtBQUssR0FBRyxVQUFVLEdBQUcsTUFBTSxDQUFDO0lBQ2xDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDNUMsTUFBTSxPQUFPLEdBQUcsR0FBRyxHQUFHLFdBQVcsQ0FBQztJQUNsQywyRUFBMkU7SUFDM0UsaUVBQWlFO0lBQ2pFLElBQUksT0FBTyxJQUFJLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUU5QixvRUFBb0U7SUFDcEUsc0VBQXNFO0lBQ3RFLE1BQU0sS0FBSyxHQUFHLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQztJQUNyRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQztJQUMzQyxPQUFPO1FBQ0wsU0FBUztRQUNULEtBQUssRUFBRSxTQUFTLEdBQUcsS0FBSztRQUN4QixVQUFVLEVBQUUsU0FBUyxHQUFHLEtBQUs7UUFDN0IsZUFBZSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sR0FBRyxLQUFLLENBQUM7S0FDOUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxHQUFHLENBQUM7QUFFM0Msc0VBQXNFO0FBQ3RFLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxDQUF5QjtJQUM5RCxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSx1QkFBdUIsQ0FBQztBQUMxRCxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsS0FNaEM7SUFDQyxNQUFNLENBQUMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDckMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQzFDLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxlQUFlLEdBQUcsVUFBVSxDQUFDLENBQUM7SUFDdkQsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQy9CLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7QUFDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFdoZXJlIGEgcXVvdGEgY291bnRlciBpcyBIRUFERUQsIGZyb20gd2hlcmUgaXQgaXMgbm93LlxuICpcbiAqIEV4dHJhY3RlZCBvdXQgb2YgYGZyb250ZW5kL3NyYy9jb21wb25lbnRzL3F1b3Rhcy9RdW90YUNhcmQudHN4YCwgd2hpY2ggb3duZWRcbiAqIHRoaXMgcHJpdmF0ZWx5IChkb2NzL3BsYW5zL3NhbGVzLWFnZW50Lm1kLCBQaGFzZSAwIGdyb3VuZHdvcmspLiBUaHJlZSBjYWxsZXJzXG4gKiBuZWVkIHRoZSBzYW1lIGFuc3dlciBhbmQgd2VyZSBnb2luZyB0byBjb21wdXRlIGl0IHRocmVlIHdheXM6XG4gKlxuICogIC0gdGhlIHF1b3RhIGNhcmQncyBmb3JlY2FzdCByb3csIHdoaWNoIGlzIHdoZXJlIGl0IHN0YXJ0ZWQ7XG4gKiAgLSB0aGUgdGhyZXNob2xkIG5vdGljZSwgd2hpY2ggZGVjaWRlcyB3aGV0aGVyIHRvIHdhcm47XG4gKiAgLSB0aGUgdXNhZ2UgcHJvZmlsZSdzIFRSQUpFQ1RPUlkgc2lnbmFsIChENCBDbGFzcyAyKSwgd2hpY2ggaXMgdGhlIHdob2xlXG4gKiAgICBiYXNpcyBmb3IgXCJ3aGVuIHdpbGwgdGhleSBydW4gb3V0XCIgcmF0aGVyIHRoYW4gXCJhcmUgdGhleSBvdXRcIi5cbiAqXG4gKiBBIHByb2plY3Rpb24gdGhhdCBkaXNhZ3JlZWQgYmV0d2VlbiB0aGUgcGFnZSBhbmQgdGhlIG9mZmVyIHdvdWxkIGJlIHRoZSB3b3JzdFxuICogcG9zc2libGUgc3BsaXQ6IHRoZSBhY2NvdW50IHJlYWRzIG9uZSBudW1iZXIgb24gdGhlIGNhcmQgYW5kIGdldHMgYW4gb2ZmZXJcbiAqIGFyZ3VlZCBmcm9tIGFub3RoZXIuXG4gKlxuICogREVQRU5ERU5DWS1GUkVFLCBzbyB0aGUgYnJvd3NlciBpbXBvcnRzIGl0IHRocm91Z2ggdGhlIGAuL3VzYWdlLXByb2plY3Rpb25gXG4gKiBzdWJwYXRoIHJhdGhlciB0aGFuIGtlZXBpbmcgdGhlIGNvcHkgaXQgaGFzIG5vdy5cbiAqL1xuXG4vKiogTWlsbGlzZWNvbmRzIGluIGEgZGF5LCBuYW1lZCBiZWNhdXNlIHRoZSBhcml0aG1ldGljIGJlbG93IHJlYWRzIGJldHRlciBmb3IgaXQuICovXG5jb25zdCBEQVlfTVMgPSAyNCAqIDYwICogNjAgKiAxMDAwO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzYWdlUHJvamVjdGlvbiB7XG4gIC8qKiBVbml0cyB0aGUgY291bnRlciBpcyBwYWNpbmcgdG8gcmVhY2ggYnkgYHJlc2V0QXRgLiAqL1xuICBwcm9qZWN0ZWQ6IG51bWJlcjtcbiAgLyoqIGBwcm9qZWN0ZWQgLyBsaW1pdGAuIEFib3ZlIDEgbWVhbnMgdGhlIGNhcCBpcyByZWFjaGVkIGJlZm9yZSB0aGUgcmVzZXQuICovXG4gIHJhdGlvOiBudW1iZXI7XG4gIC8qKiBXaGV0aGVyIHRoZSBwYWNlIGV4aGF1c3RzIHRoZSBsaW1pdCBiZWZvcmUgdGhlIHBlcmlvZCBlbmRzLiAqL1xuICB3aWxsQnJlYWNoOiBib29sZWFuO1xuICAvKiogRnJhY3Rpb24gb2YgdGhlIHBlcmlvZCBhbHJlYWR5IGVsYXBzZWQsIDDigJMxLiAqL1xuICBlbGFwc2VkRnJhY3Rpb246IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQcm9qZWN0IGEgZmxvdyBjb3VudGVyIHRvIGl0cyBwZXJpb2QgZW5kLCBvciBgbnVsbGAgd2hlbiB0aGVyZSBpcyBub3RoaW5nIHRvXG4gKiBwcm9qZWN0IGZyb20uXG4gKlxuICogUmV0dXJucyBudWxsIHJhdGhlciB0aGFuIHplcm8gZm9yIGV2ZXJ5IHVucHJvamVjdGFibGUgY2FzZSDigJQgbm8gdXNhZ2UgeWV0LCBhblxuICogdW5saW1pdGVkIG9yIGFic2VudCBsaW1pdCwgYSBwZXJpb2QgdGhhdCBoYXMgbm90IHN0YXJ0ZWQsIGFuIHVucGFyc2VhYmxlXG4gKiByZXNldCDigJQgYmVjYXVzZSB6ZXJvIGlzIGEgRk9SRUNBU1QgYW5kIFwiY2Fubm90IHNheVwiIGlzIG5vdCBvbmUuIEEgY2FsbGVyIHRoYXRcbiAqIHRyZWF0ZWQgdGhlIHR3byBhbGlrZSB3b3VsZCB3YXJuIGFuIGFjY291bnQgYXQgMCUgYW5kIG9mZmVyIGFnYWluc3QgYVxuICogdHJhamVjdG9yeSBub2JvZHkgbWVhc3VyZWQuXG4gKlxuICogVGhlIGJ1cm4gcmF0ZSBpcyBMSU5FQVIsIGFuZCB0aGF0IGlzIGEgZGVsaWJlcmF0ZSBmbG9vciByYXRoZXIgdGhhbiBhIG1vZGVsOlxuICogcmVhbCB3b3JrbG9hZHMgc3Bpa2UsIGJ1dCBhIHN0cmFpZ2h0IGxpbmUgc3RpbGwgY2F0Y2hlcyBcInBhY2luZyB0aHJlZSB0aW1lc1xuICogYWhlYWQgb2YgcGxhblwiLCB3aGljaCBpcyB0aGUgY2FzZSB3b3J0aCBhY3Rpbmcgb24uIEFueXRoaW5nIGNsZXZlcmVyIHdhbnRzIHRoZVxuICogaGlzdG9yeSB0aGUgcHJvZmlsZSBzdG9yZSBrZWVwcyAoRDE2KSwgbm90IGEgYmV0dGVyIGZvcm11bGEgaGVyZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2plY3RVc2FnZShpbnB1dDoge1xuICB1c2VkOiBudW1iZXI7XG4gIGxpbWl0OiBudW1iZXI7XG4gIHJlc2V0QXQ6IHN0cmluZyB8IERhdGU7XG4gIHBlcmlvZERheXM6IG51bWJlcjtcbiAgLyoqIERlZmF1bHRzIHRvIG5vdzsgaW5qZWN0YWJsZSBzbyBhIGNhbGxlciBjYW4gcHJvamVjdCBhcyBvZiBhIHBlcmlvZCdzIGVuZC4gKi9cbiAgbm93PzogbnVtYmVyO1xufSk6IFVzYWdlUHJvamVjdGlvbiB8IG51bGwge1xuICBjb25zdCB7IHVzZWQsIGxpbWl0LCBwZXJpb2REYXlzIH0gPSBpbnB1dDtcbiAgY29uc3QgcmVzZXQgPSBpbnB1dC5yZXNldEF0IGluc3RhbmNlb2YgRGF0ZSA/IGlucHV0LnJlc2V0QXQgOiBuZXcgRGF0ZShpbnB1dC5yZXNldEF0KTtcbiAgaWYgKE51bWJlci5pc05hTihyZXNldC5nZXRUaW1lKCkpKSByZXR1cm4gbnVsbDtcbiAgLy8gYGxpbWl0IDw9IDBgIGNvdmVycyBib3RoIGFuIHVuc2V0IGNhcCBhbmQgdGhlIGAtMWAgdGhhdCBtZWFucyB1bmxpbWl0ZWQ6XG4gIC8vIG5laXRoZXIgaGFzIGEgcmF0aW8sIGFuZCB0aGVyZSBpcyBub3RoaW5nIHRvIGJyZWFjaC5cbiAgaWYgKCEobGltaXQgPiAwKSB8fCAhKHVzZWQgPiAwKSB8fCAhKHBlcmlvZERheXMgPiAwKSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3Qgbm93ID0gaW5wdXQubm93ID8/IERhdGUubm93KCk7XG4gIGNvbnN0IHRvdGFsID0gcGVyaW9kRGF5cyAqIERBWV9NUztcbiAgY29uc3QgcGVyaW9kU3RhcnQgPSByZXNldC5nZXRUaW1lKCkgLSB0b3RhbDtcbiAgY29uc3QgZWxhcHNlZCA9IG5vdyAtIHBlcmlvZFN0YXJ0O1xuICAvLyBCZWZvcmUgdGhlIHBlcmlvZCBvcGVuZWQsIG9yIGV4YWN0bHkgYXQgaXRzIGJvdW5kYXJ5OiBubyBlbGFwc2VkIHRpbWUgdG9cbiAgLy8gZGl2aWRlIGJ5LCBhbmQgZXh0cmFwb2xhdGluZyBmcm9tIHplcm8gZWxhcHNlZCBnaXZlcyBpbmZpbml0eS5cbiAgaWYgKGVsYXBzZWQgPD0gMCkgcmV0dXJuIG51bGw7XG5cbiAgLy8gUGFzdCB0aGUgcmVzZXQgdGhlIHBlcmlvZCBpcyBvdmVyOyB0aGUgcGFjZSBJUyB0aGUgdXNhZ2UsIHdpdGggbm9cbiAgLy8gZXh0cmFwb2xhdGlvbiwgcmF0aGVyIHRoYW4gYSBmaWd1cmUgc2NhbGVkIGJ5IGEgZnJhY3Rpb24gYWJvdmUgb25lLlxuICBjb25zdCBzY2FsZSA9IGVsYXBzZWQgPj0gdG90YWwgPyAxIDogdG90YWwgLyBlbGFwc2VkO1xuICBjb25zdCBwcm9qZWN0ZWQgPSBNYXRoLnJvdW5kKHVzZWQgKiBzY2FsZSk7XG4gIHJldHVybiB7XG4gICAgcHJvamVjdGVkLFxuICAgIHJhdGlvOiBwcm9qZWN0ZWQgLyBsaW1pdCxcbiAgICB3aWxsQnJlYWNoOiBwcm9qZWN0ZWQgPiBsaW1pdCxcbiAgICBlbGFwc2VkRnJhY3Rpb246IE1hdGgubWluKDEsIGVsYXBzZWQgLyB0b3RhbCksXG4gIH07XG59XG5cbi8qKlxuICogVGhlIGJhbmQgYXQgd2hpY2ggYSBwcm9qZWN0aW9uIGlzIHdvcnRoIHNob3dpbmcgYSBwZXJzb24uXG4gKlxuICogU2hhcmVkIHNvIHRoZSBjYXJkJ3MgZm9yZWNhc3Qgcm93IGFuZCB0aGUgcHJvZmlsZSdzIHByZXNzdXJlIHNpZ25hbCBhZ3JlZSBvblxuICogd2hhdCBcImFwcHJvYWNoaW5nXCIgbWVhbnMuIEJlbG93IGl0IHRoZXJlIGlzIGEgcHJvamVjdGlvbiBidXQgbm8gcmVhc29uIHRvIHNheVxuICogYW55dGhpbmcsIHdoaWNoIGlzIGEgZGlmZmVyZW50IHN0YXRlIGZyb20gaGF2aW5nIG5vIHByb2plY3Rpb24gYXQgYWxsLlxuICovXG5leHBvcnQgY29uc3QgUFJPSkVDVElPTl9OT1RJQ0VfUkFUSU8gPSAwLjc7XG5cbi8qKiBXaGV0aGVyIGEgcHJvamVjdGlvbiBoYXMgY3Jvc3NlZCBpbnRvIHRoZSBiYW5kIHdvcnRoIHN1cmZhY2luZy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0aW9uV29ydGhTaG93aW5nKHA6IFVzYWdlUHJvamVjdGlvbiB8IG51bGwpOiBib29sZWFuIHtcbiAgcmV0dXJuIHAgIT09IG51bGwgJiYgcC5yYXRpbyA+PSBQUk9KRUNUSU9OX05PVElDRV9SQVRJTztcbn1cblxuLyoqXG4gKiBEYXlzIHVudGlsIHRoZSBjb3VudGVyIHJlYWNoZXMgaXRzIGxpbWl0IGF0IHRoZSBjdXJyZW50IHBhY2UsIG9yIGBudWxsYCB3aGVuXG4gKiBpdCBkb2VzIG5vdCByZWFjaCBpdCBpbnNpZGUgdGhlIHBlcmlvZC5cbiAqXG4gKiBUaGUgVFJBSkVDVE9SWSBzaWduYWwncyBhY3R1YWwgcXVlc3Rpb24gKEQ0IENsYXNzIDIpIOKAlCBcImhvdyBsb25nIGhhdmUgdGhleVxuICogZ290XCIgaXMgd2hhdCBkZWNpZGVzIHdoZXRoZXIgYW4gb2ZmZXIgaXMgdGltZWx5LCB3aGVyZSB0aGUgcHJvamVjdGVkIHRvdGFsXG4gKiBvbmx5IHNheXMgd2hldGhlciBpdCBpcyB3YXJyYW50ZWQuIEZyYWN0aW9uYWwgZGF5cyBhcmUga2VwdDogcm91bmRpbmcgdXAgdG8gYVxuICogd2hvbGUgZGF5IGxvc2VzIGV4YWN0bHkgdGhlIHVyZ2VuY3kgdGhlIHNpZ25hbCBpcyBmb3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXlzVG9FeGhhdXN0aW9uKGlucHV0OiB7XG4gIHVzZWQ6IG51bWJlcjtcbiAgbGltaXQ6IG51bWJlcjtcbiAgcmVzZXRBdDogc3RyaW5nIHwgRGF0ZTtcbiAgcGVyaW9kRGF5czogbnVtYmVyO1xuICBub3c/OiBudW1iZXI7XG59KTogbnVtYmVyIHwgbnVsbCB7XG4gIGNvbnN0IHAgPSBwcm9qZWN0VXNhZ2UoaW5wdXQpO1xuICBpZiAoIXAgfHwgIXAud2lsbEJyZWFjaCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHsgdXNlZCwgbGltaXQsIHBlcmlvZERheXMgfSA9IGlucHV0O1xuICBjb25zdCBwZXJEYXkgPSB1c2VkIC8gKHAuZWxhcHNlZEZyYWN0aW9uICogcGVyaW9kRGF5cyk7XG4gIGlmICghKHBlckRheSA+IDApKSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIE1hdGgubWF4KDAsIChsaW1pdCAtIHVzZWQpIC8gcGVyRGF5KTtcbn1cbiJdfQ==
|
package/lib/utils/aws-scrub.js
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* outbound payload (audit `details`, ingested event `detail`, error messages).
|
|
6
6
|
*
|
|
7
7
|
* HARD CONSTRAINT: an AWS account id must NEVER be persisted anywhere in this
|
|
8
|
-
* system — `orgId` is the
|
|
9
|
-
* id. AWS surfaces (CodePipeline/CodeBuild failure messages, KMS/role ARNs) leak
|
|
8
|
+
* system — `orgId` is the platform org id (a Marketplace customer is keyed on its
|
|
9
|
+
* license ARN, in subscription metadata), never an AWS account id. AWS surfaces (CodePipeline/CodeBuild failure messages, KMS/role ARNs) leak
|
|
10
10
|
* the account id as the 5th ARN segment or as a bare 12-digit token, so scrub at
|
|
11
11
|
* every boundary that writes untrusted AWS-derived text. Defense-in-depth: apply
|
|
12
12
|
* this even when an upstream (e.g. the events Lambda) is expected to have
|
|
@@ -64,4 +64,4 @@ export function scrubAwsIdentifiers(value) {
|
|
|
64
64
|
}
|
|
65
65
|
return value;
|
|
66
66
|
}
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXNjcnViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2F3cy1zY3J1Yi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7OztHQVdHO0FBRUgsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDO0FBRTlCOzs7O0dBSUc7QUFDSCxNQUFNLGlCQUFpQixHQUFHLHNCQUFzQixDQUFDO0FBRWpELG9GQUFvRjtBQUNwRixNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUM7QUFFbEMsbUdBQW1HO0FBQ25HLE1BQU0sVUFBVSw2QkFBNkIsQ0FBQyxLQUFhO0lBQ3pELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBSSxLQUFRO0lBQzdDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDOUIsT0FBTyw2QkFBNkIsQ0FBQyxLQUFLLENBQWlCLENBQUM7SUFDOUQsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQWlCLENBQUM7SUFDbEUsQ0FBQztJQUNELElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3ZDLDJFQUEyRTtRQUMzRSwwRUFBMEU7UUFDMUUsNkVBQTZFO1FBQzdFLCtFQUErRTtRQUMvRSw4RUFBOEU7UUFDOUUsMEVBQTBFO1FBQzFFLG9FQUFvRTtRQUNwRSxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLElBQUksS0FBSyxLQUFLLE1BQU0sQ0FBQyxTQUFTLElBQUksS0FBSyxLQUFLLElBQUk7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUMvRCxNQUFNLEdBQUcsR0FBNEIsRUFBRSxDQUFDO1FBQ3hDLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQWdDLENBQUMsRUFBRSxDQUFDO1lBQ3RFLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUMvRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO1lBQ3BCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEdBQVEsQ0FBQztJQUNsQixDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogUmVkYWN0IEFXUyBhY2NvdW50IGlkZW50aWZpZXJzIGZyb20gdmFsdWVzIGhlYWRlZCBmb3IgYSBEVVJBQkxFIHN0b3JlIG9yIGFuXG4gKiBvdXRib3VuZCBwYXlsb2FkIChhdWRpdCBgZGV0YWlsc2AsIGluZ2VzdGVkIGV2ZW50IGBkZXRhaWxgLCBlcnJvciBtZXNzYWdlcykuXG4gKlxuICogSEFSRCBDT05TVFJBSU5UOiBhbiBBV1MgYWNjb3VudCBpZCBtdXN0IE5FVkVSIGJlIHBlcnNpc3RlZCBhbnl3aGVyZSBpbiB0aGlzXG4gKiBzeXN0ZW0g4oCUIGBvcmdJZGAgaXMgdGhlIHBsYXRmb3JtIG9yZyBpZCAoYSBNYXJrZXRwbGFjZSBjdXN0b21lciBpcyBrZXllZCBvbiBpdHNcbiAqIGxpY2Vuc2UgQVJOLCBpbiBzdWJzY3JpcHRpb24gbWV0YWRhdGEpLCBuZXZlciBhbiBBV1MgYWNjb3VudCBpZC4gQVdTIHN1cmZhY2VzIChDb2RlUGlwZWxpbmUvQ29kZUJ1aWxkIGZhaWx1cmUgbWVzc2FnZXMsIEtNUy9yb2xlIEFSTnMpIGxlYWtcbiAqIHRoZSBhY2NvdW50IGlkIGFzIHRoZSA1dGggQVJOIHNlZ21lbnQgb3IgYXMgYSBiYXJlIDEyLWRpZ2l0IHRva2VuLCBzbyBzY3J1YiBhdFxuICogZXZlcnkgYm91bmRhcnkgdGhhdCB3cml0ZXMgdW50cnVzdGVkIEFXUy1kZXJpdmVkIHRleHQuIERlZmVuc2UtaW4tZGVwdGg6IGFwcGx5XG4gKiB0aGlzIGV2ZW4gd2hlbiBhbiB1cHN0cmVhbSAoZS5nLiB0aGUgZXZlbnRzIExhbWJkYSkgaXMgZXhwZWN0ZWQgdG8gaGF2ZVxuICogc3RyaXBwZWQgaXQg4oCUIHRoZSBwZXJzaXN0ZW5jZSBib3VuZGFyeSBtdXN0IG5vdCB0cnVzdCB1cHN0cmVhbS5cbiAqL1xuXG5jb25zdCBSRURBQ1RFRCA9ICdbUkVEQUNURURdJztcblxuLyoqXG4gKiBBIDEyLWRpZ2l0IHJ1biBpcyB0aGUgQVdTIGFjY291bnQtaWQgc2hhcGUgKGFuZCB0aGUgYWNjb3VudCBzZWdtZW50IG9mIGV2ZXJ5XG4gKiBBUk4pLiBCb3VuZGVkIGJ5IG5vbi1kaWdpdHMgc28gd2UgbmV2ZXIgY2xpcCBpbnNpZGUgYSBsb25nZXIgbnVtYmVyIChlLmcuIGFcbiAqIDEzLWRpZ2l0IG1pbGxpc2Vjb25kIHRpbWVzdGFtcCBpcyBsZWZ0IGludGFjdCkuXG4gKi9cbmNvbnN0IEFXU19BQ0NPVU5UX0lEX1JFID0gLyg/PCFcXGQpXFxkezEyfSg/IVxcZCkvZztcblxuLyoqIEtleXMgdGhhdCBuYW1lIGFuIEFXUyBhY2NvdW50IGlkIG91dHJpZ2h0IOKAlCB0aGVpciB2YWx1ZSBpcyBkcm9wcGVkIHdob2xlc2FsZS4gKi9cbmNvbnN0IEFDQ09VTlRfS0VZX1JFID0gL2FjY291bnQvaTtcblxuLyoqIFJlZGFjdCBldmVyeSBBV1MtYWNjb3VudC1pZC1zaGFwZWQgdG9rZW4gKGluY2wuIHRoZSBhY2NvdW50IGZpZWxkIG9mIGFueSBBUk4pIGZyb20gYSBzdHJpbmcuICovXG5leHBvcnQgZnVuY3Rpb24gc2NydWJBd3NJZGVudGlmaWVyc0Zyb21TdHJpbmcoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBpbnB1dC5yZXBsYWNlKEFXU19BQ0NPVU5UX0lEX1JFLCBSRURBQ1RFRCk7XG59XG5cbi8qKlxuICogRGVlcC1zY3J1YiBhIHZhbHVlIChzdHJpbmcgLyBhcnJheSAvIHBsYWluIG9iamVjdCkgb2YgQVdTIGFjY291bnQgaWRlbnRpZmllcnMsXG4gKiByZXR1cm5pbmcgYSBzY3J1YmJlZCBjb3B5IOKAlCB0aGUgaW5wdXQgaXMgbmV2ZXIgbXV0YXRlZC4gU3RyaW5nIHZhbHVlcyBoYXZlXG4gKiBhY2NvdW50LWlkIHRva2VucyByZWRhY3RlZDsgYW55IGtleSBtYXRjaGluZyB7QGxpbmsgQUNDT1VOVF9LRVlfUkV9IHdpdGggYVxuICogc3RyaW5nL251bWJlciB2YWx1ZSBpcyByZWRhY3RlZCB3aG9sZXNhbGUuIE5vbi1zdHJpbmcgcHJpbWl0aXZlcyBwYXNzIHRocm91Z2hcbiAqIHVuY2hhbmdlZCAoYSBiYXJlIG51bWJlciBpcyBvbmx5IHJlZGFjdGVkIHdoZW4gaXQgc2l0cyB1bmRlciBhbiBhY2NvdW50LW5hbWVkXG4gKiBrZXksIHRvIGF2b2lkIGNsb2JiZXJpbmcgbGVnaXRpbWF0ZSBudW1lcmljIGZpZWxkcykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzY3J1YkF3c0lkZW50aWZpZXJzPFQ+KHZhbHVlOiBUKTogVCB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHNjcnViQXdzSWRlbnRpZmllcnNGcm9tU3RyaW5nKHZhbHVlKSBhcyB1bmtub3duIGFzIFQ7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcCgodikgPT4gc2NydWJBd3NJZGVudGlmaWVycyh2KSkgYXMgdW5rbm93biBhcyBUO1xuICB9XG4gIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgLy8gUmVjdXJzZSBwbGFpbiBBTkQgbnVsbC1wcm90b3R5cGUgb2JqZWN0cyAoZGF0YSBiYWdzKS4gQSBEYXRlL0J1ZmZlci9NYXAvXG4gICAgLy8gY2xhc3MgaW5zdGFuY2UgaXMgTk9UIGEgcGxhaW4gb2JqZWN0LCBhbmQgd2Fsa2luZyBpdCB2aWEgT2JqZWN0LmVudHJpZXNcbiAgICAvLyB3b3VsZCBjbG9iYmVyIGl0IHRvIGB7fWAgKG9yIGEgYnl0ZSBtYXApIOKAlCBzaWxlbnRseSBkZXN0cm95aW5nIGUuZy4gYSBEYXRlXG4gICAgLy8gaGVsZCBpbiBhdWRpdCBgZGV0YWlsc2AuIEJ1dCBhIG51bGwtcHJvdG90eXBlIG9iamVjdCAoYE9iamVjdC5jcmVhdGUobnVsbClgLFxuICAgIC8vIHNvbWUgSlNPTi5wYXJzZSByZXZpdmVycywgQlNPTiBkb2NzKSBpcyBhIHBsYWluIGRhdGEgYmFnIHRoYXQgbXVzdCBzdGlsbCBiZVxuICAgIC8vIHNjcnViYmVkIOKAlCBza2lwcGluZyBpdCB3YXMgYSBob2xlIGF0IHRoZSB2ZXJ5IHBlcnNpc3RlbmNlIGJvdW5kYXJ5IHRoaXNcbiAgICAvLyBtb2R1bGUgZ3VhcmRzLiBMZWF2ZSBvbmx5IHByb3RvdHlwZWQgbm9uLXBsYWluIG9iamVjdHMgdW50b3VjaGVkLlxuICAgIGNvbnN0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKTtcbiAgICBpZiAocHJvdG8gIT09IE9iamVjdC5wcm90b3R5cGUgJiYgcHJvdG8gIT09IG51bGwpIHJldHVybiB2YWx1ZTtcbiAgICBjb25zdCBvdXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXModmFsdWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pKSB7XG4gICAgICBpZiAoQUNDT1VOVF9LRVlfUkUudGVzdChrKSAmJiAodHlwZW9mIHYgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2ID09PSAnbnVtYmVyJykpIHtcbiAgICAgICAgb3V0W2tdID0gUkVEQUNURUQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXRba10gPSBzY3J1YkF3c0lkZW50aWZpZXJzKHYpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3V0IGFzIFQ7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuIl19
|
package/lib/utils/identity.d.ts
CHANGED
|
@@ -40,6 +40,26 @@ export declare const SYSTEM_ACTOR_ID = "system";
|
|
|
40
40
|
* involved", not "a person we don't know".
|
|
41
41
|
*/
|
|
42
42
|
export declare const ANONYMOUS_ACTOR_ID = "anonymous";
|
|
43
|
+
/**
|
|
44
|
+
* The actor id written for work the EXPANSION-OFFERS agent did on its own
|
|
45
|
+
* (docs/plans/sales-agent.md D14).
|
|
46
|
+
*
|
|
47
|
+
* Distinct from {@link SYSTEM_ACTOR_ID} because "why did this account get this
|
|
48
|
+
* offer?" is the only question anybody will ask about that feature, and the
|
|
49
|
+
* generic system actor makes it unanswerable: the trail shows system work, of
|
|
50
|
+
* which this deployment does a great deal, and nothing would separate an offer
|
|
51
|
+
* the agent decided from a seed, a backfill or an operator script.
|
|
52
|
+
*
|
|
53
|
+
* It also makes the agent's work revocable AS A SET — "withdraw everything the
|
|
54
|
+
* agent did in the last hour" is a query on this value rather than an
|
|
55
|
+
* archaeology exercise, which is the control an operator wants on the morning a
|
|
56
|
+
* rule turns out to be wrong.
|
|
57
|
+
*
|
|
58
|
+
* An ACTOR, not a network identity: the agent runs inside billing until Phase 5
|
|
59
|
+
* extracts it, so its service principal is still `billing`. This names who
|
|
60
|
+
* decided, which is what the audit trail is queried by.
|
|
61
|
+
*/
|
|
62
|
+
export declare const OFFERS_AGENT_ACTOR_ID = "offers-agent";
|
|
43
63
|
/**
|
|
44
64
|
* The actor id to stamp on an audit event, from a route context.
|
|
45
65
|
*
|
package/lib/utils/identity.js
CHANGED
|
@@ -31,6 +31,26 @@ export const SYSTEM_ACTOR_ID = 'system';
|
|
|
31
31
|
* involved", not "a person we don't know".
|
|
32
32
|
*/
|
|
33
33
|
export const ANONYMOUS_ACTOR_ID = 'anonymous';
|
|
34
|
+
/**
|
|
35
|
+
* The actor id written for work the EXPANSION-OFFERS agent did on its own
|
|
36
|
+
* (docs/plans/sales-agent.md D14).
|
|
37
|
+
*
|
|
38
|
+
* Distinct from {@link SYSTEM_ACTOR_ID} because "why did this account get this
|
|
39
|
+
* offer?" is the only question anybody will ask about that feature, and the
|
|
40
|
+
* generic system actor makes it unanswerable: the trail shows system work, of
|
|
41
|
+
* which this deployment does a great deal, and nothing would separate an offer
|
|
42
|
+
* the agent decided from a seed, a backfill or an operator script.
|
|
43
|
+
*
|
|
44
|
+
* It also makes the agent's work revocable AS A SET — "withdraw everything the
|
|
45
|
+
* agent did in the last hour" is a query on this value rather than an
|
|
46
|
+
* archaeology exercise, which is the control an operator wants on the morning a
|
|
47
|
+
* rule turns out to be wrong.
|
|
48
|
+
*
|
|
49
|
+
* An ACTOR, not a network identity: the agent runs inside billing until Phase 5
|
|
50
|
+
* extracts it, so its service principal is still `billing`. This names who
|
|
51
|
+
* decided, which is what the audit trail is queried by.
|
|
52
|
+
*/
|
|
53
|
+
export const OFFERS_AGENT_ACTOR_ID = 'offers-agent';
|
|
34
54
|
/**
|
|
35
55
|
* The actor id to stamp on an audit event, from a route context.
|
|
36
56
|
*
|
|
@@ -108,4 +128,4 @@ export function getIdentity(req) {
|
|
|
108
128
|
role: user?.role || getHeaderString(req.headers['x-user-role']),
|
|
109
129
|
};
|
|
110
130
|
}
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaWRlbnRpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBaUIvQzs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxLQUFnQztJQUM3RCxPQUFPLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxTQUFTLENBQUM7QUFDbEQsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBRXhDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsV0FBVyxDQUFDO0FBRTlDOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLFVBQVUsT0FBTyxDQUFDLEVBQThCO0lBQ3BELE9BQU8sRUFBRSxDQUFDLE1BQU0sSUFBSSxlQUFlLENBQUM7QUFDdEMsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLEdBQWdCO0lBQzFDLG9FQUFvRTtJQUNwRSx1RUFBdUU7SUFDdkUsdUVBQXVFO0lBQ3ZFLG9EQUFvRDtJQUNwRCxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO0lBQ3RCLDZFQUE2RTtJQUM3RSx3REFBd0Q7SUFDeEQsOEVBQThFO0lBQzlFLDBFQUEwRTtJQUMxRSw2RUFBNkU7SUFDN0UsMEVBQTBFO0lBQzFFLHNFQUFzRTtJQUN0RSx5RUFBeUU7SUFDekUsNEVBQTRFO0lBQzVFLHdFQUF3RTtJQUN4RSwwRUFBMEU7SUFDMUUsMkVBQTJFO0lBQzNFLGdFQUFnRTtJQUNoRSxNQUFNLGFBQWEsR0FBRyxJQUFJLEVBQUUsYUFBYSxDQUFDO0lBQzFDLE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDN0QsTUFBTSxlQUFlLEdBQUcsQ0FBQyxJQUFJLElBQUksYUFBYSxLQUFLLFNBQVMsQ0FBQztJQUM3RCxNQUFNLFFBQVEsR0FBRyxJQUFJLEVBQUUsY0FBYyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JGLDRFQUE0RTtJQUM1RSw4RUFBOEU7SUFDOUUsOEVBQThFO0lBQzlFLHdEQUF3RDtJQUN4RCxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsT0FBTztRQUNMLEtBQUs7UUFDTCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM5RCxTQUFTLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdkQsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7S0FDaEUsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgZ2V0SGVhZGVyU3RyaW5nIH0gZnJvbSAnLi9oZWFkZXJzLmpzJztcbmltcG9ydCB0eXBlIHsgSHR0cFJlcXVlc3QgfSBmcm9tICcuLi90eXBlcy9odHRwLmpzJztcblxuLyoqXG4gKiBJZGVudGl0eSBpbmZvcm1hdGlvbiBleHRyYWN0ZWQgZnJvbSByZXF1ZXN0IGhlYWRlcnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdElkZW50aXR5IHtcbiAgLyoqIE9yZ2FuaXphdGlvbiBJRCBmcm9tIHgtb3JnLWlkIGhlYWRlciAqL1xuICByZWFkb25seSBvcmdJZD86IHN0cmluZztcbiAgLyoqIFVzZXIgSUQgZnJvbSB4LXVzZXItaWQgaGVhZGVyICovXG4gIHJlYWRvbmx5IHVzZXJJZD86IHN0cmluZztcbiAgLyoqIFJlcXVlc3QgSUQgZnJvbSB4LXJlcXVlc3QtaWQgaGVhZGVyICovXG4gIHJlYWRvbmx5IHJlcXVlc3RJZD86IHN0cmluZztcbiAgLyoqIFVzZXIgcm9sZSBmcm9tIHgtdXNlci1yb2xlIGhlYWRlciAoZGVjb2RlZCBmcm9tIEpXVCkgKi9cbiAgcmVhZG9ubHkgcm9sZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDYW5vbmljYWwgb3JnLWlkIG5vcm1hbGl6YXRpb246IHRyaW0gKyBsb3dlcmNhc2UsIGVtcHR5IOKHkiB1bmRlZmluZWQuXG4gKlxuICogVGhlIFNJTkdMRSBzcGVsbGluZyBydWxlIGZvciBhIHRlbmFudCBpZCBhY3Jvc3MgdGhlIGZsZWV0LiBPcmcgaWRzIGFyZVxuICogMjQtaGV4IE9iamVjdElkIHN0cmluZ3MgKHBsdXMgdGhlIGAnc3lzdGVtJ2Agc2VudGluZWwpLCBhbmQgaGV4IGlzXG4gKiBjYXNlLWluc2Vuc2l0aXZlIOKAlCBzbyBgQWNtZWAtc3R5bGUgY2FzaW5nIGRpZmZlcmVuY2VzIHJlc29sdmUgdG8gdGhlIFNBTUVcbiAqIE1vbmdvIGRvY3VtZW50IHdoaWxlIHN0cmluZyBjb21wYXJpc29ucyAoYGFjdGl2ZU9yZ0lkID09PSB0YXJnZXRPcmdJZGAsIGFuXG4gKiBSTFMgR1VDIHZzIGEgV0hFUkUgY2xhdXNlLCBhIGNhY2hlIGtleSkgc2lsZW50bHkgZGlzYWdyZWUuIEV2ZXJ5dGhpbmcgdGhhdFxuICogY29tcGFyZXMgb3Iga2V5cyBvbiBhbiBvcmcgaWQgbm9ybWFsaXplcyB0aHJvdWdoIGhlcmUgc28gdGhlIGNvbXBhcmlzb24gYW5kXG4gKiB0aGUgbG9va3VwIGNhbiBuZXZlciBkcmlmdCBhcGFydC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZU9yZ0lkKG9yZ0lkOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIG9yZ0lkPy50cmltKCkudG9Mb3dlckNhc2UoKSB8fCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogVGhlIGFjdG9yIGlkIHdyaXR0ZW4gd2hlbiBub3RoaW5nIGluIHRoZSByZXF1ZXN0IGF0dHJpYnV0ZXMgdGhlIGFjdGlvbiB0byBhXG4gKiBwZXJzb24g4oCUIGFuIGludGVybmFsIHNlcnZpY2UgaG9wLCBhIHNjaGVkdWxlciB0aWNrLCBhIHRva2VuIHdob3NlIHN1YmplY3RcbiAqIG5ldmVyIHJlc29sdmVkLiBPbmUgc3BlbGxpbmcsIGJlY2F1c2UgdGhlIGF1ZGl0IHRyYWlsIGlzIHF1ZXJpZWQgYnkgaXQuXG4gKi9cbmV4cG9ydCBjb25zdCBTWVNURU1fQUNUT1JfSUQgPSAnc3lzdGVtJztcblxuLyoqXG4gKiBUaGUgYWN0b3IgaWQgd3JpdHRlbiBmb3IgYW4gVU5BVVRIRU5USUNBVEVEIGFjdG9yOiBhbiBhbm9ueW1vdXMgcHVibGljIHBsdWdpblxuICogc3VibWlzc2lvbiAoZG9jcy9wbHVnaW4tcHVibGlzaGluZy5tZCDigJQgdGhlIGV2ZW50IGNhcnJpZXNcbiAqIGBkZXRhaWxzLnN1Ym1pc3Npb25JZGAgZm9yIGNvcnJlbGF0aW9uIGFuZCBpcyByZWNvcmRlZCBhZ2FpbnN0IHRoZSBzeXN0ZW1cbiAqIG9yZzsgdGhlIHN1Ym1pdHRlcidzIGVtYWlsLCBoYXNoZWQgb3Igb3RoZXJ3aXNlLCBuZXZlciBhcHBlYXJzIGluIHRoZSBhdWRpdFxuICogdHJhaWwpIGFuZCBwbGF0Zm9ybSdzIHByZS1hdXRoIGBkZXZpY2UuYXV0aG9yaXplLnN0YXJ0YCAoYSBkZXZpY2UtbG9naW4gY29kZVxuICogcmVxdWVzdGVkIGJlZm9yZSBhbnlvbmUgaGFzIHNpZ25lZCBpbikuIERpc3RpbmN0IGZyb20ge0BsaW5rIFNZU1RFTV9BQ1RPUl9JRH0sIHdoaWNoIG1lYW5zIFwibm8gcGVyc29uXG4gKiBpbnZvbHZlZFwiLCBub3QgXCJhIHBlcnNvbiB3ZSBkb24ndCBrbm93XCIuXG4gKi9cbmV4cG9ydCBjb25zdCBBTk9OWU1PVVNfQUNUT1JfSUQgPSAnYW5vbnltb3VzJztcblxuLyoqXG4gKiBUaGUgYWN0b3IgaWQgdG8gc3RhbXAgb24gYW4gYXVkaXQgZXZlbnQsIGZyb20gYSByb3V0ZSBjb250ZXh0LlxuICpcbiAqIE9uZSByZXNvbHZlciBzbyBldmVyeSByb3V0ZSBhZ3JlZXMgb24gdGhlIGZhbGxiYWNrOiBwZXItcm91dGVcbiAqIGByZXEudXNlci5zdWIgPz8g4oCmYCBmYWxsYmFja3MgZGlzYWdyZWUsIGFuZCB0aGUgc2FtZSB1bmF0dHJpYnV0YWJsZSB3cml0ZVxuICogd291bGQgbGFuZCBpbiB0aGUgdHJhaWwgdW5kZXIgZGlmZmVyZW50IGFjdG9ycyBkZXBlbmRpbmcgb24gdGhlIHJvdXRlLlxuICpcbiAqIGByYy51c2VySWRgIGlzIGFscmVhZHkgdGhlIG5vcm1hbGl6ZWQgaWRlbnRpdHkgYHdpdGhSb3V0ZWAgcmVzb2x2ZWQgKEpXVFxuICogYHN1YmAsIGVsc2UgdGhlIGB4LXVzZXItaWRgIGhvcCBoZWFkZXIg4oCUIHNlZSB7QGxpbmsgZ2V0SWRlbnRpdHl9KSwgc28gdGhpcyBpc1xuICogdGhlIHNhbWUgdmFsdWUgdGhlIHJlc3Qgb2YgdGhlIHJlcXVlc3QgaXMgc2NvcGVkIGJ5LCBhbmQgdGhlIE9ORSBwbGFjZSB0aGVcbiAqIFwidW5hdHRyaWJ1dGFibGVcIiBzZW50aW5lbCBpcyBjaG9zZW4uIEFjY2VwdHMgYW55dGhpbmcgY2FycnlpbmcgYSBgdXNlcklkYCxcbiAqIHdoaWNoIHRoZSByb3V0ZSBjb250ZXh0IGRvZXMg4oCUIHBhc3MgYHJjYCwgb3IgYHsgdXNlcklkIH1gIHdoZW4gdGhlIGhhbmRsZXJcbiAqIGRlc3RydWN0dXJlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFjdG9ySWQocmM6IHsgdXNlcklkPzogc3RyaW5nIHwgbnVsbCB9KTogc3RyaW5nIHtcbiAgcmV0dXJuIHJjLnVzZXJJZCB8fCBTWVNURU1fQUNUT1JfSUQ7XG59XG5cbi8qKlxuICogRXh0cmFjdCBpZGVudGl0eSBpbmZvcm1hdGlvbiBmcm9tIHJlcXVlc3QgaGVhZGVycy5cbiAqXG4gKiBFeHRyYWN0cyBjb21tb24gaWRlbnRpdHkgaGVhZGVycyB1c2VkIGZvciBtdWx0aS10ZW5hbnQgYXV0aGVudGljYXRpb246XG4gKiAtIHgtb3JnLWlkOiBPcmdhbml6YXRpb24gaWRlbnRpZmllciAoSU5URVJOQUwgU0VSVklDRSBob3BzIG9ubHksIHNlZSBiZWxvdylcbiAqIC0geC11c2VyLWlkOiBVc2VyIGlkZW50aWZpZXJcbiAqIC0geC1yZXF1ZXN0LWlkOiBSZXF1ZXN0IHRyYWNlIGlkZW50aWZpZXJcbiAqIC0geC11c2VyLXJvbGU6IFVzZXIgcm9sZVxuICpcbiAqIEBwYXJhbSByZXEgLSBIVFRQIHJlcXVlc3Qgb2JqZWN0XG4gKiBAcmV0dXJucyBJZGVudGl0eSBvYmplY3Qgd2l0aCBvcmdJZCwgdXNlcklkLCByZXF1ZXN0SWQsIGFuZCByb2xlXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGFwcC5wb3N0KCcvYXBpL3Jlc291cmNlJywgcmVxdWlyZUF1dGgsIGFzeW5jIChyZXEsIHJlcykgPT4ge1xuICogICBjb25zdCBpZGVudGl0eSA9IGdldElkZW50aXR5KHJlcSk7XG4gKlxuICogICBpZiAoIWlkZW50aXR5Lm9yZ0lkKSB7XG4gKiAgICAgcmV0dXJuIHNlbmRFcnJvcihyZXMsIDQwMCwgJ3gtb3JnLWlkIGhlYWRlciByZXF1aXJlZCcpO1xuICogICB9XG4gKlxuICogICAvLyBVc2UgaWRlbnRpdHkub3JnSWQsIGlkZW50aXR5LnVzZXJJZCwgZXRjLlxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldElkZW50aXR5KHJlcTogSHR0cFJlcXVlc3QpOiBSZXF1ZXN0SWRlbnRpdHkge1xuICAvLyBQcmVmZXIgSldULXZlcmlmaWVkIGNsYWltcyAocmVxLnVzZXIpIG92ZXIgcmF3IGhlYWRlcnMgdG8gcHJldmVudFxuICAvLyBzcG9vZmluZy4gSGVhZGVycyBhcmUgb25seSB1c2VkIGFzIGZhbGxiYWNrIG9yIGZvciBmaWVsZHMgbm90IGluIHRoZVxuICAvLyBKV1QgKGUuZy4gcmVxdWVzdElkKS4gVGhlIEpXVCBwYXlsb2FkIHVzZXMgYHN1YmAgZm9yIHRoZSB1c2VyIGlkIHBlclxuICAvLyBPSURDIGNvbnZlbnRpb247IHRoYXQncyBvdXIgYXV0aG9yaXRhdGl2ZSBzb3VyY2UuXG4gIGNvbnN0IHVzZXIgPSByZXEudXNlcjtcbiAgLy8gVGhlIGB4LW9yZy1pZGAgaGVhZGVyIGlzIENMSUVOVC1TRVRUQUJMRSwgc28gaXQgaXMgb25seSBldmVyIGhvbm9yZWQgZm9yIGFcbiAgLy8gcHJpbmNpcGFsIHRoYXQgaGFzIG5vIHRlbmFudCBvZiBpdHMgb3duIHRvIHNwZWFrIGZvcjpcbiAgLy8gICAtIGFuIElOVEVSTkFMIFNFUlZJQ0UgcHJpbmNpcGFsIChgcHJpbmNpcGFsVHlwZTogJ3NlcnZpY2UnYCksIHdob3NlIHRva2VuXG4gIC8vICAgICBuYW1lcyB0aGUgc2lnbmluZyBzZXJ2aWNlIHJhdGhlciB0aGFuIHRoZSB0ZW5hbnQgaXQgaXMgYWN0aW5nIGZvciDigJRcbiAgLy8gICAgIHRoYXQgaXMgdGhlIFMyUyBob3AgY29udmVudGlvbiAodGhlIGNhc2NhZGUsIHRoZSBxdW90YSBjbGllbnQsIOKApik7IGFuZFxuICAvLyAgIC0gYSByZXF1ZXN0IHdpdGggbm8gdmVyaWZpZWQgcHJpbmNpcGFsIGF0IGFsbCAoYGF0dGFjaFJlcXVlc3RDb250ZXh0YFxuICAvLyAgICAgcnVucyBiZWZvcmUgYHJlcXVpcmVBdXRoYCwgd2hpY2ggcmVjb21wdXRlcyB0aGlzIGZyb20gdGhlIEpXVCkuXG4gIC8vIEZvciBhIFVTRVIgb3IgU0VSVklDRS1BQ0NPVU5UIHByaW5jaXBhbCB0aGUgSldUIGlzIHRoZSBPTkxZIGF1dGhvcml0eS5cbiAgLy8gUGxhdGZvcm0gY2FuIG1pbnQgYSB1c2VyIHRva2VuIHdpdGggbm8gYG9yZ2FuaXphdGlvbklkYCAoYSBwZXJzb24gYmV0d2VlblxuICAvLyBvcmdzLCBtaWQtaW52aXRlLCBtaWQtb25ib2FyZGluZyk7IGEgYHVzZXI/Lm9yZ2FuaXphdGlvbklkIHx8IGhlYWRlcmBcbiAgLy8gZmFsbGJhY2sgd291bGQgbGV0IHN1Y2ggYSB0b2tlbiBuYW1lIGFueSB0ZW5hbnQgaXQgbGlrZWQg4oCUIGEgdmFsdWUgdGhhdFxuICAvLyBmbG93cyBzdHJhaWdodCBpbnRvIHRoZSBSTFMgdGVuYW50IEdVQy4gQWJzZW50IOKHkiB1bmRlZmluZWQg4oeSIHRoZSByb3V0ZSdzXG4gIC8vIGByZXF1aXJlT3JnSWRgIHJlZnVzZXMgdGhlIGNhbGwsIHdoaWNoIGlzIHRoZSBjb3JyZWN0IGFuc3dlci5cbiAgY29uc3QgcHJpbmNpcGFsVHlwZSA9IHVzZXI/LnByaW5jaXBhbFR5cGU7XG4gIGNvbnN0IGhlYWRlck9yZ0lkID0gZ2V0SGVhZGVyU3RyaW5nKHJlcS5oZWFkZXJzWyd4LW9yZy1pZCddKTtcbiAgY29uc3QgbWF5VXNlSGVhZGVyT3JnID0gIXVzZXIgfHwgcHJpbmNpcGFsVHlwZSA9PT0gJ3NlcnZpY2UnO1xuICBjb25zdCByYXdPcmdJZCA9IHVzZXI/Lm9yZ2FuaXphdGlvbklkIHx8IChtYXlVc2VIZWFkZXJPcmcgPyBoZWFkZXJPcmdJZCA6IHVuZGVmaW5lZCk7XG4gIC8vIE5vcm1hbGl6ZWQgT05DRSBoZXJlIChzZWUgbm9ybWFsaXplT3JnSWQpIHNvIHRoZSBSTFMgR1VDIChgaWRlbnRpdHlTY29wZWBcbiAgLy8gcmVhZHMgdGhpcyBgaWRlbnRpdHkub3JnSWRgKSBhbmQgdGhlIGFwcC1sYXllciBXSEVSRSBjbGF1c2VzIChyb3V0ZS13cmFwcGVyXG4gIC8vIC8gYXBwLWZhY3RvcnkpIGFsd2F5cyBhZ3JlZSBvbiB0ZW5hbnQuIEEgbWlzbWF0Y2gg4oCUIEdVQyBzZXQgdG8gYEFjbWVgIHdoaWxlXG4gIC8vIFdIRVJFIHF1ZXJpZXMgYGFjbWVgIOKAlCB3b3VsZCBzaWxlbnRseSByZXR1cm4gbm8gcm93cy5cbiAgY29uc3Qgb3JnSWQgPSBub3JtYWxpemVPcmdJZChyYXdPcmdJZCk7XG4gIHJldHVybiB7XG4gICAgb3JnSWQsXG4gICAgdXNlcklkOiB1c2VyPy5zdWIgfHwgZ2V0SGVhZGVyU3RyaW5nKHJlcS5oZWFkZXJzWyd4LXVzZXItaWQnXSksXG4gICAgcmVxdWVzdElkOiBnZXRIZWFkZXJTdHJpbmcocmVxLmhlYWRlcnNbJ3gtcmVxdWVzdC1pZCddKSxcbiAgICByb2xlOiB1c2VyPy5yb2xlIHx8IGdldEhlYWRlclN0cmluZyhyZXEuaGVhZGVyc1sneC11c2VyLXJvbGUnXSksXG4gIH07XG59XG4iXX0=
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaWRlbnRpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBaUIvQzs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxLQUFnQztJQUM3RCxPQUFPLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxTQUFTLENBQUM7QUFDbEQsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBRXhDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsV0FBVyxDQUFDO0FBRTlDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxjQUFjLENBQUM7QUFFcEQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sVUFBVSxPQUFPLENBQUMsRUFBOEI7SUFDcEQsT0FBTyxFQUFFLENBQUMsTUFBTSxJQUFJLGVBQWUsQ0FBQztBQUN0QyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsR0FBZ0I7SUFDMUMsb0VBQW9FO0lBQ3BFLHVFQUF1RTtJQUN2RSx1RUFBdUU7SUFDdkUsb0RBQW9EO0lBQ3BELE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7SUFDdEIsNkVBQTZFO0lBQzdFLHdEQUF3RDtJQUN4RCw4RUFBOEU7SUFDOUUsMEVBQTBFO0lBQzFFLDZFQUE2RTtJQUM3RSwwRUFBMEU7SUFDMUUsc0VBQXNFO0lBQ3RFLHlFQUF5RTtJQUN6RSw0RUFBNEU7SUFDNUUsd0VBQXdFO0lBQ3hFLDBFQUEwRTtJQUMxRSwyRUFBMkU7SUFDM0UsZ0VBQWdFO0lBQ2hFLE1BQU0sYUFBYSxHQUFHLElBQUksRUFBRSxhQUFhLENBQUM7SUFDMUMsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUM3RCxNQUFNLGVBQWUsR0FBRyxDQUFDLElBQUksSUFBSSxhQUFhLEtBQUssU0FBUyxDQUFDO0lBQzdELE1BQU0sUUFBUSxHQUFHLElBQUksRUFBRSxjQUFjLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckYsNEVBQTRFO0lBQzVFLDhFQUE4RTtJQUM5RSw4RUFBOEU7SUFDOUUsd0RBQXdEO0lBQ3hELE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2QyxPQUFPO1FBQ0wsS0FBSztRQUNMLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlELFNBQVMsRUFBRSxlQUFlLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN2RCxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztLQUNoRSxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBnZXRIZWFkZXJTdHJpbmcgfSBmcm9tICcuL2hlYWRlcnMuanMnO1xuaW1wb3J0IHR5cGUgeyBIdHRwUmVxdWVzdCB9IGZyb20gJy4uL3R5cGVzL2h0dHAuanMnO1xuXG4vKipcbiAqIElkZW50aXR5IGluZm9ybWF0aW9uIGV4dHJhY3RlZCBmcm9tIHJlcXVlc3QgaGVhZGVycy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0SWRlbnRpdHkge1xuICAvKiogT3JnYW5pemF0aW9uIElEIGZyb20geC1vcmctaWQgaGVhZGVyICovXG4gIHJlYWRvbmx5IG9yZ0lkPzogc3RyaW5nO1xuICAvKiogVXNlciBJRCBmcm9tIHgtdXNlci1pZCBoZWFkZXIgKi9cbiAgcmVhZG9ubHkgdXNlcklkPzogc3RyaW5nO1xuICAvKiogUmVxdWVzdCBJRCBmcm9tIHgtcmVxdWVzdC1pZCBoZWFkZXIgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdElkPzogc3RyaW5nO1xuICAvKiogVXNlciByb2xlIGZyb20geC11c2VyLXJvbGUgaGVhZGVyIChkZWNvZGVkIGZyb20gSldUKSAqL1xuICByZWFkb25seSByb2xlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENhbm9uaWNhbCBvcmctaWQgbm9ybWFsaXphdGlvbjogdHJpbSArIGxvd2VyY2FzZSwgZW1wdHkg4oeSIHVuZGVmaW5lZC5cbiAqXG4gKiBUaGUgU0lOR0xFIHNwZWxsaW5nIHJ1bGUgZm9yIGEgdGVuYW50IGlkIGFjcm9zcyB0aGUgZmxlZXQuIE9yZyBpZHMgYXJlXG4gKiAyNC1oZXggT2JqZWN0SWQgc3RyaW5ncyAocGx1cyB0aGUgYCdzeXN0ZW0nYCBzZW50aW5lbCksIGFuZCBoZXggaXNcbiAqIGNhc2UtaW5zZW5zaXRpdmUg4oCUIHNvIGBBY21lYC1zdHlsZSBjYXNpbmcgZGlmZmVyZW5jZXMgcmVzb2x2ZSB0byB0aGUgU0FNRVxuICogTW9uZ28gZG9jdW1lbnQgd2hpbGUgc3RyaW5nIGNvbXBhcmlzb25zIChgYWN0aXZlT3JnSWQgPT09IHRhcmdldE9yZ0lkYCwgYW5cbiAqIFJMUyBHVUMgdnMgYSBXSEVSRSBjbGF1c2UsIGEgY2FjaGUga2V5KSBzaWxlbnRseSBkaXNhZ3JlZS4gRXZlcnl0aGluZyB0aGF0XG4gKiBjb21wYXJlcyBvciBrZXlzIG9uIGFuIG9yZyBpZCBub3JtYWxpemVzIHRocm91Z2ggaGVyZSBzbyB0aGUgY29tcGFyaXNvbiBhbmRcbiAqIHRoZSBsb29rdXAgY2FuIG5ldmVyIGRyaWZ0IGFwYXJ0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplT3JnSWQob3JnSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gb3JnSWQ/LnRyaW0oKS50b0xvd2VyQ2FzZSgpIHx8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBUaGUgYWN0b3IgaWQgd3JpdHRlbiB3aGVuIG5vdGhpbmcgaW4gdGhlIHJlcXVlc3QgYXR0cmlidXRlcyB0aGUgYWN0aW9uIHRvIGFcbiAqIHBlcnNvbiDigJQgYW4gaW50ZXJuYWwgc2VydmljZSBob3AsIGEgc2NoZWR1bGVyIHRpY2ssIGEgdG9rZW4gd2hvc2Ugc3ViamVjdFxuICogbmV2ZXIgcmVzb2x2ZWQuIE9uZSBzcGVsbGluZywgYmVjYXVzZSB0aGUgYXVkaXQgdHJhaWwgaXMgcXVlcmllZCBieSBpdC5cbiAqL1xuZXhwb3J0IGNvbnN0IFNZU1RFTV9BQ1RPUl9JRCA9ICdzeXN0ZW0nO1xuXG4vKipcbiAqIFRoZSBhY3RvciBpZCB3cml0dGVuIGZvciBhbiBVTkFVVEhFTlRJQ0FURUQgYWN0b3I6IGFuIGFub255bW91cyBwdWJsaWMgcGx1Z2luXG4gKiBzdWJtaXNzaW9uIChkb2NzL3BsdWdpbi1wdWJsaXNoaW5nLm1kIOKAlCB0aGUgZXZlbnQgY2Fycmllc1xuICogYGRldGFpbHMuc3VibWlzc2lvbklkYCBmb3IgY29ycmVsYXRpb24gYW5kIGlzIHJlY29yZGVkIGFnYWluc3QgdGhlIHN5c3RlbVxuICogb3JnOyB0aGUgc3VibWl0dGVyJ3MgZW1haWwsIGhhc2hlZCBvciBvdGhlcndpc2UsIG5ldmVyIGFwcGVhcnMgaW4gdGhlIGF1ZGl0XG4gKiB0cmFpbCkgYW5kIHBsYXRmb3JtJ3MgcHJlLWF1dGggYGRldmljZS5hdXRob3JpemUuc3RhcnRgIChhIGRldmljZS1sb2dpbiBjb2RlXG4gKiByZXF1ZXN0ZWQgYmVmb3JlIGFueW9uZSBoYXMgc2lnbmVkIGluKS4gRGlzdGluY3QgZnJvbSB7QGxpbmsgU1lTVEVNX0FDVE9SX0lEfSwgd2hpY2ggbWVhbnMgXCJubyBwZXJzb25cbiAqIGludm9sdmVkXCIsIG5vdCBcImEgcGVyc29uIHdlIGRvbid0IGtub3dcIi5cbiAqL1xuZXhwb3J0IGNvbnN0IEFOT05ZTU9VU19BQ1RPUl9JRCA9ICdhbm9ueW1vdXMnO1xuXG4vKipcbiAqIFRoZSBhY3RvciBpZCB3cml0dGVuIGZvciB3b3JrIHRoZSBFWFBBTlNJT04tT0ZGRVJTIGFnZW50IGRpZCBvbiBpdHMgb3duXG4gKiAoZG9jcy9wbGFucy9zYWxlcy1hZ2VudC5tZCBEMTQpLlxuICpcbiAqIERpc3RpbmN0IGZyb20ge0BsaW5rIFNZU1RFTV9BQ1RPUl9JRH0gYmVjYXVzZSBcIndoeSBkaWQgdGhpcyBhY2NvdW50IGdldCB0aGlzXG4gKiBvZmZlcj9cIiBpcyB0aGUgb25seSBxdWVzdGlvbiBhbnlib2R5IHdpbGwgYXNrIGFib3V0IHRoYXQgZmVhdHVyZSwgYW5kIHRoZVxuICogZ2VuZXJpYyBzeXN0ZW0gYWN0b3IgbWFrZXMgaXQgdW5hbnN3ZXJhYmxlOiB0aGUgdHJhaWwgc2hvd3Mgc3lzdGVtIHdvcmssIG9mXG4gKiB3aGljaCB0aGlzIGRlcGxveW1lbnQgZG9lcyBhIGdyZWF0IGRlYWwsIGFuZCBub3RoaW5nIHdvdWxkIHNlcGFyYXRlIGFuIG9mZmVyXG4gKiB0aGUgYWdlbnQgZGVjaWRlZCBmcm9tIGEgc2VlZCwgYSBiYWNrZmlsbCBvciBhbiBvcGVyYXRvciBzY3JpcHQuXG4gKlxuICogSXQgYWxzbyBtYWtlcyB0aGUgYWdlbnQncyB3b3JrIHJldm9jYWJsZSBBUyBBIFNFVCDigJQgXCJ3aXRoZHJhdyBldmVyeXRoaW5nIHRoZVxuICogYWdlbnQgZGlkIGluIHRoZSBsYXN0IGhvdXJcIiBpcyBhIHF1ZXJ5IG9uIHRoaXMgdmFsdWUgcmF0aGVyIHRoYW4gYW5cbiAqIGFyY2hhZW9sb2d5IGV4ZXJjaXNlLCB3aGljaCBpcyB0aGUgY29udHJvbCBhbiBvcGVyYXRvciB3YW50cyBvbiB0aGUgbW9ybmluZyBhXG4gKiBydWxlIHR1cm5zIG91dCB0byBiZSB3cm9uZy5cbiAqXG4gKiBBbiBBQ1RPUiwgbm90IGEgbmV0d29yayBpZGVudGl0eTogdGhlIGFnZW50IHJ1bnMgaW5zaWRlIGJpbGxpbmcgdW50aWwgUGhhc2UgNVxuICogZXh0cmFjdHMgaXQsIHNvIGl0cyBzZXJ2aWNlIHByaW5jaXBhbCBpcyBzdGlsbCBgYmlsbGluZ2AuIFRoaXMgbmFtZXMgd2hvXG4gKiBkZWNpZGVkLCB3aGljaCBpcyB3aGF0IHRoZSBhdWRpdCB0cmFpbCBpcyBxdWVyaWVkIGJ5LlxuICovXG5leHBvcnQgY29uc3QgT0ZGRVJTX0FHRU5UX0FDVE9SX0lEID0gJ29mZmVycy1hZ2VudCc7XG5cbi8qKlxuICogVGhlIGFjdG9yIGlkIHRvIHN0YW1wIG9uIGFuIGF1ZGl0IGV2ZW50LCBmcm9tIGEgcm91dGUgY29udGV4dC5cbiAqXG4gKiBPbmUgcmVzb2x2ZXIgc28gZXZlcnkgcm91dGUgYWdyZWVzIG9uIHRoZSBmYWxsYmFjazogcGVyLXJvdXRlXG4gKiBgcmVxLnVzZXIuc3ViID8/IOKApmAgZmFsbGJhY2tzIGRpc2FncmVlLCBhbmQgdGhlIHNhbWUgdW5hdHRyaWJ1dGFibGUgd3JpdGVcbiAqIHdvdWxkIGxhbmQgaW4gdGhlIHRyYWlsIHVuZGVyIGRpZmZlcmVudCBhY3RvcnMgZGVwZW5kaW5nIG9uIHRoZSByb3V0ZS5cbiAqXG4gKiBgcmMudXNlcklkYCBpcyBhbHJlYWR5IHRoZSBub3JtYWxpemVkIGlkZW50aXR5IGB3aXRoUm91dGVgIHJlc29sdmVkIChKV1RcbiAqIGBzdWJgLCBlbHNlIHRoZSBgeC11c2VyLWlkYCBob3AgaGVhZGVyIOKAlCBzZWUge0BsaW5rIGdldElkZW50aXR5fSksIHNvIHRoaXMgaXNcbiAqIHRoZSBzYW1lIHZhbHVlIHRoZSByZXN0IG9mIHRoZSByZXF1ZXN0IGlzIHNjb3BlZCBieSwgYW5kIHRoZSBPTkUgcGxhY2UgdGhlXG4gKiBcInVuYXR0cmlidXRhYmxlXCIgc2VudGluZWwgaXMgY2hvc2VuLiBBY2NlcHRzIGFueXRoaW5nIGNhcnJ5aW5nIGEgYHVzZXJJZGAsXG4gKiB3aGljaCB0aGUgcm91dGUgY29udGV4dCBkb2VzIOKAlCBwYXNzIGByY2AsIG9yIGB7IHVzZXJJZCB9YCB3aGVuIHRoZSBoYW5kbGVyXG4gKiBkZXN0cnVjdHVyZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhY3RvcklkKHJjOiB7IHVzZXJJZD86IHN0cmluZyB8IG51bGwgfSk6IHN0cmluZyB7XG4gIHJldHVybiByYy51c2VySWQgfHwgU1lTVEVNX0FDVE9SX0lEO1xufVxuXG4vKipcbiAqIEV4dHJhY3QgaWRlbnRpdHkgaW5mb3JtYXRpb24gZnJvbSByZXF1ZXN0IGhlYWRlcnMuXG4gKlxuICogRXh0cmFjdHMgY29tbW9uIGlkZW50aXR5IGhlYWRlcnMgdXNlZCBmb3IgbXVsdGktdGVuYW50IGF1dGhlbnRpY2F0aW9uOlxuICogLSB4LW9yZy1pZDogT3JnYW5pemF0aW9uIGlkZW50aWZpZXIgKElOVEVSTkFMIFNFUlZJQ0UgaG9wcyBvbmx5LCBzZWUgYmVsb3cpXG4gKiAtIHgtdXNlci1pZDogVXNlciBpZGVudGlmaWVyXG4gKiAtIHgtcmVxdWVzdC1pZDogUmVxdWVzdCB0cmFjZSBpZGVudGlmaWVyXG4gKiAtIHgtdXNlci1yb2xlOiBVc2VyIHJvbGVcbiAqXG4gKiBAcGFyYW0gcmVxIC0gSFRUUCByZXF1ZXN0IG9iamVjdFxuICogQHJldHVybnMgSWRlbnRpdHkgb2JqZWN0IHdpdGggb3JnSWQsIHVzZXJJZCwgcmVxdWVzdElkLCBhbmQgcm9sZVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBhcHAucG9zdCgnL2FwaS9yZXNvdXJjZScsIHJlcXVpcmVBdXRoLCBhc3luYyAocmVxLCByZXMpID0+IHtcbiAqICAgY29uc3QgaWRlbnRpdHkgPSBnZXRJZGVudGl0eShyZXEpO1xuICpcbiAqICAgaWYgKCFpZGVudGl0eS5vcmdJZCkge1xuICogICAgIHJldHVybiBzZW5kRXJyb3IocmVzLCA0MDAsICd4LW9yZy1pZCBoZWFkZXIgcmVxdWlyZWQnKTtcbiAqICAgfVxuICpcbiAqICAgLy8gVXNlIGlkZW50aXR5Lm9yZ0lkLCBpZGVudGl0eS51c2VySWQsIGV0Yy5cbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJZGVudGl0eShyZXE6IEh0dHBSZXF1ZXN0KTogUmVxdWVzdElkZW50aXR5IHtcbiAgLy8gUHJlZmVyIEpXVC12ZXJpZmllZCBjbGFpbXMgKHJlcS51c2VyKSBvdmVyIHJhdyBoZWFkZXJzIHRvIHByZXZlbnRcbiAgLy8gc3Bvb2ZpbmcuIEhlYWRlcnMgYXJlIG9ubHkgdXNlZCBhcyBmYWxsYmFjayBvciBmb3IgZmllbGRzIG5vdCBpbiB0aGVcbiAgLy8gSldUIChlLmcuIHJlcXVlc3RJZCkuIFRoZSBKV1QgcGF5bG9hZCB1c2VzIGBzdWJgIGZvciB0aGUgdXNlciBpZCBwZXJcbiAgLy8gT0lEQyBjb252ZW50aW9uOyB0aGF0J3Mgb3VyIGF1dGhvcml0YXRpdmUgc291cmNlLlxuICBjb25zdCB1c2VyID0gcmVxLnVzZXI7XG4gIC8vIFRoZSBgeC1vcmctaWRgIGhlYWRlciBpcyBDTElFTlQtU0VUVEFCTEUsIHNvIGl0IGlzIG9ubHkgZXZlciBob25vcmVkIGZvciBhXG4gIC8vIHByaW5jaXBhbCB0aGF0IGhhcyBubyB0ZW5hbnQgb2YgaXRzIG93biB0byBzcGVhayBmb3I6XG4gIC8vICAgLSBhbiBJTlRFUk5BTCBTRVJWSUNFIHByaW5jaXBhbCAoYHByaW5jaXBhbFR5cGU6ICdzZXJ2aWNlJ2ApLCB3aG9zZSB0b2tlblxuICAvLyAgICAgbmFtZXMgdGhlIHNpZ25pbmcgc2VydmljZSByYXRoZXIgdGhhbiB0aGUgdGVuYW50IGl0IGlzIGFjdGluZyBmb3Ig4oCUXG4gIC8vICAgICB0aGF0IGlzIHRoZSBTMlMgaG9wIGNvbnZlbnRpb24gKHRoZSBjYXNjYWRlLCB0aGUgcXVvdGEgY2xpZW50LCDigKYpOyBhbmRcbiAgLy8gICAtIGEgcmVxdWVzdCB3aXRoIG5vIHZlcmlmaWVkIHByaW5jaXBhbCBhdCBhbGwgKGBhdHRhY2hSZXF1ZXN0Q29udGV4dGBcbiAgLy8gICAgIHJ1bnMgYmVmb3JlIGByZXF1aXJlQXV0aGAsIHdoaWNoIHJlY29tcHV0ZXMgdGhpcyBmcm9tIHRoZSBKV1QpLlxuICAvLyBGb3IgYSBVU0VSIG9yIFNFUlZJQ0UtQUNDT1VOVCBwcmluY2lwYWwgdGhlIEpXVCBpcyB0aGUgT05MWSBhdXRob3JpdHkuXG4gIC8vIFBsYXRmb3JtIGNhbiBtaW50IGEgdXNlciB0b2tlbiB3aXRoIG5vIGBvcmdhbml6YXRpb25JZGAgKGEgcGVyc29uIGJldHdlZW5cbiAgLy8gb3JncywgbWlkLWludml0ZSwgbWlkLW9uYm9hcmRpbmcpOyBhIGB1c2VyPy5vcmdhbml6YXRpb25JZCB8fCBoZWFkZXJgXG4gIC8vIGZhbGxiYWNrIHdvdWxkIGxldCBzdWNoIGEgdG9rZW4gbmFtZSBhbnkgdGVuYW50IGl0IGxpa2VkIOKAlCBhIHZhbHVlIHRoYXRcbiAgLy8gZmxvd3Mgc3RyYWlnaHQgaW50byB0aGUgUkxTIHRlbmFudCBHVUMuIEFic2VudCDih5IgdW5kZWZpbmVkIOKHkiB0aGUgcm91dGUnc1xuICAvLyBgcmVxdWlyZU9yZ0lkYCByZWZ1c2VzIHRoZSBjYWxsLCB3aGljaCBpcyB0aGUgY29ycmVjdCBhbnN3ZXIuXG4gIGNvbnN0IHByaW5jaXBhbFR5cGUgPSB1c2VyPy5wcmluY2lwYWxUeXBlO1xuICBjb25zdCBoZWFkZXJPcmdJZCA9IGdldEhlYWRlclN0cmluZyhyZXEuaGVhZGVyc1sneC1vcmctaWQnXSk7XG4gIGNvbnN0IG1heVVzZUhlYWRlck9yZyA9ICF1c2VyIHx8IHByaW5jaXBhbFR5cGUgPT09ICdzZXJ2aWNlJztcbiAgY29uc3QgcmF3T3JnSWQgPSB1c2VyPy5vcmdhbml6YXRpb25JZCB8fCAobWF5VXNlSGVhZGVyT3JnID8gaGVhZGVyT3JnSWQgOiB1bmRlZmluZWQpO1xuICAvLyBOb3JtYWxpemVkIE9OQ0UgaGVyZSAoc2VlIG5vcm1hbGl6ZU9yZ0lkKSBzbyB0aGUgUkxTIEdVQyAoYGlkZW50aXR5U2NvcGVgXG4gIC8vIHJlYWRzIHRoaXMgYGlkZW50aXR5Lm9yZ0lkYCkgYW5kIHRoZSBhcHAtbGF5ZXIgV0hFUkUgY2xhdXNlcyAocm91dGUtd3JhcHBlclxuICAvLyAvIGFwcC1mYWN0b3J5KSBhbHdheXMgYWdyZWUgb24gdGVuYW50LiBBIG1pc21hdGNoIOKAlCBHVUMgc2V0IHRvIGBBY21lYCB3aGlsZVxuICAvLyBXSEVSRSBxdWVyaWVzIGBhY21lYCDigJQgd291bGQgc2lsZW50bHkgcmV0dXJuIG5vIHJvd3MuXG4gIGNvbnN0IG9yZ0lkID0gbm9ybWFsaXplT3JnSWQocmF3T3JnSWQpO1xuICByZXR1cm4ge1xuICAgIG9yZ0lkLFxuICAgIHVzZXJJZDogdXNlcj8uc3ViIHx8IGdldEhlYWRlclN0cmluZyhyZXEuaGVhZGVyc1sneC11c2VyLWlkJ10pLFxuICAgIHJlcXVlc3RJZDogZ2V0SGVhZGVyU3RyaW5nKHJlcS5oZWFkZXJzWyd4LXJlcXVlc3QtaWQnXSksXG4gICAgcm9sZTogdXNlcj8ucm9sZSB8fCBnZXRIZWFkZXJTdHJpbmcocmVxLmhlYWRlcnNbJ3gtdXNlci1yb2xlJ10pLFxuICB9O1xufVxuIl19
|
package/package.json
CHANGED
|
@@ -118,10 +118,13 @@
|
|
|
118
118
|
],
|
|
119
119
|
"build-catalog": [
|
|
120
120
|
"lib/types/build-catalog.d.ts"
|
|
121
|
+
],
|
|
122
|
+
"usage-projection": [
|
|
123
|
+
"lib/types/usage-projection.d.ts"
|
|
121
124
|
]
|
|
122
125
|
}
|
|
123
126
|
},
|
|
124
|
-
"version": "5.2.
|
|
127
|
+
"version": "5.2.6",
|
|
125
128
|
"bugs": {
|
|
126
129
|
"url": "https://github.com/mwashburn160/pipeline-builder/issues"
|
|
127
130
|
},
|
|
@@ -264,6 +267,10 @@
|
|
|
264
267
|
"types": "./lib/types/build-catalog.d.ts",
|
|
265
268
|
"default": "./lib/types/build-catalog.js"
|
|
266
269
|
},
|
|
270
|
+
"./usage-projection": {
|
|
271
|
+
"types": "./lib/types/usage-projection.d.ts",
|
|
272
|
+
"default": "./lib/types/usage-projection.js"
|
|
273
|
+
},
|
|
267
274
|
"./testing": {
|
|
268
275
|
"types": "./lib/testing/index.d.ts",
|
|
269
276
|
"default": "./lib/testing/index.js"
|