@decaf-ts/integrations 0.3.11 → 0.3.12
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/integrations.cjs +1649 -2
- package/dist/integrations.js +1885 -2
- package/lib/cjs/blob/azure/AzureBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/azure/index.cjs +2 -2
- package/lib/cjs/blob/core/BlobErrors.cjs +2 -2
- package/lib/cjs/blob/core/BlobKey.cjs +2 -2
- package/lib/cjs/blob/core/BlobStoreFactory.cjs +2 -2
- package/lib/cjs/blob/core/BlobStoreService.cjs +2 -2
- package/lib/cjs/blob/core/BlobTypes.cjs +2 -2
- package/lib/cjs/blob/core/BlobValue.cjs +2 -2
- package/lib/cjs/blob/core/index.cjs +2 -2
- package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/gcp/index.cjs +2 -2
- package/lib/cjs/blob/index.cjs +2 -2
- package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs +2 -2
- package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs +2 -2
- package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs +2 -2
- package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs +2 -2
- package/lib/cjs/blob/ipfs/index.cjs +2 -2
- package/lib/cjs/blob/local/LocalBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/local/index.cjs +2 -2
- package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/memory/index.cjs +2 -2
- package/lib/cjs/blob/s3/MinioBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/s3/R2BlobStoreService.cjs +2 -2
- package/lib/cjs/blob/s3/S3BlobStoreService.cjs +2 -2
- package/lib/cjs/blob/s3/index.cjs +2 -2
- package/lib/cjs/docker/DockerComposeService.cjs +2 -2
- package/lib/cjs/docker/index.cjs +2 -2
- package/lib/cjs/graph/engine/constants.cjs +2 -2
- package/lib/cjs/graph/engine/decorators.cjs +2 -2
- package/lib/cjs/graph/engine/errors/GraphCycleError.cjs +2 -2
- package/lib/cjs/graph/engine/errors/GraphExecutionError.cjs +2 -2
- package/lib/cjs/graph/engine/errors/GraphInputError.cjs +2 -2
- package/lib/cjs/graph/engine/errors/GraphLoopLimitError.cjs +2 -2
- package/lib/cjs/graph/engine/errors/GraphPinningError.cjs +2 -2
- package/lib/cjs/graph/engine/errors/GraphPortError.cjs +2 -2
- package/lib/cjs/graph/engine/errors/GraphStoreError.cjs +2 -2
- package/lib/cjs/graph/engine/errors/GraphTopologyError.cjs +2 -2
- package/lib/cjs/graph/engine/errors/index.cjs +2 -2
- package/lib/cjs/graph/engine/events/GraphExecutionEvent.cjs +2 -2
- package/lib/cjs/graph/engine/events/GraphExecutionEventEmitter.cjs +2 -2
- package/lib/cjs/graph/engine/events/GraphExecutionEventFactory.cjs +2 -2
- package/lib/cjs/graph/engine/events/GraphExecutionObserver.cjs +2 -2
- package/lib/cjs/graph/engine/events/index.cjs +2 -2
- package/lib/cjs/graph/engine/execution/CodeGraphNodeExecutor.cjs +28 -31
- package/lib/cjs/graph/engine/execution/CodeSandboxEvaluator.cjs +2 -2
- package/lib/cjs/graph/engine/execution/GraphExecutionContext.cjs +2 -2
- package/lib/cjs/graph/engine/execution/GraphExecutionEngine.cjs +22 -3
- package/lib/cjs/graph/engine/execution/GraphExecutionFrame.cjs +2 -2
- package/lib/cjs/graph/engine/execution/GraphExecutionResult.cjs +2 -2
- package/lib/cjs/graph/engine/execution/GraphNodeExecutor.cjs +2 -2
- package/lib/cjs/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.cjs +128 -2
- package/lib/cjs/graph/engine/execution/LogGraphNodeExecutor.cjs +19 -0
- package/lib/cjs/graph/engine/execution/SwitchGraphNodeExecutor.cjs +23 -6
- package/lib/cjs/graph/engine/execution/index.cjs +3 -2
- package/lib/cjs/graph/engine/index.cjs +3 -2
- package/lib/cjs/graph/engine/loops/ConditionExpressionEvaluator.cjs +2 -2
- package/lib/cjs/graph/engine/loops/ForeachGraphNodeExecutor.cjs +3 -2
- package/lib/cjs/graph/engine/loops/GraphConditionEvaluator.cjs +2 -2
- package/lib/cjs/graph/engine/loops/GraphLoopExecutionContext.cjs +2 -2
- package/lib/cjs/graph/engine/loops/UntilGraphNodeExecutor.cjs +2 -2
- package/lib/cjs/graph/engine/loops/WhileGraphNodeExecutor.cjs +2 -2
- package/lib/cjs/graph/engine/loops/index.cjs +2 -2
- package/lib/cjs/graph/engine/pinning/GraphPinningDependencyResolver.cjs +2 -2
- package/lib/cjs/graph/engine/pinning/GraphPinningMetadata.cjs +2 -2
- package/lib/cjs/graph/engine/pinning/GraphPinningPolicy.cjs +2 -2
- package/lib/cjs/graph/engine/pinning/GraphPinningService.cjs +2 -2
- package/lib/cjs/graph/engine/pinning/index.cjs +2 -2
- package/lib/cjs/graph/engine/planning/GraphExecutionPlan.cjs +2 -2
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanEdge.cjs +2 -2
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanLayer.cjs +2 -2
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanNode.cjs +2 -2
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanner.cjs +2 -2
- package/lib/cjs/graph/engine/planning/GraphRelationResolver.cjs +2 -2
- package/lib/cjs/graph/engine/planning/GraphTopology.cjs +2 -2
- package/lib/cjs/graph/engine/planning/index.cjs +2 -2
- package/lib/cjs/graph/engine/registry/GraphNodeExecutorRegistry.cjs +2 -2
- package/lib/cjs/graph/engine/registry/GraphNodeExecutorResolver.cjs +2 -2
- package/lib/cjs/graph/engine/registry/index.cjs +2 -2
- package/lib/cjs/graph/engine/snapshots/GraphExecutionSnapshotMapper.cjs +2 -2
- package/lib/cjs/graph/engine/snapshots/index.cjs +2 -2
- package/lib/cjs/graph/engine/store/GraphCachedValue.cjs +2 -2
- package/lib/cjs/graph/engine/store/GraphValueKey.cjs +2 -2
- package/lib/cjs/graph/engine/store/GraphValueStore.cjs +2 -2
- package/lib/cjs/graph/engine/store/GraphValueStoreAdapter.cjs +2 -2
- package/lib/cjs/graph/engine/store/InMemoryGraphValueStoreAdapter.cjs +2 -2
- package/lib/cjs/graph/engine/store/index.cjs +2 -2
- package/lib/cjs/graph/engine/types.cjs +2 -2
- package/lib/cjs/graph/engine/validation/GraphDefinitionValidator.cjs +2 -2
- package/lib/cjs/graph/engine/validation/GraphPortSchemaResolver.cjs +2 -2
- package/lib/cjs/graph/engine/validation/GraphValueValidator.cjs +2 -2
- package/lib/cjs/graph/engine/validation/index.cjs +2 -2
- package/lib/cjs/graph/index.cjs +2 -2
- package/lib/cjs/graph/shared/constants.cjs +2 -2
- package/lib/cjs/graph/shared/index.cjs +2 -2
- package/lib/cjs/graph/shared/nodes/agent.cjs +2 -2
- package/lib/cjs/graph/shared/nodes/base.cjs +2 -2
- package/lib/cjs/graph/shared/nodes/category-styles.cjs +2 -2
- package/lib/cjs/graph/shared/nodes/flow-control.cjs +92 -11
- package/lib/cjs/graph/shared/nodes/index.cjs +2 -2
- package/lib/cjs/graph/shared/nodes/triggers.cjs +2 -2
- package/lib/cjs/graph/shared/types.cjs +2 -2
- package/lib/cjs/index.cjs +5 -5
- package/lib/cjs/keycloak/index.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakAuthService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakClientService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakRealmService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakRoleService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakUserService.cjs +2 -2
- package/lib/cjs/keycloak/services/index.cjs +2 -2
- package/lib/cjs/keycloak/services/runtime.cjs +2 -2
- package/lib/cjs/keycloak/types.cjs +2 -2
- package/lib/cjs/kibana/helpers.cjs +2 -2
- package/lib/cjs/kibana/index.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaAuthService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaDashboardService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaDataViewService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaRoleService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaSpaceService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaUserService.cjs +2 -2
- package/lib/cjs/kibana/services/index.cjs +2 -2
- package/lib/cjs/kibana/services/runtime.cjs +2 -2
- package/lib/cjs/kibana/types.cjs +2 -2
- package/lib/cjs/namespaces/index.cjs +2 -2
- package/lib/cjs/namespaces/models/authorization-model.cjs +2 -2
- package/lib/cjs/namespaces/models/effective-permission.model.cjs +2 -2
- package/lib/cjs/namespaces/models/group-membership.model.cjs +2 -2
- package/lib/cjs/namespaces/models/group.model.cjs +2 -2
- package/lib/cjs/namespaces/models/index.cjs +2 -2
- package/lib/cjs/namespaces/models/inheritance-block.model.cjs +2 -2
- package/lib/cjs/namespaces/models/org-unit-closure.model.cjs +2 -2
- package/lib/cjs/namespaces/models/org-unit-membership.model.cjs +2 -2
- package/lib/cjs/namespaces/models/org-unit-profile.model.cjs +2 -2
- package/lib/cjs/namespaces/models/org-unit.model.cjs +2 -2
- package/lib/cjs/namespaces/models/permission.model.cjs +2 -2
- package/lib/cjs/namespaces/models/principal.model.cjs +2 -2
- package/lib/cjs/namespaces/models/protected-resource.model.cjs +2 -2
- package/lib/cjs/namespaces/models/resource-grant.model.cjs +2 -2
- package/lib/cjs/namespaces/models/role-assignment.model.cjs +2 -2
- package/lib/cjs/namespaces/models/role-permission.model.cjs +2 -2
- package/lib/cjs/namespaces/models/role.model.cjs +2 -2
- package/lib/cjs/namespaces/models/storage-binding.model.cjs +2 -2
- package/lib/cjs/namespaces/models/tenant-membership.model.cjs +2 -2
- package/lib/cjs/namespaces/models/tenant-profile.model.cjs +2 -2
- package/lib/cjs/namespaces/models/tenant.model.cjs +2 -2
- package/lib/cjs/namespaces/models/user.model.cjs +2 -2
- package/lib/cjs/namespaces/org-based-authorization-system.cjs +2 -2
- package/lib/cjs/namespaces/org-based-authorization-system.models.cjs +2 -2
- package/lib/cjs/namespaces/org-based-authorization-system.services.cjs +2 -2
- package/lib/cjs/namespaces/services/authz.service.cjs +2 -2
- package/lib/cjs/namespaces/services/bootstrap.service.cjs +2 -2
- package/lib/cjs/namespaces/services/effective-permission.service.cjs +2 -2
- package/lib/cjs/namespaces/services/group-membership.service.cjs +2 -2
- package/lib/cjs/namespaces/services/group.service.cjs +2 -2
- package/lib/cjs/namespaces/services/index.cjs +2 -2
- package/lib/cjs/namespaces/services/inheritance-block.service.cjs +2 -2
- package/lib/cjs/namespaces/services/org-unit-closure.service.cjs +2 -2
- package/lib/cjs/namespaces/services/org-unit-membership.service.cjs +2 -2
- package/lib/cjs/namespaces/services/org-unit-profile.service.cjs +2 -2
- package/lib/cjs/namespaces/services/org-unit.service.cjs +2 -2
- package/lib/cjs/namespaces/services/permission.service.cjs +2 -2
- package/lib/cjs/namespaces/services/principal.service.cjs +2 -2
- package/lib/cjs/namespaces/services/protected-resource.service.cjs +2 -2
- package/lib/cjs/namespaces/services/resource-grant.service.cjs +2 -2
- package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs +2 -2
- package/lib/cjs/namespaces/services/role-assignment.service.cjs +2 -2
- package/lib/cjs/namespaces/services/role-permission.service.cjs +2 -2
- package/lib/cjs/namespaces/services/role.service.cjs +2 -2
- package/lib/cjs/namespaces/services/storage-binding.service.cjs +2 -2
- package/lib/cjs/namespaces/services/system-management.service.cjs +2 -2
- package/lib/cjs/namespaces/services/tenant-membership.service.cjs +2 -2
- package/lib/cjs/namespaces/services/tenant-profile.service.cjs +2 -2
- package/lib/cjs/namespaces/services/tenant.service.cjs +2 -2
- package/lib/cjs/namespaces/services/user.service.cjs +2 -2
- package/lib/cjs/namespaces/types.cjs +2 -2
- package/lib/cjs/namespaces/utils.cjs +2 -2
- package/lib/cjs/nest/authService.cjs +2 -2
- package/lib/cjs/nest/graph/GraphExecutionController.cjs +41 -52
- package/lib/cjs/nest/graph/GraphExecutionModule.cjs +47 -42
- package/lib/cjs/nest/graph/GraphExecutionResultModel.cjs +2 -20
- package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs +13 -48
- package/lib/cjs/nest/graph/GraphResultService.cjs +54 -0
- package/lib/cjs/nest/graph/GraphWorkflowModel.cjs +44 -0
- package/lib/cjs/nest/graph/GraphWorkflowService.cjs +62 -0
- package/lib/cjs/nest/graph/index.cjs +5 -8
- package/lib/cjs/nest/graph/main.cjs +3 -3
- package/lib/cjs/nest/index.cjs +2 -2
- package/lib/cjs/nest/keycloakAuthHandler.cjs +2 -2
- package/lib/cjs/nest/keycloakModule.cjs +2 -2
- package/lib/cjs/nest/logging.cjs +2 -2
- package/lib/cjs/nest/types.cjs +2 -2
- package/lib/cjs/nest/utils.cjs +2 -2
- package/lib/cjs/secrets/aws/AwsSecretService.cjs +2 -2
- package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/aws/index.cjs +2 -2
- package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs +2 -2
- package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/azure/index.cjs +2 -2
- package/lib/cjs/secrets/core/SecretErrors.cjs +2 -2
- package/lib/cjs/secrets/core/SecretName.cjs +2 -2
- package/lib/cjs/secrets/core/SecretReference.cjs +2 -2
- package/lib/cjs/secrets/core/SecretSerialization.cjs +2 -2
- package/lib/cjs/secrets/core/SecretService.cjs +2 -2
- package/lib/cjs/secrets/core/SecretTypes.cjs +2 -2
- package/lib/cjs/secrets/core/index.cjs +2 -2
- package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs +2 -2
- package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/gcp/index.cjs +2 -2
- package/lib/cjs/secrets/index.cjs +2 -2
- package/lib/cjs/secrets/model/ModelSecretCrypto.cjs +2 -2
- package/lib/cjs/secrets/model/ModelSecretService.cjs +2 -2
- package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/model/Secret.cjs +2 -2
- package/lib/cjs/secrets/model/index.cjs +2 -2
- package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs +2 -2
- package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/onepassword/index.cjs +2 -2
- package/lib/cjs/secrets/vault/VaultSecretService.cjs +2 -2
- package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/vault/index.cjs +2 -2
- package/lib/cjs/shared/runtime.cjs +2 -2
- package/lib/cjs/utils.cjs +2 -2
- package/lib/esm/blob/azure/AzureBlobStoreService.js +1 -1
- package/lib/esm/blob/azure/index.js +1 -1
- package/lib/esm/blob/core/BlobErrors.js +1 -1
- package/lib/esm/blob/core/BlobKey.js +1 -1
- package/lib/esm/blob/core/BlobStoreFactory.js +1 -1
- package/lib/esm/blob/core/BlobStoreService.js +1 -1
- package/lib/esm/blob/core/BlobTypes.js +1 -1
- package/lib/esm/blob/core/BlobValue.js +1 -1
- package/lib/esm/blob/core/index.js +1 -1
- package/lib/esm/blob/gcp/GcsBlobStoreService.js +1 -1
- package/lib/esm/blob/gcp/index.js +1 -1
- package/lib/esm/blob/index.js +1 -1
- package/lib/esm/blob/ipfs/IpfsBlobStoreService.js +1 -1
- package/lib/esm/blob/ipfs/IpfsKeyIndex.js +1 -1
- package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js +1 -1
- package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js +1 -1
- package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js +1 -1
- package/lib/esm/blob/ipfs/index.js +1 -1
- package/lib/esm/blob/local/LocalBlobStoreService.js +1 -1
- package/lib/esm/blob/local/index.js +1 -1
- package/lib/esm/blob/memory/MemoryBlobStoreService.js +1 -1
- package/lib/esm/blob/memory/index.js +1 -1
- package/lib/esm/blob/s3/MinioBlobStoreService.js +1 -1
- package/lib/esm/blob/s3/R2BlobStoreService.js +1 -1
- package/lib/esm/blob/s3/S3BlobStoreService.js +1 -1
- package/lib/esm/blob/s3/index.js +1 -1
- package/lib/esm/docker/DockerComposeService.js +1 -1
- package/lib/esm/docker/index.js +1 -1
- package/lib/esm/graph/engine/constants.js +1 -1
- package/lib/esm/graph/engine/decorators.js +1 -1
- package/lib/esm/graph/engine/errors/GraphCycleError.js +1 -1
- package/lib/esm/graph/engine/errors/GraphExecutionError.js +1 -1
- package/lib/esm/graph/engine/errors/GraphInputError.js +1 -1
- package/lib/esm/graph/engine/errors/GraphLoopLimitError.js +1 -1
- package/lib/esm/graph/engine/errors/GraphPinningError.js +1 -1
- package/lib/esm/graph/engine/errors/GraphPortError.js +1 -1
- package/lib/esm/graph/engine/errors/GraphStoreError.js +1 -1
- package/lib/esm/graph/engine/errors/GraphTopologyError.js +1 -1
- package/lib/esm/graph/engine/errors/index.js +1 -1
- package/lib/esm/graph/engine/events/GraphExecutionEvent.js +1 -1
- package/lib/esm/graph/engine/events/GraphExecutionEventEmitter.js +1 -1
- package/lib/esm/graph/engine/events/GraphExecutionEventFactory.js +1 -1
- package/lib/esm/graph/engine/events/GraphExecutionObserver.js +1 -1
- package/lib/esm/graph/engine/events/index.js +1 -1
- package/lib/esm/graph/engine/execution/CodeGraphNodeExecutor.js +27 -30
- package/lib/esm/graph/engine/execution/CodeSandboxEvaluator.js +1 -1
- package/lib/esm/graph/engine/execution/GraphExecutionContext.js +1 -1
- package/lib/esm/graph/engine/execution/GraphExecutionEngine.js +21 -2
- package/lib/esm/graph/engine/execution/GraphExecutionFrame.js +1 -1
- package/lib/esm/graph/engine/execution/GraphExecutionResult.js +1 -1
- package/lib/esm/graph/engine/execution/GraphNodeExecutor.js +1 -1
- package/lib/esm/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.js +127 -1
- package/lib/esm/graph/engine/execution/LogGraphNodeExecutor.js +14 -0
- package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js +22 -5
- package/lib/esm/graph/engine/execution/index.js +2 -1
- package/lib/esm/graph/engine/index.js +2 -1
- package/lib/esm/graph/engine/loops/ConditionExpressionEvaluator.js +1 -1
- package/lib/esm/graph/engine/loops/ForeachGraphNodeExecutor.js +2 -1
- package/lib/esm/graph/engine/loops/GraphConditionEvaluator.js +1 -1
- package/lib/esm/graph/engine/loops/GraphLoopExecutionContext.js +1 -1
- package/lib/esm/graph/engine/loops/UntilGraphNodeExecutor.js +1 -1
- package/lib/esm/graph/engine/loops/WhileGraphNodeExecutor.js +1 -1
- package/lib/esm/graph/engine/loops/index.js +1 -1
- package/lib/esm/graph/engine/pinning/GraphPinningDependencyResolver.js +1 -1
- package/lib/esm/graph/engine/pinning/GraphPinningMetadata.js +1 -1
- package/lib/esm/graph/engine/pinning/GraphPinningPolicy.js +1 -1
- package/lib/esm/graph/engine/pinning/GraphPinningService.js +1 -1
- package/lib/esm/graph/engine/pinning/index.js +1 -1
- package/lib/esm/graph/engine/planning/GraphExecutionPlan.js +1 -1
- package/lib/esm/graph/engine/planning/GraphExecutionPlanEdge.js +1 -1
- package/lib/esm/graph/engine/planning/GraphExecutionPlanLayer.js +1 -1
- package/lib/esm/graph/engine/planning/GraphExecutionPlanNode.js +1 -1
- package/lib/esm/graph/engine/planning/GraphExecutionPlanner.js +1 -1
- package/lib/esm/graph/engine/planning/GraphRelationResolver.js +1 -1
- package/lib/esm/graph/engine/planning/GraphTopology.js +1 -1
- package/lib/esm/graph/engine/planning/index.js +1 -1
- package/lib/esm/graph/engine/registry/GraphNodeExecutorRegistry.js +1 -1
- package/lib/esm/graph/engine/registry/GraphNodeExecutorResolver.js +1 -1
- package/lib/esm/graph/engine/registry/index.js +1 -1
- package/lib/esm/graph/engine/snapshots/GraphExecutionSnapshotMapper.js +1 -1
- package/lib/esm/graph/engine/snapshots/index.js +1 -1
- package/lib/esm/graph/engine/store/GraphCachedValue.js +1 -1
- package/lib/esm/graph/engine/store/GraphValueKey.js +1 -1
- package/lib/esm/graph/engine/store/GraphValueStore.js +1 -1
- package/lib/esm/graph/engine/store/GraphValueStoreAdapter.js +1 -1
- package/lib/esm/graph/engine/store/InMemoryGraphValueStoreAdapter.js +1 -1
- package/lib/esm/graph/engine/store/index.js +1 -1
- package/lib/esm/graph/engine/types.js +1 -1
- package/lib/esm/graph/engine/validation/GraphDefinitionValidator.js +1 -1
- package/lib/esm/graph/engine/validation/GraphPortSchemaResolver.js +1 -1
- package/lib/esm/graph/engine/validation/GraphValueValidator.js +1 -1
- package/lib/esm/graph/engine/validation/index.js +1 -1
- package/lib/esm/graph/index.js +1 -1
- package/lib/esm/graph/shared/constants.js +1 -1
- package/lib/esm/graph/shared/index.js +1 -1
- package/lib/esm/graph/shared/nodes/agent.js +1 -1
- package/lib/esm/graph/shared/nodes/base.js +1 -1
- package/lib/esm/graph/shared/nodes/category-styles.js +1 -1
- package/lib/esm/graph/shared/nodes/flow-control.js +91 -10
- package/lib/esm/graph/shared/nodes/index.js +1 -1
- package/lib/esm/graph/shared/nodes/triggers.js +1 -1
- package/lib/esm/graph/shared/types.js +1 -1
- package/lib/esm/index.js +4 -4
- package/lib/esm/keycloak/index.js +1 -1
- package/lib/esm/keycloak/services/KeycloakAuthService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakClientService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakRealmService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakRoleService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakUserService.js +1 -1
- package/lib/esm/keycloak/services/index.js +1 -1
- package/lib/esm/keycloak/services/runtime.js +1 -1
- package/lib/esm/keycloak/types.js +1 -1
- package/lib/esm/kibana/helpers.js +1 -1
- package/lib/esm/kibana/index.js +1 -1
- package/lib/esm/kibana/services/KibanaAuthService.js +1 -1
- package/lib/esm/kibana/services/KibanaDashboardService.js +1 -1
- package/lib/esm/kibana/services/KibanaDataViewService.js +1 -1
- package/lib/esm/kibana/services/KibanaRoleService.js +1 -1
- package/lib/esm/kibana/services/KibanaService.js +1 -1
- package/lib/esm/kibana/services/KibanaSpaceService.js +1 -1
- package/lib/esm/kibana/services/KibanaUserService.js +1 -1
- package/lib/esm/kibana/services/index.js +1 -1
- package/lib/esm/kibana/services/runtime.js +1 -1
- package/lib/esm/kibana/types.js +1 -1
- package/lib/esm/namespaces/index.js +1 -1
- package/lib/esm/namespaces/models/authorization-model.js +1 -1
- package/lib/esm/namespaces/models/effective-permission.model.js +1 -1
- package/lib/esm/namespaces/models/group-membership.model.js +1 -1
- package/lib/esm/namespaces/models/group.model.js +1 -1
- package/lib/esm/namespaces/models/index.js +1 -1
- package/lib/esm/namespaces/models/inheritance-block.model.js +1 -1
- package/lib/esm/namespaces/models/org-unit-closure.model.js +1 -1
- package/lib/esm/namespaces/models/org-unit-membership.model.js +1 -1
- package/lib/esm/namespaces/models/org-unit-profile.model.js +1 -1
- package/lib/esm/namespaces/models/org-unit.model.js +1 -1
- package/lib/esm/namespaces/models/permission.model.js +1 -1
- package/lib/esm/namespaces/models/principal.model.js +1 -1
- package/lib/esm/namespaces/models/protected-resource.model.js +1 -1
- package/lib/esm/namespaces/models/resource-grant.model.js +1 -1
- package/lib/esm/namespaces/models/role-assignment.model.js +1 -1
- package/lib/esm/namespaces/models/role-permission.model.js +1 -1
- package/lib/esm/namespaces/models/role.model.js +1 -1
- package/lib/esm/namespaces/models/storage-binding.model.js +1 -1
- package/lib/esm/namespaces/models/tenant-membership.model.js +1 -1
- package/lib/esm/namespaces/models/tenant-profile.model.js +1 -1
- package/lib/esm/namespaces/models/tenant.model.js +1 -1
- package/lib/esm/namespaces/models/user.model.js +1 -1
- package/lib/esm/namespaces/org-based-authorization-system.js +1 -1
- package/lib/esm/namespaces/org-based-authorization-system.models.js +1 -1
- package/lib/esm/namespaces/org-based-authorization-system.services.js +1 -1
- package/lib/esm/namespaces/services/authz.service.js +1 -1
- package/lib/esm/namespaces/services/bootstrap.service.js +1 -1
- package/lib/esm/namespaces/services/effective-permission.service.js +1 -1
- package/lib/esm/namespaces/services/group-membership.service.js +1 -1
- package/lib/esm/namespaces/services/group.service.js +1 -1
- package/lib/esm/namespaces/services/index.js +1 -1
- package/lib/esm/namespaces/services/inheritance-block.service.js +1 -1
- package/lib/esm/namespaces/services/org-unit-closure.service.js +1 -1
- package/lib/esm/namespaces/services/org-unit-membership.service.js +1 -1
- package/lib/esm/namespaces/services/org-unit-profile.service.js +1 -1
- package/lib/esm/namespaces/services/org-unit.service.js +1 -1
- package/lib/esm/namespaces/services/permission.service.js +1 -1
- package/lib/esm/namespaces/services/principal.service.js +1 -1
- package/lib/esm/namespaces/services/protected-resource.service.js +1 -1
- package/lib/esm/namespaces/services/resource-grant.service.js +1 -1
- package/lib/esm/namespaces/services/resource-lifecycle.service.js +1 -1
- package/lib/esm/namespaces/services/role-assignment.service.js +1 -1
- package/lib/esm/namespaces/services/role-permission.service.js +1 -1
- package/lib/esm/namespaces/services/role.service.js +1 -1
- package/lib/esm/namespaces/services/storage-binding.service.js +1 -1
- package/lib/esm/namespaces/services/system-management.service.js +1 -1
- package/lib/esm/namespaces/services/tenant-membership.service.js +1 -1
- package/lib/esm/namespaces/services/tenant-profile.service.js +1 -1
- package/lib/esm/namespaces/services/tenant.service.js +1 -1
- package/lib/esm/namespaces/services/user.service.js +1 -1
- package/lib/esm/namespaces/types.js +1 -1
- package/lib/esm/namespaces/utils.js +1 -1
- package/lib/esm/nest/authService.js +1 -1
- package/lib/esm/nest/graph/GraphExecutionController.js +40 -51
- package/lib/esm/nest/graph/GraphExecutionModule.js +12 -40
- package/lib/esm/nest/graph/GraphExecutionResultModel.js +1 -19
- package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js +13 -48
- package/lib/esm/nest/graph/GraphResultService.js +45 -0
- package/lib/esm/nest/graph/GraphWorkflowModel.js +35 -0
- package/lib/esm/nest/graph/GraphWorkflowService.js +53 -0
- package/lib/esm/nest/graph/index.js +4 -7
- package/lib/esm/nest/graph/main.js +2 -2
- package/lib/esm/nest/index.js +1 -1
- package/lib/esm/nest/keycloakAuthHandler.js +1 -1
- package/lib/esm/nest/keycloakModule.js +1 -1
- package/lib/esm/nest/logging.js +1 -1
- package/lib/esm/nest/types.js +1 -1
- package/lib/esm/nest/utils.js +1 -1
- package/lib/esm/secrets/aws/AwsSecretService.js +1 -1
- package/lib/esm/secrets/aws/AwsSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/aws/index.js +1 -1
- package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js +1 -1
- package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/azure/index.js +1 -1
- package/lib/esm/secrets/core/SecretErrors.js +1 -1
- package/lib/esm/secrets/core/SecretName.js +1 -1
- package/lib/esm/secrets/core/SecretReference.js +1 -1
- package/lib/esm/secrets/core/SecretSerialization.js +1 -1
- package/lib/esm/secrets/core/SecretService.js +1 -1
- package/lib/esm/secrets/core/SecretTypes.js +1 -1
- package/lib/esm/secrets/core/index.js +1 -1
- package/lib/esm/secrets/gcp/GcpSecretManagerService.js +1 -1
- package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js +1 -1
- package/lib/esm/secrets/gcp/index.js +1 -1
- package/lib/esm/secrets/index.js +1 -1
- package/lib/esm/secrets/model/ModelSecretCrypto.js +1 -1
- package/lib/esm/secrets/model/ModelSecretService.js +1 -1
- package/lib/esm/secrets/model/ModelSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/model/Secret.js +1 -1
- package/lib/esm/secrets/model/index.js +1 -1
- package/lib/esm/secrets/onepassword/OnePasswordSecretService.js +1 -1
- package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/onepassword/index.js +1 -1
- package/lib/esm/secrets/vault/VaultSecretService.js +1 -1
- package/lib/esm/secrets/vault/VaultSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/vault/index.js +1 -1
- package/lib/esm/shared/runtime.js +1 -1
- package/lib/esm/utils.js +1 -1
- package/lib/types/graph/engine/execution/CodeGraphNodeExecutor.d.cts +17 -17
- package/lib/types/graph/engine/execution/CodeGraphNodeExecutor.d.mts +17 -17
- package/lib/types/graph/engine/execution/CodeSandboxEvaluator.d.cts +23 -0
- package/lib/types/graph/engine/execution/CodeSandboxEvaluator.d.mts +23 -0
- package/lib/types/graph/engine/execution/GraphExecutionEngine.d.cts +6 -0
- package/lib/types/graph/engine/execution/GraphExecutionEngine.d.mts +6 -0
- package/lib/types/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.d.cts +18 -0
- package/lib/types/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.d.mts +18 -0
- package/lib/types/graph/engine/execution/LogGraphNodeExecutor.d.cts +19 -0
- package/lib/types/graph/engine/execution/LogGraphNodeExecutor.d.mts +19 -0
- package/lib/types/graph/engine/execution/SwitchGraphNodeExecutor.d.cts +3 -2
- package/lib/types/graph/engine/execution/SwitchGraphNodeExecutor.d.mts +3 -2
- package/lib/types/graph/engine/execution/index.d.cts +1 -0
- package/lib/types/graph/engine/execution/index.d.mts +1 -0
- package/lib/types/graph/engine/index.d.cts +1 -0
- package/lib/types/graph/engine/index.d.mts +1 -0
- package/lib/types/graph/shared/nodes/flow-control.d.cts +29 -3
- package/lib/types/graph/shared/nodes/flow-control.d.mts +29 -3
- package/lib/types/graph/shared/types.d.cts +6 -0
- package/lib/types/graph/shared/types.d.mts +6 -0
- package/lib/types/index.d.cts +2 -2
- package/lib/types/index.d.mts +2 -2
- package/lib/types/nest/graph/GraphExecutionController.d.cts +11 -42
- package/lib/types/nest/graph/GraphExecutionController.d.mts +11 -42
- package/lib/types/nest/graph/GraphExecutionModule.d.cts +9 -29
- package/lib/types/nest/graph/GraphExecutionModule.d.mts +9 -29
- package/lib/types/nest/graph/GraphExecutionResultModel.d.cts +0 -34
- package/lib/types/nest/graph/GraphExecutionResultModel.d.mts +0 -34
- package/lib/types/nest/graph/GraphExecutorRegistryFactory.d.cts +9 -9
- package/lib/types/nest/graph/GraphExecutorRegistryFactory.d.mts +9 -9
- package/lib/types/nest/graph/GraphResultService.d.cts +8 -0
- package/lib/types/nest/graph/GraphResultService.d.mts +8 -0
- package/lib/types/nest/graph/GraphWorkflowModel.d.cts +7 -0
- package/lib/types/nest/graph/GraphWorkflowModel.d.mts +7 -0
- package/lib/types/nest/graph/GraphWorkflowService.d.cts +7 -0
- package/lib/types/nest/graph/GraphWorkflowService.d.mts +7 -0
- package/lib/types/nest/graph/index.d.cts +3 -6
- package/lib/types/nest/graph/index.d.mts +3 -6
- package/package.json +1 -1
- package/dist/integrations.cjs.map +0 -1
- package/dist/integrations.js.map +0 -1
- package/lib/cjs/blob/azure/AzureBlobStoreService.cjs.map +0 -1
- package/lib/cjs/blob/azure/index.cjs.map +0 -1
- package/lib/cjs/blob/core/BlobErrors.cjs.map +0 -1
- package/lib/cjs/blob/core/BlobKey.cjs.map +0 -1
- package/lib/cjs/blob/core/BlobStoreFactory.cjs.map +0 -1
- package/lib/cjs/blob/core/BlobStoreService.cjs.map +0 -1
- package/lib/cjs/blob/core/BlobTypes.cjs.map +0 -1
- package/lib/cjs/blob/core/BlobValue.cjs.map +0 -1
- package/lib/cjs/blob/core/index.cjs.map +0 -1
- package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs.map +0 -1
- package/lib/cjs/blob/gcp/index.cjs.map +0 -1
- package/lib/cjs/blob/index.cjs.map +0 -1
- package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs.map +0 -1
- package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs.map +0 -1
- package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs.map +0 -1
- package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs.map +0 -1
- package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs.map +0 -1
- package/lib/cjs/blob/ipfs/index.cjs.map +0 -1
- package/lib/cjs/blob/local/LocalBlobStoreService.cjs.map +0 -1
- package/lib/cjs/blob/local/index.cjs.map +0 -1
- package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs.map +0 -1
- package/lib/cjs/blob/memory/index.cjs.map +0 -1
- package/lib/cjs/blob/s3/MinioBlobStoreService.cjs.map +0 -1
- package/lib/cjs/blob/s3/R2BlobStoreService.cjs.map +0 -1
- package/lib/cjs/blob/s3/S3BlobStoreService.cjs.map +0 -1
- package/lib/cjs/blob/s3/index.cjs.map +0 -1
- package/lib/cjs/docker/DockerComposeService.cjs.map +0 -1
- package/lib/cjs/docker/index.cjs.map +0 -1
- package/lib/cjs/graph/engine/constants.cjs.map +0 -1
- package/lib/cjs/graph/engine/decorators.cjs.map +0 -1
- package/lib/cjs/graph/engine/errors/GraphCycleError.cjs.map +0 -1
- package/lib/cjs/graph/engine/errors/GraphExecutionError.cjs.map +0 -1
- package/lib/cjs/graph/engine/errors/GraphInputError.cjs.map +0 -1
- package/lib/cjs/graph/engine/errors/GraphLoopLimitError.cjs.map +0 -1
- package/lib/cjs/graph/engine/errors/GraphPinningError.cjs.map +0 -1
- package/lib/cjs/graph/engine/errors/GraphPortError.cjs.map +0 -1
- package/lib/cjs/graph/engine/errors/GraphStoreError.cjs.map +0 -1
- package/lib/cjs/graph/engine/errors/GraphTopologyError.cjs.map +0 -1
- package/lib/cjs/graph/engine/errors/index.cjs.map +0 -1
- package/lib/cjs/graph/engine/events/GraphExecutionEvent.cjs.map +0 -1
- package/lib/cjs/graph/engine/events/GraphExecutionEventEmitter.cjs.map +0 -1
- package/lib/cjs/graph/engine/events/GraphExecutionEventFactory.cjs.map +0 -1
- package/lib/cjs/graph/engine/events/GraphExecutionObserver.cjs.map +0 -1
- package/lib/cjs/graph/engine/events/index.cjs.map +0 -1
- package/lib/cjs/graph/engine/execution/CodeGraphNodeExecutor.cjs.map +0 -1
- package/lib/cjs/graph/engine/execution/CodeSandboxEvaluator.cjs.map +0 -1
- package/lib/cjs/graph/engine/execution/GraphExecutionContext.cjs.map +0 -1
- package/lib/cjs/graph/engine/execution/GraphExecutionEngine.cjs.map +0 -1
- package/lib/cjs/graph/engine/execution/GraphExecutionFrame.cjs.map +0 -1
- package/lib/cjs/graph/engine/execution/GraphExecutionResult.cjs.map +0 -1
- package/lib/cjs/graph/engine/execution/GraphNodeExecutor.cjs.map +0 -1
- package/lib/cjs/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.cjs.map +0 -1
- package/lib/cjs/graph/engine/execution/SwitchGraphNodeExecutor.cjs.map +0 -1
- package/lib/cjs/graph/engine/execution/index.cjs.map +0 -1
- package/lib/cjs/graph/engine/index.cjs.map +0 -1
- package/lib/cjs/graph/engine/loops/ConditionExpressionEvaluator.cjs.map +0 -1
- package/lib/cjs/graph/engine/loops/ForeachGraphNodeExecutor.cjs.map +0 -1
- package/lib/cjs/graph/engine/loops/GraphConditionEvaluator.cjs.map +0 -1
- package/lib/cjs/graph/engine/loops/GraphLoopExecutionContext.cjs.map +0 -1
- package/lib/cjs/graph/engine/loops/UntilGraphNodeExecutor.cjs.map +0 -1
- package/lib/cjs/graph/engine/loops/WhileGraphNodeExecutor.cjs.map +0 -1
- package/lib/cjs/graph/engine/loops/index.cjs.map +0 -1
- package/lib/cjs/graph/engine/pinning/GraphPinningDependencyResolver.cjs.map +0 -1
- package/lib/cjs/graph/engine/pinning/GraphPinningMetadata.cjs.map +0 -1
- package/lib/cjs/graph/engine/pinning/GraphPinningPolicy.cjs.map +0 -1
- package/lib/cjs/graph/engine/pinning/GraphPinningService.cjs.map +0 -1
- package/lib/cjs/graph/engine/pinning/index.cjs.map +0 -1
- package/lib/cjs/graph/engine/planning/GraphExecutionPlan.cjs.map +0 -1
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanEdge.cjs.map +0 -1
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanLayer.cjs.map +0 -1
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanNode.cjs.map +0 -1
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanner.cjs.map +0 -1
- package/lib/cjs/graph/engine/planning/GraphRelationResolver.cjs.map +0 -1
- package/lib/cjs/graph/engine/planning/GraphTopology.cjs.map +0 -1
- package/lib/cjs/graph/engine/planning/index.cjs.map +0 -1
- package/lib/cjs/graph/engine/registry/GraphNodeExecutorRegistry.cjs.map +0 -1
- package/lib/cjs/graph/engine/registry/GraphNodeExecutorResolver.cjs.map +0 -1
- package/lib/cjs/graph/engine/registry/index.cjs.map +0 -1
- package/lib/cjs/graph/engine/snapshots/GraphExecutionSnapshotMapper.cjs.map +0 -1
- package/lib/cjs/graph/engine/snapshots/index.cjs.map +0 -1
- package/lib/cjs/graph/engine/store/GraphCachedValue.cjs.map +0 -1
- package/lib/cjs/graph/engine/store/GraphValueKey.cjs.map +0 -1
- package/lib/cjs/graph/engine/store/GraphValueStore.cjs.map +0 -1
- package/lib/cjs/graph/engine/store/GraphValueStoreAdapter.cjs.map +0 -1
- package/lib/cjs/graph/engine/store/InMemoryGraphValueStoreAdapter.cjs.map +0 -1
- package/lib/cjs/graph/engine/store/index.cjs.map +0 -1
- package/lib/cjs/graph/engine/types.cjs.map +0 -1
- package/lib/cjs/graph/engine/validation/GraphDefinitionValidator.cjs.map +0 -1
- package/lib/cjs/graph/engine/validation/GraphPortSchemaResolver.cjs.map +0 -1
- package/lib/cjs/graph/engine/validation/GraphValueValidator.cjs.map +0 -1
- package/lib/cjs/graph/engine/validation/index.cjs.map +0 -1
- package/lib/cjs/graph/index.cjs.map +0 -1
- package/lib/cjs/graph/shared/constants.cjs.map +0 -1
- package/lib/cjs/graph/shared/index.cjs.map +0 -1
- package/lib/cjs/graph/shared/nodes/agent.cjs.map +0 -1
- package/lib/cjs/graph/shared/nodes/base.cjs.map +0 -1
- package/lib/cjs/graph/shared/nodes/category-styles.cjs.map +0 -1
- package/lib/cjs/graph/shared/nodes/flow-control.cjs.map +0 -1
- package/lib/cjs/graph/shared/nodes/index.cjs.map +0 -1
- package/lib/cjs/graph/shared/nodes/triggers.cjs.map +0 -1
- package/lib/cjs/graph/shared/types.cjs.map +0 -1
- package/lib/cjs/index.cjs.map +0 -1
- package/lib/cjs/keycloak/index.cjs.map +0 -1
- package/lib/cjs/keycloak/services/KeycloakAuthService.cjs.map +0 -1
- package/lib/cjs/keycloak/services/KeycloakClientService.cjs.map +0 -1
- package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs.map +0 -1
- package/lib/cjs/keycloak/services/KeycloakRealmService.cjs.map +0 -1
- package/lib/cjs/keycloak/services/KeycloakRoleService.cjs.map +0 -1
- package/lib/cjs/keycloak/services/KeycloakService.cjs.map +0 -1
- package/lib/cjs/keycloak/services/KeycloakUserService.cjs.map +0 -1
- package/lib/cjs/keycloak/services/index.cjs.map +0 -1
- package/lib/cjs/keycloak/services/runtime.cjs.map +0 -1
- package/lib/cjs/keycloak/types.cjs.map +0 -1
- package/lib/cjs/kibana/helpers.cjs.map +0 -1
- package/lib/cjs/kibana/index.cjs.map +0 -1
- package/lib/cjs/kibana/services/KibanaAuthService.cjs.map +0 -1
- package/lib/cjs/kibana/services/KibanaDashboardService.cjs.map +0 -1
- package/lib/cjs/kibana/services/KibanaDataViewService.cjs.map +0 -1
- package/lib/cjs/kibana/services/KibanaRoleService.cjs.map +0 -1
- package/lib/cjs/kibana/services/KibanaService.cjs.map +0 -1
- package/lib/cjs/kibana/services/KibanaSpaceService.cjs.map +0 -1
- package/lib/cjs/kibana/services/KibanaUserService.cjs.map +0 -1
- package/lib/cjs/kibana/services/index.cjs.map +0 -1
- package/lib/cjs/kibana/services/runtime.cjs.map +0 -1
- package/lib/cjs/kibana/types.cjs.map +0 -1
- package/lib/cjs/namespaces/index.cjs.map +0 -1
- package/lib/cjs/namespaces/models/authorization-model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/effective-permission.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/group-membership.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/group.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/index.cjs.map +0 -1
- package/lib/cjs/namespaces/models/inheritance-block.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/org-unit-closure.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/org-unit-membership.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/org-unit-profile.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/org-unit.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/permission.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/principal.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/protected-resource.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/resource-grant.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/role-assignment.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/role-permission.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/role.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/storage-binding.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/tenant-membership.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/tenant-profile.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/tenant.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/user.model.cjs.map +0 -1
- package/lib/cjs/namespaces/org-based-authorization-system.cjs.map +0 -1
- package/lib/cjs/namespaces/org-based-authorization-system.models.cjs.map +0 -1
- package/lib/cjs/namespaces/org-based-authorization-system.services.cjs.map +0 -1
- package/lib/cjs/namespaces/services/authz.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/bootstrap.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/effective-permission.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/group-membership.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/group.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/index.cjs.map +0 -1
- package/lib/cjs/namespaces/services/inheritance-block.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/org-unit-closure.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/org-unit-membership.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/org-unit-profile.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/org-unit.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/permission.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/principal.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/protected-resource.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/resource-grant.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/role-assignment.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/role-permission.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/role.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/storage-binding.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/system-management.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/tenant-membership.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/tenant-profile.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/tenant.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/user.service.cjs.map +0 -1
- package/lib/cjs/namespaces/types.cjs.map +0 -1
- package/lib/cjs/namespaces/utils.cjs.map +0 -1
- package/lib/cjs/nest/authService.cjs.map +0 -1
- package/lib/cjs/nest/graph/GraphExecutionController.cjs.map +0 -1
- package/lib/cjs/nest/graph/GraphExecutionModule.cjs.map +0 -1
- package/lib/cjs/nest/graph/GraphExecutionResultModel.cjs.map +0 -1
- package/lib/cjs/nest/graph/GraphExecutionResultRepository.cjs +0 -66
- package/lib/cjs/nest/graph/GraphExecutionResultRepository.cjs.map +0 -1
- package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs.map +0 -1
- package/lib/cjs/nest/graph/index.cjs.map +0 -1
- package/lib/cjs/nest/graph/main.cjs.map +0 -1
- package/lib/cjs/nest/index.cjs.map +0 -1
- package/lib/cjs/nest/keycloakAuthHandler.cjs.map +0 -1
- package/lib/cjs/nest/keycloakModule.cjs.map +0 -1
- package/lib/cjs/nest/logging.cjs.map +0 -1
- package/lib/cjs/nest/types.cjs.map +0 -1
- package/lib/cjs/nest/utils.cjs.map +0 -1
- package/lib/cjs/secrets/aws/AwsSecretService.cjs.map +0 -1
- package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs.map +0 -1
- package/lib/cjs/secrets/aws/index.cjs.map +0 -1
- package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs.map +0 -1
- package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs.map +0 -1
- package/lib/cjs/secrets/azure/index.cjs.map +0 -1
- package/lib/cjs/secrets/core/SecretErrors.cjs.map +0 -1
- package/lib/cjs/secrets/core/SecretName.cjs.map +0 -1
- package/lib/cjs/secrets/core/SecretReference.cjs.map +0 -1
- package/lib/cjs/secrets/core/SecretSerialization.cjs.map +0 -1
- package/lib/cjs/secrets/core/SecretService.cjs.map +0 -1
- package/lib/cjs/secrets/core/SecretTypes.cjs.map +0 -1
- package/lib/cjs/secrets/core/index.cjs.map +0 -1
- package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs.map +0 -1
- package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs.map +0 -1
- package/lib/cjs/secrets/gcp/index.cjs.map +0 -1
- package/lib/cjs/secrets/index.cjs.map +0 -1
- package/lib/cjs/secrets/model/ModelSecretCrypto.cjs.map +0 -1
- package/lib/cjs/secrets/model/ModelSecretService.cjs.map +0 -1
- package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs.map +0 -1
- package/lib/cjs/secrets/model/Secret.cjs.map +0 -1
- package/lib/cjs/secrets/model/index.cjs.map +0 -1
- package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs.map +0 -1
- package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs.map +0 -1
- package/lib/cjs/secrets/onepassword/index.cjs.map +0 -1
- package/lib/cjs/secrets/vault/VaultSecretService.cjs.map +0 -1
- package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs.map +0 -1
- package/lib/cjs/secrets/vault/index.cjs.map +0 -1
- package/lib/cjs/shared/runtime.cjs.map +0 -1
- package/lib/cjs/utils.cjs.map +0 -1
- package/lib/esm/blob/azure/AzureBlobStoreService.js.map +0 -1
- package/lib/esm/blob/azure/index.js.map +0 -1
- package/lib/esm/blob/core/BlobErrors.js.map +0 -1
- package/lib/esm/blob/core/BlobKey.js.map +0 -1
- package/lib/esm/blob/core/BlobStoreFactory.js.map +0 -1
- package/lib/esm/blob/core/BlobStoreService.js.map +0 -1
- package/lib/esm/blob/core/BlobTypes.js.map +0 -1
- package/lib/esm/blob/core/BlobValue.js.map +0 -1
- package/lib/esm/blob/core/index.js.map +0 -1
- package/lib/esm/blob/gcp/GcsBlobStoreService.js.map +0 -1
- package/lib/esm/blob/gcp/index.js.map +0 -1
- package/lib/esm/blob/index.js.map +0 -1
- package/lib/esm/blob/ipfs/IpfsBlobStoreService.js.map +0 -1
- package/lib/esm/blob/ipfs/IpfsKeyIndex.js.map +0 -1
- package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js.map +0 -1
- package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js.map +0 -1
- package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js.map +0 -1
- package/lib/esm/blob/ipfs/index.js.map +0 -1
- package/lib/esm/blob/local/LocalBlobStoreService.js.map +0 -1
- package/lib/esm/blob/local/index.js.map +0 -1
- package/lib/esm/blob/memory/MemoryBlobStoreService.js.map +0 -1
- package/lib/esm/blob/memory/index.js.map +0 -1
- package/lib/esm/blob/s3/MinioBlobStoreService.js.map +0 -1
- package/lib/esm/blob/s3/R2BlobStoreService.js.map +0 -1
- package/lib/esm/blob/s3/S3BlobStoreService.js.map +0 -1
- package/lib/esm/blob/s3/index.js.map +0 -1
- package/lib/esm/docker/DockerComposeService.js.map +0 -1
- package/lib/esm/docker/index.js.map +0 -1
- package/lib/esm/graph/engine/constants.js.map +0 -1
- package/lib/esm/graph/engine/decorators.js.map +0 -1
- package/lib/esm/graph/engine/errors/GraphCycleError.js.map +0 -1
- package/lib/esm/graph/engine/errors/GraphExecutionError.js.map +0 -1
- package/lib/esm/graph/engine/errors/GraphInputError.js.map +0 -1
- package/lib/esm/graph/engine/errors/GraphLoopLimitError.js.map +0 -1
- package/lib/esm/graph/engine/errors/GraphPinningError.js.map +0 -1
- package/lib/esm/graph/engine/errors/GraphPortError.js.map +0 -1
- package/lib/esm/graph/engine/errors/GraphStoreError.js.map +0 -1
- package/lib/esm/graph/engine/errors/GraphTopologyError.js.map +0 -1
- package/lib/esm/graph/engine/errors/index.js.map +0 -1
- package/lib/esm/graph/engine/events/GraphExecutionEvent.js.map +0 -1
- package/lib/esm/graph/engine/events/GraphExecutionEventEmitter.js.map +0 -1
- package/lib/esm/graph/engine/events/GraphExecutionEventFactory.js.map +0 -1
- package/lib/esm/graph/engine/events/GraphExecutionObserver.js.map +0 -1
- package/lib/esm/graph/engine/events/index.js.map +0 -1
- package/lib/esm/graph/engine/execution/CodeGraphNodeExecutor.js.map +0 -1
- package/lib/esm/graph/engine/execution/CodeSandboxEvaluator.js.map +0 -1
- package/lib/esm/graph/engine/execution/GraphExecutionContext.js.map +0 -1
- package/lib/esm/graph/engine/execution/GraphExecutionEngine.js.map +0 -1
- package/lib/esm/graph/engine/execution/GraphExecutionFrame.js.map +0 -1
- package/lib/esm/graph/engine/execution/GraphExecutionResult.js.map +0 -1
- package/lib/esm/graph/engine/execution/GraphNodeExecutor.js.map +0 -1
- package/lib/esm/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.js.map +0 -1
- package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js.map +0 -1
- package/lib/esm/graph/engine/execution/index.js.map +0 -1
- package/lib/esm/graph/engine/index.js.map +0 -1
- package/lib/esm/graph/engine/loops/ConditionExpressionEvaluator.js.map +0 -1
- package/lib/esm/graph/engine/loops/ForeachGraphNodeExecutor.js.map +0 -1
- package/lib/esm/graph/engine/loops/GraphConditionEvaluator.js.map +0 -1
- package/lib/esm/graph/engine/loops/GraphLoopExecutionContext.js.map +0 -1
- package/lib/esm/graph/engine/loops/UntilGraphNodeExecutor.js.map +0 -1
- package/lib/esm/graph/engine/loops/WhileGraphNodeExecutor.js.map +0 -1
- package/lib/esm/graph/engine/loops/index.js.map +0 -1
- package/lib/esm/graph/engine/pinning/GraphPinningDependencyResolver.js.map +0 -1
- package/lib/esm/graph/engine/pinning/GraphPinningMetadata.js.map +0 -1
- package/lib/esm/graph/engine/pinning/GraphPinningPolicy.js.map +0 -1
- package/lib/esm/graph/engine/pinning/GraphPinningService.js.map +0 -1
- package/lib/esm/graph/engine/pinning/index.js.map +0 -1
- package/lib/esm/graph/engine/planning/GraphExecutionPlan.js.map +0 -1
- package/lib/esm/graph/engine/planning/GraphExecutionPlanEdge.js.map +0 -1
- package/lib/esm/graph/engine/planning/GraphExecutionPlanLayer.js.map +0 -1
- package/lib/esm/graph/engine/planning/GraphExecutionPlanNode.js.map +0 -1
- package/lib/esm/graph/engine/planning/GraphExecutionPlanner.js.map +0 -1
- package/lib/esm/graph/engine/planning/GraphRelationResolver.js.map +0 -1
- package/lib/esm/graph/engine/planning/GraphTopology.js.map +0 -1
- package/lib/esm/graph/engine/planning/index.js.map +0 -1
- package/lib/esm/graph/engine/registry/GraphNodeExecutorRegistry.js.map +0 -1
- package/lib/esm/graph/engine/registry/GraphNodeExecutorResolver.js.map +0 -1
- package/lib/esm/graph/engine/registry/index.js.map +0 -1
- package/lib/esm/graph/engine/snapshots/GraphExecutionSnapshotMapper.js.map +0 -1
- package/lib/esm/graph/engine/snapshots/index.js.map +0 -1
- package/lib/esm/graph/engine/store/GraphCachedValue.js.map +0 -1
- package/lib/esm/graph/engine/store/GraphValueKey.js.map +0 -1
- package/lib/esm/graph/engine/store/GraphValueStore.js.map +0 -1
- package/lib/esm/graph/engine/store/GraphValueStoreAdapter.js.map +0 -1
- package/lib/esm/graph/engine/store/InMemoryGraphValueStoreAdapter.js.map +0 -1
- package/lib/esm/graph/engine/store/index.js.map +0 -1
- package/lib/esm/graph/engine/types.js.map +0 -1
- package/lib/esm/graph/engine/validation/GraphDefinitionValidator.js.map +0 -1
- package/lib/esm/graph/engine/validation/GraphPortSchemaResolver.js.map +0 -1
- package/lib/esm/graph/engine/validation/GraphValueValidator.js.map +0 -1
- package/lib/esm/graph/engine/validation/index.js.map +0 -1
- package/lib/esm/graph/index.js.map +0 -1
- package/lib/esm/graph/shared/constants.js.map +0 -1
- package/lib/esm/graph/shared/index.js.map +0 -1
- package/lib/esm/graph/shared/nodes/agent.js.map +0 -1
- package/lib/esm/graph/shared/nodes/base.js.map +0 -1
- package/lib/esm/graph/shared/nodes/category-styles.js.map +0 -1
- package/lib/esm/graph/shared/nodes/flow-control.js.map +0 -1
- package/lib/esm/graph/shared/nodes/index.js.map +0 -1
- package/lib/esm/graph/shared/nodes/triggers.js.map +0 -1
- package/lib/esm/graph/shared/types.js.map +0 -1
- package/lib/esm/index.js.map +0 -1
- package/lib/esm/keycloak/index.js.map +0 -1
- package/lib/esm/keycloak/services/KeycloakAuthService.js.map +0 -1
- package/lib/esm/keycloak/services/KeycloakClientService.js.map +0 -1
- package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js.map +0 -1
- package/lib/esm/keycloak/services/KeycloakRealmService.js.map +0 -1
- package/lib/esm/keycloak/services/KeycloakRoleService.js.map +0 -1
- package/lib/esm/keycloak/services/KeycloakService.js.map +0 -1
- package/lib/esm/keycloak/services/KeycloakUserService.js.map +0 -1
- package/lib/esm/keycloak/services/index.js.map +0 -1
- package/lib/esm/keycloak/services/runtime.js.map +0 -1
- package/lib/esm/keycloak/types.js.map +0 -1
- package/lib/esm/kibana/helpers.js.map +0 -1
- package/lib/esm/kibana/index.js.map +0 -1
- package/lib/esm/kibana/services/KibanaAuthService.js.map +0 -1
- package/lib/esm/kibana/services/KibanaDashboardService.js.map +0 -1
- package/lib/esm/kibana/services/KibanaDataViewService.js.map +0 -1
- package/lib/esm/kibana/services/KibanaRoleService.js.map +0 -1
- package/lib/esm/kibana/services/KibanaService.js.map +0 -1
- package/lib/esm/kibana/services/KibanaSpaceService.js.map +0 -1
- package/lib/esm/kibana/services/KibanaUserService.js.map +0 -1
- package/lib/esm/kibana/services/index.js.map +0 -1
- package/lib/esm/kibana/services/runtime.js.map +0 -1
- package/lib/esm/kibana/types.js.map +0 -1
- package/lib/esm/namespaces/index.js.map +0 -1
- package/lib/esm/namespaces/models/authorization-model.js.map +0 -1
- package/lib/esm/namespaces/models/effective-permission.model.js.map +0 -1
- package/lib/esm/namespaces/models/group-membership.model.js.map +0 -1
- package/lib/esm/namespaces/models/group.model.js.map +0 -1
- package/lib/esm/namespaces/models/index.js.map +0 -1
- package/lib/esm/namespaces/models/inheritance-block.model.js.map +0 -1
- package/lib/esm/namespaces/models/org-unit-closure.model.js.map +0 -1
- package/lib/esm/namespaces/models/org-unit-membership.model.js.map +0 -1
- package/lib/esm/namespaces/models/org-unit-profile.model.js.map +0 -1
- package/lib/esm/namespaces/models/org-unit.model.js.map +0 -1
- package/lib/esm/namespaces/models/permission.model.js.map +0 -1
- package/lib/esm/namespaces/models/principal.model.js.map +0 -1
- package/lib/esm/namespaces/models/protected-resource.model.js.map +0 -1
- package/lib/esm/namespaces/models/resource-grant.model.js.map +0 -1
- package/lib/esm/namespaces/models/role-assignment.model.js.map +0 -1
- package/lib/esm/namespaces/models/role-permission.model.js.map +0 -1
- package/lib/esm/namespaces/models/role.model.js.map +0 -1
- package/lib/esm/namespaces/models/storage-binding.model.js.map +0 -1
- package/lib/esm/namespaces/models/tenant-membership.model.js.map +0 -1
- package/lib/esm/namespaces/models/tenant-profile.model.js.map +0 -1
- package/lib/esm/namespaces/models/tenant.model.js.map +0 -1
- package/lib/esm/namespaces/models/user.model.js.map +0 -1
- package/lib/esm/namespaces/org-based-authorization-system.js.map +0 -1
- package/lib/esm/namespaces/org-based-authorization-system.models.js.map +0 -1
- package/lib/esm/namespaces/org-based-authorization-system.services.js.map +0 -1
- package/lib/esm/namespaces/services/authz.service.js.map +0 -1
- package/lib/esm/namespaces/services/bootstrap.service.js.map +0 -1
- package/lib/esm/namespaces/services/effective-permission.service.js.map +0 -1
- package/lib/esm/namespaces/services/group-membership.service.js.map +0 -1
- package/lib/esm/namespaces/services/group.service.js.map +0 -1
- package/lib/esm/namespaces/services/index.js.map +0 -1
- package/lib/esm/namespaces/services/inheritance-block.service.js.map +0 -1
- package/lib/esm/namespaces/services/org-unit-closure.service.js.map +0 -1
- package/lib/esm/namespaces/services/org-unit-membership.service.js.map +0 -1
- package/lib/esm/namespaces/services/org-unit-profile.service.js.map +0 -1
- package/lib/esm/namespaces/services/org-unit.service.js.map +0 -1
- package/lib/esm/namespaces/services/permission.service.js.map +0 -1
- package/lib/esm/namespaces/services/principal.service.js.map +0 -1
- package/lib/esm/namespaces/services/protected-resource.service.js.map +0 -1
- package/lib/esm/namespaces/services/resource-grant.service.js.map +0 -1
- package/lib/esm/namespaces/services/resource-lifecycle.service.js.map +0 -1
- package/lib/esm/namespaces/services/role-assignment.service.js.map +0 -1
- package/lib/esm/namespaces/services/role-permission.service.js.map +0 -1
- package/lib/esm/namespaces/services/role.service.js.map +0 -1
- package/lib/esm/namespaces/services/storage-binding.service.js.map +0 -1
- package/lib/esm/namespaces/services/system-management.service.js.map +0 -1
- package/lib/esm/namespaces/services/tenant-membership.service.js.map +0 -1
- package/lib/esm/namespaces/services/tenant-profile.service.js.map +0 -1
- package/lib/esm/namespaces/services/tenant.service.js.map +0 -1
- package/lib/esm/namespaces/services/user.service.js.map +0 -1
- package/lib/esm/namespaces/types.js.map +0 -1
- package/lib/esm/namespaces/utils.js.map +0 -1
- package/lib/esm/nest/authService.js.map +0 -1
- package/lib/esm/nest/graph/GraphExecutionController.js.map +0 -1
- package/lib/esm/nest/graph/GraphExecutionModule.js.map +0 -1
- package/lib/esm/nest/graph/GraphExecutionResultModel.js.map +0 -1
- package/lib/esm/nest/graph/GraphExecutionResultRepository.js +0 -60
- package/lib/esm/nest/graph/GraphExecutionResultRepository.js.map +0 -1
- package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js.map +0 -1
- package/lib/esm/nest/graph/index.js.map +0 -1
- package/lib/esm/nest/graph/main.js.map +0 -1
- package/lib/esm/nest/index.js.map +0 -1
- package/lib/esm/nest/keycloakAuthHandler.js.map +0 -1
- package/lib/esm/nest/keycloakModule.js.map +0 -1
- package/lib/esm/nest/logging.js.map +0 -1
- package/lib/esm/nest/types.js.map +0 -1
- package/lib/esm/nest/utils.js.map +0 -1
- package/lib/esm/secrets/aws/AwsSecretService.js.map +0 -1
- package/lib/esm/secrets/aws/AwsSecretServiceConfig.js.map +0 -1
- package/lib/esm/secrets/aws/index.js.map +0 -1
- package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js.map +0 -1
- package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js.map +0 -1
- package/lib/esm/secrets/azure/index.js.map +0 -1
- package/lib/esm/secrets/core/SecretErrors.js.map +0 -1
- package/lib/esm/secrets/core/SecretName.js.map +0 -1
- package/lib/esm/secrets/core/SecretReference.js.map +0 -1
- package/lib/esm/secrets/core/SecretSerialization.js.map +0 -1
- package/lib/esm/secrets/core/SecretService.js.map +0 -1
- package/lib/esm/secrets/core/SecretTypes.js.map +0 -1
- package/lib/esm/secrets/core/index.js.map +0 -1
- package/lib/esm/secrets/gcp/GcpSecretManagerService.js.map +0 -1
- package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js.map +0 -1
- package/lib/esm/secrets/gcp/index.js.map +0 -1
- package/lib/esm/secrets/index.js.map +0 -1
- package/lib/esm/secrets/model/ModelSecretCrypto.js.map +0 -1
- package/lib/esm/secrets/model/ModelSecretService.js.map +0 -1
- package/lib/esm/secrets/model/ModelSecretServiceConfig.js.map +0 -1
- package/lib/esm/secrets/model/Secret.js.map +0 -1
- package/lib/esm/secrets/model/index.js.map +0 -1
- package/lib/esm/secrets/onepassword/OnePasswordSecretService.js.map +0 -1
- package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js.map +0 -1
- package/lib/esm/secrets/onepassword/index.js.map +0 -1
- package/lib/esm/secrets/vault/VaultSecretService.js.map +0 -1
- package/lib/esm/secrets/vault/VaultSecretServiceConfig.js.map +0 -1
- package/lib/esm/secrets/vault/index.js.map +0 -1
- package/lib/esm/shared/runtime.js.map +0 -1
- package/lib/esm/utils.js.map +0 -1
- package/lib/types/nest/graph/GraphExecutionResultRepository.d.cts +0 -38
- package/lib/types/nest/graph/GraphExecutionResultRepository.d.mts +0 -38
|
@@ -288,12 +288,31 @@ class GraphExecutionEngine {
|
|
|
288
288
|
}
|
|
289
289
|
/**
|
|
290
290
|
* Resolves a node's input values from incoming edges.
|
|
291
|
+
*
|
|
292
|
+
* When multiple edges target the same port, their values are spread into the
|
|
293
|
+
* top-level inputs keyed by each edge's `sourcePort`. This allows multiple
|
|
294
|
+
* workflow input badges to connect to a single port (e.g. the Code node's
|
|
295
|
+
* `data` port) and have all values accessible directly as
|
|
296
|
+
* `$input.{sourcePort}` (e.g. `$input.count`, `$input.text`).
|
|
291
297
|
*/
|
|
292
298
|
resolveNodeInputs(frame, plan, planNode) {
|
|
293
299
|
const inputs = {};
|
|
294
300
|
const incoming = plan.incomingByNode.get(planNode.id) ?? [];
|
|
301
|
+
const edgesByTarget = new Map();
|
|
295
302
|
for (const edge of incoming) {
|
|
296
|
-
|
|
303
|
+
const list = edgesByTarget.get(edge.targetPort) ?? [];
|
|
304
|
+
list.push(edge);
|
|
305
|
+
edgesByTarget.set(edge.targetPort, list);
|
|
306
|
+
}
|
|
307
|
+
for (const [targetPort, edges] of edgesByTarget) {
|
|
308
|
+
if (edges.length === 1) {
|
|
309
|
+
inputs[targetPort] = frame.valueStore.getPort(edges[0].sourceNodeId, edges[0].sourcePort);
|
|
310
|
+
}
|
|
311
|
+
else {
|
|
312
|
+
for (const edge of edges) {
|
|
313
|
+
inputs[edge.sourcePort] = frame.valueStore.getPort(edge.sourceNodeId, edge.sourcePort);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
297
316
|
}
|
|
298
317
|
return inputs;
|
|
299
318
|
}
|
|
@@ -409,5 +428,5 @@ class GraphExecutionEngine {
|
|
|
409
428
|
}
|
|
410
429
|
}
|
|
411
430
|
exports.GraphExecutionEngine = GraphExecutionEngine;
|
|
412
|
-
//# sourceMappingURL=GraphExecutionEngine.js.map
|
|
413
|
-
//# sourceMappingURL=GraphExecutionEngine.cjs.map
|
|
431
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRpb25FbmdpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JhcGgvZW5naW5lL2V4ZWN1dGlvbi9HcmFwaEV4ZWN1dGlvbkVuZ2luZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLHVCQUF1QixHQUN4QiwwQkFBcUI7QUFDdEIsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixvQkFBb0IsR0FDckIsb0NBQStCO0FBQ2hDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSw2QkFBa0I7QUFhaEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLGtEQUE2QztBQUNsRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsa0RBQTZDO0FBRWxGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSwrQ0FBMEM7QUFJMUUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLHFEQUFnRDtBQUN6RixPQUFPLEVBQUUsZUFBZSxFQUFFLHNDQUFpQztBQUUzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsNENBQXVDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSwyQ0FBc0M7QUFDbkUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLHVEQUFrRDtBQUMzRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsbUNBQWdDO0FBQ2hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQ0FBOEI7QUFDNUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLGtDQUErQjtBQTRCbkU7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sT0FBTyxvQkFBb0I7SUFTL0IsWUFBWSxNQUFrQztRQUM1QyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxZQUFZLElBQUksSUFBSSwwQkFBMEIsRUFBRSxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sSUFBSSxJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFDN0QsSUFBSSxDQUFDLGlCQUFpQjtZQUNwQixNQUFNLENBQUMsaUJBQWlCLElBQUksSUFBSSw4QkFBOEIsRUFBRSxDQUFDO1FBQ25FLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQztRQUN4RCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixNQUFNLENBQUMsZUFBZSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUlELE9BQU8sQ0FBQyxRQUFnQztRQUN0QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxTQUFTLENBQUMsUUFBZ0M7UUFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlLENBQUMsS0FBMEI7UUFDOUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsT0FBTyxDQUNYLFFBQWlDLEVBQ2pDLFNBQStCLEVBQUUsRUFDakMsVUFBaUMsRUFBRTtRQUVuQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2pELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzdCLE1BQU0sWUFBWSxHQUFHLElBQUksMEJBQTBCLEVBQUUsQ0FBQztRQUN0RCxNQUFNLFVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMvRCxVQUFVLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekMsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBbUIsQ0FDbkMsS0FBSyxFQUNMLElBQUksRUFDSixVQUFVLEVBQ1YsWUFBWSxDQUNiLENBQUM7UUFFRixNQUFNLE1BQU0sR0FBRyxLQUFLLEVBQUUsT0FBcUMsRUFBRSxFQUFFO1lBQzdELE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUU7Z0JBQzFCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLHVCQUF1QixDQUFDLFdBQVc7Z0JBQ3pELEtBQUs7Z0JBQ0wsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO2dCQUM3QixVQUFVLEVBQUUsUUFBUSxDQUFDLElBQUk7Z0JBQ3pCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtnQkFDdEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksSUFBSTtnQkFDMUIsR0FBRyxPQUFPO2FBQ1gsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBRUYsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRTtZQUMxQixJQUFJLEVBQUUsdUJBQXVCLENBQUMsZ0JBQWdCO1lBQzlDLEtBQUs7WUFDTCxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsVUFBVSxFQUFFLFFBQVEsQ0FBQyxJQUFJO1lBQ3pCLElBQUk7WUFDSixNQUFNLEVBQUUsb0JBQW9CLENBQUMsT0FBTztZQUNwQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUU7U0FDcEIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRTtZQUMxQixJQUFJLEVBQUUsdUJBQXVCLENBQUMsZ0JBQWdCO1lBQzlDLEtBQUs7WUFDTCxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsVUFBVSxFQUFFLFFBQVEsQ0FBQyxJQUFJO1lBQ3pCLElBQUk7WUFDSixNQUFNLEVBQUUsb0JBQW9CLENBQUMsUUFBUTtZQUNyQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO1NBQ2xFLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQztZQUNILEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNsRSxDQUFDO1lBRUQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3ZELENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLG9CQUFvQixDQUFDLE1BQU0sQ0FDMUQsQ0FBQztZQUNGLElBQUksWUFBWSxFQUFFLEtBQUssRUFBRSxDQUFDO2dCQUN4QixNQUFNLElBQUksbUJBQW1CLENBQzNCLFlBQVksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUMxQixZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSx1QkFBdUIsRUFDbEQsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQzNCLENBQUM7WUFDSixDQUFDO1lBRUQsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBRWYsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRTtnQkFDMUIsSUFBSSxFQUFFLHVCQUF1QixDQUFDLGtCQUFrQjtnQkFDaEQsS0FBSztnQkFDTCxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7Z0JBQzdCLFVBQVUsRUFBRSxRQUFRLENBQUMsSUFBSTtnQkFDekIsSUFBSTtnQkFDSixNQUFNLEVBQUUsb0JBQW9CLENBQUMsU0FBUztnQkFDdEMsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO2FBQ3JELENBQUMsQ0FBQztZQUVILE9BQU8seUJBQXlCLENBQzlCLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLG9CQUFvQixDQUFDLFNBQVMsRUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FDZCxDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDZixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRWhELE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUU7Z0JBQzFCLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxlQUFlO2dCQUM3QyxLQUFLO2dCQUNMLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztnQkFDN0IsVUFBVSxFQUFFLFFBQVEsQ0FBQyxJQUFJO2dCQUN6QixJQUFJO2dCQUNKLE1BQU0sRUFBRSxvQkFBb0IsQ0FBQyxNQUFNO2dCQUNuQyxLQUFLLEVBQUUsWUFBWTthQUNwQixDQUFDLENBQUM7WUFFSCxPQUFPLHlCQUF5QixDQUM5QixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixvQkFBb0IsQ0FBQyxNQUFNLEVBQzNCLElBQUksQ0FBQyxRQUFRLENBQ2QsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQTRCO1FBQ3hDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVDLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQixNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBOEI7UUFDNUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDNUMsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsdUJBQXVCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVEOzs7T0FHRztJQUNLLG9CQUFvQjtRQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMxRCxPQUFPLElBQUksbUJBQW1CLENBQzVCLEtBQUssRUFDTCxJQUFJLGtCQUFrQixFQUFFLEVBQ3hCLElBQUksOEJBQThCLEVBQUUsQ0FDckMsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNLLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDNUIsTUFBYyxFQUNkLElBQTZCO1FBRTdCLE1BQU0sT0FBTyxHQUFHLElBQUksMEJBQTBCLEVBQUUsQ0FBQztRQUNqRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQzNCLEVBQUUsRUFBRSxFQUFFO1lBQ04sUUFBUSxFQUFFLENBQUM7WUFDWCxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDckIsS0FBSyxFQUFFLFNBQVM7WUFDaEIsVUFBVSxFQUFFLEVBQUU7WUFDZCxJQUFJO1lBQ0osTUFBTTtZQUNOLElBQUksRUFBRSxFQUFFO1NBQ3FELENBQUMsQ0FBQztRQUNqRSxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7T0FFRztJQUNLLEtBQUssQ0FBQyxZQUFZLENBQ3hCLEtBQTBCLEVBQzFCLElBQXdCLEVBQ3hCLEtBQStCLEVBQy9CLElBQTJCLEVBQzNCLE1BQThEO1FBRTlELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQzFCLENBQUMsRUFDRCxJQUFJLENBQUMsV0FBVyxJQUFJLHlCQUF5QixDQUM5QyxDQUFDO1FBQ0YsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBRXpCLE9BQU8sS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUMzQyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FDdkUsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxLQUFLLENBQUMsV0FBVyxDQUN2QixLQUEwQixFQUMxQixJQUF3QixFQUN4QixRQUFnQyxFQUNoQyxJQUEyQixFQUMzQixNQUE4RDtRQUU5RCxNQUFNLFNBQVMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzdCLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXJELE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUU7WUFDMUIsSUFBSSxFQUFFLHVCQUF1QixDQUFDLFlBQVk7WUFDMUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1lBQ2xCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUU7WUFDbkIsSUFBSSxFQUFFLFFBQVE7WUFDZCxNQUFNLEVBQUUsb0JBQW9CLENBQUMsT0FBTztTQUNyQyxDQUFDLENBQUM7UUFFSCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUU3RCxnRUFBZ0U7UUFDaEUsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3hFLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsS0FBSyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzdELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBRS9ELE1BQU0sVUFBVSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQzlCLE1BQU0sTUFBTSxHQUE2QjtvQkFDdkMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxFQUFFO29CQUNuQixNQUFNLEVBQUUsb0JBQW9CLENBQUMsTUFBTTtvQkFDbkMsTUFBTTtvQkFDTixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87b0JBQ3ZCLFNBQVM7b0JBQ1QsVUFBVTtvQkFDVixTQUFTLEVBQUUsSUFBSTtvQkFDZixNQUFNLEVBQUUsSUFBSTtvQkFDWixNQUFNLEVBQUUsRUFBRTtpQkFDWCxDQUFDO2dCQUNGLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFFL0IsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRTtvQkFDMUIsSUFBSSxFQUFFLHVCQUF1QixDQUFDLGNBQWM7b0JBQzVDLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztvQkFDbEIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO29CQUMzQixNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUU7b0JBQ25CLElBQUksRUFBRSxRQUFRO29CQUNkLE1BQU0sRUFBRSxvQkFBb0IsQ0FBQyxNQUFNO29CQUNuQyxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRTtpQkFDckMsQ0FBQyxDQUFDO2dCQUVILE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUU7b0JBQzFCLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxjQUFjO29CQUM1QyxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7b0JBQ2xCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtvQkFDM0IsTUFBTSxFQUFFLFFBQVEsQ0FBQyxFQUFFO29CQUNuQixJQUFJLEVBQUUsUUFBUTtvQkFDZCxNQUFNLEVBQUUsb0JBQW9CLENBQUMsU0FBUztvQkFDdEMsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRTtpQkFDdEQsQ0FBQyxDQUFDO2dCQUNILE9BQU87WUFDVCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxxQkFBcUIsQ0FDdkMsS0FBSyxDQUFDLEtBQUssRUFDWCxJQUFJLENBQUMsV0FBVyxFQUNoQixJQUFJLENBQUMsUUFBUSxFQUNiLFFBQVEsQ0FBQyxVQUFVLEVBQ25CLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxDQUFDLFFBQVEsQ0FDZCxDQUFDO1lBRUYsTUFBTSxPQUFPLEdBQUcsTUFBTSxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN4RCxNQUFNLGVBQWUsR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO1lBRXRDLEtBQUssQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUM7WUFDOUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBRWhFLE1BQU0sVUFBVSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDOUIsTUFBTSxNQUFNLEdBQTZCO2dCQUN2QyxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUU7Z0JBQ25CLE1BQU0sRUFBRSxvQkFBb0IsQ0FBQyxTQUFTO2dCQUN0QyxNQUFNO2dCQUNOLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixTQUFTO2dCQUNULFVBQVU7Z0JBQ1YsTUFBTSxFQUFFLEVBQUU7YUFDWCxDQUFDO1lBQ0YsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRS9CLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUU7Z0JBQzFCLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxjQUFjO2dCQUM1QyxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7Z0JBQ2xCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDM0IsTUFBTSxFQUFFLFFBQVEsQ0FBQyxFQUFFO2dCQUNuQixJQUFJLEVBQUUsUUFBUTtnQkFDZCxNQUFNLEVBQUUsb0JBQW9CLENBQUMsU0FBUztnQkFDdEMsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRTthQUN0QyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sVUFBVSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDOUIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoRCxNQUFNLE1BQU0sR0FBNkI7Z0JBQ3ZDLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFBRTtnQkFDbkIsTUFBTSxFQUFFLG9CQUFvQixDQUFDLE1BQU07Z0JBQ25DLE1BQU07Z0JBQ04sS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLFNBQVM7Z0JBQ1QsVUFBVTtnQkFDVixNQUFNLEVBQUUsRUFBRTthQUNYLENBQUM7WUFDRixLQUFLLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFL0IsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRTtnQkFDMUIsSUFBSSxFQUFFLHVCQUF1QixDQUFDLFdBQVc7Z0JBQ3pDLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztnQkFDbEIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUMzQixNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUU7Z0JBQ25CLElBQUksRUFBRSxRQUFRO2dCQUNkLE1BQU0sRUFBRSxvQkFBb0IsQ0FBQyxNQUFNO2dCQUNuQyxLQUFLLEVBQUUsWUFBWTthQUNwQixDQUFDLENBQUM7WUFFSCxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSTtnQkFBRSxNQUFNLEtBQUssQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ssaUJBQWlCLENBQ3ZCLEtBQTBCLEVBQzFCLElBQXdCLEVBQ3hCLFFBQWdDO1FBRWhDLE1BQU0sTUFBTSxHQUF5QixFQUFFLENBQUM7UUFDeEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUU1RCxNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztRQUN6RCxLQUFLLE1BQU0sSUFBSSxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzVCLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hCLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBRUQsS0FBSyxNQUFNLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2hELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDdkIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUMzQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUNyQixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUNwQixDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7b0JBQ3pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQ2hELElBQUksQ0FBQyxZQUFZLEVBQ2pCLElBQUksQ0FBQyxVQUFVLENBQ2hCLENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxLQUFLLENBQUMsY0FBYyxDQUMxQixLQUEwQixFQUMxQixJQUF3QixFQUN4QixRQUFnQyxFQUNoQyxNQUE0QjtRQUU1QixNQUFNLE1BQU0sR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUM7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUU3RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsNkJBQTZCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckYsT0FBTyxPQUFPLENBQUMsZUFBZSxDQUM1QixJQUFJLENBQUMsUUFBUSxFQUNiLFFBQVEsRUFDUixNQUFNLEVBQ04sZUFBZSxDQUNoQixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNLLDZCQUE2QixDQUNuQyxLQUEwQixFQUMxQixJQUF3QixFQUN4QixNQUFjO1FBRWQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDNUMsTUFBTSxXQUFXLEdBQUcsSUFBSSw4QkFBOEIsRUFBRSxDQUFDO1FBQ3pELE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sWUFBWSxHQUEyQixFQUFFLENBQUM7UUFDaEQsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNsRCxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNULE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM3QyxNQUFNLE1BQU0sR0FBRyxTQUFTLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQztnQkFDdkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3hFLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQzVDLElBQUksQ0FBQyxRQUFRLEVBQ2IsSUFBSSxFQUNKLE1BQU0sRUFDTixVQUFVLENBQ1gsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssa0JBQWtCLENBQ3hCLEtBQTBCLEVBQzFCLElBQXdCLEVBQ3hCLFFBQWdDLEVBQ2hDLE9BQTZCO1FBRTdCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDNUQsS0FBSyxNQUFNLElBQUksSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUM1QixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyx1QkFBdUIsRUFBRSxDQUFDO2dCQUNsRCxLQUFLLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDN0QsQ0FBQztZQUNELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFO2dCQUNwQixJQUFJLEVBQUUsdUJBQXVCLENBQUMsaUJBQWlCO2dCQUMvQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7Z0JBQ2xCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDM0IsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNmLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFBRTtnQkFDbkIsSUFBSSxFQUFFLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTthQUN6QixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtnQkFDWixtQ0FBbUM7WUFDckMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssS0FBSyxDQUFDLFNBQVMsQ0FDckIsS0FBMEIsRUFDMUIsT0FLQztRQUVELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO1lBQ3RDLEVBQUUsRUFBRSxFQUFFO1lBQ04sUUFBUSxFQUFFLENBQUM7WUFDWCxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDckIsR0FBRyxPQUFPO1NBQ21ELENBQUMsQ0FBQztRQUNqRSxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssWUFBWSxDQUNsQixPQUE4QjtRQUU5QixPQUFPO1lBQ0wsV0FBVyxFQUFFLHlCQUF5QjtZQUN0QyxRQUFRLEVBQUUsSUFBSTtZQUNkLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLGlCQUFpQixFQUFFLEtBQUs7WUFDeEIsSUFBSSxFQUFFLEVBQUU7WUFDUixRQUFRLEVBQUUsRUFBRTtZQUNaLEdBQUcsSUFBSSxDQUFDLGNBQWM7WUFDdEIsR0FBRyxPQUFPO1NBQ1gsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNLLGFBQWE7UUFDbkIsT0FBTyxDQUNMLFVBQVUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEVBQUU7WUFDakMsYUFBYSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDakUsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNLLGNBQWMsQ0FBQyxLQUFjO1FBQ25DLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRSxDQUFDO1lBQzNCLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2dCQUNoQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87Z0JBQ3RCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztnQkFDbEIsSUFBSSxFQUNELEtBQWEsQ0FBQyxTQUFTO29CQUN4QixDQUFDLE9BQVEsS0FBYSxDQUFDLElBQUksS0FBSyxRQUFRO3dCQUN0QyxDQUFDLENBQUMsTUFBTSxDQUFFLEtBQWEsQ0FBQyxJQUFJLENBQUM7d0JBQzdCLENBQUMsQ0FBRSxLQUFhLENBQUMsSUFBSSxDQUFDO2FBQzNCLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQzFELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZ3JhcGgvZXhlY3V0aW9uL0dyYXBoRXhlY3V0aW9uRW5naW5lXG4gKiBAc3VtbWFyeSBSZWZlcmVuY2UgZ3JhcGggZXhlY3V0aW9uIGVuZ2luZS5cbiAqIEBkZXNjcmlwdGlvbiBFeGVjdXRlcyBncmFwaCB3b3JrZmxvd3MgZGVjbGFyZWQgd2l0aCBgQGRlY2FmLXRzL3VpLWRlY29yYXRvcnMvZ3JhcGhgLCBlbWl0cyBldmVudHMgdGhyb3VnaCBEZWNhZidzIE9ic2VydmFibGUgcGlwZWxpbmUsIHN1cHBvcnRzIHBhcmFsbGVsIG5vZGUgZXhlY3V0aW9uIHdpdGhpbiB0b3BvbG9naWNhbCBsYXllcnMsIGFuZCByZXR1cm5zIGEgY29tcGxldGUgZXhlY3V0aW9uIHJlc3VsdC5cbiAqL1xuaW1wb3J0IHR5cGUgeyBPYnNlcnZhYmxlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoV29ya2Zsb3dEZWZpbml0aW9uIH0gZnJvbSBcIkBkZWNhZi10cy91aS1kZWNvcmF0b3JzL2dyYXBoXCI7XG5cbmltcG9ydCB7XG4gIEdSQVBIX0RFRkFVTFRfQ09OQ1VSUkVOQ1ksXG4gIEdSQVBIX1dPUktGTE9XX0JPVU5EQVJZLFxufSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQge1xuICBHcmFwaEV4ZWN1dGlvbkV2ZW50VHlwZSxcbiAgR3JhcGhFeGVjdXRpb25TdGF0dXMsXG59IGZyb20gXCIuLi8uLi9zaGFyZWQvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBHcmFwaEV4ZWN1dGlvbkVycm9yIH0gZnJvbSBcIi4uL2Vycm9yc1wiO1xuaW1wb3J0IHR5cGUge1xuICBHcmFwaEV4ZWN1dGlvbkVycm9yUGF5bG9hZCxcbiAgR3JhcGhFeGVjdXRpb25FdmVudCxcbiAgR3JhcGhFeGVjdXRpb25PcHRpb25zLFxuICBHcmFwaEV4ZWN1dGlvblJlc3VsdCxcbiAgR3JhcGhFeGVjdXRpb25WYWx1ZXMsXG4gIEdyYXBoTm9kZUV4ZWN1dGlvblJlc3VsdCxcbiAgR3JhcGhQaW5Ob2RlT3B0aW9ucyxcbiAgR3JhcGhVbnBpbk5vZGVPcHRpb25zLFxuICBHcmFwaFJ1bklkLFxufSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhFeGVjdXRpb25PYnNlcnZlciB9IGZyb20gXCIuLi9ldmVudHMvR3JhcGhFeGVjdXRpb25PYnNlcnZlclwiO1xuaW1wb3J0IHsgR3JhcGhFeGVjdXRpb25FdmVudEVtaXR0ZXIgfSBmcm9tIFwiLi4vZXZlbnRzL0dyYXBoRXhlY3V0aW9uRXZlbnRFbWl0dGVyXCI7XG5pbXBvcnQgeyBHcmFwaEV4ZWN1dGlvbkV2ZW50RmFjdG9yeSB9IGZyb20gXCIuLi9ldmVudHMvR3JhcGhFeGVjdXRpb25FdmVudEZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhOb2RlRXhlY3V0b3JSZWdpc3RyeSB9IGZyb20gXCIuLi9yZWdpc3RyeS9HcmFwaE5vZGVFeGVjdXRvclJlZ2lzdHJ5XCI7XG5pbXBvcnQgeyBHcmFwaEV4ZWN1dGlvblBsYW5uZXIgfSBmcm9tIFwiLi4vcGxhbm5pbmcvR3JhcGhFeGVjdXRpb25QbGFubmVyXCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uUGxhbiB9IGZyb20gXCIuLi9wbGFubmluZy9HcmFwaEV4ZWN1dGlvblBsYW5cIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhFeGVjdXRpb25QbGFuTm9kZSB9IGZyb20gXCIuLi9wbGFubmluZy9HcmFwaEV4ZWN1dGlvblBsYW5Ob2RlXCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoVmFsdWVTdG9yZUFkYXB0ZXIgfSBmcm9tIFwiLi4vc3RvcmUvR3JhcGhWYWx1ZVN0b3JlQWRhcHRlclwiO1xuaW1wb3J0IHsgSW5NZW1vcnlHcmFwaFZhbHVlU3RvcmVBZGFwdGVyIH0gZnJvbSBcIi4uL3N0b3JlL0luTWVtb3J5R3JhcGhWYWx1ZVN0b3JlQWRhcHRlclwiO1xuaW1wb3J0IHsgR3JhcGhWYWx1ZVN0b3JlIH0gZnJvbSBcIi4uL3N0b3JlL0dyYXBoVmFsdWVTdG9yZVwiO1xuaW1wb3J0IHR5cGUgeyBHcmFwaENhY2hlZFZhbHVlIH0gZnJvbSBcIi4uL3N0b3JlL0dyYXBoQ2FjaGVkVmFsdWVcIjtcbmltcG9ydCB7IEdyYXBoUGlubmluZ1NlcnZpY2UgfSBmcm9tIFwiLi4vcGlubmluZy9HcmFwaFBpbm5pbmdTZXJ2aWNlXCI7XG5pbXBvcnQgeyBHcmFwaFBpbm5pbmdQb2xpY3kgfSBmcm9tIFwiLi4vcGlubmluZy9HcmFwaFBpbm5pbmdQb2xpY3lcIjtcbmltcG9ydCB7IEdyYXBoUGlubmluZ0RlcGVuZGVuY3lSZXNvbHZlciB9IGZyb20gXCIuLi9waW5uaW5nL0dyYXBoUGlubmluZ0RlcGVuZGVuY3lSZXNvbHZlclwiO1xuaW1wb3J0IHsgR3JhcGhFeGVjdXRpb25Db250ZXh0IH0gZnJvbSBcIi4vR3JhcGhFeGVjdXRpb25Db250ZXh0XCI7XG5pbXBvcnQgeyBHcmFwaEV4ZWN1dGlvbkZyYW1lIH0gZnJvbSBcIi4vR3JhcGhFeGVjdXRpb25GcmFtZVwiO1xuaW1wb3J0IHsgYnVpbGRHcmFwaEV4ZWN1dGlvblJlc3VsdCB9IGZyb20gXCIuL0dyYXBoRXhlY3V0aW9uUmVzdWx0XCI7XG5pbXBvcnQgdHlwZSB7IENvZGVTYW5kYm94RXZhbHVhdG9yIH0gZnJvbSBcIi4vQ29kZVNhbmRib3hFdmFsdWF0b3JcIjtcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciB0aGUge0BsaW5rIEdyYXBoRXhlY3V0aW9uRW5naW5lfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcmFwaEV4ZWN1dGlvbkVuZ2luZUNvbmZpZyB7XG4gIHJlZ2lzdHJ5OiBHcmFwaE5vZGVFeGVjdXRvclJlZ2lzdHJ5O1xuICBwbGFubmVyPzogR3JhcGhFeGVjdXRpb25QbGFubmVyO1xuICB2YWx1ZVN0b3JlQWRhcHRlcj86IEdyYXBoVmFsdWVTdG9yZUFkYXB0ZXI7XG4gIGV2ZW50RW1pdHRlcj86IEdyYXBoRXhlY3V0aW9uRXZlbnRFbWl0dGVyO1xuICBkZWZhdWx0T3B0aW9ucz86IFBhcnRpYWw8R3JhcGhFeGVjdXRpb25PcHRpb25zPjtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIHBsdWdnYWJsZSBjb2RlIHNhbmRib3ggZXZhbHVhdG9yIGZvciBjb2RlLWJhc2VkIGNvbmRpdGlvbnNcbiAgICogKERFQ0FGLTMyIMKnMjIuNCkuIFdoZW4gYWJzZW50LCBjb2RlIGNvbmRpdGlvbnMgdGhyb3dcbiAgICogYEdSQVBIX0NPREVfU0FOREJPWF9OT1RfQ09ORklHVVJFRGAuIERvd25zdHJlYW0gcHJvamVjdHMgKGUuZy4gQUxGUkVEKVxuICAgKiBzdXBwbHkgdGhlIGFjdHVhbCBWTSBzYW5kYm94IGltcGxlbWVudGF0aW9uLlxuICAgKi9cbiAgY29kZVNhbmRib3hFdmFsdWF0b3I/OiBDb2RlU2FuZGJveEV2YWx1YXRvcjtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGNhbGxiYWNrIGludm9rZWQgYXQgdGhlIGVuZCBvZiBlbmdpbmUgY29uc3RydWN0aW9uIHdpdGggdGhlXG4gICAqIGZ1bGx5LWluaXRpYWxpc2VkIGVuZ2luZSBpbnN0YW5jZS4gVXNlIHRoaXMgdG8gcmVnaXN0ZXIgZXhlY3V0b3JzIHRoYXRcbiAgICogbmVlZCBhIGJhY2stcmVmZXJlbmNlIHRvIHRoZSBlbmdpbmUgKGUuZy4gbG9vcCBleGVjdXRvcnMgdGhhdCBleGVjdXRlXG4gICAqIHN1Yi13b3JrZmxvd3MgdGhyb3VnaCB0aGUgc2FtZSBlbmdpbmUpLlxuICAgKi9cbiAgb25FbmdpbmVDcmVhdGVkPzogKGVuZ2luZTogR3JhcGhFeGVjdXRpb25FbmdpbmUpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogUmVmZXJlbmNlIGdyYXBoIGV4ZWN1dGlvbiBlbmdpbmUuXG4gKlxuICogRXhlY3V0ZXMgYSB7QGxpbmsgR3JhcGhXb3JrZmxvd0RlZmluaXRpb259IGJ5OlxuICogMS4gUGxhbm5pbmcgdGhlIHdvcmtmbG93IGludG8gdG9wb2xvZ2ljYWwgbGF5ZXJzLlxuICogMi4gU2VlZGluZyB3b3JrZmxvdyBpbnB1dHMgaW50byB0aGUgdmFsdWUgc3RvcmUuXG4gKiAzLiBFeGVjdXRpbmcgbm9kZXMgbGF5ZXItYnktbGF5ZXIgd2l0aCBjb25maWd1cmFibGUgY29uY3VycmVuY3kuXG4gKiA0LiBSb3V0aW5nIHZhbHVlcyBhbG9uZyBlZGdlcy5cbiAqIDUuIEVtaXR0aW5nIHN0cnVjdHVyZWQgZXZlbnRzIHRocm91Z2ggRGVjYWYncyBPYnNlcnZhYmxlIHBpcGVsaW5lLlxuICogNi4gUmV0dXJuaW5nIGEgY29tcGxldGUge0BsaW5rIEdyYXBoRXhlY3V0aW9uUmVzdWx0fS5cbiAqL1xuZXhwb3J0IGNsYXNzIEdyYXBoRXhlY3V0aW9uRW5naW5lXG4gIGltcGxlbWVudHMgT2JzZXJ2YWJsZTxbR3JhcGhFeGVjdXRpb25PYnNlcnZlcl0sIFtHcmFwaEV4ZWN1dGlvbkV2ZW50XT4ge1xuICBwcml2YXRlIHJlYWRvbmx5IGVtaXR0ZXI6IEdyYXBoRXhlY3V0aW9uRXZlbnRFbWl0dGVyO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsYW5uZXI6IEdyYXBoRXhlY3V0aW9uUGxhbm5lcjtcbiAgcHJpdmF0ZSByZWFkb25seSB2YWx1ZVN0b3JlQWRhcHRlcjogR3JhcGhWYWx1ZVN0b3JlQWRhcHRlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0T3B0aW9uczogUGFydGlhbDxHcmFwaEV4ZWN1dGlvbk9wdGlvbnM+O1xuICAvKiogUGx1Z2dhYmxlIGNvZGUgc2FuZGJveCBldmFsdWF0b3IgKMKnMjIuNCk7IG1heSBiZSB1bmRlZmluZWQuICovXG4gIHJlYWRvbmx5IGNvZGVTYW5kYm94RXZhbHVhdG9yPzogQ29kZVNhbmRib3hFdmFsdWF0b3I7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBHcmFwaEV4ZWN1dGlvbkVuZ2luZUNvbmZpZykge1xuICAgIHRoaXMuZW1pdHRlciA9IGNvbmZpZy5ldmVudEVtaXR0ZXIgPz8gbmV3IEdyYXBoRXhlY3V0aW9uRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5wbGFubmVyID0gY29uZmlnLnBsYW5uZXIgPz8gbmV3IEdyYXBoRXhlY3V0aW9uUGxhbm5lcigpO1xuICAgIHRoaXMudmFsdWVTdG9yZUFkYXB0ZXIgPVxuICAgICAgY29uZmlnLnZhbHVlU3RvcmVBZGFwdGVyID8/IG5ldyBJbk1lbW9yeUdyYXBoVmFsdWVTdG9yZUFkYXB0ZXIoKTtcbiAgICB0aGlzLmRlZmF1bHRPcHRpb25zID0gY29uZmlnLmRlZmF1bHRPcHRpb25zID8/IHt9O1xuICAgIHRoaXMuY29kZVNhbmRib3hFdmFsdWF0b3IgPSBjb25maWcuY29kZVNhbmRib3hFdmFsdWF0b3I7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgY29uZmlnLm9uRW5naW5lQ3JlYXRlZD8uKHRoaXMpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IEdyYXBoRXhlY3V0aW9uRW5naW5lQ29uZmlnO1xuXG4gIG9ic2VydmUob2JzZXJ2ZXI6IEdyYXBoRXhlY3V0aW9uT2JzZXJ2ZXIpOiAoKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5lbWl0dGVyLm9ic2VydmUob2JzZXJ2ZXIpO1xuICB9XG5cbiAgdW5PYnNlcnZlKG9ic2VydmVyOiBHcmFwaEV4ZWN1dGlvbk9ic2VydmVyKTogdm9pZCB7XG4gICAgdGhpcy5lbWl0dGVyLnVuT2JzZXJ2ZShvYnNlcnZlcik7XG4gIH1cblxuICBhc3luYyB1cGRhdGVPYnNlcnZlcnMoZXZlbnQ6IEdyYXBoRXhlY3V0aW9uRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmVtaXR0ZXIudXBkYXRlT2JzZXJ2ZXJzKGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyBhIHdvcmtmbG93IHdpdGggdGhlIGdpdmVuIGlucHV0cyBhbmQgb3B0aW9ucy5cbiAgICovXG4gIGFzeW5jIGV4ZWN1dGUoXG4gICAgd29ya2Zsb3c6IEdyYXBoV29ya2Zsb3dEZWZpbml0aW9uLFxuICAgIGlucHV0czogR3JhcGhFeGVjdXRpb25WYWx1ZXMgPSB7fSxcbiAgICBvcHRpb25zOiBHcmFwaEV4ZWN1dGlvbk9wdGlvbnMgPSB7fVxuICApOiBQcm9taXNlPEdyYXBoRXhlY3V0aW9uUmVzdWx0PiB7XG4gICAgY29uc3Qgb3B0cyA9IHRoaXMubWVyZ2VPcHRpb25zKG9wdGlvbnMpO1xuICAgIGNvbnN0IHJ1bklkID0gb3B0cy5ydW5JZCA/PyB0aGlzLmdlbmVyYXRlUnVuSWQoKTtcbiAgICBjb25zdCBwYXRoID0gb3B0cy5wYXRoID8/IFtdO1xuICAgIGNvbnN0IGV2ZW50RmFjdG9yeSA9IG5ldyBHcmFwaEV4ZWN1dGlvbkV2ZW50RmFjdG9yeSgpO1xuICAgIGNvbnN0IHZhbHVlU3RvcmUgPSBuZXcgR3JhcGhWYWx1ZVN0b3JlKHRoaXMudmFsdWVTdG9yZUFkYXB0ZXIpO1xuICAgIHZhbHVlU3RvcmUuc2VlZFdvcmtmbG93SW5wdXRzKGlucHV0cyk7XG5cbiAgICBjb25zdCBwbGFuID0gdGhpcy5wbGFubmVyLnBsYW4od29ya2Zsb3cpO1xuICAgIGNvbnN0IGZyYW1lID0gbmV3IEdyYXBoRXhlY3V0aW9uRnJhbWUoXG4gICAgICBydW5JZCxcbiAgICAgIHBsYW4sXG4gICAgICB2YWx1ZVN0b3JlLFxuICAgICAgZXZlbnRGYWN0b3J5XG4gICAgKTtcblxuICAgIGNvbnN0IGVtaXRGbiA9IGFzeW5jIChwYXJ0aWFsOiBQYXJ0aWFsPEdyYXBoRXhlY3V0aW9uRXZlbnQ+KSA9PiB7XG4gICAgICBhd2FpdCB0aGlzLmVtaXRFdmVudChmcmFtZSwge1xuICAgICAgICB0eXBlOiBwYXJ0aWFsLnR5cGUgPz8gR3JhcGhFeGVjdXRpb25FdmVudFR5cGUuTk9ERV9PVVRQVVQsXG4gICAgICAgIHJ1bklkLFxuICAgICAgICBwYXJlbnRSdW5JZDogb3B0cy5wYXJlbnRSdW5JZCxcbiAgICAgICAgd29ya2Zsb3dJZDogd29ya2Zsb3cubmFtZSxcbiAgICAgICAgbm9kZUlkOiBwYXJ0aWFsLm5vZGVJZCxcbiAgICAgICAgcGF0aDogcGFydGlhbC5wYXRoID8/IHBhdGgsXG4gICAgICAgIC4uLnBhcnRpYWwsXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgYXdhaXQgdGhpcy5lbWl0RXZlbnQoZnJhbWUsIHtcbiAgICAgIHR5cGU6IEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlLldPUktGTE9XX1NUQVJURUQsXG4gICAgICBydW5JZCxcbiAgICAgIHBhcmVudFJ1bklkOiBvcHRzLnBhcmVudFJ1bklkLFxuICAgICAgd29ya2Zsb3dJZDogd29ya2Zsb3cubmFtZSxcbiAgICAgIHBhdGgsXG4gICAgICBzdGF0dXM6IEdyYXBoRXhlY3V0aW9uU3RhdHVzLlJVTk5JTkcsXG4gICAgICBwYXlsb2FkOiB7IGlucHV0cyB9LFxuICAgIH0pO1xuXG4gICAgYXdhaXQgdGhpcy5lbWl0RXZlbnQoZnJhbWUsIHtcbiAgICAgIHR5cGU6IEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlLldPUktGTE9XX1BMQU5ORUQsXG4gICAgICBydW5JZCxcbiAgICAgIHBhcmVudFJ1bklkOiBvcHRzLnBhcmVudFJ1bklkLFxuICAgICAgd29ya2Zsb3dJZDogd29ya2Zsb3cubmFtZSxcbiAgICAgIHBhdGgsXG4gICAgICBzdGF0dXM6IEdyYXBoRXhlY3V0aW9uU3RhdHVzLlBMQU5OSU5HLFxuICAgICAgcGF5bG9hZDogeyBsYXllcnM6IHBsYW4ubGF5ZXJzLmxlbmd0aCwgbm9kZXM6IHBsYW4ubm9kZXMubGVuZ3RoIH0sXG4gICAgfSk7XG5cbiAgICB0cnkge1xuICAgICAgZm9yIChjb25zdCBsYXllciBvZiBwbGFuLmxheWVycykge1xuICAgICAgICBhd2FpdCB0aGlzLmV4ZWN1dGVMYXllcihmcmFtZSwgcGxhbiwgbGF5ZXIubm9kZXMsIG9wdHMsIGVtaXRGbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpcnN0RmFpbHVyZSA9IFsuLi5mcmFtZS5ub2RlUmVzdWx0cy52YWx1ZXMoKV0uZmluZChcbiAgICAgICAgKHJlc3VsdCkgPT4gcmVzdWx0LnN0YXR1cyA9PT0gR3JhcGhFeGVjdXRpb25TdGF0dXMuRkFJTEVEXG4gICAgICApO1xuICAgICAgaWYgKGZpcnN0RmFpbHVyZT8uZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEdyYXBoRXhlY3V0aW9uRXJyb3IoXG4gICAgICAgICAgZmlyc3RGYWlsdXJlLmVycm9yLm1lc3NhZ2UsXG4gICAgICAgICAgZmlyc3RGYWlsdXJlLmVycm9yLmNvZGUgPz8gXCJHUkFQSF9FWEVDVVRJT05fRVJST1JcIixcbiAgICAgICAgICBmaXJzdEZhaWx1cmUuZXJyb3IuZGV0YWlsc1xuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBmcmFtZS5maW5pc2goKTtcblxuICAgICAgYXdhaXQgdGhpcy5lbWl0RXZlbnQoZnJhbWUsIHtcbiAgICAgICAgdHlwZTogR3JhcGhFeGVjdXRpb25FdmVudFR5cGUuV09SS0ZMT1dfQ09NUExFVEVELFxuICAgICAgICBydW5JZCxcbiAgICAgICAgcGFyZW50UnVuSWQ6IG9wdHMucGFyZW50UnVuSWQsXG4gICAgICAgIHdvcmtmbG93SWQ6IHdvcmtmbG93Lm5hbWUsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIHN0YXR1czogR3JhcGhFeGVjdXRpb25TdGF0dXMuU1VDQ0VFREVELFxuICAgICAgICBwYXlsb2FkOiB7IG91dHB1dHM6IHZhbHVlU3RvcmUuZ2V0V29ya2Zsb3dWYWx1ZXMoKSB9LFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBidWlsZEdyYXBoRXhlY3V0aW9uUmVzdWx0KFxuICAgICAgICBmcmFtZSxcbiAgICAgICAgd29ya2Zsb3csXG4gICAgICAgIGlucHV0cyxcbiAgICAgICAgR3JhcGhFeGVjdXRpb25TdGF0dXMuU1VDQ0VFREVELFxuICAgICAgICBvcHRzLm1ldGFkYXRhXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBmcmFtZS5maW5pc2goKTtcbiAgICAgIGNvbnN0IGVycm9yUGF5bG9hZCA9IHRoaXMudG9FcnJvclBheWxvYWQoZXJyb3IpO1xuXG4gICAgICBhd2FpdCB0aGlzLmVtaXRFdmVudChmcmFtZSwge1xuICAgICAgICB0eXBlOiBHcmFwaEV4ZWN1dGlvbkV2ZW50VHlwZS5XT1JLRkxPV19GQUlMRUQsXG4gICAgICAgIHJ1bklkLFxuICAgICAgICBwYXJlbnRSdW5JZDogb3B0cy5wYXJlbnRSdW5JZCxcbiAgICAgICAgd29ya2Zsb3dJZDogd29ya2Zsb3cubmFtZSxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgc3RhdHVzOiBHcmFwaEV4ZWN1dGlvblN0YXR1cy5GQUlMRUQsXG4gICAgICAgIGVycm9yOiBlcnJvclBheWxvYWQsXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGJ1aWxkR3JhcGhFeGVjdXRpb25SZXN1bHQoXG4gICAgICAgIGZyYW1lLFxuICAgICAgICB3b3JrZmxvdyxcbiAgICAgICAgaW5wdXRzLFxuICAgICAgICBHcmFwaEV4ZWN1dGlvblN0YXR1cy5GQUlMRUQsXG4gICAgICAgIG9wdHMubWV0YWRhdGFcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBpbnMgYSBub2RlIGFuZCBpdHMgdXBzdHJlYW0gZGVwZW5kZW5jaWVzIGFmdGVyIGEgY29tcGxldGVkIHJ1bi5cbiAgICpcbiAgICogRGVsZWdhdGVzIHRvIHtAbGluayBHcmFwaFBpbm5pbmdTZXJ2aWNlfS4gVGhlIHBsYW4gYW5kIHJlc3VsdCBtdXN0IGNvbWVcbiAgICogZnJvbSBhIHByaW9yIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uIG9mIHRoZSBzYW1lIHdvcmtmbG93LlxuICAgKi9cbiAgYXN5bmMgcGluTm9kZShvcHRpb25zOiBHcmFwaFBpbk5vZGVPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc2VydmljZSA9IHRoaXMuY3JlYXRlUGlubmluZ1NlcnZpY2UoKTtcbiAgICBhd2FpdCBzZXJ2aWNlLnBpbk5vZGUob3B0aW9ucyk7XG4gICAgYXdhaXQgdGhpcy5lbWl0UGlubmluZ0V2ZW50KG9wdGlvbnMubm9kZUlkLCBHcmFwaEV4ZWN1dGlvbkV2ZW50VHlwZS5OT0RFX1BJTk5FRCk7XG4gIH1cblxuICAvKipcbiAgICogVW5waW5zIGEgbm9kZSBieSBpdHMgZmluZ2VycHJpbnQuXG4gICAqL1xuICBhc3luYyB1bnBpbk5vZGUob3B0aW9uczogR3JhcGhVbnBpbk5vZGVPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc2VydmljZSA9IHRoaXMuY3JlYXRlUGlubmluZ1NlcnZpY2UoKTtcbiAgICBhd2FpdCBzZXJ2aWNlLnVucGluTm9kZShvcHRpb25zKTtcbiAgICBhd2FpdCB0aGlzLmVtaXRQaW5uaW5nRXZlbnQob3B0aW9ucy5ub2RlSWQsIEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlLk5PREVfVU5QSU5ORUQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB7QGxpbmsgR3JhcGhQaW5uaW5nU2VydmljZX0gYmFja2VkIGJ5IHRoaXMgZW5naW5lJ3MgdmFsdWUgc3RvcmVcbiAgICogYWRhcHRlci5cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlUGlubmluZ1NlcnZpY2UoKTogR3JhcGhQaW5uaW5nU2VydmljZSB7XG4gICAgY29uc3Qgc3RvcmUgPSBuZXcgR3JhcGhWYWx1ZVN0b3JlKHRoaXMudmFsdWVTdG9yZUFkYXB0ZXIpO1xuICAgIHJldHVybiBuZXcgR3JhcGhQaW5uaW5nU2VydmljZShcbiAgICAgIHN0b3JlLFxuICAgICAgbmV3IEdyYXBoUGlubmluZ1BvbGljeSgpLFxuICAgICAgbmV3IEdyYXBoUGlubmluZ0RlcGVuZGVuY3lSZXNvbHZlcigpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyBhIHBpbm5pbmctcmVsYXRlZCBldmVudCB0byBhbGwgb2JzZXJ2ZXJzLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBlbWl0UGlubmluZ0V2ZW50KFxuICAgIG5vZGVJZDogc3RyaW5nLFxuICAgIHR5cGU6IEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGZhY3RvcnkgPSBuZXcgR3JhcGhFeGVjdXRpb25FdmVudEZhY3RvcnkoKTtcbiAgICBjb25zdCBldmVudCA9IGZhY3RvcnkuY3JlYXRlKHtcbiAgICAgIGlkOiBcIlwiLFxuICAgICAgc2VxdWVuY2U6IDAsXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXG4gICAgICBydW5JZDogXCJwaW5uaW5nXCIsXG4gICAgICB3b3JrZmxvd0lkOiBcIlwiLFxuICAgICAgdHlwZSxcbiAgICAgIG5vZGVJZCxcbiAgICAgIHBhdGg6IFtdLFxuICAgIH0gYXMgT21pdDxHcmFwaEV4ZWN1dGlvbkV2ZW50LCBcImlkXCIgfCBcInNlcXVlbmNlXCIgfCBcInRpbWVzdGFtcFwiPik7XG4gICAgYXdhaXQgdGhpcy5lbWl0dGVyLnVwZGF0ZU9ic2VydmVycyhldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZXMgYSBsYXllciBvZiBub2RlcyB3aXRoIHRoZSBjb25maWd1cmVkIGNvbmN1cnJlbmN5LlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBleGVjdXRlTGF5ZXIoXG4gICAgZnJhbWU6IEdyYXBoRXhlY3V0aW9uRnJhbWUsXG4gICAgcGxhbjogR3JhcGhFeGVjdXRpb25QbGFuLFxuICAgIG5vZGVzOiBHcmFwaEV4ZWN1dGlvblBsYW5Ob2RlW10sXG4gICAgb3B0czogR3JhcGhFeGVjdXRpb25PcHRpb25zLFxuICAgIGVtaXRGbjogKGV2ZW50OiBQYXJ0aWFsPEdyYXBoRXhlY3V0aW9uRXZlbnQ+KSA9PiBQcm9taXNlPHZvaWQ+XG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNvbmN1cnJlbmN5ID0gTWF0aC5tYXgoXG4gICAgICAxLFxuICAgICAgb3B0cy5jb25jdXJyZW5jeSA/PyBHUkFQSF9ERUZBVUxUX0NPTkNVUlJFTkNZXG4gICAgKTtcbiAgICBjb25zdCBxdWV1ZSA9IFsuLi5ub2Rlc107XG5cbiAgICB3aGlsZSAocXVldWUubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgYmF0Y2ggPSBxdWV1ZS5zcGxpY2UoMCwgY29uY3VycmVuY3kpO1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIGJhdGNoLm1hcCgobm9kZSkgPT4gdGhpcy5leGVjdXRlTm9kZShmcmFtZSwgcGxhbiwgbm9kZSwgb3B0cywgZW1pdEZuKSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIGEgc2luZ2xlIG5vZGUuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGV4ZWN1dGVOb2RlKFxuICAgIGZyYW1lOiBHcmFwaEV4ZWN1dGlvbkZyYW1lLFxuICAgIHBsYW46IEdyYXBoRXhlY3V0aW9uUGxhbixcbiAgICBwbGFuTm9kZTogR3JhcGhFeGVjdXRpb25QbGFuTm9kZSxcbiAgICBvcHRzOiBHcmFwaEV4ZWN1dGlvbk9wdGlvbnMsXG4gICAgZW1pdEZuOiAoZXZlbnQ6IFBhcnRpYWw8R3JhcGhFeGVjdXRpb25FdmVudD4pID0+IFByb21pc2U8dm9pZD5cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc3RhcnRlZEF0ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBub2RlUGF0aCA9IFsuLi4ob3B0cy5wYXRoID8/IFtdKSwgcGxhbk5vZGUuaWRdO1xuXG4gICAgYXdhaXQgdGhpcy5lbWl0RXZlbnQoZnJhbWUsIHtcbiAgICAgIHR5cGU6IEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlLk5PREVfU1RBUlRFRCxcbiAgICAgIHJ1bklkOiBmcmFtZS5ydW5JZCxcbiAgICAgIHdvcmtmbG93SWQ6IHBsYW4ud29ya2Zsb3dJZCxcbiAgICAgIG5vZGVJZDogcGxhbk5vZGUuaWQsXG4gICAgICBwYXRoOiBub2RlUGF0aCxcbiAgICAgIHN0YXR1czogR3JhcGhFeGVjdXRpb25TdGF0dXMuUlVOTklORyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGlucHV0cyA9IHRoaXMucmVzb2x2ZU5vZGVJbnB1dHMoZnJhbWUsIHBsYW4sIHBsYW5Ob2RlKTtcblxuICAgIC8vIENhY2hlLWhpdDogY2hlY2sgZm9yIGEgcGlubmVkIHZhbHVlIGJlZm9yZSBleGVjdXRpbmcgdGhlIG5vZGVcbiAgICBpZiAob3B0cy51c2VQaW5uZWRWYWx1ZXMpIHtcbiAgICAgIGNvbnN0IGNhY2hlZCA9IGF3YWl0IHRoaXMudHJ5UGlubmVkVmFsdWUoZnJhbWUsIHBsYW4sIHBsYW5Ob2RlLCBpbnB1dHMpO1xuICAgICAgaWYgKGNhY2hlZCkge1xuICAgICAgICBmcmFtZS52YWx1ZVN0b3JlLnNldE5vZGVPdXRwdXRzKHBsYW5Ob2RlLmlkLCBjYWNoZWQub3V0cHV0cyk7XG4gICAgICAgIHRoaXMucm91dGVPdXRnb2luZ0VkZ2VzKGZyYW1lLCBwbGFuLCBwbGFuTm9kZSwgY2FjaGVkLm91dHB1dHMpO1xuXG4gICAgICAgIGNvbnN0IGZpbmlzaGVkQXQgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBjb25zdCByZXN1bHQ6IEdyYXBoTm9kZUV4ZWN1dGlvblJlc3VsdCA9IHtcbiAgICAgICAgICBub2RlSWQ6IHBsYW5Ob2RlLmlkLFxuICAgICAgICAgIHN0YXR1czogR3JhcGhFeGVjdXRpb25TdGF0dXMuQ0FDSEVELFxuICAgICAgICAgIGlucHV0cyxcbiAgICAgICAgICBvdXRwdXRzOiBjYWNoZWQub3V0cHV0cyxcbiAgICAgICAgICBzdGFydGVkQXQsXG4gICAgICAgICAgZmluaXNoZWRBdCxcbiAgICAgICAgICBmcm9tQ2FjaGU6IHRydWUsXG4gICAgICAgICAgcGlubmVkOiB0cnVlLFxuICAgICAgICAgIGV2ZW50czogW10sXG4gICAgICAgIH07XG4gICAgICAgIGZyYW1lLnJlY29yZE5vZGVSZXN1bHQocmVzdWx0KTtcblxuICAgICAgICBhd2FpdCB0aGlzLmVtaXRFdmVudChmcmFtZSwge1xuICAgICAgICAgIHR5cGU6IEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlLk5PREVfQ0FDSEVfSElULFxuICAgICAgICAgIHJ1bklkOiBmcmFtZS5ydW5JZCxcbiAgICAgICAgICB3b3JrZmxvd0lkOiBwbGFuLndvcmtmbG93SWQsXG4gICAgICAgICAgbm9kZUlkOiBwbGFuTm9kZS5pZCxcbiAgICAgICAgICBwYXRoOiBub2RlUGF0aCxcbiAgICAgICAgICBzdGF0dXM6IEdyYXBoRXhlY3V0aW9uU3RhdHVzLkNBQ0hFRCxcbiAgICAgICAgICBwYXlsb2FkOiB7IG91dHB1dHM6IGNhY2hlZC5vdXRwdXRzIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuZW1pdEV2ZW50KGZyYW1lLCB7XG4gICAgICAgICAgdHlwZTogR3JhcGhFeGVjdXRpb25FdmVudFR5cGUuTk9ERV9DT01QTEVURUQsXG4gICAgICAgICAgcnVuSWQ6IGZyYW1lLnJ1bklkLFxuICAgICAgICAgIHdvcmtmbG93SWQ6IHBsYW4ud29ya2Zsb3dJZCxcbiAgICAgICAgICBub2RlSWQ6IHBsYW5Ob2RlLmlkLFxuICAgICAgICAgIHBhdGg6IG5vZGVQYXRoLFxuICAgICAgICAgIHN0YXR1czogR3JhcGhFeGVjdXRpb25TdGF0dXMuU1VDQ0VFREVELFxuICAgICAgICAgIHBheWxvYWQ6IHsgb3V0cHV0czogY2FjaGVkLm91dHB1dHMsIGZyb21DYWNoZTogdHJ1ZSB9LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBleGVjdXRvciA9IHRoaXMuY29uZmlnLnJlZ2lzdHJ5LnJlc29sdmUocGxhbk5vZGUua2luZCk7XG4gICAgICBjb25zdCBjb250ZXh0ID0gbmV3IEdyYXBoRXhlY3V0aW9uQ29udGV4dChcbiAgICAgICAgZnJhbWUucnVuSWQsXG4gICAgICAgIG9wdHMucGFyZW50UnVuSWQsXG4gICAgICAgIHBsYW4ud29ya2Zsb3csXG4gICAgICAgIHBsYW5Ob2RlLmRlZmluaXRpb24sXG4gICAgICAgIG5vZGVQYXRoLFxuICAgICAgICBlbWl0Rm4sXG4gICAgICAgIG9wdHMubWV0YWRhdGFcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IG91dHB1dHMgPSBhd2FpdCBleGVjdXRvci5leGVjdXRlKGlucHV0cywgY29udGV4dCk7XG4gICAgICBjb25zdCByZXNvbHZlZE91dHB1dHMgPSBvdXRwdXRzID8/IHt9O1xuXG4gICAgICBmcmFtZS52YWx1ZVN0b3JlLnNldE5vZGVPdXRwdXRzKHBsYW5Ob2RlLmlkLCByZXNvbHZlZE91dHB1dHMpO1xuICAgICAgdGhpcy5yb3V0ZU91dGdvaW5nRWRnZXMoZnJhbWUsIHBsYW4sIHBsYW5Ob2RlLCByZXNvbHZlZE91dHB1dHMpO1xuXG4gICAgICBjb25zdCBmaW5pc2hlZEF0ID0gbmV3IERhdGUoKTtcbiAgICAgIGNvbnN0IHJlc3VsdDogR3JhcGhOb2RlRXhlY3V0aW9uUmVzdWx0ID0ge1xuICAgICAgICBub2RlSWQ6IHBsYW5Ob2RlLmlkLFxuICAgICAgICBzdGF0dXM6IEdyYXBoRXhlY3V0aW9uU3RhdHVzLlNVQ0NFRURFRCxcbiAgICAgICAgaW5wdXRzLFxuICAgICAgICBvdXRwdXRzOiByZXNvbHZlZE91dHB1dHMsXG4gICAgICAgIHN0YXJ0ZWRBdCxcbiAgICAgICAgZmluaXNoZWRBdCxcbiAgICAgICAgZXZlbnRzOiBbXSxcbiAgICAgIH07XG4gICAgICBmcmFtZS5yZWNvcmROb2RlUmVzdWx0KHJlc3VsdCk7XG5cbiAgICAgIGF3YWl0IHRoaXMuZW1pdEV2ZW50KGZyYW1lLCB7XG4gICAgICAgIHR5cGU6IEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlLk5PREVfQ09NUExFVEVELFxuICAgICAgICBydW5JZDogZnJhbWUucnVuSWQsXG4gICAgICAgIHdvcmtmbG93SWQ6IHBsYW4ud29ya2Zsb3dJZCxcbiAgICAgICAgbm9kZUlkOiBwbGFuTm9kZS5pZCxcbiAgICAgICAgcGF0aDogbm9kZVBhdGgsXG4gICAgICAgIHN0YXR1czogR3JhcGhFeGVjdXRpb25TdGF0dXMuU1VDQ0VFREVELFxuICAgICAgICBwYXlsb2FkOiB7IG91dHB1dHM6IHJlc29sdmVkT3V0cHV0cyB9LFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnN0IGZpbmlzaGVkQXQgPSBuZXcgRGF0ZSgpO1xuICAgICAgY29uc3QgZXJyb3JQYXlsb2FkID0gdGhpcy50b0Vycm9yUGF5bG9hZChlcnJvcik7XG4gICAgICBjb25zdCByZXN1bHQ6IEdyYXBoTm9kZUV4ZWN1dGlvblJlc3VsdCA9IHtcbiAgICAgICAgbm9kZUlkOiBwbGFuTm9kZS5pZCxcbiAgICAgICAgc3RhdHVzOiBHcmFwaEV4ZWN1dGlvblN0YXR1cy5GQUlMRUQsXG4gICAgICAgIGlucHV0cyxcbiAgICAgICAgZXJyb3I6IGVycm9yUGF5bG9hZCxcbiAgICAgICAgc3RhcnRlZEF0LFxuICAgICAgICBmaW5pc2hlZEF0LFxuICAgICAgICBldmVudHM6IFtdLFxuICAgICAgfTtcbiAgICAgIGZyYW1lLnJlY29yZE5vZGVSZXN1bHQocmVzdWx0KTtcblxuICAgICAgYXdhaXQgdGhpcy5lbWl0RXZlbnQoZnJhbWUsIHtcbiAgICAgICAgdHlwZTogR3JhcGhFeGVjdXRpb25FdmVudFR5cGUuTk9ERV9GQUlMRUQsXG4gICAgICAgIHJ1bklkOiBmcmFtZS5ydW5JZCxcbiAgICAgICAgd29ya2Zsb3dJZDogcGxhbi53b3JrZmxvd0lkLFxuICAgICAgICBub2RlSWQ6IHBsYW5Ob2RlLmlkLFxuICAgICAgICBwYXRoOiBub2RlUGF0aCxcbiAgICAgICAgc3RhdHVzOiBHcmFwaEV4ZWN1dGlvblN0YXR1cy5GQUlMRUQsXG4gICAgICAgIGVycm9yOiBlcnJvclBheWxvYWQsXG4gICAgICB9KTtcblxuICAgICAgaWYgKG9wdHMuZmFpbEZhc3QgPz8gdHJ1ZSkgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIGEgbm9kZSdzIGlucHV0IHZhbHVlcyBmcm9tIGluY29taW5nIGVkZ2VzLlxuICAgKlxuICAgKiBXaGVuIG11bHRpcGxlIGVkZ2VzIHRhcmdldCB0aGUgc2FtZSBwb3J0LCB0aGVpciB2YWx1ZXMgYXJlIHNwcmVhZCBpbnRvIHRoZVxuICAgKiB0b3AtbGV2ZWwgaW5wdXRzIGtleWVkIGJ5IGVhY2ggZWRnZSdzIGBzb3VyY2VQb3J0YC4gVGhpcyBhbGxvd3MgbXVsdGlwbGVcbiAgICogd29ya2Zsb3cgaW5wdXQgYmFkZ2VzIHRvIGNvbm5lY3QgdG8gYSBzaW5nbGUgcG9ydCAoZS5nLiB0aGUgQ29kZSBub2RlJ3NcbiAgICogYGRhdGFgIHBvcnQpIGFuZCBoYXZlIGFsbCB2YWx1ZXMgYWNjZXNzaWJsZSBkaXJlY3RseSBhc1xuICAgKiBgJGlucHV0Lntzb3VyY2VQb3J0fWAgKGUuZy4gYCRpbnB1dC5jb3VudGAsIGAkaW5wdXQudGV4dGApLlxuICAgKi9cbiAgcHJpdmF0ZSByZXNvbHZlTm9kZUlucHV0cyhcbiAgICBmcmFtZTogR3JhcGhFeGVjdXRpb25GcmFtZSxcbiAgICBwbGFuOiBHcmFwaEV4ZWN1dGlvblBsYW4sXG4gICAgcGxhbk5vZGU6IEdyYXBoRXhlY3V0aW9uUGxhbk5vZGVcbiAgKTogR3JhcGhFeGVjdXRpb25WYWx1ZXMge1xuICAgIGNvbnN0IGlucHV0czogR3JhcGhFeGVjdXRpb25WYWx1ZXMgPSB7fTtcbiAgICBjb25zdCBpbmNvbWluZyA9IHBsYW4uaW5jb21pbmdCeU5vZGUuZ2V0KHBsYW5Ob2RlLmlkKSA/PyBbXTtcblxuICAgIGNvbnN0IGVkZ2VzQnlUYXJnZXQgPSBuZXcgTWFwPHN0cmluZywgdHlwZW9mIGluY29taW5nPigpO1xuICAgIGZvciAoY29uc3QgZWRnZSBvZiBpbmNvbWluZykge1xuICAgICAgY29uc3QgbGlzdCA9IGVkZ2VzQnlUYXJnZXQuZ2V0KGVkZ2UudGFyZ2V0UG9ydCkgPz8gW107XG4gICAgICBsaXN0LnB1c2goZWRnZSk7XG4gICAgICBlZGdlc0J5VGFyZ2V0LnNldChlZGdlLnRhcmdldFBvcnQsIGxpc3QpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgW3RhcmdldFBvcnQsIGVkZ2VzXSBvZiBlZGdlc0J5VGFyZ2V0KSB7XG4gICAgICBpZiAoZWRnZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGlucHV0c1t0YXJnZXRQb3J0XSA9IGZyYW1lLnZhbHVlU3RvcmUuZ2V0UG9ydChcbiAgICAgICAgICBlZGdlc1swXS5zb3VyY2VOb2RlSWQsXG4gICAgICAgICAgZWRnZXNbMF0uc291cmNlUG9ydFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChjb25zdCBlZGdlIG9mIGVkZ2VzKSB7XG4gICAgICAgICAgaW5wdXRzW2VkZ2Uuc291cmNlUG9ydF0gPSBmcmFtZS52YWx1ZVN0b3JlLmdldFBvcnQoXG4gICAgICAgICAgICBlZGdlLnNvdXJjZU5vZGVJZCxcbiAgICAgICAgICAgIGVkZ2Uuc291cmNlUG9ydFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaW5wdXRzO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGVtcHRzIHRvIHJlYWQgYSBwaW5uZWQgdmFsdWUgZm9yIHRoZSBub2RlLiBSZXR1cm5zIHRoZSBjYWNoZWQgb3V0cHV0c1xuICAgKiB3aGVuIGEgdmFsaWQgcGlubmVkIHZhbHVlIGV4aXN0cywgb3IgYHVuZGVmaW5lZGAgdG8gcHJvY2VlZCB3aXRoIG5vcm1hbFxuICAgKiBleGVjdXRpb24uXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHRyeVBpbm5lZFZhbHVlKFxuICAgIGZyYW1lOiBHcmFwaEV4ZWN1dGlvbkZyYW1lLFxuICAgIHBsYW46IEdyYXBoRXhlY3V0aW9uUGxhbixcbiAgICBwbGFuTm9kZTogR3JhcGhFeGVjdXRpb25QbGFuTm9kZSxcbiAgICBpbnB1dHM6IEdyYXBoRXhlY3V0aW9uVmFsdWVzXG4gICk6IFByb21pc2U8R3JhcGhDYWNoZWRWYWx1ZSB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IHBvbGljeSA9IG5ldyBHcmFwaFBpbm5pbmdQb2xpY3koKTtcbiAgICBpZiAoIXBvbGljeS5zaG91bGRVc2VQaW5uZWRWYWx1ZShwbGFuTm9kZSkpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBzZXJ2aWNlID0gdGhpcy5jcmVhdGVQaW5uaW5nU2VydmljZSgpO1xuICAgIGNvbnN0IGRlcEZpbmdlcnByaW50cyA9IHRoaXMuY29tcHV0ZURlcGVuZGVuY3lGaW5nZXJwcmludHMoZnJhbWUsIHBsYW4sIHBsYW5Ob2RlLmlkKTtcbiAgICByZXR1cm4gc2VydmljZS5yZWFkUGlubmVkVmFsdWUoXG4gICAgICBwbGFuLndvcmtmbG93LFxuICAgICAgcGxhbk5vZGUsXG4gICAgICBpbnB1dHMsXG4gICAgICBkZXBGaW5nZXJwcmludHNcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY3Vyc2l2ZWx5IGNvbXB1dGVzIGZpbmdlcnByaW50cyBmb3IgYWxsIHVwc3RyZWFtIGRlcGVuZGVuY2llcyBvZiBhIG5vZGVcbiAgICogdXNpbmcgdGhlIHJlc3VsdHMgYWxyZWFkeSBhY2N1bXVsYXRlZCBpbiB0aGUgZnJhbWUuXG4gICAqL1xuICBwcml2YXRlIGNvbXB1dGVEZXBlbmRlbmN5RmluZ2VycHJpbnRzKFxuICAgIGZyYW1lOiBHcmFwaEV4ZWN1dGlvbkZyYW1lLFxuICAgIHBsYW46IEdyYXBoRXhlY3V0aW9uUGxhbixcbiAgICBub2RlSWQ6IHN0cmluZ1xuICApOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCBzZXJ2aWNlID0gdGhpcy5jcmVhdGVQaW5uaW5nU2VydmljZSgpO1xuICAgIGNvbnN0IGRlcFJlc29sdmVyID0gbmV3IEdyYXBoUGlubmluZ0RlcGVuZGVuY3lSZXNvbHZlcigpO1xuICAgIGNvbnN0IGRlcHMgPSBkZXBSZXNvbHZlci5nZXREZXBlbmRlbmNpZXMocGxhbiwgbm9kZUlkKTtcbiAgICBjb25zdCBmaW5nZXJwcmludHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IGRlcCBvZiBkZXBzKSB7XG4gICAgICBjb25zdCBub2RlID0gcGxhbi5ub2Rlcy5maW5kKChuKSA9PiBuLmlkID09PSBkZXApO1xuICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgY29uc3QgZGVwUmVzdWx0ID0gZnJhbWUubm9kZVJlc3VsdHMuZ2V0KGRlcCk7XG4gICAgICAgIGNvbnN0IGlucHV0cyA9IGRlcFJlc3VsdD8uaW5wdXRzID8/IHt9O1xuICAgICAgICBjb25zdCBuZXN0ZWREZXBzID0gdGhpcy5jb21wdXRlRGVwZW5kZW5jeUZpbmdlcnByaW50cyhmcmFtZSwgcGxhbiwgZGVwKTtcbiAgICAgICAgZmluZ2VycHJpbnRzW2RlcF0gPSBzZXJ2aWNlLmNvbXB1dGVGaW5nZXJwcmludChcbiAgICAgICAgICBwbGFuLndvcmtmbG93LFxuICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgaW5wdXRzLFxuICAgICAgICAgIG5lc3RlZERlcHNcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZpbmdlcnByaW50cztcbiAgfVxuXG4gIC8qKlxuICAgKiBSb3V0ZXMgYSBub2RlJ3Mgb3V0cHV0cyB0byBkb3duc3RyZWFtIGlucHV0cyBhbmQgd29ya2Zsb3cgb3V0cHV0cy5cbiAgICovXG4gIHByaXZhdGUgcm91dGVPdXRnb2luZ0VkZ2VzKFxuICAgIGZyYW1lOiBHcmFwaEV4ZWN1dGlvbkZyYW1lLFxuICAgIHBsYW46IEdyYXBoRXhlY3V0aW9uUGxhbixcbiAgICBwbGFuTm9kZTogR3JhcGhFeGVjdXRpb25QbGFuTm9kZSxcbiAgICBvdXRwdXRzOiBHcmFwaEV4ZWN1dGlvblZhbHVlc1xuICApOiB2b2lkIHtcbiAgICBjb25zdCBvdXRnb2luZyA9IHBsYW4ub3V0Z29pbmdCeU5vZGUuZ2V0KHBsYW5Ob2RlLmlkKSA/PyBbXTtcbiAgICBmb3IgKGNvbnN0IGVkZ2Ugb2Ygb3V0Z29pbmcpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gb3V0cHV0c1tlZGdlLnNvdXJjZVBvcnRdO1xuICAgICAgaWYgKGVkZ2UudGFyZ2V0Tm9kZUlkID09PSBHUkFQSF9XT1JLRkxPV19CT1VOREFSWSkge1xuICAgICAgICBmcmFtZS52YWx1ZVN0b3JlLnNldFdvcmtmbG93T3V0cHV0KGVkZ2UudGFyZ2V0UG9ydCwgdmFsdWUpO1xuICAgICAgfVxuICAgICAgdGhpcy5lbWl0RXZlbnQoZnJhbWUsIHtcbiAgICAgICAgdHlwZTogR3JhcGhFeGVjdXRpb25FdmVudFR5cGUuRURHRV9WQUxVRV9ST1VURUQsXG4gICAgICAgIHJ1bklkOiBmcmFtZS5ydW5JZCxcbiAgICAgICAgd29ya2Zsb3dJZDogcGxhbi53b3JrZmxvd0lkLFxuICAgICAgICBlZGdlSWQ6IGVkZ2UuaWQsXG4gICAgICAgIG5vZGVJZDogcGxhbk5vZGUuaWQsXG4gICAgICAgIHBhdGg6IFtdLFxuICAgICAgICBwYXlsb2FkOiB7IGVkZ2UsIHZhbHVlIH0sXG4gICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgIC8vIG9ic2VydmVyIGZhaWx1cmVzIG11c3Qgbm90IGNyYXNoXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgYW4gZXZlbnQsIHJlY29yZHMgaXQgaW4gdGhlIGZyYW1lLCBhbmQgZGlzcGF0Y2hlcyB0byBvYnNlcnZlcnMuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGVtaXRFdmVudChcbiAgICBmcmFtZTogR3JhcGhFeGVjdXRpb25GcmFtZSxcbiAgICBwYXJ0aWFsOiBQYXJ0aWFsPEdyYXBoRXhlY3V0aW9uRXZlbnQ+ICYge1xuICAgICAgdHlwZTogR3JhcGhFeGVjdXRpb25FdmVudFR5cGU7XG4gICAgICBydW5JZDogR3JhcGhSdW5JZDtcbiAgICAgIHdvcmtmbG93SWQ6IHN0cmluZztcbiAgICAgIHBhdGg6IHN0cmluZ1tdO1xuICAgIH1cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZXZlbnQgPSBmcmFtZS5ldmVudEZhY3RvcnkuY3JlYXRlKHtcbiAgICAgIGlkOiBcIlwiLFxuICAgICAgc2VxdWVuY2U6IDAsXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXG4gICAgICAuLi5wYXJ0aWFsLFxuICAgIH0gYXMgT21pdDxHcmFwaEV4ZWN1dGlvbkV2ZW50LCBcImlkXCIgfCBcInNlcXVlbmNlXCIgfCBcInRpbWVzdGFtcFwiPik7XG4gICAgZnJhbWUuYXBwZW5kRXZlbnQoZXZlbnQpO1xuICAgIGF3YWl0IHRoaXMuZW1pdHRlci51cGRhdGVPYnNlcnZlcnMoZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1lcmdlcyBkZWZhdWx0IG9wdGlvbnMgd2l0aCB0aGUgZ2l2ZW4gb3B0aW9ucy5cbiAgICovXG4gIHByaXZhdGUgbWVyZ2VPcHRpb25zKFxuICAgIG9wdGlvbnM6IEdyYXBoRXhlY3V0aW9uT3B0aW9uc1xuICApOiBHcmFwaEV4ZWN1dGlvbk9wdGlvbnMge1xuICAgIHJldHVybiB7XG4gICAgICBjb25jdXJyZW5jeTogR1JBUEhfREVGQVVMVF9DT05DVVJSRU5DWSxcbiAgICAgIGZhaWxGYXN0OiB0cnVlLFxuICAgICAgdmFsaWRhdGVJbnB1dHM6IHRydWUsXG4gICAgICB2YWxpZGF0ZU91dHB1dHM6IHRydWUsXG4gICAgICB1c2VQaW5uZWRWYWx1ZXM6IHRydWUsXG4gICAgICB3cml0ZVRocm91Z2hDYWNoZTogZmFsc2UsXG4gICAgICBwYXRoOiBbXSxcbiAgICAgIG1ldGFkYXRhOiB7fSxcbiAgICAgIC4uLnRoaXMuZGVmYXVsdE9wdGlvbnMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgdW5pcXVlIHJ1biBpZC5cbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVSdW5JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAoXG4gICAgICBnbG9iYWxUaGlzLmNyeXB0bz8ucmFuZG9tVVVJRD8uKCkgPz9cbiAgICAgIGBncmFwaC1ydW4tJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpfWBcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGFuIGVycm9yIGludG8gYSBzZXJpYWxpemVkIHBheWxvYWQuXG4gICAqL1xuICBwcml2YXRlIHRvRXJyb3JQYXlsb2FkKGVycm9yOiB1bmtub3duKTogR3JhcGhFeGVjdXRpb25FcnJvclBheWxvYWQge1xuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiBlcnJvci5uYW1lLFxuICAgICAgICBtZXNzYWdlOiBlcnJvci5tZXNzYWdlLFxuICAgICAgICBzdGFjazogZXJyb3Iuc3RhY2ssXG4gICAgICAgIGNvZGU6XG4gICAgICAgICAgKGVycm9yIGFzIGFueSkuZ3JhcGhDb2RlID8/XG4gICAgICAgICAgKHR5cGVvZiAoZXJyb3IgYXMgYW55KS5jb2RlID09PSBcIm51bWJlclwiXG4gICAgICAgICAgICA/IFN0cmluZygoZXJyb3IgYXMgYW55KS5jb2RlKVxuICAgICAgICAgICAgOiAoZXJyb3IgYXMgYW55KS5jb2RlKSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7IG5hbWU6IFwiVW5rbm93bkVycm9yXCIsIG1lc3NhZ2U6IFN0cmluZyhlcnJvcikgfTtcbiAgfVxufVxuIl19
|
|
432
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRpb25FbmdpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJHcmFwaEV4ZWN1dGlvbkVuZ2luZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvREFBd0Y7QUFDeEYsOERBQTZGO0FBQzdGLG1EQUEyRDtBQUMzRCw2RkFBdUY7QUFDdkYsNkZBQXVGO0FBQ3ZGLHFGQUErRTtBQUMvRSxvR0FBOEY7QUFDOUYsc0VBQWdFO0FBQ2hFLGdGQUEwRTtBQUMxRSw4RUFBd0U7QUFDeEUsc0dBQWdHO0FBQ2hHLHlFQUFtRTtBQUNuRSxxRUFBK0Q7QUFDL0QsdUVBQXNFO0FBQ3RFOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFhLG9CQUFvQjtJQUM3QixZQUFZLE1BQU07UUFDZCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxZQUFZLElBQUksSUFBSSwwREFBMEIsRUFBRSxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sSUFBSSxJQUFJLGdEQUFxQixFQUFFLENBQUM7UUFDN0QsSUFBSSxDQUFDLGlCQUFpQjtZQUNsQixNQUFNLENBQUMsaUJBQWlCLElBQUksSUFBSSxrRUFBOEIsRUFBRSxDQUFDO1FBQ3JFLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQztRQUN4RCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixNQUFNLENBQUMsZUFBZSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUNELE9BQU8sQ0FBQyxRQUFRO1FBQ1osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQ0QsU0FBUyxDQUFDLFFBQVE7UUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLFNB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SCxjQUFjLENBQUMsS0FBSztRQUNoQixJQUFJLEtBQUssWUFBWSxLQUFLLEVBQUUsQ0FBQztZQUN6QixPQUFPO2dCQUNILElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtnQkFDaEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO2dCQUN0QixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7Z0JBQ2xCLElBQUksRUFBRSxLQUFLLENBQUMsU0FBUztvQkFDakIsQ0FBQyxPQUFPLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUTt3QkFDM0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO3dCQUNwQixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQzthQUN4QixDQUFDO1FBQ04sQ0FBQztRQUNELE9BQU8sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUM1RCxDQUFDO0NBQ0o7QUFoWkQsb0RBZ1pDO0FBQ0QsMHU2Q0FBMHU2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdSQVBIX0RFRkFVTFRfQ09OQ1VSUkVOQ1ksIEdSQVBIX1dPUktGTE9XX0JPVU5EQVJZLCB9IGZyb20gXCIuLy4uL2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgR3JhcGhFeGVjdXRpb25FdmVudFR5cGUsIEdyYXBoRXhlY3V0aW9uU3RhdHVzLCB9IGZyb20gXCIuLy4uLy4uL3NoYXJlZC9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IEdyYXBoRXhlY3V0aW9uRXJyb3IgfSBmcm9tIFwiLi8uLi9lcnJvcnMvaW5kZXguanNcIjtcbmltcG9ydCB7IEdyYXBoRXhlY3V0aW9uRXZlbnRFbWl0dGVyIH0gZnJvbSBcIi4vLi4vZXZlbnRzL0dyYXBoRXhlY3V0aW9uRXZlbnRFbWl0dGVyLmpzXCI7XG5pbXBvcnQgeyBHcmFwaEV4ZWN1dGlvbkV2ZW50RmFjdG9yeSB9IGZyb20gXCIuLy4uL2V2ZW50cy9HcmFwaEV4ZWN1dGlvbkV2ZW50RmFjdG9yeS5qc1wiO1xuaW1wb3J0IHsgR3JhcGhFeGVjdXRpb25QbGFubmVyIH0gZnJvbSBcIi4vLi4vcGxhbm5pbmcvR3JhcGhFeGVjdXRpb25QbGFubmVyLmpzXCI7XG5pbXBvcnQgeyBJbk1lbW9yeUdyYXBoVmFsdWVTdG9yZUFkYXB0ZXIgfSBmcm9tIFwiLi8uLi9zdG9yZS9Jbk1lbW9yeUdyYXBoVmFsdWVTdG9yZUFkYXB0ZXIuanNcIjtcbmltcG9ydCB7IEdyYXBoVmFsdWVTdG9yZSB9IGZyb20gXCIuLy4uL3N0b3JlL0dyYXBoVmFsdWVTdG9yZS5qc1wiO1xuaW1wb3J0IHsgR3JhcGhQaW5uaW5nU2VydmljZSB9IGZyb20gXCIuLy4uL3Bpbm5pbmcvR3JhcGhQaW5uaW5nU2VydmljZS5qc1wiO1xuaW1wb3J0IHsgR3JhcGhQaW5uaW5nUG9saWN5IH0gZnJvbSBcIi4vLi4vcGlubmluZy9HcmFwaFBpbm5pbmdQb2xpY3kuanNcIjtcbmltcG9ydCB7IEdyYXBoUGlubmluZ0RlcGVuZGVuY3lSZXNvbHZlciB9IGZyb20gXCIuLy4uL3Bpbm5pbmcvR3JhcGhQaW5uaW5nRGVwZW5kZW5jeVJlc29sdmVyLmpzXCI7XG5pbXBvcnQgeyBHcmFwaEV4ZWN1dGlvbkNvbnRleHQgfSBmcm9tIFwiLi9HcmFwaEV4ZWN1dGlvbkNvbnRleHQuanNcIjtcbmltcG9ydCB7IEdyYXBoRXhlY3V0aW9uRnJhbWUgfSBmcm9tIFwiLi9HcmFwaEV4ZWN1dGlvbkZyYW1lLmpzXCI7XG5pbXBvcnQgeyBidWlsZEdyYXBoRXhlY3V0aW9uUmVzdWx0IH0gZnJvbSBcIi4vR3JhcGhFeGVjdXRpb25SZXN1bHQuanNcIjtcbi8qKlxuICogUmVmZXJlbmNlIGdyYXBoIGV4ZWN1dGlvbiBlbmdpbmUuXG4gKlxuICogRXhlY3V0ZXMgYSB7QGxpbmsgR3JhcGhXb3JrZmxvd0RlZmluaXRpb259IGJ5OlxuICogMS4gUGxhbm5pbmcgdGhlIHdvcmtmbG93IGludG8gdG9wb2xvZ2ljYWwgbGF5ZXJzLlxuICogMi4gU2VlZGluZyB3b3JrZmxvdyBpbnB1dHMgaW50byB0aGUgdmFsdWUgc3RvcmUuXG4gKiAzLiBFeGVjdXRpbmcgbm9kZXMgbGF5ZXItYnktbGF5ZXIgd2l0aCBjb25maWd1cmFibGUgY29uY3VycmVuY3kuXG4gKiA0LiBSb3V0aW5nIHZhbHVlcyBhbG9uZyBlZGdlcy5cbiAqIDUuIEVtaXR0aW5nIHN0cnVjdHVyZWQgZXZlbnRzIHRocm91Z2ggRGVjYWYncyBPYnNlcnZhYmxlIHBpcGVsaW5lLlxuICogNi4gUmV0dXJuaW5nIGEgY29tcGxldGUge0BsaW5rIEdyYXBoRXhlY3V0aW9uUmVzdWx0fS5cbiAqL1xuZXhwb3J0IGNsYXNzIEdyYXBoRXhlY3V0aW9uRW5naW5lIHtcbiAgICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICAgICAgdGhpcy5lbWl0dGVyID0gY29uZmlnLmV2ZW50RW1pdHRlciA/PyBuZXcgR3JhcGhFeGVjdXRpb25FdmVudEVtaXR0ZXIoKTtcbiAgICAgICAgdGhpcy5wbGFubmVyID0gY29uZmlnLnBsYW5uZXIgPz8gbmV3IEdyYXBoRXhlY3V0aW9uUGxhbm5lcigpO1xuICAgICAgICB0aGlzLnZhbHVlU3RvcmVBZGFwdGVyID1cbiAgICAgICAgICAgIGNvbmZpZy52YWx1ZVN0b3JlQWRhcHRlciA/PyBuZXcgSW5NZW1vcnlHcmFwaFZhbHVlU3RvcmVBZGFwdGVyKCk7XG4gICAgICAgIHRoaXMuZGVmYXVsdE9wdGlvbnMgPSBjb25maWcuZGVmYXVsdE9wdGlvbnMgPz8ge307XG4gICAgICAgIHRoaXMuY29kZVNhbmRib3hFdmFsdWF0b3IgPSBjb25maWcuY29kZVNhbmRib3hFdmFsdWF0b3I7XG4gICAgICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgICAgICBjb25maWcub25FbmdpbmVDcmVhdGVkPy4odGhpcyk7XG4gICAgfVxuICAgIG9ic2VydmUob2JzZXJ2ZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1pdHRlci5vYnNlcnZlKG9ic2VydmVyKTtcbiAgICB9XG4gICAgdW5PYnNlcnZlKG9ic2VydmVyKSB7XG4gICAgICAgIHRoaXMuZW1pdHRlci51bk9ic2VydmUob2JzZXJ2ZXIpO1xuICAgIH1cbiAgICBhc3luYyB1cGRhdGVPYnNlcnZlcnMoZXZlbnQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5lbWl0dGVyLnVwZGF0ZU9ic2VydmVycyhldmVudCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIGEgd29ya2Zsb3cgd2l0aCB0aGUgZ2l2ZW4gaW5wdXRzIGFuZCBvcHRpb25zLlxuICAgICAqL1xuICAgIGFzeW5jIGV4ZWN1dGUod29ya2Zsb3csIGlucHV0cyA9IHt9LCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgY29uc3Qgb3B0cyA9IHRoaXMubWVyZ2VPcHRpb25zKG9wdGlvbnMpO1xuICAgICAgICBjb25zdCBydW5JZCA9IG9wdHMucnVuSWQgPz8gdGhpcy5nZW5lcmF0ZVJ1bklkKCk7XG4gICAgICAgIGNvbnN0IHBhdGggPSBvcHRzLnBhdGggPz8gW107XG4gICAgICAgIGNvbnN0IGV2ZW50RmFjdG9yeSA9IG5ldyBHcmFwaEV4ZWN1dGlvbkV2ZW50RmFjdG9yeSgpO1xuICAgICAgICBjb25zdCB2YWx1ZVN0b3JlID0gbmV3IEdyYXBoVmFsdWVTdG9yZSh0aGlzLnZhbHVlU3RvcmVBZGFwdGVyKTtcbiAgICAgICAgdmFsdWVTdG9yZS5zZWVkV29ya2Zsb3dJbnB1dHMoaW5wdXRzKTtcbiAgICAgICAgY29uc3QgcGxhbiA9IHRoaXMucGxhbm5lci5wbGFuKHdvcmtmbG93KTtcbiAgICAgICAgY29uc3QgZnJhbWUgPSBuZXcgR3JhcGhFeGVjdXRpb25GcmFtZShydW5JZCwgcGxhbiwgdmFsdWVTdG9yZSwgZXZlbnRGYWN0b3J5KTtcbiAgICAgICAgY29uc3QgZW1pdEZuID0gYXN5bmMgKHBhcnRpYWwpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZW1pdEV2ZW50KGZyYW1lLCB7XG4gICAgICAgICAgICAgICAgdHlwZTogcGFydGlhbC50eXBlID8/IEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlLk5PREVfT1VUUFVULFxuICAgICAgICAgICAgICAgIHJ1bklkLFxuICAgICAgICAgICAgICAgIHBhcmVudFJ1bklkOiBvcHRzLnBhcmVudFJ1bklkLFxuICAgICAgICAgICAgICAgIHdvcmtmbG93SWQ6IHdvcmtmbG93Lm5hbWUsXG4gICAgICAgICAgICAgICAgbm9kZUlkOiBwYXJ0aWFsLm5vZGVJZCxcbiAgICAgICAgICAgICAgICBwYXRoOiBwYXJ0aWFsLnBhdGggPz8gcGF0aCxcbiAgICAgICAgICAgICAgICAuLi5wYXJ0aWFsLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIGF3YWl0IHRoaXMuZW1pdEV2ZW50KGZyYW1lLCB7XG4gICAgICAgICAgICB0eXBlOiBHcmFwaEV4ZWN1dGlvbkV2ZW50VHlwZS5XT1JLRkxPV19TVEFSVEVELFxuICAgICAgICAgICAgcnVuSWQsXG4gICAgICAgICAgICBwYXJlbnRSdW5JZDogb3B0cy5wYXJlbnRSdW5JZCxcbiAgICAgICAgICAgIHdvcmtmbG93SWQ6IHdvcmtmbG93Lm5hbWUsXG4gICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgc3RhdHVzOiBHcmFwaEV4ZWN1dGlvblN0YXR1cy5SVU5OSU5HLFxuICAgICAgICAgICAgcGF5bG9hZDogeyBpbnB1dHMgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IHRoaXMuZW1pdEV2ZW50KGZyYW1lLCB7XG4gICAgICAgICAgICB0eXBlOiBHcmFwaEV4ZWN1dGlvbkV2ZW50VHlwZS5XT1JLRkxPV19QTEFOTkVELFxuICAgICAgICAgICAgcnVuSWQsXG4gICAgICAgICAgICBwYXJlbnRSdW5JZDogb3B0cy5wYXJlbnRSdW5JZCxcbiAgICAgICAgICAgIHdvcmtmbG93SWQ6IHdvcmtmbG93Lm5hbWUsXG4gICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgc3RhdHVzOiBHcmFwaEV4ZWN1dGlvblN0YXR1cy5QTEFOTklORyxcbiAgICAgICAgICAgIHBheWxvYWQ6IHsgbGF5ZXJzOiBwbGFuLmxheWVycy5sZW5ndGgsIG5vZGVzOiBwbGFuLm5vZGVzLmxlbmd0aCB9LFxuICAgICAgICB9KTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgcGxhbi5sYXllcnMpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmV4ZWN1dGVMYXllcihmcmFtZSwgcGxhbiwgbGF5ZXIubm9kZXMsIG9wdHMsIGVtaXRGbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBmaXJzdEZhaWx1cmUgPSBbLi4uZnJhbWUubm9kZVJlc3VsdHMudmFsdWVzKCldLmZpbmQoKHJlc3VsdCkgPT4gcmVzdWx0LnN0YXR1cyA9PT0gR3JhcGhFeGVjdXRpb25TdGF0dXMuRkFJTEVEKTtcbiAgICAgICAgICAgIGlmIChmaXJzdEZhaWx1cmU/LmVycm9yKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEdyYXBoRXhlY3V0aW9uRXJyb3IoZmlyc3RGYWlsdXJlLmVycm9yLm1lc3NhZ2UsIGZpcnN0RmFpbHVyZS5lcnJvci5jb2RlID8/IFwiR1JBUEhfRVhFQ1VUSU9OX0VSUk9SXCIsIGZpcnN0RmFpbHVyZS5lcnJvci5kZXRhaWxzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZyYW1lLmZpbmlzaCgpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5lbWl0RXZlbnQoZnJhbWUsIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBHcmFwaEV4ZWN1dGlvbkV2ZW50VHlwZS5XT1JLRkxPV19DT01QTEVURUQsXG4gICAgICAgICAgICAgICAgcnVuSWQsXG4gICAgICAgICAgICAgICAgcGFyZW50UnVuSWQ6IG9wdHMucGFyZW50UnVuSWQsXG4gICAgICAgICAgICAgICAgd29ya2Zsb3dJZDogd29ya2Zsb3cubmFtZSxcbiAgICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICAgIHN0YXR1czogR3JhcGhFeGVjdXRpb25TdGF0dXMuU1VDQ0VFREVELFxuICAgICAgICAgICAgICAgIHBheWxvYWQ6IHsgb3V0cHV0czogdmFsdWVTdG9yZS5nZXRXb3JrZmxvd1ZhbHVlcygpIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBidWlsZEdyYXBoRXhlY3V0aW9uUmVzdWx0KGZyYW1lLCB3b3JrZmxvdywgaW5wdXRzLCBHcmFwaEV4ZWN1dGlvblN0YXR1cy5TVUNDRUVERUQsIG9wdHMubWV0YWRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgZnJhbWUuZmluaXNoKCk7XG4gICAgICAgICAgICBjb25zdCBlcnJvclBheWxvYWQgPSB0aGlzLnRvRXJyb3JQYXlsb2FkKGVycm9yKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZW1pdEV2ZW50KGZyYW1lLCB7XG4gICAgICAgICAgICAgICAgdHlwZTogR3JhcGhFeGVjdXRpb25FdmVudFR5cGUuV09SS0ZMT1dfRkFJTEVELFxuICAgICAgICAgICAgICAgIHJ1bklkLFxuICAgICAgICAgICAgICAgIHBhcmVudFJ1bklkOiBvcHRzLnBhcmVudFJ1bklkLFxuICAgICAgICAgICAgICAgIHdvcmtmbG93SWQ6IHdvcmtmbG93Lm5hbWUsXG4gICAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgICBzdGF0dXM6IEdyYXBoRXhlY3V0aW9uU3RhdHVzLkZBSUxFRCxcbiAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3JQYXlsb2FkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gYnVpbGRHcmFwaEV4ZWN1dGlvblJlc3VsdChmcmFtZSwgd29ya2Zsb3csIGlucHV0cywgR3JhcGhFeGVjdXRpb25TdGF0dXMuRkFJTEVELCBvcHRzLm1ldGFkYXRhKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBQaW5zIGEgbm9kZSBhbmQgaXRzIHVwc3RyZWFtIGRlcGVuZGVuY2llcyBhZnRlciBhIGNvbXBsZXRlZCBydW4uXG4gICAgICpcbiAgICAgKiBEZWxlZ2F0ZXMgdG8ge0BsaW5rIEdyYXBoUGlubmluZ1NlcnZpY2V9LiBUaGUgcGxhbiBhbmQgcmVzdWx0IG11c3QgY29tZVxuICAgICAqIGZyb20gYSBwcmlvciBzdWNjZXNzZnVsIGV4ZWN1dGlvbiBvZiB0aGUgc2FtZSB3b3JrZmxvdy5cbiAgICAgKi9cbiAgICBhc3luYyBwaW5Ob2RlKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3Qgc2VydmljZSA9IHRoaXMuY3JlYXRlUGlubmluZ1NlcnZpY2UoKTtcbiAgICAgICAgYXdhaXQgc2VydmljZS5waW5Ob2RlKG9wdGlvbnMpO1xuICAgICAgICBhd2FpdCB0aGlzLmVtaXRQaW5uaW5nRXZlbnQob3B0aW9ucy5ub2RlSWQsIEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlLk5PREVfUElOTkVEKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVW5waW5zIGEgbm9kZSBieSBpdHMgZmluZ2VycHJpbnQuXG4gICAgICovXG4gICAgYXN5bmMgdW5waW5Ob2RlKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3Qgc2VydmljZSA9IHRoaXMuY3JlYXRlUGlubmluZ1NlcnZpY2UoKTtcbiAgICAgICAgYXdhaXQgc2VydmljZS51bnBpbk5vZGUob3B0aW9ucyk7XG4gICAgICAgIGF3YWl0IHRoaXMuZW1pdFBpbm5pbmdFdmVudChvcHRpb25zLm5vZGVJZCwgR3JhcGhFeGVjdXRpb25FdmVudFR5cGUuTk9ERV9VTlBJTk5FRCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSB7QGxpbmsgR3JhcGhQaW5uaW5nU2VydmljZX0gYmFja2VkIGJ5IHRoaXMgZW5naW5lJ3MgdmFsdWUgc3RvcmVcbiAgICAgKiBhZGFwdGVyLlxuICAgICAqL1xuICAgIGNyZWF0ZVBpbm5pbmdTZXJ2aWNlKCkge1xuICAgICAgICBjb25zdCBzdG9yZSA9IG5ldyBHcmFwaFZhbHVlU3RvcmUodGhpcy52YWx1ZVN0b3JlQWRhcHRlcik7XG4gICAgICAgIHJldHVybiBuZXcgR3JhcGhQaW5uaW5nU2VydmljZShzdG9yZSwgbmV3IEdyYXBoUGlubmluZ1BvbGljeSgpLCBuZXcgR3JhcGhQaW5uaW5nRGVwZW5kZW5jeVJlc29sdmVyKCkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFbWl0cyBhIHBpbm5pbmctcmVsYXRlZCBldmVudCB0byBhbGwgb2JzZXJ2ZXJzLlxuICAgICAqL1xuICAgIGFzeW5jIGVtaXRQaW5uaW5nRXZlbnQobm9kZUlkLCB0eXBlKSB7XG4gICAgICAgIGNvbnN0IGZhY3RvcnkgPSBuZXcgR3JhcGhFeGVjdXRpb25FdmVudEZhY3RvcnkoKTtcbiAgICAgICAgY29uc3QgZXZlbnQgPSBmYWN0b3J5LmNyZWF0ZSh7XG4gICAgICAgICAgICBpZDogXCJcIixcbiAgICAgICAgICAgIHNlcXVlbmNlOiAwLFxuICAgICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgcnVuSWQ6IFwicGlubmluZ1wiLFxuICAgICAgICAgICAgd29ya2Zsb3dJZDogXCJcIixcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBub2RlSWQsXG4gICAgICAgICAgICBwYXRoOiBbXSxcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IHRoaXMuZW1pdHRlci51cGRhdGVPYnNlcnZlcnMoZXZlbnQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyBhIGxheWVyIG9mIG5vZGVzIHdpdGggdGhlIGNvbmZpZ3VyZWQgY29uY3VycmVuY3kuXG4gICAgICovXG4gICAgYXN5bmMgZXhlY3V0ZUxheWVyKGZyYW1lLCBwbGFuLCBub2Rlcywgb3B0cywgZW1pdEZuKSB7XG4gICAgICAgIGNvbnN0IGNvbmN1cnJlbmN5ID0gTWF0aC5tYXgoMSwgb3B0cy5jb25jdXJyZW5jeSA/PyBHUkFQSF9ERUZBVUxUX0NPTkNVUlJFTkNZKTtcbiAgICAgICAgY29uc3QgcXVldWUgPSBbLi4ubm9kZXNdO1xuICAgICAgICB3aGlsZSAocXVldWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgYmF0Y2ggPSBxdWV1ZS5zcGxpY2UoMCwgY29uY3VycmVuY3kpO1xuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoYmF0Y2gubWFwKChub2RlKSA9PiB0aGlzLmV4ZWN1dGVOb2RlKGZyYW1lLCBwbGFuLCBub2RlLCBvcHRzLCBlbWl0Rm4pKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogRXhlY3V0ZXMgYSBzaW5nbGUgbm9kZS5cbiAgICAgKi9cbiAgICBhc3luYyBleGVjdXRlTm9kZShmcmFtZSwgcGxhbiwgcGxhbk5vZGUsIG9wdHMsIGVtaXRGbikge1xuICAgICAgICBjb25zdCBzdGFydGVkQXQgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBjb25zdCBub2RlUGF0aCA9IFsuLi4ob3B0cy5wYXRoID8/IFtdKSwgcGxhbk5vZGUuaWRdO1xuICAgICAgICBhd2FpdCB0aGlzLmVtaXRFdmVudChmcmFtZSwge1xuICAgICAgICAgICAgdHlwZTogR3JhcGhFeGVjdXRpb25FdmVudFR5cGUuTk9ERV9TVEFSVEVELFxuICAgICAgICAgICAgcnVuSWQ6IGZyYW1lLnJ1bklkLFxuICAgICAgICAgICAgd29ya2Zsb3dJZDogcGxhbi53b3JrZmxvd0lkLFxuICAgICAgICAgICAgbm9kZUlkOiBwbGFuTm9kZS5pZCxcbiAgICAgICAgICAgIHBhdGg6IG5vZGVQYXRoLFxuICAgICAgICAgICAgc3RhdHVzOiBHcmFwaEV4ZWN1dGlvblN0YXR1cy5SVU5OSU5HLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgaW5wdXRzID0gdGhpcy5yZXNvbHZlTm9kZUlucHV0cyhmcmFtZSwgcGxhbiwgcGxhbk5vZGUpO1xuICAgICAgICAvLyBDYWNoZS1oaXQ6IGNoZWNrIGZvciBhIHBpbm5lZCB2YWx1ZSBiZWZvcmUgZXhlY3V0aW5nIHRoZSBub2RlXG4gICAgICAgIGlmIChvcHRzLnVzZVBpbm5lZFZhbHVlcykge1xuICAgICAgICAgICAgY29uc3QgY2FjaGVkID0gYXdhaXQgdGhpcy50cnlQaW5uZWRWYWx1ZShmcmFtZSwgcGxhbiwgcGxhbk5vZGUsIGlucHV0cyk7XG4gICAgICAgICAgICBpZiAoY2FjaGVkKSB7XG4gICAgICAgICAgICAgICAgZnJhbWUudmFsdWVTdG9yZS5zZXROb2RlT3V0cHV0cyhwbGFuTm9kZS5pZCwgY2FjaGVkLm91dHB1dHMpO1xuICAgICAgICAgICAgICAgIHRoaXMucm91dGVPdXRnb2luZ0VkZ2VzKGZyYW1lLCBwbGFuLCBwbGFuTm9kZSwgY2FjaGVkLm91dHB1dHMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbmlzaGVkQXQgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZUlkOiBwbGFuTm9kZS5pZCxcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBHcmFwaEV4ZWN1dGlvblN0YXR1cy5DQUNIRUQsXG4gICAgICAgICAgICAgICAgICAgIGlucHV0cyxcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0czogY2FjaGVkLm91dHB1dHMsXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0ZWRBdCxcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoZWRBdCxcbiAgICAgICAgICAgICAgICAgICAgZnJvbUNhY2hlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBwaW5uZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50czogW10sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBmcmFtZS5yZWNvcmROb2RlUmVzdWx0KHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5lbWl0RXZlbnQoZnJhbWUsIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogR3JhcGhFeGVjdXRpb25FdmVudFR5cGUuTk9ERV9DQUNIRV9ISVQsXG4gICAgICAgICAgICAgICAgICAgIHJ1bklkOiBmcmFtZS5ydW5JZCxcbiAgICAgICAgICAgICAgICAgICAgd29ya2Zsb3dJZDogcGxhbi53b3JrZmxvd0lkLFxuICAgICAgICAgICAgICAgICAgICBub2RlSWQ6IHBsYW5Ob2RlLmlkLFxuICAgICAgICAgICAgICAgICAgICBwYXRoOiBub2RlUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBHcmFwaEV4ZWN1dGlvblN0YXR1cy5DQUNIRUQsXG4gICAgICAgICAgICAgICAgICAgIHBheWxvYWQ6IHsgb3V0cHV0czogY2FjaGVkLm91dHB1dHMgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmVtaXRFdmVudChmcmFtZSwge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBHcmFwaEV4ZWN1dGlvbkV2ZW50VHlwZS5OT0RFX0NPTVBMRVRFRCxcbiAgICAgICAgICAgICAgICAgICAgcnVuSWQ6IGZyYW1lLnJ1bklkLFxuICAgICAgICAgICAgICAgICAgICB3b3JrZmxvd0lkOiBwbGFuLndvcmtmbG93SWQsXG4gICAgICAgICAgICAgICAgICAgIG5vZGVJZDogcGxhbk5vZGUuaWQsXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IG5vZGVQYXRoLFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IEdyYXBoRXhlY3V0aW9uU3RhdHVzLlNVQ0NFRURFRCxcbiAgICAgICAgICAgICAgICAgICAgcGF5bG9hZDogeyBvdXRwdXRzOiBjYWNoZWQub3V0cHV0cywgZnJvbUNhY2hlOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBleGVjdXRvciA9IHRoaXMuY29uZmlnLnJlZ2lzdHJ5LnJlc29sdmUocGxhbk5vZGUua2luZCk7XG4gICAgICAgICAgICBjb25zdCBjb250ZXh0ID0gbmV3IEdyYXBoRXhlY3V0aW9uQ29udGV4dChmcmFtZS5ydW5JZCwgb3B0cy5wYXJlbnRSdW5JZCwgcGxhbi53b3JrZmxvdywgcGxhbk5vZGUuZGVmaW5pdGlvbiwgbm9kZVBhdGgsIGVtaXRGbiwgb3B0cy5tZXRhZGF0YSk7XG4gICAgICAgICAgICBjb25zdCBvdXRwdXRzID0gYXdhaXQgZXhlY3V0b3IuZXhlY3V0ZShpbnB1dHMsIGNvbnRleHQpO1xuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRPdXRwdXRzID0gb3V0cHV0cyA/PyB7fTtcbiAgICAgICAgICAgIGZyYW1lLnZhbHVlU3RvcmUuc2V0Tm9kZU91dHB1dHMocGxhbk5vZGUuaWQsIHJlc29sdmVkT3V0cHV0cyk7XG4gICAgICAgICAgICB0aGlzLnJvdXRlT3V0Z29pbmdFZGdlcyhmcmFtZSwgcGxhbiwgcGxhbk5vZGUsIHJlc29sdmVkT3V0cHV0cyk7XG4gICAgICAgICAgICBjb25zdCBmaW5pc2hlZEF0ID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICBub2RlSWQ6IHBsYW5Ob2RlLmlkLFxuICAgICAgICAgICAgICAgIHN0YXR1czogR3JhcGhFeGVjdXRpb25TdGF0dXMuU1VDQ0VFREVELFxuICAgICAgICAgICAgICAgIGlucHV0cyxcbiAgICAgICAgICAgICAgICBvdXRwdXRzOiByZXNvbHZlZE91dHB1dHMsXG4gICAgICAgICAgICAgICAgc3RhcnRlZEF0LFxuICAgICAgICAgICAgICAgIGZpbmlzaGVkQXQsXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBmcmFtZS5yZWNvcmROb2RlUmVzdWx0KHJlc3VsdCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmVtaXRFdmVudChmcmFtZSwge1xuICAgICAgICAgICAgICAgIHR5cGU6IEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlLk5PREVfQ09NUExFVEVELFxuICAgICAgICAgICAgICAgIHJ1bklkOiBmcmFtZS5ydW5JZCxcbiAgICAgICAgICAgICAgICB3b3JrZmxvd0lkOiBwbGFuLndvcmtmbG93SWQsXG4gICAgICAgICAgICAgICAgbm9kZUlkOiBwbGFuTm9kZS5pZCxcbiAgICAgICAgICAgICAgICBwYXRoOiBub2RlUGF0aCxcbiAgICAgICAgICAgICAgICBzdGF0dXM6IEdyYXBoRXhlY3V0aW9uU3RhdHVzLlNVQ0NFRURFRCxcbiAgICAgICAgICAgICAgICBwYXlsb2FkOiB7IG91dHB1dHM6IHJlc29sdmVkT3V0cHV0cyB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zdCBmaW5pc2hlZEF0ID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yUGF5bG9hZCA9IHRoaXMudG9FcnJvclBheWxvYWQoZXJyb3IpO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgICAgICAgICAgIG5vZGVJZDogcGxhbk5vZGUuaWQsXG4gICAgICAgICAgICAgICAgc3RhdHVzOiBHcmFwaEV4ZWN1dGlvblN0YXR1cy5GQUlMRUQsXG4gICAgICAgICAgICAgICAgaW5wdXRzLFxuICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvclBheWxvYWQsXG4gICAgICAgICAgICAgICAgc3RhcnRlZEF0LFxuICAgICAgICAgICAgICAgIGZpbmlzaGVkQXQsXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBmcmFtZS5yZWNvcmROb2RlUmVzdWx0KHJlc3VsdCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmVtaXRFdmVudChmcmFtZSwge1xuICAgICAgICAgICAgICAgIHR5cGU6IEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlLk5PREVfRkFJTEVELFxuICAgICAgICAgICAgICAgIHJ1bklkOiBmcmFtZS5ydW5JZCxcbiAgICAgICAgICAgICAgICB3b3JrZmxvd0lkOiBwbGFuLndvcmtmbG93SWQsXG4gICAgICAgICAgICAgICAgbm9kZUlkOiBwbGFuTm9kZS5pZCxcbiAgICAgICAgICAgICAgICBwYXRoOiBub2RlUGF0aCxcbiAgICAgICAgICAgICAgICBzdGF0dXM6IEdyYXBoRXhlY3V0aW9uU3RhdHVzLkZBSUxFRCxcbiAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3JQYXlsb2FkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAob3B0cy5mYWlsRmFzdCA/PyB0cnVlKVxuICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlc29sdmVzIGEgbm9kZSdzIGlucHV0IHZhbHVlcyBmcm9tIGluY29taW5nIGVkZ2VzLlxuICAgICAqXG4gICAgICogV2hlbiBtdWx0aXBsZSBlZGdlcyB0YXJnZXQgdGhlIHNhbWUgcG9ydCwgdGhlaXIgdmFsdWVzIGFyZSBzcHJlYWQgaW50byB0aGVcbiAgICAgKiB0b3AtbGV2ZWwgaW5wdXRzIGtleWVkIGJ5IGVhY2ggZWRnZSdzIGBzb3VyY2VQb3J0YC4gVGhpcyBhbGxvd3MgbXVsdGlwbGVcbiAgICAgKiB3b3JrZmxvdyBpbnB1dCBiYWRnZXMgdG8gY29ubmVjdCB0byBhIHNpbmdsZSBwb3J0IChlLmcuIHRoZSBDb2RlIG5vZGUnc1xuICAgICAqIGBkYXRhYCBwb3J0KSBhbmQgaGF2ZSBhbGwgdmFsdWVzIGFjY2Vzc2libGUgZGlyZWN0bHkgYXNcbiAgICAgKiBgJGlucHV0Lntzb3VyY2VQb3J0fWAgKGUuZy4gYCRpbnB1dC5jb3VudGAsIGAkaW5wdXQudGV4dGApLlxuICAgICAqL1xuICAgIHJlc29sdmVOb2RlSW5wdXRzKGZyYW1lLCBwbGFuLCBwbGFuTm9kZSkge1xuICAgICAgICBjb25zdCBpbnB1dHMgPSB7fTtcbiAgICAgICAgY29uc3QgaW5jb21pbmcgPSBwbGFuLmluY29taW5nQnlOb2RlLmdldChwbGFuTm9kZS5pZCkgPz8gW107XG4gICAgICAgIGNvbnN0IGVkZ2VzQnlUYXJnZXQgPSBuZXcgTWFwKCk7XG4gICAgICAgIGZvciAoY29uc3QgZWRnZSBvZiBpbmNvbWluZykge1xuICAgICAgICAgICAgY29uc3QgbGlzdCA9IGVkZ2VzQnlUYXJnZXQuZ2V0KGVkZ2UudGFyZ2V0UG9ydCkgPz8gW107XG4gICAgICAgICAgICBsaXN0LnB1c2goZWRnZSk7XG4gICAgICAgICAgICBlZGdlc0J5VGFyZ2V0LnNldChlZGdlLnRhcmdldFBvcnQsIGxpc3QpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgW3RhcmdldFBvcnQsIGVkZ2VzXSBvZiBlZGdlc0J5VGFyZ2V0KSB7XG4gICAgICAgICAgICBpZiAoZWRnZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgaW5wdXRzW3RhcmdldFBvcnRdID0gZnJhbWUudmFsdWVTdG9yZS5nZXRQb3J0KGVkZ2VzWzBdLnNvdXJjZU5vZGVJZCwgZWRnZXNbMF0uc291cmNlUG9ydCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGVkZ2Ugb2YgZWRnZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRzW2VkZ2Uuc291cmNlUG9ydF0gPSBmcmFtZS52YWx1ZVN0b3JlLmdldFBvcnQoZWRnZS5zb3VyY2VOb2RlSWQsIGVkZ2Uuc291cmNlUG9ydCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbnB1dHM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEF0dGVtcHRzIHRvIHJlYWQgYSBwaW5uZWQgdmFsdWUgZm9yIHRoZSBub2RlLiBSZXR1cm5zIHRoZSBjYWNoZWQgb3V0cHV0c1xuICAgICAqIHdoZW4gYSB2YWxpZCBwaW5uZWQgdmFsdWUgZXhpc3RzLCBvciBgdW5kZWZpbmVkYCB0byBwcm9jZWVkIHdpdGggbm9ybWFsXG4gICAgICogZXhlY3V0aW9uLlxuICAgICAqL1xuICAgIGFzeW5jIHRyeVBpbm5lZFZhbHVlKGZyYW1lLCBwbGFuLCBwbGFuTm9kZSwgaW5wdXRzKSB7XG4gICAgICAgIGNvbnN0IHBvbGljeSA9IG5ldyBHcmFwaFBpbm5pbmdQb2xpY3koKTtcbiAgICAgICAgaWYgKCFwb2xpY3kuc2hvdWxkVXNlUGlubmVkVmFsdWUocGxhbk5vZGUpKVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3Qgc2VydmljZSA9IHRoaXMuY3JlYXRlUGlubmluZ1NlcnZpY2UoKTtcbiAgICAgICAgY29uc3QgZGVwRmluZ2VycHJpbnRzID0gdGhpcy5jb21wdXRlRGVwZW5kZW5jeUZpbmdlcnByaW50cyhmcmFtZSwgcGxhbiwgcGxhbk5vZGUuaWQpO1xuICAgICAgICByZXR1cm4gc2VydmljZS5yZWFkUGlubmVkVmFsdWUocGxhbi53b3JrZmxvdywgcGxhbk5vZGUsIGlucHV0cywgZGVwRmluZ2VycHJpbnRzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVjdXJzaXZlbHkgY29tcHV0ZXMgZmluZ2VycHJpbnRzIGZvciBhbGwgdXBzdHJlYW0gZGVwZW5kZW5jaWVzIG9mIGEgbm9kZVxuICAgICAqIHVzaW5nIHRoZSByZXN1bHRzIGFscmVhZHkgYWNjdW11bGF0ZWQgaW4gdGhlIGZyYW1lLlxuICAgICAqL1xuICAgIGNvbXB1dGVEZXBlbmRlbmN5RmluZ2VycHJpbnRzKGZyYW1lLCBwbGFuLCBub2RlSWQpIHtcbiAgICAgICAgY29uc3Qgc2VydmljZSA9IHRoaXMuY3JlYXRlUGlubmluZ1NlcnZpY2UoKTtcbiAgICAgICAgY29uc3QgZGVwUmVzb2x2ZXIgPSBuZXcgR3JhcGhQaW5uaW5nRGVwZW5kZW5jeVJlc29sdmVyKCk7XG4gICAgICAgIGNvbnN0IGRlcHMgPSBkZXBSZXNvbHZlci5nZXREZXBlbmRlbmNpZXMocGxhbiwgbm9kZUlkKTtcbiAgICAgICAgY29uc3QgZmluZ2VycHJpbnRzID0ge307XG4gICAgICAgIGZvciAoY29uc3QgZGVwIG9mIGRlcHMpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBwbGFuLm5vZGVzLmZpbmQoKG4pID0+IG4uaWQgPT09IGRlcCk7XG4gICAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlcFJlc3VsdCA9IGZyYW1lLm5vZGVSZXN1bHRzLmdldChkZXApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0cyA9IGRlcFJlc3VsdD8uaW5wdXRzID8/IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IG5lc3RlZERlcHMgPSB0aGlzLmNvbXB1dGVEZXBlbmRlbmN5RmluZ2VycHJpbnRzKGZyYW1lLCBwbGFuLCBkZXApO1xuICAgICAgICAgICAgICAgIGZpbmdlcnByaW50c1tkZXBdID0gc2VydmljZS5jb21wdXRlRmluZ2VycHJpbnQocGxhbi53b3JrZmxvdywgbm9kZSwgaW5wdXRzLCBuZXN0ZWREZXBzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmluZ2VycHJpbnRzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSb3V0ZXMgYSBub2RlJ3Mgb3V0cHV0cyB0byBkb3duc3RyZWFtIGlucHV0cyBhbmQgd29ya2Zsb3cgb3V0cHV0cy5cbiAgICAgKi9cbiAgICByb3V0ZU91dGdvaW5nRWRnZXMoZnJhbWUsIHBsYW4sIHBsYW5Ob2RlLCBvdXRwdXRzKSB7XG4gICAgICAgIGNvbnN0IG91dGdvaW5nID0gcGxhbi5vdXRnb2luZ0J5Tm9kZS5nZXQocGxhbk5vZGUuaWQpID8/IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGVkZ2Ugb2Ygb3V0Z29pbmcpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gb3V0cHV0c1tlZGdlLnNvdXJjZVBvcnRdO1xuICAgICAgICAgICAgaWYgKGVkZ2UudGFyZ2V0Tm9kZUlkID09PSBHUkFQSF9XT1JLRkxPV19CT1VOREFSWSkge1xuICAgICAgICAgICAgICAgIGZyYW1lLnZhbHVlU3RvcmUuc2V0V29ya2Zsb3dPdXRwdXQoZWRnZS50YXJnZXRQb3J0LCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmVtaXRFdmVudChmcmFtZSwge1xuICAgICAgICAgICAgICAgIHR5cGU6IEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlLkVER0VfVkFMVUVfUk9VVEVELFxuICAgICAgICAgICAgICAgIHJ1bklkOiBmcmFtZS5ydW5JZCxcbiAgICAgICAgICAgICAgICB3b3JrZmxvd0lkOiBwbGFuLndvcmtmbG93SWQsXG4gICAgICAgICAgICAgICAgZWRnZUlkOiBlZGdlLmlkLFxuICAgICAgICAgICAgICAgIG5vZGVJZDogcGxhbk5vZGUuaWQsXG4gICAgICAgICAgICAgICAgcGF0aDogW10sXG4gICAgICAgICAgICAgICAgcGF5bG9hZDogeyBlZGdlLCB2YWx1ZSB9LFxuICAgICAgICAgICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIG9ic2VydmVyIGZhaWx1cmVzIG11c3Qgbm90IGNyYXNoXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBFbWl0cyBhbiBldmVudCwgcmVjb3JkcyBpdCBpbiB0aGUgZnJhbWUsIGFuZCBkaXNwYXRjaGVzIHRvIG9ic2VydmVycy5cbiAgICAgKi9cbiAgICBhc3luYyBlbWl0RXZlbnQoZnJhbWUsIHBhcnRpYWwpIHtcbiAgICAgICAgY29uc3QgZXZlbnQgPSBmcmFtZS5ldmVudEZhY3RvcnkuY3JlYXRlKHtcbiAgICAgICAgICAgIGlkOiBcIlwiLFxuICAgICAgICAgICAgc2VxdWVuY2U6IDAsXG4gICAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAuLi5wYXJ0aWFsLFxuICAgICAgICB9KTtcbiAgICAgICAgZnJhbWUuYXBwZW5kRXZlbnQoZXZlbnQpO1xuICAgICAgICBhd2FpdCB0aGlzLmVtaXR0ZXIudXBkYXRlT2JzZXJ2ZXJzKGV2ZW50KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogTWVyZ2VzIGRlZmF1bHQgb3B0aW9ucyB3aXRoIHRoZSBnaXZlbiBvcHRpb25zLlxuICAgICAqL1xuICAgIG1lcmdlT3B0aW9ucyhvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb25jdXJyZW5jeTogR1JBUEhfREVGQVVMVF9DT05DVVJSRU5DWSxcbiAgICAgICAgICAgIGZhaWxGYXN0OiB0cnVlLFxuICAgICAgICAgICAgdmFsaWRhdGVJbnB1dHM6IHRydWUsXG4gICAgICAgICAgICB2YWxpZGF0ZU91dHB1dHM6IHRydWUsXG4gICAgICAgICAgICB1c2VQaW5uZWRWYWx1ZXM6IHRydWUsXG4gICAgICAgICAgICB3cml0ZVRocm91Z2hDYWNoZTogZmFsc2UsXG4gICAgICAgICAgICBwYXRoOiBbXSxcbiAgICAgICAgICAgIG1ldGFkYXRhOiB7fSxcbiAgICAgICAgICAgIC4uLnRoaXMuZGVmYXVsdE9wdGlvbnMsXG4gICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYSB1bmlxdWUgcnVuIGlkLlxuICAgICAqL1xuICAgIGdlbmVyYXRlUnVuSWQoKSB7XG4gICAgICAgIHJldHVybiAoZ2xvYmFsVGhpcy5jcnlwdG8/LnJhbmRvbVVVSUQ/LigpID8/XG4gICAgICAgICAgICBgZ3JhcGgtcnVuLSR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKX1gKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYW4gZXJyb3IgaW50byBhIHNlcmlhbGl6ZWQgcGF5bG9hZC5cbiAgICAgKi9cbiAgICB0b0Vycm9yUGF5bG9hZChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBlcnJvci5uYW1lLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgc3RhY2s6IGVycm9yLnN0YWNrLFxuICAgICAgICAgICAgICAgIGNvZGU6IGVycm9yLmdyYXBoQ29kZSA/P1xuICAgICAgICAgICAgICAgICAgICAodHlwZW9mIGVycm9yLmNvZGUgPT09IFwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gU3RyaW5nKGVycm9yLmNvZGUpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGVycm9yLmNvZGUpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBuYW1lOiBcIlVua25vd25FcnJvclwiLCBtZXNzYWdlOiBTdHJpbmcoZXJyb3IpIH07XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pUjNKaGNHaEZlR1ZqZFhScGIyNUZibWRwYm1VdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOHVMaTh1TGk4dUxpOXpjbU12WjNKaGNHZ3ZaVzVuYVc1bEwyVjRaV04xZEdsdmJpOUhjbUZ3YUVWNFpXTjFkR2x2YmtWdVoybHVaUzUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGUlFTeFBRVUZQTEVWQlEwd3NlVUpCUVhsQ0xFVkJRM3BDTEhWQ1FVRjFRaXhIUVVONFFpd3dRa0ZCY1VJN1FVRkRkRUlzVDBGQlR5eEZRVU5NTEhWQ1FVRjFRaXhGUVVOMlFpeHZRa0ZCYjBJc1IwRkRja0lzYjBOQlFTdENPMEZCUTJoRExFOUJRVThzUlVGQlJTeHRRa0ZCYlVJc1JVRkJSU3cyUWtGQmEwSTdRVUZoYUVRc1QwRkJUeXhGUVVGRkxEQkNRVUV3UWl4RlFVRkZMR3RFUVVFMlF6dEJRVU5zUml4UFFVRlBMRVZCUVVVc01FSkJRVEJDTEVWQlFVVXNhMFJCUVRaRE8wRkJSV3hHTEU5QlFVOHNSVUZCUlN4eFFrRkJjVUlzUlVGQlJTd3JRMEZCTUVNN1FVRkpNVVVzVDBGQlR5eEZRVUZGTERoQ1FVRTRRaXhGUVVGRkxIRkVRVUZuUkR0QlFVTjZSaXhQUVVGUExFVkJRVVVzWlVGQlpTeEZRVUZGTEhORFFVRnBRenRCUVVVelJDeFBRVUZQTEVWQlFVVXNiVUpCUVcxQ0xFVkJRVVVzTkVOQlFYVkRPMEZCUTNKRkxFOUJRVThzUlVGQlJTeHJRa0ZCYTBJc1JVRkJSU3d5UTBGQmMwTTdRVUZEYmtVc1QwRkJUeXhGUVVGRkxEaENRVUU0UWl4RlFVRkZMSFZFUVVGclJEdEJRVU16Uml4UFFVRlBMRVZCUVVVc2NVSkJRWEZDTEVWQlFVVXNiVU5CUVdkRE8wRkJRMmhGTEU5QlFVOHNSVUZCUlN4dFFrRkJiVUlzUlVGQlJTeHBRMEZCT0VJN1FVRkROVVFzVDBGQlR5eEZRVUZGTEhsQ1FVRjVRaXhGUVVGRkxHdERRVUVyUWp0QlFUUkNia1U3T3pzN096czdPenM3UjBGVlJ6dEJRVU5JTEUxQlFVMHNUMEZCVHl4dlFrRkJiMEk3U1VGVEwwSXNXVUZCV1N4TlFVRnJRenRSUVVNMVF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRTFCUVUwc1EwRkJReXhaUVVGWkxFbEJRVWtzU1VGQlNTd3dRa0ZCTUVJc1JVRkJSU3hEUVVGRE8xRkJRM1pGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1RVRkJUU3hEUVVGRExFOUJRVThzU1VGQlNTeEpRVUZKTEhGQ1FVRnhRaXhGUVVGRkxFTkJRVU03VVVGRE4wUXNTVUZCU1N4RFFVRkRMR2xDUVVGcFFqdFpRVU53UWl4TlFVRk5MRU5CUVVNc2FVSkJRV2xDTEVsQlFVa3NTVUZCU1N3NFFrRkJPRUlzUlVGQlJTeERRVUZETzFGQlEyNUZMRWxCUVVrc1EwRkJReXhqUVVGakxFZEJRVWNzVFVGQlRTeERRVUZETEdOQlFXTXNTVUZCU1N4RlFVRkZMRU5CUVVNN1VVRkRiRVFzU1VGQlNTeERRVUZETEc5Q1FVRnZRaXhIUVVGSExFMUJRVTBzUTBGQlF5eHZRa0ZCYjBJc1EwRkJRenRSUVVONFJDeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRTFCUVUwc1EwRkJRenRSUVVOeVFpeE5RVUZOTEVOQlFVTXNaVUZCWlN4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRGFrTXNRMEZCUXp0SlFVbEVMRTlCUVU4c1EwRkJReXhSUVVGblF6dFJRVU4wUXl4UFFVRlBMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMGxCUTNoRExFTkJRVU03U1VGRlJDeFRRVUZUTEVOQlFVTXNVVUZCWjBNN1VVRkRlRU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4VFFVRlRMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03U1VGRGJrTXNRMEZCUXp0SlFVVkVMRXRCUVVzc1EwRkJReXhsUVVGbExFTkJRVU1zUzBGQk1FSTdVVUZET1VNc1RVRkJUU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEdWQlFXVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRKUVVNMVF5eERRVUZETzBsQlJVUTdPMDlCUlVjN1NVRkRTQ3hMUVVGTExFTkJRVU1zVDBGQlR5eERRVU5ZTEZGQlFXbERMRVZCUTJwRExGTkJRU3RDTEVWQlFVVXNSVUZEYWtNc1ZVRkJhVU1zUlVGQlJUdFJRVVZ1UXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTNoRExFMUJRVTBzUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRWxCUVVrc1NVRkJTU3hEUVVGRExHRkJRV0VzUlVGQlJTeERRVUZETzFGQlEycEVMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVsQlFVa3NSVUZCUlN4RFFVRkRPMUZCUXpkQ0xFMUJRVTBzV1VGQldTeEhRVUZITEVsQlFVa3NNRUpCUVRCQ0xFVkJRVVVzUTBGQlF6dFJRVU4wUkN4TlFVRk5MRlZCUVZVc1IwRkJSeXhKUVVGSkxHVkJRV1VzUTBGQlF5eEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zUTBGQlF6dFJRVU12UkN4VlFVRlZMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1VVRkZkRU1zVFVGQlRTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdVVUZEZWtNc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeHRRa0ZCYlVJc1EwRkRia01zUzBGQlN5eEZRVU5NTEVsQlFVa3NSVUZEU2l4VlFVRlZMRVZCUTFZc1dVRkJXU3hEUVVOaUxFTkJRVU03VVVGRlJpeE5RVUZOTEUxQlFVMHNSMEZCUnl4TFFVRkxMRVZCUVVVc1QwRkJjVU1zUlVGQlJTeEZRVUZGTzFsQlF6ZEVMRTFCUVUwc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eExRVUZMTEVWQlFVVTdaMEpCUXpGQ0xFbEJRVWtzUlVGQlJTeFBRVUZQTEVOQlFVTXNTVUZCU1N4SlFVRkpMSFZDUVVGMVFpeERRVUZETEZkQlFWYzdaMEpCUTNwRUxFdEJRVXM3WjBKQlEwd3NWMEZCVnl4RlFVRkZMRWxCUVVrc1EwRkJReXhYUVVGWE8yZENRVU0zUWl4VlFVRlZMRVZCUVVVc1VVRkJVU3hEUVVGRExFbEJRVWs3WjBKQlEzcENMRTFCUVUwc1JVRkJSU3hQUVVGUExFTkJRVU1zVFVGQlRUdG5Ra0ZEZEVJc1NVRkJTU3hGUVVGRkxFOUJRVThzUTBGQlF5eEpRVUZKTEVsQlFVa3NTVUZCU1R0blFrRkRNVUlzUjBGQlJ5eFBRVUZQTzJGQlExZ3NRMEZCUXl4RFFVRkRPMUZCUTB3c1EwRkJReXhEUVVGRE8xRkJSVVlzVFVGQlRTeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRXRCUVVzc1JVRkJSVHRaUVVNeFFpeEpRVUZKTEVWQlFVVXNkVUpCUVhWQ0xFTkJRVU1zWjBKQlFXZENPMWxCUXpsRExFdEJRVXM3V1VGRFRDeFhRVUZYTEVWQlFVVXNTVUZCU1N4RFFVRkRMRmRCUVZjN1dVRkROMElzVlVGQlZTeEZRVUZGTEZGQlFWRXNRMEZCUXl4SlFVRkpPMWxCUTNwQ0xFbEJRVWs3V1VGRFNpeE5RVUZOTEVWQlFVVXNiMEpCUVc5Q0xFTkJRVU1zVDBGQlR6dFpRVU53UXl4UFFVRlBMRVZCUVVVc1JVRkJSU3hOUVVGTkxFVkJRVVU3VTBGRGNFSXNRMEZCUXl4RFFVRkRPMUZCUlVnc1RVRkJUU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEV0QlFVc3NSVUZCUlR0WlFVTXhRaXhKUVVGSkxFVkJRVVVzZFVKQlFYVkNMRU5CUVVNc1owSkJRV2RDTzFsQlF6bERMRXRCUVVzN1dVRkRUQ3hYUVVGWExFVkJRVVVzU1VGQlNTeERRVUZETEZkQlFWYzdXVUZETjBJc1ZVRkJWU3hGUVVGRkxGRkJRVkVzUTBGQlF5eEpRVUZKTzFsQlEzcENMRWxCUVVrN1dVRkRTaXhOUVVGTkxFVkJRVVVzYjBKQlFXOUNMRU5CUVVNc1VVRkJVVHRaUVVOeVF5eFBRVUZQTEVWQlFVVXNSVUZCUlN4TlFVRk5MRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVWQlFVVXNTMEZCU3l4RlFVRkZMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeEZRVUZGTzFOQlEyeEZMRU5CUVVNc1EwRkJRenRSUVVWSUxFbEJRVWtzUTBGQlF6dFpRVU5JTEV0QlFVc3NUVUZCVFN4TFFVRkxMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETzJkQ1FVTm9ReXhOUVVGTkxFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNTMEZCU3l4RlFVRkZMRWxCUVVrc1JVRkJSU3hMUVVGTExFTkJRVU1zUzBGQlN5eEZRVUZGTEVsQlFVa3NSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJRenRaUVVOc1JTeERRVUZETzFsQlJVUXNUVUZCVFN4WlFVRlpMRWRCUVVjc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eFhRVUZYTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRM1pFTEVOQlFVTXNUVUZCVFN4RlFVRkZMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeExRVUZMTEc5Q1FVRnZRaXhEUVVGRExFMUJRVTBzUTBGRE1VUXNRMEZCUXp0WlFVTkdMRWxCUVVrc1dVRkJXU3hGUVVGRkxFdEJRVXNzUlVGQlJTeERRVUZETzJkQ1FVTjRRaXhOUVVGTkxFbEJRVWtzYlVKQlFXMUNMRU5CUXpOQ0xGbEJRVmtzUTBGQlF5eExRVUZMTEVOQlFVTXNUMEZCVHl4RlFVTXhRaXhaUVVGWkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NTVUZCU1N4MVFrRkJkVUlzUlVGRGJFUXNXVUZCV1N4RFFVRkRMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRek5DTEVOQlFVTTdXVUZEU2l4RFFVRkRPMWxCUlVRc1MwRkJTeXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETzFsQlJXWXNUVUZCVFN4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFdEJRVXNzUlVGQlJUdG5Ra0ZETVVJc1NVRkJTU3hGUVVGRkxIVkNRVUYxUWl4RFFVRkRMR3RDUVVGclFqdG5Ra0ZEYUVRc1MwRkJTenRuUWtGRFRDeFhRVUZYTEVWQlFVVXNTVUZCU1N4RFFVRkRMRmRCUVZjN1owSkJRemRDTEZWQlFWVXNSVUZCUlN4UlFVRlJMRU5CUVVNc1NVRkJTVHRuUWtGRGVrSXNTVUZCU1R0blFrRkRTaXhOUVVGTkxFVkJRVVVzYjBKQlFXOUNMRU5CUVVNc1UwRkJVenRuUWtGRGRFTXNUMEZCVHl4RlFVRkZMRVZCUVVVc1QwRkJUeXhGUVVGRkxGVkJRVlVzUTBGQlF5eHBRa0ZCYVVJc1JVRkJSU3hGUVVGRk8yRkJRM0pFTEVOQlFVTXNRMEZCUXp0WlFVVklMRTlCUVU4c2VVSkJRWGxDTEVOQlF6bENMRXRCUVVzc1JVRkRUQ3hSUVVGUkxFVkJRMUlzVFVGQlRTeEZRVU5PTEc5Q1FVRnZRaXhEUVVGRExGTkJRVk1zUlVGRE9VSXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkRaQ3hEUVVGRE8xRkJRMG9zUTBGQlF6dFJRVUZETEU5QlFVOHNTMEZCU3l4RlFVRkZMRU5CUVVNN1dVRkRaaXhMUVVGTExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTTdXVUZEWml4TlFVRk5MRmxCUVZrc1IwRkJSeXhKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMWxCUldoRUxFMUJRVTBzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TFFVRkxMRVZCUVVVN1owSkJRekZDTEVsQlFVa3NSVUZCUlN4MVFrRkJkVUlzUTBGQlF5eGxRVUZsTzJkQ1FVTTNReXhMUVVGTE8yZENRVU5NTEZkQlFWY3NSVUZCUlN4SlFVRkpMRU5CUVVNc1YwRkJWenRuUWtGRE4wSXNWVUZCVlN4RlFVRkZMRkZCUVZFc1EwRkJReXhKUVVGSk8yZENRVU42UWl4SlFVRkpPMmRDUVVOS0xFMUJRVTBzUlVGQlJTeHZRa0ZCYjBJc1EwRkJReXhOUVVGTk8yZENRVU51UXl4TFFVRkxMRVZCUVVVc1dVRkJXVHRoUVVOd1FpeERRVUZETEVOQlFVTTdXVUZGU0N4UFFVRlBMSGxDUVVGNVFpeERRVU01UWl4TFFVRkxMRVZCUTB3c1VVRkJVU3hGUVVOU0xFMUJRVTBzUlVGRFRpeHZRa0ZCYjBJc1EwRkJReXhOUVVGTkxFVkJRek5DTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUTJRc1EwRkJRenRSUVVOS0xFTkJRVU03U1VGRFNDeERRVUZETzBsQlJVUTdPenM3TzA5QlMwYzdTVUZEU0N4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExFOUJRVFJDTzFGQlEzaERMRTFCUVUwc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eHZRa0ZCYjBJc1JVRkJSU3hEUVVGRE8xRkJRelZETEUxQlFVMHNUMEZCVHl4RFFVRkRMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dFJRVU12UWl4TlFVRk5MRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hGUVVGRkxIVkNRVUYxUWl4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRE8wbEJRMjVHTEVOQlFVTTdTVUZGUkRzN1QwRkZSenRKUVVOSUxFdEJRVXNzUTBGQlF5eFRRVUZUTEVOQlFVTXNUMEZCT0VJN1VVRkROVU1zVFVGQlRTeFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRzlDUVVGdlFpeEZRVUZGTEVOQlFVTTdVVUZETlVNc1RVRkJUU3hQUVVGUExFTkJRVU1zVTBGQlV5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTJwRExFMUJRVTBzU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFOUJRVThzUTBGQlF5eE5RVUZOTEVWQlFVVXNkVUpCUVhWQ0xFTkJRVU1zWVVGQllTeERRVUZETEVOQlFVTTdTVUZEY2tZc1EwRkJRenRKUVVWRU96czdUMEZIUnp0SlFVTkxMRzlDUVVGdlFqdFJRVU14UWl4TlFVRk5MRXRCUVVzc1IwRkJSeXhKUVVGSkxHVkJRV1VzUTBGQlF5eEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zUTBGQlF6dFJRVU14UkN4UFFVRlBMRWxCUVVrc2JVSkJRVzFDTEVOQlF6VkNMRXRCUVVzc1JVRkRUQ3hKUVVGSkxHdENRVUZyUWl4RlFVRkZMRVZCUTNoQ0xFbEJRVWtzT0VKQlFUaENMRVZCUVVVc1EwRkRja01zUTBGQlF6dEpRVU5LTEVOQlFVTTdTVUZGUkRzN1QwRkZSenRKUVVOTExFdEJRVXNzUTBGQlF5eG5Ra0ZCWjBJc1EwRkROVUlzVFVGQll5eEZRVU5rTEVsQlFUWkNPMUZCUlRkQ0xFMUJRVTBzVDBGQlR5eEhRVUZITEVsQlFVa3NNRUpCUVRCQ0xFVkJRVVVzUTBGQlF6dFJRVU5xUkN4TlFVRk5MRXRCUVVzc1IwRkJSeXhQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETzFsQlF6TkNMRVZCUVVVc1JVRkJSU3hGUVVGRk8xbEJRMDRzVVVGQlVTeEZRVUZGTEVOQlFVTTdXVUZEV0N4VFFVRlRMRVZCUVVVc1NVRkJTU3hKUVVGSkxFVkJRVVU3V1VGRGNrSXNTMEZCU3l4RlFVRkZMRk5CUVZNN1dVRkRhRUlzVlVGQlZTeEZRVUZGTEVWQlFVVTdXVUZEWkN4SlFVRkpPMWxCUTBvc1RVRkJUVHRaUVVOT0xFbEJRVWtzUlVGQlJTeEZRVUZGTzFOQlEzRkVMRU5CUVVNc1EwRkJRenRSUVVOcVJTeE5RVUZOTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1pVRkJaU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBsQlF6VkRMRU5CUVVNN1NVRkZSRHM3VDBGRlJ6dEpRVU5MTEV0QlFVc3NRMEZCUXl4WlFVRlpMRU5CUTNoQ0xFdEJRVEJDTEVWQlF6RkNMRWxCUVhkQ0xFVkJRM2hDTEV0QlFTdENMRVZCUXk5Q0xFbEJRVEpDTEVWQlF6TkNMRTFCUVRoRU8xRkJSVGxFTEUxQlFVMHNWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRekZDTEVOQlFVTXNSVUZEUkN4SlFVRkpMRU5CUVVNc1YwRkJWeXhKUVVGSkxIbENRVUY1UWl4RFFVTTVReXhEUVVGRE8xRkJRMFlzVFVGQlRTeExRVUZMTEVkQlFVY3NRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRE8xRkJSWHBDTEU5QlFVOHNTMEZCU3l4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF6dFpRVU40UWl4TlFVRk5MRXRCUVVzc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNSVUZCUlN4WFFVRlhMRU5CUVVNc1EwRkJRenRaUVVNelF5eE5RVUZOTEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUTJZc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVsQlFVa3NSVUZCUlN4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eExRVUZMTEVWQlFVVXNTVUZCU1N4RlFVRkZMRWxCUVVrc1JVRkJSU3hKUVVGSkxFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZEZGtVc1EwRkJRenRSUVVOS0xFTkJRVU03U1VGRFNDeERRVUZETzBsQlJVUTdPMDlCUlVjN1NVRkRTeXhMUVVGTExFTkJRVU1zVjBGQlZ5eERRVU4yUWl4TFFVRXdRaXhGUVVNeFFpeEpRVUYzUWl4RlFVTjRRaXhSUVVGblF5eEZRVU5vUXl4SlFVRXlRaXhGUVVNelFpeE5RVUU0UkR0UlFVVTVSQ3hOUVVGTkxGTkJRVk1zUjBGQlJ5eEpRVUZKTEVsQlFVa3NSVUZCUlN4RFFVRkRPMUZCUXpkQ0xFMUJRVTBzVVVGQlVTeEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFbEJRVWtzUlVGQlJTeERRVUZETEVWQlFVVXNVVUZCVVN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJSWEpFTEUxQlFVMHNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhMUVVGTExFVkJRVVU3V1VGRE1VSXNTVUZCU1N4RlFVRkZMSFZDUVVGMVFpeERRVUZETEZsQlFWazdXVUZETVVNc1MwRkJTeXhGUVVGRkxFdEJRVXNzUTBGQlF5eExRVUZMTzFsQlEyeENMRlZCUVZVc1JVRkJSU3hKUVVGSkxFTkJRVU1zVlVGQlZUdFpRVU16UWl4TlFVRk5MRVZCUVVVc1VVRkJVU3hEUVVGRExFVkJRVVU3V1VGRGJrSXNTVUZCU1N4RlFVRkZMRkZCUVZFN1dVRkRaQ3hOUVVGTkxFVkJRVVVzYjBKQlFXOUNMRU5CUVVNc1QwRkJUenRUUVVOeVF5eERRVUZETEVOQlFVTTdVVUZGU0N4TlFVRk5MRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1MwRkJTeXhGUVVGRkxFbEJRVWtzUlVGQlJTeFJRVUZSTEVOQlFVTXNRMEZCUXp0UlFVVTNSQ3huUlVGQlowVTdVVUZEYUVVc1NVRkJTU3hKUVVGSkxFTkJRVU1zWlVGQlpTeEZRVUZGTEVOQlFVTTdXVUZEZWtJc1RVRkJUU3hOUVVGTkxFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRXRCUVVzc1JVRkJSU3hKUVVGSkxFVkJRVVVzVVVGQlVTeEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRPMWxCUTNoRkxFbEJRVWtzVFVGQlRTeEZRVUZGTEVOQlFVTTdaMEpCUTFnc1MwRkJTeXhEUVVGRExGVkJRVlVzUTBGQlF5eGpRVUZqTEVOQlFVTXNVVUZCVVN4RFFVRkRMRVZCUVVVc1JVRkJSU3hOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdaMEpCUXpkRUxFbEJRVWtzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhMUVVGTExFVkJRVVVzU1VGQlNTeEZRVUZGTEZGQlFWRXNSVUZCUlN4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03WjBKQlJTOUVMRTFCUVUwc1ZVRkJWU3hIUVVGSExFbEJRVWtzU1VGQlNTeEZRVUZGTEVOQlFVTTdaMEpCUXpsQ0xFMUJRVTBzVFVGQlRTeEhRVUUyUWp0dlFrRkRka01zVFVGQlRTeEZRVUZGTEZGQlFWRXNRMEZCUXl4RlFVRkZPMjlDUVVOdVFpeE5RVUZOTEVWQlFVVXNiMEpCUVc5Q0xFTkJRVU1zVFVGQlRUdHZRa0ZEYmtNc1RVRkJUVHR2UWtGRFRpeFBRVUZQTEVWQlFVVXNUVUZCVFN4RFFVRkRMRTlCUVU4N2IwSkJRM1pDTEZOQlFWTTdiMEpCUTFRc1ZVRkJWVHR2UWtGRFZpeFRRVUZUTEVWQlFVVXNTVUZCU1R0dlFrRkRaaXhOUVVGTkxFVkJRVVVzU1VGQlNUdHZRa0ZEV2l4TlFVRk5MRVZCUVVVc1JVRkJSVHRwUWtGRFdDeERRVUZETzJkQ1FVTkdMRXRCUVVzc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRuUWtGRkwwSXNUVUZCVFN4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFdEJRVXNzUlVGQlJUdHZRa0ZETVVJc1NVRkJTU3hGUVVGRkxIVkNRVUYxUWl4RFFVRkRMR05CUVdNN2IwSkJRelZETEV0QlFVc3NSVUZCUlN4TFFVRkxMRU5CUVVNc1MwRkJTenR2UWtGRGJFSXNWVUZCVlN4RlFVRkZMRWxCUVVrc1EwRkJReXhWUVVGVk8yOUNRVU16UWl4TlFVRk5MRVZCUVVVc1VVRkJVU3hEUVVGRExFVkJRVVU3YjBKQlEyNUNMRWxCUVVrc1JVRkJSU3hSUVVGUk8yOUNRVU5rTEUxQlFVMHNSVUZCUlN4dlFrRkJiMElzUTBGQlF5eE5RVUZOTzI5Q1FVTnVReXhQUVVGUExFVkJRVVVzUlVGQlJTeFBRVUZQTEVWQlFVVXNUVUZCVFN4RFFVRkRMRTlCUVU4c1JVRkJSVHRwUWtGRGNrTXNRMEZCUXl4RFFVRkRPMmRDUVVWSUxFMUJRVTBzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TFFVRkxMRVZCUVVVN2IwSkJRekZDTEVsQlFVa3NSVUZCUlN4MVFrRkJkVUlzUTBGQlF5eGpRVUZqTzI5Q1FVTTFReXhMUVVGTExFVkJRVVVzUzBGQlN5eERRVUZETEV0QlFVczdiMEpCUTJ4Q0xGVkJRVlVzUlVGQlJTeEpRVUZKTEVOQlFVTXNWVUZCVlR0dlFrRkRNMElzVFVGQlRTeEZRVUZGTEZGQlFWRXNRMEZCUXl4RlFVRkZPMjlDUVVOdVFpeEpRVUZKTEVWQlFVVXNVVUZCVVR0dlFrRkRaQ3hOUVVGTkxFVkJRVVVzYjBKQlFXOUNMRU5CUVVNc1UwRkJVenR2UWtGRGRFTXNUMEZCVHl4RlFVRkZMRVZCUVVVc1QwRkJUeXhGUVVGRkxFMUJRVTBzUTBGQlF5eFBRVUZQTEVWQlFVVXNVMEZCVXl4RlFVRkZMRWxCUVVrc1JVRkJSVHRwUWtGRGRFUXNRMEZCUXl4RFFVRkRPMmRDUVVOSUxFOUJRVTg3V1VGRFZDeERRVUZETzFGQlEwZ3NRMEZCUXp0UlFVVkVMRWxCUVVrc1EwRkJRenRaUVVOSUxFMUJRVTBzVVVGQlVTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkROMFFzVFVGQlRTeFBRVUZQTEVkQlFVY3NTVUZCU1N4eFFrRkJjVUlzUTBGRGRrTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1JVRkRXQ3hKUVVGSkxFTkJRVU1zVjBGQlZ5eEZRVU5vUWl4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVOaUxGRkJRVkVzUTBGQlF5eFZRVUZWTEVWQlEyNUNMRkZCUVZFc1JVRkRVaXhOUVVGTkxFVkJRMDRzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZEWkN4RFFVRkRPMWxCUlVZc1RVRkJUU3hQUVVGUExFZEJRVWNzVFVGQlRTeFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF6dFpRVU40UkN4TlFVRk5MR1ZCUVdVc1IwRkJSeXhQUVVGUExFbEJRVWtzUlVGQlJTeERRVUZETzFsQlJYUkRMRXRCUVVzc1EwRkJReXhWUVVGVkxFTkJRVU1zWTBGQll5eERRVUZETEZGQlFWRXNRMEZCUXl4RlFVRkZMRVZCUVVVc1pVRkJaU3hEUVVGRExFTkJRVU03V1VGRE9VUXNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeERRVUZETEV0QlFVc3NSVUZCUlN4SlFVRkpMRVZCUVVVc1VVRkJVU3hGUVVGRkxHVkJRV1VzUTBGQlF5eERRVUZETzFsQlJXaEZMRTFCUVUwc1ZVRkJWU3hIUVVGSExFbEJRVWtzU1VGQlNTeEZRVUZGTEVOQlFVTTdXVUZET1VJc1RVRkJUU3hOUVVGTkxFZEJRVFpDTzJkQ1FVTjJReXhOUVVGTkxFVkJRVVVzVVVGQlVTeERRVUZETEVWQlFVVTdaMEpCUTI1Q0xFMUJRVTBzUlVGQlJTeHZRa0ZCYjBJc1EwRkJReXhUUVVGVE8yZENRVU4wUXl4TlFVRk5PMmRDUVVOT0xFOUJRVThzUlVGQlJTeGxRVUZsTzJkQ1FVTjRRaXhUUVVGVE8yZENRVU5VTEZWQlFWVTdaMEpCUTFZc1RVRkJUU3hGUVVGRkxFVkJRVVU3WVVGRFdDeERRVUZETzFsQlEwWXNTMEZCU3l4RFFVRkRMR2RDUVVGblFpeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMWxCUlM5Q0xFMUJRVTBzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TFFVRkxMRVZCUVVVN1owSkJRekZDTEVsQlFVa3NSVUZCUlN4MVFrRkJkVUlzUTBGQlF5eGpRVUZqTzJkQ1FVTTFReXhMUVVGTExFVkJRVVVzUzBGQlN5eERRVUZETEV0QlFVczdaMEpCUTJ4Q0xGVkJRVlVzUlVGQlJTeEpRVUZKTEVOQlFVTXNWVUZCVlR0blFrRkRNMElzVFVGQlRTeEZRVUZGTEZGQlFWRXNRMEZCUXl4RlFVRkZPMmRDUVVOdVFpeEpRVUZKTEVWQlFVVXNVVUZCVVR0blFrRkRaQ3hOUVVGTkxFVkJRVVVzYjBKQlFXOUNMRU5CUVVNc1UwRkJVenRuUWtGRGRFTXNUMEZCVHl4RlFVRkZMRVZCUVVVc1QwRkJUeXhGUVVGRkxHVkJRV1VzUlVGQlJUdGhRVU4wUXl4RFFVRkRMRU5CUVVNN1VVRkRUQ3hEUVVGRE8xRkJRVU1zVDBGQlR5eExRVUZMTEVWQlFVVXNRMEZCUXp0WlFVTm1MRTFCUVUwc1ZVRkJWU3hIUVVGSExFbEJRVWtzU1VGQlNTeEZRVUZGTEVOQlFVTTdXVUZET1VJc1RVRkJUU3haUVVGWkxFZEJRVWNzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRaUVVOb1JDeE5RVUZOTEUxQlFVMHNSMEZCTmtJN1owSkJRM1pETEUxQlFVMHNSVUZCUlN4UlFVRlJMRU5CUVVNc1JVRkJSVHRuUWtGRGJrSXNUVUZCVFN4RlFVRkZMRzlDUVVGdlFpeERRVUZETEUxQlFVMDdaMEpCUTI1RExFMUJRVTA3WjBKQlEwNHNTMEZCU3l4RlFVRkZMRmxCUVZrN1owSkJRMjVDTEZOQlFWTTdaMEpCUTFRc1ZVRkJWVHRuUWtGRFZpeE5RVUZOTEVWQlFVVXNSVUZCUlR0aFFVTllMRU5CUVVNN1dVRkRSaXhMUVVGTExFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03V1VGRkwwSXNUVUZCVFN4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFdEJRVXNzUlVGQlJUdG5Ra0ZETVVJc1NVRkJTU3hGUVVGRkxIVkNRVUYxUWl4RFFVRkRMRmRCUVZjN1owSkJRM3BETEV0QlFVc3NSVUZCUlN4TFFVRkxMRU5CUVVNc1MwRkJTenRuUWtGRGJFSXNWVUZCVlN4RlFVRkZMRWxCUVVrc1EwRkJReXhWUVVGVk8yZENRVU16UWl4TlFVRk5MRVZCUVVVc1VVRkJVU3hEUVVGRExFVkJRVVU3WjBKQlEyNUNMRWxCUVVrc1JVRkJSU3hSUVVGUk8yZENRVU5rTEUxQlFVMHNSVUZCUlN4dlFrRkJiMElzUTBGQlF5eE5RVUZOTzJkQ1FVTnVReXhMUVVGTExFVkJRVVVzV1VGQldUdGhRVU53UWl4RFFVRkRMRU5CUVVNN1dVRkZTQ3hKUVVGSkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVsQlFVa3NTVUZCU1R0blFrRkJSU3hOUVVGTkxFdEJRVXNzUTBGQlF6dFJRVU42UXl4RFFVRkRPMGxCUTBnc1EwRkJRenRKUVVWRU96czdPenM3T3p0UFFWRkhPMGxCUTBzc2FVSkJRV2xDTEVOQlEzWkNMRXRCUVRCQ0xFVkJRekZDTEVsQlFYZENMRVZCUTNoQ0xGRkJRV2RETzFGQlJXaERMRTFCUVUwc1RVRkJUU3hIUVVGNVFpeEZRVUZGTEVOQlFVTTdVVUZEZUVNc1RVRkJUU3hSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1VVRkJVU3hEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXp0UlFVVTFSQ3hOUVVGTkxHRkJRV0VzUjBGQlJ5eEpRVUZKTEVkQlFVY3NSVUZCTWtJc1EwRkJRenRSUVVONlJDeExRVUZMTEUxQlFVMHNTVUZCU1N4SlFVRkpMRkZCUVZFc1JVRkJSU3hEUVVGRE8xbEJRelZDTEUxQlFVMHNTVUZCU1N4SFFVRkhMR0ZCUVdFc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJRenRaUVVOMFJDeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJRMmhDTEdGQlFXRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExGVkJRVlVzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTXpReXhEUVVGRE8xRkJSVVFzUzBGQlN5eE5RVUZOTEVOQlFVTXNWVUZCVlN4RlFVRkZMRXRCUVVzc1EwRkJReXhKUVVGSkxHRkJRV0VzUlVGQlJTeERRVUZETzFsQlEyaEVMRWxCUVVrc1MwRkJTeXhEUVVGRExFMUJRVTBzUzBGQlN5eERRVUZETEVWQlFVVXNRMEZCUXp0blFrRkRka0lzVFVGQlRTeERRVUZETEZWQlFWVXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhWUVVGVkxFTkJRVU1zVDBGQlR5eERRVU16UXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zV1VGQldTeEZRVU55UWl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVlVGQlZTeERRVU53UWl4RFFVRkRPMWxCUTBvc1EwRkJRenRwUWtGQlRTeERRVUZETzJkQ1FVTk9MRXRCUVVzc1RVRkJUU3hKUVVGSkxFbEJRVWtzUzBGQlN5eEZRVUZGTEVOQlFVTTdiMEpCUTNwQ0xFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExGVkJRVlVzUTBGQlF5eFBRVUZQTEVOQlEyaEVMRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRMnBDTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUTJoQ0xFTkJRVU03WjBKQlEwb3NRMEZCUXp0WlFVTklMRU5CUVVNN1VVRkRTQ3hEUVVGRE8xRkJSVVFzVDBGQlR5eE5RVUZOTEVOQlFVTTdTVUZEYUVJc1EwRkJRenRKUVVWRU96czdPMDlCU1VjN1NVRkRTeXhMUVVGTExFTkJRVU1zWTBGQll5eERRVU14UWl4TFFVRXdRaXhGUVVNeFFpeEpRVUYzUWl4RlFVTjRRaXhSUVVGblF5eEZRVU5vUXl4TlFVRTBRanRSUVVVMVFpeE5RVUZOTEUxQlFVMHNSMEZCUnl4SlFVRkpMR3RDUVVGclFpeEZRVUZGTEVOQlFVTTdVVUZEZUVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhSUVVGUkxFTkJRVU03V1VGQlJTeFBRVUZQTEZOQlFWTXNRMEZCUXp0UlFVVTNSQ3hOUVVGTkxFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNiMEpCUVc5Q0xFVkJRVVVzUTBGQlF6dFJRVU0xUXl4TlFVRk5MR1ZCUVdVc1IwRkJSeXhKUVVGSkxFTkJRVU1zTmtKQlFUWkNMRU5CUVVNc1MwRkJTeXhGUVVGRkxFbEJRVWtzUlVGQlJTeFJRVUZSTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1VVRkRja1lzVDBGQlR5eFBRVUZQTEVOQlFVTXNaVUZCWlN4RFFVTTFRaXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVU5pTEZGQlFWRXNSVUZEVWl4TlFVRk5MRVZCUTA0c1pVRkJaU3hEUVVOb1FpeERRVUZETzBsQlEwb3NRMEZCUXp0SlFVVkVPenM3VDBGSFJ6dEpRVU5MTERaQ1FVRTJRaXhEUVVOdVF5eExRVUV3UWl4RlFVTXhRaXhKUVVGM1FpeEZRVU40UWl4TlFVRmpPMUZCUldRc1RVRkJUU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEc5Q1FVRnZRaXhGUVVGRkxFTkJRVU03VVVGRE5VTXNUVUZCVFN4WFFVRlhMRWRCUVVjc1NVRkJTU3c0UWtGQk9FSXNSVUZCUlN4RFFVRkRPMUZCUTNwRUxFMUJRVTBzU1VGQlNTeEhRVUZITEZkQlFWY3NRMEZCUXl4bFFVRmxMRU5CUVVNc1NVRkJTU3hGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzFGQlEzWkVMRTFCUVUwc1dVRkJXU3hIUVVFeVFpeEZRVUZGTEVOQlFVTTdVVUZEYUVRc1MwRkJTeXhOUVVGTkxFZEJRVWNzU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXp0WlFVTjJRaXhOUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF6dFpRVU5zUkN4SlFVRkpMRWxCUVVrc1JVRkJSU3hEUVVGRE8yZENRVU5VTEUxQlFVMHNVMEZCVXl4SFFVRkhMRXRCUVVzc1EwRkJReXhYUVVGWExFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMmRDUVVNM1F5eE5RVUZOTEUxQlFVMHNSMEZCUnl4VFFVRlRMRVZCUVVVc1RVRkJUU3hKUVVGSkxFVkJRVVVzUTBGQlF6dG5Ra0ZEZGtNc1RVRkJUU3hWUVVGVkxFZEJRVWNzU1VGQlNTeERRVUZETERaQ1FVRTJRaXhEUVVGRExFdEJRVXNzUlVGQlJTeEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1owSkJRM2hGTEZsQlFWa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhQUVVGUExFTkJRVU1zYTBKQlFXdENMRU5CUXpWRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlEySXNTVUZCU1N4RlFVTktMRTFCUVUwc1JVRkRUaXhWUVVGVkxFTkJRMWdzUTBGQlF6dFpRVU5LTEVOQlFVTTdVVUZEU0N4RFFVRkRPMUZCUTBRc1QwRkJUeXhaUVVGWkxFTkJRVU03U1VGRGRFSXNRMEZCUXp0SlFVVkVPenRQUVVWSE8wbEJRMHNzYTBKQlFXdENMRU5CUTNoQ0xFdEJRVEJDTEVWQlF6RkNMRWxCUVhkQ0xFVkJRM2hDTEZGQlFXZERMRVZCUTJoRExFOUJRVFpDTzFGQlJUZENMRTFCUVUwc1VVRkJVU3hIUVVGSExFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNSMEZCUnl4RFFVRkRMRkZCUVZFc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTTdVVUZETlVRc1MwRkJTeXhOUVVGTkxFbEJRVWtzU1VGQlNTeFJRVUZSTEVWQlFVVXNRMEZCUXp0WlFVTTFRaXhOUVVGTkxFdEJRVXNzUjBGQlJ5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8xbEJRM1pETEVsQlFVa3NTVUZCU1N4RFFVRkRMRmxCUVZrc1MwRkJTeXgxUWtGQmRVSXNSVUZCUlN4RFFVRkRPMmRDUVVOc1JDeExRVUZMTEVOQlFVTXNWVUZCVlN4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVsQlFVa3NRMEZCUXl4VlFVRlZMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03V1VGRE4wUXNRMEZCUXp0WlFVTkVMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUzBGQlN5eEZRVUZGTzJkQ1FVTndRaXhKUVVGSkxFVkJRVVVzZFVKQlFYVkNMRU5CUVVNc2FVSkJRV2xDTzJkQ1FVTXZReXhMUVVGTExFVkJRVVVzUzBGQlN5eERRVUZETEV0QlFVczdaMEpCUTJ4Q0xGVkJRVlVzUlVGQlJTeEpRVUZKTEVOQlFVTXNWVUZCVlR0blFrRkRNMElzVFVGQlRTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RlFVRkZPMmRDUVVObUxFMUJRVTBzUlVGQlJTeFJRVUZSTEVOQlFVTXNSVUZCUlR0blFrRkRia0lzU1VGQlNTeEZRVUZGTEVWQlFVVTdaMEpCUTFJc1QwRkJUeXhGUVVGRkxFVkJRVVVzU1VGQlNTeEZRVUZGTEV0QlFVc3NSVUZCUlR0aFFVTjZRaXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NSVUZCUlR0blFrRkRXaXh0UTBGQmJVTTdXVUZEY2tNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRFRDeERRVUZETzBsQlEwZ3NRMEZCUXp0SlFVVkVPenRQUVVWSE8wbEJRMHNzUzBGQlN5eERRVUZETEZOQlFWTXNRMEZEY2tJc1MwRkJNRUlzUlVGRE1VSXNUMEZMUXp0UlFVVkVMRTFCUVUwc1MwRkJTeXhIUVVGSExFdEJRVXNzUTBGQlF5eFpRVUZaTEVOQlFVTXNUVUZCVFN4RFFVRkRPMWxCUTNSRExFVkJRVVVzUlVGQlJTeEZRVUZGTzFsQlEwNHNVVUZCVVN4RlFVRkZMRU5CUVVNN1dVRkRXQ3hUUVVGVExFVkJRVVVzU1VGQlNTeEpRVUZKTEVWQlFVVTdXVUZEY2tJc1IwRkJSeXhQUVVGUE8xTkJRMjFFTEVOQlFVTXNRMEZCUXp0UlFVTnFSU3hMUVVGTExFTkJRVU1zVjBGQlZ5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCUTNwQ0xFMUJRVTBzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4bFFVRmxMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03U1VGRE5VTXNRMEZCUXp0SlFVVkVPenRQUVVWSE8wbEJRMHNzV1VGQldTeERRVU5zUWl4UFFVRTRRanRSUVVVNVFpeFBRVUZQTzFsQlEwd3NWMEZCVnl4RlFVRkZMSGxDUVVGNVFqdFpRVU4wUXl4UlFVRlJMRVZCUVVVc1NVRkJTVHRaUVVOa0xHTkJRV01zUlVGQlJTeEpRVUZKTzFsQlEzQkNMR1ZCUVdVc1JVRkJSU3hKUVVGSk8xbEJRM0pDTEdWQlFXVXNSVUZCUlN4SlFVRkpPMWxCUTNKQ0xHbENRVUZwUWl4RlFVRkZMRXRCUVVzN1dVRkRlRUlzU1VGQlNTeEZRVUZGTEVWQlFVVTdXVUZEVWl4UlFVRlJMRVZCUVVVc1JVRkJSVHRaUVVOYUxFZEJRVWNzU1VGQlNTeERRVUZETEdOQlFXTTdXVUZEZEVJc1IwRkJSeXhQUVVGUE8xTkJRMWdzUTBGQlF6dEpRVU5LTEVOQlFVTTdTVUZGUkRzN1QwRkZSenRKUVVOTExHRkJRV0U3VVVGRGJrSXNUMEZCVHl4RFFVTk1MRlZCUVZVc1EwRkJReXhOUVVGTkxFVkJRVVVzVlVGQlZTeEZRVUZGTEVWQlFVVTdXVUZEYWtNc1lVRkJZU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExGRkJRVkVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGRGFrVXNRMEZCUXp0SlFVTktMRU5CUVVNN1NVRkZSRHM3VDBGRlJ6dEpRVU5MTEdOQlFXTXNRMEZCUXl4TFFVRmpPMUZCUTI1RExFbEJRVWtzUzBGQlN5eFpRVUZaTEV0QlFVc3NSVUZCUlN4RFFVRkRPMWxCUXpOQ0xFOUJRVTg3WjBKQlEwd3NTVUZCU1N4RlFVRkZMRXRCUVVzc1EwRkJReXhKUVVGSk8yZENRVU5vUWl4UFFVRlBMRVZCUVVVc1MwRkJTeXhEUVVGRExFOUJRVTg3WjBKQlEzUkNMRXRCUVVzc1JVRkJSU3hMUVVGTExFTkJRVU1zUzBGQlN6dG5Ra0ZEYkVJc1NVRkJTU3hGUVVORUxFdEJRV0VzUTBGQlF5eFRRVUZUTzI5Q1FVTjRRaXhEUVVGRExFOUJRVkVzUzBGQllTeERRVUZETEVsQlFVa3NTMEZCU3l4UlFVRlJPM2RDUVVOMFF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkZMRXRCUVdFc1EwRkJReXhKUVVGSkxFTkJRVU03ZDBKQlF6ZENMRU5CUVVNc1EwRkJSU3hMUVVGaExFTkJRVU1zU1VGQlNTeERRVUZETzJGQlF6TkNMRU5CUVVNN1VVRkRTaXhEUVVGRE8xRkJRMFFzVDBGQlR5eEZRVUZGTEVsQlFVa3NSVUZCUlN4alFVRmpMRVZCUVVVc1QwRkJUeXhGUVVGRkxFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXpGRUxFTkJRVU03UTBGRFJpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRRzF2WkhWc1pTQnBiblJsWjNKaGRHbHZibk12WjNKaGNHZ3ZaWGhsWTNWMGFXOXVMMGR5WVhCb1JYaGxZM1YwYVc5dVJXNW5hVzVsWEc0Z0tpQkFjM1Z0YldGeWVTQlNaV1psY21WdVkyVWdaM0poY0dnZ1pYaGxZM1YwYVc5dUlHVnVaMmx1WlM1Y2JpQXFJRUJrWlhOamNtbHdkR2x2YmlCRmVHVmpkWFJsY3lCbmNtRndhQ0IzYjNKclpteHZkM01nWkdWamJHRnlaV1FnZDJsMGFDQmdRR1JsWTJGbUxYUnpMM1ZwTFdSbFkyOXlZWFJ2Y25NdlozSmhjR2hnTENCbGJXbDBjeUJsZG1WdWRITWdkR2h5YjNWbmFDQkVaV05oWmlkeklFOWljMlZ5ZG1GaWJHVWdjR2x3Wld4cGJtVXNJSE4xY0hCdmNuUnpJSEJoY21Gc2JHVnNJRzV2WkdVZ1pYaGxZM1YwYVc5dUlIZHBkR2hwYmlCMGIzQnZiRzluYVdOaGJDQnNZWGxsY25Nc0lHRnVaQ0J5WlhSMWNtNXpJR0VnWTI5dGNHeGxkR1VnWlhobFkzVjBhVzl1SUhKbGMzVnNkQzVjYmlBcUwxeHVhVzF3YjNKMElIUjVjR1VnZXlCUFluTmxjblpoWW14bElIMGdabkp2YlNCY0lrQmtaV05oWmkxMGN5OWpiM0psWENJN1hHNXBiWEJ2Y25RZ2RIbHdaU0I3SUVkeVlYQm9WMjl5YTJac2IzZEVaV1pwYm1sMGFXOXVJSDBnWm5KdmJTQmNJa0JrWldOaFppMTBjeTkxYVMxa1pXTnZjbUYwYjNKekwyZHlZWEJvWENJN1hHNWNibWx0Y0c5eWRDQjdYRzRnSUVkU1FWQklYMFJGUmtGVlRGUmZRMDlPUTFWU1VrVk9RMWtzWEc0Z0lFZFNRVkJJWDFkUFVrdEdURTlYWDBKUFZVNUVRVkpaTEZ4dWZTQm1jbTl0SUZ3aUxpNHZZMjl1YzNSaGJuUnpYQ0k3WEc1cGJYQnZjblFnZTF4dUlDQkhjbUZ3YUVWNFpXTjFkR2x2YmtWMlpXNTBWSGx3WlN4Y2JpQWdSM0poY0doRmVHVmpkWFJwYjI1VGRHRjBkWE1zWEc1OUlHWnliMjBnWENJdUxpOHVMaTl6YUdGeVpXUXZZMjl1YzNSaGJuUnpYQ0k3WEc1cGJYQnZjblFnZXlCSGNtRndhRVY0WldOMWRHbHZia1Z5Y205eUlIMGdabkp2YlNCY0lpNHVMMlZ5Y205eWMxd2lPMXh1YVcxd2IzSjBJSFI1Y0dVZ2UxeHVJQ0JIY21Gd2FFVjRaV04xZEdsdmJrVnljbTl5VUdGNWJHOWhaQ3hjYmlBZ1IzSmhjR2hGZUdWamRYUnBiMjVGZG1WdWRDeGNiaUFnUjNKaGNHaEZlR1ZqZFhScGIyNVBjSFJwYjI1ekxGeHVJQ0JIY21Gd2FFVjRaV04xZEdsdmJsSmxjM1ZzZEN4Y2JpQWdSM0poY0doRmVHVmpkWFJwYjI1V1lXeDFaWE1zWEc0Z0lFZHlZWEJvVG05a1pVVjRaV04xZEdsdmJsSmxjM1ZzZEN4Y2JpQWdSM0poY0doUWFXNU9iMlJsVDNCMGFXOXVjeXhjYmlBZ1IzSmhjR2hWYm5CcGJrNXZaR1ZQY0hScGIyNXpMRnh1SUNCSGNtRndhRkoxYmtsa0xGeHVmU0JtY205dElGd2lMaTR2ZEhsd1pYTmNJanRjYm1sdGNHOXlkQ0IwZVhCbElIc2dSM0poY0doRmVHVmpkWFJwYjI1UFluTmxjblpsY2lCOUlHWnliMjBnWENJdUxpOWxkbVZ1ZEhNdlIzSmhjR2hGZUdWamRYUnBiMjVQWW5ObGNuWmxjbHdpTzF4dWFXMXdiM0owSUhzZ1IzSmhjR2hGZUdWamRYUnBiMjVGZG1WdWRFVnRhWFIwWlhJZ2ZTQm1jbTl0SUZ3aUxpNHZaWFpsYm5SekwwZHlZWEJvUlhobFkzVjBhVzl1UlhabGJuUkZiV2wwZEdWeVhDSTdYRzVwYlhCdmNuUWdleUJIY21Gd2FFVjRaV04xZEdsdmJrVjJaVzUwUm1GamRHOXllU0I5SUdaeWIyMGdYQ0l1TGk5bGRtVnVkSE12UjNKaGNHaEZlR1ZqZFhScGIyNUZkbVZ1ZEVaaFkzUnZjbmxjSWp0Y2JtbHRjRzl5ZENCMGVYQmxJSHNnUjNKaGNHaE9iMlJsUlhobFkzVjBiM0pTWldkcGMzUnllU0I5SUdaeWIyMGdYQ0l1TGk5eVpXZHBjM1J5ZVM5SGNtRndhRTV2WkdWRmVHVmpkWFJ2Y2xKbFoybHpkSEo1WENJN1hHNXBiWEJ2Y25RZ2V5QkhjbUZ3YUVWNFpXTjFkR2x2YmxCc1lXNXVaWElnZlNCbWNtOXRJRndpTGk0dmNHeGhibTVwYm1jdlIzSmhjR2hGZUdWamRYUnBiMjVRYkdGdWJtVnlYQ0k3WEc1cGJYQnZjblFnZEhsd1pTQjdJRWR5WVhCb1JYaGxZM1YwYVc5dVVHeGhiaUI5SUdaeWIyMGdYQ0l1TGk5d2JHRnVibWx1Wnk5SGNtRndhRVY0WldOMWRHbHZibEJzWVc1Y0lqdGNibWx0Y0c5eWRDQjBlWEJsSUhzZ1IzSmhjR2hGZUdWamRYUnBiMjVRYkdGdVRtOWtaU0I5SUdaeWIyMGdYQ0l1TGk5d2JHRnVibWx1Wnk5SGNtRndhRVY0WldOMWRHbHZibEJzWVc1T2IyUmxYQ0k3WEc1cGJYQnZjblFnZEhsd1pTQjdJRWR5WVhCb1ZtRnNkV1ZUZEc5eVpVRmtZWEIwWlhJZ2ZTQm1jbTl0SUZ3aUxpNHZjM1J2Y21VdlIzSmhjR2hXWVd4MVpWTjBiM0psUVdSaGNIUmxjbHdpTzF4dWFXMXdiM0owSUhzZ1NXNU5aVzF2Y25sSGNtRndhRlpoYkhWbFUzUnZjbVZCWkdGd2RHVnlJSDBnWm5KdmJTQmNJaTR1TDNOMGIzSmxMMGx1VFdWdGIzSjVSM0poY0doV1lXeDFaVk4wYjNKbFFXUmhjSFJsY2x3aU8xeHVhVzF3YjNKMElIc2dSM0poY0doV1lXeDFaVk4wYjNKbElIMGdabkp2YlNCY0lpNHVMM04wYjNKbEwwZHlZWEJvVm1Gc2RXVlRkRzl5WlZ3aU8xeHVhVzF3YjNKMElIUjVjR1VnZXlCSGNtRndhRU5oWTJobFpGWmhiSFZsSUgwZ1puSnZiU0JjSWk0dUwzTjBiM0psTDBkeVlYQm9RMkZqYUdWa1ZtRnNkV1ZjSWp0Y2JtbHRjRzl5ZENCN0lFZHlZWEJvVUdsdWJtbHVaMU5sY25acFkyVWdmU0JtY205dElGd2lMaTR2Y0dsdWJtbHVaeTlIY21Gd2FGQnBibTVwYm1kVFpYSjJhV05sWENJN1hHNXBiWEJ2Y25RZ2V5QkhjbUZ3YUZCcGJtNXBibWRRYjJ4cFkza2dmU0JtY205dElGd2lMaTR2Y0dsdWJtbHVaeTlIY21Gd2FGQnBibTVwYm1kUWIyeHBZM2xjSWp0Y2JtbHRjRzl5ZENCN0lFZHlZWEJvVUdsdWJtbHVaMFJsY0dWdVpHVnVZM2xTWlhOdmJIWmxjaUI5SUdaeWIyMGdYQ0l1TGk5d2FXNXVhVzVuTDBkeVlYQm9VR2x1Ym1sdVowUmxjR1Z1WkdWdVkzbFNaWE52YkhabGNsd2lPMXh1YVcxd2IzSjBJSHNnUjNKaGNHaEZlR1ZqZFhScGIyNURiMjUwWlhoMElIMGdabkp2YlNCY0lpNHZSM0poY0doRmVHVmpkWFJwYjI1RGIyNTBaWGgwWENJN1hHNXBiWEJ2Y25RZ2V5QkhjbUZ3YUVWNFpXTjFkR2x2YmtaeVlXMWxJSDBnWm5KdmJTQmNJaTR2UjNKaGNHaEZlR1ZqZFhScGIyNUdjbUZ0WlZ3aU8xeHVhVzF3YjNKMElIc2dZblZwYkdSSGNtRndhRVY0WldOMWRHbHZibEpsYzNWc2RDQjlJR1p5YjIwZ1hDSXVMMGR5WVhCb1JYaGxZM1YwYVc5dVVtVnpkV3gwWENJN1hHNXBiWEJ2Y25RZ2RIbHdaU0I3SUVOdlpHVlRZVzVrWW05NFJYWmhiSFZoZEc5eUlIMGdabkp2YlNCY0lpNHZRMjlrWlZOaGJtUmliM2hGZG1Gc2RXRjBiM0pjSWp0Y2JseHVMeW9xWEc0Z0tpQkRiMjVtYVdkMWNtRjBhVzl1SUdadmNpQjBhR1VnZTBCc2FXNXJJRWR5WVhCb1JYaGxZM1YwYVc5dVJXNW5hVzVsZlM1Y2JpQXFMMXh1Wlhod2IzSjBJR2x1ZEdWeVptRmpaU0JIY21Gd2FFVjRaV04xZEdsdmJrVnVaMmx1WlVOdmJtWnBaeUI3WEc0Z0lISmxaMmx6ZEhKNU9pQkhjbUZ3YUU1dlpHVkZlR1ZqZFhSdmNsSmxaMmx6ZEhKNU8xeHVJQ0J3YkdGdWJtVnlQem9nUjNKaGNHaEZlR1ZqZFhScGIyNVFiR0Z1Ym1WeU8xeHVJQ0IyWVd4MVpWTjBiM0psUVdSaGNIUmxjajg2SUVkeVlYQm9WbUZzZFdWVGRHOXlaVUZrWVhCMFpYSTdYRzRnSUdWMlpXNTBSVzFwZEhSbGNqODZJRWR5WVhCb1JYaGxZM1YwYVc5dVJYWmxiblJGYldsMGRHVnlPMXh1SUNCa1pXWmhkV3gwVDNCMGFXOXVjejg2SUZCaGNuUnBZV3c4UjNKaGNHaEZlR1ZqZFhScGIyNVBjSFJwYjI1elBqdGNiaUFnTHlvcVhHNGdJQ0FxSUU5d2RHbHZibUZzSUhCc2RXZG5ZV0pzWlNCamIyUmxJSE5oYm1SaWIzZ2daWFpoYkhWaGRHOXlJR1p2Y2lCamIyUmxMV0poYzJWa0lHTnZibVJwZEdsdmJuTmNiaUFnSUNvZ0tFUkZRMEZHTFRNeUlNS25Nakl1TkNrdUlGZG9aVzRnWVdKelpXNTBMQ0JqYjJSbElHTnZibVJwZEdsdmJuTWdkR2h5YjNkY2JpQWdJQ29nWUVkU1FWQklYME5QUkVWZlUwRk9SRUpQV0Y5T1QxUmZRMDlPUmtsSFZWSkZSR0F1SUVSdmQyNXpkSEpsWVcwZ2NISnZhbVZqZEhNZ0tHVXVaeTRnUVV4R1VrVkVLVnh1SUNBZ0tpQnpkWEJ3YkhrZ2RHaGxJR0ZqZEhWaGJDQldUU0J6WVc1a1ltOTRJR2x0Y0d4bGJXVnVkR0YwYVc5dUxseHVJQ0FnS2k5Y2JpQWdZMjlrWlZOaGJtUmliM2hGZG1Gc2RXRjBiM0kvT2lCRGIyUmxVMkZ1WkdKdmVFVjJZV3gxWVhSdmNqdGNiaUFnTHlvcVhHNGdJQ0FxSUU5d2RHbHZibUZzSUdOaGJHeGlZV05ySUdsdWRtOXJaV1FnWVhRZ2RHaGxJR1Z1WkNCdlppQmxibWRwYm1VZ1kyOXVjM1J5ZFdOMGFXOXVJSGRwZEdnZ2RHaGxYRzRnSUNBcUlHWjFiR3g1TFdsdWFYUnBZV3hwYzJWa0lHVnVaMmx1WlNCcGJuTjBZVzVqWlM0Z1ZYTmxJSFJvYVhNZ2RHOGdjbVZuYVhOMFpYSWdaWGhsWTNWMGIzSnpJSFJvWVhSY2JpQWdJQ29nYm1WbFpDQmhJR0poWTJzdGNtVm1aWEpsYm1ObElIUnZJSFJvWlNCbGJtZHBibVVnS0dVdVp5NGdiRzl2Y0NCbGVHVmpkWFJ2Y25NZ2RHaGhkQ0JsZUdWamRYUmxYRzRnSUNBcUlITjFZaTEzYjNKclpteHZkM01nZEdoeWIzVm5hQ0IwYUdVZ2MyRnRaU0JsYm1kcGJtVXBMbHh1SUNBZ0tpOWNiaUFnYjI1RmJtZHBibVZEY21WaGRHVmtQem9nS0dWdVoybHVaVG9nUjNKaGNHaEZlR1ZqZFhScGIyNUZibWRwYm1VcElEMCtJSFp2YVdRN1hHNTlYRzVjYmk4cUtseHVJQ29nVW1WbVpYSmxibU5sSUdkeVlYQm9JR1Y0WldOMWRHbHZiaUJsYm1kcGJtVXVYRzRnS2x4dUlDb2dSWGhsWTNWMFpYTWdZU0I3UUd4cGJtc2dSM0poY0doWGIzSnJabXh2ZDBSbFptbHVhWFJwYjI1OUlHSjVPbHh1SUNvZ01TNGdVR3hoYm01cGJtY2dkR2hsSUhkdmNtdG1iRzkzSUdsdWRHOGdkRzl3YjJ4dloybGpZV3dnYkdGNVpYSnpMbHh1SUNvZ01pNGdVMlZsWkdsdVp5QjNiM0pyWm14dmR5QnBibkIxZEhNZ2FXNTBieUIwYUdVZ2RtRnNkV1VnYzNSdmNtVXVYRzRnS2lBekxpQkZlR1ZqZFhScGJtY2dibTlrWlhNZ2JHRjVaWEl0WW5rdGJHRjVaWElnZDJsMGFDQmpiMjVtYVdkMWNtRmliR1VnWTI5dVkzVnljbVZ1WTNrdVhHNGdLaUEwTGlCU2IzVjBhVzVuSUhaaGJIVmxjeUJoYkc5dVp5QmxaR2RsY3k1Y2JpQXFJRFV1SUVWdGFYUjBhVzVuSUhOMGNuVmpkSFZ5WldRZ1pYWmxiblJ6SUhSb2NtOTFaMmdnUkdWallXWW5jeUJQWW5ObGNuWmhZbXhsSUhCcGNHVnNhVzVsTGx4dUlDb2dOaTRnVW1WMGRYSnVhVzVuSUdFZ1kyOXRjR3hsZEdVZ2UwQnNhVzVySUVkeVlYQm9SWGhsWTNWMGFXOXVVbVZ6ZFd4MGZTNWNiaUFxTDF4dVpYaHdiM0owSUdOc1lYTnpJRWR5WVhCb1JYaGxZM1YwYVc5dVJXNW5hVzVsWEc0Z0lHbHRjR3hsYldWdWRITWdUMkp6WlhKMllXSnNaVHhiUjNKaGNHaEZlR1ZqZFhScGIyNVBZbk5sY25abGNsMHNJRnRIY21Gd2FFVjRaV04xZEdsdmJrVjJaVzUwWFQ0Z2UxeHVJQ0J3Y21sMllYUmxJSEpsWVdSdmJteDVJR1Z0YVhSMFpYSTZJRWR5WVhCb1JYaGxZM1YwYVc5dVJYWmxiblJGYldsMGRHVnlPMXh1SUNCd2NtbDJZWFJsSUhKbFlXUnZibXg1SUhCc1lXNXVaWEk2SUVkeVlYQm9SWGhsWTNWMGFXOXVVR3hoYm01bGNqdGNiaUFnY0hKcGRtRjBaU0J5WldGa2IyNXNlU0IyWVd4MVpWTjBiM0psUVdSaGNIUmxjam9nUjNKaGNHaFdZV3gxWlZOMGIzSmxRV1JoY0hSbGNqdGNiaUFnY0hKcGRtRjBaU0J5WldGa2IyNXNlU0JrWldaaGRXeDBUM0IwYVc5dWN6b2dVR0Z5ZEdsaGJEeEhjbUZ3YUVWNFpXTjFkR2x2Yms5d2RHbHZibk0rTzF4dUlDQXZLaW9nVUd4MVoyZGhZbXhsSUdOdlpHVWdjMkZ1WkdKdmVDQmxkbUZzZFdGMGIzSWdLTUtuTWpJdU5DazdJRzFoZVNCaVpTQjFibVJsWm1sdVpXUXVJQ292WEc0Z0lISmxZV1J2Ym14NUlHTnZaR1ZUWVc1a1ltOTRSWFpoYkhWaGRHOXlQem9nUTI5a1pWTmhibVJpYjNoRmRtRnNkV0YwYjNJN1hHNWNiaUFnWTI5dWMzUnlkV04wYjNJb1kyOXVabWxuT2lCSGNtRndhRVY0WldOMWRHbHZia1Z1WjJsdVpVTnZibVpwWnlrZ2UxeHVJQ0FnSUhSb2FYTXVaVzFwZEhSbGNpQTlJR052Ym1acFp5NWxkbVZ1ZEVWdGFYUjBaWElnUHo4Z2JtVjNJRWR5WVhCb1JYaGxZM1YwYVc5dVJYWmxiblJGYldsMGRHVnlLQ2s3WEc0Z0lDQWdkR2hwY3k1d2JHRnVibVZ5SUQwZ1kyOXVabWxuTG5Cc1lXNXVaWElnUHo4Z2JtVjNJRWR5WVhCb1JYaGxZM1YwYVc5dVVHeGhibTVsY2lncE8xeHVJQ0FnSUhSb2FYTXVkbUZzZFdWVGRHOXlaVUZrWVhCMFpYSWdQVnh1SUNBZ0lDQWdZMjl1Wm1sbkxuWmhiSFZsVTNSdmNtVkJaR0Z3ZEdWeUlEOC9JRzVsZHlCSmJrMWxiVzl5ZVVkeVlYQm9WbUZzZFdWVGRHOXlaVUZrWVhCMFpYSW9LVHRjYmlBZ0lDQjBhR2x6TG1SbFptRjFiSFJQY0hScGIyNXpJRDBnWTI5dVptbG5MbVJsWm1GMWJIUlBjSFJwYjI1eklEOC9JSHQ5TzF4dUlDQWdJSFJvYVhNdVkyOWtaVk5oYm1SaWIzaEZkbUZzZFdGMGIzSWdQU0JqYjI1bWFXY3VZMjlrWlZOaGJtUmliM2hGZG1Gc2RXRjBiM0k3WEc0Z0lDQWdkR2hwY3k1amIyNW1hV2NnUFNCamIyNW1hV2M3WEc0Z0lDQWdZMjl1Wm1sbkxtOXVSVzVuYVc1bFEzSmxZWFJsWkQ4dUtIUm9hWE1wTzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCeVpXRmtiMjVzZVNCamIyNW1hV2M2SUVkeVlYQm9SWGhsWTNWMGFXOXVSVzVuYVc1bFEyOXVabWxuTzF4dVhHNGdJRzlpYzJWeWRtVW9iMkp6WlhKMlpYSTZJRWR5WVhCb1JYaGxZM1YwYVc5dVQySnpaWEoyWlhJcE9pQW9LU0E5UGlCMmIybGtJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVsYldsMGRHVnlMbTlpYzJWeWRtVW9iMkp6WlhKMlpYSXBPMXh1SUNCOVhHNWNiaUFnZFc1UFluTmxjblpsS0c5aWMyVnlkbVZ5T2lCSGNtRndhRVY0WldOMWRHbHZiazlpYzJWeWRtVnlLVG9nZG05cFpDQjdYRzRnSUNBZ2RHaHBjeTVsYldsMGRHVnlMblZ1VDJKelpYSjJaU2h2WW5ObGNuWmxjaWs3WEc0Z0lIMWNibHh1SUNCaGMzbHVZeUIxY0dSaGRHVlBZbk5sY25abGNuTW9aWFpsYm5RNklFZHlZWEJvUlhobFkzVjBhVzl1UlhabGJuUXBPaUJRY205dGFYTmxQSFp2YVdRK0lIdGNiaUFnSUNCaGQyRnBkQ0IwYUdsekxtVnRhWFIwWlhJdWRYQmtZWFJsVDJKelpYSjJaWEp6S0dWMlpXNTBLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCRmVHVmpkWFJsY3lCaElIZHZjbXRtYkc5M0lIZHBkR2dnZEdobElHZHBkbVZ1SUdsdWNIVjBjeUJoYm1RZ2IzQjBhVzl1Y3k1Y2JpQWdJQ292WEc0Z0lHRnplVzVqSUdWNFpXTjFkR1VvWEc0Z0lDQWdkMjl5YTJac2IzYzZJRWR5WVhCb1YyOXlhMlpzYjNkRVpXWnBibWwwYVc5dUxGeHVJQ0FnSUdsdWNIVjBjem9nUjNKaGNHaEZlR1ZqZFhScGIyNVdZV3gxWlhNZ1BTQjdmU3hjYmlBZ0lDQnZjSFJwYjI1ek9pQkhjbUZ3YUVWNFpXTjFkR2x2Yms5d2RHbHZibk1nUFNCN2ZWeHVJQ0FwT2lCUWNtOXRhWE5sUEVkeVlYQm9SWGhsWTNWMGFXOXVVbVZ6ZFd4MFBpQjdYRzRnSUNBZ1kyOXVjM1FnYjNCMGN5QTlJSFJvYVhNdWJXVnlaMlZQY0hScGIyNXpLRzl3ZEdsdmJuTXBPMXh1SUNBZ0lHTnZibk4wSUhKMWJrbGtJRDBnYjNCMGN5NXlkVzVKWkNBL1B5QjBhR2x6TG1kbGJtVnlZWFJsVW5WdVNXUW9LVHRjYmlBZ0lDQmpiMjV6ZENCd1lYUm9JRDBnYjNCMGN5NXdZWFJvSUQ4L0lGdGRPMXh1SUNBZ0lHTnZibk4wSUdWMlpXNTBSbUZqZEc5eWVTQTlJRzVsZHlCSGNtRndhRVY0WldOMWRHbHZia1YyWlc1MFJtRmpkRzl5ZVNncE8xeHVJQ0FnSUdOdmJuTjBJSFpoYkhWbFUzUnZjbVVnUFNCdVpYY2dSM0poY0doV1lXeDFaVk4wYjNKbEtIUm9hWE11ZG1Gc2RXVlRkRzl5WlVGa1lYQjBaWElwTzF4dUlDQWdJSFpoYkhWbFUzUnZjbVV1YzJWbFpGZHZjbXRtYkc5M1NXNXdkWFJ6S0dsdWNIVjBjeWs3WEc1Y2JpQWdJQ0JqYjI1emRDQndiR0Z1SUQwZ2RHaHBjeTV3YkdGdWJtVnlMbkJzWVc0b2QyOXlhMlpzYjNjcE8xeHVJQ0FnSUdOdmJuTjBJR1p5WVcxbElEMGdibVYzSUVkeVlYQm9SWGhsWTNWMGFXOXVSbkpoYldVb1hHNGdJQ0FnSUNCeWRXNUpaQ3hjYmlBZ0lDQWdJSEJzWVc0c1hHNGdJQ0FnSUNCMllXeDFaVk4wYjNKbExGeHVJQ0FnSUNBZ1pYWmxiblJHWVdOMGIzSjVYRzRnSUNBZ0tUdGNibHh1SUNBZ0lHTnZibk4wSUdWdGFYUkdiaUE5SUdGemVXNWpJQ2h3WVhKMGFXRnNPaUJRWVhKMGFXRnNQRWR5WVhCb1JYaGxZM1YwYVc5dVJYWmxiblErS1NBOVBpQjdYRzRnSUNBZ0lDQmhkMkZwZENCMGFHbHpMbVZ0YVhSRmRtVnVkQ2htY21GdFpTd2dlMXh1SUNBZ0lDQWdJQ0IwZVhCbE9pQndZWEowYVdGc0xuUjVjR1VnUHo4Z1IzSmhjR2hGZUdWamRYUnBiMjVGZG1WdWRGUjVjR1V1VGs5RVJWOVBWVlJRVlZRc1hHNGdJQ0FnSUNBZ0lISjFia2xrTEZ4dUlDQWdJQ0FnSUNCd1lYSmxiblJTZFc1SlpEb2diM0IwY3k1d1lYSmxiblJTZFc1SlpDeGNiaUFnSUNBZ0lDQWdkMjl5YTJac2IzZEpaRG9nZDI5eWEyWnNiM2N1Ym1GdFpTeGNiaUFnSUNBZ0lDQWdibTlrWlVsa09pQndZWEowYVdGc0xtNXZaR1ZKWkN4Y2JpQWdJQ0FnSUNBZ2NHRjBhRG9nY0dGeWRHbGhiQzV3WVhSb0lEOC9JSEJoZEdnc1hHNGdJQ0FnSUNBZ0lDNHVMbkJoY25ScFlXd3NYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQjlPMXh1WEc0Z0lDQWdZWGRoYVhRZ2RHaHBjeTVsYldsMFJYWmxiblFvWm5KaGJXVXNJSHRjYmlBZ0lDQWdJSFI1Y0dVNklFZHlZWEJvUlhobFkzVjBhVzl1UlhabGJuUlVlWEJsTGxkUFVrdEdURTlYWDFOVVFWSlVSVVFzWEc0Z0lDQWdJQ0J5ZFc1SlpDeGNiaUFnSUNBZ0lIQmhjbVZ1ZEZKMWJrbGtPaUJ2Y0hSekxuQmhjbVZ1ZEZKMWJrbGtMRnh1SUNBZ0lDQWdkMjl5YTJac2IzZEpaRG9nZDI5eWEyWnNiM2N1Ym1GdFpTeGNiaUFnSUNBZ0lIQmhkR2dzWEc0Z0lDQWdJQ0J6ZEdGMGRYTTZJRWR5WVhCb1JYaGxZM1YwYVc5dVUzUmhkSFZ6TGxKVlRrNUpUa2NzWEc0Z0lDQWdJQ0J3WVhsc2IyRmtPaUI3SUdsdWNIVjBjeUI5TEZ4dUlDQWdJSDBwTzF4dVhHNGdJQ0FnWVhkaGFYUWdkR2hwY3k1bGJXbDBSWFpsYm5Rb1puSmhiV1VzSUh0Y2JpQWdJQ0FnSUhSNWNHVTZJRWR5WVhCb1JYaGxZM1YwYVc5dVJYWmxiblJVZVhCbExsZFBVa3RHVEU5WFgxQk1RVTVPUlVRc1hHNGdJQ0FnSUNCeWRXNUpaQ3hjYmlBZ0lDQWdJSEJoY21WdWRGSjFia2xrT2lCdmNIUnpMbkJoY21WdWRGSjFia2xrTEZ4dUlDQWdJQ0FnZDI5eWEyWnNiM2RKWkRvZ2QyOXlhMlpzYjNjdWJtRnRaU3hjYmlBZ0lDQWdJSEJoZEdnc1hHNGdJQ0FnSUNCemRHRjBkWE02SUVkeVlYQm9SWGhsWTNWMGFXOXVVM1JoZEhWekxsQk1RVTVPU1U1SExGeHVJQ0FnSUNBZ2NHRjViRzloWkRvZ2V5QnNZWGxsY25NNklIQnNZVzR1YkdGNVpYSnpMbXhsYm1kMGFDd2dibTlrWlhNNklIQnNZVzR1Ym05a1pYTXViR1Z1WjNSb0lIMHNYRzRnSUNBZ2ZTazdYRzVjYmlBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnWm05eUlDaGpiMjV6ZENCc1lYbGxjaUJ2WmlCd2JHRnVMbXhoZVdWeWN5a2dlMXh1SUNBZ0lDQWdJQ0JoZDJGcGRDQjBhR2x6TG1WNFpXTjFkR1ZNWVhsbGNpaG1jbUZ0WlN3Z2NHeGhiaXdnYkdGNVpYSXVibTlrWlhNc0lHOXdkSE1zSUdWdGFYUkdiaWs3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUdOdmJuTjBJR1pwY25OMFJtRnBiSFZ5WlNBOUlGc3VMaTVtY21GdFpTNXViMlJsVW1WemRXeDBjeTUyWVd4MVpYTW9LVjB1Wm1sdVpDaGNiaUFnSUNBZ0lDQWdLSEpsYzNWc2RDa2dQVDRnY21WemRXeDBMbk4wWVhSMWN5QTlQVDBnUjNKaGNHaEZlR1ZqZFhScGIyNVRkR0YwZFhNdVJrRkpURVZFWEc0Z0lDQWdJQ0FwTzF4dUlDQWdJQ0FnYVdZZ0tHWnBjbk4wUm1GcGJIVnlaVDh1WlhKeWIzSXBJSHRjYmlBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUVkeVlYQm9SWGhsWTNWMGFXOXVSWEp5YjNJb1hHNGdJQ0FnSUNBZ0lDQWdabWx5YzNSR1lXbHNkWEpsTG1WeWNtOXlMbTFsYzNOaFoyVXNYRzRnSUNBZ0lDQWdJQ0FnWm1seWMzUkdZV2xzZFhKbExtVnljbTl5TG1OdlpHVWdQejhnWENKSFVrRlFTRjlGV0VWRFZWUkpUMDVmUlZKU1QxSmNJaXhjYmlBZ0lDQWdJQ0FnSUNCbWFYSnpkRVpoYVd4MWNtVXVaWEp5YjNJdVpHVjBZV2xzYzF4dUlDQWdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQm1jbUZ0WlM1bWFXNXBjMmdvS1R0Y2JseHVJQ0FnSUNBZ1lYZGhhWFFnZEdocGN5NWxiV2wwUlhabGJuUW9abkpoYldVc0lIdGNiaUFnSUNBZ0lDQWdkSGx3WlRvZ1IzSmhjR2hGZUdWamRYUnBiMjVGZG1WdWRGUjVjR1V1VjA5U1MwWk1UMWRmUTA5TlVFeEZWRVZFTEZ4dUlDQWdJQ0FnSUNCeWRXNUpaQ3hjYmlBZ0lDQWdJQ0FnY0dGeVpXNTBVblZ1U1dRNklHOXdkSE11Y0dGeVpXNTBVblZ1U1dRc1hHNGdJQ0FnSUNBZ0lIZHZjbXRtYkc5M1NXUTZJSGR2Y210bWJHOTNMbTVoYldVc1hHNGdJQ0FnSUNBZ0lIQmhkR2dzWEc0Z0lDQWdJQ0FnSUhOMFlYUjFjem9nUjNKaGNHaEZlR1ZqZFhScGIyNVRkR0YwZFhNdVUxVkRRMFZGUkVWRUxGeHVJQ0FnSUNBZ0lDQndZWGxzYjJGa09pQjdJRzkxZEhCMWRITTZJSFpoYkhWbFUzUnZjbVV1WjJWMFYyOXlhMlpzYjNkV1lXeDFaWE1vS1NCOUxGeHVJQ0FnSUNBZ2ZTazdYRzVjYmlBZ0lDQWdJSEpsZEhWeWJpQmlkV2xzWkVkeVlYQm9SWGhsWTNWMGFXOXVVbVZ6ZFd4MEtGeHVJQ0FnSUNBZ0lDQm1jbUZ0WlN4Y2JpQWdJQ0FnSUNBZ2QyOXlhMlpzYjNjc1hHNGdJQ0FnSUNBZ0lHbHVjSFYwY3l4Y2JpQWdJQ0FnSUNBZ1IzSmhjR2hGZUdWamRYUnBiMjVUZEdGMGRYTXVVMVZEUTBWRlJFVkVMRnh1SUNBZ0lDQWdJQ0J2Y0hSekxtMWxkR0ZrWVhSaFhHNGdJQ0FnSUNBcE8xeHVJQ0FnSUgwZ1kyRjBZMmdnS0dWeWNtOXlLU0I3WEc0Z0lDQWdJQ0JtY21GdFpTNW1hVzVwYzJnb0tUdGNiaUFnSUNBZ0lHTnZibk4wSUdWeWNtOXlVR0Y1Ykc5aFpDQTlJSFJvYVhNdWRHOUZjbkp2Y2xCaGVXeHZZV1FvWlhKeWIzSXBPMXh1WEc0Z0lDQWdJQ0JoZDJGcGRDQjBhR2x6TG1WdGFYUkZkbVZ1ZENobWNtRnRaU3dnZTF4dUlDQWdJQ0FnSUNCMGVYQmxPaUJIY21Gd2FFVjRaV04xZEdsdmJrVjJaVzUwVkhsd1pTNVhUMUpMUmt4UFYxOUdRVWxNUlVRc1hHNGdJQ0FnSUNBZ0lISjFia2xrTEZ4dUlDQWdJQ0FnSUNCd1lYSmxiblJTZFc1SlpEb2diM0IwY3k1d1lYSmxiblJTZFc1SlpDeGNiaUFnSUNBZ0lDQWdkMjl5YTJac2IzZEpaRG9nZDI5eWEyWnNiM2N1Ym1GdFpTeGNiaUFnSUNBZ0lDQWdjR0YwYUN4Y2JpQWdJQ0FnSUNBZ2MzUmhkSFZ6T2lCSGNtRndhRVY0WldOMWRHbHZibE4wWVhSMWN5NUdRVWxNUlVRc1hHNGdJQ0FnSUNBZ0lHVnljbTl5T2lCbGNuSnZjbEJoZVd4dllXUXNYRzRnSUNBZ0lDQjlLVHRjYmx4dUlDQWdJQ0FnY21WMGRYSnVJR0oxYVd4a1IzSmhjR2hGZUdWamRYUnBiMjVTWlhOMWJIUW9YRzRnSUNBZ0lDQWdJR1p5WVcxbExGeHVJQ0FnSUNBZ0lDQjNiM0pyWm14dmR5eGNiaUFnSUNBZ0lDQWdhVzV3ZFhSekxGeHVJQ0FnSUNBZ0lDQkhjbUZ3YUVWNFpXTjFkR2x2YmxOMFlYUjFjeTVHUVVsTVJVUXNYRzRnSUNBZ0lDQWdJRzl3ZEhNdWJXVjBZV1JoZEdGY2JpQWdJQ0FnSUNrN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGQnBibk1nWVNCdWIyUmxJR0Z1WkNCcGRITWdkWEJ6ZEhKbFlXMGdaR1Z3Wlc1a1pXNWphV1Z6SUdGbWRHVnlJR0VnWTI5dGNHeGxkR1ZrSUhKMWJpNWNiaUFnSUNwY2JpQWdJQ29nUkdWc1pXZGhkR1Z6SUhSdklIdEFiR2x1YXlCSGNtRndhRkJwYm01cGJtZFRaWEoyYVdObGZTNGdWR2hsSUhCc1lXNGdZVzVrSUhKbGMzVnNkQ0J0ZFhOMElHTnZiV1ZjYmlBZ0lDb2dabkp2YlNCaElIQnlhVzl5SUhOMVkyTmxjM05tZFd3Z1pYaGxZM1YwYVc5dUlHOW1JSFJvWlNCellXMWxJSGR2Y210bWJHOTNMbHh1SUNBZ0tpOWNiaUFnWVhONWJtTWdjR2x1VG05a1pTaHZjSFJwYjI1ek9pQkhjbUZ3YUZCcGJrNXZaR1ZQY0hScGIyNXpLVG9nVUhKdmJXbHpaVHgyYjJsa1BpQjdYRzRnSUNBZ1kyOXVjM1FnYzJWeWRtbGpaU0E5SUhSb2FYTXVZM0psWVhSbFVHbHVibWx1WjFObGNuWnBZMlVvS1R0Y2JpQWdJQ0JoZDJGcGRDQnpaWEoyYVdObExuQnBiazV2WkdVb2IzQjBhVzl1Y3lrN1hHNGdJQ0FnWVhkaGFYUWdkR2hwY3k1bGJXbDBVR2x1Ym1sdVowVjJaVzUwS0c5d2RHbHZibk11Ym05a1pVbGtMQ0JIY21Gd2FFVjRaV04xZEdsdmJrVjJaVzUwVkhsd1pTNU9UMFJGWDFCSlRrNUZSQ2s3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1ZXNXdhVzV6SUdFZ2JtOWtaU0JpZVNCcGRITWdabWx1WjJWeWNISnBiblF1WEc0Z0lDQXFMMXh1SUNCaGMzbHVZeUIxYm5CcGJrNXZaR1VvYjNCMGFXOXVjem9nUjNKaGNHaFZibkJwYms1dlpHVlBjSFJwYjI1ektUb2dVSEp2YldselpUeDJiMmxrUGlCN1hHNGdJQ0FnWTI5dWMzUWdjMlZ5ZG1salpTQTlJSFJvYVhNdVkzSmxZWFJsVUdsdWJtbHVaMU5sY25acFkyVW9LVHRjYmlBZ0lDQmhkMkZwZENCelpYSjJhV05sTG5WdWNHbHVUbTlrWlNodmNIUnBiMjV6S1R0Y2JpQWdJQ0JoZDJGcGRDQjBhR2x6TG1WdGFYUlFhVzV1YVc1blJYWmxiblFvYjNCMGFXOXVjeTV1YjJSbFNXUXNJRWR5WVhCb1JYaGxZM1YwYVc5dVJYWmxiblJVZVhCbExrNVBSRVZmVlU1UVNVNU9SVVFwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFTnlaV0YwWlhNZ1lTQjdRR3hwYm1zZ1IzSmhjR2hRYVc1dWFXNW5VMlZ5ZG1salpYMGdZbUZqYTJWa0lHSjVJSFJvYVhNZ1pXNW5hVzVsSjNNZ2RtRnNkV1VnYzNSdmNtVmNiaUFnSUNvZ1lXUmhjSFJsY2k1Y2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1kzSmxZWFJsVUdsdWJtbHVaMU5sY25acFkyVW9LVG9nUjNKaGNHaFFhVzV1YVc1blUyVnlkbWxqWlNCN1hHNGdJQ0FnWTI5dWMzUWdjM1J2Y21VZ1BTQnVaWGNnUjNKaGNHaFdZV3gxWlZOMGIzSmxLSFJvYVhNdWRtRnNkV1ZUZEc5eVpVRmtZWEIwWlhJcE8xeHVJQ0FnSUhKbGRIVnliaUJ1WlhjZ1IzSmhjR2hRYVc1dWFXNW5VMlZ5ZG1salpTaGNiaUFnSUNBZ0lITjBiM0psTEZ4dUlDQWdJQ0FnYm1WM0lFZHlZWEJvVUdsdWJtbHVaMUJ2YkdsamVTZ3BMRnh1SUNBZ0lDQWdibVYzSUVkeVlYQm9VR2x1Ym1sdVowUmxjR1Z1WkdWdVkzbFNaWE52YkhabGNpZ3BYRzRnSUNBZ0tUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJGYldsMGN5QmhJSEJwYm01cGJtY3RjbVZzWVhSbFpDQmxkbVZ1ZENCMGJ5QmhiR3dnYjJKelpYSjJaWEp6TGx4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCaGMzbHVZeUJsYldsMFVHbHVibWx1WjBWMlpXNTBLRnh1SUNBZ0lHNXZaR1ZKWkRvZ2MzUnlhVzVuTEZ4dUlDQWdJSFI1Y0dVNklFZHlZWEJvUlhobFkzVjBhVzl1UlhabGJuUlVlWEJsWEc0Z0lDazZJRkJ5YjIxcGMyVThkbTlwWkQ0Z2UxeHVJQ0FnSUdOdmJuTjBJR1poWTNSdmNua2dQU0J1WlhjZ1IzSmhjR2hGZUdWamRYUnBiMjVGZG1WdWRFWmhZM1J2Y25rb0tUdGNiaUFnSUNCamIyNXpkQ0JsZG1WdWRDQTlJR1poWTNSdmNua3VZM0psWVhSbEtIdGNiaUFnSUNBZ0lHbGtPaUJjSWx3aUxGeHVJQ0FnSUNBZ2MyVnhkV1Z1WTJVNklEQXNYRzRnSUNBZ0lDQjBhVzFsYzNSaGJYQTZJRzVsZHlCRVlYUmxLQ2tzWEc0Z0lDQWdJQ0J5ZFc1SlpEb2dYQ0p3YVc1dWFXNW5YQ0lzWEc0Z0lDQWdJQ0IzYjNKclpteHZkMGxrT2lCY0lsd2lMRnh1SUNBZ0lDQWdkSGx3WlN4Y2JpQWdJQ0FnSUc1dlpHVkpaQ3hjYmlBZ0lDQWdJSEJoZEdnNklGdGRMRnh1SUNBZ0lIMGdZWE1nVDIxcGREeEhjbUZ3YUVWNFpXTjFkR2x2YmtWMlpXNTBMQ0JjSW1sa1hDSWdmQ0JjSW5ObGNYVmxibU5sWENJZ2ZDQmNJblJwYldWemRHRnRjRndpUGlrN1hHNGdJQ0FnWVhkaGFYUWdkR2hwY3k1bGJXbDBkR1Z5TG5Wd1pHRjBaVTlpYzJWeWRtVnljeWhsZG1WdWRDazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUlhobFkzVjBaWE1nWVNCc1lYbGxjaUJ2WmlCdWIyUmxjeUIzYVhSb0lIUm9aU0JqYjI1bWFXZDFjbVZrSUdOdmJtTjFjbkpsYm1ONUxseHVJQ0FnS2k5Y2JpQWdjSEpwZG1GMFpTQmhjM2x1WXlCbGVHVmpkWFJsVEdGNVpYSW9YRzRnSUNBZ1puSmhiV1U2SUVkeVlYQm9SWGhsWTNWMGFXOXVSbkpoYldVc1hHNGdJQ0FnY0d4aGJqb2dSM0poY0doRmVHVmpkWFJwYjI1UWJHRnVMRnh1SUNBZ0lHNXZaR1Z6T2lCSGNtRndhRVY0WldOMWRHbHZibEJzWVc1T2IyUmxXMTBzWEc0Z0lDQWdiM0IwY3pvZ1IzSmhjR2hGZUdWamRYUnBiMjVQY0hScGIyNXpMRnh1SUNBZ0lHVnRhWFJHYmpvZ0tHVjJaVzUwT2lCUVlYSjBhV0ZzUEVkeVlYQm9SWGhsWTNWMGFXOXVSWFpsYm5RK0tTQTlQaUJRY205dGFYTmxQSFp2YVdRK1hHNGdJQ2s2SUZCeWIyMXBjMlU4ZG05cFpENGdlMXh1SUNBZ0lHTnZibk4wSUdOdmJtTjFjbkpsYm1ONUlEMGdUV0YwYUM1dFlYZ29YRzRnSUNBZ0lDQXhMRnh1SUNBZ0lDQWdiM0IwY3k1amIyNWpkWEp5Wlc1amVTQS9QeUJIVWtGUVNGOUVSVVpCVlV4VVgwTlBUa05WVWxKRlRrTlpYRzRnSUNBZ0tUdGNiaUFnSUNCamIyNXpkQ0J4ZFdWMVpTQTlJRnN1TGk1dWIyUmxjMTA3WEc1Y2JpQWdJQ0IzYUdsc1pTQW9jWFZsZFdVdWJHVnVaM1JvSUQ0Z01Da2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ1ltRjBZMmdnUFNCeGRXVjFaUzV6Y0d4cFkyVW9NQ3dnWTI5dVkzVnljbVZ1WTNrcE8xeHVJQ0FnSUNBZ1lYZGhhWFFnVUhKdmJXbHpaUzVoYkd3b1hHNGdJQ0FnSUNBZ0lHSmhkR05vTG0xaGNDZ29ibTlrWlNrZ1BUNGdkR2hwY3k1bGVHVmpkWFJsVG05a1pTaG1jbUZ0WlN3Z2NHeGhiaXdnYm05a1pTd2diM0IwY3l3Z1pXMXBkRVp1S1NsY2JpQWdJQ0FnSUNrN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFVjRaV04xZEdWeklHRWdjMmx1WjJ4bElHNXZaR1V1WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUdGemVXNWpJR1Y0WldOMWRHVk9iMlJsS0Z4dUlDQWdJR1p5WVcxbE9pQkhjbUZ3YUVWNFpXTjFkR2x2YmtaeVlXMWxMRnh1SUNBZ0lIQnNZVzQ2SUVkeVlYQm9SWGhsWTNWMGFXOXVVR3hoYml4Y2JpQWdJQ0J3YkdGdVRtOWtaVG9nUjNKaGNHaEZlR1ZqZFhScGIyNVFiR0Z1VG05a1pTeGNiaUFnSUNCdmNIUnpPaUJIY21Gd2FFVjRaV04xZEdsdmJrOXdkR2x2Ym5Nc1hHNGdJQ0FnWlcxcGRFWnVPaUFvWlhabGJuUTZJRkJoY25ScFlXdzhSM0poY0doRmVHVmpkWFJwYjI1RmRtVnVkRDRwSUQwK0lGQnliMjFwYzJVOGRtOXBaRDVjYmlBZ0tUb2dVSEp2YldselpUeDJiMmxrUGlCN1hHNGdJQ0FnWTI5dWMzUWdjM1JoY25SbFpFRjBJRDBnYm1WM0lFUmhkR1VvS1R0Y2JpQWdJQ0JqYjI1emRDQnViMlJsVUdGMGFDQTlJRnN1TGk0b2IzQjBjeTV3WVhSb0lEOC9JRnRkS1N3Z2NHeGhiazV2WkdVdWFXUmRPMXh1WEc0Z0lDQWdZWGRoYVhRZ2RHaHBjeTVsYldsMFJYWmxiblFvWm5KaGJXVXNJSHRjYmlBZ0lDQWdJSFI1Y0dVNklFZHlZWEJvUlhobFkzVjBhVzl1UlhabGJuUlVlWEJsTGs1UFJFVmZVMVJCVWxSRlJDeGNiaUFnSUNBZ0lISjFia2xrT2lCbWNtRnRaUzV5ZFc1SlpDeGNiaUFnSUNBZ0lIZHZjbXRtYkc5M1NXUTZJSEJzWVc0dWQyOXlhMlpzYjNkSlpDeGNiaUFnSUNBZ0lHNXZaR1ZKWkRvZ2NHeGhiazV2WkdVdWFXUXNYRzRnSUNBZ0lDQndZWFJvT2lCdWIyUmxVR0YwYUN4Y2JpQWdJQ0FnSUhOMFlYUjFjem9nUjNKaGNHaEZlR1ZqZFhScGIyNVRkR0YwZFhNdVVsVk9Ua2xPUnl4Y2JpQWdJQ0I5S1R0Y2JseHVJQ0FnSUdOdmJuTjBJR2x1Y0hWMGN5QTlJSFJvYVhNdWNtVnpiMngyWlU1dlpHVkpibkIxZEhNb1puSmhiV1VzSUhCc1lXNHNJSEJzWVc1T2IyUmxLVHRjYmx4dUlDQWdJQzh2SUVOaFkyaGxMV2hwZERvZ1kyaGxZMnNnWm05eUlHRWdjR2x1Ym1Wa0lIWmhiSFZsSUdKbFptOXlaU0JsZUdWamRYUnBibWNnZEdobElHNXZaR1ZjYmlBZ0lDQnBaaUFvYjNCMGN5NTFjMlZRYVc1dVpXUldZV3gxWlhNcElIdGNiaUFnSUNBZ0lHTnZibk4wSUdOaFkyaGxaQ0E5SUdGM1lXbDBJSFJvYVhNdWRISjVVR2x1Ym1Wa1ZtRnNkV1VvWm5KaGJXVXNJSEJzWVc0c0lIQnNZVzVPYjJSbExDQnBibkIxZEhNcE8xeHVJQ0FnSUNBZ2FXWWdLR05oWTJobFpDa2dlMXh1SUNBZ0lDQWdJQ0JtY21GdFpTNTJZV3gxWlZOMGIzSmxMbk5sZEU1dlpHVlBkWFJ3ZFhSektIQnNZVzVPYjJSbExtbGtMQ0JqWVdOb1pXUXViM1YwY0hWMGN5azdYRzRnSUNBZ0lDQWdJSFJvYVhNdWNtOTFkR1ZQZFhSbmIybHVaMFZrWjJWektHWnlZVzFsTENCd2JHRnVMQ0J3YkdGdVRtOWtaU3dnWTJGamFHVmtMbTkxZEhCMWRITXBPMXh1WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR1pwYm1semFHVmtRWFFnUFNCdVpYY2dSR0YwWlNncE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCeVpYTjFiSFE2SUVkeVlYQm9UbTlrWlVWNFpXTjFkR2x2YmxKbGMzVnNkQ0E5SUh0Y2JpQWdJQ0FnSUNBZ0lDQnViMlJsU1dRNklIQnNZVzVPYjJSbExtbGtMRnh1SUNBZ0lDQWdJQ0FnSUhOMFlYUjFjem9nUjNKaGNHaEZlR1ZqZFhScGIyNVRkR0YwZFhNdVEwRkRTRVZFTEZ4dUlDQWdJQ0FnSUNBZ0lHbHVjSFYwY3l4Y2JpQWdJQ0FnSUNBZ0lDQnZkWFJ3ZFhSek9pQmpZV05vWldRdWIzVjBjSFYwY3l4Y2JpQWdJQ0FnSUNBZ0lDQnpkR0Z5ZEdWa1FYUXNYRzRnSUNBZ0lDQWdJQ0FnWm1sdWFYTm9aV1JCZEN4Y2JpQWdJQ0FnSUNBZ0lDQm1jbTl0UTJGamFHVTZJSFJ5ZFdVc1hHNGdJQ0FnSUNBZ0lDQWdjR2x1Ym1Wa09pQjBjblZsTEZ4dUlDQWdJQ0FnSUNBZ0lHVjJaVzUwY3pvZ1cxMHNYRzRnSUNBZ0lDQWdJSDA3WEc0Z0lDQWdJQ0FnSUdaeVlXMWxMbkpsWTI5eVpFNXZaR1ZTWlhOMWJIUW9jbVZ6ZFd4MEtUdGNibHh1SUNBZ0lDQWdJQ0JoZDJGcGRDQjBhR2x6TG1WdGFYUkZkbVZ1ZENobWNtRnRaU3dnZTF4dUlDQWdJQ0FnSUNBZ0lIUjVjR1U2SUVkeVlYQm9SWGhsWTNWMGFXOXVSWFpsYm5SVWVYQmxMazVQUkVWZlEwRkRTRVZmU0VsVUxGeHVJQ0FnSUNBZ0lDQWdJSEoxYmtsa09pQm1jbUZ0WlM1eWRXNUpaQ3hjYmlBZ0lDQWdJQ0FnSUNCM2IzSnJabXh2ZDBsa09pQndiR0Z1TG5kdmNtdG1iRzkzU1dRc1hHNGdJQ0FnSUNBZ0lDQWdibTlrWlVsa09pQndiR0Z1VG05a1pTNXBaQ3hjYmlBZ0lDQWdJQ0FnSUNCd1lYUm9PaUJ1YjJSbFVHRjBhQ3hjYmlBZ0lDQWdJQ0FnSUNCemRHRjBkWE02SUVkeVlYQm9SWGhsWTNWMGFXOXVVM1JoZEhWekxrTkJRMGhGUkN4Y2JpQWdJQ0FnSUNBZ0lDQndZWGxzYjJGa09pQjdJRzkxZEhCMWRITTZJR05oWTJobFpDNXZkWFJ3ZFhSeklIMHNYRzRnSUNBZ0lDQWdJSDBwTzF4dVhHNGdJQ0FnSUNBZ0lHRjNZV2wwSUhSb2FYTXVaVzFwZEVWMlpXNTBLR1p5WVcxbExDQjdYRzRnSUNBZ0lDQWdJQ0FnZEhsd1pUb2dSM0poY0doRmVHVmpkWFJwYjI1RmRtVnVkRlI1Y0dVdVRrOUVSVjlEVDAxUVRFVlVSVVFzWEc0Z0lDQWdJQ0FnSUNBZ2NuVnVTV1E2SUdaeVlXMWxMbkoxYmtsa0xGeHVJQ0FnSUNBZ0lDQWdJSGR2Y210bWJHOTNTV1E2SUhCc1lXNHVkMjl5YTJac2IzZEpaQ3hjYmlBZ0lDQWdJQ0FnSUNCdWIyUmxTV1E2SUhCc1lXNU9iMlJsTG1sa0xGeHVJQ0FnSUNBZ0lDQWdJSEJoZEdnNklHNXZaR1ZRWVhSb0xGeHVJQ0FnSUNBZ0lDQWdJSE4wWVhSMWN6b2dSM0poY0doRmVHVmpkWFJwYjI1VGRHRjBkWE11VTFWRFEwVkZSRVZFTEZ4dUlDQWdJQ0FnSUNBZ0lIQmhlV3h2WVdRNklIc2diM1YwY0hWMGN6b2dZMkZqYUdWa0xtOTFkSEIxZEhNc0lHWnliMjFEWVdOb1pUb2dkSEoxWlNCOUxGeHVJQ0FnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lIUnllU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQmxlR1ZqZFhSdmNpQTlJSFJvYVhNdVkyOXVabWxuTG5KbFoybHpkSEo1TG5KbGMyOXNkbVVvY0d4aGJrNXZaR1V1YTJsdVpDazdYRzRnSUNBZ0lDQmpiMjV6ZENCamIyNTBaWGgwSUQwZ2JtVjNJRWR5WVhCb1JYaGxZM1YwYVc5dVEyOXVkR1Y0ZENoY2JpQWdJQ0FnSUNBZ1puSmhiV1V1Y25WdVNXUXNYRzRnSUNBZ0lDQWdJRzl3ZEhNdWNHRnlaVzUwVW5WdVNXUXNYRzRnSUNBZ0lDQWdJSEJzWVc0dWQyOXlhMlpzYjNjc1hHNGdJQ0FnSUNBZ0lIQnNZVzVPYjJSbExtUmxabWx1YVhScGIyNHNYRzRnSUNBZ0lDQWdJRzV2WkdWUVlYUm9MRnh1SUNBZ0lDQWdJQ0JsYldsMFJtNHNYRzRnSUNBZ0lDQWdJRzl3ZEhNdWJXVjBZV1JoZEdGY2JpQWdJQ0FnSUNrN1hHNWNiaUFnSUNBZ0lHTnZibk4wSUc5MWRIQjFkSE1nUFNCaGQyRnBkQ0JsZUdWamRYUnZjaTVsZUdWamRYUmxLR2x1Y0hWMGN5d2dZMjl1ZEdWNGRDazdYRzRnSUNBZ0lDQmpiMjV6ZENCeVpYTnZiSFpsWkU5MWRIQjFkSE1nUFNCdmRYUndkWFJ6SUQ4L0lIdDlPMXh1WEc0Z0lDQWdJQ0JtY21GdFpTNTJZV3gxWlZOMGIzSmxMbk5sZEU1dlpHVlBkWFJ3ZFhSektIQnNZVzVPYjJSbExtbGtMQ0J5WlhOdmJIWmxaRTkxZEhCMWRITXBPMXh1SUNBZ0lDQWdkR2hwY3k1eWIzVjBaVTkxZEdkdmFXNW5SV1JuWlhNb1puSmhiV1VzSUhCc1lXNHNJSEJzWVc1T2IyUmxMQ0J5WlhOdmJIWmxaRTkxZEhCMWRITXBPMXh1WEc0Z0lDQWdJQ0JqYjI1emRDQm1hVzVwYzJobFpFRjBJRDBnYm1WM0lFUmhkR1VvS1R0Y2JpQWdJQ0FnSUdOdmJuTjBJSEpsYzNWc2REb2dSM0poY0doT2IyUmxSWGhsWTNWMGFXOXVVbVZ6ZFd4MElEMGdlMXh1SUNBZ0lDQWdJQ0J1YjJSbFNXUTZJSEJzWVc1T2IyUmxMbWxrTEZ4dUlDQWdJQ0FnSUNCemRHRjBkWE02SUVkeVlYQm9SWGhsWTNWMGFXOXVVM1JoZEhWekxsTlZRME5GUlVSRlJDeGNiaUFnSUNBZ0lDQWdhVzV3ZFhSekxGeHVJQ0FnSUNBZ0lDQnZkWFJ3ZFhSek9pQnlaWE52YkhabFpFOTFkSEIxZEhNc1hHNGdJQ0FnSUNBZ0lITjBZWEowWldSQmRDeGNiaUFnSUNBZ0lDQWdabWx1YVhOb1pXUkJkQ3hjYmlBZ0lDQWdJQ0FnWlhabGJuUnpPaUJiWFN4Y2JpQWdJQ0FnSUgwN1hHNGdJQ0FnSUNCbWNtRnRaUzV5WldOdmNtUk9iMlJsVW1WemRXeDBLSEpsYzNWc2RDazdYRzVjYmlBZ0lDQWdJR0YzWVdsMElIUm9hWE11WlcxcGRFVjJaVzUwS0daeVlXMWxMQ0I3WEc0Z0lDQWdJQ0FnSUhSNWNHVTZJRWR5WVhCb1JYaGxZM1YwYVc5dVJYWmxiblJVZVhCbExrNVBSRVZmUTA5TlVFeEZWRVZFTEZ4dUlDQWdJQ0FnSUNCeWRXNUpaRG9nWm5KaGJXVXVjblZ1U1dRc1hHNGdJQ0FnSUNBZ0lIZHZjbXRtYkc5M1NXUTZJSEJzWVc0dWQyOXlhMlpzYjNkSlpDeGNiaUFnSUNBZ0lDQWdibTlrWlVsa09pQndiR0Z1VG05a1pTNXBaQ3hjYmlBZ0lDQWdJQ0FnY0dGMGFEb2dibTlrWlZCaGRHZ3NYRzRnSUNBZ0lDQWdJSE4wWVhSMWN6b2dSM0poY0doRmVHVmpkWFJwYjI1VGRHRjBkWE11VTFWRFEwVkZSRVZFTEZ4dUlDQWdJQ0FnSUNCd1lYbHNiMkZrT2lCN0lHOTFkSEIxZEhNNklISmxjMjlzZG1Wa1QzVjBjSFYwY3lCOUxGeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZTQmpZWFJqYUNBb1pYSnliM0lwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR1pwYm1semFHVmtRWFFnUFNCdVpYY2dSR0YwWlNncE8xeHVJQ0FnSUNBZ1kyOXVjM1FnWlhKeWIzSlFZWGxzYjJGa0lEMGdkR2hwY3k1MGIwVnljbTl5VUdGNWJHOWhaQ2hsY25KdmNpazdYRzRnSUNBZ0lDQmpiMjV6ZENCeVpYTjFiSFE2SUVkeVlYQm9UbTlrWlVWNFpXTjFkR2x2YmxKbGMzVnNkQ0E5SUh0Y2JpQWdJQ0FnSUNBZ2JtOWtaVWxrT2lCd2JHRnVUbTlrWlM1cFpDeGNiaUFnSUNBZ0lDQWdjM1JoZEhWek9pQkhjbUZ3YUVWNFpXTjFkR2x2YmxOMFlYUjFjeTVHUVVsTVJVUXNYRzRnSUNBZ0lDQWdJR2x1Y0hWMGN5eGNiaUFnSUNBZ0lDQWdaWEp5YjNJNklHVnljbTl5VUdGNWJHOWhaQ3hjYmlBZ0lDQWdJQ0FnYzNSaGNuUmxaRUYwTEZ4dUlDQWdJQ0FnSUNCbWFXNXBjMmhsWkVGMExGeHVJQ0FnSUNBZ0lDQmxkbVZ1ZEhNNklGdGRMRnh1SUNBZ0lDQWdmVHRjYmlBZ0lDQWdJR1p5WVcxbExuSmxZMjl5WkU1dlpHVlNaWE4xYkhRb2NtVnpkV3gwS1R0Y2JseHVJQ0FnSUNBZ1lYZGhhWFFnZEdocGN5NWxiV2wwUlhabGJuUW9abkpoYldVc0lIdGNiaUFnSUNBZ0lDQWdkSGx3WlRvZ1IzSmhjR2hGZUdWamRYUnBiMjVGZG1WdWRGUjVjR1V1VGs5RVJWOUdRVWxNUlVRc1hHNGdJQ0FnSUNBZ0lISjFia2xrT2lCbWNtRnRaUzV5ZFc1SlpDeGNiaUFnSUNBZ0lDQWdkMjl5YTJac2IzZEpaRG9nY0d4aGJpNTNiM0pyWm14dmQwbGtMRnh1SUNBZ0lDQWdJQ0J1YjJSbFNXUTZJSEJzWVc1T2IyUmxMbWxrTEZ4dUlDQWdJQ0FnSUNCd1lYUm9PaUJ1YjJSbFVHRjBhQ3hjYmlBZ0lDQWdJQ0FnYzNSaGRIVnpPaUJIY21Gd2FFVjRaV04xZEdsdmJsTjBZWFIxY3k1R1FVbE1SVVFzWEc0Z0lDQWdJQ0FnSUdWeWNtOXlPaUJsY25KdmNsQmhlV3h2WVdRc1hHNGdJQ0FnSUNCOUtUdGNibHh1SUNBZ0lDQWdhV1lnS0c5d2RITXVabUZwYkVaaGMzUWdQejhnZEhKMVpTa2dkR2h5YjNjZ1pYSnliM0k3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGMyOXNkbVZ6SUdFZ2JtOWtaU2R6SUdsdWNIVjBJSFpoYkhWbGN5Qm1jbTl0SUdsdVkyOXRhVzVuSUdWa1oyVnpMbHh1SUNBZ0tseHVJQ0FnS2lCWGFHVnVJRzExYkhScGNHeGxJR1ZrWjJWeklIUmhjbWRsZENCMGFHVWdjMkZ0WlNCd2IzSjBMQ0IwYUdWcGNpQjJZV3gxWlhNZ1lYSmxJSE53Y21WaFpDQnBiblJ2SUhSb1pWeHVJQ0FnS2lCMGIzQXRiR1YyWld3Z2FXNXdkWFJ6SUd0bGVXVmtJR0o1SUdWaFkyZ2daV1JuWlNkeklHQnpiM1Z5WTJWUWIzSjBZQzRnVkdocGN5QmhiR3h2ZDNNZ2JYVnNkR2x3YkdWY2JpQWdJQ29nZDI5eWEyWnNiM2NnYVc1d2RYUWdZbUZrWjJWeklIUnZJR052Ym01bFkzUWdkRzhnWVNCemFXNW5iR1VnY0c5eWRDQW9aUzVuTGlCMGFHVWdRMjlrWlNCdWIyUmxKM05jYmlBZ0lDb2dZR1JoZEdGZ0lIQnZjblFwSUdGdVpDQm9ZWFpsSUdGc2JDQjJZV3gxWlhNZ1lXTmpaWE56YVdKc1pTQmthWEpsWTNSc2VTQmhjMXh1SUNBZ0tpQmdKR2x1Y0hWMExudHpiM1Z5WTJWUWIzSjBmV0FnS0dVdVp5NGdZQ1JwYm5CMWRDNWpiM1Z1ZEdBc0lHQWthVzV3ZFhRdWRHVjRkR0FwTGx4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCeVpYTnZiSFpsVG05a1pVbHVjSFYwY3loY2JpQWdJQ0JtY21GdFpUb2dSM0poY0doRmVHVmpkWFJwYjI1R2NtRnRaU3hjYmlBZ0lDQndiR0Z1T2lCSGNtRndhRVY0WldOMWRHbHZibEJzWVc0c1hHNGdJQ0FnY0d4aGJrNXZaR1U2SUVkeVlYQm9SWGhsWTNWMGFXOXVVR3hoYms1dlpHVmNiaUFnS1RvZ1IzSmhjR2hGZUdWamRYUnBiMjVXWVd4MVpYTWdlMXh1SUNBZ0lHTnZibk4wSUdsdWNIVjBjem9nUjNKaGNHaEZlR1ZqZFhScGIyNVdZV3gxWlhNZ1BTQjdmVHRjYmlBZ0lDQmpiMjV6ZENCcGJtTnZiV2x1WnlBOUlIQnNZVzR1YVc1amIyMXBibWRDZVU1dlpHVXVaMlYwS0hCc1lXNU9iMlJsTG1sa0tTQS9QeUJiWFR0Y2JseHVJQ0FnSUdOdmJuTjBJR1ZrWjJWelFubFVZWEpuWlhRZ1BTQnVaWGNnVFdGd1BITjBjbWx1Wnl3Z2RIbHdaVzltSUdsdVkyOXRhVzVuUGlncE8xeHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ1pXUm5aU0J2WmlCcGJtTnZiV2x1WnlrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYkdsemRDQTlJR1ZrWjJWelFubFVZWEpuWlhRdVoyVjBLR1ZrWjJVdWRHRnlaMlYwVUc5eWRDa2dQejhnVzEwN1hHNGdJQ0FnSUNCc2FYTjBMbkIxYzJnb1pXUm5aU2s3WEc0Z0lDQWdJQ0JsWkdkbGMwSjVWR0Z5WjJWMExuTmxkQ2hsWkdkbExuUmhjbWRsZEZCdmNuUXNJR3hwYzNRcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ1czUmhjbWRsZEZCdmNuUXNJR1ZrWjJWelhTQnZaaUJsWkdkbGMwSjVWR0Z5WjJWMEtTQjdYRzRnSUNBZ0lDQnBaaUFvWldSblpYTXViR1Z1WjNSb0lEMDlQU0F4S1NCN1hHNGdJQ0FnSUNBZ0lHbHVjSFYwYzF0MFlYSm5aWFJRYjNKMFhTQTlJR1p5WVcxbExuWmhiSFZsVTNSdmNtVXVaMlYwVUc5eWRDaGNiaUFnSUNBZ0lDQWdJQ0JsWkdkbGMxc3dYUzV6YjNWeVkyVk9iMlJsU1dRc1hHNGdJQ0FnSUNBZ0lDQWdaV1JuWlhOYk1GMHVjMjkxY21ObFVHOXlkRnh1SUNBZ0lDQWdJQ0FwTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnWm05eUlDaGpiMjV6ZENCbFpHZGxJRzltSUdWa1oyVnpLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2FXNXdkWFJ6VzJWa1oyVXVjMjkxY21ObFVHOXlkRjBnUFNCbWNtRnRaUzUyWVd4MVpWTjBiM0psTG1kbGRGQnZjblFvWEc0Z0lDQWdJQ0FnSUNBZ0lDQmxaR2RsTG5OdmRYSmpaVTV2WkdWSlpDeGNiaUFnSUNBZ0lDQWdJQ0FnSUdWa1oyVXVjMjkxY21ObFVHOXlkRnh1SUNBZ0lDQWdJQ0FnSUNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnYVc1d2RYUnpPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVGMGRHVnRjSFJ6SUhSdklISmxZV1FnWVNCd2FXNXVaV1FnZG1Gc2RXVWdabTl5SUhSb1pTQnViMlJsTGlCU1pYUjFjbTV6SUhSb1pTQmpZV05vWldRZ2IzVjBjSFYwYzF4dUlDQWdLaUIzYUdWdUlHRWdkbUZzYVdRZ2NHbHVibVZrSUhaaGJIVmxJR1Y0YVhOMGN5d2diM0lnWUhWdVpHVm1hVzVsWkdBZ2RHOGdjSEp2WTJWbFpDQjNhWFJvSUc1dmNtMWhiRnh1SUNBZ0tpQmxlR1ZqZFhScGIyNHVYRzRnSUNBcUwxeHVJQ0J3Y21sMllYUmxJR0Z6ZVc1aklIUnllVkJwYm01bFpGWmhiSFZsS0Z4dUlDQWdJR1p5WVcxbE9pQkhjbUZ3YUVWNFpXTjFkR2x2YmtaeVlXMWxMRnh1SUNBZ0lIQnNZVzQ2SUVkeVlYQm9SWGhsWTNWMGFXOXVVR3hoYml4Y2JpQWdJQ0J3YkdGdVRtOWtaVG9nUjNKaGNHaEZlR1ZqZFhScGIyNVFiR0Z1VG05a1pTeGNiaUFnSUNCcGJuQjFkSE02SUVkeVlYQm9SWGhsWTNWMGFXOXVWbUZzZFdWelhHNGdJQ2s2SUZCeWIyMXBjMlU4UjNKaGNHaERZV05vWldSV1lXeDFaU0I4SUhWdVpHVm1hVzVsWkQ0Z2UxeHVJQ0FnSUdOdmJuTjBJSEJ2YkdsamVTQTlJRzVsZHlCSGNtRndhRkJwYm01cGJtZFFiMnhwWTNrb0tUdGNiaUFnSUNCcFppQW9JWEJ2YkdsamVTNXphRzkxYkdSVmMyVlFhVzV1WldSV1lXeDFaU2h3YkdGdVRtOWtaU2twSUhKbGRIVnliaUIxYm1SbFptbHVaV1E3WEc1Y2JpQWdJQ0JqYjI1emRDQnpaWEoyYVdObElEMGdkR2hwY3k1amNtVmhkR1ZRYVc1dWFXNW5VMlZ5ZG1salpTZ3BPMXh1SUNBZ0lHTnZibk4wSUdSbGNFWnBibWRsY25CeWFXNTBjeUE5SUhSb2FYTXVZMjl0Y0hWMFpVUmxjR1Z1WkdWdVkzbEdhVzVuWlhKd2NtbHVkSE1vWm5KaGJXVXNJSEJzWVc0c0lIQnNZVzVPYjJSbExtbGtLVHRjYmlBZ0lDQnlaWFIxY200Z2MyVnlkbWxqWlM1eVpXRmtVR2x1Ym1Wa1ZtRnNkV1VvWEc0Z0lDQWdJQ0J3YkdGdUxuZHZjbXRtYkc5M0xGeHVJQ0FnSUNBZ2NHeGhiazV2WkdVc1hHNGdJQ0FnSUNCcGJuQjFkSE1zWEc0Z0lDQWdJQ0JrWlhCR2FXNW5aWEp3Y21sdWRITmNiaUFnSUNBcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsWTNWeWMybDJaV3g1SUdOdmJYQjFkR1Z6SUdacGJtZGxjbkJ5YVc1MGN5Qm1iM0lnWVd4c0lIVndjM1J5WldGdElHUmxjR1Z1WkdWdVkybGxjeUJ2WmlCaElHNXZaR1ZjYmlBZ0lDb2dkWE5wYm1jZ2RHaGxJSEpsYzNWc2RITWdZV3h5WldGa2VTQmhZMk4xYlhWc1lYUmxaQ0JwYmlCMGFHVWdabkpoYldVdVhHNGdJQ0FxTDF4dUlDQndjbWwyWVhSbElHTnZiWEIxZEdWRVpYQmxibVJsYm1ONVJtbHVaMlZ5Y0hKcGJuUnpLRnh1SUNBZ0lHWnlZVzFsT2lCSGNtRndhRVY0WldOMWRHbHZia1p5WVcxbExGeHVJQ0FnSUhCc1lXNDZJRWR5WVhCb1JYaGxZM1YwYVc5dVVHeGhiaXhjYmlBZ0lDQnViMlJsU1dRNklITjBjbWx1WjF4dUlDQXBPaUJTWldOdmNtUThjM1J5YVc1bkxDQnpkSEpwYm1jK0lIdGNiaUFnSUNCamIyNXpkQ0J6WlhKMmFXTmxJRDBnZEdocGN5NWpjbVZoZEdWUWFXNXVhVzVuVTJWeWRtbGpaU2dwTzF4dUlDQWdJR052Ym5OMElHUmxjRkpsYzI5c2RtVnlJRDBnYm1WM0lFZHlZWEJvVUdsdWJtbHVaMFJsY0dWdVpHVnVZM2xTWlhOdmJIWmxjaWdwTzF4dUlDQWdJR052Ym5OMElHUmxjSE1nUFNCa1pYQlNaWE52YkhabGNpNW5aWFJFWlhCbGJtUmxibU5wWlhNb2NHeGhiaXdnYm05a1pVbGtLVHRjYmlBZ0lDQmpiMjV6ZENCbWFXNW5aWEp3Y21sdWRITTZJRkpsWTI5eVpEeHpkSEpwYm1jc0lITjBjbWx1Wno0Z1BTQjdmVHRjYmlBZ0lDQm1iM0lnS0dOdmJuTjBJR1JsY0NCdlppQmtaWEJ6S1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0J1YjJSbElEMGdjR3hoYmk1dWIyUmxjeTVtYVc1a0tDaHVLU0E5UGlCdUxtbGtJRDA5UFNCa1pYQXBPMXh1SUNBZ0lDQWdhV1lnS0c1dlpHVXBJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdaR1Z3VW1WemRXeDBJRDBnWm5KaGJXVXVibTlrWlZKbGMzVnNkSE11WjJWMEtHUmxjQ2s3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR2x1Y0hWMGN5QTlJR1JsY0ZKbGMzVnNkRDh1YVc1d2RYUnpJRDgvSUh0OU8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCdVpYTjBaV1JFWlhCeklEMGdkR2hwY3k1amIyMXdkWFJsUkdWd1pXNWtaVzVqZVVacGJtZGxjbkJ5YVc1MGN5aG1jbUZ0WlN3Z2NHeGhiaXdnWkdWd0tUdGNiaUFnSUNBZ0lDQWdabWx1WjJWeWNISnBiblJ6VzJSbGNGMGdQU0J6WlhKMmFXTmxMbU52YlhCMWRHVkdhVzVuWlhKd2NtbHVkQ2hjYmlBZ0lDQWdJQ0FnSUNCd2JHRnVMbmR2Y210bWJHOTNMRnh1SUNBZ0lDQWdJQ0FnSUc1dlpHVXNYRzRnSUNBZ0lDQWdJQ0FnYVc1d2RYUnpMRnh1SUNBZ0lDQWdJQ0FnSUc1bGMzUmxaRVJsY0hOY2JpQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJR1pwYm1kbGNuQnlhVzUwY3p0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNiM1YwWlhNZ1lTQnViMlJsSjNNZ2IzVjBjSFYwY3lCMGJ5QmtiM2R1YzNSeVpXRnRJR2x1Y0hWMGN5QmhibVFnZDI5eWEyWnNiM2NnYjNWMGNIVjBjeTVjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnY205MWRHVlBkWFJuYjJsdVowVmtaMlZ6S0Z4dUlDQWdJR1p5WVcxbE9pQkhjbUZ3YUVWNFpXTjFkR2x2YmtaeVlXMWxMRnh1SUNBZ0lIQnNZVzQ2SUVkeVlYQm9SWGhsWTNWMGFXOXVVR3hoYml4Y2JpQWdJQ0J3YkdGdVRtOWtaVG9nUjNKaGNHaEZlR1ZqZFhScGIyNVFiR0Z1VG05a1pTeGNiaUFnSUNCdmRYUndkWFJ6T2lCSGNtRndhRVY0WldOMWRHbHZibFpoYkhWbGMxeHVJQ0FwT2lCMmIybGtJSHRjYmlBZ0lDQmpiMjV6ZENCdmRYUm5iMmx1WnlBOUlIQnNZVzR1YjNWMFoyOXBibWRDZVU1dlpHVXVaMlYwS0hCc1lXNU9iMlJsTG1sa0tTQS9QeUJiWFR0Y2JpQWdJQ0JtYjNJZ0tHTnZibk4wSUdWa1oyVWdiMllnYjNWMFoyOXBibWNwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJSFpoYkhWbElEMGdiM1YwY0hWMGMxdGxaR2RsTG5OdmRYSmpaVkJ2Y25SZE8xeHVJQ0FnSUNBZ2FXWWdLR1ZrWjJVdWRHRnlaMlYwVG05a1pVbGtJRDA5UFNCSFVrRlFTRjlYVDFKTFJreFBWMTlDVDFWT1JFRlNXU2tnZTF4dUlDQWdJQ0FnSUNCbWNtRnRaUzUyWVd4MVpWTjBiM0psTG5ObGRGZHZjbXRtYkc5M1QzVjBjSFYwS0dWa1oyVXVkR0Z5WjJWMFVHOXlkQ3dnZG1Gc2RXVXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdkR2hwY3k1bGJXbDBSWFpsYm5Rb1puSmhiV1VzSUh0Y2JpQWdJQ0FnSUNBZ2RIbHdaVG9nUjNKaGNHaEZlR1ZqZFhScGIyNUZkbVZ1ZEZSNWNHVXVSVVJIUlY5V1FVeFZSVjlTVDFWVVJVUXNYRzRnSUNBZ0lDQWdJSEoxYmtsa09pQm1jbUZ0WlM1eWRXNUpaQ3hjYmlBZ0lDQWdJQ0FnZDI5eWEyWnNiM2RKWkRvZ2NHeGhiaTUzYjNKclpteHZkMGxrTEZ4dUlDQWdJQ0FnSUNCbFpHZGxTV1E2SUdWa1oyVXVhV1FzWEc0Z0lDQWdJQ0FnSUc1dlpHVkpaRG9nY0d4aGJrNXZaR1V1YVdRc1hHNGdJQ0FnSUNBZ0lIQmhkR2c2SUZ0ZExGeHVJQ0FnSUNBZ0lDQndZWGxzYjJGa09pQjdJR1ZrWjJVc0lIWmhiSFZsSUgwc1hHNGdJQ0FnSUNCOUtTNWpZWFJqYUNnb0tTQTlQaUI3WEc0Z0lDQWdJQ0FnSUM4dklHOWljMlZ5ZG1WeUlHWmhhV3gxY21WeklHMTFjM1FnYm05MElHTnlZWE5vWEc0Z0lDQWdJQ0I5S1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1JXMXBkSE1nWVc0Z1pYWmxiblFzSUhKbFkyOXlaSE1nYVhRZ2FXNGdkR2hsSUdaeVlXMWxMQ0JoYm1RZ1pHbHpjR0YwWTJobGN5QjBieUJ2WW5ObGNuWmxjbk11WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUdGemVXNWpJR1Z0YVhSRmRtVnVkQ2hjYmlBZ0lDQm1jbUZ0WlRvZ1IzSmhjR2hGZUdWamRYUnBiMjVHY21GdFpTeGNiaUFnSUNCd1lYSjBhV0ZzT2lCUVlYSjBhV0ZzUEVkeVlYQm9SWGhsWTNWMGFXOXVSWFpsYm5RK0lDWWdlMXh1SUNBZ0lDQWdkSGx3WlRvZ1IzSmhjR2hGZUdWamRYUnBiMjVGZG1WdWRGUjVjR1U3WEc0Z0lDQWdJQ0J5ZFc1SlpEb2dSM0poY0doU2RXNUpaRHRjYmlBZ0lDQWdJSGR2Y210bWJHOTNTV1E2SUhOMGNtbHVaenRjYmlBZ0lDQWdJSEJoZEdnNklITjBjbWx1WjF0ZE8xeHVJQ0FnSUgxY2JpQWdLVG9nVUhKdmJXbHpaVHgyYjJsa1BpQjdYRzRnSUNBZ1kyOXVjM1FnWlhabGJuUWdQU0JtY21GdFpTNWxkbVZ1ZEVaaFkzUnZjbmt1WTNKbFlYUmxLSHRjYmlBZ0lDQWdJR2xrT2lCY0lsd2lMRnh1SUNBZ0lDQWdjMlZ4ZFdWdVkyVTZJREFzWEc0Z0lDQWdJQ0IwYVcxbGMzUmhiWEE2SUc1bGR5QkVZWFJsS0Nrc1hHNGdJQ0FnSUNBdUxpNXdZWEowYVdGc0xGeHVJQ0FnSUgwZ1lYTWdUMjFwZER4SGNtRndhRVY0WldOMWRHbHZia1YyWlc1MExDQmNJbWxrWENJZ2ZDQmNJbk5sY1hWbGJtTmxYQ0lnZkNCY0luUnBiV1Z6ZEdGdGNGd2lQaWs3WEc0Z0lDQWdabkpoYldVdVlYQndaVzVrUlhabGJuUW9aWFpsYm5RcE8xeHVJQ0FnSUdGM1lXbDBJSFJvYVhNdVpXMXBkSFJsY2k1MWNHUmhkR1ZQWW5ObGNuWmxjbk1vWlhabGJuUXBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUUxbGNtZGxjeUJrWldaaGRXeDBJRzl3ZEdsdmJuTWdkMmwwYUNCMGFHVWdaMmwyWlc0Z2IzQjBhVzl1Y3k1Y2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ2JXVnlaMlZQY0hScGIyNXpLRnh1SUNBZ0lHOXdkR2x2Ym5NNklFZHlZWEJvUlhobFkzVjBhVzl1VDNCMGFXOXVjMXh1SUNBcE9pQkhjbUZ3YUVWNFpXTjFkR2x2Yms5d2RHbHZibk1nZTF4dUlDQWdJSEpsZEhWeWJpQjdYRzRnSUNBZ0lDQmpiMjVqZFhKeVpXNWplVG9nUjFKQlVFaGZSRVZHUVZWTVZGOURUMDVEVlZKU1JVNURXU3hjYmlBZ0lDQWdJR1poYVd4R1lYTjBPaUIwY25WbExGeHVJQ0FnSUNBZ2RtRnNhV1JoZEdWSmJuQjFkSE02SUhSeWRXVXNYRzRnSUNBZ0lDQjJZV3hwWkdGMFpVOTFkSEIxZEhNNklIUnlkV1VzWEc0Z0lDQWdJQ0IxYzJWUWFXNXVaV1JXWVd4MVpYTTZJSFJ5ZFdVc1hHNGdJQ0FnSUNCM2NtbDBaVlJvY205MVoyaERZV05vWlRvZ1ptRnNjMlVzWEc0Z0lDQWdJQ0J3WVhSb09pQmJYU3hjYmlBZ0lDQWdJRzFsZEdGa1lYUmhPaUI3ZlN4Y2JpQWdJQ0FnSUM0dUxuUm9hWE11WkdWbVlYVnNkRTl3ZEdsdmJuTXNYRzRnSUNBZ0lDQXVMaTV2Y0hScGIyNXpMRnh1SUNBZ0lIMDdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUjJWdVpYSmhkR1Z6SUdFZ2RXNXBjWFZsSUhKMWJpQnBaQzVjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWjJWdVpYSmhkR1ZTZFc1SlpDZ3BPaUJ6ZEhKcGJtY2dlMXh1SUNBZ0lISmxkSFZ5YmlBb1hHNGdJQ0FnSUNCbmJHOWlZV3hVYUdsekxtTnllWEIwYno4dWNtRnVaRzl0VlZWSlJEOHVLQ2tnUHo5Y2JpQWdJQ0FnSUdCbmNtRndhQzF5ZFc0dEpIdEVZWFJsTG01dmR5Z3BmUzBrZTAxaGRHZ3VjbUZ1Wkc5dEtDa3VkRzlUZEhKcGJtY29NellwTG5Oc2FXTmxLRElwZldCY2JpQWdJQ0FwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFTnZiblpsY25SeklHRnVJR1Z5Y205eUlHbHVkRzhnWVNCelpYSnBZV3hwZW1Wa0lIQmhlV3h2WVdRdVhHNGdJQ0FxTDF4dUlDQndjbWwyWVhSbElIUnZSWEp5YjNKUVlYbHNiMkZrS0dWeWNtOXlPaUIxYm10dWIzZHVLVG9nUjNKaGNHaEZlR1ZqZFhScGIyNUZjbkp2Y2xCaGVXeHZZV1FnZTF4dUlDQWdJR2xtSUNobGNuSnZjaUJwYm5OMFlXNWpaVzltSUVWeWNtOXlLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdlMXh1SUNBZ0lDQWdJQ0J1WVcxbE9pQmxjbkp2Y2k1dVlXMWxMRnh1SUNBZ0lDQWdJQ0J0WlhOellXZGxPaUJsY25KdmNpNXRaWE56WVdkbExGeHVJQ0FnSUNBZ0lDQnpkR0ZqYXpvZ1pYSnliM0l1YzNSaFkyc3NYRzRnSUNBZ0lDQWdJR052WkdVNlhHNGdJQ0FnSUNBZ0lDQWdLR1Z5Y205eUlHRnpJR0Z1ZVNrdVozSmhjR2hEYjJSbElEOC9YRzRnSUNBZ0lDQWdJQ0FnS0hSNWNHVnZaaUFvWlhKeWIzSWdZWE1nWVc1NUtTNWpiMlJsSUQwOVBTQmNJbTUxYldKbGNsd2lYRzRnSUNBZ0lDQWdJQ0FnSUNBL0lGTjBjbWx1Wnlnb1pYSnliM0lnWVhNZ1lXNTVLUzVqYjJSbEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnT2lBb1pYSnliM0lnWVhNZ1lXNTVLUzVqYjJSbEtTeGNiaUFnSUNBZ0lIMDdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUI3SUc1aGJXVTZJRndpVlc1cmJtOTNia1Z5Y205eVhDSXNJRzFsYzNOaFoyVTZJRk4wY21sdVp5aGxjbkp2Y2lrZ2ZUdGNiaUFnZlZ4dWZWeHVJbDE5Il19
|
|
@@ -28,5 +28,5 @@ class GraphExecutionFrame {
|
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
exports.GraphExecutionFrame = GraphExecutionFrame;
|
|
31
|
-
//# sourceMappingURL=
|
|
32
|
-
//# sourceMappingURL=
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRpb25GcmFtZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9ncmFwaC9lbmdpbmUvZXhlY3V0aW9uL0dyYXBoRXhlY3V0aW9uRnJhbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBY0E7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBVzlCLFlBQ0UsS0FBaUIsRUFDakIsSUFBd0IsRUFDeEIsVUFBMkIsRUFDM0IsWUFBd0M7UUFUakMsZ0JBQVcsR0FBMEMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUMvRCxXQUFNLEdBQTBCLEVBQUUsQ0FBQztRQVUxQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELHVDQUF1QztJQUN2QyxnQkFBZ0IsQ0FBQyxNQUFnQztRQUMvQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCwrQ0FBK0M7SUFDL0MsV0FBVyxDQUFDLEtBQTBCO1FBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxpQ0FBaUM7SUFDakMsTUFBTTtRQUNKLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL2V4ZWN1dGlvbi9HcmFwaEV4ZWN1dGlvbkZyYW1lXG4gKiBAc3VtbWFyeSBQZXItcnVuIHN0YXRlIGNvbnRhaW5lciBmb3IgZ3JhcGggZXhlY3V0aW9uLlxuICogQGRlc2NyaXB0aW9uIEhvbGRzIHRoZSBydW4gaWQsIGV4ZWN1dGlvbiBwbGFuLCB2YWx1ZSBzdG9yZSwgYWNjdW11bGF0ZWQgbm9kZSByZXN1bHRzLCBldmVudHMsIGFuZCB0aW1pbmcgZm9yIGEgc2luZ2xlIHdvcmtmbG93IGV4ZWN1dGlvbi5cbiAqL1xuaW1wb3J0IHR5cGUgeyBHcmFwaEV4ZWN1dGlvblBsYW4gfSBmcm9tIFwiLi4vcGxhbm5pbmcvR3JhcGhFeGVjdXRpb25QbGFuXCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoVmFsdWVTdG9yZSB9IGZyb20gXCIuLi9zdG9yZS9HcmFwaFZhbHVlU3RvcmVcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhFeGVjdXRpb25FdmVudEZhY3RvcnkgfSBmcm9tIFwiLi4vZXZlbnRzL0dyYXBoRXhlY3V0aW9uRXZlbnRGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7XG4gIEdyYXBoRXhlY3V0aW9uRXZlbnQsXG4gIEdyYXBoTm9kZUV4ZWN1dGlvblJlc3VsdCxcbiAgR3JhcGhSdW5JZCxcbn0gZnJvbSBcIi4uL3R5cGVzXCI7XG5cbi8qKlxuICogTXV0YWJsZSBzdGF0ZSBmb3IgYSBzaW5nbGUgZ3JhcGggZXhlY3V0aW9uIHJ1bi5cbiAqL1xuZXhwb3J0IGNsYXNzIEdyYXBoRXhlY3V0aW9uRnJhbWUge1xuICByZWFkb25seSBydW5JZDogR3JhcGhSdW5JZDtcbiAgcmVhZG9ubHkgcGxhbjogR3JhcGhFeGVjdXRpb25QbGFuO1xuICByZWFkb25seSB2YWx1ZVN0b3JlOiBHcmFwaFZhbHVlU3RvcmU7XG4gIHJlYWRvbmx5IGV2ZW50RmFjdG9yeTogR3JhcGhFeGVjdXRpb25FdmVudEZhY3Rvcnk7XG4gIHJlYWRvbmx5IHN0YXJ0ZWRBdDogRGF0ZTtcbiAgcmVhZG9ubHkgbm9kZVJlc3VsdHM6IE1hcDxzdHJpbmcsIEdyYXBoTm9kZUV4ZWN1dGlvblJlc3VsdD4gPSBuZXcgTWFwKCk7XG4gIHJlYWRvbmx5IGV2ZW50czogR3JhcGhFeGVjdXRpb25FdmVudFtdID0gW107XG5cbiAgZmluaXNoZWRBdD86IERhdGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcnVuSWQ6IEdyYXBoUnVuSWQsXG4gICAgcGxhbjogR3JhcGhFeGVjdXRpb25QbGFuLFxuICAgIHZhbHVlU3RvcmU6IEdyYXBoVmFsdWVTdG9yZSxcbiAgICBldmVudEZhY3Rvcnk6IEdyYXBoRXhlY3V0aW9uRXZlbnRGYWN0b3J5XG4gICkge1xuICAgIHRoaXMucnVuSWQgPSBydW5JZDtcbiAgICB0aGlzLnBsYW4gPSBwbGFuO1xuICAgIHRoaXMudmFsdWVTdG9yZSA9IHZhbHVlU3RvcmU7XG4gICAgdGhpcy5ldmVudEZhY3RvcnkgPSBldmVudEZhY3Rvcnk7XG4gICAgdGhpcy5zdGFydGVkQXQgPSBuZXcgRGF0ZSgpO1xuICB9XG5cbiAgLyoqIFJlY29yZHMgYSBub2RlIGV4ZWN1dGlvbiByZXN1bHQuICovXG4gIHJlY29yZE5vZGVSZXN1bHQocmVzdWx0OiBHcmFwaE5vZGVFeGVjdXRpb25SZXN1bHQpOiB2b2lkIHtcbiAgICB0aGlzLm5vZGVSZXN1bHRzLnNldChyZXN1bHQubm9kZUlkLCByZXN1bHQpO1xuICB9XG5cbiAgLyoqIEFwcGVuZHMgYW4gZXZlbnQgdG8gdGhlIHJ1bidzIGV2ZW50IGxvZy4gKi9cbiAgYXBwZW5kRXZlbnQoZXZlbnQ6IEdyYXBoRXhlY3V0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50cy5wdXNoKGV2ZW50KTtcbiAgfVxuXG4gIC8qKiBNYXJrcyB0aGUgcnVuIGFzIGZpbmlzaGVkLiAqL1xuICBmaW5pc2goKTogdm9pZCB7XG4gICAgdGhpcy5maW5pc2hlZEF0ID0gbmV3IERhdGUoKTtcbiAgfVxufVxuIl19
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRpb25GcmFtZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkdyYXBoRXhlY3V0aW9uRnJhbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxNQUFhLG1CQUFtQjtJQUM1QixZQUFZLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFlBQVk7UUFDN0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsdUNBQXVDO0lBQ3ZDLGdCQUFnQixDQUFDLE1BQU07UUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsK0NBQStDO0lBQy9DLFdBQVcsQ0FBQyxLQUFLO1FBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUNELGlDQUFpQztJQUNqQyxNQUFNO1FBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ2pDLENBQUM7Q0FDSjtBQXRCRCxrREFzQkM7QUFDRCw4OEdBQTg4RyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTXV0YWJsZSBzdGF0ZSBmb3IgYSBzaW5nbGUgZ3JhcGggZXhlY3V0aW9uIHJ1bi5cbiAqL1xuZXhwb3J0IGNsYXNzIEdyYXBoRXhlY3V0aW9uRnJhbWUge1xuICAgIGNvbnN0cnVjdG9yKHJ1bklkLCBwbGFuLCB2YWx1ZVN0b3JlLCBldmVudEZhY3RvcnkpIHtcbiAgICAgICAgdGhpcy5ub2RlUmVzdWx0cyA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5ldmVudHMgPSBbXTtcbiAgICAgICAgdGhpcy5ydW5JZCA9IHJ1bklkO1xuICAgICAgICB0aGlzLnBsYW4gPSBwbGFuO1xuICAgICAgICB0aGlzLnZhbHVlU3RvcmUgPSB2YWx1ZVN0b3JlO1xuICAgICAgICB0aGlzLmV2ZW50RmFjdG9yeSA9IGV2ZW50RmFjdG9yeTtcbiAgICAgICAgdGhpcy5zdGFydGVkQXQgPSBuZXcgRGF0ZSgpO1xuICAgIH1cbiAgICAvKiogUmVjb3JkcyBhIG5vZGUgZXhlY3V0aW9uIHJlc3VsdC4gKi9cbiAgICByZWNvcmROb2RlUmVzdWx0KHJlc3VsdCkge1xuICAgICAgICB0aGlzLm5vZGVSZXN1bHRzLnNldChyZXN1bHQubm9kZUlkLCByZXN1bHQpO1xuICAgIH1cbiAgICAvKiogQXBwZW5kcyBhbiBldmVudCB0byB0aGUgcnVuJ3MgZXZlbnQgbG9nLiAqL1xuICAgIGFwcGVuZEV2ZW50KGV2ZW50KSB7XG4gICAgICAgIHRoaXMuZXZlbnRzLnB1c2goZXZlbnQpO1xuICAgIH1cbiAgICAvKiogTWFya3MgdGhlIHJ1biBhcyBmaW5pc2hlZC4gKi9cbiAgICBmaW5pc2goKSB7XG4gICAgICAgIHRoaXMuZmluaXNoZWRBdCA9IG5ldyBEYXRlKCk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pUjNKaGNHaEZlR1ZqZFhScGIyNUdjbUZ0WlM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1THk0dUwzTnlZeTluY21Gd2FDOWxibWRwYm1VdlpYaGxZM1YwYVc5dUwwZHlZWEJvUlhobFkzVjBhVzl1Um5KaGJXVXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCWTBFN08wZEJSVWM3UVVGRFNDeE5RVUZOTEU5QlFVOHNiVUpCUVcxQ08wbEJWemxDTEZsQlEwVXNTMEZCYVVJc1JVRkRha0lzU1VGQmQwSXNSVUZEZUVJc1ZVRkJNa0lzUlVGRE0wSXNXVUZCZDBNN1VVRlVha01zWjBKQlFWY3NSMEZCTUVNc1NVRkJTU3hIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU12UkN4WFFVRk5MRWRCUVRCQ0xFVkJRVVVzUTBGQlF6dFJRVlV4UXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhIUVVGSExFdEJRVXNzUTBGQlF6dFJRVU51UWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVU5xUWl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExGVkJRVlVzUTBGQlF6dFJRVU0zUWl4SlFVRkpMRU5CUVVNc1dVRkJXU3hIUVVGSExGbEJRVmtzUTBGQlF6dFJRVU5xUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhIUVVGSExFbEJRVWtzU1VGQlNTeEZRVUZGTEVOQlFVTTdTVUZET1VJc1EwRkJRenRKUVVWRUxIVkRRVUYxUXp0SlFVTjJReXhuUWtGQlowSXNRMEZCUXl4TlFVRm5RenRSUVVNdlF5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRPMGxCUXpsRExFTkJRVU03U1VGRlJDd3JRMEZCSzBNN1NVRkRMME1zVjBGQlZ5eERRVUZETEV0QlFUQkNPMUZCUTNCRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wbEJRekZDTEVOQlFVTTdTVUZGUkN4cFEwRkJhVU03U1VGRGFrTXNUVUZCVFR0UlFVTktMRWxCUVVrc1EwRkJReXhWUVVGVkxFZEJRVWNzU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXp0SlFVTXZRaXhEUVVGRE8wTkJRMFlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVCdGIyUjFiR1VnYVc1MFpXZHlZWFJwYjI1ekwyZHlZWEJvTDJWNFpXTjFkR2x2Ymk5SGNtRndhRVY0WldOMWRHbHZia1p5WVcxbFhHNGdLaUJBYzNWdGJXRnllU0JRWlhJdGNuVnVJSE4wWVhSbElHTnZiblJoYVc1bGNpQm1iM0lnWjNKaGNHZ2daWGhsWTNWMGFXOXVMbHh1SUNvZ1FHUmxjMk55YVhCMGFXOXVJRWh2YkdSeklIUm9aU0J5ZFc0Z2FXUXNJR1Y0WldOMWRHbHZiaUJ3YkdGdUxDQjJZV3gxWlNCemRHOXlaU3dnWVdOamRXMTFiR0YwWldRZ2JtOWtaU0J5WlhOMWJIUnpMQ0JsZG1WdWRITXNJR0Z1WkNCMGFXMXBibWNnWm05eUlHRWdjMmx1WjJ4bElIZHZjbXRtYkc5M0lHVjRaV04xZEdsdmJpNWNiaUFxTDF4dWFXMXdiM0owSUhSNWNHVWdleUJIY21Gd2FFVjRaV04xZEdsdmJsQnNZVzRnZlNCbWNtOXRJRndpTGk0dmNHeGhibTVwYm1jdlIzSmhjR2hGZUdWamRYUnBiMjVRYkdGdVhDSTdYRzVwYlhCdmNuUWdkSGx3WlNCN0lFZHlZWEJvVm1Gc2RXVlRkRzl5WlNCOUlHWnliMjBnWENJdUxpOXpkRzl5WlM5SGNtRndhRlpoYkhWbFUzUnZjbVZjSWp0Y2JtbHRjRzl5ZENCMGVYQmxJSHNnUjNKaGNHaEZlR1ZqZFhScGIyNUZkbVZ1ZEVaaFkzUnZjbmtnZlNCbWNtOXRJRndpTGk0dlpYWmxiblJ6TDBkeVlYQm9SWGhsWTNWMGFXOXVSWFpsYm5SR1lXTjBiM0o1WENJN1hHNXBiWEJ2Y25RZ2RIbHdaU0I3WEc0Z0lFZHlZWEJvUlhobFkzVjBhVzl1UlhabGJuUXNYRzRnSUVkeVlYQm9UbTlrWlVWNFpXTjFkR2x2YmxKbGMzVnNkQ3hjYmlBZ1IzSmhjR2hTZFc1SlpDeGNibjBnWm5KdmJTQmNJaTR1TDNSNWNHVnpYQ0k3WEc1Y2JpOHFLbHh1SUNvZ1RYVjBZV0pzWlNCemRHRjBaU0JtYjNJZ1lTQnphVzVuYkdVZ1ozSmhjR2dnWlhobFkzVjBhVzl1SUhKMWJpNWNiaUFxTDF4dVpYaHdiM0owSUdOc1lYTnpJRWR5WVhCb1JYaGxZM1YwYVc5dVJuSmhiV1VnZTF4dUlDQnlaV0ZrYjI1c2VTQnlkVzVKWkRvZ1IzSmhjR2hTZFc1SlpEdGNiaUFnY21WaFpHOXViSGtnY0d4aGJqb2dSM0poY0doRmVHVmpkWFJwYjI1UWJHRnVPMXh1SUNCeVpXRmtiMjVzZVNCMllXeDFaVk4wYjNKbE9pQkhjbUZ3YUZaaGJIVmxVM1J2Y21VN1hHNGdJSEpsWVdSdmJteDVJR1YyWlc1MFJtRmpkRzl5ZVRvZ1IzSmhjR2hGZUdWamRYUnBiMjVGZG1WdWRFWmhZM1J2Y25rN1hHNGdJSEpsWVdSdmJteDVJSE4wWVhKMFpXUkJkRG9nUkdGMFpUdGNiaUFnY21WaFpHOXViSGtnYm05a1pWSmxjM1ZzZEhNNklFMWhjRHh6ZEhKcGJtY3NJRWR5WVhCb1RtOWtaVVY0WldOMWRHbHZibEpsYzNWc2RENGdQU0J1WlhjZ1RXRndLQ2s3WEc0Z0lISmxZV1J2Ym14NUlHVjJaVzUwY3pvZ1IzSmhjR2hGZUdWamRYUnBiMjVGZG1WdWRGdGRJRDBnVzEwN1hHNWNiaUFnWm1sdWFYTm9aV1JCZEQ4NklFUmhkR1U3WEc1Y2JpQWdZMjl1YzNSeWRXTjBiM0lvWEc0Z0lDQWdjblZ1U1dRNklFZHlZWEJvVW5WdVNXUXNYRzRnSUNBZ2NHeGhiam9nUjNKaGNHaEZlR1ZqZFhScGIyNVFiR0Z1TEZ4dUlDQWdJSFpoYkhWbFUzUnZjbVU2SUVkeVlYQm9WbUZzZFdWVGRHOXlaU3hjYmlBZ0lDQmxkbVZ1ZEVaaFkzUnZjbms2SUVkeVlYQm9SWGhsWTNWMGFXOXVSWFpsYm5SR1lXTjBiM0o1WEc0Z0lDa2dlMXh1SUNBZ0lIUm9hWE11Y25WdVNXUWdQU0J5ZFc1SlpEdGNiaUFnSUNCMGFHbHpMbkJzWVc0Z1BTQndiR0Z1TzF4dUlDQWdJSFJvYVhNdWRtRnNkV1ZUZEc5eVpTQTlJSFpoYkhWbFUzUnZjbVU3WEc0Z0lDQWdkR2hwY3k1bGRtVnVkRVpoWTNSdmNua2dQU0JsZG1WdWRFWmhZM1J2Y25rN1hHNGdJQ0FnZEdocGN5NXpkR0Z5ZEdWa1FYUWdQU0J1WlhjZ1JHRjBaU2dwTzF4dUlDQjlYRzVjYmlBZ0x5b3FJRkpsWTI5eVpITWdZU0J1YjJSbElHVjRaV04xZEdsdmJpQnlaWE4xYkhRdUlDb3ZYRzRnSUhKbFkyOXlaRTV2WkdWU1pYTjFiSFFvY21WemRXeDBPaUJIY21Gd2FFNXZaR1ZGZUdWamRYUnBiMjVTWlhOMWJIUXBPaUIyYjJsa0lIdGNiaUFnSUNCMGFHbHpMbTV2WkdWU1pYTjFiSFJ6TG5ObGRDaHlaWE4xYkhRdWJtOWtaVWxrTENCeVpYTjFiSFFwTzF4dUlDQjlYRzVjYmlBZ0x5b3FJRUZ3Y0dWdVpITWdZVzRnWlhabGJuUWdkRzhnZEdobElISjFiaWR6SUdWMlpXNTBJR3h2Wnk0Z0tpOWNiaUFnWVhCd1pXNWtSWFpsYm5Rb1pYWmxiblE2SUVkeVlYQm9SWGhsWTNWMGFXOXVSWFpsYm5RcE9pQjJiMmxrSUh0Y2JpQWdJQ0IwYUdsekxtVjJaVzUwY3k1d2RYTm9LR1YyWlc1MEtUdGNiaUFnZlZ4dVhHNGdJQzhxS2lCTllYSnJjeUIwYUdVZ2NuVnVJR0Z6SUdacGJtbHphR1ZrTGlBcUwxeHVJQ0JtYVc1cGMyZ29LVG9nZG05cFpDQjdYRzRnSUNBZ2RHaHBjeTVtYVc1cGMyaGxaRUYwSUQwZ2JtVjNJRVJoZEdVb0tUdGNiaUFnZlZ4dWZWeHVJbDE5Il19
|
|
@@ -26,5 +26,5 @@ function buildGraphExecutionResult(frame, workflow, inputs, status, metadata) {
|
|
|
26
26
|
metadata,
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
|
-
//# sourceMappingURL=
|
|
30
|
-
//# sourceMappingURL=
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRpb25SZXN1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JhcGgvZW5naW5lL2V4ZWN1dGlvbi9HcmFwaEV4ZWN1dGlvblJlc3VsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQTs7R0FFRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FDdkMsS0FBMEIsRUFDMUIsUUFBaUMsRUFDakMsTUFBNEIsRUFDNUIsTUFBNEIsRUFDNUIsUUFBa0M7SUFFbEMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ3JELE1BQU0sV0FBVyxHQUE2QyxFQUFFLENBQUM7SUFDakUsS0FBSyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM3QyxXQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzNCLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBMEIsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4RCxNQUFNLEtBQUssR0FBZSxLQUFLLENBQUMsS0FBSyxDQUFDO0lBRXRDLE9BQU87UUFDTCxLQUFLO1FBQ0wsVUFBVSxFQUFFLFFBQVEsQ0FBQyxJQUFJO1FBQ3pCLE1BQU07UUFDTixRQUFRO1FBQ1IsTUFBTSxFQUFFLEVBQUUsR0FBRyxNQUFNLEVBQUU7UUFDckIsT0FBTztRQUNQLFdBQVc7UUFDWCxNQUFNO1FBQ04sU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1FBQzFCLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtRQUM1QixRQUFRO0tBQ1QsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL2V4ZWN1dGlvbi9HcmFwaEV4ZWN1dGlvblJlc3VsdFxuICogQHN1bW1hcnkgSGVscGVyIGZvciBidWlsZGluZyBHcmFwaEV4ZWN1dGlvblJlc3VsdCBvYmplY3RzLlxuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIGEgYnVpbGRlciBmdW5jdGlvbiB0aGF0IGFzc2VtYmxlcyBhIHJlc3VsdCBmcm9tIGEgZnJhbWUuXG4gKi9cbmltcG9ydCB0eXBlIHsgR3JhcGhFeGVjdXRpb25GcmFtZSB9IGZyb20gXCIuL0dyYXBoRXhlY3V0aW9uRnJhbWVcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhFeGVjdXRpb25FdmVudCwgR3JhcGhFeGVjdXRpb25SZXN1bHQsIEdyYXBoRXhlY3V0aW9uVmFsdWVzLCBHcmFwaE5vZGVFeGVjdXRpb25SZXN1bHQsIEdyYXBoUnVuSWQgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhFeGVjdXRpb25TdGF0dXMgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL2NvbnN0YW50c1wiO1xuaW1wb3J0IHR5cGUgeyBHcmFwaFdvcmtmbG93RGVmaW5pdGlvbiB9IGZyb20gXCJAZGVjYWYtdHMvdWktZGVjb3JhdG9ycy9ncmFwaFwiO1xuXG4vKipcbiAqIEJ1aWxkcyBhIHtAbGluayBHcmFwaEV4ZWN1dGlvblJlc3VsdH0gZnJvbSBhIGNvbXBsZXRlZCBmcmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkR3JhcGhFeGVjdXRpb25SZXN1bHQoXG4gIGZyYW1lOiBHcmFwaEV4ZWN1dGlvbkZyYW1lLFxuICB3b3JrZmxvdzogR3JhcGhXb3JrZmxvd0RlZmluaXRpb24sXG4gIGlucHV0czogR3JhcGhFeGVjdXRpb25WYWx1ZXMsXG4gIHN0YXR1czogR3JhcGhFeGVjdXRpb25TdGF0dXMsXG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbik6IEdyYXBoRXhlY3V0aW9uUmVzdWx0IHtcbiAgY29uc3Qgb3V0cHV0cyA9IGZyYW1lLnZhbHVlU3RvcmUuZ2V0V29ya2Zsb3dWYWx1ZXMoKTtcbiAgY29uc3Qgbm9kZVJlc3VsdHM6IFJlY29yZDxzdHJpbmcsIEdyYXBoTm9kZUV4ZWN1dGlvblJlc3VsdD4gPSB7fTtcbiAgZm9yIChjb25zdCBbaWQsIHJlc3VsdF0gb2YgZnJhbWUubm9kZVJlc3VsdHMpIHtcbiAgICBub2RlUmVzdWx0c1tpZF0gPSByZXN1bHQ7XG4gIH1cbiAgY29uc3QgZXZlbnRzOiBHcmFwaEV4ZWN1dGlvbkV2ZW50W10gPSBbLi4uZnJhbWUuZXZlbnRzXTtcbiAgY29uc3QgcnVuSWQ6IEdyYXBoUnVuSWQgPSBmcmFtZS5ydW5JZDtcblxuICByZXR1cm4ge1xuICAgIHJ1bklkLFxuICAgIHdvcmtmbG93SWQ6IHdvcmtmbG93Lm5hbWUsXG4gICAgc3RhdHVzLFxuICAgIHdvcmtmbG93LFxuICAgIGlucHV0czogeyAuLi5pbnB1dHMgfSxcbiAgICBvdXRwdXRzLFxuICAgIG5vZGVSZXN1bHRzLFxuICAgIGV2ZW50cyxcbiAgICBzdGFydGVkQXQ6IGZyYW1lLnN0YXJ0ZWRBdCxcbiAgICBmaW5pc2hlZEF0OiBmcmFtZS5maW5pc2hlZEF0LFxuICAgIG1ldGFkYXRhLFxuICB9O1xufVxuIl19
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRpb25SZXN1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJHcmFwaEV4ZWN1dGlvblJlc3VsdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdBLDhEQXFCQztBQXhCRDs7R0FFRztBQUNILFNBQWdCLHlCQUF5QixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRO0lBQy9FLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUNyRCxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDdkIsS0FBSyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMzQyxXQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzdCLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDMUIsT0FBTztRQUNILEtBQUs7UUFDTCxVQUFVLEVBQUUsUUFBUSxDQUFDLElBQUk7UUFDekIsTUFBTTtRQUNOLFFBQVE7UUFDUixNQUFNLEVBQUUsRUFBRSxHQUFHLE1BQU0sRUFBRTtRQUNyQixPQUFPO1FBQ1AsV0FBVztRQUNYLE1BQU07UUFDTixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7UUFDMUIsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO1FBQzVCLFFBQVE7S0FDWCxDQUFDO0FBQ04sQ0FBQztBQUNELDBoR0FBMGhHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCdWlsZHMgYSB7QGxpbmsgR3JhcGhFeGVjdXRpb25SZXN1bHR9IGZyb20gYSBjb21wbGV0ZWQgZnJhbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEdyYXBoRXhlY3V0aW9uUmVzdWx0KGZyYW1lLCB3b3JrZmxvdywgaW5wdXRzLCBzdGF0dXMsIG1ldGFkYXRhKSB7XG4gICAgY29uc3Qgb3V0cHV0cyA9IGZyYW1lLnZhbHVlU3RvcmUuZ2V0V29ya2Zsb3dWYWx1ZXMoKTtcbiAgICBjb25zdCBub2RlUmVzdWx0cyA9IHt9O1xuICAgIGZvciAoY29uc3QgW2lkLCByZXN1bHRdIG9mIGZyYW1lLm5vZGVSZXN1bHRzKSB7XG4gICAgICAgIG5vZGVSZXN1bHRzW2lkXSA9IHJlc3VsdDtcbiAgICB9XG4gICAgY29uc3QgZXZlbnRzID0gWy4uLmZyYW1lLmV2ZW50c107XG4gICAgY29uc3QgcnVuSWQgPSBmcmFtZS5ydW5JZDtcbiAgICByZXR1cm4ge1xuICAgICAgICBydW5JZCxcbiAgICAgICAgd29ya2Zsb3dJZDogd29ya2Zsb3cubmFtZSxcbiAgICAgICAgc3RhdHVzLFxuICAgICAgICB3b3JrZmxvdyxcbiAgICAgICAgaW5wdXRzOiB7IC4uLmlucHV0cyB9LFxuICAgICAgICBvdXRwdXRzLFxuICAgICAgICBub2RlUmVzdWx0cyxcbiAgICAgICAgZXZlbnRzLFxuICAgICAgICBzdGFydGVkQXQ6IGZyYW1lLnN0YXJ0ZWRBdCxcbiAgICAgICAgZmluaXNoZWRBdDogZnJhbWUuZmluaXNoZWRBdCxcbiAgICAgICAgbWV0YWRhdGEsXG4gICAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVIzSmhjR2hGZUdWamRYUnBiMjVTWlhOMWJIUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTh1TGk4dUxpOHVMaTl6Y21NdlozSmhjR2d2Wlc1bmFXNWxMMlY0WldOMWRHbHZiaTlIY21Gd2FFVjRaV04xZEdsdmJsSmxjM1ZzZEM1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRlZRVHM3UjBGRlJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4NVFrRkJlVUlzUTBGRGRrTXNTMEZCTUVJc1JVRkRNVUlzVVVGQmFVTXNSVUZEYWtNc1RVRkJORUlzUlVGRE5VSXNUVUZCTkVJc1JVRkROVUlzVVVGQmEwTTdTVUZGYkVNc1RVRkJUU3hQUVVGUExFZEJRVWNzUzBGQlN5eERRVUZETEZWQlFWVXNRMEZCUXl4cFFrRkJhVUlzUlVGQlJTeERRVUZETzBsQlEzSkVMRTFCUVUwc1YwRkJWeXhIUVVFMlF5eEZRVUZGTEVOQlFVTTdTVUZEYWtVc1MwRkJTeXhOUVVGTkxFTkJRVU1zUlVGQlJTeEZRVUZGTEUxQlFVMHNRMEZCUXl4SlFVRkpMRXRCUVVzc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF6dFJRVU0zUXl4WFFVRlhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVFVGQlRTeERRVUZETzBsQlF6TkNMRU5CUVVNN1NVRkRSQ3hOUVVGTkxFMUJRVTBzUjBGQk1FSXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEpRVU40UkN4TlFVRk5MRXRCUVVzc1IwRkJaU3hMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETzBsQlJYUkRMRTlCUVU4N1VVRkRUQ3hMUVVGTE8xRkJRMHdzVlVGQlZTeEZRVUZGTEZGQlFWRXNRMEZCUXl4SlFVRkpPMUZCUTNwQ0xFMUJRVTA3VVVGRFRpeFJRVUZSTzFGQlExSXNUVUZCVFN4RlFVRkZMRVZCUVVVc1IwRkJSeXhOUVVGTkxFVkJRVVU3VVVGRGNrSXNUMEZCVHp0UlFVTlFMRmRCUVZjN1VVRkRXQ3hOUVVGTk8xRkJRMDRzVTBGQlV5eEZRVUZGTEV0QlFVc3NRMEZCUXl4VFFVRlRPMUZCUXpGQ0xGVkJRVlVzUlVGQlJTeExRVUZMTEVOQlFVTXNWVUZCVlR0UlFVTTFRaXhSUVVGUk8wdEJRMVFzUTBGQlF6dEJRVU5LTEVOQlFVTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRUJ0YjJSMWJHVWdhVzUwWldkeVlYUnBiMjV6TDJkeVlYQm9MMlY0WldOMWRHbHZiaTlIY21Gd2FFVjRaV04xZEdsdmJsSmxjM1ZzZEZ4dUlDb2dRSE4xYlcxaGNua2dTR1ZzY0dWeUlHWnZjaUJpZFdsc1pHbHVaeUJIY21Gd2FFVjRaV04xZEdsdmJsSmxjM1ZzZENCdlltcGxZM1J6TGx4dUlDb2dRR1JsYzJOeWFYQjBhVzl1SUZCeWIzWnBaR1Z6SUdFZ1luVnBiR1JsY2lCbWRXNWpkR2x2YmlCMGFHRjBJR0Z6YzJWdFlteGxjeUJoSUhKbGMzVnNkQ0JtY205dElHRWdabkpoYldVdVhHNGdLaTljYm1sdGNHOXlkQ0IwZVhCbElIc2dSM0poY0doRmVHVmpkWFJwYjI1R2NtRnRaU0I5SUdaeWIyMGdYQ0l1TDBkeVlYQm9SWGhsWTNWMGFXOXVSbkpoYldWY0lqdGNibWx0Y0c5eWRDQjBlWEJsSUhzZ1IzSmhjR2hGZUdWamRYUnBiMjVGZG1WdWRDd2dSM0poY0doRmVHVmpkWFJwYjI1U1pYTjFiSFFzSUVkeVlYQm9SWGhsWTNWMGFXOXVWbUZzZFdWekxDQkhjbUZ3YUU1dlpHVkZlR1ZqZFhScGIyNVNaWE4xYkhRc0lFZHlZWEJvVW5WdVNXUWdmU0JtY205dElGd2lMaTR2ZEhsd1pYTmNJanRjYm1sdGNHOXlkQ0IwZVhCbElIc2dSM0poY0doRmVHVmpkWFJwYjI1VGRHRjBkWE1nZlNCbWNtOXRJRndpTGk0dkxpNHZjMmhoY21Wa0wyTnZibk4wWVc1MGMxd2lPMXh1YVcxd2IzSjBJSFI1Y0dVZ2V5QkhjbUZ3YUZkdmNtdG1iRzkzUkdWbWFXNXBkR2x2YmlCOUlHWnliMjBnWENKQVpHVmpZV1l0ZEhNdmRXa3RaR1ZqYjNKaGRHOXljeTluY21Gd2FGd2lPMXh1WEc0dktpcGNiaUFxSUVKMWFXeGtjeUJoSUh0QWJHbHVheUJIY21Gd2FFVjRaV04xZEdsdmJsSmxjM1ZzZEgwZ1puSnZiU0JoSUdOdmJYQnNaWFJsWkNCbWNtRnRaUzVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHSjFhV3hrUjNKaGNHaEZlR1ZqZFhScGIyNVNaWE4xYkhRb1hHNGdJR1p5WVcxbE9pQkhjbUZ3YUVWNFpXTjFkR2x2YmtaeVlXMWxMRnh1SUNCM2IzSnJabXh2ZHpvZ1IzSmhjR2hYYjNKclpteHZkMFJsWm1sdWFYUnBiMjRzWEc0Z0lHbHVjSFYwY3pvZ1IzSmhjR2hGZUdWamRYUnBiMjVXWVd4MVpYTXNYRzRnSUhOMFlYUjFjem9nUjNKaGNHaEZlR1ZqZFhScGIyNVRkR0YwZFhNc1hHNGdJRzFsZEdGa1lYUmhQem9nVW1WamIzSmtQSE4wY21sdVp5d2dkVzVyYm05M2JqNWNiaWs2SUVkeVlYQm9SWGhsWTNWMGFXOXVVbVZ6ZFd4MElIdGNiaUFnWTI5dWMzUWdiM1YwY0hWMGN5QTlJR1p5WVcxbExuWmhiSFZsVTNSdmNtVXVaMlYwVjI5eWEyWnNiM2RXWVd4MVpYTW9LVHRjYmlBZ1kyOXVjM1FnYm05a1pWSmxjM1ZzZEhNNklGSmxZMjl5WkR4emRISnBibWNzSUVkeVlYQm9UbTlrWlVWNFpXTjFkR2x2YmxKbGMzVnNkRDRnUFNCN2ZUdGNiaUFnWm05eUlDaGpiMjV6ZENCYmFXUXNJSEpsYzNWc2RGMGdiMllnWm5KaGJXVXVibTlrWlZKbGMzVnNkSE1wSUh0Y2JpQWdJQ0J1YjJSbFVtVnpkV3gwYzF0cFpGMGdQU0J5WlhOMWJIUTdYRzRnSUgxY2JpQWdZMjl1YzNRZ1pYWmxiblJ6T2lCSGNtRndhRVY0WldOMWRHbHZia1YyWlc1MFcxMGdQU0JiTGk0dVpuSmhiV1V1WlhabGJuUnpYVHRjYmlBZ1kyOXVjM1FnY25WdVNXUTZJRWR5WVhCb1VuVnVTV1FnUFNCbWNtRnRaUzV5ZFc1SlpEdGNibHh1SUNCeVpYUjFjbTRnZTF4dUlDQWdJSEoxYmtsa0xGeHVJQ0FnSUhkdmNtdG1iRzkzU1dRNklIZHZjbXRtYkc5M0xtNWhiV1VzWEc0Z0lDQWdjM1JoZEhWekxGeHVJQ0FnSUhkdmNtdG1iRzkzTEZ4dUlDQWdJR2x1Y0hWMGN6b2dleUF1TGk1cGJuQjFkSE1nZlN4Y2JpQWdJQ0J2ZFhSd2RYUnpMRnh1SUNBZ0lHNXZaR1ZTWlhOMWJIUnpMRnh1SUNBZ0lHVjJaVzUwY3l4Y2JpQWdJQ0J6ZEdGeWRHVmtRWFE2SUdaeVlXMWxMbk4wWVhKMFpXUkJkQ3hjYmlBZ0lDQm1hVzVwYzJobFpFRjBPaUJtY21GdFpTNW1hVzVwYzJobFpFRjBMRnh1SUNBZ0lHMWxkR0ZrWVhSaExGeHVJQ0I5TzF4dWZWeHVJbDE5Il19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=
|
|
4
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhOb2RlRXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JhcGgvZW5naW5lL2V4ZWN1dGlvbi9HcmFwaE5vZGVFeGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9ncmFwaC9leGVjdXRpb24vR3JhcGhOb2RlRXhlY3V0b3JcbiAqIEBzdW1tYXJ5IEludGVyZmFjZSBpbXBsZW1lbnRlZCBieSBldmVyeSBncmFwaCBub2RlIGV4ZWN1dG9yLlxuICogQGRlc2NyaXB0aW9uIEEgbm9kZSBleGVjdXRvciByZWNlaXZlcyB0aGUgbm9kZSdzIHJlc29sdmVkIGlucHV0IHZhbHVlcyBhbmQgYSB7QGxpbmsgR3JhcGhFeGVjdXRpb25Db250ZXh0fSwgYW5kIHJldHVybnMgdGhlIG5vZGUncyBvdXRwdXQgdmFsdWVzLlxuICovXG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uQ29udGV4dCB9IGZyb20gXCIuL0dyYXBoRXhlY3V0aW9uQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBHcmFwaEV4ZWN1dGlvblZhbHVlcyB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG4vKipcbiAqIEV4ZWN1dG9yIGZvciBhIHNwZWNpZmljIGdyYXBoIG5vZGUga2luZC5cbiAqXG4gKiBJbXBsZW1lbnRhdGlvbnMgYXJlIHJlZ2lzdGVyZWQgaW4gdGhlIHtAbGluayBHcmFwaE5vZGVFeGVjdXRvclJlZ2lzdHJ5fVxuICogYW5kIHJlc29sdmVkIGJ5IHRoZSBlbmdpbmUgdXNpbmcgdGhlIG5vZGUncyBga2luZGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JhcGhOb2RlRXhlY3V0b3I8XG4gIElucHV0IGV4dGVuZHMgR3JhcGhFeGVjdXRpb25WYWx1ZXMgPSBHcmFwaEV4ZWN1dGlvblZhbHVlcyxcbiAgT3V0cHV0IGV4dGVuZHMgR3JhcGhFeGVjdXRpb25WYWx1ZXMgPSBHcmFwaEV4ZWN1dGlvblZhbHVlcyxcbj4ge1xuICAvKipcbiAgICogRXhlY3V0ZXMgdGhlIG5vZGUgbG9naWMuXG4gICAqXG4gICAqIEBwYXJhbSBpbnB1dCAtIFJlc29sdmVkIGlucHV0IHZhbHVlcyBrZXllZCBieSBwb3J0IG5hbWUuXG4gICAqIEBwYXJhbSBjb250ZXh0IC0gRGVjYWYgY29udGV4dCBmb3IgZW1pdHRpbmcgcHJvZ3Jlc3MgYW5kIGV2ZW50cy5cbiAgICogQHJldHVybnMgVGhlIG5vZGUncyBvdXRwdXQgdmFsdWVzIGtleWVkIGJ5IHBvcnQgbmFtZS5cbiAgICovXG4gIGV4ZWN1dGUoXG4gICAgaW5wdXQ6IElucHV0LFxuICAgIGNvbnRleHQ6IEdyYXBoRXhlY3V0aW9uQ29udGV4dFxuICApOiBQcm9taXNlPE91dHB1dD4gfCBPdXRwdXQ7XG59XG4iXX0=
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhOb2RlRXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJHcmFwaE5vZGVFeGVjdXRvci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLDh2REFBOHZEIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHt9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pUjNKaGNHaE9iMlJsUlhobFkzVjBiM0l1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk4dUxpOHVMaTh1TGk5emNtTXZaM0poY0dndlpXNW5hVzVsTDJWNFpXTjFkR2x2Ymk5SGNtRndhRTV2WkdWRmVHVmpkWFJ2Y2k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaUlpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkFiVzlrZFd4bElHbHVkR1ZuY21GMGFXOXVjeTluY21Gd2FDOWxlR1ZqZFhScGIyNHZSM0poY0doT2IyUmxSWGhsWTNWMGIzSmNiaUFxSUVCemRXMXRZWEo1SUVsdWRHVnlabUZqWlNCcGJYQnNaVzFsYm5SbFpDQmllU0JsZG1WeWVTQm5jbUZ3YUNCdWIyUmxJR1Y0WldOMWRHOXlMbHh1SUNvZ1FHUmxjMk55YVhCMGFXOXVJRUVnYm05a1pTQmxlR1ZqZFhSdmNpQnlaV05sYVhabGN5QjBhR1VnYm05a1pTZHpJSEpsYzI5c2RtVmtJR2x1Y0hWMElIWmhiSFZsY3lCaGJtUWdZU0I3UUd4cGJtc2dSM0poY0doRmVHVmpkWFJwYjI1RGIyNTBaWGgwZlN3Z1lXNWtJSEpsZEhWeWJuTWdkR2hsSUc1dlpHVW5jeUJ2ZFhSd2RYUWdkbUZzZFdWekxseHVJQ292WEc1cGJYQnZjblFnZEhsd1pTQjdJRWR5WVhCb1JYaGxZM1YwYVc5dVEyOXVkR1Y0ZENCOUlHWnliMjBnWENJdUwwZHlZWEJvUlhobFkzVjBhVzl1UTI5dWRHVjRkRndpTzF4dWFXMXdiM0owSUhSNWNHVWdleUJIY21Gd2FFVjRaV04xZEdsdmJsWmhiSFZsY3lCOUlHWnliMjBnWENJdUxpOTBlWEJsYzF3aU8xeHVYRzR2S2lwY2JpQXFJRVY0WldOMWRHOXlJR1p2Y2lCaElITndaV05wWm1saklHZHlZWEJvSUc1dlpHVWdhMmx1WkM1Y2JpQXFYRzRnS2lCSmJYQnNaVzFsYm5SaGRHbHZibk1nWVhKbElISmxaMmx6ZEdWeVpXUWdhVzRnZEdobElIdEFiR2x1YXlCSGNtRndhRTV2WkdWRmVHVmpkWFJ2Y2xKbFoybHpkSEo1ZlZ4dUlDb2dZVzVrSUhKbGMyOXNkbVZrSUdKNUlIUm9aU0JsYm1kcGJtVWdkWE5wYm1jZ2RHaGxJRzV2WkdVbmN5QmdhMmx1WkdBdVhHNGdLaTljYm1WNGNHOXlkQ0JwYm5SbGNtWmhZMlVnUjNKaGNHaE9iMlJsUlhobFkzVjBiM0k4WEc0Z0lFbHVjSFYwSUdWNGRHVnVaSE1nUjNKaGNHaEZlR1ZqZFhScGIyNVdZV3gxWlhNZ1BTQkhjbUZ3YUVWNFpXTjFkR2x2YmxaaGJIVmxjeXhjYmlBZ1QzVjBjSFYwSUdWNGRHVnVaSE1nUjNKaGNHaEZlR1ZqZFhScGIyNVdZV3gxWlhNZ1BTQkhjbUZ3YUVWNFpXTjFkR2x2YmxaaGJIVmxjeXhjYmo0Z2UxeHVJQ0F2S2lwY2JpQWdJQ29nUlhobFkzVjBaWE1nZEdobElHNXZaR1VnYkc5bmFXTXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0JwYm5CMWRDQXRJRkpsYzI5c2RtVmtJR2x1Y0hWMElIWmhiSFZsY3lCclpYbGxaQ0JpZVNCd2IzSjBJRzVoYldVdVhHNGdJQ0FxSUVCd1lYSmhiU0JqYjI1MFpYaDBJQzBnUkdWallXWWdZMjl1ZEdWNGRDQm1iM0lnWlcxcGRIUnBibWNnY0hKdlozSmxjM01nWVc1a0lHVjJaVzUwY3k1Y2JpQWdJQ29nUUhKbGRIVnlibk1nVkdobElHNXZaR1VuY3lCdmRYUndkWFFnZG1Gc2RXVnpJR3RsZVdWa0lHSjVJSEJ2Y25RZ2JtRnRaUzVjYmlBZ0lDb3ZYRzRnSUdWNFpXTjFkR1VvWEc0Z0lDQWdhVzV3ZFhRNklFbHVjSFYwTEZ4dUlDQWdJR052Ym5SbGVIUTZJRWR5WVhCb1JYaGxZM1YwYVc5dVEyOXVkR1Y0ZEZ4dUlDQXBPaUJRY205dGFYTmxQRTkxZEhCMWRENGdmQ0JQZFhSd2RYUTdYRzU5WEc0aVhYMD0iXX0=
|