@dollhousemcp/mcp-server 2.0.39 → 2.0.40
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/CHANGELOG.md +8 -0
- package/dist/cache/CollectionCache.d.ts +1 -0
- package/dist/cache/CollectionCache.d.ts.map +1 -1
- package/dist/cache/CollectionCache.js +7 -16
- package/dist/cache/CollectionIndexCache.d.ts +1 -1
- package/dist/cache/CollectionIndexCache.d.ts.map +1 -1
- package/dist/cache/CollectionIndexCache.js +3 -2
- package/dist/cache/cachePaths.d.ts +7 -0
- package/dist/cache/cachePaths.d.ts.map +1 -0
- package/dist/cache/cachePaths.js +15 -0
- package/dist/di/Container.js +2 -2
- package/dist/elements/agents/AgentManager.d.ts +121 -1
- package/dist/elements/agents/AgentManager.d.ts.map +1 -1
- package/dist/elements/agents/AgentManager.js +203 -31
- package/dist/elements/base/BaseElementManager.d.ts.map +1 -1
- package/dist/elements/base/BaseElementManager.js +4 -18
- package/dist/elements/memories/Memory.d.ts +7 -0
- package/dist/elements/memories/Memory.d.ts.map +1 -1
- package/dist/elements/memories/Memory.js +68 -34
- package/dist/elements/memories/MemoryManager.d.ts.map +1 -1
- package/dist/elements/memories/MemoryManager.js +10 -2
- package/dist/elements/memories/memoryYamlValidation.d.ts +6 -0
- package/dist/elements/memories/memoryYamlValidation.d.ts.map +1 -0
- package/dist/elements/memories/memoryYamlValidation.js +25 -0
- package/dist/generated/version.d.ts +2 -2
- package/dist/generated/version.js +3 -3
- package/dist/handlers/CollectionHandler.d.ts.map +1 -1
- package/dist/handlers/CollectionHandler.js +2 -3
- package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts +1 -1
- package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/MCPAQLHandler.js +135 -71
- package/dist/handlers/mcp-aql/OperationSchema.js +4 -4
- package/dist/handlers/mcp-aql/policies/ElementPolicies.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/policies/ElementPolicies.js +7 -5
- package/dist/portfolio/PortfolioManager.d.ts +5 -1
- package/dist/portfolio/PortfolioManager.d.ts.map +1 -1
- package/dist/portfolio/PortfolioManager.js +9 -3
- package/dist/security/contentValidator.d.ts +9 -1
- package/dist/security/contentValidator.d.ts.map +1 -1
- package/dist/security/contentValidator.js +24 -3
- package/dist/security/secureYamlParser.d.ts +3 -1
- package/dist/security/secureYamlParser.d.ts.map +1 -1
- package/dist/security/secureYamlParser.js +3 -3
- package/dist/security/securityMonitor.d.ts +1 -1
- package/dist/security/securityMonitor.d.ts.map +1 -1
- package/dist/security/securityMonitor.js +1 -1
- package/dist/security/validation/BackgroundValidator.d.ts.map +1 -1
- package/dist/security/validation/BackgroundValidator.js +6 -4
- package/dist/storage/MemoryMetadataExtractor.d.ts.map +1 -1
- package/dist/storage/MemoryMetadataExtractor.js +7 -2
- package/dist/utils/filesystem.d.ts +6 -0
- package/dist/utils/filesystem.d.ts.map +1 -1
- package/dist/utils/filesystem.js +22 -1
- package/package.json +9 -9
- package/server.json +2 -2
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* for tracking and alerting on security-related events.
|
|
6
6
|
*/
|
|
7
7
|
export interface SecurityEvent {
|
|
8
|
-
type: 'CONTENT_INJECTION_ATTEMPT' | 'YAML_INJECTION_ATTEMPT' | 'PATH_TRAVERSAL_ATTEMPT' | 'TOKEN_VALIDATION_FAILURE' | 'UPDATE_SECURITY_VIOLATION' | 'RATE_LIMIT_EXCEEDED' | 'YAML_PARSING_WARNING' | 'YAML_PARSE_SUCCESS' | 'TOKEN_VALIDATION_SUCCESS' | 'PATH_VALIDATION_SUCCESS' | 'RATE_LIMIT_WARNING' | 'TOKEN_CACHE_CLEARED' | 'YAML_UNICODE_ATTACK' | 'UNICODE_DIRECTION_OVERRIDE' | 'UNICODE_MIXED_SCRIPT' | 'UNICODE_VALIDATION_ERROR' | 'CONTENT_SIZE_EXCEEDED' | 'INCLUDE_DEPTH_EXCEEDED' | 'TEMPLATE_RENDERED' | 'TEMPLATE_INCLUDE' | 'TEMPLATE_LOADED' | 'TEMPLATE_SAVED' | 'TEMPLATE_DELETED' | 'MEMORY_CREATED' | 'MEMORY_ADDED' | 'MEMORY_SEARCHED' | 'SENSITIVE_MEMORY_DELETED' | 'RETENTION_POLICY_ENFORCED' | 'MEMORY_CLEARED' | 'MEMORY_LOADED' | 'MEMORY_SAVED' | 'MEMORY_DELETED' | 'MEMORY_LOAD_FAILED' | 'MEMORY_SAVE_FAILED' | 'MEMORY_LIST_ITEM_FAILED' | 'MEMORY_IMPORT_FAILED' | 'MEMORY_DESERIALIZE_FAILED' | 'MEMORY_INTEGRITY_VIOLATION' | 'MEMORY_UNICODE_VALIDATION_FAILED' | 'MEMORY_DUPLICATE_DETECTED' | 'SEED_MEMORY_INSTALLED' | 'SEED_MEMORY_INSTALLATION_FAILED' | 'ELEMENT_CREATED' | 'ELEMENT_LOADED' | 'ELEMENT_EDITED' | 'ELEMENT_ACTIVATED' | 'ELEMENT_DEACTIVATED' | 'ELEMENT_VALIDATED' | 'ELEMENT_DELETED' | 'AGENT_ACTIVATED' | 'AGENT_ACTIVATION_FAILED' | 'AGENT_ACTIVATION_ROLLBACK' | 'AGENT_DEACTIVATED' | 'AGENT_EXECUTED' | 'CONFIG_UPDATED' | 'IDENTITY_CHANGED' | 'OPERATION_COMPLETED' | 'OPERATION_FAILED' | 'BATCH_COMPLETED' | 'BATCH_REJECTED' | 'CONFIRMATION_RECORDED' | 'GATEKEEPER_DECISION' | 'AUTH_FLOW_INITIATED' | 'AGENT_DECISION' | 'RULE_ENGINE_CONFIG_UPDATE' | 'RULE_ENGINE_CONFIG_VALIDATION_ERROR' | 'GOAL_TEMPLATE_APPLIED' | 'GOAL_TEMPLATE_VALIDATION' | 'ENSEMBLE_CIRCULAR_DEPENDENCY' | 'ENSEMBLE_RESOURCE_LIMIT_EXCEEDED' | 'ENSEMBLE_ACTIVATION_TIMEOUT' | 'ENSEMBLE_ACTIVATION_FAILED' | 'ENSEMBLE_SUSPICIOUS_CONDITION' | 'ENSEMBLE_CONDITION_EVALUATION_FAILED' | 'ENSEMBLE_NESTED_DEPTH_EXCEEDED' | 'ENSEMBLE_CONTEXT_SIZE_EXCEEDED' | 'ENSEMBLE_CONTEXT_VALUE_TOO_LARGE' | 'ENSEMBLE_SAVED' | 'ENSEMBLE_IMPORTED' | 'ENSEMBLE_DELETED' | 'PORTFOLIO_INITIALIZATION' | 'PORTFOLIO_POPULATED' | 'FILE_COPIED' | 'DIRECTORY_MIGRATION' | 'PORTFOLIO_CACHE_INVALIDATION' | 'PORTFOLIO_FETCH_SUCCESS' | 'TEST_DATA_BLOCKED' | 'TEST_PATH_SECURITY_RISK' | 'TEST_PRODUCTION_ACCESS_BLOCKED' | 'TEST_PATH_INVALID' | 'TEST_ENVIRONMENT_PRODUCTION_PATH' | 'TEST_ENVIRONMENT_DEPRECATED_VAR' | 'TOOL_CACHE_INVALIDATED' | 'FILE_READ' | 'FILE_WRITTEN' | 'FILE_DELETED' | 'DANGER_ZONE_TRIGGERED' | 'DANGER_ZONE_OPERATION' | 'AUTONOMY_DENIED' | 'AUTONOMY_PAUSED' | 'SAFETY_EVALUATION_FAILURE' | 'VERIFICATION_ATTEMPTED' | 'VERIFICATION_SUCCEEDED' | 'VERIFICATION_FAILED' | 'VERIFICATION_EXPIRED' | 'AGENT_AUTO_CONTINUED' | 'AGENT_STEP_RETRIED' | 'AGENT_AUTO_RESTARTED' | 'AGENT_RESILIENCE_LIMIT_REACHED' | 'PERMISSION_PROMPT_DENIED' | 'CLI_APPROVAL_REQUESTED' | 'CLI_APPROVAL_GRANTED' | 'CLI_APPROVAL_CONSUMED' | 'TOTP_ENROLLED' | 'TOTP_DISABLED' | 'TOTP_BACKUP_CODE_CONSUMED' | 'TOTP_VERIFICATION_FAILED' | 'CONSOLE_TOKEN_ROTATED';
|
|
8
|
+
type: 'CONTENT_INJECTION_ATTEMPT' | 'YAML_INJECTION_ATTEMPT' | 'PATH_TRAVERSAL_ATTEMPT' | 'TOKEN_VALIDATION_FAILURE' | 'UPDATE_SECURITY_VIOLATION' | 'RATE_LIMIT_EXCEEDED' | 'YAML_PARSING_WARNING' | 'YAML_PARSE_SUCCESS' | 'TOKEN_VALIDATION_SUCCESS' | 'PATH_VALIDATION_SUCCESS' | 'RATE_LIMIT_WARNING' | 'TOKEN_CACHE_CLEARED' | 'YAML_UNICODE_ATTACK' | 'UNICODE_DIRECTION_OVERRIDE' | 'UNICODE_MIXED_SCRIPT' | 'UNICODE_VALIDATION_ERROR' | 'CONTENT_SIZE_EXCEEDED' | 'INCLUDE_DEPTH_EXCEEDED' | 'TEMPLATE_RENDERED' | 'TEMPLATE_INCLUDE' | 'TEMPLATE_LOADED' | 'TEMPLATE_SAVED' | 'TEMPLATE_DELETED' | 'MEMORY_CREATED' | 'MEMORY_ADDED' | 'MEMORY_SEARCHED' | 'SENSITIVE_MEMORY_DELETED' | 'RETENTION_POLICY_ENFORCED' | 'MEMORY_CLEARED' | 'MEMORY_LOADED' | 'MEMORY_SAVED' | 'MEMORY_DELETED' | 'MEMORY_LOAD_FAILED' | 'MEMORY_SAVE_FAILED' | 'MEMORY_LIST_ITEM_FAILED' | 'MEMORY_IMPORT_FAILED' | 'MEMORY_DESERIALIZE_FAILED' | 'MEMORY_INTEGRITY_VIOLATION' | 'MEMORY_UNICODE_VALIDATION_FAILED' | 'MEMORY_DUPLICATE_DETECTED' | 'SEED_MEMORY_INSTALLED' | 'SEED_MEMORY_INSTALLATION_FAILED' | 'ELEMENT_CREATED' | 'ELEMENT_LOADED' | 'ELEMENT_EDITED' | 'ELEMENT_ACTIVATED' | 'ELEMENT_DEACTIVATED' | 'ELEMENT_VALIDATED' | 'ELEMENT_DELETED' | 'AGENT_ACTIVATED' | 'AGENT_ACTIVATION_FAILED' | 'AGENT_ACTIVATION_ROLLBACK' | 'AGENT_DEACTIVATED' | 'AGENT_EXECUTED' | 'AGENT_POLICY_RECOVERED' | 'CONFIG_UPDATED' | 'IDENTITY_CHANGED' | 'OPERATION_COMPLETED' | 'OPERATION_FAILED' | 'BATCH_COMPLETED' | 'BATCH_REJECTED' | 'CONFIRMATION_RECORDED' | 'GATEKEEPER_DECISION' | 'AUTH_FLOW_INITIATED' | 'AGENT_DECISION' | 'RULE_ENGINE_CONFIG_UPDATE' | 'RULE_ENGINE_CONFIG_VALIDATION_ERROR' | 'GOAL_TEMPLATE_APPLIED' | 'GOAL_TEMPLATE_VALIDATION' | 'ENSEMBLE_CIRCULAR_DEPENDENCY' | 'ENSEMBLE_RESOURCE_LIMIT_EXCEEDED' | 'ENSEMBLE_ACTIVATION_TIMEOUT' | 'ENSEMBLE_ACTIVATION_FAILED' | 'ENSEMBLE_SUSPICIOUS_CONDITION' | 'ENSEMBLE_CONDITION_EVALUATION_FAILED' | 'ENSEMBLE_NESTED_DEPTH_EXCEEDED' | 'ENSEMBLE_CONTEXT_SIZE_EXCEEDED' | 'ENSEMBLE_CONTEXT_VALUE_TOO_LARGE' | 'ENSEMBLE_SAVED' | 'ENSEMBLE_IMPORTED' | 'ENSEMBLE_DELETED' | 'PORTFOLIO_INITIALIZATION' | 'PORTFOLIO_POPULATED' | 'FILE_COPIED' | 'DIRECTORY_MIGRATION' | 'PORTFOLIO_CACHE_INVALIDATION' | 'PORTFOLIO_FETCH_SUCCESS' | 'TEST_DATA_BLOCKED' | 'TEST_PATH_SECURITY_RISK' | 'TEST_PRODUCTION_ACCESS_BLOCKED' | 'TEST_PATH_INVALID' | 'TEST_ENVIRONMENT_PRODUCTION_PATH' | 'TEST_ENVIRONMENT_DEPRECATED_VAR' | 'TOOL_CACHE_INVALIDATED' | 'FILE_READ' | 'FILE_WRITTEN' | 'FILE_DELETED' | 'DANGER_ZONE_TRIGGERED' | 'DANGER_ZONE_OPERATION' | 'AUTONOMY_DENIED' | 'AUTONOMY_PAUSED' | 'SAFETY_EVALUATION_FAILURE' | 'VERIFICATION_ATTEMPTED' | 'VERIFICATION_SUCCEEDED' | 'VERIFICATION_FAILED' | 'VERIFICATION_EXPIRED' | 'AGENT_AUTO_CONTINUED' | 'AGENT_STEP_RETRIED' | 'AGENT_AUTO_RESTARTED' | 'AGENT_RESILIENCE_LIMIT_REACHED' | 'PERMISSION_PROMPT_DENIED' | 'CLI_APPROVAL_REQUESTED' | 'CLI_APPROVAL_GRANTED' | 'CLI_APPROVAL_CONSUMED' | 'TOTP_ENROLLED' | 'TOTP_DISABLED' | 'TOTP_BACKUP_CODE_CONSUMED' | 'TOTP_VERIFICATION_FAILED' | 'CONSOLE_TOKEN_ROTATED';
|
|
9
9
|
severity: 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
|
|
10
10
|
source: string;
|
|
11
11
|
details: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"securityMonitor.d.ts","sourceRoot":"","sources":["../../src/security/securityMonitor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,2BAA2B,GAAG,wBAAwB,GAAG,wBAAwB,GACjF,0BAA0B,GAAG,2BAA2B,GAAG,qBAAqB,GAChF,sBAAsB,GAAG,oBAAoB,GAAG,0BAA0B,GAC1E,yBAAyB,GAAG,oBAAoB,GAAG,qBAAqB,GACxE,qBAAqB,GAAG,4BAA4B,GAAG,sBAAsB,GAC7E,0BAA0B,GAAG,uBAAuB,GAAG,wBAAwB,GAC/E,mBAAmB,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,gBAAgB,GAC/E,kBAAkB,GAAG,gBAAgB,GAAG,cAAc,GAAG,iBAAiB,GAC1E,0BAA0B,GAAG,2BAA2B,GAAG,gBAAgB,GAC3E,eAAe,GAAG,cAAc,GAAG,gBAAgB,GAAG,oBAAoB,GAC1E,oBAAoB,GAAG,yBAAyB,GAAG,sBAAsB,GACzE,2BAA2B,GAAG,4BAA4B,GAAG,kCAAkC,GAC/F,2BAA2B,GAAG,uBAAuB,GAAG,iCAAiC,GACzF,iBAAiB,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,mBAAmB,GAAG,qBAAqB,GACrG,mBAAmB,GAAG,iBAAiB,GACvC,iBAAiB,GAAG,yBAAyB,GAAG,2BAA2B,GAC3E,mBAAmB,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"securityMonitor.d.ts","sourceRoot":"","sources":["../../src/security/securityMonitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -126,4 +126,4 @@ export class SecurityMonitor {
|
|
|
126
126
|
this.dedup.clear();
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHlNb25pdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlY3VyaXR5L3NlY3VyaXR5TW9uaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUE2RGxFLHlFQUF5RTtBQUN6RSxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUM7QUFFL0Isc0RBQXNEO0FBQ3RELE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQztBQUUzQixNQUFNLE9BQU8sZUFBZTtJQUNsQixNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztJQUN0QixNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksYUFBYSxDQUFtQixJQUFJLENBQUMsQ0FBQztJQUMxRCxNQUFNLENBQUMsV0FBVyxDQUFxQztJQUN2RCxNQUFNLENBQVUsS0FBSyxHQUFHLElBQUksaUJBQWlCLENBQUMsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBRXZGLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBcUM7UUFDekQsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsT0FBTyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBb0I7UUFDMUMseUVBQXlFO1FBQ3pFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FB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LFlBQVk7WUFDWixvQkFBb0IsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ3RFLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsY0FBYyxDQUFDLGFBQXFCLENBQUM7UUFDMUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM5QixVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxVQUFVLENBQUMsQ0FBQztRQUN0RCxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFakQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQzVDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxlQUFlLENBQzVDLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyx3QkFBd0I7UUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNlY3VyaXR5IE1vbml0b3IgZm9yIERvbGxob3VzZU1DUFxuICogXG4gKiBDZW50cmFsaXplZCBzZWN1cml0eSBldmVudCBsb2dnaW5nIGFuZCBtb25pdG9yaW5nIHN5c3RlbVxuICogZm9yIHRyYWNraW5nIGFuZCBhbGVydGluZyBvbiBzZWN1cml0eS1yZWxhdGVkIGV2ZW50cy5cbiAqL1xuXG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgRXZpY3RpbmdRdWV1ZSB9IGZyb20gJy4uL3V0aWxzL0V2aWN0aW5nUXVldWUuanMnO1xuaW1wb3J0IHsgRXZlbnREZWR1cGxpY2F0b3IgfSBmcm9tICcuLi91dGlscy9FdmVudERlZHVwbGljYXRvci5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdXJpdHlFdmVudCB7XG4gIHR5cGU6ICdDT05URU5UX0lOSkVDVElPTl9BVFRFTVBUJyB8ICdZQU1MX0lOSkVDVElPTl9BVFRFTVBUJyB8ICdQQVRIX1RSQVZFUlNBTF9BVFRFTVBUJyB8XG4gICAgICAgICdUT0tFTl9WQUxJREFUSU9OX0ZBSUxVUkUnIHwgJ1VQREFURV9TRUNVUklUWV9WSU9MQVRJT04nIHwgJ1JBVEVfTElNSVRfRVhDRUVERUQnIHxcbiAgICAgICAgJ1lBTUxfUEFSU0lOR19XQVJOSU5HJyB8ICdZQU1MX1BBUlNFX1NVQ0NFU1MnIHwgJ1RPS0VOX1ZBTElEQVRJT05fU1VDQ0VTUycgfFxuICAgICAgICAnUEFUSF9WQUxJREFUSU9OX1NVQ0NFU1MnIHwgJ1JBVEVfTElNSVRfV0FSTklORycgfCAnVE9LRU5fQ0FDSEVfQ0xFQVJFRCcgfFxuICAgICAgICAnWUFNTF9VTklDT0RFX0FUVEFDSycgfCAnVU5JQ09ERV9ESVJFQ1RJT05fT1ZFUlJJREUnIHwgJ1VOSUNPREVfTUlYRURfU0NSSVBUJyB8XG4gICAgICAgICdVTklDT0RFX1ZBTElEQVRJT05fRVJST1InIHwgJ0NPTlRFTlRfU0laRV9FWENFRURFRCcgfCAnSU5DTFVERV9ERVBUSF9FWENFRURFRCcgfFxuICAgICAgICAnVEVNUExBVEVfUkVOREVSRUQnIHwgJ1RFTVBMQVRFX0lOQ0xVREUnIHwgJ1RFTVBMQVRFX0xPQURFRCcgfCAnVEVNUExBVEVfU0FWRUQnIHxcbiAgICAgICAgJ1RFTVBMQVRFX0RFTEVURUQnIHwgJ01FTU9SWV9DUkVBVEVEJyB8ICdNRU1PUllfQURERUQnIHwgJ01FTU9SWV9TRUFSQ0hFRCcgfFxuICAgICAgICAnU0VOU0lUSVZFX01FTU9SWV9ERUxFVEVEJyB8ICdSRVRFTlRJT05fUE9MSUNZX0VORk9SQ0VEJyB8ICdNRU1PUllfQ0xFQVJFRCcgfFxuICAgICAgICAnTUVNT1JZX0xPQURFRCcgfCAnTUVNT1JZX1NBVkVEJyB8ICdNRU1PUllfREVMRVRFRCcgfCAnTUVNT1JZX0xPQURfRkFJTEVEJyB8XG4gICAgICAgICdNRU1PUllfU0FWRV9GQUlMRUQnIHwgJ01FTU9SWV9MSVNUX0lURU1fRkFJTEVEJyB8ICdNRU1PUllfSU1QT1JUX0ZBSUxFRCcgfFxuICAgICAgICAnTUVNT1JZX0RFU0VSSUFMSVpFX0ZBSUxFRCcgfCAnTUVNT1JZX0lOVEVHUklUWV9WSU9MQVRJT04nIHwgJ01FTU9SWV9VTklDT0RFX1ZBTElEQVRJT05fRkFJTEVEJyB8XG4gICAgICAgICdNRU1PUllfRFVQTElDQVRFX0RFVEVDVEVEJyB8ICdTRUVEX01FTU9SWV9JTlNUQUxMRUQnIHwgJ1NFRURfTUVNT1JZX0lOU1RBTExBVElPTl9GQUlMRUQnIHxcbiAgICAgICAgJ0VMRU1FTlRfQ1JFQVRFRCcgfCAnRUxFTUVOVF9MT0FERUQnIHwgJ0VMRU1FTlRfRURJVEVEJyB8ICdFTEVNRU5UX0FDVElWQVRFRCcgfCAnRUxFTUVOVF9ERUFDVElWQVRFRCcgfFxuICAgICAgICAnRUxFTUVOVF9WQUxJREFURUQnIHwgJ0VMRU1FTlRfREVMRVRFRCcgfFxuICAgICAgICAnQUdFTlRfQUNUSVZBVEVEJyB8ICdBR0VOVF9BQ1RJVkFUSU9OX0ZBSUxFRCcgfCAnQUdFTlRfQUNUSVZBVElPTl9ST0xMQkFDSycgfFxuICAgICAgICAnQUdFTlRfREVBQ1RJVkFURUQnIHwgJ0FHRU5UX0VYRUNVVEVEJyB8XG4gICAgICAgICdDT05GSUdfVVBEQVRFRCcgfCAnSURFTlRJVFlfQ0hBTkdFRCcgfFxuICAgICAgICAnT1BFUkFUSU9OX0NPTVBMRVRFRCcgfCAnT1BFUkFUSU9OX0ZBSUxFRCcgfCAnQkFUQ0hfQ09NUExFVEVEJyB8ICdCQVRDSF9SRUpFQ1RFRCcgfFxuICAgICAgICAnQ09ORklSTUFUSU9OX1JFQ09SREVEJyB8ICdHQVRFS0VFUEVSX0RFQ0lTSU9OJyB8XG4gICAgICAgICdBVVRIX0ZMT1dfSU5JVElBVEVEJyB8XG4gICAgICAgICdBR0VOVF9ERUNJU0lPTicgfFxuICAgICAgICAnUlVMRV9FTkdJTkVfQ09ORklHX1VQREFURScgfCAnUlVMRV9FTkdJTkVfQ09ORklHX1ZBTElEQVRJT05fRVJST1InIHxcbiAgICAgICAgJ0dPQUxfVEVNUExBVEVfQVBQTElFRCcgfCAnR09BTF9URU1QTEFURV9WQUxJREFUSU9OJyB8XG4gICAgICAgICdFTlNFTUJMRV9DSVJDVUxBUl9ERVBFTkRFTkNZJyB8ICdFTlNFTUJMRV9SRVNPVVJDRV9MSU1JVF9FWENFRURFRCcgfFxuICAgICAgICAnRU5TRU1CTEVfQUNUSVZBVElPTl9USU1FT1VUJyB8ICdFTlNFTUJMRV9BQ1RJVkFUSU9OX0ZBSUxFRCcgfCAnRU5TRU1CTEVfU1VTUElDSU9VU19DT05ESVRJT04nIHxcbiAgICAgICAgJ0VOU0VNQkxFX0NPTkRJVElPTl9FVkFMVUFUSU9OX0ZBSUxFRCcgfFxuICAgICAgICAnRU5TRU1CTEVfTkVTVEVEX0RFUFRIX0VYQ0VFREVEJyB8ICdFTlNFTUJMRV9DT05URVhUX1NJWkVfRVhDRUVERUQnIHxcbiAgICAgICAgJ0VOU0VNQkxFX0NPTlRFWFRfVkFMVUVfVE9PX0xBUkdFJyB8ICdFTlNFTUJMRV9TQVZFRCcgfCAnRU5TRU1CTEVfSU1QT1JURUQnIHwgJ0VOU0VNQkxFX0RFTEVURUQnIHxcbiAgICAgICAgJ1BPUlRGT0xJT19JTklUSUFMSVpBVElPTicgfCAnUE9SVEZPTElPX1BPUFVMQVRFRCcgfCAnRklMRV9DT1BJRUQnIHwgJ0RJUkVDVE9SWV9NSUdSQVRJT04nIHxcbiAgICAgICAgJ1BPUlRGT0xJT19DQUNIRV9JTlZBTElEQVRJT04nIHwgJ1BPUlRGT0xJT19GRVRDSF9TVUNDRVNTJyB8ICdURVNUX0RBVEFfQkxPQ0tFRCcgfFxuICAgICAgICAnVEVTVF9QQVRIX1NFQ1VSSVRZX1JJU0snIHwgJ1RFU1RfUFJPRFVDVElPTl9BQ0NFU1NfQkxPQ0tFRCcgfCAnVEVTVF9QQVRIX0lOVkFMSUQnIHxcbiAgICAgICAgJ1RFU1RfRU5WSVJPTk1FTlRfUFJPRFVDVElPTl9QQVRIJyB8ICdURVNUX0VOVklST05NRU5UX0RFUFJFQ0FURURfVkFSJyB8ICdUT09MX0NBQ0hFX0lOVkFMSURBVEVEJyB8XG4gICAgICAgICdGSUxFX1JFQUQnIHwgJ0ZJTEVfV1JJVFRFTicgfCAnRklMRV9ERUxFVEVEJyB8XG4gICAgICAgICdEQU5HRVJfWk9ORV9UUklHR0VSRUQnIHwgJ0RBTkdFUl9aT05FX09QRVJBVElPTicgfFxuICAgICAgICAnQVVUT05PTVlfREVOSUVEJyB8ICdBVVRPTk9NWV9QQVVTRUQnIHwgJ1NBRkVUWV9FVkFMVUFUSU9OX0ZBSUxVUkUnIHxcbiAgICAgICAgJ1ZFUklGSUNBVElPTl9BVFRFTVBURUQnIHwgJ1ZFUklGSUNBVElPTl9TVUNDRUVERUQnIHxcbiAgICAgICAgJ1ZFUklGSUNBVElPTl9GQUlMRUQnIHwgJ1ZFUklGSUNBVElPTl9FWFBJUkVEJyB8XG4gICAgICAgICdBR0VOVF9BVVRPX0NPTlRJTlVFRCcgfCAnQUdFTlRfU1RFUF9SRVRSSUVEJyB8XG4gICAgICAgICdBR0VOVF9BVVRPX1JFU1RBUlRFRCcgfCAnQUdFTlRfUkVTSUxJRU5DRV9MSU1JVF9SRUFDSEVEJyB8XG4gICAgICAgICdQRVJNSVNTSU9OX1BST01QVF9ERU5JRUQnIHxcbiAgICAgICAgJ0NMSV9BUFBST1ZBTF9SRVFVRVNURUQnIHwgJ0NMSV9BUFBST1ZBTF9HUkFOVEVEJyB8ICdDTElfQVBQUk9WQUxfQ09OU1VNRUQnIHxcbiAgICAgICAgJ1RPVFBfRU5ST0xMRUQnIHwgJ1RPVFBfRElTQUJMRUQnIHwgJ1RPVFBfQkFDS1VQX0NPREVfQ09OU1VNRUQnIHwgJ1RPVFBfVkVSSUZJQ0FUSU9OX0ZBSUxFRCcgfFxuICAgICAgICAnQ09OU09MRV9UT0tFTl9ST1RBVEVEJztcbiAgc2V2ZXJpdHk6ICdMT1cnIHwgJ01FRElVTScgfCAnSElHSCcgfCAnQ1JJVElDQUwnO1xuICBzb3VyY2U6IHN0cmluZztcbiAgZGV0YWlsczogc3RyaW5nO1xuICB1c2VyQWdlbnQ/OiBzdHJpbmc7XG4gIGlwPzogc3RyaW5nO1xuICBhZGRpdGlvbmFsRGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWN1cml0eUxvZ0VudHJ5IGV4dGVuZHMgU2VjdXJpdHlFdmVudCB7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xufVxuXG4vKiogRGVkdXBsaWNhdGlvbiB3aW5kb3c6IHN1cHByZXNzIGlkZW50aWNhbCBldmVudHMgd2l0aGluIHRoaXMgcGVyaW9kICovXG5jb25zdCBERURVUF9XSU5ET1dfTVMgPSA2MF8wMDA7XG5cbi8qKiBNYXhpbXVtIGRlZHVwIGNhY2hlIGVudHJpZXMgYmVmb3JlIExSVSBldmljdGlvbiAqL1xuY29uc3QgREVEVVBfTUFYX1NJWkUgPSA1MDA7XG5cbmV4cG9ydCBjbGFzcyBTZWN1cml0eU1vbml0b3Ige1xuICBwcml2YXRlIHN0YXRpYyBldmVudENvdW50ID0gMDtcbiAgcHJpdmF0ZSBzdGF0aWMgZXZlbnRzID0gbmV3IEV2aWN0aW5nUXVldWU8U2VjdXJpdHlMb2dFbnRyeT4oMTAwMCk7XG4gIHByaXZhdGUgc3RhdGljIGxvZ0xpc3RlbmVyPzogKGVudHJ5OiBTZWN1cml0eUxvZ0VudHJ5KSA9PiB2b2lkO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBkZWR1cCA9IG5ldyBFdmVudERlZHVwbGljYXRvcihERURVUF9XSU5ET1dfTVMsIERFRFVQX01BWF9TSVpFKTtcblxuICBzdGF0aWMgYWRkTG9nTGlzdGVuZXIoZm46IChlbnRyeTogU2VjdXJpdHlMb2dFbnRyeSkgPT4gdm9pZCk6ICgpID0+IHZvaWQge1xuICAgIHRoaXMubG9nTGlzdGVuZXIgPSBmbjtcbiAgICByZXR1cm4gKCkgPT4geyB0aGlzLmxvZ0xpc3RlbmVyID0gdW5kZWZpbmVkOyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIExvZ3MgYSBzZWN1cml0eSBldmVudCwgc3VwcHJlc3NpbmcgcmVwZWF0ZWQgaWRlbnRpY2FsIGV2ZW50cyB3aXRoaW4gdGhlIGRlZHVwIHdpbmRvdy5cbiAgICovXG4gIHN0YXRpYyBsb2dTZWN1cml0eUV2ZW50KGV2ZW50OiBTZWN1cml0eUV2ZW50KTogdm9pZCB7XG4gICAgLy8gRGVkdXBsaWNhdGU6IHNhbWUgdHlwZSArIHNvdXJjZSArIGRldGFpbHMgd2l0aGluIDYwcyB3aW5kb3cgPSBzdXBwcmVzc1xuICAgIGlmICh0aGlzLmRlZHVwLnNob3VsZFN1cHByZXNzKGAke2V2ZW50LnR5cGV9XFwwJHtldmVudC5zb3VyY2V9XFwwJHtldmVudC5kZXRhaWxzfWApKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbG9nRW50cnk6IFNlY3VyaXR5TG9nRW50cnkgPSB7XG4gICAgICAuLi5ldmVudCxcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgaWQ6IGBTRUMtJHtEYXRlLm5vdygpfS0keysrdGhpcy5ldmVudENvdW50fWAsXG4gICAgfTtcblxuICAgIC8vIEJvdW5kZWQgRklGTyBldmljdGlvbiDigJQgRXZpY3RpbmdRdWV1ZSBoYW5kbGVzIGNhcGFjaXR5XG4gICAgdGhpcy5ldmVudHMucHVzaChsb2dFbnRyeSk7XG4gICAgdGhpcy5sb2dMaXN0ZW5lcj8uKGxvZ0VudHJ5KTtcblxuICAgIC8vIEluIE1DUCBzZXJ2ZXJzLCB3ZSBjYW5ub3Qgd3JpdGUgdG8gc3RkZXJyL3N0ZG91dCBhcyBpdCBicmVha3MgdGhlIEpTT04tUlBDIHByb3RvY29sXG4gICAgLy8gU2VjdXJpdHkgZXZlbnRzIGFyZSBzdG9yZWQgaW4gbWVtb3J5IGFuZCBjYW4gYmUgcmV0cmlldmVkIHZpYSBBUElcbiAgICAvLyBPbmx5IHNlbmQgY3JpdGljYWwgYWxlcnRzIHZpYSB0aGUgcHJvcGVyIGNoYW5uZWxcblxuICAgIGlmIChldmVudC5zZXZlcml0eSA9PT0gJ0NSSVRJQ0FMJykge1xuICAgICAgdGhpcy5zZW5kU2VjdXJpdHlBbGVydChsb2dFbnRyeSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNlbmRzIHNlY3VyaXR5IGFsZXJ0cyBmb3IgY3JpdGljYWwgZXZlbnRzXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBzZW5kU2VjdXJpdHlBbGVydChldmVudDogU2VjdXJpdHlMb2dFbnRyeSk6IHZvaWQge1xuICAgIC8vIEluIGEgcHJvZHVjdGlvbiBlbnZpcm9ubWVudCwgdGhpcyB3b3VsZCBpbnRlZ3JhdGUgd2l0aDpcbiAgICAvLyAtIFNsYWNrIHdlYmhvb2tzXG4gICAgLy8gLSBFbWFpbCBhbGVydHNcbiAgICAvLyAtIFBhZ2VyRHV0eVxuICAgIC8vIC0gU2VjdXJpdHkgSW5mb3JtYXRpb24gYW5kIEV2ZW50IE1hbmFnZW1lbnQgKFNJRU0pIHN5c3RlbXNcbiAgICBcbiAgICAvLyBMb2cgY3JpdGljYWwgc2VjdXJpdHkgYWxlcnRzIHdpdGggc3RydWN0dXJlZCBkYXRhXG4gICAgLy8gRE8gTk9UIHVzZSBjb25zb2xlLmVycm9yIGluIE1DUCBzZXJ2ZXJzIGFzIGl0IGJyZWFrcyB0aGUgSlNPTi1SUEMgcHJvdG9jb2xcbiAgICBsb2dnZXIuZXJyb3IoJ1tDUklUSUNBTCBTRUNVUklUWSBBTEVSVF0nLCB7XG4gICAgICB0eXBlOiBldmVudC50eXBlLFxuICAgICAgZGV0YWlsczogZXZlbnQuZGV0YWlscyxcbiAgICAgIHRpbWVzdGFtcDogZXZlbnQudGltZXN0YW1wLFxuICAgICAgaWQ6IGV2ZW50LmlkXG4gICAgfSk7XG4gICAgXG4gICAgLy8gSWYgaW4gcHJvZHVjdGlvbiBtb2RlIHdpdGggcHJvcGVyIGNvbmZpZywgc2VuZCBhY3R1YWwgYWxlcnRzXG4gICAgaWYgKHByb2Nlc3MuZW52LkRPTExIT1VTRV9TRUNVUklUWV9BTEVSVFMgPT09ICd0cnVlJykge1xuICAgICAgLy8gVE9ETzogSW1wbGVtZW50IGFjdHVhbCBhbGVydCBtZWNoYW5pc21zXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgcmVjZW50IHNlY3VyaXR5IGV2ZW50cyBmb3IgYW5hbHlzaXNcbiAgICovXG4gIHN0YXRpYyBnZXRSZWNlbnRFdmVudHMoY291bnQ6IG51bWJlciA9IDEwMCk6IFNlY3VyaXR5TG9nRW50cnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzLnRvQXJyYXkoKS5zbGljZSgtY291bnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgZXZlbnRzIGJ5IHNldmVyaXR5XG4gICAqL1xuICBzdGF0aWMgZ2V0RXZlbnRzQnlTZXZlcml0eShzZXZlcml0eTogU2VjdXJpdHlFdmVudFsnc2V2ZXJpdHknXSk6IFNlY3VyaXR5TG9nRW50cnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzLnRvQXJyYXkoKS5maWx0ZXIoZXZlbnQgPT4gZXZlbnQuc2V2ZXJpdHkgPT09IHNldmVyaXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGV2ZW50cyBieSB0eXBlXG4gICAqL1xuICBzdGF0aWMgZ2V0RXZlbnRzQnlUeXBlKHR5cGU6IFNlY3VyaXR5RXZlbnRbJ3R5cGUnXSk6IFNlY3VyaXR5TG9nRW50cnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzLnRvQXJyYXkoKS5maWx0ZXIoZXZlbnQgPT4gZXZlbnQudHlwZSA9PT0gdHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgc2VjdXJpdHkgcmVwb3J0XG4gICAqL1xuICBzdGF0aWMgZ2VuZXJhdGVTZWN1cml0eVJlcG9ydCgpOiB7XG4gICAgdG90YWxFdmVudHM6IG51bWJlcjtcbiAgICBldmVudHNCeVNldmVyaXR5OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICAgIGV2ZW50c0J5VHlwZTogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbiAgICByZWNlbnRDcml0aWNhbEV2ZW50czogU2VjdXJpdHlMb2dFbnRyeVtdO1xuICB9IHtcbiAgICBjb25zdCBldmVudHNCeVNldmVyaXR5OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge1xuICAgICAgQ1JJVElDQUw6IDAsXG4gICAgICBISUdIOiAwLFxuICAgICAgTUVESVVNOiAwLFxuICAgICAgTE9XOiAwLFxuICAgIH07XG5cbiAgICBjb25zdCBldmVudHNCeVR5cGU6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcblxuICAgIGZvciAoY29uc3QgZXZlbnQgb2YgdGhpcy5ldmVudHMudG9BcnJheSgpKSB7XG4gICAgICBldmVudHNCeVNldmVyaXR5W2V2ZW50LnNldmVyaXR5XSsrO1xuICAgICAgZXZlbnRzQnlUeXBlW2V2ZW50LnR5cGVdID0gKGV2ZW50c0J5VHlwZVtldmVudC50eXBlXSB8fCAwKSArIDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRvdGFsRXZlbnRzOiB0aGlzLmV2ZW50cy5zaXplLFxuICAgICAgZXZlbnRzQnlTZXZlcml0eSxcbiAgICAgIGV2ZW50c0J5VHlwZSxcbiAgICAgIHJlY2VudENyaXRpY2FsRXZlbnRzOiB0aGlzLmdldEV2ZW50c0J5U2V2ZXJpdHkoJ0NSSVRJQ0FMJykuc2xpY2UoLTEwKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBvbGQgZXZlbnRzIChmb3IgbWVtb3J5IG1hbmFnZW1lbnQpXG4gICAqL1xuICBzdGF0aWMgY2xlYXJPbGRFdmVudHMoZGF5c1RvS2VlcDogbnVtYmVyID0gNyk6IHZvaWQge1xuICAgIGNvbnN0IGN1dG9mZkRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGN1dG9mZkRhdGUuc2V0RGF0ZShjdXRvZmZEYXRlLmdldERhdGUoKSAtIGRheXNUb0tlZXApO1xuICAgIGNvbnN0IGN1dG9mZlRpbWVzdGFtcCA9IGN1dG9mZkRhdGUudG9JU09TdHJpbmcoKTtcblxuICAgIGNvbnN0IHJlbWFpbmluZyA9IHRoaXMuZXZlbnRzLnRvQXJyYXkoKS5maWx0ZXIoXG4gICAgICBldmVudCA9PiBldmVudC50aW1lc3RhbXAgPj0gY3V0b2ZmVGltZXN0YW1wXG4gICAgKTtcbiAgICB0aGlzLmV2ZW50cy5yZXNldChbLi4ucmVtYWluaW5nXSk7XG4gIH1cblxuICAvKipcbiAgICogVEVTVElORyBPTkxZOiBDbGVhcnMgYWxsIGV2ZW50cyBhbmQgcmVzZXRzIGNvdW50ZXJcbiAgICogU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGluIHRlc3QgY2xlYW51cCAoYWZ0ZXJFYWNoL2FmdGVyQWxsKVxuICAgKiB0byBwcmV2ZW50IHRlc3QgcG9sbHV0aW9uIGZyb20gYWNjdW11bGF0ZWQgc2VjdXJpdHkgZXZlbnRzXG4gICAqL1xuICBzdGF0aWMgY2xlYXJBbGxFdmVudHNGb3JUZXN0aW5nKCk6IHZvaWQge1xuICAgIHRoaXMuZXZlbnRzLmNsZWFyKCk7XG4gICAgdGhpcy5ldmVudENvdW50ID0gMDtcbiAgICB0aGlzLmRlZHVwLmNsZWFyKCk7XG4gIH1cbn1cbiJdfQ==
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHlNb25pdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlY3VyaXR5L3NlY3VyaXR5TW9uaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUE2RGxFLHlFQUF5RTtBQUN6RSxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUM7QUFFL0Isc0RBQXNEO0FBQ3RELE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQztBQUUzQixNQUFNLE9BQU8sZUFBZTtJQUNsQixNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztJQUN0QixNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksYUFBYSxDQUFtQixJQUFJLENBQUMsQ0FBQztJQUMxRCxNQUFNLENBQUMsV0FBVyxDQUFxQztJQUN2RCxNQUFNLENBQVUsS0FBSyxHQUFHLElBQUksaUJBQWlCLENBQUMsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBRXZGLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBcUM7UUFDekQsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsT0FBTyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBb0I7UUFDMUMseUVBQXlFO1FBQ3pFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FB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LFlBQVk7WUFDWixvQkFBb0IsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ3RFLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsY0FBYyxDQUFDLGFBQXFCLENBQUM7UUFDMUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM5QixVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxVQUFVLENBQUMsQ0FBQztRQUN0RCxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFakQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQzVDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxlQUFlLENBQzVDLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyx3QkFBd0I7UUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNlY3VyaXR5IE1vbml0b3IgZm9yIERvbGxob3VzZU1DUFxuICogXG4gKiBDZW50cmFsaXplZCBzZWN1cml0eSBldmVudCBsb2dnaW5nIGFuZCBtb25pdG9yaW5nIHN5c3RlbVxuICogZm9yIHRyYWNraW5nIGFuZCBhbGVydGluZyBvbiBzZWN1cml0eS1yZWxhdGVkIGV2ZW50cy5cbiAqL1xuXG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgRXZpY3RpbmdRdWV1ZSB9IGZyb20gJy4uL3V0aWxzL0V2aWN0aW5nUXVldWUuanMnO1xuaW1wb3J0IHsgRXZlbnREZWR1cGxpY2F0b3IgfSBmcm9tICcuLi91dGlscy9FdmVudERlZHVwbGljYXRvci5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdXJpdHlFdmVudCB7XG4gIHR5cGU6ICdDT05URU5UX0lOSkVDVElPTl9BVFRFTVBUJyB8ICdZQU1MX0lOSkVDVElPTl9BVFRFTVBUJyB8ICdQQVRIX1RSQVZFUlNBTF9BVFRFTVBUJyB8XG4gICAgICAgICdUT0tFTl9WQUxJREFUSU9OX0ZBSUxVUkUnIHwgJ1VQREFURV9TRUNVUklUWV9WSU9MQVRJT04nIHwgJ1JBVEVfTElNSVRfRVhDRUVERUQnIHxcbiAgICAgICAgJ1lBTUxfUEFSU0lOR19XQVJOSU5HJyB8ICdZQU1MX1BBUlNFX1NVQ0NFU1MnIHwgJ1RPS0VOX1ZBTElEQVRJT05fU1VDQ0VTUycgfFxuICAgICAgICAnUEFUSF9WQUxJREFUSU9OX1NVQ0NFU1MnIHwgJ1JBVEVfTElNSVRfV0FSTklORycgfCAnVE9LRU5fQ0FDSEVfQ0xFQVJFRCcgfFxuICAgICAgICAnWUFNTF9VTklDT0RFX0FUVEFDSycgfCAnVU5JQ09ERV9ESVJFQ1RJT05fT1ZFUlJJREUnIHwgJ1VOSUNPREVfTUlYRURfU0NSSVBUJyB8XG4gICAgICAgICdVTklDT0RFX1ZBTElEQVRJT05fRVJST1InIHwgJ0NPTlRFTlRfU0laRV9FWENFRURFRCcgfCAnSU5DTFVERV9ERVBUSF9FWENFRURFRCcgfFxuICAgICAgICAnVEVNUExBVEVfUkVOREVSRUQnIHwgJ1RFTVBMQVRFX0lOQ0xVREUnIHwgJ1RFTVBMQVRFX0xPQURFRCcgfCAnVEVNUExBVEVfU0FWRUQnIHxcbiAgICAgICAgJ1RFTVBMQVRFX0RFTEVURUQnIHwgJ01FTU9SWV9DUkVBVEVEJyB8ICdNRU1PUllfQURERUQnIHwgJ01FTU9SWV9TRUFSQ0hFRCcgfFxuICAgICAgICAnU0VOU0lUSVZFX01FTU9SWV9ERUxFVEVEJyB8ICdSRVRFTlRJT05fUE9MSUNZX0VORk9SQ0VEJyB8ICdNRU1PUllfQ0xFQVJFRCcgfFxuICAgICAgICAnTUVNT1JZX0xPQURFRCcgfCAnTUVNT1JZX1NBVkVEJyB8ICdNRU1PUllfREVMRVRFRCcgfCAnTUVNT1JZX0xPQURfRkFJTEVEJyB8XG4gICAgICAgICdNRU1PUllfU0FWRV9GQUlMRUQnIHwgJ01FTU9SWV9MSVNUX0lURU1fRkFJTEVEJyB8ICdNRU1PUllfSU1QT1JUX0ZBSUxFRCcgfFxuICAgICAgICAnTUVNT1JZX0RFU0VSSUFMSVpFX0ZBSUxFRCcgfCAnTUVNT1JZX0lOVEVHUklUWV9WSU9MQVRJT04nIHwgJ01FTU9SWV9VTklDT0RFX1ZBTElEQVRJT05fRkFJTEVEJyB8XG4gICAgICAgICdNRU1PUllfRFVQTElDQVRFX0RFVEVDVEVEJyB8ICdTRUVEX01FTU9SWV9JTlNUQUxMRUQnIHwgJ1NFRURfTUVNT1JZX0lOU1RBTExBVElPTl9GQUlMRUQnIHxcbiAgICAgICAgJ0VMRU1FTlRfQ1JFQVRFRCcgfCAnRUxFTUVOVF9MT0FERUQnIHwgJ0VMRU1FTlRfRURJVEVEJyB8ICdFTEVNRU5UX0FDVElWQVRFRCcgfCAnRUxFTUVOVF9ERUFDVElWQVRFRCcgfFxuICAgICAgICAnRUxFTUVOVF9WQUxJREFURUQnIHwgJ0VMRU1FTlRfREVMRVRFRCcgfFxuICAgICAgICAnQUdFTlRfQUNUSVZBVEVEJyB8ICdBR0VOVF9BQ1RJVkFUSU9OX0ZBSUxFRCcgfCAnQUdFTlRfQUNUSVZBVElPTl9ST0xMQkFDSycgfFxuICAgICAgICAnQUdFTlRfREVBQ1RJVkFURUQnIHwgJ0FHRU5UX0VYRUNVVEVEJyB8ICdBR0VOVF9QT0xJQ1lfUkVDT1ZFUkVEJyB8XG4gICAgICAgICdDT05GSUdfVVBEQVRFRCcgfCAnSURFTlRJVFlfQ0hBTkdFRCcgfFxuICAgICAgICAnT1BFUkFUSU9OX0NPTVBMRVRFRCcgfCAnT1BFUkFUSU9OX0ZBSUxFRCcgfCAnQkFUQ0hfQ09NUExFVEVEJyB8ICdCQVRDSF9SRUpFQ1RFRCcgfFxuICAgICAgICAnQ09ORklSTUFUSU9OX1JFQ09SREVEJyB8ICdHQVRFS0VFUEVSX0RFQ0lTSU9OJyB8XG4gICAgICAgICdBVVRIX0ZMT1dfSU5JVElBVEVEJyB8XG4gICAgICAgICdBR0VOVF9ERUNJU0lPTicgfFxuICAgICAgICAnUlVMRV9FTkdJTkVfQ09ORklHX1VQREFURScgfCAnUlVMRV9FTkdJTkVfQ09ORklHX1ZBTElEQVRJT05fRVJST1InIHxcbiAgICAgICAgJ0dPQUxfVEVNUExBVEVfQVBQTElFRCcgfCAnR09BTF9URU1QTEFURV9WQUxJREFUSU9OJyB8XG4gICAgICAgICdFTlNFTUJMRV9DSVJDVUxBUl9ERVBFTkRFTkNZJyB8ICdFTlNFTUJMRV9SRVNPVVJDRV9MSU1JVF9FWENFRURFRCcgfFxuICAgICAgICAnRU5TRU1CTEVfQUNUSVZBVElPTl9USU1FT1VUJyB8ICdFTlNFTUJMRV9BQ1RJVkFUSU9OX0ZBSUxFRCcgfCAnRU5TRU1CTEVfU1VTUElDSU9VU19DT05ESVRJT04nIHxcbiAgICAgICAgJ0VOU0VNQkxFX0NPTkRJVElPTl9FVkFMVUFUSU9OX0ZBSUxFRCcgfFxuICAgICAgICAnRU5TRU1CTEVfTkVTVEVEX0RFUFRIX0VYQ0VFREVEJyB8ICdFTlNFTUJMRV9DT05URVhUX1NJWkVfRVhDRUVERUQnIHxcbiAgICAgICAgJ0VOU0VNQkxFX0NPTlRFWFRfVkFMVUVfVE9PX0xBUkdFJyB8ICdFTlNFTUJMRV9TQVZFRCcgfCAnRU5TRU1CTEVfSU1QT1JURUQnIHwgJ0VOU0VNQkxFX0RFTEVURUQnIHxcbiAgICAgICAgJ1BPUlRGT0xJT19JTklUSUFMSVpBVElPTicgfCAnUE9SVEZPTElPX1BPUFVMQVRFRCcgfCAnRklMRV9DT1BJRUQnIHwgJ0RJUkVDVE9SWV9NSUdSQVRJT04nIHxcbiAgICAgICAgJ1BPUlRGT0xJT19DQUNIRV9JTlZBTElEQVRJT04nIHwgJ1BPUlRGT0xJT19GRVRDSF9TVUNDRVNTJyB8ICdURVNUX0RBVEFfQkxPQ0tFRCcgfFxuICAgICAgICAnVEVTVF9QQVRIX1NFQ1VSSVRZX1JJU0snIHwgJ1RFU1RfUFJPRFVDVElPTl9BQ0NFU1NfQkxPQ0tFRCcgfCAnVEVTVF9QQVRIX0lOVkFMSUQnIHxcbiAgICAgICAgJ1RFU1RfRU5WSVJPTk1FTlRfUFJPRFVDVElPTl9QQVRIJyB8ICdURVNUX0VOVklST05NRU5UX0RFUFJFQ0FURURfVkFSJyB8ICdUT09MX0NBQ0hFX0lOVkFMSURBVEVEJyB8XG4gICAgICAgICdGSUxFX1JFQUQnIHwgJ0ZJTEVfV1JJVFRFTicgfCAnRklMRV9ERUxFVEVEJyB8XG4gICAgICAgICdEQU5HRVJfWk9ORV9UUklHR0VSRUQnIHwgJ0RBTkdFUl9aT05FX09QRVJBVElPTicgfFxuICAgICAgICAnQVVUT05PTVlfREVOSUVEJyB8ICdBVVRPTk9NWV9QQVVTRUQnIHwgJ1NBRkVUWV9FVkFMVUFUSU9OX0ZBSUxVUkUnIHxcbiAgICAgICAgJ1ZFUklGSUNBVElPTl9BVFRFTVBURUQnIHwgJ1ZFUklGSUNBVElPTl9TVUNDRUVERUQnIHxcbiAgICAgICAgJ1ZFUklGSUNBVElPTl9GQUlMRUQnIHwgJ1ZFUklGSUNBVElPTl9FWFBJUkVEJyB8XG4gICAgICAgICdBR0VOVF9BVVRPX0NPTlRJTlVFRCcgfCAnQUdFTlRfU1RFUF9SRVRSSUVEJyB8XG4gICAgICAgICdBR0VOVF9BVVRPX1JFU1RBUlRFRCcgfCAnQUdFTlRfUkVTSUxJRU5DRV9MSU1JVF9SRUFDSEVEJyB8XG4gICAgICAgICdQRVJNSVNTSU9OX1BST01QVF9ERU5JRUQnIHxcbiAgICAgICAgJ0NMSV9BUFBST1ZBTF9SRVFVRVNURUQnIHwgJ0NMSV9BUFBST1ZBTF9HUkFOVEVEJyB8ICdDTElfQVBQUk9WQUxfQ09OU1VNRUQnIHxcbiAgICAgICAgJ1RPVFBfRU5ST0xMRUQnIHwgJ1RPVFBfRElTQUJMRUQnIHwgJ1RPVFBfQkFDS1VQX0NPREVfQ09OU1VNRUQnIHwgJ1RPVFBfVkVSSUZJQ0FUSU9OX0ZBSUxFRCcgfFxuICAgICAgICAnQ09OU09MRV9UT0tFTl9ST1RBVEVEJztcbiAgc2V2ZXJpdHk6ICdMT1cnIHwgJ01FRElVTScgfCAnSElHSCcgfCAnQ1JJVElDQUwnO1xuICBzb3VyY2U6IHN0cmluZztcbiAgZGV0YWlsczogc3RyaW5nO1xuICB1c2VyQWdlbnQ/OiBzdHJpbmc7XG4gIGlwPzogc3RyaW5nO1xuICBhZGRpdGlvbmFsRGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWN1cml0eUxvZ0VudHJ5IGV4dGVuZHMgU2VjdXJpdHlFdmVudCB7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xufVxuXG4vKiogRGVkdXBsaWNhdGlvbiB3aW5kb3c6IHN1cHByZXNzIGlkZW50aWNhbCBldmVudHMgd2l0aGluIHRoaXMgcGVyaW9kICovXG5jb25zdCBERURVUF9XSU5ET1dfTVMgPSA2MF8wMDA7XG5cbi8qKiBNYXhpbXVtIGRlZHVwIGNhY2hlIGVudHJpZXMgYmVmb3JlIExSVSBldmljdGlvbiAqL1xuY29uc3QgREVEVVBfTUFYX1NJWkUgPSA1MDA7XG5cbmV4cG9ydCBjbGFzcyBTZWN1cml0eU1vbml0b3Ige1xuICBwcml2YXRlIHN0YXRpYyBldmVudENvdW50ID0gMDtcbiAgcHJpdmF0ZSBzdGF0aWMgZXZlbnRzID0gbmV3IEV2aWN0aW5nUXVldWU8U2VjdXJpdHlMb2dFbnRyeT4oMTAwMCk7XG4gIHByaXZhdGUgc3RhdGljIGxvZ0xpc3RlbmVyPzogKGVudHJ5OiBTZWN1cml0eUxvZ0VudHJ5KSA9PiB2b2lkO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBkZWR1cCA9IG5ldyBFdmVudERlZHVwbGljYXRvcihERURVUF9XSU5ET1dfTVMsIERFRFVQX01BWF9TSVpFKTtcblxuICBzdGF0aWMgYWRkTG9nTGlzdGVuZXIoZm46IChlbnRyeTogU2VjdXJpdHlMb2dFbnRyeSkgPT4gdm9pZCk6ICgpID0+IHZvaWQge1xuICAgIHRoaXMubG9nTGlzdGVuZXIgPSBmbjtcbiAgICByZXR1cm4gKCkgPT4geyB0aGlzLmxvZ0xpc3RlbmVyID0gdW5kZWZpbmVkOyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIExvZ3MgYSBzZWN1cml0eSBldmVudCwgc3VwcHJlc3NpbmcgcmVwZWF0ZWQgaWRlbnRpY2FsIGV2ZW50cyB3aXRoaW4gdGhlIGRlZHVwIHdpbmRvdy5cbiAgICovXG4gIHN0YXRpYyBsb2dTZWN1cml0eUV2ZW50KGV2ZW50OiBTZWN1cml0eUV2ZW50KTogdm9pZCB7XG4gICAgLy8gRGVkdXBsaWNhdGU6IHNhbWUgdHlwZSArIHNvdXJjZSArIGRldGFpbHMgd2l0aGluIDYwcyB3aW5kb3cgPSBzdXBwcmVzc1xuICAgIGlmICh0aGlzLmRlZHVwLnNob3VsZFN1cHByZXNzKGAke2V2ZW50LnR5cGV9XFwwJHtldmVudC5zb3VyY2V9XFwwJHtldmVudC5kZXRhaWxzfWApKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbG9nRW50cnk6IFNlY3VyaXR5TG9nRW50cnkgPSB7XG4gICAgICAuLi5ldmVudCxcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgaWQ6IGBTRUMtJHtEYXRlLm5vdygpfS0keysrdGhpcy5ldmVudENvdW50fWAsXG4gICAgfTtcblxuICAgIC8vIEJvdW5kZWQgRklGTyBldmljdGlvbiDigJQgRXZpY3RpbmdRdWV1ZSBoYW5kbGVzIGNhcGFjaXR5XG4gICAgdGhpcy5ldmVudHMucHVzaChsb2dFbnRyeSk7XG4gICAgdGhpcy5sb2dMaXN0ZW5lcj8uKGxvZ0VudHJ5KTtcblxuICAgIC8vIEluIE1DUCBzZXJ2ZXJzLCB3ZSBjYW5ub3Qgd3JpdGUgdG8gc3RkZXJyL3N0ZG91dCBhcyBpdCBicmVha3MgdGhlIEpTT04tUlBDIHByb3RvY29sXG4gICAgLy8gU2VjdXJpdHkgZXZlbnRzIGFyZSBzdG9yZWQgaW4gbWVtb3J5IGFuZCBjYW4gYmUgcmV0cmlldmVkIHZpYSBBUElcbiAgICAvLyBPbmx5IHNlbmQgY3JpdGljYWwgYWxlcnRzIHZpYSB0aGUgcHJvcGVyIGNoYW5uZWxcblxuICAgIGlmIChldmVudC5zZXZlcml0eSA9PT0gJ0NSSVRJQ0FMJykge1xuICAgICAgdGhpcy5zZW5kU2VjdXJpdHlBbGVydChsb2dFbnRyeSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNlbmRzIHNlY3VyaXR5IGFsZXJ0cyBmb3IgY3JpdGljYWwgZXZlbnRzXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBzZW5kU2VjdXJpdHlBbGVydChldmVudDogU2VjdXJpdHlMb2dFbnRyeSk6IHZvaWQge1xuICAgIC8vIEluIGEgcHJvZHVjdGlvbiBlbnZpcm9ubWVudCwgdGhpcyB3b3VsZCBpbnRlZ3JhdGUgd2l0aDpcbiAgICAvLyAtIFNsYWNrIHdlYmhvb2tzXG4gICAgLy8gLSBFbWFpbCBhbGVydHNcbiAgICAvLyAtIFBhZ2VyRHV0eVxuICAgIC8vIC0gU2VjdXJpdHkgSW5mb3JtYXRpb24gYW5kIEV2ZW50IE1hbmFnZW1lbnQgKFNJRU0pIHN5c3RlbXNcbiAgICBcbiAgICAvLyBMb2cgY3JpdGljYWwgc2VjdXJpdHkgYWxlcnRzIHdpdGggc3RydWN0dXJlZCBkYXRhXG4gICAgLy8gRE8gTk9UIHVzZSBjb25zb2xlLmVycm9yIGluIE1DUCBzZXJ2ZXJzIGFzIGl0IGJyZWFrcyB0aGUgSlNPTi1SUEMgcHJvdG9jb2xcbiAgICBsb2dnZXIuZXJyb3IoJ1tDUklUSUNBTCBTRUNVUklUWSBBTEVSVF0nLCB7XG4gICAgICB0eXBlOiBldmVudC50eXBlLFxuICAgICAgZGV0YWlsczogZXZlbnQuZGV0YWlscyxcbiAgICAgIHRpbWVzdGFtcDogZXZlbnQudGltZXN0YW1wLFxuICAgICAgaWQ6IGV2ZW50LmlkXG4gICAgfSk7XG4gICAgXG4gICAgLy8gSWYgaW4gcHJvZHVjdGlvbiBtb2RlIHdpdGggcHJvcGVyIGNvbmZpZywgc2VuZCBhY3R1YWwgYWxlcnRzXG4gICAgaWYgKHByb2Nlc3MuZW52LkRPTExIT1VTRV9TRUNVUklUWV9BTEVSVFMgPT09ICd0cnVlJykge1xuICAgICAgLy8gVE9ETzogSW1wbGVtZW50IGFjdHVhbCBhbGVydCBtZWNoYW5pc21zXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgcmVjZW50IHNlY3VyaXR5IGV2ZW50cyBmb3IgYW5hbHlzaXNcbiAgICovXG4gIHN0YXRpYyBnZXRSZWNlbnRFdmVudHMoY291bnQ6IG51bWJlciA9IDEwMCk6IFNlY3VyaXR5TG9nRW50cnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzLnRvQXJyYXkoKS5zbGljZSgtY291bnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgZXZlbnRzIGJ5IHNldmVyaXR5XG4gICAqL1xuICBzdGF0aWMgZ2V0RXZlbnRzQnlTZXZlcml0eShzZXZlcml0eTogU2VjdXJpdHlFdmVudFsnc2V2ZXJpdHknXSk6IFNlY3VyaXR5TG9nRW50cnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzLnRvQXJyYXkoKS5maWx0ZXIoZXZlbnQgPT4gZXZlbnQuc2V2ZXJpdHkgPT09IHNldmVyaXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGV2ZW50cyBieSB0eXBlXG4gICAqL1xuICBzdGF0aWMgZ2V0RXZlbnRzQnlUeXBlKHR5cGU6IFNlY3VyaXR5RXZlbnRbJ3R5cGUnXSk6IFNlY3VyaXR5TG9nRW50cnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzLnRvQXJyYXkoKS5maWx0ZXIoZXZlbnQgPT4gZXZlbnQudHlwZSA9PT0gdHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgc2VjdXJpdHkgcmVwb3J0XG4gICAqL1xuICBzdGF0aWMgZ2VuZXJhdGVTZWN1cml0eVJlcG9ydCgpOiB7XG4gICAgdG90YWxFdmVudHM6IG51bWJlcjtcbiAgICBldmVudHNCeVNldmVyaXR5OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICAgIGV2ZW50c0J5VHlwZTogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbiAgICByZWNlbnRDcml0aWNhbEV2ZW50czogU2VjdXJpdHlMb2dFbnRyeVtdO1xuICB9IHtcbiAgICBjb25zdCBldmVudHNCeVNldmVyaXR5OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge1xuICAgICAgQ1JJVElDQUw6IDAsXG4gICAgICBISUdIOiAwLFxuICAgICAgTUVESVVNOiAwLFxuICAgICAgTE9XOiAwLFxuICAgIH07XG5cbiAgICBjb25zdCBldmVudHNCeVR5cGU6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcblxuICAgIGZvciAoY29uc3QgZXZlbnQgb2YgdGhpcy5ldmVudHMudG9BcnJheSgpKSB7XG4gICAgICBldmVudHNCeVNldmVyaXR5W2V2ZW50LnNldmVyaXR5XSsrO1xuICAgICAgZXZlbnRzQnlUeXBlW2V2ZW50LnR5cGVdID0gKGV2ZW50c0J5VHlwZVtldmVudC50eXBlXSB8fCAwKSArIDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRvdGFsRXZlbnRzOiB0aGlzLmV2ZW50cy5zaXplLFxuICAgICAgZXZlbnRzQnlTZXZlcml0eSxcbiAgICAgIGV2ZW50c0J5VHlwZSxcbiAgICAgIHJlY2VudENyaXRpY2FsRXZlbnRzOiB0aGlzLmdldEV2ZW50c0J5U2V2ZXJpdHkoJ0NSSVRJQ0FMJykuc2xpY2UoLTEwKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBvbGQgZXZlbnRzIChmb3IgbWVtb3J5IG1hbmFnZW1lbnQpXG4gICAqL1xuICBzdGF0aWMgY2xlYXJPbGRFdmVudHMoZGF5c1RvS2VlcDogbnVtYmVyID0gNyk6IHZvaWQge1xuICAgIGNvbnN0IGN1dG9mZkRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGN1dG9mZkRhdGUuc2V0RGF0ZShjdXRvZmZEYXRlLmdldERhdGUoKSAtIGRheXNUb0tlZXApO1xuICAgIGNvbnN0IGN1dG9mZlRpbWVzdGFtcCA9IGN1dG9mZkRhdGUudG9JU09TdHJpbmcoKTtcblxuICAgIGNvbnN0IHJlbWFpbmluZyA9IHRoaXMuZXZlbnRzLnRvQXJyYXkoKS5maWx0ZXIoXG4gICAgICBldmVudCA9PiBldmVudC50aW1lc3RhbXAgPj0gY3V0b2ZmVGltZXN0YW1wXG4gICAgKTtcbiAgICB0aGlzLmV2ZW50cy5yZXNldChbLi4ucmVtYWluaW5nXSk7XG4gIH1cblxuICAvKipcbiAgICogVEVTVElORyBPTkxZOiBDbGVhcnMgYWxsIGV2ZW50cyBhbmQgcmVzZXRzIGNvdW50ZXJcbiAgICogU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGluIHRlc3QgY2xlYW51cCAoYWZ0ZXJFYWNoL2FmdGVyQWxsKVxuICAgKiB0byBwcmV2ZW50IHRlc3QgcG9sbHV0aW9uIGZyb20gYWNjdW11bGF0ZWQgc2VjdXJpdHkgZXZlbnRzXG4gICAqL1xuICBzdGF0aWMgY2xlYXJBbGxFdmVudHNGb3JUZXN0aW5nKCk6IHZvaWQge1xuICAgIHRoaXMuZXZlbnRzLmNsZWFyKCk7XG4gICAgdGhpcy5ldmVudENvdW50ID0gMDtcbiAgICB0aGlzLmRlZHVwLmNsZWFyKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackgroundValidator.d.ts","sourceRoot":"","sources":["../../../src/security/validation/BackgroundValidator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;
|
|
1
|
+
{"version":3,"file":"BackgroundValidator.d.ts","sourceRoot":"","sources":["../../../src/security/validation/BackgroundValidator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AASH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,mDAAmD;IACnD,OAAO,EAAE,OAAO,CAAC;IAEjB,6EAA6E;IAC7E,eAAe,EAAE,MAAM,CAAC;IAExB,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAElB,2EAA2E;IAC3E,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAYD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IAEZ,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IAEpB,oCAAoC;IACpC,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAEjD,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IAEjB,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,qDAAqD;IACrD,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,2CAA2C;IAC3C,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,qBAAa,mBAAmB;IAM5B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa;IANhC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,YAAY,CAAkB;gBAGnB,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,GAAG,EAAE,qDAAqD;IAC1F,MAAM,CAAC,EAAE,OAAO,CAAC,yBAAyB,CAAC;IAU7C;;;OAGG;IACH,KAAK,IAAI,IAAI;IAwBb;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;;OAGG;IACG,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAsC/C;;;;;OAKG;YACW,gCAAgC;IA8B9C;;OAEG;YACW,YAAY;IAe1B;;;;OAIG;YACW,cAAc;IA4C5B;;;;;OAKG;YACW,aAAa;IA0D3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAmB3B;;OAEG;IACH,OAAO,CAAC,aAAa;IAQrB;;OAEG;IACH,QAAQ;;;;;;IASR;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAI/B"}
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
* @module BackgroundValidator
|
|
23
23
|
*/
|
|
24
24
|
import { logger } from '../../utils/logger.js';
|
|
25
|
-
import { ContentValidator } from '../contentValidator.js';
|
|
25
|
+
import { ContentValidator, MALICIOUS_YAML_CONTENT_PATTERN, } from '../contentValidator.js';
|
|
26
26
|
import { TRUST_LEVELS } from '../../elements/memories/constants.js';
|
|
27
27
|
/**
|
|
28
28
|
* Default configuration for background validation
|
|
@@ -230,7 +230,7 @@ export class BackgroundValidator {
|
|
|
230
230
|
async validateEntry(entry) {
|
|
231
231
|
logger.debug('Validating entry', { entryId: entry.id });
|
|
232
232
|
// Validate content using ContentValidator
|
|
233
|
-
const validationResult = ContentValidator.
|
|
233
|
+
const validationResult = ContentValidator.validateAndSanitizeYamlAware(entry.content, {
|
|
234
234
|
skipSizeCheck: true,
|
|
235
235
|
});
|
|
236
236
|
// Determine new trust level based on validation results
|
|
@@ -261,7 +261,9 @@ export class BackgroundValidator {
|
|
|
261
261
|
// Store sanitized patterns and content in entry metadata
|
|
262
262
|
// Phase 2 will add encryption to these patterns
|
|
263
263
|
entry.sanitizedPatterns = extractionResult.patterns;
|
|
264
|
-
entry.sanitizedContent =
|
|
264
|
+
entry.sanitizedContent = validationResult.detectedPatterns?.includes(MALICIOUS_YAML_CONTENT_PATTERN)
|
|
265
|
+
? validationResult.sanitizedContent
|
|
266
|
+
: extractionResult.sanitizedContent;
|
|
265
267
|
logger.info('Patterns extracted from entry', {
|
|
266
268
|
entryId: entry.id,
|
|
267
269
|
patternCount: extractionResult.patternCount,
|
|
@@ -318,4 +320,4 @@ export class BackgroundValidator {
|
|
|
318
320
|
logger.debug('BackgroundValidator disposed');
|
|
319
321
|
}
|
|
320
322
|
}
|
|
321
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFja2dyb3VuZFZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZWN1cml0eS92YWxpZGF0aW9uL0JhY2tncm91bmRWYWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFnQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQXFCcEU7O0dBRUc7QUFDSCxNQUFNLGNBQWMsR0FBOEI7SUFDaEQsT0FBTyxFQUFFLElBQUk7SUFDYixlQUFlLEVBQUUsR0FBRyxFQUFHLFlBQVk7SUFDbkMsU0FBUyxFQUFFLEVBQUU7SUFDYixtQkFBbUIsRUFBRSxJQUFJO0NBQzFCLENBQUM7QUFrQ0Y7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxPQUFPLG1CQUFtQjtJQU1YO0lBQ0E7SUFORixNQUFNLENBQTRCO0lBQzNDLGNBQWMsQ0FBa0I7SUFDaEMsWUFBWSxHQUFZLEtBQUssQ0FBQztJQUV0QyxZQUNtQixnQkFBa0MsRUFDbEMsYUFBa0IsRUFBRSxxREFBcUQ7SUFDMUYsTUFBMkM7UUFGMUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBSztRQUduQyxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyxjQUFjLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUMvQyxNQUFNLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxFQUFFO1lBQzdDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87WUFDNUIsZUFBZSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZTtZQUM1QyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FB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LElBQUksZ0JBQWdCLENBQUMsUUFBUSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3JGLDJFQUEyRTtZQUMzRSw4RUFBOEU7WUFDOUUsc0RBQXNEO1lBQ3RELE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQztRQUM5QixDQUFDO1FBRUQsa0VBQWtFO1FBQ2xFLGdEQUFnRDtRQUNoRCxPQUFPLFlBQVksQ0FBQyxTQUFTLENBQUM7SUFDaEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssYUFBYSxDQUFJLEtBQVUsRUFBRSxTQUFpQjtRQUNwRCxNQUFNLE9BQU8sR0FBVSxFQUFFLENBQUM7UUFDMUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2pELE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDTixPQUFPO1lBQ0wsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTztZQUM1QixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsZUFBZSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZTtZQUM1QyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTO1NBQ2pDLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLE9BQU87UUFDWCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixNQUFNLENBQUMsS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCYWNrZ3JvdW5kIFZhbGlkYXRpb24gU2VydmljZSBmb3IgTWVtb3J5IFNlY3VyaXR5XG4gKlxuICogUGFydCBvZiBJc3N1ZSAjMTMxNCBQaGFzZSAxOiBNZW1vcnkgU2VjdXJpdHkgQXJjaGl0ZWN0dXJlXG4gKlxuICogUFVSUE9TRTpcbiAqIEFzeW5jaHJvbm91c2x5IHZhbGlkYXRlcyBVTlRSVVNURUQgbWVtb3J5IGVudHJpZXMgYW5kIHVwZGF0ZXMgdGhlaXIgdHJ1c3QgbGV2ZWxzXG4gKiB3aXRob3V0IGJsb2NraW5nIG1lbW9yeSBjcmVhdGlvbi4gUnVucyBvdXRzaWRlIHRoZSBMTE0gcmVxdWVzdCBwYXRoIHRvIGF2b2lkXG4gKiB0b2tlbiBjb3N0cyBhbmQgbGF0ZW5jeS5cbiAqXG4gKiBBUkNISVRFQ1RVUkU6XG4gKiAtIExheWVyIDIgaW4gdGhlIE1lbW9yeSBTZWN1cml0eSBBcmNoaXRlY3R1cmUgKHNlZSBkb2NzL2RldmVsb3BtZW50L01FTU9SWV9TRUNVUklUWV9BUkNISVRFQ1RVUkUubWQpXG4gKiAtIFJ1bnMgc2VydmVyLXNpZGUsIG5vdCBpbiBMTE0gY29udGV4dFxuICogLSBObyB0b2tlbiBjb3N0IGZvciB2YWxpZGF0aW9uXG4gKiAtIFVwZGF0ZXMgdHJ1c3QgbGV2ZWxzIGluLXBsYWNlXG4gKlxuICogVFJVU1QgTEVWRUwgVFJBTlNJVElPTlM6XG4gKiBVTlRSVVNURUQg4oaSIFZBTElEQVRFRCAoY2xlYW4gY29udGVudCwgbm8gcGF0dGVybnMpXG4gKiBVTlRSVVNURUQg4oaSIEZMQUdHRUQgKGRhbmdlcm91cyBwYXR0ZXJucyBkZXRlY3RlZCwgbmVlZHMgZW5jcnlwdGlvbilcbiAqIFVOVFJVU1RFRCDihpIgUVVBUkFOVElORUQgKGV4cGxpY2l0bHkgbWFsaWNpb3VzLCBjcml0aWNhbCB0aHJlYXQpXG4gKlxuICogQG1vZHVsZSBCYWNrZ3JvdW5kVmFsaWRhdG9yXG4gKi9cblxuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCB7IENvbnRlbnRWYWxpZGF0b3IsIHR5cGUgQ29udGVudFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICcuLi9jb250ZW50VmFsaWRhdG9yLmpzJztcbmltcG9ydCB7IFRSVVNUX0xFVkVMUyB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL21lbW9yaWVzL2NvbnN0YW50cy5qcyc7XG5pbXBvcnQgeyBQYXR0ZXJuRXh0cmFjdG9yIH0gZnJvbSAnLi9QYXR0ZXJuRXh0cmFjdG9yLmpzJztcbmltcG9ydCB0eXBlIHsgTWVtb3J5IH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvbWVtb3JpZXMvTWVtb3J5LmpzJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBiYWNrZ3JvdW5kIHZhbGlkYXRpb24gYmVoYXZpb3JcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYWNrZ3JvdW5kVmFsaWRhdG9yQ29uZmlnIHtcbiAgLyoqIEVuYWJsZSBiYWNrZ3JvdW5kIHZhbGlkYXRpb24gKGRlZmF1bHQ6IHRydWUpICovXG4gIGVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgLyoqIEludGVydmFsIGluIHNlY29uZHMgYmV0d2VlbiB2YWxpZGF0aW9uIHJ1bnMgKGRlZmF1bHQ6IDMwMCA9IDUgbWludXRlcykgKi9cbiAgaW50ZXJ2YWxTZWNvbmRzOiBudW1iZXI7XG5cbiAgLyoqIE1heGltdW0gbnVtYmVyIG9mIG1lbW9yaWVzIHRvIHByb2Nlc3MgcGVyIGJhdGNoIChkZWZhdWx0OiAxMCkgKi9cbiAgYmF0Y2hTaXplOiBudW1iZXI7XG5cbiAgLyoqIE1heGltdW0gdGltZSBpbiBtcyBmb3IgYSBzaW5nbGUgdmFsaWRhdGlvbiBvcGVyYXRpb24gKGRlZmF1bHQ6IDUwMDApICovXG4gIHZhbGlkYXRpb25UaW1lb3V0TXM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBEZWZhdWx0IGNvbmZpZ3VyYXRpb24gZm9yIGJhY2tncm91bmQgdmFsaWRhdGlvblxuICovXG5jb25zdCBERUZBVUxUX0NPTkZJRzogQmFja2dyb3VuZFZhbGlkYXRvckNvbmZpZyA9IHtcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgaW50ZXJ2YWxTZWNvbmRzOiAzMDAsICAvLyA1IG1pbnV0ZXNcbiAgYmF0Y2hTaXplOiAxMCxcbiAgdmFsaWRhdGlvblRpbWVvdXRNczogNTAwMCxcbn07XG5cbi8qKlxuICogUGF0dGVybiBpbmZvcm1hdGlvbiBmb3IgZW5jcnlwdGVkIHN0b3JhZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYW5pdGl6ZWRQYXR0ZXJuIHtcbiAgLyoqIFVuaXF1ZSByZWZlcmVuY2UgSUQgZm9yIHRoaXMgcGF0dGVybiAqL1xuICByZWY6IHN0cmluZztcblxuICAvKiogSHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgdGhlIHBhdHRlcm4gKi9cbiAgZGVzY3JpcHRpb246IHN0cmluZztcblxuICAvKiogU2V2ZXJpdHkgbGV2ZWwgb2YgdGhlIHBhdHRlcm4gKi9cbiAgc2V2ZXJpdHk6ICdjcml0aWNhbCcgfCAnaGlnaCcgfCAnbWVkaXVtJyB8ICdsb3cnO1xuXG4gIC8qKiBMb2NhdGlvbiBpbiBvcmlnaW5hbCBjb250ZW50IChvZmZzZXQgYW5kIGxlbmd0aCkgKi9cbiAgbG9jYXRpb246IHN0cmluZztcblxuICAvKiogRW5jcnlwdGVkIHBhdHRlcm4gKEFFUy0yNTYtR0NNKSAtIFBoYXNlIDIgKi9cbiAgZW5jcnlwdGVkUGF0dGVybj86IHN0cmluZztcblxuICAvKiogRW5jcnlwdGlvbiBhbGdvcml0aG0gdXNlZCAtIFBoYXNlIDIgKi9cbiAgYWxnb3JpdGhtPzogc3RyaW5nO1xuXG4gIC8qKiBJbml0aWFsaXphdGlvbiB2ZWN0b3IgZm9yIGRlY3J5cHRpb24gLSBQaGFzZSAyICovXG4gIGl2Pzogc3RyaW5nO1xuXG4gIC8qKiBHQ00gYXV0aGVudGljYXRpb24gdGFnIGZvciBpbnRlZ3JpdHkgdmVyaWZpY2F0aW9uIC0gUGhhc2UgMiAqL1xuICBhdXRoVGFnPzogc3RyaW5nO1xuXG4gIC8qKiBTYWZldHkgaW5zdHJ1Y3Rpb24gZm9yIHBhdHRlcm4gdXNhZ2UgKi9cbiAgc2FmZXR5SW5zdHJ1Y3Rpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBCYWNrZ3JvdW5kIHZhbGlkYXRpb24gc2VydmljZSBmb3IgbWVtb3J5IGVudHJpZXNcbiAqXG4gKiBUaGlzIHNlcnZpY2UgcnVucyBvdXRzaWRlIHRoZSBMTE0gcmVxdWVzdCBwYXRoIHRvIHZhbGlkYXRlIFVOVFJVU1RFRFxuICogbWVtb3J5IGVudHJpZXMgYW5kIHVwZGF0ZSB0aGVpciB0cnVzdCBsZXZlbHMgYmFzZWQgb24gc2VjdXJpdHkgYW5hbHlzaXMuXG4gKlxuICogUkVGQUNUT1IgTk9URTpcbiAqIENvbnZlcnRlZCB0byBmdWxsIERJIGFyY2hpdGVjdHVyZS4gUmVtb3ZlZCBzaW5nbGV0b24gZXhwb3J0LlxuICogUGF0dGVybkV4dHJhY3RvciBpcyBub3cgaW5qZWN0ZWQgYXMgYSBkZXBlbmRlbmN5IGluc3RlYWQgb2Ygc3RhdGljIGNhbGxzLlxuICovXG5leHBvcnQgY2xhc3MgQmFja2dyb3VuZFZhbGlkYXRvciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBCYWNrZ3JvdW5kVmFsaWRhdG9yQ29uZmlnO1xuICBwcml2YXRlIGludGVydmFsSGFuZGxlPzogTm9kZUpTLlRpbWVvdXQ7XG4gIHByaXZhdGUgaXNQcm9jZXNzaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYXR0ZXJuRXh0cmFjdG9yOiBQYXR0ZXJuRXh0cmFjdG9yLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVtb3J5TWFuYWdlcjogYW55LCAvLyBNZW1vcnlNYW5hZ2VyIC0gdXNpbmcgYW55IHRvIGF2b2lkIGNpcmN1bGFyIGltcG9ydFxuICAgIGNvbmZpZz86IFBhcnRpYWw8QmFja2dyb3VuZFZhbGlkYXRvckNvbmZpZz5cbiAgKSB7XG4gICAgdGhpcy5jb25maWcgPSB7IC4uLkRFRkFVTFRfQ09ORklHLCAuLi5jb25maWcgfTtcbiAgICBsb2dnZXIuaW5mbygnQmFja2dyb3VuZFZhbGlkYXRvciBpbml0aWFsaXplZCcsIHtcbiAgICAgIGVuYWJsZWQ6IHRoaXMuY29uZmlnLmVuYWJsZWQsXG4gICAgICBpbnRlcnZhbFNlY29uZHM6IHRoaXMuY29uZmlnLmludGVydmFsU2Vjb25kcyxcbiAgICAgIGJhdGNoU2l6ZTogdGhpcy5jb25maWcuYmF0Y2hTaXplLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IHRoZSBiYWNrZ3JvdW5kIHZhbGlkYXRpb24gc2VydmljZVxuICAgKiBCZWdpbnMgcGVyaW9kaWMgdmFsaWRhdGlvbiBvZiBVTlRSVVNURUQgbWVtb3JpZXNcbiAgICovXG4gIHN0YXJ0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb25maWcuZW5hYmxlZCkge1xuICAgICAgbG9nZ2VyLmluZm8oJ0JhY2tncm91bmQgdmFsaWRhdGlvbiBkaXNhYmxlZCBpbiBjb25maWcnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pbnRlcnZhbEhhbmRsZSkge1xuICAgICAgbG9nZ2VyLndhcm4oJ0JhY2tncm91bmQgdmFsaWRhdGlvbiBhbHJlYWR5IHJ1bm5pbmcnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsb2dnZXIuaW5mbygnU3RhcnRpbmcgYmFja2dyb3VuZCB2YWxpZGF0aW9uIHNlcnZpY2UnLCB7XG4gICAgICBpbnRlcnZhbFNlY29uZHM6IHRoaXMuY29uZmlnLmludGVydmFsU2Vjb25kcyxcbiAgICB9KTtcblxuICAgIC8vIFJ1biBpbW1lZGlhdGVseSBvbiBzdGFydFxuICAgIHZvaWQgdGhpcy5wcm9jZXNzVW50cnVzdGVkTWVtb3JpZXMoKTtcblxuICAgIC8vIFRoZW4gcnVuIHBlcmlvZGljYWxseVxuICAgIHRoaXMuaW50ZXJ2YWxIYW5kbGUgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICB2b2lkIHRoaXMucHJvY2Vzc1VudHJ1c3RlZE1lbW9yaWVzKCk7XG4gICAgfSwgdGhpcy5jb25maWcuaW50ZXJ2YWxTZWNvbmRzICogMTAwMCk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcCB0aGUgYmFja2dyb3VuZCB2YWxpZGF0aW9uIHNlcnZpY2VcbiAgICovXG4gIHN0b3AoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW50ZXJ2YWxIYW5kbGUpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbEhhbmRsZSk7XG4gICAgICB0aGlzLmludGVydmFsSGFuZGxlID0gdW5kZWZpbmVkO1xuICAgICAgbG9nZ2VyLmluZm8oJ0JhY2tncm91bmQgdmFsaWRhdGlvbiBzZXJ2aWNlIHN0b3BwZWQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyBhbGwgVU5UUlVTVEVEIG1lbW9yeSBlbnRyaWVzXG4gICAqIFRoaXMgaXMgdGhlIG1haW4gYmFja2dyb3VuZCB2YWxpZGF0aW9uIGxvb3BcbiAgICovXG4gIGFzeW5jIHByb2Nlc3NVbnRydXN0ZWRNZW1vcmllcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pc1Byb2Nlc3NpbmcpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZygnVmFsaWRhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzLCBza2lwcGluZyB0aGlzIHJ1bicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gdHJ1ZTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBQSEFTRSAxIElOQ09NUExFVEU6IE1lbW9yeSBkaXNjb3ZlcnkgaW50ZWdyYXRpb24gcGVuZGluZ1xuICAgICAgLy8gSXNzdWUgIzEzMTQgUGhhc2UgMSAtIFRoaXMgd2lsbCBiZSBjb25uZWN0ZWQgdG8gTWVtb3J5IGxvYWRpbmcgc3lzdGVtXG4gICAgICAvLyBpbiBhIGZvbGxvdy11cCBQUiBvbmNlIE1lbW9yeS5maW5kKCkgQVBJIGlzIGF2YWlsYWJsZVxuICAgICAgY29uc3QgdW50cnVzdGVkTWVtb3JpZXMgPSBhd2FpdCB0aGlzLmZpbmRNZW1vcmllc1dpdGhVbnRydXN0ZWRFbnRyaWVzKCk7XG5cbiAgICAgIGlmICh1bnRydXN0ZWRNZW1vcmllcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBsb2dnZXIuaW5mbygnRm91bmQgdW50cnVzdGVkIG1lbW9yaWVzIHRvIHZhbGlkYXRlJywge1xuICAgICAgICBjb3VudDogdW50cnVzdGVkTWVtb3JpZXMubGVuZ3RoLFxuICAgICAgICBiYXRjaFNpemU6IHRoaXMuY29uZmlnLmJhdGNoU2l6ZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBQcm9jZXNzIGluIGJhdGNoZXNcbiAgICAgIGNvbnN0IGJhdGNoZXMgPSB0aGlzLmNyZWF0ZUJhdGNoZXModW50cnVzdGVkTWVtb3JpZXMsIHRoaXMuY29uZmlnLmJhdGNoU2l6ZSk7XG5cbiAgICAgIGZvciAoY29uc3QgYmF0Y2ggb2YgYmF0Y2hlcykge1xuICAgICAgICBhd2FpdCB0aGlzLnByb2Nlc3NCYXRjaChiYXRjaCk7XG4gICAgICB9XG5cbiAgICAgIGxvZ2dlci5pbmZvKCdWYWxpZGF0aW9uIHBhc3MgY29tcGxldGUnKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nZ2VyLmVycm9yKCdFcnJvciBkdXJpbmcgYmFja2dyb3VuZCB2YWxpZGF0aW9uJywgeyBlcnJvciB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc1Byb2Nlc3NpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRmluZCBhbGwgbWVtb3JpZXMgdGhhdCBoYXZlIFVOVFJVU1RFRCBlbnRyaWVzXG4gICAqXG4gICAqIERJIFJFRkFDVE9SOiBVc2UgaW5qZWN0ZWQgTWVtb3J5TWFuYWdlciBpbnN0ZWFkIG9mIHN0YXRpYyBNZW1vcnkgbWV0aG9kc1xuICAgKiBMb2FkcyBtZW1vcmllcyBmcm9tIGZpbGVzeXN0ZW0gYW5kIGZpbHRlcnMgYnkgdHJ1c3QgbGV2ZWxcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZmluZE1lbW9yaWVzV2l0aFVudHJ1c3RlZEVudHJpZXMoKTogUHJvbWlzZTxNZW1vcnlbXT4ge1xuICAgIC8vIExvYWQgYWxsIG1lbW9yaWVzIHVzaW5nIHRoZSBpbmplY3RlZCBNZW1vcnlNYW5hZ2VyXG4gICAgY29uc3QgYWxsTWVtb3JpZXMgPSBhd2FpdCB0aGlzLm1lbW9yeU1hbmFnZXIubGlzdCgpO1xuXG4gICAgLy8gRmlsdGVyIHRvIG9ubHkgbWVtb3JpZXMgd2l0aCBVTlRSVVNURUQgZW50cmllc1xuICAgIGNvbnN0IHVudHJ1c3RlZE1lbW9yaWVzOiBNZW1vcnlbXSA9IFtdO1xuICAgIGNvbnN0IGxpbWl0ID0gdGhpcy5jb25maWcuYmF0Y2hTaXplICogMTA7XG5cbiAgICBmb3IgKGNvbnN0IG1lbW9yeSBvZiBhbGxNZW1vcmllcykge1xuICAgICAgY29uc3QgaGFzVW50cnVzdGVkRW50cmllcyA9IG1lbW9yeS5nZXRFbnRyaWVzQnlUcnVzdExldmVsKFRSVVNUX0xFVkVMUy5VTlRSVVNURUQpLmxlbmd0aCA+IDA7XG4gICAgICBpZiAoaGFzVW50cnVzdGVkRW50cmllcykge1xuICAgICAgICB1bnRydXN0ZWRNZW1vcmllcy5wdXNoKG1lbW9yeSk7XG5cbiAgICAgICAgLy8gQXBwbHkgbGltaXRcbiAgICAgICAgaWYgKHVudHJ1c3RlZE1lbW9yaWVzLmxlbmd0aCA+PSBsaW1pdCkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHVudHJ1c3RlZE1lbW9yaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZygnRm91bmQgbWVtb3JpZXMgd2l0aCB1bnRydXN0ZWQgZW50cmllcycsIHtcbiAgICAgICAgY291bnQ6IHVudHJ1c3RlZE1lbW9yaWVzLmxlbmd0aCxcbiAgICAgICAgbGltaXRcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB1bnRydXN0ZWRNZW1vcmllcztcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIGEgYmF0Y2ggb2YgbWVtb3JpZXMgZm9yIHZhbGlkYXRpb25cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgcHJvY2Vzc0JhdGNoKG1lbW9yaWVzOiBNZW1vcnlbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxvZ2dlci5kZWJ1ZygnUHJvY2Vzc2luZyBiYXRjaCcsIHsgc2l6ZTogbWVtb3JpZXMubGVuZ3RoIH0pO1xuXG4gICAgZm9yIChjb25zdCBtZW1vcnkgb2YgbWVtb3JpZXMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMudmFsaWRhdGVNZW1vcnkobWVtb3J5KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcignRXJyb3IgdmFsaWRhdGluZyBtZW1vcnknLCB7XG4gICAgICAgICAgbWVtb3J5SWQ6IG1lbW9yeS5pZCxcbiAgICAgICAgICBlcnJvcixcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGFsbCBVTlRSVVNURUQgZW50cmllcyBpbiBhIG1lbW9yeVxuICAgKiBGSVggIzEzMjA6IE5vdyB1c2VzIHB1YmxpYyBNZW1vcnkgQVBJIGFuZCBzYXZlcyBjaGFuZ2VzXG4gICAqIEZJWCAoQ2xhdWRlIEJvdCBSZXZpZXcpOiBSZW1vdmVkIHR5cGUgY2FzdGluZyBmb3IgbWVtb3J5LmlkXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHZhbGlkYXRlTWVtb3J5KG1lbW9yeTogTWVtb3J5KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbG9nZ2VyLmRlYnVnKCdWYWxpZGF0aW5nIG1lbW9yeScsIHsgbWVtb3J5SWQ6IG1lbW9yeS5pZCB9KTtcblxuICAgIGxldCB1cGRhdGVkQ291bnQgPSAwO1xuXG4gICAgLy8gRklYICMxMzIwOiBVc2UgcHVibGljIEFQSSBpbnN0ZWFkIG9mIGNhc3RpbmcgdG8gYW55XG4gICAgY29uc3QgZW50cmllcyA9IG1lbW9yeS5nZXRFbnRyaWVzQnlUcnVzdExldmVsKFRSVVNUX0xFVkVMUy5VTlRSVVNURUQpO1xuXG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB1cGRhdGVkID0gYXdhaXQgdGhpcy52YWxpZGF0ZUVudHJ5KGVudHJ5KTtcbiAgICAgICAgaWYgKHVwZGF0ZWQpIHtcbiAgICAgICAgICB1cGRhdGVkQ291bnQrKztcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdFcnJvciB2YWxpZGF0aW5nIGVudHJ5Jywge1xuICAgICAgICAgIGVudHJ5SWQ6IGVudHJ5LmlkLFxuICAgICAgICAgIGVycm9yLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodXBkYXRlZENvdW50ID4gMCkge1xuICAgICAgbG9nZ2VyLmluZm8oJ1VwZGF0ZWQgdHJ1c3QgbGV2ZWxzIGluIG1lbW9yeScsIHtcbiAgICAgICAgbWVtb3J5SWQ6IG1lbW9yeS5pZCxcbiAgICAgICAgdXBkYXRlZENvdW50LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIERJIFJFRkFDVE9SOiBVc2UgaW5qZWN0ZWQgTWVtb3J5TWFuYWdlciB0byBzYXZlXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLm1lbW9yeU1hbmFnZXIuc2F2ZShtZW1vcnkpO1xuICAgICAgICBsb2dnZXIuZGVidWcoJ01lbW9yeSBzYXZlZCBzdWNjZXNzZnVsbHknLCB7XG4gICAgICAgICAgbWVtb3J5SWQ6IG1lbW9yeS5pZFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcignRmFpbGVkIHRvIHNhdmUgbWVtb3J5IGFmdGVyIHZhbGlkYXRpb24nLCB7XG4gICAgICAgICAgbWVtb3J5SWQ6IG1lbW9yeS5pZCxcbiAgICAgICAgICBlcnJvclxuICAgICAgICB9KTtcbiAgICAgICAgLy8gRG9uJ3QgdGhyb3cgLSBjb250aW51ZSB3aXRoIG90aGVyIG1lbW9yaWVzXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGEgc2luZ2xlIG1lbW9yeSBlbnRyeSBhbmQgdXBkYXRlIGl0cyB0cnVzdCBsZXZlbFxuICAgKlxuICAgKiBAcGFyYW0gZW50cnkgLSBUaGUgbWVtb3J5IGVudHJ5IHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGVudHJ5IHdhcyB1cGRhdGVkLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgdmFsaWRhdGVFbnRyeShlbnRyeTogYW55KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgbG9nZ2VyLmRlYnVnKCdWYWxpZGF0aW5nIGVudHJ5JywgeyBlbnRyeUlkOiBlbnRyeS5pZCB9KTtcblxuICAgIC8vIFZhbGlkYXRlIGNvbnRlbnQgdXNpbmcgQ29udGVudFZhbGlkYXRvclxuICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBDb250ZW50VmFsaWRhdG9yLnZhbGlkYXRlQW5kU2FuaXRpemUoZW50cnkuY29udGVudCwge1xuICAgICAgc2tpcFNpemVDaGVjazogdHJ1ZSxcbiAgICB9KTtcblxuICAgIC8vIERldGVybWluZSBuZXcgdHJ1c3QgbGV2ZWwgYmFzZWQgb24gdmFsaWRhdGlvbiByZXN1bHRzXG4gICAgY29uc3QgbmV3VHJ1c3RMZXZlbCA9IHRoaXMuZGV0ZXJtaW5lVHJ1c3RMZXZlbCh2YWxpZGF0aW9uUmVzdWx0KTtcblxuICAgIGlmIChuZXdUcnVzdExldmVsID09PSBlbnRyeS50cnVzdExldmVsKSB7XG4gICAgICBsb2dnZXIuZGVidWcoJ1RydXN0IGxldmVsIHVuY2hhbmdlZCcsIHtcbiAgICAgICAgZW50cnlJZDogZW50cnkuaWQsXG4gICAgICAgIHRydXN0TGV2ZWw6IGVudHJ5LnRydXN0TGV2ZWwsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgdHJ1c3QgbGV2ZWxcbiAgICBlbnRyeS50cnVzdExldmVsID0gbmV3VHJ1c3RMZXZlbDtcblxuICAgIGxvZ2dlci5pbmZvKCdVcGRhdGVkIGVudHJ5IHRydXN0IGxldmVsJywge1xuICAgICAgZW50cnlJZDogZW50cnkuaWQsXG4gICAgICBvbGRUcnVzdExldmVsOiBUUlVTVF9MRVZFTFMuVU5UUlVTVEVELFxuICAgICAgbmV3VHJ1c3RMZXZlbCxcbiAgICAgIGRldGVjdGVkUGF0dGVybnM6IHZhbGlkYXRpb25SZXN1bHQuZGV0ZWN0ZWRQYXR0ZXJucz8ubGVuZ3RoIHx8IDAsXG4gICAgfSk7XG5cbiAgICAvLyBJZiBGTEFHR0VELCBleHRyYWN0IHBhdHRlcm5zIGFuZCBjcmVhdGUgc2FuaXRpemVkIGNvbnRlbnRcbiAgICBpZiAobmV3VHJ1c3RMZXZlbCA9PT0gVFJVU1RfTEVWRUxTLkZMQUdHRUQpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZygnRW50cnkgZmxhZ2dlZCwgZXh0cmFjdGluZyBwYXR0ZXJucycsIHtcbiAgICAgICAgZW50cnlJZDogZW50cnkuaWQsXG4gICAgICAgIHBhdHRlcm5zOiB2YWxpZGF0aW9uUmVzdWx0LmRldGVjdGVkUGF0dGVybnMsXG4gICAgICB9KTtcblxuICAgICAgLy8gUGhhc2UgMTogRXh0cmFjdCBwYXR0ZXJucyBhbmQgY3JlYXRlIHNhbml0aXplZCBjb250ZW50XG4gICAgICBjb25zdCBleHRyYWN0aW9uUmVzdWx0ID0gdGhpcy5wYXR0ZXJuRXh0cmFjdG9yLmV4dHJhY3RQYXR0ZXJucyhcbiAgICAgICAgZW50cnkuY29udGVudCxcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdFxuICAgICAgKTtcblxuICAgICAgLy8gU3RvcmUgc2FuaXRpemVkIHBhdHRlcm5zIGFuZCBjb250ZW50IGluIGVudHJ5IG1ldGFkYXRhXG4gICAgICAvLyBQaGFzZSAyIHdpbGwgYWRkIGVuY3J5cHRpb24gdG8gdGhlc2UgcGF0dGVybnNcbiAgICAgIGVudHJ5LnNhbml0aXplZFBhdHRlcm5zID0gZXh0cmFjdGlvblJlc3VsdC5wYXR0ZXJucztcbiAgICAgIGVudHJ5LnNhbml0aXplZENvbnRlbnQgPSBleHRyYWN0aW9uUmVzdWx0LnNhbml0aXplZENvbnRlbnQ7XG5cbiAgICAgIGxvZ2dlci5pbmZvKCdQYXR0ZXJucyBleHRyYWN0ZWQgZnJvbSBlbnRyeScsIHtcbiAgICAgICAgZW50cnlJZDogZW50cnkuaWQsXG4gICAgICAgIHBhdHRlcm5Db3VudDogZXh0cmFjdGlvblJlc3VsdC5wYXR0ZXJuQ291bnQsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIHRydXN0IGxldmVsIGJhc2VkIG9uIHZhbGlkYXRpb24gcmVzdWx0c1xuICAgKi9cbiAgcHJpdmF0ZSBkZXRlcm1pbmVUcnVzdExldmVsKHZhbGlkYXRpb25SZXN1bHQ6IENvbnRlbnRWYWxpZGF0aW9uUmVzdWx0KTogc3RyaW5nIHtcbiAgICAvLyBJZiB2YWxpZGF0aW9uIHBhc3NlZCB3aXRoIG5vIHBhdHRlcm5zLCBtYXJrIGFzIFZBTElEQVRFRFxuICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0LmlzVmFsaWQgJiYgKCF2YWxpZGF0aW9uUmVzdWx0LmRldGVjdGVkUGF0dGVybnMgfHwgdmFsaWRhdGlvblJlc3VsdC5kZXRlY3RlZFBhdHRlcm5zLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgIHJldHVybiBUUlVTVF9MRVZFTFMuVkFMSURBVEVEO1xuICAgIH1cblxuICAgIC8vIElmIGNyaXRpY2FsL2hpZ2ggc2V2ZXJpdHkgdGhyZWF0cyBkZXRlY3RlZCwgbWFyayBhcyBGTEFHR0VEXG4gICAgaWYgKHZhbGlkYXRpb25SZXN1bHQuc2V2ZXJpdHkgPT09ICdjcml0aWNhbCcgfHwgdmFsaWRhdGlvblJlc3VsdC5zZXZlcml0eSA9PT0gJ2hpZ2gnKSB7XG4gICAgICAvLyBQSEFTRSAxIElOQ09NUExFVEU6IFFVQVJBTlRJTkVEIHRydXN0IGxldmVsIGxvZ2ljIGRlZmVycmVkIChJc3N1ZSAjMTMxNClcbiAgICAgIC8vIFdpbGwgYWRkIGRpc3RpbmN0aW9uIGJldHdlZW4gRkxBR0dFRCAoZGFuZ2Vyb3VzKSB2cyBRVUFSQU5USU5FRCAobWFsaWNpb3VzKVxuICAgICAgLy8gRm9yIG5vdywgYWxsIGhpZ2gvY3JpdGljYWwgc2V2ZXJpdHkgZ29lcyB0byBGTEFHR0VEXG4gICAgICByZXR1cm4gVFJVU1RfTEVWRUxTLkZMQUdHRUQ7XG4gICAgfVxuXG4gICAgLy8gTWVkaXVtL2xvdyBzZXZlcml0eSBvciBtaW5vciBpc3N1ZXMgLSBrZWVwIGFzIFVOVFJVU1RFRCBmb3Igbm93XG4gICAgLy8gKENvdWxkIGJlIFZBTElEQVRFRCBpbiBhIG1vcmUgbGVuaWVudCBwb2xpY3kpXG4gICAgcmV0dXJuIFRSVVNUX0xFVkVMUy5VTlRSVVNURUQ7XG4gIH1cblxuICAvKipcbiAgICogU3BsaXQgYW4gYXJyYXkgaW50byBiYXRjaGVzIG9mIHNwZWNpZmllZCBzaXplXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUJhdGNoZXM8VD4oaXRlbXM6IFRbXSwgYmF0Y2hTaXplOiBudW1iZXIpOiBUW11bXSB7XG4gICAgY29uc3QgYmF0Y2hlczogVFtdW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSArPSBiYXRjaFNpemUpIHtcbiAgICAgIGJhdGNoZXMucHVzaChpdGVtcy5zbGljZShpLCBpICsgYmF0Y2hTaXplKSk7XG4gICAgfVxuICAgIHJldHVybiBiYXRjaGVzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjdXJyZW50IHZhbGlkYXRpb24gc3RhdGlzdGljc1xuICAgKi9cbiAgZ2V0U3RhdHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVuYWJsZWQ6IHRoaXMuY29uZmlnLmVuYWJsZWQsXG4gICAgICBpc1Byb2Nlc3Npbmc6IHRoaXMuaXNQcm9jZXNzaW5nLFxuICAgICAgaW50ZXJ2YWxTZWNvbmRzOiB0aGlzLmNvbmZpZy5pbnRlcnZhbFNlY29uZHMsXG4gICAgICBiYXRjaFNpemU6IHRoaXMuY29uZmlnLmJhdGNoU2l6ZSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3Bvc2Ugb2YgdGhlIHZhbGlkYXRvciBhbmQgY2xlYW4gdXAgcmVzb3VyY2VzXG4gICAqIEltcGxlbWVudHMgY2xlYW51cCBmb3IgcHJvcGVyIERJIGxpZmVjeWNsZSBtYW5hZ2VtZW50XG4gICAqL1xuICBhc3luYyBkaXNwb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc3RvcCgpO1xuICAgIGxvZ2dlci5kZWJ1ZygnQmFja2dyb3VuZFZhbGlkYXRvciBkaXNwb3NlZCcpO1xuICB9XG59XG4iXX0=
|
|
323
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFja2dyb3VuZFZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZWN1cml0eS92YWxpZGF0aW9uL0JhY2tncm91bmRWYWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0MsT0FBTyxFQUNMLGdCQUFnQixFQUNoQiw4QkFBOEIsR0FFL0IsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFxQnBFOztHQUVHO0FBQ0gsTUFBTSxjQUFjLEdBQThCO0lBQ2hELE9BQU8sRUFBRSxJQUFJO0lBQ2IsZUFBZSxFQUFFLEdBQUcsRUFBRyxZQUFZO0lBQ25DLFNBQVMsRUFBRSxFQUFFO0lBQ2IsbUJBQW1CLEVBQUUsSUFBSTtDQUMxQixDQUFDO0FBa0NGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyxtQkFBbUI7SUFNWDtJQUNBO0lBTkYsTUFBTSxDQUE0QjtJQUMzQyxjQUFjLENBQWtCO0lBQ2hDLFlBQVksR0FBWSxLQUFLLENBQUM7SUFFdEMsWUFDbUIsZ0JBQWtDLEVBQ2xDLGFBQWtCLEVBQUUscURBQXFEO0lBQzFGLE1BQTJDO1FBRjFCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsa0JBQWEsR0FBYixhQUFhLENBQUs7UUFHbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsY0FBYyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFDL0MsTUFBTSxDQUFDLElBQUksQ0FBQyxpQ0FBaUMsRUFBRTtZQUM3QyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO1lBQzVCLGVBQWUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWU7WUFDNUMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUztTQUNqQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsMENBQTBDLENBQUMsQ0FBQztZQUN4RCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUNBQXVDLENBQUMsQ0FBQztZQUNyRCxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsd0NBQXdDLEVBQUU7WUFDcEQsZUFBZSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZTtTQUM3QyxDQUFDLENBQUM7UUFFSCwyQkFBMkI7UUFDM0IsS0FBSyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUVyQyx3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO1lBQ3JDLEtBQUssSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDdkMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUk7UUFDRixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUNBQXVDLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyx3QkFBd0I7UUFDNUIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1lBQ2xFLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFFekIsSUFBSSxDQUFDO1lBQ0gsMkRBQTJEO1lBQzNELHdFQUF3RTtZQUN4RSx3REFBd0Q7WUFDeEQsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO1lBRXhFLElBQUksaUJBQWlCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNuQyxPQUFPO1lBQ1QsQ0FBQztZQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsc0NBQXNDLEVBQUU7Z0JBQ2xELEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxNQUFNO2dCQUMvQixTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTO2FBQ2pDLENBQUMsQ0FBQztZQUVILHFCQUFxQjtZQUNyQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFN0UsS0FBSyxNQUFNLEtBQUssSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLENBQUM7WUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixNQUFNLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNoRSxDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssS0FBSyxDQUFDLGdDQUFnQztRQUM1QyxxREFBcUQ7UUFDckQsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXBELGlEQUFpRDtRQUNqRCxNQUFNLGlCQUFpQixHQUFhLEVBQUUsQ0FBQztRQUN2QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFFekMsS0FBSyxNQUFNLE1BQU0sSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNqQyxNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUM3RixJQUFJLG1CQUFtQixFQUFFLENBQUM7Z0JBQ3hCLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFFL0IsY0FBYztnQkFDZCxJQUFJLGlCQUFpQixDQUFDLE1BQU0sSUFBSSxLQUFLLEVBQUUsQ0FBQztvQkFDdEMsTUFBTTtnQkFDUixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxNQUFNLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxFQUFFO2dCQUNwRCxLQUFLLEVBQUUsaUJBQWlCLENBQUMsTUFBTTtnQkFDL0IsS0FBSzthQUNOLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLGlCQUFpQixDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNLLEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBa0I7UUFDM0MsTUFBTSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUU1RCxLQUFLLE1BQU0sTUFBTSxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQztnQkFDSCxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEMsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsRUFBRTtvQkFDdEMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFO29CQUNuQixLQUFLO2lCQUNOLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQWM7UUFDekMsTUFBTSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUUzRCxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7UUFFckIsc0RBQXNEO1FBQ3RELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFdEUsS0FBSyxNQUFNLEtBQUssSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNaLFlBQVksRUFBRSxDQUFDO2dCQUNqQixDQUFDO1lBQ0gsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsRUFBRTtvQkFDckMsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFO29CQUNqQixLQUFLO2lCQUNOLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckIsTUFBTSxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRTtnQkFDNUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFO2dCQUNuQixZQUFZO2FBQ2IsQ0FBQyxDQUFDO1lBRUgsa0RBQWtEO1lBQ2xELElBQUksQ0FBQztnQkFDSCxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN0QyxNQUFNLENBQUMsS0FBSyxDQUFDLDJCQUEyQixFQUFFO29CQUN4QyxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUU7aUJBQ3BCLENBQUMsQ0FBQztZQUNMLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE1BQU0sQ0FBQyxLQUFLLENBQUMsd0NBQXdDLEVBQUU7b0JBQ3JELFFBQVEsRUFBRSxNQUFNLENBQUMsRUFBRTtvQkFDbkIsS0FBSztpQkFDTixDQUFDLENBQUM7Z0JBQ0gsNkNBQTZDO1lBQy9DLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFVO1FBQ3BDLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFeEQsMENBQTBDO1FBQzFDLE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsNEJBQTRCLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNwRixhQUFhLEVBQUUsSUFBSTtTQUNwQixDQUFDLENBQUM7UUFFSCx3REFBd0Q7UUFDeEQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFakUsSUFBSSxhQUFhLEtBQUssS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEVBQUU7Z0JBQ3BDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRTtnQkFDakIsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO2FBQzdCLENBQUMsQ0FBQztZQUNILE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELHFCQUFxQjtRQUNyQixLQUFLLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQztRQUVqQyxNQUFNLENBQUMsSUFBSSxDQUFDLDJCQUEyQixFQUFFO1lBQ3ZDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRTtZQUNqQixhQUFhLEVBQUUsWUFBWSxDQUFDLFNBQVM7WUFDckMsYUFBYTtZQUNiLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLGdCQUFnQixFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2pFLENBQUMsQ0FBQztRQUVILDREQUE0RDtRQUM1RCxJQUFJLGFBQWEsS0FBSyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDM0MsTUFBTSxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsRUFBRTtnQkFDakQsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNqQixRQUFRLEVBQUUsZ0JBQWdCLENBQUMsZ0JBQWdCO2FBQzVDLENBQUMsQ0FBQztZQUVILHlEQUF5RDtZQUN6RCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQzVELEtBQUssQ0FBQyxPQUFPLEVBQ2IsZ0JBQWdCLENBQ2pCLENBQUM7WUFFRix5REFBeUQ7WUFDekQsZ0RBQWdEO1lBQ2hELEtBQUssQ0FBQyxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7WUFDcEQsS0FBSyxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyw4QkFBOEIsQ0FBQztnQkFDbEcsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQjtnQkFDbkMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDO1lBRXRDLE1BQU0sQ0FBQyxJQUFJLENBQUMsK0JBQStCLEVBQUU7Z0JBQzNDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRTtnQkFDakIsWUFBWSxFQUFFLGdCQUFnQixDQUFDLFlBQVk7YUFDNUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0ssbUJBQW1CLENBQUMsZ0JBQXlDO1FBQ25FLDJEQUEyRDtRQUMzRCxJQUFJLGdCQUFnQixDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLElBQUksZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdkgsT0FBTyxZQUFZLENBQUMsU0FBUyxDQUFDO1FBQ2hDLENBQUM7UUFFRCw4REFBOEQ7UUFDOUQsSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLEtBQUssVUFBVSxJQUFJLGdCQUFnQixDQUFDLFFBQVEsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUNyRiwyRUFBMkU7WUFDM0UsOEVBQThFO1lBQzlFLHNEQUFzRDtZQUN0RCxPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUM7UUFDOUIsQ0FBQztRQUVELGtFQUFrRTtRQUNsRSxnREFBZ0Q7UUFDaEQsT0FBTyxZQUFZLENBQUMsU0FBUyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNLLGFBQWEsQ0FBSSxLQUFVLEVBQUUsU0FBaUI7UUFDcEQsTUFBTSxPQUFPLEdBQVUsRUFBRSxDQUFDO1FBQzFCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNqRCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRO1FBQ04sT0FBTztZQUNMLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87WUFDNUIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLGVBQWUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWU7WUFDNUMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUztTQUNqQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxPQUFPO1FBQ1gsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1osTUFBTSxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQmFja2dyb3VuZCBWYWxpZGF0aW9uIFNlcnZpY2UgZm9yIE1lbW9yeSBTZWN1cml0eVxuICpcbiAqIFBhcnQgb2YgSXNzdWUgIzEzMTQgUGhhc2UgMTogTWVtb3J5IFNlY3VyaXR5IEFyY2hpdGVjdHVyZVxuICpcbiAqIFBVUlBPU0U6XG4gKiBBc3luY2hyb25vdXNseSB2YWxpZGF0ZXMgVU5UUlVTVEVEIG1lbW9yeSBlbnRyaWVzIGFuZCB1cGRhdGVzIHRoZWlyIHRydXN0IGxldmVsc1xuICogd2l0aG91dCBibG9ja2luZyBtZW1vcnkgY3JlYXRpb24uIFJ1bnMgb3V0c2lkZSB0aGUgTExNIHJlcXVlc3QgcGF0aCB0byBhdm9pZFxuICogdG9rZW4gY29zdHMgYW5kIGxhdGVuY3kuXG4gKlxuICogQVJDSElURUNUVVJFOlxuICogLSBMYXllciAyIGluIHRoZSBNZW1vcnkgU2VjdXJpdHkgQXJjaGl0ZWN0dXJlIChzZWUgZG9jcy9kZXZlbG9wbWVudC9NRU1PUllfU0VDVVJJVFlfQVJDSElURUNUVVJFLm1kKVxuICogLSBSdW5zIHNlcnZlci1zaWRlLCBub3QgaW4gTExNIGNvbnRleHRcbiAqIC0gTm8gdG9rZW4gY29zdCBmb3IgdmFsaWRhdGlvblxuICogLSBVcGRhdGVzIHRydXN0IGxldmVscyBpbi1wbGFjZVxuICpcbiAqIFRSVVNUIExFVkVMIFRSQU5TSVRJT05TOlxuICogVU5UUlVTVEVEIOKGkiBWQUxJREFURUQgKGNsZWFuIGNvbnRlbnQsIG5vIHBhdHRlcm5zKVxuICogVU5UUlVTVEVEIOKGkiBGTEFHR0VEIChkYW5nZXJvdXMgcGF0dGVybnMgZGV0ZWN0ZWQsIG5lZWRzIGVuY3J5cHRpb24pXG4gKiBVTlRSVVNURUQg4oaSIFFVQVJBTlRJTkVEIChleHBsaWNpdGx5IG1hbGljaW91cywgY3JpdGljYWwgdGhyZWF0KVxuICpcbiAqIEBtb2R1bGUgQmFja2dyb3VuZFZhbGlkYXRvclxuICovXG5cbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5pbXBvcnQge1xuICBDb250ZW50VmFsaWRhdG9yLFxuICBNQUxJQ0lPVVNfWUFNTF9DT05URU5UX1BBVFRFUk4sXG4gIHR5cGUgQ29udGVudFZhbGlkYXRpb25SZXN1bHQsXG59IGZyb20gJy4uL2NvbnRlbnRWYWxpZGF0b3IuanMnO1xuaW1wb3J0IHsgVFJVU1RfTEVWRUxTIH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvbWVtb3JpZXMvY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IFBhdHRlcm5FeHRyYWN0b3IgfSBmcm9tICcuL1BhdHRlcm5FeHRyYWN0b3IuanMnO1xuaW1wb3J0IHR5cGUgeyBNZW1vcnkgfSBmcm9tICcuLi8uLi9lbGVtZW50cy9tZW1vcmllcy9NZW1vcnkuanMnO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGJhY2tncm91bmQgdmFsaWRhdGlvbiBiZWhhdmlvclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhY2tncm91bmRWYWxpZGF0b3JDb25maWcge1xuICAvKiogRW5hYmxlIGJhY2tncm91bmQgdmFsaWRhdGlvbiAoZGVmYXVsdDogdHJ1ZSkgKi9cbiAgZW5hYmxlZDogYm9vbGVhbjtcblxuICAvKiogSW50ZXJ2YWwgaW4gc2Vjb25kcyBiZXR3ZWVuIHZhbGlkYXRpb24gcnVucyAoZGVmYXVsdDogMzAwID0gNSBtaW51dGVzKSAqL1xuICBpbnRlcnZhbFNlY29uZHM6IG51bWJlcjtcblxuICAvKiogTWF4aW11bSBudW1iZXIgb2YgbWVtb3JpZXMgdG8gcHJvY2VzcyBwZXIgYmF0Y2ggKGRlZmF1bHQ6IDEwKSAqL1xuICBiYXRjaFNpemU6IG51bWJlcjtcblxuICAvKiogTWF4aW11bSB0aW1lIGluIG1zIGZvciBhIHNpbmdsZSB2YWxpZGF0aW9uIG9wZXJhdGlvbiAoZGVmYXVsdDogNTAwMCkgKi9cbiAgdmFsaWRhdGlvblRpbWVvdXRNczogbnVtYmVyO1xufVxuXG4vKipcbiAqIERlZmF1bHQgY29uZmlndXJhdGlvbiBmb3IgYmFja2dyb3VuZCB2YWxpZGF0aW9uXG4gKi9cbmNvbnN0IERFRkFVTFRfQ09ORklHOiBCYWNrZ3JvdW5kVmFsaWRhdG9yQ29uZmlnID0ge1xuICBlbmFibGVkOiB0cnVlLFxuICBpbnRlcnZhbFNlY29uZHM6IDMwMCwgIC8vIDUgbWludXRlc1xuICBiYXRjaFNpemU6IDEwLFxuICB2YWxpZGF0aW9uVGltZW91dE1zOiA1MDAwLFxufTtcblxuLyoqXG4gKiBQYXR0ZXJuIGluZm9ybWF0aW9uIGZvciBlbmNyeXB0ZWQgc3RvcmFnZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNhbml0aXplZFBhdHRlcm4ge1xuICAvKiogVW5pcXVlIHJlZmVyZW5jZSBJRCBmb3IgdGhpcyBwYXR0ZXJuICovXG4gIHJlZjogc3RyaW5nO1xuXG4gIC8qKiBIdW1hbi1yZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB0aGUgcGF0dGVybiAqL1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gIC8qKiBTZXZlcml0eSBsZXZlbCBvZiB0aGUgcGF0dGVybiAqL1xuICBzZXZlcml0eTogJ2NyaXRpY2FsJyB8ICdoaWdoJyB8ICdtZWRpdW0nIHwgJ2xvdyc7XG5cbiAgLyoqIExvY2F0aW9uIGluIG9yaWdpbmFsIGNvbnRlbnQgKG9mZnNldCBhbmQgbGVuZ3RoKSAqL1xuICBsb2NhdGlvbjogc3RyaW5nO1xuXG4gIC8qKiBFbmNyeXB0ZWQgcGF0dGVybiAoQUVTLTI1Ni1HQ00pIC0gUGhhc2UgMiAqL1xuICBlbmNyeXB0ZWRQYXR0ZXJuPzogc3RyaW5nO1xuXG4gIC8qKiBFbmNyeXB0aW9uIGFsZ29yaXRobSB1c2VkIC0gUGhhc2UgMiAqL1xuICBhbGdvcml0aG0/OiBzdHJpbmc7XG5cbiAgLyoqIEluaXRpYWxpemF0aW9uIHZlY3RvciBmb3IgZGVjcnlwdGlvbiAtIFBoYXNlIDIgKi9cbiAgaXY/OiBzdHJpbmc7XG5cbiAgLyoqIEdDTSBhdXRoZW50aWNhdGlvbiB0YWcgZm9yIGludGVncml0eSB2ZXJpZmljYXRpb24gLSBQaGFzZSAyICovXG4gIGF1dGhUYWc/OiBzdHJpbmc7XG5cbiAgLyoqIFNhZmV0eSBpbnN0cnVjdGlvbiBmb3IgcGF0dGVybiB1c2FnZSAqL1xuICBzYWZldHlJbnN0cnVjdGlvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEJhY2tncm91bmQgdmFsaWRhdGlvbiBzZXJ2aWNlIGZvciBtZW1vcnkgZW50cmllc1xuICpcbiAqIFRoaXMgc2VydmljZSBydW5zIG91dHNpZGUgdGhlIExMTSByZXF1ZXN0IHBhdGggdG8gdmFsaWRhdGUgVU5UUlVTVEVEXG4gKiBtZW1vcnkgZW50cmllcyBhbmQgdXBkYXRlIHRoZWlyIHRydXN0IGxldmVscyBiYXNlZCBvbiBzZWN1cml0eSBhbmFseXNpcy5cbiAqXG4gKiBSRUZBQ1RPUiBOT1RFOlxuICogQ29udmVydGVkIHRvIGZ1bGwgREkgYXJjaGl0ZWN0dXJlLiBSZW1vdmVkIHNpbmdsZXRvbiBleHBvcnQuXG4gKiBQYXR0ZXJuRXh0cmFjdG9yIGlzIG5vdyBpbmplY3RlZCBhcyBhIGRlcGVuZGVuY3kgaW5zdGVhZCBvZiBzdGF0aWMgY2FsbHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBCYWNrZ3JvdW5kVmFsaWRhdG9yIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IEJhY2tncm91bmRWYWxpZGF0b3JDb25maWc7XG4gIHByaXZhdGUgaW50ZXJ2YWxIYW5kbGU/OiBOb2RlSlMuVGltZW91dDtcbiAgcHJpdmF0ZSBpc1Byb2Nlc3Npbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhdHRlcm5FeHRyYWN0b3I6IFBhdHRlcm5FeHRyYWN0b3IsXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZW1vcnlNYW5hZ2VyOiBhbnksIC8vIE1lbW9yeU1hbmFnZXIgLSB1c2luZyBhbnkgdG8gYXZvaWQgY2lyY3VsYXIgaW1wb3J0XG4gICAgY29uZmlnPzogUGFydGlhbDxCYWNrZ3JvdW5kVmFsaWRhdG9yQ29uZmlnPlxuICApIHtcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4uREVGQVVMVF9DT05GSUcsIC4uLmNvbmZpZyB9O1xuICAgIGxvZ2dlci5pbmZvKCdCYWNrZ3JvdW5kVmFsaWRhdG9yIGluaXRpYWxpemVkJywge1xuICAgICAgZW5hYmxlZDogdGhpcy5jb25maWcuZW5hYmxlZCxcbiAgICAgIGludGVydmFsU2Vjb25kczogdGhpcy5jb25maWcuaW50ZXJ2YWxTZWNvbmRzLFxuICAgICAgYmF0Y2hTaXplOiB0aGlzLmNvbmZpZy5iYXRjaFNpemUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgdGhlIGJhY2tncm91bmQgdmFsaWRhdGlvbiBzZXJ2aWNlXG4gICAqIEJlZ2lucyBwZXJpb2RpYyB2YWxpZGF0aW9uIG9mIFVOVFJVU1RFRCBtZW1vcmllc1xuICAgKi9cbiAgc3RhcnQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5lbmFibGVkKSB7XG4gICAgICBsb2dnZXIuaW5mbygnQmFja2dyb3VuZCB2YWxpZGF0aW9uIGRpc2FibGVkIGluIGNvbmZpZycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmludGVydmFsSGFuZGxlKSB7XG4gICAgICBsb2dnZXIud2FybignQmFja2dyb3VuZCB2YWxpZGF0aW9uIGFscmVhZHkgcnVubmluZycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxvZ2dlci5pbmZvKCdTdGFydGluZyBiYWNrZ3JvdW5kIHZhbGlkYXRpb24gc2VydmljZScsIHtcbiAgICAgIGludGVydmFsU2Vjb25kczogdGhpcy5jb25maWcuaW50ZXJ2YWxTZWNvbmRzLFxuICAgIH0pO1xuXG4gICAgLy8gUnVuIGltbWVkaWF0ZWx5IG9uIHN0YXJ0XG4gICAgdm9pZCB0aGlzLnByb2Nlc3NVbnRydXN0ZWRNZW1vcmllcygpO1xuXG4gICAgLy8gVGhlbiBydW4gcGVyaW9kaWNhbGx5XG4gICAgdGhpcy5pbnRlcnZhbEhhbmRsZSA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHZvaWQgdGhpcy5wcm9jZXNzVW50cnVzdGVkTWVtb3JpZXMoKTtcbiAgICB9LCB0aGlzLmNvbmZpZy5pbnRlcnZhbFNlY29uZHMgKiAxMDAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIHRoZSBiYWNrZ3JvdW5kIHZhbGlkYXRpb24gc2VydmljZVxuICAgKi9cbiAgc3RvcCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnRlcnZhbEhhbmRsZSkge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsSGFuZGxlKTtcbiAgICAgIHRoaXMuaW50ZXJ2YWxIYW5kbGUgPSB1bmRlZmluZWQ7XG4gICAgICBsb2dnZXIuaW5mbygnQmFja2dyb3VuZCB2YWxpZGF0aW9uIHNlcnZpY2Ugc3RvcHBlZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIGFsbCBVTlRSVVNURUQgbWVtb3J5IGVudHJpZXNcbiAgICogVGhpcyBpcyB0aGUgbWFpbiBiYWNrZ3JvdW5kIHZhbGlkYXRpb24gbG9vcFxuICAgKi9cbiAgYXN5bmMgcHJvY2Vzc1VudHJ1c3RlZE1lbW9yaWVzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmlzUHJvY2Vzc2luZykge1xuICAgICAgbG9nZ2VyLmRlYnVnKCdWYWxpZGF0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3MsIHNraXBwaW5nIHRoaXMgcnVuJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc1Byb2Nlc3NpbmcgPSB0cnVlO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFBIQVNFIDEgSU5DT01QTEVURTogTWVtb3J5IGRpc2NvdmVyeSBpbnRlZ3JhdGlvbiBwZW5kaW5nXG4gICAgICAvLyBJc3N1ZSAjMTMxNCBQaGFzZSAxIC0gVGhpcyB3aWxsIGJlIGNvbm5lY3RlZCB0byBNZW1vcnkgbG9hZGluZyBzeXN0ZW1cbiAgICAgIC8vIGluIGEgZm9sbG93LXVwIFBSIG9uY2UgTWVtb3J5LmZpbmQoKSBBUEkgaXMgYXZhaWxhYmxlXG4gICAgICBjb25zdCB1bnRydXN0ZWRNZW1vcmllcyA9IGF3YWl0IHRoaXMuZmluZE1lbW9yaWVzV2l0aFVudHJ1c3RlZEVudHJpZXMoKTtcblxuICAgICAgaWYgKHVudHJ1c3RlZE1lbW9yaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGxvZ2dlci5pbmZvKCdGb3VuZCB1bnRydXN0ZWQgbWVtb3JpZXMgdG8gdmFsaWRhdGUnLCB7XG4gICAgICAgIGNvdW50OiB1bnRydXN0ZWRNZW1vcmllcy5sZW5ndGgsXG4gICAgICAgIGJhdGNoU2l6ZTogdGhpcy5jb25maWcuYmF0Y2hTaXplLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFByb2Nlc3MgaW4gYmF0Y2hlc1xuICAgICAgY29uc3QgYmF0Y2hlcyA9IHRoaXMuY3JlYXRlQmF0Y2hlcyh1bnRydXN0ZWRNZW1vcmllcywgdGhpcy5jb25maWcuYmF0Y2hTaXplKTtcblxuICAgICAgZm9yIChjb25zdCBiYXRjaCBvZiBiYXRjaGVzKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucHJvY2Vzc0JhdGNoKGJhdGNoKTtcbiAgICAgIH1cblxuICAgICAgbG9nZ2VyLmluZm8oJ1ZhbGlkYXRpb24gcGFzcyBjb21wbGV0ZScpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yIGR1cmluZyBiYWNrZ3JvdW5kIHZhbGlkYXRpb24nLCB7IGVycm9yIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmlzUHJvY2Vzc2luZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIGFsbCBtZW1vcmllcyB0aGF0IGhhdmUgVU5UUlVTVEVEIGVudHJpZXNcbiAgICpcbiAgICogREkgUkVGQUNUT1I6IFVzZSBpbmplY3RlZCBNZW1vcnlNYW5hZ2VyIGluc3RlYWQgb2Ygc3RhdGljIE1lbW9yeSBtZXRob2RzXG4gICAqIExvYWRzIG1lbW9yaWVzIGZyb20gZmlsZXN5c3RlbSBhbmQgZmlsdGVycyBieSB0cnVzdCBsZXZlbFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBmaW5kTWVtb3JpZXNXaXRoVW50cnVzdGVkRW50cmllcygpOiBQcm9taXNlPE1lbW9yeVtdPiB7XG4gICAgLy8gTG9hZCBhbGwgbWVtb3JpZXMgdXNpbmcgdGhlIGluamVjdGVkIE1lbW9yeU1hbmFnZXJcbiAgICBjb25zdCBhbGxNZW1vcmllcyA9IGF3YWl0IHRoaXMubWVtb3J5TWFuYWdlci5saXN0KCk7XG5cbiAgICAvLyBGaWx0ZXIgdG8gb25seSBtZW1vcmllcyB3aXRoIFVOVFJVU1RFRCBlbnRyaWVzXG4gICAgY29uc3QgdW50cnVzdGVkTWVtb3JpZXM6IE1lbW9yeVtdID0gW107XG4gICAgY29uc3QgbGltaXQgPSB0aGlzLmNvbmZpZy5iYXRjaFNpemUgKiAxMDtcblxuICAgIGZvciAoY29uc3QgbWVtb3J5IG9mIGFsbE1lbW9yaWVzKSB7XG4gICAgICBjb25zdCBoYXNVbnRydXN0ZWRFbnRyaWVzID0gbWVtb3J5LmdldEVudHJpZXNCeVRydXN0TGV2ZWwoVFJVU1RfTEVWRUxTLlVOVFJVU1RFRCkubGVuZ3RoID4gMDtcbiAgICAgIGlmIChoYXNVbnRydXN0ZWRFbnRyaWVzKSB7XG4gICAgICAgIHVudHJ1c3RlZE1lbW9yaWVzLnB1c2gobWVtb3J5KTtcblxuICAgICAgICAvLyBBcHBseSBsaW1pdFxuICAgICAgICBpZiAodW50cnVzdGVkTWVtb3JpZXMubGVuZ3RoID49IGxpbWl0KSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodW50cnVzdGVkTWVtb3JpZXMubGVuZ3RoID4gMCkge1xuICAgICAgbG9nZ2VyLmRlYnVnKCdGb3VuZCBtZW1vcmllcyB3aXRoIHVudHJ1c3RlZCBlbnRyaWVzJywge1xuICAgICAgICBjb3VudDogdW50cnVzdGVkTWVtb3JpZXMubGVuZ3RoLFxuICAgICAgICBsaW1pdFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVudHJ1c3RlZE1lbW9yaWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3MgYSBiYXRjaCBvZiBtZW1vcmllcyBmb3IgdmFsaWRhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBwcm9jZXNzQmF0Y2gobWVtb3JpZXM6IE1lbW9yeVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbG9nZ2VyLmRlYnVnKCdQcm9jZXNzaW5nIGJhdGNoJywgeyBzaXplOiBtZW1vcmllcy5sZW5ndGggfSk7XG5cbiAgICBmb3IgKGNvbnN0IG1lbW9yeSBvZiBtZW1vcmllcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy52YWxpZGF0ZU1lbW9yeShtZW1vcnkpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdFcnJvciB2YWxpZGF0aW5nIG1lbW9yeScsIHtcbiAgICAgICAgICBtZW1vcnlJZDogbWVtb3J5LmlkLFxuICAgICAgICAgIGVycm9yLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgYWxsIFVOVFJVU1RFRCBlbnRyaWVzIGluIGEgbWVtb3J5XG4gICAqIEZJWCAjMTMyMDogTm93IHVzZXMgcHVibGljIE1lbW9yeSBBUEkgYW5kIHNhdmVzIGNoYW5nZXNcbiAgICogRklYIChDbGF1ZGUgQm90IFJldmlldyk6IFJlbW92ZWQgdHlwZSBjYXN0aW5nIGZvciBtZW1vcnkuaWRcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgdmFsaWRhdGVNZW1vcnkobWVtb3J5OiBNZW1vcnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsb2dnZXIuZGVidWcoJ1ZhbGlkYXRpbmcgbWVtb3J5JywgeyBtZW1vcnlJZDogbWVtb3J5LmlkIH0pO1xuXG4gICAgbGV0IHVwZGF0ZWRDb3VudCA9IDA7XG5cbiAgICAvLyBGSVggIzEzMjA6IFVzZSBwdWJsaWMgQVBJIGluc3RlYWQgb2YgY2FzdGluZyB0byBhbnlcbiAgICBjb25zdCBlbnRyaWVzID0gbWVtb3J5LmdldEVudHJpZXNCeVRydXN0TGV2ZWwoVFJVU1RfTEVWRUxTLlVOVFJVU1RFRCk7XG5cbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCB0aGlzLnZhbGlkYXRlRW50cnkoZW50cnkpO1xuICAgICAgICBpZiAodXBkYXRlZCkge1xuICAgICAgICAgIHVwZGF0ZWRDb3VudCsrO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yIHZhbGlkYXRpbmcgZW50cnknLCB7XG4gICAgICAgICAgZW50cnlJZDogZW50cnkuaWQsXG4gICAgICAgICAgZXJyb3IsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh1cGRhdGVkQ291bnQgPiAwKSB7XG4gICAgICBsb2dnZXIuaW5mbygnVXBkYXRlZCB0cnVzdCBsZXZlbHMgaW4gbWVtb3J5Jywge1xuICAgICAgICBtZW1vcnlJZDogbWVtb3J5LmlkLFxuICAgICAgICB1cGRhdGVkQ291bnQsXG4gICAgICB9KTtcblxuICAgICAgLy8gREkgUkVGQUNUT1I6IFVzZSBpbmplY3RlZCBNZW1vcnlNYW5hZ2VyIHRvIHNhdmVcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMubWVtb3J5TWFuYWdlci5zYXZlKG1lbW9yeSk7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZygnTWVtb3J5IHNhdmVkIHN1Y2Nlc3NmdWxseScsIHtcbiAgICAgICAgICBtZW1vcnlJZDogbWVtb3J5LmlkXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc2F2ZSBtZW1vcnkgYWZ0ZXIgdmFsaWRhdGlvbicsIHtcbiAgICAgICAgICBtZW1vcnlJZDogbWVtb3J5LmlkLFxuICAgICAgICAgIGVycm9yXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBEb24ndCB0aHJvdyAtIGNvbnRpbnVlIHdpdGggb3RoZXIgbWVtb3JpZXNcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgYSBzaW5nbGUgbWVtb3J5IGVudHJ5IGFuZCB1cGRhdGUgaXRzIHRydXN0IGxldmVsXG4gICAqXG4gICAqIEBwYXJhbSBlbnRyeSAtIFRoZSBtZW1vcnkgZW50cnkgdG8gdmFsaWRhdGVcbiAgICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgZW50cnkgd2FzIHVwZGF0ZWQsIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyB2YWxpZGF0ZUVudHJ5KGVudHJ5OiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBsb2dnZXIuZGVidWcoJ1ZhbGlkYXRpbmcgZW50cnknLCB7IGVudHJ5SWQ6IGVudHJ5LmlkIH0pO1xuXG4gICAgLy8gVmFsaWRhdGUgY29udGVudCB1c2luZyBDb250ZW50VmFsaWRhdG9yXG4gICAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IENvbnRlbnRWYWxpZGF0b3IudmFsaWRhdGVBbmRTYW5pdGl6ZVlhbWxBd2FyZShlbnRyeS5jb250ZW50LCB7XG4gICAgICBza2lwU2l6ZUNoZWNrOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgLy8gRGV0ZXJtaW5lIG5ldyB0cnVzdCBsZXZlbCBiYXNlZCBvbiB2YWxpZGF0aW9uIHJlc3VsdHNcbiAgICBjb25zdCBuZXdUcnVzdExldmVsID0gdGhpcy5kZXRlcm1pbmVUcnVzdExldmVsKHZhbGlkYXRpb25SZXN1bHQpO1xuXG4gICAgaWYgKG5ld1RydXN0TGV2ZWwgPT09IGVudHJ5LnRydXN0TGV2ZWwpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZygnVHJ1c3QgbGV2ZWwgdW5jaGFuZ2VkJywge1xuICAgICAgICBlbnRyeUlkOiBlbnRyeS5pZCxcbiAgICAgICAgdHJ1c3RMZXZlbDogZW50cnkudHJ1c3RMZXZlbCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0cnVzdCBsZXZlbFxuICAgIGVudHJ5LnRydXN0TGV2ZWwgPSBuZXdUcnVzdExldmVsO1xuXG4gICAgbG9nZ2VyLmluZm8oJ1VwZGF0ZWQgZW50cnkgdHJ1c3QgbGV2ZWwnLCB7XG4gICAgICBlbnRyeUlkOiBlbnRyeS5pZCxcbiAgICAgIG9sZFRydXN0TGV2ZWw6IFRSVVNUX0xFVkVMUy5VTlRSVVNURUQsXG4gICAgICBuZXdUcnVzdExldmVsLFxuICAgICAgZGV0ZWN0ZWRQYXR0ZXJuczogdmFsaWRhdGlvblJlc3VsdC5kZXRlY3RlZFBhdHRlcm5zPy5sZW5ndGggfHwgMCxcbiAgICB9KTtcblxuICAgIC8vIElmIEZMQUdHRUQsIGV4dHJhY3QgcGF0dGVybnMgYW5kIGNyZWF0ZSBzYW5pdGl6ZWQgY29udGVudFxuICAgIGlmIChuZXdUcnVzdExldmVsID09PSBUUlVTVF9MRVZFTFMuRkxBR0dFRCkge1xuICAgICAgbG9nZ2VyLmRlYnVnKCdFbnRyeSBmbGFnZ2VkLCBleHRyYWN0aW5nIHBhdHRlcm5zJywge1xuICAgICAgICBlbnRyeUlkOiBlbnRyeS5pZCxcbiAgICAgICAgcGF0dGVybnM6IHZhbGlkYXRpb25SZXN1bHQuZGV0ZWN0ZWRQYXR0ZXJucyxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBQaGFzZSAxOiBFeHRyYWN0IHBhdHRlcm5zIGFuZCBjcmVhdGUgc2FuaXRpemVkIGNvbnRlbnRcbiAgICAgIGNvbnN0IGV4dHJhY3Rpb25SZXN1bHQgPSB0aGlzLnBhdHRlcm5FeHRyYWN0b3IuZXh0cmFjdFBhdHRlcm5zKFxuICAgICAgICBlbnRyeS5jb250ZW50LFxuICAgICAgICB2YWxpZGF0aW9uUmVzdWx0XG4gICAgICApO1xuXG4gICAgICAvLyBTdG9yZSBzYW5pdGl6ZWQgcGF0dGVybnMgYW5kIGNvbnRlbnQgaW4gZW50cnkgbWV0YWRhdGFcbiAgICAgIC8vIFBoYXNlIDIgd2lsbCBhZGQgZW5jcnlwdGlvbiB0byB0aGVzZSBwYXR0ZXJuc1xuICAgICAgZW50cnkuc2FuaXRpemVkUGF0dGVybnMgPSBleHRyYWN0aW9uUmVzdWx0LnBhdHRlcm5zO1xuICAgICAgZW50cnkuc2FuaXRpemVkQ29udGVudCA9IHZhbGlkYXRpb25SZXN1bHQuZGV0ZWN0ZWRQYXR0ZXJucz8uaW5jbHVkZXMoTUFMSUNJT1VTX1lBTUxfQ09OVEVOVF9QQVRURVJOKVxuICAgICAgICA/IHZhbGlkYXRpb25SZXN1bHQuc2FuaXRpemVkQ29udGVudFxuICAgICAgICA6IGV4dHJhY3Rpb25SZXN1bHQuc2FuaXRpemVkQ29udGVudDtcblxuICAgICAgbG9nZ2VyLmluZm8oJ1BhdHRlcm5zIGV4dHJhY3RlZCBmcm9tIGVudHJ5Jywge1xuICAgICAgICBlbnRyeUlkOiBlbnRyeS5pZCxcbiAgICAgICAgcGF0dGVybkNvdW50OiBleHRyYWN0aW9uUmVzdWx0LnBhdHRlcm5Db3VudCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZSB0aGUgYXBwcm9wcmlhdGUgdHJ1c3QgbGV2ZWwgYmFzZWQgb24gdmFsaWRhdGlvbiByZXN1bHRzXG4gICAqL1xuICBwcml2YXRlIGRldGVybWluZVRydXN0TGV2ZWwodmFsaWRhdGlvblJlc3VsdDogQ29udGVudFZhbGlkYXRpb25SZXN1bHQpOiBzdHJpbmcge1xuICAgIC8vIElmIHZhbGlkYXRpb24gcGFzc2VkIHdpdGggbm8gcGF0dGVybnMsIG1hcmsgYXMgVkFMSURBVEVEXG4gICAgaWYgKHZhbGlkYXRpb25SZXN1bHQuaXNWYWxpZCAmJiAoIXZhbGlkYXRpb25SZXN1bHQuZGV0ZWN0ZWRQYXR0ZXJucyB8fCB2YWxpZGF0aW9uUmVzdWx0LmRldGVjdGVkUGF0dGVybnMubGVuZ3RoID09PSAwKSkge1xuICAgICAgcmV0dXJuIFRSVVNUX0xFVkVMUy5WQUxJREFURUQ7XG4gICAgfVxuXG4gICAgLy8gSWYgY3JpdGljYWwvaGlnaCBzZXZlcml0eSB0aHJlYXRzIGRldGVjdGVkLCBtYXJrIGFzIEZMQUdHRURcbiAgICBpZiAodmFsaWRhdGlvblJlc3VsdC5zZXZlcml0eSA9PT0gJ2NyaXRpY2FsJyB8fCB2YWxpZGF0aW9uUmVzdWx0LnNldmVyaXR5ID09PSAnaGlnaCcpIHtcbiAgICAgIC8vIFBIQVNFIDEgSU5DT01QTEVURTogUVVBUkFOVElORUQgdHJ1c3QgbGV2ZWwgbG9naWMgZGVmZXJyZWQgKElzc3VlICMxMzE0KVxuICAgICAgLy8gV2lsbCBhZGQgZGlzdGluY3Rpb24gYmV0d2VlbiBGTEFHR0VEIChkYW5nZXJvdXMpIHZzIFFVQVJBTlRJTkVEIChtYWxpY2lvdXMpXG4gICAgICAvLyBGb3Igbm93LCBhbGwgaGlnaC9jcml0aWNhbCBzZXZlcml0eSBnb2VzIHRvIEZMQUdHRURcbiAgICAgIHJldHVybiBUUlVTVF9MRVZFTFMuRkxBR0dFRDtcbiAgICB9XG5cbiAgICAvLyBNZWRpdW0vbG93IHNldmVyaXR5IG9yIG1pbm9yIGlzc3VlcyAtIGtlZXAgYXMgVU5UUlVTVEVEIGZvciBub3dcbiAgICAvLyAoQ291bGQgYmUgVkFMSURBVEVEIGluIGEgbW9yZSBsZW5pZW50IHBvbGljeSlcbiAgICByZXR1cm4gVFJVU1RfTEVWRUxTLlVOVFJVU1RFRDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdCBhbiBhcnJheSBpbnRvIGJhdGNoZXMgb2Ygc3BlY2lmaWVkIHNpemVcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlQmF0Y2hlczxUPihpdGVtczogVFtdLCBiYXRjaFNpemU6IG51bWJlcik6IFRbXVtdIHtcbiAgICBjb25zdCBiYXRjaGVzOiBUW11bXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpICs9IGJhdGNoU2l6ZSkge1xuICAgICAgYmF0Y2hlcy5wdXNoKGl0ZW1zLnNsaWNlKGksIGkgKyBiYXRjaFNpemUpKTtcbiAgICB9XG4gICAgcmV0dXJuIGJhdGNoZXM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgdmFsaWRhdGlvbiBzdGF0aXN0aWNzXG4gICAqL1xuICBnZXRTdGF0cygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZW5hYmxlZDogdGhpcy5jb25maWcuZW5hYmxlZCxcbiAgICAgIGlzUHJvY2Vzc2luZzogdGhpcy5pc1Byb2Nlc3NpbmcsXG4gICAgICBpbnRlcnZhbFNlY29uZHM6IHRoaXMuY29uZmlnLmludGVydmFsU2Vjb25kcyxcbiAgICAgIGJhdGNoU2l6ZTogdGhpcy5jb25maWcuYmF0Y2hTaXplLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGlzcG9zZSBvZiB0aGUgdmFsaWRhdG9yIGFuZCBjbGVhbiB1cCByZXNvdXJjZXNcbiAgICogSW1wbGVtZW50cyBjbGVhbnVwIGZvciBwcm9wZXIgREkgbGlmZWN5Y2xlIG1hbmFnZW1lbnRcbiAgICovXG4gIGFzeW5jIGRpc3Bvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5zdG9wKCk7XG4gICAgbG9nZ2VyLmRlYnVnKCdCYWNrZ3JvdW5kVmFsaWRhdG9yIGRpc3Bvc2VkJyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryMetadataExtractor.d.ts","sourceRoot":"","sources":["../../src/storage/MemoryMetadataExtractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"MemoryMetadataExtractor.d.ts","sourceRoot":"","sources":["../../src/storage/MemoryMetadataExtractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGpD,qBAAa,uBAAuB;IAClC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAkC;IAEvE;;;;;;OAMG;IACH,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA6G5F;;;;;OAKG;IACH,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IASpD;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAUjC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAkBjC,gEAAgE;IAChE,OAAO,CAAC,MAAM,CAAC,YAAY;IAY3B,OAAO,CAAC,MAAM,CAAC,aAAa;CAG7B"}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
import { SecureYamlParser } from '../security/secureYamlParser.js';
|
|
11
11
|
import { UnicodeValidator } from '../security/validators/unicodeValidator.js';
|
|
12
12
|
import { MEMORY_CONSTANTS } from '../elements/memories/constants.js';
|
|
13
|
+
import { validateMemoryControlFields } from '../elements/memories/memoryYamlValidation.js';
|
|
13
14
|
import { logger } from '../utils/logger.js';
|
|
14
15
|
export class MemoryMetadataExtractor {
|
|
15
16
|
/**
|
|
@@ -154,7 +155,11 @@ export class MemoryMetadataExtractor {
|
|
|
154
155
|
*/
|
|
155
156
|
static tryParseYamlObject(content) {
|
|
156
157
|
try {
|
|
157
|
-
|
|
158
|
+
const data = SecureYamlParser.parseRawYaml(content, MemoryMetadataExtractor.MAX_YAML_SIZE, { detectContentPatterns: false });
|
|
159
|
+
if (!validateMemoryControlFields(data)) {
|
|
160
|
+
return { errorMessage: 'Malicious memory control content detected' };
|
|
161
|
+
}
|
|
162
|
+
return { data };
|
|
158
163
|
}
|
|
159
164
|
catch (error) {
|
|
160
165
|
return {
|
|
@@ -178,4 +183,4 @@ export class MemoryMetadataExtractor {
|
|
|
178
183
|
return UnicodeValidator.normalize(value).normalizedContent;
|
|
179
184
|
}
|
|
180
185
|
}
|
|
181
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVtb3J5TWV0YWRhdGFFeHRyYWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmFnZS9NZW1vcnlNZXRhZGF0YUV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU1QyxNQUFNLE9BQU8sdUJBQXVCO0lBQ2xDOzs7T0FHRztJQUNLLE1BQU0sQ0FBVSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsYUFBYSxDQUFDO0lBRXZFOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxlQUFlLENBQUMsVUFBa0IsRUFBRSxZQUFvQjtRQUM3RCxJQUFJLENBQUMsVUFBVSxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BGLE9BQU8sdUJBQXVCLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRyx1QkFBdUIsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1RSxJQUFJLFFBQVEsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLDBFQUEwRTtZQUMxRSwrREFBK0Q7WUFDL0QsTUFBTSxTQUFTLEdBQUcsdUJBQXVCLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDekUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNmLElBQUks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a0JBQWtCLENBQUMsT0FBZTtRQUMvQyxJQUFJLENBQUM7WUFDSCxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsdUJBQXVCLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUNqRyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU87Z0JBQ0wsWUFBWSxFQUFFLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7YUFDckUsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsZ0VBQWdFO0lBQ3hELE1BQU0sQ0FBQyxZQUFZLENBQUMsWUFBb0I7UUFDOUMsT0FBTztZQUNMLFFBQVEsRUFBRSxZQUFZO1lBQ3RCLElBQUksRUFBRSxTQUFTO1lBQ2YsV0FBVyxFQUFFLEVBQUU7WUFDZixPQUFPLEVBQUUsT0FBTztZQUNoQixNQUFNLEVBQUUsRUFBRTtZQUNWLElBQUksRUFBRSxFQUFFO1lBQ1IsVUFBVSxFQUFFLHVCQUF1QixDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUM7U0FDbEUsQ0FBQztJQUNKLENBQUM7SUFFTyxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQWE7UUFDeEMsT0FBTyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsaUJBQWlCLENBQUM7SUFDN0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRXh0cmFjdHMgbWV0YWRhdGEgZnJvbSBwdXJlIFlBTUwgbWVtb3J5IGZpbGVzIGZvciBsaWdodHdlaWdodCBpbmRleGluZy5cbiAqXG4gKiBNZW1vcnkgZmlsZXMgZGlmZmVyIGZyb20gb3RoZXIgZWxlbWVudHM6IHRoZXkgYXJlIHB1cmUgWUFNTCAobm90IG1hcmtkb3duXG4gKiB3aXRoIGZyb250bWF0dGVyKS4gTWV0YWRhdGEgbGl2ZXMgdW5kZXIgYSB0b3AtbGV2ZWwgYG1ldGFkYXRhYCBrZXkgb3JcbiAqIGRpcmVjdGx5IGFzIHRvcC1sZXZlbCBrZXlzLiBUaGlzIGV4dHJhY3RvciByZWFkcyByYXcgWUFNTCBhbmQgcmV0dXJuc1xuICogdGhlIHN1YnNldCBvZiBmaWVsZHMgbmVlZGVkIGZvciBFbGVtZW50SW5kZXhFbnRyeSB3aXRob3V0IGNvbnN0cnVjdGluZ1xuICogYSBmdWxsIE1lbW9yeSBvYmplY3QuXG4gKi9cblxuaW1wb3J0IHsgU2VjdXJlWWFtbFBhcnNlciB9IGZyb20gJy4uL3NlY3VyaXR5L3NlY3VyZVlhbWxQYXJzZXIuanMnO1xuaW1wb3J0IHsgVW5pY29kZVZhbGlkYXRvciB9IGZyb20gJy4uL3NlY3VyaXR5L3ZhbGlkYXRvcnMvdW5pY29kZVZhbGlkYXRvci5qcyc7XG5pbXBvcnQgeyBNRU1PUllfQ09OU1RBTlRTIH0gZnJvbSAnLi4vZWxlbWVudHMvbWVtb3JpZXMvY29uc3RhbnRzLmpzJztcbmltcG9ydCB0eXBlIHsgRWxlbWVudEluZGV4RW50cnkgfSBmcm9tICcuL3R5cGVzLmpzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5cbmV4cG9ydCBjbGFzcyBNZW1vcnlNZXRhZGF0YUV4dHJhY3RvciB7XG4gIC8qKlxuICAgKiBBbGlnbiB3aXRoIHRoZSBtZW1vcnkgc2F2ZS9sb2FkIGxpbWl0ICgyNTZLQikuIElzc3VlICMyMzI5OiB0aGlzIHdhcyA2NEtCLFxuICAgKiBzbyBtZW1vcmllcyB0aGF0IGdyZXcgcGFzdCBpdCBpbmRleGVkIGFzICd1bm5hbWVkJyB3aXRoIGRlZmF1bHQgbWV0YWRhdGEuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBNQVhfWUFNTF9TSVpFID0gTUVNT1JZX0NPTlNUQU5UUy5NQVhfWUFNTF9TSVpFO1xuXG4gIC8qKlxuICAgKiBFeHRyYWN0IGluZGV4LXJlbGV2YW50IG1ldGFkYXRhIGZyb20gcmF3IFlBTUwgbWVtb3J5IGNvbnRlbnQuXG4gICAqXG4gICAqIEBwYXJhbSByYXdDb250ZW50IC0gRnVsbCBZQU1MIGZpbGUgY29udGVudFxuICAgKiBAcGFyYW0gcmVsYXRpdmVQYXRoIC0gUGF0aCByZWxhdGl2ZSB0byB0aGUgbWVtb3JpZXMgZWxlbWVudCBkaXJlY3RvcnlcbiAgICogQHJldHVybnMgUGFydGlhbCBFbGVtZW50SW5kZXhFbnRyeSB3aXRoIGV4dHJhY3RlZCBmaWVsZHNcbiAgICovXG4gIHN0YXRpYyBleHRyYWN0TWV0YWRhdGEocmF3Q29udGVudDogc3RyaW5nLCByZWxhdGl2ZVBhdGg6IHN0cmluZyk6IFBhcnRpYWw8RWxlbWVudEluZGV4RW50cnk+IHtcbiAgICBpZiAoIXJhd0NvbnRlbnQgfHwgdHlwZW9mIHJhd0NvbnRlbnQgIT09ICdzdHJpbmcnIHx8IHJhd0NvbnRlbnQudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIE1lbW9yeU1ldGFkYXRhRXh0cmFjdG9yLmRlZmF1bHRFbnRyeShyZWxhdGl2ZVBhdGgpO1xuICAgIH1cblxuICAgIGNvbnN0IHByaW1hcnlQYXJzZSA9IE1lbW9yeU1ldGFkYXRhRXh0cmFjdG9yLnRyeVBhcnNlWWFtbE9iamVjdChyYXdDb250ZW50KTtcbiAgICBsZXQgeWFtbERhdGEgPSBwcmltYXJ5UGFyc2UuZGF0YTtcbiAgICBpZiAoIXlhbWxEYXRhKSB7XG4gICAgICAvLyBNdWx0aS1kb2N1bWVudCBzdHJlYW1zIChmcm9udG1hdHRlciArIGNvbnRlbnQpIGZhaWwgc2luZ2xlLWRvYyBwYXJzaW5nLlxuICAgICAgLy8gRXh0cmFjdCBqdXN0IHRoZSBmcm9udG1hdHRlciBibG9jayBhbmQgcmV0cnkgcGFyc2luZyBzYWZlbHkuXG4gICAgICBjb25zdCBmbUNvbnRlbnQgPSBNZW1vcnlNZXRhZGF0YUV4dHJhY3Rvci5leHRyYWN0RnJvbnRtYXR0ZXIocmF3Q29udGVudCk7XG4gICAgICBpZiAoIWZtQ29udGVudCkge1xuICAgICAgICBpZiAocHJpbWFyeVBhcnNlLmVycm9yTWVzc2FnZSkge1xuICAgICAgICAgIGxvZ2dlci5kZWJ1ZygnTWVtb3J5TWV0YWRhdGFFeHRyYWN0b3I6IGZhaWxlZCB0byBwYXJzZSBZQU1MLCByZXR1cm5pbmcgZGVmYXVsdCBtZXRhZGF0YScsIHtcbiAgICAgICAgICAgIHJlbGF0aXZlUGF0aCxcbiAgICAgICAgICAgIHN0YWdlOiAncHJpbWFyeScsXG4gICAgICAgICAgICBlcnJvcjogcHJpbWFyeVBhcnNlLmVycm9yTWVzc2FnZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTWVtb3J5TWV0YWRhdGFFeHRyYWN0b3IuZGVmYXVsdEVudHJ5KHJlbGF0aXZlUGF0aCk7XG4gICAgICB9XG4gICAgICBjb25zdCBmYWxsYmFja1BhcnNlID0gTWVtb3J5TWV0YWRhdGFFeHRyYWN0b3IudHJ5UGFyc2VZYW1sT2JqZWN0KGZtQ29udGVudCk7XG4gICAgICB5YW1sRGF0YSA9IGZhbGxiYWNrUGFyc2UuZGF0YTtcbiAgICAgIGlmICgheWFtbERhdGEpIHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKCdNZW1vcnlNZXRhZGF0YUV4dHJhY3RvcjogZmFpbGVkIHRvIHBhcnNlIFlBTUwgKHByaW1hcnkgKyBmcm9udG1hdHRlciBmYWxsYmFjayksIHJldHVybmluZyBkZWZhdWx0IG1ldGFkYXRhJywge1xuICAgICAgICAgIHJlbGF0aXZlUGF0aCxcbiAgICAgICAgICBwcmltYXJ5RXJyb3I6IHByaW1hcnlQYXJzZS5lcnJvck1lc3NhZ2UsXG4gICAgICAgICAgZmFsbGJhY2tFcnJvcjogZmFsbGJhY2tQYXJzZS5lcnJvck1lc3NhZ2UsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gTWVtb3J5TWV0YWRhdGFFeHRyYWN0b3IuZGVmYXVsdEVudHJ5KHJlbGF0aXZlUGF0aCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTWVtb3J5IGZpbGVzIHN0b3JlIG1ldGFkYXRhIHVuZGVyIGEgdG9wLWxldmVsIGBtZXRhZGF0YWAga2V5IG9yIGRpcmVjdGx5IGFzIHRvcC1sZXZlbCBrZXlzXG4gICAgY29uc3QgbWV0YWRhdGFTb3VyY2UgPSAoXG4gICAgICB5YW1sRGF0YS5tZXRhZGF0YSAmJiB0eXBlb2YgeWFtbERhdGEubWV0YWRhdGEgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHlhbWxEYXRhLm1ldGFkYXRhKVxuICAgICAgICA/IHlhbWxEYXRhLm1ldGFkYXRhXG4gICAgICAgIDogeWFtbERhdGFcbiAgICApIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gICAgY29uc3Qgbm9ybWFsaXplZE5hbWUgPSB0eXBlb2YgbWV0YWRhdGFTb3VyY2UubmFtZSA9PT0gJ3N0cmluZydcbiAgICAgID8gTWVtb3J5TWV0YWRhdGFFeHRyYWN0b3Iubm9ybWFsaXplVGV4dChtZXRhZGF0YVNvdXJjZS5uYW1lKVxuICAgICAgOiAnJztcbiAgICBjb25zdCBuYW1lID0gbm9ybWFsaXplZE5hbWUubGVuZ3RoID4gMFxuICAgICAgPyBub3JtYWxpemVkTmFtZVxuICAgICAgOiAndW5uYW1lZCc7XG5cbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHR5cGVvZiBtZXRhZGF0YVNvdXJjZS5kZXNjcmlwdGlvbiA9PT0gJ3N0cmluZydcbiAgICAgID8gTWVtb3J5TWV0YWRhdGFFeHRyYWN0b3Iubm9ybWFsaXplVGV4dChtZXRhZGF0YVNvdXJjZS5kZXNjcmlwdGlvbilcbiAgICAgIDogJyc7XG5cbiAgICBjb25zdCBub3JtYWxpemVkVmVyc2lvbiA9IHR5cGVvZiBtZXRhZGF0YVNvdXJjZS52ZXJzaW9uID09PSAnc3RyaW5nJ1xuICAgICAgPyBNZW1vcnlNZXRhZGF0YUV4dHJhY3Rvci5ub3JtYWxpemVUZXh0KG1ldGFkYXRhU291cmNlLnZlcnNpb24pXG4gICAgICA6ICcnO1xuICAgIGNvbnN0IHZlcnNpb24gPSBub3JtYWxpemVkVmVyc2lvbi5sZW5ndGggPiAwXG4gICAgICA/IG5vcm1hbGl6ZWRWZXJzaW9uXG4gICAgICA6ICcxLjAuMCc7XG5cbiAgICBjb25zdCBhdXRob3IgPSB0eXBlb2YgbWV0YWRhdGFTb3VyY2UuYXV0aG9yID09PSAnc3RyaW5nJ1xuICAgICAgPyBNZW1vcnlNZXRhZGF0YUV4dHJhY3Rvci5ub3JtYWxpemVUZXh0KG1ldGFkYXRhU291cmNlLmF1dGhvcilcbiAgICAgIDogJyc7XG5cbiAgICBjb25zdCB0YWdzID0gQXJyYXkuaXNBcnJheShtZXRhZGF0YVNvdXJjZS50YWdzKSAmJiBtZXRhZGF0YVNvdXJjZS50YWdzLmV2ZXJ5KCh0OiB1bmtub3duKSA9PiB0eXBlb2YgdCA9PT0gJ3N0cmluZycpXG4gICAgICA/IChtZXRhZGF0YVNvdXJjZS50YWdzIGFzIHN0cmluZ1tdKVxuICAgICAgICAubWFwKHRhZyA9PiBNZW1vcnlNZXRhZGF0YUV4dHJhY3Rvci5ub3JtYWxpemVUZXh0KHRhZykpXG4gICAgICAgIC5maWx0ZXIodGFnID0+IHRhZy5sZW5ndGggPiAwKVxuICAgICAgOiBbXTtcblxuICAgIGNvbnN0IGF1dG9Mb2FkID0gdHlwZW9mIG1ldGFkYXRhU291cmNlLmF1dG9Mb2FkID09PSAnYm9vbGVhbidcbiAgICAgID8gbWV0YWRhdGFTb3VyY2UuYXV0b0xvYWRcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgcHJpb3JpdHkgPSB0eXBlb2YgbWV0YWRhdGFTb3VyY2UucHJpb3JpdHkgPT09ICdudW1iZXInXG4gICAgICA/IG1ldGFkYXRhU291cmNlLnByaW9yaXR5XG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IG5vcm1hbGl6ZWRNZW1vcnlUeXBlID0gdHlwZW9mIG1ldGFkYXRhU291cmNlLm1lbW9yeVR5cGUgPT09ICdzdHJpbmcnXG4gICAgICA/IE1lbW9yeU1ldGFkYXRhRXh0cmFjdG9yLm5vcm1hbGl6ZVRleHQobWV0YWRhdGFTb3VyY2UubWVtb3J5VHlwZSlcbiAgICAgIDogJyc7XG4gICAgY29uc3QgbWVtb3J5VHlwZSA9IG5vcm1hbGl6ZWRNZW1vcnlUeXBlLmxlbmd0aCA+IDBcbiAgICAgID8gbm9ybWFsaXplZE1lbW9yeVR5cGVcbiAgICAgIDogTWVtb3J5TWV0YWRhdGFFeHRyYWN0b3IuaW5mZXJNZW1vcnlUeXBlKHJlbGF0aXZlUGF0aCk7XG5cbiAgICAvLyB0b3RhbEVudHJpZXM6IHByZWZlciBzdGF0cy50b3RhbEVudHJpZXMsIGZhbGwgYmFjayB0byBlbnRyaWVzIGFycmF5IGxlbmd0aFxuICAgIGxldCB0b3RhbEVudHJpZXM6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBzdGF0cyA9IHlhbWxEYXRhLnN0YXRzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICAgIGlmIChzdGF0cyAmJiB0eXBlb2Ygc3RhdHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBzdGF0cy50b3RhbEVudHJpZXMgPT09ICdudW1iZXInKSB7XG4gICAgICB0b3RhbEVudHJpZXMgPSBzdGF0cy50b3RhbEVudHJpZXM7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHlhbWxEYXRhLmVudHJpZXMpKSB7XG4gICAgICB0b3RhbEVudHJpZXMgPSB5YW1sRGF0YS5lbnRyaWVzLmxlbmd0aDtcbiAgICB9XG5cbiAgICBjb25zdCBlbnRyeTogUGFydGlhbDxFbGVtZW50SW5kZXhFbnRyeT4gPSB7XG4gICAgICBmaWxlUGF0aDogcmVsYXRpdmVQYXRoLFxuICAgICAgbmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgdmVyc2lvbixcbiAgICAgIGF1dGhvcixcbiAgICAgIHRhZ3MsXG4gICAgICBtZW1vcnlUeXBlLFxuICAgIH07XG5cbiAgICBpZiAoYXV0b0xvYWQgIT09IHVuZGVmaW5lZCkgZW50cnkuYXV0b0xvYWQgPSBhdXRvTG9hZDtcbiAgICBpZiAocHJpb3JpdHkgIT09IHVuZGVmaW5lZCkgZW50cnkucHJpb3JpdHkgPSBwcmlvcml0eTtcbiAgICBpZiAodG90YWxFbnRyaWVzICE9PSB1bmRlZmluZWQpIGVudHJ5LnRvdGFsRW50cmllcyA9IHRvdGFsRW50cmllcztcblxuICAgIHJldHVybiBlbnRyeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmZlciB0aGUgbWVtb3J5IHR5cGUgZnJvbSB0aGUgZmlsZSdzIHJlbGF0aXZlIHBhdGguXG4gICAqXG4gICAqIEBwYXJhbSByZWxhdGl2ZVBhdGggLSBQYXRoIHJlbGF0aXZlIHRvIHRoZSBtZW1vcmllcyBkaXJlY3RvcnlcbiAgICogQHJldHVybnMgJ3N5c3RlbScgfCAnYWRhcHRlcicgfCAndXNlcidcbiAgICovXG4gIHN0YXRpYyBpbmZlck1lbW9yeVR5cGUocmVsYXRpdmVQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIE5vcm1hbGl6ZSBzZXBhcmF0b3JzIHRvIGZvcndhcmQgc2xhc2ggZm9yIGNvbnNpc3RlbnQgbWF0Y2hpbmdcbiAgICBjb25zdCBub3JtYWxpemVkID0gcmVsYXRpdmVQYXRoLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcblxuICAgIGlmIChub3JtYWxpemVkLnN0YXJ0c1dpdGgoJ3N5c3RlbS8nKSkgcmV0dXJuICdzeXN0ZW0nO1xuICAgIGlmIChub3JtYWxpemVkLnN0YXJ0c1dpdGgoJ2FkYXB0ZXJzLycpKSByZXR1cm4gJ2FkYXB0ZXInO1xuICAgIHJldHVybiAndXNlcic7XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdCBZQU1MIGNvbnRlbnQgYmV0d2VlbiAtLS0gZnJvbnRtYXR0ZXIgbWFya2Vycy5cbiAgICogUmV0dXJucyBudWxsIGlmIG5vIHZhbGlkIGZyb250bWF0dGVyIGJsb2NrIGZvdW5kLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZXh0cmFjdEZyb250bWF0dGVyKHJhd0NvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IHRyaW1tZWQgPSByYXdDb250ZW50LnRyaW0oKTtcbiAgICBpZiAoIXRyaW1tZWQuc3RhcnRzV2l0aCgnLS0tJykpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgZW5kSW5kZXggPSB0cmltbWVkLmluZGV4T2YoJ1xcbi0tLScsIDMpO1xuICAgIGlmIChlbmRJbmRleCA9PT0gLTEpIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIHRyaW1tZWQuc3Vic3RyaW5nKDMsIGVuZEluZGV4KS50cmltKCk7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgcmF3IFlBTUwgdXNpbmcgdGhlIGNlbnRyYWxpemVkIHNlY3VyZSBwYXJzZXIuXG4gICAqIFJldHVybnMgcGFyc2UgZGlhZ25vc3RpY3Mgc28gY2FsbGVycyBjYW4gZmFpbCBjbG9zZWQgd2hpbGUgcHJlc2VydmluZyBlcnJvciBjb250ZXh0LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgdHJ5UGFyc2VZYW1sT2JqZWN0KGNvbnRlbnQ6IHN0cmluZyk6IHsgZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+OyBlcnJvck1lc3NhZ2U/OiBzdHJpbmcgfSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB7IGRhdGE6IFNlY3VyZVlhbWxQYXJzZXIucGFyc2VSYXdZYW1sKGNvbnRlbnQsIE1lbW9yeU1ldGFkYXRhRXh0cmFjdG9yLk1BWF9ZQU1MX1NJWkUpIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVycm9yTWVzc2FnZTogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKiogUmV0dXJuIGEgbWluaW1hbCBkZWZhdWx0IGVudHJ5IGZvciBlbXB0eS9jb3JydXB0IGNvbnRlbnQuICovXG4gIHByaXZhdGUgc3RhdGljIGRlZmF1bHRFbnRyeShyZWxhdGl2ZVBhdGg6IHN0cmluZyk6IFBhcnRpYWw8RWxlbWVudEluZGV4RW50cnk+IHtcbiAgICByZXR1cm4ge1xuICAgICAgZmlsZVBhdGg6IHJlbGF0aXZlUGF0aCxcbiAgICAgIG5hbWU6ICd1bm5hbWVkJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgIHZlcnNpb246ICcxLjAuMCcsXG4gICAgICBhdXRob3I6ICcnLFxuICAgICAgdGFnczogW10sXG4gICAgICBtZW1vcnlUeXBlOiBNZW1vcnlNZXRhZGF0YUV4dHJhY3Rvci5pbmZlck1lbW9yeVR5cGUocmVsYXRpdmVQYXRoKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgbm9ybWFsaXplVGV4dCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVW5pY29kZVZhbGlkYXRvci5ub3JtYWxpemUodmFsdWUpLm5vcm1hbGl6ZWRDb250ZW50O1xuICB9XG59XG4iXX0=
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVtb3J5TWV0YWRhdGFFeHRyYWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmFnZS9NZW1vcnlNZXRhZGF0YUV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRTNGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU1QyxNQUFNLE9BQU8sdUJBQXVCO0lBQ2xDOzs7T0FHRztJQUNLLE1BQU0sQ0FBVSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsYUFBYSxDQUFDO0lBRXZFOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxlQUFlLENBQUMsVUFBa0IsRUFBRSxZQUFvQjtRQUM3RCxJQUFJLENBQUMsVUFBVSxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BGLE9BQU8sdUJBQXVCLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRyx1QkFBdUIsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1RSxJQUFJLFFBQVEsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLDBFQUEwRTtZQUMxRSwrREFBK0Q7WUFDL0QsTUFBTSxTQUFTLEdBQUcsdUJBQXVCLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDekUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNmLElBQUksWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUM5QixNQUFNLENBQUMsS0FBSyxDQUFDLDJFQUEyRSxFQUFFO3dCQUN4RixZQUFZO3dCQUNaLEtBQUssRUFBRSxTQUFTO3dCQUNoQixLQUFLLEVBQUUsWUFBWSxDQUFDLFlBQVk7cUJBQ2pDLENBQUMsQ0FBQztnQkFDTCxDQUFDO2dCQUNELE9BQU8sdUJBQXVCLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzVELENBQUM7WUFDRCxNQUFNLGFBQWEsR0FBRyx1QkFBdUIsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM1RSxRQUFRLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQztZQUM5QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2QsTUFBTSxDQUFDLEtBQUssQ0FBQyw0R0FBNEcsRUFBRTtvQkFDekgsWUFBWTtvQkFDWixZQUFZLEVBQUUsWUFBWSxDQUFDLFlBQVk7b0JBQ3ZDLGFBQWEsRUFBRSxhQUFhLENBQUMsWUFBWTtpQkFDMUMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sdUJBQXVCLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzVELENBQUM7UUFDSCxDQUFDO1FBRUQsNkZBQTZGO1FBQzdGLE1BQU0sY0FBYyxHQUFHLENBQ3JCLFFBQVEsQ0FBQyxRQUFRLElBQUksT0FBTyxRQUFRLENBQUMsUUFBUSxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUM3RixDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVE7WUFDbkIsQ0FBQyxDQUFDLFFBQVEsQ0FDYyxDQUFDO1FBRTdCLE1BQU0sY0FBYyxHQUFHLE9BQU8sY0FBYyxDQUFDLElBQUksS0FBSyxRQUFRO1lBQzVELENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztZQUM1RCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1AsTUFBTSxJQUFJLEdBQUcsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ3BDLENBQUMsQ0FBQyxjQUFjO1lBQ2hCLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFZCxNQUFNLFdBQVcsR0FBRyxPQUFPLGNBQWMsQ0FBQyxXQUFXLEtBQUssUUFBUTtZQUNoRSxDQUFDLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUM7WUFDbkUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVQLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxjQUFjLENBQUMsT0FBTyxLQUFLLFFBQVE7WUFDbEUsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDO1lBQy9ELENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDUCxNQUFNLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUMxQyxDQUFDLENBQUMsaUJBQWlCO1lBQ25CLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFFWixNQUFNLE1BQU0sR0FBRyxPQUFPLGNBQWMsQ0FBQyxNQUFNLEtBQUssUUFBUTtZQUN0RCxDQUFDLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7WUFDOUQsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVQLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUM7WUFDakgsQ0FBQyxDQUFFLGNBQWMsQ0FBQyxJQUFpQjtpQkFDaEMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUN0RCxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNoQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRVAsTUFBTSxRQUFRLEdBQUcsT0FBTyxjQUFjLENBQUMsUUFBUSxLQUFLLFNBQVM7WUFDM0QsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRO1lBQ3pCLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFZCxNQUFNLFFBQVEsR0FBRyxPQUFPLGNBQWMsQ0FBQyxRQUFRLEtBQUssUUFBUTtZQUMxRCxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVE7WUFDekIsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUVkLE1BQU0sb0JBQW9CLEdBQUcsT0FBTyxjQUFjLENBQUMsVUFBVSxLQUFLLFFBQVE7WUFDeEUsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO1lBQ2xFLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDUCxNQUFNLFVBQVUsR0FBRyxvQkFBb0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUNoRCxDQUFDLENBQUMsb0JBQW9CO1lBQ3RCLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFMUQsNkVBQTZFO1FBQzdFLElBQUksWUFBZ0MsQ0FBQztRQUNyQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBNEMsQ0FBQztRQUNwRSxJQUFJLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLENBQUMsWUFBWSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2pGLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO1FBQ3BDLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDM0MsWUFBWSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ3pDLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBK0I7WUFDeEMsUUFBUSxFQUFFLFlBQVk7WUFDdEIsSUFBSTtZQUNKLFdBQVc7WUFDWCxPQUFPO1lBQ1AsTUFBTTtZQUNOLElBQUk7WUFDSixVQUFVO1NBQ1gsQ0FBQztRQUVGLElBQUksUUFBUSxLQUFLLFNBQVM7WUFBRSxLQUFLLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN0RCxJQUFJLFFBQVEsS0FBSyxTQUFTO1lBQUUsS0FBSyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDdEQsSUFBSSxZQUFZLEtBQUssU0FBUztZQUFFLEtBQUssQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBRWxFLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLGVBQWUsQ0FBQyxZQUFvQjtRQUN6QyxnRUFBZ0U7UUFDaEUsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFcEQsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQztZQUFFLE9BQU8sUUFBUSxDQUFDO1FBQ3RELElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUM7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUN6RCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssTUFBTSxDQUFDLGtCQUFrQixDQUFDLFVBQWtCO1FBQ2xELE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUU1QyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3QyxJQUFJLFFBQVEsS0FBSyxDQUFDLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUVqQyxPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFFRDs7O09BR0c7SUFDSyxNQUFNLENBQUMsa0JBQWtCLENBQUMsT0FBZTtRQUMvQyxJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxZQUFZLENBQ3hDLE9BQU8sRUFDUCx1QkFBdUIsQ0FBQyxhQUFhLEVBQ3JDLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxFQUFFLENBQ2pDLENBQUM7WUFDRixJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDdkMsT0FBTyxFQUFFLFlBQVksRUFBRSwyQ0FBMkMsRUFBRSxDQUFDO1lBQ3ZFLENBQUM7WUFDRCxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDbEIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPO2dCQUNMLFlBQVksRUFBRSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2FBQ3JFLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELGdFQUFnRTtJQUN4RCxNQUFNLENBQUMsWUFBWSxDQUFDLFlBQW9CO1FBQzlDLE9BQU87WUFDTCxRQUFRLEVBQUUsWUFBWTtZQUN0QixJQUFJLEVBQUUsU0FBUztZQUNmLFdBQVcsRUFBRSxFQUFFO1lBQ2YsT0FBTyxFQUFFLE9BQU87WUFDaEIsTUFBTSxFQUFFLEVBQUU7WUFDVixJQUFJLEVBQUUsRUFBRTtZQUNSLFVBQVUsRUFBRSx1QkFBdUIsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDO1NBQ2xFLENBQUM7SUFDSixDQUFDO0lBRU8sTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFhO1FBQ3hDLE9BQU8sZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixDQUFDO0lBQzdELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEV4dHJhY3RzIG1ldGFkYXRhIGZyb20gcHVyZSBZQU1MIG1lbW9yeSBmaWxlcyBmb3IgbGlnaHR3ZWlnaHQgaW5kZXhpbmcuXG4gKlxuICogTWVtb3J5IGZpbGVzIGRpZmZlciBmcm9tIG90aGVyIGVsZW1lbnRzOiB0aGV5IGFyZSBwdXJlIFlBTUwgKG5vdCBtYXJrZG93blxuICogd2l0aCBmcm9udG1hdHRlcikuIE1ldGFkYXRhIGxpdmVzIHVuZGVyIGEgdG9wLWxldmVsIGBtZXRhZGF0YWAga2V5IG9yXG4gKiBkaXJlY3RseSBhcyB0b3AtbGV2ZWwga2V5cy4gVGhpcyBleHRyYWN0b3IgcmVhZHMgcmF3IFlBTUwgYW5kIHJldHVybnNcbiAqIHRoZSBzdWJzZXQgb2YgZmllbGRzIG5lZWRlZCBmb3IgRWxlbWVudEluZGV4RW50cnkgd2l0aG91dCBjb25zdHJ1Y3RpbmdcbiAqIGEgZnVsbCBNZW1vcnkgb2JqZWN0LlxuICovXG5cbmltcG9ydCB7IFNlY3VyZVlhbWxQYXJzZXIgfSBmcm9tICcuLi9zZWN1cml0eS9zZWN1cmVZYW1sUGFyc2VyLmpzJztcbmltcG9ydCB7IFVuaWNvZGVWYWxpZGF0b3IgfSBmcm9tICcuLi9zZWN1cml0eS92YWxpZGF0b3JzL3VuaWNvZGVWYWxpZGF0b3IuanMnO1xuaW1wb3J0IHsgTUVNT1JZX0NPTlNUQU5UUyB9IGZyb20gJy4uL2VsZW1lbnRzL21lbW9yaWVzL2NvbnN0YW50cy5qcyc7XG5pbXBvcnQgeyB2YWxpZGF0ZU1lbW9yeUNvbnRyb2xGaWVsZHMgfSBmcm9tICcuLi9lbGVtZW50cy9tZW1vcmllcy9tZW1vcnlZYW1sVmFsaWRhdGlvbi5qcyc7XG5pbXBvcnQgdHlwZSB7IEVsZW1lbnRJbmRleEVudHJ5IH0gZnJvbSAnLi90eXBlcy5qcyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuXG5leHBvcnQgY2xhc3MgTWVtb3J5TWV0YWRhdGFFeHRyYWN0b3Ige1xuICAvKipcbiAgICogQWxpZ24gd2l0aCB0aGUgbWVtb3J5IHNhdmUvbG9hZCBsaW1pdCAoMjU2S0IpLiBJc3N1ZSAjMjMyOTogdGhpcyB3YXMgNjRLQixcbiAgICogc28gbWVtb3JpZXMgdGhhdCBncmV3IHBhc3QgaXQgaW5kZXhlZCBhcyAndW5uYW1lZCcgd2l0aCBkZWZhdWx0IG1ldGFkYXRhLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgTUFYX1lBTUxfU0laRSA9IE1FTU9SWV9DT05TVEFOVFMuTUFYX1lBTUxfU0laRTtcblxuICAvKipcbiAgICogRXh0cmFjdCBpbmRleC1yZWxldmFudCBtZXRhZGF0YSBmcm9tIHJhdyBZQU1MIG1lbW9yeSBjb250ZW50LlxuICAgKlxuICAgKiBAcGFyYW0gcmF3Q29udGVudCAtIEZ1bGwgWUFNTCBmaWxlIGNvbnRlbnRcbiAgICogQHBhcmFtIHJlbGF0aXZlUGF0aCAtIFBhdGggcmVsYXRpdmUgdG8gdGhlIG1lbW9yaWVzIGVsZW1lbnQgZGlyZWN0b3J5XG4gICAqIEByZXR1cm5zIFBhcnRpYWwgRWxlbWVudEluZGV4RW50cnkgd2l0aCBleHRyYWN0ZWQgZmllbGRzXG4gICAqL1xuICBzdGF0aWMgZXh0cmFjdE1ldGFkYXRhKHJhd0NvbnRlbnQ6IHN0cmluZywgcmVsYXRpdmVQYXRoOiBzdHJpbmcpOiBQYXJ0aWFsPEVsZW1lbnRJbmRleEVudHJ5PiB7XG4gICAgaWYgKCFyYXdDb250ZW50IHx8IHR5cGVvZiByYXdDb250ZW50ICE9PSAnc3RyaW5nJyB8fCByYXdDb250ZW50LnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBNZW1vcnlNZXRhZGF0YUV4dHJhY3Rvci5kZWZhdWx0RW50cnkocmVsYXRpdmVQYXRoKTtcbiAgICB9XG5cbiAgICBjb25zdCBwcmltYXJ5UGFyc2UgPSBNZW1vcnlNZXRhZGF0YUV4dHJhY3Rvci50cnlQYXJzZVlhbWxPYmplY3QocmF3Q29udGVudCk7XG4gICAgbGV0IHlhbWxEYXRhID0gcHJpbWFyeVBhcnNlLmRhdGE7XG4gICAgaWYgKCF5YW1sRGF0YSkge1xuICAgICAgLy8gTXVsdGktZG9jdW1lbnQgc3RyZWFtcyAoZnJvbnRtYXR0ZXIgKyBjb250ZW50KSBmYWlsIHNpbmdsZS1kb2MgcGFyc2luZy5cbiAgICAgIC8vIEV4dHJhY3QganVzdCB0aGUgZnJvbnRtYXR0ZXIgYmxvY2sgYW5kIHJldHJ5IHBhcnNpbmcgc2FmZWx5LlxuICAgICAgY29uc3QgZm1Db250ZW50ID0gTWVtb3J5TWV0YWRhdGFFeHRyYWN0b3IuZXh0cmFjdEZyb250bWF0dGVyKHJhd0NvbnRlbnQpO1xuICAgICAgaWYgKCFmbUNvbnRlbnQpIHtcbiAgICAgICAgaWYgKHByaW1hcnlQYXJzZS5lcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgICBsb2dnZXIuZGVidWcoJ01lbW9yeU1ldGFkYXRhRXh0cmFjdG9yOiBmYWlsZWQgdG8gcGFyc2UgWUFNTCwgcmV0dXJuaW5nIGRlZmF1bHQgbWV0YWRhdGEnLCB7XG4gICAgICAgICAgICByZWxhdGl2ZVBhdGgsXG4gICAgICAgICAgICBzdGFnZTogJ3ByaW1hcnknLFxuICAgICAgICAgICAgZXJyb3I6IHByaW1hcnlQYXJzZS5lcnJvck1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE1lbW9yeU1ldGFkYXRhRXh0cmFjdG9yLmRlZmF1bHRFbnRyeShyZWxhdGl2ZVBhdGgpO1xuICAgICAgfVxuICAgICAgY29uc3QgZmFsbGJhY2tQYXJzZSA9IE1lbW9yeU1ldGFkYXRhRXh0cmFjdG9yLnRyeVBhcnNlWWFtbE9iamVjdChmbUNvbnRlbnQpO1xuICAgICAgeWFtbERhdGEgPSBmYWxsYmFja1BhcnNlLmRhdGE7XG4gICAgICBpZiAoIXlhbWxEYXRhKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZygnTWVtb3J5TWV0YWRhdGFFeHRyYWN0b3I6IGZhaWxlZCB0byBwYXJzZSBZQU1MIChwcmltYXJ5ICsgZnJvbnRtYXR0ZXIgZmFsbGJhY2spLCByZXR1cm5pbmcgZGVmYXVsdCBtZXRhZGF0YScsIHtcbiAgICAgICAgICByZWxhdGl2ZVBhdGgsXG4gICAgICAgICAgcHJpbWFyeUVycm9yOiBwcmltYXJ5UGFyc2UuZXJyb3JNZXNzYWdlLFxuICAgICAgICAgIGZhbGxiYWNrRXJyb3I6IGZhbGxiYWNrUGFyc2UuZXJyb3JNZXNzYWdlLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIE1lbW9yeU1ldGFkYXRhRXh0cmFjdG9yLmRlZmF1bHRFbnRyeShyZWxhdGl2ZVBhdGgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1lbW9yeSBmaWxlcyBzdG9yZSBtZXRhZGF0YSB1bmRlciBhIHRvcC1sZXZlbCBgbWV0YWRhdGFgIGtleSBvciBkaXJlY3RseSBhcyB0b3AtbGV2ZWwga2V5c1xuICAgIGNvbnN0IG1ldGFkYXRhU291cmNlID0gKFxuICAgICAgeWFtbERhdGEubWV0YWRhdGEgJiYgdHlwZW9mIHlhbWxEYXRhLm1ldGFkYXRhID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh5YW1sRGF0YS5tZXRhZGF0YSlcbiAgICAgICAgPyB5YW1sRGF0YS5tZXRhZGF0YVxuICAgICAgICA6IHlhbWxEYXRhXG4gICAgKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICAgIGNvbnN0IG5vcm1hbGl6ZWROYW1lID0gdHlwZW9mIG1ldGFkYXRhU291cmNlLm5hbWUgPT09ICdzdHJpbmcnXG4gICAgICA/IE1lbW9yeU1ldGFkYXRhRXh0cmFjdG9yLm5vcm1hbGl6ZVRleHQobWV0YWRhdGFTb3VyY2UubmFtZSlcbiAgICAgIDogJyc7XG4gICAgY29uc3QgbmFtZSA9IG5vcm1hbGl6ZWROYW1lLmxlbmd0aCA+IDBcbiAgICAgID8gbm9ybWFsaXplZE5hbWVcbiAgICAgIDogJ3VubmFtZWQnO1xuXG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSB0eXBlb2YgbWV0YWRhdGFTb3VyY2UuZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnXG4gICAgICA/IE1lbW9yeU1ldGFkYXRhRXh0cmFjdG9yLm5vcm1hbGl6ZVRleHQobWV0YWRhdGFTb3VyY2UuZGVzY3JpcHRpb24pXG4gICAgICA6ICcnO1xuXG4gICAgY29uc3Qgbm9ybWFsaXplZFZlcnNpb24gPSB0eXBlb2YgbWV0YWRhdGFTb3VyY2UudmVyc2lvbiA9PT0gJ3N0cmluZydcbiAgICAgID8gTWVtb3J5TWV0YWRhdGFFeHRyYWN0b3Iubm9ybWFsaXplVGV4dChtZXRhZGF0YVNvdXJjZS52ZXJzaW9uKVxuICAgICAgOiAnJztcbiAgICBjb25zdCB2ZXJzaW9uID0gbm9ybWFsaXplZFZlcnNpb24ubGVuZ3RoID4gMFxuICAgICAgPyBub3JtYWxpemVkVmVyc2lvblxuICAgICAgOiAnMS4wLjAnO1xuXG4gICAgY29uc3QgYXV0aG9yID0gdHlwZW9mIG1ldGFkYXRhU291cmNlLmF1dGhvciA9PT0gJ3N0cmluZydcbiAgICAgID8gTWVtb3J5TWV0YWRhdGFFeHRyYWN0b3Iubm9ybWFsaXplVGV4dChtZXRhZGF0YVNvdXJjZS5hdXRob3IpXG4gICAgICA6ICcnO1xuXG4gICAgY29uc3QgdGFncyA9IEFycmF5LmlzQXJyYXkobWV0YWRhdGFTb3VyY2UudGFncykgJiYgbWV0YWRhdGFTb3VyY2UudGFncy5ldmVyeSgodDogdW5rbm93bikgPT4gdHlwZW9mIHQgPT09ICdzdHJpbmcnKVxuICAgICAgPyAobWV0YWRhdGFTb3VyY2UudGFncyBhcyBzdHJpbmdbXSlcbiAgICAgICAgLm1hcCh0YWcgPT4gTWVtb3J5TWV0YWRhdGFFeHRyYWN0b3Iubm9ybWFsaXplVGV4dCh0YWcpKVxuICAgICAgICAuZmlsdGVyKHRhZyA9PiB0YWcubGVuZ3RoID4gMClcbiAgICAgIDogW107XG5cbiAgICBjb25zdCBhdXRvTG9hZCA9IHR5cGVvZiBtZXRhZGF0YVNvdXJjZS5hdXRvTG9hZCA9PT0gJ2Jvb2xlYW4nXG4gICAgICA/IG1ldGFkYXRhU291cmNlLmF1dG9Mb2FkXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHByaW9yaXR5ID0gdHlwZW9mIG1ldGFkYXRhU291cmNlLnByaW9yaXR5ID09PSAnbnVtYmVyJ1xuICAgICAgPyBtZXRhZGF0YVNvdXJjZS5wcmlvcml0eVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBub3JtYWxpemVkTWVtb3J5VHlwZSA9IHR5cGVvZiBtZXRhZGF0YVNvdXJjZS5tZW1vcnlUeXBlID09PSAnc3RyaW5nJ1xuICAgICAgPyBNZW1vcnlNZXRhZGF0YUV4dHJhY3Rvci5ub3JtYWxpemVUZXh0KG1ldGFkYXRhU291cmNlLm1lbW9yeVR5cGUpXG4gICAgICA6ICcnO1xuICAgIGNvbnN0IG1lbW9yeVR5cGUgPSBub3JtYWxpemVkTWVtb3J5VHlwZS5sZW5ndGggPiAwXG4gICAgICA/IG5vcm1hbGl6ZWRNZW1vcnlUeXBlXG4gICAgICA6IE1lbW9yeU1ldGFkYXRhRXh0cmFjdG9yLmluZmVyTWVtb3J5VHlwZShyZWxhdGl2ZVBhdGgpO1xuXG4gICAgLy8gdG90YWxFbnRyaWVzOiBwcmVmZXIgc3RhdHMudG90YWxFbnRyaWVzLCBmYWxsIGJhY2sgdG8gZW50cmllcyBhcnJheSBsZW5ndGhcbiAgICBsZXQgdG90YWxFbnRyaWVzOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc3RhdHMgPSB5YW1sRGF0YS5zdGF0cyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgICBpZiAoc3RhdHMgJiYgdHlwZW9mIHN0YXRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2Ygc3RhdHMudG90YWxFbnRyaWVzID09PSAnbnVtYmVyJykge1xuICAgICAgdG90YWxFbnRyaWVzID0gc3RhdHMudG90YWxFbnRyaWVzO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh5YW1sRGF0YS5lbnRyaWVzKSkge1xuICAgICAgdG90YWxFbnRyaWVzID0geWFtbERhdGEuZW50cmllcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgY29uc3QgZW50cnk6IFBhcnRpYWw8RWxlbWVudEluZGV4RW50cnk+ID0ge1xuICAgICAgZmlsZVBhdGg6IHJlbGF0aXZlUGF0aCxcbiAgICAgIG5hbWUsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIHZlcnNpb24sXG4gICAgICBhdXRob3IsXG4gICAgICB0YWdzLFxuICAgICAgbWVtb3J5VHlwZSxcbiAgICB9O1xuXG4gICAgaWYgKGF1dG9Mb2FkICE9PSB1bmRlZmluZWQpIGVudHJ5LmF1dG9Mb2FkID0gYXV0b0xvYWQ7XG4gICAgaWYgKHByaW9yaXR5ICE9PSB1bmRlZmluZWQpIGVudHJ5LnByaW9yaXR5ID0gcHJpb3JpdHk7XG4gICAgaWYgKHRvdGFsRW50cmllcyAhPT0gdW5kZWZpbmVkKSBlbnRyeS50b3RhbEVudHJpZXMgPSB0b3RhbEVudHJpZXM7XG5cbiAgICByZXR1cm4gZW50cnk7XG4gIH1cblxuICAvKipcbiAgICogSW5mZXIgdGhlIG1lbW9yeSB0eXBlIGZyb20gdGhlIGZpbGUncyByZWxhdGl2ZSBwYXRoLlxuICAgKlxuICAgKiBAcGFyYW0gcmVsYXRpdmVQYXRoIC0gUGF0aCByZWxhdGl2ZSB0byB0aGUgbWVtb3JpZXMgZGlyZWN0b3J5XG4gICAqIEByZXR1cm5zICdzeXN0ZW0nIHwgJ2FkYXB0ZXInIHwgJ3VzZXInXG4gICAqL1xuICBzdGF0aWMgaW5mZXJNZW1vcnlUeXBlKHJlbGF0aXZlUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBOb3JtYWxpemUgc2VwYXJhdG9ycyB0byBmb3J3YXJkIHNsYXNoIGZvciBjb25zaXN0ZW50IG1hdGNoaW5nXG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHJlbGF0aXZlUGF0aC5yZXBsYWNlKC9cXFxcL2csICcvJyk7XG5cbiAgICBpZiAobm9ybWFsaXplZC5zdGFydHNXaXRoKCdzeXN0ZW0vJykpIHJldHVybiAnc3lzdGVtJztcbiAgICBpZiAobm9ybWFsaXplZC5zdGFydHNXaXRoKCdhZGFwdGVycy8nKSkgcmV0dXJuICdhZGFwdGVyJztcbiAgICByZXR1cm4gJ3VzZXInO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3QgWUFNTCBjb250ZW50IGJldHdlZW4gLS0tIGZyb250bWF0dGVyIG1hcmtlcnMuXG4gICAqIFJldHVybnMgbnVsbCBpZiBubyB2YWxpZCBmcm9udG1hdHRlciBibG9jayBmb3VuZC5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGV4dHJhY3RGcm9udG1hdHRlcihyYXdDb250ZW50OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCB0cmltbWVkID0gcmF3Q29udGVudC50cmltKCk7XG4gICAgaWYgKCF0cmltbWVkLnN0YXJ0c1dpdGgoJy0tLScpKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IGVuZEluZGV4ID0gdHJpbW1lZC5pbmRleE9mKCdcXG4tLS0nLCAzKTtcbiAgICBpZiAoZW5kSW5kZXggPT09IC0xKSByZXR1cm4gbnVsbDtcblxuICAgIHJldHVybiB0cmltbWVkLnN1YnN0cmluZygzLCBlbmRJbmRleCkudHJpbSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIHJhdyBZQU1MIHVzaW5nIHRoZSBjZW50cmFsaXplZCBzZWN1cmUgcGFyc2VyLlxuICAgKiBSZXR1cm5zIHBhcnNlIGRpYWdub3N0aWNzIHNvIGNhbGxlcnMgY2FuIGZhaWwgY2xvc2VkIHdoaWxlIHByZXNlcnZpbmcgZXJyb3IgY29udGV4dC5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHRyeVBhcnNlWWFtbE9iamVjdChjb250ZW50OiBzdHJpbmcpOiB7IGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjsgZXJyb3JNZXNzYWdlPzogc3RyaW5nIH0ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXRhID0gU2VjdXJlWWFtbFBhcnNlci5wYXJzZVJhd1lhbWwoXG4gICAgICAgIGNvbnRlbnQsXG4gICAgICAgIE1lbW9yeU1ldGFkYXRhRXh0cmFjdG9yLk1BWF9ZQU1MX1NJWkUsXG4gICAgICAgIHsgZGV0ZWN0Q29udGVudFBhdHRlcm5zOiBmYWxzZSB9LFxuICAgICAgKTtcbiAgICAgIGlmICghdmFsaWRhdGVNZW1vcnlDb250cm9sRmllbGRzKGRhdGEpKSB7XG4gICAgICAgIHJldHVybiB7IGVycm9yTWVzc2FnZTogJ01hbGljaW91cyBtZW1vcnkgY29udHJvbCBjb250ZW50IGRldGVjdGVkJyB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgZGF0YSB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBlcnJvck1lc3NhZ2U6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLyoqIFJldHVybiBhIG1pbmltYWwgZGVmYXVsdCBlbnRyeSBmb3IgZW1wdHkvY29ycnVwdCBjb250ZW50LiAqL1xuICBwcml2YXRlIHN0YXRpYyBkZWZhdWx0RW50cnkocmVsYXRpdmVQYXRoOiBzdHJpbmcpOiBQYXJ0aWFsPEVsZW1lbnRJbmRleEVudHJ5PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpbGVQYXRoOiByZWxhdGl2ZVBhdGgsXG4gICAgICBuYW1lOiAndW5uYW1lZCcsXG4gICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICB2ZXJzaW9uOiAnMS4wLjAnLFxuICAgICAgYXV0aG9yOiAnJyxcbiAgICAgIHRhZ3M6IFtdLFxuICAgICAgbWVtb3J5VHlwZTogTWVtb3J5TWV0YWRhdGFFeHRyYWN0b3IuaW5mZXJNZW1vcnlUeXBlKHJlbGF0aXZlUGF0aCksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG5vcm1hbGl6ZVRleHQodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFVuaWNvZGVWYWxpZGF0b3Iubm9ybWFsaXplKHZhbHVlKS5ub3JtYWxpemVkQ29udGVudDtcbiAgfVxufVxuIl19
|
|
@@ -5,6 +5,12 @@
|
|
|
5
5
|
* Generate an anonymous ID for users without identity
|
|
6
6
|
*/
|
|
7
7
|
export declare function generateAnonymousId(): string;
|
|
8
|
+
/**
|
|
9
|
+
* Normalize an element name to the canonical filename identity used by managers.
|
|
10
|
+
*/
|
|
11
|
+
export declare function normalizeElementFilename(name: string): string;
|
|
12
|
+
/** Canonical non-empty identity used for element files and related runtime maps. */
|
|
13
|
+
export declare function normalizeElementStorageIdentity(name: string): string;
|
|
8
14
|
export declare function generateUniqueId(personaName: string, author?: string): string;
|
|
9
15
|
/**
|
|
10
16
|
* Convert text to URL-safe slug
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../src/utils/filesystem.ts"],"names":[],"mappings":"AAAA;;GAEG;AAmBH;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAK5C;AAQD,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAsB7E;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA0B5C;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQpE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGnE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAInE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOxF"}
|
|
1
|
+
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../src/utils/filesystem.ts"],"names":[],"mappings":"AAAA;;GAEG;AAmBH;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAK5C;AAQD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAe7D;AAED,oFAAoF;AACpF,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAsB7E;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA0B5C;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQpE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGnE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAInE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOxF"}
|
package/dist/utils/filesystem.js
CHANGED
|
@@ -29,6 +29,27 @@ export function generateAnonymousId() {
|
|
|
29
29
|
*/
|
|
30
30
|
// Pre-compiled regex for better performance (avoids creating regex on each character)
|
|
31
31
|
const ALPHANUMERIC_REGEX = /[a-z0-9]/;
|
|
32
|
+
/**
|
|
33
|
+
* Normalize an element name to the canonical filename identity used by managers.
|
|
34
|
+
*/
|
|
35
|
+
export function normalizeElementFilename(name) {
|
|
36
|
+
if (!name || name.trim().length === 0) {
|
|
37
|
+
return 'unnamed';
|
|
38
|
+
}
|
|
39
|
+
const normalized = name
|
|
40
|
+
.replace(/([a-z])([A-Z])/g, '$1-$2')
|
|
41
|
+
.replace(/[\s_]+/g, '-')
|
|
42
|
+
.toLowerCase()
|
|
43
|
+
.replace(/[^a-z0-9-]/g, '-')
|
|
44
|
+
.replace(/-+/g, '-');
|
|
45
|
+
const start = normalized.startsWith('-') ? 1 : 0;
|
|
46
|
+
const end = normalized.endsWith('-') ? -1 : undefined;
|
|
47
|
+
return normalized.slice(start, end);
|
|
48
|
+
}
|
|
49
|
+
/** Canonical non-empty identity used for element files and related runtime maps. */
|
|
50
|
+
export function normalizeElementStorageIdentity(name) {
|
|
51
|
+
return normalizeElementFilename(name) || 'unnamed';
|
|
52
|
+
}
|
|
32
53
|
export function generateUniqueId(personaName, author) {
|
|
33
54
|
const now = new Date();
|
|
34
55
|
const dateStr = now.toISOString().slice(0, 10).replaceAll('-', '');
|
|
@@ -114,4 +135,4 @@ export async function createBackup(sourcePath, backupPath) {
|
|
|
114
135
|
// Copy directory recursively
|
|
115
136
|
await fs.cp(sourcePath, backupPath, { recursive: true });
|
|
116
137
|
}
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXN5c3RlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9maWxlc3lzdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEMsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFBMEIscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFakUsMERBQTBEO0FBQzFELElBQUkscUJBQXFCLEdBQWtDLElBQUksQ0FBQztBQUVoRSxTQUFTLHdCQUF3QjtJQUMvQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMzQixxQkFBcUIsR0FBRyxJQUFJLHFCQUFxQixDQUFDLElBQUksZUFBZSxFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBQ0QsT0FBTyxxQkFBcUIsQ0FBQztBQUMvQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CO0lBQ2pDLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM1RSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbkUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FB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QyxJQUFJLENBQUM7QUFDcEIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxZQUFZLENBQUMsVUFBa0IsRUFBRSxVQUFrQjtJQUN2RSxpQ0FBaUM7SUFDakMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzQyxNQUFNLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUVqQyw2QkFBNkI7SUFDN0IsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUMzRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGaWxlc3lzdGVtIGFuZCBzdHJpbmcgbWFuaXB1bGF0aW9uIHV0aWxpdGllc1xuICovXG5cbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzL3Byb21pc2VzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBBREpFQ1RJVkVTLCBBTklNQUxTIH0gZnJvbSAnLi4vY29uZmlnL2NvbnN0YW50cy5qcyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuL2xvZ2dlci5qcyc7XG5pbXBvcnQgeyBJRmlsZU9wZXJhdGlvbnNTZXJ2aWNlLCBGaWxlT3BlcmF0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9GaWxlT3BlcmF0aW9uc1NlcnZpY2UuanMnO1xuaW1wb3J0IHsgRmlsZUxvY2tNYW5hZ2VyIH0gZnJvbSAnLi4vc2VjdXJpdHkvZmlsZUxvY2tNYW5hZ2VyLmpzJztcblxuLy8gU2luZ2xldG9uIGZpbGUgb3BlcmF0aW9ucyBzZXJ2aWNlIGZvciB1dGlsaXR5IGZ1bmN0aW9uc1xubGV0IGZpbGVPcGVyYXRpb25zU2VydmljZTogSUZpbGVPcGVyYXRpb25zU2VydmljZSB8IG51bGwgPSBudWxsO1xuXG5mdW5jdGlvbiBnZXRGaWxlT3BlcmF0aW9uc1NlcnZpY2UoKTogSUZpbGVPcGVyYXRpb25zU2VydmljZSB7XG4gIGlmICghZmlsZU9wZXJhdGlvbnNTZXJ2aWNlKSB7XG4gICAgZmlsZU9wZXJhdGlvbnNTZXJ2aWNlID0gbmV3IEZpbGVPcGVyYXRpb25zU2VydmljZShuZXcgRmlsZUxvY2tNYW5hZ2VyKCkpO1xuICB9XG4gIHJldHVybiBmaWxlT3BlcmF0aW9uc1NlcnZpY2U7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYW4gYW5vbnltb3VzIElEIGZvciB1c2VycyB3aXRob3V0IGlkZW50aXR5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUFub255bW91c0lkKCk6IHN0cmluZyB7XG4gIGNvbnN0IGFkamVjdGl2ZSA9IEFESkVDVElWRVNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogQURKRUNUSVZFUy5sZW5ndGgpXTtcbiAgY29uc3QgYW5pbWFsID0gQU5JTUFMU1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBBTklNQUxTLmxlbmd0aCldO1xuICBjb25zdCByYW5kb20gPSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiwgNik7XG4gIHJldHVybiBgYW5vbi0ke2FkamVjdGl2ZX0tJHthbmltYWx9LSR7cmFuZG9tfWA7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSB1bmlxdWUgSUQgZm9yIHBlcnNvbmFzXG4gKi9cbi8vIFByZS1jb21waWxlZCByZWdleCBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlIChhdm9pZHMgY3JlYXRpbmcgcmVnZXggb24gZWFjaCBjaGFyYWN0ZXIpXG5jb25zdCBBTFBIQU5VTUVSSUNfUkVHRVggPSAvW2EtejAtOV0vO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVVbmlxdWVJZChwZXJzb25hTmFtZTogc3RyaW5nLCBhdXRob3I/OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBkYXRlU3RyID0gbm93LnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwgMTApLnJlcGxhY2VBbGwoJy0nLCAnJyk7XG4gIGNvbnN0IHRpbWVTdHIgPSBub3cudG9UaW1lU3RyaW5nKCkuc2xpY2UoMCwgOCkucmVwbGFjZUFsbCgnOicsICcnKTtcbiAgLy8gSXNzdWUgIzg0ODogQWRkIG1pbGxpc2Vjb25kcyArIHJhbmRvbSBzdWZmaXggZm9yIHN1Yi1zZWNvbmQgdW5pcXVlbmVzcy5cbiAgLy8gQ3JpdGljYWwgZm9yIGNvcHktb24td3JpdGUsIHN3YXJtIG9wZXJhdGlvbnMsIGFuZCByYXBpZCBwcm9ncmFtbWF0aWMgY3JlYXRpb24uXG4gIGNvbnN0IG1zU3RyID0gbm93LmdldE1pbGxpc2Vjb25kcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMywgJzAnKTtcbiAgY29uc3QgcmFuZCA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLCA2KTtcbiAgLy8gU0VDVVJJVFkgRklYOiBQcmV2ZW50IFJlRG9TIGJ5IHVzaW5nIGEgc2luZ2xlLXBhc3MgYXBwcm9hY2hcbiAgLy8gUHJldmlvdXNseTogTXVsdGlwbGUgcmVwbGFjZSgpIG9wZXJhdGlvbnMgd2l0aCB1bmJvdW5kZWQgcXVhbnRpZmllcnMgY291bGQgY2F1c2UgZXhwb25lbnRpYWwgYmFja3RyYWNraW5nXG4gIC8vIE5vdzogU2luZ2xlLXBhc3MgdHJhbnNmb3JtYXRpb24gd2l0aCBidWlsdC1pbiBsZW5ndGggbGltaXRcbiAgY29uc3Qgbm9ybWFsaXplZCA9IHBlcnNvbmFOYW1lLnRvTG93ZXJDYXNlKCk7XG4gIGNvbnN0IHNhbml0aXplZE5hbWUgPSBub3JtYWxpemVkXG4gICAgLnNwbGl0KCcnKVxuICAgIC5tYXAoY2hhciA9PiBBTFBIQU5VTUVSSUNfUkVHRVgudGVzdChjaGFyKSA/IGNoYXIgOiAnLScpXG4gICAgLmpvaW4oJycpXG4gICAgLnN1YnN0cmluZygwLCAxMDApIC8vIExpbWl0IGFmdGVyIHRyYW5zZm9ybWF0aW9uIHRvIHByZXNlcnZlIHN0cnVjdHVyZVxuICAgIC5yZXBsYWNlQWxsKC8oXi0rKXwoLSskKS9nLCAnJykgLy8gT25seSB0cmltIGxlYWRpbmcvdHJhaWxpbmcgaHlwaGVuc1xuICAgIC5yZXBsYWNlQWxsKC8tezIsfS9nLCAnLScpOyAvLyBDb2xsYXBzZSBtdWx0aXBsZSBoeXBoZW5zXG4gIGNvbnN0IHdob01hZGVJdCA9IGF1dGhvciB8fCBnZW5lcmF0ZUFub255bW91c0lkKCk7XG5cbiAgcmV0dXJuIGAke3Nhbml0aXplZE5hbWV9XyR7ZGF0ZVN0cn0tJHt0aW1lU3RyfSR7bXNTdHJ9LSR7cmFuZH1fJHt3aG9NYWRlSXR9YDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IHRleHQgdG8gVVJMLXNhZmUgc2x1Z1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2x1Z2lmeSh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBTRUNVUklUWSBGSVg6IFByZXZlbnQgUmVEb1MgYnkgdXNpbmcgYSBzaW5nbGUtcGFzcyBhcHByb2FjaFxuICAvLyBQcmV2aW91c2x5OiBNdWx0aXBsZSByZXBsYWNlKCkgb3BlcmF0aW9ucyB3aXRoIHVuYm91bmRlZCBxdWFudGlmaWVycyBjb3VsZCBjYXVzZSBleHBvbmVudGlhbCBiYWNrdHJhY2tpbmdcbiAgLy8gTm93OiBTaW5nbGUtcGFzcyB0cmFuc2Zvcm1hdGlvbiB3aXRoIGJ1aWx0LWluIGxlbmd0aCBsaW1pdFxuICBjb25zdCBub3JtYWxpemVkID0gdGV4dC50b0xvd2VyQ2FzZSgpO1xuICBjb25zdCB0cmFuc2Zvcm1lZCA9IG5vcm1hbGl6ZWRcbiAgICAuc3BsaXQoJycpXG4gICAgLm1hcChjaGFyID0+IEFMUEhBTlVNRVJJQ19SRUdFWC50ZXN0KGNoYXIpID8gY2hhciA6ICctJylcbiAgICAuam9pbignJyk7XG4gIFxuICAvLyBTRUNVUklUWSBGSVg6IEF2b2lkIHBvbHlub21pYWwgcmVnZXggYnkgdXNpbmcgc2VwYXJhdGUgb3BlcmF0aW9uc1xuICAvLyBUcmltIGxlYWRpbmcgaHlwaGVuc1xuICBsZXQgc3RhcnQgPSAwO1xuICB3aGlsZSAoc3RhcnQgPCB0cmFuc2Zvcm1lZC5sZW5ndGggJiYgdHJhbnNmb3JtZWRbc3RhcnRdID09PSAnLScpIHtcbiAgICBzdGFydCsrO1xuICB9XG4gIFxuICAvLyBUcmltIHRyYWlsaW5nIGh5cGhlbnNcbiAgbGV0IGVuZCA9IHRyYW5zZm9ybWVkLmxlbmd0aCAtIDE7XG4gIHdoaWxlIChlbmQgPj0gc3RhcnQgJiYgdHJhbnNmb3JtZWRbZW5kXSA9PT0gJy0nKSB7XG4gICAgZW5kLS07XG4gIH1cbiAgXG4gIC8vIEV4dHJhY3QgdGhlIHRyaW1tZWQgcG9ydGlvbiBhbmQgY29sbGFwc2UgbXVsdGlwbGUgaHlwaGVuc1xuICBjb25zdCB0cmltbWVkID0gdHJhbnNmb3JtZWQuc2xpY2Uoc3RhcnQsIGVuZCArIDEpO1xuICByZXR1cm4gdHJpbW1lZC5yZXBsYWNlQWxsKC8tezIsfS9nLCAnLScpOyAvLyBUaGlzIGlzIHNhZmUgYXMgaXQncyBsaW5lYXJcbn1cblxuLyoqXG4gKiBFbnN1cmUgYSBkaXJlY3RvcnkgZXhpc3RzLCBjcmVhdGUgaWYgaXQgZG9lc24ndFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlRGlyZWN0b3J5KGRpclBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBmaWxlT3BzID0gZ2V0RmlsZU9wZXJhdGlvbnNTZXJ2aWNlKCk7XG4gIGNvbnN0IGV4aXN0cyA9IGF3YWl0IGZpbGVPcHMuZXhpc3RzKGRpclBhdGgpO1xuXG4gIGlmICghZXhpc3RzKSB7XG4gICAgbG9nZ2VyLmRlYnVnKGBDcmVhdGluZyBkaXJlY3Rvcnk6ICR7ZGlyUGF0aH1gKTtcbiAgICBhd2FpdCBmaWxlT3BzLmNyZWF0ZURpcmVjdG9yeShkaXJQYXRoKTtcbiAgfVxufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgZmlsZSBleGlzdHNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbGVFeGlzdHMoZmlsZVBhdGg6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBmaWxlT3BzID0gZ2V0RmlsZU9wZXJhdGlvbnNTZXJ2aWNlKCk7XG4gIHJldHVybiBmaWxlT3BzLmV4aXN0cyhmaWxlUGF0aCk7XG59XG5cbi8qKlxuICogR2V0IGZpbGUgc2l6ZSBpbiBieXRlc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RmlsZVNpemUoZmlsZVBhdGg6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPiB7XG4gIGNvbnN0IGZpbGVPcHMgPSBnZXRGaWxlT3BlcmF0aW9uc1NlcnZpY2UoKTtcbiAgY29uc3Qgc3RhdHMgPSBhd2FpdCBmaWxlT3BzLnN0YXQoZmlsZVBhdGgpO1xuICByZXR1cm4gc3RhdHMuc2l6ZTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBiYWNrdXAgb2YgYSBkaXJlY3RvcnlcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUJhY2t1cChzb3VyY2VQYXRoOiBzdHJpbmcsIGJhY2t1cFBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAvLyBFbnN1cmUgYmFja3VwIGRpcmVjdG9yeSBleGlzdHNcbiAgY29uc3QgYmFja3VwRGlyID0gcGF0aC5kaXJuYW1lKGJhY2t1cFBhdGgpO1xuICBhd2FpdCBlbnN1cmVEaXJlY3RvcnkoYmFja3VwRGlyKTtcbiAgXG4gIC8vIENvcHkgZGlyZWN0b3J5IHJlY3Vyc2l2ZWx5XG4gIGF3YWl0IGZzLmNwKHNvdXJjZVBhdGgsIGJhY2t1cFBhdGgsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xufSJdfQ==
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXN5c3RlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9maWxlc3lzdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEMsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFBMEIscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFakUsMERBQTBEO0FBQzFELElBQUkscUJBQXFCLEdBQWtDLElBQUksQ0FBQztBQUVoRSxTQUFTLHdCQUF3QjtJQUMvQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMzQixxQkFBcUIsR0FBRyxJQUFJLHFCQUFxQixDQUFDLElBQUksZUFBZSxFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBQ0QsT0FBTyxxQkFBcUIsQ0FBQztBQUMvQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CO0lBQ2pDLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM1RSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbkUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FB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O0lBRWpDLDZCQUE2QjtJQUM3QixNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEZpbGVzeXN0ZW0gYW5kIHN0cmluZyBtYW5pcHVsYXRpb24gdXRpbGl0aWVzXG4gKi9cblxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMvcHJvbWlzZXMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IEFESkVDVElWRVMsIEFOSU1BTFMgfSBmcm9tICcuLi9jb25maWcvY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vbG9nZ2VyLmpzJztcbmltcG9ydCB7IElGaWxlT3BlcmF0aW9uc1NlcnZpY2UsIEZpbGVPcGVyYXRpb25zU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL0ZpbGVPcGVyYXRpb25zU2VydmljZS5qcyc7XG5pbXBvcnQgeyBGaWxlTG9ja01hbmFnZXIgfSBmcm9tICcuLi9zZWN1cml0eS9maWxlTG9ja01hbmFnZXIuanMnO1xuXG4vLyBTaW5nbGV0b24gZmlsZSBvcGVyYXRpb25zIHNlcnZpY2UgZm9yIHV0aWxpdHkgZnVuY3Rpb25zXG5sZXQgZmlsZU9wZXJhdGlvbnNTZXJ2aWNlOiBJRmlsZU9wZXJhdGlvbnNTZXJ2aWNlIHwgbnVsbCA9IG51bGw7XG5cbmZ1bmN0aW9uIGdldEZpbGVPcGVyYXRpb25zU2VydmljZSgpOiBJRmlsZU9wZXJhdGlvbnNTZXJ2aWNlIHtcbiAgaWYgKCFmaWxlT3BlcmF0aW9uc1NlcnZpY2UpIHtcbiAgICBmaWxlT3BlcmF0aW9uc1NlcnZpY2UgPSBuZXcgRmlsZU9wZXJhdGlvbnNTZXJ2aWNlKG5ldyBGaWxlTG9ja01hbmFnZXIoKSk7XG4gIH1cbiAgcmV0dXJuIGZpbGVPcGVyYXRpb25zU2VydmljZTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhbiBhbm9ueW1vdXMgSUQgZm9yIHVzZXJzIHdpdGhvdXQgaWRlbnRpdHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQW5vbnltb3VzSWQoKTogc3RyaW5nIHtcbiAgY29uc3QgYWRqZWN0aXZlID0gQURKRUNUSVZFU1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBBREpFQ1RJVkVTLmxlbmd0aCldO1xuICBjb25zdCBhbmltYWwgPSBBTklNQUxTW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIEFOSU1BTFMubGVuZ3RoKV07XG4gIGNvbnN0IHJhbmRvbSA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLCA2KTtcbiAgcmV0dXJuIGBhbm9uLSR7YWRqZWN0aXZlfS0ke2FuaW1hbH0tJHtyYW5kb219YDtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHVuaXF1ZSBJRCBmb3IgcGVyc29uYXNcbiAqL1xuLy8gUHJlLWNvbXBpbGVkIHJlZ2V4IGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UgKGF2b2lkcyBjcmVhdGluZyByZWdleCBvbiBlYWNoIGNoYXJhY3RlcilcbmNvbnN0IEFMUEhBTlVNRVJJQ19SRUdFWCA9IC9bYS16MC05XS87XG5cbi8qKlxuICogTm9ybWFsaXplIGFuIGVsZW1lbnQgbmFtZSB0byB0aGUgY2Fub25pY2FsIGZpbGVuYW1lIGlkZW50aXR5IHVzZWQgYnkgbWFuYWdlcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVFbGVtZW50RmlsZW5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFuYW1lIHx8IG5hbWUudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAndW5uYW1lZCc7XG4gIH1cblxuICBjb25zdCBub3JtYWxpemVkID0gbmFtZVxuICAgIC5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCAnJDEtJDInKVxuICAgIC5yZXBsYWNlKC9bXFxzX10rL2csICctJylcbiAgICAudG9Mb3dlckNhc2UoKVxuICAgIC5yZXBsYWNlKC9bXmEtejAtOS1dL2csICctJylcbiAgICAucmVwbGFjZSgvLSsvZywgJy0nKTtcblxuICBjb25zdCBzdGFydCA9IG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnLScpID8gMSA6IDA7XG4gIGNvbnN0IGVuZCA9IG5vcm1hbGl6ZWQuZW5kc1dpdGgoJy0nKSA/IC0xIDogdW5kZWZpbmVkO1xuICByZXR1cm4gbm9ybWFsaXplZC5zbGljZShzdGFydCwgZW5kKTtcbn1cblxuLyoqIENhbm9uaWNhbCBub24tZW1wdHkgaWRlbnRpdHkgdXNlZCBmb3IgZWxlbWVudCBmaWxlcyBhbmQgcmVsYXRlZCBydW50aW1lIG1hcHMuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplRWxlbWVudFN0b3JhZ2VJZGVudGl0eShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gbm9ybWFsaXplRWxlbWVudEZpbGVuYW1lKG5hbWUpIHx8ICd1bm5hbWVkJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlVW5pcXVlSWQocGVyc29uYU5hbWU6IHN0cmluZywgYXV0aG9yPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgZGF0ZVN0ciA9IG5vdy50b0lTT1N0cmluZygpLnNsaWNlKDAsIDEwKS5yZXBsYWNlQWxsKCctJywgJycpO1xuICBjb25zdCB0aW1lU3RyID0gbm93LnRvVGltZVN0cmluZygpLnNsaWNlKDAsIDgpLnJlcGxhY2VBbGwoJzonLCAnJyk7XG4gIC8vIElzc3VlICM4NDg6IEFkZCBtaWxsaXNlY29uZHMgKyByYW5kb20gc3VmZml4IGZvciBzdWItc2Vjb25kIHVuaXF1ZW5lc3MuXG4gIC8vIENyaXRpY2FsIGZvciBjb3B5LW9uLXdyaXRlLCBzd2FybSBvcGVyYXRpb25zLCBhbmQgcmFwaWQgcHJvZ3JhbW1hdGljIGNyZWF0aW9uLlxuICBjb25zdCBtc1N0ciA9IG5vdy5nZXRNaWxsaXNlY29uZHMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDMsICcwJyk7XG4gIGNvbnN0IHJhbmQgPSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiwgNik7XG4gIC8vIFNFQ1VSSVRZIEZJWDogUHJldmVudCBSZURvUyBieSB1c2luZyBhIHNpbmdsZS1wYXNzIGFwcHJvYWNoXG4gIC8vIFByZXZpb3VzbHk6IE11bHRpcGxlIHJlcGxhY2UoKSBvcGVyYXRpb25zIHdpdGggdW5ib3VuZGVkIHF1YW50aWZpZXJzIGNvdWxkIGNhdXNlIGV4cG9uZW50aWFsIGJhY2t0cmFja2luZ1xuICAvLyBOb3c6IFNpbmdsZS1wYXNzIHRyYW5zZm9ybWF0aW9uIHdpdGggYnVpbHQtaW4gbGVuZ3RoIGxpbWl0XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBwZXJzb25hTmFtZS50b0xvd2VyQ2FzZSgpO1xuICBjb25zdCBzYW5pdGl6ZWROYW1lID0gbm9ybWFsaXplZFxuICAgIC5zcGxpdCgnJylcbiAgICAubWFwKGNoYXIgPT4gQUxQSEFOVU1FUklDX1JFR0VYLnRlc3QoY2hhcikgPyBjaGFyIDogJy0nKVxuICAgIC5qb2luKCcnKVxuICAgIC5zdWJzdHJpbmcoMCwgMTAwKSAvLyBMaW1pdCBhZnRlciB0cmFuc2Zvcm1hdGlvbiB0byBwcmVzZXJ2ZSBzdHJ1Y3R1cmVcbiAgICAucmVwbGFjZUFsbCgvKF4tKyl8KC0rJCkvZywgJycpIC8vIE9ubHkgdHJpbSBsZWFkaW5nL3RyYWlsaW5nIGh5cGhlbnNcbiAgICAucmVwbGFjZUFsbCgvLXsyLH0vZywgJy0nKTsgLy8gQ29sbGFwc2UgbXVsdGlwbGUgaHlwaGVuc1xuICBjb25zdCB3aG9NYWRlSXQgPSBhdXRob3IgfHwgZ2VuZXJhdGVBbm9ueW1vdXNJZCgpO1xuXG4gIHJldHVybiBgJHtzYW5pdGl6ZWROYW1lfV8ke2RhdGVTdHJ9LSR7dGltZVN0cn0ke21zU3RyfS0ke3JhbmR9XyR7d2hvTWFkZUl0fWA7XG59XG5cbi8qKlxuICogQ29udmVydCB0ZXh0IHRvIFVSTC1zYWZlIHNsdWdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNsdWdpZnkodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gU0VDVVJJVFkgRklYOiBQcmV2ZW50IFJlRG9TIGJ5IHVzaW5nIGEgc2luZ2xlLXBhc3MgYXBwcm9hY2hcbiAgLy8gUHJldmlvdXNseTogTXVsdGlwbGUgcmVwbGFjZSgpIG9wZXJhdGlvbnMgd2l0aCB1bmJvdW5kZWQgcXVhbnRpZmllcnMgY291bGQgY2F1c2UgZXhwb25lbnRpYWwgYmFja3RyYWNraW5nXG4gIC8vIE5vdzogU2luZ2xlLXBhc3MgdHJhbnNmb3JtYXRpb24gd2l0aCBidWlsdC1pbiBsZW5ndGggbGltaXRcbiAgY29uc3Qgbm9ybWFsaXplZCA9IHRleHQudG9Mb3dlckNhc2UoKTtcbiAgY29uc3QgdHJhbnNmb3JtZWQgPSBub3JtYWxpemVkXG4gICAgLnNwbGl0KCcnKVxuICAgIC5tYXAoY2hhciA9PiBBTFBIQU5VTUVSSUNfUkVHRVgudGVzdChjaGFyKSA/IGNoYXIgOiAnLScpXG4gICAgLmpvaW4oJycpO1xuICBcbiAgLy8gU0VDVVJJVFkgRklYOiBBdm9pZCBwb2x5bm9taWFsIHJlZ2V4IGJ5IHVzaW5nIHNlcGFyYXRlIG9wZXJhdGlvbnNcbiAgLy8gVHJpbSBsZWFkaW5nIGh5cGhlbnNcbiAgbGV0IHN0YXJ0ID0gMDtcbiAgd2hpbGUgKHN0YXJ0IDwgdHJhbnNmb3JtZWQubGVuZ3RoICYmIHRyYW5zZm9ybWVkW3N0YXJ0XSA9PT0gJy0nKSB7XG4gICAgc3RhcnQrKztcbiAgfVxuICBcbiAgLy8gVHJpbSB0cmFpbGluZyBoeXBoZW5zXG4gIGxldCBlbmQgPSB0cmFuc2Zvcm1lZC5sZW5ndGggLSAxO1xuICB3aGlsZSAoZW5kID49IHN0YXJ0ICYmIHRyYW5zZm9ybWVkW2VuZF0gPT09ICctJykge1xuICAgIGVuZC0tO1xuICB9XG4gIFxuICAvLyBFeHRyYWN0IHRoZSB0cmltbWVkIHBvcnRpb24gYW5kIGNvbGxhcHNlIG11bHRpcGxlIGh5cGhlbnNcbiAgY29uc3QgdHJpbW1lZCA9IHRyYW5zZm9ybWVkLnNsaWNlKHN0YXJ0LCBlbmQgKyAxKTtcbiAgcmV0dXJuIHRyaW1tZWQucmVwbGFjZUFsbCgvLXsyLH0vZywgJy0nKTsgLy8gVGhpcyBpcyBzYWZlIGFzIGl0J3MgbGluZWFyXG59XG5cbi8qKlxuICogRW5zdXJlIGEgZGlyZWN0b3J5IGV4aXN0cywgY3JlYXRlIGlmIGl0IGRvZXNuJ3RcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuc3VyZURpcmVjdG9yeShkaXJQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZmlsZU9wcyA9IGdldEZpbGVPcGVyYXRpb25zU2VydmljZSgpO1xuICBjb25zdCBleGlzdHMgPSBhd2FpdCBmaWxlT3BzLmV4aXN0cyhkaXJQYXRoKTtcblxuICBpZiAoIWV4aXN0cykge1xuICAgIGxvZ2dlci5kZWJ1ZyhgQ3JlYXRpbmcgZGlyZWN0b3J5OiAke2RpclBhdGh9YCk7XG4gICAgYXdhaXQgZmlsZU9wcy5jcmVhdGVEaXJlY3RvcnkoZGlyUGF0aCk7XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhIGZpbGUgZXhpc3RzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaWxlRXhpc3RzKGZpbGVQYXRoOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgZmlsZU9wcyA9IGdldEZpbGVPcGVyYXRpb25zU2VydmljZSgpO1xuICByZXR1cm4gZmlsZU9wcy5leGlzdHMoZmlsZVBhdGgpO1xufVxuXG4vKipcbiAqIEdldCBmaWxlIHNpemUgaW4gYnl0ZXNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEZpbGVTaXplKGZpbGVQYXRoOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xuICBjb25zdCBmaWxlT3BzID0gZ2V0RmlsZU9wZXJhdGlvbnNTZXJ2aWNlKCk7XG4gIGNvbnN0IHN0YXRzID0gYXdhaXQgZmlsZU9wcy5zdGF0KGZpbGVQYXRoKTtcbiAgcmV0dXJuIHN0YXRzLnNpemU7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgYmFja3VwIG9mIGEgZGlyZWN0b3J5XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVCYWNrdXAoc291cmNlUGF0aDogc3RyaW5nLCBiYWNrdXBQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgLy8gRW5zdXJlIGJhY2t1cCBkaXJlY3RvcnkgZXhpc3RzXG4gIGNvbnN0IGJhY2t1cERpciA9IHBhdGguZGlybmFtZShiYWNrdXBQYXRoKTtcbiAgYXdhaXQgZW5zdXJlRGlyZWN0b3J5KGJhY2t1cERpcik7XG4gIFxuICAvLyBDb3B5IGRpcmVjdG9yeSByZWN1cnNpdmVseVxuICBhd2FpdCBmcy5jcChzb3VyY2VQYXRoLCBiYWNrdXBQYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbn1cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dollhousemcp/mcp-server",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.40",
|
|
4
4
|
"description": "DollhouseMCP - A Model Context Protocol (MCP) server that enables dynamic AI persona management from markdown files, allowing Claude and other compatible AI assistants to activate and switch between different behavioral personas.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -11,17 +11,17 @@
|
|
|
11
11
|
},
|
|
12
12
|
"scripts": {
|
|
13
13
|
"prebuild": "npm run build:safety && node scripts/generate-version.js && node scripts/generate-hashes.mjs",
|
|
14
|
-
"build:safety": "cd packages/safety && npm
|
|
14
|
+
"build:safety": "cd packages/safety && npm ci --ignore-scripts --workspaces=false && npm run build",
|
|
15
15
|
"build": "tsc",
|
|
16
16
|
"postbuild": "node -e \"const fs=require('fs'),p=require('path');function rm(d){if(fs.existsSync(d)){for(const e of fs.readdirSync(d)){const f=p.join(d,e);fs.statSync(f).isDirectory()?rm(f):fs.unlinkSync(f)}fs.rmdirSync(d)}}function cpR(s,d){fs.mkdirSync(d,{recursive:true});for(const e of fs.readdirSync(s)){const sp=p.join(s,e),dp=p.join(d,e);fs.statSync(sp).isDirectory()?cpR(sp,dp):fs.copyFileSync(sp,dp)}}cpR('src/seed-elements','dist/seed-elements');rm('dist/web/public');cpR('src/web/public','dist/web/public')\"",
|
|
17
17
|
"web": "node dist/index.js --web",
|
|
18
18
|
"start": "node dist/index.js",
|
|
19
19
|
"dev": "tsx watch src/index.ts",
|
|
20
|
-
"inspector": "
|
|
21
|
-
"inspector:dev": "
|
|
20
|
+
"inspector": "mcp-inspector node dist/index.js",
|
|
21
|
+
"inspector:dev": "mcp-inspector tsx src/index.ts",
|
|
22
22
|
"clean": "rm -rf dist",
|
|
23
23
|
"rebuild": "npm run clean && npm run build",
|
|
24
|
-
"setup": "npm
|
|
24
|
+
"setup": "npm ci --ignore-scripts && npm run build",
|
|
25
25
|
"prepublishOnly": "cp README.md README.md.backup 2>/dev/null || true && cp README.npm.md README.md && BUILD_TYPE=npm npm run build",
|
|
26
26
|
"postpublish": "if [ -f README.md.backup ]; then mv README.md.backup README.md; else echo 'No backup found, README.md unchanged'; fi",
|
|
27
27
|
"test": "cross-env \"NODE_OPTIONS=$NODE_OPTIONS --experimental-vm-modules --no-warnings\" jest --config tests/jest.config.cjs",
|
|
@@ -57,9 +57,9 @@
|
|
|
57
57
|
"security:audit:verbose": "tsx scripts/run-security-audit.ts --verbose",
|
|
58
58
|
"typecheck:scripts": "tsc --noEmit --project tsconfig.scripts.json",
|
|
59
59
|
"pre-commit": "npm run security:rapid && npm run typecheck:scripts && npm audit --audit-level=high",
|
|
60
|
-
"test:playwright": "
|
|
61
|
-
"test:playwright:headed": "
|
|
62
|
-
"test:playwright:ui": "
|
|
60
|
+
"test:playwright": "playwright test",
|
|
61
|
+
"test:playwright:headed": "playwright test --headed",
|
|
62
|
+
"test:playwright:ui": "playwright test --ui",
|
|
63
63
|
"test:e2e": "cross-env \"NODE_OPTIONS=--experimental-vm-modules --no-warnings\" jest --config tests/jest.e2e.config.cjs",
|
|
64
64
|
"test:e2e:watch": "cross-env \"NODE_OPTIONS=--experimental-vm-modules --no-warnings\" jest --config tests/jest.e2e.config.cjs --watch",
|
|
65
65
|
"test:e2e:verbose": "cross-env \"NODE_OPTIONS=--experimental-vm-modules --no-warnings\" jest --config tests/jest.e2e.config.cjs --verbose",
|
|
@@ -252,7 +252,7 @@
|
|
|
252
252
|
"path-to-regexp": "8.4.2"
|
|
253
253
|
},
|
|
254
254
|
"giget": {
|
|
255
|
-
"tar": "7.5.
|
|
255
|
+
"tar": "7.5.22"
|
|
256
256
|
},
|
|
257
257
|
"form-data": "4.0.6",
|
|
258
258
|
"qs": "6.15.2",
|
package/server.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "io.github.DollhouseMCP/mcp-server",
|
|
4
4
|
"title": "DollhouseMCP",
|
|
5
5
|
"description": "OSS to create Personas, Skills, Templates, Agents, and Memories to customize your AI experience.",
|
|
6
|
-
"version": "2.0.
|
|
6
|
+
"version": "2.0.40",
|
|
7
7
|
"homepage": "https://dollhousemcp.com",
|
|
8
8
|
"repository": {
|
|
9
9
|
"type": "git",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
{
|
|
30
30
|
"registryType": "npm",
|
|
31
31
|
"identifier": "@dollhousemcp/mcp-server",
|
|
32
|
-
"version": "2.0.
|
|
32
|
+
"version": "2.0.40",
|
|
33
33
|
"transport": {
|
|
34
34
|
"type": "stdio"
|
|
35
35
|
}
|