@decaf-ts/ui-decorators 0.20.4 → 0.20.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ui-decorators.cjs +1059 -2
- package/dist/ui-decorators.js +1090 -2
- package/lib/cjs/dashboard/constants.cjs +11 -0
- package/lib/cjs/dashboard/decorators.cjs +61 -0
- package/lib/cjs/dashboard/index.cjs +23 -0
- package/lib/cjs/dashboard/reader.cjs +67 -0
- package/lib/cjs/dashboard/registry.cjs +45 -0
- package/lib/cjs/dashboard/types.cjs +4 -0
- package/lib/cjs/graph/GraphExecutionStateMapper.cjs +97 -0
- package/lib/cjs/graph/GraphResolution.cjs +17 -0
- package/lib/cjs/graph/catalog/GraphConnectionPolicy.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphCredentialReference.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphCredentialRequirement.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphDynamicPortRule.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphIconReference.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphManifestCompiler.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphNodeCapability.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphNodeDisplayManifest.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphNodeManifest.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphNodeManifestSerialization.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphNodeMethodManifest.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphNodePolicyManifest.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphParameterBase.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphParameterDefinition.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphParameterOption.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphParameterValidation.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphPortManifest.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphResourceLocatorMode.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphValueSchema.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphValueSchemaDerivation.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphVisibilityExpression.cjs +2 -2
- package/lib/cjs/graph/catalog/index.cjs +2 -2
- package/lib/cjs/graph/constants.cjs +159 -3
- package/lib/cjs/graph/decorators.cjs +2 -2
- package/lib/cjs/graph/document/GraphDecoratedWorkflowCompiler.cjs +2 -2
- package/lib/cjs/graph/document/GraphEdgeInstance.cjs +2 -2
- package/lib/cjs/graph/document/GraphEndpoint.cjs +2 -2
- package/lib/cjs/graph/document/GraphJsonValue.cjs +2 -2
- package/lib/cjs/graph/document/GraphLoopConfiguration.cjs +2 -2
- package/lib/cjs/graph/document/GraphNodeBinding.cjs +2 -2
- package/lib/cjs/graph/document/GraphNodeInstance.cjs +2 -2
- package/lib/cjs/graph/document/GraphWorkflowDocument.cjs +2 -2
- package/lib/cjs/graph/document/GraphWorkflowDocumentBuilder.cjs +2 -2
- package/lib/cjs/graph/document/GraphWorkflowDocumentReader.cjs +2 -2
- package/lib/cjs/graph/document/GraphWorkflowDocumentSerializer.cjs +2 -2
- package/lib/cjs/graph/document/GraphWorkflowUiState.cjs +2 -2
- package/lib/cjs/graph/document/index.cjs +2 -2
- package/lib/cjs/graph/index.cjs +5 -2
- package/lib/cjs/graph/nodes/agents/agent.cjs +110 -0
- package/lib/cjs/graph/nodes/base.cjs +36 -0
- package/lib/cjs/graph/nodes/boundary/input-value.cjs +57 -0
- package/lib/cjs/graph/nodes/category-styles.cjs +38 -0
- package/lib/cjs/graph/nodes/flow-control/break.cjs +63 -0
- package/lib/cjs/graph/nodes/flow-control/error-boundary.cjs +67 -0
- package/lib/cjs/graph/nodes/flow-control/human-approval.cjs +69 -0
- package/lib/cjs/graph/nodes/flow-control/if.cjs +71 -0
- package/lib/cjs/graph/nodes/flow-control/parallel.cjs +61 -0
- package/lib/cjs/graph/nodes/flow-control/switch.cjs +121 -0
- package/lib/cjs/graph/nodes/index.cjs +123 -0
- package/lib/cjs/graph/nodes/loops/foreach.cjs +86 -0
- package/lib/cjs/graph/nodes/loops/until.cjs +74 -0
- package/lib/cjs/graph/nodes/loops/while.cjs +74 -0
- package/lib/cjs/graph/nodes/manifests.cjs +338 -0
- package/lib/cjs/graph/nodes/triggers/chat.cjs +70 -0
- package/lib/cjs/graph/nodes/triggers/event.cjs +58 -0
- package/lib/cjs/graph/nodes/triggers/form.cjs +59 -0
- package/lib/cjs/graph/nodes/triggers/manual.cjs +60 -0
- package/lib/cjs/graph/nodes/triggers/schedule.cjs +60 -0
- package/lib/cjs/graph/nodes/triggers/webhook.cjs +62 -0
- package/lib/cjs/graph/nodes/utility/code.cjs +99 -0
- package/lib/cjs/graph/nodes/utility/delay.cjs +61 -0
- package/lib/cjs/graph/nodes/utility/log.cjs +62 -0
- package/lib/cjs/graph/nodes/utility/map.cjs +61 -0
- package/lib/cjs/graph/nodes/utility/merge.cjs +62 -0
- package/lib/cjs/graph/nodes/utility/return.cjs +61 -0
- package/lib/cjs/graph/nodes/utility/utility-log.cjs +66 -0
- package/lib/cjs/graph/overrides/Metadata.cjs +2 -2
- package/lib/cjs/graph/overrides/Rendering.cjs +2 -2
- package/lib/cjs/graph/overrides/index.cjs +2 -2
- package/lib/cjs/graph/overrides/overrides.cjs +2 -2
- package/lib/cjs/graph/reader.cjs +2 -2
- package/lib/cjs/graph/registry.cjs +2 -2
- package/lib/cjs/graph/snapshot.cjs +2 -2
- package/lib/cjs/graph/types.cjs +2 -2
- package/lib/cjs/index.cjs +6 -5
- package/lib/cjs/model/Renderable.cjs +2 -2
- package/lib/cjs/model/decorators.cjs +2 -2
- package/lib/cjs/model/index.cjs +2 -2
- package/lib/cjs/model/model.cjs +2 -2
- package/lib/cjs/model/overrides.cjs +2 -2
- package/lib/cjs/overrides/ModelBuilderExtensions.cjs +2 -2
- package/lib/cjs/overrides/index.cjs +2 -2
- package/lib/cjs/ui/DecafComponent.cjs +2 -2
- package/lib/cjs/ui/DecafEventHandler.cjs +2 -2
- package/lib/cjs/ui/DecafTranslateService.cjs +2 -2
- package/lib/cjs/ui/Rendering.cjs +2 -2
- package/lib/cjs/ui/UIValidator.cjs +2 -2
- package/lib/cjs/ui/constants.cjs +2 -2
- package/lib/cjs/ui/decorators.cjs +2 -2
- package/lib/cjs/ui/errors.cjs +2 -2
- package/lib/cjs/ui/index.cjs +2 -2
- package/lib/cjs/ui/interfaces/IDecafModal.cjs +2 -2
- package/lib/cjs/ui/interfaces/IDecafRouter.cjs +2 -2
- package/lib/cjs/ui/interfaces/IDecafSpinner.cjs +2 -2
- package/lib/cjs/ui/interfaces/IDecafToast.cjs +2 -2
- package/lib/cjs/ui/interfaces/index.cjs +2 -2
- package/lib/cjs/ui/overrides.cjs +2 -2
- package/lib/cjs/ui/types.cjs +2 -2
- package/lib/cjs/ui/utils.cjs +2 -2
- package/lib/cjs/ui/validator.cjs +2 -2
- package/lib/cjs/user-requests/UserRequestHandler.cjs +2 -2
- package/lib/cjs/user-requests/constants.cjs +2 -2
- package/lib/cjs/user-requests/decorators.cjs +2 -2
- package/lib/cjs/user-requests/errors.cjs +2 -2
- package/lib/cjs/user-requests/index.cjs +2 -2
- package/lib/cjs/user-requests/types.cjs +2 -2
- package/lib/esm/dashboard/constants.js +24 -0
- package/lib/esm/dashboard/decorators.js +57 -0
- package/lib/esm/dashboard/index.js +6 -0
- package/lib/esm/dashboard/reader.js +62 -0
- package/lib/esm/dashboard/registry.js +39 -0
- package/lib/esm/dashboard/types.js +9 -0
- package/lib/esm/graph/GraphExecutionStateMapper.js +91 -0
- package/lib/esm/graph/GraphResolution.js +13 -0
- package/lib/esm/graph/catalog/GraphConnectionPolicy.js +1 -1
- package/lib/esm/graph/catalog/GraphCredentialReference.js +1 -1
- package/lib/esm/graph/catalog/GraphCredentialRequirement.js +1 -1
- package/lib/esm/graph/catalog/GraphDynamicPortRule.js +1 -1
- package/lib/esm/graph/catalog/GraphIconReference.js +1 -1
- package/lib/esm/graph/catalog/GraphManifestCompiler.js +1 -1
- package/lib/esm/graph/catalog/GraphNodeCapability.js +1 -1
- package/lib/esm/graph/catalog/GraphNodeDisplayManifest.js +1 -1
- package/lib/esm/graph/catalog/GraphNodeManifest.js +1 -1
- package/lib/esm/graph/catalog/GraphNodeManifestSerialization.js +1 -1
- package/lib/esm/graph/catalog/GraphNodeMethodManifest.js +1 -1
- package/lib/esm/graph/catalog/GraphNodePolicyManifest.js +1 -1
- package/lib/esm/graph/catalog/GraphParameterBase.js +1 -1
- package/lib/esm/graph/catalog/GraphParameterDefinition.js +1 -1
- package/lib/esm/graph/catalog/GraphParameterOption.js +1 -1
- package/lib/esm/graph/catalog/GraphParameterValidation.js +1 -1
- package/lib/esm/graph/catalog/GraphPortManifest.js +1 -1
- package/lib/esm/graph/catalog/GraphResourceLocatorMode.js +1 -1
- package/lib/esm/graph/catalog/GraphValueSchema.js +1 -1
- package/lib/esm/graph/catalog/GraphValueSchemaDerivation.js +1 -1
- package/lib/esm/graph/catalog/GraphVisibilityExpression.js +1 -1
- package/lib/esm/graph/catalog/index.js +1 -1
- package/lib/esm/graph/constants.js +180 -1
- package/lib/esm/graph/decorators.js +1 -1
- package/lib/esm/graph/document/GraphDecoratedWorkflowCompiler.js +1 -1
- package/lib/esm/graph/document/GraphEdgeInstance.js +1 -1
- package/lib/esm/graph/document/GraphEndpoint.js +1 -1
- package/lib/esm/graph/document/GraphJsonValue.js +1 -1
- package/lib/esm/graph/document/GraphLoopConfiguration.js +1 -1
- package/lib/esm/graph/document/GraphNodeBinding.js +1 -1
- package/lib/esm/graph/document/GraphNodeInstance.js +1 -1
- package/lib/esm/graph/document/GraphWorkflowDocument.js +1 -1
- package/lib/esm/graph/document/GraphWorkflowDocumentBuilder.js +1 -1
- package/lib/esm/graph/document/GraphWorkflowDocumentReader.js +1 -1
- package/lib/esm/graph/document/GraphWorkflowDocumentSerializer.js +1 -1
- package/lib/esm/graph/document/GraphWorkflowUiState.js +1 -1
- package/lib/esm/graph/document/index.js +1 -1
- package/lib/esm/graph/index.js +4 -1
- package/lib/esm/graph/nodes/agents/agent.js +101 -0
- package/lib/esm/graph/nodes/base.js +31 -0
- package/lib/esm/graph/nodes/boundary/input-value.js +48 -0
- package/lib/esm/graph/nodes/category-styles.js +34 -0
- package/lib/esm/graph/nodes/flow-control/break.js +54 -0
- package/lib/esm/graph/nodes/flow-control/error-boundary.js +58 -0
- package/lib/esm/graph/nodes/flow-control/human-approval.js +60 -0
- package/lib/esm/graph/nodes/flow-control/if.js +62 -0
- package/lib/esm/graph/nodes/flow-control/parallel.js +52 -0
- package/lib/esm/graph/nodes/flow-control/switch.js +112 -0
- package/lib/esm/graph/nodes/index.js +105 -0
- package/lib/esm/graph/nodes/loops/foreach.js +77 -0
- package/lib/esm/graph/nodes/loops/until.js +65 -0
- package/lib/esm/graph/nodes/loops/while.js +65 -0
- package/lib/esm/graph/nodes/manifests.js +334 -0
- package/lib/esm/graph/nodes/triggers/chat.js +61 -0
- package/lib/esm/graph/nodes/triggers/event.js +49 -0
- package/lib/esm/graph/nodes/triggers/form.js +50 -0
- package/lib/esm/graph/nodes/triggers/manual.js +51 -0
- package/lib/esm/graph/nodes/triggers/schedule.js +51 -0
- package/lib/esm/graph/nodes/triggers/webhook.js +53 -0
- package/lib/esm/graph/nodes/utility/code.js +90 -0
- package/lib/esm/graph/nodes/utility/delay.js +52 -0
- package/lib/esm/graph/nodes/utility/log.js +53 -0
- package/lib/esm/graph/nodes/utility/map.js +52 -0
- package/lib/esm/graph/nodes/utility/merge.js +53 -0
- package/lib/esm/graph/nodes/utility/return.js +52 -0
- package/lib/esm/graph/nodes/utility/utility-log.js +57 -0
- package/lib/esm/graph/overrides/Metadata.js +1 -1
- package/lib/esm/graph/overrides/Rendering.js +1 -1
- package/lib/esm/graph/overrides/index.js +1 -1
- package/lib/esm/graph/overrides/overrides.js +1 -1
- package/lib/esm/graph/reader.js +1 -1
- package/lib/esm/graph/registry.js +1 -1
- package/lib/esm/graph/snapshot.js +1 -1
- package/lib/esm/graph/types.js +1 -1
- package/lib/esm/index.js +5 -4
- package/lib/esm/model/Renderable.js +1 -1
- package/lib/esm/model/decorators.js +1 -1
- package/lib/esm/model/index.js +1 -1
- package/lib/esm/model/model.js +1 -1
- package/lib/esm/model/overrides.js +1 -1
- package/lib/esm/overrides/ModelBuilderExtensions.js +1 -1
- package/lib/esm/overrides/index.js +1 -1
- package/lib/esm/ui/DecafComponent.js +1 -1
- package/lib/esm/ui/DecafEventHandler.js +1 -1
- package/lib/esm/ui/DecafTranslateService.js +1 -1
- package/lib/esm/ui/Rendering.js +1 -1
- package/lib/esm/ui/UIValidator.js +1 -1
- package/lib/esm/ui/constants.js +1 -1
- package/lib/esm/ui/decorators.js +1 -1
- package/lib/esm/ui/errors.js +1 -1
- package/lib/esm/ui/index.js +1 -1
- package/lib/esm/ui/interfaces/IDecafModal.js +1 -1
- package/lib/esm/ui/interfaces/IDecafRouter.js +1 -1
- package/lib/esm/ui/interfaces/IDecafSpinner.js +1 -1
- package/lib/esm/ui/interfaces/IDecafToast.js +1 -1
- package/lib/esm/ui/interfaces/index.js +1 -1
- package/lib/esm/ui/overrides.js +1 -1
- package/lib/esm/ui/types.js +1 -1
- package/lib/esm/ui/utils.js +1 -1
- package/lib/esm/ui/validator.js +1 -1
- package/lib/esm/user-requests/UserRequestHandler.js +1 -1
- package/lib/esm/user-requests/constants.js +1 -1
- package/lib/esm/user-requests/decorators.js +1 -1
- package/lib/esm/user-requests/errors.js +1 -1
- package/lib/esm/user-requests/index.js +1 -1
- package/lib/esm/user-requests/types.js +1 -1
- package/lib/types/dashboard/constants.d.cts +22 -0
- package/lib/types/dashboard/constants.d.mts +22 -0
- package/lib/types/dashboard/decorators.d.cts +34 -0
- package/lib/types/dashboard/decorators.d.mts +34 -0
- package/lib/types/dashboard/index.d.cts +5 -0
- package/lib/types/dashboard/index.d.mts +5 -0
- package/lib/types/dashboard/reader.d.cts +30 -0
- package/lib/types/dashboard/reader.d.mts +30 -0
- package/lib/types/dashboard/registry.d.cts +29 -0
- package/lib/types/dashboard/registry.d.mts +29 -0
- package/lib/types/dashboard/types.d.cts +67 -0
- package/lib/types/dashboard/types.d.mts +67 -0
- package/lib/types/graph/GraphExecutionStateMapper.d.cts +66 -0
- package/lib/types/graph/GraphExecutionStateMapper.d.mts +66 -0
- package/lib/types/graph/GraphResolution.d.cts +53 -0
- package/lib/types/graph/GraphResolution.d.mts +53 -0
- package/lib/types/graph/constants.d.cts +165 -0
- package/lib/types/graph/constants.d.mts +165 -0
- package/lib/types/graph/index.d.cts +3 -0
- package/lib/types/graph/index.d.mts +3 -0
- package/lib/types/graph/nodes/agents/agent.d.cts +44 -0
- package/lib/types/graph/nodes/agents/agent.d.mts +44 -0
- package/lib/types/graph/nodes/base.d.cts +28 -0
- package/lib/types/graph/nodes/base.d.mts +28 -0
- package/lib/types/graph/nodes/boundary/input-value.d.cts +13 -0
- package/lib/types/graph/nodes/boundary/input-value.d.mts +13 -0
- package/lib/types/graph/nodes/category-styles.d.cts +8 -0
- package/lib/types/graph/nodes/category-styles.d.mts +8 -0
- package/lib/types/graph/nodes/flow-control/break.d.cts +15 -0
- package/lib/types/graph/nodes/flow-control/break.d.mts +15 -0
- package/lib/types/graph/nodes/flow-control/error-boundary.d.cts +12 -0
- package/lib/types/graph/nodes/flow-control/error-boundary.d.mts +12 -0
- package/lib/types/graph/nodes/flow-control/human-approval.d.cts +13 -0
- package/lib/types/graph/nodes/flow-control/human-approval.d.mts +13 -0
- package/lib/types/graph/nodes/flow-control/if.d.cts +16 -0
- package/lib/types/graph/nodes/flow-control/if.d.mts +16 -0
- package/lib/types/graph/nodes/flow-control/parallel.d.cts +11 -0
- package/lib/types/graph/nodes/flow-control/parallel.d.mts +11 -0
- package/lib/types/graph/nodes/flow-control/switch.d.cts +21 -0
- package/lib/types/graph/nodes/flow-control/switch.d.mts +21 -0
- package/lib/types/graph/nodes/index.d.cts +79 -0
- package/lib/types/graph/nodes/index.d.mts +79 -0
- package/lib/types/graph/nodes/loops/foreach.d.cts +19 -0
- package/lib/types/graph/nodes/loops/foreach.d.mts +19 -0
- package/lib/types/graph/nodes/loops/until.d.cts +16 -0
- package/lib/types/graph/nodes/loops/until.d.mts +16 -0
- package/lib/types/graph/nodes/loops/while.d.cts +16 -0
- package/lib/types/graph/nodes/loops/while.d.mts +16 -0
- package/lib/types/graph/nodes/manifests.d.cts +62 -0
- package/lib/types/graph/nodes/manifests.d.mts +62 -0
- package/lib/types/graph/nodes/triggers/chat.d.cts +13 -0
- package/lib/types/graph/nodes/triggers/chat.d.mts +13 -0
- package/lib/types/graph/nodes/triggers/event.d.cts +10 -0
- package/lib/types/graph/nodes/triggers/event.d.mts +10 -0
- package/lib/types/graph/nodes/triggers/form.d.cts +11 -0
- package/lib/types/graph/nodes/triggers/form.d.mts +11 -0
- package/lib/types/graph/nodes/triggers/manual.d.cts +12 -0
- package/lib/types/graph/nodes/triggers/manual.d.mts +12 -0
- package/lib/types/graph/nodes/triggers/schedule.d.cts +11 -0
- package/lib/types/graph/nodes/triggers/schedule.d.mts +11 -0
- package/lib/types/graph/nodes/triggers/webhook.d.cts +11 -0
- package/lib/types/graph/nodes/triggers/webhook.d.mts +11 -0
- package/lib/types/graph/nodes/utility/code.d.cts +31 -0
- package/lib/types/graph/nodes/utility/code.d.mts +31 -0
- package/lib/types/graph/nodes/utility/delay.d.cts +11 -0
- package/lib/types/graph/nodes/utility/delay.d.mts +11 -0
- package/lib/types/graph/nodes/utility/log.d.cts +13 -0
- package/lib/types/graph/nodes/utility/log.d.mts +13 -0
- package/lib/types/graph/nodes/utility/map.d.cts +11 -0
- package/lib/types/graph/nodes/utility/map.d.mts +11 -0
- package/lib/types/graph/nodes/utility/merge.d.cts +12 -0
- package/lib/types/graph/nodes/utility/merge.d.mts +12 -0
- package/lib/types/graph/nodes/utility/return.d.cts +11 -0
- package/lib/types/graph/nodes/utility/return.d.mts +11 -0
- package/lib/types/graph/nodes/utility/utility-log.d.cts +15 -0
- package/lib/types/graph/nodes/utility/utility-log.d.mts +15 -0
- package/lib/types/graph/types.d.cts +286 -0
- package/lib/types/graph/types.d.mts +286 -0
- package/lib/types/index.d.cts +4 -3
- package/lib/types/index.d.mts +4 -3
- package/package.json +1 -1
- package/dist/ui-decorators.cjs.map +0 -1
- package/dist/ui-decorators.js.map +0 -1
- package/lib/cjs/graph/catalog/GraphConnectionPolicy.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphCredentialReference.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphCredentialRequirement.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphDynamicPortRule.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphIconReference.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphManifestCompiler.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphNodeCapability.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphNodeDisplayManifest.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphNodeManifest.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphNodeManifestSerialization.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphNodeMethodManifest.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphNodePolicyManifest.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphParameterBase.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphParameterDefinition.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphParameterOption.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphParameterValidation.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphPortManifest.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphResourceLocatorMode.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphValueSchema.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphValueSchemaDerivation.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphVisibilityExpression.cjs.map +0 -1
- package/lib/cjs/graph/catalog/index.cjs.map +0 -1
- package/lib/cjs/graph/constants.cjs.map +0 -1
- package/lib/cjs/graph/decorators.cjs.map +0 -1
- package/lib/cjs/graph/document/GraphDecoratedWorkflowCompiler.cjs.map +0 -1
- package/lib/cjs/graph/document/GraphEdgeInstance.cjs.map +0 -1
- package/lib/cjs/graph/document/GraphEndpoint.cjs.map +0 -1
- package/lib/cjs/graph/document/GraphJsonValue.cjs.map +0 -1
- package/lib/cjs/graph/document/GraphLoopConfiguration.cjs.map +0 -1
- package/lib/cjs/graph/document/GraphNodeBinding.cjs.map +0 -1
- package/lib/cjs/graph/document/GraphNodeInstance.cjs.map +0 -1
- package/lib/cjs/graph/document/GraphWorkflowDocument.cjs.map +0 -1
- package/lib/cjs/graph/document/GraphWorkflowDocumentBuilder.cjs.map +0 -1
- package/lib/cjs/graph/document/GraphWorkflowDocumentReader.cjs.map +0 -1
- package/lib/cjs/graph/document/GraphWorkflowDocumentSerializer.cjs.map +0 -1
- package/lib/cjs/graph/document/GraphWorkflowUiState.cjs.map +0 -1
- package/lib/cjs/graph/document/index.cjs.map +0 -1
- package/lib/cjs/graph/index.cjs.map +0 -1
- package/lib/cjs/graph/overrides/Metadata.cjs.map +0 -1
- package/lib/cjs/graph/overrides/Rendering.cjs.map +0 -1
- package/lib/cjs/graph/overrides/index.cjs.map +0 -1
- package/lib/cjs/graph/overrides/overrides.cjs.map +0 -1
- package/lib/cjs/graph/reader.cjs.map +0 -1
- package/lib/cjs/graph/registry.cjs.map +0 -1
- package/lib/cjs/graph/snapshot.cjs.map +0 -1
- package/lib/cjs/graph/types.cjs.map +0 -1
- package/lib/cjs/index.cjs.map +0 -1
- package/lib/cjs/model/Renderable.cjs.map +0 -1
- package/lib/cjs/model/decorators.cjs.map +0 -1
- package/lib/cjs/model/index.cjs.map +0 -1
- package/lib/cjs/model/model.cjs.map +0 -1
- package/lib/cjs/model/overrides.cjs.map +0 -1
- package/lib/cjs/overrides/ModelBuilderExtensions.cjs.map +0 -1
- package/lib/cjs/overrides/index.cjs.map +0 -1
- package/lib/cjs/ui/DecafComponent.cjs.map +0 -1
- package/lib/cjs/ui/DecafEventHandler.cjs.map +0 -1
- package/lib/cjs/ui/DecafTranslateService.cjs.map +0 -1
- package/lib/cjs/ui/Rendering.cjs.map +0 -1
- package/lib/cjs/ui/UIValidator.cjs.map +0 -1
- package/lib/cjs/ui/constants.cjs.map +0 -1
- package/lib/cjs/ui/decorators.cjs.map +0 -1
- package/lib/cjs/ui/errors.cjs.map +0 -1
- package/lib/cjs/ui/index.cjs.map +0 -1
- package/lib/cjs/ui/interfaces/IDecafModal.cjs.map +0 -1
- package/lib/cjs/ui/interfaces/IDecafRouter.cjs.map +0 -1
- package/lib/cjs/ui/interfaces/IDecafSpinner.cjs.map +0 -1
- package/lib/cjs/ui/interfaces/IDecafToast.cjs.map +0 -1
- package/lib/cjs/ui/interfaces/index.cjs.map +0 -1
- package/lib/cjs/ui/overrides.cjs.map +0 -1
- package/lib/cjs/ui/types.cjs.map +0 -1
- package/lib/cjs/ui/utils.cjs.map +0 -1
- package/lib/cjs/ui/validator.cjs.map +0 -1
- package/lib/cjs/user-requests/UserRequestHandler.cjs.map +0 -1
- package/lib/cjs/user-requests/constants.cjs.map +0 -1
- package/lib/cjs/user-requests/decorators.cjs.map +0 -1
- package/lib/cjs/user-requests/errors.cjs.map +0 -1
- package/lib/cjs/user-requests/index.cjs.map +0 -1
- package/lib/cjs/user-requests/types.cjs.map +0 -1
- package/lib/esm/graph/catalog/GraphConnectionPolicy.js.map +0 -1
- package/lib/esm/graph/catalog/GraphCredentialReference.js.map +0 -1
- package/lib/esm/graph/catalog/GraphCredentialRequirement.js.map +0 -1
- package/lib/esm/graph/catalog/GraphDynamicPortRule.js.map +0 -1
- package/lib/esm/graph/catalog/GraphIconReference.js.map +0 -1
- package/lib/esm/graph/catalog/GraphManifestCompiler.js.map +0 -1
- package/lib/esm/graph/catalog/GraphNodeCapability.js.map +0 -1
- package/lib/esm/graph/catalog/GraphNodeDisplayManifest.js.map +0 -1
- package/lib/esm/graph/catalog/GraphNodeManifest.js.map +0 -1
- package/lib/esm/graph/catalog/GraphNodeManifestSerialization.js.map +0 -1
- package/lib/esm/graph/catalog/GraphNodeMethodManifest.js.map +0 -1
- package/lib/esm/graph/catalog/GraphNodePolicyManifest.js.map +0 -1
- package/lib/esm/graph/catalog/GraphParameterBase.js.map +0 -1
- package/lib/esm/graph/catalog/GraphParameterDefinition.js.map +0 -1
- package/lib/esm/graph/catalog/GraphParameterOption.js.map +0 -1
- package/lib/esm/graph/catalog/GraphParameterValidation.js.map +0 -1
- package/lib/esm/graph/catalog/GraphPortManifest.js.map +0 -1
- package/lib/esm/graph/catalog/GraphResourceLocatorMode.js.map +0 -1
- package/lib/esm/graph/catalog/GraphValueSchema.js.map +0 -1
- package/lib/esm/graph/catalog/GraphValueSchemaDerivation.js.map +0 -1
- package/lib/esm/graph/catalog/GraphVisibilityExpression.js.map +0 -1
- package/lib/esm/graph/catalog/index.js.map +0 -1
- package/lib/esm/graph/constants.js.map +0 -1
- package/lib/esm/graph/decorators.js.map +0 -1
- package/lib/esm/graph/document/GraphDecoratedWorkflowCompiler.js.map +0 -1
- package/lib/esm/graph/document/GraphEdgeInstance.js.map +0 -1
- package/lib/esm/graph/document/GraphEndpoint.js.map +0 -1
- package/lib/esm/graph/document/GraphJsonValue.js.map +0 -1
- package/lib/esm/graph/document/GraphLoopConfiguration.js.map +0 -1
- package/lib/esm/graph/document/GraphNodeBinding.js.map +0 -1
- package/lib/esm/graph/document/GraphNodeInstance.js.map +0 -1
- package/lib/esm/graph/document/GraphWorkflowDocument.js.map +0 -1
- package/lib/esm/graph/document/GraphWorkflowDocumentBuilder.js.map +0 -1
- package/lib/esm/graph/document/GraphWorkflowDocumentReader.js.map +0 -1
- package/lib/esm/graph/document/GraphWorkflowDocumentSerializer.js.map +0 -1
- package/lib/esm/graph/document/GraphWorkflowUiState.js.map +0 -1
- package/lib/esm/graph/document/index.js.map +0 -1
- package/lib/esm/graph/index.js.map +0 -1
- package/lib/esm/graph/overrides/Metadata.js.map +0 -1
- package/lib/esm/graph/overrides/Rendering.js.map +0 -1
- package/lib/esm/graph/overrides/index.js.map +0 -1
- package/lib/esm/graph/overrides/overrides.js.map +0 -1
- package/lib/esm/graph/reader.js.map +0 -1
- package/lib/esm/graph/registry.js.map +0 -1
- package/lib/esm/graph/snapshot.js.map +0 -1
- package/lib/esm/graph/types.js.map +0 -1
- package/lib/esm/index.js.map +0 -1
- package/lib/esm/model/Renderable.js.map +0 -1
- package/lib/esm/model/decorators.js.map +0 -1
- package/lib/esm/model/index.js.map +0 -1
- package/lib/esm/model/model.js.map +0 -1
- package/lib/esm/model/overrides.js.map +0 -1
- package/lib/esm/overrides/ModelBuilderExtensions.js.map +0 -1
- package/lib/esm/overrides/index.js.map +0 -1
- package/lib/esm/ui/DecafComponent.js.map +0 -1
- package/lib/esm/ui/DecafEventHandler.js.map +0 -1
- package/lib/esm/ui/DecafTranslateService.js.map +0 -1
- package/lib/esm/ui/Rendering.js.map +0 -1
- package/lib/esm/ui/UIValidator.js.map +0 -1
- package/lib/esm/ui/constants.js.map +0 -1
- package/lib/esm/ui/decorators.js.map +0 -1
- package/lib/esm/ui/errors.js.map +0 -1
- package/lib/esm/ui/index.js.map +0 -1
- package/lib/esm/ui/interfaces/IDecafModal.js.map +0 -1
- package/lib/esm/ui/interfaces/IDecafRouter.js.map +0 -1
- package/lib/esm/ui/interfaces/IDecafSpinner.js.map +0 -1
- package/lib/esm/ui/interfaces/IDecafToast.js.map +0 -1
- package/lib/esm/ui/interfaces/index.js.map +0 -1
- package/lib/esm/ui/overrides.js.map +0 -1
- package/lib/esm/ui/types.js.map +0 -1
- package/lib/esm/ui/utils.js.map +0 -1
- package/lib/esm/ui/validator.js.map +0 -1
- package/lib/esm/user-requests/UserRequestHandler.js.map +0 -1
- package/lib/esm/user-requests/constants.js.map +0 -1
- package/lib/esm/user-requests/decorators.js.map +0 -1
- package/lib/esm/user-requests/errors.js.map +0 -1
- package/lib/esm/user-requests/index.js.map +0 -1
- package/lib/esm/user-requests/types.js.map +0 -1
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* @module ui-decorators/graph/nodes/utility/merge
|
|
12
|
+
* @summary Merge utility node declaration (DECAF-32 §22.2.2).
|
|
13
|
+
* @description Merge — normalises branch/parallel outputs into a single
|
|
14
|
+
* output.
|
|
15
|
+
*/
|
|
16
|
+
import { Model, model, required } from "@decaf-ts/decorator-validation";
|
|
17
|
+
import { uielement } from "./../../../ui/decorators.js";
|
|
18
|
+
import { input, node, output } from "./../../decorators.js";
|
|
19
|
+
// Ensure category styles are registered (idempotent).
|
|
20
|
+
import "./../category-styles.js";
|
|
21
|
+
let MergeFlowNode = class MergeFlowNode extends Model {
|
|
22
|
+
};
|
|
23
|
+
__decorate([
|
|
24
|
+
required(),
|
|
25
|
+
uielement("textarea", { label: "Branch outputs", placeholder: "Outputs to merge" }),
|
|
26
|
+
input({ handle: "values" }),
|
|
27
|
+
__metadata("design:type", Array)
|
|
28
|
+
], MergeFlowNode.prototype, "values", void 0);
|
|
29
|
+
__decorate([
|
|
30
|
+
required(),
|
|
31
|
+
uielement("input", { label: "Merged output", placeholder: "Merged result" }),
|
|
32
|
+
output({ handle: "merged" }),
|
|
33
|
+
__metadata("design:type", Object)
|
|
34
|
+
], MergeFlowNode.prototype, "merged", void 0);
|
|
35
|
+
MergeFlowNode = __decorate([
|
|
36
|
+
node("core.flow.merge", {
|
|
37
|
+
kind: "core.flow.merge",
|
|
38
|
+
category: "Utility",
|
|
39
|
+
color: "#0d9488",
|
|
40
|
+
icon: "ti-arrows-merge",
|
|
41
|
+
width: 96,
|
|
42
|
+
height: 96,
|
|
43
|
+
labels: ["flow", "merge", "join"],
|
|
44
|
+
metadata: {
|
|
45
|
+
title: "Merge",
|
|
46
|
+
description: "Merges multiple branch outputs into a single normalised output object.",
|
|
47
|
+
strategy: "concat",
|
|
48
|
+
},
|
|
49
|
+
}),
|
|
50
|
+
model()
|
|
51
|
+
], MergeFlowNode);
|
|
52
|
+
export { MergeFlowNode };
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JhcGgvbm9kZXMvdXRpbGl0eS9tZXJnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7Ozs7R0FLRztBQUNILE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsb0NBQStCO0FBQ25ELE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSw4QkFBeUI7QUFFdkQsc0RBQXNEO0FBQ3RELGlDQUE0QjtBQWlCckIsSUFBTSxhQUFhLEdBQW5CLE1BQU0sYUFBYyxTQUFRLEtBQUs7Q0FVdkMsQ0FBQTtBQU5DO0lBSEMsUUFBUSxFQUFFO0lBQ1YsU0FBUyxDQUFDLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztJQUNuRixLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUM7OzZDQUNUO0FBS25CO0lBSEMsUUFBUSxFQUFFO0lBQ1YsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxDQUFDO0lBQzVFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQzs7NkNBQ1o7QUFUTixhQUFhO0lBZnpCLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtRQUN2QixJQUFJLEVBQUUsaUJBQWlCO1FBQ3ZCLFFBQVEsRUFBRSxTQUFTO1FBQ25CLEtBQUssRUFBRSxTQUFTO1FBQ2hCLElBQUksRUFBRSxpQkFBaUI7UUFDdkIsS0FBSyxFQUFFLEVBQUU7UUFDVCxNQUFNLEVBQUUsRUFBRTtRQUNWLE1BQU0sRUFBRSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDO1FBQ2pDLFFBQVEsRUFBRTtZQUNSLEtBQUssRUFBRSxPQUFPO1lBQ2QsV0FBVyxFQUFFLHdFQUF3RTtZQUNyRixRQUFRLEVBQUUsUUFBUTtTQUNuQjtLQUNGLENBQUM7SUFDRCxLQUFLLEVBQUU7R0FDSyxhQUFhLENBVXpCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIHVpLWRlY29yYXRvcnMvZ3JhcGgvbm9kZXMvdXRpbGl0eS9tZXJnZVxuICogQHN1bW1hcnkgTWVyZ2UgdXRpbGl0eSBub2RlIGRlY2xhcmF0aW9uIChERUNBRi0zMiDCpzIyLjIuMikuXG4gKiBAZGVzY3JpcHRpb24gTWVyZ2Ug4oCUIG5vcm1hbGlzZXMgYnJhbmNoL3BhcmFsbGVsIG91dHB1dHMgaW50byBhIHNpbmdsZVxuICogb3V0cHV0LlxuICovXG5pbXBvcnQgeyBNb2RlbCwgbW9kZWwsIHJlcXVpcmVkIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgdWllbGVtZW50IH0gZnJvbSBcIi4uLy4uLy4uL3VpL2RlY29yYXRvcnNcIjtcbmltcG9ydCB7IGlucHV0LCBub2RlLCBvdXRwdXQgfSBmcm9tIFwiLi4vLi4vZGVjb3JhdG9yc1wiO1xuXG4vLyBFbnN1cmUgY2F0ZWdvcnkgc3R5bGVzIGFyZSByZWdpc3RlcmVkIChpZGVtcG90ZW50KS5cbmltcG9ydCBcIi4uL2NhdGVnb3J5LXN0eWxlc1wiO1xuXG5Abm9kZShcImNvcmUuZmxvdy5tZXJnZVwiLCB7XG4gIGtpbmQ6IFwiY29yZS5mbG93Lm1lcmdlXCIsXG4gIGNhdGVnb3J5OiBcIlV0aWxpdHlcIixcbiAgY29sb3I6IFwiIzBkOTQ4OFwiLFxuICBpY29uOiBcInRpLWFycm93cy1tZXJnZVwiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1wiZmxvd1wiLCBcIm1lcmdlXCIsIFwiam9pblwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJNZXJnZVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIk1lcmdlcyBtdWx0aXBsZSBicmFuY2ggb3V0cHV0cyBpbnRvIGEgc2luZ2xlIG5vcm1hbGlzZWQgb3V0cHV0IG9iamVjdC5cIixcbiAgICBzdHJhdGVneTogXCJjb25jYXRcIixcbiAgfSxcbn0pXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIE1lcmdlRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIkJyYW5jaCBvdXRwdXRzXCIsIHBsYWNlaG9sZGVyOiBcIk91dHB1dHMgdG8gbWVyZ2VcIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVzXCIgfSlcbiAgdmFsdWVzITogdW5rbm93bltdO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIk1lcmdlZCBvdXRwdXRcIiwgcGxhY2Vob2xkZXI6IFwiTWVyZ2VkIHJlc3VsdFwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwibWVyZ2VkXCIgfSlcbiAgbWVyZ2VkITogdW5rbm93bjtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* @module ui-decorators/graph/nodes/utility/return
|
|
12
|
+
* @summary Return utility node declaration (DECAF-32 §22.2.2).
|
|
13
|
+
* @description Return — defines and normalises the final workflow output.
|
|
14
|
+
*/
|
|
15
|
+
import { Model, model, required } from "@decaf-ts/decorator-validation";
|
|
16
|
+
import { uielement } from "./../../../ui/decorators.js";
|
|
17
|
+
import { input, node, output } from "./../../decorators.js";
|
|
18
|
+
// Ensure category styles are registered (idempotent).
|
|
19
|
+
import "./../category-styles.js";
|
|
20
|
+
let ReturnFlowNode = class ReturnFlowNode extends Model {
|
|
21
|
+
};
|
|
22
|
+
__decorate([
|
|
23
|
+
required(),
|
|
24
|
+
uielement("textarea", { label: "Input value", placeholder: "Value to normalise" }),
|
|
25
|
+
input({ handle: "value" }),
|
|
26
|
+
__metadata("design:type", Object)
|
|
27
|
+
], ReturnFlowNode.prototype, "value", void 0);
|
|
28
|
+
__decorate([
|
|
29
|
+
required(),
|
|
30
|
+
uielement("input", { label: "Returned output", placeholder: "Normalised output" }),
|
|
31
|
+
output({ handle: "result" }),
|
|
32
|
+
__metadata("design:type", Object)
|
|
33
|
+
], ReturnFlowNode.prototype, "result", void 0);
|
|
34
|
+
ReturnFlowNode = __decorate([
|
|
35
|
+
node("core.flow.return", {
|
|
36
|
+
kind: "core.flow.return",
|
|
37
|
+
category: "Utility",
|
|
38
|
+
color: "#22c55e",
|
|
39
|
+
icon: "ti-arrow-back-up",
|
|
40
|
+
width: 96,
|
|
41
|
+
height: 96,
|
|
42
|
+
labels: ["flow", "return", "output"],
|
|
43
|
+
metadata: {
|
|
44
|
+
title: "Return",
|
|
45
|
+
description: "Normalises the input into the final workflow output object.",
|
|
46
|
+
outputSchema: {},
|
|
47
|
+
},
|
|
48
|
+
}),
|
|
49
|
+
model()
|
|
50
|
+
], ReturnFlowNode);
|
|
51
|
+
export { ReturnFlowNode };
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0dXJuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2dyYXBoL25vZGVzL3V0aWxpdHkvcmV0dXJuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOzs7O0dBSUc7QUFDSCxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLG9DQUErQjtBQUNuRCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsOEJBQXlCO0FBRXZELHNEQUFzRDtBQUN0RCxpQ0FBNEI7QUFpQnJCLElBQU0sY0FBYyxHQUFwQixNQUFNLGNBQWUsU0FBUSxLQUFLO0NBVXhDLENBQUE7QUFOQztJQUhDLFFBQVEsRUFBRTtJQUNWLFNBQVMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxDQUFDO0lBQ2xGLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQzs7NkNBQ1g7QUFLaEI7SUFIQyxRQUFRLEVBQUU7SUFDVixTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxDQUFDO0lBQ2xGLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQzs7OENBQ1o7QUFUTixjQUFjO0lBZjFCLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtRQUN4QixJQUFJLEVBQUUsa0JBQWtCO1FBQ3hCLFFBQVEsRUFBRSxTQUFTO1FBQ25CLEtBQUssRUFBRSxTQUFTO1FBQ2hCLElBQUksRUFBRSxrQkFBa0I7UUFDeEIsS0FBSyxFQUFFLEVBQUU7UUFDVCxNQUFNLEVBQUUsRUFBRTtRQUNWLE1BQU0sRUFBRSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDO1FBQ3BDLFFBQVEsRUFBRTtZQUNSLEtBQUssRUFBRSxRQUFRO1lBQ2YsV0FBVyxFQUFFLDZEQUE2RDtZQUMxRSxZQUFZLEVBQUUsRUFBRTtTQUNqQjtLQUNGLENBQUM7SUFDRCxLQUFLLEVBQUU7R0FDSyxjQUFjLENBVTFCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIHVpLWRlY29yYXRvcnMvZ3JhcGgvbm9kZXMvdXRpbGl0eS9yZXR1cm5cbiAqIEBzdW1tYXJ5IFJldHVybiB1dGlsaXR5IG5vZGUgZGVjbGFyYXRpb24gKERFQ0FGLTMyIMKnMjIuMi4yKS5cbiAqIEBkZXNjcmlwdGlvbiBSZXR1cm4g4oCUIGRlZmluZXMgYW5kIG5vcm1hbGlzZXMgdGhlIGZpbmFsIHdvcmtmbG93IG91dHB1dC5cbiAqL1xuaW1wb3J0IHsgTW9kZWwsIG1vZGVsLCByZXF1aXJlZCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHVpZWxlbWVudCB9IGZyb20gXCIuLi8uLi8uLi91aS9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBpbnB1dCwgbm9kZSwgb3V0cHV0IH0gZnJvbSBcIi4uLy4uL2RlY29yYXRvcnNcIjtcblxuLy8gRW5zdXJlIGNhdGVnb3J5IHN0eWxlcyBhcmUgcmVnaXN0ZXJlZCAoaWRlbXBvdGVudCkuXG5pbXBvcnQgXCIuLi9jYXRlZ29yeS1zdHlsZXNcIjtcblxuQG5vZGUoXCJjb3JlLmZsb3cucmV0dXJuXCIsIHtcbiAga2luZDogXCJjb3JlLmZsb3cucmV0dXJuXCIsXG4gIGNhdGVnb3J5OiBcIlV0aWxpdHlcIixcbiAgY29sb3I6IFwiIzIyYzU1ZVwiLFxuICBpY29uOiBcInRpLWFycm93LWJhY2stdXBcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJyZXR1cm5cIiwgXCJvdXRwdXRcIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiUmV0dXJuXCIsXG4gICAgZGVzY3JpcHRpb246IFwiTm9ybWFsaXNlcyB0aGUgaW5wdXQgaW50byB0aGUgZmluYWwgd29ya2Zsb3cgb3V0cHV0IG9iamVjdC5cIixcbiAgICBvdXRwdXRTY2hlbWE6IHt9LFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgUmV0dXJuRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIklucHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIlZhbHVlIHRvIG5vcm1hbGlzZVwiIH0pXG4gIEBpbnB1dCh7IGhhbmRsZTogXCJ2YWx1ZVwiIH0pXG4gIHZhbHVlITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJSZXR1cm5lZCBvdXRwdXRcIiwgcGxhY2Vob2xkZXI6IFwiTm9ybWFsaXNlZCBvdXRwdXRcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcInJlc3VsdFwiIH0pXG4gIHJlc3VsdCE6IHVua25vd247XG59XG4iXX0=
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* @module ui-decorators/graph/nodes/utility/utility-log
|
|
12
|
+
* @summary Utility Log node declaration (DECAF-48 §4.3).
|
|
13
|
+
* @description Utility Log — logs the input value through the run's
|
|
14
|
+
* `ctx.logger` at a configurable level and forwards it unchanged on the
|
|
15
|
+
* `logged` output port.
|
|
16
|
+
*/
|
|
17
|
+
import { Model, model, required } from "@decaf-ts/decorator-validation";
|
|
18
|
+
import { uielement } from "./../../../ui/decorators.js";
|
|
19
|
+
import { input, node, output } from "./../../decorators.js";
|
|
20
|
+
// Ensure category styles are registered (idempotent).
|
|
21
|
+
import "./../category-styles.js";
|
|
22
|
+
let UtilityLogNode = class UtilityLogNode extends Model {
|
|
23
|
+
};
|
|
24
|
+
__decorate([
|
|
25
|
+
required(),
|
|
26
|
+
uielement("textarea", { label: "Input value", placeholder: "Value to log" }),
|
|
27
|
+
input({ handle: "value" }),
|
|
28
|
+
__metadata("design:type", Object)
|
|
29
|
+
], UtilityLogNode.prototype, "value", void 0);
|
|
30
|
+
__decorate([
|
|
31
|
+
uielement("input", { label: "Log level", placeholder: "info, warn, error, ..." }),
|
|
32
|
+
__metadata("design:type", String)
|
|
33
|
+
], UtilityLogNode.prototype, "level", void 0);
|
|
34
|
+
__decorate([
|
|
35
|
+
required(),
|
|
36
|
+
uielement("input", { label: "Logged value", placeholder: "Forwarded value" }),
|
|
37
|
+
output({ handle: "logged" }),
|
|
38
|
+
__metadata("design:type", Object)
|
|
39
|
+
], UtilityLogNode.prototype, "logged", void 0);
|
|
40
|
+
UtilityLogNode = __decorate([
|
|
41
|
+
node("core.utility.log", {
|
|
42
|
+
kind: "core.utility.log",
|
|
43
|
+
category: "Utility",
|
|
44
|
+
color: "#6366f1",
|
|
45
|
+
icon: "ti-terminal",
|
|
46
|
+
width: 96,
|
|
47
|
+
height: 96,
|
|
48
|
+
labels: ["utility", "log", "debug", "observability"],
|
|
49
|
+
metadata: {
|
|
50
|
+
title: "Utility Log",
|
|
51
|
+
description: "Logs the input value to the run's ctx.logger at a configurable level and forwards it unchanged.",
|
|
52
|
+
},
|
|
53
|
+
}),
|
|
54
|
+
model()
|
|
55
|
+
], UtilityLogNode);
|
|
56
|
+
export { UtilityLogNode };
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS1sb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JhcGgvbm9kZXMvdXRpbGl0eS91dGlsaXR5LWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7Ozs7O0dBTUc7QUFDSCxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLG9DQUErQjtBQUNuRCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsOEJBQXlCO0FBR3ZELHNEQUFzRDtBQUN0RCxpQ0FBNEI7QUFnQnJCLElBQU0sY0FBYyxHQUFwQixNQUFNLGNBQWUsU0FBUSxLQUFLO0NBYXhDLENBQUE7QUFUQztJQUhDLFFBQVEsRUFBRTtJQUNWLFNBQVMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsQ0FBQztJQUM1RSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7OzZDQUNYO0FBR2hCO0lBREMsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLHdCQUF3QixFQUFFLENBQUM7OzZDQUM3RDtBQUtyQjtJQUhDLFFBQVEsRUFBRTtJQUNWLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxDQUFDO0lBQzdFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQzs7OENBQ1o7QUFaTixjQUFjO0lBZDFCLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtRQUN4QixJQUFJLEVBQUUsa0JBQWtCO1FBQ3hCLFFBQVEsRUFBRSxTQUFTO1FBQ25CLEtBQUssRUFBRSxTQUFTO1FBQ2hCLElBQUksRUFBRSxhQUFhO1FBQ25CLEtBQUssRUFBRSxFQUFFO1FBQ1QsTUFBTSxFQUFFLEVBQUU7UUFDVixNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxlQUFlLENBQUM7UUFDcEQsUUFBUSxFQUFFO1lBQ1IsS0FBSyxFQUFFLGFBQWE7WUFDcEIsV0FBVyxFQUFFLGlHQUFpRztTQUMvRztLQUNGLENBQUM7SUFDRCxLQUFLLEVBQUU7R0FDSyxjQUFjLENBYTFCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIHVpLWRlY29yYXRvcnMvZ3JhcGgvbm9kZXMvdXRpbGl0eS91dGlsaXR5LWxvZ1xuICogQHN1bW1hcnkgVXRpbGl0eSBMb2cgbm9kZSBkZWNsYXJhdGlvbiAoREVDQUYtNDggwqc0LjMpLlxuICogQGRlc2NyaXB0aW9uIFV0aWxpdHkgTG9nIOKAlCBsb2dzIHRoZSBpbnB1dCB2YWx1ZSB0aHJvdWdoIHRoZSBydW4nc1xuICogYGN0eC5sb2dnZXJgIGF0IGEgY29uZmlndXJhYmxlIGxldmVsIGFuZCBmb3J3YXJkcyBpdCB1bmNoYW5nZWQgb24gdGhlXG4gKiBgbG9nZ2VkYCBvdXRwdXQgcG9ydC5cbiAqL1xuaW1wb3J0IHsgTW9kZWwsIG1vZGVsLCByZXF1aXJlZCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHVpZWxlbWVudCB9IGZyb20gXCIuLi8uLi8uLi91aS9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBpbnB1dCwgbm9kZSwgb3V0cHV0IH0gZnJvbSBcIi4uLy4uL2RlY29yYXRvcnNcIjtcbmltcG9ydCB0eXBlIHsgTG9nTm9kZUxldmVsIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5cbi8vIEVuc3VyZSBjYXRlZ29yeSBzdHlsZXMgYXJlIHJlZ2lzdGVyZWQgKGlkZW1wb3RlbnQpLlxuaW1wb3J0IFwiLi4vY2F0ZWdvcnktc3R5bGVzXCI7XG5cbkBub2RlKFwiY29yZS51dGlsaXR5LmxvZ1wiLCB7XG4gIGtpbmQ6IFwiY29yZS51dGlsaXR5LmxvZ1wiLFxuICBjYXRlZ29yeTogXCJVdGlsaXR5XCIsXG4gIGNvbG9yOiBcIiM2MzY2ZjFcIixcbiAgaWNvbjogXCJ0aS10ZXJtaW5hbFwiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1widXRpbGl0eVwiLCBcImxvZ1wiLCBcImRlYnVnXCIsIFwib2JzZXJ2YWJpbGl0eVwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJVdGlsaXR5IExvZ1wiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkxvZ3MgdGhlIGlucHV0IHZhbHVlIHRvIHRoZSBydW4ncyBjdHgubG9nZ2VyIGF0IGEgY29uZmlndXJhYmxlIGxldmVsIGFuZCBmb3J3YXJkcyBpdCB1bmNoYW5nZWQuXCIsXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBVdGlsaXR5TG9nTm9kZSBleHRlbmRzIE1vZGVsIHtcbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcInRleHRhcmVhXCIsIHsgbGFiZWw6IFwiSW5wdXQgdmFsdWVcIiwgcGxhY2Vob2xkZXI6IFwiVmFsdWUgdG8gbG9nXCIgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiBcInZhbHVlXCIgfSlcbiAgdmFsdWUhOiB1bmtub3duO1xuXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIkxvZyBsZXZlbFwiLCBwbGFjZWhvbGRlcjogXCJpbmZvLCB3YXJuLCBlcnJvciwgLi4uXCIgfSlcbiAgbGV2ZWwhOiBMb2dOb2RlTGV2ZWw7XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiTG9nZ2VkIHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIkZvcndhcmRlZCB2YWx1ZVwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwibG9nZ2VkXCIgfSlcbiAgbG9nZ2VkITogdW5rbm93bjtcbn1cbiJdfQ==
|
|
@@ -17,4 +17,4 @@
|
|
|
17
17
|
* overrides entry points so bundlers preserve the side-effect imports.
|
|
18
18
|
*/
|
|
19
19
|
import "@decaf-ts/decoration";
|
|
20
|
-
//# sourceMappingURL=
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ3JhcGgvb3ZlcnJpZGVzL01ldGFkYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE9BQU8sc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgdWktZGVjb3JhdG9ycy9ncmFwaC9vdmVycmlkZXMvTWV0YWRhdGFcbiAqIEBzdW1tYXJ5IE1ldGFkYXRhIG5hbWVzcGFjZSBhdWdtZW50YXRpb24gZm9yIGdyYXBoIG5vZGVzIGFuZCB3b3JrZmxvd3MuXG4gKiBAZGVzY3JpcHRpb24gRXh0ZW5kcyB0aGUgYE1ldGFkYXRhYCBjbGFzcyBmcm9tIGBAZGVjYWYtdHMvZGVjb3JhdGlvbmAgd2l0aFxuICogYE1ldGFkYXRhLm5vZGVzKClgIGFuZCBgTWV0YWRhdGEud29ya2Zsb3dzKClgIGFjY2Vzc29ycyB0aGF0IHJldHVybiBhbGxcbiAqIGBAbm9kZWAtZGVjb3JhdGVkIGFuZCBgQGdyYXBoYC1kZWNvcmF0ZWQgY29uc3RydWN0b3JzIHJlc3BlY3RpdmVseS5cbiAqXG4gKiBUaGlzIGZvbGxvd3MgdGhlIGV4aXN0aW5nIG92ZXJyaWRlIHBhdHRlcm4gdXNlZCBieSBgY29yZWAgKGBjb3JlL3NyYy9vdmVycmlkZXMvYClcbiAqIGFuZCBgZGVjb3JhdG9yLXZhbGlkYXRpb25gIChgZGVjb3JhdG9yLXZhbGlkYXRpb24vc3JjL292ZXJyaWRlcy9gKTpcbiAqIDEuIFRoaXMgZmlsZSBkZWNsYXJlcyB0aGUgbmV3IHN0YXRpYyBtZXRob2RzIG9uIHRoZSBgTWV0YWRhdGFgIG5hbWVzcGFjZSB2aWFcbiAqICAgIGBkZWNsYXJlIG1vZHVsZWAgKFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gbWVyZ2luZykuXG4gKiAyLiBUaGUgY29tcGFuaW9uIGBvdmVycmlkZXMudHNgIGF0dGFjaGVzIHRoZSBpbXBsZW1lbnRhdGlvbnMgdG8gdGhlXG4gKiAgICBgTWV0YWRhdGFgIGNsYXNzIGF0IHJ1bnRpbWUgdmlhIGAoTWV0YWRhdGEgYXMgYW55KS5mbiA9IC4uLmAuXG4gKiAzLiBUaGUgYGluZGV4LnRzYCBvZiB0aGlzIGZvbGRlciBzaWRlLWVmZmVjdC1pbXBvcnRzIGBvdmVycmlkZXMudHNgIHNvIHRoZVxuICogICAgYXR0YWNobWVudHMgcnVuIHdoZW5ldmVyIHRoZSBncmFwaCBtb2R1bGUgaXMgbG9hZGVkLlxuICogNC4gVGhlIHBhY2thZ2UncyBgc2lkZUVmZmVjdHNgIGFycmF5IGluIGBwYWNrYWdlLmpzb25gIGluY2x1ZGVzIHRoZSBjb21waWxlZFxuICogICAgb3ZlcnJpZGVzIGVudHJ5IHBvaW50cyBzbyBidW5kbGVycyBwcmVzZXJ2ZSB0aGUgc2lkZS1lZmZlY3QgaW1wb3J0cy5cbiAqL1xuaW1wb3J0IFwiQGRlY2FmLXRzL2RlY29yYXRpb25cIjtcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0b3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRpb25cIjtcblxuZGVjbGFyZSBtb2R1bGUgXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1uYW1lc3BhY2VcbiAgZXhwb3J0IG5hbWVzcGFjZSBNZXRhZGF0YSB7XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbGwgYEBub2RlYC1kZWNvcmF0ZWQgY29uc3RydWN0b3JzLlxuICAgICAqXG4gICAgICogVGhlIGxpc3QgaXMgcG9wdWxhdGVkIGFzIGEgc2lkZS1lZmZlY3Qgb2YgdGhlIGBAbm9kZWAgZGVjb3JhdG9yIOKAlCBldmVyeVxuICAgICAqIGNsYXNzIGRlY29yYXRlZCB3aXRoIGBAbm9kZSguLi4pYCBpcyBhcHBlbmRlZCB0byB0aGUgbm9kZSByZWdpc3RyeSBhdFxuICAgICAqIGRlY29yYXRpb24gdGltZS4gQ29uc3VtZXJzIChlLmcuIHRoZSBmb3ItYW5ndWxhciBncmFwaCBwYWxldHRlLCBDUlVEIGZvcm1cbiAgICAgKiBidWlsZGVycywgZXhlY3V0b3IgcmVnaXN0cmllcykgY2FsbCB0aGlzIHRvIGRpc2NvdmVyIGFsbCBhdmFpbGFibGUgbm9kZVxuICAgICAqIGtpbmRzIHdpdGhvdXQgYSBoYW5kLW1haW50YWluZWQgYXJyYXkuXG4gICAgICogQHJldHVybnMgQSBmcmVzaCBhcnJheSBvZiBgQG5vZGVgLWRlY29yYXRlZCBjb25zdHJ1Y3RvcnMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbm9kZXMoKTogQ29uc3RydWN0b3JbXTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYWxsIGBAZ3JhcGhgLWRlY29yYXRlZCBjb25zdHJ1Y3RvcnMgKHdvcmtmbG93IHJvb3RzKS5cbiAgICAgKlxuICAgICAqIEFuYWxvZ291cyB0byB7QGxpbmsgbm9kZXN9IGJ1dCBmb3IgYEBncmFwaGAtZGVjb3JhdGVkIHdvcmtmbG93LXJvb3RcbiAgICAgKiBjbGFzc2VzLiBQb3B1bGF0ZWQgYXMgYSBzaWRlLWVmZmVjdCBvZiB0aGUgYEBncmFwaGAgZGVjb3JhdG9yLlxuICAgICAqIEByZXR1cm5zIEEgZnJlc2ggYXJyYXkgb2YgYEBncmFwaGAtZGVjb3JhdGVkIGNvbnN0cnVjdG9ycy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3b3JrZmxvd3MoKTogQ29uc3RydWN0b3JbXTtcbiAgfVxufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVuZGVyaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dyYXBoL292ZXJyaWRlcy9SZW5kZXJpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRmllbGREZWZpbml0aW9uIH0gZnJvbSBcIi4uLy4uL3VpL3R5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlcmluZ0VuZ2luZTxUID0gdm9pZCwgUiA9IEZpZWxkRGVmaW5pdGlvbjxUPj4ge1xuICByZW5kZXJBc05vZGU8TSBleHRlbmRzIE1vZGVsPihcbiAgICBtb2RlbDogTSxcbiAgICBnbG9iYWxQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUjtcbn1cbiJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import "./Rendering.js";
|
|
2
2
|
export * from "./overrides.js";
|
|
3
3
|
export * from "./Metadata.js";
|
|
4
|
-
//# sourceMappingURL=
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ3JhcGgvb3ZlcnJpZGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdCQUFxQjtBQUVyQiwrQkFBNEI7QUFDNUIsOEJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwiLi9SZW5kZXJpbmdcIjtcblxuZXhwb3J0ICogZnJvbSBcIi4vb3ZlcnJpZGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9NZXRhZGF0YVwiO1xuIl19
|
|
@@ -14,4 +14,4 @@ Metadata.nodes = function nodes() {
|
|
|
14
14
|
Metadata.workflows = function workflows() {
|
|
15
15
|
return graphWorkflows();
|
|
16
16
|
}.bind(Metadata);
|
|
17
|
-
//# sourceMappingURL=
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcnJpZGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dyYXBoL292ZXJyaWRlcy9vdmVycmlkZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0JBQXFCO0FBQ3JCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQXdCLGVBQWUsRUFBRSw0QkFBdUI7QUFFdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHVCQUFrQjtBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSx5QkFBb0I7QUFFeEQsZUFBZSxDQUFDLFNBQWlCLENBQUMsWUFBWSxHQUFHLFNBQVMsWUFBWSxDQUlyRSxLQUFRLEVBQUUsV0FBb0MsRUFBRSxHQUFHLElBQVc7SUFDOUQsS0FBSyxXQUFXLENBQUM7SUFDakIsS0FBSyxJQUFJLENBQUM7SUFDVixPQUFPLGlCQUFpQixDQUFDLEtBQUssQ0FBaUIsQ0FBQztBQUNsRCxDQUFDLENBQUM7QUFFRCxRQUFnQixDQUFDLEtBQUssR0FBRyxTQUFTLEtBQUs7SUFDdEMsT0FBTyxVQUFVLEVBQUUsQ0FBQztBQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRWhCLFFBQWdCLENBQUMsU0FBUyxHQUFHLFNBQVMsU0FBUztJQUM5QyxPQUFPLGNBQWMsRUFBRSxDQUFDO0FBQzFCLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCIuL1JlbmRlcmluZ1wiO1xuaW1wb3J0IHsgTWV0YWRhdGEgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRpb25cIjtcbmltcG9ydCB7IHR5cGUgRmllbGREZWZpbml0aW9uLCBSZW5kZXJpbmdFbmdpbmUgfSBmcm9tIFwiLi4vLi4vdWkvaW5kZXhcIjtcbmltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgZ3JhcGhEZWZpbml0aW9uT2YgfSBmcm9tIFwiLi4vcmVhZGVyXCI7XG5pbXBvcnQgeyBncmFwaE5vZGVzLCBncmFwaFdvcmtmbG93cyB9IGZyb20gXCIuLi9yZWdpc3RyeVwiO1xuXG4oUmVuZGVyaW5nRW5naW5lLnByb3RvdHlwZSBhcyBhbnkpLnJlbmRlckFzTm9kZSA9IGZ1bmN0aW9uIHJlbmRlckFzTm9kZTxcbiAgTSBleHRlbmRzIE1vZGVsLFxuICBUID0gdm9pZCxcbiAgUiA9IEZpZWxkRGVmaW5pdGlvbjxUPixcbj4obW9kZWw6IE0sIGdsb2JhbFByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgLi4uYXJnczogYW55W10pOiBSIHtcbiAgdm9pZCBnbG9iYWxQcm9wcztcbiAgdm9pZCBhcmdzO1xuICByZXR1cm4gZ3JhcGhEZWZpbml0aW9uT2YobW9kZWwpIGFzIHVua25vd24gYXMgUjtcbn07XG5cbihNZXRhZGF0YSBhcyBhbnkpLm5vZGVzID0gZnVuY3Rpb24gbm9kZXMoKTogYW55W10ge1xuICByZXR1cm4gZ3JhcGhOb2RlcygpO1xufS5iaW5kKE1ldGFkYXRhKTtcblxuKE1ldGFkYXRhIGFzIGFueSkud29ya2Zsb3dzID0gZnVuY3Rpb24gd29ya2Zsb3dzKCk6IGFueVtdIHtcbiAgcmV0dXJuIGdyYXBoV29ya2Zsb3dzKCk7XG59LmJpbmQoTWV0YWRhdGEpO1xuIl19
|
package/lib/esm/graph/reader.js
CHANGED
|
@@ -282,4 +282,4 @@ export function graphWorkflowDefinitionOf(model) {
|
|
|
282
282
|
workflow,
|
|
283
283
|
};
|
|
284
284
|
}
|
|
285
|
-
//# sourceMappingURL=reader.js.map
|
|
285
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dyYXBoL3JlYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLDZCQUF3QjtBQUN6QyxPQUFPLEVBQ0wsU0FBUyxHQUNWLHVCQUFvQjtBQVVyQixPQUFPLEVBQUUsYUFBYSxFQUFFLHVCQUFvQjtBQUM1QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsdUJBQW9CO0FBQzFFLGlDQUE0QjtBQUk1QixTQUFTLFlBQVksQ0FBa0IsS0FBd0I7SUFDN0QsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUF1QixDQUFDLENBQUM7SUFDMUQsSUFBSSxPQUFPLFFBQVEsS0FBSyxVQUFVO1FBQUUsT0FBTyxRQUEwQixDQUFDO0lBQ3RFLE1BQU0sUUFBUSxHQUFJLEtBQWUsQ0FBQyxXQUFXLENBQUM7SUFDOUMsSUFBSSxPQUFPLFFBQVEsS0FBSyxVQUFVO1FBQUUsT0FBTyxRQUEwQixDQUFDO0lBQ3RFLE9BQU8sS0FBdUIsQ0FBQztBQUNqQyxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsS0FBYztJQUM5QixJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLElBQUk7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUM1RCxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUNoQixPQUE2QixFQUM3QixJQUEwQixFQUMx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LCBNZXRhZGF0YSB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBWYWxpZGF0aW9uS2V5cyB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IFVJS2V5cyB9IGZyb20gXCIuLi91aS9jb25zdGFudHNcIjtcbmltcG9ydCB7XG4gIEdyYXBoS2V5cyxcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgdHlwZSB7XG4gIEdyYXBoTm9kZURlZmluaXRpb24sXG4gIEdyYXBoTm9kZU1ldGFkYXRhLFxuICBHcmFwaFBvcnREZWZpbml0aW9uLFxuICBHcmFwaFBvcnRHcm91cE1ldGFkYXRhLFxuICBHcmFwaFBvcnRNZXRhZGF0YSxcbiAgR3JhcGhXb3JrZmxvd0RlZmluaXRpb24sXG4gIEdyYXBoV29ya2Zsb3dNZXRhZGF0YSxcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBQb3J0RGlyZWN0aW9uIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyByZXNvbHZlRWZmZWN0aXZlQ29sb3IsIHJlc29sdmVFZmZlY3RpdmVJY29uIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgXCIuLi9tb2RlbC9vdmVycmlkZXNcIjtcblxudHlwZSBHcmFwaE1vZGVsTGlrZTxNIGV4dGVuZHMgTW9kZWwgPSBNb2RlbD4gPSBDb25zdHJ1Y3RvcjxNPiB8IE07XG5cbmZ1bmN0aW9uIHJlc29sdmVNb2RlbDxNIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBHcmFwaE1vZGVsTGlrZTxNPik6IENvbnN0cnVjdG9yPE0+IHtcbiAgY29uc3QgcmVzb2x2ZWQgPSBNZXRhZGF0YS5jb25zdHIobW9kZWwgYXMgQ29uc3RydWN0b3I8TT4pO1xuICBpZiAodHlwZW9mIHJlc29sdmVkID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiByZXNvbHZlZCBhcyBDb25zdHJ1Y3RvcjxNPjtcbiAgY29uc3QgZmFsbGJhY2sgPSAobW9kZWwgYXMgTW9kZWwpLmNvbnN0cnVjdG9yO1xuICBpZiAodHlwZW9mIGZhbGxiYWNrID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBmYWxsYmFjayBhcyBDb25zdHJ1Y3RvcjxNPjtcbiAgcmV0dXJuIG1vZGVsIGFzIENvbnN0cnVjdG9yPE0+O1xufVxuXG5mdW5jdGlvbiBhc1N0cmluZyh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gdmFsdWUgOiBTdHJpbmcodmFsdWUpO1xufVxuXG5mdW5jdGlvbiBwaWNrTGFiZWwoXG4gIGVsZW1lbnQ/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICBwcm9wPzogUmVjb3JkPHN0cmluZywgYW55PixcbiAgZmFsbGJhY2s/OiBzdHJpbmdcbikge1xuICBjb25zdCBlbGVtZW50TGFiZWwgPSBhc1N0cmluZyhlbGVtZW50Py5wcm9wcz8ubGFiZWwgPz8gZWxlbWVudD8ucHJvcHM/Lm5hbWUpO1xuICByZXR1cm4gKFxuICAgIGVsZW1lbnRMYWJlbCA/P1xuICAgIGFzU3RyaW5nKHByb3A/Lm5hbWUpID8/XG4gICAgZmFsbGJhY2sgPz9cbiAgICBcIlwiXG4gICk7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVOZXN0ZWRNb2RlbENvbnN0cnVjdG9yKFxuICBtb2RlbDogQ29uc3RydWN0b3I8TW9kZWw+LFxuICBwcm9wZXJ0eTogc3RyaW5nLFxuICB2YWxpZGF0aW9uPzogUmVjb3JkPHN0cmluZywgYW55PlxuKTogQ29uc3RydWN0b3I8TW9kZWw+IHwgdW5kZWZpbmVkIHtcbiAgLy8gMS4gRXhwbGljaXQgYG1vZGVsYCBvcHRpb24gb24gQGlucHV0KHsgbW9kZWw6IFNvbWVTY2hlbWEgfSkg4oCUIHN1cnZpdmVzXG4gIC8vICAgIGJ1bmRsZXIgdHJlZS1zaGFraW5nIGJlY2F1c2UgdGhlIGNsYXNzIGlzIHJlZmVyZW5jZWQgaW4gdGhlIGRlY29yYXRvclxuICAvLyAgICBjYWxsLCBub3QganVzdCBpbiBUeXBlU2NyaXB0J3MgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIC4uLikuXG4gIGNvbnN0IGdyYXBoID0gZ3JhcGhQb3J0TWV0YWRhdGFPZihtb2RlbCwgcHJvcGVydHkpO1xuICBpZiAoZ3JhcGg/Lm1vZGVsICYmIHR5cGVvZiBncmFwaC5tb2RlbCA9PT0gXCJmdW5jdGlvblwiICYmIE1vZGVsLmlzTW9kZWwoZ3JhcGgubW9kZWwgYXMgbmV2ZXIpKSB7XG4gICAgcmV0dXJuIGdyYXBoLm1vZGVsIGFzIENvbnN0cnVjdG9yPE1vZGVsPjtcbiAgfVxuXG4gIC8vIDIuIFR5cGVTY3JpcHQgZGVzaWduOnR5cGUgbWV0YWRhdGEgKGZyYWdpbGUg4oCUIGJ1bmRsZXJzIG1heSByZXBsYWNlIHdpdGhcbiAgLy8gICAgT2JqZWN0IHdoZW4gdGhlIGNsYXNzIGlzIHRyZWUtc2hha2VuKS5cbiAgY29uc3QgZGlyZWN0VHlwZSA9IE1ldGFkYXRhLnR5cGUobW9kZWwsIHByb3BlcnR5KTtcbiAgaWYgKHR5cGVvZiBkaXJlY3RUeXBlID09PSBcImZ1bmN0aW9uXCIgJiYgTW9kZWwuaXNNb2RlbChkaXJlY3RUeXBlKSkge1xuICAgIHJldHVybiBkaXJlY3RUeXBlIGFzIENvbnN0cnVjdG9yPE1vZGVsPjtcbiAgfVxuXG4gIGNvbnN0IGRlc2lnblR5cGVzID0gKChNZXRhZGF0YSBhcyBhbnkpLmdldFByb3BEZXNpZ25UeXBlcz8uKG1vZGVsLCBwcm9wZXJ0eSk/LmRlc2lnblR5cGVzIHx8XG4gICAgW10pIGFzIHVua25vd25bXTtcbiAgZm9yIChjb25zdCBjYW5kaWRhdGUgb2YgZGVzaWduVHlwZXMpIHtcbiAgICBpZiAodHlwZW9mIGNhbmRpZGF0ZSA9PT0gXCJmdW5jdGlvblwiICYmIE1vZGVsLmlzTW9kZWwoY2FuZGlkYXRlIGFzIG5ldmVyKSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZSBhcyBDb25zdHJ1Y3RvcjxNb2RlbD47XG4gICAgfVxuICB9XG5cbiAgY29uc3QgY3VzdG9tVHlwZXMgPSB2YWxpZGF0aW9uPy5bVmFsaWRhdGlvbktleXMuVFlQRV0/LmN1c3RvbVR5cGVzIHx8IFtdO1xuICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBjdXN0b21UeXBlcyBhcyB1bmtub3duW10pIHtcbiAgICBpZiAodHlwZW9mIGNhbmRpZGF0ZSA9PT0gXCJmdW5jdGlvblwiICYmIE1vZGVsLmlzTW9kZWwoY2FuZGlkYXRlIGFzIG5ldmVyKSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZSBhcyBDb25zdHJ1Y3RvcjxNb2RlbD47XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gcHJlZml4R3JhcGhQb3J0UGF0aChcbiAgcG9ydDogR3JhcGhQb3J0RGVmaW5pdGlvbixcbiAgcHJlZml4OiBzdHJpbmdcbik6IEdyYXBoUG9ydERlZmluaXRpb24ge1xuICBjb25zdCBwYXRoID0gW3ByZWZpeCwgcG9ydC5wYXRoID8/IHBvcnQucHJvcGVydHldLmZpbHRlcihCb29sZWFuKS5qb2luKFwiLlwiKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5wb3J0LFxuICAgIHBhdGgsXG4gICAgY2hpbGRyZW46IHBvcnQuY2hpbGRyZW4/Lm1hcCgoY2hpbGQpID0+IHByZWZpeEdyYXBoUG9ydFBhdGgoY2hpbGQsIHBhdGgpKSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdyYXBoTm9kZU1ldGFkYXRhT2Y8TSBleHRlbmRzIE1vZGVsPihcbiAgbW9kZWw6IEdyYXBoTW9kZWxMaWtlPE0+XG4pOiBHcmFwaE5vZGVNZXRhZGF0YSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZU1vZGVsKG1vZGVsKTtcbiAgcmV0dXJuIE1ldGFkYXRhLmdldChyZXNvbHZlZCwgR3JhcGhLZXlzLk5PREUpIGFzIEdyYXBoTm9kZU1ldGFkYXRhIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3JhcGhXb3JrZmxvd01ldGFkYXRhT2Y8TSBleHRlbmRzIE1vZGVsPihcbiAgbW9kZWw6IEdyYXBoTW9kZWxMaWtlPE0+XG4pOiBHcmFwaFdvcmtmbG93TWV0YWRhdGEgfCB1bmRlZmluZWQge1xuICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVNb2RlbChtb2RlbCk7XG4gIHJldHVybiBNZXRhZGF0YS5nZXQocmVzb2x2ZWQsIEdyYXBoS2V5cy5HUkFQSCkgYXMgR3JhcGhXb3JrZmxvd01ldGFkYXRhIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3JhcGhQb3J0TWV0YWRhdGFPZjxNIGV4dGVuZHMgTW9kZWw+KFxuICBtb2RlbDogR3JhcGhNb2RlbExpa2U8TT4sXG4gIHByb3BlcnR5OiBrZXlvZiBNIHwgc3RyaW5nXG4pOiBHcmFwaFBvcnRNZXRhZGF0YSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZU1vZGVsKG1vZGVsKTtcbiAgcmV0dXJuIE1ldGFkYXRhLmdldChyZXNvbHZlZCwgTWV0YWRhdGEua2V5KEdyYXBoS2V5cy5QT1JULCBTdHJpbmcocHJvcGVydHkpKSkgYXNcbiAgICB8IEdyYXBoUG9ydE1ldGFkYXRhXG4gICAgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBncmFwaFBvcnREZWZpbml0aW9uT2Y8TSBleHRlbmRzIE1vZGVsPihcbiAgbW9kZWw6IEdyYXBoTW9kZWxMaWtlPE0+LFxuICBwcm9wZXJ0eToga2V5b2YgTSB8IHN0cmluZ1xuKTogR3JhcGhQb3J0RGVmaW5pdGlvbiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBncmFwaFBvcnREZWZpbml0aW9uT2ZJbnRlcm5hbChyZXNvbHZlTW9kZWwobW9kZWwpLCBTdHJpbmcocHJvcGVydHkpKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmbGF0dGVuZWQgcG9ydHMgb2YgYSBTY2hlbWEtdHlwZWQgYEBpbnB1dGAgLyBgQG91dHB1dGAgcHJvcGVydHlcbiAqIChhIFwiU2NoZW1hIHBvcnQgZ3JvdXBcIikuIFRoZSBTY2hlbWEncyBvd24gYEBpbnB1dGAgLyBgQG91dHB1dGAgcHJvcGVydGllc1xuICogd2hvc2UgZGlyZWN0aW9uIG1hdGNoZXMgYGRpcmVjdGlvbmAgYXJlIHNwbGljZWQgaW50byB0aGUgcmVzdWx0IFVOUFJFRklYRURcbiAqIChubyBgPHNjaGVtYVByb3A+LmAgcHJlZml4KS4gVGhlIGNhcnJpZXIgcHJvcGVydHkgaXRzZWxmIGlzIG5vdCBhIHBvcnQuXG4gKlxuICogUmV0dXJucyBgdW5kZWZpbmVkYCB3aGVuIHRoZSBwcm9wZXJ0eSBpcyBub3QgYSBTY2hlbWEgZ3JvdXAgKG5vdFxuICogYGdyYXBoLnNjaGVtYWAsIG9yIG5vdCBTY2hlbWEtdHlwZWQpLCBzbyB0aGUgY2FsbGVyIGZhbGxzIGJhY2sgdG8gdGhlIGxlZ2FjeVxuICogc2luZ2xlLXBvcnQgLyBjb21wb3NpdGUgZXhwYW5zaW9uIHBhdGguXG4gKi9cbmZ1bmN0aW9uIHNjaGVtYUdyb3VwUG9ydHMoXG4gIHJlc29sdmVkOiBDb25zdHJ1Y3RvcjxNb2RlbD4sXG4gIHByb3BlcnR5S2V5OiBzdHJpbmcsXG4gIGRpcmVjdGlvbjogUG9ydERpcmVjdGlvbixcbiAgdmlzaXRlZDogU2V0PENvbnN0cnVjdG9yPE1vZGVsPj4gPSBuZXcgU2V0KClcbik6IEdyYXBoUG9ydERlZmluaXRpb25bXSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGdyYXBoID0gZ3JhcGhQb3J0TWV0YWRhdGFPZihyZXNvbHZlZCwgcHJvcGVydHlLZXkpO1xuICBpZiAoIWdyYXBoPy5zY2hlbWEpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IHZhbGlkYXRpb24gPSAoTWV0YWRhdGEgYXMgYW55KS52YWxpZGF0aW9uRm9yKHJlc29sdmVkLCBwcm9wZXJ0eUtleSkgYXNcbiAgICB8IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgICB8IHVuZGVmaW5lZDtcbiAgY29uc3QgbmVzdGVkTW9kZWwgPSByZXNvbHZlTmVzdGVkTW9kZWxDb25zdHJ1Y3RvcihyZXNvbHZlZCwgcHJvcGVydHlLZXksIHZhbGlkYXRpb24pO1xuICBpZiAoIW5lc3RlZE1vZGVsKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAodmlzaXRlZC5oYXMobmVzdGVkTW9kZWwpKSByZXR1cm4gW107IC8vIGN5Y2xlIGd1YXJkIOKAlCBzdG9wIHJlY3Vyc2luZ1xuICBjb25zdCBuZXh0VmlzaXRlZCA9IG5ldyBTZXQodmlzaXRlZCk7XG4gIG5leHRWaXNpdGVkLmFkZChyZXNvbHZlZCk7XG4gIG5leHRWaXNpdGVkLmFkZChuZXN0ZWRNb2RlbCk7XG4gIGNvbnN0IGNoaWxkUG9ydHMgPSBncmFwaFBvcnRzT2ZJbnRlcm5hbChuZXN0ZWRNb2RlbCwgbmV4dFZpc2l0ZWQpO1xuICByZXR1cm4gY2hpbGRQb3J0cy5maWx0ZXIoKGNoaWxkKSA9PiBjaGlsZC5kaXJlY3Rpb24gPT09IGRpcmVjdGlvbik7XG59XG5cbmZ1bmN0aW9uIGdyYXBoUG9ydERlZmluaXRpb25PZkludGVybmFsKFxuICByZXNvbHZlZDogQ29uc3RydWN0b3I8TW9kZWw+LFxuICBwcm9wZXJ0eUtleTogc3RyaW5nLFxuICB2aXNpdGVkOiBTZXQ8Q29uc3RydWN0b3I8TW9kZWw+PiA9IG5ldyBTZXQoKVxuKTogR3JhcGhQb3J0RGVmaW5pdGlvbiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGdyYXBoID0gZ3JhcGhQb3J0TWV0YWRhdGFPZihyZXNvbHZlZCwgcHJvcGVydHlLZXkpO1xuICBpZiAoIWdyYXBoKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIC8vIFNjaGVtYSBwb3J0IGdyb3VwIChAaW5wdXQgLyBAb3V0cHV0IG9uIGEgU2NoZW1hLXR5cGVkIHByb3BlcnR5KTogdGhlXG4gIC8vIGNhcnJpZXIgaXMgbm90IGEgcG9ydCDigJQgaXRzIFNjaGVtYSdzIG1hdGNoaW5nLWRpcmVjdGlvbiBwb3J0cyBhcmUgc3BsaWNlZFxuICAvLyBpbnRvIHRoZSBwYXJlbnQgYnkgZ3JhcGhQb3J0c09mSW50ZXJuYWwuIFRoZSBzaW5ndWxhciByZWFkZXIgcmV0dXJuc1xuICAvLyB1bmRlZmluZWQgZm9yIHRoZSBjYXJyaWVyLlxuICBjb25zdCB2YWxpZGF0aW9uID0gKE1ldGFkYXRhIGFzIGFueSkudmFsaWRhdGlvbkZvcihyZXNvbHZlZCwgcHJvcGVydHlLZXkpIGFzXG4gICAgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICAgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IG5lc3RlZE1vZGVsID0gcmVzb2x2ZU5lc3RlZE1vZGVsQ29uc3RydWN0b3IocmVzb2x2ZWQsIHByb3BlcnR5S2V5LCB2YWxpZGF0aW9uKTtcbiAgaWYgKGdyYXBoLnNjaGVtYSAmJiBuZXN0ZWRNb2RlbCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCBlbGVtZW50ID0gKChNb2RlbCBhcyBhbnkpLnVpRWxlbWVudE9mKHJlc29sdmVkLCBwcm9wZXJ0eUtleSkgfHxcbiAgICB1bmRlZmluZWQpIGFzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQ7XG4gIGNvbnN0IHVpUHJvcCA9IChNb2RlbCBhcyBhbnkpLnVpRGVjb3JhdGlvbk9mKFxuICAgIHJlc29sdmVkLFxuICAgIHByb3BlcnR5S2V5LFxuICAgIFVJS2V5cy5QUk9QXG4gICkgYXMgUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZDtcbiAgY29uc3QgZGVzaWduVHlwZSA9IE1ldGFkYXRhLnR5cGUocmVzb2x2ZWQsIHByb3BlcnR5S2V5KTtcbiAgY29uc3QgdHlwZU5hbWUgPSBhc1N0cmluZyhcbiAgICB2YWxpZGF0aW9uPy5bVmFsaWRhdGlvbktleXMuVFlQRV0/LmN1c3RvbVR5cGVzPy5bMF0/Lm5hbWUgPz9cbiAgICAgIGVsZW1lbnQ/LnByb3BzPy50eXBlID8/XG4gICAgICB1aVByb3A/LnR5cGUgPz9cbiAgICAgIGRlc2lnblR5cGU/Lm5hbWVcbiAgKTtcbiAgY29uc3Qgc2hvdWxkRXhwYW5kID0gISFncmFwaC5leHBhbmQgfHwgKCEhbmVzdGVkTW9kZWwgJiYgIXZpc2l0ZWQuaGFzKG5lc3RlZE1vZGVsKSk7XG4gIGNvbnN0IGNoaWxkcmVuID1cbiAgICBzaG91bGRFeHBhbmQgJiYgbmVzdGVkTW9kZWxcbiAgICAgID8gKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBuZXh0VmlzaXRlZCA9IG5ldyBTZXQodmlzaXRlZCk7XG4gICAgICAgICAgbmV4dFZpc2l0ZWQuYWRkKHJlc29sdmVkKTtcbiAgICAgICAgICBuZXh0VmlzaXRlZC5hZGQobmVzdGVkTW9kZWwpO1xuICAgICAgICAgIHJldHVybiBncmFwaFBvcnRzT2ZJbnRlcm5hbChuZXN0ZWRNb2RlbCwgbmV4dFZpc2l0ZWQpLm1hcCgoY2hpbGQpID0+XG4gICAgICAgICAgICBwcmVmaXhHcmFwaFBvcnRQYXRoKGNoaWxkLCBwcm9wZXJ0eUtleSlcbiAgICAgICAgICApO1xuICAgICAgICB9KSgpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICByZXR1cm4ge1xuICAgIHByb3BlcnR5OiBwcm9wZXJ0eUtleSxcbiAgICBwYXRoOiBwcm9wZXJ0eUtleSxcbiAgICBkaXJlY3Rpb246IGdyYXBoLmRpcmVjdGlvbixcbiAgICBuYW1lOiBwcm9wZXJ0eUtleSxcbiAgICBsYWJlbDogcGlja0xhYmVsKGVsZW1lbnQsIHVpUHJvcCwgcHJvcGVydHlLZXkpLFxuICAgIHR5cGU6IHR5cGVOYW1lPy50b0xvd2VyQ2FzZSgpLFxuICAgIHJlcXVpcmVkOiAhIXZhbGlkYXRpb24/LltWYWxpZGF0aW9uS2V5cy5SRVFVSVJFRF0sXG4gICAgaGlkZGVuOiAhIShNb2RlbCBhcyBhbnkpLnVpSXNIaWRkZW4ocmVzb2x2ZWQsIHByb3BlcnR5S2V5KSxcbiAgICBkZXNpZ25UeXBlOiBkZXNpZ25UeXBlPy5uYW1lLFxuICAgIGVsZW1lbnQsXG4gICAgcHJvcDogdWlQcm9wLFxuICAgIHZhbGlkYXRpb24sXG4gICAgZ3JhcGgsXG4gICAgY29ubmVjdGlvblJ1bGVzOiBncmFwaC5jb25uZWN0aW9uUnVsZXMsXG4gICAgY29tcG9zaXRlOiAhIWNoaWxkcmVuPy5sZW5ndGgsXG4gICAgY2hpbGRyZW4sXG4gICAgbW9kZWw6IG5lc3RlZE1vZGVsPy5uYW1lLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3JhcGhQb3J0c09mPE0gZXh0ZW5kcyBNb2RlbD4oXG4gIG1vZGVsOiBHcmFwaE1vZGVsTGlrZTxNPlxuKTogR3JhcGhQb3J0RGVmaW5pdGlvbltdIHtcbiAgcmV0dXJuIGdyYXBoUG9ydHNPZkludGVybmFsKHJlc29sdmVNb2RlbChtb2RlbCkpO1xufVxuXG5mdW5jdGlvbiBncmFwaFBvcnRzT2ZJbnRlcm5hbChcbiAgcmVzb2x2ZWQ6IENvbnN0cnVjdG9yPE1vZGVsPixcbiAgdmlzaXRlZDogU2V0PENvbnN0cnVjdG9yPE1vZGVsPj4gPSBuZXcgU2V0KClcbik6IEdyYXBoUG9ydERlZmluaXRpb25bXSB7XG4gIGNvbnN0IHByb3BlcnRpZXMgPSBNZXRhZGF0YS5wcm9wZXJ0aWVzKHJlc29sdmVkKSB8fCBbXTtcbiAgY29uc3QgcmVzdWx0OiBHcmFwaFBvcnREZWZpbml0aW9uW10gPSBbXTtcbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgY29uc3Qga2V5ID0gU3RyaW5nKHByb3BlcnR5KTtcbiAgICBjb25zdCBncmFwaCA9IGdyYXBoUG9ydE1ldGFkYXRhT2YocmVzb2x2ZWQsIGtleSk7XG4gICAgLy8gU2NoZW1hIHBvcnQgZ3JvdXA6IHNwbGljZSB0aGUgU2NoZW1hJ3MgbWF0Y2hpbmctZGlyZWN0aW9uIHBvcnRzXG4gICAgLy8gKHVucHJlZml4ZWQpIGluc3RlYWQgb2YgZW1pdHRpbmcgdGhlIGNhcnJpZXIuXG4gICAgaWYgKGdyYXBoPy5zY2hlbWEpIHtcbiAgICAgIGNvbnN0IGdyb3VwUG9ydHMgPSBzY2hlbWFHcm91cFBvcnRzKHJlc29sdmVkLCBrZXksIGdyYXBoLmRpcmVjdGlvbiwgdmlzaXRlZCk7XG4gICAgICBpZiAoZ3JvdXBQb3J0cykge1xuICAgICAgICByZXN1bHQucHVzaCguLi5ncm91cFBvcnRzKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHBvcnQgPSBncmFwaFBvcnREZWZpbml0aW9uT2ZJbnRlcm5hbChyZXNvbHZlZCwga2V5LCB2aXNpdGVkKTtcbiAgICBpZiAocG9ydCkgcmVzdWx0LnB1c2gocG9ydCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdyYXBoTGVhZlBvcnRzT2YocG9ydHM6IEdyYXBoUG9ydERlZmluaXRpb25bXSk6IEdyYXBoUG9ydERlZmluaXRpb25bXSB7XG4gIHJldHVybiBwb3J0cy5mbGF0TWFwKChwb3J0KSA9PlxuICAgIHBvcnQuY2hpbGRyZW4gJiYgcG9ydC5jaGlsZHJlbi5sZW5ndGggPyBncmFwaExlYWZQb3J0c09mKHBvcnQuY2hpbGRyZW4pIDogW3BvcnRdXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBncmFwaFdvcmtmbG93SW5wdXRMZWFmUG9ydHNPZjxNIGV4dGVuZHMgTW9kZWw+KFxuICBtb2RlbDogR3JhcGhNb2RlbExpa2U8TT5cbik6IEdyYXBoUG9ydERlZmluaXRpb25bXSB7XG4gIHJldHVybiBncmFwaExlYWZQb3J0c09mKGdyYXBoV29ya2Zsb3dEZWZpbml0aW9uT2YobW9kZWwpLmlucHV0cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBncmFwaFdvcmtmbG93T3V0cHV0TGVhZlBvcnRzT2Y8TSBleHRlbmRzIE1vZGVsPihcbiAgbW9kZWw6IEdyYXBoTW9kZWxMaWtlPE0+XG4pOiBHcmFwaFBvcnREZWZpbml0aW9uW10ge1xuICByZXR1cm4gZ3JhcGhMZWFmUG9ydHNPZihncmFwaFdvcmtmbG93RGVmaW5pdGlvbk9mKG1vZGVsKS5vdXRwdXRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdyYXBoRGVmaW5pdGlvbk9mPE0gZXh0ZW5kcyBNb2RlbD4oXG4gIG1vZGVsOiBHcmFwaE1vZGVsTGlrZTxNPlxuKTogR3JhcGhOb2RlRGVmaW5pdGlvbiB7XG4gIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZU1vZGVsKG1vZGVsKTtcbiAgY29uc3QgdWkgPSBNb2RlbC51aU1vZGVsT2YocmVzb2x2ZWQpO1xuICBjb25zdCBncmFwaCA9IGdyYXBoTm9kZU1ldGFkYXRhT2YocmVzb2x2ZWQpIHx8IHt9O1xuICBjb25zdCB0YWcgPSB1aT8udGFnIHx8IHJlc29sdmVkLm5hbWU7XG4gIGNvbnN0IHBvcnRzID0gZ3JhcGhQb3J0c09mKHJlc29sdmVkKTtcbiAgY29uc3QgcG9ydEdyb3VwcyA9IHJlc29sdmVQb3J0R3JvdXBzKHJlc29sdmVkLCBncmFwaCk7XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiByZXNvbHZlZC5uYW1lLFxuICAgIHRhZyxcbiAgICBraW5kOiBncmFwaC5raW5kIHx8IHRhZyxcbiAgICBjYXRlZ29yeTogZ3JhcGguY2F0ZWdvcnksXG4gICAgY29sb3I6IGdyYXBoLmNvbG9yLFxuICAgIGVmZmVjdGl2ZUNvbG9yOiByZXNvbHZlRWZmZWN0aXZlQ29sb3IoZ3JhcGguY29sb3IsIGdyYXBoLmNhdGVnb3J5KSxcbiAgICBncm91cDogZ3JhcGguZ3JvdXAsXG4gICAgaGVpZ2h0OiBncmFwaC5oZWlnaHQsXG4gICAgaWNvbjogZ3JhcGguaWNvbixcbiAgICBlZmZlY3RpdmVJY29uOiByZXNvbHZlRWZmZWN0aXZlSWNvbihncmFwaC5pY29uLCBncmFwaC5jYXRlZ29yeSksXG4gICAgbGFiZWxzOiBncmFwaC5sYWJlbHMgfHwgW10sXG4gICAgbWF4Q2hpbGRyZW46IGdyYXBoLm1heENoaWxkcmVuLFxuICAgIG1pbldpZHRoOiBncmFwaC5taW5XaWR0aCxcbiAgICB3aWR0aDogZ3JhcGgud2lkdGgsXG4gICAgcHJvcHM6IHVpPy5wcm9wcyxcbiAgICB1aSxcbiAgICBncmFwaCxcbiAgICBwb3J0cyxcbiAgICBwb3J0R3JvdXBzLFxuICB9O1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgZWZmZWN0aXZlIGBwb3J0R3JvdXBzYCBsaXN0IGZvciBhIG5vZGU6IHN0YXJ0cyBmcm9tIHRoZSBkZWNsYXJlZFxuICogYEdyYXBoTm9kZU1ldGFkYXRhLnBvcnRHcm91cHNgIGFuZCBlbnN1cmVzIGV2ZXJ5IFNjaGVtYS10eXBlZCBgQGlucHV0YCAvXG4gKiBgQG91dHB1dGAgcHJvcGVydHkgbm90IGV4cGxpY2l0bHkgbGlzdGVkIGdldHMgYSBkZWZhdWx0XG4gKiBgeyBwcm9wZXJ0eSwgdG9nZ2xlOiBcImFsbFwiIH1gIGVudHJ5LiBOb24tU2NoZW1hLXR5cGVkIGBAaW5wdXRgIC8gYEBvdXRwdXRgXG4gKiBwcm9wZXJ0aWVzIGFyZSBub3QgZ3JvdXBzIGFuZCBhcmUgaWdub3JlZC5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZVBvcnRHcm91cHMoXG4gIHJlc29sdmVkOiBDb25zdHJ1Y3RvcjxNb2RlbD4sXG4gIGdyYXBoOiBHcmFwaE5vZGVNZXRhZGF0YVxuKTogR3JhcGhQb3J0R3JvdXBNZXRhZGF0YVtdIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZGVjbGFyZWQgPSBncmFwaC5wb3J0R3JvdXBzIHx8IFtdO1xuICBjb25zdCBkZWNsYXJlZEJ5UHJvcGVydHkgPSBuZXcgTWFwKGRlY2xhcmVkLm1hcCgoZykgPT4gW2cucHJvcGVydHksIGddKSk7XG4gIGNvbnN0IGdyb3VwczogR3JhcGhQb3J0R3JvdXBNZXRhZGF0YVtdID0gW107XG4gIGNvbnN0IHByb3BlcnRpZXMgPSBNZXRhZGF0YS5wcm9wZXJ0aWVzKHJlc29sdmVkKSB8fCBbXTtcbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgY29uc3Qga2V5ID0gU3RyaW5nKHByb3BlcnR5KTtcbiAgICBjb25zdCBwb3J0TWV0YSA9IGdyYXBoUG9ydE1ldGFkYXRhT2YocmVzb2x2ZWQsIGtleSk7XG4gICAgaWYgKCFwb3J0TWV0YT8uc2NoZW1hKSBjb250aW51ZTtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gKE1ldGFkYXRhIGFzIGFueSkudmFsaWRhdGlvbkZvcihyZXNvbHZlZCwga2V5KSBhc1xuICAgICAgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICAgICB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBuZXN0ZWRNb2RlbCA9IHJlc29sdmVOZXN0ZWRNb2RlbENvbnN0cnVjdG9yKHJlc29sdmVkLCBrZXksIHZhbGlkYXRpb24pO1xuICAgIGlmICghbmVzdGVkTW9kZWwpIGNvbnRpbnVlOyAvLyBub3QgU2NoZW1hLXR5cGVkIOKAlCBub3QgYSBncm91cFxuICAgIGNvbnN0IGRlY2xhcmVkR3JvdXAgPSBkZWNsYXJlZEJ5UHJvcGVydHkuZ2V0KGtleSk7XG4gICAgZ3JvdXBzLnB1c2goXG4gICAgICBkZWNsYXJlZEdyb3VwXG4gICAgICAgID8geyAuLi5kZWNsYXJlZEdyb3VwLCB0b2dnbGU6IGRlY2xhcmVkR3JvdXAudG9nZ2xlID8/IFwiYWxsXCIgfVxuICAgICAgICA6IHsgcHJvcGVydHk6IGtleSwgdG9nZ2xlOiBcImFsbFwiIGFzIGNvbnN0IH1cbiAgICApO1xuICB9XG4gIC8vIGFsc28ga2VlcCBkZWNsYXJlZCBncm91cHMgdGhhdCBkb24ndCBjb3JyZXNwb25kIHRvIGEgU2NoZW1hIHByb3BlcnR5XG4gIC8vIChkZWZlbnNpdmUg4oCUIGxldHMgY2FsbGVycyBjYXJyeSBsYWJlbHMgZm9yIGZ1dHVyZSBncm91cHMpXG4gIGZvciAoY29uc3QgZyBvZiBkZWNsYXJlZCkge1xuICAgIGlmICghZ3JvdXBzLnNvbWUoKHgpID0+IHgucHJvcGVydHkgPT09IGcucHJvcGVydHkpKSBncm91cHMucHVzaChnKTtcbiAgfVxuICByZXR1cm4gZ3JvdXBzLmxlbmd0aCA/IGdyb3VwcyA6IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdyYXBoV29ya2Zsb3dEZWZpbml0aW9uT2Y8TSBleHRlbmRzIE1vZGVsPihcbiAgbW9kZWw6IEdyYXBoTW9kZWxMaWtlPE0+XG4pOiBHcmFwaFdvcmtmbG93RGVmaW5pdGlvbiB7XG4gIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZU1vZGVsKG1vZGVsKTtcbiAgY29uc3Qgd29ya2Zsb3cgPSBncmFwaFdvcmtmbG93TWV0YWRhdGFPZihyZXNvbHZlZCkgfHwge307XG4gIGNvbnN0IG5vZGUgPSBncmFwaERlZmluaXRpb25PZihyZXNvbHZlZCk7XG4gIGNvbnN0IGlucHV0cyA9XG4gICAgd29ya2Zsb3cuaW5wdXRzIHx8XG4gICAgbm9kZS5wb3J0cy5maWx0ZXIoKHBvcnQpID0+IHBvcnQuZGlyZWN0aW9uID09PSBQb3J0RGlyZWN0aW9uLklOUFVUKTtcbiAgY29uc3Qgb3V0cHV0cyA9XG4gICAgd29ya2Zsb3cub3V0cHV0cyB8fFxuICAgIG5vZGUucG9ydHMuZmlsdGVyKChwb3J0KSA9PiBwb3J0LmRpcmVjdGlvbiA9PT0gUG9ydERpcmVjdGlvbi5PVVRQVVQpO1xuICBjb25zdCBjb25uZWN0aW9ucyA9XG4gICAgd29ya2Zsb3cuY29ubmVjdGlvbnMgfHxcbiAgICBub2RlLnBvcnRzLmZpbHRlcigocG9ydCkgPT4gcG9ydC5kaXJlY3Rpb24gPT09IFBvcnREaXJlY3Rpb24uQ09OTkVDVElPTik7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5ub2RlLFxuICAgIGtpbmQ6IHdvcmtmbG93LmtpbmQgfHwgbm9kZS5raW5kLFxuICAgIGNhdGVnb3J5OiB3b3JrZmxvdy5jYXRlZ29yeSA/PyBub2RlLmNhdGVnb3J5LFxuICAgIGNvbG9yOiB3b3JrZmxvdy5jb2xvciA/PyBub2RlLmNvbG9yLFxuICAgIGVmZmVjdGl2ZUNvbG9yOiByZXNvbHZlRWZmZWN0aXZlQ29sb3Iod29ya2Zsb3cuY29sb3IgPz8gbm9kZS5jb2xvciwgd29ya2Zsb3cuY2F0ZWdvcnkgPz8gbm9kZS5jYXRlZ29yeSksXG4gICAgZ3JvdXA6IHdvcmtmbG93Lmdyb3VwID8/IG5vZGUuZ3JvdXAsXG4gICAgaGVpZ2h0OiB3b3JrZmxvdy5oZWlnaHQgPz8gbm9kZS5oZWlnaHQsXG4gICAgaWNvbjogd29ya2Zsb3cuaWNvbiA/PyBub2RlLmljb24sXG4gICAgZWZmZWN0aXZlSWNvbjogcmVzb2x2ZUVmZmVjdGl2ZUljb24od29ya2Zsb3cuaWNvbiA/PyBub2RlLmljb24sIHdvcmtmbG93LmNhdGVnb3J5ID8/IG5vZGUuY2F0ZWdvcnkpLFxuICAgIGxhYmVsczogd29ya2Zsb3cubGFiZWxzIHx8IG5vZGUubGFiZWxzLFxuICAgIG1heENoaWxkcmVuOiB3b3JrZmxvdy5tYXhDaGlsZHJlbiA/PyBub2RlLm1heENoaWxkcmVuLFxuICAgIG1pbldpZHRoOiB3b3JrZmxvdy5taW5XaWR0aCA/PyBub2RlLm1pbldpZHRoLFxuICAgIHdpZHRoOiB3b3JrZmxvdy53aWR0aCA/PyBub2RlLndpZHRoLFxuICAgIGlucHV0cyxcbiAgICBvdXRwdXRzLFxuICAgIGNvbm5lY3Rpb25zLFxuICAgIG5vZGVzOiB3b3JrZmxvdy5ub2RlcyB8fCBbXSxcbiAgICByZWxhdGlvbnM6IHdvcmtmbG93LnJlbGF0aW9ucyB8fCBbXSxcbiAgICB3b3JrZmxvdyxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -56,4 +56,4 @@ export function resetGraphRegistries() {
|
|
|
56
56
|
NODE_REGISTRY.clear();
|
|
57
57
|
WORKFLOW_REGISTRY.clear();
|
|
58
58
|
}
|
|
59
|
-
//# sourceMappingURL=
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZ3JhcGgvcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7OztHQVlHO0FBSUg7O0dBRUc7QUFDSCxNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBZSxDQUFDO0FBRTdDOztHQUVHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLEdBQUcsRUFBZSxDQUFDO0FBRWpEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLElBQWlCO0lBQzVDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsSUFBaUI7SUFDaEQsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsVUFBVTtJQUN4QixPQUFPLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQztBQUM1QixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGNBQWM7SUFDNUIsT0FBTyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsQ0FBQztBQUNoQyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CO0lBQ2xDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QixpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUM1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIHVpLWRlY29yYXRvcnMvZ3JhcGgvcmVnaXN0cnlcbiAqIEBzdW1tYXJ5IE5vZGUgYW5kIHdvcmtmbG93IGNsYXNzIHJlZ2lzdHJpZXMuXG4gKiBAZGVzY3JpcHRpb24gTW9kdWxlLWxldmVsIHJlZ2lzdHJpZXMgdGhhdCB0cmFjayBldmVyeSBgQG5vZGVgLWRlY29yYXRlZCBhbmRcbiAqIGBAZ3JhcGhgLWRlY29yYXRlZCBjb25zdHJ1Y3Rvci4gVGhlIGBAbm9kZWAgYW5kIGBAZ3JhcGhgIGRlY29yYXRvcnMgY2FsbFxuICoge0BsaW5rIHJlZ2lzdGVyTm9kZX0gLyB7QGxpbmsgcmVnaXN0ZXJXb3JrZmxvd30gYXMgYSBzaWRlLWVmZmVjdDsgY29uc3VtZXJzXG4gKiBkaXNjb3ZlciBhbGwgZGVjb3JhdGVkIGNsYXNzZXMgdmlhIHtAbGluayBncmFwaE5vZGVzfSAvIHtAbGluayBncmFwaFdvcmtmbG93c31cbiAqIG9yIHRoZSBgTWV0YWRhdGEubm9kZXMoKWAgLyBgTWV0YWRhdGEud29ya2Zsb3dzKClgIGFjY2Vzc29ycy5cbiAqXG4gKiBUaGlzIGZvbGxvd3MgdGhlIHNhbWUgcGF0dGVybiBhcyBgSW5qZWN0YWJsZXNgIChgaW5qZWN0YWJsZS1kZWNvcmF0b3JzYClcbiAqIHdoaWNoIG1haW50YWlucyBpdHMgb3duIGBJbmplY3RhYmxlc1JlZ2lzdHJ5YCByYXRoZXIgdGhhbiB1c2luZyB0aGUgcHJpdmF0ZVxuICogYE1ldGFkYXRhLmlubmVyR2V0YC9gaW5uZXJTZXRgIGhlbHBlcnMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuXG4vKipcbiAqIEludGVybmFsIHJlZ2lzdHJ5IG9mIGFsbCBgQG5vZGVgLWRlY29yYXRlZCBjb25zdHJ1Y3RvcnMuXG4gKi9cbmNvbnN0IE5PREVfUkVHSVNUUlkgPSBuZXcgU2V0PENvbnN0cnVjdG9yPigpO1xuXG4vKipcbiAqIEludGVybmFsIHJlZ2lzdHJ5IG9mIGFsbCBgQGdyYXBoYC1kZWNvcmF0ZWQgY29uc3RydWN0b3JzLlxuICovXG5jb25zdCBXT1JLRkxPV19SRUdJU1RSWSA9IG5ldyBTZXQ8Q29uc3RydWN0b3I+KCk7XG5cbi8qKlxuICogQXBwZW5kcyBhIGNvbnN0cnVjdG9yIHRvIHRoZSBub2RlIHJlZ2lzdHJ5LiBDYWxsZWQgYnkgdGhlIGBAbm9kZWAgZGVjb3JhdG9yLlxuICogSWRlbXBvdGVudCDigJQgcmUtZGVjb3JhdGluZyB0aGUgc2FtZSBjbGFzcyBkb2VzIG5vdCBkdXBsaWNhdGUgdGhlIGVudHJ5LlxuICogQHBhcmFtIGN0b3IgVGhlIGBAbm9kZWAtZGVjb3JhdGVkIGNvbnN0cnVjdG9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJOb2RlKGN0b3I6IENvbnN0cnVjdG9yKTogdm9pZCB7XG4gIE5PREVfUkVHSVNUUlkuYWRkKGN0b3IpO1xufVxuXG4vKipcbiAqIEFwcGVuZHMgYSBjb25zdHJ1Y3RvciB0byB0aGUgd29ya2Zsb3cgcmVnaXN0cnkuIENhbGxlZCBieSB0aGUgYEBncmFwaGBcbiAqIGRlY29yYXRvci4gSWRlbXBvdGVudC5cbiAqIEBwYXJhbSBjdG9yIFRoZSBgQGdyYXBoYC1kZWNvcmF0ZWQgY29uc3RydWN0b3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlcldvcmtmbG93KGN0b3I6IENvbnN0cnVjdG9yKTogdm9pZCB7XG4gIFdPUktGTE9XX1JFR0lTVFJZLmFkZChjdG9yKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFsbCBgQG5vZGVgLWRlY29yYXRlZCBjb25zdHJ1Y3RvcnMuXG4gKiBAcmV0dXJucyBBIGZyZXNoIGFycmF5IG9mIGNvbnN0cnVjdG9ycyAobXV0YWJsZTsgZG9lcyBub3QgZXhwb3NlIHRoZSBpbnRlcm5hbCBzZXQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3JhcGhOb2RlcygpOiBDb25zdHJ1Y3RvcltdIHtcbiAgcmV0dXJuIFsuLi5OT0RFX1JFR0lTVFJZXTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFsbCBgQGdyYXBoYC1kZWNvcmF0ZWQgY29uc3RydWN0b3JzLlxuICogQHJldHVybnMgQSBmcmVzaCBhcnJheSBvZiBjb25zdHJ1Y3RvcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBncmFwaFdvcmtmbG93cygpOiBDb25zdHJ1Y3RvcltdIHtcbiAgcmV0dXJuIFsuLi5XT1JLRkxPV19SRUdJU1RSWV07XG59XG5cbi8qKlxuICogQ2xlYXJzIGJvdGggcmVnaXN0cmllcy4gSW50ZW5kZWQgZm9yIHRlc3RzIG9ubHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNldEdyYXBoUmVnaXN0cmllcygpOiB2b2lkIHtcbiAgTk9ERV9SRUdJU1RSWS5jbGVhcigpO1xuICBXT1JLRkxPV19SRUdJU1RSWS5jbGVhcigpO1xufVxuIl19
|
|
@@ -677,4 +677,4 @@ export function graphWorkflowSnapshotLikeToCanonical(value) {
|
|
|
677
677
|
}
|
|
678
678
|
return { document: value };
|
|
679
679
|
}
|
|
680
|
-
//# sourceMappingURL=snapshot.js.map
|
|
680
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hcHNob3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZ3JhcGgvc25hcHNob3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHlCQUF5QixFQUFFLG9CQUFpQjtBQWF2RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUscUNBQWtDO0FBRWpFLE9BQU8sRUFDTCw4QkFBOEIsR0FFL0IsZ0RBQTZDO0FBRTlDLE1BQU0sNkJBQTZCLEdBQUcsQ0FBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBRXpFLE1BQU0sMkJBQTJCLEdBQUc7SUFDbEMsTUFBTTtJQUNOLFlBQVk7SUFDWixhQUFhO0lBQ2IsYUFBYTtJQUNiLFlBQVk7SUFDWixVQUFVO0NBQ1gsQ0FBQztBQUlGLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLENBQVUsQ0FBQztBQXFIMUQsU0FBUyxhQUFhLENBQUMsS0FBYztJQUNuQyxPQUFPLENBQ0wsQ0FBQyxDQUFDLEtBQUs7UUFDUCxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQ3pCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDckIsQ0FBQyxDQUFDLEtBQUssWUFBWSxJQUFJLENBQUMsQ0FDekIsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBSSxLQUFRO0lBQzdCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFNLENBQUM7SUFDdEQsQ0FBQztJQUVELElBQUksS0FBSyxZQUFZLElBQUksRUFBRSxDQUFDO1FBQzFCLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFNLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUks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SUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDLElBQUk7UUFDdkMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRLElBQUksVUFBVSxDQUFDLFFBQVE7UUFDbkQsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLElBQUksVUFBVSxDQUFDLEtBQUs7UUFDMUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLElBQUksVUFBVSxDQUFDLEtBQUs7UUFDMUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxNQUFNLElBQUksVUFBVSxDQUFDLE1BQU07UUFDN0MsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDLElBQUk7UUFDdkMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxJQUFJLFVBQVUsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQy9ELFdBQVcsRUFBRSxTQUFTLENBQUMsV0FBVyxJQUFJLFVBQVUsQ0FBQyxXQUFXO1FBQzVELFFBQVEsRUFBRSxTQUFTLENBQUMsUUFBUSxJQUFJLFVBQVUsQ0FBQyxRQUFRO1FBQ25ELEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxJQUFJLFVBQVUsQ0FBQyxLQUFLO1FBQzFDLFFBQVEsRUFBRSxVQUFVLENBQ2xCLFNBQVMsQ0FBQyxRQUFRO1lBQ2hCLENBQUMsVUFBVSxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUN6RTtRQUNELE1BQU0sRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBSSxVQUFVLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUMvRCxPQUFPLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxPQUFPLElBQUksVUFBVSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDbEUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLFVBQVUsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzVE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QUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ3BFLENBQVU7UUFDWCxRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFVO0tBQ3ZELENBQUM7SUFDRixPQUFPO1FBQ0wsT0FBTyxFQUFFLCtCQUErQjtRQUN4QyxVQUFVO1FBQ1YsS0FBSztLQUNOLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxzQkFBc0IsQ0FBQyxJQUErQjtJQUM3RCxPQUFPO1FBQ0wsUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFO1FBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztRQUNqQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7UUFDdkIsUUFBUSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBVTtLQUNqQixDQUFDO0FBQ3RDLENBQUM7QUFFRCw2RUFBNkU7QUFDN0UsTUFBTSxVQUFVLG9DQUFvQyxDQUNsRCxLQUF3RDtJQUV4RCxJQUFJLFVBQVUsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN4QixPQUFPLEtBQThCLENBQUM7SUFDeEMsQ0FBQztJQUNELElBQUksT0FBTyxJQUFJLEtBQUssSUFBSSxZQUFZLElBQUksS0FBSyxFQUFFLENBQUM7UUFDOUMsT0FBTywrQkFBK0IsQ0FBQyxLQUFvQyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUNELE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBOEIsRUFBRSxDQUFDO0FBQ3RELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQge1xuICBHcmFwaFBvcnREZWZpbml0aW9uLFxuICBHcmFwaFdvcmtmbG93RGVmaW5pdGlvbixcbiAgR3JhcGhXb3JrZmxvd01ldGFkYXRhLFxuICBHcmFwaFdvcmtmbG93Tm9kZU1ldGFkYXRhLFxuICBHcmFwaFdvcmtmbG93UmVsYXRpb25NZXRhZGF0YSxcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBncmFwaExlYWZQb3J0c09mLCBncmFwaFdvcmtmbG93RGVmaW5pdGlvbk9mIH0gZnJvbSBcIi4vcmVhZGVyXCI7XG5pbXBvcnQgdHlwZSB7XG4gIEdyYXBoV29ya2Zsb3dEb2N1bWVudCxcbiAgR3JhcGhXb3JrZmxvd1BvcnRJbnN0YW5jZSxcbn0gZnJvbSBcIi4vZG9jdW1lbnQvR3JhcGhXb3JrZmxvd0RvY3VtZW50XCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoTm9kZUluc3RhbmNlIH0gZnJvbSBcIi4vZG9jdW1lbnQvR3JhcGhOb2RlSW5zdGFuY2VcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhFZGdlSW5zdGFuY2UgfSBmcm9tIFwiLi9kb2N1bWVudC9HcmFwaEVkZ2VJbnN0YW5jZVwiO1xuaW1wb3J0IHR5cGUge1xuICBHcmFwaEVuZHBvaW50LFxuICBHcmFwaFdvcmtmbG93RW5kcG9pbnQsXG59IGZyb20gXCIuL2RvY3VtZW50L0dyYXBoRW5kcG9pbnRcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhJbnB1dEJpbmRpbmcgfSBmcm9tIFwiLi9kb2N1bWVudC9HcmFwaE5vZGVCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoSnNvblZhbHVlIH0gZnJvbSBcIi4vZG9jdW1lbnQvR3JhcGhKc29uVmFsdWVcIjtcbmltcG9ydCB7IGlzR3JhcGhKc29uU2FmZVZhbHVlIH0gZnJvbSBcIi4vZG9jdW1lbnQvR3JhcGhKc29uVmFsdWVcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhOb2RlVWlTdGF0ZSwgR3JhcGhXb3JrZmxvd1VpU3RhdGUgfSBmcm9tIFwiLi9kb2N1bWVudC9HcmFwaFdvcmtmbG93VWlTdGF0ZVwiO1xuaW1wb3J0IHtcbiAgZ3JhcGhWYWx1ZVNjaGVtYUZyb21WYWxpZGF0aW9uLFxuICB0eXBlIEdyYXBoVmFsaWRhdGlvblJlY29yZCxcbn0gZnJvbSBcIi4vY2F0YWxvZy9HcmFwaFZhbHVlU2NoZW1hRGVyaXZhdGlvblwiO1xuXG5jb25zdCBHUkFQSF9MRUdBQ1lfQk9VTkRBUllfQUxJQVNFUyA9IFtcIiR3b3JrZmxvd1wiLCBcIndvcmtmbG93XCIsIFwiZ3JhcGhcIl07XG5cbmNvbnN0IEdSQVBIX0NPTlNUUlVDVE9SX0RBVEFfS0VZUyA9IFtcbiAgXCJub2RlXCIsXG4gIFwibW9kZWxDbGFzc1wiLFxuICBcInNvdXJjZUNsYXNzXCIsXG4gIFwiY29uc3RydWN0b3JcIixcbiAgXCJkZWZpbml0aW9uXCIsXG4gIFwiZXhlY3V0b3JcIixcbl07XG5cbnR5cGUgR3JhcGhNb2RlbExpa2U8TSBleHRlbmRzIE1vZGVsID0gTW9kZWw+ID0gQ29uc3RydWN0b3I8TT4gfCBNO1xuXG5leHBvcnQgY29uc3QgR1JBUEhfV09SS0ZMT1dfU05BUFNIT1RfVkVSU0lPTiA9IDEgYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEdyYXBoV29ya2Zsb3dTbmFwc2hvdFJlZmVyZW5jZSA9IHtcbiAgaWQ/OiBzdHJpbmc7XG4gIGtpbmQ/OiBzdHJpbmc7XG4gIHRhZz86IHN0cmluZztcbiAgcGF0aD86IHN0cmluZztcbiAgcHJvcGVydHk/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBHcmFwaFdvcmtmbG93U25hcHNob3RQb3NpdGlvbiA9IHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBHcmFwaFdvcmtmbG93U25hcHNob3RTaXplID0ge1xuICB3aWR0aD86IG51bWJlcjtcbiAgaGVpZ2h0PzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgR3JhcGhXb3JrZmxvd1NuYXBzaG90UG9ydFN0YXRlID0ge1xuICBleHBhbmRlZD86IGJvb2xlYW47XG4gIHZhbHVlPzogdW5rbm93bjtcbiAgbW9kZT86IFwicG9ydFwiIHwgXCJ2YWx1ZVwiO1xuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufTtcblxuZXhwb3J0IHR5cGUgR3JhcGhXb3JrZmxvd1NuYXBzaG90VmFsdWUgPSB7XG4gIHBhdGg6IHN0cmluZztcbiAgdmFsdWU/OiB1bmtub3duO1xuICBsYWJlbD86IHN0cmluZztcbiAgdHlwZT86IHN0cmluZztcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICBtb2RlbD86IHN0cmluZztcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn07XG5cbmV4cG9ydCB0eXBlIEdyYXBoV29ya2Zsb3dTbmFwc2hvdE5vZGUgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHJlZj86IEdyYXBoV29ya2Zsb3dTbmFwc2hvdFJlZmVyZW5jZTtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIGtpbmQ/OiBzdHJpbmc7XG4gIHBvc2l0aW9uPzogR3JhcGhXb3JrZmxvd1NuYXBzaG90UG9zaXRpb247XG4gIHNpemU/OiBHcmFwaFdvcmtmbG93U25hcHNob3RTaXplO1xuICBleHBhbmRlZD86IGJvb2xlYW47XG4gIHBvcnRzPzogUmVjb3JkPHN0cmluZywgR3JhcGhXb3JrZmxvd1NuYXBzaG90UG9ydFN0YXRlPjtcbiAgZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufTtcblxuZXhwb3J0IHR5cGUgR3JhcGhXb3JrZmxvd1NuYXBzaG90RWRnZSA9IHtcbiAgaWQ6IHN0cmluZztcbiAgc291cmNlOiBzdHJpbmc7XG4gIHNvdXJjZVJlZj86IHN0cmluZztcbiAgc291cmNlUG9ydD86IHN0cmluZztcbiAgdGFyZ2V0OiBzdHJpbmc7XG4gIHRhcmdldFJlZj86IHN0cmluZztcbiAgdGFyZ2V0UG9ydD86IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59O1xuXG5leHBvcnQgdHlwZSBHcmFwaFdvcmtmbG93U25hcHNob3REZWZpbml0aW9uID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRhZzogc3RyaW5nO1xuICBraW5kOiBzdHJpbmc7XG4gIGNhdGVnb3J5Pzogc3RyaW5nO1xuICBjb2xvcj86IHN0cmluZztcbiAgZ3JvdXA/OiBzdHJpbmc7XG4gIGhlaWdodD86IG51bWJlcjtcbiAgaWNvbj86IHN0cmluZztcbiAgbGFiZWxzOiBzdHJpbmdbXTtcbiAgbWF4Q2hpbGRyZW4/OiBudW1iZXI7XG4gIG1pbldpZHRoPzogbnVtYmVyO1xuICB3aWR0aD86IG51bWJlcjtcbiAgbWV0YWRhdGE/OiBHcmFwaFdvcmtmbG93TWV0YWRhdGE7XG4gIGlucHV0czogR3JhcGhQb3J0RGVmaW5pdGlvbltdO1xuICBvdXRwdXRzOiBHcmFwaFBvcnREZWZpbml0aW9uW107XG4gIG5vZGVzOiBHcmFwaFdvcmtmbG93Tm9kZU1ldGFkYXRhW107XG4gIHJlbGF0aW9uczogR3JhcGhXb3JrZmxvd1JlbGF0aW9uTWV0YWRhdGFbXTtcbn07XG5cbmV4cG9ydCB0eXBlIEdyYXBoV29ya2Zsb3dTbmFwc2hvdFN0YXRlID0ge1xuICBpbnB1dHM6IEdyYXBoV29ya2Zsb3dTbmFwc2hvdFZhbHVlW107XG4gIG91dHB1dHM6IEdyYXBoV29ya2Zsb3dTbmFwc2hvdFZhbHVlW107XG4gIG5vZGVzOiBHcmFwaFdvcmtmbG93U25hcHNob3ROb2RlW107XG4gIGVkZ2VzOiBHcmFwaFdvcmtmbG93U25hcHNob3RFZGdlW107XG4gIHVpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgbWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufTtcblxuLyoqIFNuYXBzaG90IHNjaGVtYSB2ZXJzaW9uIGxpdGVyYWwgdHlwZSAoe0BsaW5rIEdSQVBIX1dPUktGTE9XX1NOQVBTSE9UX1ZFUlNJT059KS4gKi9cbmV4cG9ydCB0eXBlIEdyYXBoV29ya2Zsb3dTbmFwc2hvdFZlcnNpb24gPSB0eXBlb2YgR1JBUEhfV09SS0ZMT1dfU05BUFNIT1RfVkVSU0lPTjtcblxuLyoqXG4gKiBMZWdhY3kgcGVyc2lzdGVkIHNuYXBzaG90IChgeyB2ZXJzaW9uLCBkZWZpbml0aW9uLCBzdGF0ZSB9YCkuIEtlcHQgb25seSBmb3JcbiAqIGxvYWRpbmcvY29tcGF0aWJpbGl0eSBvZiBwZXJzaXN0ZWQgZGF0YTsgdGhlIGNhbm9uaWNhbCBzbmFwc2hvdCBpc1xuICoge0BsaW5rIEdyYXBoV29ya2Zsb3dTbmFwc2hvdH0gKGB7IGRvY3VtZW50LCBlZGl0b3I/LCBtZXRhZGF0YT8gfWApLlxuICogQ29udmVydCB3aXRoIHtAbGluayBncmFwaFdvcmtmbG93U25hcHNob3RGcm9tTGVnYWN5fSAvXG4gKiB7QGxpbmsgZ3JhcGhXb3JrZmxvd1NuYXBzaG90VG9MZWdhY3l9LlxuICovXG5leHBvcnQgdHlwZSBMZWdhY3lHcmFwaFdvcmtmbG93U25hcHNob3QgPSB7XG4gIHZlcnNpb246IEdyYXBoV29ya2Zsb3dTbmFwc2hvdFZlcnNpb247XG4gIGRlZmluaXRpb246IEdyYXBoV29ya2Zsb3dTbmFwc2hvdERlZmluaXRpb247XG4gIHN0YXRlOiBHcmFwaFdvcmtmbG93U25hcHNob3RTdGF0ZTtcbn07XG5cbmV4cG9ydCB0eXBlIEdyYXBoV29ya2Zsb3dTbmFwc2hvdElucHV0ID0ge1xuICBkZWZpbml0aW9uPzogUGFydGlhbDxHcmFwaFdvcmtmbG93U25hcHNob3REZWZpbml0aW9uPjtcbiAgaW5wdXRzPzogR3JhcGhXb3JrZmxvd1NuYXBzaG90VmFsdWVbXSB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBvdXRwdXRzPzogR3JhcGhXb3JrZmxvd1NuYXBzaG90VmFsdWVbXSB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBub2Rlcz86IEdyYXBoV29ya2Zsb3dTbmFwc2hvdE5vZGVbXTtcbiAgZWRnZXM/OiBHcmFwaFdvcmtmbG93U25hcHNob3RFZGdlW107XG4gIHVpPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59O1xuXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4gKFxuICAgICEhdmFsdWUgJiZcbiAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiZcbiAgICAhQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiZcbiAgICAhKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gY2xvbmVWYWx1ZTxUPih2YWx1ZTogVCk6IFQge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUubWFwKChlbnRyeSkgPT4gY2xvbmVWYWx1ZShlbnRyeSkpIGFzIFQ7XG4gIH1cblxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlLmdldFRpbWUoKSkgYXMgVDtcbiAgfVxuXG4gIGlmIChpc1BsYWluT2JqZWN0KHZhbHVlKSkge1xuICAgIGNvbnN0IGNsb25lZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIGVudHJ5XSBvZiBPYmplY3QuZW50cmllcyh2YWx1ZSkpIHtcbiAgICAgIGNsb25lZFtrZXldID0gY2xvbmVWYWx1ZShlbnRyeSk7XG4gICAgfVxuICAgIHJldHVybiBjbG9uZWQgYXMgVDtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gYXNTdHJpbmcodmFsdWU6IHVua25vd24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IHZhbHVlIDogU3RyaW5nKHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gaXNXb3JrZmxvd0RlZmluaXRpb25MaWtlKFxuICB2YWx1ZTogdW5rbm93blxuKTogdmFsdWUgaXMgR3JhcGhXb3JrZmxvd0RlZmluaXRpb24gfCBHcmFwaFdvcmtmbG93U25hcHNob3REZWZpbml0aW9uIHtcbiAgcmV0dXJuIChcbiAgICBpc1BsYWluT2JqZWN0KHZhbHVlKSAmJlxuICAgIHR5cGVvZiB2YWx1ZS5uYW1lID09PSBcInN0cmluZ1wiICYmXG4gICAgdHlwZW9mIHZhbHVlLnRhZyA9PT0gXCJzdHJpbmdcIiAmJlxuICAgIHR5cGVvZiB2YWx1ZS5raW5kID09PSBcInN0cmluZ1wiICYmXG4gICAgQXJyYXkuaXNBcnJheSh2YWx1ZS5pbnB1dHMpICYmXG4gICAgQXJyYXkuaXNBcnJheSh2YWx1ZS5vdXRwdXRzKSAmJlxuICAgIEFycmF5LmlzQXJyYXkodmFsdWUubm9kZXMpICYmXG4gICAgQXJyYXkuaXNBcnJheSh2YWx1ZS5yZWxhdGlvbnMpXG4gICk7XG59XG5cbmZ1bmN0aW9uIHNuYXBzaG90Tm9kZUtleShub2RlOiBQYXJ0aWFsPEdyYXBoV29ya2Zsb3dTbmFwc2hvdE5vZGU+KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIG5vZGUucmVmPy5pZCA/PyBub2RlLmlkID8/IG5vZGUucmVmPy5wYXRoID8/IG5vZGUucmVmPy5wcm9wZXJ0eTtcbn1cblxuZnVuY3Rpb24gc25hcHNob3RFZGdlS2V5KGVkZ2U6IFBhcnRpYWw8R3JhcGhXb3JrZmxvd1NuYXBzaG90RWRnZT4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gKFxuICAgIGVkZ2UuaWQgPz9cbiAgICBbZWRnZS5zb3VyY2VSZWYgPz8gZWRnZS5zb3VyY2UsIGVkZ2Uuc291cmNlUG9ydCwgZWRnZS50YXJnZXRSZWYgPz8gZWRnZS50YXJnZXQsIGVkZ2UudGFyZ2V0UG9ydF1cbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgIC5qb2luKFwiOjpcIilcbiAgKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplVmFsdWVFbnRyaWVzKFxuICBlbnRyaWVzOiBHcmFwaFdvcmtmbG93U25hcHNob3RWYWx1ZVtdIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQsXG4gIGRlZmluaXRpb25zOiBHcmFwaFBvcnREZWZpbml0aW9uW11cbik6IEdyYXBoV29ya2Zsb3dTbmFwc2hvdFZhbHVlW10ge1xuICBjb25zdCBieVBhdGggPSBuZXcgTWFwPHN0cmluZywgR3JhcGhXb3JrZmxvd1NuYXBzaG90VmFsdWU+KCk7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoZW50cmllcykpIHtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgIGlmICghZW50cnk/LnBhdGgpIGNvbnRpbnVlO1xuICAgICAgYnlQYXRoLnNldChlbnRyeS5wYXRoLCBjbG9uZVZhbHVlKGVudHJ5KSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QoZW50cmllcykpIHtcbiAgICBmb3IgKGNvbnN0IFtwYXRoLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZW50cmllcykpIHtcbiAgICAgIGJ5UGF0aC5zZXQocGF0aCwgeyBwYXRoLCB2YWx1ZTogY2xvbmVWYWx1ZSh2YWx1ZSkgfSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgbm9ybWFsaXplZDogR3JhcGhXb3JrZmxvd1NuYXBzaG90VmFsdWVbXSA9IGRlZmluaXRpb25zLm1hcCgoZGVmaW5pdGlvbikgPT4ge1xuICAgIGNvbnN0IHBhdGggPSBkZWZpbml0aW9uLnBhdGggPz8gZGVmaW5pdGlvbi5wcm9wZXJ0eTtcbiAgICBjb25zdCBjdXJyZW50ID0gYnlQYXRoLmdldChwYXRoKTtcbiAgICBjb25zdCBlbnRyeTogR3JhcGhXb3JrZmxvd1NuYXBzaG90VmFsdWUgPSB7XG4gICAgICBsYWJlbDogZGVmaW5pdGlvbi5sYWJlbCxcbiAgICAgIHR5cGU6IGRlZmluaXRpb24udHlwZSxcbiAgICAgIHJlcXVpcmVkOiBkZWZpbml0aW9uLnJlcXVpcmVkLFxuICAgICAgbW9kZWw6IGRlZmluaXRpb24ubW9kZWwsXG4gICAgICBtZXRhZGF0YTogY2xvbmVWYWx1ZShcbiAgICAgICAgZGVmaW5pdGlvbi5ncmFwaD8ubWV0YWRhdGEgPz9cbiAgICAgICAgICBkZWZpbml0aW9uLmVsZW1lbnQ/LnByb3BzID8/XG4gICAgICAgICAgZGVmaW5pdGlvbi5wcm9wPy5wcm9wcyA/P1xuICAgICAgICAgIHt9XG4gICAgICApLFxuICAgICAgLi4uY3VycmVudCxcbiAgICAgIHBhdGgsXG4gICAgfTtcblxuICAgIGlmICghT2JqZWN0LmtleXMoZW50cnkubWV0YWRhdGEgfHwge30pLmxlbmd0aCkge1xuICAgICAgZGVsZXRlIGVudHJ5Lm1ldGFkYXRhO1xuICAgIH1cbiAgICByZXR1cm4gZW50cnk7XG4gIH0pO1xuXG4gIGZvciAoY29uc3QgZW50cnkgb2YgYnlQYXRoLnZhbHVlcygpKSB7XG4gICAgaWYgKG5vcm1hbGl6ZWQuc29tZSgoY3VycmVudCkgPT4gY3VycmVudC5wYXRoID09PSBlbnRyeS5wYXRoKSkgY29udGludWU7XG4gICAgbm9ybWFsaXplZC5wdXNoKGNsb25lVmFsdWUoZW50cnkpKTtcbiAgfVxuXG4gIHJldHVybiBub3JtYWxpemVkO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVOb2RlcyhcbiAgbm9kZXM6IEdyYXBoV29ya2Zsb3dTbmFwc2hvdE5vZGVbXSB8IHVuZGVmaW5lZCxcbiAgZGVmaW5pdGlvbnM6IEdyYXBoV29ya2Zsb3dOb2RlTWV0YWRhdGFbXVxuKTogR3JhcGhXb3JrZmxvd1NuYXBzaG90Tm9kZVtdIHtcbiAgY29uc3QgYnlLZXkgPSBuZXcgTWFwPHN0cmluZywgR3JhcGhXb3JrZmxvd1NuYXBzaG90Tm9kZT4oKTtcbiAgY29uc3QgcmVzdWx0OiBHcmFwaFdvcmtmbG93U25hcHNob3ROb2RlW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGRlZmluaXRpb24gb2YgZGVmaW5pdGlvbnMpIHtcbiAgICBjb25zdCBub2RlOiBHcmFwaFdvcmtmbG93U25hcHNob3ROb2RlID0ge1xuICAgICAgaWQ6IGRlZmluaXRpb24uaWQsXG4gICAgICByZWY6IHtcbiAgICAgICAgaWQ6IGRlZmluaXRpb24uaWQsXG4gICAgICAgIGtpbmQ6IGRlZmluaXRpb24ua2luZCxcbiAgICAgIH0sXG4gICAgICBsYWJlbDogZGVmaW5pdGlvbi5sYWJlbCxcbiAgICAgIGtpbmQ6IGRlZmluaXRpb24ua2luZCxcbiAgICAgIGRhdGE6IGRlZmluaXRpb24ubm9kZSAhPT0gdW5kZWZpbmVkID8geyBub2RlOiBjbG9uZVZhbHVlKGRlZmluaXRpb24ubm9kZSkgfSA6IHVuZGVmaW5lZCxcbiAgICAgIG1ldGFkYXRhOiBjbG9uZVZhbHVlKGRlZmluaXRpb24ubWV0YWRhdGEpLFxuICAgIH07XG4gICAgcmVzdWx0LnB1c2gobm9kZSk7XG4gICAgYnlLZXkuc2V0KGRlZmluaXRpb24uaWQsIG5vZGUpO1xuICB9XG5cbiAgZm9yIChjb25zdCBlbnRyeSBvZiBub2RlcyB8fCBbXSkge1xuICAgIGNvbnN0IGtleSA9IHNuYXBzaG90Tm9kZUtleShlbnRyeSk7XG4gICAgY29uc3QgY3VycmVudCA9IGtleSA/IGJ5S2V5LmdldChrZXkpIDogdW5kZWZpbmVkO1xuICAgIGlmIChjdXJyZW50KSB7XG4gICAgICBjb25zdCBtZXJnZWQ6IEdyYXBoV29ya2Zsb3dTbmFwc2hvdE5vZGUgPSB7XG4gICAgICAgIC4uLmN1cnJlbnQsXG4gICAgICAgIC4uLmNsb25lVmFsdWUoZW50cnkpLFxuICAgICAgICBpZDogZW50cnkuaWQgfHwgY3VycmVudC5pZCxcbiAgICAgICAgcmVmOiB7XG4gICAgICAgICAgLi4uY3VycmVudC5yZWYsXG4gICAgICAgICAgLi4uZW50cnkucmVmLFxuICAgICAgICAgIGlkOiBlbnRyeS5yZWY/LmlkID8/IGN1cnJlbnQucmVmPy5pZCA/PyBjdXJyZW50LmlkLFxuICAgICAgICB9LFxuICAgICAgICBwb3NpdGlvbjogZW50cnkucG9zaXRpb24gPyBjbG9uZVZhbHVlKGVudHJ5LnBvc2l0aW9uKSA6IGN1cnJlbnQucG9zaXRpb24sXG4gICAgICAgIHNpemU6IGVudHJ5LnNpemUgPyBjbG9uZVZhbHVlKGVudHJ5LnNpemUpIDogY3VycmVudC5zaXplLFxuICAgICAgICBwb3J0czoge1xuICAgICAgICAgIC4uLihjdXJyZW50LnBvcnRzIHx8IHt9KSxcbiAgICAgICAgICAuLi4oZW50cnkucG9ydHMgfHwge30pLFxuICAgICAgICB9LFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgLi4uKGN1cnJlbnQuZGF0YSB8fCB7fSksXG4gICAgICAgICAgLi4uKGVudHJ5LmRhdGEgfHwge30pLFxuICAgICAgICB9LFxuICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgIC4uLihjdXJyZW50Lm1ldGFkYXRhIHx8IHt9KSxcbiAgICAgICAgICAuLi4oZW50cnkubWV0YWRhdGEgfHwge30pLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIGlmIChrZXkpIGJ5S2V5LnNldChrZXksIG1lcmdlZCk7XG4gICAgICBjb25zdCBpbmRleCA9IHJlc3VsdC5maW5kSW5kZXgoKHZhbHVlKSA9PiB2YWx1ZS5pZCA9PT0gY3VycmVudC5pZCk7XG4gICAgICBpZiAoaW5kZXggPj0gMCkgcmVzdWx0W2luZGV4XSA9IG1lcmdlZDtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGNsb25lZCA9IGNsb25lVmFsdWUoZW50cnkpO1xuICAgIHJlc3VsdC5wdXNoKGNsb25lZCk7XG4gICAgaWYgKGtleSkgYnlLZXkuc2V0KGtleSwgY2xvbmVkKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUVkZ2VzKFxuICBlZGdlczogR3JhcGhXb3JrZmxvd1NuYXBzaG90RWRnZVtdIHwgdW5kZWZpbmVkLFxuICByZWxhdGlvbnM6IEdyYXBoV29ya2Zsb3dSZWxhdGlvbk1ldGFkYXRhW11cbik6IEdyYXBoV29ya2Zsb3dTbmFwc2hvdEVkZ2VbXSB7XG4gIGNvbnN0IGJ5S2V5ID0gbmV3IE1hcDxzdHJpbmcsIEdyYXBoV29ya2Zsb3dTbmFwc2hvdEVkZ2U+KCk7XG4gIGNvbnN0IHJlc3VsdDogR3JhcGhXb3JrZmxvd1NuYXBzaG90RWRnZVtdID0gW107XG5cbiAgZm9yIChjb25zdCBbaW5kZXgsIHJlbGF0aW9uXSBvZiByZWxhdGlvbnMuZW50cmllcygpKSB7XG4gICAgY29uc3Qgc291cmNlID0gYXNTdHJpbmcocmVsYXRpb24uc291cmNlKSA/PyBgc291cmNlLSR7aW5kZXh9YDtcbiAgICBjb25zdCB0YXJnZXQgPSBhc1N0cmluZyhyZWxhdGlvbi50YXJnZXQpID8/IGB0YXJnZXQtJHtpbmRleH1gO1xuICAgIGNvbnN0IGVkZ2U6IEdyYXBoV29ya2Zsb3dTbmFwc2hvdEVkZ2UgPSB7XG4gICAgICBpZDogcmVsYXRpb24ubGFiZWwgfHwgYCR7c291cmNlfToke3JlbGF0aW9uLnNvdXJjZVBvcnQgPz8gXCIqXCJ9LT4ke3RhcmdldH06JHtyZWxhdGlvbi50YXJnZXRQb3J0ID8/IFwiKlwifWAsXG4gICAgICBzb3VyY2UsXG4gICAgICBzb3VyY2VSZWY6IHNvdXJjZSxcbiAgICAgIHNvdXJjZVBvcnQ6IHJlbGF0aW9uLnNvdXJjZVBvcnQsXG4gICAgICB0YXJnZXQsXG4gICAgICB0YXJnZXRSZWY6IHRhcmdldCxcbiAgICAgIHRhcmdldFBvcnQ6IHJlbGF0aW9uLnRhcmdldFBvcnQsXG4gICAgICBsYWJlbDogcmVsYXRpb24ubGFiZWwsXG4gICAgICBtZXRhZGF0YTogY2xvbmVWYWx1ZShyZWxhdGlvbi5tZXRhZGF0YSksXG4gICAgfTtcbiAgICByZXN1bHQucHVzaChlZGdlKTtcbiAgICBieUtleS5zZXQoZWRnZS5pZCwgZWRnZSk7XG4gIH1cblxuICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVkZ2VzIHx8IFtdKSB7XG4gICAgY29uc3Qga2V5ID0gc25hcHNob3RFZGdlS2V5KGVudHJ5KTtcbiAgICBjb25zdCBjdXJyZW50ID0ga2V5ID8gYnlLZXkuZ2V0KGtleSkgOiB1bmRlZmluZWQ7XG4gICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgIGNvbnN0IG1lcmdlZDogR3JhcGhXb3JrZmxvd1NuYXBzaG90RWRnZSA9IHtcbiAgICAgICAgLi4uY3VycmVudCxcbiAgICAgICAgLi4uY2xvbmVWYWx1ZShlbnRyeSksXG4gICAgICAgIGlkOiBlbnRyeS5pZCB8fCBjdXJyZW50LmlkLFxuICAgICAgICBzb3VyY2U6IGVudHJ5LnNvdXJjZSB8fCBjdXJyZW50LnNvdXJjZSxcbiAgICAgICAgc291cmNlUmVmOiBlbnRyeS5zb3VyY2VSZWYgPz8gY3VycmVudC5zb3VyY2VSZWYgPz8gZW50cnkuc291cmNlID8/IGN1cnJlbnQuc291cmNlLFxuICAgICAgICB0YXJnZXQ6IGVudHJ5LnRhcmdldCB8fCBjdXJyZW50LnRhcmdldCxcbiAgICAgICAgdGFyZ2V0UmVmOiBlbnRyeS50YXJnZXRSZWYgPz8gY3VycmVudC50YXJnZXRSZWYgPz8gZW50cnkudGFyZ2V0ID8/IGN1cnJlbnQudGFyZ2V0LFxuICAgICAgICAvLyBMYWJlbHMgYXJlIGRvY3VtZW50LWNhcnJpZWQgZGlzcGxheSBzZW1hbnRpY3MgKMKnNC40LjcpOiBhIHJvdyBtZXJnZWRcbiAgICAgICAgLy8gZnJvbSBhIGNhbnZhcyBjbG9uZSB0aGF0IG5ldmVyIGNhcnJpZWQgaXRzIG93biBsYWJlbCBtdXN0IG5vdCBlcmFzZVxuICAgICAgICAvLyB0aGUgcmVsYXRpb24gcm93J3MgbGFiZWwuXG4gICAgICAgIGxhYmVsOiBlbnRyeS5sYWJlbCA/PyBjdXJyZW50LmxhYmVsLFxuICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgIC4uLihjdXJyZW50Lm1ldGFkYXRhIHx8IHt9KSxcbiAgICAgICAgICAuLi4oZW50cnkubWV0YWRhdGEgfHwge30pLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIGlmIChrZXkpIGJ5S2V5LnNldChrZXksIG1lcmdlZCk7XG4gICAgICBjb25zdCBpbmRleCA9IHJlc3VsdC5maW5kSW5kZXgoKHZhbHVlKSA9PiB2YWx1ZS5pZCA9PT0gY3VycmVudC5pZCk7XG4gICAgICBpZiAoaW5kZXggPj0gMCkgcmVzdWx0W2luZGV4XSA9IG1lcmdlZDtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGNsb25lZCA9IGNsb25lVmFsdWUoZW50cnkpO1xuICAgIHJlc3VsdC5wdXNoKGNsb25lZCk7XG4gICAgaWYgKGtleSkgYnlLZXkuc2V0KGtleSwgY2xvbmVkKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVdvcmtmbG93RGVmaW5pdGlvbihcbiAgZGVmaW5pdGlvbjogR3JhcGhXb3JrZmxvd0RlZmluaXRpb24gfCBHcmFwaFdvcmtmbG93U25hcHNob3REZWZpbml0aW9uLFxuICBvdmVycmlkZXM6IFBhcnRpYWw8R3JhcGhXb3JrZmxvd1NuYXBzaG90RGVmaW5pdGlvbj4gPSB7fVxuKTogR3JhcGhXb3JrZmxvd1NuYXBzaG90RGVmaW5pdGlvbiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogb3ZlcnJpZGVzLm5hbWUgPz8gZGVmaW5pdGlvbi5uYW1lLFxuICAgIHRhZzogb3ZlcnJpZGVzLnRhZyA/PyBkZWZpbml0aW9uLnRhZyxcbiAgICBraW5kOiBvdmVycmlkZXMua2luZCA/PyBkZWZpbml0aW9uLmtpbmQsXG4gICAgY2F0ZWdvcnk6IG92ZXJyaWRlcy5jYXRlZ29yeSA/PyBkZWZpbml0aW9uLmNhdGVnb3J5LFxuICAgIGNvbG9yOiBvdmVycmlkZXMuY29sb3IgPz8gZGVmaW5pdGlvbi5jb2xvcixcbiAgICBncm91cDogb3ZlcnJpZGVzLmdyb3VwID8/IGRlZmluaXRpb24uZ3JvdXAsXG4gICAgaGVpZ2h0OiBvdmVycmlkZXMuaGVpZ2h0ID8/IGRlZmluaXRpb24uaGVpZ2h0LFxuICAgIGljb246IG92ZXJyaWRlcy5pY29uID8/IGRlZmluaXRpb24uaWNvbixcbiAgICBsYWJlbHM6IGNsb25lVmFsdWUob3ZlcnJpZGVzLmxhYmVscyA/PyBkZWZpbml0aW9uLmxhYmVscyA/PyBbXSksXG4gICAgbWF4Q2hpbGRyZW46IG92ZXJyaWRlcy5tYXhDaGlsZHJlbiA/PyBkZWZpbml0aW9uLm1heENoaWxkcmVuLFxuICAgIG1pbldpZHRoOiBvdmVycmlkZXMubWluV2lkdGggPz8gZGVmaW5pdGlvbi5taW5XaWR0aCxcbiAgICB3aWR0aDogb3ZlcnJpZGVzLndpZHRoID8/IGRlZmluaXRpb24ud2lkdGgsXG4gICAgbWV0YWRhdGE6IGNsb25lVmFsdWUoXG4gICAgICBvdmVycmlkZXMubWV0YWRhdGEgPz9cbiAgICAgICAgKFwid29ya2Zsb3dcIiBpbiBkZWZpbml0aW9uID8gZGVmaW5pdGlvbi53b3JrZmxvdyA6IGRlZmluaXRpb24ubWV0YWRhdGEpXG4gICAgKSxcbiAgICBpbnB1dHM6IGNsb25lVmFsdWUob3ZlcnJpZGVzLmlucHV0cyA/PyBkZWZpbml0aW9uLmlucHV0cyA/PyBbXSksXG4gICAgb3V0cHV0czogY2xvbmVWYWx1ZShvdmVycmlkZXMub3V0cHV0cyA/PyBkZWZpbml0aW9uLm91dHB1dHMgPz8gW10pLFxuICAgIG5vZGVzOiBjbG9uZVZhbHVlKG92ZXJyaWRlcy5ub2RlcyA/PyBkZWZpbml0aW9uLm5vZGVzID8/IFtdKSxcbiAgICByZWxhdGlvbnM6IGNsb25lVmFsdWUob3ZlcnJpZGVzLnJlbGF0aW9ucyA/PyBkZWZpbml0aW9uLnJlbGF0aW9ucyA/PyBbXSksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBncmFwaFdvcmtmbG93U25hcHNob3REZWZpbml0aW9uT2Y8TSBleHRlbmRzIE1vZGVsPihcbiAgbW9kZWw6IEdyYXBoTW9kZWxMaWtlPE0+IHwgR3JhcGhXb3JrZmxvd0RlZmluaXRpb24gfCBHcmFwaFdvcmtmbG93U25hcHNob3REZWZpbml0aW9uXG4pOiBHcmFwaFdvcmtmbG93U25hcHNob3REZWZpbml0aW9uIHtcbiAgY29uc3QgZGVmaW5pdGlvbiA9IGlzV29ya2Zsb3dEZWZpbml0aW9uTGlrZShtb2RlbClcbiAgICA/IG1vZGVsXG4gICAgOiBncmFwaFdvcmtmbG93RGVmaW5pdGlvbk9mKG1vZGVsIGFzIEdyYXBoTW9kZWxMaWtlPE0+KTtcbiAgcmV0dXJuIG5vcm1hbGl6ZVdvcmtmbG93RGVmaW5pdGlvbihkZWZpbml0aW9uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdyYXBoV29ya2Zsb3dTbmFwc2hvdE9mPE0gZXh0ZW5kcyBNb2RlbD4oXG4gIG1vZGVsOiBHcmFwaE1vZGVsTGlrZTxNPiB8IEdyYXBoV29ya2Zsb3dEZWZpbml0aW9uIHwgR3JhcGhXb3JrZmxvd1NuYXBzaG90RGVmaW5pdGlvbixcbiAgaW5wdXQ/OiBHcmFwaFdvcmtmbG93U25hcHNob3RJbnB1dFxuKTogTGVnYWN5R3JhcGhXb3JrZmxvd1NuYXBzaG90IHtcbiAgY29uc3Qgbm9ybWFsaXplZERlZmluaXRpb24gPSBub3JtYWxpemVXb3JrZmxvd0RlZmluaXRpb24oXG4gICAgZ3JhcGhXb3JrZmxvd1NuYXBzaG90RGVmaW5pdGlvbk9mKG1vZGVsIGFzIGFueSksXG4gICAgaW5wdXQ/LmRlZmluaXRpb25cbiAgKTtcbiAgY29uc3QgaW5wdXRQb3J0cyA9IGdyYXBoTGVhZlBvcnRzT2Yobm9ybWFsaXplZERlZmluaXRpb24uaW5wdXRzKTtcbiAgY29uc3Qgb3V0cHV0UG9ydHMgPSBncmFwaExlYWZQb3J0c09mKG5vcm1hbGl6ZWREZWZpbml0aW9uLm91dHB1dHMpO1xuXG4gIHJldHVybiB7XG4gICAgdmVyc2lvbjogR1JBUEhfV09SS0ZMT1dfU05BUFNIT1RfVkVSU0lPTixcbiAgICBkZWZpbml0aW9uOiBub3JtYWxpemVkRGVmaW5pdGlvbixcbiAgICBzdGF0ZToge1xuICAgICAgaW5wdXRzOiBub3JtYWxpemVWYWx1ZUVudHJpZXMoaW5wdXQ/LmlucHV0cywgaW5wdXRQb3J0cyksXG4gICAgICBvdXRwdXRzOiBub3JtYWxpemVWYWx1ZUVudHJpZXMoaW5wdXQ/Lm91dHB1dHMsIG91dHB1dFBvcnRzKSxcbiAgICAgIG5vZGVzOiBub3JtYWxpemVOb2RlcyhpbnB1dD8ubm9kZXMsIG5vcm1hbGl6ZWREZWZpbml0aW9uLm5vZGVzKSxcbiAgICAgIGVkZ2VzOiBub3JtYWxpemVFZGdlcyhpbnB1dD8uZWRnZXMsIG5vcm1hbGl6ZWREZWZpbml0aW9uLnJlbGF0aW9ucyksXG4gICAgICB1aTogY2xvbmVWYWx1ZShpbnB1dD8udWkgfHwge30pLFxuICAgICAgbWV0YWRhdGE6IGNsb25lVmFsdWUoaW5wdXQ/Lm1ldGFkYXRhIHx8IHt9KSxcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3JhcGhXb3JrZmxvd1NuYXBzaG90UmVzdG9yZTxNIGV4dGVuZHMgTW9kZWw+KFxuICBzbmFwc2hvdDogTGVnYWN5R3JhcGhXb3JrZmxvd1NuYXBzaG90IHwgR3JhcGhXb3JrZmxvd1NuYXBzaG90SW5wdXQsXG4gIG1vZGVsPzogR3JhcGhNb2RlbExpa2U8TT4gfCBHcmFwaFdvcmtmbG93RGVmaW5pdGlvbiB8IEdyYXBoV29ya2Zsb3dTbmFwc2hvdERlZmluaXRpb25cbik6IExlZ2FjeUdyYXBoV29ya2Zsb3dTbmFwc2hvdCB7XG4gIGlmICghKFwidmVyc2lvblwiIGluIHNuYXBzaG90KSkge1xuICAgIHJldHVybiBncmFwaFdvcmtmbG93U25hcHNob3RPZihcbiAgICAgIG1vZGVsID8/XG4gICAgICAgIChzbmFwc2hvdC5kZWZpbml0aW9uIGFzXG4gICAgICAgICAgfCBHcmFwaFdvcmtmbG93RGVmaW5pdGlvblxuICAgICAgICAgIHwgR3JhcGhXb3JrZmxvd1NuYXBzaG90RGVmaW5pdGlvblxuICAgICAgICAgIHwgdW5kZWZpbmVkKSA/P1xuICAgICAgICAoe30gYXMgR3JhcGhXb3JrZmxvd0RlZmluaXRpb24pLFxuICAgICAgc25hcHNob3RcbiAgICApO1xuICB9XG5cbiAgY29uc3QgZnVsbFNuYXBzaG90ID0gc25hcHNob3QgYXMgTGVnYWN5R3JhcGhXb3JrZmxvd1NuYXBzaG90O1xuICBjb25zdCBkZWZpbml0aW9uID0gbW9kZWxcbiAgICA/IGdyYXBoV29ya2Zsb3dTbmFwc2hvdERlZmluaXRpb25PZihtb2RlbClcbiAgICA6IGZ1bGxTbmFwc2hvdC5kZWZpbml0aW9uO1xuXG4gIHJldHVybiBncmFwaFdvcmtmbG93U25hcHNob3RPZihkZWZpbml0aW9uLCB7XG4gICAgaW5wdXRzOiBmdWxsU25hcHNob3Quc3RhdGUuaW5wdXRzLFxuICAgIG91dHB1dHM6IGZ1bGxTbmFwc2hvdC5zdGF0ZS5vdXRwdXRzLFxuICAgIG5vZGVzOiBmdWxsU25hcHNob3Quc3RhdGUubm9kZXMsXG4gICAgZWRnZXM6IGZ1bGxTbmFwc2hvdC5zdGF0ZS5lZGdlcyxcbiAgICB1aTogZnVsbFNuYXBzaG90LnN0YXRlLnVpLFxuICAgIG1ldGFkYXRhOiBmdWxsU25hcHNob3Quc3RhdGUubWV0YWRhdGEsXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3JhcGhXb3JrZmxvd1NuYXBzaG90VG9KU09OKFxuICBzbmFwc2hvdDogTGVnYWN5R3JhcGhXb3JrZmxvd1NuYXBzaG90LFxuICBzcGFjZT86IG51bWJlclxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHNuYXBzaG90LCB1bmRlZmluZWQsIHNwYWNlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdyYXBoV29ya2Zsb3dTbmFwc2hvdEZyb21KU09OKFxuICBpbnB1dDogc3RyaW5nIHwgTGVnYWN5R3JhcGhXb3JrZmxvd1NuYXBzaG90LFxuICBtb2RlbD86IEdyYXBoTW9kZWxMaWtlIHwgR3JhcGhXb3JrZmxvd0RlZmluaXRpb24gfCBHcmFwaFdvcmtmbG93U25hcHNob3REZWZpbml0aW9uXG4pOiBMZWdhY3lHcmFwaFdvcmtmbG93U25hcHNob3Qge1xuICBjb25zdCBzbmFwc2hvdCA9XG4gICAgdHlwZW9mIGlucHV0ID09PSBcInN0cmluZ1wiID8gKEpTT04ucGFyc2UoaW5wdXQpIGFzIExlZ2FjeUdyYXBoV29ya2Zsb3dTbmFwc2hvdCkgOiBpbnB1dDtcbiAgcmV0dXJuIGdyYXBoV29ya2Zsb3dTbmFwc2hvdFJlc3RvcmUoc25hcHNob3QsIG1vZGVsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdyYXBoV29ya2Zsb3dTbmFwc2hvdElucHV0VmFsdWVzT2YoXG4gIHNuYXBzaG90OiBMZWdhY3lHcmFwaFdvcmtmbG93U25hcHNob3Rcbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBzbmFwc2hvdC5zdGF0ZS5pbnB1dHMubWFwKChlbnRyeSkgPT4gW2VudHJ5LnBhdGgsIGNsb25lVmFsdWUoZW50cnkudmFsdWUpXSlcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdyYXBoV29ya2Zsb3dTbmFwc2hvdE91dHB1dFZhbHVlc09mKFxuICBzbmFwc2hvdDogTGVnYWN5R3JhcGhXb3JrZmxvd1NuYXBzaG90XG4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgc25hcHNob3Quc3RhdGUub3V0cHV0cy5tYXAoKGVudHJ5KSA9PiBbZW50cnkucGF0aCwgY2xvbmVWYWx1ZShlbnRyeS52YWx1ZSldKVxuICApO1xufVxuXG4vKipcbiAqIEVkaXRvci1vbmx5IHN0YXRlIHRoYXQgdGhlIGNhbm9uaWNhbCB7QGxpbmsgR3JhcGhXb3JrZmxvd0RvY3VtZW50fSBjYW5ub3RcbiAqIGV4cHJlc3MgKGxheW91dCBiZXlvbmQgbm9kZSBwb3NpdGlvbnMsIGNvbmZpZy1zdG9yZSB2YWx1ZXMsIHBlci1wb3J0IG1vZGVzLFxuICogd29ya2Zsb3cgYm91bmRhcnkgdmFsdWVzLCBhbmQgZHVwbGljYXRlIGNvdW50cykuIFN0b3JlZCBhcyBKU09OLXNhZmUgdmFsdWVzXG4gKiBvbmx5OyBjb25zdHJ1Y3RvcnMgYW5kIGBtb2RlbENsYXNzYC9gc291cmNlQ2xhc3NgIHJlZmVyZW5jZXMgYXJlIGRyb3BwZWQuXG4gKi9cbmV4cG9ydCB0eXBlIEdyYXBoU25hcHNob3RFZGl0b3JTdGF0ZSA9IHtcbiAgdmlld3BvcnQ/OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyBzY2FsZTogbnVtYmVyIH07XG4gIGR1cGxpY2F0ZUNvdW50cz86IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG4gIGJvdW5kYXJ5SW5wdXRWYWx1ZXM/OiBSZWNvcmQ8c3RyaW5nLCBHcmFwaEpzb25WYWx1ZT47XG4gIGJvdW5kYXJ5T3V0cHV0VmFsdWVzPzogUmVjb3JkPHN0cmluZywgR3JhcGhKc29uVmFsdWU+O1xuICBub2RlUG9ydHM/OiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBHcmFwaEpzb25WYWx1ZT4+O1xuICBub2RlQ29uZmlncz86IFJlY29yZDxzdHJpbmcsIEdyYXBoSnNvblZhbHVlPjtcbiAgZGlhZ3JhbU1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgR3JhcGhKc29uVmFsdWU+O1xuICBkZWZpbml0aW9uRGlzcGxheT86IFJlY29yZDxzdHJpbmcsIEdyYXBoSnNvblZhbHVlPjtcbiAgbGVnYWN5PzogR3JhcGhKc29uVmFsdWU7XG59ICYgeyBba2V5OiBzdHJpbmddOiBHcmFwaEpzb25WYWx1ZSB8IHVuZGVmaW5lZCB9O1xuXG4vKipcbiAqIENhbm9uaWNhbCBkb2N1bWVudC1maXJzdCBzbmFwc2hvdC4gYGRvY3VtZW50YCBpcyB0aGUgZXhlY3V0YWJsZSBzZW1hbnRpY1xuICogdHJ1dGg7IGBlZGl0b3JgIHByZXNlcnZlcyBsZWdhY3kgZWRpdG9yLW9ubHkgc3RhdGUgZm9yIGxvc3NsZXNzIHJvdW5kIHRyaXBzLlxuICovXG5leHBvcnQgdHlwZSBHcmFwaFdvcmtmbG93U25hcHNob3QgPSB7XG4gIGRvY3VtZW50OiBHcmFwaFdvcmtmbG93RG9jdW1lbnQ7XG4gIGVkaXRvcj86IEdyYXBoU25hcHNob3RFZGl0b3JTdGF0ZTtcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBHcmFwaEpzb25WYWx1ZT47XG59O1xuXG5leHBvcnQgdHlwZSBHcmFwaFdvcmtmbG93U25hcHNob3RMaWtlID1cbiAgfCBMZWdhY3lHcmFwaFdvcmtmbG93U25hcHNob3RcbiAgfCBHcmFwaFdvcmtmbG93U25hcHNob3Q7XG5cbmZ1bmN0aW9uIGRyb3BVbnNhZmVFbnRyaWVzKFxuICBzb3VyY2U6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4pOiBSZWNvcmQ8c3RyaW5nLCBHcmFwaEpzb25WYWx1ZT4ge1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIEdyYXBoSnNvblZhbHVlPiA9IHt9O1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhzb3VyY2UpKSB7XG4gICAgaWYgKEdSQVBIX0NPTlNUUlVDVE9SX0RBVEFfS0VZUy5pbmNsdWRlcyhrZXkpKSBjb250aW51ZTtcbiAgICBjb25zdCBzYW5pdGl6ZWQgPSBzYW5pdGl6ZVRvR3JhcGhKc29uVmFsdWUodmFsdWUpO1xuICAgIGlmIChzYW5pdGl6ZWQgIT09IHVuZGVmaW5lZCkgcmVzdWx0W2tleV0gPSBzYW5pdGl6ZWQ7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBTYW5pdGl6ZXMgYSBsZWdhY3kgc25hcHNob3QgaW50byBhIEpTT04tc2FmZSBwYXlsb2FkIHdoaWxlIHByZXNlcnZpbmcgaXRzXG4gKiBzdHJ1Y3R1cmFsIGtleXMgKGB2ZXJzaW9uYCwgYGRlZmluaXRpb25gLCBgc3RhdGVgKS4gQ29uc3RydWN0b3Ita2V5IHN0cmlwcGluZ1xuICogc3RpbGwgYXBwbGllcyB0byB0aGUgcGF5bG9hZCBjb250ZW50cyBpbnNpZGUsIHNvIHRoZSBjYW5vbmljYWzihpJsZWdhY3lcbiAqIHJvdW5kIHRyaXAgc3RheXMgbG9zc2xlc3MgZm9yIHBlcnNpc3RlZCBkYXRhLlxuICovXG5mdW5jdGlvbiBzYW5pdGl6ZUxlZ2FjeVNuYXBzaG90UGF5bG9hZChcbiAgc25hcHNob3Q6IExlZ2FjeUdyYXBoV29ya2Zsb3dTbmFwc2hvdFxuKTogR3JhcGhKc29uVmFsdWUge1xuICByZXR1cm4ge1xuICAgIHZlcnNpb246IHNuYXBzaG90LnZlcnNpb24sXG4gICAgZGVmaW5pdGlvbjogZHJvcFVuc2FmZUVudHJpZXMoXG4gICAgICAoc25hcHNob3QuZGVmaW5pdGlvbiA/PyB7fSkgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICksXG4gICAgc3RhdGU6IGRyb3BVbnNhZmVFbnRyaWVzKFxuICAgICAgKHNuYXBzaG90LnN0YXRlID8/IHt9KSBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gc2FuaXRpemVUb0dyYXBoSnNvblZhbHVlKHZhbHVlOiB1bmtub3duKTogR3JhcGhKc29uVmFsdWUgfCB1bmRlZmluZWQge1xuICBpZiAodmFsdWUgPT09IG51bGwpIHJldHVybiBudWxsO1xuICBjb25zdCB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICBpZiAodHlwZSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlID09PSBcImJvb2xlYW5cIikgcmV0dXJuIHZhbHVlIGFzIEdyYXBoSnNvblZhbHVlO1xuICBpZiAodHlwZSA9PT0gXCJudW1iZXJcIikgcmV0dXJuIE51bWJlci5pc0Zpbml0ZSh2YWx1ZSBhcyBudW1iZXIpID8gKHZhbHVlIGFzIG51bWJlcikgOiB1bmRlZmluZWQ7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIGNvbnN0IGl0ZW1zOiBHcmFwaEpzb25WYWx1ZVtdID0gW107XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHZhbHVlKSB7XG4gICAgICBjb25zdCBzYW5pdGl6ZWQgPSBzYW5pdGl6ZVRvR3JhcGhKc29uVmFsdWUoaXRlbSk7XG4gICAgICBpZiAoc2FuaXRpemVkICE9PSB1bmRlZmluZWQpIGl0ZW1zLnB1c2goc2FuaXRpemVkKTtcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG4gIGlmICh0eXBlID09PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIGRyb3BVbnNhZmVFbnRyaWVzKHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBib3VuZGFyeUFsaWFzZXNGb3IoZGVmaW5pdGlvbjogR3JhcGhXb3JrZmxvd1NuYXBzaG90RGVmaW5pdGlvbik6IFNldDxzdHJpbmc+IHtcbiAgY29uc3QgYWxpYXNlcyA9IG5ldyBTZXQ8c3RyaW5nPihHUkFQSF9MRUdBQ1lfQk9VTkRBUllfQUxJQVNFUyk7XG4gIGlmIChkZWZpbml0aW9uLnRhZykgYWxpYXNlcy5hZGQoZGVmaW5pdGlvbi50YWcpO1xuICBpZiAoZGVmaW5pdGlvbi5uYW1lKSBhbGlhc2VzLmFkZChkZWZpbml0aW9uLm5hbWUpO1xuICByZXR1cm4gYWxpYXNlcztcbn1cblxuZnVuY3Rpb24gbGVnYWN5RW5kcG9pbnQoXG4gIHJlZklkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIHBvcnQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgYWxpYXNlczogU2V0PHN0cmluZz4sXG4gIGJvdW5kYXJ5UG9ydElkcz86IFJlYWRvbmx5TWFwPHN0cmluZywgc3RyaW5nPlxuKTogR3JhcGhFbmRwb2ludCB7XG4gIGNvbnN0IHJlc29sdmVkUG9ydCA9IHBvcnQgPz8gXCJcIjtcbiAgaWYgKCFyZWZJZCB8fCBhbGlhc2VzLmhhcyhyZWZJZCkpIHtcbiAgICByZXR1cm4geyBzY29wZTogXCJ3b3JrZmxvd1wiLCBwb3J0OiByZXNvbHZlZFBvcnQgfSBzYXRpc2ZpZXMgR3JhcGhXb3JrZmxvd0VuZHBvaW50O1xuICB9XG4gIC8vIFRoZSBsZWdhY3kgZGVjb3JhdGVkLXJvb3QgY2FudmFzIHJlbmRlcmVkIHdvcmtmbG93IGlucHV0IHBvcnRzIGFzIGRyYWdnYWJsZVxuICAvLyBib3VuZGFyeSBiYWRnZXMgKGBpbnB1dC17cG9ydH1gLCBwb3J0IGhhbmRsZSBgdmFsdWVgKS4gVGhvc2UgYmluZGluZ3Mgc3RheVxuICAvLyBsb3NzbGVzcyBvbmx5IHdoZW4gdGhlIGJhZGdlIGlkIGZvbGRzIGJhY2sgb250byB0aGUgd29ya2Zsb3cgcG9ydCBpdCB3YXNcbiAgLy8gZHJhd24gZm9yIChERUNBRi01MCDCpzQuMTEpOyBvdGhlcndpc2UgYSB3b3JrZmxvdyBwb3J0IHdvdWxkIGNvbGxhcHNlIGludG9cbiAgLy8gb25lIHNoYXJlZCBib3VuZGFyeSBlbmRwb2ludCBhbmQgZHJvcCByZWFsIGVkZ2VzICjCpzQuNC42IGNhbm9uaWNhbCBmb3JtKS5cbiAgaWYgKHJlZklkLnN0YXJ0c1dpdGgoXCJpbnB1dC1cIikpIHtcbiAgICBjb25zdCB3b3JrZmxvd1BvcnRJZCA9IGJvdW5kYXJ5UG9ydElkcz8uZ2V0KHJlZklkLnNsaWNlKFwiaW5wdXQtXCIubGVuZ3RoKSA/PyBcIlwiKTtcbiAgICBpZiAod29ya2Zsb3dQb3J0SWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNjb3BlOiBcIndvcmtmbG93XCIsXG4gICAgICAgIHBvcnQ6IHdvcmtmbG93UG9ydElkLFxuICAgICAgfSBzYXRpc2ZpZXMgR3JhcGhXb3JrZmxvd0VuZHBvaW50O1xuICAgIH1cbiAgfVxuICByZXR1cm4geyBzY29wZTogXCJub2RlXCIsIG5vZGVJZDogcmVmSWQsIHBvcnQ6IHJlc29sdmVkUG9ydCB9IHNhdGlzZmllcyBHcmFwaEVuZHBvaW50O1xufVxuXG4vKipcbiAqIE1hcHMgd29ya2Zsb3cgaW5wdXQtcHJvcGVydHkgbmFtZXMgdG8gdGhlaXIgbGVnYWN5IGJvdW5kYXJ5LWJhZGdlIGlkc1xuICogKGBpbnB1dC17cHJvcGVydHl9YCksIHNvIGJhZGdlcyBkcmF3biBvbiB0aGUgY2FudmFzIHJlc29sdmUgYmFjayB0byB0aGVcbiAqIHdvcmtmbG93IHBvcnQgdGhleSByZXByZXNlbnQgKMKnNC4xMSkuXG4gKi9cbmZ1bmN0aW9uIGJvdW5kYXJ5UG9ydElkc0ZvcihzbmFwc2hvdDogTGVnYWN5R3JhcGhXb3JrZmxvd1NuYXBzaG90KTogUmVhZG9ubHlNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgZm9yIChjb25zdCBwb3J0IG9mIHNuYXBzaG90LmRlZmluaXRpb24uaW5wdXRzKSB7XG4gICAgbWFwLnNldChgaW5wdXQtJHtwb3J0LnByb3BlcnR5fWAsIHBvcnQucHJvcGVydHkpO1xuICB9XG4gIHJldHVybiBtYXA7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGRlY29yYXRlZCBkZWZpbml0aW9uJ3Mgb3duIGVkZ2UgbGFiZWxzIGJ5IGNhbm9uaWNhbCBlbmRwb2ludFxuICogcGFpciwgc28gY29udmVydGVkIGxlZ2FjeSBlZGdlcyB0aGF0IG5ldmVyIGNhcnJpZWQgYSBsYWJlbCBvbiB0aGUgZWRnZSByb3dcbiAqIChjYW52YXMtZHJhd24gY2xvbmVzIG1lcmdlZCBvdmVyIHRoZSByZWxhdGlvbiByb3dzKSBzdGlsbCByZXN0b3JlIHRoZVxuICogZG9jdW1lbnQtY2FycmllZCB7QGxpbmsgR3JhcGhFZGdlSW5zdGFuY2UubGFiZWx9ICjCpzQuNC43KSBpbnN0ZWFkIG9mIGxvc2luZ1xuICogdGhlIGRpc3BsYXkgYWZmb3JkYW5jZSBvbiBzYXZlL3JlbG9hZC5cbiAqL1xuZnVuY3Rpb24gbGVnYWN5UmVsYXRpb25MYWJlbEJ5RW5kcG9pbnQoXG4gIHNuYXBzaG90OiBMZWdhY3lHcmFwaFdvcmtmbG93U25hcHNob3QsXG4gIGFsaWFzZXM6IFNldDxzdHJpbmc+LFxuICBib3VuZGFyeVBvcnRJZHM6IFJlYWRvbmx5TWFwPHN0cmluZywgc3RyaW5nPlxuKTogUmVhZG9ubHlNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgZm9yIChjb25zdCByZWxhdGlvbiBvZiBzbmFwc2hvdC5kZWZpbml0aW9uLnJlbGF0aW9ucykge1xuICAgIGNvbnN0IGxhYmVsID0gdHlwZW9mIHJlbGF0aW9uLmxhYmVsID09PSBcInN0cmluZ1wiID8gcmVsYXRpb24ubGFiZWwgOiB1bmRlZmluZWQ7XG4gICAgaWYgKCFsYWJlbCkgY29udGludWU7XG4gICAgY29uc3Qgc291cmNlUmVmID0gdHlwZW9mIHJlbGF0aW9uLnNvdXJjZSA9PT0gXCJzdHJpbmdcIiA/IHJlbGF0aW9uLnNvdXJjZSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCB0YXJnZXRSZWYgPSB0eXBlb2YgcmVsYXRpb24udGFyZ2V0ID09PSBcInN0cmluZ1wiID8gcmVsYXRpb24udGFyZ2V0IDogdW5kZWZpbmVkO1xuICAgIG1hcC5zZXQoXG4gICAgICBlZGdlUGFpcktleU9mKHtcbiAgICAgICAgc291cmNlOiBsZWdhY3lFbmRwb2ludChzb3VyY2VSZWYsIHJlbGF0aW9uLnNvdXJjZVBvcnQsIGFsaWFzZXMsIGJvdW5kYXJ5UG9ydElkcyksXG4gICAgICAgIHRhcmdldDogbGVnYWN5RW5kcG9pbnQodGFyZ2V0UmVmLCByZWxhdGlvbi50YXJnZXRQb3J0LCBhbGlhc2VzLCBib3VuZGFyeVBvcnRJZHMpLFxuICAgICAgfSksXG4gICAgICBsYWJlbFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIG1hcDtcbn1cblxuZnVuY3Rpb24gZW5kcG9pbnRUb0xlZ2FjeVJlZihlbmRwb2ludDogR3JhcGhFbmRwb2ludCk6IHsgcmVmSWQ6IHN0cmluZzsgcG9ydDogc3RyaW5nIH0ge1xuICBpZiAoZW5kcG9pbnQuc2NvcGUgPT09IFwid29ya2Zsb3dcIikge1xuICAgIHJldHVybiB7IHJlZklkOiBcIiR3b3JrZmxvd1wiLCBwb3J0OiBlbmRwb2ludC5wb3J0IH07XG4gIH1cbiAgcmV0dXJuIHsgcmVmSWQ6IGVuZHBvaW50Lm5vZGVJZCwgcG9ydDogZW5kcG9pbnQucG9ydCB9O1xufVxuXG5mdW5jdGlvbiBwb3J0SW5zdGFuY2VGcm9tRGVmaW5pdGlvbihcbiAgcG9ydDogR3JhcGhQb3J0RGVmaW5pdGlvbixcbiAgdmFsdWU/OiBHcmFwaEpzb25WYWx1ZVxuKTogR3JhcGhXb3JrZmxvd1BvcnRJbnN0YW5jZSB7XG4gIGNvbnN0IGluc3RhbmNlOiBHcmFwaFdvcmtmbG93UG9ydEluc3RhbmNlID0ge1xuICAgIGlkOiBwb3J0LnByb3BlcnR5LFxuICAgIGxhYmVsOiBwb3J0LmxhYmVsLFxuICB9O1xuICBpbnN0YW5jZS5zY2hlbWEgPSBncmFwaFZhbHVlU2NoZW1hRnJvbVZhbGlkYXRpb24oXG4gICAgcG9ydC52YWxpZGF0aW9uIGFzIEdyYXBoVmFsaWRhdGlvblJlY29yZCB8IHVuZGVmaW5lZCxcbiAgICBwb3J0LnR5cGUsXG4gICAgcG9ydC5tb2RlbFxuICApO1xuICBpZiAocG9ydC5yZXF1aXJlZCkgaW5zdGFuY2UucmVxdWlyZWQgPSB0cnVlO1xuICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkgaW5zdGFuY2UuZGVmYXVsdFZhbHVlID0gdmFsdWU7XG4gIGNvbnN0IG1ldGFkYXRhID0gc2FuaXRpemVUb0dyYXBoSnNvblZhbHVlKHBvcnQuZ3JhcGggPz8ge30pIGFzIFJlY29yZDxzdHJpbmcsIEdyYXBoSnNvblZhbHVlPiB8IHVuZGVmaW5lZDtcbiAgaWYgKG1ldGFkYXRhICYmIE9iamVjdC5rZXlzKG1ldGFkYXRhKS5sZW5ndGgpIGluc3RhbmNlLm1ldGFkYXRhID0gbWV0YWRhdGE7XG4gIHJldHVybiBpbnN0YW5jZTtcbn1cblxuZnVuY3Rpb24gaW5wdXRCaW5kaW5nc0Zyb21Qb3J0cyhcbiAgcG9ydHM6IFJlY29yZDxzdHJpbmcsIEdyYXBoV29ya2Zsb3dTbmFwc2hvdFBvcnRTdGF0ZT4gfCB1bmRlZmluZWRcbik6IFJlY29yZDxzdHJpbmcsIEdyYXBoSW5wdXRCaW5kaW5nPiB8IHVuZGVmaW5lZCB7XG4gIGlmICghcG9ydHMpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IGJpbmRpbmdzOiBSZWNvcmQ8c3RyaW5nLCBHcmFwaElucHV0QmluZGluZz4gPSB7fTtcbiAgZm9yIChjb25zdCBbcHJvcGVydHksIHBvcnRdIG9mIE9iamVjdC5lbnRyaWVzKHBvcnRzKSkge1xuICAgIGlmIChwb3J0Py5tb2RlID09PSBcInBvcnRcIikge1xuICAgICAgYmluZGluZ3NbcHJvcGVydHldID0geyBtb2RlOiBcImVkZ2VcIiB9O1xuICAgIH0gZWxzZSBpZiAoXCJ2YWx1ZVwiIGluIChwb3J0ID8/IHt9KSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBzYW5pdGl6ZVRvR3JhcGhKc29uVmFsdWUocG9ydC52YWx1ZSk7XG4gICAgICBiaW5kaW5nc1twcm9wZXJ0eV0gPSB7IG1vZGU6IFwibGl0ZXJhbFwiLCB2YWx1ZTogdmFsdWUgPz8gbnVsbCB9O1xuICAgIH1cbiAgfVxuICByZXR1cm4gT2JqZWN0LmtleXMoYmluZGluZ3MpLmxlbmd0aCA/IGJpbmRpbmdzIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBub2RlSW5zdGFuY2VGcm9tTGVnYWN5KG5vZGU6IEdyYXBoV29ya2Zsb3dTbmFwc2hvdE5vZGUpOiBHcmFwaE5vZGVJbnN0YW5jZSB7XG4gIGNvbnN0IGluc3RhbmNlOiBHcmFwaE5vZGVJbnN0YW5jZSA9IHtcbiAgICBpZDogbm9kZS5pZCxcbiAgICBraW5kOiBub2RlLmtpbmQgPz8gbm9kZS5yZWY/LmtpbmQgPz8gbm9kZS5pZCxcbiAgICBwYXJhbWV0ZXJzOiBkcm9wVW5zYWZlRW50cmllcyhub2RlLmRhdGEgPz8ge30pLFxuICB9O1xuICBpZiAobm9kZS5sYWJlbCkgaW5zdGFuY2UubGFiZWwgPSBub2RlLmxhYmVsO1xuICBjb25zdCBiaW5kaW5ncyA9IGlucHV0QmluZGluZ3NGcm9tUG9ydHMobm9kZS5wb3J0cyk7XG4gIGlmIChiaW5kaW5ncykgaW5zdGFuY2UuaW5wdXRCaW5kaW5ncyA9IGJpbmRpbmdzO1xuICBjb25zdCBtZXRhZGF0YSA9IHNhbml0aXplVG9HcmFwaEpzb25WYWx1ZShub2RlLm1ldGFkYXRhID8/IHt9KSBhcyBSZWNvcmQ8c3RyaW5nLCBHcmFwaEpzb25WYWx1ZT4gfCB1bmRlZmluZWQ7XG4gIGlmIChtZXRhZGF0YSAmJiBPYmplY3Qua2V5cyhtZXRhZGF0YSkubGVuZ3RoKSBpbnN0YW5jZS5tZXRhZGF0YSA9IG1ldGFkYXRhO1xuICBpZiAobm9kZS5wb3NpdGlvbiB8fCBub2RlLnNpemUgfHwgbm9kZS5leHBhbmRlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgdWk6IEdyYXBoTm9kZVVpU3RhdGUgPSB7XG4gICAgICBwb3NpdGlvbjogbm9kZS5wb3NpdGlvbiA/IHsgeDogbm9kZS5wb3NpdGlvbi54LCB5OiBub2RlLnBvc2l0aW9uLnkgfSA6IHsgeDogMCwgeTogMCB9LFxuICAgIH07XG4gICAgaWYgKG5vZGUuc2l6ZSkgdWkuc2l6ZSA9IHsgd2lkdGg6IG5vZGUuc2l6ZS53aWR0aCwgaGVpZ2h0OiBub2RlLnNpemUuaGVpZ2h0IH07XG4gICAgaWYgKG5vZGUuZXhwYW5kZWQgIT09IHVuZGVmaW5lZCkgdWkuZXhwYW5kZWQgPSBub2RlLmV4cGFuZGVkO1xuICAgIGluc3RhbmNlLnVpID0gdWk7XG4gIH1cbiAgcmV0dXJuIGluc3RhbmNlO1xufVxuXG5mdW5jdGlvbiBlZGdlSW5zdGFuY2VGcm9tTGVnYWN5KFxuICBlZGdlOiBHcmFwaFdvcmtmbG93U25hcHNob3RFZGdlLFxuICBhbGlhc2VzOiBTZXQ8c3RyaW5nPixcbiAgYm91bmRhcnlQb3J0SWRzPzogUmVhZG9ubHlNYXA8c3RyaW5nLCBzdHJpbmc+LFxuICByZWxhdGlvbkxhYmVsQnlQYWlyPzogUmVhZG9ubHlNYXA8c3RyaW5nLCBzdHJpbmc+XG4pOiBHcmFwaEVkZ2VJbnN0YW5jZSB7XG4gIGNvbnN0IHNvdXJjZSA9IGxlZ2FjeUVuZHBvaW50KFxuICAgIGVkZ2Uuc291cmNlUmVmID8/IGVkZ2Uuc291cmNlLFxuICAgIGVkZ2Uuc291cmNlUG9ydCxcbiAgICBhbGlhc2VzLFxuICAgIGJvdW5kYXJ5UG9ydElkc1xuICApO1xuICBjb25zdCB0YXJnZXQgPSBsZWdhY3lFbmRwb2ludChcbiAgICBlZGdlLnRhcmdldFJlZiA/PyBlZGdlLnRhcmdldCxcbiAgICBlZGdlLnRhcmdldFBvcnQsXG4gICAgYWxpYXNlcyxcbiAgICBib3VuZGFyeVBvcnRJZHNcbiAgKTtcbiAgY29uc3QgaW5zdGFuY2U6IEdyYXBoRWRnZUluc3RhbmNlID0ge1xuICAgIGlkOiBlZGdlLmlkLFxuICAgIHR5cGU6IFwiZGF0YVwiLFxuICAgIHNvdXJjZSxcbiAgICB0YXJnZXQsXG4gIH07XG4gIGNvbnN0IGxhYmVsID0gZWRnZS5sYWJlbCA/PyByZWxhdGlvbkxhYmVsQnlQYWlyPy5nZXQoZWRnZVBhaXJLZXlPZih7IHNvdXJjZSwgdGFyZ2V0IH0pKTtcbiAgaWYgKGxhYmVsKSBpbnN0YW5jZS5sYWJlbCA9IGxhYmVsO1xuICBjb25zdCBtZXRhZGF0YSA9IHNhbml0aXplVG9HcmFwaEpzb25WYWx1ZShlZGdlLm1ldGFkYXRhID8/IHt9KSBhcyBSZWNvcmQ8c3RyaW5nLCBHcmFwaEpzb25WYWx1ZT4gfCB1bmRlZmluZWQ7XG4gIGlmIChtZXRhZGF0YSAmJiBPYmplY3Qua2V5cyhtZXRhZGF0YSkubGVuZ3RoKSBpbnN0YW5jZS5tZXRhZGF0YSA9IG1ldGFkYXRhO1xuICByZXR1cm4gaW5zdGFuY2U7XG59XG5cbi8qKiBFbmRwb2ludC1wYWlyIGtleSBmb3IgZWRnZSBpZGVudGl0eSAoY2Fub25pY2FsIGBHcmFwaEVuZHBvaW50YCBzaGFwZSkuICovXG5mdW5jdGlvbiBlZGdlUGFpcktleU9mKGVkZ2U6IHsgc291cmNlOiBHcmFwaEVuZHBvaW50OyB0YXJnZXQ6IEdyYXBoRW5kcG9pbnQgfSk6IHN0cmluZyB7XG4gIGNvbnN0IGtleU9mID0gKGVuZHBvaW50OiBHcmFwaEVuZHBvaW50KTogc3RyaW5nID0+XG4gICAgZW5kcG9pbnQuc2NvcGUgPT09IFwibm9kZVwiXG4gICAgICA/IGBub2RlOiR7ZW5kcG9pbnQubm9kZUlkfToke2VuZHBvaW50LnBvcnR9YFxuICAgICAgOiBgd29ya2Zsb3c6JHtlbmRwb2ludC5wb3J0fWA7XG4gIHJldHVybiBgJHtrZXlPZihlZGdlLnNvdXJjZSl9LT4ke2tleU9mKGVkZ2UudGFyZ2V0KX1gO1xufVxuXG4vKipcbiAqIE1hcHMgYSBsZWdhY3kgKHByZS1QNykgY2FudmFzIHNuYXBzaG90IHRvIHRoZSBjYW5vbmljYWxcbiAqIHtAbGluayBHcmFwaFdvcmtmbG93RG9jdW1lbnR9IChERUNBRi01MCDCpzQuNC42KTogbGVnYWN5IGBub2RlLmRhdGFgIGJlY29tZXNcbiAqIGluc3RhbmNlIGBwYXJhbWV0ZXJzYCwgbGVnYWN5IGBub2RlLm1ldGFkYXRhYCBiZWNvbWVzIGluc3RhbmNlIGBtZXRhZGF0YWAsXG4gKiB3b3JrZmxvdyBib3VuZGFyeSBiYWRnZXMgKGBpbnB1dC17cG9ydH1gKSBmb2xkIGJhY2sgb250byB0aGVpciB3b3JrZmxvd1xuICogcG9ydHMsIGFuZCBlZGdlIGxhYmVscyBtaXNzaW5nIGZyb20gY2xvbmVkIGVkZ2Ugcm93cyBhcmUgcmVzdG9yZWQgZnJvbSB0aGVcbiAqIGRlY29yYXRlZCBkZWZpbml0aW9uJ3MgcmVsYXRpb24gbGFiZWxzICjCpzQuNC43KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdyYXBoV29ya2Zsb3dEb2N1bWVudEZyb21MZWdhY3lTbmFwc2hvdChcbiAgc25hcHNob3Q6IExlZ2FjeUdyYXBoV29ya2Zsb3dTbmFwc2hvdFxuKTogR3JhcGhXb3JrZmxvd0RvY3VtZW50IHtcbiAgY29uc3QgYWxpYXNlcyA9IGJvdW5kYXJ5QWxpYXNlc0ZvcihzbmFwc2hvdC5kZWZpbml0aW9uKTtcbiAgY29uc3QgYm91bmRhcnlQb3J0SWRzID0gYm91bmRhcnlQb3J0SWRzRm9yKHNuYXBzaG90KTtcbiAgY29uc3QgcmVsYXRpb25MYWJlbEJ5UGFpciA9IGxlZ2FjeVJlbGF0aW9uTGFiZWxCeUVuZHBvaW50KHNuYXBzaG90LCBhbGlhc2VzLCBib3VuZGFyeVBvcnRJZHMpO1xuICBjb25zdCBpbnB1dHMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgc25hcHNob3Quc3RhdGUuaW5wdXRzLm1hcCgoZW50cnkpID0+IFtlbnRyeS5wYXRoLCBzYW5pdGl6ZVRvR3JhcGhKc29uVmFsdWUoZW50cnkudmFsdWUpXSlcbiAgKTtcbiAgY29uc3Qgb3V0cHV0cyA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBzbmFwc2hvdC5zdGF0ZS5vdXRwdXRzLm1hcCgoZW50cnkpID0+IFtlbnRyeS5wYXRoLCBzYW5pdGl6ZVRvR3JhcGhKc29uVmFsdWUoZW50cnkudmFsdWUpXSlcbiAgKTtcbiAgY29uc3QgZG9jdW1lbnQ6IEdyYXBoV29ya2Zsb3dEb2N1bWVudCA9IHtcbiAgICBpZDogc25hcHNob3QuZGVmaW5pdGlvbi50YWcgfHwgc25hcHNob3QuZGVmaW5pdGlvbi5uYW1lLFxuICAgIG5hbWU6IHNuYXBzaG90LmRlZmluaXRpb24ubmFtZSxcbiAgICBpbnB1dHM6IHNuYXBzaG90LmRlZmluaXRpb24uaW5wdXRzLm1hcCgocG9ydCkgPT5cbiAgICAgIHBvcnRJbnN0YW5jZUZyb21EZWZpbml0aW9uKHBvcnQsIGlucHV0c1twb3J0LnByb3BlcnR5XSlcbiAgICApLFxuICAgIG91dHB1dHM6IHNuYXBzaG90LmRlZmluaXRpb24ub3V0cHV0cy5tYXAoKHBvcnQpID0+XG4gICAgICBwb3J0SW5zdGFuY2VGcm9tRGVmaW5pdGlvbihwb3J0LCBvdXRwdXRzW3BvcnQucHJvcGVydHldKVxuICAgICksXG4gICAgbm9kZXM6IHNuYXBzaG90LnN0YXRlLm5vZGVzLm1hcChub2RlSW5zdGFuY2VGcm9tTGVnYWN5KSxcbiAgICBlZGdlczogc25hcHNob3Quc3RhdGUuZWRnZXMubWFwKChlZGdlKSA9PlxuICAgICAgZWRnZUluc3RhbmNlRnJvbUxlZ2FjeShlZGdlLCBhbGlhc2VzLCBib3VuZGFyeVBvcnRJZHMsIHJlbGF0aW9uTGFiZWxCeVBhaXIpXG4gICAgKSxcbiAgfTtcbiAgaWYgKHNuYXBzaG90LmRlZmluaXRpb24ubWV0YWRhdGEpIHtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHNhbml0aXplVG9HcmFwaEpzb25WYWx1ZShcbiAgICAgIHNuYXBzaG90LmRlZmluaXRpb24ubWV0YWRhdGFcbiAgICApIGFzIFJlY29yZDxzdHJpbmcsIEdyYXBoSnNvblZhbHVlPiB8IHVuZGVmaW5lZDtcbiAgICBpZiAobWV0YWRhdGEgJiYgT2JqZWN0LmtleXMobWV0YWRhdGEpLmxlbmd0aCkgZG9jdW1lbnQubWV0YWRhdGEgPSBtZXRhZGF0YTtcbiAgfVxuICBjb25zdCB1aTogR3JhcGhXb3JrZmxvd1VpU3RhdGUgPSB7fTtcbiAgY29uc3Qgdmlld3BvcnQgPSBzbmFwc2hvdC5zdGF0ZS51aT8uW1wiZGlhZ3JhbU1ldGFkYXRhXCJdIGFzXG4gICAgfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgIHwgdW5kZWZpbmVkO1xuICBjb25zdCBwYXJzZWRWaWV3cG9ydCA9IHZpZXdwb3J0Py5bXCJ2aWV3cG9ydFwiXTtcbiAgaWYgKHBhcnNlZFZpZXdwb3J0ICYmIHR5cGVvZiBwYXJzZWRWaWV3cG9ydCA9PT0gXCJvYmplY3RcIikge1xuICAgIGNvbnN0IHYgPSBwYXJzZWRWaWV3cG9ydCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBjb25zdCB4ID0gdHlwZW9mIHZbXCJ4XCJdID09PSBcIm51bWJlclwiID8gdltcInhcIl0gOiBOdW1iZXIodltcInhcIl0pIHx8IDA7XG4gICAgY29uc3QgeSA9IHR5cGVvZiB2W1wieVwiXSA9PT0gXCJudW1iZXJcIiA/IHZbXCJ5XCJdIDogTnVtYmVyKHZbXCJ5XCJdKSB8fCAwO1xuICAgIGNvbnN0IHpvb20gPSB0eXBlb2YgdltcInNjYWxlXCJdID09PSBcIm51bWJlclwiID8gdltcInNjYWxlXCJdIDogTnVtYmVyKHZbXCJzY2FsZVwiXSkgfHwgMTtcbiAgICB1aS52aWV3cG9ydCA9IHsgeCwgeSwgem9vbSB9O1xuICB9XG4gIGlmICh1aS52aWV3cG9ydCkgZG9jdW1lbnQudWkgPSB1aTtcbiAgcmV0dXJuIGRvY3VtZW50O1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgbGVnYWN5IHBlcnNpc3RlZCBzbmFwc2hvdCBpbnRvIHRoZSBjYW5vbmljYWwgd3JhcHBlci4gVGhlIGNhbm9uaWNhbFxuICogYGRvY3VtZW50YCBjYXJyaWVzIGV4ZWN1dGFibGUgc2VtYW50aWNzOyBgZWRpdG9yLmxlZ2FjeWAga2VlcHMgdGhlIHNhbml0aXplZFxuICogKGNvbnN0cnVjdG9yLWZyZWUpIGxlZ2FjeSBwYXlsb2FkIHNvIGEgY2Fub25pY2Fs4oaSbGVnYWN5IHJvdW5kIHRyaXAgaXMgbG9zc2xlc3NcbiAqIGZvciBwZXJzaXN0ZWQgZGF0YS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdyYXBoV29ya2Zsb3dTbmFwc2hvdEZyb21MZWdhY3koXG4gIHNuYXBzaG90OiBMZWdhY3lHcmFwaFdvcmtmbG93U25hcHNob3Rcbik6IEdyYXBoV29ya2Zsb3dTbmFwc2hvdCB7XG4gIGNvbnN0IGRvY3VtZW50ID0gZ3JhcGhXb3JrZmxvd0RvY3VtZW50RnJvbUxlZ2FjeVNuYXBzaG90KHNuYXBzaG90KTtcbiAgY29uc3QgZWRpdG9yOiBHcmFwaFNuYXBzaG90RWRpdG9yU3RhdGUgPSB7fTtcbiAgY29uc3Qgc2FuaXRpemVkTGVnYWN5ID0gc2FuaXRpemVMZWdhY3lTbmFwc2hvdFBheWxvYWQoc25hcHNob3QpO1xuICBpZiAoc2FuaXRpemVkTGVnYWN5ICYmIGlzR3JhcGhKc29uU2FmZVZhbHVlKHNhbml0aXplZExlZ2FjeSkpIGVkaXRvci5sZWdhY3kgPSBzYW5pdGl6ZWRMZWdhY3k7XG4gIGNvbnN0IHVpID0gc25hcHNob3Quc3RhdGUudWk7XG4gIGlmICh1aSkge1xuICAgIGNvbnN0IGR1cGxpY2F0ZUNvdW50cyA9IHVpW1wiZHVwbGljYXRlQ291bnRzXCJdO1xuICAgIGlmIChkdXBsaWNhdGVDb3VudHMgJiYgdHlwZW9mIGR1cGxpY2F0ZUNvdW50cyA9PT0gXCJvYmplY3RcIikge1xuICAgICAgZWRpdG9yLmR1cGxpY2F0ZUNvdW50cyA9IGR1cGxpY2F0ZUNvdW50cyBhcyBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICAgIH1cbiAgICBjb25zdCBkaWFncmFtTWV0YWRhdGEgPSB1aVtcImRpYWdyYW1NZXRhZGF0YVwiXTtcbiAgICBpZiAoZGlhZ3JhbU1ldGFkYXRhICYmIHR5cGVvZiBkaWFncmFtTWV0YWRhdGEgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIGVkaXRvci5kaWFncmFtTWV0YWRhdGEgPSBzYW5pdGl6ZVRvR3JhcGhKc29uVmFsdWUoXG4gICAgICAgIGRpYWdyYW1NZXRhZGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgKSBhcyBSZWNvcmQ8c3RyaW5nLCBHcmFwaEpzb25WYWx1ZT47XG4gICAgfVxuICAgIGNvbnN0IG5vZGVDb25maWdzID0gdWlbXCJub2RlQ29uZmlnc1wiXTtcbiAgICBpZiAobm9kZUNvbmZpZ3MgJiYgdHlwZW9mIG5vZGVDb25maWdzID09PSBcIm9iamVjdFwiKSB7XG4gICAgICBlZGl0b3Iubm9kZUNvbmZpZ3MgPSBzYW5pdGl6ZVRvR3JhcGhKc29uVmFsdWUoXG4gICAgICAgIG5vZGVDb25maWdzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICApIGFzIFJlY29yZDxzdHJpbmcsIEdyYXBoSnNvblZhbHVlPjtcbiAgICB9XG4gIH1cbiAgZWRpdG9yLm5vZGVQb3J0cyA9IHt9O1xuICBmb3IgKGNvbnN0IG5vZGUgb2Ygc25hcHNob3Quc3RhdGUubm9kZXMpIHtcbiAgICBpZiAobm9kZS5wb3J0cykge1xuICAgICAgZWRpdG9yLm5vZGVQb3J0c1tub2RlLmlkXSA9IHNhbml0aXplVG9HcmFwaEpzb25WYWx1ZShcbiAgICAgICAgbm9kZS5wb3J0cyBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICApIGFzIFJlY29yZDxzdHJpbmcsIEdyYXBoSnNvblZhbHVlPjtcbiAgICB9XG4gIH1cbiAgaWYgKCFPYmplY3Qua2V5cyhlZGl0b3Iubm9kZVBvcnRzKS5sZW5ndGgpIGRlbGV0ZSBlZGl0b3Iubm9kZVBvcnRzO1xuICBjb25zdCBkZWZpbml0aW9uRGlzcGxheSA9IGRyb3BVbnNhZmVFbnRyaWVzKFxuICAgIHNuYXBzaG90LmRlZmluaXRpb24gYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICApO1xuICBkZWxldGUgZGVmaW5pdGlvbkRpc3BsYXlbXCJpbnB1dHNcIl07XG4gIGRlbGV0ZSBkZWZpbml0aW9uRGlzcGxheVtcIm91dHB1dHNcIl07XG4gIGRlbGV0ZSBkZWZpbml0aW9uRGlzcGxheVtcIm5vZGVzXCJdO1xuICBkZWxldGUgZGVmaW5pdGlvbkRpc3BsYXlbXCJyZWxhdGlvbnNcIl07XG4gIGVkaXRvci5kZWZpbml0aW9uRGlzcGxheSA9IGRlZmluaXRpb25EaXNwbGF5O1xuICBjb25zdCBtZXRhZGF0YSA9IHNhbml0aXplVG9HcmFwaEpzb25WYWx1ZShcbiAgICBzbmFwc2hvdC5zdGF0ZS5tZXRhZGF0YSA/PyB7fVxuICApIGFzIFJlY29yZDxzdHJpbmcsIEdyYXBoSnNvblZhbHVlPjtcbiAgcmV0dXJuIHsgZG9jdW1lbnQsIGVkaXRvciwgbWV0YWRhdGE6IE9iamVjdC5rZXlzKG1ldGFkYXRhKS5sZW5ndGggPyBtZXRhZGF0YSA6IHVuZGVmaW5lZCB9O1xufVxuXG4vKipcbiAqIFJlY29uc3RydWN0cyBhIGxlZ2FjeSBzbmFwc2hvdCBmcm9tIGEgY2Fub25pY2FsIHdyYXBwZXIuIFVzZXMgdGhlXG4gKiBgZWRpdG9yLmxlZ2FjeWAgcGF5bG9hZCB3aGVuIHByZXNlbnQgZm9yIGV4YWN0IHJvdW5kIHRyaXBzOyBvdGhlcndpc2UgaXRcbiAqIHJlYnVpbGRzIGEgYmVzdC1lZmZvcnQgbGVnYWN5IHNuYXBzaG90IGZyb20gdGhlIGRvY3VtZW50ICsgZWRpdG9yIHN0YXRlXG4gKiAoY29uc3RydWN0b3JzIGFyZSBuZXZlciByZXN0b3JlZCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBncmFwaFdvcmtmbG93U25hcHNob3RUb0xlZ2FjeShcbiAgc25hcHNob3Q6IEdyYXBoV29ya2Zsb3dTbmFwc2hvdFxuKTogTGVnYWN5R3JhcGhXb3JrZmxvd1NuYXBzaG90IHtcbiAgaWYgKHNuYXBzaG90LmVkaXRvcj8ubGVnYWN5ICYmIGlzR3JhcGhKc29uU2FmZVZhbHVlKHNuYXBzaG90LmVkaXRvci5sZWdhY3kpKSB7XG4gICAgcmV0dXJuIGNsb25lVmFsdWUoc25hcHNob3QuZWRpdG9yLmxlZ2FjeSkgYXMgdW5rbm93biBhcyBMZWdhY3lHcmFwaFdvcmtmbG93U25hcHNob3Q7XG4gIH1cbiAgY29uc3QgeyBkb2N1bWVudCwgZWRpdG9yIH0gPSBzbmFwc2hvdDtcbiAgY29uc3QgYWxpYXNlcyA9IG5ldyBTZXQ8c3RyaW5nPihHUkFQSF9MRUdBQ1lfQk9VTkRBUllfQUxJQVNFUyk7XG4gIGlmIChkb2N1bWVudC5pZCkgYWxpYXNlcy5hZGQoZG9jdW1lbnQuaWQpO1xuICBpZiAoZG9jdW1lbnQubmFtZSkgYWxpYXNlcy5hZGQoZG9jdW1lbnQubmFtZSk7XG4gIGNvbnN0IGRpc3BsYXkgPSAoZWRpdG9yPy5kZWZpbml0aW9uRGlzcGxheSA/PyB7fSkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IGRlZmluaXRpb24gPSB7XG4gICAgLi4uY2xvbmVWYWx1ZShkaXNwbGF5KSxcbiAgICBuYW1lOiBkb2N1bWVudC5uYW1lLFxuICAgIHRhZzogZG9jdW1lbnQuaWQgfHwgKGRpc3BsYXlbXCJ0YWdcIl0gYXMgc3RyaW5nIHwgdW5kZWZpbmVkKSB8fCBkb2N1bWVudC5uYW1lLFxuICAgIGlucHV0czogZG9jdW1lbnQuaW5wdXRzLm1hcCgocG9ydCkgPT4gcG9ydFRvTGVnYWN5RGVmaW5pdGlvbihwb3J0KSksXG4gICAgb3V0cHV0czogZG9jdW1lbnQub3V0cHV0cy5tYXAoKHBvcnQpID0+IHBvcnRUb0xlZ2FjeURlZmluaXRpb24ocG9ydCkpLFxuICAgIG5vZGVzOiBkb2N1bWVudC5ub2Rlcy5tYXAoKG5vZGUpID0+ICh7IGlkOiBub2RlLmlkLCBraW5kOiBub2RlLmtpbmQgfSkpLFxuICAgIHJlbGF0aW9uczogZG9jdW1lbnQuZWRnZXMubWFwKChlZGdlKSA9PiAoe1xuICAgICAgaWQ6IGVkZ2UuaWQsXG4gICAgICBzb3VyY2U6IGVuZHBvaW50VG9MZWdhY3lSZWYoZWRnZS5zb3VyY2UpLnJlZklkLFxuICAgICAgc291cmNlUG9ydDogZWRnZS5zb3VyY2UucG9ydCxcbiAgICAgIHRhcmdldDogZW5kcG9pbnRUb0xlZ2FjeVJlZihlZGdlLnRhcmdldCkucmVmSWQsXG4gICAgICB0YXJnZXRQb3J0OiBlZGdlLnRhcmdldC5wb3J0LFxuICAgICAgbGFiZWw6IGVkZ2UubGFiZWwsXG4gICAgfSkpLFxuICB9IGFzIHVua25vd24gYXMgTGVnYWN5R3JhcGhXb3JrZmxvd1NuYXBzaG90W1wiZGVmaW5pdGlvblwiXTtcblxuICBjb25zdCBzdGF0ZTogTGVnYWN5R3JhcGhXb3JrZmxvd1NuYXBzaG90W1wic3RhdGVcIl0gPSB7XG4gICAgaW5wdXRzOiBkb2N1bWVudC5pbnB1dHMubWFwKChwb3J0KSA9PiAoe1xuICAgICAgcGF0aDogcG9ydC5pZCxcbiAgICAgIHZhbHVlOiBjbG9uZVZhbHVlKHBvcnQuZGVmYXVsdFZhbHVlKSBhcyBuZXZlcixcbiAgICAgIGxhYmVsOiBwb3J0LmxhYmVsLFxuICAgICAgcmVxdWlyZWQ6IHBvcnQucmVxdWlyZWQsXG4gICAgfSkpLFxuICAgIG91dHB1dHM6IGRvY3VtZW50Lm91dHB1dHMubWFwKChwb3J0KSA9PiAoe1xuICAgICAgcGF0aDogcG9ydC5pZCxcbiAgICAgIHZhbHVlOiBjbG9uZVZhbHVlKHBvcnQuZGVmYXVsdFZhbHVlKSBhcyBuZXZlcixcbiAgICAgIGxhYmVsOiBwb3J0LmxhYmVsLFxuICAgICAgcmVxdWlyZWQ6IHBvcnQucmVxdWlyZWQsXG4gICAgfSkpLFxuICAgIG5vZGVzOiBkb2N1bWVudC5ub2Rlcy5tYXAoKG5vZGUpID0+ICh7XG4gICAgICBpZDogbm9kZS5pZCxcbiAgICAgIHJlZjogeyBpZDogbm9kZS5pZCwga2luZDogbm9kZS5raW5kIH0sXG4gICAgICBsYWJlbDogbm9kZS5sYWJlbCxcbiAgICAgIGtpbmQ6IG5vZGUua2luZCxcbiAgICAgIHBvc2l0aW9uOiBub2RlLnVpPy5wb3NpdGlvbiA/IHsgeDogbm9kZS51aS5wb3NpdGlvbi54LCB5OiBub2RlLnVpLnBvc2l0aW9uLnkgfSA6IHVuZGVmaW5lZCxcbiAgICAgIHNpemU6IG5vZGUudWk/LnNpemUgPyB7IHdpZHRoOiBub2RlLnVpLnNpemUud2lkdGgsIGhlaWdodDogbm9kZS51aS5zaXplLmhlaWdodCB9IDogdW5kZWZpbmVkLFxuICAgICAgZXhwYW5kZWQ6IG5vZGUudWk/LmV4cGFuZGVkLFxuICAgICAgcG9ydHM6IChlZGl0b3I/Lm5vZGVQb3J0cz8uW25vZGUuaWRdIGFzIG5ldmVyKSA/PyB1bmRlZmluZWQsXG4gICAgICBkYXRhOiBjbG9uZVZhbHVlKG5vZGUucGFyYW1ldGVycyA/PyB7fSkgYXMgbmV2ZXIsXG4gICAgICBtZXRhZGF0YTogY2xvbmVWYWx1ZShub2RlLm1ldGFkYXRhID8/IHt9KSBhcyBuZXZlcixcbiAgICB9KSksXG4gICAgZWRnZXM6IGRvY3VtZW50LmVkZ2VzLm1hcCgoZWRnZSkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlID0gZW5kcG9pbnRUb0xlZ2FjeVJlZihlZGdlLnNvdXJjZSk7XG4gICAgICBjb25zdCB0YXJnZXQgPSBlbmRwb2ludFRvTGVnYWN5UmVmKGVkZ2UudGFyZ2V0KTtcbiAgICAgIGNvbnN0IGlzQm91bmRhcnkgPSBzb3VyY2UucmVmSWQgPT09IFwiJHdvcmtmbG93XCIgfHwgdGFyZ2V0LnJlZklkID09PSBcIiR3b3JrZmxvd1wiO1xuICAgICAgY29uc3QgaXNDb25uZWN0aW9uID0gZWRnZS50eXBlID09PSBcImNvbm5lY3Rpb25cIjtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBlZGdlLmlkLFxuICAgICAgICBzb3VyY2U6IHNvdXJjZS5yZWZJZCxcbiAgICAgICAgc291cmNlUmVmOiBzb3VyY2UucmVmSWQsXG4gICAgICAgIHNvdXJjZVBvcnQ6IHNvdXJjZS5wb3J0LFxuICAgICAgICB0YXJnZXQ6IHRhcmdldC5yZWZJZCxcbiAgICAgICAgdGFyZ2V0UmVmOiB0YXJnZXQucmVmSWQsXG4gICAgICAgIHRhcmdldFBvcnQ6IHRhcmdldC5wb3J0LFxuICAgICAgICBsYWJlbDogZWRnZS5sYWJlbCxcbiAgICAgICAgdHlwZTogaXNDb25uZWN0aW9uID8gXCJjb25uZWN0aW9uXCIgOiBpc0JvdW5kYXJ5ID8gXCJvdXRwdXRcIiA6IFwiZGF0YVwiLFxuICAgICAgICBtZXRhZGF0YTogY2xvbmVWYWx1ZShlZGdlLm1ldGFkYXRhID8/IHt9KSBhcyBuZXZlcixcbiAgICAgIH0gYXMgbmV2ZXI7XG4gICAgfSksXG4gICAgdWk6IGNsb25lVmFsdWUoe1xuICAgICAgLi4uKGVkaXRvcj8uZHVwbGljYXRlQ291bnRzID8geyBkdXBsaWNhdGVDb3VudHM6IGVkaXRvci5kdXBsaWNhdGVDb3VudHMgfSA6IHt9KSxcbiAgICAgIC4uLihlZGl0b3I/LmRpYWdyYW1NZXRhZGF0YSA/IHsgZGlhZ3JhbU1ldGFkYXRhOiBlZGl0b3IuZGlhZ3JhbU1ldGFkYXRhIH0gOiB7fSksXG4gICAgICAuLi4oZWRpdG9yPy5ub2RlQ29uZmlncyA/IHsgbm9kZUNvbmZpZ3M6IGVkaXRvci5ub2RlQ29uZmlncyB9IDoge30pLFxuICAgIH0pIGFzIG5ldmVyLFxuICAgIG1ldGFkYXRhOiBjbG9uZVZhbHVlKHNuYXBzaG90Lm1ldGFkYXRhID8/IHt9KSBhcyBuZXZlcixcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICB2ZXJzaW9uOiBHUkFQSF9XT1JLRkxPV19TTkFQU0hPVF9WRVJTSU9OLFxuICAgIGRlZmluaXRpb24sXG4gICAgc3RhdGUsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHBvcnRUb0xlZ2FjeURlZmluaXRpb24ocG9ydDogR3JhcGhXb3JrZmxvd1BvcnRJbnN0YW5jZSk6IEdyYXBoUG9ydERlZmluaXRpb24ge1xuICByZXR1cm4ge1xuICAgIHByb3BlcnR5OiBwb3J0LmlkLFxuICAgIGxhYmVsOiBwb3J0LmxhYmVsLFxuICAgIHJlcXVpcmVkOiBwb3J0LnJlcXVpcmVkLFxuICAgIG1ldGFkYXRhOiBjbG9uZVZhbHVlKHBvcnQubWV0YWRhdGEgPz8ge30pIGFzIG5ldmVyLFxuICB9IGFzIHVua25vd24gYXMgR3JhcGhQb3J0RGVmaW5pdGlvbjtcbn1cblxuLyoqIE5vcm1hbGl6ZXMgYW55IGFjY2VwdGVkIHNuYXBzaG90L2RvY3VtZW50IGZvcm0gdG8gYSBjYW5vbmljYWwgd3JhcHBlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiBncmFwaFdvcmtmbG93U25hcHNob3RMaWtlVG9DYW5vbmljYWwoXG4gIHZhbHVlOiBHcmFwaFdvcmtmbG93U25hcHNob3RMaWtlIHwgR3JhcGhXb3JrZmxvd0RvY3VtZW50XG4pOiBHcmFwaFdvcmtmbG93U25hcHNob3Qge1xuICBpZiAoXCJkb2N1bWVudFwiIGluIHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlIGFzIEdyYXBoV29ya2Zsb3dTbmFwc2hvdDtcbiAgfVxuICBpZiAoXCJzdGF0ZVwiIGluIHZhbHVlIHx8IFwiZGVmaW5pdGlvblwiIGluIHZhbHVlKSB7XG4gICAgcmV0dXJuIGdyYXBoV29ya2Zsb3dTbmFwc2hvdEZyb21MZWdhY3kodmFsdWUgYXMgTGVnYWN5R3JhcGhXb3JrZmxvd1NuYXBzaG90KTtcbiAgfVxuICByZXR1cm4geyBkb2N1bWVudDogdmFsdWUgYXMgR3JhcGhXb3JrZmxvd0RvY3VtZW50IH07XG59XG4iXX0=
|
package/lib/esm/graph/types.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { PortDirection } from "./constants.js";
|
|
2
|
-
//# sourceMappingURL=types.js.map
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZ3JhcGgvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSx1QkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBQb3J0RGlyZWN0aW9uIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5leHBvcnQgdHlwZSB7XG4gIEdyYXBoQ29ubmVjdGlvblJ1bGUsXG4gIEdyYXBoTm9kZURlZmluaXRpb24sXG4gIEdyYXBoTm9kZUtpbmQsXG4gIEdyYXBoTm9kZU1ldGFkYXRhLFxuICBHcmFwaFBvcnREZWZpbml0aW9uLFxuICBHcmFwaFBvcnRNZXRhZGF0YSxcbiAgR3JhcGhXb3JrZmxvd0RlZmluaXRpb24sXG4gIEdyYXBoV29ya2Zsb3dNZXRhZGF0YSxcbiAgR3JhcGhXb3JrZmxvd05vZGVNZXRhZGF0YSxcbiAgR3JhcGhXb3JrZmxvd1JlbGF0aW9uTWV0YWRhdGEsXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuZXhwb3J0IHR5cGUge1xuICBHcmFwaFdvcmtmbG93U25hcHNob3QsXG4gIExlZ2FjeUdyYXBoV29ya2Zsb3dTbmFwc2hvdCxcbiAgR3JhcGhXb3JrZmxvd1NuYXBzaG90RGVmaW5pdGlvbixcbiAgR3JhcGhXb3JrZmxvd1NuYXBzaG90RWRnZSxcbiAgR3JhcGhXb3JrZmxvd1NuYXBzaG90SW5wdXQsXG4gIEdyYXBoV29ya2Zsb3dTbmFwc2hvdE5vZGUsXG4gIEdyYXBoV29ya2Zsb3dTbmFwc2hvdFBvc2l0aW9uLFxuICBHcmFwaFdvcmtmbG93U25hcHNob3RSZWZlcmVuY2UsXG4gIEdyYXBoV29ya2Zsb3dTbmFwc2hvdFNpemUsXG4gIEdyYXBoV29ya2Zsb3dTbmFwc2hvdFN0YXRlLFxuICBHcmFwaFdvcmtmbG93U25hcHNob3RWYWx1ZSxcbiAgR3JhcGhXb3JrZmxvd1NuYXBzaG90UG9ydFN0YXRlLFxuICBHcmFwaFdvcmtmbG93U25hcHNob3RMaWtlLFxuICBHcmFwaFNuYXBzaG90RWRpdG9yU3RhdGUsXG59IGZyb20gXCIuL3NuYXBzaG90XCI7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2hhcmVkIGdyYXBoIGV4ZWN1dGlvbiBjb250cmFjdCAoREVDQUYtNTAgUGhhc2UgQSwgbW92ZWQgZnJvbVxuLy8gaW50ZWdyYXRpb25zL2dyYXBoL3NoYXJlZCk6IGZyb250ZW5kLXNhZmUgdHlwZSBkZWNsYXJhdGlvbnMgY29uc3VtZWQgYnlcbi8vIGJvdGggdGhlIGJhY2tlbmQgZW5naW5lIGFuZCBmcm9udGVuZCBidW5kbGVzIG92ZXIgU1NFLlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmltcG9ydCB0eXBlIHsgR3JhcGhQb3J0RGVmaW5pdGlvbiB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5pbXBvcnQgdHlwZSB7XG4gIEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlLFxuICBHcmFwaEV4ZWN1dGlvblN0YXR1cyxcbiAgR3JhcGhWaXN1YWxTdGF0ZSxcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmltcG9ydCB0eXBlIHsgR3JhcGhKc29uVmFsdWUgfSBmcm9tIFwiLi9kb2N1bWVudFwiO1xuXG4vKipcbiAqIEEgdmFsdWUgcmVmZXJlbmNlIGluc2lkZSBhIHtAbGluayBDb25kaXRpb25FeHByZXNzaW9ufS5cbiAqXG4gKiAtIGB7IGNvbnN0OiB4IH1gIOKAlCBhIGxpdGVyYWwgY29uc3RhbnQuXG4gKiAtIGB7IHBhdGg6IFwiYS5iXCIgfWAg4oCUIGEgZG90dGVkIHBhdGggcmVzb2x2ZWQgYWdhaW5zdCB0aGUgY3VycmVudCBsb29wIHN0YXRlLlxuICogLSBgeyBzdGVwOiBcIm5vZGVJZFwiLCBwYXRoOiBcIm91dFwiIH1gIOKAlCBhIGNyb3NzLW5vZGUgcmVmZXJlbmNlIChyZXNvbHZlZCBmcm9tXG4gKiAgIHRoZSBleGVjdXRpb24gc3RhdGUgaW4gdjE7IHJlc2VydmVkIGZvciBmdXR1cmUgbXVsdGktc3RlcCBldmFsdWF0aW9uKS5cbiAqL1xuZXhwb3J0IHR5cGUgRXhwclZhbHVlID1cbiAgfCB7IGNvbnN0OiB1bmtub3duIH1cbiAgfCB7IHBhdGg6IHN0cmluZyB9XG4gIHwgeyBzdGVwOiBzdHJpbmc7IHBhdGg6IHN0cmluZyB9O1xuXG4vKipcbiAqIERlY2xhcmF0aXZlLCBzZXJpYWxpemFibGUgY29uZGl0aW9uIGV4cHJlc3Npb24gRFNMIChBTEZSRUQtNSDCpzggLyBERUNBRi0zMiDCpzIyLjMpLlxuICpcbiAqIFRoZSBlbmdpbmUncyBgR3JhcGhDb25kaXRpb25FdmFsdWF0b3JgIHJlY29nbmlzZXMgdGhpcyBEU0wgd2hlbiB0aGVcbiAqIGNvbmRpdGlvbiBvYmplY3QgY2FycmllcyBhbiBgb3BgIGZpZWxkIGFuZCBkaXNwYXRjaGVzIHRvIHRoZVxuICogYENvbmRpdGlvbkV4cHJlc3Npb25FdmFsdWF0b3JgLlxuICovXG5leHBvcnQgdHlwZSBDb25kaXRpb25FeHByZXNzaW9uID1cbiAgfCB7IG9wOiBcImVxXCI7IGxlZnQ6IEV4cHJWYWx1ZTsgcmlnaHQ6IEV4cHJWYWx1ZSB9XG4gIHwgeyBvcDogXCJuZXFcIjsgbGVmdDogRXhwclZhbHVlOyByaWdodDogRXhwclZhbHVlIH1cbiAgfCB7IG9wOiBcImd0XCI7IGxlZnQ6IEV4cHJWYWx1ZTsgcmlnaHQ6IEV4cHJWYWx1ZSB9XG4gIHwgeyBvcDogXCJndGVcIjsgbGVmdDogRXhwclZhbHVlOyByaWdodDogRXhwclZhbHVlIH1cbiAgfCB7IG9wOiBcImx0XCI7IGxlZnQ6IEV4cHJWYWx1ZTsgcmlnaHQ6IEV4cHJWYWx1ZSB9XG4gIHwgeyBvcDogXCJsdGVcIjsgbGVmdDogRXhwclZhbHVlOyByaWdodDogRXhwclZhbHVlIH1cbiAgfCB7IG9wOiBcImFuZFwiOyBjb25kaXRpb25zOiBDb25kaXRpb25FeHByZXNzaW9uW10gfVxuICB8IHsgb3A6IFwib3JcIjsgY29uZGl0aW9uczogQ29uZGl0aW9uRXhwcmVzc2lvbltdIH1cbiAgfCB7IG9wOiBcIm5vdFwiOyBjb25kaXRpb246IENvbmRpdGlvbkV4cHJlc3Npb24gfVxuICB8IHsgb3A6IFwiZXhpc3RzXCI7IHZhbHVlOiBFeHByVmFsdWUgfTtcblxuLyoqXG4gKiBBIGNvZGUtYmFzZWQgY29uZGl0aW9uIGV2YWx1YXRlZCBpbiBhIHJlc3RyaWN0ZWQgVk0gc2FuZGJveCAowqcyMi40KS5cbiAqXG4gKiBUaGUgZW5naW5lIGRvZXMgTk9UIGltcGxlbWVudCB0aGUgc2FuZGJveCBkaXJlY3RseSDigJQgYSBwbHVnZ2FibGVcbiAqIGBDb2RlU2FuZGJveEV2YWx1YXRvcmAgbXVzdCBiZSByZWdpc3RlcmVkIGZvciBjb2RlIGNvbmRpdGlvbnMgdG8gd29yay5cbiAqIFRoZSBjb2RlIG11c3QgZm9sbG93IHRoZSBzYW1lIHJlc3RyaWN0aW9ucyBhcyB0aGUgQ29kZSBOb2RlICjCpzIyLjQpOlxuICogbm8gc3lzdGVtIEFQSSBhY2Nlc3MsIHBsYWNlaG9sZGVyIHN5bnRheCBmb3Igd29ya2Zsb3cgZGF0YSByZWZlcmVuY2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvZGVDb25kaXRpb24ge1xuICB0eXBlOiBcImNvZGVcIjtcbiAgY29kZTogc3RyaW5nO1xuICBsYW5ndWFnZT86IFwiamF2YXNjcmlwdFwiIHwgXCJ0eXBlc2NyaXB0XCI7XG59XG5cbi8qKlxuICogQSBjb25kaXRpb24gb24gYSBTd2l0Y2ggY2FzZSDigJQgZWl0aGVyIGEgZGVjbGFyYXRpdmVcbiAqIHtAbGluayBDb25kaXRpb25FeHByZXNzaW9ufSAoZ3JhcGhpY2FsIG1vZGUpIG9yIGEge0BsaW5rIENvZGVDb25kaXRpb259XG4gKiAoY29kZSBtb2RlKS5cbiAqL1xuZXhwb3J0IHR5cGUgU3dpdGNoQ2FzZUNvbmRpdGlvbiA9IENvbmRpdGlvbkV4cHJlc3Npb24gfCBDb2RlQ29uZGl0aW9uO1xuXG4vKipcbiAqIEEgc2luZ2xlIGNhc2UgaW4gYSBTd2l0Y2ggbm9kZS5cbiAqXG4gKiBFYWNoIGNhc2UgcGFpcnMgYSBjb25kaXRpb24gd2l0aCBhIGRlZGljYXRlZCBvdXRwdXQgcG9ydC4gV2hlbiB0aGVcbiAqIGNvbmRpdGlvbiBldmFsdWF0ZXMgdG8gYHRydWVgLCB0aGUgaW5wdXQgaXMgcm91dGVkIHRvIGBvdXRwdXRQb3J0YC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTd2l0Y2hDYXNlIHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgY29uZGl0aW9uOiBTd2l0Y2hDYXNlQ29uZGl0aW9uO1xuICBvdXRwdXRQb3J0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTWV0YWRhdGEgZm9yIGEgU3dpdGNoIG5vZGUsIHN0b3JlZCBpbiBgbWV0YWRhdGEuc3dpdGNoYC5cbiAqXG4gKiBXaGVuIGBoYXNEZWZhdWx0YCBpcyBgZmFsc2VgICh0aGUgZGVmYXVsdCksIHRoZSBgZGVmYXVsdGAgb3V0cHV0IHBvcnQgaXNcbiAqIGhpZGRlbiBhbmQgdGhlIGV4ZWN1dG9yIHRocm93cyBhIGBHcmFwaEV4ZWN1dGlvbkVycm9yYCB3aGVuIG5vIGNhc2VcbiAqIG1hdGNoZXMuIFdoZW4gYGhhc0RlZmF1bHRgIGlzIGB0cnVlYCwgdGhlIGBkZWZhdWx0YCBvdXRwdXQgcG9ydCBpcyB2aXNpYmxlXG4gKiBhbmQgcmVjZWl2ZXMgdGhlIGlucHV0IHdoZW4gbm8gY2FzZSBtYXRjaGVzIChERUNBRi0zNCDCpzYuMikuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3dpdGNoTm9kZU1ldGFkYXRhIHtcbiAgY2FzZXM6IFN3aXRjaENhc2VbXTtcbiAgZGVmYXVsdFBvcnQ/OiBzdHJpbmc7XG4gIGhhc0RlZmF1bHQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoZSByZXN1bHQgb2YgYXBwbHlpbmcgYSBtZXRhZGF0YSBjaGFuZ2UgdG8gYSBub2RlLiBFYWNoIGNvbmNyZXRlIG5vZGVcbiAqIGNsYXNzIHRoYXQgb3ZlcnJpZGVzIGBHcmFwaE5vZGUuYXBwbHlNZXRhZGF0YSgpYCByZXR1cm5zIHRoaXMgc28gdGhlXG4gKiByZW5kZXJlciBjYW4gdXBkYXRlIHRoZSBkaWFncmFtIG1vZGVsIOKAlCB0aGUgbm9kZSBvd25zIGl0cyBwb3J0cywgaXRzXG4gKiBzaXplLCBhbmQgYW55IGRhdGEgcGF0Y2hlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb2RlTWV0YWRhdGFDaGFuZ2Uge1xuICBwb3J0czogR3JhcGhQb3J0RGVmaW5pdGlvbltdO1xuICBzaXplOiB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH07XG4gIGRhdGFQYXRjaDogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8qKlxuICogU2VyaWFsaXplZCBlcnJvciBwYXlsb2FkIGluY2x1ZGVkIGluIGV4ZWN1dGlvbiBldmVudHMgYW5kIHJlc3VsdHMuXG4gKlxuICogRnJvbnRlbmQtc2FmZTogdGhlIGZyb250ZW5kIHJlY2VpdmVzIHRoaXMgb3ZlciBTU0Ugd2hlbiBhIG5vZGUgb3Igd29ya2Zsb3dcbiAqIGZhaWxzIGFuZCBuZWVkcyB0byByZW5kZXIgdGhlIGVycm9yIGRldGFpbHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JhcGhFeGVjdXRpb25FcnJvclBheWxvYWQge1xuICBuYW1lOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc3RhY2s/OiBzdHJpbmc7XG4gIGNvZGU/OiBzdHJpbmc7XG4gIGRldGFpbHM/OiB1bmtub3duO1xufVxuXG4vKipcbiAqIEEgc2luZ2xlIGV2ZW50IGVtaXR0ZWQgZHVyaW5nIGdyYXBoIGV4ZWN1dGlvbi5cbiAqXG4gKiBGcm9udGVuZC1zYWZlOiB0aGUgZnJvbnRlbmQgY29uc3VtZXMgdGhlc2UgZXZlbnRzIG92ZXIgdGhlIFNTRSBlbmRwb2ludFxuICogKGBHRVQgL2dyYXBoL2V2ZW50c2ApIGFuZCBtYXBzIHRoZW0gdG8gVUkgc3RhdGUgdXBkYXRlcyB2aWFcbiAqIGBHcmFwaEV4ZWN1dGlvblN0YXRlTWFwcGVyYC4gVGhlIGB0aW1lc3RhbXBgIGlzIHNlcmlhbGlzZWQgYXMgYW4gSVNPIHN0cmluZ1xuICogb3ZlciB0aGUgd2lyZTsgdGhlIGZyb250ZW5kIGRlc2VyaWFsaXNlcyBpdCBiYWNrIHRvIGEgYERhdGVgIHdoZW4gbWFwcGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcmFwaEV4ZWN1dGlvbkV2ZW50IHtcbiAgaWQ6IHN0cmluZztcbiAgc2VxdWVuY2U6IG51bWJlcjtcbiAgcnVuSWQ6IHN0cmluZztcbiAgcGFyZW50UnVuSWQ/OiBzdHJpbmc7XG4gIHdvcmtmbG93SWQ6IHN0cmluZztcbiAgdHlwZTogR3JhcGhFeGVjdXRpb25FdmVudFR5cGU7XG4gIHRpbWVzdGFtcDogRGF0ZTtcbiAgbm9kZUlkPzogc3RyaW5nO1xuICBlZGdlSWQ/OiBzdHJpbmc7XG4gIHBvcnQ/OiBzdHJpbmc7XG4gIGl0ZXJhdGlvbj86IG51bWJlcjtcbiAgcGF0aDogc3RyaW5nW107XG4gIHN0YXR1cz86IEdyYXBoRXhlY3V0aW9uU3RhdHVzO1xuICBwYXlsb2FkPzogdW5rbm93bjtcbiAgZXJyb3I/OiBHcmFwaEV4ZWN1dGlvbkVycm9yUGF5bG9hZDtcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLyoqXG4gKiBQYXlsb2FkIGNhcnJpZWQgYnkgYE5PREVfU1RBVEVfQ0hBTkdFRGAgZXZlbnRzIChERUNBRi00OCDCpzQuNCkuXG4gKlxuICogVGhlIHZpc3VhbCBzdGF0ZSBpcyB0aGUgZW5naW5lLWFnbm9zdGljIGNvbnRyYWN0IGEgTWFzdHJhL05lc3RKUyBkcml2ZXJcbiAqIE1VU1QgZW1pdDsgdGhlIHJlZmVyZW5jZSBlbmdpbmUgZGVyaXZlcyBpdCBmcm9tIGl0cyBvd24gZXhlY3V0aW9uIGV2ZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcmFwaE5vZGVTdGF0ZUNoYW5nZWRQYXlsb2FkIHtcbiAgbm9kZUlkOiBzdHJpbmc7XG4gIHN0YXRlOiBHcmFwaFZpc3VhbFN0YXRlO1xuICBydW5JZDogc3RyaW5nO1xuICB3b3JrZmxvd0lkOiBzdHJpbmc7XG4gIC8qKiBFbmdpbmUgc3RhdHVzIHRoYXQgcHJvZHVjZWQgdGhlIHZpc3VhbCBzdGF0ZSAod2hlbiBhdmFpbGFibGUpLiAqL1xuICBzdGF0dXM/OiBHcmFwaEV4ZWN1dGlvblN0YXR1cztcbiAgaXRlcmF0aW9uPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFBheWxvYWQgY2FycmllZCBieSBgRURHRV9TVEFURV9DSEFOR0VEYCBldmVudHMgKERFQ0FGLTQ4IMKnNC40KS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcmFwaEVkZ2VTdGF0ZUNoYW5nZWRQYXlsb2FkIHtcbiAgZWRnZUlkOiBzdHJpbmc7XG4gIHN0YXRlOiBHcmFwaFZpc3VhbFN0YXRlO1xuICBydW5JZDogc3RyaW5nO1xuICB3b3JrZmxvd0lkOiBzdHJpbmc7XG4gIC8qKiBTb3VyY2Ugbm9kZSBvZiB0aGUgcm91dGVkIGVkZ2UgKHdoZW4gYXZhaWxhYmxlKS4gKi9cbiAgbm9kZUlkPzogc3RyaW5nO1xuICAvKiogRW5naW5lIHN0YXR1cyB0aGF0IHByb2R1Y2VkIHRoZSB2aXN1YWwgc3RhdGUgKHdoZW4gYXZhaWxhYmxlKS4gKi9cbiAgc3RhdHVzPzogR3JhcGhFeGVjdXRpb25TdGF0dXM7XG59XG5cbi8qKlxuICogU3RydWN0dXJlZCBsb2cgbGluZSBzdHJlYW1lZCBvdmVyIHRoZSBgZ3JhcGgucnVuLmxvZ2AgU1NFIGNoYW5uZWxcbiAqIChERUNBRi00OCDCpzQuMykuIFNlcmlhbGl6ZWQgZnJvbSB0aGUgcnVuJ3MgYGN0eC5sb2dnZXJgIG91dHB1dDsgdGhlIGxldmVsXG4gKiBkcml2ZXMgdGhlIENocm9tZS1jb25zb2xlLXN0eWxlIGZpbHRlciB3aGlsZSB0aGUgYXR0cmlidXRlcyByZW5kZXIgYXNcbiAqIGRpc2NyZXRlIGNvbHVtbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JhcGhSdW5Mb2dFbnRyeSB7XG4gIC8qKiBMb2cgc2V2ZXJpdHkgbGV2ZWwgZHJpdmluZyB0aGUgQ2hyb21lLWNvbnNvbGUtc3R5bGUgd2lkZ2V0IGZpbHRlciAoYWxsIGBMb2dOb2RlTGV2ZWxgIHZhbHVlcyBwbHVzIGBiZW5jaG1hcmtgKS4gKi9cbiAgbGV2ZWw6IFwic2lsbHlcIiB8IFwidHJhY2VcIiB8IFwiZGVidWdcIiB8IFwidmVyYm9zZVwiIHwgXCJpbmZvXCIgfCBcIndhcm5cIiB8IFwiZXJyb3JcIiB8IFwiY3JpdGljYWxcIiB8IFwiZmF0YWxcIiB8IFwiYmVuY2htYXJrXCI7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIHJ1bklkOiBzdHJpbmc7XG4gIHdvcmtmbG93SWQ6IHN0cmluZztcbiAgbm9kZUlkPzogc3RyaW5nO1xuICB1c2VyPzogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFN0cnVjdHVyZWQgcGF5bG9hZCBhc3NvY2lhdGVkIHdpdGggdGhlIGxvZyBsaW5lLCBpZiBhbnkuICovXG4gIHBheWxvYWQ/OiB1bmtub3duO1xufVxuXG4vKipcbiAqIFN0cnVjdHVyZWQgcGVyLW5vZGUgSS9PIHBheWxvYWQgZXhwb3NlZCBmb3Igbm9kZSBpbnNwZWN0aW9uIChERUNBRi00OCDCpzQuNikuXG4gKlxuICogRnJvbnRlbmQtc2FmZTogcHVyZSBkYXRhIGRlbGl2ZXJlZCB2aWEgdGhlIHNoYXJlZCBncmFwaCB0eXBlcyBvdmVyIHRoZSBTU0VcbiAqIHN0YXRlIGNoYW5uZWwgKG9yIGEgYEdFVCAvZ3JhcGgvcmVzdWx0cy86cnVuSWRgIGxvb2t1cCk7IHRoZSBmcm9udGVuZFxuICogcmVuZGVycyBib3RoIHBhbmVzIChpbnB1dHMgcmlnaHQsIG91dHB1dHMvZXJyb3IgbGVmdCkgZnJvbSB0aGlzIG9uZSBzaGFwZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcmFwaE5vZGVJbnNwZWN0aW9uUGF5bG9hZCB7XG4gIHJ1bklkOiBzdHJpbmc7XG4gIHdvcmtmbG93SWQ6IHN0cmluZztcbiAgbm9kZUlkOiBzdHJpbmc7XG4gIHN0YXRlOiBHcmFwaFZpc3VhbFN0YXRlO1xuICBpbnB1dHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAvKiogUHJlc2VudCB3aGVuIFNVQ0NFRURFRCAob3IgZnJvbSBjYWNoZSkuICovXG4gIG91dHB1dHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgLyoqIFByZXNlbnQgd2hlbiBGQUlMRUQuICovXG4gIGVycm9yPzogR3JhcGhFeGVjdXRpb25FcnJvclBheWxvYWQ7XG59XG5cbi8qKlxuICogTG9nIGxldmVscyBhY2NlcHRlZCBieSB0aGUgTG9nIG5vZGUgKERFQ0FGLTQ4IMKnNC4zKS5cbiAqXG4gKiBNaXJyb3JzIHRoZSBERUNBRi05IGxvZyBsZXZlbCBzZXQgc28gdGhlIExvZyBub2RlIGV4ZWN1dG9yIChhbmQgdGhlXG4gKiBgR3JhcGhSdW5Mb2dnZXJgIGRpc3BhdGNoKSBjYW4gZm9yd2FyZCBvbnRvIHRoZSBydW4ncyBgY3R4LmxvZ2dlcmAuXG4gKiBJbmNsdWRlcyBldmVyeSBsZXZlbCByZW5kZXJlZCBieSB0aGUgQ2hyb21lLWNvbnNvbGUtc3R5bGUgd2lkZ2V0IGZpbHRlci5cbiAqL1xuZXhwb3J0IHR5cGUgTG9nTm9kZUxldmVsID1cbiAgfCBcInNpbGx5XCJcbiAgfCBcInRyYWNlXCJcbiAgfCBcImRlYnVnXCJcbiAgfCBcInZlcmJvc2VcIlxuICB8IFwiaW5mb1wiXG4gIHwgXCJ3YXJuXCJcbiAgfCBcImVycm9yXCJcbiAgfCBcImNyaXRpY2FsXCJcbiAgfCBcImZhdGFsXCI7XG5cbi8qKlxuICogUnVuLXNjb3BlZCBTU0Ugc3Vic2NyaXB0aW9uIG93bmVyc2hpcCBrZXkgKERFQ0FGLTQ4IMKnNC4yKS5cbiAqXG4gKiBTdWJzY3JpcHRpb24tbW9kZSBTU0UgaXMga2V5ZWQgYnkgcnVuIG93bmVyc2hpcDogYSBjb25zdW1lciBpcyBvbmx5XG4gKiBkZWxpdmVyZWQgZ3JhcGggZXZlbnRzL2xvZ3MgZm9yIHJ1bnMgaXQgb3ducy4gVGhpcyB0dXBsZSBpcyB0aGVcbiAqIGVuZ2luZS1hZ25vc3RpYyBjb250cmFjdCBhIE1hc3RyYS9OZXN0SlMgZHJpdmVyIE1VU1QgaG9ub3VyIOKAlFxuICogYHJ1bklkYCB0b2dldGhlciB3aXRoIHRoZSBvd25pbmcgYHVzZXJgIChvciBhIGBzeXN0ZW1gIHJ1bm5lciB3aGVuIHRoZVxuICogaWRlbnRpdHkgaXMgYWJzZW50KSBzY29wZSBldmVyeSBgZ3JhcGgucnVuLipgIGV2ZW50IGJlZm9yZSBgbmV4dCguLi4pYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcmFwaFJ1blN1YnNjcmlwdGlvbiB7XG4gIHJ1bklkOiBzdHJpbmc7XG4gIG93bmVyVXNlcjogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIE9wdGlvbmFsIHRvcGljIGZpbHRlciAoZS5nLiBgZ3JhcGgucnVuLmxvZ2AsIGBncmFwaC5ydW4uc3RhdGVgKS4gKi9cbiAgdG9waWNzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogU3RhdHVzIG9mIGEgZ3JhcGggcnVuIGxpZmVjeWNsZSAoREVDQUYtNTAgwqc0LjE0KS5cbiAqXG4gKiBGcm9udGVuZC1zYWZlOiByZW5kZXJlZCBhcyBydW4gc3RhdHVzIGJhZGdlcyBhbmQgbWlycm9yZWQgaW50byB0aGVcbiAqIEFuZ3VsYXIgcnVuIHN0YXRlIHN0b3JlLiBgcXVldWVkYCDigJQgYWNjZXB0ZWQsIG5vdCB5ZXQgdmFsaWRhdGVkO1xuICogYHZhbGlkYXRpbmdgIOKAlCBkb2N1bWVudCB2YWxpZGF0aW9uIGdhdGUgaW4gcHJvZ3Jlc3M7IGBydW5uaW5nYCDigJQgdGhlXG4gKiBlbmdpbmUgaXMgZXhlY3V0aW5nIHRoZSBwbGFubmVkIGdyYXBoLlxuICogYHN1Y2NlZWRlZGAvYGZhaWxlZGAvYGNhbmNlbGxlZGAgYXJlIHRlcm1pbmFsIChgaXNHcmFwaFJ1blRlcm1pbmFsU3RhdHVzYCkuXG4gKi9cbmV4cG9ydCB0eXBlIEdyYXBoUnVuU3RhdHVzID1cbiAgfCBcInF1ZXVlZFwiXG4gIHwgXCJ2YWxpZGF0aW5nXCJcbiAgfCBcInJ1bm5pbmdcIlxuICB8IFwic3VjY2VlZGVkXCJcbiAgfCBcImZhaWxlZFwiXG4gIHwgXCJjYW5jZWxsZWRcIjtcblxuLyoqXG4gKiBGcm9udGVuZC1zYWZlIHJ1biBldmVudCBlbnZlbG9wZSBzdHJlYW1lZCBvdmVyIHRoZSBydW4gU1NFIGVuZHBvaW50XG4gKiAoYEdFVCAvZ3JhcGgvcnVucy86cnVuSWQvZXZlbnRzYCwgREVDQUYtNTAgwqc0LjE1KS5cbiAqXG4gKiBFbnZlbG9wZXMgYXJlIG51bWJlcmVkIHdpdGggYSBnYXBsZXNzIG1vbm90b25pY2FsbHkgaW5jcmVhc2luZyBgc2VxdWVuY2VgXG4gKiBzdGFydGluZyBhdCBgMWA7IGB0aW1lc3RhbXBgIGlzIHNlcmlhbGlzZWQgYXMgYW4gSVNPIHN0cmluZyBvdmVyIHRoZSB3aXJlXG4gKiAodW5saWtlIGBHcmFwaEV4ZWN1dGlvbkV2ZW50YCwgd2hvc2UgYHRpbWVzdGFtcGAgc3RheXMgYSBgRGF0ZWBcbiAqIGVuZ2luZS1zaWRlKS4gYGVycm9yP2AgY2FycmllcyB0aGUgc3RydWN0dXJlZCBmYWlsdXJlIHBheWxvYWQgZm9yXG4gKiBmYWlsdXJlLXR5cGVkIGV2ZW50czsgYHBhdGg/YCBzY29wZXMgbmVzdGVkIGxvb3AtcGxhbiBldmVudHMgdG8gdGhlaXJcbiAqIGV4ZWN1dGlvbiBwYXRoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdyYXBoUnVuRXZlbnRFbnZlbG9wZSB7XG4gIHJ1bklkOiBzdHJpbmc7XG4gIHdvcmtmbG93SWQ6IHN0cmluZztcbiAgc2VxdWVuY2U6IG51bWJlcjtcbiAgdHlwZTogR3JhcGhFeGVjdXRpb25FdmVudFR5cGU7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICBub2RlSWQ/OiBzdHJpbmc7XG4gIGVkZ2VJZD86IHN0cmluZztcbiAgcGF5bG9hZD86IEdyYXBoSnNvblZhbHVlO1xuICBlcnJvcj86IEdyYXBoRXhlY3V0aW9uRXJyb3JQYXlsb2FkO1xuICBwYXJlbnRSdW5JZD86IHN0cmluZztcbiAgcGF0aD86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIElucHV0IHRvIHRoZSBydW4gZXZlbnQgcHVibGlzaGVyIGJlZm9yZSBzZXF1ZW5jaW5nL3RpbWVzdGFtcGluZ1xuICogKERFQ0FGLTUwIMKnNC4xNCkuIFRoZSBwdWJsaXNoZXIgZmlsbHMgYHNlcXVlbmNlYCBhbmQgYHRpbWVzdGFtcGAuXG4gKi9cbmV4cG9ydCB0eXBlIEdyYXBoUnVuRXZlbnRFbnZlbG9wZUlucHV0ID0gT21pdDxcbiAgR3JhcGhSdW5FdmVudEVudmVsb3BlLFxuICBcInNlcXVlbmNlXCIgfCBcInRpbWVzdGFtcFwiXG4+O1xuIl19
|
package/lib/esm/index.js
CHANGED
|
@@ -10,27 +10,28 @@ import { Metadata } from "@decaf-ts/decoration";
|
|
|
10
10
|
export * from "./overrides/index.js";
|
|
11
11
|
export * from "./model/index.js";
|
|
12
12
|
export * from "./ui/index.js";
|
|
13
|
+
export * from "./dashboard/index.js";
|
|
13
14
|
/**
|
|
14
15
|
* @description Current package version string
|
|
15
16
|
* @summary Stores the current package version for reference
|
|
16
17
|
* @const VERSION
|
|
17
18
|
* @memberOf module:ui-decorators
|
|
18
19
|
*/
|
|
19
|
-
export const VERSION = "0.20.
|
|
20
|
+
export const VERSION = "0.20.7";
|
|
20
21
|
/**
|
|
21
22
|
* @description Represents the current commit hash of the module build.
|
|
22
23
|
* @summary Stores the current git commit hash for the package. The build replaces
|
|
23
24
|
* the placeholder with the actual commit hash at publish time.
|
|
24
25
|
* @const COMMIT
|
|
25
26
|
*/
|
|
26
|
-
export const COMMIT = "
|
|
27
|
+
export const COMMIT = "f92e8d1";
|
|
27
28
|
/**
|
|
28
29
|
* @description Represents the full version string of the module.
|
|
29
30
|
* @summary Stores the semver version and commit hash for the package.
|
|
30
31
|
* The build replaces the placeholder with the actual `<version>-<commit>` value at publish time.
|
|
31
32
|
* @const FULL_VERSION
|
|
32
33
|
*/
|
|
33
|
-
export const FULL_VERSION = "0.20.
|
|
34
|
+
export const FULL_VERSION = "0.20.7-f92e8d1";
|
|
34
35
|
export const PACKAGE_NAME = "@decaf-ts/ui-decorators";
|
|
35
36
|
Metadata.registerLibrary(PACKAGE_NAME, VERSION);
|
|
36
|
-
//# sourceMappingURL=
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsOEJBQXFCO0FBQ3JCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxxQ0FBNEI7QUFDNUIsaUNBQXdCO0FBQ3hCLDhCQUFxQjtBQUNyQixxQ0FBNEI7QUFFNUI7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDO0FBRXJDOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQztBQUVuQzs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxrQkFBa0IsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDO0FBRTFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZGVzY3JpcHRpb24gVUkgZGVjb3JhdG9ycyBtb2R1bGUgZm9yIFR5cGVTY3JpcHQgYXBwbGljYXRpb25zXG4gKiBAc3VtbWFyeSBBIGNvbGxlY3Rpb24gb2YgZGVjb3JhdG9ycyBhbmQgdXRpbGl0aWVzIGZvciBidWlsZGluZyBVSSBjb21wb25lbnRzIGluIFR5cGVTY3JpcHQgYXBwbGljYXRpb25zLlxuICogVGhpcyBtb2R1bGUgZXhwb3J0cyBmdW5jdGlvbmFsaXR5IGZyb20gYm90aCB0aGUgbW9kZWwgYW5kIFVJIHN1Ym1vZHVsZXMsIHByb3ZpZGluZyBkZWNvcmF0b3JzIGZvclxuICogcmVuZGVyaW5nLCBjb21wb25lbnQgZGVmaW5pdGlvbiwgYW5kIFVJIHN0YXRlIG1hbmFnZW1lbnQuXG4gKiBAbW9kdWxlIHVpLWRlY29yYXRvcnNcbiAqL1xuXG5pbXBvcnQgXCIuL292ZXJyaWRlc1wiO1xuaW1wb3J0IHsgTWV0YWRhdGEgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRpb25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL292ZXJyaWRlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VpXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kYXNoYm9hcmRcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ3VycmVudCBwYWNrYWdlIHZlcnNpb24gc3RyaW5nXG4gKiBAc3VtbWFyeSBTdG9yZXMgdGhlIGN1cnJlbnQgcGFja2FnZSB2ZXJzaW9uIGZvciByZWZlcmVuY2VcbiAqIEBjb25zdCBWRVJTSU9OXG4gKiBAbWVtYmVyT2YgbW9kdWxlOnVpLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBcIiMjVkVSU0lPTiMjXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgdGhlIGN1cnJlbnQgY29tbWl0IGhhc2ggb2YgdGhlIG1vZHVsZSBidWlsZC5cbiAqIEBzdW1tYXJ5IFN0b3JlcyB0aGUgY3VycmVudCBnaXQgY29tbWl0IGhhc2ggZm9yIHRoZSBwYWNrYWdlLiBUaGUgYnVpbGQgcmVwbGFjZXNcbiAqIHRoZSBwbGFjZWhvbGRlciB3aXRoIHRoZSBhY3R1YWwgY29tbWl0IGhhc2ggYXQgcHVibGlzaCB0aW1lLlxuICogQGNvbnN0IENPTU1JVFxuICovXG5leHBvcnQgY29uc3QgQ09NTUlUID0gXCIjI0NPTU1JVCMjXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgdGhlIGZ1bGwgdmVyc2lvbiBzdHJpbmcgb2YgdGhlIG1vZHVsZS5cbiAqIEBzdW1tYXJ5IFN0b3JlcyB0aGUgc2VtdmVyIHZlcnNpb24gYW5kIGNvbW1pdCBoYXNoIGZvciB0aGUgcGFja2FnZS5cbiAqIFRoZSBidWlsZCByZXBsYWNlcyB0aGUgcGxhY2Vob2xkZXIgd2l0aCB0aGUgYWN0dWFsIGA8dmVyc2lvbj4tPGNvbW1pdD5gIHZhbHVlIGF0IHB1Ymxpc2ggdGltZS5cbiAqIEBjb25zdCBGVUxMX1ZFUlNJT05cbiAqL1xuZXhwb3J0IGNvbnN0IEZVTExfVkVSU0lPTiA9IFwiIyNGVUxMX1ZFUlNJT04jI1wiO1xuXG5leHBvcnQgY29uc3QgUEFDS0FHRV9OQU1FID0gXCIjI1BBQ0tBR0UjI1wiO1xuXG5NZXRhZGF0YS5yZWdpc3RlckxpYnJhcnkoUEFDS0FHRV9OQU1FLCBWRVJTSU9OKTtcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVuZGVyYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RlbC9SZW5kZXJhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIG9iamVjdHMgdGhhdCBjYW4gYmUgcmVuZGVyZWRcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGNvbnRyYWN0IGZvciBvYmplY3RzIHRoYXQgY2FuIGJlIHJlbmRlcmVkIHRvIGEgc3BlY2lmaWMgb3V0cHV0IGZvcm1hdFxuICogVGhpcyBpbnRlcmZhY2UgcHJvdmlkZXMgYSBnZW5lcmljIHJlbmRlciBtZXRob2QgdGhhdCBjYW4gdHJhbnNmb3JtIHRoZSBpbXBsZW1lbnRpbmcgb2JqZWN0XG4gKiBpbnRvIGFueSBkZXNpcmVkIG91dHB1dCBmb3JtYXQuXG4gKiBAaW50ZXJmYWNlIFJlbmRlcmFibGVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6dWktZGVjb3JhdG9ycy9tb2RlbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlcmFibGUge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlbmRlcnMgdGhlIG9iamVjdCB0byBhIHNwZWNpZmljIG91dHB1dCBmb3JtYXRcbiAgICogQHN1bW1hcnkgVHJhbnNmb3JtcyB0aGUgb2JqZWN0IGludG8gdGhlIGRlc2lyZWQgb3V0cHV0IHJlcHJlc2VudGF0aW9uXG4gICAqIEB0ZW1wbGF0ZSBSIFRoZSByZXR1cm4gdHlwZSBvZiB0aGUgcmVuZGVyIG9wZXJhdGlvblxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzIEFkZGl0aW9uYWwgYXJndW1lbnRzIG5lZWRlZCBmb3IgcmVuZGVyaW5nXG4gICAqIEByZXR1cm4ge1J9IFRoZSByZW5kZXJlZCBvdXRwdXQgaW4gdGhlIHNwZWNpZmllZCBmb3JtYXRcbiAgICovXG4gIHJlbmRlcjxSPiguLi5hcmdzOiBhbnlbXSk6IFI7XG59XG4iXX0=
|