Full Code of eclipse-che/che-server for AI

main ebef23d5e797 cached
1954 files
13.4 MB
3.7M tokens
21308 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (14,690K chars total). Download the full file to get everything.
Repository: eclipse-che/che-server
Branch: main
Commit: ebef23d5e797
Files: 1954
Total size: 13.4 MB

Directory structure:
gitextract__5pkrvkt/

├── .ci/
│   └── openshift-ci/
│       ├── Dockerfile
│       ├── ca.crt
│       ├── common.sh
│       ├── devworkspace-test.yaml
│       ├── htpasswdProvider.yaml
│       ├── oauth-secret.yaml
│       ├── pat-secret.yaml
│       ├── pod-che-smoke-test.yaml
│       ├── pod-oauth-factory-test.yaml
│       ├── ssh-secret.yaml
│       ├── test-azure-no-pat-oauth-flow-raw-devfile-url.sh
│       ├── test-azure-no-pat-oauth-flow-ssh-url.sh
│       ├── test-azure-no-pat-oauth-flow.sh
│       ├── test-azure-with-pat-setup-flow.sh
│       ├── test-bitbucket-no-pat-oauth-flow-raw-devfile-url.sh
│       ├── test-bitbucket-no-pat-oauth-flow-ssh-url.sh
│       ├── test-bitbucket-no-pat-oauth-flow.sh
│       ├── test-che-smoke-test.sh
│       ├── test-gitea-no-pat-oauth-flow.sh
│       ├── test-gitea-with-pat-setup-flow.sh
│       ├── test-github-no-pat-oauth-flow-raw-devfile-url.sh
│       ├── test-github-no-pat-oauth-flow-ssh-url.sh
│       ├── test-github-no-pat-oauth-flow.sh
│       ├── test-github-with-pat-setup-flow.sh
│       ├── test-gitlab-no-pat-oauth-flow-raw-devfile-url.sh
│       ├── test-gitlab-no-pat-oauth-flow-ssh-url.sh
│       ├── test-gitlab-no-pat-oauth-flow.sh
│       ├── test-gitlab-with-oauth-setup-flow.sh
│       └── test-gitlab-with-pat-setup-flow.sh
├── .gitattributes
├── .github/
│   ├── CODEOWNERS
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── dependabot.yml
│   └── workflows/
│       ├── build-pr-check.yml
│       ├── che-properties-docs-update.yml
│       ├── generate-maven-sbom.yml
│       ├── next-build.yml
│       ├── release.yml
│       └── try-in-web-ide.yaml
├── .gitignore
├── .mvn/
│   └── jvm.config
├── CONTRIBUTING.md
├── LICENSE
├── NUMBERING.md
├── README.md
├── RELEASE.md
├── assembly/
│   ├── assembly-che-tomcat/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── assembly/
│   │           ├── LICENSE-tomcat.txt
│   │           ├── assembly.xml
│   │           └── conf/
│   │               ├── logback-access.xml
│   │               ├── logback-json-appenders.xml
│   │               ├── logback-plaintext-appenders.xml
│   │               ├── logback.xml
│   │               └── server.xml
│   ├── assembly-main/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── assembly/
│   │           ├── LICENSE
│   │           ├── README
│   │           └── assembly.xml
│   ├── assembly-root-war/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── eclipse/
│   │       │   │           └── che/
│   │       │   │               ├── ApiAccessRejectionFilter.java
│   │       │   │               ├── DashboardModule.java
│   │       │   │               └── DashboardRedirectionFilter.java
│   │       │   └── webapp/
│   │       │       ├── META-INF/
│   │       │       │   └── context.xml
│   │       │       ├── WEB-INF/
│   │       │       │   ├── rewrite.config
│   │       │       │   └── web.xml
│   │       │       └── _app/
│   │       │           ├── keycloackLoader.js
│   │       │           ├── loader.css
│   │       │           ├── loader.html
│   │       │           ├── loader.js
│   │       │           ├── oauth.html
│   │       │           └── oauthLoader.js
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── eclipse/
│   │                       └── che/
│   │                           ├── ApiAccessRejectionFilterTest.java
│   │                           └── DashboardRedirectionFilterTest.java
│   ├── assembly-swagger-war/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── webapp/
│   │               ├── index.html
│   │               ├── oauth2-redirect.html
│   │               ├── swagger-ui-bundle.js
│   │               ├── swagger-ui-es-bundle-core.js
│   │               ├── swagger-ui-es-bundle.js
│   │               ├── swagger-ui-standalone-preset.js
│   │               ├── swagger-ui.css
│   │               └── swagger-ui.js
│   ├── assembly-wsmaster-war/
│   │   ├── .deps/
│   │   │   ├── EXCLUDED/
│   │   │   │   ├── dev.md
│   │   │   │   └── prod.md
│   │   │   ├── dev.md
│   │   │   ├── problems.md
│   │   │   └── prod.md
│   │   ├── gen-deps.sh
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── eclipse/
│   │       │   │           └── che/
│   │       │   │               ├── api/
│   │       │   │               │   └── deploy/
│   │       │   │               │       ├── ReplicationModule.java
│   │       │   │               │       ├── WsMasterModule.java
│   │       │   │               │       ├── WsMasterServletModule.java
│   │       │   │               │       └── jsonrpc/
│   │       │   │               │           ├── CheJsonRpcWebSocketConfigurationModule.java
│   │       │   │               │           ├── CheMajorWebSocketEndpoint.java
│   │       │   │               │           └── CheMajorWebSocketEndpointConfiguration.java
│   │       │   │               └── swagger/
│   │       │   │                   └── deploy/
│   │       │   │                       └── DocsModule.java
│   │       │   ├── resources/
│   │       │   │   └── META-INF/
│   │       │   │       └── persistence.xml
│   │       │   └── webapp/
│   │       │       └── WEB-INF/
│   │       │           ├── classes/
│   │       │           │   ├── che/
│   │       │           │   │   ├── che.properties
│   │       │           │   │   └── multiuser.properties
│   │       │           │   ├── che_aliases.properties
│   │       │           │   ├── jgroups/
│   │       │           │   │   └── che-tcp.xml
│   │       │           │   ├── keycloak/
│   │       │           │   │   ├── OIDCKeycloak.js
│   │       │           │   │   ├── oidcCallback.js
│   │       │           │   │   ├── oidcCallbackDashboard.html
│   │       │           │   │   └── oidcCallbackIde.html
│   │       │           │   └── logging.properties
│   │       │           ├── openapi-configuration.json
│   │       │           └── web.xml
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── eclipse/
│   │           │           └── che/
│   │           │               └── integration/
│   │           │                   └── IntegrityConfigurationTest.java
│   │           └── resources/
│   │               └── logback-test.xml
│   └── pom.xml
├── build/
│   ├── README.md
│   ├── build.sh
│   └── dockerfiles/
│       ├── Dockerfile
│       ├── brew.Dockerfile
│       └── entrypoint.sh
├── check_properties_description.sh
├── core/
│   ├── che-core-api-core/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── eclipse/
│   │       │   │           └── che/
│   │       │   │               ├── api/
│   │       │   │               │   └── core/
│   │       │   │               │       ├── ApiException.java
│   │       │   │               │       ├── AuthenticationException.java
│   │       │   │               │       ├── BadRequestException.java
│   │       │   │               │       ├── ConflictException.java
│   │       │   │               │       ├── ErrorCodes.java
│   │       │   │               │       ├── ForbiddenException.java
│   │       │   │               │       ├── NotFoundException.java
│   │       │   │               │       ├── Page.java
│   │       │   │               │       ├── Pages.java
│   │       │   │               │       ├── ServerException.java
│   │       │   │               │       ├── UnauthorizedException.java
│   │       │   │               │       ├── ValidationException.java
│   │       │   │               │       ├── cors/
│   │       │   │               │       │   ├── CheCorsFilter.java
│   │       │   │               │       │   └── CheCorsFilterConfig.java
│   │       │   │               │       ├── factory/
│   │       │   │               │       │   └── FactoryParameter.java
│   │       │   │               │       ├── jsonrpc/
│   │       │   │               │       │   ├── commons/
│   │       │   │               │       │   │   ├── ClientSubscriptionHandler.java
│   │       │   │               │       │   │   ├── JsonRpcComposer.java
│   │       │   │               │       │   │   ├── JsonRpcError.java
│   │       │   │               │       │   │   ├── JsonRpcErrorTransmitter.java
│   │       │   │               │       │   │   ├── JsonRpcException.java
│   │       │   │               │       │   │   ├── JsonRpcMarshaller.java
│   │       │   │               │       │   │   ├── JsonRpcMessageReceiver.java
│   │       │   │               │       │   │   ├── JsonRpcMethodInvokerFilter.java
│   │       │   │               │       │   │   ├── JsonRpcParams.java
│   │       │   │               │       │   │   ├── JsonRpcPromise.java
│   │       │   │               │       │   │   ├── JsonRpcQualifier.java
│   │       │   │               │       │   │   ├── JsonRpcRequest.java
│   │       │   │               │       │   │   ├── JsonRpcResponse.java
│   │       │   │               │       │   │   ├── JsonRpcResult.java
│   │       │   │               │       │   │   ├── JsonRpcUnmarshaller.java
│   │       │   │               │       │   │   ├── JsonRpcUtils.java
│   │       │   │               │       │   │   ├── NotificationHandler.java
│   │       │   │               │       │   │   ├── RequestDispatcher.java
│   │       │   │               │       │   │   ├── RequestHandler.java
│   │       │   │               │       │   │   ├── RequestHandlerConfigurator.java
│   │       │   │               │       │   │   ├── RequestHandlerManager.java
│   │       │   │               │       │   │   ├── RequestProcessor.java
│   │       │   │               │       │   │   ├── RequestProcessorConfigurationProvider.java
│   │       │   │               │       │   │   ├── RequestTransmitter.java
│   │       │   │               │       │   │   ├── ResponseDispatcher.java
│   │       │   │               │       │   │   ├── TimeoutActionRunner.java
│   │       │   │               │       │   │   ├── reception/
│   │       │   │               │       │   │   │   ├── ConsumerConfiguratorManyToNone.java
│   │       │   │               │       │   │   │   ├── ConsumerConfiguratorNoneToNone.java
│   │       │   │               │       │   │   │   ├── ConsumerConfiguratorOneToNone.java
│   │       │   │               │       │   │   │   ├── FunctionConfiguratorManyToMany.java
│   │       │   │               │       │   │   │   ├── FunctionConfiguratorManyToOne.java
│   │       │   │               │       │   │   │   ├── FunctionConfiguratorNoneToMany.java
│   │       │   │               │       │   │   │   ├── FunctionConfiguratorNoneToOne.java
│   │       │   │               │       │   │   │   ├── FunctionConfiguratorOneToMany.java
│   │       │   │               │       │   │   │   ├── FunctionConfiguratorOneToOne.java
│   │       │   │               │       │   │   │   ├── MethodNameConfigurator.java
│   │       │   │               │       │   │   │   ├── ParamsConfigurator.java
│   │       │   │               │       │   │   │   ├── PromiseConfigurationOneToOne.java
│   │       │   │               │       │   │   │   ├── ResultConfiguratorFromMany.java
│   │       │   │               │       │   │   │   ├── ResultConfiguratorFromNone.java
│   │       │   │               │       │   │   │   └── ResultConfiguratorFromOne.java
│   │       │   │               │       │   │   └── transmission/
│   │       │   │               │       │   │       ├── EndpointIdConfigurator.java
│   │       │   │               │       │   │       ├── MethodNameConfigurator.java
│   │       │   │               │       │   │       ├── ParamsConfigurator.java
│   │       │   │               │       │   │       ├── SendConfiguratorFromMany.java
│   │       │   │               │       │   │       ├── SendConfiguratorFromNone.java
│   │       │   │               │       │   │       └── SendConfiguratorFromOne.java
│   │       │   │               │       │   └── impl/
│   │       │   │               │       │       ├── GsonJsonRpcComposer.java
│   │       │   │               │       │       ├── GsonJsonRpcMarshaller.java
│   │       │   │               │       │       ├── GsonJsonRpcQualifier.java
│   │       │   │               │       │       ├── GsonJsonRpcUnmarshaller.java
│   │       │   │               │       │       ├── JsonRpcModule.java
│   │       │   │               │       │       ├── ServerSideRequestProcessor.java
│   │       │   │               │       │       ├── ServerSideRequestProcessorConfigurator.java
│   │       │   │               │       │       └── ServerSideTimeoutActionRunner.java
│   │       │   │               │       ├── notification/
│   │       │   │               │       │   ├── EventOrigin.java
│   │       │   │               │       │   ├── EventService.java
│   │       │   │               │       │   ├── EventSubscriber.java
│   │       │   │               │       │   ├── InmemoryRemoteSubscriptionStorage.java
│   │       │   │               │       │   ├── RemoteSubscriptionContext.java
│   │       │   │               │       │   ├── RemoteSubscriptionManager.java
│   │       │   │               │       │   ├── RemoteSubscriptionStorage.java
│   │       │   │               │       │   └── dto/
│   │       │   │               │       │       └── EventSubscription.java
│   │       │   │               │       ├── rest/
│   │       │   │               │       │   ├── ApiExceptionMapper.java
│   │       │   │               │       │   ├── ApiInfoProvider.java
│   │       │   │               │       │   ├── ApiInfoService.java
│   │       │   │               │       │   ├── AuthenticationExceptionMapper.java
│   │       │   │               │       │   ├── CheJsonProvider.java
│   │       │   │               │       │   ├── Constants.java
│   │       │   │               │       │   ├── CoreRestModule.java
│   │       │   │               │       │   ├── DefaultHttpJsonRequest.java
│   │       │   │               │       │   ├── DefaultHttpJsonRequestFactory.java
│   │       │   │               │       │   ├── DefaultHttpJsonResponse.java
│   │       │   │               │       │   ├── DownloadFileResponseFilter.java
│   │       │   │               │       │   ├── HttpJsonRequest.java
│   │       │   │               │       │   ├── HttpJsonRequestFactory.java
│   │       │   │               │       │   ├── HttpJsonResponse.java
│   │       │   │               │       │   ├── HttpOutputMessage.java
│   │       │   │               │       │   ├── HttpRequestHelper.java
│   │       │   │               │       │   ├── HttpServletProxyResponse.java
│   │       │   │               │       │   ├── JAXRSDownloadFileResponseFilter.java
│   │       │   │               │       │   ├── LivenessProbeService.java
│   │       │   │               │       │   ├── MessageBodyAdapter.java
│   │       │   │               │       │   ├── MessageBodyAdapterInterceptor.java
│   │       │   │               │       │   ├── OutputProvider.java
│   │       │   │               │       │   ├── RemoteServiceDescriptor.java
│   │       │   │               │       │   ├── RuntimeExceptionMapper.java
│   │       │   │               │       │   ├── Service.java
│   │       │   │               │       │   ├── ServiceContext.java
│   │       │   │               │       │   ├── WebApplicationExceptionMapper.java
│   │       │   │               │       │   ├── annotations/
│   │       │   │               │       │   │   ├── Description.java
│   │       │   │               │       │   │   ├── GenerateLink.java
│   │       │   │               │       │   │   ├── OPTIONS.java
│   │       │   │               │       │   │   ├── Required.java
│   │       │   │               │       │   │   └── Valid.java
│   │       │   │               │       │   └── shared/
│   │       │   │               │       │       ├── Links.java
│   │       │   │               │       │       ├── ParameterType.java
│   │       │   │               │       │       └── dto/
│   │       │   │               │       │           ├── ApiInfo.java
│   │       │   │               │       │           ├── ExtendedError.java
│   │       │   │               │       │           ├── Hyperlinks.java
│   │       │   │               │       │           ├── Link.java
│   │       │   │               │       │           ├── LinkParameter.java
│   │       │   │               │       │           ├── RequestBodyDescriptor.java
│   │       │   │               │       │           ├── ServiceDescriptor.java
│   │       │   │               │       │           └── ServiceError.java
│   │       │   │               │       ├── util/
│   │       │   │               │       │   ├── AbstractLineConsumer.java
│   │       │   │               │       │   ├── AbstractMessageConsumer.java
│   │       │   │               │       │   ├── ApiInfoLogInformer.java
│   │       │   │               │       │   ├── Cancellable.java
│   │       │   │               │       │   ├── CommandLine.java
│   │       │   │               │       │   ├── CompositeLineConsumer.java
│   │       │   │               │       │   ├── ContentTypeGuesser.java
│   │       │   │               │       │   ├── DownloadPlugin.java
│   │       │   │               │       │   ├── ErrorFilteredConsumer.java
│   │       │   │               │       │   ├── FileCleaner.java
│   │       │   │               │       │   ├── FileLineConsumer.java
│   │       │   │               │       │   ├── HttpDownloadPlugin.java
│   │       │   │               │       │   ├── IndentWrapperLineConsumer.java
│   │       │   │               │       │   ├── JsonRpcEndpointIdProvider.java
│   │       │   │               │       │   ├── JsonRpcEndpointIdsHolder.java
│   │       │   │               │       │   ├── JsonRpcEndpointToMachineNameHolder.java
│   │       │   │               │       │   ├── JsonRpcLineConsumer.java
│   │       │   │               │       │   ├── JsonRpcMessageConsumer.java
│   │       │   │               │       │   ├── LineConsumer.java
│   │       │   │               │       │   ├── LineConsumerFactory.java
│   │       │   │               │       │   ├── LinksHelper.java
│   │       │   │               │       │   ├── ListLineConsumer.java
│   │       │   │               │       │   ├── MessageConsumer.java
│   │       │   │               │       │   ├── PagingUtil.java
│   │       │   │               │       │   ├── RateExceedDetector.java
│   │       │   │               │       │   ├── ShellFactory.java
│   │       │   │               │       │   ├── StreamPump.java
│   │       │   │               │       │   ├── SystemInfo.java
│   │       │   │               │       │   ├── ValueHolder.java
│   │       │   │               │       │   ├── Watchdog.java
│   │       │   │               │       │   ├── WritableLineConsumer.java
│   │       │   │               │       │   └── lineconsumer/
│   │       │   │               │       │       ├── ConcurrentCompositeLineConsumer.java
│   │       │   │               │       │       ├── ConcurrentFileLineConsumer.java
│   │       │   │               │       │       └── ConsumerAlreadyClosedException.java
│   │       │   │               │       └── websocket/
│   │       │   │               │           ├── commons/
│   │       │   │               │           │   ├── WebSocketMessageReceiver.java
│   │       │   │               │           │   └── WebSocketMessageTransmitter.java
│   │       │   │               │           └── impl/
│   │       │   │               │               ├── BasicWebSocketEndpoint.java
│   │       │   │               │               ├── BasicWebSocketMessageTransmitter.java
│   │       │   │               │               ├── GuiceInjectorEndpointConfigurator.java
│   │       │   │               │               ├── MessagesReSender.java
│   │       │   │               │               ├── WebSocketModule.java
│   │       │   │               │               ├── WebSocketSessionRegistry.java
│   │       │   │               │               └── WebsocketIdService.java
│   │       │   │               ├── commons/
│   │       │   │               │   ├── env/
│   │       │   │               │   │   └── EnvironmentContext.java
│   │       │   │               │   ├── proxy/
│   │       │   │               │   │   └── ProxyAuthenticator.java
│   │       │   │               │   └── subject/
│   │       │   │               │       ├── Subject.java
│   │       │   │               │       └── SubjectImpl.java
│   │       │   │               ├── everrest/
│   │       │   │               │   ├── CheMethodInvokerFilter.java
│   │       │   │               │   ├── ETagResponseFilter.java
│   │       │   │               │   └── EverrestDownloadFileResponseFilter.java
│   │       │   │               └── security/
│   │       │   │                   ├── PBKDF2PasswordEncryptor.java
│   │       │   │                   ├── PasswordEncryptor.java
│   │       │   │                   └── SHA512PasswordEncryptor.java
│   │       │   └── resources/
│   │       │       └── content-types.properties
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── eclipse/
│   │           │           └── che/
│   │           │               ├── api/
│   │           │               │   └── core/
│   │           │               │       ├── PageTest.java
│   │           │               │       ├── PagesTest.java
│   │           │               │       ├── jsonrpc/
│   │           │               │       │   └── commons/
│   │           │               │       │       ├── JsonRpcMessageReceiverTest.java
│   │           │               │       │       └── RequestDispatcherTest.java
│   │           │               │       ├── notification/
│   │           │               │       │   └── EventServiceTest.java
│   │           │               │       ├── rest/
│   │           │               │       │   ├── DefaultHttpJsonRequestTest.java
│   │           │               │       │   ├── DefaultHttpJsonResponseTest.java
│   │           │               │       │   ├── LinkHeaderGenerationTest.java
│   │           │               │       │   ├── RemoteServiceDescriptorTest.java
│   │           │               │       │   ├── RuntimeExceptionMapperTest.java
│   │           │               │       │   ├── ServiceDescriptorTest.java
│   │           │               │       │   ├── TestService.java
│   │           │               │       │   └── it/
│   │           │               │       │       └── ApiInfoProviderTest.java
│   │           │               │       ├── util/
│   │           │               │       │   ├── CompositeLineConsumerTest.java
│   │           │               │       │   ├── ErrorFilteredConsumerTest.java
│   │           │               │       │   ├── FileLineConsumerTest.java
│   │           │               │       │   ├── PagingUtilTest.java
│   │           │               │       │   ├── RateExceedDetectorTest.java
│   │           │               │       │   ├── StandardLinuxShellTest.java
│   │           │               │       │   ├── WatchdogTest.java
│   │           │               │       │   └── lineconsumer/
│   │           │               │       │       ├── ConcurrentCompositeLineConsumerTest.java
│   │           │               │       │       └── ConcurrentFileLineConsumerTest.java
│   │           │               │       └── websocket/
│   │           │               │           └── impl/
│   │           │               │               ├── BasicWebSocketMessageTransmitterTest.java
│   │           │               │               ├── MessagesReSenderTest.java
│   │           │               │               └── WebSocketSessionRegistryTest.java
│   │           │               ├── commons/
│   │           │               │   ├── env/
│   │           │               │   │   └── EnvironmentContextTest.java
│   │           │               │   └── proxy/
│   │           │               │       └── ProxyAuthenticatorTest.java
│   │           │               ├── everrest/
│   │           │               │   ├── DownloadFileResponseFilterTest.java
│   │           │               │   └── ETagResponseFilterTest.java
│   │           │               └── security/
│   │           │                   └── PasswordEncryptorsTest.java
│   │           └── resources/
│   │               └── logback-test.xml
│   ├── che-core-api-dto/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── eclipse/
│   │       │               └── che/
│   │       │                   └── dto/
│   │       │                       ├── generator/
│   │       │                       │   ├── DtoGenerator.java
│   │       │                       │   ├── DtoImpl.java
│   │       │                       │   ├── DtoImplClientTemplate.java
│   │       │                       │   ├── DtoImplServerTemplate.java
│   │       │                       │   └── DtoTemplate.java
│   │       │                       ├── server/
│   │       │                       │   ├── DtoFactory.java
│   │       │                       │   ├── DtoFactoryVisitor.java
│   │       │                       │   ├── DtoProvider.java
│   │       │                       │   ├── JsonArrayImpl.java
│   │       │                       │   ├── JsonSerializable.java
│   │       │                       │   ├── JsonStringMapImpl.java
│   │       │                       │   ├── NullOrEmptyCollectionAdapter.java
│   │       │                       │   ├── NullOrEmptyMapAdapter.java
│   │       │                       │   └── SerializableInterfaceAdapterFactory.java
│   │       │                       └── shared/
│   │       │                           ├── CompactJsonDto.java
│   │       │                           ├── DTO.java
│   │       │                           ├── DTOImpl.java
│   │       │                           ├── DelegateRule.java
│   │       │                           ├── DelegateTo.java
│   │       │                           ├── JsonArray.java
│   │       │                           ├── JsonFieldName.java
│   │       │                           ├── JsonStringMap.java
│   │       │                           └── SerializationIndex.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── eclipse/
│   │                       └── che/
│   │                           └── dto/
│   │                               ├── ServerDtoTest.java
│   │                               └── definitions/
│   │                                   ├── ComplicatedDto.java
│   │                                   ├── DTOHierarchy.java
│   │                                   ├── DtoWithAny.java
│   │                                   ├── DtoWithDelegate.java
│   │                                   ├── DtoWithFieldNames.java
│   │                                   ├── DtoWithSerializable.java
│   │                                   ├── SimpleDto.java
│   │                                   ├── TestInterface.java
│   │                                   ├── Util.java
│   │                                   └── model/
│   │                                       ├── Model.java
│   │                                       ├── ModelComponent.java
│   │                                       ├── ModelComponentDto.java
│   │                                       └── ModelDto.java
│   ├── che-core-api-dto-maven-plugin/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── org/
│   │                   └── eclipse/
│   │                       └── che/
│   │                           └── dto/
│   │                               └── generator/
│   │                                   └── maven/
│   │                                       └── plugin/
│   │                                           └── DtoGeneratorMojo.java
│   ├── che-core-api-model/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── org/
│   │                   └── eclipse/
│   │                       └── che/
│   │                           └── api/
│   │                               └── core/
│   │                                   └── model/
│   │                                       ├── factory/
│   │                                       │   ├── Action.java
│   │                                       │   ├── Author.java
│   │                                       │   ├── Factory.java
│   │                                       │   ├── Ide.java
│   │                                       │   ├── OnAppClosed.java
│   │                                       │   ├── OnAppLoaded.java
│   │                                       │   ├── OnProjectsLoaded.java
│   │                                       │   ├── Policies.java
│   │                                       │   └── ScmInfo.java
│   │                                       ├── project/
│   │                                       │   ├── ProjectProblem.java
│   │                                       │   └── type/
│   │                                       │       ├── Attribute.java
│   │                                       │       ├── ProjectType.java
│   │                                       │       └── Value.java
│   │                                       ├── user/
│   │                                       │   ├── Profile.java
│   │                                       │   └── User.java
│   │                                       └── workspace/
│   │                                           ├── Runtime.java
│   │                                           ├── Warning.java
│   │                                           ├── Workspace.java
│   │                                           ├── WorkspaceConfig.java
│   │                                           ├── WorkspaceStatus.java
│   │                                           ├── config/
│   │                                           │   ├── Command.java
│   │                                           │   ├── Environment.java
│   │                                           │   ├── MachineConfig.java
│   │                                           │   ├── ProjectConfig.java
│   │                                           │   ├── Recipe.java
│   │                                           │   ├── ServerConfig.java
│   │                                           │   ├── SourceStorage.java
│   │                                           │   └── Volume.java
│   │                                           ├── devfile/
│   │                                           │   ├── Action.java
│   │                                           │   ├── Command.java
│   │                                           │   ├── Component.java
│   │                                           │   ├── Devfile.java
│   │                                           │   ├── Endpoint.java
│   │                                           │   ├── Entrypoint.java
│   │                                           │   ├── Env.java
│   │                                           │   ├── Metadata.java
│   │                                           │   ├── PreviewUrl.java
│   │                                           │   ├── Project.java
│   │                                           │   ├── Source.java
│   │                                           │   ├── UserDevfile.java
│   │                                           │   └── Volume.java
│   │                                           └── runtime/
│   │                                               ├── BootstrapperStatus.java
│   │                                               ├── Machine.java
│   │                                               ├── MachineStatus.java
│   │                                               ├── RuntimeIdentity.java
│   │                                               ├── Server.java
│   │                                               └── ServerStatus.java
│   ├── che-core-logback/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── org/
│   │                   └── eclipse/
│   │                       └── che/
│   │                           └── commons/
│   │                               └── logback/
│   │                                   ├── EnvironmentVariablesLogLevelPropagator.java
│   │                                   └── filter/
│   │                                       ├── IdentityIdLoggerFilter.java
│   │                                       └── RequestIdLoggerFilter.java
│   ├── che-core-metrics-core/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── eclipse/
│   │       │               └── che/
│   │       │                   └── core/
│   │       │                       └── metrics/
│   │       │                           ├── ApiResponseCounter.java
│   │       │                           ├── ApiResponseMetricFilter.java
│   │       │                           ├── FileStoresMeterBinder.java
│   │       │                           ├── MetricsBinder.java
│   │       │                           ├── MetricsModule.java
│   │       │                           ├── MetricsServer.java
│   │       │                           ├── MetricsServletModule.java
│   │       │                           ├── PrometheusMeterRegistryProvider.java
│   │       │                           └── TomcatMetricsProvider.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── eclipse/
│   │           │           └── che/
│   │           │               └── core/
│   │           │                   └── metrics/
│   │           │                       ├── ApiResponseCounterTest.java
│   │           │                       ├── ApiResponseMetricFilterTest.java
│   │           │                       └── FileStoresMeterTest.java
│   │           └── resources/
│   │               └── logback-test.xml
│   ├── che-core-tracing-core/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── org/
│   │                   └── eclipse/
│   │                       └── che/
│   │                           └── core/
│   │                               └── tracing/
│   │                                   ├── NopTracingModule.java
│   │                                   ├── TracerProvider.java
│   │                                   ├── TracingInterceptor.java
│   │                                   └── TracingModule.java
│   ├── che-core-tracing-metrics/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── org/
│   │                   └── eclipse/
│   │                       └── che/
│   │                           └── core/
│   │                               └── tracing/
│   │                                   └── metrics/
│   │                                       ├── MeteredTracerProvider.java
│   │                                       ├── MicrometerMetricsReporterProvider.java
│   │                                       └── TracingMetricsModule.java
│   ├── che-core-tracing-web/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               ├── io/
│   │               │   └── opentracing/
│   │               │       └── contrib/
│   │               │           └── web/
│   │               │               └── servlet/
│   │               │                   └── filter/
│   │               │                       ├── HttpServletRequestExtractAdapter.java
│   │               │                       ├── ServletFilterSpanDecorator.java
│   │               │                       ├── TracingFilter.java
│   │               │                       └── decorator/
│   │               │                           └── ServletFilterHeaderSpanDecorator.java
│   │               └── org/
│   │                   └── eclipse/
│   │                       └── che/
│   │                           └── core/
│   │                               └── tracing/
│   │                                   └── web/
│   │                                       ├── TracingFilterProvider.java
│   │                                       └── TracingWebModule.java
│   ├── che-core-typescript-dto-maven-plugin/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── it/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── eclipse/
│   │       │   │           └── che/
│   │       │   │               └── plugin/
│   │       │   │                   └── typescript/
│   │       │   │                       └── dto/
│   │       │   │                           └── TypeScriptDTOGeneratorMojoTST.java
│   │       │   └── resources/
│   │       │       ├── dto.spec.ts
│   │       │       └── package.json
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── eclipse/
│   │       │   │           └── che/
│   │       │   │               └── plugin/
│   │       │   │                   └── typescript/
│   │       │   │                       └── dto/
│   │       │   │                           ├── DTOHelper.java
│   │       │   │                           ├── TypeScriptDTOGeneratorMojo.java
│   │       │   │                           ├── TypeScriptDtoDTSGenerator.java
│   │       │   │                           ├── TypeScriptDtoGenerator.java
│   │       │   │                           └── model/
│   │       │   │                               ├── DtoModel.java
│   │       │   │                               ├── DtoNamespace.java
│   │       │   │                               ├── FieldAttributeModel.java
│   │       │   │                               ├── MethodModel.java
│   │       │   │                               └── ParameterMethodModel.java
│   │       │   └── resources/
│   │       │       └── org/
│   │       │           └── eclipse/
│   │       │               └── che/
│   │       │                   └── plugin/
│   │       │                       └── typescript/
│   │       │                           └── dto/
│   │       │                               ├── typescript.d.ts.template
│   │       │                               └── typescript.template
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── eclipse/
│   │           │           └── che/
│   │           │               └── plugin/
│   │           │                   └── typescript/
│   │           │                       └── dto/
│   │           │                           ├── MyCustomDTO.java
│   │           │                           ├── MyDtoWithSerializableDTO.java
│   │           │                           ├── MyOtherDTO.java
│   │           │                           ├── MySimpleDTO.java
│   │           │                           ├── MySuperClassDTO.java
│   │           │                           ├── MySuperSuperClass.java
│   │           │                           ├── Status.java
│   │           │                           ├── TypeScriptDTOGeneratorMojoTest.java
│   │           │                           ├── internal/
│   │           │                           │   └── InternalDto.java
│   │           │                           └── stub/
│   │           │                               └── TypeScriptDTOGeneratorMojoProjectStub.java
│   │           └── projects/
│   │               ├── project/
│   │               │   └── pom.xml
│   │               └── project-d-ts/
│   │                   └── pom.xml
│   ├── commons/
│   │   ├── che-core-commons-annotations/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── eclipse/
│   │   │                       └── che/
│   │   │                           └── commons/
│   │   │                               └── annotation/
│   │   │                                   ├── Nullable.java
│   │   │                                   └── Traced.java
│   │   ├── che-core-commons-inject/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── eclipse/
│   │   │       │   │           └── che/
│   │   │       │   │               └── inject/
│   │   │       │   │                   ├── CheBootstrap.java
│   │   │       │   │                   ├── ConfigurationException.java
│   │   │       │   │                   ├── ConfigurationProperties.java
│   │   │       │   │                   ├── DynaModule.java
│   │   │       │   │                   ├── FileConverter.java
│   │   │       │   │                   ├── Matchers.java
│   │   │       │   │                   ├── ModuleFinder.java
│   │   │       │   │                   ├── ModuleScanner.java
│   │   │       │   │                   ├── PairArrayConverter.java
│   │   │       │   │                   ├── PairConverter.java
│   │   │       │   │                   ├── PathConverter.java
│   │   │       │   │                   ├── StringArrayConverter.java
│   │   │       │   │                   ├── URIConverter.java
│   │   │       │   │                   ├── URLConverter.java
│   │   │       │   │                   └── lifecycle/
│   │   │       │   │                       ├── DestroyErrorHandler.java
│   │   │       │   │                       ├── DestroyModule.java
│   │   │       │   │                       ├── Destroyer.java
│   │   │       │   │                       ├── InitModule.java
│   │   │       │   │                       └── LifecycleModule.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── jakarta.servlet.ServletContainerInitializer
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── eclipse/
│   │   │           │           └── che/
│   │   │           │               └── inject/
│   │   │           │                   ├── CheBootstrapTest.java
│   │   │           │                   ├── LifecycleTest.java
│   │   │           │                   ├── MultiBindingTest.java
│   │   │           │                   └── PathConverterTest.java
│   │   │           └── resources/
│   │   │               └── logback-test.xml
│   │   ├── che-core-commons-j2ee/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       ├── com/
│   │   │       │       │   └── xemantic/
│   │   │       │       │       └── tadedon/
│   │   │       │       │           └── servlet/
│   │   │       │       │               ├── CacheDisablingFilter.java
│   │   │       │       │               ├── CacheForcingFilter.java
│   │   │       │       │               └── SimpleFilter.java
│   │   │       │       └── org/
│   │   │       │           └── eclipse/
│   │   │       │               └── che/
│   │   │       │                   └── filter/
│   │   │       │                       ├── CheCacheDisablingFilter.java
│   │   │       │                       └── CheCacheForcingFilter.java
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── eclipse/
│   │   │                       └── che/
│   │   │                           └── filter/
│   │   │                               ├── CheCacheDisablingFilterTest.java
│   │   │                               └── CheCacheForcingFilterTest.java
│   │   ├── che-core-commons-json/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       └── org/
│   │   │       │           └── eclipse/
│   │   │       │               └── che/
│   │   │       │                   └── commons/
│   │   │       │                       └── json/
│   │   │       │                           ├── JsonHelper.java
│   │   │       │                           ├── JsonNameConvention.java
│   │   │       │                           ├── JsonNameConventions.java
│   │   │       │                           ├── JsonParseException.java
│   │   │       │                           ├── NameConventionJsonParser.java
│   │   │       │                           └── NameConventionJsonWriter.java
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── eclipse/
│   │   │                       └── che/
│   │   │                           └── commons/
│   │   │                               └── json/
│   │   │                                   └── JsonTest.java
│   │   ├── che-core-commons-lang/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       └── org/
│   │   │       │           └── eclipse/
│   │   │       │               └── che/
│   │   │       │                   └── commons/
│   │   │       │                       └── lang/
│   │   │       │                           ├── Deserializer.java
│   │   │       │                           ├── FlushingStreamWriter.java
│   │   │       │                           ├── IoUtil.java
│   │   │       │                           ├── NameGenerator.java
│   │   │       │                           ├── Pair.java
│   │   │       │                           ├── PathUtil.java
│   │   │       │                           ├── Size.java
│   │   │       │                           ├── StringUtils.java
│   │   │       │                           ├── TopologicalSort.java
│   │   │       │                           ├── URLEncodedUtils.java
│   │   │       │                           ├── UrlUtils.java
│   │   │       │                           ├── ZipUtils.java
│   │   │       │                           ├── concurrent/
│   │   │       │                           │   ├── CopyThreadLocalCallable.java
│   │   │       │                           │   ├── CopyThreadLocalRunnable.java
│   │   │       │                           │   ├── LoggingUncaughtExceptionHandler.java
│   │   │       │                           │   ├── PropagatedThreadLocalsProvider.java
│   │   │       │                           │   ├── StripedLocks.java
│   │   │       │                           │   ├── ThreadLocalPropagateContext.java
│   │   │       │                           │   └── Unlocker.java
│   │   │       │                           ├── execution/
│   │   │       │                           │   ├── CommandLine.java
│   │   │       │                           │   ├── ExecutionException.java
│   │   │       │                           │   ├── Executor.java
│   │   │       │                           │   ├── ExecutorServiceBuilder.java
│   │   │       │                           │   ├── JavaParameters.java
│   │   │       │                           │   ├── OutputReader.java
│   │   │       │                           │   ├── ParametersList.java
│   │   │       │                           │   ├── ProcessEvent.java
│   │   │       │                           │   ├── ProcessExecutor.java
│   │   │       │                           │   ├── ProcessHandler.java
│   │   │       │                           │   ├── ProcessListener.java
│   │   │       │                           │   ├── ProcessOutputType.java
│   │   │       │                           │   └── WaitForProcessEnd.java
│   │   │       │                           ├── os/
│   │   │       │                           │   └── WindowsPathEscaper.java
│   │   │       │                           ├── reflect/
│   │   │       │                           │   └── ParameterizedTypeImpl.java
│   │   │       │                           └── ws/
│   │   │       │                               └── rs/
│   │   │       │                                   └── ExtMediaType.java
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── eclipse/
│   │   │           │           └── che/
│   │   │           │               └── commons/
│   │   │           │                   └── lang/
│   │   │           │                       ├── IoUtilTest.java
│   │   │           │                       ├── PathUtilTest.java
│   │   │           │                       ├── SizeTest.java
│   │   │           │                       ├── TestURLEncodedUtils.java
│   │   │           │                       ├── TopologicalSortTest.java
│   │   │           │                       ├── UrlUtilsTest.java
│   │   │           │                       ├── ZipUtilsTest.java
│   │   │           │                       ├── ZipUtilsWriteTest.java
│   │   │           │                       ├── concurrent/
│   │   │           │                       │   └── ThreadLocalPropagateContextTest.java
│   │   │           │                       ├── execution/
│   │   │           │                       │   └── ExecutorServiceBuilderTest.java
│   │   │           │                       └── os/
│   │   │           │                           └── WindowsPathEscaperTest.java
│   │   │           └── resources/
│   │   │               ├── findbugs-exclude.xml
│   │   │               └── logback-test.xml
│   │   ├── che-core-commons-observability/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       ├── io/
│   │   │       │       │   └── micrometer/
│   │   │       │       │       └── core/
│   │   │       │       │           └── instrument/
│   │   │       │       │               └── internal/
│   │   │       │       │                   └── TimedCronExecutorService.java
│   │   │       │       └── org/
│   │   │       │           └── eclipse/
│   │   │       │               └── che/
│   │   │       │                   └── commons/
│   │   │       │                       └── observability/
│   │   │       │                           ├── CountedRejectedExecutionHandler.java
│   │   │       │                           ├── CountedThreadFactory.java
│   │   │       │                           ├── ExecutorServiceWrapper.java
│   │   │       │                           ├── MeteredAndTracedExecutorServiceWrapper.java
│   │   │       │                           ├── MeteredExecutorServiceWrapper.java
│   │   │       │                           ├── NoopExecutorServiceWrapper.java
│   │   │       │                           ├── ObservableThreadPullLauncher.java
│   │   │       │                           ├── TracedCronExecutorService.java
│   │   │       │                           ├── TracedExecutorServiceWrapper.java
│   │   │       │                           └── deploy/
│   │   │       │                               └── ExecutorWrapperModule.java
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   ├── io/
│   │   │           │   │   └── micrometer/
│   │   │           │   │       └── core/
│   │   │           │   │           └── instrument/
│   │   │           │   │               └── internal/
│   │   │           │   │                   └── TimedCronExecutorServiceTest.java
│   │   │           │   └── org/
│   │   │           │       └── eclipse/
│   │   │           │           └── che/
│   │   │           │               └── commons/
│   │   │           │                   └── observability/
│   │   │           │                       ├── CountedRejectedExecutionHandlerTest.java
│   │   │           │                       ├── CountedThreadFactoryTest.java
│   │   │           │                       ├── MeteredExecutorServiceWrapperTest.java
│   │   │           │                       └── NoopExecutorServiceWrapperTest.java
│   │   │           └── resources/
│   │   │               └── logback-test.xml
│   │   ├── che-core-commons-schedule/
│   │   │   ├── README.md
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       └── org/
│   │   │       │           └── eclipse/
│   │   │       │               └── che/
│   │   │       │                   ├── commons/
│   │   │       │                   │   └── schedule/
│   │   │       │                   │       ├── Launcher.java
│   │   │       │                   │       ├── ScheduleCron.java
│   │   │       │                   │       ├── ScheduleDelay.java
│   │   │       │                   │       ├── ScheduleRate.java
│   │   │       │                   │       └── executor/
│   │   │       │                   │           ├── CronExecutorService.java
│   │   │       │                   │           ├── CronExpression.java
│   │   │       │                   │           ├── CronThreadPoolExecutor.java
│   │   │       │                   │           ├── LoggedRunnable.java
│   │   │       │                   │           ├── ScheduleModule.java
│   │   │       │                   │           └── ThreadPullLauncher.java
│   │   │       │                   └── inject/
│   │   │       │                       └── lifecycle/
│   │   │       │                           ├── InternalScheduleModule.java
│   │   │       │                           └── ScheduleInjectionListener.java
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── eclipse/
│   │   │           │           └── che/
│   │   │           │               └── commons/
│   │   │           │                   └── schedule/
│   │   │           │                       └── executor/
│   │   │           │                           └── CronExpressionTest.java
│   │   │           └── resources/
│   │   │               ├── findbugs-exclude.xml
│   │   │               └── logback-test.xml
│   │   ├── che-core-commons-test/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── eclipse/
│   │   │       │   │           └── che/
│   │   │       │   │               └── commons/
│   │   │       │   │                   └── test/
│   │   │       │   │                       ├── AssertRetry.java
│   │   │       │   │                       ├── SystemPropertiesHelper.java
│   │   │       │   │                       ├── mockito/
│   │   │       │   │                       │   └── answer/
│   │   │       │   │                       │       ├── SelfReturningAnswer.java
│   │   │       │   │                       │       └── WaitingAnswer.java
│   │   │       │   │                       ├── servlet/
│   │   │       │   │                       │   └── MockServletInputStream.java
│   │   │       │   │                       └── tck/
│   │   │       │   │                           ├── JpaCleaner.java
│   │   │       │   │                           ├── TckListener.java
│   │   │       │   │                           ├── TckModule.java
│   │   │       │   │                           ├── TckResourcesCleaner.java
│   │   │       │   │                           ├── TestListenerAdapter.java
│   │   │       │   │                           └── repository/
│   │   │       │   │                               ├── JpaTckRepository.java
│   │   │       │   │                               ├── TckRepository.java
│   │   │       │   │                               └── TckRepositoryException.java
│   │   │       │   └── resources/
│   │   │       │       └── org/
│   │   │       │           └── eclipse/
│   │   │       │               └── che/
│   │   │       │                   └── commons/
│   │   │       │                       └── test/
│   │   │       │                           └── db/
│   │   │       │                               └── persistence.xml.template
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── eclipse/
│   │   │           │           └── che/
│   │   │           │               └── commons/
│   │   │           │                   └── test/
│   │   │           │                       ├── AssertRetryTest.java
│   │   │           │                       └── tck/
│   │   │           │                           ├── DBServerListener.java
│   │   │           │                           ├── TckComponentsTest.java
│   │   │           │                           ├── TestModule1.java
│   │   │           │                           └── TestModule2.java
│   │   │           └── resources/
│   │   │               ├── META-INF/
│   │   │               │   └── services/
│   │   │               │       ├── org.eclipse.che.commons.test.tck.TckModule
│   │   │               │       └── org.testng.ITestNGListener
│   │   │               └── org/
│   │   │                   └── eclipse/
│   │   │                       └── che/
│   │   │                           └── commons/
│   │   │                               └── test/
│   │   │                                   └── db/
│   │   │                                       └── test-persistence-1.xml
│   │   ├── che-core-commons-tracing/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── eclipse/
│   │   │                       └── che/
│   │   │                           └── commons/
│   │   │                               └── tracing/
│   │   │                                   ├── AnnotationAwareBooleanTag.java
│   │   │                                   ├── AnnotationAwareIntTag.java
│   │   │                                   ├── AnnotationAwareStringTag.java
│   │   │                                   └── TracingTags.java
│   │   └── pom.xml
│   └── pom.xml
├── deploy/
│   └── cert-manager/
│       ├── ca-cert-generator-role-binding.yml
│       ├── ca-cert-generator-role.yml
│       ├── che-certificate.yml
│       └── che-cluster-issuer.yml
├── devfile.yaml
├── docs/
│   ├── README.md
│   └── grafana/
│       ├── dashboard.json
│       └── openshift-console-dashboard.json
├── infrastructures/
│   ├── infrastructure-distributed/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── eclipse/
│   │       │               └── che/
│   │       │                   └── multiuser/
│   │       │                       └── api/
│   │       │                           └── distributed/
│   │       │                               ├── WorkspaceStopPropagator.java
│   │       │                               ├── cache/
│   │       │                               │   ├── JGroupsWorkspaceStatusCache.java
│   │       │                               │   ├── ReplicatedMapNotificationAdapter.java
│   │       │                               │   └── StatusChangeListener.java
│   │       │                               ├── lock/
│   │       │                               │   └── JGroupsWorkspaceLockService.java
│   │       │                               └── subscription/
│   │       │                                   └── DistributedRemoteSubscriptionStorage.java
│   │       └── test/
│   │           └── resources/
│   │               └── logback-test.xml
│   ├── infrastructure-factory/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── eclipse/
│   │       │               └── che/
│   │       │                   └── api/
│   │       │                       └── factory/
│   │       │                           └── server/
│   │       │                               └── scm/
│   │       │                                   ├── KubernetesScmModule.java
│   │       │                                   └── kubernetes/
│   │       │                                       ├── KubernetesAuthorisationRequestManager.java
│   │       │                                       ├── KubernetesGitCredentialManager.java
│   │       │                                       └── KubernetesPersonalAccessTokenManager.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── eclipse/
│   │           │           └── che/
│   │           │               └── api/
│   │           │                   └── factory/
│   │           │                       └── server/
│   │           │                           └── scm/
│   │           │                               └── kubernetes/
│   │           │                                   ├── KubernetesAuthorisationRequestManagerTest.java
│   │           │                                   ├── KubernetesGitCredentialManagerTest.java
│   │           │                                   └── KubernetesPersonalAccessTokenManagerTest.java
│   │           └── resources/
│   │               └── logback-test.xml
│   ├── infrastructure-metrics/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── eclipse/
│   │       │               └── che/
│   │       │                   └── workspace/
│   │       │                       └── infrastructure/
│   │       │                           └── metrics/
│   │       │                               ├── CurrentLogwatchersMeterBinder.java
│   │       │                               └── InfrastructureMetricsModule.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── eclipse/
│   │                       └── che/
│   │                           └── workspace/
│   │                               └── infrastructure/
│   │                                   └── metrics/
│   │                                       └── CurrentLogwatchersMeterBinderTest.java
│   ├── infrastructure-permission/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── eclipse/
│   │       │               └── che/
│   │       │                   └── multiuser/
│   │       │                       └── permission/
│   │       │                           └── workspace/
│   │       │                               └── infra/
│   │       │                                   └── kubernetes/
│   │       │                                       └── BrokerServicePermissionFilter.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── eclipse/
│   │           │           └── che/
│   │           │               └── multiuser/
│   │           │                   └── permission/
│   │           │                       └── workspace/
│   │           │                           └── infra/
│   │           │                               └── kubernetes/
│   │           │                                   └── BrokerServicePermissionFilterTest.java
│   │           └── resources/
│   │               └── logback-test.xml
│   ├── kubernetes/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── eclipse/
│   │       │               └── che/
│   │       │                   └── workspace/
│   │       │                       └── infrastructure/
│   │       │                           └── kubernetes/
│   │       │                               ├── Annotations.java
│   │       │                               ├── CheServerKubernetesClientFactory.java
│   │       │                               ├── Constants.java
│   │       │                               ├── K8sInfraNamespaceWsAttributeValidator.java
│   │       │                               ├── KubernetesClientConfigFactory.java
│   │       │                               ├── KubernetesClientFactory.java
│   │       │                               ├── KubernetesClientTermination.java
│   │       │                               ├── KubernetesEnvironmentProvisioner.java
│   │       │                               ├── KubernetesInfraModule.java
│   │       │                               ├── KubernetesInfrastructure.java
│   │       │                               ├── KubernetesInfrastructureException.java
│   │       │                               ├── MachineLogsPublisher.java
│   │       │                               ├── Names.java
│   │       │                               ├── RuntimeLogsPublisher.java
│   │       │                               ├── StartSynchronizer.java
│   │       │                               ├── StartSynchronizerFactory.java
│   │       │                               ├── Warnings.java
│   │       │                               ├── api/
│   │       │                               │   ├── server/
│   │       │                               │   │   ├── KubernetesNamespaceService.java
│   │       │                               │   │   └── impls/
│   │       │                               │   │       └── KubernetesNamespaceMetaImpl.java
│   │       │                               │   └── shared/
│   │       │                               │       ├── KubernetesNamespaceMeta.java
│   │       │                               │       └── dto/
│   │       │                               │           ├── DockerAuthConfig.java
│   │       │                               │           ├── DockerAuthConfigs.java
│   │       │                               │           └── KubernetesNamespaceMetaDto.java
│   │       │                               ├── authorization/
│   │       │                               │   ├── AuthorizationChecker.java
│   │       │                               │   ├── AuthorizationException.java
│   │       │                               │   ├── KubernetesOIDCAuthorizationCheckerImpl.java
│   │       │                               │   └── PermissionsCleaner.java
│   │       │                               ├── cache/
│   │       │                               │   ├── KubernetesMachineCache.java
│   │       │                               │   ├── KubernetesRuntimeStateCache.java
│   │       │                               │   └── jpa/
│   │       │                               │       ├── JpaKubernetesMachineCache.java
│   │       │                               │       ├── JpaKubernetesRuntimeCacheModule.java
│   │       │                               │       └── JpaKubernetesRuntimeStateCache.java
│   │       │                               ├── devfile/
│   │       │                               │   ├── ContainerSearch.java
│   │       │                               │   ├── DockerimageComponentToWorkspaceApplier.java
│   │       │                               │   ├── KubernetesComponentToWorkspaceApplier.java
│   │       │                               │   ├── KubernetesComponentValidator.java
│   │       │                               │   ├── KubernetesDevfileBindings.java
│   │       │                               │   ├── KubernetesEnvironmentProvisioner.java
│   │       │                               │   └── SelectorFilter.java
│   │       │                               ├── docker/
│   │       │                               │   └── auth/
│   │       │                               │       └── UserSpecificDockerRegistryCredentialsProvider.java
│   │       │                               ├── environment/
│   │       │                               │   ├── CheInstallationLocation.java
│   │       │                               │   ├── KubernetesEnvironment.java
│   │       │                               │   ├── KubernetesEnvironmentFactory.java
│   │       │                               │   ├── KubernetesEnvironmentPodsValidator.java
│   │       │                               │   ├── KubernetesEnvironmentValidator.java
│   │       │                               │   ├── KubernetesRecipeParser.java
│   │       │                               │   ├── PodMerger.java
│   │       │                               │   └── util/
│   │       │                               │       ├── EntryPoint.java
│   │       │                               │       └── EntryPointParser.java
│   │       │                               ├── event/
│   │       │                               │   ├── KubernetesRuntimeStoppedEvent.java
│   │       │                               │   └── KubernetesRuntimeStoppingEvent.java
│   │       │                               ├── model/
│   │       │                               │   ├── KubernetesMachineImpl.java
│   │       │                               │   ├── KubernetesRuntimeCommandImpl.java
│   │       │                               │   ├── KubernetesRuntimeState.java
│   │       │                               │   └── KubernetesServerImpl.java
│   │       │                               ├── multiuser/
│   │       │                               │   └── oauth/
│   │       │                               │       └── KubernetesOidcProviderConfigFactory.java
│   │       │                               ├── namespace/
│   │       │                               │   ├── AbstractWorkspaceServiceAccount.java
│   │       │                               │   ├── K8sVersion.java
│   │       │                               │   ├── KubernetesConfigsMaps.java
│   │       │                               │   ├── KubernetesDeployments.java
│   │       │                               │   ├── KubernetesIngresses.java
│   │       │                               │   ├── KubernetesNamespace.java
│   │       │                               │   ├── KubernetesNamespaceFactory.java
│   │       │                               │   ├── KubernetesObjectUtil.java
│   │       │                               │   ├── KubernetesPersistentVolumeClaims.java
│   │       │                               │   ├── KubernetesSecrets.java
│   │       │                               │   ├── KubernetesServices.java
│   │       │                               │   ├── KubernetesWorkspaceServiceAccount.java
│   │       │                               │   ├── NamespaceNameValidator.java
│   │       │                               │   ├── RemoveNamespaceOnWorkspaceRemove.java
│   │       │                               │   ├── configurator/
│   │       │                               │   │   ├── CredentialsSecretConfigurator.java
│   │       │                               │   │   ├── GitconfigConfigurator.java
│   │       │                               │   │   ├── NamespaceConfigurator.java
│   │       │                               │   │   ├── OAuthTokenSecretsConfigurator.java
│   │       │                               │   │   ├── PreferencesConfigMapConfigurator.java
│   │       │                               │   │   ├── SshConfigConfigurator.java
│   │       │                               │   │   ├── SshKeysConfigurator.java
│   │       │                               │   │   ├── UserPermissionConfigurator.java
│   │       │                               │   │   ├── UserPreferencesConfigurator.java
│   │       │                               │   │   ├── UserProfileConfigurator.java
│   │       │                               │   │   └── WorkspaceServiceAccountConfigurator.java
│   │       │                               │   ├── event/
│   │       │                               │   │   ├── PodActionHandler.java
│   │       │                               │   │   ├── PodEvent.java
│   │       │                               │   │   └── PodEventHandler.java
│   │       │                               │   └── log/
│   │       │                               │       ├── ContainerLogWatch.java
│   │       │                               │       ├── LogWatchTimeouts.java
│   │       │                               │       ├── LogWatcher.java
│   │       │                               │       ├── PodLogHandler.java
│   │       │                               │       ├── PodLogToEventPublisher.java
│   │       │                               │       └── event/
│   │       │                               │           ├── WatchLogStartedEvent.java
│   │       │                               │           └── WatchLogStoppedEvent.java
│   │       │                               ├── provision/
│   │       │                               │   ├── CertificateProvisioner.java
│   │       │                               │   ├── ConfigurationProvisioner.java
│   │       │                               │   ├── GatewayRouterProvisioner.java
│   │       │                               │   ├── GatewayTlsProvisioner.java
│   │       │                               │   ├── GitConfigProvisioner.java
│   │       │                               │   ├── ImagePullSecretProvisioner.java
│   │       │                               │   ├── IngressTlsProvisioner.java
│   │       │                               │   ├── KubernetesCheApiExternalEnvVarProvider.java
│   │       │                               │   ├── KubernetesCheApiInternalEnvVarProvider.java
│   │       │                               │   ├── KubernetesPreviewUrlCommandProvisioner.java
│   │       │                               │   ├── NamespaceProvisioner.java
│   │       │                               │   ├── PodTerminationGracePeriodProvisioner.java
│   │       │                               │   ├── PreviewUrlCommandProvisioner.java
│   │       │                               │   ├── SecurityContextProvisioner.java
│   │       │                               │   ├── ServiceAccountProvisioner.java
│   │       │                               │   ├── SshKeysProvisioner.java
│   │       │                               │   ├── TlsProvisioner.java
│   │       │                               │   ├── TlsProvisionerProvider.java
│   │       │                               │   ├── UniqueNamesProvisioner.java
│   │       │                               │   ├── VcsSslCertificateProvisioner.java
│   │       │                               │   ├── env/
│   │       │                               │   │   └── EnvVarsConverter.java
│   │       │                               │   ├── limits/
│   │       │                               │   │   └── ram/
│   │       │                               │   │       └── ContainerResourceProvisioner.java
│   │       │                               │   ├── restartpolicy/
│   │       │                               │   │   └── RestartPolicyRewriter.java
│   │       │                               │   ├── secret/
│   │       │                               │   │   ├── EnvironmentVariableSecretApplier.java
│   │       │                               │   │   ├── FileSecretApplier.java
│   │       │                               │   │   ├── GitCredentialStorageFileSecretApplier.java
│   │       │                               │   │   ├── KubernetesSecretAnnotationNames.java
│   │       │                               │   │   ├── KubernetesSecretApplier.java
│   │       │                               │   │   └── SecretAsContainerResourceProvisioner.java
│   │       │                               │   └── server/
│   │       │                               │       └── ServersConverter.java
│   │       │                               ├── server/
│   │       │                               │   ├── AbstractExposureStrategyAwareProvider.java
│   │       │                               │   ├── IngressAnnotationsProvider.java
│   │       │                               │   ├── KubernetesServerExposer.java
│   │       │                               │   ├── PreviewUrlExposer.java
│   │       │                               │   ├── RuntimeServerBuilder.java
│   │       │                               │   ├── ServerServiceBuilder.java
│   │       │                               │   ├── WorkspaceExposureType.java
│   │       │                               │   ├── external/
│   │       │                               │   │   ├── CombinedSingleHostServerExposer.java
│   │       │                               │   │   ├── DefaultHostExternalServiceExposureStrategy.java
│   │       │                               │   │   ├── ExternalServerExposer.java
│   │       │                               │   │   ├── ExternalServerExposerProvider.java
│   │       │                               │   │   ├── ExternalServerIngressBuilder.java
│   │       │                               │   │   ├── ExternalServiceExposureStrategy.java
│   │       │                               │   │   ├── GatewayRouteConfigGenerator.java
│   │       │                               │   │   ├── GatewayRouteConfigGeneratorFactory.java
│   │       │                               │   │   ├── GatewayServerExposer.java
│   │       │                               │   │   ├── IngressPathTransformInverter.java
│   │       │                               │   │   ├── IngressServerExposer.java
│   │       │                               │   │   ├── KubernetesExternalServerExposerProvider.java
│   │       │                               │   │   ├── MultiHostExternalServiceExposureStrategy.java
│   │       │                               │   │   ├── MultihostIngressServerExposer.java
│   │       │                               │   │   ├── ServiceExposureStrategyProvider.java
│   │       │                               │   │   ├── SingleHostExternalServiceExposureStrategy.java
│   │       │                               │   │   └── TraefikGatewayRouteConfigGenerator.java
│   │       │                               │   ├── resolver/
│   │       │                               │   │   ├── AbstractServerResolver.java
│   │       │                               │   │   ├── AbstractServerResolverFactory.java
│   │       │                               │   │   ├── ConfigMapServerResolver.java
│   │       │                               │   │   ├── IngressServerResolver.java
│   │       │                               │   │   ├── KubernetesServerResolverFactory.java
│   │       │                               │   │   └── ServerResolver.java
│   │       │                               │   └── secure/
│   │       │                               │       ├── DefaultSecureServerExposer.java
│   │       │                               │       ├── ProxyProvisioner.java
│   │       │                               │       ├── ProxyProvisionerFactory.java
│   │       │                               │       ├── SecureServerExposer.java
│   │       │                               │       ├── SecureServerExposerFactory.java
│   │       │                               │       ├── SecureServerExposerFactoryProvider.java
│   │       │                               │       └── jwtproxy/
│   │       │                               │           ├── AbstractJwtProxyProvisioner.java
│   │       │                               │           ├── CookiePathStrategy.java
│   │       │                               │           ├── JwtProxyConfigBuilder.java
│   │       │                               │           ├── JwtProxyProvisioner.java
│   │       │                               │           ├── JwtProxySecureServerExposer.java
│   │       │                               │           ├── MultiHostCookiePathStrategy.java
│   │       │                               │           ├── PassThroughProxyProvisioner.java
│   │       │                               │           ├── PassThroughProxySecureServerExposer.java
│   │       │                               │           ├── factory/
│   │       │                               │           │   ├── JwtProxyConfigBuilderFactory.java
│   │       │                               │           │   ├── JwtProxyProvisionerFactory.java
│   │       │                               │           │   ├── JwtProxySecureServerExposerFactory.java
│   │       │                               │           │   ├── PassThroughProxyProvisionerFactory.java
│   │       │                               │           │   └── PassThroughProxySecureServerExposerFactory.java
│   │       │                               │           └── model/
│   │       │                               │               ├── Config.java
│   │       │                               │               ├── JWTProxy.java
│   │       │                               │               ├── RegistrableComponentConfig.java
│   │       │                               │               ├── SignerProxyConfig.java
│   │       │                               │               ├── VerifierConfig.java
│   │       │                               │               └── VerifierProxyConfig.java
│   │       │                               ├── util/
│   │       │                               │   ├── Containers.java
│   │       │                               │   ├── EnvVars.java
│   │       │                               │   ├── GatewayConfigmapLabels.java
│   │       │                               │   ├── Ingresses.java
│   │       │                               │   ├── KubernetesSharedPool.java
│   │       │                               │   ├── KubernetesSize.java
│   │       │                               │   ├── NonTlsDistributedClusterModeNotifier.java
│   │       │                               │   ├── PodEvents.java
│   │       │                               │   ├── RuntimeEventsPublisher.java
│   │       │                               │   ├── Services.java
│   │       │                               │   ├── TracingSpanConstants.java
│   │       │                               │   ├── UnrecoverablePodEventListener.java
│   │       │                               │   └── UnrecoverablePodEventListenerFactory.java
│   │       │                               └── wsplugins/
│   │       │                                   ├── BrokersResult.java
│   │       │                                   ├── ChePluginsVolumeApplier.java
│   │       │                                   ├── K8sContainerResolver.java
│   │       │                                   ├── K8sContainerResolverBuilder.java
│   │       │                                   ├── KubernetesArtifactsBrokerApplier.java
│   │       │                                   ├── KubernetesPluginsToolingApplier.java
│   │       │                                   ├── KubernetesPluginsToolingValidator.java
│   │       │                                   ├── MachineResolver.java
│   │       │                                   ├── MachineResolverBuilder.java
│   │       │                                   ├── PluginBrokerManager.java
│   │       │                                   ├── SidecarServicesProvisioner.java
│   │       │                                   ├── brokerphases/
│   │       │                                   │   ├── BrokerEnvironmentFactory.java
│   │       │                                   │   ├── BrokerPhase.java
│   │       │                                   │   ├── DeployBroker.java
│   │       │                                   │   ├── KubernetesBrokerEnvironmentFactory.java
│   │       │                                   │   ├── ListenBrokerEvents.java
│   │       │                                   │   ├── PrepareStorage.java
│   │       │                                   │   └── WaitBrokerResult.java
│   │       │                                   └── events/
│   │       │                                       ├── BrokerEvent.java
│   │       │                                       ├── BrokerService.java
│   │       │                                       └── BrokerStatusListener.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── eclipse/
│   │           │           └── che/
│   │           │               └── workspace/
│   │           │                   └── infrastructure/
│   │           │                       └── kubernetes/
│   │           │                           ├── AnnotationsTest.java
│   │           │                           ├── K8sInfraNamespaceWsAttributeValidatorTest.java
│   │           │                           ├── KubernetesArtifactsBrokerApplierTest.java
│   │           │                           ├── KubernetesEnvironmentProvisionerTest.java
│   │           │                           ├── StartSynchronizerTest.java
│   │           │                           ├── api/
│   │           │                           │   └── server/
│   │           │                           │       └── KubernetesNamespaceServiceTest.java
│   │           │                           ├── authorization/
│   │           │                           │   └── KubernetesAuthorizationCheckerTest.java
│   │           │                           ├── devfile/
│   │           │                           │   ├── ContainerSearchTest.java
│   │           │                           │   ├── DockerimageComponentToWorkspaceApplierTest.java
│   │           │                           │   ├── KubernetesComponentIntegrityValidatorTest.java
│   │           │                           │   ├── KubernetesComponentToWorkspaceApplierTest.java
│   │           │                           │   └── KubernetesEnvironmentProvisionerTest.java
│   │           │                           ├── docker/
│   │           │                           │   └── auth/
│   │           │                           │       └── UserSpecificDockerRegistryCredentialsProviderTest.java
│   │           │                           ├── environment/
│   │           │                           │   ├── CheInstallationLocationTest.java
│   │           │                           │   ├── KubernetesEnvironmentFactoryTest.java
│   │           │                           │   ├── KubernetesEnvironmentPodsValidatorTest.java
│   │           │                           │   ├── KubernetesEnvironmentValidatorTest.java
│   │           │                           │   ├── PodMergerTest.java
│   │           │                           │   └── util/
│   │           │                           │       └── EntryPointParserTest.java
│   │           │                           ├── multiuser/
│   │           │                           │   └── oauth/
│   │           │                           │       └── KubernetesOidcProviderConfigFactoryTest.java
│   │           │                           ├── namespace/
│   │           │                           │   ├── K8sVersionTest.java
│   │           │                           │   ├── KubernetesDeploymentsTest.java
│   │           │                           │   ├── KubernetesNamespaceFactoryTest.java
│   │           │                           │   ├── KubernetesNamespaceTest.java
│   │           │                           │   ├── KubernetesObjectUtilTest.java
│   │           │                           │   ├── KubernetesSecretsTest.java
│   │           │                           │   ├── KubernetesWorkspaceServiceAccountTest.java
│   │           │                           │   ├── NamespaceNameValidatorTest.java
│   │           │                           │   ├── RemoveNamespaceOnWorkspaceRemoveTest.java
│   │           │                           │   ├── configurator/
│   │           │                           │   │   ├── CredentialsSecretConfiguratorTest.java
│   │           │                           │   │   ├── GitconfigConfiguratorTest.java
│   │           │                           │   │   ├── PreferencesConfigMapConfiguratorTest.java
│   │           │                           │   │   ├── SshKeysConfiguratorTest.java
│   │           │                           │   │   ├── UserPermissionConfiguratorTest.java
│   │           │                           │   │   ├── UserPreferencesConfiguratorTest.java
│   │           │                           │   │   └── WorkspaceServiceAccountConfiguratorTest.java
│   │           │                           │   ├── log/
│   │           │                           │   │   ├── ContainerLogWatchTest.java
│   │           │                           │   │   ├── LogWatcherTest.java
│   │           │                           │   │   └── PodLogToEventPublisherTest.java
│   │           │                           │   └── pvc/
│   │           │                           │       └── TestObjects.java
│   │           │                           ├── provision/
│   │           │                           │   ├── CertificateProvisionerTest.java
│   │           │                           │   ├── GatewayRouterProvisionerTest.java
│   │           │                           │   ├── GatewayTlsProvisionerTest.java
│   │           │                           │   ├── GitConfigProvisionerTest.java
│   │           │                           │   ├── ImagePullSecretProvisionerTest.java
│   │           │                           │   ├── IngressTlsProvisionerTest.java
│   │           │                           │   ├── KubernetesPreviewUrlCommandProvisionerTest.java
│   │           │                           │   ├── SecurityContextProvisionerTest.java
│   │           │                           │   ├── SshKeySecretProvisionerTest.java
│   │           │                           │   ├── UniqueNamesProvisionerTest.java
│   │           │                           │   ├── VcsSslCertificateProvisionerTest.java
│   │           │                           │   ├── env/
│   │           │                           │   │   └── EnvVarsConverterTest.java
│   │           │                           │   ├── limits/
│   │           │                           │   │   └── ram/
│   │           │                           │   │       └── ContainerResourceProvisionerTest.java
│   │           │                           │   ├── restartpolicy/
│   │           │                           │   │   └── RestartPolicyRewriterTest.java
│   │           │                           │   └── secret/
│   │           │                           │       ├── EnvironmentVariableSecretApplierTest.java
│   │           │                           │       ├── FileSecretApplierTest.java
│   │           │                           │       ├── GitCredentialStorageFileSecretApplierTest.java
│   │           │                           │       └── SecretAsContainerResourceProvisionerTest.java
│   │           │                           ├── server/
│   │           │                           │   ├── IngressServerResolverTest.java
│   │           │                           │   ├── KubernetesServerExposerTest.java
│   │           │                           │   ├── PreviewUrlExposerTest.java
│   │           │                           │   ├── external/
│   │           │                           │   │   ├── CombinedSingleHostServerExposerTest.java
│   │           │                           │   │   ├── DefaultHostExternalServiceExposureStrategyTest.java
│   │           │                           │   │   ├── ExternalServerIngressBuilderTest.java
│   │           │                           │   │   ├── GatewayServerExposerTest.java
│   │           │                           │   │   ├── IngressPathTransformInverterTest.java
│   │           │                           │   │   ├── IngressServerExposerTest.java
│   │           │                           │   │   ├── MultiHostExternalServiceExposureStrategyTest.java
│   │           │                           │   │   └── TraefikGatewayRouteConfigGeneratorTest.java
│   │           │                           │   ├── resolver/
│   │           │                           │   │   ├── AbstractServerResolverTest.java
│   │           │                           │   │   └── ConfigMapServerResolverTest.java
│   │           │                           │   └── secure/
│   │           │                           │       ├── SecureServerExposerFactoryProviderTest.java
│   │           │                           │       └── jwtproxy/
│   │           │                           │           ├── JwtProxyConfigBuilderTest.java
│   │           │                           │           ├── JwtProxyProvisionerTest.java
│   │           │                           │           ├── JwtProxySecureServerExposerTest.java
│   │           │                           │           └── PassThroughProxyProvisionerTest.java
│   │           │                           ├── util/
│   │           │                           │   ├── ContainersTest.java
│   │           │                           │   ├── EnvVarsTest.java
│   │           │                           │   ├── GatewayConfigmapLabelsTest.java
│   │           │                           │   ├── IngressesTest.java
│   │           │                           │   ├── KubernetesSizeTest.java
│   │           │                           │   ├── PodEventsTest.java
│   │           │                           │   ├── ServicesTest.java
│   │           │                           │   └── UnrecoverablePodEventListenerTest.java
│   │           │                           └── wsplugins/
│   │           │                               ├── BrokersResultTest.java
│   │           │                               ├── K8sContainerResolverBuilderTest.java
│   │           │                               ├── K8sContainerResolverTest.java
│   │           │                               ├── KubernetesPluginsToolingApplierTest.java
│   │           │                               ├── MachineResolverTest.java
│   │           │                               ├── SidecarServicesProvisionerTest.java
│   │           │                               ├── brokerphases/
│   │           │                               │   ├── BrokerEnvironmentFactoryTest.java
│   │           │                               │   └── DeployBrokerTest.java
│   │           │                               └── events/
│   │           │                                   └── BrokerStatusListenerTest.java
│   │           └── resources/
│   │               ├── META-INF/
│   │               │   └── services/
│   │               │       └── org.eclipse.che.commons.test.tck.TckModule
│   │               ├── devfile/
│   │               │   ├── petclinic.yaml
│   │               │   └── petclinicPods.yaml
│   │               ├── jwtproxy-confg.yaml
│   │               └── logback-test.xml
│   ├── openshift/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── eclipse/
│   │       │               └── che/
│   │       │                   └── workspace/
│   │       │                       └── infrastructure/
│   │       │                           └── openshift/
│   │       │                               ├── CheServerOpenshiftClientFactory.java
│   │       │                               ├── Constants.java
│   │       │                               ├── OpenShiftClientFactory.java
│   │       │                               ├── OpenShiftEnvironmentProvisioner.java
│   │       │                               ├── OpenShiftInfraModule.java
│   │       │                               ├── OpenShiftInfrastructure.java
│   │       │                               ├── authorization/
│   │       │                               │   └── OpenShiftAuthorizationCheckerImpl.java
│   │       │                               ├── devfile/
│   │       │                               │   └── OpenshiftComponentToWorkspaceApplier.java
│   │       │                               ├── environment/
│   │       │                               │   ├── OpenShiftEnvironment.java
│   │       │                               │   ├── OpenShiftEnvironmentFactory.java
│   │       │                               │   └── OpenShiftEnvironmentValidator.java
│   │       │                               ├── multiuser/
│   │       │                               │   └── oauth/
│   │       │                               │       └── OpenshiftTokenInitializationFilter.java
│   │       │                               ├── project/
│   │       │                               │   ├── OpenShiftProject.java
│   │       │                               │   ├── OpenShiftProjectFactory.java
│   │       │                               │   ├── OpenShiftRoutes.java
│   │       │                               │   ├── OpenShiftWorkspaceServiceAccount.java
│   │       │                               │   └── configurator/
│   │       │                               │       └── OpenShiftWorkspaceServiceAccountConfigurator.java
│   │       │                               ├── provision/
│   │       │                               │   ├── OpenShiftPreviewUrlCommandProvisioner.java
│   │       │                               │   ├── OpenShiftUniqueNamesProvisioner.java
│   │       │                               │   └── RouteTlsProvisioner.java
│   │       │                               ├── server/
│   │       │                               │   ├── OpenShiftCookiePathStrategy.java
│   │       │                               │   ├── OpenShiftPreviewUrlExposer.java
│   │       │                               │   ├── OpenShiftServerExposureStrategy.java
│   │       │                               │   ├── OpenShiftServerResolverFactory.java
│   │       │                               │   ├── RouteServerExposer.java
│   │       │                               │   ├── RouteServerResolver.java
│   │       │                               │   └── external/
│   │       │                               │       └── OpenShiftExternalServerExposerProvider.java
│   │       │                               ├── util/
│   │       │                               │   └── Routes.java
│   │       │                               └── wsplugins/
│   │       │                                   └── brokerphases/
│   │       │                                       └── OpenshiftBrokerEnvironmentFactory.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── eclipse/
│   │           │           └── che/
│   │           │               └── workspace/
│   │           │                   └── infrastructure/
│   │           │                       └── openshift/
│   │           │                           ├── OpenShiftEnvironmentProvisionerTest.java
│   │           │                           ├── RouteServerResolverTest.java
│   │           │                           ├── authorization/
│   │           │                           │   └── OpenShiftAuthorizationCheckerTest.java
│   │           │                           ├── devfile/
│   │           │                           │   └── OpenshiftComponentToWorkspaceApplierTest.java
│   │           │                           ├── environment/
│   │           │                           │   ├── OpenShiftEnvironmentFactoryTest.java
│   │           │                           │   └── OpenShiftEnvironmentValidatorTest.java
│   │           │                           ├── multiuser/
│   │           │                           │   └── oauth/
│   │           │                           │       └── OpenshiftTokenInitializationFilterTest.java
│   │           │                           ├── project/
│   │           │                           │   ├── OpenShiftProjectFactoryTest.java
│   │           │                           │   ├── OpenShiftProjectTest.java
│   │           │                           │   └── configurator/
│   │           │                           │       └── OpenShiftWorkspaceServiceAccountConfiguratorTest.java
│   │           │                           ├── provision/
│   │           │                           │   ├── OpenShiftPreviewUrlCommandProvisionerTest.java
│   │           │                           │   ├── OpenShiftUniqueNamesProvisionerTest.java
│   │           │                           │   └── RouteTlsProvisionerTest.java
│   │           │                           ├── server/
│   │           │                           │   ├── OpenShiftExternalServerExposerTest.java
│   │           │                           │   └── OpenShiftPreviewUrlExposerTest.java
│   │           │                           └── util/
│   │           │                               └── RoutesTest.java
│   │           └── resources/
│   │               ├── devfile/
│   │               │   └── petclinic.yaml
│   │               └── logback-test.xml
│   └── pom.xml
├── make-release.sh
├── multiuser/
│   ├── api/
│   │   ├── che-multiuser-api-authentication-commons/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       └── org/
│   │   │       │           └── eclipse/
│   │   │       │               └── che/
│   │   │       │                   └── multiuser/
│   │   │       │                       └── api/
│   │   │       │                           └── authentication/
│   │   │       │                               └── commons/
│   │   │       │                                   ├── Constants.java
│   │   │       │                                   ├── DestroySessionListener.java
│   │   │       │                                   ├── SessionStore.java
│   │   │       │                                   ├── SubjectHttpRequestWrapper.java
│   │   │       │                                   ├── filter/
│   │   │       │                                   │   └── MultiUserEnvironmentInitializationFilter.java
│   │   │       │                                   └── token/
│   │   │       │                                       ├── ChainedTokenExtractor.java
│   │   │       │                                       ├── HeaderRequestTokenExtractor.java
│   │   │       │                                       ├── QueryRequestTokenExtractor.java
│   │   │       │                                       └── RequestTokenExtractor.java
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── eclipse/
│   │   │                       └── che/
│   │   │                           └── multiuser/
│   │   │                               └── api/
│   │   │                                   └── authentication/
│   │   │                                       └── commons/
│   │   │                                           ├── SessionStoreTest.java
│   │   │                                           ├── SubjectHttpRequestWrapperTest.java
│   │   │                                           ├── filter/
│   │   │                                           │   └── MultiUserEnvironmentInitializationFilterTest.java
│   │   │                                           └── token/
│   │   │                                               └── HeaderRequestTokenExtractorTest.java
│   │   ├── che-multiuser-api-authorization/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── eclipse/
│   │   │                       └── che/
│   │   │                           └── multiuser/
│   │   │                               └── api/
│   │   │                                   └── permission/
│   │   │                                       └── server/
│   │   │                                           ├── AuthorizedSubject.java
│   │   │                                           ├── HttpPermissionCheckerImpl.java
│   │   │                                           └── PermissionChecker.java
│   │   ├── che-multiuser-api-authorization-impl/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       └── org/
│   │   │       │           └── eclipse/
│   │   │       │               └── che/
│   │   │       │                   └── multiuser/
│   │   │       │                       └── api/
│   │   │       │                           └── permission/
│   │   │       │                               └── server/
│   │   │       │                                   └── PermissionCheckerImpl.java
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── eclipse/
│   │   │           │           └── che/
│   │   │           │               └── multiuser/
│   │   │           │                   └── api/
│   │   │           │                       └── permission/
│   │   │           │                           └── server/
│   │   │           │                               └── PermissionCheckerImplTest.java
│   │   │           └── resources/
│   │   │               └── logback-test.xml
│   │   ├── che-multiuser-api-permission/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── eclipse/
│   │   │                       └── che/
│   │   │                           └── multiuser/
│   │   │                               └── api/
│   │   │                                   └── permission/
│   │   │                                       └── server/
│   │   │                                           ├── AbstractPermissionsDomain.java
│   │   │                                           ├── InstanceParameterValidator.java
│   │   │                                           ├── PermissionsManager.java
│   │   │                                           ├── PermissionsModule.java
│   │   │                                           ├── SuperPrivilegesChecker.java
│   │   │                                           ├── SystemDomain.java
│   │   │                                           ├── account/
│   │   │                                           │   ├── AccountOperation.java
│   │   │                                           │   └── AccountPermissionsChecker.java
│   │   │                                           ├── event/
│   │   │                                           │   ├── PermissionsCreatedEvent.java
│   │   │                                           │   └── PermissionsRemovedEvent.java
│   │   │                                           ├── filter/
│   │   │                                           │   ├── GetPermissionsFilter.java
│   │   │                                           │   ├── RemovePermissionsFilter.java
│   │   │                                           │   ├── SetPermissionsFilter.java
│   │   │                                           │   └── check/
│   │   │                                           │       ├── DefaultRemovePermissionsChecker.java
│   │   │                                           │       ├── DefaultSetPermissionsChecker.java
│   │   │                                           │       ├── DomainsPermissionsCheckers.java
│   │   │                                           │       ├── RemovePermissionsChecker.java
│   │   │                                           │       └── SetPermissionsChecker.java
│   │   │                                           ├── jsonrpc/
│   │   │                                           │   ├── JsonRpcPermissionsFilterAdapter.java
│   │   │                                           │   ├── RemoteSubscriptionPermissionCheck.java
│   │   │                                           │   └── RemoteSubscriptionPermissionManager.java
│   │   │                                           ├── model/
│   │   │                                           │   └── impl/
│   │   │                                           │       ├── AbstractPermissions.java
│   │   │                                           │       └── SystemPermissionsImpl.java
│   │   │                                           └── spi/
│   │   │                                               └── PermissionsDao.java
│   │   ├── che-multiuser-api-permission-shared/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── eclipse/
│   │   │                       └── che/
│   │   │                           └── multiuser/
│   │   │                               └── api/
│   │   │                                   └── permission/
│   │   │                                       └── shared/
│   │   │                                           ├── dto/
│   │   │                                           │   ├── DomainDto.java
│   │   │                                           │   └── PermissionsDto.java
│   │   │                                           ├── event/
│   │   │                                           │   ├── EventType.java
│   │   │                                           │   └── PermissionsEvent.java
│   │   │                                           └── model/
│   │   │                                               ├── Permissions.java
│   │   │                                               └── PermissionsDomain.java
│   │   └── pom.xml
│   ├── machine-auth/
│   │   ├── che-multiuser-machine-authentication/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       └── org/
│   │   │       │           └── eclipse/
│   │   │       │               └── che/
│   │   │       │                   └── multiuser/
│   │   │       │                       └── machine/
│   │   │       │                           └── authentication/
│   │   │       │                               └── server/
│   │   │       │                                   ├── MachineAuthModule.java
│   │   │       │                                   ├── MachineAuthenticatedResource.java
│   │   │       │                                   ├── MachineLoginFilter.java
│   │   │       │                                   ├── MachineSessionInvalidator.java
│   │   │       │                                   ├── MachineSigningKeyResolver.java
│   │   │       │                                   ├── MachineTokenAccessFilter.java
│   │   │       │                                   ├── MachineTokenAuthorizedSubject.java
│   │   │       │                                   ├── MachineTokenProviderImpl.java
│   │   │       │                                   ├── MachineTokenRegistry.java
│   │   │       │                                   ├── NotMachineTokenJwtException.java
│   │   │       │                                   └── signature/
│   │   │       │                                       ├── SignatureAlgorithmEnvProvider.java
│   │   │       │                                       ├── SignatureKey.java
│   │   │       │                                       ├── SignatureKeyManager.java
│   │   │       │                                       ├── SignatureKeyManagerException.java
│   │   │       │                                       ├── SignatureKeyPair.java
│   │   │       │                                       ├── SignaturePublicKeyEnvProvider.java
│   │   │       │                                       ├── jpa/
│   │   │       │                                       │   └── JpaSignatureKeyDao.java
│   │   │       │                                       ├── model/
│   │   │       │                                       │   └── impl/
│   │   │       │                                       │       ├── SignatureKeyImpl.java
│   │   │       │                                       │       └── SignatureKeyPairImpl.java
│   │   │       │                                       └── spi/
│   │   │       │                                           └── SignatureKeyDao.java
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── eclipse/
│   │   │           │           └── che/
│   │   │           │               └── multiuser/
│   │   │           │                   └── machine/
│   │   │           │                       └── authentication/
│   │   │           │                           └── server/
│   │   │           │                               ├── MachineLoginFilterTest.java
│   │   │           │                               └── signature/
│   │   │           │                                   └── SignatureKeyManagerTest.java
│   │   │           └── resources/
│   │   │               ├── META-INF/
│   │   │               │   └── services/
│   │   │               │       └── org.eclipse.che.commons.test.tck.TckModule
│   │   │               └── logback-test.xml
│   │   ├── che-multiuser-machine-authentication-shared/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── eclipse/
│   │   │                       └── che/
│   │   │                           └── multiuser/
│   │   │                               └── machine/
│   │   │                                   └── authentication/
│   │   │                                       └── shared/
│   │   │                                           ├── Constants.java
│   │   │                                           └── dto/
│   │   │                                               └── MachineTokenDto.java
│   │   └── pom.xml
│   ├── oidc/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── eclipse/
│   │       │               └── che/
│   │       │                   └── multiuser/
│   │       │                       └── oidc/
│   │       │                           ├── OIDCInfo.java
│   │       │                           ├── OIDCInfoProvider.java
│   │       │                           ├── OIDCJwkProvider.java
│   │       │                           ├── OIDCJwtParserProvider.java
│   │       │                           ├── OIDCSigningKeyResolver.java
│   │       │                           └── filter/
│   │       │                               └── OidcTokenInitializationFilter.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── eclipse/
│   │                       └── che/
│   │                           └── multiuser/
│   │                               └── oidc/
│   │                                   └── filter/
│   │                                       └── OidcTokenInitializationFilterTest.java
│   └── pom.xml
├── pom.xml
├── typescript-dto/
│   ├── .gitignore
│   ├── .yarn/
│   │   └── releases/
│   │       └── yarn-4.12.0.cjs
│   ├── .yarnrc.yml
│   ├── Dockerfile
│   ├── README.md
│   ├── build.sh
│   ├── dto-pom.xml
│   ├── package.json
│   └── publish.sh
└── wsmaster/
    ├── che-core-api-account/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── account/
    │       │                       ├── api/
    │       │                       │   └── AccountManager.java
    │       │                       ├── shared/
    │       │                       │   └── model/
    │       │                       │       └── Account.java
    │       │                       └── spi/
    │       │                           ├── AccountDao.java
    │       │                           ├── AccountImpl.java
    │       │                           └── AccountValidator.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── account/
    │           │                   └── spi/
    │           │                       └── AccountValidatorTest.java
    │           └── resources/
    │               ├── META-INF/
    │               │   └── services/
    │               │       └── org.eclipse.che.commons.test.tck.TckModule
    │               └── logback-test.xml
    ├── che-core-api-auth/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── security/
    │       │                       ├── oauth/
    │       │                       │   ├── EmbeddedOAuthAPI.java
    │       │                       │   ├── OAuth2.gwt.xml
    │       │                       │   ├── OAuthAPI.java
    │       │                       │   ├── OAuthAuthenticationException.java
    │       │                       │   ├── OAuthAuthenticationService.java
    │       │                       │   ├── OAuthAuthenticator.java
    │       │                       │   ├── OAuthAuthenticatorProvider.java
    │       │                       │   ├── OAuthAuthenticatorProviderImpl.java
    │       │                       │   └── OAuthAuthenticatorTokenProvider.java
    │       │                       └── oauth1/
    │       │                           ├── OAuthAuthenticationException.java
    │       │                           ├── OAuthAuthenticationService.java
    │       │                           ├── OAuthAuthenticator.java
    │       │                           ├── OAuthAuthenticatorProvider.java
    │       │                           └── UserDeniedOAuthAuthenticationException.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── security/
    │           │                   ├── oauth/
    │           │                   │   └── EmbeddedOAuthAPITest.java
    │           │                   └── oauth1/
    │           │                       ├── OAuthAuthenticationServiceTest.java
    │           │                       └── OAuthAuthenticatorTest.java
    │           └── resources/
    │               └── logback-test.xml
    ├── che-core-api-auth-azure-devops/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── security/
    │                               └── oauth/
    │                                   ├── AzureDevOpsModule.java
    │                                   ├── AzureDevOpsOAuthAuthenticator.java
    │                                   ├── AzureDevOpsOAuthAuthenticatorProvider.java
    │                                   ├── AzureDevOpsRefreshToken.java
    │                                   ├── AzureDevOpsTokenResponse.java
    │                                   └── AzureDevOpsUserProfile.java
    ├── che-core-api-auth-bitbucket/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── security/
    │       │                       ├── BitbucketModule.java
    │       │                       ├── oauth/
    │       │                       │   ├── BitbucketOAuthAuthenticator.java
    │       │                       │   ├── BitbucketOAuthAuthenticatorProvider.java
    │       │                       │   └── BitbucketUser.java
    │       │                       └── oauth1/
    │       │                           ├── BitbucketServerOAuthAuthenticator.java
    │       │                           ├── BitbucketServerOAuthAuthenticatorProvider.java
    │       │                           └── NoopOAuthAuthenticator.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── security/
    │           │                   ├── BitbucketOAuthAuthenticatorProviderTest.java
    │           │                   └── oauth1/
    │           │                       └── BitbucketServerOAuthAuthenticatorProviderTest.java
    │           └── resources/
    │               └── logback-test.xml
    ├── che-core-api-auth-github/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── security/
    │       │                       └── oauth/
    │       │                           ├── GitHubOAuthAuthenticatorProvider.java
    │       │                           ├── GitHubOAuthAuthenticatorProviderSecond.java
    │       │                           └── GithubModule.java
    │       └── test/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── security/
    │                               └── oauth/
    │                                   └── GitHubOAuthAuthenticatorProviderTest.java
    ├── che-core-api-auth-github-common/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── security/
    │                               └── oauth/
    │                                   ├── AbstractGitHubOAuthAuthenticatorProvider.java
    │                                   ├── GitHubOAuthAuthenticator.java
    │                                   └── GitHubUser.java
    ├── che-core-api-auth-gitlab/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── security/
    │       │                       └── oauth/
    │       │                           ├── GitLabModule.java
    │       │                           ├── GitLabOAuthAuthenticatorProvider.java
    │       │                           └── GitLabOAuthAuthenticatorProviderSecond.java
    │       └── test/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── security/
    │                               └── oauth/
    │                                   ├── GitLabAuthenticatorTest.java
    │                                   └── GitLabOAuthAuthenticatorProviderTest.java
    ├── che-core-api-auth-gitlab-common/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── security/
    │                               └── oauth/
    │                                   ├── AbstractGitLabOAuthAuthenticatorProvider.java
    │                                   ├── GitLabOAuthAuthenticator.java
    │                                   └── GitLabUser.java
    ├── che-core-api-auth-openshift/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── security/
    │                               └── oauth/
    │                                   ├── OpenShiftOAuthAuthenticator.java
    │                                   └── OpenShiftOAuthModule.java
    ├── che-core-api-auth-shared/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           ├── api/
    │                           │   └── auth/
    │                           │       └── shared/
    │                           │           └── dto/
    │                           │               └── OAuthToken.java
    │                           └── security/
    │                               └── oauth/
    │                                   └── shared/
    │                                       ├── OAuthAuthorizationHeaderProvider.java
    │                                       ├── OAuthTokenProvider.java
    │                                       ├── User.java
    │                                       └── dto/
    │                                           └── OAuthAuthenticatorDescriptor.java
    ├── che-core-api-devfile/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── api/
    │       │                       └── devfile/
    │       │                           └── server/
    │       │                               ├── DtoConverter.java
    │       │                               ├── UserDevfileEntityProvider.java
    │       │                               └── model/
    │       │                                   └── impl/
    │       │                                       └── UserDevfileImpl.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── api/
    │           │                   └── devfile/
    │           │                       └── server/
    │           │                           ├── TestObjectGenerator.java
    │           │                           └── jpa/
    │           │                               └── UserDevfileTckModule.java
    │           └── resources/
    │               ├── META-INF/
    │               │   └── services/
    │               │       └── org.eclipse.che.commons.test.tck.TckModule
    │               └── logback-test.xml
    ├── che-core-api-devfile-shared/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── api/
    │                               └── devfile/
    │                                   └── shared/
    │                                       ├── Constants.java
    │                                       ├── dto/
    │                                       │   └── UserDevfileDto.java
    │                                       └── event/
    │                                           ├── DevfileCreatedEvent.java
    │                                           ├── DevfileDeletedEvent.java
    │                                           └── DevfileUpdatedEvent.java
    ├── che-core-api-factory/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── api/
    │       │                       └── factory/
    │       │                           └── server/
    │       │                               ├── AdditionalFilenamesProvider.java
    │       │                               ├── ApiExceptionMapper.java
    │       │                               ├── BaseFactoryParameterResolver.java
    │       │                               ├── DtoConverter.java
    │       │                               ├── FactoryAcceptValidator.java
    │       │                               ├── FactoryConstants.java
    │       │                               ├── FactoryLinksHelper.java
    │       │                               ├── FactoryManager.java
    │       │                               ├── FactoryParameterValidator.java
    │       │                               ├── FactoryParametersResolver.java
    │       │                               ├── FactoryResolverPriority.java
    │       │                               ├── FactoryService.java
    │       │                               ├── LegacyConverter.java
    │       │                               ├── RawDevfileUrlFactoryParameterResolver.java
    │       │                               ├── ScmFileResolver.java
    │       │                               ├── ScmService.java
    │       │                               ├── ValueHelper.java
    │       │                               ├── impl/
    │       │                               │   ├── FactoryAcceptValidatorImpl.java
    │       │                               │   ├── FactoryBaseValidator.java
    │       │                               │   └── SourceStorageParametersValidator.java
    │       │                               ├── jpa/
    │       │                               │   ├── FactoryJpaModule.java
    │       │                               │   └── JpaFactoryDao.java
    │       │                               ├── model/
    │       │                               │   └── impl/
    │       │                               │       ├── ActionImpl.java
    │       │                               │       ├── AuthorImpl.java
    │       │                               │       ├── FactoryImpl.java
    │       │                               │       ├── IdeImpl.java
    │       │                               │       ├── OnAppClosedImpl.java
    │       │                               │       ├── OnAppLoadedImpl.java
    │       │                               │       ├── OnProjectsLoadedImpl.java
    │       │                               │       └── PoliciesImpl.java
    │       │                               ├── scm/
    │       │                               │   ├── AbstractGitUserDataFetcher.java
    │       │                               │   ├── AuthorisationRequestManager.java
    │       │                               │   ├── AuthorizingFileContentProvider.java
    │       │                               │   ├── GitCredentialManager.java
    │       │                               │   ├── GitUserData.java
    │       │                               │   ├── GitUserDataFetcher.java
    │       │                               │   ├── PersonalAccessToken.java
    │       │                               │   ├── PersonalAccessTokenFetcher.java
    │       │                               │   ├── PersonalAccessTokenManager.java
    │       │                               │   ├── PersonalAccessTokenParams.java
    │       │                               │   ├── ScmPersonalAccessTokenFetcher.java
    │       │                               │   └── exception/
    │       │                               │       ├── ExceptionMessages.java
    │       │                               │       ├── ScmBadRequestException.java
    │       │                               │       ├── ScmCommunicationException.java
    │       │                               │       ├── ScmConfigurationPersistenceException.java
    │       │                               │       ├── ScmItemNotFoundException.java
    │       │                               │       ├── ScmUnauthorizedException.java
    │       │                               │       ├── UnknownScmProviderException.java
    │       │                               │       └── UnsatisfiedScmPreconditionException.java
    │       │                               ├── spi/
    │       │                               │   └── FactoryDao.java
    │       │                               └── urlfactory/
    │       │                                   ├── DefaultFactoryUrl.java
    │       │                                   ├── DevfileFilenamesProvider.java
    │       │                                   ├── RemoteFactoryUrl.java
    │       │                                   └── URLFactoryBuilder.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── api/
    │           │                   └── factory/
    │           │                       └── server/
    │           │                           ├── ApiExceptionMapperTest.java
    │           │                           ├── BaseFactoryParameterResolverTest.java
    │           │                           ├── FactoryLinksHelperTest.java
    │           │                           ├── FactoryManagerTest.java
    │           │                           ├── FactoryServiceTest.java
    │           │                           ├── RawDevfileUrlFactoryParameterResolverTest.java
    │           │                           ├── impl/
    │           │                           │   ├── FactoryBaseValidatorTest.java
    │           │                           │   ├── SourceProjectParametersValidatorTest.java
    │           │                           │   └── TesterFactoryBaseValidator.java
    │           │                           ├── jpa/
    │           │                           │   └── FactoryTckModule.java
    │           │                           ├── scm/
    │           │                           │   └── AuthorizingFactoryParameterResolverTest.java
    │           │                           └── urlfactory/
    │           │                               ├── DefaultFactoryUrlTest.java
    │           │                               └── URLFactoryBuilderTest.java
    │           └── resources/
    │               ├── META-INF/
    │               │   └── services/
    │               │       └── org.eclipse.che.commons.test.tck.TckModule
    │               ├── logback-test.xml
    │               └── logging.properties
    ├── che-core-api-factory-azure-devops/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── api/
    │       │                       └── factory/
    │       │                           └── server/
    │       │                               └── azure/
    │       │                                   └── devops/
    │       │                                       ├── AzureDevOps.java
    │       │                                       ├── AzureDevOpsApiClient.java
    │       │                                       ├── AzureDevOpsAuthorizingFileContentProvider.java
    │       │                                       ├── AzureDevOpsFactoryParametersResolver.java
    │       │                                       ├── AzureDevOpsModule.java
    │       │                                       ├── AzureDevOpsPersonalAccessTokenFetcher.java
    │       │                                       ├── AzureDevOpsScmFileResolver.java
    │       │                                       ├── AzureDevOpsServerApiClient.java
    │       │                                       ├── AzureDevOpsServerUserIdentity.java
    │       │                                       ├── AzureDevOpsServerUserPreferences.java
    │       │                                       ├── AzureDevOpsServerUserProfile.java
    │       │                                       ├── AzureDevOpsURLParser.java
    │       │                                       ├── AzureDevOpsUrl.java
    │       │                                       ├── AzureDevOpsUser.java
    │       │                                       └── AzureDevOpsUserDataFetcher.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── api/
    │           │                   └── factory/
    │           │                       └── server/
    │           │                           └── azure/
    │           │                               └── devops/
    │           │                                   ├── AzureDevOpsPersonalAccessTokenFetcherTest.java
    │           │                                   ├── AzureDevOpsURLParserTest.java
    │           │                                   └── AzureDevOpsURLTest.java
    │           └── resources/
    │               ├── __files/
    │               │   ├── azure-devops/
    │               │   │   └── rest/
    │               │   │       └── user/
    │               │   │           ├── email/
    │               │   │           │   └── response.json
    │               │   │           └── response.json
    │               │   └── azure-devops-server/
    │               │       └── rest/
    │               │           └── user/
    │               │               └── response.json
    │               └── logback-test.xml
    ├── che-core-api-factory-bitbucket/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── api/
    │       │                       └── factory/
    │       │                           └── server/
    │       │                               └── bitbucket/
    │       │                                   ├── BitbucketApiClient.java
    │       │                                   ├── BitbucketAuthorizingFileContentProvider.java
    │       │                                   ├── BitbucketFactoryParametersResolver.java
    │       │                                   ├── BitbucketModule.java
    │       │                                   ├── BitbucketPersonalAccessTokenFetcher.java
    │       │                                   ├── BitbucketScmFileResolver.java
    │       │                                   ├── BitbucketSourceStorageBuilder.java
    │       │                                   ├── BitbucketURLParser.java
    │       │                                   ├── BitbucketUrl.java
    │       │                                   ├── BitbucketUser.java
    │       │                                   ├── BitbucketUserDataFetcher.java
    │       │                                   └── BitbucketUserEmail.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── api/
    │           │                   └── factory/
    │           │                       └── server/
    │           │                           └── bitbucket/
    │           │                               ├── BitbucketApiClientTest.java
    │           │                               ├── BitbucketAuthorizingFileContentProviderTest.java
    │           │                               ├── BitbucketFactoryParametersResolverTest.java
    │           │                               ├── BitbucketGitUserDataFetcherTest.java
    │           │                               ├── BitbucketPersonalAccessTokenFetcherTest.java
    │           │                               ├── BitbucketScmFileResolverTest.java
    │           │                               ├── BitbucketURLParserTest.java
    │           │                               └── BitbucketUrlTest.java
    │           └── resources/
    │               ├── __files/
    │               │   └── bitbucket/
    │               │       └── rest/
    │               │           └── user/
    │               │               ├── email/
    │               │               │   └── response.json
    │               │               └── response.json
    │               └── logback-test.xml
    ├── che-core-api-factory-bitbucket-server/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── api/
    │       │                       └── factory/
    │       │                           └── server/
    │       │                               └── bitbucket/
    │       │                                   ├── BitbucketServerApiProvider.java
    │       │                                   ├── BitbucketServerAuthorizingFactoryParametersResolver.java
    │       │                                   ├── BitbucketServerAuthorizingFileContentProvider.java
    │       │                                   ├── BitbucketServerModule.java
    │       │                                   ├── BitbucketServerPersonalAccessTokenFetcher.java
    │       │                                   ├── BitbucketServerScmFileResolver.java
    │       │                                   ├── BitbucketServerURLParser.java
    │       │                                   ├── BitbucketServerUrl.java
    │       │                                   ├── BitbucketServerUserDataFetcher.java
    │       │                                   ├── HttpBitbucketServerApiClient.java
    │       │                                   └── server/
    │       │                                       ├── BitbucketApplicationProperties.java
    │       │                                       ├── BitbucketPersonalAccessToken.java
    │       │                                       ├── BitbucketServerApiClient.java
    │       │                                       ├── BitbucketUser.java
    │       │                                       ├── NoopBitbucketServerApiClient.java
    │       │                                       └── Page.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── api/
    │           │                   └── factory/
    │           │                       └── server/
    │           │                           └── bitbucket/
    │           │                               ├── BitbucketServerApiClientProviderTest.java
    │           │                               ├── BitbucketServerAuthorizingFactoryParametersResolverTest.java
    │           │                               ├── BitbucketServerAuthorizingFileContentProviderTest.java
    │           │                               ├── BitbucketServerPersonalAccessTokenFetcherTest.java
    │           │                               ├── BitbucketServerScmFileResolverTest.java
    │           │                               ├── BitbucketServerURLParserTest.java
    │           │                               ├── BitbucketServerURLTest.java
    │           │                               ├── BitbucketServerUserDataFetcherTest.java
    │           │                               └── HttpBitbucketServerApiClientTest.java
    │           └── resources/
    │               ├── __files/
    │               │   └── bitbucket/
    │               │       └── rest/
    │               │           ├── access-tokens/
    │               │           │   └── 1.0/
    │               │           │       └── users/
    │               │           │           └── ksmster/
    │               │           │               ├── newtoken.json
    │               │           │               └── response.json
    │               │           ├── api/
    │               │           │   └── 1.0/
    │               │           │       └── users/
    │               │           │           ├── email-user/
    │               │           │           │   └── response.json
    │               │           │           ├── filtered/
    │               │           │           │   └── response.json
    │               │           │           ├── ksmster/
    │               │           │           │   └── response.json
    │               │           │           ├── response.json
    │               │           │           ├── response_s0_l25.json
    │               │           │           ├── response_s3_l25.json
    │               │           │           ├── response_s6_l25.json
    │               │           │           └── response_s9_l25.json
    │               │           └── api.1.0.application-properties/
    │               │               └── response.json
    │               └── logback-test.xml
    ├── che-core-api-factory-git-ssh/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── api/
    │       │                       └── factory/
    │       │                           └── server/
    │       │                               └── git/
    │       │                                   └── ssh/
    │       │                                       ├── GitSshAuthorizingFileContentProvider.java
    │       │                                       ├── GitSshFactoryParametersResolver.java
    │       │                                       ├── GitSshScmFileResolver.java
    │       │                                       ├── GitSshURLParser.java
    │       │                                       └── GitSshUrl.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── api/
    │           │                   └── factory/
    │           │                       └── server/
    │           │                           └── git/
    │           │                               └── ssh/
    │           │                                   ├── GitSshFactoryParametersResolverTest.java
    │           │                                   ├── GitSshURLParserTest.java
    │           │                                   └── GitSshUrlTest.java
    │           └── resources/
    │               └── logback-test.xml
    ├── che-core-api-factory-github/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── api/
    │       │                       └── factory/
    │       │                           └── server/
    │       │                               └── github/
    │       │                                   ├── GithubFactoryParametersResolver.java
    │       │                                   ├── GithubFactoryParametersResolverSecond.java
    │       │                                   ├── GithubModule.java
    │       │                                   ├── GithubPersonalAccessTokenFetcher.java
    │       │                                   ├── GithubPersonalAccessTokenFetcherSecond.java
    │       │                                   ├── GithubScmFileResolver.java
    │       │                                   ├── GithubScmFileResolverSecond.java
    │       │                                   ├── GithubURLParser.java
    │       │                                   ├── GithubURLParserSecond.java
    │       │                                   ├── GithubUserDataFetcher.java
    │       │                                   └── GithubUserDataFetcherSecond.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── api/
    │           │                   └── factory/
    │           │                       └── server/
    │           │                           └── github/
    │           │                               ├── GithubApiClientTest.java
    │           │                               ├── GithubAuthorizingFileContentProviderTest.java
    │           │                               ├── GithubFactoryParametersResolverTest.java
    │           │                               ├── GithubGitUserDataFetcherTest.java
    │           │                               ├── GithubPersonalAccessTokenFetcherTest.java
    │           │                               ├── GithubScmFileResolverTest.java
    │           │                               ├── GithubURLParserTest.java
    │           │                               └── GithubUrlTest.java
    │           └── resources/
    │               ├── __files/
    │               │   └── github/
    │               │       └── rest/
    │               │           ├── pullRequest/
    │               │           │   └── response.json
    │               │           └── user/
    │               │               └── response.json
    │               └── logback-test.xml
    ├── che-core-api-factory-github-common/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── api/
    │                               └── factory/
    │                                   └── server/
    │                                       └── github/
    │                                           ├── AbstractGithubFactoryParametersResolver.java
    │                                           ├── AbstractGithubPersonalAccessTokenFetcher.java
    │                                           ├── AbstractGithubScmFileResolver.java
    │                                           ├── AbstractGithubURLParser.java
    │                                           ├── AbstractGithubUserDataFetcher.java
    │                                           ├── GithubApiClient.java
    │                                           ├── GithubAuthorizingFileContentProvider.java
    │                                           ├── GithubCommit.java
    │                                           ├── GithubPullRequest.java
    │                                           ├── GithubSourceStorageBuilder.java
    │                                           ├── GithubUrl.java
    │                                           └── GithubUser.java
    ├── che-core-api-factory-gitlab/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── api/
    │       │                       └── factory/
    │       │                           └── server/
    │       │                               └── gitlab/
    │       │                                   ├── GitlabFactoryParametersResolver.java
    │       │                                   ├── GitlabFactoryParametersResolverSecond.java
    │       │                                   ├── GitlabModule.java
    │       │                                   ├── GitlabOAuthTokenFetcher.java
    │       │                                   ├── GitlabOAuthTokenFetcherSecond.java
    │       │                                   ├── GitlabScmFileResolver.java
    │       │                                   ├── GitlabScmFileResolverSecond.java
    │       │                                   ├── GitlabUrlParser.java
    │       │                                   ├── GitlabUrlParserSecond.java
    │       │                                   ├── GitlabUserDataFetcher.java
    │       │                                   └── GitlabUserDataFetcherSecond.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── api/
    │           │                   └── factory/
    │           │                       └── server/
    │           │                           └── gitlab/
    │           │                               ├── GitlabApiClientTest.java
    │           │                               ├── GitlabAuthorizingFileContentProviderTest.java
    │           │                               ├── GitlabCustomPortUrlParserTest.java
    │           │                               ├── GitlabFactoryParametersResolverTest.java
    │           │                               ├── GitlabOAuthTokenFetcherTest.java
    │           │                               ├── GitlabScmFileResolverTest.java
    │           │                               ├── GitlabUrlCustomPortTest.java
    │           │                               ├── GitlabUrlParserTest.java
    │           │                               ├── GitlabUrlTest.java
    │           │                               └── GitlabUserDataFetcherTest.java
    │           └── resources/
    │               ├── __files/
    │               │   └── gitlab/
    │               │       └── rest/
    │               │           └── api/
    │               │               └── v4/
    │               │                   └── user/
    │               │                       ├── PAT_info.json
    │               │                       ├── response.json
    │               │                       ├── token_info.json
    │               │                       └── token_info_lack_scopes.json
    │               └── logback-test.xml
    ├── che-core-api-factory-gitlab-common/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── api/
    │                               └── factory/
    │                                   └── server/
    │                                       └── gitlab/
    │                                           ├── AbstractGitlabFactoryParametersResolver.java
    │                                           ├── AbstractGitlabOAuthTokenFetcher.java
    │                                           ├── AbstractGitlabScmFileResolver.java
    │                                           ├── AbstractGitlabUrlParser.java
    │                                           ├── AbstractGitlabUserDataFetcher.java
    │                                           ├── GitlabApiClient.java
    │                                           ├── GitlabAuthorizingFileContentProvider.java
    │                                           ├── GitlabOauthTokenInfo.java
    │                                           ├── GitlabPersonalAccessTokenInfo.java
    │                                           ├── GitlabUrl.java
    │                                           └── GitlabUser.java
    ├── che-core-api-factory-shared/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── api/
    │                               └── factory/
    │                                   └── shared/
    │                                       ├── Constants.java
    │                                       └── dto/
    │                                           ├── AuthorDto.java
    │                                           ├── FactoryDevfileV2Dto.java
    │                                           ├── FactoryMetaDto.java
    │                                           ├── FactoryVisitor.java
    │                                           ├── IdeActionDto.java
    │                                           ├── IdeDto.java
    │                                           ├── OnAppClosedDto.java
    │                                           ├── OnAppLoadedDto.java
    │                                           ├── OnProjectsLoadedDto.java
    │                                           ├── PoliciesDto.java
    │                                           └── ScmInfoDto.java
    ├── che-core-api-logger/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── api/
    │       │                       └── logger/
    │       │                           ├── ErrorRuntimeLogEventLogger.java
    │       │                           ├── LoggerService.java
    │       │                           └── deploy/
    │       │                               └── LoggerModule.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── api/
    │           │                   └── logger/
    │           │                       └── LoggerServiceTest.java
    │           └── resources/
    │               └── logback-test.xml
    ├── che-core-api-logger-shared/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── api/
    │                               └── logger/
    │                                   └── shared/
    │                                       └── dto/
    │                                           └── LoggerDto.java
    ├── che-core-api-metrics/
    │   ├── extending-che-monitoring-metrics.adoc
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── api/
    │       │                       └── metrics/
    │       │                           ├── RuntimeLogMeterBinder.java
    │       │                           ├── UserMeterBinder.java
    │       │                           ├── WorkspaceBinders.java
    │       │                           ├── WorkspaceFailureMeterBinder.java
    │       │                           ├── WorkspaceInterruptedStartAttemptsMeterBinder.java
    │       │                           ├── WorkspaceStartAttemptsMeterBinder.java
    │       │                           ├── WorkspaceStartTrackerMeterBinder.java
    │       │                           ├── WorkspaceStopTrackerMeterBinder.java
    │       │                           ├── WorkspaceSuccessfulStartAttemptsMeterBinder.java
    │       │                           ├── WorkspaceSuccessfulStopAttemptsMeterBinder.java
    │       │                           └── WsMasterMetricsModule.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── api/
    │           │                   └── metrics/
    │           │                       ├── UserMeterBinderTest.java
    │           │                       ├── WorkspaceFailureMeterBinderTest.java
    │           │                       ├── WorkspaceInterruptedStartAttemptsMeterBinderTest.java
    │           │                       ├── WorkspaceStartAttemptsMeterBinderTest.java
    │           │                       ├── WorkspaceStartTrackerMeterBinderTest.java
    │           │                       ├── WorkspaceStopTrackerMeterBinderTest.java
    │           │                       ├── WorkspaceSuccessfulStartAttemptsMeterBinderTest.java
    │           │                       └── WorkspaceSuccessfulStopAttemptsMeterBinderTest.java
    │           └── resources/
    │               └── logback-test.xml
    ├── che-core-api-ssh/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── api/
    │                               └── ssh/
    │                                   └── server/
    │                                       ├── SshManager.java
    │                                       ├── SshService.java
    │                                       ├── jpa/
    │                                       │   ├── JpaSshDao.java
    │                                       │   ├── SshJpaModule.java
    │                                       │   └── SshPairPrimaryKey.java
    │                                       ├── model/
    │                                       │   └── impl/
    │                                       │       └── SshPairImpl.java
    │                                       └── spi/
    │                                           └── SshDao.java
    ├── che-core-api-ssh-shared/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── api/
    │                               └── ssh/
    │                                   └── shared/
    │                                       ├── Constants.java
    │                                       ├── dto/
    │                                       │   ├── GenerateSshPairRequest.java
    │                                       │   └── SshPairDto.java
    │                                       └── model/
    │                                           └── SshPair.java
    ├── che-core-api-system/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── api/
    │       │                       └── system/
    │       │                           └── server/
    │       │                               ├── CronThreadPullTermination.java
    │       │                               ├── DtoConverter.java
    │       │                               ├── JvmManager.java
    │       │                               ├── JvmService.java
    │       │                               ├── ServiceTermination.java
    │       │                               ├── ServiceTerminator.java
    │       │                               ├── SystemEventsWebsocketBroadcaster.java
    │       │                               ├── SystemManager.java
    │       │                               ├── SystemModule.java
    │       │                               └── SystemService.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── api/
    │           │                   └── system/
    │           │                       └── server/
    │           │                           ├── DtoConverterTest.java
    │           │                           ├── JvmServiceTest.java
    │           │                           ├── SystemManagerTest.java
    │           │                           └── SystemTerminatorTest.java
    │           └── resources/
    │               └── logback-test.xml
    ├── che-core-api-system-shared/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── api/
    │                               └── system/
    │                                   └── shared/
    │                                       ├── SystemStatus.java
    │                                       ├── dto/
    │                                       │   ├── SystemEventDto.java
    │                                       │   ├── SystemServiceEventDto.java
    │                                       │   ├── SystemServiceItemStoppedEventDto.java
    │                                       │   ├── SystemStateDto.java
    │                                       │   └── SystemStatusChangedEventDto.java
    │                                       └── event/
    │                                           ├── EventType.java
    │                                           ├── SystemEvent.java
    │                                           ├── SystemStatusChangedEvent.java
    │                                           └── service/
    │                                               ├── StoppingSystemServiceEvent.java
    │                                               ├── SuspendingSystemServiceEvent.java
    │                                               ├── SystemServiceEvent.java
    │                                               ├── SystemServiceItemStoppedEvent.java
    │                                               ├── SystemServiceItemSuspendedEvent.java
    │                                               ├── SystemServiceStoppedEvent.java
    │                                               └── SystemServiceSuspendedEvent.java
    ├── che-core-api-user/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── api/
    │       │                       └── user/
    │       │                           └── server/
    │       │                               ├── AppStatesPreferenceCleaner.java
    │       │                               ├── CheUserCreator.java
    │       │                               ├── Constants.java
    │       │                               ├── DtoConverter.java
    │       │                               ├── NotImplementedTokenValidator.java
    │       │                               ├── PreferenceManager.java
    │       │                               ├── ProfileManager.java
    │       │                               ├── TokenValidator.java
    │       │                               ├── UserManager.java
    │       │                               ├── UserService.java
    │       │                               ├── UserValidator.java
    │       │                               ├── event/
    │       │                               │   ├── UserCreatedEvent.java
    │       │                               │   └── UserRemovedEvent.java
    │       │                               ├── jpa/
    │       │                               │   ├── JpaPreferenceDao.java
    │       │                               │   ├── JpaProfileDao.java
    │       │                               │   ├── JpaUserDao.java
    │       │                               │   ├── PreferenceEntity.java
    │       │                               │   └── UserJpaModule.java
    │       │                               ├── model/
    │       │                               │   └── impl/
    │       │                               │       ├── ProfileImpl.java
    │       │                               │       └── UserImpl.java
    │       │                               └── spi/
    │       │                                   ├── PreferenceDao.java
    │       │                                   ├── ProfileDao.java
    │       │                                   └── UserDao.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── api/
    │           │                   └── user/
    │           │                       └── server/
    │           │                           ├── PreferenceManagerTest.java
    │           │                           ├── ProfileManagerTest.java
    │           │                           ├── UserManagerTest.java
    │           │                           └── UserValidatorTest.java
    │           └── resources/
    │               └── META-INF/
    │                   └── services/
    │                       └── org.eclipse.che.commons.test.tck.TckModule
    ├── che-core-api-user-shared/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── api/
    │                               └── user/
    │                                   └── shared/
    │                                       └── dto/
    │                                           ├── ProfileDto.java
    │                                           └── UserDto.java
    ├── che-core-api-workspace/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── api/
    │       │                       └── workspace/
    │       │                           └── server/
    │       │                               ├── DefaultWorkspaceLockService.java
    │       │                               ├── DefaultWorkspaceStatusCache.java
    │       │                               ├── DtoConverter.java
    │       │                               ├── NoEnvironmentFactory.java
    │       │                               ├── PreviewUrlLinksVariableGenerator.java
    │       │                               ├── SidecarToolingWorkspaceUtil.java
    │       │                               ├── URLRewriter.java
    │       │                               ├── WorkspaceAttributeValidator.java
    │       │                               ├── WorkspaceEntityProvider.java
    │       │                               ├── WorkspaceKeyValidator.java
    │       │                               ├── WorkspaceLockService.java
    │       │                               ├── WorkspaceSharedPool.java
    │       │                               ├── WorkspaceStatusCache.java
    │       │                               ├── WorkspaceValidator.java
    │       │                               ├── devfile/
    │       │                               │   ├── Components.java
    │       │                               │   ├── Constants.java
    │       │                               │   ├── DevfileBindings.java
    │       │                               │   ├── DevfileEntityProvider.java
    │       │                               │   ├── DevfileModule.java
    │       │                               │   ├── DevfileParser.java
    │       │                               │   ├── DevfileRecipeFormatException.java
    │       │                               │   ├── DevfileVersionDetector.java
    │       │                               │   ├── FileContentProvider.java
    │       │                               │   ├── OverridePropertiesApplier.java
    │       │                               │   ├── PreferencesDeserializer.java
    │       │                               │   ├── SerializableConverter.java
    │       │                               │   ├── URLFetcher.java
    │       │                               │   ├── URLFileContentProvider.java
    │       │                               │   ├── convert/
    │       │                               │   │   ├── CommandConverter.java
    │       │                               │   │   ├── DefaultEditorProvisioner.java
    │       │                               │   │   ├── DevfileConverter.java
    │       │                               │   │   ├── ProjectConverter.java
    │       │                               │   │   └── component/
    │       │                               │   │       ├── ComponentFQNParser.java
    │       │                               │   │       ├── ComponentToWorkspaceApplier.java
    │       │                               │   │       ├── editor/
    │       │                               │   │       │   └── EditorComponentToWorkspaceApplier.java
    │       │                               │   │       └── plugin/
    │       │                               │   │           └── PluginComponentToWorkspaceApplier.java
    │       │                               │   ├── exception/
    │       │                               │   │   ├── DevfileException.java
    │       │                               │   │   ├── DevfileFormatException.java
    │       │                               │   │   ├── OverrideParameterException.java
    │       │                               │   │   └── WorkspaceExportException.java
    │       │                               │   └── validator/
    │       │                               │       ├── ComponentIntegrityValidator.java
    │       │                               │       ├── DevfileIntegrityValidator.java
    │       │                               │       └── ErrorMessageComposer.java
    │       │                               ├── event/
    │       │                               │   ├── MachineStatusJsonRpcMessenger.java
    │       │                               │   ├── RuntimeAbnormalStoppedEvent.java
    │       │                               │   ├── RuntimeAbnormalStoppingEvent.java
    │       │                               │   ├── RuntimeLogJsonRpcMessenger.java
    │       │                               │   ├── RuntimeStatusJsonRpcMessenger.java
    │       │                               │   ├── ServerIdleEvent.java
    │       │                               │   ├── ServerStatusJsonRpcMessenger.java
    │       │                               │   └── WorkspaceJsonRpcMessenger.java
    │       │                               ├── hc/
    │       │                               │   ├── HttpConnectionServerChecker.java
    │       │                               │   ├── ServerChecker.java
    │       │                               │   ├── ServersChecker.java
    │       │                               │   ├── ServersCheckerFactory.java
    │       │                               │   ├── TerminalHttpConnectionServerChecker.java
    │       │                               │   └── probe/
    │       │                               │       ├── HttpProbe.java
    │       │                               │       ├── HttpProbeConfig.java
    │       │                               │       ├── HttpProbeFactory.java
    │       │                               │       ├── Probe.java
    │       │                               │       ├── ProbeConfig.java
    │       │                               │       ├── ProbeFactory.java
    │       │                               │       ├── ProbeResult.java
    │       │                               │       ├── ProbeScheduler.java
    │       │                               │       ├── TcpProbeConfig.java
    │       │                               │       ├── WorkspaceProbes.java
    │       │                               │       ├── WorkspaceProbesFactory.java
    │       │                               │       └── server/
    │       │                               │           ├── ExecServerLivenessProbeConfigFactory.java
    │       │                               │           ├── HttpProbeConfigFactory.java
    │       │                               │           ├── TerminalServerLivenessProbeConfigFactory.java
    │       │                               │           └── WsAgentServerLivenessProbeConfigFactory.java
    │       │                               ├── jpa/
    │       │                               │   ├── JpaWorkspaceDao.java
    │       │                               │   └── WorkspaceJpaModule.java
    │       │                               ├── model/
    │       │                               │   └── impl/
    │       │                               │       ├── CommandImpl.java
    │       │                               │       ├── EnvironmentImpl.java
    │       │                               │       ├── MachineConfigImpl.java
    │       │                               │       ├── MachineImpl.java
    │       │                               │       ├── ProjectConfigImpl.java
    │       │                               │       ├── RecipeImpl.java
    │       │                               │       ├── RuntimeIdentityImpl.java
    │       │                               │       ├── RuntimeImpl.java
    │       │                               │       ├── ServerConfigImpl.java
    │       │                               │       ├── ServerImpl.java
    │       │                               │       ├── SourceStorageImpl.java
    │       │                               │       ├── VolumeImpl.java
    │       │                               │       ├── WarningImpl.java
    │       │                               │       ├── WorkspaceConfigImpl.java
    │       │                               │       ├── WorkspaceImpl.java
    │       │                               │       └── devfile/
    │       │                               │           ├── ActionImpl.java
    │       │                               │           ├── CommandImpl.java
    │       │                               │           ├── ComponentImpl.java
    │       │                               │           ├── DevfileImpl.java
    │       │                               │           ├── EndpointImpl.java
    │       │                               │           ├── EntrypointImpl.java
    │       │                               │           ├── EnvImpl.java
    │       │                               │           ├── MetadataImpl.java
    │       │                               │           ├── PreviewUrlImpl.java
    │       │                               │           ├── ProjectImpl.java
    │       │                               │           ├── SourceImpl.java
    │       │                               │           └── VolumeImpl.java
    │       │                               ├── spi/
    │       │                               │   ├── InfrastructureException.java
    │       │                               │   ├── InternalInfrastructureException.java
    │       │                               │   ├── NamespaceResolutionContext.java
    │       │                               │   ├── RuntimeStartInterruptedException.java
    │       │                               │   ├── StateException.java
    │       │                               │   ├── WorkspaceDao.java
    │       │                               │   ├── environment/
    │       │                               │   │   ├── InternalEnvironment.java
    │       │                               │   │   ├── InternalEnvironmentFactory.java
    │       │                               │   │   ├── InternalMachineConfig.java
    │       │                               │   │   ├── InternalRecipe.java
    │       │                               │   │   ├── MachineConfigsValidator.java
    │       │                               │   │   ├── RecipeRetriever.java
    │       │                               │   │   └── ResourceLimitAttributesProvisioner.java
    │       │                               │   └── provision/
    │       │                               │       └── env/
    │       │                               │           ├── AgentAuthEnableEnvVarProvider.java
    │       │                               │           ├── CheApiEnvVarProvider.java
    │       │                               │           ├── CheApiExternalEnvVarProvider.java
    │       │                               │           ├── CheApiInternalEnvVarProvider.java
    │       │                               │           ├── EnvVarProvider.java
    │       │                               │           ├── JavaOptsEnvVariableProvider.java
    │       │                               │           ├── LegacyEnvVarProvider.java
    │       │                               │           ├── MachineTokenEnvVarProvider.java
    │       │                               │           ├── MavenOptsEnvVariableProvider.java
    │       │                               │           ├── WorkspaceIdEnvVarProvider.java
    │       │                               │           ├── WorkspaceNameEnvVarProvider.java
    │       │                               │           └── WorkspaceNamespaceNameEnvVarProvider.java
    │       │                               ├── token/
    │       │                               │   ├── MachineAccessForbidden.java
    │       │                               │   ├── MachineTokenException.java
    │       │                               │   └── MachineTokenProvider.java
    │       │                               └── wsplugins/
    │       │                                   ├── ChePluginsApplier.java
    │       │                                   ├── PluginFQNParser.java
    │       │                                   └── model/
    │       │                                       ├── CheContainer.java
    │       │                                       ├── CheContainerPort.java
    │       │                                       ├── ChePlugin.java
    │       │                                       ├── ChePluginEndpoint.java
    │       │                                       ├── Command.java
    │       │                                       ├── EnvVar.java
    │       │                                       ├── Exec.java
    │       │                                       ├── ExtendedPluginFQN.java
    │       │                                       ├── Handler.java
    │       │                                       ├── Lifecycle.java
    │       │                                       ├── PluginFQN.java
    │       │                                       └── Volume.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── api/
    │           │                   └── workspace/
    │           │                       └── server/
    │           │                           ├── PreviewUrlLinksVariableGeneratorTest.java
    │           │                           ├── WorkspaceEntityProviderTest.java
    │           │                           ├── WorkspaceValidatorTest.java
    │           │                           ├── devfile/
    │           │                           │   ├── DevfileEntityProviderTest.java
    │           │                           │   ├── DevfileParserTest.java
    │           │                           │   ├── DevfileVersionTest.java
    │           │                           │   ├── OverridePropertiesApplierTest.java
    │           │                           │   ├── PreferencesDeserializerTest.java
    │           │                           │   ├── SerializableConverterTest.java
    │           │                           │   ├── URLFetcherTest.java
    │           │                           │   ├── URLFileContentProviderTest.java
    │           │                           │   ├── convert/
    │           │                           │   │   ├── CommandConverterTest.java
    │           │                           │   │   ├── DefaultEditorProvisionerTest.java
    │           │                           │   │   ├── DevfileConverterTest.java
    │           │                           │   │   ├── ProjectConverterTest.java
    │           │                           │   │   └── component/
    │           │                           │   │       ├── editor/
    │           │                           │   │       │   └── EditorComponentToWorkspaceApplierTest.java
    │           │                           │   │       └── plugin/
    │           │                           │   │           └── PluginComponentToWorkspaceApplierTest.java
    │           │                           │   └── validator/
    │           │                           │       └── DevfileIntegrityValidatorTest.java
    │           │                           ├── hc/
    │           │                           │   ├── HttpConnectionServerCheckerTest.java
    │           │                           │   ├── ServerCheckerTest.java
    │           │                           │   ├── ServersCheckerTest.java
    │           │                           │   ├── TerminalHttpConnectionServerCheckerTest.java
    │           │                           │   └── probe/
    │           │                           │       └── WorkspaceProbesFactoryTest.java
    │           │                           ├── model/
    │           │                           │   └── impl/
    │           │                           │       └── ServerConfigImplTest.java
    │           │                           ├── spi/
    │           │                           │   ├── environment/
    │           │                           │   │   ├── InternalEnvironmentFactoryTest.java
    │           │                           │   │   ├── MachineConfigsValidatorTest.java
    │           │                           │   │   └── ResourceLimitAttributesProvisionerTest.java
    │           │                           │   └── provision/
    │           │                           │       └── env/
    │           │                           │           ├── WorkspaceNameEnvVarProviderTest.java
    │           │                           │           └── WorkspaceNamespaceEnvVarProviderTest.java
    │           │                           └── wsplugins/
    │           │                               └── PluginFQNParserTest.java
    │           └── resources/
    │               ├── META-INF/
    │               │   └── services/
    │               │       └── org.eclipse.che.commons.test.tck.TckModule
    │               ├── devfile/
    │               │   ├── devfile.json
    │               │   ├── devfile.yaml
    │               │   ├── logback-test.xml
    │               │   ├── petclinic.yaml
    │               │   ├── schema_test/
    │               │   │   ├── command/
    │               │   │   │   ├── devfile_action_without_commandline_and_reference.yaml
    │               │   │   │   ├── devfile_command_with_empty_preview_url.yaml
    │               │   │   │   ├── devfile_command_with_preview_url.yaml
    │               │   │   │   ├── devfile_command_with_preview_url_only_path.yaml
    │               │   │   │   ├── devfile_command_with_preview_url_only_port.yaml
    │               │   │   │   ├── devfile_command_with_preview_url_port_is_negative.yaml
    │               │   │   │   ├── devfile_command_with_preview_url_port_is_string.yaml
    │               │   │   │   ├── devfile_command_with_preview_url_port_is_too_high.yaml
    │               │   │   │   ├── devfile_missing_command_actions.yaml
    │               │   │   │   ├── devfile_missing_command_name.yaml
    │               │   │   │   └── devfile_multiple_commands_actions.yaml
    │               │   │   ├── component/
    │               │   │   │   ├── devfile_component_with_automount_secrets.yaml
    │               │   │   │   ├── devfile_component_with_undeclared_field.yaml
    │               │   │   │   ├── devfile_missing_component_type.yaml
    │               │   │   │   ├── devfile_unknown_component_type.yaml
    │               │   │   │   └── devfile_without_any_component.yaml
    │               │   │   ├── devfile/
    │               │   │   │   ├── devfile_empty_metadata.yaml
    │               │   │   │   ├── devfile_just_generatename.yaml
    │               │   │   │   ├── devfile_missing_api_version.yaml
    │               │   │   │   ├── devfile_missing_metadata.yaml
    │               │   │   │   ├── devfile_missing_name_and_generatename.yaml
    │               │   │   │   ├── devfile_name_and_generatename.yaml
    │               │   │   │   ├── devfile_null_metadata.yaml
    │               │   │   │   ├── devfile_v2-1-0_just_schemaVersion.yaml
    │               │   │   │   ├── devfile_v2-1-0_simple-devfile.yaml
    │               │   │   │   ├── devfile_v2-1-0_unsupported_schemaVersion.yaml
    │               │   │   │   ├── devfile_v2-1-0_with_invalid_plugin_definition.yaml
    │               │   │   │   ├── devfile_v2-2-0-basic-nodejs.yaml
    │               │   │   │   ├── devfile_v2-2-0-basic-python.yaml
    │               │   │   │   ├── devfile_v2-2-0-basic-quarkus.yaml
    │               │   │   │   ├── devfile_v2-2-0-basic-springboot.yaml
    │               │   │   │   ├── devfile_v2-2-0-quarkus.yaml
    │               │   │   │   ├── devfile_v2-2-0-simple-devfile.yaml
    │               │   │   │   ├── devfile_v2_invalid_schemaVersion.yaml
    │               │   │   │   ├── devfile_v2_just_schemaVersion.yaml
    │               │   │   │   ├── devfile_v2_sample-devfile.yaml
    │               │   │   │   ├── devfile_v2_simple-devfile.yaml
    │               │   │   │   ├── devfile_v2_spring-boot-http-booster-devfile.yaml
    │               │   │   │   ├── devfile_v2_unsupported_schemaVersion.yaml
    │               │   │   │   ├── devfile_with_sparse_checkout_dir.yaml
    │               │   │   │   └── devfile_with_undeclared_field.yaml
    │               │   │   ├── dockerimage_component/
    │               │   │   │   ├── devfile_dockerimage_component.yaml
    │               │   │   │   ├── devfile_dockerimage_component_with_indistinctive_field_selector.yaml
    │               │   │   │   ├── devfile_dockerimage_component_with_invalid_memory_limit.yaml
    │               │   │   │   ├── devfile_dockerimage_component_with_missing_image.yaml
    │               │   │   │   ├── devfile_dockerimage_component_with_missing_memory_limit.yaml
    │               │   │   │   └── devfile_dockerimage_component_without_entry_point.yaml
    │               │   │   ├── editor_plugin_component/
    │               │   │   │   ├── devfile_editor_component_with_bad_registry.yaml
    │               │   │   │   ├── devfile_editor_component_with_custom_registry.yaml
    │               │   │   │   ├── devfile_editor_component_with_id_and_reference.yaml
    │               │   │   │   ├── devfile_editor_component_with_indistinctive_field.yaml
    │               │   │   │   ├── devfile_editor_component_with_missing_id.yaml
    │               │   │   │   ├── devfile_editor_component_with_multiple_colons_in_id.yaml
    │               │   │   │   ├── devfile_editor_component_with_registry_in_id.yaml
    │               │   │   │   ├── devfile_editor_component_without_version.yaml
    │               │   │   │   ├── devfile_editor_plugins.yaml
    │               │   │   │   ├── devfile_editor_plugins_components_with_invalid_memory_limit.yaml
    │               │   │   │   ├── devfile_editor_plugins_components_with_resource_limits.yaml
    │               │   │   │   ├── devfile_plugin_component_with_reference.yaml
    │               │   │   │   └── devfile_plugin_components_with_preferences.yaml
    │               │   │   └── kubernetes_openshift_component/
    │               │   │       ├── devfile_k8s_openshift_component_with_endpoints.yaml
    │               │   │       ├── devfile_k8s_openshift_component_with_env.yaml
    │               │   │       ├── devfile_kubernetes_component.yaml
    │               │   │       ├── devfile_kubernetes_component_absolute_reference.yaml
    │               │   │       ├── devfile_kubernetes_component_content_without_reference.yaml
    │               │   │       ├── devfile_kubernetes_component_reference_and_content_as_block.yaml
    │               │   │       ├── devfile_openshift_component.yaml
    │               │   │       ├── devfile_openshift_component_content_without_reference.yaml
    │               │   │       ├── devfile_openshift_component_reference_and_content.yaml
    │               │   │       ├── devfile_openshift_component_reference_and_content_as_block.yaml
    │               │   │       ├── devfile_openshift_component_with_indistinctive_field_id.yaml
    │               │   │       └── devfile_openshift_component_with_missing_reference_and_referenceContent.yaml
    │               │   ├── url_fetcher_test_resource.json
    │               │   └── workspace_config.json
    │               ├── invalid-json.json
    │               ├── invalid-recipes.json
    │               ├── logback-test.xml
    │               ├── recipes.json
    │               ├── ws_conf_machine_source_dockerfile_content.json
    │               ├── ws_conf_machine_source_dockerfile_location.json
    │               └── ws_conf_machine_source_dockerimage.json
    ├── che-core-api-workspace-shared/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── api/
    │                               └── workspace/
    │                                   └── shared/
    │                                       ├── Constants.java
    │                                       ├── ProjectProblemImpl.java
    │                                       ├── dto/
    │                                       │   ├── BrokerStatus.java
    │                                       │   ├── CommandDto.java
    │                                       │   ├── EnvironmentDto.java
    │                                       │   ├── MachineConfigDto.java
    │                                       │   ├── MachineDto.java
    │                                       │   ├── ProjectConfigDto.java
    │                                       │   ├── ProjectProblemDto.java
    │                                       │   ├── RecipeDto.java
    │                                       │   ├── RuntimeDto.java
    │                                       │   ├── RuntimeIdentityDto.java
    │                                       │   ├── ServerConfigDto.java
    │                                       │   ├── ServerDto.java
    │                                       │   ├── SourceStorageDto.java
    │                                       │   ├── VolumeDto.java
    │                                       │   ├── WarningDto.java
    │                                       │   ├── WorkspaceConfigDto.java
    │                                       │   ├── WorkspaceDto.java
    │                                       │   ├── devfile/
    │                                       │   │   ├── ComponentDto.java
    │                                       │   │   ├── DevfileActionDto.java
    │                                       │   │   ├── DevfileCommandDto.java
    │                                       │   │   ├── DevfileDto.java
    │                                       │   │   ├── DevfileVolumeDto.java
    │                                       │   │   ├── EndpointDto.java
    │                                       │   │   ├── EntrypointDto.java
    │                                       │   │   ├── EnvDto.java
    │                                       │   │   ├── MetadataDto.java
    │                                       │   │   ├── PreviewUrlDto.java
    │                                       │   │   ├── ProjectDto.java
    │                                       │   │   └── SourceDto.java
    │                                       │   └── event/
    │                                       │       ├── BootstrapperStatusEvent.java
    │                                       │       ├── BrokerLogEvent.java
    │                                       │       ├── BrokerStatusChangedEvent.java
    │                                       │       ├── MachineLogEvent.java
    │                                       │       ├── MachineStatusEvent.java
    │                                       │       ├── RuntimeLogEvent.java
    │                                       │       ├── RuntimeStatusEvent.java
    │                                       │       ├── ServerStatusEvent.java
    │                                       │       └── WorkspaceStatusEvent.java
    │                                       └── event/
    │                                           ├── WorkspaceCreatedEvent.java
    │                                           └── WorkspaceRemovedEvent.java
    ├── che-core-sql-schema/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── resources/
    │               └── che-schema/
    │                   ├── 5.0.0-M8/
    │                   │   ├── 1__init.sql
    │                   │   └── mysql/
    │                   │       └── 1__init.sql
    │                   ├── 5.0.0-M9/
    │                   │   ├── 1__add_index_on_workspace_temporary.sql
    │                   │   ├── 2__update_local_links_in_environments.sql
    │                   │   └── mysql/
    │                   │       └── 2__update_local_links_in_environments.sql
    │                   ├── 5.11.0/
    │                   │   ├── 1__optimize_user_search.sql
    │                   │   └── postgresql/
    │                   │       └── 1__optimize_user_search.sql
    │                   ├── 5.2.0/
    │                   │   ├── 1__increase_project_attributes_values_length.sql
    │                   │   └── mysql/
    │                   │       └── 1__increase_project_attributes_values_length.sql
    │                   ├── 5.4.0/
    │                   │   ├── 1__drop_user_to_account_relation.sql
    │                   │   ├── 2__create_missed_account_indexes.sql
    │                   │   └── mysql/
    │                   │       └── 1__drop_user_to_account_relation.sql
    │                   ├── 5.6.0/
    │                   │   └── 1__add_exec_agent_where_terminal_agent_is_present.sql
    │                   ├── 5.7.0/
    │                   │   ├── 1__add_factory.sql
    │                   │   ├── 2__remove_match_policy.sql
    │                   │   └── mysql/
    │                   │       └── 1__add_factory.sql
    │                   ├── 5.8.0/
    │                   │   └── 1__add_foreigh_key_indexes.sql
    │                   ├── 6.0.0/
    │                   │   ├── 10__move_dockerimage_recipe_location_to_content.sql
    │                   │   ├── 11__increase_workspace_attributes_values_length.sql
    │                   │   ├── 12__remove_stack_sources.sql
    │                   │   ├── 1__add_path_to_serverconf.sql
    │                   │   ├── 2__rename_agents_to_installers.sql
    │                   │   ├── 3__add_installer.sql
    │                   │   ├── 4__remove_old_recipe.sql
    │                   │   ├── 5__add_machine_env.sql
    │                   │   ├── 6__remove_snapshots.sql
    │                   │   ├── 7__add_machine_volumes.sql
    │                   │   ├── 8__add_serverconf_attributes.sql
    │                   │   ├── 9__increase_externalmachine_env_value_length.sql
    │                   │   └── mysql/
    │                   │       ├── 11__increase_workspace_attributes_values_length.sql
    │                   │       └── 9__increase_externalmachine_env_value_length.sql
    │                   ├── 6.10.0/
    │                   │   ├── 1__add_workspace_cfg_attributes.sql
    │                   │   └── 2__change_signature_key_pair_id.sql
    │                   ├── 6.11.0/
    │                   │   ├── 1__add_signature_key_constraints.sql
    │                   │   └── mysql/
    │                   │       └── 1__add_signature_key_constraints.sql
    │                   ├── 6.12.0/
    │                   │   ├── 1__rename_project_attributes_values_field.sql
    │                   │   └── mysql/
    │                   │       └── 1__rename_project_attributes_values_field.sql
    │                   ├── 6.15.0/
    │                   │   ├── 1__remove_not_null_constraint_from_env_name_fields.sql
    │                   │   ├── 2__add_commands_to_k8s_runtime.sql
    │                   │   ├── mysql/
    │                   │   │   └── 1__remove_not_null_constraint_from_env_name_fields.sql
    │                   │   └── postgresql/
    │                   │       └── 1__remove_not_null_constraint_from_env_name_fields.sql
    │                   ├── 6.16.0/
    │                   │   ├── 1__increase_workspace_config_attributes_values_length.sql
    │                   │   ├── 2__create_workspace_activity_table.sql
    │                   │   ├── 3__bootstrap_ws_activity_data.sql
    │                   │   └── mysql/
    │                   │       ├── 1__increase_workspace_config_attributes_values_length.sql
    │                   │    

================================================
FILE CONTENTS
================================================

================================================
FILE: .ci/openshift-ci/Dockerfile
================================================
#!/bin/bash
#
# Copyright (c) 2023 Red Hat, Inc.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#   Red Hat, Inc. - initial API and implementation

# Dockerfile to bootstrap build and test in openshift-ci
FROM registry.ci.openshift.org/openshift/release:golang-1.20
# hadolint ignore=DL3002
USER 0

SHELL ["/bin/bash", "-c"]

# Temporary workaround since mirror.centos.org is down and can be replaced with vault.centos.org
RUN sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/*.repo && \
    sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/*.repo && \
    sed -i s/^mirrorlist=http/#mirrorlist=http/g /etc/yum.repos.d/*.repo

# hadolint ignore=DL3041
# Install yq, kubectl, chectl cli.
RUN yum install --assumeyes -d1 psmisc python3-pip  httpd-tools nodejs && \
    pip3 install --upgrade setuptools && \
    pip3 install yq && \
    curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && \
    chmod +x ./kubectl && \
    mv ./kubectl /usr/local/bin && \
    bash <(curl -sL https://che-incubator.github.io/chectl/install.sh) --channel=next


================================================
FILE: .ci/openshift-ci/ca.crt
================================================
-----BEGIN CERTIFICATE-----
MIIDDDCCAfSgAwIBAgIBATANBgkqhkiG9w0BAQsFADAmMSQwIgYDVQQDDBtpbmdy
ZXNzLW9wZXJhdG9yQDE3MjQwNzU0NzgwHhcNMjQwODE5MTM1MTE3WhcNMjYwODE5
MTM1MTE4WjAmMSQwIgYDVQQDDBtpbmdyZXNzLW9wZXJhdG9yQDE3MjQwNzU0Nzgw
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCgfFNrBJSxPGNjA0S5+DUa
Usqks86BMzzK7f6Fln90Aiw6eHgznvLlYLsUZUpCrbuOR2DbLy4NF4z1QMKwakY4
ClyNuxFUB823EzxdWsQx10LYeOglRWivNPln4n9TkCmet2fpSquI6LVnvFAJWWjE
exAZt0JjOLfcLChNTZCdyxBp/v2eVM1uNj9F/EeQp+8IjZ4FJREuyQnFAA55DzYH
qqsmscjLjWZeamZCKPufBWkHmxAfhxqSDiM9rfr9AuDQbgU85q4TKA9xpQmRHTsQ
PNv7IeKAexrhin467FbIfbVcUOMxPe80i/wWW3Z9T/c9UNDkyfg26Y/u94/irk1h
AgMBAAGjRTBDMA4GA1UdDwEB/wQEAwICpDASBgNVHRMBAf8ECDAGAQH/AgEAMB0G
A1UdDgQWBBRUi8oPN5+mKa/wzaBztYbxY8QvFDANBgkqhkiG9w0BAQsFAAOCAQEA
I5kiJUCNW/+7Pu7emoNb5H0L774AIccDmiXk4aS7Kbkhno9IuErdmYEbntjqllbt
kFYSlcccW7AZm2EQ5SWOjhdMuDnF1krngv4ffHTN3RxIp0TbSLV8bqjQrwHxDf0s
n8XYTrB3mIdmb0BK7SsaH5rubFCDWLxOMe9CT5SZsN258CoOm9fxOfE2SnxzLxjZ
2rTUozKXLB+xPyezZsQ2hGPbQJzf7KRBITqOJbaTRDDDxfXr/IosYvGaPGpOC/aw
4t2kbdLTJeiQAlZPwup9NXTPze+MEyAo2udooMACcxdiOEQc00bXvzKF0Qlvy6wC
v2ib/BnCyVIZ3On5CwwJSA==
-----END CERTIFICATE-----


================================================
FILE: .ci/openshift-ci/common.sh
================================================
#!/bin/bash
#
# Copyright (c) 2023-2025 Red Hat, Inc.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#   Red Hat, Inc. - initial API and implementation
#

set -e
# only exit with zero if all commands of the pipeline exit successfully
set -o pipefail

PR_IMAGE_TAG="pr-${PULL_NUMBER}"

export CHE_NAMESPACE=${CHE_NAMESPACE:-"eclipse-che"}
export CHE_SERVER_IMAGE=${CHE_SERVER_IMAGE:-"quay.io/eclipse/che-server:${PR_IMAGE_TAG}"}
export ARTIFACTS_DIR=${ARTIFACT_DIR:-"/tmp/artifacts"}
export CHE_FORWARDED_PORT="8081"
export OCP_ADMIN_USER_NAME=${OCP_ADMIN_USER_NAME:-"admin"}
export OCP_NON_ADMIN_USER_NAME=${OCP_NON_ADMIN_USER_NAME:-"user"}
export OCP_LOGIN_PASSWORD=${OCP_LOGIN_PASSWORD:-"passw"}
export ADMIN_CHE_NAMESPACE=${OCP_ADMIN_USER_NAME}"-che"
export USER_CHE_NAMESPACE=${OCP_NON_ADMIN_USER_NAME}"-che"
export GIT_PROVIDER_USERNAME=${GIT_PROVIDER_USERNAME:-"chepullreq1"}
export PUBLIC_REPO_WORKSPACE_NAME=${PUBLIC_REPO_WORKSPACE_NAME:-"public-repo-wksp-testname"}
export PRIVATE_REPO_WORKSPACE_NAME=${PRIVATE_REPO_WORKSPACE_NAME:-"private-repo-wksp-testname"}
export PUBLIC_PROJECT_NAME=${PUBLIC_PROJECT_NAME:-"public-repo"}
export PRIVATE_PROJECT_NAME=${PRIVATE_PROJECT_NAME:-"private-repo"}
export TEST_FILE_NAME=${TEST_FILE_NAME:-"Date.txt"}
export CUSTOM_CONFIG_MAP_NAME=${CUSTOM_CONFIG_MAP_NAME:-"custom-ca-certificates"}
export GIT_SSL_CONFIG_MAP_NAME=${GIT_SSL_CONFIG_MAP_NAME:-"che-self-signed-cert"}

provisionOpenShiftOAuthUser() {
  echo "------- [INFO] Start provisioning Openshift OAuth user -------"
  htpasswd -c -B -b users.htpasswd ${OCP_ADMIN_USER_NAME} ${OCP_LOGIN_PASSWORD}
  htpasswd -b users.htpasswd ${OCP_NON_ADMIN_USER_NAME} ${OCP_LOGIN_PASSWORD}
  oc create secret generic htpass-secret --from-file=htpasswd="users.htpasswd" -n openshift-config
  oc apply -f ".ci/openshift-ci/htpasswdProvider.yaml"
  oc adm policy add-cluster-role-to-user cluster-admin ${OCP_ADMIN_USER_NAME}

  echo "------- [INFO] Waiting for htpasswd auth to be working up to 5 minutes -------"
  CURRENT_TIME=$(date +%s)
  ENDTIME=$((CURRENT_TIME + 300))
  while [ "$(date +%s)" -lt $ENDTIME ]; do
      if oc login -u=${OCP_ADMIN_USER_NAME} -p=${OCP_LOGIN_PASSWORD} --insecure-skip-tls-verify=false; then
          echo "======= [INFO] OpenShift OAuth htpasswd is configured. =======
======= [INFO] Login to OCP cluster with admin user credentials is success.======="
          return 0
      fi
      sleep 5
  done

  echo "####### [ERROR] Error occurred while waiting OpenShift OAuth htpasswd setup. Try to rerun test. #######"
  exit 1
}

configureGitSelfSignedCertificate() {
  echo "------- [INFO] Configure self-signed certificate for Git provider -------"
  oc adm new-project ${CHE_NAMESPACE}
  oc project ${CHE_NAMESPACE}

  echo "------- [INFO] Create ConfigMap with the required TLS certificate -------"
  oc create configmap ${CUSTOM_CONFIG_MAP_NAME} --from-file=.ci/openshift-ci/ca.crt
  oc label configmap ${CUSTOM_CONFIG_MAP_NAME} app.kubernetes.io/part-of=che.eclipse.org app.kubernetes.io/component=ca-bundle

  echo "======= [INFO] ConfigMap is configured ======="
}

createCustomResourcesFile() {
  echo "------- [INFO] Create custom resourses file -------"
  cat > custom-resources.yaml <<-END
apiVersion: org.eclipse.che/v2
spec:
  devEnvironments:
    maxNumberOfRunningWorkspacesPerUser: 10000
END

  echo "======= [INFO] Generated custom resources file ======="
  cat custom-resources.yaml
}

deployChe() {
  echo "------- [INFO] Start installing Eclipse Che -------"
  chectl server:deploy --cheimage=$CHE_SERVER_IMAGE \
                       --che-operator-cr-patch-yaml=custom-resources.yaml \
                       --platform=openshift \
                       --telemetry=off \
                       --batch

  waitFinishDeploymentCheServer
  echo "======= [INFO] Eclipse Che is successfully installed ======="
}

waitFinishDeploymentCheServer() {
          CURRENT_TIME=$(date +%s)
          ENDTIME=$((CURRENT_TIME + 60))

          while [ "$(date +%s)" -lt $ENDTIME ]; do
              podCheServerName=$(oc get pod -n ${CHE_NAMESPACE} -l component=che | grep "che" | awk '{ print $1 }')
              echo "Pod Che_Server: $podCheServerName"
              count=$(echo "$podCheServerName" | wc -l)
              if [ $count -eq 1 ]; then
                  echo "------- [INFO] Only one Che Server pod is left. -------"
                  return 0
              fi
              echo "------- [INFO] Waiting until only one Che Server pod remains. -------"
              sleep 5
          done

          echo "####### [ERROR] Error occurred while waiting for only one Che Server pod. #######"
          exit 1
}

# this command starts port forwarding between the local machine and the che-host service in the OpenShift cluster.
forwardPortToService() {
  echo "------- [INFO] Start forwarding between the local machine and the che-host service -------"
  oc port-forward service/che-host ${CHE_FORWARDED_PORT}:8080 -n ${CHE_NAMESPACE} &
  sleep 3s
}

killProcessByPort() {
  fuser -k ${CHE_FORWARDED_PORT}/tcp
}

requestFactoryResolverGitRepoUrl() {
  GIT_REPO_URL=$1
  CLUSTER_ACCESS_TOKEN=$(oc whoami -t)

  curl -i -X 'POST' \
    http://localhost:${CHE_FORWARDED_PORT}/api/factory/resolver \
    -H 'accept: */*' \
    -H "Authorization: Bearer ${CLUSTER_ACCESS_TOKEN}" \
    -H 'Content-Type: application/json' \
    -d '{
    "url": "'${GIT_REPO_URL}'"
  }'
}

# check that factory resolver returns correct value without any PAT/OAuth setup
testFactoryResolverNoPatOAuth() {
  echo "------- [INFO] Check factory resolver for public repository with NO PAT/OAuth setup -------"
  testFactoryResolverResponse $1 200

  echo "------- [INFO] Check factory resolver for private repository with NO PAT/OAuth setup -------"
  testFactoryResolverResponse $2 500
}

# check that raw devfile url factory resolver returns correct value without any PAT/OAuth setup
testFactoryResolverNoPatOAuthRaw() {
  echo "------- [INFO] Check factory resolver for public repository with NO PAT/OAuth setup -------"
  testFactoryResolverResponse $1 200

  echo "------- [INFO] Check factory resolver for private repository with NO PAT/OAuth setup -------"
  testFactoryResolverResponse $2 400
}

# check that factory resolver returns correct value with PAT/OAuth setup
testFactoryResolverWithPatOAuth() {
  echo "------- [INFO] Check factory resolver for public repository with PAT/OAuth setup -------"
  testFactoryResolverResponse $1 200

  echo "------- [INFO] Check factory resolver for private repository with PAT/OAuth setup -------"
  testFactoryResolverResponse $2 200
}

testFactoryResolverResponse() {
  URL=$1
  RESPONSE_CODE=$2

  if [ "$(requestFactoryResolverGitRepoUrl ${URL} | grep "HTTP/1.1 ${RESPONSE_CODE}")" ]; then
    echo "======= [INFO] Factory resolver returned 'HTTP/1.1 ${RESPONSE_CODE}' status code. Expected client side response. ======="
  else
    echo "####### [ERROR] Factory resolver returned wrong status code. Expected: HTTP/1.1 ${RESPONSE_CODE}. #######
####### Cause possible: PR code regress or service is changed. Need to investigate it. #######"
    exit 1
  fi
}

requestProvisionNamespace() {
  CLUSTER_ACCESS_TOKEN=$(oc whoami -t)

  curl -i -X 'POST' \
    http://localhost:${CHE_FORWARDED_PORT}/api/kubernetes/namespace/provision \
    -H 'accept: application/json' \
    -H "Authorization: Bearer ${CLUSTER_ACCESS_TOKEN}" \
    -d ''
}

initUserNamespace() {
  OCP_USER_NAME=$1

  echo "------- [INFO] Initialize user namespace -------"
  oc login -u=${OCP_USER_NAME} -p=${OCP_LOGIN_PASSWORD} --insecure-skip-tls-verify=false

  request_result=$(requestProvisionNamespace) || true

  if [ -z "$request_result" ]; then
    echo "####### [ERROR] Cause possible: lost connection to pod, this is an infrastructure problem. Try to rerun the test. #######"
    exit 1
  elif [ "$(echo "$request_result" | grep "HTTP/1.1 200")" ]; then
    echo "======= [INFO] Request provision user namespace returned 'HTTP/1.1 200' status code. User namespace is created. ======="
  else
    echo "####### [ERROR] Request provision user namespace returned wrong status code. Expected: HTTP/1.1 200. #######
####### User namespace creation failed. Cause possible: PR code regression or service is changed. Need to investigate. #######"
    exit 1
  fi
}

setupPersonalAccessToken() {
  GIT_PROVIDER_TYPE=$1
  GIT_PROVIDER_URL=$2
  GIT_PROVIDER_PAT=$3

  echo "------- [INFO] Setup Personal Access Token Secret -------"
  oc project ${USER_CHE_NAMESPACE}
  CHE_USER_ID=$(oc get secret user-profile -o jsonpath='{.data.id}' | base64 -d)
  cat .ci/openshift-ci/pat-secret.yaml > pat-secret.yaml

  # patch the pat-secret.yaml file
  sed -i "s#che-user-id#${CHE_USER_ID}#g" pat-secret.yaml
  sed -i "s#git-provider-name#${GIT_PROVIDER_TYPE}#g" pat-secret.yaml
  sed -i "s#git-provider-url#${GIT_PROVIDER_URL}#g" pat-secret.yaml
  sed -i "s#content-access-token#${GIT_PROVIDER_PAT}#g" pat-secret.yaml

  if [ "${GIT_PROVIDER_TYPE}" == "azure-devops" ]; then
    sed -i "s#''#${GIT_PROVIDER_USERNAME}#g" pat-secret.yaml
  fi

  cat pat-secret.yaml

  oc apply -f pat-secret.yaml -n ${USER_CHE_NAMESPACE}
  echo "======= [INFO] Personal Access Token is created. ======="
}

setupSSHKeyPairs() {
  GIT_PRIVATE_KEY=$1
  GIT_PUBLIC_KEY=$2

  echo "------- [INFO] Setup SSH Key Pairs Secret "-------
  oc project ${USER_CHE_NAMESPACE}
  ENCODED_GIT_PRIVATE_KEY=$(echo "${GIT_PRIVATE_KEY}" | base64 -w 0)
  ENCODED_GIT_PUBLIC_KEY=$(echo "${GIT_PUBLIC_KEY}" | base64 -w 0)
  cat .ci/openshift-ci/ssh-secret.yaml > ssh-secret.yaml

  # patch the ssh-secret.yaml file
  sed -i "s#ssh_private_key#${ENCODED_GIT_PRIVATE_KEY}#g" ssh-secret.yaml
  sed -i "s#ssh_public_key#${ENCODED_GIT_PUBLIC_KEY}#g" ssh-secret.yaml

  cat ssh-secret.yaml

  oc apply -f ssh-secret.yaml -n ${USER_CHE_NAMESPACE}
  echo "======= [INFO] SSH Secret is created. ======="
}

# Only for GitLab server administrator users
createOAuthApplicationGitLabServer() {
  ADMIN_ACCESS_TOKEN=$1

  CHE_URL=https://$(oc get route -n ${CHE_NAMESPACE} che -o jsonpath='{.spec.host}')

  echo "------- [INFO] Create OAuth Application -------"
  response=$(curl -k -X POST \
    ${GIT_PROVIDER_URL}/api/v4/applications \
    -H "PRIVATE-TOKEN: ${ADMIN_ACCESS_TOKEN}" \
    -d "name=${APPLICATION_NAME}" \
    -d "redirect_uri=${CHE_URL}/api/oauth/callback" \
    -d "scopes=api write_repository openid")

  echo "------- [INFO] Response of the created OAuth Application -------"

  OAUTH_ID=$(echo "$response" | jq -r '.id')
  APPLICATION_ID=$(echo "$response" | jq -r '.application_id')
  APPLICATION_SECRET=$(echo "$response" | jq -r '.secret')
}

# Only for GitLab server administrator users
deleteOAuthApplicationGitLabServer() {
  OAUTH_ID=$1
  ADMIN_ACCESS_TOKEN=$2

  echo "------- [INFO] Delete OAuth Application -------"
  curl -i -k -X DELETE \
    ${GIT_PROVIDER_URL}/api/v4/applications/${OAUTH_ID} \
    -H "PRIVATE-TOKEN: ${ADMIN_ACCESS_TOKEN}"

  echo "======= [INFO] OAuth Application is deleted ======="
}

# Only for GitLab server
revokeAuthorizedOAuthApplication() {
  APPLICATION_ID=$1
  APPLICATION_SECRET=$2

  echo "------- [INFO] Revoke authorized OAuth application -------"
  oc project ${USER_CHE_NAMESPACE}
  OAUTH_TOKEN_NAME=$(oc get secret | grep 'personal-access-token'| awk 'NR==1 { print $1 }')
  OAUTH_TOKEN=$(oc get secret $OAUTH_TOKEN_NAME -o jsonpath='{.data.token}' | base64 -d)

  curl -i -k -X POST \
    ${GIT_PROVIDER_URL}/oauth/revoke \
    -d "client_id=${APPLICATION_ID}" \
    -d "client_secret=${APPLICATION_SECRET}" \
    -d "token=${OAUTH_TOKEN}"

  echo "======= [INFO] Authorized OAuth application is revoked ======="
}

# Only for GitLab server
setupOAuthSecret() {
  APPLICATION_ID=$1
  APPLICATION_SECRET=$2

  echo "------- [INFO] Setup OAuth Secret -------"
  oc login -u=${OCP_ADMIN_USER_NAME} -p=${OCP_LOGIN_PASSWORD} --insecure-skip-tls-verify=false
  oc project ${CHE_NAMESPACE}
  SERVER_POD=$(oc get pod -l component=che | grep "che" | awk 'NR==1 { print $1 }')

  cat .ci/openshift-ci/oauth-secret.yaml > oauth-secret.yaml

  # patch the oauth-secret.yaml file
  sed -i "s#git-provider-url#${GIT_PROVIDER_URL}#g" oauth-secret.yaml
  sed -i "s#application-id#${APPLICATION_ID}#g" oauth-secret.yaml
  sed -i "s#application-secret#${APPLICATION_SECRET}#g" oauth-secret.yaml

  cat oauth-secret.yaml
  oc apply -f oauth-secret.yaml -n ${CHE_NAMESPACE}

  echo "------- [INFO] Wait updating deployment after create OAuth secret -------"
  oc wait --for=delete pod/${SERVER_POD} --timeout=120s
}

runTestWorkspaceWithGitRepoUrl() {
  WS_NAME=$1
  PROJECT_NAME=$2
  GIT_REPO_URL=$3
  OCP_USER_NAMESPACE=$4

  oc project ${OCP_USER_NAMESPACE}
  cat .ci/openshift-ci/devworkspace-test.yaml > devworkspace-test.yaml

  echo "------- [INFO] Preparing 'devworkspace-test.yaml' and run test workspace -------"
  # patch the devworkspace-test.yaml file
  sed -i "s#ws-name#${WS_NAME}#g" devworkspace-test.yaml
  sed -i "s#project-name#${PROJECT_NAME}#g" devworkspace-test.yaml
  sed -i "s#git-repo-url#${GIT_REPO_URL}#g" devworkspace-test.yaml

  cat devworkspace-test.yaml

  oc apply -f devworkspace-test.yaml -n ${OCP_USER_NAMESPACE}
  oc wait -n ${OCP_USER_NAMESPACE} --for=condition=Ready dw ${WS_NAME} --timeout=420s
  echo "======= [INFO] Test workspace is run ======="
}

testProjectIsCloned() {
  PROJECT_NAME=$1
  OCP_USER_NAMESPACE=$2

  WORKSPACE_POD_NAME=$(oc get pods -n ${OCP_USER_NAMESPACE} | grep workspace | awk '{print $1}')
  if oc exec -it -n ${OCP_USER_NAMESPACE} ${WORKSPACE_POD_NAME} -- test -f /projects/${PROJECT_NAME}/${TEST_FILE_NAME}; then
    echo "======= [INFO] Project file /projects/${PROJECT_NAME}/${TEST_FILE_NAME} exists. ======="
  else
    echo "======= [INFO] Project file /projects/${PROJECT_NAME}/${TEST_FILE_NAME} is absent. ======="
    return 1
  fi
}

testGitCredentialsData() {
  OCP_USER_NAMESPACE=$1
  GIT_PROVIDER_PAT=$2
  GIT_PROVIDER_URL=$3

  echo "------- [INFO] Check the 'git credentials' is in a workspace -------"
  hostName="${GIT_PROVIDER_URL#https://}"

  if [ "${GIT_PROVIDER_TYPE}" == "azure-devops" ]; then
    userName="username"
  else
    userName=${GIT_PROVIDER_USERNAME}
  fi

  gitCredentials="https://${userName}:${GIT_PROVIDER_PAT}@${hostName}"
  WORKSPACE_POD_NAME=$(oc get pods -n ${OCP_USER_NAMESPACE} | grep workspace | awk '{print $1}')
  if oc exec -it -n ${OCP_USER_NAMESPACE} ${WORKSPACE_POD_NAME} -- cat /.git-credentials/credentials | grep -q ${gitCredentials}; then
    echo "======= [INFO] Git credentials file '/.git-credentials/credentials' exists and has the expected content. ======="
  else
    echo "####### [ERROR] Git credentials file '/.git-credentials/credentials' does not exist or has incorrect content. ######
###### Cause possible: PR code regress or service is changed. Need to investigate it. #######"
    exit 1
  fi
}

deleteTestWorkspace() {
  WS_NAME=$1
  OCP_USER_NAMESPACE=$2
  echo "------- [INFO] Delete test workspace -------"
  oc delete dw ${WS_NAME} -n ${OCP_USER_NAMESPACE}
}

startOAuthFactoryTest() {
  CHE_URL=https://$(oc get route -n ${CHE_NAMESPACE} che -o jsonpath='{.spec.host}')
  # patch oauth-factory-test.yaml
  cat .ci/openshift-ci/pod-oauth-factory-test.yaml > oauth-factory-test.yaml
  sed -i "s#CHE_URL#${CHE_URL}#g" oauth-factory-test.yaml
  sed -i "s#CHE-NAMESPACE#${CHE_NAMESPACE}#g" oauth-factory-test.yaml
  sed -i "s#OCP_USER_NAME#${OCP_NON_ADMIN_USER_NAME}#g" oauth-factory-test.yaml
  sed -i "s#OCP_USER_PASSWORD#${OCP_LOGIN_PASSWORD}#g" oauth-factory-test.yaml
  sed -i "s#FACTORY_REPO_URL#${PRIVATE_REPO_URL}#g" oauth-factory-test.yaml
  sed -i "s#GIT_BRANCH#${GIT_REPO_BRANCH}#g" oauth-factory-test.yaml
  sed -i "s#GIT_PROVIDER_TYPE#${GIT_PROVIDER_TYPE}#g" oauth-factory-test.yaml
  sed -i "s#GIT_PROVIDER_USER_NAME#${GIT_PROVIDER_LOGIN}#g" oauth-factory-test.yaml
  sed -i "s#GIT_PROVIDER_USER_PASSWORD#${GIT_PROVIDER_PASSWORD}#g" oauth-factory-test.yaml

  echo "------- [INFO] Applying the following patched OAuth Factory Test Pod: -------"
  cat oauth-factory-test.yaml
  echo "[INFO] --------------------------------------------------"
  oc apply -f oauth-factory-test.yaml
  # wait for the pod to start
  n=0
  while [ $n -le 120 ]
  do
    PHASE=$(oc get pod -n ${CHE_NAMESPACE} ${TEST_POD_NAME} \
        --template='{{ .status.phase }}')
    if [[ ${PHASE} == "Running" ]]; then
      echo "======= [INFO] Factory test started successfully. ======="
      return
    fi

    sleep 5
    n=$(( n+1 ))
  done

  echo "####### [ERROR] Failed to start Factory test. #######
###### Cause possible: an infrastructure problem, pod could not start, try to rerun the test. #######"
  exit 1
}

startSmokeTest() {
  CHE_URL=https://$(oc get route -n ${CHE_NAMESPACE} che -o jsonpath='{.spec.host}')
  # patch che-smoke-test.yaml
  cat .ci/openshift-ci/pod-che-smoke-test.yaml > che-smoke-test.yaml
  sed -i "s#CHE_URL#${CHE_URL}#g" che-smoke-test.yaml
  sed -i "s#CHE-NAMESPACE#${CHE_NAMESPACE}#g" che-smoke-test.yaml
  sed -i "s#OCP_USER_NAME#${OCP_NON_ADMIN_USER_NAME}#g" che-smoke-test.yaml
  sed -i "s#OCP_USER_PASSWORD#${OCP_LOGIN_PASSWORD}#g" che-smoke-test.yaml

  echo "------- [INFO] Applying the following patched Smoke Test Pod: -------"
  cat che-smoke-test.yaml
  echo "[INFO] --------------------------------------------------"
  oc apply -f che-smoke-test.yaml
  # wait for the pod to start
  n=0
  while [ $n -le 120 ]
  do
    PHASE=$(oc get pod -n ${CHE_NAMESPACE} ${TEST_POD_NAME} \
        --template='{{ .status.phase }}')
    if [[ ${PHASE} == "Running" ]]; then
      echo "======= [INFO] Smoke test started successfully. ======="
      return
    fi

    sleep 5
    n=$(( n+1 ))
  done

  echo "####### [ERROR] Failed to start Smoke test. #######
####### Cause possible: an infrastructure problem, pod could not start, try to rerun the test. #######"
  exit 1
}

# Catch the finish of the job and write logs in artifacts.
catchFinish() {
  local RESULT=$?
  if [ "$RESULT" != "0" ]; then
    set +e
    collectEclipseCheLogs
    set -e
  fi

  echo "------- [INFO] Terminate the process after finish the test script. -------"
  set +e
  killProcessByPort
  set -e

  [[ "${RESULT}" != "0" ]] && echo "####### [ERROR] Job failed. #######" || echo "####### [INFO] Job completed successfully. #######"
  exit $RESULT
}

collectEclipseCheLogs() {
  mkdir -p ${ARTIFACTS_DIR}/che-logs

  # Collect all Eclipse Che logs and cluster CR
  oc login -u=${OCP_ADMIN_USER_NAME} -p=${OCP_LOGIN_PASSWORD} --insecure-skip-tls-verify=false
  oc get checluster -o yaml -n $CHE_NAMESPACE > "${ARTIFACTS_DIR}/che-cluster.yaml"
  chectl server:logs -n $CHE_NAMESPACE --directory ${ARTIFACTS_DIR}/che-logs --telemetry off
}

collectLogs() {
  echo "------- [INFO] Waiting until test pod finished. -------"
  oc logs -n ${CHE_NAMESPACE} ${TEST_POD_NAME} -c test -f
  sleep 3

  # Download artifacts
  set +e
  echo -------" [INFO] Collect all Eclipse Che logs and cluster CR. -------"
  collectEclipseCheLogs

  echo "------- [INFO] Downloading test report. -------"
  mkdir -p ${ARTIFACTS_DIR}/e2e
  oc rsync -n ${CHE_NAMESPACE} ${TEST_POD_NAME}:/tmp/e2e/report/ ${ARTIFACTS_DIR}/e2e -c download-reports
  oc exec -n ${CHE_NAMESPACE} ${TEST_POD_NAME} -c download-reports -- touch /tmp/done

  # Revoke and delete the OAuth application
  if [[ ${TEST_POD_NAME} == "oauth-factory-test" ]]; then
    revokeAuthorizedOAuthApplication ${APPLICATION_ID} ${APPLICATION_SECRET}
    deleteOAuthApplicationGitLabServer ${OAUTH_ID} ${ADMIN_ACCESS_TOKEN}
  fi

  set -e

  EXIT_CODE=$(oc logs -n ${CHE_NAMESPACE} ${TEST_POD_NAME} -c test | grep EXIT_CODE)
  if [[ ${EXIT_CODE} != "+ EXIT_CODE=0" ]]; then
    echo "####### [ERROR] GUI test failed. Job failed. #######
###### Cause possible: PR code regress or service is changed. Need to investigate it. #######"
    exit 1
  fi
  echo "======= [INFO] Job completed successfully. ======="
}

testCloneGitRepoNoProjectExists() {
    WS_NAME=$1
    PROJECT_NAME=$2
    GIT_REPO_URL=$3
    OCP_USER_NAMESPACE=$4

    runTestWorkspaceWithGitRepoUrl ${WS_NAME} ${PROJECT_NAME} ${GIT_REPO_URL} ${OCP_USER_NAMESPACE}
    echo "------- [INFO] Check the private repository is NOT cloned with NO PAT/OAuth setup. -------"
    testProjectIsCloned ${PROJECT_NAME} ${OCP_USER_NAMESPACE} && \
    { echo "####### [ERROR] Project file /projects/${PROJECT_NAME}/${TEST_FILE_NAME} should NOT be present. #######
####### Cause possible: PR code regress or service is changed. Need to investigate it. #######" && exit 1; }
    echo "======= [INFO] Project file /projects/${PROJECT_NAME}/${TEST_FILE_NAME} is NOT present. This is EXPECTED. ======="
}

# Verify that a public repository is cloned without requiring PAT, OAuth, or SSH configuration.
# Verify that a public or private repository is cloned when PAT, OAuth, or SSH configuration is provided.
testCloneGitRepoProjectShouldExists() {
  WS_NAME=$1
  PROJECT_NAME=$2
  GIT_REPO_URL=$3
  OCP_USER_NAMESPACE=$4

  runTestWorkspaceWithGitRepoUrl ${WS_NAME} ${PROJECT_NAME} ${GIT_REPO_URL} ${OCP_USER_NAMESPACE}
  echo "------- [INFO] Check the repository is cloned. -------"
  testProjectIsCloned ${PROJECT_NAME} ${OCP_USER_NAMESPACE} || \
  { echo "####### [ERROR] Project file /projects/${PROJECT_NAME}/${TEST_FILE_NAME} should be present. #######
###### Cause possible: PR code regress or service is changed. Need to investigate it. #######" && exit 1; }
}

setupTestEnvironment() {
  OCP_USER_NAME=$1

  provisionOpenShiftOAuthUser
  createCustomResourcesFile
  deployChe
  forwardPortToService
  initUserNamespace ${OCP_USER_NAME}
}

setupTestEnvironmentOAuthFlow() {
  ADMIN_ACCESS_TOKEN=$1
  APPLICATION_ID=$2
  APPLICATION_SECRET=$3

  provisionOpenShiftOAuthUser
  configureGitSelfSignedCertificate
  createCustomResourcesFile
  deployChe
  createOAuthApplicationGitLabServer ${ADMIN_ACCESS_TOKEN} ${APPLICATION_NAME}
  setupOAuthSecret ${APPLICATION_ID} ${APPLICATION_SECRET}
}


================================================
FILE: .ci/openshift-ci/devworkspace-test.yaml
================================================
kind: DevWorkspace
apiVersion: workspace.devfile.io/v1alpha2
metadata:
  name: ws-name
spec:
  started: true
  routingClass: che
  template:
    projects:
      - name: project-name
        git:
          remotes:
            origin: git-repo-url
  contributions:
    - name: che-code
      uri: https://eclipse-che.github.io/che-plugin-registry/main/v3/plugins/che-incubator/che-code/latest/devfile.yaml
      components:
        - name: che-code-runtime-description
          container:
            env:
              - name: CODE_HOST
                value: 0.0.0.0


================================================
FILE: .ci/openshift-ci/htpasswdProvider.yaml
================================================
apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
  name: cluster
spec:
  identityProviders:
    - name: htpasswd
      mappingMethod: claim
      type: HTPasswd
      htpasswd:
        fileData:
          name: htpass-secret


================================================
FILE: .ci/openshift-ci/oauth-secret.yaml
================================================
kind: Secret
apiVersion: v1
metadata:
  name: gitlab-oauth-secret
  namespace: eclipse-che
  labels:
    app.kubernetes.io/part-of: che.eclipse.org
    app.kubernetes.io/component: oauth-scm-configuration
  annotations:
    che.eclipse.org/oauth-scm-server: gitlab
    che.eclipse.org/scm-server-endpoint: git-provider-url
type: Opaque
stringData:
  id: application-id
  secret: application-secret


================================================
FILE: .ci/openshift-ci/pat-secret.yaml
================================================
kind: Secret
apiVersion: v1
metadata:
  name: personal-access-token
  labels:
    app.kubernetes.io/component: scm-personal-access-token
    app.kubernetes.io/part-of: che.eclipse.org
  annotations:
    che.eclipse.org/che-userid: che-user-id
    che.eclipse.org/scm-personal-access-token-name: git-provider-name
    che.eclipse.org/scm-url: git-provider-url
    che.eclipse.org/scm-organization: ''
stringData:
  token: content-access-token
type: Opaque


================================================
FILE: .ci/openshift-ci/pod-che-smoke-test.yaml
================================================
apiVersion: v1
kind: Pod
metadata:
  name: che-smoke-test
  namespace: CHE-NAMESPACE
spec:
  volumes:
    - name: test-run-results
    - name: ffmpeg-video
    - name: dshm
      emptyDir:
        medium: Memory
  containers:
    # container containing the tests
    - name: test
      image: quay.io/eclipse/che-e2e:next
      imagePullPolicy: Always
      env:
        - name: VIDEO_RECORDING
          value: "true"
        - name: TEST_SUITE
          value: "test"
        - name: TS_SELENIUM_EDITOR
          value: "che-code"
        - name: USERSTORY
          value: "SmokeTest"
        - name: NODE_TLS_REJECT_UNAUTHORIZED
          value: "0"
        - name: TS_SELENIUM_BASE_URL
          value: "CHE_URL"
        - name: TS_SELENIUM_LOG_LEVEL
          value: "TRACE"
        - name: TS_SELENIUM_OCP_USERNAME
          value: "OCP_USER_NAME"
        - name: TS_SELENIUM_OCP_PASSWORD
          value: "OCP_USER_PASSWORD"
        - name: TS_SELENIUM_VALUE_OPENSHIFT_OAUTH
          value: "true"
        - name: TS_OCP_LOGIN_PAGE_PROVIDER_TITLE
          value: "htpasswd"
        - name: DELETE_WORKSPACE_ON_FAILED_TEST
          value: "true"
        - name: TS_SELENIUM_START_WORKSPACE_TIMEOUT
          value: "360000"
        - name: TS_IDE_LOAD_TIMEOUT
          value: "40000"
      volumeMounts:
        - name: test-run-results
          mountPath: /tmp/e2e/report/
        - name: ffmpeg-video
          mountPath: /tmp/ffmpeg_report/
        - name: dshm
          mountPath: /dev/shm
      resources:
        requests:
          memory: "3Gi"
          cpu: "2"
        limits:
          memory: "4Gi"
          cpu: "2"
    # Download results
    - name: download-reports
      image: eeacms/rsync
      imagePullPolicy: IfNotPresent
      volumeMounts:
        - name: test-run-results
          mountPath: /tmp/e2e/report/
        - name: ffmpeg-video
          mountPath: /tmp/ffmpeg_report/
      resources:
      command: ["sh"]
      args:
        [
          "-c",
          "while true; if [[ -f /tmp/done ]]; then exit 0; fi; do sleep 1; done",
        ]
  restartPolicy: Never


================================================
FILE: .ci/openshift-ci/pod-oauth-factory-test.yaml
================================================
apiVersion: v1
kind: Pod
metadata:
  name: oauth-factory-test
  namespace: CHE-NAMESPACE
spec:
  volumes:
    - name: test-run-results
    - name: ffmpeg-video
    - name: dshm
      emptyDir:
        medium: Memory
  containers:
    # container containing the tests
    - name: test
      image: quay.io/eclipse/che-e2e:next
      imagePullPolicy: Always
      env:
        - name: VIDEO_RECORDING
          value: "true"
        - name: TEST_SUITE
          value: "test"
        - name: TS_SELENIUM_EDITOR
          value: "che-code"
        - name: USERSTORY
          value: "Factory"
        - name: NODE_TLS_REJECT_UNAUTHORIZED
          value: "0"
        - name: TS_SELENIUM_BASE_URL
          value: "CHE_URL"
        - name: TS_SELENIUM_LOG_LEVEL
          value: "TRACE"
        - name: TS_SELENIUM_OCP_USERNAME
          value: "OCP_USER_NAME"
        - name: TS_SELENIUM_OCP_PASSWORD
          value: "OCP_USER_PASSWORD"
        - name: TS_SELENIUM_VALUE_OPENSHIFT_OAUTH
          value: "true"
        - name: TS_SELENIUM_FACTORY_GIT_REPO_URL
          value: "FACTORY_REPO_URL"
        - name: TS_SELENIUM_FACTORY_GIT_REPO_BRANCH
          value: "GIT_BRANCH"
        - name: TS_SELENIUM_FACTORY_GIT_PROVIDER
          value: "GIT_PROVIDER_TYPE"
        - name: TS_SELENIUM_GIT_PROVIDER_OAUTH
          value: "true"
        - name: TS_SELENIUM_GIT_PROVIDER_USERNAME
          value: "GIT_PROVIDER_USER_NAME"
        - name: TS_SELENIUM_GIT_PROVIDER_PASSWORD
          value: "GIT_PROVIDER_USER_PASSWORD"
        - name: TS_OCP_LOGIN_PAGE_PROVIDER_TITLE
          value: "htpasswd"
        - name: DELETE_WORKSPACE_ON_FAILED_TEST
          value: "true"
        - name: TS_SELENIUM_START_WORKSPACE_TIMEOUT
          value: "360000"
        - name: TS_IDE_LOAD_TIMEOUT
          value: "40000"
      volumeMounts:
        - name: test-run-results
          mountPath: /tmp/e2e/report/
        - name: ffmpeg-video
          mountPath: /tmp/ffmpeg_report/
        - name: dshm
          mountPath: /dev/shm
      resources:
        requests:
          memory: "3Gi"
          cpu: "2"
        limits:
          memory: "4Gi"
          cpu: "2"
    # Download results
    - name: download-reports
      image: eeacms/rsync
      imagePullPolicy: IfNotPresent
      volumeMounts:
        - name: test-run-results
          mountPath: /tmp/e2e/report/
        - name: ffmpeg-video
          mountPath: /tmp/ffmpeg_report/
      resources:
      command: ["sh"]
      args:
        [
          "-c",
          "while true; if [[ -f /tmp/done ]]; then exit 0; fi; do sleep 1; done",
        ]
  restartPolicy: Never


================================================
FILE: .ci/openshift-ci/ssh-secret.yaml
================================================
apiVersion: v1
kind: Secret
metadata:
  name: git-ssh-key
  annotations:
    controller.devfile.io/mount-as: subpath
    controller.devfile.io/mount-path: /etc/ssh/
  labels:
    controller.devfile.io/mount-to-devworkspace: "true"
    controller.devfile.io/watch-secret: "true"
type: Opaque
data:
  dwo_ssh_key: ssh_private_key
  dwo_ssh_key.pub: ssh_public_key
  ssh_config: aG9zdCAqCiAgSWRlbnRpdHlGaWxlIC9ldGMvc3NoL2R3b19zc2hfa2V5CiAgU3RyaWN0SG9zdEtleUNoZWNraW5nID0gbm8K


================================================
FILE: .ci/openshift-ci/test-azure-no-pat-oauth-flow-raw-devfile-url.sh
================================================
#!/bin/bash
#
# Copyright (c) 2023 Red Hat, Inc.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#   Red Hat, Inc. - initial API and implementation
#

# exit immediately when a command fails
set -ex
# only exit with zero if all commands of the pipeline exit successfully
set -o pipefail

echo "======= [INFO] OpenShift CI infrastructure is ready. Running test. ======="

export PUBLIC_REPO_RAW_PATH_URL=${PUBLIC_REPO_RAW_PATH_URL:-"https://dev.azure.com/chepullreq1/che-pr-public/_apis/git/repositories/public-repo/items?path=/devfile.yaml"}
export PRIVATE_REPO_RAW_PATH_URL=${PRIVATE_REPO_URL:-"https://dev.azure.com/chepullreq1/che-pr-private/_apis/git/repositories/private-repo/items?path=/devfile.yaml"}

# import common test functions
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source "${SCRIPT_DIR}"/common.sh

trap "catchFinish" EXIT SIGINT

setupTestEnvironment ${OCP_NON_ADMIN_USER_NAME}
testFactoryResolverResponse ${PUBLIC_REPO_RAW_PATH_URL} 200
testFactoryResolverResponse ${PRIVATE_REPO_RAW_PATH_URL} 400

testCloneGitRepoNoProjectExists ${PUBLIC_REPO_WORKSPACE_NAME} ${PUBLIC_PROJECT_NAME} ${PUBLIC_REPO_RAW_PATH_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PUBLIC_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}

testCloneGitRepoNoProjectExists ${PRIVATE_REPO_WORKSPACE_NAME} ${PRIVATE_PROJECT_NAME} ${PRIVATE_REPO_RAW_PATH_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PRIVATE_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}

================================================
FILE: .ci/openshift-ci/test-azure-no-pat-oauth-flow-ssh-url.sh
================================================

#!/bin/bash
#
# Copyright (c) 2023 Red Hat, Inc.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#   Red Hat, Inc. - initial API and implementation
#

# exit immediately when a command fails
set -ex
# only exit with zero if all commands of the pipeline exit successfully
set -o pipefail

echo "======= [INFO] OpenShift CI infrastructure is ready. Running test. ======="

export PUBLIC_REPO_SSH_URL=${PUBLIC_REPO_SSH_URL:-"git@ssh.dev.azure.com:v3/chepullreq1/che-pr-public/public-repo"}
export PRIVATE_REPO_SSH_URL=${PRIVATE_REPO_SSH_URL:-"git@ssh.dev.azure.com:v3/chepullreq1/che-pr-private/private-repo"}

# import common test functions
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source "${SCRIPT_DIR}"/common.sh

trap "catchFinish" EXIT SIGINT

setupTestEnvironment ${OCP_NON_ADMIN_USER_NAME}
setupSSHKeyPairs "${AZURE_PRIVATE_KEY}" "${AZURE_PUBLIC_KEY}"
testFactoryResolverResponse ${PUBLIC_REPO_SSH_URL} 200
testFactoryResolverResponse ${PRIVATE_REPO_SSH_URL} 500

testCloneGitRepoProjectShouldExists ${PUBLIC_REPO_WORKSPACE_NAME} ${PUBLIC_PROJECT_NAME} ${PUBLIC_REPO_SSH_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PUBLIC_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}

testCloneGitRepoProjectShouldExists ${PRIVATE_REPO_WORKSPACE_NAME} ${PRIVATE_PROJECT_NAME} ${PRIVATE_REPO_SSH_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PRIVATE_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}

================================================
FILE: .ci/openshift-ci/test-azure-no-pat-oauth-flow.sh
================================================
#!/bin/bash
#
# Copyright (c) 2023 Red Hat, Inc.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#   Red Hat, Inc. - initial API and implementation
#

# exit immediately when a command fails
set -ex
# only exit with zero if all commands of the pipeline exit successfully
set -o pipefail

echo "======= [INFO] OpenShift CI infrastructure is ready. Running test. ======="

export PUBLIC_REPO_URL=${PUBLIC_REPO_URL:-"https://chepullreq1@dev.azure.com/chepullreq1/che-pr-public/_git/public-repo"}
export PRIVATE_REPO_URL=${PRIVATE_REPO_URL:-"https://dev.azure.com/chepullreq1/che-pr-private/_git/private-repo"}

# import common test functions
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source "${SCRIPT_DIR}"/common.sh

trap "catchFinish" EXIT SIGINT

setupTestEnvironment ${OCP_NON_ADMIN_USER_NAME}
testFactoryResolverNoPatOAuth ${PUBLIC_REPO_URL} ${PRIVATE_REPO_URL}
testCloneGitRepoProjectShouldExists ${PUBLIC_REPO_WORKSPACE_NAME} ${PUBLIC_PROJECT_NAME} ${PUBLIC_REPO_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PUBLIC_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}
testCloneGitRepoNoProjectExists ${PRIVATE_REPO_WORKSPACE_NAME} ${PRIVATE_PROJECT_NAME} ${PRIVATE_REPO_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PRIVATE_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}


================================================
FILE: .ci/openshift-ci/test-azure-with-pat-setup-flow.sh
================================================
#!/bin/bash
#
# Copyright (c) 2023 Red Hat, Inc.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#   Red Hat, Inc. - initial API and implementation
#

# exit immediately when a command fails
set -ex
# only exit with zero if all commands of the pipeline exit successfully
set -o pipefail

echo "======= [INFO] OpenShift CI infrastructure is ready. Running test. ======="

export PUBLIC_REPO_URL=${PUBLIC_REPO_URL:-"https://chepullreq1@dev.azure.com/chepullreq1/che-pr-public/_git/public-repo"}
export PRIVATE_REPO_URL=${PRIVATE_REPO_URL:-"https://dev.azure.com/chepullreq1/che-pr-private/_git/private-repo"}
export GIT_PROVIDER_TYPE=${GIT_PROVIDER_TYPE:-"azure-devops"}
export GIT_PROVIDER_URL=${GIT_PROVIDER_URL:-"https://dev.azure.com"}
export PRIVATE_REPO_SSH_URL=${PRIVATE_REPO_SSH_URL:-"git@ssh.dev.azure.com:v3/chepullreq1/che-pr-private/private-repo"}
export PRIVATE_REPO_RAW_PATH_URL=${PRIVATE_REPO_URL:-"https://dev.azure.com/chepullreq1/che-pr-private/_apis/git/repositories/private-repo/items?path=/devfile.yaml"}

# import common test functions
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source "${SCRIPT_DIR}"/common.sh

trap "catchFinish" EXIT SIGINT

setupTestEnvironment ${OCP_NON_ADMIN_USER_NAME}
setupPersonalAccessToken  ${GIT_PROVIDER_TYPE} ${GIT_PROVIDER_URL} ${AZURE_PAT}
requestProvisionNamespace
testFactoryResolverWithPatOAuth ${PUBLIC_REPO_URL} ${PRIVATE_REPO_URL}

echo "------- [INFO] Check clone public repository with PAT setup -------"
testCloneGitRepoProjectShouldExists ${PUBLIC_REPO_WORKSPACE_NAME} ${PUBLIC_PROJECT_NAME} ${PUBLIC_REPO_URL} ${USER_CHE_NAMESPACE}
testGitCredentialsData ${USER_CHE_NAMESPACE} ${AZURE_PAT} ${GIT_PROVIDER_URL}
deleteTestWorkspace ${PUBLIC_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}

echo "------- [INFO] Check clone private repository with PAT setup -------"
testCloneGitRepoProjectShouldExists ${PRIVATE_REPO_WORKSPACE_NAME} ${PRIVATE_PROJECT_NAME} ${PRIVATE_REPO_URL} ${USER_CHE_NAMESPACE}
testGitCredentialsData ${USER_CHE_NAMESPACE} ${AZURE_PAT} ${GIT_PROVIDER_URL}
deleteTestWorkspace ${PRIVATE_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}

echo "------- [INFO] Check clone private repository by raw devfile URL with PAT setup -------"
testFactoryResolverResponse ${PRIVATE_REPO_RAW_PATH_URL} 200
testCloneGitRepoProjectShouldExists ${PRIVATE_REPO_WORKSPACE_NAME} ${PRIVATE_PROJECT_NAME} ${PRIVATE_REPO_RAW_PATH_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PRIVATE_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}

setupSSHKeyPairs "${AZURE_PRIVATE_KEY}" "${AZURE_PUBLIC_KEY}"

echo "------- [INFO] Check clone private repository by SSH URL with PAT setup -------"
testFactoryResolverResponse ${PRIVATE_REPO_SSH_URL} 200
testCloneGitRepoProjectShouldExists ${PRIVATE_REPO_WORKSPACE_NAME} ${PRIVATE_PROJECT_NAME} ${PRIVATE_REPO_SSH_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PRIVATE_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}


================================================
FILE: .ci/openshift-ci/test-bitbucket-no-pat-oauth-flow-raw-devfile-url.sh
================================================
#!/bin/bash
#
# Copyright (c) 2023 Red Hat, Inc.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#   Red Hat, Inc. - initial API and implementation
#

# exit immediately when a command fails
set -ex
# only exit with zero if all commands of the pipeline exit successfully
set -o pipefail

echo "======= [INFO] OpenShift CI infrastructure is ready. Running test. ======="

export PUBLIC_REPO_RAW_PATH_URL=${PUBLIC_REPO_RAW_PATH_URL:-"https://bitbucket.org/chepullreq/public-repo/raw/746000bd63a54eaf8ea8aba9dfe6620e5c6c61d7/devfile.yaml"}
export PRIVATE_REPO_RAW_PATH_URL=${PRIVATE_REPO_URL:-"https://bitbucket.org/chepullreq/private-repo/raw/80b183d27c6c533462128b0c092208aad73b2906/devfile.yaml"}

# import common test functions
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source "${SCRIPT_DIR}"/common.sh

trap "catchFinish" EXIT SIGINT

setupTestEnvironment ${OCP_NON_ADMIN_USER_NAME}
testFactoryResolverNoPatOAuthRaw ${PUBLIC_REPO_RAW_PATH_URL} ${PRIVATE_REPO_RAW_PATH_URL}

testCloneGitRepoProjectShouldExists ${PUBLIC_REPO_WORKSPACE_NAME} ${PUBLIC_PROJECT_NAME} ${PUBLIC_REPO_RAW_PATH_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PUBLIC_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}

testCloneGitRepoNoProjectExists ${PRIVATE_REPO_WORKSPACE_NAME} ${PRIVATE_PROJECT_NAME} ${PRIVATE_REPO_RAW_PATH_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PRIVATE_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}


================================================
FILE: .ci/openshift-ci/test-bitbucket-no-pat-oauth-flow-ssh-url.sh
================================================

#!/bin/bash
#
# Copyright (c) 2023 Red Hat, Inc.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#   Red Hat, Inc. - initial API and implementation
#

# exit immediately when a command fails
set -ex
# only exit with zero if all commands of the pipeline exit successfully
set -o pipefail

echo "======= [INFO] OpenShift CI infrastructure is ready. Running test. ======="

export PUBLIC_REPO_SSH_URL=${PUBLIC_REPO_SSH_URL:-"git@bitbucket.org:chepullreq/public-repo.git"}
export PRIVATE_REPO_SSH_URL=${PRIVATE_REPO_SSH_URL:-"git@bitbucket.org:chepullreq/private-repo.git"}

# import common test functions
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source "${SCRIPT_DIR}"/common.sh

trap "catchFinish" EXIT SIGINT

setupTestEnvironment ${OCP_NON_ADMIN_USER_NAME}
setupSSHKeyPairs "${BITBUCKET_PRIVATE_KEY}" "${BITBUCKET_PUBLIC_KEY}"
testFactoryResolverNoPatOAuth ${PUBLIC_REPO_SSH_URL} ${PRIVATE_REPO_SSH_URL}

testCloneGitRepoProjectShouldExists ${PUBLIC_REPO_WORKSPACE_NAME} ${PUBLIC_PROJECT_NAME} ${PUBLIC_REPO_SSH_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PUBLIC_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}
testCloneGitRepoProjectShouldExists ${PRIVATE_REPO_WORKSPACE_NAME} ${PRIVATE_PROJECT_NAME} ${PRIVATE_REPO_SSH_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PRIVATE_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}


================================================
FILE: .ci/openshift-ci/test-bitbucket-no-pat-oauth-flow.sh
================================================
#!/bin/bash
#
# Copyright (c) 2023 Red Hat, Inc.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#   Red Hat, Inc. - initial API and implementation
#

# exit immediately when a command fails
set -ex
# only exit with zero if all commands of the pipeline exit successfully
set -o pipefail

echo "======= [INFO] OpenShift CI infrastructure is ready. Running test. ======="

export PUBLIC_REPO_URL=${PUBLIC_REPO_URL:-"https://chepullreq1@bitbucket.org/chepullreq/public-repo.git"}
export PRIVATE_REPO_URL=${PRIVATE_REPO_URL:-"https://chepullreq1@bitbucket.org/chepullreq/private-repo.git"}

# import common test functions
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source "${SCRIPT_DIR}"/common.sh

trap "catchFinish" EXIT SIGINT

setupTestEnvironment ${OCP_NON_ADMIN_USER_NAME}
testFactoryResolverNoPatOAuth ${PUBLIC_REPO_URL} ${PRIVATE_REPO_URL}
testCloneGitRepoProjectShouldExists ${PUBLIC_REPO_WORKSPACE_NAME} ${PUBLIC_PROJECT_NAME} ${PUBLIC_REPO_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PUBLIC_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}
testCloneGitRepoNoProjectExists ${PRIVATE_REPO_WORKSPACE_NAME} ${PRIVATE_PROJECT_NAME} ${PRIVATE_REPO_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PRIVATE_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}


================================================
FILE: .ci/openshift-ci/test-che-smoke-test.sh
================================================
#!/bin/bash
#
# Copyright (c) 2024  Red Hat, Inc.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#   Red Hat, Inc. - initial API and implementation
#

# exit immediately when a command fails
set -ex
# only exit with zero if all commands of the pipeline exit successfully
set -o pipefail

echo "======= [INFO] OpenShift CI infrastructure is ready. Running test. ======="

export TEST_POD_NAME=${TEST_POD_NAME:-"che-smoke-test"}

# import common test functions
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source "${SCRIPT_DIR}"/common.sh

trap "collectLogs" EXIT SIGINT

provisionOpenShiftOAuthUser
createCustomResourcesFile
deployChe
startSmokeTest


================================================
FILE: .ci/openshift-ci/test-gitea-no-pat-oauth-flow.sh
================================================
#!/bin/bash
#
# Copyright (c) 2023 Red Hat, Inc.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#   Red Hat, Inc. - initial API and implementation
#

# exit immediately when a command fails
set -ex
# only exit with zero if all commands of the pipeline exit successfully
set -o pipefail

echo "======= [INFO] OpenShift CI infrastructure is ready. Running test. ======="

export PUBLIC_REPO_SSH_URL=${PUBLIC_REPO_SSH_URL:-"git@gitea.com:chepullreq1/public-repo.git"}
export PRIVATE_REPO_SSH_URL=${PRIVATE_REPO_SSH_URL:-"git@gitea.com:chepullreq1/private-repo.git"}
export PUBLIC_REPO_RAW_PATH_URL=${PUBLIC_REPO_RAW_PATH_URL:-"https://gitea.com/chepullreq1/public-repo/raw/branch/main/devfile.yaml"}

# import common test functions
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source "${SCRIPT_DIR}"/common.sh

trap "catchFinish" EXIT SIGINT

setupTestEnvironment ${OCP_NON_ADMIN_USER_NAME}
setupSSHKeyPairs "${GITEA_PRIVATE_KEY}" "${GITEA_PUBLIC_KEY}"

testFactoryResolverResponse ${PUBLIC_REPO_SSH_URL} 500
testFactoryResolverResponse ${PRIVATE_REPO_SSH_URL} 500
testFactoryResolverResponse ${PUBLIC_REPO_RAW_PATH_URL} 200

testCloneGitRepoProjectShouldExists ${PUBLIC_REPO_WORKSPACE_NAME} ${PUBLIC_PROJECT_NAME} ${PUBLIC_REPO_SSH_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PUBLIC_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}

testCloneGitRepoNoProjectExists ${PUBLIC_REPO_WORKSPACE_NAME} ${PUBLIC_PROJECT_NAME} ${PUBLIC_REPO_RAW_PATH_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PUBLIC_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}

testCloneGitRepoProjectShouldExists ${PRIVATE_REPO_WORKSPACE_NAME} ${PRIVATE_PROJECT_NAME} ${PRIVATE_REPO_SSH_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PRIVATE_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}


================================================
FILE: .ci/openshift-ci/test-gitea-with-pat-setup-flow.sh
================================================
#!/bin/bash
#
# Copyright (c) 2023 Red Hat, Inc.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#   Red Hat, Inc. - initial API and implementation
#

# exit immediately when a command fails
set -ex
# only exit with zero if all commands of the pipeline exit successfully
set -o pipefail

echo "======= [INFO] OpenShift CI infrastructure is ready. Running test. ======="

export PRIVATE_REPO_RAW_PATH_URL=${PRIVATE_REPO_RAW_PATH_URL:-"https://${GITEA_PAT}@gitea.com/chepullreq1/private-repo/raw/branch/main/devfile.yaml"}

# import common test functions
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source "${SCRIPT_DIR}"/common.sh

trap "catchFinish" EXIT SIGINT

setupTestEnvironment ${OCP_NON_ADMIN_USER_NAME}
testFactoryResolverResponse ${PRIVATE_REPO_RAW_PATH_URL} 200

testCloneGitRepoNoProjectExists ${PRIVATE_REPO_WORKSPACE_NAME} ${PRIVATE_PROJECT_NAME} ${PRIVATE_REPO_RAW_PATH_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PRIVATE_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}


================================================
FILE: .ci/openshift-ci/test-github-no-pat-oauth-flow-raw-devfile-url.sh
================================================
#!/bin/bash
#
# Copyright (c) 2023 Red Hat, Inc.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#   Red Hat, Inc. - initial API and implementation
#

# exit immediately when a command fails
set -ex
# only exit with zero if all commands of the pipeline exit successfully
set -o pipefail

echo "======= [INFO] OpenShift CI infrastructure is ready. Running test. ======="

export PUBLIC_REPO_RAW_PATH_URL=${PUBLIC_REPO_RAW_PATH_URL:-"https://raw.githubusercontent.com/chepullreq1/public-repo/main/devfile.yaml"}
export PRIVATE_REPO_RAW_PATH_URL=${PRIVATE_REPO_URL:-"https://raw.githubusercontent.com/chepullreq1/private-repo/main/devfile.yaml"}

# import common test functions
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source "${SCRIPT_DIR}"/common.sh

trap "catchFinish" EXIT SIGINT

setupTestEnvironment ${OCP_NON_ADMIN_USER_NAME}
testFactoryResolverNoPatOAuthRaw ${PUBLIC_REPO_RAW_PATH_URL} ${PRIVATE_REPO_RAW_PATH_URL}

testCloneGitRepoNoProjectExists ${PUBLIC_REPO_WORKSPACE_NAME} ${PUBLIC_PROJECT_NAME} ${PUBLIC_REPO_RAW_PATH_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PUBLIC_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}

testCloneGitRepoNoProjectExists ${PRIVATE_REPO_WORKSPACE_NAME} ${PRIVATE_PROJECT_NAME} ${PRIVATE_REPO_RAW_PATH_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PRIVATE_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}



================================================
FILE: .ci/openshift-ci/test-github-no-pat-oauth-flow-ssh-url.sh
================================================

#!/bin/bash
#
# Copyright (c) 2023 Red Hat, Inc.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#   Red Hat, Inc. - initial API and implementation
#

# exit immediately when a command fails
set -ex
# only exit with zero if all commands of the pipeline exit successfully
set -o pipefail

echo "======= [INFO] OpenShift CI infrastructure is ready. Running test. ======="

export PUBLIC_REPO_SSH_URL=${PUBLIC_REPO_SSH_URL:-"git@github.com:chepullreq1/public-repo.git"}
export PRIVATE_REPO_SSH_URL=${PRIVATE_REPO_SSH_URL:-"git@github.com:chepullreq1/private-repo.git"}

# import common test functions
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source "${SCRIPT_DIR}"/common.sh

trap "catchFinish" EXIT SIGINT

setupTestEnvironment ${OCP_NON_ADMIN_USER_NAME}
setupSSHKeyPairs "${GITHUB_PRIVATE_KEY}" "${GITHUB_PUBLIC_KEY}"
testFactoryResolverNoPatOAuth ${PUBLIC_REPO_SSH_URL} ${PRIVATE_REPO_SSH_URL}

testCloneGitRepoProjectShouldExists ${PUBLIC_REPO_WORKSPACE_NAME} ${PUBLIC_PROJECT_NAME} ${PUBLIC_REPO_SSH_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PUBLIC_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}
testCloneGitRepoProjectShouldExists ${PRIVATE_REPO_WORKSPACE_NAME} ${PRIVATE_PROJECT_NAME} ${PRIVATE_REPO_SSH_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PRIVATE_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}


================================================
FILE: .ci/openshift-ci/test-github-no-pat-oauth-flow.sh
================================================
#!/bin/bash
#
# Copyright (c) 2023 Red Hat, Inc.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#   Red Hat, Inc. - initial API and implementation
#

# exit immediately when a command fails
set -ex
# only exit with zero if all commands of the pipeline exit successfully
set -o pipefail

echo "======= [INFO] OpenShift CI infrastructure is ready. Running test. ======="

export PUBLIC_REPO_URL=${PUBLIC_REPO_URL:-"https://github.com/chepullreq1/public-repo.git"}
export PRIVATE_REPO_URL=${PRIVATE_REPO_URL:-"https://github.com/chepullreq1/private-repo.git"}

# import common test functions
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source "${SCRIPT_DIR}"/common.sh

trap "catchFinish" EXIT SIGINT

setupTestEnvironment ${OCP_NON_ADMIN_USER_NAME}
testFactoryResolverNoPatOAuth ${PUBLIC_REPO_URL} ${PRIVATE_REPO_URL}
testCloneGitRepoProjectShouldExists ${PUBLIC_REPO_WORKSPACE_NAME} ${PUBLIC_PROJECT_NAME} ${PUBLIC_REPO_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PUBLIC_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}
testCloneGitRepoNoProjectExists ${PRIVATE_REPO_WORKSPACE_NAME} ${PRIVATE_PROJECT_NAME} ${PRIVATE_REPO_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PRIVATE_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}


================================================
FILE: .ci/openshift-ci/test-github-with-pat-setup-flow.sh
================================================
#!/bin/bash
#
# Copyright (c) 2023 Red Hat, Inc.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#   Red Hat, Inc. - initial API and implementation
#

# exit immediately when a command fails
set -ex
# only exit with zero if all commands of the pipeline exit successfully
set -o pipefail

echo "======= [INFO] OpenShift CI infrastructure is ready. Running test. ======="

export PUBLIC_REPO_URL=${PUBLIC_REPO_URL:-"https://github.com/chepullreq1/public-repo.git"}
export PRIVATE_REPO_URL=${PRIVATE_REPO_URL:-"https://github.com/chepullreq1/private-repo.git"}
export GIT_PROVIDER_TYPE=${GIT_PROVIDER_TYPE:-"github"}
export GIT_PROVIDER_URL=${GIT_PROVIDER_URL:-"https://github.com"}
export PRIVATE_REPO_RAW_PATH_URL=${PRIVATE_REPO_URL:-"https://raw.githubusercontent.com/chepullreq1/private-repo/main/devfile.yaml"}
export PRIVATE_REPO_SSH_URL=${PRIVATE_REPO_SSH_URL:-"git@github.com:chepullreq1/private-repo.git"}

# import common test functions
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source "${SCRIPT_DIR}"/common.sh

trap "catchFinish" EXIT SIGINT

setupTestEnvironment ${OCP_NON_ADMIN_USER_NAME}
setupPersonalAccessToken  ${GIT_PROVIDER_TYPE} ${GIT_PROVIDER_URL} ${GITHUB_PAT}
requestProvisionNamespace
testFactoryResolverWithPatOAuth ${PUBLIC_REPO_URL} ${PRIVATE_REPO_URL}

echo "------- [INFO] Check clone public repository with PAT setup -------"
testCloneGitRepoProjectShouldExists ${PUBLIC_REPO_WORKSPACE_NAME} ${PUBLIC_PROJECT_NAME} ${PUBLIC_REPO_URL} ${USER_CHE_NAMESPACE}
testGitCredentialsData ${USER_CHE_NAMESPACE} ${GITHUB_PAT} ${GIT_PROVIDER_URL}
deleteTestWorkspace ${PUBLIC_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}

echo "------- [INFO] Check clone private repository with PAT setup -------"
testCloneGitRepoProjectShouldExists ${PRIVATE_REPO_WORKSPACE_NAME} ${PRIVATE_PROJECT_NAME} ${PRIVATE_REPO_URL} ${USER_CHE_NAMESPACE}
testGitCredentialsData ${USER_CHE_NAMESPACE} ${GITHUB_PAT} ${GIT_PROVIDER_URL}
deleteTestWorkspace ${PRIVATE_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}

echo "------- [INFO] Check clone private repository by raw devfile URL with PAT setup -------"
testFactoryResolverResponse ${PRIVATE_REPO_RAW_PATH_URL} 200
testCloneGitRepoProjectShouldExists ${PRIVATE_REPO_WORKSPACE_NAME} ${PRIVATE_PROJECT_NAME} ${PRIVATE_REPO_RAW_PATH_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PRIVATE_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}

setupSSHKeyPairs "${GITHUB_PRIVATE_KEY}" "${GITHUB_PUBLIC_KEY}"

echo "------- [INFO] Check clone private repository by SSH URL with PAT setup -------"
testFactoryResolverResponse ${PRIVATE_REPO_SSH_URL} 200
testCloneGitRepoProjectShouldExists ${PRIVATE_REPO_WORKSPACE_NAME} ${PRIVATE_PROJECT_NAME} ${PRIVATE_REPO_SSH_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PRIVATE_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}

================================================
FILE: .ci/openshift-ci/test-gitlab-no-pat-oauth-flow-raw-devfile-url.sh
================================================
#!/bin/bash
#
# Copyright (c) 2023 Red Hat, Inc.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#   Red Hat, Inc. - initial API and implementation
#

# exit immediately when a command fails
set -ex
# only exit with zero if all commands of the pipeline exit successfully
set -o pipefail

echo "======= [INFO] OpenShift CI infrastructure is ready. Running test. ======="

export PUBLIC_REPO_RAW_PATH_URL=${PUBLIC_REPO_RAW_PATH_URL:-"https://gitlab.com/chepullreq1/public-repo/-/raw/main/devfile.yaml"}
export PRIVATE_REPO_RAW_PATH_URL=${PRIVATE_REPO_URL:-"https://gitlab.com/chepullreq1/private-repo/-/raw/main/devfile.yaml"}

# import common test functions
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source "${SCRIPT_DIR}"/common.sh

trap "catchFinish" EXIT SIGINT

setupTestEnvironment ${OCP_NON_ADMIN_USER_NAME}
testFactoryResolverNoPatOAuth ${PUBLIC_REPO_RAW_PATH_URL} ${PRIVATE_REPO_RAW_PATH_URL}

testCloneGitRepoNoProjectExists ${PUBLIC_REPO_WORKSPACE_NAME} ${PUBLIC_PROJECT_NAME} ${PUBLIC_REPO_RAW_PATH_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PUBLIC_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}

testCloneGitRepoNoProjectExists ${PRIVATE_REPO_WORKSPACE_NAME} ${PRIVATE_PROJECT_NAME} ${PRIVATE_REPO_RAW_PATH_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PRIVATE_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}


================================================
FILE: .ci/openshift-ci/test-gitlab-no-pat-oauth-flow-ssh-url.sh
================================================

#!/bin/bash
#
# Copyright (c) 2023 Red Hat, Inc.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#   Red Hat, Inc. - initial API and implementation
#

# exit immediately when a command fails
set -ex
# only exit with zero if all commands of the pipeline exit successfully
set -o pipefail

echo "======= [INFO] OpenShift CI infrastructure is ready. Running test. ======="

export PUBLIC_REPO_SSH_URL=${PUBLIC_REPO_SSH_URL:-"git@gitlab.com:chepullreq1/public-repo.git"}
export PRIVATE_REPO_SSH_URL=${PRIVATE_REPO_SSH_URL:-"git@gitlab.com:chepullreq1/private-repo.git"}

# import common test functions
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source "${SCRIPT_DIR}"/common.sh

trap "catchFinish" EXIT SIGINT

setupTestEnvironment ${OCP_NON_ADMIN_USER_NAME}
setupSSHKeyPairs "${GITLAB_PRIVATE_KEY}" "${GITLAB_PUBLIC_KEY}"
testFactoryResolverNoPatOAuth ${PUBLIC_REPO_SSH_URL} ${PRIVATE_REPO_SSH_URL}

testCloneGitRepoProjectShouldExists ${PUBLIC_REPO_WORKSPACE_NAME} ${PUBLIC_PROJECT_NAME} ${PUBLIC_REPO_SSH_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PUBLIC_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}

testCloneGitRepoProjectShouldExists ${PRIVATE_REPO_WORKSPACE_NAME} ${PRIVATE_PROJECT_NAME} ${PRIVATE_REPO_SSH_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PRIVATE_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}

================================================
FILE: .ci/openshift-ci/test-gitlab-no-pat-oauth-flow.sh
================================================
#!/bin/bash
#
# Copyright (c) 2023 Red Hat, Inc.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#   Red Hat, Inc. - initial API and implementation
#

# exit immediately when a command fails
set -ex
# only exit with zero if all commands of the pipeline exit successfully
set -o pipefail

echo "======= [INFO] OpenShift CI infrastructure is ready. Running test. ======="

export PUBLIC_REPO_URL=${PUBLIC_REPO_URL:-"https://gitlab.com/chepullreq1/public-repo.git"}
export PRIVATE_REPO_URL=${PRIVATE_REPO_URL:-"https://gitlab.com/chepullreq1/private-repo.git"}

export PUBLIC_REPO_WITH_DOT_DEFILE_URL=${PUBLIC_REPO_WITH_DOT_DEFILE_URL:-"https://gitlab.com/chepullreq1/public-repo-dot-devfile.git"}
export PRIVATE_REPO_WITH_DOT_DEFILE_URL=${PRIVATE_REPO_WITH_DOT_DEFILE_URL:-"https://gitlab.com/chepullreq1/private-repo-dot-devfile.git"}

export NAME_OF_PUBLIC_REPO_WITH_DOT_DEFILE=${NAME_OF_PUBLIC_REPO_WITH_DOT_DEFILE:-"public-repo-dot-devfile"}
export NAME_OF_PRIVATE_REPO_WITH_DOT_DEFILE=${NAME_OF_PRIVATE_REPO_WITH_DOT_DEFILE:-"private-repo-dot-devfile"}

# import common test functions
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source "${SCRIPT_DIR}"/common.sh

trap "catchFinish" EXIT SIGINT

setupTestEnvironment ${OCP_NON_ADMIN_USER_NAME}
testFactoryResolverNoPatOAuth ${PUBLIC_REPO_URL} ${PRIVATE_REPO_URL}
testFactoryResolverNoPatOAuth ${PUBLIC_REPO_WITH_DOT_DEFILE_URL} ${PRIVATE_REPO_WITH_DOT_DEFILE_URL}

echo "------- [INFO] Check clone a public repository without PAT -------"
testCloneGitRepoProjectShouldExists ${PUBLIC_REPO_WORKSPACE_NAME} ${PUBLIC_PROJECT_NAME} ${PUBLIC_REPO_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PUBLIC_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}

echo "------- [INFO] Check clone a public repository with .devfile.yaml and without PAT -------"
testCloneGitRepoProjectShouldExists ${PUBLIC_REPO_WORKSPACE_NAME} ${NAME_OF_PUBLIC_REPO_WITH_DOT_DEFILE} ${PUBLIC_REPO_WITH_DOT_DEFILE_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PUBLIC_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}

echo "------- [INFO] Check clone a private repository without PAT is not available -------"
testCloneGitRepoNoProjectExists ${PRIVATE_REPO_WORKSPACE_NAME} ${PRIVATE_PROJECT_NAME} ${PRIVATE_REPO_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PRIVATE_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}

echo "------- [INFO] Check clone a private repository with .devfile.yaml and without PAT is not available -------"
testCloneGitRepoNoProjectExists ${PRIVATE_REPO_WORKSPACE_NAME} ${NAME_OF_PRIVATE_REPO_WITH_DOT_DEFILE} ${PRIVATE_REPO_WITH_DOT_DEFILE_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PRIVATE_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}


================================================
FILE: .ci/openshift-ci/test-gitlab-with-oauth-setup-flow.sh
================================================
#!/bin/bash
#
# Copyright (c) 2023 Red Hat, Inc.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#   Red Hat, Inc. - initial API and implementation
#

# exit immediately when a command fails
set -ex
# only exit with zero if all commands of the pipeline exit successfully
set -o pipefail

echo "======= [INFO] OpenShift CI infrastructure is ready. Running test. ======="

export TEST_POD_NAME=${TEST_POD_NAME:-"oauth-factory-test"}
export GIT_PROVIDER_TYPE=${GIT_PROVIDER_TYPE:-"gitlab"}
export GIT_PROVIDER_URL=${GIT_PROVIDER_URL:-"https://gitlab-gitlab-system.apps.git.crw-qe.com"}
export GIT_PROVIDER_LOGIN=${GIT_PROVIDER_LOGIN:-"admin-user"}
export PRIVATE_REPO_URL=${PRIVATE_REPO_URL:-"https://gitlab-gitlab-system.apps.git.crw-qe.com/admin-user/private-repo.git"}
export GIT_REPO_BRANCH=${PRIVATE_REPO_BRANCH:-"main"}
export APPLICATION_NAME=${APPLICATION_NAME:-"TestApp"}
export OAUTH_ID=""
export APPLICATION_ID=""
export APPLICATION_SECRET=""

# import common test functions
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source "${SCRIPT_DIR}"/common.sh

trap "collectLogs" EXIT SIGINT

setupTestEnvironmentOAuthFlow ${ADMIN_ACCESS_TOKEN} ${APPLICATION_NAME} ${APPLICATION_ID} ${APPLICATION_SECRET}
startOAuthFactoryTest


================================================
FILE: .ci/openshift-ci/test-gitlab-with-pat-setup-flow.sh
================================================
#!/bin/bash
#
# Copyright (c) 2023 Red Hat, Inc.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#   Red Hat, Inc. - initial API and implementation
#

# exit immediately when a command fails
set -ex
# only exit with zero if all commands of the pipeline exit successfully
set -o pipefail

echo "======= [INFO] OpenShift CI infrastructure is ready. Running test. ======="

export PUBLIC_REPO_URL=${PUBLIC_REPO_URL:-"https://gitlab.com/chepullreq1/public-repo.git"}
export PRIVATE_REPO_URL=${PRIVATE_REPO_URL:-"https://gitlab.com/chepullreq1/private-repo.git"}
export GIT_PROVIDER_TYPE=${GIT_PROVIDER_TYPE:-"gitlab"}
export GIT_PROVIDER_URL=${GIT_PROVIDER_URL:-"https://gitlab.com"}
export PRIVATE_REPO_SSH_URL=${PRIVATE_REPO_SSH_URL:-"git@gitlab.com:chepullreq1/private-repo.git"}
export PRIVATE_REPO_RAW_PATH_URL=${PRIVATE_REPO_URL:-"https://gitlab.com/chepullreq1/private-repo/-/raw/main/devfile.yaml"}

export PUBLIC_REPO_WITH_DOT_DEFILE_URL=${PUBLIC_REPO_WITH_DOT_DEFILE_URL:-"https://gitlab.com/chepullreq1/public-repo-dot-devfile.git"}
export PRIVATE_REPO_WITH_DOT_DEFILE_URL=${PRIVATE_REPO_WITH_DOT_DEFILE_URL:-"https://gitlab.com/chepullreq1/private-repo-dot-devfile.git"}

export NAME_OF_PUBLIC_REPO_WITH_DOT_DEFILE=${NAME_OF_PUBLIC_REPO_WITH_DOT_DEFILE:-"public-repo-dot-devfile"}
export NAME_OF_PRIVATE_REPO_WITH_DOT_DEFILE=${NAME_OF_PRIVATE_REPO_WITH_DOT_DEFILE:-"private-repo-dot-devfile"}

# import common test functions
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source "${SCRIPT_DIR}"/common.sh

trap "catchFinish" EXIT SIGINT

setupTestEnvironment ${OCP_NON_ADMIN_USER_NAME}
setupPersonalAccessToken  ${GIT_PROVIDER_TYPE} ${GIT_PROVIDER_URL} ${GITLAB_PAT}
requestProvisionNamespace
testFactoryResolverWithPatOAuth ${PUBLIC_REPO_URL} ${PRIVATE_REPO_URL}
testFactoryResolverWithPatOAuth ${PUBLIC_REPO_WITH_DOT_DEFILE_URL} ${PRIVATE_REPO_WITH_DOT_DEFILE_URL}

echo "------- [INFO] Check clone public repository with PAT setup -------"
testCloneGitRepoProjectShouldExists ${PUBLIC_REPO_WORKSPACE_NAME} ${PUBLIC_PROJECT_NAME} ${PUBLIC_REPO_URL} ${USER_CHE_NAMESPACE}
testGitCredentialsData ${USER_CHE_NAMESPACE} ${GITLAB_PAT} ${GIT_PROVIDER_URL}
deleteTestWorkspace ${PUBLIC_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}

echo "------- [INFO] Check clone public repository that has .devfile.yaml and with PAT setup -------"
testCloneGitRepoProjectShouldExists ${PUBLIC_REPO_WORKSPACE_NAME} ${NAME_OF_PUBLIC_REPO_WITH_DOT_DEFILE} ${PUBLIC_REPO_WITH_DOT_DEFILE_URL} ${USER_CHE_NAMESPACE}
testGitCredentialsData ${USER_CHE_NAMESPACE} ${GITLAB_PAT} ${GIT_PROVIDER_URL}
deleteTestWorkspace ${PUBLIC_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}

echo "------- [INFO] Check clone private repository with PAT setup -------"
testCloneGitRepoProjectShouldExists ${PRIVATE_REPO_WORKSPACE_NAME} ${PRIVATE_PROJECT_NAME} ${PRIVATE_REPO_URL} ${USER_CHE_NAMESPACE}
testGitCredentialsData ${USER_CHE_NAMESPACE} ${GITLAB_PAT} ${GIT_PROVIDER_URL}
deleteTestWorkspace ${PRIVATE_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}

echo "------- [INFO] Check clone private repository that has .devfile.yaml and with PAT setup -------"
testCloneGitRepoProjectShouldExists ${PRIVATE_REPO_WORKSPACE_NAME} ${NAME_OF_PRIVATE_REPO_WITH_DOT_DEFILE} ${PRIVATE_REPO_WITH_DOT_DEFILE_URL} ${USER_CHE_NAMESPACE}
testGitCredentialsData ${USER_CHE_NAMESPACE} ${GITLAB_PAT} ${GIT_PROVIDER_URL}
deleteTestWorkspace ${PRIVATE_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}

echo "------- [INFO] Check clone private repository by raw devfile URL with PAT setup -------"
testFactoryResolverResponse ${PRIVATE_REPO_RAW_PATH_URL} 200
testCloneGitRepoProjectShouldExists ${PRIVATE_REPO_WORKSPACE_NAME} ${PRIVATE_PROJECT_NAME} ${PRIVATE_REPO_RAW_PATH_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PRIVATE_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}

setupSSHKeyPairs "${GITLAB_PRIVATE_KEY}" "${GITLAB_PUBLIC_KEY}"

echo "------- [INFO] Check clone private repository by SSH URL with PAT setup -------"
testFactoryResolverResponse ${PRIVATE_REPO_SSH_URL} 200
testCloneGitRepoProjectShouldExists ${PRIVATE_REPO_WORKSPACE_NAME} ${PRIVATE_PROJECT_NAME} ${PRIVATE_REPO_SSH_URL} ${USER_CHE_NAMESPACE}
deleteTestWorkspace ${PRIVATE_REPO_WORKSPACE_NAME} ${USER_CHE_NAMESPACE}


================================================
FILE: .gitattributes
================================================
*.sh text eol=lf
*.ts text eol=lf


================================================
FILE: .github/CODEOWNERS
================================================
# Global Owners
* @SDawley @ibuziuk @vinokurig @tolusha

# che.properties file is quasi-documentation, so in future we might grant access to this 
# assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/** @osslate 

# deploy
deploy/** @tolusha @dkwon17


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!-- Please review the following before submitting a PR:
Che's Contributing Guide: https://github.com/eclipse/che/blob/master/CONTRIBUTING.md
Pull Request Policy: https://github.com/eclipse/che/wiki/Development-Workflow#pull-requests
-->

### What does this PR do?


### Screenshot/screencast of this PR
<!-- Please include a screenshot or a screencast explaining what is doing this PR -->


### What issues does this PR fix or reference?
<!-- Please include any related issue from eclipse che repository (or from another issue tracker).
     Include link to other pull requests like documentation PR from [the docs repo](https://github.com/eclipse/che-docs)
-->


### How to test this PR?
<!-- Please explain for example :
  - The test platform (openshift, kubernetes, minikube, CodeReady Container, docker-desktop, etc)
  - Installation method: chectl / che-operator
  - steps to reproduce
 -->


### PR Checklist

[As the author of this Pull Request I made sure that:](https://github.com/eclipse/che/blob/master/CONTRIBUTING.md#pull-request-template-and-its-checklist)

- [ ] [The Eclipse Contributor Agreement is valid](https://github.com/eclipse/che/blob/master/CONTRIBUTING.md#the-eclipse-contributor-agreement-is-valid)
- [ ] [Code produced is complete](https://github.com/eclipse/che/blob/master/CONTRIBUTING.md#code-produced-is-complete)
- [ ] [Code builds without errors](https://github.com/eclipse/che/blob/master/CONTRIBUTING.md#code-builds-without-errors)
- [ ] [Tests are covering the bugfix](https://github.com/eclipse/che/blob/master/CONTRIBUTING.md#tests-are-covering-the-bugfix)
- [ ] [The repository devfile is up to date and works](https://github.com/eclipse/che/blob/master/CONTRIBUTING.md#the-repository-devfile-is-up-to-date-and-works)
- [ ] [Sections `What issues does this PR fix or reference` and `How to test this PR` completed](https://github.com/eclipse/che/blob/master/CONTRIBUTING.md#sections-what-issues-does-this-pr-fix-or-reference-and-how-to-test-this-pr-completed)
- [ ] [Relevant user documentation updated](https://github.com/eclipse/che/blob/master/CONTRIBUTING.md#relevant-contributing-documentation-updated)
- [ ] [Relevant contributing documentation updated](https://github.com/eclipse/che/blob/master/CONTRIBUTING.md#relevant-contributing-documentation-updated)
- [ ] [CI/CD changes implemented, documented and communicated](https://github.com/eclipse/che/blob/master/CONTRIBUTING.md#cicd-changes-implemented-documented-and-communicated)

### Release Notes

### Reviewers

Reviewers, please comment how you tested the PR when approving it.


================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
  - package-ecosystem: maven
    directory: "/"
    schedule:
      interval: "weekly"
      day: "sunday"
    open-pull-requests-limit: 15


================================================
FILE: .github/workflows/build-pr-check.yml
================================================
#
# Copyright (c) 2020 Red Hat, Inc.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#

name: build-pr-check

on: [push, pull_request]

env:
  PR_IMAGE_TAG: pr-${{ github.event.pull_request.number }}
  ORGANIZATION: quay.io/eclipse

jobs:
  build:
    runs-on: ubuntu-22.04
    steps:
    - uses: actions/checkout@v3
      with:
        fetch-depth: 0
    - name: Check all properties have description
      run: ./check_properties_description.sh
    - name: Set up JDK 17
      uses: actions/setup-java@v3
      with:
        distribution: 'temurin'
        java-version: '17'
        cache: 'maven'
    - name: Set up QEMU
      # Skip this and other docker related steps, if the PR is from a forked repo. GitHub secrets
      # are not available for forked repos, so the podman login step will fail.
      # See https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions#using-secrets-in-a-workflow
      if: ${{ ! github.event.pull_request.head.repo.fork }}
      uses: docker/setup-qemu-action@v3
    - name: Login to quay.io
      if: ${{ github.event_name == 'pull_request' && ! github.event.pull_request.head.repo.fork }}
      uses: redhat-actions/podman-login@v1.7
      with:
        username: ${{ secrets.QUAY_USERNAME }}
        password: ${{ secrets.QUAY_PASSWORD }}
        registry: quay.io
    - name: Build with Maven
      run: mvn -B clean install -U -Pintegration
    - name: Build and push images
      if: ${{ github.event_name == 'pull_request' && ! github.event.pull_request.head.repo.fork }}
      run: ./build/build.sh --tag:${{ env.PR_IMAGE_TAG }} --build-platforms:linux/amd64,linux/ppc64le,linux/arm64,linux/s390x --builder:podman --push-image
    -
      name: Comment with image name
      uses: actions/github-script@v7
      if: ${{ github.event_name == 'pull_request' && ! github.event.pull_request.head.repo.fork }}
      with:
        script: |
          const { issue: { number: issue_number }, repo: { owner, repo } } = context;
          const cheServerImage = "${{ env.ORGANIZATION }}/che-server:${{ env.PR_IMAGE_TAG }}";
          const patchCommand = `kubectl patch -n eclipse-che "checluster/eclipse-che" --type=json -p="[{\"op\": \"replace\", \"path\": \"/spec/components/cheServer/deployment\", \"value\": {containers: [{image: \"${cheServerImage}\", name: che}]}}]"`;
          const text = `
          Docker image build succeeded: **${cheServerImage}**
          <details>
          <summary>kubectl patch command</summary>
          
          \`\`\`bash
          ${patchCommand}
          \`\`\`
          
          </details>
          `;
          github.rest.issues.createComment({ issue_number, owner, repo, body: text });


================================================
FILE: .github/workflows/che-properties-docs-update.yml
================================================
#
# Copyright (c) 2021 Red Hat, Inc.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#

name: Update Che docs variables

on:
  workflow_dispatch:
  push:
    branches:
      - main
      - '7.[0-9]+.x'
    paths:
      - 'assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/che.properties'
      - 'assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/multiuser.properties'

jobs:
  build:
    runs-on: ubuntu-22.04
    steps:
    - name: Execute workflow in Che Docs
      id: build
      run: |
        invokeAction() {
            this_repo=$1
            this_action_name=$2
            this_workflow_id=$3
            this_var=$4
            this_val=$5

            # can compute using GH API
            # workflow_id=$(curl -sSL https://api.github.com/repos/${this_repo}/actions/workflows -H "Authorization: token ${{ secrets.CHE_BOT_GITHUB_TOKEN }}" -H "Accept: application/vnd.github.v3+json" | jq --arg search_field "${this_action_name}" '.workflows[] | select(.name == $search_field).id'); # echo "workflow_id = $workflow_id"
            # or just pass it in
            workflow_id=$this_workflow_id

            curl -sSL https://api.github.com/repos/${this_repo}/actions/workflows/${workflow_id}/dispatches -X POST -H "Authorization: token ${{ secrets.CHE_BOT_GITHUB_TOKEN }}" -H "Accept: application/vnd.github.v3+json" -d "{\"ref\":\"master\",\"inputs\": {\"${this_var}\":\"${this_val}\"} }"
            echo "[INFO] Invoked '${this_action_name}' action ($workflow_id) - see https://github.com/${this_repo}/actions?query=workflow%3A%22${this_action_name// /+}%22"
        }

        branch=${GITHUB_REF%/}
        # invoke action from che-docs repo
        invokeAction eclipse/che-docs "Update Che variables in the docs" "13902929" branch "${branch}"


================================================
FILE: .github/workflows/generate-maven-sbom.yml
================================================
name: Generate Maven SBOM

on:
  release:
    types: [published]
  workflow_dispatch:
    inputs:
      version:
        description: "Version"
        default: "main"
        required: true

env:
  JAVA_VERSION: '11'
  JAVA_DISTRO: 'temurin'
  PRODUCT_PATH: './'
  PLUGIN_VERSION: '2.7.8'
  SBOM_TYPE: 'makeAggregateBom'

permissions:
  contents: read

jobs:
  generate-sbom:
    runs-on: ubuntu-latest
    outputs:
      project-version: ${{ steps.version.outputs.PROJECT_VERSION }}
    steps:
      - name: Extract version
        id: version
        run: |
          VERSION="${{ github.event_name == 'release' && github.event.release.tag_name || github.event.inputs.version }}"
          echo "PROJECT_VERSION=$VERSION" >> $GITHUB_OUTPUT
          echo "Product version: $VERSION"
      - name: Checkout repository
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
        with:
          fetch-depth: 0
          ref: ${{ steps.version.outputs.PROJECT_VERSION }}

      - name: Setup Java SDK
        uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
        with:
          java-version: ${{ env.JAVA_VERSION }}
          distribution: ${{ env.JAVA_DISTRO }}

      - name: Generate sbom
        run: |
          mvn org.cyclonedx:cyclonedx-maven-plugin:$PLUGIN_VERSION:$SBOM_TYPE -f "$PRODUCT_PATH/pom.xml"

      - name: Upload sbom
        uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
        with:
          name: sbom
          path: ${{ env.PRODUCT_PATH }}/target/bom.json
  
  store-sbom-data: # stores sbom and metadata in a predefined format for otterdog to pick up
    needs: ['generate-sbom']
    uses: eclipse-csi/workflows/.github/workflows/store-sbom-data.yml@main
    with:
      projectName: 'che-server'
      projectVersion: ${{ needs.generate-sbom.outputs.project-version }}
      bomArtifact: 'sbom'
      bomFilename: 'bom.json'
      parentProject: '1ab66138-685e-47bb-9020-feb6ca1fb40c'


================================================
FILE: .github/workflows/next-build.yml
================================================
#
# Copyright (c) 2021 Red Hat, Inc.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#

name: build-next

on:
  workflow_dispatch:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-22.04
    steps:
    - uses: actions/checkout@v3
      with:
        fetch-depth: 0
    - name: Set up JDK 17
      uses: actions/setup-java@v3
      with:
        distribution: 'temurin'
        java-version: '17'
        cache: 'maven'
    - name: Set up QEMU
      uses: docker/setup-qemu-action@v3
    - name: Login to docker.io
      uses: redhat-actions/podman-login@v1
      with:
        username: ${{ secrets.DOCKERHUB_USERNAME }}
        password: ${{ secrets.DOCKERHUB_PASSWORD }}
        registry: docker.io
    - name: Login to quay.io
      uses: redhat-actions/podman-login@v1
      with:
        username: ${{ secrets.QUAY_USERNAME }}
        password: ${{ secrets.QUAY_PASSWORD }}
        registry: quay.io
    - name: Build with Maven
      run: mvn -B clean install -U -Pintegration
    - name: Build and push images
      id: build
      run: |
          echo "short_sha1=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
          ./build/build.sh --tag:next --sha-tag --build-platforms:linux/amd64,linux/ppc64le,linux/arm64,linux/s390x --builder:podman --push-image
    - name: Create failure MM message
      if: ${{ failure() }}
      run: |
        echo "{\"text\":\":no_entry_sign: Next Che Server build has failed: https://github.com/eclipse-che/che-server/actions/workflows/next-build.yml\"}" > mattermost.json
    - name: Send MM message
      if: ${{ failure() }}
      uses: mattermost/action-mattermost-notify@1.1.0
      env:
        MATTERMOST_WEBHOOK_URL: ${{ secrets.MATTERMOST_WEBHOOK_URL }}
        MATTERMOST_CHANNEL: eclipse-che-ci
        MATTERMOST_USERNAME: che-bot


================================================
FILE: .github/workflows/release.yml
================================================
#
# Copyright (c) 2020-2023 Red Hat, Inc.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#

name: Release Che Server

on:
  workflow_dispatch:
    inputs:
      version:
        description: 'The version that is going to be released. Should be in format 7.y.z'
        required: true
        default: ''
      forceRecreateTags:
        description: 'If true, tags will be overriden and regenerated. Use with caution.'
        required: false
        default: 'false'
      rebuildFromExistingTags:
        description: 'If true, and *forceRecreateTags* is false, a checkout to existing tags will be performed.'
        required: false
        default: 'false'
      buildAndPushImages:
        description: 'If true, Che Server images will be build.'
        required: false
        default: 'true'
      bumpNextVersion:
        description: 'If true, will update this project to the next version.'
        required: false
        default: 'true'

jobs:
  build:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v3
        with: 
          path: che-server
          fetch-depth: 0
      - name: Check existing tag
        run: |
          if [[ "$FORCE_RECREATE_TAGS" == "false" ]] && [[ $(cd che && git ls-remote --exit-code origin refs/tags/${{ github.event.inputs.version }}) ]]; then
            echo "cannot create release, when tag already exists"
            exit 1
          fi
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3
      - name: Login to docker.io
        uses: docker/login-action@v2
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_PASSWORD }}
          registry: docker.io
      - name: Login to quay.io
        uses: docker/login-action@v2
        with:
          username: ${{ secrets.QUAY_USERNAME }}
          password: ${{ secrets.QUAY_PASSWORD }}
          registry: quay.io
      - name: Set up Python 3.9
        uses: actions/setup-python@v4
        with:
          python-version: 3.9
      - name: Set up JDK 17
        uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: '17'
          cache: 'maven'
      - name: Set up environment
        run: |
          sudo apt-get update -y || true
          # install more dependencies
          sudo apt-get -y -q install wget curl bash git
          java -version
          git --version
          gh --version

          # want >=5
          bash --version

          java -version
          which java
          javac -version
          which javac
      - name: Release
        run: |
          export CHE_VERSION="${{ github.event.inputs.version }}"
          echo "CHE_VERSION=${CHE_VERSION}"

          export CHE_MAVEN_SETTINGS=${{ secrets.CHE_MAVEN_SETTINGS}}
          export CHE_OSS_SONATYPE_GPG_KEY=${{ secrets.CHE_OSS_SONATYPE_GPG_KEY}}
          export CHE_OSS_SONATYPE_PASSPHRASE=${{ secrets.CHE_OSS_SONATYPE_PASSPHRASE}}
          export CHE_GITHUB_SSH_KEY=${{ secrets.CHE_GITHUB_SSH_KEY}}
          export CHE_NPM_AUTH_TOKEN=${{ secrets.CHE_NPM_AUTH_TOKEN}}

          export DEPLOY_TO_NEXUS="${{ github.event.inputs.deployOnNexus }}"
          export AUTORELEASE_ON_NEXUS="${{ github.event.inputs.autoReleaseOnNexus }}"
          export REBUILD_FROM_EXISTING_TAGS="${{ github.event.inputs.rebuildFromExistingTags }}"
          export BUILD_AND_PUSH_IMAGES="${{ github.event.inputs.buildAndPushImages }}"
          export BUMP_NEXT_VERSION="${{ github.event.inputs.bumpNextVersion }}"

          export QUAY_ECLIPSE_CHE_USERNAME=${{ secrets.QUAY_USERNAME }}
          export QUAY_ECLIPSE_CHE_PASSWORD=${{ secrets.QUAY_PASSWORD }}
          git config --global user.name "Mykhailo Kuznietsov"
          git config --global user.email "mkuznets@redhat.com"
          export GITHUB_TOKEN=${{ secrets.CHE_BOT_GITHUB_TOKEN }}
          export CHE_BOT_GITHUB_TOKEN=${{ secrets.CHE_BOT_GITHUB_TOKEN }}
          set -e
          # determine which OS we're using: rhel or ubuntu
          cat /etc/os-release || true
          ./che-server/make-release.sh
      - name: Create GH Release
        id: create_release
        uses: ncipollo/release-action@v1
        env:
          GITHUB_TOKEN: ${{ secrets.CHE_BOT_GITHUB_TOKEN }} 
        with:
          allowUpdates: true
          body: Eclipse Che ${{ github.event.inputs.version }}
          draft: false
          name: Eclipse Che ${{ github.event.inputs.version }}
          omitBodyDuringUpdate: true
          omitNameDuringUpdate: true
          prerelease: false
          tag: ${{ github.event.inputs.version }}
          token: ${{ secrets.CHE_BOT_GITHUB_TOKEN }}
      #- name: Create failure MM message
        #if: ${{ failure() }}
        #run: |
          #echo "{\"text\":\":no_entry_sign: Che Server ${{ github.event.inputs.version }} release has failed: https://github.com/eclipse-che/che-server/actions/workflows/release.yml\"}" > mattermost.json
      #- name: Create success MM message
        #run: |
          #echo "{\"text\":\":white_check_mark: Che Server ${{ github.event.inputs.version }} has been released: https://quay.io/eclipse/che-server:${{ github.event.inputs.version }}\"}" > mattermost.json
      #- name: Send MM message
        #if: ${{ success() }} || ${{ failure() }}
        #uses: mattermost/action-mattermost-notify@1.1.0
        #env:
          #MATTERMOST_WEBHOOK_URL: ${{ secrets.MATTERMOST_WEBHOOK_URL }}
          #MATTERMOST_CHANNEL: eclipse-che-releases
          #MATTERMOST_USERNAME: che-bot


================================================
FILE: .github/workflows/try-in-web-ide.yaml
================================================
# Add Web IDE link on PRs
name: Try in Web IDE

on:
  pull_request_target:
    types: [opened, synchronize]

jobs:
  add-link:
    runs-on: ubuntu-22.04
    steps:
      - name: Web IDE Pull Request Check
        uses: redhat-actions/try-in-web-ide@v1
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          add_comment: false


================================================
FILE: .gitignore
================================================
.repository/

# Eclipse  #
###################

*.launch
.classpath
.project
.settings/
target/
bin/
test-output/
maven-eclipse.xml
.factorypath

# Idea #
##################
*.iml
*.ipr
*.iws
.idea/

.vscode/

# Compiled source #
###################
!*.com/
*.class
*.dll
*.exe
*.o
*.so

# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
*.war
*.ear

# Logs and databases #
######################
*.log
*.sqlite
npm-debug.log.*

# OS generated files #
######################
.DS_Store
ehthumbs.db
Icon?
Thumbs.db
*/overlays
*~
.directory
assembly/**/overlays/

# Che files #
#############
.che
dockerfiles/che/eclipse-che.tar.gz
dockerfiles/che/eclipse-che/
.unison*
docs/_site
docs/.sass-cache
docs/.jekyll-metadata
docs/assets/imgs
!assembly/assembly-main/src/assembly/bin/

# NodeJs modules #
##################
plugins/plugin-terminal-ui/node_modules/
plugins/plugin-terminal-ui/build/
requirements.lock
tests/e2e/dist/
tests/e2e/node_modules/
tests/e2e/report/
tests/e2e/load-test-folder

# Cypress modules #
###################
*/cypress/screenshots
*/cypress/videos
*/node_modules
*/pids
*/.pid
*/.seed
*/lib-cov
*/coverage
*/.grunt
*/.lock-wscript
*/cypress-tests/dist

# typescript-dto
/typescript-dto/.pnp.cjs


================================================
FILE: .mvn/jvm.config
================================================
-Xmx2048m -Xms1024m -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dgwt.compiler.localWorkers=1
--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED
--add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
--add-exports jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED
--add-exports jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED
--add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED
--add-exports jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED
--add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
--add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
--add-opens jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED
--add-opens jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED


================================================
FILE: CONTRIBUTING.md
================================================
## Developing with Eclipse Che

This project contains a [devfile v2](https://github.com/eclipse-che/che-server/blob/main/devfile.yaml) located in the project's root directory.
With this devfile you can perform the following tasks:

- Build project sources with maven.
- Build a container image.
- Install [checlt cli tool](https://github.com/che-incubator/chectl).
- Start debug session.
- Push your changes to GitHub.

### Starting a Workspace within Eclipse Che

To start a new workspace within Eclipse Che, navigate to the following URL:

```sh
{CHE-HOST}/#https://github.com/eclipse-che/che-server
```

### Running Devfile Tasks for Downloading Dependencies and Building the Project

For VS Code, execute tasks defined in the devfile with these steps:

1. Open the command palette (Ctrl/Cmd + Shift + P).
2. Execute the `Tasks: Run Task` command.
3. Select the `devfile` folder  and select the `1. Build sources` task to build the project sources with maven.
4. Follow steps 1 and 2 again, select the `1. Build image` task in the `devfile` folder to build a container image.
5. Follow steps 1 and 2 again, select the `3. Install chectl` task in the `devfile` folder to install the chectl cli tool.
6. In the workspace terminal, tag the **che-server** image with your account: `podman tag quay.io/eclipse/che-server:next <docker registry>/<your account>/che-server:next`.
7. Push the **che-server** image to your account: `podman push <docker registry>/<your account>/che-server:next`.

# Local build requirements
- Apache Maven 3.9 or later
- JDK 17
- Podman or Docker (required for running integration tests)
A Che workspace environment allows to build the image internally, using the workspace terminal.

# Start and debug
1. Deploy Che to a [Red Hat OpenShift](https://www.eclipse.org/che/docs/stable/administration-guide/installing-che-on-openshift-using-cli/) or [Minikube](https://www.eclipse.org/che/docs/stable/administration-guide/installing-che-on-minikube/) cluster by using a previously built image: `chectl server:deploy --platform=<openshift / minikube> --cheimage=<docker registry>/<your account>/che-server:next --debug`.
2. Enable local debugging of the Eclipse Che server: `chectl server:debug` in a terminal.
3. Hit a breakpoint in the code.
4. Open the `Run and Debug` (Ctrl/Cmd + Shift + D) panel.
5. Click the `Start Debugging` (F5) button.

# Contributing an SCM provider
An SCM provider support has to be provided by adding new maven modules to the wsmaster directory.

## Implementing che-core-api-oauth-<SCM provider name> module
This module is responsible for Oauth requests to the SCM provider and contans next implementations:
1. `<SCM provider name>OAuthAuthenticator` contains specific implementation of Oauth token requestand authentication endpoint.
2. `<SCM provider name>OAuthAuthenticatorProvider` a provider of the `OAuthAuthenticator`.

## Implementing coresponding che-core-api-factory-<SCM provider name> module
This module is responsible for API operations of the specific SCM provider.
1. `<SCM provider name>ApiClient` contains all necessary HTTP API calls like `getUser()`.
2. `<SCM provider name>AuthorisingFileContentProvider` overrides the common `AuthorisingFileContentProvider` to define the specific `isPublicRepository()` function.
3. `<SCM provider name>FactoryParameterResolver` validates SCM URL if it corresponds to the SCM provider. Also Provides specific Factory Parameters resolver for the SCM repository.
4. `<SCM provider name>PersonalAccessTokenFetcher` fetches Personal Access Token from the SCM provider by reqesting the OAuth API of the provider. Validates the token by comparing the token access scopes with the predefined scope list.
5. `<SCM provider name>FileResolver` Implementation of a resolver that can return particular file content from specified SCM repository.
6. `<SCM provider name>URLParser` Parses the string representation of the URL to an SCM specific object
7. `<SCM provider name>UserDataFetcher` Implementation of a resolver that can return particular file content from specified SCM repository.

# CI
There are several [GitHub Actions](https://github.com/eclipse-che/che-server/actions) workflows implemented for this repository:

- [![build-next](https://github.com/eclipse-che/che-server/actions/workflows/next-build.yml/badge.svg)](https://github.com/eclipse-che/che-server/actions/workflows/next-build.yml)  
Builds Maven artifacts, builds container images and pushes them to [quay.io](https://quay.io/organization/eclipse) on each commit to [`main`](https://github.com/eclipse-che/che-server/tree/main) branch.
- [![Release Che Server](https://github.com/eclipse-che/che-server/actions/workflows/release.yml/badge.svg)](https://github.com/eclipse-che/che-server/actions/workflows/release.yml)  
Builds Maven artifacts and container images. Images are public and pushed to [quay.io](https://quay.io/organization/eclipse). See [RELEASE.md](https://github.com/eclipse-che/che-server/blob/master/RELEASE.md) for more information about this workflow.
- [![Release Changelog](https://github.com/eclipse-che/che-server/actions/workflows/release-changelog.yml/badge.svg)](https://github.com/eclipse-che/che-server/actions/workflows/release-changelog.yml)  
Creates a GitHub release which will include a generated changelog.
- [![Update Che docs variables](https://github.com/eclipse-che/che-server/actions/workflows/che-properties-docs-update.yml/badge.svg)](https://github.com/eclipse-che/che-server/actions/workflows/che-properties-docs-update.yml/badge.svg)  
Runs on each commit to [`main`](https://github.com/eclipse-che/che-server/tree/main) branch.
- [![build-pr-check](https://github.com/eclipse-che/che-server/actions/workflows/build-pr-check.yml/badge.svg)](https://github.com/eclipse-che/che-server/actions/workflows/build-pr-check.yml)  
Builds Maven artifacts and container images. This workflow is used as a check for all pull requests that are submitted to this project.
- [![Sonar](https://github.com/eclipse-che/che-server/actions/workflows/sonar.yaml/badge.svg)](https://github.com/eclipse-che/che-server/actions/workflows/sonar.yaml)  
Runs Sonar against the main branch. The result can be seen [here](https://sonarcloud.io/dashboard?id=org.eclipse.che%3Ache-server).
- [![Try in Web IDE](https://github.com/eclipse-che/che-server/actions/workflows/try-in-web-ide.yaml/badge.svg)](https://github.com/eclipse-che/che-server/actions/workflows/try-in-web-ide.yaml)  
Used as a check for pull requests that are submitted to this project. 

Downstream builds can be found at the link below, which is _internal to Red Hat_. Stable builds can be found by replacing the 3.x with a specific version like 3.2. 

- [server_3.x](https://main-jenkins-csb-crwqe.apps.ocp-c1.prod.psi.redhat.com/job/DS_CI/job/server_3.x/)

# Report issues
Issues are tracked on the main Eclipse Che Repository: https://github.com/eclipse/che/issues


================================================
FILE: LICENSE
================================================
Eclipse Public License - v 2.0

    THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
    PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION
    OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.

1. DEFINITIONS

"Contribution" means:

  a) in the case of the initial Contributor, the initial content
     Distributed under this Agreement, and

  b) in the case of each subsequent Contributor:
     i) changes to the Program, and
     ii) additions to the Program;
  where such changes and/or additions to the Program originate from
  and are Distributed by that particular Contributor. A Contribution
  "originates" from a Contributor if it was added to the Program by
  such Contributor itself or anyone acting on such Contributor's behalf.
  Contributions do not include changes or additions to the Program that
  are not Modified Works.

"Contributor" means any person or entity that Distributes the Program.

"Licensed Patents" mean patent claims licensable by a Contributor which
are necessarily infringed by the use or sale of its Contribution alone
or when combined with the Program.

"Program" means the Contributions Distributed in accordance with this
Agreement.

"Recipient" means anyone who receives the Program under this Agreement
or any Secondary License (as applicable), including Contributors.

"Derivative Works" shall mean any work, whether in Source Code or other
form, that is based on (or derived from) the Program and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship.

"Modified Works" shall mean any work in Source Code or other form that
results from an addition to, deletion from, or modification of the
contents of the Program, including, for purposes of clarity any new file
in Source Code form that contains any contents of the Program. Modified
Works shall not include works that contain only declarations,
interfaces, types, classes, structures, or files of the Program solely
in each case in order to link to, bind by name, or subclass the Program
or Modified Works thereof.

"Distribute" means the acts of a) distributing or b) making available
in any manner that enables the transfer of a copy.

"Source Code" means the form of a Program preferred for making
modifications, including but not limited to software source code,
documentation source, and configuration files.

"Secondary License" means either the GNU General Public License,
Version 2.0, or any later versions of that license, including any
exceptions or additional permissions as identified by the initial
Contributor.

2. GRANT OF RIGHTS

  a) Subject to the terms of this Agreement, each Contributor hereby
  grants Recipient a non-exclusive, worldwide, royalty-free copyright
  license to reproduce, prepare Derivative Works of, publicly display,
  publicly perform, Distribute and sublicense the Contribution of such
  Contributor, if any, and such Derivative Works.

  b) Subject to the terms of this Agreement, each Contributor hereby
  grants Recipient a non-exclusive, worldwide, royalty-free patent
  license under Licensed Patents to make, use, sell, offer to sell,
  import and otherwise transfer the Contribution of such Contributor,
  if any, in Source Code or other form. This patent license shall
  apply to the combination of the Contribution and the Program if, at
  the time the Contribution is added by the Contributor, such addition
  of the Contribution causes such combination to be covered by the
  Licensed Patents. The patent license shall not apply to any other
  combinations which include the Contribution. No hardware per se is
  licensed hereunder.

  c) Recipient understands that although each Contributor grants the
  licenses to its Contributions set forth herein, no assurances are
  provided by any Contributor that the Program does not infringe the
  patent or other intellectual property rights of any other entity.
  Each Contributor disclaims any liability to Recipient for claims
  brought by any other entity based on infringement of intellectual
  property rights or otherwise. As a condition to exercising the
  rights and licenses granted hereunder, each Recipient hereby
  assumes sole responsibility to secure any other intellectual
  property rights needed, if any. For example, if a third party
  patent license is required to allow Recipient to Distribute the
  Program, it is Recipient's responsibility to acquire that license
  before distributing the Program.

  d) Each Contributor represents that to its knowledge it has
  sufficient copyright rights in its Contribution, if any, to grant
  the copyright license set forth in this Agreement.

  e) Notwithstanding the terms of any Secondary License, no
  Contributor makes additional grants to any Recipient (other than
  those set forth in this Agreement) as a result of such Recipient's
  receipt of the Program under the terms of a Secondary License
  (if permitted under the terms of Section 3).

3. REQUIREMENTS

3.1 If a Contributor Distributes the Program in any form, then:

  a) the Program must also be made available as Source Code, in
  accordance with section 3.2, and the Contributor must accompany
  the Program with a statement that the Source Code for the Program
  is available under this Agreement, and informs Recipients how to
  obtain it in a reasonable manner on or through a medium customarily
  used for software exchange; and

  b) the Contributor may Distribute the Program under a license
  different than this Agreement, provided that such license:
     i) effectively disclaims on behalf of all other Contributors all
     warranties and conditions, express and implied, including
     warranties or conditions of title and non-infringement, and
     implied warranties or conditions of merchantability and fitness
     for a particular purpose;

     ii) effectively excludes on behalf of all other Contributors all
     liability for damages, including direct, indirect, special,
     incidental and consequential damages, such as lost profits;

     iii) does not attempt to limit or alter the recipients' rights
     in the Source Code under section 3.2; and

     iv) requires any subsequent distribution of the Program by any
     party to be under a license that satisfies the requirements
     of this section 3.

3.2 When the Program is Distributed as Source Code:

  a) it must be made available under this Agreement, or if the
  Program (i) is combined with other material in a separate file or
  files made available under a Secondary License, and (ii) the initial
  Contributor attached to the Source Code the notice described in
  Exhibit A of this Agreement, then the Program may be made available
  under the terms of such Secondary Licenses, and

  b) a copy of this Agreement must be included with each copy of
  the Program.

3.3 Contributors may not remove or alter any copyright, patent,
trademark, attribution notices, disclaimers of warranty, or limitations
of liability ("notices") contained within the Program from any copy of
the Program which they Distribute, provided that Contributors may add
their own appropriate notices.

4. COMMERCIAL DISTRIBUTION

Commercial distributors of software may accept certain responsibilities
with respect to end users, business partners and the like. While this
license is intended to facilitate the commercial use of the Program,
the Contributor who includes the Program in a commercial product
offering should do so in a manner which does not create potential
liability for other Contributors. Therefore, if a Contributor includes
the Program in a commercial product offering, such Contributor
("Commercial Contributor") hereby agrees to defend and indemnify every
other Contributor ("Indemnified Contributor") against any losses,
damages and costs (collectively "Losses") arising from claims, lawsuits
and other legal actions brought by a third party against the Indemnified
Contributor to the extent caused by the acts or omissions of such
Commercial Contributor in connection with its distribution of the Program
in a commercial product offering. The obligations in this section do not
apply to any claims or Losses relating to any actual or alleged
intellectual property infringement. In order to qualify, an Indemnified
Contributor must: a) promptly notify the Commercial Contributor in
writing of such claim, and b) allow the Commercial Contributor to control,
and cooperate with the Commercial Contributor in, the defense and any
related settlement negotiations. The Indemnified Contributor may
participate in any such claim at its own expense.

For example, a Contributor might include the Program in a commercial
product offering, Product X. That Contributor is then a Commercial
Contributor. If that Commercial Contributor then makes performance
claims, or offers warranties related to Product X, those performance
claims and warranties are such Commercial Contributor's responsibility
alone. Under this section, the Commercial Contributor would have to
defend claims against the other Contributors related to those performance
claims and warranties, and if a court requires any other Contributor to
pay any damages as a result, the Commercial Contributor must pay
those damages.

5. NO WARRANTY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT
PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS"
BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF
TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR
PURPOSE. Each Recipient is solely responsible for determining the
appropriateness of using and distributing the Program and assumes all
risks associated with its exercise of rights under this Agreement,
including but not limited to the risks and costs of program errors,
compliance with applicable laws, damage to or loss of data, programs
or equipment, and unavailability or interruption of operations.

6. DISCLAIMER OF LIABILITY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT
PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS
SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

7. GENERAL

If any provision of this Agreement is invalid or unenforceable under
applicable law, it shall not affect the validity or enforceability of
the remainder of the terms of this Agreement, and without further
action by the parties hereto, such provision shall be reformed to the
minimum extent necessary to make such provision valid and enforceable.

If Recipient institutes patent litigation against any entity
(including a cross-claim or counterclaim in a lawsuit) alleging that the
Program itself (excluding combinations of the Program with other software
or hardware) infringes such Recipient's patent(s), then such Recipient's
rights granted under Section 2(b) shall terminate as of the date such
litigation is filed.

All Recipient's rights under this Agreement shall terminate if it
fails to comply with any of the material terms or conditions of this
Agreement and does not cure such failure in a reasonable period of
time after becoming aware of such noncompliance. If all Recipient's
rights under this Agreement terminate, Recipient agrees to cease use
and distribution of the Program as soon as reasonably practicable.
However, Recipient's obligations under this Agreement and any licenses
granted by Recipient relating to the Program shall continue and survive.

Everyone is permitted to copy and distribute copies of this Agreement,
but in order to avoid inconsistency the Agreement is copyrighted and
may only be modified in the following manner. The Agreement Steward
reserves the right to publish new versions (including revisions) of
this Agreement from time to time. No one other than the Agreement
Steward has the right to modify this Agreement. The Eclipse Foundation
is the initial Agreement Steward. The Eclipse Foundation may assign the
responsibility to serve as the Agreement Steward to a suitable separate
entity. Each new version of the Agreement will be given a distinguishing
version number. The Program (including Contributions) may always be
Distributed subject to the version of the Agreement under which it was
received. In addition, after a new version of the Agreement is published,
Contributor may elect to Distribute the Program (including its
Contributions) under the new version.

Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
receives no rights or licenses to the intellectual property of any
Contributor under this Agreement, whether expressly, by implication,
estoppel or otherwise. All rights in the Program not expressly granted
under this Agreement are reserved. Nothing in this Agreement is intended
to be enforceable by any entity that is not a Contributor or Recipient.
No third-party beneficiary rights are created under this Agreement.

Exhibit A - Form of Secondary Licenses Notice

"This Source Code may also be made available under the following
Secondary Licenses when the conditions for such availability set forth
in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
version(s), and exceptions or additional permissions here}."

  Simply including a copy of this Agreement, including this Exhibit A
  is not sufficient to license the Source Code under Secondary Licenses.

  If it is not possible or desirable to put the notice in a particular
  file, then You may include the notice in a location (such as a LICENSE
  file in a relevant directory) where a recipient would be likely to
  look for such a notice.

  You may add additional accurate notices of copyright ownership.


================================================
FILE: NUMBERING.md
================================================
### Schema
```
a.b.c-d
  a = major
  b = feature
  c = bug fix
  d = development, numbered as `<rc>d`
```

### Release
```
a.b.0 - initial
a.b.c - bug fixing
```

## EXAMPLE
### Before Stable Release
```
4.0.0-rc1-SNAPSHOT - This is a build
4.0.0-rc1          - This is a release  
4.0.0-rc2-SNAPSHOT - This is a build
4.0.0-rc2          - This is a release
```

### Ship
```
4.0.0 
```

### Branch For Fixes
```
4.0.x
```

### Version For Fixes On Ship Release
```
4.0.1
4.0.2
```


================================================
FILE: README.md
================================================
[![Contribute](https://www.eclipse.org/che/contribute.svg)](https://workspaces.openshift.com#https://github.com/eclipse-che/che-server)

# What is Che server
Che Server provides an API for managing Kubernetes namespaces and to retrieve devfile content from repositories,
hosted on GitHub, GitLab, Bitbucket and Microsoft Azure Repos.

# Project structure
Che Server is mostly a Java web application deployed on an Apache Tomcat server in a container. Che Server uses the following modules:     
### OAuth1 / OAuth2 API implementations
- wsmaster/che-core-api-auth
- wsmaster/che-core-api-azure-devops
- wsmaster/che-core-api-bitbucket
- wsmaster/che-core-api-github
- wsmaster/che-core-api-gitlab
### Factory flow implementations
- wsmaster/che-core-api-factory-azure-devops
- wsmaster/che-core-api-factory-bitbucket
- wsmaster/che-core-api-factory-bitbucket-server
- wsmaster/che-core-api-factory-github
- wsmaster/che-core-api-factory-gitlab
- wsmaster/che-core-api-factory-shared
### Kubernetes namespace provisioning
- infrastructures/kubernetes
- infrastructure/openshift
- infrastructures/infrastructure-factory

Other modules are deprecated and will be removed in the future.

# License

- [Eclipse Public License 2.0](LICENSE)

# Join the community

The Eclipse Che community is globally reachable through public chat rooms, mailing list and weekly calls.
See the Eclipse Che Documentation about [how you can join our community](https://www.eclipse.org/che/docs/stable/overview/introduction-to-eclipse-che/#_joining_the_community).

## Builds

* [![release latest stable](https://github.com/eclipse-che/che-server/actions/workflows/release.yml/badge.svg)](https://github.com/eclipse-che/che-server/actions/workflows/release.yml)

## SBOM

To enhance supply chain security and offer users clear insight into project  components, Eclipse Che now generates a Software Bill of Materials (SBOM) for every release. These are published to the Eclipse Foundation SBOM registry, with access instructions and usage details available in this [documentation](https://eclipse-csi.github.io/security-handbook/sbom/registry.html).


================================================
FILE: RELEASE.md
================================================
# Automated release workflow
Release is performed with GitHub Actions workflow [release.yml](https://github.com/eclipse/che/actions/workflows/release.yml).
The release will perform the build of Maven Artifacts, build and push of all nesessary docker images, and bumping up development version.

[make-release.sh](https://github.com/eclipse/che/blob/master/make-release.sh) is the script that can be used for standalone release outside of GitHub Actions. However, ensure that all environment variables are set in place before invoking `./make-release.sh`, similarly to how it is outlined in [release.yml](https://github.com/eclipse/che/actions/workflows/release.yml):

REBUILD_FROM_EXISTING_TAGS - if `true`, release will not create new tag, but instead checkout to existing one. Use this to rerun failed attempts, without having to recreate the tag.
BUILD_AND_PUSH_IMAGES - if `true`, will build all asociated images in [dockerfiles](https://github.com/eclipse/che/tree/master/dockerfiles) directory. Set `false`, if this step needs to be skipped.
BUMP_NEXT_VERSION - if `true`, will increase the development versions in main and bugfix branches. Set false, if this step needs to be skipped


================================================
FILE: assembly/assembly-che-tomcat/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (c) 2012-2026 Red Hat, Inc.
    This program and the accompanying materials are made
    available under the terms of the Eclipse Public License 2.0
    which is available at https://www.eclipse.org/legal/epl-2.0/

    SPDX-License-Identifier: EPL-2.0

    Contributors:
      Red Hat, Inc. - initial API and implementation

-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <artifactId>che-assembly-parent</artifactId>
        <groupId>org.eclipse.che</groupId>
        <version>7.118.0-SNAPSHOT</version>
    </parent>
    <artifactId>assembly-che-tomcat</artifactId>
    <packaging>jar</packaging>
    <name>Che Assembly :: Assemblies Che Tomcat</name>
    <build>
        <finalName>assembly-che-tomcat</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <appendAssemblyId>false</appendAssemblyId>
                    <updateOnly>false</updateOnly>
                    <descriptors>
                        <descriptor>${project.basedir}/src/assembly/assembly.xml</descriptor>
                    </descriptors>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-clean-plugin</artifactId>
                <configuration>
                    <excludeDefaultDirectories>true</excludeDefaultDirectories>
                    <filesets>
                        <fileset>
                            <directory>${project.build.directory}</directory>
                            <includes>
                                <include>**/*</include>
                            </includes>
                        </fileset>
                    </filesets>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>unpack-tomcat</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>unpack</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>org.apache.tomcat</groupId>
                                    <artifactId>tomcat</artifactId>
                                    <type>zip</type>
                                    <version>${org.apache.tomcat.version}</version>
                                    <overWrite>false</overWrite>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                    <execution>
                        <id>analyze</id>
                        <configuration>
                            <skip>true</skip>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>


================================================
FILE: assembly/assembly-che-tomcat/src/assembly/LICENSE-tomcat.txt
================================================

                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.



APACHE TOMCAT SUBCOMPONENTS:

Apache Tomcat includes a number of subcomponents with separate copyright notices
and license terms. Your use of these subcomponents is subject to the terms and
conditions of the following licenses.


For the Eclipse JDT Core Batch Compiler (ecj-x.x.x.jar) component and the
following Jakarta EE Schemas:
- jakartaee_9.xsd
- jakarta_web-services_2_0.xsd
- jakarta_web-services_client_2_0.xsd
- jsp_3_0.xsd
- web-app_5_0.xsd
- web-commonn_5_0.xsd
- web-fragment_5_0.xsd
- web-jsptaglibrary_3_0.xsd

Eclipse Public License - v 2.0

    THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
    PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION
    OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.

1. DEFINITIONS

"Contribution" means:

  a) in the case of the initial Contributor, the initial content
     Distributed under this Agreement, and

  b) in the case of each subsequent Contributor:
     i) changes to the Program, and
     ii) additions to the Program;
  where such changes and/or additions to the Program originate from
  and are Distributed by that particular Contributor. A Contribution
  "originates" from a Contributor if it was added to the Program by
  such Contributor itself or anyone acting on such Contributor's behalf.
  Contributions do not include changes or additions to the Program that
  are not Modified Works.

"Contributor" means any person or entity that Distributes the Program.

"Licensed Patents" mean patent claims licensable by a Contributor which
are necessarily infringed by the use or sale of its Contribution alone
or when combined with the Program.

"Program" means the Contributions Distributed in accordance with this
Agreement.

"Recipient" means anyone who receives the Program under this Agreement
or any Secondary License (as applicable), including Contributors.

"Derivative Works" shall mean any work, whether in Source Code or other
form, that is based on (or derived from) the Program and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship.

"Modified Works" shall mean any work in Source Code or other form that
results from an addition to, deletion from, or modification of the
contents of the Program, including, for purposes of clarity any new file
in Source Code form that contains any contents of the Program. Modified
Works shall not include works that contain only declarations,
interfaces, types, classes, structures, or files of the Program solely
in each case in order to link to, bind by name, or subclass the Program
or Modified Works thereof.

"Distribute" means the acts of a) distributing or b) making available
in any manner that enables the transfer of a copy.

"Source Code" means the form of a Program preferred for making
modifications, including but not limited to software source code,
documentation source, and configuration files.

"Secondary License" means either the GNU General Public License,
Version 2.0, or any later versions of that license, including any
exceptions or additional permissions as identified by the initial
Contributor.

2. GRANT OF RIGHTS

  a) Subject to the terms of this Agreement, each Contributor hereby
  grants Recipient a non-exclusive, worldwide, royalty-free copyright
  license to reproduce, prepare Derivative Works of, publicly display,
  publicly perform, Distribute and sublicense the Contribution of such
  Contributor, if any, and such Derivative Works.

  b) Subject to the terms of this Agreement, each Contributor hereby
  grants Recipient a non-exclusive, worldwide, royalty-free patent
  license under Licensed Patents to make, use, sell, offer to sell,
  import and otherwise transfer the Contribution of such Contributor,
  if any, in Source Code or other form. This patent license shall
  apply to the combination of the Contribution and the Program if, at
  the time the Contribution is added by the Contributor, such addition
  of the Contribution causes such combination to be covered by the
  Licensed Patents. The patent license shall not apply to any other
  combinations which include the Contribution. No hardware per se is
  licensed hereunder.

  c) Recipient understands that although each Contributor grants the
  licenses to its Contributions set forth herein, no assurances are
  provided by any Contributor that the Program does not infringe the
  patent or other intellectual property rights of any other entity.
  Each Contributor disclaims any liability to Recipient for claims
  brought by any other entity based on infringement of intellectual
  property rights or otherwise. As a condition to exercising the
  rights and licenses granted hereunder, each Recipient hereby
  assumes sole responsibility to secure any other intellectual
  property rights needed, if any. For example, if a third party
  patent license is required to allow Recipient to Distribute the
  Program, it is Recipient's responsibility to acquire that license
  before distributing the Program.

  d) Each Contributor represents that to its knowledge it has
  sufficient copyright rights in its Contribution, if any, to grant
  the copyright license set forth in this Agreement.

  e) Notwithstanding the terms of any Secondary License, no
  Contributor makes additional grants to any Recipient (other than
  those set forth in this Agreement) as a result of such Recipient's
  receipt of the Program under the terms of a Secondary License
  (if permitted under the terms of Section 3).

3. REQUIREMENTS

3.1 If a Contributor Distributes the Program in any form, then:

  a) the Program must also be made available as Source Code, in
  accordance with section 3.2, and the Contributor must accompany
  the Program with a statement that the Source Code for the Program
  is available under this Agreement, and informs Recipients how to
  obtain it in a reasonable manner on or through a medium customarily
  used for software exchange; and

  b) the Contributor may Distribute the Program under a license
  different than this Agreement, provided that such license:
     i) effectively disclaims on behalf of all other Contributors all
     warranties and conditions, express and implied, including
     warranties or conditions of title and non-infringement, and
     implied warranties or conditions of merchantability and fitness
     for a particular purpose;

     ii) effectively excludes on behalf of all other Contributors all
     liability for damages, including direct, indirect, special,
     incidental and consequential damages, such as lost profits;

     iii) does not attempt to limit or alter the recipients' rights
     in the Source Code under section 3.2; and

     iv) requires any subsequent distribution of the Program by any
     party to be under a license that satisfies the requirements
     of this section 3.

3.2 When the Program is Distributed as Source Code:

  a) it must be made available under this Agreement, or if the
  Program (i) is combined with other material in a separate file or
  files made available under a Secondary License, and (ii) the initial
  Contributor attached to the Source Code the notice described in
  Exhibit A of this Agreement, then the Program may be made available
  under the terms of such Secondary Licenses, and

  b) a copy of this Agreement must be included with each copy of
  the Program.

3.3 Contributors may not remove or alter any copyright, patent,
trademark, attribution notices, disclaimers of warranty, or limitations
of liability ("notices") contained within the Program from any copy of
the Program which they Distribute, provided that Contributors may add
their own appropriate notices.

4. COMMERCIAL DISTRIBUTION

Commercial distributors of software may accept certain responsibilities
with respect to end users, business partners and the like. While this
license is intended to facilitate the commercial use of the Program,
the Contributor who includes the Program in a commercial product
offering should do so in a manner which does not create potential
liability for other Contributors. Therefore, if a Contributor includes
the Program in a commercial product offering, such Contributor
("Commercial Contributor") hereby agrees to defend and indemnify every
other Contributor ("Indemnified Contributor") against any losses,
damages and costs (collectively "Losses") arising from claims, lawsuits
and other legal actions brought by a third party against the Indemnified
Contributor to the extent caused by the acts or omissions of such
Commercial Contributor in connection with its distribution of the Program
in a commercial product offering. The obligations in this section do not
apply to any claims or Losses relating to any actual or alleged
intellectual property infringement. In order to qualify, an Indemnified
Contributor must: a) promptly notify the Commercial Contributor in
writing of such claim, and b) allow the Commercial Contributor to control,
and cooperate with the Commercial Contributor in, the defense and any
related settlement negotiations. The Indemnified Contributor may
participate in any such claim at its own expense.

For example, a Contributor might include the Program in a commercial
product offering, Product X. That Contributor is then a Commercial
Contributor. If that Commercial Contributor then makes performance
claims, or offers warranties related to Product X, those performance
claims and warranties are such Commercial Contributor's responsibility
alone. Under this section, the Commercial Contributor would have to
defend claims against the other Contributors related to those performance
claims and warranties, and if a court requires any other Contributor to
pay any damages as a result, the Commercial Contributor must pay
those damages.

5. NO WARRANTY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT
PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS"
BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF
TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR
PURPOSE. Each Recipient is solely responsible for determining the
appropriateness of using and distributing the Program and assumes all
risks associated with its exercise of rights under this Agreement,
including but not limited to the risks and costs of program errors,
compliance with applicable laws, damage to or loss of data, programs
or equipment, and unavailability or interruption of operations.

6. DISCLAIMER OF LIABILITY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT
PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS
SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

7. GENERAL

If any provision of this Agreement is invalid or unenforceable under
applicable law, it shall not affect the validity or enforceability of
the remainder of the terms of this Agreement, and without further
action by the parties hereto, such provision shall be reformed to the
minimum extent necessary to make such provision valid and enforceable.

If Recipient institutes patent litigation against any entity
(including a cross-claim or counterclaim in a lawsuit) alleging that the
Program itself (excluding combinations of the Program with other software
or hardware) infringes such Recipient's patent(s), then such Recipient's
rights granted under Section 2(b) shall terminate as of the date such
litigation is filed.

All Recipient's rights under this Agreement shall terminate if it
fails to comply with any of the material terms or conditions of this
Agreement and does not cure such failure in a reasonable period of
time after becoming aware of such noncompliance. If all Recipient's
rights under this Agreement terminate, Recipient agrees to cease use
and distribution of the Program as soon as reasonably practicable.
However, Recipient's obligations under this Agreement and any licenses
granted by Recipient relating to the Program shall continue and survive.

Everyone is permitted to copy and distribute copies of this Agreement,
but in order to avoid inconsistency the Agreement is copyrighted and
may only be modified in the following manner. The Agreement Steward
reserves the right to publish new versions (including revisions) of
this Agreement from time to time. No one other than the Agreement
Steward has the right to modify this Agreement. The Eclipse Foundation
is the initial Agreement Steward. The Eclipse Foundation may assign the
responsibility to serve as the Agreement Steward to a suitable separate
entity. Each new version of the Agreement will be given a distinguishing
version number. The Program (including Contributions) may always be
Distributed subject to the version of the Agreement under which it was
received. In addition, after a new version of the Agreement is published,
Contributor may elect to Distribute the Program (including its
Contributions) under the new version.

Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
receives no rights or licenses to the intellectual property of any
Contributor under this Agreement, whether expressly, by implication,
estoppel or otherwise. All rights in the Program not expressly granted
under this Agreement are reserved. Nothing in this Agreement is intended
to be enforceable by any entity that is not a Contributor or Recipient.
No third-party beneficiary rights are created under this Agreement.

Exhibit A - Form of Secondary Licenses Notice

"This Source Code may also be made available under the following
Secondary Licenses when the conditions for such availability set forth
in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
version(s), and exceptions or additional permissions here}."

  Simply including a copy of this Agreement, including this Exhibit A
  is not sufficient to license the Source Code under Secondary Licenses.

  If it is not possible or desirable to put the notice in a particular
  file, then You may include the notice in a location (such as a LICENSE
  file in a relevant directory) where a recipient would be likely to
  look for such a notice.

  You may add additional accurate notices of copyright ownership.


For the Windows Installer component:

    * All NSIS source code, plug-ins, documentation, examples, header files and
       graphics, with the exception of the compression modules and where
       otherwise noted, are licensed under the zlib/libpng license.
    * The zlib compression module for NSIS is licensed under the zlib/libpng
       license.
    * The bzip2 compression module for NSIS is licensed under the bzip2 license.
    * The lzma compression module for NSIS is licensed under the Common Public
       License version 1.0.

zlib/libpng license

This software is provided 'as-is', without any express or implied warranty. In
no event will the authors be held liable for any damages arising from the use of
this software.

Permission is granted to anyone to use this software for any purpose, including
commercial applications, and to alter it and redistribute it freely, subject to
the following restrictions:

   1. The origin of this software must not be misrepresented; you must not claim
       that you wrote the original software. If you use this software in a
       product, an acknowledgment in the product documentation would be
       appreciated but is not required.
   2. Altered source versions must be plainly marked as such, and must not be
       misrepresented as being the original software.
   3. This notice may not be removed or altered from any source distribution.

bzip2 license

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

   1. Redistributions of source code must retain the above copyright notice,
       this list of conditions and the following disclaimer.
   2. The origin of this software must not be misrepresented; you must not claim
       that you wrote the original software. If you use this software in a
       product, an acknowledgment in the product documentation would be
       appreciated but is not required.
   3. Altered source versions must be plainly marked as such, and must not be
       misrepresented as being the original software.
   4. The name of the author may not be used to endorse or promote products
       derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
OF SUCH DAMAGE.

Julian Seward, Cambridge, UK.

jseward@acm.org
Common Public License version 1.0

THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC
LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.

1. DEFINITIONS

"Contribution" means:

a) in the case of the initial Contributor, the initial code and documentation
distributed under this Agreement, and b) in the case of each subsequent
Contributor:

i) changes to the Program, and

ii) additions to the Program;

where such changes and/or additions to the Program originate from and are
distributed by that particular Contributor. A Contribution 'originates' from a
Contributor if it was added to the Program by such Contributor itself or anyone
acting on such Contributor's behalf. Contributions do not include additions to
the Program which: (i) are separate modules of software distributed in
conjunction with the Program under their own license agreement, and (ii) are not
derivative works of the Program.

"Contributor" means any person or entity that distributes the Program.

"Licensed Patents " mean patent claims licensable by a Contributor which are
necessarily infringed by the use or sale of its Contribution alone or when
combined with the Program.

"Program" means the Contributions distributed in accordance with this Agreement.

"Recipient" means anyone who receives the Program under this Agreement,
including all Contributors.

2. GRANT OF RIGHTS

a) Subject to the terms of this Agreement, each Contributor hereby grants
Recipient a non-exclusive, worldwide, royalty-free copyright license to
reproduce, prepare derivative works of, publicly display, publicly perform,
distribute and sublicense the Contribution of such Contributor, if any, and such
derivative works, in source code and object code form.

b) Subject to the terms of this Agreement, each Contributor hereby grants
Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed
Patents to make, use, sell, offer to sell, import and otherwise transfer the
Contribution of such Contributor, if any, in source code and object code form.
This patent license shall apply to the combination of the Contribution and the
Program if, at the time the Contribution is added by the Contributor, such
addition of the Contribution causes such combination to be covered by the
Licensed Patents. The patent license shall not apply to any other combinations
which include the Contribution. No hardware per se is licensed hereunder.

c) Recipient understands that although each Contributor grants the licenses to
its Contributions set forth herein, no assurances are provided by any
Contributor that the Program does not infringe the patent or other intellectual
property rights of any other entity. Each Contributor disclaims any liability to
Recipient for claims brought by any other entity based on infringement of
intellectual property rights or otherwise. As a condition to exercising the
rights and licenses granted hereunder, each Recipient hereby assumes sole
responsibility to secure any other intellectual property rights needed, if any.
For example, if a third party patent license is required to allow Recipient to
distribute the Program, it is Recipient's responsibility to acquire that license
before distributing the Program.

d) Each Contributor represents that to its knowledge it has sufficient copyright
rights in its Contribution, if any, to grant the copyright license set forth in
this Agreement.

3. REQUIREMENTS

A Contributor may choose to distribute the Program in object code form under its
own license agreement, provided that:

a) it complies with the terms and conditions of this Agreement; and

b) its license agreement:

i) effectively disclaims on behalf of all Contributors all warranties and
conditions, express and implied, including warranties or conditions of title and
non-infringement, and implied warranties or conditions of merchantability and
fitness for a particular purpose;

ii) effectively excludes on behalf of all Contributors all liability for
damages, including direct, indirect, special, incidental and consequential
damages, such as lost profits;

iii) states that any provisions which differ from this Agreement are offered by
that Contributor alone and not by any other party; and

iv) states that source code for the Program is available from such Contributor,
and informs licensees how to obtain it in a reasonable manner on or through a
medium customarily used for software exchange.

When the Program is made available in source code form:

a) it must be made available under this Agreement; and

b) a copy of this Agreement must be included with each copy of the Program.

Contributors may not remove or alter any copyright notices contained within the
Program.

Each Contributor must identify itself as the originator of its Contribution, if
any, in a manner that reasonably allows subsequent Recipients to identify the
originator of the Contribution.

4. COMMERCIAL DISTRIBUTION

Commercial distributors of software may accept certain responsibilities with
respect to end users, business partners and the like. While this license is
intended to facilitate the commercial use of the Program, the Contributor who
includes the Program in a commercial product offering should do so in a manner
which does not create potential liability for other Contributors. Therefore, if
a Contributor includes the Program in a commercial product offering, such
Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
every other Contributor ("Indemnified Contributor") against any losses, damages
and costs (collectively "Losses") arising from claims, lawsuits and other legal
actions brought by a third party against the Indemnified Contributor to the
extent caused by the acts or omissions of such Commercial Contributor in
connection with its distribution of the Program in a commercial product
offering. The obligations in this section do not apply to any claims or Losses
relating to any actual or alleged intellectual property infringement. In order
to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
Contributor in writing of such claim, and b) allow the Commercial Contributor to
control, and cooperate with the Commercial Contributor in, the defense and any
related settlement negotiations. The Indemnified Contributor may participate in
any such claim at its own expense.

For example, a Contributor might include the Program in a commercial product
offering, Product X. That Contributor is then a Commercial Contributor. If that
Commercial Contributor then makes performance claims, or offers warranties
related to Product X, those performance claims and warranties are such
Commercial Contributor's responsibility alone. Under this section, the
Commercial Contributor would have to defend claims against the other
Contributors related to those performance claims and warranties, and if a court
requires any other Contributor to pay any damages as a result, the Commercial
Contributor must pay those damages.

5. NO WARRANTY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
Recipient is solely responsible for determining the appropriateness of using and
distributing the Program and assumes all risks associated with its exercise of
rights under this Agreement, including but not limited to the risks and costs of
program errors, compliance with applicable laws, damage to or loss of data,
programs or equipment, and unavailability or interruption of operations.

6. DISCLAIMER OF LIABILITY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

7. GENERAL

If any provision of this Agreement is invalid or unenforceable under applicable
law, it shall not affect the validity or enforceability of the remainder of the
terms of this Agreement, and without further action by the parties hereto, such
provision shall be reformed to the minimum extent necessary to make such
provision valid and enforceable.

If Recipient institutes patent litigation against a Contributor with respect to
a patent applicable to software (including a cross-claim or counterclaim in a
lawsuit), then any patent licenses granted by that Contributor to such Recipient
under this Agreement shall terminate as of the date such litigation is filed. In
addition, if Recipient institutes patent litigation against any entity
(including a cross-claim or counterclaim in a lawsuit) alleging that the Program
itself (excluding combinations of the Program with other software or hardware)
infringes such Recipient's patent(s), then such Recipient's rights granted under
Section 2(b) shall terminate as of the date such litigation is filed.

All Recipient's rights under this Agreement shall terminate if it fails to
comply with any of the material terms or conditions of this Agreement and does
not cure such failure in a reasonable period of time after becoming aware of
such noncompliance. If all Recipient's rights under this Agreement terminate,
Recipient agrees to cease use and distribution of the Program as soon as
reasonably practicable. However, Recipient's obligations under this Agreement
and any licenses granted by Recipient relating to the Program shall continue and
survive.

Everyone is permitted to copy and distribute copies of this Agreement, but in
order to avoid inconsistency the Agreement is copyrighted and may only be
modified in the following manner. The Agreement Steward reserves the right to
publish new versions (including revisions) of this Agreement from time to time.
No one other than the Agreement Steward has the right to modify this Agreement.
IBM is the initial Agreement Steward. IBM may assign the responsibility to serve
as the Agreement Steward to a suitable separate entity. Each new version of the
Agreement will be given a distinguishing version number. The Program (including
Contributions) may always be distributed subject to the version of the Agreement
under which it was received. In addition, after a new version of the Agreement
is published, Contributor may elect to distribute the Program (including its
Contributions) under the new version. Except as expressly stated in Sections
2(a) and 2(b) above, Recipient receives no rights or licenses to the
intellectual property of any Contributor under this Agreement, whether
expressly, by implication, estoppel or otherwise. All rights in the Program not
expressly granted under this Agreement are reserved.

This Agreement is governed by the laws of the State of New York and the
intellectual property laws of the United States of America. No party to this
Agreement will bring a legal action under this Agreement more than one year
after the cause of action arose. Each party waives its rights to a jury trial in
any resulting litigation.

Special exception for LZMA compression module

Igor Pavlov and Amir Szekely, the authors of the LZMA compression module for
NSIS, expressly permit you to statically or dynamically link your code (or bind
by name) to the files from the LZMA compression module for NSIS without
subjecting your linked code to the terms of the Common Public license version
1.0. Any modifications or additions to files from the LZMA compression module
for NSIS, however, are subject to the terms of the Common Public License version
1.0.


For the following XML Schemas for Java EE Deployment Descriptors:
 - javaee_5.xsd
 - javaee_web_services_1_2.xsd
 - javaee_web_services_client_1_2.xsd
 - javaee_6.xsd
 - javaee_web_services_1_3.xsd
 - javaee_web_services_client_1_3.xsd
 - jsp_2_2.xsd
 - web-app_3_0.xsd
 - web-common_3_0.xsd
 - web-fragment_3_0.xsd
 - javaee_7.xsd
 - javaee_web_services_1_4.xsd
 - javaee_web_services_client_1_4.xsd
 - jsp_2_3.xsd
 - web-app_3_1.xsd
 - web-common_3_1.xsd
 - web-fragment_3_1.xsd
 - javaee_8.xsd
 - web-app_4_0.xsd
 - web-common_4_0.xsd
 - web-fragment_4_0.xsd

COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0

1. Definitions.

   1.1. Contributor. means each individual or entity that creates or contributes
        to the creation of Modifications.

   1.2. Contributor Version. means the combination of the Original Software,
        prior Modifications used by a Contributor (if any), and the
        Modifications made by that particular Contributor.

   1.3. Covered Software. means (a) the Original Software, or (b) Modifications,
        or (c) the combination of files containing Original Software with files
        containing Modifications, in each case including portions thereof.

   1.4. Executable. means the Covered Software in any form other than Source
        Code.

   1.5. Initial Developer. means the individual or entity that first makes
        Original Software available under this License.

   1.6. Larger Work. means a work which combines Covered Software or portions
        thereof with code not governed by the terms of this License.

   1.7. License. means this document.

   1.8. Licensable. means having the right to grant, to the maximum extent
        possible, whether at the time of the initial grant or subsequently
        acquired, any and all of the rights conveyed herein.

   1.9. Modifications. means the Source Code and Executable form of any of the
        following:

        A. Any file that results from an addition to, deletion from or
           modification of the contents of a file containing Original Software
           or previous Modifications;

        B. Any new file that contains any part of the Original Software or
           previous Modification; or

        C. Any new file that is contributed or otherwise made available under
           the terms of this License.

   1.10. Original Software. means the Source Code and Executable form of
         computer software code that is originally released under this License.

   1.11. Patent Claims. means any patent claim(s), now owned or hereafter
         acquired, including without limitation, method, process, and apparatus
         claims, in any patent Licensable by grantor.

   1.12. Source Code. means (a) the common form of computer software code in
         which modifications are made and (b) associated documentation included
         in or with such code.

   1.13. You. (or .Your.) means an individual or a legal entity exercising
         rights under, and complying with all of the terms of, this License. For
         legal entities, .You. includes any entity which controls, is controlled
         by, or is under common control with You. For purposes of this
         definition, .control. means (a) the power, direct or indirect, to cause
         the direction or management of such entity, whether by contract or
         otherwise, or (b) ownership of more than fifty percent (50%) of the
         outstanding shares or beneficial ownership of such entity.

2. License Grants.

      2.1. The Initial Developer Grant.

      Conditioned upon Your compliance with Section 3.1 below and subject to
      third party intellectual property claims, the Initial Developer hereby
      grants You a world-wide, royalty-free, non-exclusive license:

        (a) under intellectual property rights (other than patent or trademark)
            Licensable by Initial Developer, to use, reproduce, modify, display,
            perform, sublicense and distribute the Original Software (or
            portions thereof), with or without Modifications, and/or as part of
            a Larger Work; and

        (b) under Patent Claims infringed by the making, using or selling of
            Original Software, to make, have made, use, practice, sell, and
            offer for sale, and/or otherwise dispose of the Original Software
            (or portions thereof).

        (c) The licenses granted in Sections 2.1(a) and (b) are effective on the
            date Initial Developer first distributes or otherwise makes the
            Original Software available to a third party under the terms of this
            License.

        (d) Notwithstanding Section 2.1(b) above, no patent license is granted:
            (1) for code that You delete from the Original Software, or (2) for
            infringements caused by: (i) the modification of the Original
            Software, or (ii) the combination of the Original Software with
            other software or devices.

    2.2. Contributor Grant.

    Conditioned upon Your compliance with Section 3.1 below and subject to third
    party intellectual property claims, each Contributor hereby grants You a
    world-wide, royalty-free, non-exclusive license:

        (a) under intellectual property rights (other than patent or trademark)
            Licensable by Contributor to use, reproduce, modify, display,
            perform, sublicense and distribute the Modifications created by such
            Contributor (or portions thereof), either on an unmodified basis,
            with other Modifications, as Covered Software and/or as part of a
            Larger Work; and

        (b) under Patent Claims infringed by the making, using, or selling of
            Modifications made by that Contributor either alone and/or in
            combination with its Contributor Version (or portions of such
            combination), to make, use, sell, offer for sale, have made, and/or
            otherwise dispose of: (1) Modifications made by that Contributor (or
            portions thereof); and (2) the combination of Modifications made by
            that Contributor with its Contributor Version (or portions of such
            combination).

        (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on
            the date Contributor first distributes or otherwise makes the
            Modifications available to a third party.

        (d) Notwithstanding Section 2.2(b) above, no patent license is granted:
            (1) for any code that Contributor has deleted from the Contributor
            Version; (2) for infringements caused by: (i) third party
            modifications of Contributor Version, or (ii) the combination of
            Modifications made by that Contributor with other software (except
            as part of the Contributor Version) or other devices; or (3) under
            Patent Claims infringed by Covered Software in the absence of
            Modifications made by that Contributor.

3. Distribution Obligations.

      3.1. Availability of Source Code.
      Any Covered Software that You distribute or otherwise make available in
      Executable form must also be made available in Source Code form and that
      Source Code form must be distributed only under the terms of this License.
      You must include a copy of this License with every copy of the Source Code
      form of the Covered Software You distribute or otherwise make available.
      You must inform recipients of any such Covered Software in Executable form
      as to how they can obtain such Covered Software in Source Code form in a
      reasonable manner on or through a medium customarily used for software
      exchange.

      3.2. Modifications.
      The Modifications that You create or to which You contribute are governed
      by the terms of this License. You represent that You believe Your
      Modifications are Your original creation(s) and/or You have sufficient
      rights to grant the rights conveyed by this License.

      3.3. Required Notices.
      You must include a notice in each of Your Modifications that identifies
      You as the Contributor of the Modification. You may not remove or alter
      any copyright, patent or trademark notices contained within the Covered
      Software, or any notices of licensing or any descriptive text giving
      attribution to any Contributor or the Initial Developer.

      3.4. Application of Additional Terms.
      You may not offer or impose any terms on any Covered Software in Source
      Code form that alters or restricts the applicable version of this License
      or the recipients. rights hereunder. You may choose to offer, and to
      charge a fee for, warranty, support, indemnity or liability obligations to
      one or more recipients of Covered Software. However, you may do so only on
      Your own behalf, and not on behalf of the Initial Developer or any
      Contributor. You must make it absolutely clear that any such warranty,
      support, indemnity or liability obligation is offered by You alone, and
      You hereby agree to indemnify the Initial Developer and every Contributor
      for any liability incurred by the Initial Developer or such Contributor as
      a result of warranty, support, indemnity or liability terms You offer.

      3.5. Distribution of Executable Versions.
      You may distribute the Executable form of the Covered Software under the
      terms of this License or under the terms of a license of Your choice,
      which may contain terms different from this License, provided that You are
      in compliance with the terms of this License and that the license for the
      Executable form does not attempt to limit or alter the recipient.s rights
      in the Source Code form from the rights set forth in this License. If You
      distribute the Covered Software in Executable form under a different
      license, You must make it absolutely clear that any terms which differ
      from this License are offered by You alone, not by the Initial Developer
      or Contributor. You hereby agree to indemnify the Initial Developer and
      every Contributor for any liability incurred by the Initial Developer or
      such Contributor as a result of any such terms You offer.

      3.6. Larger Works.
      You may create a Larger Work by combining Covered Software with other code
      not governed by the terms of this License and distribute the Larger Work
      as a single product. In such a case, You must make sure the requirements
      of this License are fulfilled for the Covered Software.

4. Versions of the License.

      4.1. New Versions.
      Sun Microsystems, Inc. is the initial license steward and may publish
      revised and/or new versions of this License from time to time. Each
      version will be given a distinguishing version number. Except as provided
      in Section 4.3, no one other than the license steward has the right to
      modify this License.

      4.2. Effect of New Versions.
      You may always continue to use, distribute or otherwise make the Covered
      Software available under the terms of the version of the License under
      which You originally received the Covered Software. If the Initial
      Developer includes a notice in the Original Software prohibiting it from
      being distributed or otherwise made available under any subsequent version
      of the License, You must distribute and make the Covered Software
      available under the terms of the version of the License under which You
      originally received the Covered Software. Otherwise, You may also choose
      to use, distribute or otherwise make the Covered Software available under
      the terms of any subsequent version of the License published by the
      license steward.

      4.3. Modified Versions.
      When You are an Initial Developer and You want to create a new license for
      Your Original Software, You may create and use a modified version of this
      License if You: (a) rename the license and remove any references to the
      name of the license steward (except to note that the license differs from
      this License); and (b) otherwise make it clear that the license contains
      terms which differ from this License.

5. DISCLAIMER OF WARRANTY.

   COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN .AS IS. BASIS, WITHOUT
   WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT
   LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS,
   MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK
   AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD
   ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL
   DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY
   SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN
   ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED
   HEREUNDER EXCEPT UNDER THIS DISCLAIMER.

6. TERMINATION.

      6.1. This License and the rights granted hereunder will terminate
           automatically if You fail to comply with terms herein and fail to
           cure such breach within 30 days of becoming aware of the breach.
           Provisions which, by their nature, must remain in effect beyond the
           termination of this License shall survive.

      6.2. If You assert a patent infringement claim (excluding declaratory
           judgment actions) against Initial Developer or a Contributor (the
           Initial Developer or Contributor against whom You assert such claim
           is referred to as .Participant.) alleging that the Participant
           Software (meaning the Contributor Version where the Participant is a
           Contributor or the Original Software where the Participant is the
           Initial Developer) directly or indirectly infringes any patent, then
           any and all rights granted directly or indirectly to You by such
           Participant, the Initial Developer (if the Initial Developer is not
           the Participant) and all Contributors under Sections 2.1 and/or 2.2
           of this License shall, upon 60 days notice from Participant terminate
           prospectively and automatically at the expiration of such 60 day
           notice period, unless if within such 60 day period You withdraw Your
           claim with respect to the Participant Software against such
           Participant either unilaterally or pursuant to a written agreement
           with Participant.

      6.3. In the event of termination under Sections 6.1 or 6.2 above, all end
           user licenses that have been validly granted by You or any
           distributor hereunder prior to termination (excluding licenses
           granted to You by any distributor) shall survive termination.

7. LIMITATION OF LIABILITY.

   UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING
   NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY
   OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF
   ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL,
   INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
   LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE,
   COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR
   LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF
   SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR
   DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY.S NEGLIGENCE TO THE EXTENT
   APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
   EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS
   EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.

8. U.S. GOVERNMENT END USERS.

   The Covered Software is a .commercial item,. as that term is defined in 48
   C.F.R. 2.101 (Oct. 1995), consisting of .commercial computer software. (as
   that term is defined at 48 C.F.R. ? 252.227-7014(a)(1)) and commercial
   computer software documentation. as such terms are used in 48 C.F.R. 12.212
   (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1
   through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered
   Software with only those rights set forth herein. This U.S. Government Rights
   clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or
   provision that addresses Government rights in computer software under this
   License.

9. MISCELLANEOUS.

   This License represents the complete agreement concerning subject matter
   hereof. If any provision of this License is held to be unenforceable, such
   provision shall be reformed only to the extent necessary to make it
   enforceable. This License shall be governed by the law of the jurisdiction
   specified in a notice contained within the Original Software (except to the
   extent applicable law, if any, provides otherwise), excluding such
   jurisdiction's conflict-of-law provisions. Any litigation relating to this
   License shall be subject to the jurisdiction of the courts located in the
   jurisdiction and venue specified in a notice contained within the Original
   Software, with the losing party responsible for costs, including, without
   limitation, court costs and reasonable attorneys. fees and expenses. The
   application of the United Nations Convention on Contracts for the
   International Sale of Goods is expressly excluded. Any law or regulation
   which provides that the language of a contract shall be construed against
   the drafter shall not apply to this License. You agree that You alone are
   responsible for compliance with the United States export administration
   regulations (and the export control laws and regulation of any other
   countries) when You use, distribute or otherwise make available any Covered
   Software.

10. RESPONSIBILITY FOR CLAIMS.

   As between Initial Developer and the Contributors, each party is responsible
   for claims and damages arising, directly or indirectly, out of its
   utilization of rights under this License and You agree to work with Initial
   Developer and Contributors to distribute such responsibility on an equitable
   basis. Nothing herein is intended or shall be deemed to constitute any
   admission of liability.

   NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION
   LICENSE (CDDL)

   The code released under the CDDL shall be governed by the laws of the State
   of California (excluding conflict-of-law provisions). Any litigation relating
   to this License shall be subject to the jurisdiction of the Federal Courts of
   the Northern District of California and the state courts of the State of
   California, with venue lying in Santa Clara County, California.



================================================
FILE: assembly/assembly-che-tomcat/src/assembly/assembly.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (c) 2012-2021 Red Hat, Inc.
    This program and the accompanying materials are made
    available under the terms of the Eclipse Public License 2.0
    which is available at https://www.eclipse.org/legal/epl-2.0/

    SPDX-License-Identifier: EPL-2.0

    Contributors:
      Red Hat, Inc. - initial API and implementation

-->
<assembly xmlns="https://maven.apache.org/plugins/maven-assembly-plugin/assembly/2.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="https://maven.apache.org/plugins/maven-assembly-plugin/assembly/2.0.0 https://maven.apache.org/xsd/assembly-2.0.0.xsd">
    <id>tomcat-zip</id>

    <formats>
        <format>zip</format>
    </formats>

    <includeBaseDirectory>false</includeBaseDirectory>


    <fileSets>
        <fileSet>
            <directory>${project.build.directory}/dependency/apache-tomcat-${org.apache.tomcat.version}</directory>
            <outputDirectory></outputDirectory>
            <excludes>
                <exclude>**/webapps/**</exclude>
                <exclude>**/bin/setenv.*</exclude>
                <exclude>**/bin/*.sh</exclude>
                <exclude>**/bin/catalina-tasks.xml</exclude>
                <exclude>**/bin/*.tar.gz</exclude>
                <exclude>**/conf/tomcat-users.xml</exclude>
                <exclude>**/conf/server.xml</exclude>
            </excludes>
        </fileSet>
        <fileSet>
            <directory>${project.build.directory}/dependency/apache-tomcat-${org.apache.tomcat.version}</directory>
            <outputDirectory></outputDirectory>
            <includes>
                <include>**/bin/*.sh</include>
            </includes>
            <fileMode>755</fileMode>
        </fileSet>


        <fileSet>
            <directory>${project.basedir}/src/assembly</directory>
            <outputDirectory></outputDirectory>
            <includes>
                <include>LICENSE-tomcat.txt</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>${project.basedir}/src/assembly/bin</directory>
            <outputDirectory>bin</outputDirectory>
            <includes>
                <include>setenv.sh</include>
            </includes>
            <fileMode>755</fileMode>
        </fileSet>
        <fileSet>
            <directory>${project.basedir}/src/assembly/conf</directory>
            <outputDirectory>conf</outputDirectory>
            <includes>
                <include>logback-access.xml</include>
                <include>logback.xml</include>
                <include>logback-json-appenders.xml</include>
                <include>logback-plaintext-appenders.xml</include>
                <include>server.xml</include>
                <include>context.xml</include>
                <include>logging.properties</include>
            </includes>
        </fileSet>
    </fileSets>
</assembly>


================================================
FILE: assembly/assembly-che-tomcat/src/assembly/conf/logback-access.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (c) 2012-2021 Red Hat, Inc.
    This program and the accompanying materials are made
    available under the terms of the Eclipse Public License 2.0
    which is available at https://www.eclipse.org/legal/epl-2.0/

    SPDX-License-Identifier: EPL-2.0

    Contributors:
      Red Hat, Inc. - initial API and implementation

-->
<configuration>

    <property name="max.retention.days" value="60" />

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.access.PatternLayoutEncoder">
            <pattern>common</pattern>
        </encoder>
    </appender>

    <appender name="ACCESS-LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${che.logs.dir}/logs/localhost-access.log</file>
        <append>true</append>
        <encoder class="ch.qos.logback.access.PatternLayoutEncoder">
            <charset>utf-8</charset>
            <pattern>common</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${che.logs.dir}/archive/localhost-access-%d{yyyyMMdd}-%i.log</fileNamePattern>
            <maxHistory>${max.retention.days}</maxHistory>
            <maxFileSize>20MB</maxFileSize>
        </rollingPolicy>
    </appender>

    <appender-ref ref="ACCESS-LOG" />

</configuration>


================================================
FILE: assembly/assembly-che-tomcat/src/assembly/conf/logback-json-appenders.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (c) 2012-2021 Red Hat, Inc.
    This program and the accompanying materials are made
    available under the terms of the Eclipse Public License 2.0
    which is available at https://www.eclipse.org/legal/epl-2.0/

    SPDX-License-Identifier: EPL-2.0

    Contributors:
      Red Hat, Inc. - initial API and implementation

-->
<included>
    <appender name="stdout-json" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="net.logstash.logback.encoder.LogstashEncoder">
            <includeMdcKeyName>identity_id</includeMdcKeyName>
            <includeMdcKeyName>req_id</includeMdcKeyName>
        </encoder>
    </appender>

    <root level="${che.logs.level:-INFO}">
        <appender-ref ref="stdout-json"/>
    </root>
</included>


================================================
FILE: assembly/assembly-che-tomcat/src/assembly/conf/logback-plaintext-appenders.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (c) 2012-2021 Red Hat, Inc.
    This program and the accompanying materials are made
    available under the terms of the Eclipse Public License 2.0
    which is available at https://www.eclipse.org/legal/epl-2.0/

    SPDX-License-Identifier: EPL-2.0

    Contributors:
      Red Hat, Inc. - initial API and implementation

-->
<included>
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%-41(%date[%.15thread]) %-45([%-5level] [%.30logger{30} %L]) - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <append>true</append>
        <prudent>true</prudent>
        <encoder>
            <charset>utf-8</charset>
            <pattern>%-41(%date[%.15thread]) %-45([%-5level] [%.30logger{30} %L]) - %msg%n</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${che.logs.dir}/archive/%d{yyyy/MM/dd}/catalina.log</fileNamePattern>
            <maxHistory>${max.retention.days}</maxHistory>
        </rollingPolicy>
    </appender>

    <root level="${che.logs.level:-INFO}">
        <appender-ref ref="stdout"/>
        <appender-ref ref="file"/>
    </root>
</included>


================================================
FILE: assembly/assembly-che-tomcat/src/assembly/conf/logback.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (c) 2012-2021 Red Hat, Inc.
    This program and the accompanying materials are made
    available under the terms of the Eclipse Public License 2.0
    which is available at https://www.eclipse.org/legal/epl-2.0/

    SPDX-License-Identifier: EPL-2.0

    Contributors:
      Red Hat, Inc. - initial API and implementation

-->
<configuration>
    <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
        <resetJUL>true</resetJUL>
    </contextListener>
    <contextListener class="org.eclipse.che.commons.logback.EnvironmentVariablesLogLevelPropagator"/>

    <property name="max.retention.days" value="60" />

    <jmxConfigurator/>

    <include optional="true" file="${che.local.conf.dir}/logback/logback-additional-appenders.xml"/>
    <include optional="true" file="${catalina.home}/conf/logback-additional-appenders.xml"/>
    <!--Include appenders file depending on the variable `CHE_LOGS_APPENDERS_IMPL` -->
    <include optional="false" file="${catalina.home}/conf/logback-${CHE_LOGS_APPENDERS_IMPL:-plaintext}-appenders.xml"/>

    <logger name="org.apache.catalina.loader" level="OFF"/>
    <logger name="org.apache.catalina.session.PersistentManagerBase" level="OFF"/>
    <logger name="org.apache.jasper.servlet.TldScanner" level="OFF"/>
</configuration>


================================================
FILE: assembly/assembly-che-tomcat/src/assembly/conf/server.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<!-- Note:  A "Server" is not itself a "Container", so you may not
     define subcomponents such as "Valves" at this level.
     Documentation at /docs/config/server.html
 -->
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <!-- Security listener. Documentation at /docs/config/listeners.html
  <Listener className="org.apache.catalina.security.SecurityListener" />
  -->
  <!--APR library loader. Documentation at /docs/apr.html >
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  -->
  <!-- Prevent memory leaks due to use of particular java/javax APIs-->
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

  <!-- Global JNDI resources
       Documentation at /docs/jndi-resources-howto.html
  -->
  <GlobalNamingResources>
    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users
    -->
    <!--Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" /-->
  </GlobalNamingResources>

  <!-- A "Service" is a collection of one or more "Connectors" that share
       a single "Container" Note:  A "Service" is not itself a "Container",
       so you may not define subcomponents such as "Valves" at this level.
       Documentation at /docs/config/service.html
   -->
  <Service name="Catalina">

    <!--The connectors can use a shared executor, you can define one or more named thread pools-->
    <!--
    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="150" minSpareThreads="4"/>
    -->


    <!-- A "Connector" represents an endpoint by which requests are received
         and responses are returned. Documentation at :
         HTTP Connector: /docs/config/http.html
         AJP  Connector: /docs/config/ajp.html
         Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
    -->
      <Connector port="${port.http:-8080}" protocol="HTTP/1.1"
                 connectionTimeout="20000"
                 maxThreads="300"
                 maxHttpHeaderSize="32768"
                 compression="on"
                 compressionMinSize="2048"
                 noCompressionUserAgents=".*MSIE 6.*"
                 compressibleMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/json,application/javascript"
                 redirectPort="8443"/>
    <!-- A "Connector" using the shared thread pool-->
    <!--
    <Connector executor="tomcatThreadPool"
               port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    -->
    <!-- Define an SSL/TLS HTTP/1.1 Connector on port 8443 with HTTP/2
         This connector uses the NIO implementation. The default
         SSLImplementation will depend on the presence of the APR/native
         library and the useOpenSSL attribute of the
         AprLifecycleListener.
         Either JSSE or OpenSSL style configuration may be used regardless of
         the SSLImplementation selected. JSSE style configuration is used below.
    -->
    <!--
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>
    -->

    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <!--
    <Connector protocol="AJP/1.3"
               address="::1"
               port="8009"
               redirectPort="8443" />
    -->

    <!-- An Engine represents the entry point (within Catalina) that processes
         every request.  The Engine implementation for Tomcat stand alone
         analyzes the HTTP headers included with the request, and passes them
         on to the appropriate Host (virtual host).
         Documentation at /docs/config/engine.html -->

    <!-- You should set jvmRoute to support load-balancing via AJP ie :
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
    -->
    <Engine name="Catalina" defaultHost="localhost">

      <!--For clustering, please take a look at documentation at:
          /docs/cluster-howto.html  (simple how to)
          /docs/config/cluster.html (reference documentation) -->
      <!--
      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
      -->

      <!-- Use the LockOutRealm to prevent attempts to guess user passwords
           via a brute-force attack -->
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <!-- This Realm uses the UserDatabase configured in the global JNDI
             resources under the key "UserDatabase".  Any edits
             that are performed against this UserDatabase are immediately
             available for use by the Realm.  -->
        <!--Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/-->
      </Realm>

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="false">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
         <Valve className="org.apache.catalina.valves.RemoteIpValve" protocolHeader="X-Forwarded-Proto"
                 internalProxies="\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"/>

      </Host>
    </Engine>
  </Service>
</Server>


================================================
FILE: assembly/assembly-main/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (c) 2012-2026 R
Download .txt
Showing preview only (243K chars total). Download the full file or copy to clipboard to get everything.
gitextract__5pkrvkt/

├── .ci/
│   └── openshift-ci/
│       ├── Dockerfile
│       ├── ca.crt
│       ├── common.sh
│       ├── devworkspace-test.yaml
│       ├── htpasswdProvider.yaml
│       ├── oauth-secret.yaml
│       ├── pat-secret.yaml
│       ├── pod-che-smoke-test.yaml
│       ├── pod-oauth-factory-test.yaml
│       ├── ssh-secret.yaml
│       ├── test-azure-no-pat-oauth-flow-raw-devfile-url.sh
│       ├── test-azure-no-pat-oauth-flow-ssh-url.sh
│       ├── test-azure-no-pat-oauth-flow.sh
│       ├── test-azure-with-pat-setup-flow.sh
│       ├── test-bitbucket-no-pat-oauth-flow-raw-devfile-url.sh
│       ├── test-bitbucket-no-pat-oauth-flow-ssh-url.sh
│       ├── test-bitbucket-no-pat-oauth-flow.sh
│       ├── test-che-smoke-test.sh
│       ├── test-gitea-no-pat-oauth-flow.sh
│       ├── test-gitea-with-pat-setup-flow.sh
│       ├── test-github-no-pat-oauth-flow-raw-devfile-url.sh
│       ├── test-github-no-pat-oauth-flow-ssh-url.sh
│       ├── test-github-no-pat-oauth-flow.sh
│       ├── test-github-with-pat-setup-flow.sh
│       ├── test-gitlab-no-pat-oauth-flow-raw-devfile-url.sh
│       ├── test-gitlab-no-pat-oauth-flow-ssh-url.sh
│       ├── test-gitlab-no-pat-oauth-flow.sh
│       ├── test-gitlab-with-oauth-setup-flow.sh
│       └── test-gitlab-with-pat-setup-flow.sh
├── .gitattributes
├── .github/
│   ├── CODEOWNERS
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── dependabot.yml
│   └── workflows/
│       ├── build-pr-check.yml
│       ├── che-properties-docs-update.yml
│       ├── generate-maven-sbom.yml
│       ├── next-build.yml
│       ├── release.yml
│       └── try-in-web-ide.yaml
├── .gitignore
├── .mvn/
│   └── jvm.config
├── CONTRIBUTING.md
├── LICENSE
├── NUMBERING.md
├── README.md
├── RELEASE.md
├── assembly/
│   ├── assembly-che-tomcat/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── assembly/
│   │           ├── LICENSE-tomcat.txt
│   │           ├── assembly.xml
│   │           └── conf/
│   │               ├── logback-access.xml
│   │               ├── logback-json-appenders.xml
│   │               ├── logback-plaintext-appenders.xml
│   │               ├── logback.xml
│   │               └── server.xml
│   ├── assembly-main/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── assembly/
│   │           ├── LICENSE
│   │           ├── README
│   │           └── assembly.xml
│   ├── assembly-root-war/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── eclipse/
│   │       │   │           └── che/
│   │       │   │               ├── ApiAccessRejectionFilter.java
│   │       │   │               ├── DashboardModule.java
│   │       │   │               └── DashboardRedirectionFilter.java
│   │       │   └── webapp/
│   │       │       ├── META-INF/
│   │       │       │   └── context.xml
│   │       │       ├── WEB-INF/
│   │       │       │   ├── rewrite.config
│   │       │       │   └── web.xml
│   │       │       └── _app/
│   │       │           ├── keycloackLoader.js
│   │       │           ├── loader.css
│   │       │           ├── loader.html
│   │       │           ├── loader.js
│   │       │           ├── oauth.html
│   │       │           └── oauthLoader.js
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── eclipse/
│   │                       └── che/
│   │                           ├── ApiAccessRejectionFilterTest.java
│   │                           └── DashboardRedirectionFilterTest.java
│   ├── assembly-swagger-war/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── webapp/
│   │               ├── index.html
│   │               ├── oauth2-redirect.html
│   │               ├── swagger-ui-bundle.js
│   │               ├── swagger-ui-es-bundle-core.js
│   │               ├── swagger-ui-es-bundle.js
│   │               ├── swagger-ui-standalone-preset.js
│   │               ├── swagger-ui.css
│   │               └── swagger-ui.js
│   ├── assembly-wsmaster-war/
│   │   ├── .deps/
│   │   │   ├── EXCLUDED/
│   │   │   │   ├── dev.md
│   │   │   │   └── prod.md
│   │   │   ├── dev.md
│   │   │   ├── problems.md
│   │   │   └── prod.md
│   │   ├── gen-deps.sh
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── eclipse/
│   │       │   │           └── che/
│   │       │   │               ├── api/
│   │       │   │               │   └── deploy/
│   │       │   │               │       ├── ReplicationModule.java
│   │       │   │               │       ├── WsMasterModule.java
│   │       │   │               │       ├── WsMasterServletModule.java
│   │       │   │               │       └── jsonrpc/
│   │       │   │               │           ├── CheJsonRpcWebSocketConfigurationModule.java
│   │       │   │               │           ├── CheMajorWebSocketEndpoint.java
│   │       │   │               │           └── CheMajorWebSocketEndpointConfiguration.java
│   │       │   │               └── swagger/
│   │       │   │                   └── deploy/
│   │       │   │                       └── DocsModule.java
│   │       │   ├── resources/
│   │       │   │   └── META-INF/
│   │       │   │       └── persistence.xml
│   │       │   └── webapp/
│   │       │       └── WEB-INF/
│   │       │           ├── classes/
│   │       │           │   ├── che/
│   │       │           │   │   ├── che.properties
│   │       │           │   │   └── multiuser.properties
│   │       │           │   ├── che_aliases.properties
│   │       │           │   ├── jgroups/
│   │       │           │   │   └── che-tcp.xml
│   │       │           │   ├── keycloak/
│   │       │           │   │   ├── OIDCKeycloak.js
│   │       │           │   │   ├── oidcCallback.js
│   │       │           │   │   ├── oidcCallbackDashboard.html
│   │       │           │   │   └── oidcCallbackIde.html
│   │       │           │   └── logging.properties
│   │       │           ├── openapi-configuration.json
│   │       │           └── web.xml
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── eclipse/
│   │           │           └── che/
│   │           │               └── integration/
│   │           │                   └── IntegrityConfigurationTest.java
│   │           └── resources/
│   │               └── logback-test.xml
│   └── pom.xml
├── build/
│   ├── README.md
│   ├── build.sh
│   └── dockerfiles/
│       ├── Dockerfile
│       ├── brew.Dockerfile
│       └── entrypoint.sh
├── check_properties_description.sh
├── core/
│   ├── che-core-api-core/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── eclipse/
│   │       │   │           └── che/
│   │       │   │               ├── api/
│   │       │   │               │   └── core/
│   │       │   │               │       ├── ApiException.java
│   │       │   │               │       ├── AuthenticationException.java
│   │       │   │               │       ├── BadRequestException.java
│   │       │   │               │       ├── ConflictException.java
│   │       │   │               │       ├── ErrorCodes.java
│   │       │   │               │       ├── ForbiddenException.java
│   │       │   │               │       ├── NotFoundException.java
│   │       │   │               │       ├── Page.java
│   │       │   │               │       ├── Pages.java
│   │       │   │               │       ├── ServerException.java
│   │       │   │               │       ├── UnauthorizedException.java
│   │       │   │               │       ├── ValidationException.java
│   │       │   │               │       ├── cors/
│   │       │   │               │       │   ├── CheCorsFilter.java
│   │       │   │               │       │   └── CheCorsFilterConfig.java
│   │       │   │               │       ├── factory/
│   │       │   │               │       │   └── FactoryParameter.java
│   │       │   │               │       ├── jsonrpc/
│   │       │   │               │       │   ├── commons/
│   │       │   │               │       │   │   ├── ClientSubscriptionHandler.java
│   │       │   │               │       │   │   ├── JsonRpcComposer.java
│   │       │   │               │       │   │   ├── JsonRpcError.java
│   │       │   │               │       │   │   ├── JsonRpcErrorTransmitter.java
│   │       │   │               │       │   │   ├── JsonRpcException.java
│   │       │   │               │       │   │   ├── JsonRpcMarshaller.java
│   │       │   │               │       │   │   ├── JsonRpcMessageReceiver.java
│   │       │   │               │       │   │   ├── JsonRpcMethodInvokerFilter.java
│   │       │   │               │       │   │   ├── JsonRpcParams.java
│   │       │   │               │       │   │   ├── JsonRpcPromise.java
│   │       │   │               │       │   │   ├── JsonRpcQualifier.java
│   │       │   │               │       │   │   ├── JsonRpcRequest.java
│   │       │   │               │       │   │   ├── JsonRpcResponse.java
│   │       │   │               │       │   │   ├── JsonRpcResult.java
│   │       │   │               │       │   │   ├── JsonRpcUnmarshaller.java
│   │       │   │               │       │   │   ├── JsonRpcUtils.java
│   │       │   │               │       │   │   ├── NotificationHandler.java
│   │       │   │               │       │   │   ├── RequestDispatcher.java
│   │       │   │               │       │   │   ├── RequestHandler.java
│   │       │   │               │       │   │   ├── RequestHandlerConfigurator.java
│   │       │   │               │       │   │   ├── RequestHandlerManager.java
│   │       │   │               │       │   │   ├── RequestProcessor.java
│   │       │   │               │       │   │   ├── RequestProcessorConfigurationProvider.java
│   │       │   │               │       │   │   ├── RequestTransmitter.java
│   │       │   │               │       │   │   ├── ResponseDispatcher.java
│   │       │   │               │       │   │   ├── TimeoutActionRunner.java
│   │       │   │               │       │   │   ├── reception/
│   │       │   │               │       │   │   │   ├── ConsumerConfiguratorManyToNone.java
│   │       │   │               │       │   │   │   ├── ConsumerConfiguratorNoneToNone.java
│   │       │   │               │       │   │   │   ├── ConsumerConfiguratorOneToNone.java
│   │       │   │               │       │   │   │   ├── FunctionConfiguratorManyToMany.java
│   │       │   │               │       │   │   │   ├── FunctionConfiguratorManyToOne.java
│   │       │   │               │       │   │   │   ├── FunctionConfiguratorNoneToMany.java
│   │       │   │               │       │   │   │   ├── FunctionConfiguratorNoneToOne.java
│   │       │   │               │       │   │   │   ├── FunctionConfiguratorOneToMany.java
│   │       │   │               │       │   │   │   ├── FunctionConfiguratorOneToOne.java
│   │       │   │               │       │   │   │   ├── MethodNameConfigurator.java
│   │       │   │               │       │   │   │   ├── ParamsConfigurator.java
│   │       │   │               │       │   │   │   ├── PromiseConfigurationOneToOne.java
│   │       │   │               │       │   │   │   ├── ResultConfiguratorFromMany.java
│   │       │   │               │       │   │   │   ├── ResultConfiguratorFromNone.java
│   │       │   │               │       │   │   │   └── ResultConfiguratorFromOne.java
│   │       │   │               │       │   │   └── transmission/
│   │       │   │               │       │   │       ├── EndpointIdConfigurator.java
│   │       │   │               │       │   │       ├── MethodNameConfigurator.java
│   │       │   │               │       │   │       ├── ParamsConfigurator.java
│   │       │   │               │       │   │       ├── SendConfiguratorFromMany.java
│   │       │   │               │       │   │       ├── SendConfiguratorFromNone.java
│   │       │   │               │       │   │       └── SendConfiguratorFromOne.java
│   │       │   │               │       │   └── impl/
│   │       │   │               │       │       ├── GsonJsonRpcComposer.java
│   │       │   │               │       │       ├── GsonJsonRpcMarshaller.java
│   │       │   │               │       │       ├── GsonJsonRpcQualifier.java
│   │       │   │               │       │       ├── GsonJsonRpcUnmarshaller.java
│   │       │   │               │       │       ├── JsonRpcModule.java
│   │       │   │               │       │       ├── ServerSideRequestProcessor.java
│   │       │   │               │       │       ├── ServerSideRequestProcessorConfigurator.java
│   │       │   │               │       │       └── ServerSideTimeoutActionRunner.java
│   │       │   │               │       ├── notification/
│   │       │   │               │       │   ├── EventOrigin.java
│   │       │   │               │       │   ├── EventService.java
│   │       │   │               │       │   ├── EventSubscriber.java
│   │       │   │               │       │   ├── InmemoryRemoteSubscriptionStorage.java
│   │       │   │               │       │   ├── RemoteSubscriptionContext.java
│   │       │   │               │       │   ├── RemoteSubscriptionManager.java
│   │       │   │               │       │   ├── RemoteSubscriptionStorage.java
│   │       │   │               │       │   └── dto/
│   │       │   │               │       │       └── EventSubscription.java
│   │       │   │               │       ├── rest/
│   │       │   │               │       │   ├── ApiExceptionMapper.java
│   │       │   │               │       │   ├── ApiInfoProvider.java
│   │       │   │               │       │   ├── ApiInfoService.java
│   │       │   │               │       │   ├── AuthenticationExceptionMapper.java
│   │       │   │               │       │   ├── CheJsonProvider.java
│   │       │   │               │       │   ├── Constants.java
│   │       │   │               │       │   ├── CoreRestModule.java
│   │       │   │               │       │   ├── DefaultHttpJsonRequest.java
│   │       │   │               │       │   ├── DefaultHttpJsonRequestFactory.java
│   │       │   │               │       │   ├── DefaultHttpJsonResponse.java
│   │       │   │               │       │   ├── DownloadFileResponseFilter.java
│   │       │   │               │       │   ├── HttpJsonRequest.java
│   │       │   │               │       │   ├── HttpJsonRequestFactory.java
│   │       │   │               │       │   ├── HttpJsonResponse.java
│   │       │   │               │       │   ├── HttpOutputMessage.java
│   │       │   │               │       │   ├── HttpRequestHelper.java
│   │       │   │               │       │   ├── HttpServletProxyResponse.java
│   │       │   │               │       │   ├── JAXRSDownloadFileResponseFilter.java
│   │       │   │               │       │   ├── LivenessProbeService.java
│   │       │   │               │       │   ├── MessageBodyAdapter.java
│   │       │   │               │       │   ├── MessageBodyAdapterInterceptor.java
│   │       │   │               │       │   ├── OutputProvider.java
│   │       │   │               │       │   ├── RemoteServiceDescriptor.java
│   │       │   │               │       │   ├── RuntimeExceptionMapper.java
│   │       │   │               │       │   ├── Service.java
│   │       │   │               │       │   ├── ServiceContext.java
│   │       │   │               │       │   ├── WebApplicationExceptionMapper.java
│   │       │   │               │       │   ├── annotations/
│   │       │   │               │       │   │   ├── Description.java
│   │       │   │               │       │   │   ├── GenerateLink.java
│   │       │   │               │       │   │   ├── OPTIONS.java
│   │       │   │               │       │   │   ├── Required.java
│   │       │   │               │       │   │   └── Valid.java
│   │       │   │               │       │   └── shared/
│   │       │   │               │       │       ├── Links.java
│   │       │   │               │       │       ├── ParameterType.java
│   │       │   │               │       │       └── dto/
│   │       │   │               │       │           ├── ApiInfo.java
│   │       │   │               │       │           ├── ExtendedError.java
│   │       │   │               │       │           ├── Hyperlinks.java
│   │       │   │               │       │           ├── Link.java
│   │       │   │               │       │           ├── LinkParameter.java
│   │       │   │               │       │           ├── RequestBodyDescriptor.java
│   │       │   │               │       │           ├── ServiceDescriptor.java
│   │       │   │               │       │           └── ServiceError.java
│   │       │   │               │       ├── util/
│   │       │   │               │       │   ├── AbstractLineConsumer.java
│   │       │   │               │       │   ├── AbstractMessageConsumer.java
│   │       │   │               │       │   ├── ApiInfoLogInformer.java
│   │       │   │               │       │   ├── Cancellable.java
│   │       │   │               │       │   ├── CommandLine.java
│   │       │   │               │       │   ├── CompositeLineConsumer.java
│   │       │   │               │       │   ├── ContentTypeGuesser.java
│   │       │   │               │       │   ├── DownloadPlugin.java
│   │       │   │               │       │   ├── ErrorFilteredConsumer.java
│   │       │   │               │       │   ├── FileCleaner.java
│   │       │   │               │       │   ├── FileLineConsumer.java
│   │       │   │               │       │   ├── HttpDownloadPlugin.java
│   │       │   │               │       │   ├── IndentWrapperLineConsumer.java
│   │       │   │               │       │   ├── JsonRpcEndpointIdProvider.java
│   │       │   │               │       │   ├── JsonRpcEndpointIdsHolder.java
│   │       │   │               │       │   ├── JsonRpcEndpointToMachineNameHolder.java
│   │       │   │               │       │   ├── JsonRpcLineConsumer.java
│   │       │   │               │       │   ├── JsonRpcMessageConsumer.java
│   │       │   │               │       │   ├── LineConsumer.java
│   │       │   │               │       │   ├── LineConsumerFactory.java
│   │       │   │               │       │   ├── LinksHelper.java
│   │       │   │               │       │   ├── ListLineConsumer.java
│   │       │   │               │       │   ├── MessageConsumer.java
│   │       │   │               │       │   ├── PagingUtil.java
│   │       │   │               │       │   ├── RateExceedDetector.java
│   │       │   │               │       │   ├── ShellFactory.java
│   │       │   │               │       │   ├── StreamPump.java
│   │       │   │               │       │   ├── SystemInfo.java
│   │       │   │               │       │   ├── ValueHolder.java
│   │       │   │               │       │   ├── Watchdog.java
│   │       │   │               │       │   ├── WritableLineConsumer.java
│   │       │   │               │       │   └── lineconsumer/
│   │       │   │               │       │       ├── ConcurrentCompositeLineConsumer.java
│   │       │   │               │       │       ├── ConcurrentFileLineConsumer.java
│   │       │   │               │       │       └── ConsumerAlreadyClosedException.java
│   │       │   │               │       └── websocket/
│   │       │   │               │           ├── commons/
│   │       │   │               │           │   ├── WebSocketMessageReceiver.java
│   │       │   │               │           │   └── WebSocketMessageTransmitter.java
│   │       │   │               │           └── impl/
│   │       │   │               │               ├── BasicWebSocketEndpoint.java
│   │       │   │               │               ├── BasicWebSocketMessageTransmitter.java
│   │       │   │               │               ├── GuiceInjectorEndpointConfigurator.java
│   │       │   │               │               ├── MessagesReSender.java
│   │       │   │               │               ├── WebSocketModule.java
│   │       │   │               │               ├── WebSocketSessionRegistry.java
│   │       │   │               │               └── WebsocketIdService.java
│   │       │   │               ├── commons/
│   │       │   │               │   ├── env/
│   │       │   │               │   │   └── EnvironmentContext.java
│   │       │   │               │   ├── proxy/
│   │       │   │               │   │   └── ProxyAuthenticator.java
│   │       │   │               │   └── subject/
│   │       │   │               │       ├── Subject.java
│   │       │   │               │       └── SubjectImpl.java
│   │       │   │               ├── everrest/
│   │       │   │               │   ├── CheMethodInvokerFilter.java
│   │       │   │               │   ├── ETagResponseFilter.java
│   │       │   │               │   └── EverrestDownloadFileResponseFilter.java
│   │       │   │               └── security/
│   │       │   │                   ├── PBKDF2PasswordEncryptor.java
│   │       │   │                   ├── PasswordEncryptor.java
│   │       │   │                   └── SHA512PasswordEncryptor.java
│   │       │   └── resources/
│   │       │       └── content-types.properties
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── eclipse/
│   │           │           └── che/
│   │           │               ├── api/
│   │           │               │   └── core/
│   │           │               │       ├── PageTest.java
│   │           │               │       ├── PagesTest.java
│   │           │               │       ├── jsonrpc/
│   │           │               │       │   └── commons/
│   │           │               │       │       ├── JsonRpcMessageReceiverTest.java
│   │           │               │       │       └── RequestDispatcherTest.java
│   │           │               │       ├── notification/
│   │           │               │       │   └── EventServiceTest.java
│   │           │               │       ├── rest/
│   │           │               │       │   ├── DefaultHttpJsonRequestTest.java
│   │           │               │       │   ├── DefaultHttpJsonResponseTest.java
│   │           │               │       │   ├── LinkHeaderGenerationTest.java
│   │           │               │       │   ├── RemoteServiceDescriptorTest.java
│   │           │               │       │   ├── RuntimeExceptionMapperTest.java
│   │           │               │       │   ├── ServiceDescriptorTest.java
│   │           │               │       │   ├── TestService.java
│   │           │               │       │   └── it/
│   │           │               │       │       └── ApiInfoProviderTest.java
│   │           │               │       ├── util/
│   │           │               │       │   ├── CompositeLineConsumerTest.java
│   │           │               │       │   ├── ErrorFilteredConsumerTest.java
│   │           │               │       │   ├── FileLineConsumerTest.java
│   │           │               │       │   ├── PagingUtilTest.java
│   │           │               │       │   ├── RateExceedDetectorTest.java
│   │           │               │       │   ├── StandardLinuxShellTest.java
│   │           │               │       │   ├── WatchdogTest.java
│   │           │               │       │   └── lineconsumer/
│   │           │               │       │       ├── ConcurrentCompositeLineConsumerTest.java
│   │           │               │       │       └── ConcurrentFileLineConsumerTest.java
│   │           │               │       └── websocket/
│   │           │               │           └── impl/
│   │           │               │               ├── BasicWebSocketMessageTransmitterTest.java
│   │           │               │               ├── MessagesReSenderTest.java
│   │           │               │               └── WebSocketSessionRegistryTest.java
│   │           │               ├── commons/
│   │           │               │   ├── env/
│   │           │               │   │   └── EnvironmentContextTest.java
│   │           │               │   └── proxy/
│   │           │               │       └── ProxyAuthenticatorTest.java
│   │           │               ├── everrest/
│   │           │               │   ├── DownloadFileResponseFilterTest.java
│   │           │               │   └── ETagResponseFilterTest.java
│   │           │               └── security/
│   │           │                   └── PasswordEncryptorsTest.java
│   │           └── resources/
│   │               └── logback-test.xml
│   ├── che-core-api-dto/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── eclipse/
│   │       │               └── che/
│   │       │                   └── dto/
│   │       │                       ├── generator/
│   │       │                       │   ├── DtoGenerator.java
│   │       │                       │   ├── DtoImpl.java
│   │       │                       │   ├── DtoImplClientTemplate.java
│   │       │                       │   ├── DtoImplServerTemplate.java
│   │       │                       │   └── DtoTemplate.java
│   │       │                       ├── server/
│   │       │                       │   ├── DtoFactory.java
│   │       │                       │   ├── DtoFactoryVisitor.java
│   │       │                       │   ├── DtoProvider.java
│   │       │                       │   ├── JsonArrayImpl.java
│   │       │                       │   ├── JsonSerializable.java
│   │       │                       │   ├── JsonStringMapImpl.java
│   │       │                       │   ├── NullOrEmptyCollectionAdapter.java
│   │       │                       │   ├── NullOrEmptyMapAdapter.java
│   │       │                       │   └── SerializableInterfaceAdapterFactory.java
│   │       │                       └── shared/
│   │       │                           ├── CompactJsonDto.java
│   │       │                           ├── DTO.java
│   │       │                           ├── DTOImpl.java
│   │       │                           ├── DelegateRule.java
│   │       │                           ├── DelegateTo.java
│   │       │                           ├── JsonArray.java
│   │       │                           ├── JsonFieldName.java
│   │       │                           ├── JsonStringMap.java
│   │       │                           └── SerializationIndex.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── eclipse/
│   │                       └── che/
│   │                           └── dto/
│   │                               ├── ServerDtoTest.java
│   │                               └── definitions/
│   │                                   ├── ComplicatedDto.java
│   │                                   ├── DTOHierarchy.java
│   │                                   ├── DtoWithAny.java
│   │                                   ├── DtoWithDelegate.java
│   │                                   ├── DtoWithFieldNames.java
│   │                                   ├── DtoWithSerializable.java
│   │                                   ├── SimpleDto.java
│   │                                   ├── TestInterface.java
│   │                                   ├── Util.java
│   │                                   └── model/
│   │                                       ├── Model.java
│   │                                       ├── ModelComponent.java
│   │                                       ├── ModelComponentDto.java
│   │                                       └── ModelDto.java
│   ├── che-core-api-dto-maven-plugin/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── org/
│   │                   └── eclipse/
│   │                       └── che/
│   │                           └── dto/
│   │                               └── generator/
│   │                                   └── maven/
│   │                                       └── plugin/
│   │                                           └── DtoGeneratorMojo.java
│   ├── che-core-api-model/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── org/
│   │                   └── eclipse/
│   │                       └── che/
│   │                           └── api/
│   │                               └── core/
│   │                                   └── model/
│   │                                       ├── factory/
│   │                                       │   ├── Action.java
│   │                                       │   ├── Author.java
│   │                                       │   ├── Factory.java
│   │                                       │   ├── Ide.java
│   │                                       │   ├── OnAppClosed.java
│   │                                       │   ├── OnAppLoaded.java
│   │                                       │   ├── OnProjectsLoaded.java
│   │                                       │   ├── Policies.java
│   │                                       │   └── ScmInfo.java
│   │                                       ├── project/
│   │                                       │   ├── ProjectProblem.java
│   │                                       │   └── type/
│   │                                       │       ├── Attribute.java
│   │                                       │       ├── ProjectType.java
│   │                                       │       └── Value.java
│   │                                       ├── user/
│   │                                       │   ├── Profile.java
│   │                                       │   └── User.java
│   │                                       └── workspace/
│   │                                           ├── Runtime.java
│   │                                           ├── Warning.java
│   │                                           ├── Workspace.java
│   │                                           ├── WorkspaceConfig.java
│   │                                           ├── WorkspaceStatus.java
│   │                                           ├── config/
│   │                                           │   ├── Command.java
│   │                                           │   ├── Environment.java
│   │                                           │   ├── MachineConfig.java
│   │                                           │   ├── ProjectConfig.java
│   │                                           │   ├── Recipe.java
│   │                                           │   ├── ServerConfig.java
│   │                                           │   ├── SourceStorage.java
│   │                                           │   └── Volume.java
│   │                                           ├── devfile/
│   │                                           │   ├── Action.java
│   │                                           │   ├── Command.java
│   │                                           │   ├── Component.java
│   │                                           │   ├── Devfile.java
│   │                                           │   ├── Endpoint.java
│   │                                           │   ├── Entrypoint.java
│   │                                           │   ├── Env.java
│   │                                           │   ├── Metadata.java
│   │                                           │   ├── PreviewUrl.java
│   │                                           │   ├── Project.java
│   │                                           │   ├── Source.java
│   │                                           │   ├── UserDevfile.java
│   │                                           │   └── Volume.java
│   │                                           └── runtime/
│   │                                               ├── BootstrapperStatus.java
│   │                                               ├── Machine.java
│   │                                               ├── MachineStatus.java
│   │                                               ├── RuntimeIdentity.java
│   │                                               ├── Server.java
│   │                                               └── ServerStatus.java
│   ├── che-core-logback/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── org/
│   │                   └── eclipse/
│   │                       └── che/
│   │                           └── commons/
│   │                               └── logback/
│   │                                   ├── EnvironmentVariablesLogLevelPropagator.java
│   │                                   └── filter/
│   │                                       ├── IdentityIdLoggerFilter.java
│   │                                       └── RequestIdLoggerFilter.java
│   ├── che-core-metrics-core/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── eclipse/
│   │       │               └── che/
│   │       │                   └── core/
│   │       │                       └── metrics/
│   │       │                           ├── ApiResponseCounter.java
│   │       │                           ├── ApiResponseMetricFilter.java
│   │       │                           ├── FileStoresMeterBinder.java
│   │       │                           ├── MetricsBinder.java
│   │       │                           ├── MetricsModule.java
│   │       │                           ├── MetricsServer.java
│   │       │                           ├── MetricsServletModule.java
│   │       │                           ├── PrometheusMeterRegistryProvider.java
│   │       │                           └── TomcatMetricsProvider.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── eclipse/
│   │           │           └── che/
│   │           │               └── core/
│   │           │                   └── metrics/
│   │           │                       ├── ApiResponseCounterTest.java
│   │           │                       ├── ApiResponseMetricFilterTest.java
│   │           │                       └── FileStoresMeterTest.java
│   │           └── resources/
│   │               └── logback-test.xml
│   ├── che-core-tracing-core/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── org/
│   │                   └── eclipse/
│   │                       └── che/
│   │                           └── core/
│   │                               └── tracing/
│   │                                   ├── NopTracingModule.java
│   │                                   ├── TracerProvider.java
│   │                                   ├── TracingInterceptor.java
│   │                                   └── TracingModule.java
│   ├── che-core-tracing-metrics/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── org/
│   │                   └── eclipse/
│   │                       └── che/
│   │                           └── core/
│   │                               └── tracing/
│   │                                   └── metrics/
│   │                                       ├── MeteredTracerProvider.java
│   │                                       ├── MicrometerMetricsReporterProvider.java
│   │                                       └── TracingMetricsModule.java
│   ├── che-core-tracing-web/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               ├── io/
│   │               │   └── opentracing/
│   │               │       └── contrib/
│   │               │           └── web/
│   │               │               └── servlet/
│   │               │                   └── filter/
│   │               │                       ├── HttpServletRequestExtractAdapter.java
│   │               │                       ├── ServletFilterSpanDecorator.java
│   │               │                       ├── TracingFilter.java
│   │               │                       └── decorator/
│   │               │                           └── ServletFilterHeaderSpanDecorator.java
│   │               └── org/
│   │                   └── eclipse/
│   │                       └── che/
│   │                           └── core/
│   │                               └── tracing/
│   │                                   └── web/
│   │                                       ├── TracingFilterProvider.java
│   │                                       └── TracingWebModule.java
│   ├── che-core-typescript-dto-maven-plugin/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── it/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── eclipse/
│   │       │   │           └── che/
│   │       │   │               └── plugin/
│   │       │   │                   └── typescript/
│   │       │   │                       └── dto/
│   │       │   │                           └── TypeScriptDTOGeneratorMojoTST.java
│   │       │   └── resources/
│   │       │       ├── dto.spec.ts
│   │       │       └── package.json
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── eclipse/
│   │       │   │           └── che/
│   │       │   │               └── plugin/
│   │       │   │                   └── typescript/
│   │       │   │                       └── dto/
│   │       │   │                           ├── DTOHelper.java
│   │       │   │                           ├── TypeScriptDTOGeneratorMojo.java
│   │       │   │                           ├── TypeScriptDtoDTSGenerator.java
│   │       │   │                           ├── TypeScriptDtoGenerator.java
│   │       │   │                           └── model/
│   │       │   │                               ├── DtoModel.java
│   │       │   │                               ├── DtoNamespace.java
│   │       │   │                               ├── FieldAttributeModel.java
│   │       │   │                               ├── MethodModel.java
│   │       │   │                               └── ParameterMethodModel.java
│   │       │   └── resources/
│   │       │       └── org/
│   │       │           └── eclipse/
│   │       │               └── che/
│   │       │                   └── plugin/
│   │       │                       └── typescript/
│   │       │                           └── dto/
│   │       │                               ├── typescript.d.ts.template
│   │       │                               └── typescript.template
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── eclipse/
│   │           │           └── che/
│   │           │               └── plugin/
│   │           │                   └── typescript/
│   │           │                       └── dto/
│   │           │                           ├── MyCustomDTO.java
│   │           │                           ├── MyDtoWithSerializableDTO.java
│   │           │                           ├── MyOtherDTO.java
│   │           │                           ├── MySimpleDTO.java
│   │           │                           ├── MySuperClassDTO.java
│   │           │                           ├── MySuperSuperClass.java
│   │           │                           ├── Status.java
│   │           │                           ├── TypeScriptDTOGeneratorMojoTest.java
│   │           │                           ├── internal/
│   │           │                           │   └── InternalDto.java
│   │           │                           └── stub/
│   │           │                               └── TypeScriptDTOGeneratorMojoProjectStub.java
│   │           └── projects/
│   │               ├── project/
│   │               │   └── pom.xml
│   │               └── project-d-ts/
│   │                   └── pom.xml
│   ├── commons/
│   │   ├── che-core-commons-annotations/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── eclipse/
│   │   │                       └── che/
│   │   │                           └── commons/
│   │   │                               └── annotation/
│   │   │                                   ├── Nullable.java
│   │   │                                   └── Traced.java
│   │   ├── che-core-commons-inject/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── eclipse/
│   │   │       │   │           └── che/
│   │   │       │   │               └── inject/
│   │   │       │   │                   ├── CheBootstrap.java
│   │   │       │   │                   ├── ConfigurationException.java
│   │   │       │   │                   ├── ConfigurationProperties.java
│   │   │       │   │                   ├── DynaModule.java
│   │   │       │   │                   ├── FileConverter.java
│   │   │       │   │                   ├── Matchers.java
│   │   │       │   │                   ├── ModuleFinder.java
│   │   │       │   │                   ├── ModuleScanner.java
│   │   │       │   │                   ├── PairArrayConverter.java
│   │   │       │   │                   ├── PairConverter.java
│   │   │       │   │                   ├── PathConverter.java
│   │   │       │   │                   ├── StringArrayConverter.java
│   │   │       │   │                   ├── URIConverter.java
│   │   │       │   │                   ├── URLConverter.java
│   │   │       │   │                   └── lifecycle/
│   │   │       │   │                       ├── DestroyErrorHandler.java
│   │   │       │   │                       ├── DestroyModule.java
│   │   │       │   │                       ├── Destroyer.java
│   │   │       │   │                       ├── InitModule.java
│   │   │       │   │                       └── LifecycleModule.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── jakarta.servlet.ServletContainerInitializer
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── eclipse/
│   │   │           │           └── che/
│   │   │           │               └── inject/
│   │   │           │                   ├── CheBootstrapTest.java
│   │   │           │                   ├── LifecycleTest.java
│   │   │           │                   ├── MultiBindingTest.java
│   │   │           │                   └── PathConverterTest.java
│   │   │           └── resources/
│   │   │               └── logback-test.xml
│   │   ├── che-core-commons-j2ee/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       ├── com/
│   │   │       │       │   └── xemantic/
│   │   │       │       │       └── tadedon/
│   │   │       │       │           └── servlet/
│   │   │       │       │               ├── CacheDisablingFilter.java
│   │   │       │       │               ├── CacheForcingFilter.java
│   │   │       │       │               └── SimpleFilter.java
│   │   │       │       └── org/
│   │   │       │           └── eclipse/
│   │   │       │               └── che/
│   │   │       │                   └── filter/
│   │   │       │                       ├── CheCacheDisablingFilter.java
│   │   │       │                       └── CheCacheForcingFilter.java
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── eclipse/
│   │   │                       └── che/
│   │   │                           └── filter/
│   │   │                               ├── CheCacheDisablingFilterTest.java
│   │   │                               └── CheCacheForcingFilterTest.java
│   │   ├── che-core-commons-json/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       └── org/
│   │   │       │           └── eclipse/
│   │   │       │               └── che/
│   │   │       │                   └── commons/
│   │   │       │                       └── json/
│   │   │       │                           ├── JsonHelper.java
│   │   │       │                           ├── JsonNameConvention.java
│   │   │       │                           ├── JsonNameConventions.java
│   │   │       │                           ├── JsonParseException.java
│   │   │       │                           ├── NameConventionJsonParser.java
│   │   │       │                           └── NameConventionJsonWriter.java
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── eclipse/
│   │   │                       └── che/
│   │   │                           └── commons/
│   │   │                               └── json/
│   │   │                                   └── JsonTest.java
│   │   ├── che-core-commons-lang/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       └── org/
│   │   │       │           └── eclipse/
│   │   │       │               └── che/
│   │   │       │                   └── commons/
│   │   │       │                       └── lang/
│   │   │       │                           ├── Deserializer.java
│   │   │       │                           ├── FlushingStreamWriter.java
│   │   │       │                           ├── IoUtil.java
│   │   │       │                           ├── NameGenerator.java
│   │   │       │                           ├── Pair.java
│   │   │       │                           ├── PathUtil.java
│   │   │       │                           ├── Size.java
│   │   │       │                           ├── StringUtils.java
│   │   │       │                           ├── TopologicalSort.java
│   │   │       │                           ├── URLEncodedUtils.java
│   │   │       │                           ├── UrlUtils.java
│   │   │       │                           ├── ZipUtils.java
│   │   │       │                           ├── concurrent/
│   │   │       │                           │   ├── CopyThreadLocalCallable.java
│   │   │       │                           │   ├── CopyThreadLocalRunnable.java
│   │   │       │                           │   ├── LoggingUncaughtExceptionHandler.java
│   │   │       │                           │   ├── PropagatedThreadLocalsProvider.java
│   │   │       │                           │   ├── StripedLocks.java
│   │   │       │                           │   ├── ThreadLocalPropagateContext.java
│   │   │       │                           │   └── Unlocker.java
│   │   │       │                           ├── execution/
│   │   │       │                           │   ├── CommandLine.java
│   │   │       │                           │   ├── ExecutionException.java
│   │   │       │                           │   ├── Executor.java
│   │   │       │                           │   ├── ExecutorServiceBuilder.java
│   │   │       │                           │   ├── JavaParameters.java
│   │   │       │                           │   ├── OutputReader.java
│   │   │       │                           │   ├── ParametersList.java
│   │   │       │                           │   ├── ProcessEvent.java
│   │   │       │                           │   ├── ProcessExecutor.java
│   │   │       │                           │   ├── ProcessHandler.java
│   │   │       │                           │   ├── ProcessListener.java
│   │   │       │                           │   ├── ProcessOutputType.java
│   │   │       │                           │   └── WaitForProcessEnd.java
│   │   │       │                           ├── os/
│   │   │       │                           │   └── WindowsPathEscaper.java
│   │   │       │                           ├── reflect/
│   │   │       │                           │   └── ParameterizedTypeImpl.java
│   │   │       │                           └── ws/
│   │   │       │                               └── rs/
│   │   │       │                                   └── ExtMediaType.java
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── eclipse/
│   │   │           │           └── che/
│   │   │           │               └── commons/
│   │   │           │                   └── lang/
│   │   │           │                       ├── IoUtilTest.java
│   │   │           │                       ├── PathUtilTest.java
│   │   │           │                       ├── SizeTest.java
│   │   │           │                       ├── TestURLEncodedUtils.java
│   │   │           │                       ├── TopologicalSortTest.java
│   │   │           │                       ├── UrlUtilsTest.java
│   │   │           │                       ├── ZipUtilsTest.java
│   │   │           │                       ├── ZipUtilsWriteTest.java
│   │   │           │                       ├── concurrent/
│   │   │           │                       │   └── ThreadLocalPropagateContextTest.java
│   │   │           │                       ├── execution/
│   │   │           │                       │   └── ExecutorServiceBuilderTest.java
│   │   │           │                       └── os/
│   │   │           │                           └── WindowsPathEscaperTest.java
│   │   │           └── resources/
│   │   │               ├── findbugs-exclude.xml
│   │   │               └── logback-test.xml
│   │   ├── che-core-commons-observability/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       ├── io/
│   │   │       │       │   └── micrometer/
│   │   │       │       │       └── core/
│   │   │       │       │           └── instrument/
│   │   │       │       │               └── internal/
│   │   │       │       │                   └── TimedCronExecutorService.java
│   │   │       │       └── org/
│   │   │       │           └── eclipse/
│   │   │       │               └── che/
│   │   │       │                   └── commons/
│   │   │       │                       └── observability/
│   │   │       │                           ├── CountedRejectedExecutionHandler.java
│   │   │       │                           ├── CountedThreadFactory.java
│   │   │       │                           ├── ExecutorServiceWrapper.java
│   │   │       │                           ├── MeteredAndTracedExecutorServiceWrapper.java
│   │   │       │                           ├── MeteredExecutorServiceWrapper.java
│   │   │       │                           ├── NoopExecutorServiceWrapper.java
│   │   │       │                           ├── ObservableThreadPullLauncher.java
│   │   │       │                           ├── TracedCronExecutorService.java
│   │   │       │                           ├── TracedExecutorServiceWrapper.java
│   │   │       │                           └── deploy/
│   │   │       │                               └── ExecutorWrapperModule.java
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   ├── io/
│   │   │           │   │   └── micrometer/
│   │   │           │   │       └── core/
│   │   │           │   │           └── instrument/
│   │   │           │   │               └── internal/
│   │   │           │   │                   └── TimedCronExecutorServiceTest.java
│   │   │           │   └── org/
│   │   │           │       └── eclipse/
│   │   │           │           └── che/
│   │   │           │               └── commons/
│   │   │           │                   └── observability/
│   │   │           │                       ├── CountedRejectedExecutionHandlerTest.java
│   │   │           │                       ├── CountedThreadFactoryTest.java
│   │   │           │                       ├── MeteredExecutorServiceWrapperTest.java
│   │   │           │                       └── NoopExecutorServiceWrapperTest.java
│   │   │           └── resources/
│   │   │               └── logback-test.xml
│   │   ├── che-core-commons-schedule/
│   │   │   ├── README.md
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       └── org/
│   │   │       │           └── eclipse/
│   │   │       │               └── che/
│   │   │       │                   ├── commons/
│   │   │       │                   │   └── schedule/
│   │   │       │                   │       ├── Launcher.java
│   │   │       │                   │       ├── ScheduleCron.java
│   │   │       │                   │       ├── ScheduleDelay.java
│   │   │       │                   │       ├── ScheduleRate.java
│   │   │       │                   │       └── executor/
│   │   │       │                   │           ├── CronExecutorService.java
│   │   │       │                   │           ├── CronExpression.java
│   │   │       │                   │           ├── CronThreadPoolExecutor.java
│   │   │       │                   │           ├── LoggedRunnable.java
│   │   │       │                   │           ├── ScheduleModule.java
│   │   │       │                   │           └── ThreadPullLauncher.java
│   │   │       │                   └── inject/
│   │   │       │                       └── lifecycle/
│   │   │       │                           ├── InternalScheduleModule.java
│   │   │       │                           └── ScheduleInjectionListener.java
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── eclipse/
│   │   │           │           └── che/
│   │   │           │               └── commons/
│   │   │           │                   └── schedule/
│   │   │           │                       └── executor/
│   │   │           │                           └── CronExpressionTest.java
│   │   │           └── resources/
│   │   │               ├── findbugs-exclude.xml
│   │   │               └── logback-test.xml
│   │   ├── che-core-commons-test/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── eclipse/
│   │   │       │   │           └── che/
│   │   │       │   │               └── commons/
│   │   │       │   │                   └── test/
│   │   │       │   │                       ├── AssertRetry.java
│   │   │       │   │                       ├── SystemPropertiesHelper.java
│   │   │       │   │                       ├── mockito/
│   │   │       │   │                       │   └── answer/
│   │   │       │   │                       │       ├── SelfReturningAnswer.java
│   │   │       │   │                       │       └── WaitingAnswer.java
│   │   │       │   │                       ├── servlet/
│   │   │       │   │                       │   └── MockServletInputStream.java
│   │   │       │   │                       └── tck/
│   │   │       │   │                           ├── JpaCleaner.java
│   │   │       │   │                           ├── TckListener.java
│   │   │       │   │                           ├── TckModule.java
│   │   │       │   │                           ├── TckResourcesCleaner.java
│   │   │       │   │                           ├── TestListenerAdapter.java
│   │   │       │   │                           └── repository/
│   │   │       │   │                               ├── JpaTckRepository.java
│   │   │       │   │                               ├── TckRepository.java
│   │   │       │   │                               └── TckRepositoryException.java
│   │   │       │   └── resources/
│   │   │       │       └── org/
│   │   │       │           └── eclipse/
│   │   │       │               └── che/
│   │   │       │                   └── commons/
│   │   │       │                       └── test/
│   │   │       │                           └── db/
│   │   │       │                               └── persistence.xml.template
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── eclipse/
│   │   │           │           └── che/
│   │   │           │               └── commons/
│   │   │           │                   └── test/
│   │   │           │                       ├── AssertRetryTest.java
│   │   │           │                       └── tck/
│   │   │           │                           ├── DBServerListener.java
│   │   │           │                           ├── TckComponentsTest.java
│   │   │           │                           ├── TestModule1.java
│   │   │           │                           └── TestModule2.java
│   │   │           └── resources/
│   │   │               ├── META-INF/
│   │   │               │   └── services/
│   │   │               │       ├── org.eclipse.che.commons.test.tck.TckModule
│   │   │               │       └── org.testng.ITestNGListener
│   │   │               └── org/
│   │   │                   └── eclipse/
│   │   │                       └── che/
│   │   │                           └── commons/
│   │   │                               └── test/
│   │   │                                   └── db/
│   │   │                                       └── test-persistence-1.xml
│   │   ├── che-core-commons-tracing/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── eclipse/
│   │   │                       └── che/
│   │   │                           └── commons/
│   │   │                               └── tracing/
│   │   │                                   ├── AnnotationAwareBooleanTag.java
│   │   │                                   ├── AnnotationAwareIntTag.java
│   │   │                                   ├── AnnotationAwareStringTag.java
│   │   │                                   └── TracingTags.java
│   │   └── pom.xml
│   └── pom.xml
├── deploy/
│   └── cert-manager/
│       ├── ca-cert-generator-role-binding.yml
│       ├── ca-cert-generator-role.yml
│       ├── che-certificate.yml
│       └── che-cluster-issuer.yml
├── devfile.yaml
├── docs/
│   ├── README.md
│   └── grafana/
│       ├── dashboard.json
│       └── openshift-console-dashboard.json
├── infrastructures/
│   ├── infrastructure-distributed/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── eclipse/
│   │       │               └── che/
│   │       │                   └── multiuser/
│   │       │                       └── api/
│   │       │                           └── distributed/
│   │       │                               ├── WorkspaceStopPropagator.java
│   │       │                               ├── cache/
│   │       │                               │   ├── JGroupsWorkspaceStatusCache.java
│   │       │                               │   ├── ReplicatedMapNotificationAdapter.java
│   │       │                               │   └── StatusChangeListener.java
│   │       │                               ├── lock/
│   │       │                               │   └── JGroupsWorkspaceLockService.java
│   │       │                               └── subscription/
│   │       │                                   └── DistributedRemoteSubscriptionStorage.java
│   │       └── test/
│   │           └── resources/
│   │               └── logback-test.xml
│   ├── infrastructure-factory/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── eclipse/
│   │       │               └── che/
│   │       │                   └── api/
│   │       │                       └── factory/
│   │       │                           └── server/
│   │       │                               └── scm/
│   │       │                                   ├── KubernetesScmModule.java
│   │       │                                   └── kubernetes/
│   │       │                                       ├── KubernetesAuthorisationRequestManager.java
│   │       │                                       ├── KubernetesGitCredentialManager.java
│   │       │                                       └── KubernetesPersonalAccessTokenManager.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── eclipse/
│   │           │           └── che/
│   │           │               └── api/
│   │           │                   └── factory/
│   │           │                       └── server/
│   │           │                           └── scm/
│   │           │                               └── kubernetes/
│   │           │                                   ├── KubernetesAuthorisationRequestManagerTest.java
│   │           │                                   ├── KubernetesGitCredentialManagerTest.java
│   │           │                                   └── KubernetesPersonalAccessTokenManagerTest.java
│   │           └── resources/
│   │               └── logback-test.xml
│   ├── infrastructure-metrics/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── eclipse/
│   │       │               └── che/
│   │       │                   └── workspace/
│   │       │                       └── infrastructure/
│   │       │                           └── metrics/
│   │       │                               ├── CurrentLogwatchersMeterBinder.java
│   │       │                               └── InfrastructureMetricsModule.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── eclipse/
│   │                       └── che/
│   │                           └── workspace/
│   │                               └── infrastructure/
│   │                                   └── metrics/
│   │                                       └── CurrentLogwatchersMeterBinderTest.java
│   ├── infrastructure-permission/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── eclipse/
│   │       │               └── che/
│   │       │                   └── multiuser/
│   │       │                       └── permission/
│   │       │                           └── workspace/
│   │       │                               └── infra/
│   │       │                                   └── kubernetes/
│   │       │                                       └── BrokerServicePermissionFilter.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── eclipse/
│   │           │           └── che/
│   │           │               └── multiuser/
│   │           │                   └── permission/
│   │           │                       └── workspace/
│   │           │                           └── infra/
│   │           │                               └── kubernetes/
│   │           │                                   └── BrokerServicePermissionFilterTest.java
│   │           └── resources/
│   │               └── logback-test.xml
│   ├── kubernetes/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── eclipse/
│   │       │               └── che/
│   │       │                   └── workspace/
│   │       │                       └── infrastructure/
│   │       │                           └── kubernetes/
│   │       │                               ├── Annotations.java
│   │       │                               ├── CheServerKubernetesClientFactory.java
│   │       │                               ├── Constants.java
│   │       │                               ├── K8sInfraNamespaceWsAttributeValidator.java
│   │       │                               ├── KubernetesClientConfigFactory.java
│   │       │                               ├── KubernetesClientFactory.java
│   │       │                               ├── KubernetesClientTermination.java
│   │       │                               ├── KubernetesEnvironmentProvisioner.java
│   │       │                               ├── KubernetesInfraModule.java
│   │       │                               ├── KubernetesInfrastructure.java
│   │       │                               ├── KubernetesInfrastructureException.java
│   │       │                               ├── MachineLogsPublisher.java
│   │       │                               ├── Names.java
│   │       │                               ├── RuntimeLogsPublisher.java
│   │       │                               ├── StartSynchronizer.java
│   │       │                               ├── StartSynchronizerFactory.java
│   │       │                               ├── Warnings.java
│   │       │                               ├── api/
│   │       │                               │   ├── server/
│   │       │                               │   │   ├── KubernetesNamespaceService.java
│   │       │                               │   │   └── impls/
│   │       │                               │   │       └── KubernetesNamespaceMetaImpl.java
│   │       │                               │   └── shared/
│   │       │                               │       ├── KubernetesNamespaceMeta.java
│   │       │                               │       └── dto/
│   │       │                               │           ├── DockerAuthConfig.java
│   │       │                               │           ├── DockerAuthConfigs.java
│   │       │                               │           └── KubernetesNamespaceMetaDto.java
│   │       │                               ├── authorization/
│   │       │                               │   ├── AuthorizationChecker.java
│   │       │                               │   ├── AuthorizationException.java
│   │       │                               │   ├── KubernetesOIDCAuthorizationCheckerImpl.java
│   │       │                               │   └── PermissionsCleaner.java
│   │       │                               ├── cache/
│   │       │                               │   ├── KubernetesMachineCache.java
│   │       │                               │   ├── KubernetesRuntimeStateCache.java
│   │       │                               │   └── jpa/
│   │       │                               │       ├── JpaKubernetesMachineCache.java
│   │       │                               │       ├── JpaKubernetesRuntimeCacheModule.java
│   │       │                               │       └── JpaKubernetesRuntimeStateCache.java
│   │       │                               ├── devfile/
│   │       │                               │   ├── ContainerSearch.java
│   │       │                               │   ├── DockerimageComponentToWorkspaceApplier.java
│   │       │                               │   ├── KubernetesComponentToWorkspaceApplier.java
│   │       │                               │   ├── KubernetesComponentValidator.java
│   │       │                               │   ├── KubernetesDevfileBindings.java
│   │       │                               │   ├── KubernetesEnvironmentProvisioner.java
│   │       │                               │   └── SelectorFilter.java
│   │       │                               ├── docker/
│   │       │                               │   └── auth/
│   │       │                               │       └── UserSpecificDockerRegistryCredentialsProvider.java
│   │       │                               ├── environment/
│   │       │                               │   ├── CheInstallationLocation.java
│   │       │                               │   ├── KubernetesEnvironment.java
│   │       │                               │   ├── KubernetesEnvironmentFactory.java
│   │       │                               │   ├── KubernetesEnvironmentPodsValidator.java
│   │       │                               │   ├── KubernetesEnvironmentValidator.java
│   │       │                               │   ├── KubernetesRecipeParser.java
│   │       │                               │   ├── PodMerger.java
│   │       │                               │   └── util/
│   │       │                               │       ├── EntryPoint.java
│   │       │                               │       └── EntryPointParser.java
│   │       │                               ├── event/
│   │       │                               │   ├── KubernetesRuntimeStoppedEvent.java
│   │       │                               │   └── KubernetesRuntimeStoppingEvent.java
│   │       │                               ├── model/
│   │       │                               │   ├── KubernetesMachineImpl.java
│   │       │                               │   ├── KubernetesRuntimeCommandImpl.java
│   │       │                               │   ├── KubernetesRuntimeState.java
│   │       │                               │   └── KubernetesServerImpl.java
│   │       │                               ├── multiuser/
│   │       │                               │   └── oauth/
│   │       │                               │       └── KubernetesOidcProviderConfigFactory.java
│   │       │                               ├── namespace/
│   │       │                               │   ├── AbstractWorkspaceServiceAccount.java
│   │       │                               │   ├── K8sVersion.java
│   │       │                               │   ├── KubernetesConfigsMaps.java
│   │       │                               │   ├── KubernetesDeployments.java
│   │       │                               │   ├── KubernetesIngresses.java
│   │       │                               │   ├── KubernetesNamespace.java
│   │       │                               │   ├── KubernetesNamespaceFactory.java
│   │       │                               │   ├── KubernetesObjectUtil.java
│   │       │                               │   ├── KubernetesPersistentVolumeClaims.java
│   │       │                               │   ├── KubernetesSecrets.java
│   │       │                               │   ├── KubernetesServices.java
│   │       │                               │   ├── KubernetesWorkspaceServiceAccount.java
│   │       │                               │   ├── NamespaceNameValidator.java
│   │       │                               │   ├── RemoveNamespaceOnWorkspaceRemove.java
│   │       │                               │   ├── configurator/
│   │       │                               │   │   ├── CredentialsSecretConfigurator.java
│   │       │                               │   │   ├── GitconfigConfigurator.java
│   │       │                               │   │   ├── NamespaceConfigurator.java
│   │       │                               │   │   ├── OAuthTokenSecretsConfigurator.java
│   │       │                               │   │   ├── PreferencesConfigMapConfigurator.java
│   │       │                               │   │   ├── SshConfigConfigurator.java
│   │       │                               │   │   ├── SshKeysConfigurator.java
│   │       │                               │   │   ├── UserPermissionConfigurator.java
│   │       │                               │   │   ├── UserPreferencesConfigurator.java
│   │       │                               │   │   ├── UserProfileConfigurator.java
│   │       │                               │   │   └── WorkspaceServiceAccountConfigurator.java
│   │       │                               │   ├── event/
│   │       │                               │   │   ├── PodActionHandler.java
│   │       │                               │   │   ├── PodEvent.java
│   │       │                               │   │   └── PodEventHandler.java
│   │       │                               │   └── log/
│   │       │                               │       ├── ContainerLogWatch.java
│   │       │                               │       ├── LogWatchTimeouts.java
│   │       │                               │       ├── LogWatcher.java
│   │       │                               │       ├── PodLogHandler.java
│   │       │                               │       ├── PodLogToEventPublisher.java
│   │       │                               │       └── event/
│   │       │                               │           ├── WatchLogStartedEvent.java
│   │       │                               │           └── WatchLogStoppedEvent.java
│   │       │                               ├── provision/
│   │       │                               │   ├── CertificateProvisioner.java
│   │       │                               │   ├── ConfigurationProvisioner.java
│   │       │                               │   ├── GatewayRouterProvisioner.java
│   │       │                               │   ├── GatewayTlsProvisioner.java
│   │       │                               │   ├── GitConfigProvisioner.java
│   │       │                               │   ├── ImagePullSecretProvisioner.java
│   │       │                               │   ├── IngressTlsProvisioner.java
│   │       │                               │   ├── KubernetesCheApiExternalEnvVarProvider.java
│   │       │                               │   ├── KubernetesCheApiInternalEnvVarProvider.java
│   │       │                               │   ├── KubernetesPreviewUrlCommandProvisioner.java
│   │       │                               │   ├── NamespaceProvisioner.java
│   │       │                               │   ├── PodTerminationGracePeriodProvisioner.java
│   │       │                               │   ├── PreviewUrlCommandProvisioner.java
│   │       │                               │   ├── SecurityContextProvisioner.java
│   │       │                               │   ├── ServiceAccountProvisioner.java
│   │       │                               │   ├── SshKeysProvisioner.java
│   │       │                               │   ├── TlsProvisioner.java
│   │       │                               │   ├── TlsProvisionerProvider.java
│   │       │                               │   ├── UniqueNamesProvisioner.java
│   │       │                               │   ├── VcsSslCertificateProvisioner.java
│   │       │                               │   ├── env/
│   │       │                               │   │   └── EnvVarsConverter.java
│   │       │                               │   ├── limits/
│   │       │                               │   │   └── ram/
│   │       │                               │   │       └── ContainerResourceProvisioner.java
│   │       │                               │   ├── restartpolicy/
│   │       │                               │   │   └── RestartPolicyRewriter.java
│   │       │                               │   ├── secret/
│   │       │                               │   │   ├── EnvironmentVariableSecretApplier.java
│   │       │                               │   │   ├── FileSecretApplier.java
│   │       │                               │   │   ├── GitCredentialStorageFileSecretApplier.java
│   │       │                               │   │   ├── KubernetesSecretAnnotationNames.java
│   │       │                               │   │   ├── KubernetesSecretApplier.java
│   │       │                               │   │   └── SecretAsContainerResourceProvisioner.java
│   │       │                               │   └── server/
│   │       │                               │       └── ServersConverter.java
│   │       │                               ├── server/
│   │       │                               │   ├── AbstractExposureStrategyAwareProvider.java
│   │       │                               │   ├── IngressAnnotationsProvider.java
│   │       │                               │   ├── KubernetesServerExposer.java
│   │       │                               │   ├── PreviewUrlExposer.java
│   │       │                               │   ├── RuntimeServerBuilder.java
│   │       │                               │   ├── ServerServiceBuilder.java
│   │       │                               │   ├── WorkspaceExposureType.java
│   │       │                               │   ├── external/
│   │       │                               │   │   ├── CombinedSingleHostServerExposer.java
│   │       │                               │   │   ├── DefaultHostExternalServiceExposureStrategy.java
│   │       │                               │   │   ├── ExternalServerExposer.java
│   │       │                               │   │   ├── ExternalServerExposerProvider.java
│   │       │                               │   │   ├── ExternalServerIngressBuilder.java
│   │       │                               │   │   ├── ExternalServiceExposureStrategy.java
│   │       │                               │   │   ├── GatewayRouteConfigGenerator.java
│   │       │                               │   │   ├── GatewayRouteConfigGeneratorFactory.java
│   │       │                               │   │   ├── GatewayServerExposer.java
│   │       │                               │   │   ├── IngressPathTransformInverter.java
│   │       │                               │   │   ├── IngressServerExposer.java
│   │       │                               │   │   ├── KubernetesExternalServerExposerProvider.java
│   │       │                               │   │   ├── MultiHostExternalServiceExposureStrategy.java
│   │       │                               │   │   ├── MultihostIngressServerExposer.java
│   │       │                               │   │   ├── ServiceExposureStrategyProvider.java
│   │       │                               │   │   ├── SingleHostExternalServiceExposureStrategy.java
│   │       │                               │   │   └── TraefikGatewayRouteConfigGenerator.java
│   │       │                               │   ├── resolver/
│   │       │                               │   │   ├── AbstractServerResolver.java
│   │       │                               │   │   ├── AbstractServerResolverFactory.java
│   │       │                               │   │   ├── ConfigMapServerResolver.java
│   │       │                               │   │   ├── IngressServerResolver.java
│   │       │                               │   │   ├── KubernetesServerResolverFactory.java
│   │       │                               │   │   └── ServerResolver.java
│   │       │                               │   └── secure/
│   │       │                               │       ├── DefaultSecureServerExposer.java
│   │       │                               │       ├── ProxyProvisioner.java
│   │       │                               │       ├── ProxyProvisionerFactory.java
│   │       │                               │       ├── SecureServerExposer.java
│   │       │                               │       ├── SecureServerExposerFactory.java
│   │       │                               │       ├── SecureServerExposerFactoryProvider.java
│   │       │                               │       └── jwtproxy/
│   │       │                               │           ├── AbstractJwtProxyProvisioner.java
│   │       │                               │           ├── CookiePathStrategy.java
│   │       │                               │           ├── JwtProxyConfigBuilder.java
│   │       │                               │           ├── JwtProxyProvisioner.java
│   │       │                               │           ├── JwtProxySecureServerExposer.java
│   │       │                               │           ├── MultiHostCookiePathStrategy.java
│   │       │                               │           ├── PassThroughProxyProvisioner.java
│   │       │                               │           ├── PassThroughProxySecureServerExposer.java
│   │       │                               │           ├── factory/
│   │       │                               │           │   ├── JwtProxyConfigBuilderFactory.java
│   │       │                               │           │   ├── JwtProxyProvisionerFactory.java
│   │       │                               │           │   ├── JwtProxySecureServerExposerFactory.java
│   │       │                               │           │   ├── PassThroughProxyProvisionerFactory.java
│   │       │                               │           │   └── PassThroughProxySecureServerExposerFactory.java
│   │       │                               │           └── model/
│   │       │                               │               ├── Config.java
│   │       │                               │               ├── JWTProxy.java
│   │       │                               │               ├── RegistrableComponentConfig.java
│   │       │                               │               ├── SignerProxyConfig.java
│   │       │                               │               ├── VerifierConfig.java
│   │       │                               │               └── VerifierProxyConfig.java
│   │       │                               ├── util/
│   │       │                               │   ├── Containers.java
│   │       │                               │   ├── EnvVars.java
│   │       │                               │   ├── GatewayConfigmapLabels.java
│   │       │                               │   ├── Ingresses.java
│   │       │                               │   ├── KubernetesSharedPool.java
│   │       │                               │   ├── KubernetesSize.java
│   │       │                               │   ├── NonTlsDistributedClusterModeNotifier.java
│   │       │                               │   ├── PodEvents.java
│   │       │                               │   ├── RuntimeEventsPublisher.java
│   │       │                               │   ├── Services.java
│   │       │                               │   ├── TracingSpanConstants.java
│   │       │                               │   ├── UnrecoverablePodEventListener.java
│   │       │                               │   └── UnrecoverablePodEventListenerFactory.java
│   │       │                               └── wsplugins/
│   │       │                                   ├── BrokersResult.java
│   │       │                                   ├── ChePluginsVolumeApplier.java
│   │       │                                   ├── K8sContainerResolver.java
│   │       │                                   ├── K8sContainerResolverBuilder.java
│   │       │                                   ├── KubernetesArtifactsBrokerApplier.java
│   │       │                                   ├── KubernetesPluginsToolingApplier.java
│   │       │                                   ├── KubernetesPluginsToolingValidator.java
│   │       │                                   ├── MachineResolver.java
│   │       │                                   ├── MachineResolverBuilder.java
│   │       │                                   ├── PluginBrokerManager.java
│   │       │                                   ├── SidecarServicesProvisioner.java
│   │       │                                   ├── brokerphases/
│   │       │                                   │   ├── BrokerEnvironmentFactory.java
│   │       │                                   │   ├── BrokerPhase.java
│   │       │                                   │   ├── DeployBroker.java
│   │       │                                   │   ├── KubernetesBrokerEnvironmentFactory.java
│   │       │                                   │   ├── ListenBrokerEvents.java
│   │       │                                   │   ├── PrepareStorage.java
│   │       │                                   │   └── WaitBrokerResult.java
│   │       │                                   └── events/
│   │       │                                       ├── BrokerEvent.java
│   │       │                                       ├── BrokerService.java
│   │       │                                       └── BrokerStatusListener.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── eclipse/
│   │           │           └── che/
│   │           │               └── workspace/
│   │           │                   └── infrastructure/
│   │           │                       └── kubernetes/
│   │           │                           ├── AnnotationsTest.java
│   │           │                           ├── K8sInfraNamespaceWsAttributeValidatorTest.java
│   │           │                           ├── KubernetesArtifactsBrokerApplierTest.java
│   │           │                           ├── KubernetesEnvironmentProvisionerTest.java
│   │           │                           ├── StartSynchronizerTest.java
│   │           │                           ├── api/
│   │           │                           │   └── server/
│   │           │                           │       └── KubernetesNamespaceServiceTest.java
│   │           │                           ├── authorization/
│   │           │                           │   └── KubernetesAuthorizationCheckerTest.java
│   │           │                           ├── devfile/
│   │           │                           │   ├── ContainerSearchTest.java
│   │           │                           │   ├── DockerimageComponentToWorkspaceApplierTest.java
│   │           │                           │   ├── KubernetesComponentIntegrityValidatorTest.java
│   │           │                           │   ├── KubernetesComponentToWorkspaceApplierTest.java
│   │           │                           │   └── KubernetesEnvironmentProvisionerTest.java
│   │           │                           ├── docker/
│   │           │                           │   └── auth/
│   │           │                           │       └── UserSpecificDockerRegistryCredentialsProviderTest.java
│   │           │                           ├── environment/
│   │           │                           │   ├── CheInstallationLocationTest.java
│   │           │                           │   ├── KubernetesEnvironmentFactoryTest.java
│   │           │                           │   ├── KubernetesEnvironmentPodsValidatorTest.java
│   │           │                           │   ├── KubernetesEnvironmentValidatorTest.java
│   │           │                           │   ├── PodMergerTest.java
│   │           │                           │   └── util/
│   │           │                           │       └── EntryPointParserTest.java
│   │           │                           ├── multiuser/
│   │           │                           │   └── oauth/
│   │           │                           │       └── KubernetesOidcProviderConfigFactoryTest.java
│   │           │                           ├── namespace/
│   │           │                           │   ├── K8sVersionTest.java
│   │           │                           │   ├── KubernetesDeploymentsTest.java
│   │           │                           │   ├── KubernetesNamespaceFactoryTest.java
│   │           │                           │   ├── KubernetesNamespaceTest.java
│   │           │                           │   ├── KubernetesObjectUtilTest.java
│   │           │                           │   ├── KubernetesSecretsTest.java
│   │           │                           │   ├── KubernetesWorkspaceServiceAccountTest.java
│   │           │                           │   ├── NamespaceNameValidatorTest.java
│   │           │                           │   ├── RemoveNamespaceOnWorkspaceRemoveTest.java
│   │           │                           │   ├── configurator/
│   │           │                           │   │   ├── CredentialsSecretConfiguratorTest.java
│   │           │                           │   │   ├── GitconfigConfiguratorTest.java
│   │           │                           │   │   ├── PreferencesConfigMapConfiguratorTest.java
│   │           │                           │   │   ├── SshKeysConfiguratorTest.java
│   │           │                           │   │   ├── UserPermissionConfiguratorTest.java
│   │           │                           │   │   ├── UserPreferencesConfiguratorTest.java
│   │           │                           │   │   └── WorkspaceServiceAccountConfiguratorTest.java
│   │           │                           │   ├── log/
│   │           │                           │   │   ├── ContainerLogWatchTest.java
│   │           │                           │   │   ├── LogWatcherTest.java
│   │           │                           │   │   └── PodLogToEventPublisherTest.java
│   │           │                           │   └── pvc/
│   │           │                           │       └── TestObjects.java
│   │           │                           ├── provision/
│   │           │                           │   ├── CertificateProvisionerTest.java
│   │           │                           │   ├── GatewayRouterProvisionerTest.java
│   │           │                           │   ├── GatewayTlsProvisionerTest.java
│   │           │                           │   ├── GitConfigProvisionerTest.java
│   │           │                           │   ├── ImagePullSecretProvisionerTest.java
│   │           │                           │   ├── IngressTlsProvisionerTest.java
│   │           │                           │   ├── KubernetesPreviewUrlCommandProvisionerTest.java
│   │           │                           │   ├── SecurityContextProvisionerTest.java
│   │           │                           │   ├── SshKeySecretProvisionerTest.java
│   │           │                           │   ├── UniqueNamesProvisionerTest.java
│   │           │                           │   ├── VcsSslCertificateProvisionerTest.java
│   │           │                           │   ├── env/
│   │           │                           │   │   └── EnvVarsConverterTest.java
│   │           │                           │   ├── limits/
│   │           │                           │   │   └── ram/
│   │           │                           │   │       └── ContainerResourceProvisionerTest.java
│   │           │                           │   ├── restartpolicy/
│   │           │                           │   │   └── RestartPolicyRewriterTest.java
│   │           │                           │   └── secret/
│   │           │                           │       ├── EnvironmentVariableSecretApplierTest.java
│   │           │                           │       ├── FileSecretApplierTest.java
│   │           │                           │       ├── GitCredentialStorageFileSecretApplierTest.java
│   │           │                           │       └── SecretAsContainerResourceProvisionerTest.java
│   │           │                           ├── server/
│   │           │                           │   ├── IngressServerResolverTest.java
│   │           │                           │   ├── KubernetesServerExposerTest.java
│   │           │                           │   ├── PreviewUrlExposerTest.java
│   │           │                           │   ├── external/
│   │           │                           │   │   ├── CombinedSingleHostServerExposerTest.java
│   │           │                           │   │   ├── DefaultHostExternalServiceExposureStrategyTest.java
│   │           │                           │   │   ├── ExternalServerIngressBuilderTest.java
│   │           │                           │   │   ├── GatewayServerExposerTest.java
│   │           │                           │   │   ├── IngressPathTransformInverterTest.java
│   │           │                           │   │   ├── IngressServerExposerTest.java
│   │           │                           │   │   ├── MultiHostExternalServiceExposureStrategyTest.java
│   │           │                           │   │   └── TraefikGatewayRouteConfigGeneratorTest.java
│   │           │                           │   ├── resolver/
│   │           │                           │   │   ├── AbstractServerResolverTest.java
│   │           │                           │   │   └── ConfigMapServerResolverTest.java
│   │           │                           │   └── secure/
│   │           │                           │       ├── SecureServerExposerFactoryProviderTest.java
│   │           │                           │       └── jwtproxy/
│   │           │                           │           ├── JwtProxyConfigBuilderTest.java
│   │           │                           │           ├── JwtProxyProvisionerTest.java
│   │           │                           │           ├── JwtProxySecureServerExposerTest.java
│   │           │                           │           └── PassThroughProxyProvisionerTest.java
│   │           │                           ├── util/
│   │           │                           │   ├── ContainersTest.java
│   │           │                           │   ├── EnvVarsTest.java
│   │           │                           │   ├── GatewayConfigmapLabelsTest.java
│   │           │                           │   ├── IngressesTest.java
│   │           │                           │   ├── KubernetesSizeTest.java
│   │           │                           │   ├── PodEventsTest.java
│   │           │                           │   ├── ServicesTest.java
│   │           │                           │   └── UnrecoverablePodEventListenerTest.java
│   │           │                           └── wsplugins/
│   │           │                               ├── BrokersResultTest.java
│   │           │                               ├── K8sContainerResolverBuilderTest.java
│   │           │                               ├── K8sContainerResolverTest.java
│   │           │                               ├── KubernetesPluginsToolingApplierTest.java
│   │           │                               ├── MachineResolverTest.java
│   │           │                               ├── SidecarServicesProvisionerTest.java
│   │           │                               ├── brokerphases/
│   │           │                               │   ├── BrokerEnvironmentFactoryTest.java
│   │           │                               │   └── DeployBrokerTest.java
│   │           │                               └── events/
│   │           │                                   └── BrokerStatusListenerTest.java
│   │           └── resources/
│   │               ├── META-INF/
│   │               │   └── services/
│   │               │       └── org.eclipse.che.commons.test.tck.TckModule
│   │               ├── devfile/
│   │               │   ├── petclinic.yaml
│   │               │   └── petclinicPods.yaml
│   │               ├── jwtproxy-confg.yaml
│   │               └── logback-test.xml
│   ├── openshift/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── eclipse/
│   │       │               └── che/
│   │       │                   └── workspace/
│   │       │                       └── infrastructure/
│   │       │                           └── openshift/
│   │       │                               ├── CheServerOpenshiftClientFactory.java
│   │       │                               ├── Constants.java
│   │       │                               ├── OpenShiftClientFactory.java
│   │       │                               ├── OpenShiftEnvironmentProvisioner.java
│   │       │                               ├── OpenShiftInfraModule.java
│   │       │                               ├── OpenShiftInfrastructure.java
│   │       │                               ├── authorization/
│   │       │                               │   └── OpenShiftAuthorizationCheckerImpl.java
│   │       │                               ├── devfile/
│   │       │                               │   └── OpenshiftComponentToWorkspaceApplier.java
│   │       │                               ├── environment/
│   │       │                               │   ├── OpenShiftEnvironment.java
│   │       │                               │   ├── OpenShiftEnvironmentFactory.java
│   │       │                               │   └── OpenShiftEnvironmentValidator.java
│   │       │                               ├── multiuser/
│   │       │                               │   └── oauth/
│   │       │                               │       └── OpenshiftTokenInitializationFilter.java
│   │       │                               ├── project/
│   │       │                               │   ├── OpenShiftProject.java
│   │       │                               │   ├── OpenShiftProjectFactory.java
│   │       │                               │   ├── OpenShiftRoutes.java
│   │       │                               │   ├── OpenShiftWorkspaceServiceAccount.java
│   │       │                               │   └── configurator/
│   │       │                               │       └── OpenShiftWorkspaceServiceAccountConfigurator.java
│   │       │                               ├── provision/
│   │       │                               │   ├── OpenShiftPreviewUrlCommandProvisioner.java
│   │       │                               │   ├── OpenShiftUniqueNamesProvisioner.java
│   │       │                               │   └── RouteTlsProvisioner.java
│   │       │                               ├── server/
│   │       │                               │   ├── OpenShiftCookiePathStrategy.java
│   │       │                               │   ├── OpenShiftPreviewUrlExposer.java
│   │       │                               │   ├── OpenShiftServerExposureStrategy.java
│   │       │                               │   ├── OpenShiftServerResolverFactory.java
│   │       │                               │   ├── RouteServerExposer.java
│   │       │                               │   ├── RouteServerResolver.java
│   │       │                               │   └── external/
│   │       │                               │       └── OpenShiftExternalServerExposerProvider.java
│   │       │                               ├── util/
│   │       │                               │   └── Routes.java
│   │       │                               └── wsplugins/
│   │       │                                   └── brokerphases/
│   │       │                                       └── OpenshiftBrokerEnvironmentFactory.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── eclipse/
│   │           │           └── che/
│   │           │               └── workspace/
│   │           │                   └── infrastructure/
│   │           │                       └── openshift/
│   │           │                           ├── OpenShiftEnvironmentProvisionerTest.java
│   │           │                           ├── RouteServerResolverTest.java
│   │           │                           ├── authorization/
│   │           │                           │   └── OpenShiftAuthorizationCheckerTest.java
│   │           │                           ├── devfile/
│   │           │                           │   └── OpenshiftComponentToWorkspaceApplierTest.java
│   │           │                           ├── environment/
│   │           │                           │   ├── OpenShiftEnvironmentFactoryTest.java
│   │           │                           │   └── OpenShiftEnvironmentValidatorTest.java
│   │           │                           ├── multiuser/
│   │           │                           │   └── oauth/
│   │           │                           │       └── OpenshiftTokenInitializationFilterTest.java
│   │           │                           ├── project/
│   │           │                           │   ├── OpenShiftProjectFactoryTest.java
│   │           │                           │   ├── OpenShiftProjectTest.java
│   │           │                           │   └── configurator/
│   │           │                           │       └── OpenShiftWorkspaceServiceAccountConfiguratorTest.java
│   │           │                           ├── provision/
│   │           │                           │   ├── OpenShiftPreviewUrlCommandProvisionerTest.java
│   │           │                           │   ├── OpenShiftUniqueNamesProvisionerTest.java
│   │           │                           │   └── RouteTlsProvisionerTest.java
│   │           │                           ├── server/
│   │           │                           │   ├── OpenShiftExternalServerExposerTest.java
│   │           │                           │   └── OpenShiftPreviewUrlExposerTest.java
│   │           │                           └── util/
│   │           │                               └── RoutesTest.java
│   │           └── resources/
│   │               ├── devfile/
│   │               │   └── petclinic.yaml
│   │               └── logback-test.xml
│   └── pom.xml
├── make-release.sh
├── multiuser/
│   ├── api/
│   │   ├── che-multiuser-api-authentication-commons/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       └── org/
│   │   │       │           └── eclipse/
│   │   │       │               └── che/
│   │   │       │                   └── multiuser/
│   │   │       │                       └── api/
│   │   │       │                           └── authentication/
│   │   │       │                               └── commons/
│   │   │       │                                   ├── Constants.java
│   │   │       │                                   ├── DestroySessionListener.java
│   │   │       │                                   ├── SessionStore.java
│   │   │       │                                   ├── SubjectHttpRequestWrapper.java
│   │   │       │                                   ├── filter/
│   │   │       │                                   │   └── MultiUserEnvironmentInitializationFilter.java
│   │   │       │                                   └── token/
│   │   │       │                                       ├── ChainedTokenExtractor.java
│   │   │       │                                       ├── HeaderRequestTokenExtractor.java
│   │   │       │                                       ├── QueryRequestTokenExtractor.java
│   │   │       │                                       └── RequestTokenExtractor.java
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── eclipse/
│   │   │                       └── che/
│   │   │                           └── multiuser/
│   │   │                               └── api/
│   │   │                                   └── authentication/
│   │   │                                       └── commons/
│   │   │                                           ├── SessionStoreTest.java
│   │   │                                           ├── SubjectHttpRequestWrapperTest.java
│   │   │                                           ├── filter/
│   │   │                                           │   └── MultiUserEnvironmentInitializationFilterTest.java
│   │   │                                           └── token/
│   │   │                                               └── HeaderRequestTokenExtractorTest.java
│   │   ├── che-multiuser-api-authorization/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── eclipse/
│   │   │                       └── che/
│   │   │                           └── multiuser/
│   │   │                               └── api/
│   │   │                                   └── permission/
│   │   │                                       └── server/
│   │   │                                           ├── AuthorizedSubject.java
│   │   │                                           ├── HttpPermissionCheckerImpl.java
│   │   │                                           └── PermissionChecker.java
│   │   ├── che-multiuser-api-authorization-impl/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       └── org/
│   │   │       │           └── eclipse/
│   │   │       │               └── che/
│   │   │       │                   └── multiuser/
│   │   │       │                       └── api/
│   │   │       │                           └── permission/
│   │   │       │                               └── server/
│   │   │       │                                   └── PermissionCheckerImpl.java
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── eclipse/
│   │   │           │           └── che/
│   │   │           │               └── multiuser/
│   │   │           │                   └── api/
│   │   │           │                       └── permission/
│   │   │           │                           └── server/
│   │   │           │                               └── PermissionCheckerImplTest.java
│   │   │           └── resources/
│   │   │               └── logback-test.xml
│   │   ├── che-multiuser-api-permission/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── eclipse/
│   │   │                       └── che/
│   │   │                           └── multiuser/
│   │   │                               └── api/
│   │   │                                   └── permission/
│   │   │                                       └── server/
│   │   │                                           ├── AbstractPermissionsDomain.java
│   │   │                                           ├── InstanceParameterValidator.java
│   │   │                                           ├── PermissionsManager.java
│   │   │                                           ├── PermissionsModule.java
│   │   │                                           ├── SuperPrivilegesChecker.java
│   │   │                                           ├── SystemDomain.java
│   │   │                                           ├── account/
│   │   │                                           │   ├── AccountOperation.java
│   │   │                                           │   └── AccountPermissionsChecker.java
│   │   │                                           ├── event/
│   │   │                                           │   ├── PermissionsCreatedEvent.java
│   │   │                                           │   └── PermissionsRemovedEvent.java
│   │   │                                           ├── filter/
│   │   │                                           │   ├── GetPermissionsFilter.java
│   │   │                                           │   ├── RemovePermissionsFilter.java
│   │   │                                           │   ├── SetPermissionsFilter.java
│   │   │                                           │   └── check/
│   │   │                                           │       ├── DefaultRemovePermissionsChecker.java
│   │   │                                           │       ├── DefaultSetPermissionsChecker.java
│   │   │                                           │       ├── DomainsPermissionsCheckers.java
│   │   │                                           │       ├── RemovePermissionsChecker.java
│   │   │                                           │       └── SetPermissionsChecker.java
│   │   │                                           ├── jsonrpc/
│   │   │                                           │   ├── JsonRpcPermissionsFilterAdapter.java
│   │   │                                           │   ├── RemoteSubscriptionPermissionCheck.java
│   │   │                                           │   └── RemoteSubscriptionPermissionManager.java
│   │   │                                           ├── model/
│   │   │                                           │   └── impl/
│   │   │                                           │       ├── AbstractPermissions.java
│   │   │                                           │       └── SystemPermissionsImpl.java
│   │   │                                           └── spi/
│   │   │                                               └── PermissionsDao.java
│   │   ├── che-multiuser-api-permission-shared/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── eclipse/
│   │   │                       └── che/
│   │   │                           └── multiuser/
│   │   │                               └── api/
│   │   │                                   └── permission/
│   │   │                                       └── shared/
│   │   │                                           ├── dto/
│   │   │                                           │   ├── DomainDto.java
│   │   │                                           │   └── PermissionsDto.java
│   │   │                                           ├── event/
│   │   │                                           │   ├── EventType.java
│   │   │                                           │   └── PermissionsEvent.java
│   │   │                                           └── model/
│   │   │                                               ├── Permissions.java
│   │   │                                               └── PermissionsDomain.java
│   │   └── pom.xml
│   ├── machine-auth/
│   │   ├── che-multiuser-machine-authentication/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       └── org/
│   │   │       │           └── eclipse/
│   │   │       │               └── che/
│   │   │       │                   └── multiuser/
│   │   │       │                       └── machine/
│   │   │       │                           └── authentication/
│   │   │       │                               └── server/
│   │   │       │                                   ├── MachineAuthModule.java
│   │   │       │                                   ├── MachineAuthenticatedResource.java
│   │   │       │                                   ├── MachineLoginFilter.java
│   │   │       │                                   ├── MachineSessionInvalidator.java
│   │   │       │                                   ├── MachineSigningKeyResolver.java
│   │   │       │                                   ├── MachineTokenAccessFilter.java
│   │   │       │                                   ├── MachineTokenAuthorizedSubject.java
│   │   │       │                                   ├── MachineTokenProviderImpl.java
│   │   │       │                                   ├── MachineTokenRegistry.java
│   │   │       │                                   ├── NotMachineTokenJwtException.java
│   │   │       │                                   └── signature/
│   │   │       │                                       ├── SignatureAlgorithmEnvProvider.java
│   │   │       │                                       ├── SignatureKey.java
│   │   │       │                                       ├── SignatureKeyManager.java
│   │   │       │                                       ├── SignatureKeyManagerException.java
│   │   │       │                                       ├── SignatureKeyPair.java
│   │   │       │                                       ├── SignaturePublicKeyEnvProvider.java
│   │   │       │                                       ├── jpa/
│   │   │       │                                       │   └── JpaSignatureKeyDao.java
│   │   │       │                                       ├── model/
│   │   │       │                                       │   └── impl/
│   │   │       │                                       │       ├── SignatureKeyImpl.java
│   │   │       │                                       │       └── SignatureKeyPairImpl.java
│   │   │       │                                       └── spi/
│   │   │       │                                           └── SignatureKeyDao.java
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── eclipse/
│   │   │           │           └── che/
│   │   │           │               └── multiuser/
│   │   │           │                   └── machine/
│   │   │           │                       └── authentication/
│   │   │           │                           └── server/
│   │   │           │                               ├── MachineLoginFilterTest.java
│   │   │           │                               └── signature/
│   │   │           │                                   └── SignatureKeyManagerTest.java
│   │   │           └── resources/
│   │   │               ├── META-INF/
│   │   │               │   └── services/
│   │   │               │       └── org.eclipse.che.commons.test.tck.TckModule
│   │   │               └── logback-test.xml
│   │   ├── che-multiuser-machine-authentication-shared/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── eclipse/
│   │   │                       └── che/
│   │   │                           └── multiuser/
│   │   │                               └── machine/
│   │   │                                   └── authentication/
│   │   │                                       └── shared/
│   │   │                                           ├── Constants.java
│   │   │                                           └── dto/
│   │   │                                               └── MachineTokenDto.java
│   │   └── pom.xml
│   ├── oidc/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── eclipse/
│   │       │               └── che/
│   │       │                   └── multiuser/
│   │       │                       └── oidc/
│   │       │                           ├── OIDCInfo.java
│   │       │                           ├── OIDCInfoProvider.java
│   │       │                           ├── OIDCJwkProvider.java
│   │       │                           ├── OIDCJwtParserProvider.java
│   │       │                           ├── OIDCSigningKeyResolver.java
│   │       │                           └── filter/
│   │       │                               └── OidcTokenInitializationFilter.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── eclipse/
│   │                       └── che/
│   │                           └── multiuser/
│   │                               └── oidc/
│   │                                   └── filter/
│   │                                       └── OidcTokenInitializationFilterTest.java
│   └── pom.xml
├── pom.xml
├── typescript-dto/
│   ├── .gitignore
│   ├── .yarn/
│   │   └── releases/
│   │       └── yarn-4.12.0.cjs
│   ├── .yarnrc.yml
│   ├── Dockerfile
│   ├── README.md
│   ├── build.sh
│   ├── dto-pom.xml
│   ├── package.json
│   └── publish.sh
└── wsmaster/
    ├── che-core-api-account/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── account/
    │       │                       ├── api/
    │       │                       │   └── AccountManager.java
    │       │                       ├── shared/
    │       │                       │   └── model/
    │       │                       │       └── Account.java
    │       │                       └── spi/
    │       │                           ├── AccountDao.java
    │       │                           ├── AccountImpl.java
    │       │                           └── AccountValidator.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── account/
    │           │                   └── spi/
    │           │                       └── AccountValidatorTest.java
    │           └── resources/
    │               ├── META-INF/
    │               │   └── services/
    │               │       └── org.eclipse.che.commons.test.tck.TckModule
    │               └── logback-test.xml
    ├── che-core-api-auth/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── security/
    │       │                       ├── oauth/
    │       │                       │   ├── EmbeddedOAuthAPI.java
    │       │                       │   ├── OAuth2.gwt.xml
    │       │                       │   ├── OAuthAPI.java
    │       │                       │   ├── OAuthAuthenticationException.java
    │       │                       │   ├── OAuthAuthenticationService.java
    │       │                       │   ├── OAuthAuthenticator.java
    │       │                       │   ├── OAuthAuthenticatorProvider.java
    │       │                       │   ├── OAuthAuthenticatorProviderImpl.java
    │       │                       │   └── OAuthAuthenticatorTokenProvider.java
    │       │                       └── oauth1/
    │       │                           ├── OAuthAuthenticationException.java
    │       │                           ├── OAuthAuthenticationService.java
    │       │                           ├── OAuthAuthenticator.java
    │       │                           ├── OAuthAuthenticatorProvider.java
    │       │                           └── UserDeniedOAuthAuthenticationException.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── security/
    │           │                   ├── oauth/
    │           │                   │   └── EmbeddedOAuthAPITest.java
    │           │                   └── oauth1/
    │           │                       ├── OAuthAuthenticationServiceTest.java
    │           │                       └── OAuthAuthenticatorTest.java
    │           └── resources/
    │               └── logback-test.xml
    ├── che-core-api-auth-azure-devops/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── security/
    │                               └── oauth/
    │                                   ├── AzureDevOpsModule.java
    │                                   ├── AzureDevOpsOAuthAuthenticator.java
    │                                   ├── AzureDevOpsOAuthAuthenticatorProvider.java
    │                                   ├── AzureDevOpsRefreshToken.java
    │                                   ├── AzureDevOpsTokenResponse.java
    │                                   └── AzureDevOpsUserProfile.java
    ├── che-core-api-auth-bitbucket/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── security/
    │       │                       ├── BitbucketModule.java
    │       │                       ├── oauth/
    │       │                       │   ├── BitbucketOAuthAuthenticator.java
    │       │                       │   ├── BitbucketOAuthAuthenticatorProvider.java
    │       │                       │   └── BitbucketUser.java
    │       │                       └── oauth1/
    │       │                           ├── BitbucketServerOAuthAuthenticator.java
    │       │                           ├── BitbucketServerOAuthAuthenticatorProvider.java
    │       │                           └── NoopOAuthAuthenticator.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── security/
    │           │                   ├── BitbucketOAuthAuthenticatorProviderTest.java
    │           │                   └── oauth1/
    │           │                       └── BitbucketServerOAuthAuthenticatorProviderTest.java
    │           └── resources/
    │               └── logback-test.xml
    ├── che-core-api-auth-github/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── security/
    │       │                       └── oauth/
    │       │                           ├── GitHubOAuthAuthenticatorProvider.java
    │       │                           ├── GitHubOAuthAuthenticatorProviderSecond.java
    │       │                           └── GithubModule.java
    │       └── test/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── security/
    │                               └── oauth/
    │                                   └── GitHubOAuthAuthenticatorProviderTest.java
    ├── che-core-api-auth-github-common/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── security/
    │                               └── oauth/
    │                                   ├── AbstractGitHubOAuthAuthenticatorProvider.java
    │                                   ├── GitHubOAuthAuthenticator.java
    │                                   └── GitHubUser.java
    ├── che-core-api-auth-gitlab/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── security/
    │       │                       └── oauth/
    │       │                           ├── GitLabModule.java
    │       │                           ├── GitLabOAuthAuthenticatorProvider.java
    │       │                           └── GitLabOAuthAuthenticatorProviderSecond.java
    │       └── test/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── security/
    │                               └── oauth/
    │                                   ├── GitLabAuthenticatorTest.java
    │                                   └── GitLabOAuthAuthenticatorProviderTest.java
    ├── che-core-api-auth-gitlab-common/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── security/
    │                               └── oauth/
    │                                   ├── AbstractGitLabOAuthAuthenticatorProvider.java
    │                                   ├── GitLabOAuthAuthenticator.java
    │                                   └── GitLabUser.java
    ├── che-core-api-auth-openshift/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── security/
    │                               └── oauth/
    │                                   ├── OpenShiftOAuthAuthenticator.java
    │                                   └── OpenShiftOAuthModule.java
    ├── che-core-api-auth-shared/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           ├── api/
    │                           │   └── auth/
    │                           │       └── shared/
    │                           │           └── dto/
    │                           │               └── OAuthToken.java
    │                           └── security/
    │                               └── oauth/
    │                                   └── shared/
    │                                       ├── OAuthAuthorizationHeaderProvider.java
    │                                       ├── OAuthTokenProvider.java
    │                                       ├── User.java
    │                                       └── dto/
    │                                           └── OAuthAuthenticatorDescriptor.java
    ├── che-core-api-devfile/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── api/
    │       │                       └── devfile/
    │       │                           └── server/
    │       │                               ├── DtoConverter.java
    │       │                               ├── UserDevfileEntityProvider.java
    │       │                               └── model/
    │       │                                   └── impl/
    │       │                                       └── UserDevfileImpl.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── api/
    │           │                   └── devfile/
    │           │                       └── server/
    │           │                           ├── TestObjectGenerator.java
    │           │                           └── jpa/
    │           │                               └── UserDevfileTckModule.java
    │           └── resources/
    │               ├── META-INF/
    │               │   └── services/
    │               │       └── org.eclipse.che.commons.test.tck.TckModule
    │               └── logback-test.xml
    ├── che-core-api-devfile-shared/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── api/
    │                               └── devfile/
    │                                   └── shared/
    │                                       ├── Constants.java
    │                                       ├── dto/
    │                                       │   └── UserDevfileDto.java
    │                                       └── event/
    │                                           ├── DevfileCreatedEvent.java
    │                                           ├── DevfileDeletedEvent.java
    │                                           └── DevfileUpdatedEvent.java
    ├── che-core-api-factory/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── api/
    │       │                       └── factory/
    │       │                           └── server/
    │       │                               ├── AdditionalFilenamesProvider.java
    │       │                               ├── ApiExceptionMapper.java
    │       │                               ├── BaseFactoryParameterResolver.java
    │       │                               ├── DtoConverter.java
    │       │                               ├── FactoryAcceptValidator.java
    │       │                               ├── FactoryConstants.java
    │       │                               ├── FactoryLinksHelper.java
    │       │                               ├── FactoryManager.java
    │       │                               ├── FactoryParameterValidator.java
    │       │                               ├── FactoryParametersResolver.java
    │       │                               ├── FactoryResolverPriority.java
    │       │                               ├── FactoryService.java
    │       │                               ├── LegacyConverter.java
    │       │                               ├── RawDevfileUrlFactoryParameterResolver.java
    │       │                               ├── ScmFileResolver.java
    │       │                               ├── ScmService.java
    │       │                               ├── ValueHelper.java
    │       │                               ├── impl/
    │       │                               │   ├── FactoryAcceptValidatorImpl.java
    │       │                               │   ├── FactoryBaseValidator.java
    │       │                               │   └── SourceStorageParametersValidator.java
    │       │                               ├── jpa/
    │       │                               │   ├── FactoryJpaModule.java
    │       │                               │   └── JpaFactoryDao.java
    │       │                               ├── model/
    │       │                               │   └── impl/
    │       │                               │       ├── ActionImpl.java
    │       │                               │       ├── AuthorImpl.java
    │       │                               │       ├── FactoryImpl.java
    │       │                               │       ├── IdeImpl.java
    │       │                               │       ├── OnAppClosedImpl.java
    │       │                               │       ├── OnAppLoadedImpl.java
    │       │                               │       ├── OnProjectsLoadedImpl.java
    │       │                               │       └── PoliciesImpl.java
    │       │                               ├── scm/
    │       │                               │   ├── AbstractGitUserDataFetcher.java
    │       │                               │   ├── AuthorisationRequestManager.java
    │       │                               │   ├── AuthorizingFileContentProvider.java
    │       │                               │   ├── GitCredentialManager.java
    │       │                               │   ├── GitUserData.java
    │       │                               │   ├── GitUserDataFetcher.java
    │       │                               │   ├── PersonalAccessToken.java
    │       │                               │   ├── PersonalAccessTokenFetcher.java
    │       │                               │   ├── PersonalAccessTokenManager.java
    │       │                               │   ├── PersonalAccessTokenParams.java
    │       │                               │   ├── ScmPersonalAccessTokenFetcher.java
    │       │                               │   └── exception/
    │       │                               │       ├── ExceptionMessages.java
    │       │                               │       ├── ScmBadRequestException.java
    │       │                               │       ├── ScmCommunicationException.java
    │       │                               │       ├── ScmConfigurationPersistenceException.java
    │       │                               │       ├── ScmItemNotFoundException.java
    │       │                               │       ├── ScmUnauthorizedException.java
    │       │                               │       ├── UnknownScmProviderException.java
    │       │                               │       └── UnsatisfiedScmPreconditionException.java
    │       │                               ├── spi/
    │       │                               │   └── FactoryDao.java
    │       │                               └── urlfactory/
    │       │                                   ├── DefaultFactoryUrl.java
    │       │                                   ├── DevfileFilenamesProvider.java
    │       │                                   ├── RemoteFactoryUrl.java
    │       │                                   └── URLFactoryBuilder.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── api/
    │           │                   └── factory/
    │           │                       └── server/
    │           │                           ├── ApiExceptionMapperTest.java
    │           │                           ├── BaseFactoryParameterResolverTest.java
    │           │                           ├── FactoryLinksHelperTest.java
    │           │                           ├── FactoryManagerTest.java
    │           │                           ├── FactoryServiceTest.java
    │           │                           ├── RawDevfileUrlFactoryParameterResolverTest.java
    │           │                           ├── impl/
    │           │                           │   ├── FactoryBaseValidatorTest.java
    │           │                           │   ├── SourceProjectParametersValidatorTest.java
    │           │                           │   └── TesterFactoryBaseValidator.java
    │           │                           ├── jpa/
    │           │                           │   └── FactoryTckModule.java
    │           │                           ├── scm/
    │           │                           │   └── AuthorizingFactoryParameterResolverTest.java
    │           │                           └── urlfactory/
    │           │                               ├── DefaultFactoryUrlTest.java
    │           │                               └── URLFactoryBuilderTest.java
    │           └── resources/
    │               ├── META-INF/
    │               │   └── services/
    │               │       └── org.eclipse.che.commons.test.tck.TckModule
    │               ├── logback-test.xml
    │               └── logging.properties
    ├── che-core-api-factory-azure-devops/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── api/
    │       │                       └── factory/
    │       │                           └── server/
    │       │                               └── azure/
    │       │                                   └── devops/
    │       │                                       ├── AzureDevOps.java
    │       │                                       ├── AzureDevOpsApiClient.java
    │       │                                       ├── AzureDevOpsAuthorizingFileContentProvider.java
    │       │                                       ├── AzureDevOpsFactoryParametersResolver.java
    │       │                                       ├── AzureDevOpsModule.java
    │       │                                       ├── AzureDevOpsPersonalAccessTokenFetcher.java
    │       │                                       ├── AzureDevOpsScmFileResolver.java
    │       │                                       ├── AzureDevOpsServerApiClient.java
    │       │                                       ├── AzureDevOpsServerUserIdentity.java
    │       │                                       ├── AzureDevOpsServerUserPreferences.java
    │       │                                       ├── AzureDevOpsServerUserProfile.java
    │       │                                       ├── AzureDevOpsURLParser.java
    │       │                                       ├── AzureDevOpsUrl.java
    │       │                                       ├── AzureDevOpsUser.java
    │       │                                       └── AzureDevOpsUserDataFetcher.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── api/
    │           │                   └── factory/
    │           │                       └── server/
    │           │                           └── azure/
    │           │                               └── devops/
    │           │                                   ├── AzureDevOpsPersonalAccessTokenFetcherTest.java
    │           │                                   ├── AzureDevOpsURLParserTest.java
    │           │                                   └── AzureDevOpsURLTest.java
    │           └── resources/
    │               ├── __files/
    │               │   ├── azure-devops/
    │               │   │   └── rest/
    │               │   │       └── user/
    │               │   │           ├── email/
    │               │   │           │   └── response.json
    │               │   │           └── response.json
    │               │   └── azure-devops-server/
    │               │       └── rest/
    │               │           └── user/
    │               │               └── response.json
    │               └── logback-test.xml
    ├── che-core-api-factory-bitbucket/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── api/
    │       │                       └── factory/
    │       │                           └── server/
    │       │                               └── bitbucket/
    │       │                                   ├── BitbucketApiClient.java
    │       │                                   ├── BitbucketAuthorizingFileContentProvider.java
    │       │                                   ├── BitbucketFactoryParametersResolver.java
    │       │                                   ├── BitbucketModule.java
    │       │                                   ├── BitbucketPersonalAccessTokenFetcher.java
    │       │                                   ├── BitbucketScmFileResolver.java
    │       │                                   ├── BitbucketSourceStorageBuilder.java
    │       │                                   ├── BitbucketURLParser.java
    │       │                                   ├── BitbucketUrl.java
    │       │                                   ├── BitbucketUser.java
    │       │                                   ├── BitbucketUserDataFetcher.java
    │       │                                   └── BitbucketUserEmail.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── api/
    │           │                   └── factory/
    │           │                       └── server/
    │           │                           └── bitbucket/
    │           │                               ├── BitbucketApiClientTest.java
    │           │                               ├── BitbucketAuthorizingFileContentProviderTest.java
    │           │                               ├── BitbucketFactoryParametersResolverTest.java
    │           │                               ├── BitbucketGitUserDataFetcherTest.java
    │           │                               ├── BitbucketPersonalAccessTokenFetcherTest.java
    │           │                               ├── BitbucketScmFileResolverTest.java
    │           │                               ├── BitbucketURLParserTest.java
    │           │                               └── BitbucketUrlTest.java
    │           └── resources/
    │               ├── __files/
    │               │   └── bitbucket/
    │               │       └── rest/
    │               │           └── user/
    │               │               ├── email/
    │               │               │   └── response.json
    │               │               └── response.json
    │               └── logback-test.xml
    ├── che-core-api-factory-bitbucket-server/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── api/
    │       │                       └── factory/
    │       │                           └── server/
    │       │                               └── bitbucket/
    │       │                                   ├── BitbucketServerApiProvider.java
    │       │                                   ├── BitbucketServerAuthorizingFactoryParametersResolver.java
    │       │                                   ├── BitbucketServerAuthorizingFileContentProvider.java
    │       │                                   ├── BitbucketServerModule.java
    │       │                                   ├── BitbucketServerPersonalAccessTokenFetcher.java
    │       │                                   ├── BitbucketServerScmFileResolver.java
    │       │                                   ├── BitbucketServerURLParser.java
    │       │                                   ├── BitbucketServerUrl.java
    │       │                                   ├── BitbucketServerUserDataFetcher.java
    │       │                                   ├── HttpBitbucketServerApiClient.java
    │       │                                   └── server/
    │       │                                       ├── BitbucketApplicationProperties.java
    │       │                                       ├── BitbucketPersonalAccessToken.java
    │       │                                       ├── BitbucketServerApiClient.java
    │       │                                       ├── BitbucketUser.java
    │       │                                       ├── NoopBitbucketServerApiClient.java
    │       │                                       └── Page.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── api/
    │           │                   └── factory/
    │           │                       └── server/
    │           │                           └── bitbucket/
    │           │                               ├── BitbucketServerApiClientProviderTest.java
    │           │                               ├── BitbucketServerAuthorizingFactoryParametersResolverTest.java
    │           │                               ├── BitbucketServerAuthorizingFileContentProviderTest.java
    │           │                               ├── BitbucketServerPersonalAccessTokenFetcherTest.java
    │           │                               ├── BitbucketServerScmFileResolverTest.java
    │           │                               ├── BitbucketServerURLParserTest.java
    │           │                               ├── BitbucketServerURLTest.java
    │           │                               ├── BitbucketServerUserDataFetcherTest.java
    │           │                               └── HttpBitbucketServerApiClientTest.java
    │           └── resources/
    │               ├── __files/
    │               │   └── bitbucket/
    │               │       └── rest/
    │               │           ├── access-tokens/
    │               │           │   └── 1.0/
    │               │           │       └── users/
    │               │           │           └── ksmster/
    │               │           │               ├── newtoken.json
    │               │           │               └── response.json
    │               │           ├── api/
    │               │           │   └── 1.0/
    │               │           │       └── users/
    │               │           │           ├── email-user/
    │               │           │           │   └── response.json
    │               │           │           ├── filtered/
    │               │           │           │   └── response.json
    │               │           │           ├── ksmster/
    │               │           │           │   └── response.json
    │               │           │           ├── response.json
    │               │           │           ├── response_s0_l25.json
    │               │           │           ├── response_s3_l25.json
    │               │           │           ├── response_s6_l25.json
    │               │           │           └── response_s9_l25.json
    │               │           └── api.1.0.application-properties/
    │               │               └── response.json
    │               └── logback-test.xml
    ├── che-core-api-factory-git-ssh/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── api/
    │       │                       └── factory/
    │       │                           └── server/
    │       │                               └── git/
    │       │                                   └── ssh/
    │       │                                       ├── GitSshAuthorizingFileContentProvider.java
    │       │                                       ├── GitSshFactoryParametersResolver.java
    │       │                                       ├── GitSshScmFileResolver.java
    │       │                                       ├── GitSshURLParser.java
    │       │                                       └── GitSshUrl.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── api/
    │           │                   └── factory/
    │           │                       └── server/
    │           │                           └── git/
    │           │                               └── ssh/
    │           │                                   ├── GitSshFactoryParametersResolverTest.java
    │           │                                   ├── GitSshURLParserTest.java
    │           │                                   └── GitSshUrlTest.java
    │           └── resources/
    │               └── logback-test.xml
    ├── che-core-api-factory-github/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── api/
    │       │                       └── factory/
    │       │                           └── server/
    │       │                               └── github/
    │       │                                   ├── GithubFactoryParametersResolver.java
    │       │                                   ├── GithubFactoryParametersResolverSecond.java
    │       │                                   ├── GithubModule.java
    │       │                                   ├── GithubPersonalAccessTokenFetcher.java
    │       │                                   ├── GithubPersonalAccessTokenFetcherSecond.java
    │       │                                   ├── GithubScmFileResolver.java
    │       │                                   ├── GithubScmFileResolverSecond.java
    │       │                                   ├── GithubURLParser.java
    │       │                                   ├── GithubURLParserSecond.java
    │       │                                   ├── GithubUserDataFetcher.java
    │       │                                   └── GithubUserDataFetcherSecond.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── api/
    │           │                   └── factory/
    │           │                       └── server/
    │           │                           └── github/
    │           │                               ├── GithubApiClientTest.java
    │           │                               ├── GithubAuthorizingFileContentProviderTest.java
    │           │                               ├── GithubFactoryParametersResolverTest.java
    │           │                               ├── GithubGitUserDataFetcherTest.java
    │           │                               ├── GithubPersonalAccessTokenFetcherTest.java
    │           │                               ├── GithubScmFileResolverTest.java
    │           │                               ├── GithubURLParserTest.java
    │           │                               └── GithubUrlTest.java
    │           └── resources/
    │               ├── __files/
    │               │   └── github/
    │               │       └── rest/
    │               │           ├── pullRequest/
    │               │           │   └── response.json
    │               │           └── user/
    │               │               └── response.json
    │               └── logback-test.xml
    ├── che-core-api-factory-github-common/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── api/
    │                               └── factory/
    │                                   └── server/
    │                                       └── github/
    │                                           ├── AbstractGithubFactoryParametersResolver.java
    │                                           ├── AbstractGithubPersonalAccessTokenFetcher.java
    │                                           ├── AbstractGithubScmFileResolver.java
    │                                           ├── AbstractGithubURLParser.java
    │                                           ├── AbstractGithubUserDataFetcher.java
    │                                           ├── GithubApiClient.java
    │                                           ├── GithubAuthorizingFileContentProvider.java
    │                                           ├── GithubCommit.java
    │                                           ├── GithubPullRequest.java
    │                                           ├── GithubSourceStorageBuilder.java
    │                                           ├── GithubUrl.java
    │                                           └── GithubUser.java
    ├── che-core-api-factory-gitlab/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── api/
    │       │                       └── factory/
    │       │                           └── server/
    │       │                               └── gitlab/
    │       │                                   ├── GitlabFactoryParametersResolver.java
    │       │                                   ├── GitlabFactoryParametersResolverSecond.java
    │       │                                   ├── GitlabModule.java
    │       │                                   ├── GitlabOAuthTokenFetcher.java
    │       │                                   ├── GitlabOAuthTokenFetcherSecond.java
    │       │                                   ├── GitlabScmFileResolver.java
    │       │                                   ├── GitlabScmFileResolverSecond.java
    │       │                                   ├── GitlabUrlParser.java
    │       │                                   ├── GitlabUrlParserSecond.java
    │       │                                   ├── GitlabUserDataFetcher.java
    │       │                                   └── GitlabUserDataFetcherSecond.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── api/
    │           │                   └── factory/
    │           │                       └── server/
    │           │                           └── gitlab/
    │           │                               ├── GitlabApiClientTest.java
    │           │                               ├── GitlabAuthorizingFileContentProviderTest.java
    │           │                               ├── GitlabCustomPortUrlParserTest.java
    │           │                               ├── GitlabFactoryParametersResolverTest.java
    │           │                               ├── GitlabOAuthTokenFetcherTest.java
    │           │                               ├── GitlabScmFileResolverTest.java
    │           │                               ├── GitlabUrlCustomPortTest.java
    │           │                               ├── GitlabUrlParserTest.java
    │           │                               ├── GitlabUrlTest.java
    │           │                               └── GitlabUserDataFetcherTest.java
    │           └── resources/
    │               ├── __files/
    │               │   └── gitlab/
    │               │       └── rest/
    │               │           └── api/
    │               │               └── v4/
    │               │                   └── user/
    │               │                       ├── PAT_info.json
    │               │                       ├── response.json
    │               │                       ├── token_info.json
    │               │                       └── token_info_lack_scopes.json
    │               └── logback-test.xml
    ├── che-core-api-factory-gitlab-common/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── api/
    │                               └── factory/
    │                                   └── server/
    │                                       └── gitlab/
    │                                           ├── AbstractGitlabFactoryParametersResolver.java
    │                                           ├── AbstractGitlabOAuthTokenFetcher.java
    │                                           ├── AbstractGitlabScmFileResolver.java
    │                                           ├── AbstractGitlabUrlParser.java
    │                                           ├── AbstractGitlabUserDataFetcher.java
    │                                           ├── GitlabApiClient.java
    │                                           ├── GitlabAuthorizingFileContentProvider.java
    │                                           ├── GitlabOauthTokenInfo.java
    │                                           ├── GitlabPersonalAccessTokenInfo.java
    │                                           ├── GitlabUrl.java
    │                                           └── GitlabUser.java
    ├── che-core-api-factory-shared/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── api/
    │                               └── factory/
    │                                   └── shared/
    │                                       ├── Constants.java
    │                                       └── dto/
    │                                           ├── AuthorDto.java
    │                                           ├── FactoryDevfileV2Dto.java
    │                                           ├── FactoryMetaDto.java
    │                                           ├── FactoryVisitor.java
    │                                           ├── IdeActionDto.java
    │                                           ├── IdeDto.java
    │                                           ├── OnAppClosedDto.java
    │                                           ├── OnAppLoadedDto.java
    │                                           ├── OnProjectsLoadedDto.java
    │                                           ├── PoliciesDto.java
    │                                           └── ScmInfoDto.java
    ├── che-core-api-logger/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── api/
    │       │                       └── logger/
    │       │                           ├── ErrorRuntimeLogEventLogger.java
    │       │                           ├── LoggerService.java
    │       │                           └── deploy/
    │       │                               └── LoggerModule.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── api/
    │           │                   └── logger/
    │           │                       └── LoggerServiceTest.java
    │           └── resources/
    │               └── logback-test.xml
    ├── che-core-api-logger-shared/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── api/
    │                               └── logger/
    │                                   └── shared/
    │                                       └── dto/
    │                                           └── LoggerDto.java
    ├── che-core-api-metrics/
    │   ├── extending-che-monitoring-metrics.adoc
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── api/
    │       │                       └── metrics/
    │       │                           ├── RuntimeLogMeterBinder.java
    │       │                           ├── UserMeterBinder.java
    │       │                           ├── WorkspaceBinders.java
    │       │                           ├── WorkspaceFailureMeterBinder.java
    │       │                           ├── WorkspaceInterruptedStartAttemptsMeterBinder.java
    │       │                           ├── WorkspaceStartAttemptsMeterBinder.java
    │       │                           ├── WorkspaceStartTrackerMeterBinder.java
    │       │                           ├── WorkspaceStopTrackerMeterBinder.java
    │       │                           ├── WorkspaceSuccessfulStartAttemptsMeterBinder.java
    │       │                           ├── WorkspaceSuccessfulStopAttemptsMeterBinder.java
    │       │                           └── WsMasterMetricsModule.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── api/
    │           │                   └── metrics/
    │           │                       ├── UserMeterBinderTest.java
    │           │                       ├── WorkspaceFailureMeterBinderTest.java
    │           │                       ├── WorkspaceInterruptedStartAttemptsMeterBinderTest.java
    │           │                       ├── WorkspaceStartAttemptsMeterBinderTest.java
    │           │                       ├── WorkspaceStartTrackerMeterBinderTest.java
    │           │                       ├── WorkspaceStopTrackerMeterBinderTest.java
    │           │                       ├── WorkspaceSuccessfulStartAttemptsMeterBinderTest.java
    │           │                       └── WorkspaceSuccessfulStopAttemptsMeterBinderTest.java
    │           └── resources/
    │               └── logback-test.xml
    ├── che-core-api-ssh/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── api/
    │                               └── ssh/
    │                                   └── server/
    │                                       ├── SshManager.java
    │                                       ├── SshService.java
    │                                       ├── jpa/
    │                                       │   ├── JpaSshDao.java
    │                                       │   ├── SshJpaModule.java
    │                                       │   └── SshPairPrimaryKey.java
    │                                       ├── model/
    │                                       │   └── impl/
    │                                       │       └── SshPairImpl.java
    │                                       └── spi/
    │                                           └── SshDao.java
    ├── che-core-api-ssh-shared/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── api/
    │                               └── ssh/
    │                                   └── shared/
    │                                       ├── Constants.java
    │                                       ├── dto/
    │                                       │   ├── GenerateSshPairRequest.java
    │                                       │   └── SshPairDto.java
    │                                       └── model/
    │                                           └── SshPair.java
    ├── che-core-api-system/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── api/
    │       │                       └── system/
    │       │                           └── server/
    │       │                               ├── CronThreadPullTermination.java
    │       │                               ├── DtoConverter.java
    │       │                               ├── JvmManager.java
    │       │                               ├── JvmService.java
    │       │                               ├── ServiceTermination.java
    │       │                               ├── ServiceTerminator.java
    │       │                               ├── SystemEventsWebsocketBroadcaster.java
    │       │                               ├── SystemManager.java
    │       │                               ├── SystemModule.java
    │       │                               └── SystemService.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── api/
    │           │                   └── system/
    │           │                       └── server/
    │           │                           ├── DtoConverterTest.java
    │           │                           ├── JvmServiceTest.java
    │           │                           ├── SystemManagerTest.java
    │           │                           └── SystemTerminatorTest.java
    │           └── resources/
    │               └── logback-test.xml
    ├── che-core-api-system-shared/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── api/
    │                               └── system/
    │                                   └── shared/
    │                                       ├── SystemStatus.java
    │                                       ├── dto/
    │                                       │   ├── SystemEventDto.java
    │                                       │   ├── SystemServiceEventDto.java
    │                                       │   ├── SystemServiceItemStoppedEventDto.java
    │                                       │   ├── SystemStateDto.java
    │                                       │   └── SystemStatusChangedEventDto.java
    │                                       └── event/
    │                                           ├── EventType.java
    │                                           ├── SystemEvent.java
    │                                           ├── SystemStatusChangedEvent.java
    │                                           └── service/
    │                                               ├── StoppingSystemServiceEvent.java
    │                                               ├── SuspendingSystemServiceEvent.java
    │                                               ├── SystemServiceEvent.java
    │                                               ├── SystemServiceItemStoppedEvent.java
    │                                               ├── SystemServiceItemSuspendedEvent.java
    │                                               ├── SystemServiceStoppedEvent.java
    │                                               └── SystemServiceSuspendedEvent.java
    ├── che-core-api-user/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── api/
    │       │                       └── user/
    │       │                           └── server/
    │       │                               ├── AppStatesPreferenceCleaner.java
    │       │                               ├── CheUserCreator.java
    │       │                               ├── Constants.java
    │       │                               ├── DtoConverter.java
    │       │                               ├── NotImplementedTokenValidator.java
    │       │                               ├── PreferenceManager.java
    │       │                               ├── ProfileManager.java
    │       │                               ├── TokenValidator.java
    │       │                               ├── UserManager.java
    │       │                               ├── UserService.java
    │       │                               ├── UserValidator.java
    │       │                               ├── event/
    │       │                               │   ├── UserCreatedEvent.java
    │       │                               │   └── UserRemovedEvent.java
    │       │                               ├── jpa/
    │       │                               │   ├── JpaPreferenceDao.java
    │       │                               │   ├── JpaProfileDao.java
    │       │                               │   ├── JpaUserDao.java
    │       │                               │   ├── PreferenceEntity.java
    │       │                               │   └── UserJpaModule.java
    │       │                               ├── model/
    │       │                               │   └── impl/
    │       │                               │       ├── ProfileImpl.java
    │       │                               │       └── UserImpl.java
    │       │                               └── spi/
    │       │                                   ├── PreferenceDao.java
    │       │                                   ├── ProfileDao.java
    │       │                                   └── UserDao.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── api/
    │           │                   └── user/
    │           │                       └── server/
    │           │                           ├── PreferenceManagerTest.java
    │           │                           ├── ProfileManagerTest.java
    │           │                           ├── UserManagerTest.java
    │           │                           └── UserValidatorTest.java
    │           └── resources/
    │               └── META-INF/
    │                   └── services/
    │                       └── org.eclipse.che.commons.test.tck.TckModule
    ├── che-core-api-user-shared/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── api/
    │                               └── user/
    │                                   └── shared/
    │                                       └── dto/
    │                                           ├── ProfileDto.java
    │                                           └── UserDto.java
    ├── che-core-api-workspace/
    │   ├── pom.xml
    │   └── src/
    │       ├── main/
    │       │   └── java/
    │       │       └── org/
    │       │           └── eclipse/
    │       │               └── che/
    │       │                   └── api/
    │       │                       └── workspace/
    │       │                           └── server/
    │       │                               ├── DefaultWorkspaceLockService.java
    │       │                               ├── DefaultWorkspaceStatusCache.java
    │       │                               ├── DtoConverter.java
    │       │                               ├── NoEnvironmentFactory.java
    │       │                               ├── PreviewUrlLinksVariableGenerator.java
    │       │                               ├── SidecarToolingWorkspaceUtil.java
    │       │                               ├── URLRewriter.java
    │       │                               ├── WorkspaceAttributeValidator.java
    │       │                               ├── WorkspaceEntityProvider.java
    │       │                               ├── WorkspaceKeyValidator.java
    │       │                               ├── WorkspaceLockService.java
    │       │                               ├── WorkspaceSharedPool.java
    │       │                               ├── WorkspaceStatusCache.java
    │       │                               ├── WorkspaceValidator.java
    │       │                               ├── devfile/
    │       │                               │   ├── Components.java
    │       │                               │   ├── Constants.java
    │       │                               │   ├── DevfileBindings.java
    │       │                               │   ├── DevfileEntityProvider.java
    │       │                               │   ├── DevfileModule.java
    │       │                               │   ├── DevfileParser.java
    │       │                               │   ├── DevfileRecipeFormatException.java
    │       │                               │   ├── DevfileVersionDetector.java
    │       │                               │   ├── FileContentProvider.java
    │       │                               │   ├── OverridePropertiesApplier.java
    │       │                               │   ├── PreferencesDeserializer.java
    │       │                               │   ├── SerializableConverter.java
    │       │                               │   ├── URLFetcher.java
    │       │                               │   ├── URLFileContentProvider.java
    │       │                               │   ├── convert/
    │       │                               │   │   ├── CommandConverter.java
    │       │                               │   │   ├── DefaultEditorProvisioner.java
    │       │                               │   │   ├── DevfileConverter.java
    │       │                               │   │   ├── ProjectConverter.java
    │       │                               │   │   └── component/
    │       │                               │   │       ├── ComponentFQNParser.java
    │       │                               │   │       ├── ComponentToWorkspaceApplier.java
    │       │                               │   │       ├── editor/
    │       │                               │   │       │   └── EditorComponentToWorkspaceApplier.java
    │       │                               │   │       └── plugin/
    │       │                               │   │           └── PluginComponentToWorkspaceApplier.java
    │       │                               │   ├── exception/
    │       │                               │   │   ├── DevfileException.java
    │       │                               │   │   ├── DevfileFormatException.java
    │       │                               │   │   ├── OverrideParameterException.java
    │       │                               │   │   └── WorkspaceExportException.java
    │       │                               │   └── validator/
    │       │                               │       ├── ComponentIntegrityValidator.java
    │       │                               │       ├── DevfileIntegrityValidator.java
    │       │                               │       └── ErrorMessageComposer.java
    │       │                               ├── event/
    │       │                               │   ├── MachineStatusJsonRpcMessenger.java
    │       │                               │   ├── RuntimeAbnormalStoppedEvent.java
    │       │                               │   ├── RuntimeAbnormalStoppingEvent.java
    │       │                               │   ├── RuntimeLogJsonRpcMessenger.java
    │       │                               │   ├── RuntimeStatusJsonRpcMessenger.java
    │       │                               │   ├── ServerIdleEvent.java
    │       │                               │   ├── ServerStatusJsonRpcMessenger.java
    │       │                               │   └── WorkspaceJsonRpcMessenger.java
    │       │                               ├── hc/
    │       │                               │   ├── HttpConnectionServerChecker.java
    │       │                               │   ├── ServerChecker.java
    │       │                               │   ├── ServersChecker.java
    │       │                               │   ├── ServersCheckerFactory.java
    │       │                               │   ├── TerminalHttpConnectionServerChecker.java
    │       │                               │   └── probe/
    │       │                               │       ├── HttpProbe.java
    │       │                               │       ├── HttpProbeConfig.java
    │       │                               │       ├── HttpProbeFactory.java
    │       │                               │       ├── Probe.java
    │       │                               │       ├── ProbeConfig.java
    │       │                               │       ├── ProbeFactory.java
    │       │                               │       ├── ProbeResult.java
    │       │                               │       ├── ProbeScheduler.java
    │       │                               │       ├── TcpProbeConfig.java
    │       │                               │       ├── WorkspaceProbes.java
    │       │                               │       ├── WorkspaceProbesFactory.java
    │       │                               │       └── server/
    │       │                               │           ├── ExecServerLivenessProbeConfigFactory.java
    │       │                               │           ├── HttpProbeConfigFactory.java
    │       │                               │           ├── TerminalServerLivenessProbeConfigFactory.java
    │       │                               │           └── WsAgentServerLivenessProbeConfigFactory.java
    │       │                               ├── jpa/
    │       │                               │   ├── JpaWorkspaceDao.java
    │       │                               │   └── WorkspaceJpaModule.java
    │       │                               ├── model/
    │       │                               │   └── impl/
    │       │                               │       ├── CommandImpl.java
    │       │                               │       ├── EnvironmentImpl.java
    │       │                               │       ├── MachineConfigImpl.java
    │       │                               │       ├── MachineImpl.java
    │       │                               │       ├── ProjectConfigImpl.java
    │       │                               │       ├── RecipeImpl.java
    │       │                               │       ├── RuntimeIdentityImpl.java
    │       │                               │       ├── RuntimeImpl.java
    │       │                               │       ├── ServerConfigImpl.java
    │       │                               │       ├── ServerImpl.java
    │       │                               │       ├── SourceStorageImpl.java
    │       │                               │       ├── VolumeImpl.java
    │       │                               │       ├── WarningImpl.java
    │       │                               │       ├── WorkspaceConfigImpl.java
    │       │                               │       ├── WorkspaceImpl.java
    │       │                               │       └── devfile/
    │       │                               │           ├── ActionImpl.java
    │       │                               │           ├── CommandImpl.java
    │       │                               │           ├── ComponentImpl.java
    │       │                               │           ├── DevfileImpl.java
    │       │                               │           ├── EndpointImpl.java
    │       │                               │           ├── EntrypointImpl.java
    │       │                               │           ├── EnvImpl.java
    │       │                               │           ├── MetadataImpl.java
    │       │                               │           ├── PreviewUrlImpl.java
    │       │                               │           ├── ProjectImpl.java
    │       │                               │           ├── SourceImpl.java
    │       │                               │           └── VolumeImpl.java
    │       │                               ├── spi/
    │       │                               │   ├── InfrastructureException.java
    │       │                               │   ├── InternalInfrastructureException.java
    │       │                               │   ├── NamespaceResolutionContext.java
    │       │                               │   ├── RuntimeStartInterruptedException.java
    │       │                               │   ├── StateException.java
    │       │                               │   ├── WorkspaceDao.java
    │       │                               │   ├── environment/
    │       │                               │   │   ├── InternalEnvironment.java
    │       │                               │   │   ├── InternalEnvironmentFactory.java
    │       │                               │   │   ├── InternalMachineConfig.java
    │       │                               │   │   ├── InternalRecipe.java
    │       │                               │   │   ├── MachineConfigsValidator.java
    │       │                               │   │   ├── RecipeRetriever.java
    │       │                               │   │   └── ResourceLimitAttributesProvisioner.java
    │       │                               │   └── provision/
    │       │                               │       └── env/
    │       │                               │           ├── AgentAuthEnableEnvVarProvider.java
    │       │                               │           ├── CheApiEnvVarProvider.java
    │       │                               │           ├── CheApiExternalEnvVarProvider.java
    │       │                               │           ├── CheApiInternalEnvVarProvider.java
    │       │                               │           ├── EnvVarProvider.java
    │       │                               │           ├── JavaOptsEnvVariableProvider.java
    │       │                               │           ├── LegacyEnvVarProvider.java
    │       │                               │           ├── MachineTokenEnvVarProvider.java
    │       │                               │           ├── MavenOptsEnvVariableProvider.java
    │       │                               │           ├── WorkspaceIdEnvVarProvider.java
    │       │                               │           ├── WorkspaceNameEnvVarProvider.java
    │       │                               │           └── WorkspaceNamespaceNameEnvVarProvider.java
    │       │                               ├── token/
    │       │                               │   ├── MachineAccessForbidden.java
    │       │                               │   ├── MachineTokenException.java
    │       │                               │   └── MachineTokenProvider.java
    │       │                               └── wsplugins/
    │       │                                   ├── ChePluginsApplier.java
    │       │                                   ├── PluginFQNParser.java
    │       │                                   └── model/
    │       │                                       ├── CheContainer.java
    │       │                                       ├── CheContainerPort.java
    │       │                                       ├── ChePlugin.java
    │       │                                       ├── ChePluginEndpoint.java
    │       │                                       ├── Command.java
    │       │                                       ├── EnvVar.java
    │       │                                       ├── Exec.java
    │       │                                       ├── ExtendedPluginFQN.java
    │       │                                       ├── Handler.java
    │       │                                       ├── Lifecycle.java
    │       │                                       ├── PluginFQN.java
    │       │                                       └── Volume.java
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── eclipse/
    │           │           └── che/
    │           │               └── api/
    │           │                   └── workspace/
    │           │                       └── server/
    │           │                           ├── PreviewUrlLinksVariableGeneratorTest.java
    │           │                           ├── WorkspaceEntityProviderTest.java
    │           │                           ├── WorkspaceValidatorTest.java
    │           │                           ├── devfile/
    │           │                           │   ├── DevfileEntityProviderTest.java
    │           │                           │   ├── DevfileParserTest.java
    │           │                           │   ├── DevfileVersionTest.java
    │           │                           │   ├── OverridePropertiesApplierTest.java
    │           │                           │   ├── PreferencesDeserializerTest.java
    │           │                           │   ├── SerializableConverterTest.java
    │           │                           │   ├── URLFetcherTest.java
    │           │                           │   ├── URLFileContentProviderTest.java
    │           │                           │   ├── convert/
    │           │                           │   │   ├── CommandConverterTest.java
    │           │                           │   │   ├── DefaultEditorProvisionerTest.java
    │           │                           │   │   ├── DevfileConverterTest.java
    │           │                           │   │   ├── ProjectConverterTest.java
    │           │                           │   │   └── component/
    │           │                           │   │       ├── editor/
    │           │                           │   │       │   └── EditorComponentToWorkspaceApplierTest.java
    │           │                           │   │       └── plugin/
    │           │                           │   │           └── PluginComponentToWorkspaceApplierTest.java
    │           │                           │   └── validator/
    │           │                           │       └── DevfileIntegrityValidatorTest.java
    │           │                           ├── hc/
    │           │                           │   ├── HttpConnectionServerCheckerTest.java
    │           │                           │   ├── ServerCheckerTest.java
    │           │                           │   ├── ServersCheckerTest.java
    │           │                           │   ├── TerminalHttpConnectionServerCheckerTest.java
    │           │                           │   └── probe/
    │           │                           │       └── WorkspaceProbesFactoryTest.java
    │           │                           ├── model/
    │           │                           │   └── impl/
    │           │                           │       └── ServerConfigImplTest.java
    │           │                           ├── spi/
    │           │                           │   ├── environment/
    │           │                           │   │   ├── InternalEnvironmentFactoryTest.java
    │           │                           │   │   ├── MachineConfigsValidatorTest.java
    │           │                           │   │   └── ResourceLimitAttributesProvisionerTest.java
    │           │                           │   └── provision/
    │           │                           │       └── env/
    │           │                           │           ├── WorkspaceNameEnvVarProviderTest.java
    │           │                           │           └── WorkspaceNamespaceEnvVarProviderTest.java
    │           │                           └── wsplugins/
    │           │                               └── PluginFQNParserTest.java
    │           └── resources/
    │               ├── META-INF/
    │               │   └── services/
    │               │       └── org.eclipse.che.commons.test.tck.TckModule
    │               ├── devfile/
    │               │   ├── devfile.json
    │               │   ├── devfile.yaml
    │               │   ├── logback-test.xml
    │               │   ├── petclinic.yaml
    │               │   ├── schema_test/
    │               │   │   ├── command/
    │               │   │   │   ├── devfile_action_without_commandline_and_reference.yaml
    │               │   │   │   ├── devfile_command_with_empty_preview_url.yaml
    │               │   │   │   ├── devfile_command_with_preview_url.yaml
    │               │   │   │   ├── devfile_command_with_preview_url_only_path.yaml
    │               │   │   │   ├── devfile_command_with_preview_url_only_port.yaml
    │               │   │   │   ├── devfile_command_with_preview_url_port_is_negative.yaml
    │               │   │   │   ├── devfile_command_with_preview_url_port_is_string.yaml
    │               │   │   │   ├── devfile_command_with_preview_url_port_is_too_high.yaml
    │               │   │   │   ├── devfile_missing_command_actions.yaml
    │               │   │   │   ├── devfile_missing_command_name.yaml
    │               │   │   │   └── devfile_multiple_commands_actions.yaml
    │               │   │   ├── component/
    │               │   │   │   ├── devfile_component_with_automount_secrets.yaml
    │               │   │   │   ├── devfile_component_with_undeclared_field.yaml
    │               │   │   │   ├── devfile_missing_component_type.yaml
    │               │   │   │   ├── devfile_unknown_component_type.yaml
    │               │   │   │   └── devfile_without_any_component.yaml
    │               │   │   ├── devfile/
    │               │   │   │   ├── devfile_empty_metadata.yaml
    │               │   │   │   ├── devfile_just_generatename.yaml
    │               │   │   │   ├── devfile_missing_api_version.yaml
    │               │   │   │   ├── devfile_missing_metadata.yaml
    │               │   │   │   ├── devfile_missing_name_and_generatename.yaml
    │               │   │   │   ├── devfile_name_and_generatename.yaml
    │               │   │   │   ├── devfile_null_metadata.yaml
    │               │   │   │   ├── devfile_v2-1-0_just_schemaVersion.yaml
    │               │   │   │   ├── devfile_v2-1-0_simple-devfile.yaml
    │               │   │   │   ├── devfile_v2-1-0_unsupported_schemaVersion.yaml
    │               │   │   │   ├── devfile_v2-1-0_with_invalid_plugin_definition.yaml
    │               │   │   │   ├── devfile_v2-2-0-basic-nodejs.yaml
    │               │   │   │   ├── devfile_v2-2-0-basic-python.yaml
    │               │   │   │   ├── devfile_v2-2-0-basic-quarkus.yaml
    │               │   │   │   ├── devfile_v2-2-0-basic-springboot.yaml
    │               │   │   │   ├── devfile_v2-2-0-quarkus.yaml
    │               │   │   │   ├── devfile_v2-2-0-simple-devfile.yaml
    │               │   │   │   ├── devfile_v2_invalid_schemaVersion.yaml
    │               │   │   │   ├── devfile_v2_just_schemaVersion.yaml
    │               │   │   │   ├── devfile_v2_sample-devfile.yaml
    │               │   │   │   ├── devfile_v2_simple-devfile.yaml
    │               │   │   │   ├── devfile_v2_spring-boot-http-booster-devfile.yaml
    │               │   │   │   ├── devfile_v2_unsupported_schemaVersion.yaml
    │               │   │   │   ├── devfile_with_sparse_checkout_dir.yaml
    │               │   │   │   └── devfile_with_undeclared_field.yaml
    │               │   │   ├── dockerimage_component/
    │               │   │   │   ├── devfile_dockerimage_component.yaml
    │               │   │   │   ├── devfile_dockerimage_component_with_indistinctive_field_selector.yaml
    │               │   │   │   ├── devfile_dockerimage_component_with_invalid_memory_limit.yaml
    │               │   │   │   ├── devfile_dockerimage_component_with_missing_image.yaml
    │               │   │   │   ├── devfile_dockerimage_component_with_missing_memory_limit.yaml
    │               │   │   │   └── devfile_dockerimage_component_without_entry_point.yaml
    │               │   │   ├── editor_plugin_component/
    │               │   │   │   ├── devfile_editor_component_with_bad_registry.yaml
    │               │   │   │   ├── devfile_editor_component_with_custom_registry.yaml
    │               │   │   │   ├── devfile_editor_component_with_id_and_reference.yaml
    │               │   │   │   ├── devfile_editor_component_with_indistinctive_field.yaml
    │               │   │   │   ├── devfile_editor_component_with_missing_id.yaml
    │               │   │   │   ├── devfile_editor_component_with_multiple_colons_in_id.yaml
    │               │   │   │   ├── devfile_editor_component_with_registry_in_id.yaml
    │               │   │   │   ├── devfile_editor_component_without_version.yaml
    │               │   │   │   ├── devfile_editor_plugins.yaml
    │               │   │   │   ├── devfile_editor_plugins_components_with_invalid_memory_limit.yaml
    │               │   │   │   ├── devfile_editor_plugins_components_with_resource_limits.yaml
    │               │   │   │   ├── devfile_plugin_component_with_reference.yaml
    │               │   │   │   └── devfile_plugin_components_with_preferences.yaml
    │               │   │   └── kubernetes_openshift_component/
    │               │   │       ├── devfile_k8s_openshift_component_with_endpoints.yaml
    │               │   │       ├── devfile_k8s_openshift_component_with_env.yaml
    │               │   │       ├── devfile_kubernetes_component.yaml
    │               │   │       ├── devfile_kubernetes_component_absolute_reference.yaml
    │               │   │       ├── devfile_kubernetes_component_content_without_reference.yaml
    │               │   │       ├── devfile_kubernetes_component_reference_and_content_as_block.yaml
    │               │   │       ├── devfile_openshift_component.yaml
    │               │   │       ├── devfile_openshift_component_content_without_reference.yaml
    │               │   │       ├── devfile_openshift_component_reference_and_content.yaml
    │               │   │       ├── devfile_openshift_component_reference_and_content_as_block.yaml
    │               │   │       ├── devfile_openshift_component_with_indistinctive_field_id.yaml
    │               │   │       └── devfile_openshift_component_with_missing_reference_and_referenceContent.yaml
    │               │   ├── url_fetcher_test_resource.json
    │               │   └── workspace_config.json
    │               ├── invalid-json.json
    │               ├── invalid-recipes.json
    │               ├── logback-test.xml
    │               ├── recipes.json
    │               ├── ws_conf_machine_source_dockerfile_content.json
    │               ├── ws_conf_machine_source_dockerfile_location.json
    │               └── ws_conf_machine_source_dockerimage.json
    ├── che-core-api-workspace-shared/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── java/
    │               └── org/
    │                   └── eclipse/
    │                       └── che/
    │                           └── api/
    │                               └── workspace/
    │                                   └── shared/
    │                                       ├── Constants.java
    │                                       ├── ProjectProblemImpl.java
    │                                       ├── dto/
    │                                       │   ├── BrokerStatus.java
    │                                       │   ├── CommandDto.java
    │                                       │   ├── EnvironmentDto.java
    │                                       │   ├── MachineConfigDto.java
    │                                       │   ├── MachineDto.java
    │                                       │   ├── ProjectConfigDto.java
    │                                       │   ├── ProjectProblemDto.java
    │                                       │   ├── RecipeDto.java
    │                                       │   ├── RuntimeDto.java
    │                                       │   ├── RuntimeIdentityDto.java
    │                                       │   ├── ServerConfigDto.java
    │                                       │   ├── ServerDto.java
    │                                       │   ├── SourceStorageDto.java
    │                                       │   ├── VolumeDto.java
    │                                       │   ├── WarningDto.java
    │                                       │   ├── WorkspaceConfigDto.java
    │                                       │   ├── WorkspaceDto.java
    │                                       │   ├── devfile/
    │                                       │   │   ├── ComponentDto.java
    │                                       │   │   ├── DevfileActionDto.java
    │                                       │   │   ├── DevfileCommandDto.java
    │                                       │   │   ├── DevfileDto.java
    │                                       │   │   ├── DevfileVolumeDto.java
    │                                       │   │   ├── EndpointDto.java
    │                                       │   │   ├── EntrypointDto.java
    │                                       │   │   ├── EnvDto.java
    │                                       │   │   ├── MetadataDto.java
    │                                       │   │   ├── PreviewUrlDto.java
    │                                       │   │   ├── ProjectDto.java
    │                                       │   │   └── SourceDto.java
    │                                       │   └── event/
    │                                       │       ├── BootstrapperStatusEvent.java
    │                                       │       ├── BrokerLogEvent.java
    │                                       │       ├── BrokerStatusChangedEvent.java
    │                                       │       ├── MachineLogEvent.java
    │                                       │       ├── MachineStatusEvent.java
    │                                       │       ├── RuntimeLogEvent.java
    │                                       │       ├── RuntimeStatusEvent.java
    │                                       │       ├── ServerStatusEvent.java
    │                                       │       └── WorkspaceStatusEvent.java
    │                                       └── event/
    │                                           ├── WorkspaceCreatedEvent.java
    │                                           └── WorkspaceRemovedEvent.java
    ├── che-core-sql-schema/
    │   ├── pom.xml
    │   └── src/
    │       └── main/
    │           └── resources/
    │               └── che-schema/
    │                   ├── 5.0.0-M8/
    │                   │   ├── 1__init.sql
    │                   │   └── mysql/
    │                   │       └── 1__init.sql
    │                   ├── 5.0.0-M9/
    │                   │   ├── 1__add_index_on_workspace_temporary.sql
    │                   │   ├── 2__update_local_links_in_environments.sql
    │                   │   └── mysql/
    │                   │       └── 2__update_local_links_in_environments.sql
    │                   ├── 5.11.0/
    │                   │   ├── 1__optimize_user_search.sql
    │                   │   └── postgresql/
    │                   │       └── 1__optimize_user_search.sql
    │                   ├── 5.2.0/
    │                   │   ├── 1__increase_project_attributes_values_length.sql
    │                   │   └── mysql/
    │                   │       └── 1__increase_project_attributes_values_length.sql
    │                   ├── 5.4.0/
    │                   │   ├── 1__drop_user_to_account_relation.sql
    │                   │   ├── 2__create_missed_account_indexes.sql
    │                   │   └── mysql/
    │                   │       └── 1__drop_user_to_account_relation.sql
    │                   ├── 5.6.0/
    │                   │   └── 1__add_exec_agent_where_terminal_agent_is_present.sql
    │                   ├── 5.7.0/
    │                   │   ├── 1__add_factory.sql
    │                   │   ├── 2__remove_match_policy.sql
    │                   │   └── mysql/
    │                   │       └── 1__add_factory.sql
    │                   ├── 5.8.0/
    │                   │   └── 1__add_foreigh_key_indexes.sql
    │                   ├── 6.0.0/
    │                   │   ├── 10__move_dockerimage_recipe_location_to_content.sql
    │                   │   ├── 11__increase_workspace_attributes_values_length.sql
    │                   │   ├── 12__remove_stack_sources.sql
    │                   │   ├── 1__add_path_to_serverconf.sql
    │                   │   ├── 2__rename_agents_to_installers.sql
    │                   │   ├── 3__add_installer.sql
    │                   │   ├── 4__remove_old_recipe.sql
    │                   │   ├── 5__add_machine_env.sql
    │                   │   ├── 6__remove_snapshots.sql
    │                   │   ├── 7__add_machine_volumes.sql
    │                   │   ├── 8__add_serverconf_attributes.sql
    │                   │   ├── 9__increase_externalmachine_env_value_length.sql
    │                   │   └── mysql/
    │                   │       ├── 11__increase_workspace_attributes_values_length.sql
    │                   │       └── 9__increase_externalmachine_env_value_length.sql
    │                   ├── 6.10.0/
    │                   │   ├── 1__add_workspace_cfg_attributes.sql
    │                   │   └── 2__change_signature_key_pair_id.sql
    │                   ├── 6.11.0/
    │                   │   ├── 1__add_signature_key_constraints.sql
    │                   │   └── mysql/
    │                   │       └── 1__add_signature_key_constraints.sql
    │                   ├── 6.12.0/
    │                   │   ├── 1__rename_project_attributes_values_field.sql
    │                   │   └── mysql/
    │                   │       └── 1__rename_project_attributes_values_field.sql
    │                   ├── 6.15.0/
    │                   │   ├── 1__remove_not_null_constraint_from_env_name_fields.sql
    │                   │   ├── 2__add_commands_to_k8s_runtime.sql
    │                   │   ├── mysql/
    │                   │   │   └── 1__remove_not_null_constraint_from_env_name_fields.sql
    │                   │   └── postgresql/
    │                   │       └── 1__remove_not_null_constraint_from_env_name_fields.sql
    │                   ├── 6.16.0/
    │                   │   ├── 1__increase_workspace_config_attributes_values_length.sql
    │                   │   ├── 2__create_workspace_activity_table.sql
    │                   │   ├── 3__bootstrap_ws_activity_data.sql
    │                   │   └── mysql/
    │                   │       ├── 1__increase_workspace_config_attributes_values_length.sql
    │                   │       └── 3__bootstrap_ws_activity_data.sql
    │                   ├── 6.17.0/
    │                   │   └── 1__convert_enu
Download .txt
Showing preview only (2,138K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (21308 symbols across 1545 files)

FILE: assembly/assembly-root-war/src/main/java/org/eclipse/che/ApiAccessRejectionFilter.java
  class ApiAccessRejectionFilter (line 30) | @Singleton
    method doFilter (line 36) | @Override
    method init (line 44) | @Override
    method destroy (line 47) | @Override

FILE: assembly/assembly-root-war/src/main/java/org/eclipse/che/DashboardModule.java
  class DashboardModule (line 17) | @DynaModule
    method configureServlets (line 19) | @Override

FILE: assembly/assembly-root-war/src/main/java/org/eclipse/che/DashboardRedirectionFilter.java
  class DashboardRedirectionFilter (line 31) | @Singleton
    method doFilter (line 42) | @Override
    method init (line 56) | @Override
    method destroy (line 59) | @Override

FILE: assembly/assembly-root-war/src/main/webapp/_app/keycloackLoader.js
  class KeycloakLoader (line 12) | class KeycloakLoader {
    method loadKeycloakSettings (line 16) | loadKeycloakSettings() {
    method injectKeycloakScript (line 47) | injectKeycloakScript(keycloakSettings) {
    method initKeycloak (line 70) | initKeycloak(keycloakSettings) {

FILE: assembly/assembly-root-war/src/main/webapp/_app/loader.js
  class Loader (line 14) | class Loader {
    method constructor (line 16) | constructor() {
    method hideLoader (line 23) | hideLoader() {
    method error (line 34) | error(message) {
    method onclickReload (line 53) | onclickReload() {
    method getQueryParam (line 62) | getQueryParam(name) {
    method asyncGetWorkspace (line 79) | asyncGetWorkspace(workspaceId) {
    method setAuthorizationHeader (line 104) | setAuthorizationHeader(xhr) {
    method asyncGetMatchedServer (line 127) | asyncGetMatchedServer(workspace, redirectUrl) {
    method asyncGetWsToken (line 161) | asyncGetWsToken(workspace) {
    method asyncAuthenticate (line 176) | asyncAuthenticate(redirectUrl, endpointOrigin, token) {
    method getRequestErrorMessage (line 200) | getRequestErrorMessage(xhr) {

FILE: assembly/assembly-root-war/src/main/webapp/_app/oauthLoader.js
  function error (line 18) | function error(message) {
  function getQueryParams (line 32) | function getQueryParams(name) {
  function asyncGetUserId (line 40) | function asyncGetUserId() {
  function setAuthorizationHeader (line 65) | function setAuthorizationHeader(xhr) {
  function postMessage (line 82) | function postMessage(message) {
  function getWorkspace (line 92) | function getWorkspace(workspaceId) {
  function parseToken (line 114) | function parseToken (token) {

FILE: assembly/assembly-root-war/src/test/java/org/eclipse/che/ApiAccessRejectionFilterTest.java
  class ApiAccessRejectionFilterTest (line 32) | @Listeners(value = {MockitoTestNGListener.class})
    method shouldReturnError (line 44) | @Test

FILE: assembly/assembly-root-war/src/test/java/org/eclipse/che/DashboardRedirectionFilterTest.java
  class DashboardRedirectionFilterTest (line 38) | @Listeners(value = {MockitoTestNGListener.class})
    method shouldRedirectIfGetRequestIsNotNamespaceWorkspaceName (line 48) | @Test(dataProvider = "nonNamespacePathProvider")
    method shouldRedirectIfHEADRequestIsNotNamespaceWorkspaceName (line 65) | @Test(dataProvider = "nonNamespacePathProvider")
    method nonProjectPathProvider (line 82) | @DataProvider(name = "nonNamespacePathProvider")
    method shouldSkipRequestToAppResources (line 89) | @Test
    method shouldSkipNotGETNorHEADRequest (line 102) | @Test(dataProvider = "notGETNorHEADMethodProvider")
    method notGETNorHEADMethodProvider (line 115) | @DataProvider(name = "notGETNorHEADMethodProvider")

FILE: assembly/assembly-swagger-war/src/main/webapp/swagger-ui-bundle.js
  function n (line 2) | function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function t (line 2) | function t(e,t){t&&(e.prototype=Object.create(t.prototype)),e.prototype....
  function n (line 2) | function n(e){return i(e)?e:J(e)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function r (line 2) | function r(e){return s(e)?e:K(e)}
  function o (line 2) | function o(e){return u(e)?e:Y(e)}
  function a (line 2) | function a(e){return i(e)&&!c(e)?e:G(e)}
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function i (line 2) | function i(e){return!(!e||!e[p])}
  function s (line 2) | function s(e){return!(!e||!e[f])}
  function u (line 2) | function u(e){return!(!e||!e[h])}
  function c (line 2) | function c(e){return s(e)||u(e)}
  function l (line 2) | function l(e){return!(!e||!e[d])}
  function x (line 2) | function x(e){return e.value=!1,e}
  function E (line 2) | function E(e){e&&(e.value=!0)}
  function S (line 2) | function S(){}
  function C (line 2) | function C(e,t){t=t||0;for(var n=Math.max(0,e.length-t),r=new Array(n),o...
  function A (line 2) | function A(e){return void 0===e.size&&(e.size=e.__iterate(O)),e.size}
  function k (line 2) | function k(e,t){if("number"!=typeof t){var n=t>>>0;if(""+n!==t||42949672...
  function O (line 2) | function O(){return!0}
  function j (line 2) | function j(e,t,n){return(0===e||void 0!==n&&e<=-n)&&(void 0===t||void 0!...
  function T (line 2) | function T(e,t){return P(e,t,0)}
  function I (line 2) | function I(e,t){return P(e,t,t)}
  function P (line 2) | function P(e,t,n){return void 0===e?n:e<0?Math.max(0,t+e):void 0===t?e:M...
  function F (line 2) | function F(e){this.next=e}
  function U (line 2) | function U(e,t,n,r){var o=0===e?t:1===e?n:[t,n];return r?r.value=o:r={va...
  function q (line 2) | function q(){return{value:void 0,done:!0}}
  function z (line 2) | function z(e){return!!H(e)}
  function V (line 2) | function V(e){return e&&"function"==typeof e.next}
  function W (line 2) | function W(e){var t=H(e);return t&&t.call(e)}
  function H (line 2) | function H(e){var t=e&&(D&&e[D]||e[L]);if("function"==typeof t)return t}
  function $ (line 2) | function $(e){return e&&"number"==typeof e.length}
  function J (line 2) | function J(e){return null==e?ie():i(e)?e.toSeq():ce(e)}
  function K (line 2) | function K(e){return null==e?ie().toKeyedSeq():i(e)?s(e)?e.toSeq():e.fro...
  function Y (line 2) | function Y(e){return null==e?ie():i(e)?s(e)?e.entrySeq():e.toIndexedSeq(...
  function G (line 2) | function G(e){return(null==e?ie():i(e)?s(e)?e.entrySeq():e:ue(e)).toSetS...
  function te (line 2) | function te(e){this._array=e,this.size=e.length}
  function ne (line 2) | function ne(e){var t=Object.keys(e);this._object=e,this._keys=t,this.siz...
  function re (line 2) | function re(e){this._iterable=e,this.size=e.length||e.size}
  function oe (line 2) | function oe(e){this._iterator=e,this._iteratorCache=[]}
  function ae (line 2) | function ae(e){return!(!e||!e[ee])}
  function ie (line 2) | function ie(){return Z||(Z=new te([]))}
  function se (line 2) | function se(e){var t=Array.isArray(e)?new te(e).fromEntrySeq():V(e)?new ...
  function ue (line 2) | function ue(e){var t=le(e);if(!t)throw new TypeError("Expected Array or ...
  function ce (line 2) | function ce(e){var t=le(e)||"object"==typeof e&&new ne(e);if(!t)throw ne...
  function le (line 2) | function le(e){return $(e)?new te(e):V(e)?new oe(e):z(e)?new re(e):void 0}
  function pe (line 2) | function pe(e,t,n,r){var o=e._cache;if(o){for(var a=o.length-1,i=0;i<=a;...
  function fe (line 2) | function fe(e,t,n,r){var o=e._cache;if(o){var a=o.length-1,i=0;return ne...
  function he (line 2) | function he(e,t){return t?de(t,e,"",{"":e}):me(e)}
  function de (line 2) | function de(e,t,n,r){return Array.isArray(t)?e.call(r,n,Y(t).map((functi...
  function me (line 2) | function me(e){return Array.isArray(e)?Y(e).map(me).toList():ve(e)?K(e)....
  function ve (line 2) | function ve(e){return e&&(e.constructor===Object||void 0===e.constructor)}
  function ge (line 2) | function ge(e,t){if(e===t||e!=e&&t!=t)return!0;if(!e||!t)return!1;if("fu...
  function ye (line 2) | function ye(e,t){if(e===t)return!0;if(!i(t)||void 0!==e.size&&void 0!==t...
  function be (line 2) | function be(e,t){if(!(this instanceof be))return new be(e,t);if(this._va...
  function _e (line 2) | function _e(e,t){if(!e)throw new Error(t)}
  function we (line 2) | function we(e,t,n){if(!(this instanceof we))return new we(e,t,n);if(_e(0...
  function xe (line 2) | function xe(){throw TypeError("Abstract")}
  function Ee (line 2) | function Ee(){}
  function Se (line 2) | function Se(){}
  function Ce (line 2) | function Ce(){}
  function ke (line 2) | function ke(e){return e>>>1&1073741824|3221225471&e}
  function Oe (line 2) | function Oe(e){if(!1===e||null==e)return 0;if("function"==typeof e.value...
  function je (line 2) | function je(e){var t=ze[e];return void 0===t&&(t=Te(e),qe===Ue&&(qe=0,ze...
  function Te (line 2) | function Te(e){for(var t=0,n=0;n<e.length;n++)t=31*t+e.charCodeAt(n)|0;r...
  function Ie (line 2) | function Ie(e){var t;if(De&&void 0!==(t=Re.get(e)))return t;if(void 0!==...
  function Me (line 2) | function Me(e){if(e&&e.nodeType>0)switch(e.nodeType){case 1:return e.uni...
  function Ve (line 2) | function Ve(e){_e(e!==1/0,"Cannot perform this action with an infinite s...
  function We (line 2) | function We(e){return null==e?ot():He(e)&&!l(e)?e:ot().withMutations((fu...
  function He (line 2) | function He(e){return!(!e||!e[Je])}
  function Ye (line 2) | function Ye(e,t){this.ownerID=e,this.entries=t}
  function Ge (line 2) | function Ge(e,t,n){this.ownerID=e,this.bitmap=t,this.nodes=n}
  function Ze (line 2) | function Ze(e,t,n){this.ownerID=e,this.count=t,this.nodes=n}
  function Xe (line 2) | function Xe(e,t,n){this.ownerID=e,this.keyHash=t,this.entries=n}
  function Qe (line 2) | function Qe(e,t,n){this.ownerID=e,this.keyHash=t,this.entry=n}
  function et (line 2) | function et(e,t,n){this._type=t,this._reverse=n,this._stack=e._root&&nt(...
  function tt (line 2) | function tt(e,t){return U(e,t[0],t[1])}
  function nt (line 2) | function nt(e,t){return{node:e,index:0,__prev:t}}
  function rt (line 2) | function rt(e,t,n,r){var o=Object.create(Ke);return o.size=e,o._root=t,o...
  function ot (line 2) | function ot(){return $e||($e=rt(0))}
  function at (line 2) | function at(e,t,n){var r,o;if(e._root){var a=x(_),i=x(w);if(r=it(e._root...
  function it (line 2) | function it(e,t,n,r,o,a,i,s){return e?e.update(t,n,r,o,a,i,s):a===b?e:(E...
  function st (line 2) | function st(e){return e.constructor===Qe||e.constructor===Xe}
  function ut (line 2) | function ut(e,t,n,r,o){if(e.keyHash===r)return new Xe(t,r,[e.entry,o]);v...
  function ct (line 2) | function ct(e,t,n,r){e||(e=new S);for(var o=new Qe(e,Oe(n),[n,r]),a=0;a<...
  function lt (line 2) | function lt(e,t,n,r){for(var o=0,a=0,i=new Array(n),s=0,u=1,c=t.length;s...
  function pt (line 2) | function pt(e,t,n,r,o){for(var a=0,i=new Array(g),s=0;0!==n;s++,n>>>=1)i...
  function ft (line 2) | function ft(e,t,n){for(var o=[],a=0;a<n.length;a++){var s=n[a],u=r(s);i(...
  function ht (line 2) | function ht(e,t,n){return e&&e.mergeDeep&&i(t)?e.mergeDeep(t):ge(e,t)?e:t}
  function dt (line 2) | function dt(e){return function(t,n,r){if(t&&t.mergeDeepWith&&i(n))return...
  function mt (line 2) | function mt(e,t,n){return 0===(n=n.filter((function(e){return 0!==e.size...
  function vt (line 2) | function vt(e,t,n,r){var o=e===b,a=t.next();if(a.done){var i=o?n:e,s=r(i...
  function gt (line 2) | function gt(e){return e=(e=(858993459&(e-=e>>1&1431655765))+(e>>2&858993...
  function yt (line 2) | function yt(e,t,n,r){var o=r?e:C(e);return o[t]=n,o}
  function bt (line 2) | function bt(e,t,n,r){var o=e.length+1;if(r&&t+1===o)return e[t]=n,e;for(...
  function _t (line 2) | function _t(e,t,n){var r=e.length-1;if(n&&t===r)return e.pop(),e;for(var...
  function St (line 2) | function St(e){var t=Mt();if(null==e)return t;if(Ct(e))return e;var n=o(...
  function Ct (line 2) | function Ct(e){return!(!e||!e[At])}
  function Ot (line 2) | function Ot(e,t){this.array=e,this.ownerID=t}
  function Pt (line 2) | function Pt(e,t){var n=e._origin,r=e._capacity,o=qt(r),a=e._tail;return ...
  function Nt (line 2) | function Nt(e,t,n,r,o,a,i){var s=Object.create(kt);return s.size=t-e,s._...
  function Mt (line 2) | function Mt(){return jt||(jt=Nt(0,0,v))}
  function Rt (line 2) | function Rt(e,t,n){if((t=k(e,t))!=t)return e;if(t>=e.size||t<0)return e....
  function Dt (line 2) | function Dt(e,t,n,r,o,a){var i,s=r>>>n&y,u=e&&s<e.array.length;if(!u&&vo...
  function Lt (line 2) | function Lt(e,t){return t&&e&&t===e.ownerID?e:new Ot(e?e.array.slice():[...
  function Bt (line 2) | function Bt(e,t){if(t>=qt(e._capacity))return e._tail;if(t<1<<e._level+v...
  function Ft (line 2) | function Ft(e,t,n){void 0!==t&&(t|=0),void 0!==n&&(n|=0);var r=e.__owner...
  function Ut (line 2) | function Ut(e,t,n){for(var r=[],a=0,s=0;s<n.length;s++){var u=n[s],c=o(u...
  function qt (line 2) | function qt(e){return e<g?0:e-1>>>v<<v}
  function zt (line 2) | function zt(e){return null==e?Ht():Vt(e)?e:Ht().withMutations((function(...
  function Vt (line 2) | function Vt(e){return He(e)&&l(e)}
  function Wt (line 2) | function Wt(e,t,n,r){var o=Object.create(zt.prototype);return o.size=e?e...
  function Ht (line 2) | function Ht(){return Tt||(Tt=Wt(ot(),Mt()))}
  function $t (line 2) | function $t(e,t,n){var r,o,a=e._map,i=e._list,s=a.get(t),u=void 0!==s;if...
  function Jt (line 2) | function Jt(e,t){this._iter=e,this._useKeys=t,this.size=e.size}
  function Kt (line 2) | function Kt(e){this._iter=e,this.size=e.size}
  function Yt (line 2) | function Yt(e){this._iter=e,this.size=e.size}
  function Gt (line 2) | function Gt(e){this._iter=e,this.size=e.size}
  function Zt (line 2) | function Zt(e){var t=bn(e);return t._iter=e,t.size=e.size,t.flip=functio...
  function Xt (line 2) | function Xt(e,t,n){var r=bn(e);return r.size=e.size,r.has=function(t){re...
  function Qt (line 2) | function Qt(e,t){var n=bn(e);return n._iter=e,n.size=e.size,n.reverse=fu...
  function en (line 2) | function en(e,t,n,r){var o=bn(e);return r&&(o.has=function(r){var o=e.ge...
  function tn (line 2) | function tn(e,t,n){var r=We().asMutable();return e.__iterate((function(o...
  function nn (line 2) | function nn(e,t,n){var r=s(e),o=(l(e)?zt():We()).asMutable();e.__iterate...
  function rn (line 2) | function rn(e,t,n,r){var o=e.size;if(void 0!==t&&(t|=0),void 0!==n&&(n==...
  function on (line 2) | function on(e,t,n){var r=bn(e);return r.__iterateUncached=function(r,o){...
  function an (line 2) | function an(e,t,n,r){var o=bn(e);return o.__iterateUncached=function(o,a...
  function sn (line 2) | function sn(e,t){var n=s(e),o=[e].concat(t).map((function(e){return i(e)...
  function un (line 2) | function un(e,t,n){var r=bn(e);return r.__iterateUncached=function(r,o){...
  function cn (line 2) | function cn(e,t,n){var r=yn(e);return e.toSeq().map((function(o,a){retur...
  function ln (line 2) | function ln(e,t){var n=bn(e);return n.size=e.size&&2*e.size-1,n.__iterat...
  function pn (line 2) | function pn(e,t,n){t||(t=wn);var r=s(e),o=0,a=e.toSeq().map((function(t,...
  function fn (line 2) | function fn(e,t,n){if(t||(t=wn),n){var r=e.toSeq().map((function(t,r){re...
  function hn (line 2) | function hn(e,t,n){var r=e(n,t);return 0===r&&n!==t&&(null==n||n!=n)||r>0}
  function dn (line 2) | function dn(e,t,r){var o=bn(e);return o.size=new te(r).map((function(e){...
  function mn (line 2) | function mn(e,t){return ae(e)?t:e.constructor(t)}
  function vn (line 2) | function vn(e){if(e!==Object(e))throw new TypeError("Expected [K, V] tup...
  function gn (line 2) | function gn(e){return Ve(e.size),A(e)}
  function yn (line 2) | function yn(e){return s(e)?r:u(e)?o:a}
  function bn (line 2) | function bn(e){return Object.create((s(e)?K:u(e)?Y:G).prototype)}
  function _n (line 2) | function _n(){return this._iter.cacheResult?(this._iter.cacheResult(),th...
  function wn (line 2) | function wn(e,t){return e>t?1:e<t?-1:0}
  function xn (line 2) | function xn(e){var t=W(e);if(!t){if(!$(e))throw new TypeError("Expected ...
  function En (line 2) | function En(e,t){var n,r=function(a){if(a instanceof r)return a;if(!(thi...
  function Cn (line 2) | function Cn(e,t,n){var r=Object.create(Object.getPrototypeOf(e));return ...
  function An (line 2) | function An(e){return e._name||e.constructor.name||"Record"}
  function kn (line 2) | function kn(e,t){try{t.forEach(On.bind(void 0,e))}catch(e){}}
  function On (line 2) | function On(e,t){Object.defineProperty(e,t,{get:function(){return this.g...
  function jn (line 2) | function jn(e){return null==e?Dn():Tn(e)&&!l(e)?e:Dn().withMutations((fu...
  function Tn (line 2) | function Tn(e){return!(!e||!e[Pn])}
  function Mn (line 2) | function Mn(e,t){return e.__ownerID?(e.size=t.size,e._map=t,e):t===e._ma...
  function Rn (line 2) | function Rn(e,t){var n=Object.create(Nn);return n.size=e?e.size:0,n._map...
  function Dn (line 2) | function Dn(){return In||(In=Rn(ot()))}
  function Ln (line 2) | function Ln(e){return null==e?zn():Bn(e)?e:zn().withMutations((function(...
  function Bn (line 2) | function Bn(e){return Tn(e)&&l(e)}
  function qn (line 2) | function qn(e,t){var n=Object.create(Un);return n.size=e?e.size:0,n._map...
  function zn (line 2) | function zn(){return Fn||(Fn=qn(Ht()))}
  function Vn (line 2) | function Vn(e){return null==e?Yn():Wn(e)?e:Yn().unshiftAll(e)}
  function Wn (line 2) | function Wn(e){return!(!e||!e[$n])}
  function Kn (line 2) | function Kn(e,t,n,r){var o=Object.create(Jn);return o.size=e,o._head=t,o...
  function Yn (line 2) | function Yn(){return Hn||(Hn=Kn(0))}
  function Gn (line 2) | function Gn(e,t){var n=function(n){e.prototype[n]=t[n]};return Object.ke...
  function Qn (line 2) | function Qn(e,t){return t}
  function er (line 2) | function er(e,t){return[t,e]}
  function tr (line 2) | function tr(e){return function(){return!e.apply(this,arguments)}}
  function nr (line 2) | function nr(e){return function(){return-e.apply(this,arguments)}}
  function rr (line 2) | function rr(e){return"string"==typeof e?JSON.stringify(e):String(e)}
  function or (line 2) | function or(){return C(arguments)}
  function ar (line 2) | function ar(e,t){return e<t?1:e>t?-1:0}
  function ir (line 2) | function ir(e){if(e.size===1/0)return 0;var t=l(e),n=s(e),r=t?1:0;return...
  function sr (line 2) | function sr(e,t){return t=Ae(t,3432918353),t=Ae(t<<15|t>>>-15,461845907)...
  function ur (line 2) | function ur(e,t){return e^t+2654435769+(e<<6)+(e>>2)|0}
  function ye (line 2) | function ye(e){return xe(e)?ge(e)?e.toJS():e:{}}
  function be (line 2) | function be(e){var t,n;if(ge(e))return e;if(e instanceof se.a.File)retur...
  function _e (line 2) | function _e(e){return l()(e)?e:[e]}
  function we (line 2) | function we(e){return"function"==typeof e}
  function xe (line 2) | function xe(e){return!!e&&"object"===i()(e)}
  function Ee (line 2) | function Ee(e){return"function"==typeof e}
  function Se (line 2) | function Se(e){return l()(e)}
  function Ae (line 2) | function Ae(e,t){var n;return S()(n=x()(e)).call(n,(function(n,r){return...
  function ke (line 2) | function ke(e,t){var n;return S()(n=x()(e)).call(n,(function(n,r){var o=...
  function Oe (line 2) | function Oe(e){return function(t){t.dispatch,t.getState;return function(...
  function je (line 2) | function je(e){var t,n=e.keySeq();return n.contains(ve)?ve:O()(t=_()(n)....
  function Te (line 2) | function Te(e,t){if(!W.a.Iterable.isIterable(e))return W.a.List();var n=...
  function Ie (line 2) | function Ie(e){var t,n=[/filename\*=[^']+'\w*'"([^"]+)";?/i,/filename\*=...
  function Pe (line 2) | function Pe(e){return t=e.replace(/\.[^./]*$/,""),Y()(J()(t));var t}
  function Ne (line 2) | function Ne(e,t,n,r,a){if(!t)return[];var s=[],u=t.get("nullable"),c=t.g...
  function $e (line 2) | function $e(e){return"string"!=typeof e||""===e?"":Object(H.sanitizeUrl)...
  function Je (line 2) | function Je(e){return!(!e||D()(e).call(e,"localhost")>=0||D()(e).call(e,...
  function Ke (line 2) | function Ke(e){if(!W.a.OrderedMap.isOrderedMap(e))return null;if(!e.size...
  function Qe (line 2) | function Qe(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?argum...
  function et (line 2) | function et(e){if("string"==typeof e)return e;if(e&&e.toJS&&(e=e.toJS())...
  function tt (line 2) | function tt(e){return"number"==typeof e?e.toString():e}
  function nt (line 2) | function nt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments...
  function rt (line 2) | function rt(e,t){var n,r=nt(e,{returnAll:!0});return _()(n=f()(r).call(r...
  function ot (line 2) | function ot(){return it(fe()(32).toString("base64"))}
  function at (line 2) | function at(e){return it(de()("sha256").update(e).digest("base64"))}
  function it (line 2) | function it(e){return e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=...
  function o (line 2) | function o(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.en...
  function r (line 2) | function r(e,t){return e===t}
  function o (line 2) | function o(e,t,n){if(null===t||null===n||t.length!==n.length)return!1;fo...
  function a (line 2) | function a(e){var t=Array.isArray(e[0])?e[0]:e;if(!t.every((function(e){...
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function a (line 2) | function a(t){return"function"==typeof r&&"symbol"==typeof o?(e.exports=...
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function f (line 2) | function f(e,t){var n=r(e);if(o){var s=o(e);t&&(s=a(s).call(s,(function(...
    method constructor (line 2) | constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}
    method top (line 2) | get top(){return this.stack[this.stack.length-1]}
    method root (line 2) | get root(){return this.rootNode}
    method add (line 2) | add(e){this.top.children.push(e)}
    method openNode (line 2) | openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}
    method closeNode (line 2) | closeNode(){if(this.stack.length>1)return this.stack.pop()}
    method closeAllNodes (line 2) | closeAllNodes(){for(;this.closeNode(););}
    method toJSON (line 2) | toJSON(){return JSON.stringify(this.rootNode,null,4)}
    method walk (line 2) | walk(e){return this.constructor._walk(e,this.rootNode)}
    method _walk (line 2) | static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e...
    method _collapse (line 2) | static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(...
  function u (line 2) | function u(e){var t=typeof e;return Array.isArray(e)?"array":e instanceo...
  function c (line 2) | function c(e){function t(t,n,r,o,i,s){for(var u=arguments.length,c=Array...
  function l (line 2) | function l(e,t){return n="Iterable."+e,r=function(e){return o.Iterable.i...
  function o (line 2) | function o(){return e.exports=o=r||function(e){for(var t=1;t<arguments.l...
  function c (line 2) | function c(e){var t=e.get("openapi");return"string"==typeof t&&(i()(t).c...
  function l (line 2) | function l(e){var t=e.get("swagger");return"string"==typeof t&&i()(t).ca...
  function p (line 2) | function p(e){return function(t,n){return function(r){return n&&n.specSe...
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  function i (line 2) | function i(e){if(null==e)throw new TypeError("Object.assign cannot be ca...
  function c (line 2) | function c(e,t){return 1===e.nodeType&&e.getAttribute(i)===String(t)||8=...
  function l (line 2) | function l(e){for(var t;t=e._renderedComponent;)e=t;return e}
  function p (line 2) | function p(e,t){var n=l(e);n._hostNode=t,t[u]=n}
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  function f (line 2) | function f(e,t){if(!(e._flags&s.hasCachedChildNodes)){var n=e._renderedC...
    method constructor (line 2) | constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}
    method top (line 2) | get top(){return this.stack[this.stack.length-1]}
    method root (line 2) | get root(){return this.rootNode}
    method add (line 2) | add(e){this.top.children.push(e)}
    method openNode (line 2) | openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}
    method closeNode (line 2) | closeNode(){if(this.stack.length>1)return this.stack.pop()}
    method closeAllNodes (line 2) | closeAllNodes(){for(;this.closeNode(););}
    method toJSON (line 2) | toJSON(){return JSON.stringify(this.rootNode,null,4)}
    method walk (line 2) | walk(e){return this.constructor._walk(e,this.rootNode)}
    method _walk (line 2) | static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e...
    method _collapse (line 2) | static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(...
  function h (line 2) | function h(e){if(e[u])return e[u];for(var t,n,r=[];!e[u];){if(r.push(e),...
    method constructor (line 2) | constructor(e){super(),this.options=e}
    method addKeyword (line 2) | addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNo...
    method addText (line 2) | addText(e){""!==e&&this.add(e)}
    method addSublanguage (line 2) | addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}
    method toHTML (line 2) | toHTML(){return new p(this,this.options).value()}
    method finalize (line 2) | finalize(){return!0}
  function ge (line 2) | function ge(e){var t,n=(t=e,J()(t)?t:"").replace(/\t/g,"  ");if("string"...
  function ye (line 2) | function ye(e){return{type:de,payload:e}}
  function be (line 2) | function be(e){return{type:te,payload:e}}
  function _e (line 2) | function _e(e){return{type:ne,payload:e}}
  function ke (line 2) | function ke(e,t,n,r,o){return{type:re,payload:{path:e,value:r,paramName:...
  function Oe (line 2) | function Oe(e,t,n,r){return{type:re,payload:{path:e,param:t,value:n,isXm...
  function Ne (line 2) | function Ne(e){return{type:fe,payload:{pathMethod:e}}}
  function Me (line 2) | function Me(e,t){return{type:he,payload:{path:e,value:t,key:"consumes_va...
  function Re (line 2) | function Re(e,t){return{type:he,payload:{path:e,value:t,key:"produces_va...
  function ze (line 2) | function ze(e,t){return{type:le,payload:{path:e,method:t}}}
  function Ve (line 2) | function Ve(e,t){return{type:pe,payload:{path:e,method:t}}}
  function We (line 2) | function We(e,t,n){return{type:ve,payload:{scheme:e,path:t,method:n}}}
  function d (line 2) | function d(e,t){return{type:r,payload:{selectedServerUrl:e,namespace:t}}}
  function m (line 2) | function m(e){var t=e.value,n=e.pathMethod;return{type:o,payload:{value:...
  function g (line 2) | function g(e){var t=e.value,n=e.pathMethod,r=e.name;return{type:i,payloa...
  function y (line 2) | function y(e){var t=e.name,n=e.pathMethod,r=e.contextType,o=e.contextNam...
  function b (line 2) | function b(e){var t=e.value,n=e.pathMethod;return{type:u,payload:{value:...
  function _ (line 2) | function _(e){var t=e.value,n=e.path,r=e.method;return{type:c,payload:{v...
  function w (line 2) | function w(e){var t=e.server,n=e.namespace,r=e.key,o=e.val;return{type:l...
  function m (line 2) | function m(e){var t=e.openapi;return!!t&&f()(t,"3")}
  function v (line 2) | function v(e,t){var n=arguments.length>2&&void 0!==arguments[2]?argument...
  function g (line 2) | function g(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?argume...
  function y (line 2) | function y(e,t){var n;return u()(n="".concat(h(t),"-")).call(n,e)}
  function b (line 2) | function b(e,t){return e&&e.paths?function(e,t){return function(e,t,n){i...
  function _ (line 2) | function _(e){var t=e.spec,n=t.paths,r={};if(!n||t.$$normalized)return e...
  function p (line 2) | function p(e){return{type:o,payload:Object(r.serializeError)(e)}}
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  function f (line 2) | function f(e){return{type:a,payload:e}}
    method constructor (line 2) | constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}
    method top (line 2) | get top(){return this.stack[this.stack.length-1]}
    method root (line 2) | get root(){return this.rootNode}
    method add (line 2) | add(e){this.top.children.push(e)}
    method openNode (line 2) | openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}
    method closeNode (line 2) | closeNode(){if(this.stack.length>1)return this.stack.pop()}
    method closeAllNodes (line 2) | closeAllNodes(){for(;this.closeNode(););}
    method toJSON (line 2) | toJSON(){return JSON.stringify(this.rootNode,null,4)}
    method walk (line 2) | walk(e){return this.constructor._walk(e,this.rootNode)}
    method _walk (line 2) | static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e...
    method _collapse (line 2) | static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(...
  function h (line 2) | function h(e){return{type:i,payload:e}}
    method constructor (line 2) | constructor(e){super(),this.options=e}
    method addKeyword (line 2) | addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNo...
    method addText (line 2) | addText(e){""!==e&&this.add(e)}
    method addSublanguage (line 2) | addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}
    method toHTML (line 2) | toHTML(){return new p(this,this.options).value()}
    method finalize (line 2) | finalize(){return!0}
  function d (line 2) | function d(e){return{type:s,payload:e}}
  function m (line 2) | function m(e){return{type:u,payload:e}}
  function v (line 2) | function v(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0...
  function g (line 2) | function g(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0...
  function a (line 2) | function a(e,t){for(var n in e)t[n]=e[n]}
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function i (line 2) | function i(e,t,n){return o(e,t,n)}
  function o (line 2) | function o(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t]...
  function i (line 2) | function i(){return u.TYPED_ARRAY_SUPPORT?2147483647:1073741823}
  function s (line 2) | function s(e,t){if(i()<t)throw new RangeError("Invalid typed array lengt...
  function u (line 2) | function u(e,t,n){if(!(u.TYPED_ARRAY_SUPPORT||this instanceof u))return ...
  function c (line 2) | function c(e,t,n,r){if("number"==typeof t)throw new TypeError('"value" a...
  function l (line 2) | function l(e){if("number"!=typeof e)throw new TypeError('"size" argument...
  function p (line 2) | function p(e,t){if(l(t),e=s(e,t<0?0:0|h(t)),!u.TYPED_ARRAY_SUPPORT)for(v...
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  function f (line 2) | function f(e,t){var n=t.length<0?0:0|h(t.length);e=s(e,n);for(var r=0;r<...
    method constructor (line 2) | constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}
    method top (line 2) | get top(){return this.stack[this.stack.length-1]}
    method root (line 2) | get root(){return this.rootNode}
    method add (line 2) | add(e){this.top.children.push(e)}
    method openNode (line 2) | openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}
    method closeNode (line 2) | closeNode(){if(this.stack.length>1)return this.stack.pop()}
    method closeAllNodes (line 2) | closeAllNodes(){for(;this.closeNode(););}
    method toJSON (line 2) | toJSON(){return JSON.stringify(this.rootNode,null,4)}
    method walk (line 2) | walk(e){return this.constructor._walk(e,this.rootNode)}
    method _walk (line 2) | static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e...
    method _collapse (line 2) | static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(...
  function h (line 2) | function h(e){if(e>=i())throw new RangeError("Attempt to allocate Buffer...
    method constructor (line 2) | constructor(e){super(),this.options=e}
    method addKeyword (line 2) | addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNo...
    method addText (line 2) | addText(e){""!==e&&this.add(e)}
    method addSublanguage (line 2) | addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}
    method toHTML (line 2) | toHTML(){return new p(this,this.options).value()}
    method finalize (line 2) | finalize(){return!0}
  function d (line 2) | function d(e,t){if(u.isBuffer(e))return e.length;if("undefined"!=typeof ...
  function m (line 2) | function m(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)ret...
  function v (line 2) | function v(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}
  function g (line 2) | function g(e,t,n,r,o){if(0===e.length)return-1;if("string"==typeof n?(r=...
  function y (line 2) | function y(e,t,n,r,o){var a,i=1,s=e.length,u=t.length;if(void 0!==r&&("u...
  function b (line 2) | function b(e,t,n,r){n=Number(n)||0;var o=e.length-n;r?(r=Number(r))>o&&(...
  function _ (line 2) | function _(e,t,n,r){return V(q(t,e.length-n),e,n,r)}
  function w (line 2) | function w(e,t,n,r){return V(function(e){for(var t=[],n=0;n<e.length;++n...
  function x (line 2) | function x(e,t,n,r){return w(e,t,n,r)}
  function E (line 2) | function E(e,t,n,r){return V(z(t),e,n,r)}
  function S (line 2) | function S(e,t,n,r){return V(function(e,t){for(var n,r,o,a=[],i=0;i<e.le...
  function C (line 2) | function C(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromBy...
  function A (line 2) | function A(e,t,n){n=Math.min(e.length,n);for(var r=[],o=t;o<n;){var a,i,...
  function O (line 2) | function O(e,t,n){var r="";n=Math.min(e.length,n);for(var o=t;o<n;++o)r+...
  function j (line 2) | function j(e,t,n){var r="";n=Math.min(e.length,n);for(var o=t;o<n;++o)r+...
  function T (line 2) | function T(e,t,n){var r=e.length;(!t||t<0)&&(t=0),(!n||n<0||n>r)&&(n=r);...
  function I (line 2) | function I(e,t,n){for(var r=e.slice(t,n),o="",a=0;a<r.length;a+=2)o+=Str...
  function P (line 2) | function P(e,t,n){if(e%1!=0||e<0)throw new RangeError("offset is not uin...
  function N (line 2) | function N(e,t,n,r,o,a){if(!u.isBuffer(e))throw new TypeError('"buffer" ...
  function M (line 2) | function M(e,t,n,r){t<0&&(t=65535+t+1);for(var o=0,a=Math.min(e.length-n...
  function R (line 2) | function R(e,t,n,r){t<0&&(t=4294967295+t+1);for(var o=0,a=Math.min(e.len...
  function D (line 2) | function D(e,t,n,r,o,a){if(n+r>e.length)throw new RangeError("Index out ...
  function L (line 2) | function L(e,t,n,r,a){return a||D(e,0,n,4),o.write(e,t,n,r,23,4),n+4}
  function B (line 2) | function B(e,t,n,r,a){return a||D(e,0,n,8),o.write(e,t,n,r,52,8),n+8}
  function U (line 2) | function U(e){return e<16?"0"+e.toString(16):e.toString(16)}
  function q (line 2) | function q(e,t){var n;t=t||1/0;for(var r=e.length,o=null,a=[],i=0;i<r;++...
  function z (line 2) | function z(e){return r.toByteArray(function(e){if((e=function(e){return ...
  function V (line 2) | function V(e,t,n,r){for(var o=0;o<r&&!(o+n>=t.length||o>=e.length);++o)t...
  function r (line 2) | function r(e){return null==e}
  function a (line 2) | function a(e,t){var n="",r=e.reason||"(unknown reason)";return e.mark?(e...
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function i (line 2) | function i(e,t){Error.call(this),this.name="YAMLException",this.reason=e...
  function u (line 2) | function u(e,t,n,r,o){var a="",i="",s=Math.floor(o/2)-1;return r-t>s&&(t...
  function c (line 2) | function c(e,t){return o.repeat(" ",t-e.length)+e}
  function d (line 2) | function d(e,t){var n=[];return e[t].forEach((function(e){var t=n.length...
  function m (line 2) | function m(e){return this.extend(e)}
  function r (line 2) | function r(e){e.multi?(n.multi[e.kind].push(e),n.multi.fallback.push(e))...
  function E (line 2) | function E(e){return 48<=e&&e<=55}
  function S (line 2) | function S(e){return 48<=e&&e<=57}
  function Z (line 2) | function Z(e){return Object.prototype.toString.call(e)}
  function X (line 2) | function X(e){return 10===e||13===e}
  function Q (line 2) | function Q(e){return 9===e||32===e}
  function ee (line 2) | function ee(e){return 9===e||32===e||10===e||13===e}
  function te (line 2) | function te(e){return 44===e||91===e||93===e||123===e||125===e}
  function ne (line 2) | function ne(e){var t;return 48<=e&&e<=57?e-48:97<=(t=32|e)&&t<=102?t-97+...
  function re (line 2) | function re(e){return 48===e?"\0":97===e?"":98===e?"\b":116===e||9===e?...
  function oe (line 2) | function oe(e){return e<=65535?String.fromCharCode(e):String.fromCharCod...
  function ue (line 2) | function ue(e,t){this.input=e,this.filename=t.filename||null,this.schema...
  function ce (line 2) | function ce(e,t){var n={name:e.filename,buffer:e.input.slice(0,-1),posit...
  function le (line 2) | function le(e,t){throw ce(e,t)}
  function pe (line 2) | function pe(e,t){e.onWarning&&e.onWarning.call(null,ce(e,t))}
  function he (line 2) | function he(e,t,n,r){var o,a,i,s;if(t<n){if(s=e.input.slice(t,n),r)for(o...
  function de (line 2) | function de(e,t,n,r){var a,i,s,u;for(o.isObject(n)||le(e,"cannot merge m...
  function me (line 2) | function me(e,t,n,r,o,a,i,s,u){var c,l;if(Array.isArray(o))for(c=0,l=(o=...
  function ve (line 2) | function ve(e){var t;10===(t=e.input.charCodeAt(e.position))?e.position+...
  function ge (line 2) | function ge(e,t,n){for(var r=0,o=e.input.charCodeAt(e.position);0!==o;){...
  function ye (line 2) | function ye(e){var t,n=e.position;return!(45!==(t=e.input.charCodeAt(n))...
  function be (line 2) | function be(e,t){1===t?e.result+=" ":t>1&&(e.result+=o.repeat("\n",t-1))}
  function _e (line 2) | function _e(e,t){var n,r,o=e.tag,a=e.anchor,i=[],s=!1;if(-1!==e.firstTab...
  function we (line 2) | function we(e){var t,n,r,o,a=!1,i=!1;if(33!==(o=e.input.charCodeAt(e.pos...
  function xe (line 2) | function xe(e){var t,n;if(38!==(n=e.input.charCodeAt(e.position)))return...
  function Ee (line 2) | function Ee(e,t,n,r,a){var i,s,u,c,l,p,f,h,d,m=1,v=!1,g=!1;if(null!==e.l...
  function Se (line 2) | function Se(e){var t,n,r,o,a=e.position,i=!1;for(e.version=null,e.checkL...
  function Ce (line 2) | function Ce(e,t){t=t||{},0!==(e=String(e)).length&&(10!==e.charCodeAt(e....
  function Ne (line 2) | function Ne(e){var t,n,r;if(t=e.toString(16).toUpperCase(),e<=255)n="x",...
  function Me (line 2) | function Me(e){this.schema=e.schema||W,this.indent=Math.max(1,e.indent||...
  function Re (line 2) | function Re(e,t){for(var n,r=o.repeat(" ",t),a=0,i=-1,s="",u=e.length;a<...
  function De (line 2) | function De(e,t){return"\n"+o.repeat(" ",e.indent*t)}
  function Le (line 2) | function Le(e){return 32===e||9===e}
  function Be (line 2) | function Be(e){return 32<=e&&e<=126||161<=e&&e<=55295&&8232!==e&&8233!==...
  function Fe (line 2) | function Fe(e){return Be(e)&&e!==je&&13!==e&&10!==e}
  function Ue (line 2) | function Ue(e,t,n){var r=Fe(e),o=r&&!Le(e);return(n?r:r&&44!==e&&91!==e&...
  function qe (line 2) | function qe(e,t){var n,r=e.charCodeAt(t);return r>=55296&&r<=56319&&t+1<...
  function ze (line 2) | function ze(e){return/^\n* /.test(e)}
  function Ve (line 2) | function Ve(e,t,n,r,o,a,i,s){var u,c,l=0,p=null,f=!1,h=!1,d=-1!==r,m=-1,...
  function We (line 2) | function We(e,t,n,r,o){e.dump=function(){if(0===t.length)return 2===e.qu...
  function He (line 2) | function He(e,t){var n=ze(e)?String(t):"",r="\n"===e[e.length-1];return ...
  function $e (line 2) | function $e(e){return"\n"===e[e.length-1]?e.slice(0,-1):e}
  function Je (line 2) | function Je(e,t){if(""===e||" "===e[0])return e;for(var n,r,o=/ [^ ]/g,a...
  function Ke (line 2) | function Ke(e,t,n,r){var o,a,i,s="",u=e.tag;for(o=0,a=n.length;o<a;o+=1)...
  function Ye (line 2) | function Ye(e,t,n){var r,o,a,i,u,c;for(a=0,i=(o=n?e.explicitTypes:e.impl...
  function Ge (line 2) | function Ge(e,t,n,r,o,a,i){e.tag=null,e.dump=n,Ye(e,n,!1)||Ye(e,n,!0);va...
  function Ze (line 2) | function Ze(e,t){var n,r,o=[],a=[];for(Xe(e,o,a),n=0,r=a.length;n<r;n+=1...
  function Xe (line 2) | function Xe(e,t,n){var r,o,a;if(null!==e&&"object"==typeof e)if(-1!==(o=...
  function Qe (line 2) | function Qe(e,t){return function(){throw new Error("Function yaml."+e+" ...
  function o (line 2) | function o(e,t,n,o,a,i,s){try{var u=e[i](s),c=u.value}catch(e){return vo...
  function s (line 2) | function s(e){o(i,r,a,s,u,"next",e)}
  function u (line 2) | function u(e){o(i,r,a,s,u,"throw",e)}
  function r (line 2) | function r(e){return function(){return e}}
  function v (line 2) | function v(){x.ReactReconcileTransaction&&m||r("123")}
  function y (line 2) | function y(){this.reinitializeTransaction(),this.dirtyComponentsLength=n...
  function b (line 2) | function b(e,t){return e._mountOrder-t._mountOrder}
  function _ (line 2) | function _(e){var t=e.dirtyComponentsLength;t!==p.length&&r("124",t,p.le...
  function n (line 2) | function n(e){return e instanceof t||e instanceof Date||e instanceof Reg...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function r (line 2) | function r(e){if(e instanceof t){var n=t.alloc?t.alloc(e.length):new t(e...
  function o (line 2) | function o(e){var t=[];return e.forEach((function(e,a){"object"==typeof ...
  function a (line 2) | function a(e,t){return"__proto__"===t?void 0:e[t]}
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function a (line 2) | function a(){this.protocol=null,this.slashes=null,this.auth=null,this.ho...
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function b (line 2) | function b(e,t,n){if(e&&o.isObject(e)&&e instanceof a)return e;var r=new...
  function w (line 2) | function w(e){return{type:h,payload:e}}
  function x (line 2) | function x(e){return{type:d,payload:e}}
  function S (line 2) | function S(e){return{type:m,payload:e}}
  function k (line 2) | function k(e){return{type:g,payload:e}}
  function M (line 2) | function M(e){return{type:b,payload:e}}
  function R (line 2) | function R(e){return{type:_,payload:e}}
  function a (line 2) | function a(){throw new Error("setTimeout has not been defined")}
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function i (line 2) | function i(){throw new Error("clearTimeout has not been defined")}
  function s (line 2) | function s(e){if(n===setTimeout)return setTimeout(e,0);if((n===a||!n)&&s...
  function f (line 2) | function f(){l&&u&&(l=!1,u.length?c=u.concat(c):p=-1,c.length&&h())}
    method constructor (line 2) | constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}
    method top (line 2) | get top(){return this.stack[this.stack.length-1]}
    method root (line 2) | get root(){return this.rootNode}
    method add (line 2) | add(e){this.top.children.push(e)}
    method openNode (line 2) | openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}
    method closeNode (line 2) | closeNode(){if(this.stack.length>1)return this.stack.pop()}
    method closeAllNodes (line 2) | closeAllNodes(){for(;this.closeNode(););}
    method toJSON (line 2) | toJSON(){return JSON.stringify(this.rootNode,null,4)}
    method walk (line 2) | walk(e){return this.constructor._walk(e,this.rootNode)}
    method _walk (line 2) | static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e...
    method _collapse (line 2) | static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(...
  function h (line 2) | function h(){if(!l){var e=s(f);l=!0;for(var t=c.length;t;){for(u=c,c=[];...
    method constructor (line 2) | constructor(e){super(),this.options=e}
    method addKeyword (line 2) | addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNo...
    method addText (line 2) | addText(e){""!==e&&this.add(e)}
    method addSublanguage (line 2) | addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}
    method toHTML (line 2) | toHTML(){return new p(this,this.options).value()}
    method finalize (line 2) | finalize(){return!0}
  function d (line 2) | function d(e,t){this.fun=e,this.array=t}
  function m (line 2) | function m(){}
  function u (line 2) | function u(e,t,n,r){this.dispatchConfig=e,this._targetInst=t,this.native...
  function xe (line 2) | function xe(e,t,n,r){var o;t=t||[];var a=e.getIn(u()(o=["meta","paths"])...
  function Se (line 2) | function Se(e,t,n){var r;t=t||[];var o=we.apply(void 0,u()(r=[e]).call(r...
  function Ce (line 2) | function Ce(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments...
  function Ae (line 2) | function Ae(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments...
  function ke (line 2) | function ke(e,t){var n,r;t=t||[];var o=z(e).getIn(u()(n=["paths"]).call(...
  function Oe (line 2) | function Oe(e,t){var n,r;t=t||[];var o=z(e).getIn(u()(n=["paths"]).call(...
  function je (line 2) | function je(e,t){var n;t=t||[];var r=z(e),a=r.getIn(u()(n=["paths"]).cal...
  function Te (line 2) | function Te(e,t){var n;t=t||[];var r=z(e),a=r.getIn(u()(n=["paths"]).cal...
  function De (line 2) | function De(e){return I.Map.isMap(e)?e:new I.Map}
  function u (line 2) | function u(e){return(e||"").toString().replace(s,"")}
  function p (line 2) | function p(e){var n,r=("undefined"!=typeof window?window:void 0!==t?t:"u...
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  function f (line 2) | function f(e){e=u(e);var t=i.exec(e);return{protocol:t[1]?t[1].toLowerCa...
    method constructor (line 2) | constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}
    method top (line 2) | get top(){return this.stack[this.stack.length-1]}
    method root (line 2) | get root(){return this.rootNode}
    method add (line 2) | add(e){this.top.children.push(e)}
    method openNode (line 2) | openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}
    method closeNode (line 2) | closeNode(){if(this.stack.length>1)return this.stack.pop()}
    method closeAllNodes (line 2) | closeAllNodes(){for(;this.closeNode(););}
    method toJSON (line 2) | toJSON(){return JSON.stringify(this.rootNode,null,4)}
    method walk (line 2) | walk(e){return this.constructor._walk(e,this.rootNode)}
    method _walk (line 2) | static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e...
    method _collapse (line 2) | static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(...
  function h (line 2) | function h(e,t,n){if(e=u(e),!(this instanceof h))return new h(e,t,n);var...
    method constructor (line 2) | constructor(e){super(),this.options=e}
    method addKeyword (line 2) | addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNo...
    method addText (line 2) | addText(e){""!==e&&this.add(e)}
    method addSublanguage (line 2) | addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}
    method toHTML (line 2) | toHTML(){return new p(this,this.options).value()}
    method finalize (line 2) | finalize(){return!0}
  function y (line 2) | function y(e){if(0===e.length||1===e.length)return e;var t,n,r=e.join("....
  function b (line 2) | function b(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[...
  function _ (line 2) | function _(e){return e.join(" ")}
  function w (line 2) | function w(e){var t=e.node,n=e.stylesheet,r=e.style,o=void 0===r?{}:r,a=...
  function E (line 2) | function E(e){var t=e.codeString,n=e.codeStyle,r=e.containerStyle,o=void...
  function S (line 2) | function S(e,t){return{type:"element",tagName:"span",properties:{key:"li...
  function C (line 2) | function C(e,t,n){var r,o={display:"inline-block",minWidth:(r=n,"".conca...
  function A (line 2) | function A(e){var t=e.children,n=e.lineNumber,r=e.lineNumberStyle,o=e.la...
  function k (line 2) | function k(e){for(var t=arguments.length>1&&void 0!==arguments[1]?argume...
  function O (line 2) | function O(e,t,n,r,o,a,i,s,u){var c,l=k(e.value),p=[],f=-1,h=0;function ...
  function j (line 2) | function j(e){var t=e.rows,n=e.stylesheet,r=e.useInlineStyles;return t.m...
  function T (line 2) | function T(e){return e&&void 0!==e.highlightAuto}
  function r (line 2) | function r(e){return function(e){try{return!!JSON.parse(e)}catch(e){retu...
  function u (line 2) | function u(e){return{type:o,payload:e}}
  function c (line 2) | function c(e){return{type:a,payload:e}}
  function l (line 2) | function l(e){var t=!(arguments.length>1&&void 0!==arguments[1])||argume...
  function p (line 2) | function p(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[...
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  function p (line 2) | function p(e){if(!(this instanceof p))return new p(e);i.call(this,e),s.c...
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  function f (line 2) | function f(){this.allowHalfOpen||this._writableState.ended||r.nextTick(h...
    method constructor (line 2) | constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}
    method top (line 2) | get top(){return this.stack[this.stack.length-1]}
    method root (line 2) | get root(){return this.rootNode}
    method add (line 2) | add(e){this.top.children.push(e)}
    method openNode (line 2) | openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}
    method closeNode (line 2) | closeNode(){if(this.stack.length>1)return this.stack.pop()}
    method closeAllNodes (line 2) | closeAllNodes(){for(;this.closeNode(););}
    method toJSON (line 2) | toJSON(){return JSON.stringify(this.rootNode,null,4)}
    method walk (line 2) | walk(e){return this.constructor._walk(e,this.rootNode)}
    method _walk (line 2) | static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e...
    method _collapse (line 2) | static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(...
  function h (line 2) | function h(e){e.end()}
    method constructor (line 2) | constructor(e){super(),this.options=e}
    method addKeyword (line 2) | addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNo...
    method addText (line 2) | addText(e){""!==e&&this.add(e)}
    method addSublanguage (line 2) | addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}
    method toHTML (line 2) | toHTML(){return new p(this,this.options).value()}
    method finalize (line 2) | finalize(){return!0}
  function l (line 2) | function l(e){var t,n={jsSpec:{}},r=u()(c,(function(e,t){try{var r=t.tra...
  function u (line 2) | function u(e){return void 0!==e.ref}
  function c (line 2) | function c(e){return void 0!==e.key}
  function o (line 2) | function o(e,t){this._block=r.alloc(e),this._finalSize=t,this._blockSize...
  function o (line 2) | function o(e,t){return(e&t)===t}
  function o (line 2) | function o(){r.attachRefs(this,this._currentElement)}
  function u (line 2) | function u(e){if(s){var t=e.node,n=e.children;if(n.length)for(var r=0;r<...
  function l (line 2) | function l(){return this.node.nodeName}
  function p (line 2) | function p(e){return{node:e,children:[],html:null,text:null,toString:l}}
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  class n (line 2) | class n extends Error{constructor(e){super(n._prepareSuperMessage(e)),Ob...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function s (line 2) | function s(e,t){return{type:a,payload:o()({},e,t)}}
  function u (line 2) | function u(e){return{type:i,payload:e}}
  function l (line 2) | function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[...
  function C (line 2) | function C(e,t,n){var r;if("function"==typeof t&&void 0===n&&(n=t,t=void...
  function A (line 2) | function A(e,t){var n=t&&t.type;return"Given action "+(n&&'"'+n.toString...
  function k (line 2) | function k(e){for(var t=Object.keys(e),n={},r=0;r<t.length;r++){var o=t[...
  function O (line 2) | function O(e,t){return function(){return t(e.apply(void 0,arguments))}}
  function j (line 2) | function j(e,t){if("function"==typeof e)return O(e,t);if("object"!=typeo...
  function T (line 2) | function T(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=argu...
  function P (line 2) | function P(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=argu...
  function n (line 2) | function n(e){return Object.prototype.toString.call(e)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function u (line 2) | function u(e,t,n){var r=function(e,t,n){var r=t.dispatchConfig.phasedReg...
  function c (line 2) | function c(e){e&&e.dispatchConfig.phasedRegistrationNames&&o.traverseTwo...
  function l (line 2) | function l(e){if(e&&e.dispatchConfig.phasedRegistrationNames){var t=e._t...
  function p (line 2) | function p(e,t,n){if(n&&n.dispatchConfig.registrationName){var r=n.dispa...
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  function f (line 2) | function f(e){e&&e.dispatchConfig.registrationName&&p(e._targetInst,0,e)}
    method constructor (line 2) | constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}
    method top (line 2) | get top(){return this.stack[this.stack.length-1]}
    method root (line 2) | get root(){return this.rootNode}
    method add (line 2) | add(e){this.top.children.push(e)}
    method openNode (line 2) | openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}
    method closeNode (line 2) | closeNode(){if(this.stack.length>1)return this.stack.pop()}
    method closeAllNodes (line 2) | closeAllNodes(){for(;this.closeNode(););}
    method toJSON (line 2) | toJSON(){return JSON.stringify(this.rootNode,null,4)}
    method walk (line 2) | walk(e){return this.constructor._walk(e,this.rootNode)}
    method _walk (line 2) | static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e...
    method _collapse (line 2) | static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(...
  function i (line 2) | function i(e,t,n,o){return r.call(this,e,t,n,o)}
  function I (line 2) | function I(e){var t,n=[],r=u()(e.get("body").entrySeq());try{for(r.s();!...
  function o (line 2) | function o(){return u()(this,o),r.apply(this,arguments)}
  function o (line 2) | function o(){return u()(this,o),r.apply(this,arguments)}
  function i (line 2) | function i(t,n){var o;return u()(this,i),o=r.call(this,t,n),k(e,a,t,{}),o}
  function r (line 2) | function r(){return u()(this,r),n.apply(this,arguments)}
  function u (line 2) | function u(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var...
  function i (line 2) | function i(e,t,n,o){return r.call(this,e,t,n,o)}
  function n (line 2) | function n(e,r){var o;i()(this,n),o=t.call(this,e,r),v()(l()(o),"getDefi...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(e){var r;return i()(this,n),(r=t.call(this,e)).state={loaded:...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function o (line 2) | function o(e){return(r=r||document.createElement("textarea")).innerHTML=...
  function i (line 2) | function i(e,t){return!!e&&a.call(e,t)}
  function s (line 2) | function s(e){var t=[].slice.call(arguments,1);return t.forEach((functio...
  function c (line 2) | function c(e){return e.indexOf("\\")<0?e:e.replace(u,"$1")}
  function l (line 2) | function l(e){return!(e>=55296&&e<=57343)&&(!(e>=64976&&e<=65007)&&(6553...
  function p (line 2) | function p(e){if(e>65535){var t=55296+((e-=65536)>>10),n=56320+(1023&e);...
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  function d (line 2) | function d(e,t){var n=0,r=o(t);return t!==r?r:35===t.charCodeAt(0)&&h.te...
  function m (line 2) | function m(e){return e.indexOf("&")<0?e:e.replace(f,d)}
  function b (line 2) | function b(e){return y[e]}
  function _ (line 2) | function _(e){return v.test(e)?e.replace(g,b):e}
  function x (line 2) | function x(e,t){return++t>=e.length-2?t:"paragraph_open"===e[t].type&&e[...
  function S (line 2) | function S(){this.rules=s({},w),this.getBreak=w.getBreak}
  function C (line 2) | function C(){this.__rules__=[],this.__cache__=null}
  function A (line 2) | function A(e,t,n,r,o){this.src=e,this.env=r,this.options=n,this.parser=t...
  function k (line 2) | function k(e,t){var n,r,o,a=-1,i=e.posMax,s=e.pos,u=e.isInLabel;if(e.isI...
  function O (line 2) | function O(e,t,n,r){var o,a,i,s,u,c;if(42!==e.charCodeAt(0))return-1;if(...
  function j (line 2) | function j(e){var t=m(e);try{t=decodeURI(t)}catch(e){}return encodeURI(t)}
  function T (line 2) | function T(e,t){var n,r,o,a=t,i=e.posMax;if(60===e.src.charCodeAt(t)){fo...
  function I (line 2) | function I(e,t){var n,r=t,o=e.posMax,a=e.src.charCodeAt(t);if(34!==a&&39...
  function P (line 2) | function P(e){return e.trim().replace(/\s+/g," ").toUpperCase()}
  function N (line 2) | function N(e,t,n,r){var o,a,i,s,u,c,l,p,f;if(91!==e.charCodeAt(0))return...
  function R (line 2) | function R(e){return e.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1")}
  function z (line 2) | function z(e,t){return!(t<0||t>=e.length)&&!q.test(e[t])}
  function V (line 2) | function V(e,t,n){return e.substr(0,t)+n+e.substr(t+1)}
  function H (line 2) | function H(){this.options={},this.ruler=new C;for(var e=0;e<W.length;e++...
  function $ (line 2) | function $(e,t,n,r,o){var a,i,s,u,c,l,p;for(this.src=e,this.parser=t,thi...
  function J (line 2) | function J(e,t){var n,r,o;return(r=e.bMarks[t]+e.tShift[t])>=(o=e.eMarks...
  function K (line 2) | function K(e,t){var n,r=e.bMarks[t]+e.tShift[t],o=e.eMarks[t];if(r+1>=o)...
  function X (line 2) | function X(e,t){var n=e.bMarks[t]+e.blkIndent,r=e.eMarks[t];return e.src...
  function Q (line 2) | function Q(e,t){var n,r,o=e.bMarks[t]+e.tShift[t],a=e.eMarks[t];return o...
  function te (line 2) | function te(){this.ruler=new C;for(var e=0;e<ee.length;e++)this.ruler.pu...
  function ae (line 2) | function ae(e){switch(e){case 10:case 92:case 96:case 42:case 95:case 94...
  function ue (line 2) | function ue(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122}
  function ce (line 2) | function ce(e,t){var n,r,o,a=t,i=!0,s=!0,u=e.posMax,c=e.src.charCodeAt(t...
  function me (line 2) | function me(e,t){return e=e.source,t=t||"",function n(r,o){return r?(o=o...
  function Ee (line 2) | function Ee(){this.ruler=new C;for(var e=0;e<xe.length;e++)this.ruler.pu...
  function Se (line 2) | function Se(e){var t=e.trim().toLowerCase();return-1===(t=m(t)).indexOf(...
  function Ae (line 2) | function Ae(e,t,n){this.src=t,this.env=n,this.options=e.options,this.tok...
  function ke (line 2) | function ke(e,t){"string"!=typeof e&&(t=e,e="default"),t&&null!=t.linkif...
  function i (line 2) | function i(e,t){if(Array.prototype.indexOf)return e.indexOf(t);for(var n...
  function s (line 2) | function s(e,t){for(var n=e.length-1;n>=0;n--)!0===t(e[n])&&e.splice(n,1)}
  function u (line 2) | function u(e){throw new Error("Unhandled case for value: '"+e+"'")}
  function e (line 2) | function e(e){void 0===e&&(e={}),this.tagName="",this.attrs={},this.inne...
  function e (line 2) | function e(e){void 0===e&&(e={}),this.newWindow=!1,this.truncate={},this...
  function e (line 2) | function e(e){this.__jsduckDummyDocProp=null,this.matchedText="",this.of...
  function h (line 2) | function h(e,t){function n(){this.constructor=e}f(e,t),e.prototype=null=...
    method constructor (line 2) | constructor(e){super(),this.options=e}
    method addKeyword (line 2) | addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNo...
    method addText (line 2) | addText(e){""!==e&&this.add(e)}
    method addSublanguage (line 2) | addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}
    method toHTML (line 2) | toHTML(){return new p(this,this.options).value()}
    method finalize (line 2) | finalize(){return!0}
  function t (line 2) | function t(t){var n=e.call(this,t)||this;return n.email="",n.email=t.ema...
  function t (line 2) | function t(t){var n=e.call(this,t)||this;return n.serviceName="",n.hasht...
  function t (line 2) | function t(t){var n=e.call(this,t)||this;return n.serviceName="twitter",...
  function t (line 2) | function t(t){var n=e.call(this,t)||this;return n.number="",n.plusSign=!...
  function t (line 2) | function t(t){var n=e.call(this,t)||this;return n.url="",n.urlMatchType=...
  function t (line 2) | function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.loca...
  function h (line 2) | function h(e){"m"===e?E(1):n.test(e)&&E()}
    method constructor (line 2) | constructor(e){super(),this.options=e}
    method addKeyword (line 2) | addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNo...
    method addText (line 2) | addText(e){""!==e&&this.add(e)}
    method addSublanguage (line 2) | addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}
    method toHTML (line 2) | toHTML(){return new p(this,this.options).value()}
    method finalize (line 2) | finalize(){return!0}
  function m (line 2) | function m(e,t){":"===e?n.test(t)?(l=2,p=new z(d({},p,{hasMailtoPrefix:!...
  function g (line 2) | function g(e){"."===e?l=3:"@"===e?l=4:n.test(e)||S()}
  function y (line 2) | function y(e){"."===e||"@"===e?S():n.test(e)?l=2:S()}
  function b (line 2) | function b(e){L.test(e)?l=5:S()}
  function _ (line 2) | function _(e){"."===e?l=7:"-"===e?l=6:L.test(e)||C()}
  function w (line 2) | function w(e){"-"===e||"."===e?C():L.test(e)?l=5:C()}
  function x (line 2) | function x(e){"."===e||"-"===e?C():L.test(e)?(l=5,p=new z(d({},p,{hasDom...
  function E (line 2) | function E(e){void 0===e&&(e=2),l=e,p=new z({idx:c})}
  function S (line 2) | function S(){l=0,p=i}
  function C (line 2) | function C(){if(p.hasDomainDot){var n=e.slice(p.idx,c);/[-.]$/.test(n)&&...
  function e (line 2) | function e(){}
  function t (line 2) | function t(t){var n=e.call(this,t)||this;return n.stripPrefix={scheme:!0...
  function t (line 2) | function t(t){var n=e.call(this,t)||this;return n.serviceName="twitter",...
  function t (line 2) | function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.matc...
  function t (line 2) | function t(t){var n=e.call(this,t)||this;return n.serviceName="twitter",...
  function re (line 2) | function re(e,t){for(var n,r=t.onOpenTag,o=t.onCloseTag,a=t.onText,i=t.o...
  function e (line 2) | function e(t){void 0===t&&(t={}),this.version=e.version,this.urls={},thi...
  function se (line 2) | function se(e){return/^<\/a\s*>/i.test(e)}
  function ue (line 2) | function ue(){var e=[],t=new ae({stripPrefix:!1,url:!0,email:!0,replaceF...
  function ce (line 2) | function ce(e){var t,n,r,o,a,i,s,u,c,l,p,f,h,d,m=e.tokens,v=null;for(n=0...
  function le (line 2) | function le(e){e.core.ruler.push("linkify",ce)}
  function me (line 2) | function me(e){var t=e.source,n=e.className,r=void 0===n?"":n,i=e.getCon...
  function ve (line 2) | function ve(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments...
  function e (line 2) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function O (line 2) | function O(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a ...
  function j (line 2) | function j(e,t){if(!e)throw new ReferenceError("this hasn't been initial...
  function t (line 2) | function t(){return O(this,t),j(this,(t.__proto__||Object.getPrototypeOf...
  function r (line 2) | function r(){var e,n;i()(this,r);for(var o=arguments.length,a=new Array(...
  function e (line 2) | function e(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.len...
  function x (line 2) | function x(e){return function(t){for(var n=arguments.length,r=Array(n>1?...
  function E (line 2) | function E(e){return function(){for(var t=arguments.length,n=Array(t),r=...
  function S (line 2) | function S(e,t){n&&n(e,null);for(var o=t.length;o--;){var a=t[o];if("str...
  function C (line 2) | function C(e){var n=u(null),r=void 0;for(r in e)l(t,e,[r])&&(n[r]=e[r]);...
  function A (line 2) | function A(e,t){for(;null!==e;){var n=a(e,t);if(n){if(n.get)return x(n.g...
  function $ (line 2) | function $(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.len...
  function Y (line 2) | function Y(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0...
  function u (line 2) | function u(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var...
  function c (line 2) | function c(e){var t=this.__data__=new r(e);this.size=t.size}
  function s (line 2) | function s(){s.init.call(this)}
  function o (line 2) | function o(){void 0!==a&&e.removeListener("error",a),n([].slice.call(arg...
  function c (line 2) | function c(e){if("function"!=typeof e)throw new TypeError('The "listener...
  function l (line 2) | function l(e){return void 0===e._maxListeners?s.defaultMaxListeners:e._m...
  function p (line 2) | function p(e,t,n,r){var o,a,i,s;if(c(n),void 0===(a=e._events)?(a=e._eve...
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  function f (line 2) | function f(){if(!this.fired)return this.target.removeListener(this.type,...
    method constructor (line 2) | constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}
    method top (line 2) | get top(){return this.stack[this.stack.length-1]}
    method root (line 2) | get root(){return this.rootNode}
    method add (line 2) | add(e){this.top.children.push(e)}
    method openNode (line 2) | openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}
    method closeNode (line 2) | closeNode(){if(this.stack.length>1)return this.stack.pop()}
    method closeAllNodes (line 2) | closeAllNodes(){for(;this.closeNode(););}
    method toJSON (line 2) | toJSON(){return JSON.stringify(this.rootNode,null,4)}
    method walk (line 2) | walk(e){return this.constructor._walk(e,this.rootNode)}
    method _walk (line 2) | static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e...
    method _collapse (line 2) | static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(...
  function h (line 2) | function h(e,t,n){var r={fired:!1,wrapFn:void 0,target:e,type:t,listener...
    method constructor (line 2) | constructor(e){super(),this.options=e}
    method addKeyword (line 2) | addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNo...
    method addText (line 2) | addText(e){""!==e&&this.add(e)}
    method addSublanguage (line 2) | addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}
    method toHTML (line 2) | toHTML(){return new p(this,this.options).value()}
    method finalize (line 2) | finalize(){return!0}
  function d (line 2) | function d(e,t,n){var r=e._events;if(void 0===r)return[];var o=r[t];retu...
  function m (line 2) | function m(e){var t=this._events;if(void 0!==t){var n=t[e];if("function"...
  function v (line 2) | function v(e,t){for(var n=new Array(t),r=0;r<t;++r)n[r]=e[r];return n}
  function i (line 2) | function i(e){var t=this;this.next=null,this.entry=null,this.finish=func...
  function v (line 2) | function v(){}
  function g (line 2) | function g(e,t){s=s||n(116),e=e||{};var r=t instanceof s;this.objectMode...
  function y (line 2) | function y(e){if(s=s||n(116),!(d.call(y,this)||this instanceof s))return...
  function b (line 2) | function b(e,t,n,r,o,a,i){t.writelen=r,t.writecb=i,t.writing=!0,t.sync=!...
  function _ (line 2) | function _(e,t,n,r){n||function(e,t){0===t.length&&t.needDrain&&(t.needD...
  function w (line 2) | function w(e,t){t.bufferProcessing=!0;var n=t.bufferedRequest;if(e._writ...
  function x (line 2) | function x(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!...
  function E (line 2) | function E(e,t){e._final((function(n){t.pendingcb--,n&&e.emit("error",n)...
  function S (line 2) | function S(e,t){var n=x(t);return n&&(!function(e,t){t.prefinished||t.fi...
  function i (line 2) | function i(){if(o)for(var e in a){var t=a[e],n=o.indexOf(e);if(n>-1||r("...
  function s (line 2) | function s(e,t,n){c.eventNameDispatchConfigs.hasOwnProperty(n)&&r("99",n...
  function u (line 2) | function u(e,t,n){c.registrationNameModules[e]&&r("100",e),c.registratio...
  function s (line 2) | function s(e,t,n,r){var o=e.type||"unknown-event";e.currentTarget=u.getN...
  function o (line 2) | function o(e,t,n){try{t(n)}catch(e){null===r&&(r=e)}}
  function o (line 2) | function o(e){var t=this.nativeEvent;if(t.getModifierState)return t.getM...
  function u (line 2) | function u(e,t){return Array.isArray(t)&&(t=t[1]),t?t.nextSibling:e.firs...
  function l (line 2) | function l(e,t,n){r.insertTreeBefore(e,t,n)}
  function p (line 2) | function p(e,t,n){Array.isArray(t)?function(e,t,n,r){var o=t;for(;;){var...
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  function f (line 2) | function f(e,t){if(Array.isArray(t)){var n=t[1];h(e,t=t[0],n),e.removeCh...
    method constructor (line 2) | constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}
    method top (line 2) | get top(){return this.stack[this.stack.length-1]}
    method root (line 2) | get root(){return this.rootNode}
    method add (line 2) | add(e){this.top.children.push(e)}
    method openNode (line 2) | openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}
    method closeNode (line 2) | closeNode(){if(this.stack.length>1)return this.stack.pop()}
    method closeAllNodes (line 2) | closeAllNodes(){for(;this.closeNode(););}
    method toJSON (line 2) | toJSON(){return JSON.stringify(this.rootNode,null,4)}
    method walk (line 2) | walk(e){return this.constructor._walk(e,this.rootNode)}
    method _walk (line 2) | static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e...
    method _collapse (line 2) | static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(...
  function h (line 2) | function h(e,t,n){for(;;){var r=t.nextSibling;if(r===n)break;e.removeChi...
    method constructor (line 2) | constructor(e){super(),this.options=e}
    method addKeyword (line 2) | addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNo...
    method addText (line 2) | addText(e){""!==e&&this.add(e)}
    method addSublanguage (line 2) | addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}
    method toHTML (line 2) | toHTML(){return new p(this,this.options).value()}
    method finalize (line 2) | finalize(){return!0}
  function s (line 2) | function s(e){null!=e.checkedLink&&null!=e.valueLink&&r("87")}
  function u (line 2) | function u(e){s(e),(null!=e.value||null!=e.onChange)&&r("88")}
  function c (line 2) | function c(e){s(e),(null!=e.checked||null!=e.onChange)&&r("89")}
  function f (line 2) | function f(e){if(e){var t=e.getName();if(t)return" Check the render meth...
    method constructor (line 2) | constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}
    method top (line 2) | get top(){return this.stack[this.stack.length-1]}
    method root (line 2) | get root(){return this.rootNode}
    method add (line 2) | add(e){this.top.children.push(e)}
    method openNode (line 2) | openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}
    method closeNode (line 2) | closeNode(){if(this.stack.length>1)return this.stack.pop()}
    method closeAllNodes (line 2) | closeAllNodes(){for(;this.closeNode(););}
    method toJSON (line 2) | toJSON(){return JSON.stringify(this.rootNode,null,4)}
    method walk (line 2) | walk(e){return this.constructor._walk(e,this.rootNode)}
    method _walk (line 2) | static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e...
    method _collapse (line 2) | static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(...
  function o (line 2) | function o(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}
  function i (line 2) | function i(e){a.enqueueUpdate(e)}
  function s (line 2) | function s(e,t){var n=o.get(e);return n||null}
  function o (line 2) | function o(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)t...
  function p (line 2) | function p(e){return o()(e).call(e,(function(e){var t,n="is not of a typ...
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  function r (line 2) | function r(e,t){t.jsSpec;return e}
  function n (line 2) | function n(){var e,r,o,a,s,u;return i()(this,n),(u=t.call(this)).state={...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function s (line 2) | function s(e){for(var t,n=arguments.length,o=new Array(n>1?n-1:0),a=1;a<...
  function h (line 2) | function h(e,t,n,r){var a,i=e.authActions.authorize,s=e.specSelectors,c=...
    method constructor (line 2) | constructor(e){super(),this.options=e}
    method addKeyword (line 2) | addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNo...
    method addText (line 2) | addText(e){""!==e&&this.add(e)}
    method addSublanguage (line 2) | addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}
    method toHTML (line 2) | toHTML(){return new p(this,this.options).value()}
    method finalize (line 2) | finalize(){return!0}
  function d (line 2) | function d(e,t,n){var r,a=e.authActions.authorize,i=e.specSelectors,s=i....
  function v (line 2) | function v(e){var t=e.fn;return{statePlugins:{spec:{actions:{download:fu...
  function a (line 2) | function a(n){n instanceof Error||n.status>=400?(o.updateLoadingStatus("...
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function a (line 2) | function a(){var e,n;o()(this,a);for(var i=arguments.length,s=new Array(...
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function a (line 2) | function a(){var e,n;o()(this,a);for(var i=arguments.length,s=new Array(...
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function s (line 2) | function s(e){return function(t,n){return function(){var r=n.getSystem()...
  function n (line 2) | function n(){return o()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){var e,r;i()(this,n);for(var o=arguments.length,a=new Array(...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return o()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(e,r){var a;return o()(this,n),a=t.call(this,e,r),d()(u()(a),"...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(e,r){var a;o()(this,n),a=t.call(this,e,r),d()(u()(a),"onChang...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){var e,r;i()(this,n);for(var a=arguments.length,s=new Array(...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return i()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function b (line 2) | function b(e){return function(){for(var t=arguments.length,n=new Array(t...
  function G (line 2) | function G(e){var t,n=arguments.length>1&&void 0!==arguments[1]?argument...
  function Z (line 2) | function Z(e){var t=e.value;return Array.isArray(t)?function(e){var t=e....
  function ee (line 2) | function ee(e){return te.apply(this,arguments)}
  function te (line 2) | function te(){return(te=c()(p.a.mark((function e(t){var n,r,o,a,i,s=argu...
  function re (line 2) | function re(e,t){return t&&(0===t.indexOf("application/json")||t.indexOf...
  function oe (line 2) | function oe(e,t){var n=arguments.length>2&&void 0!==arguments[2]?argumen...
  function ae (line 2) | function ae(e){return b()(e).call(e,", ")?e.split(", "):e}
  function ie (line 2) | function ie(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[...
  function se (line 2) | function se(e,t){return t||"undefined"==typeof navigator||(t=navigator),...
  function ue (line 2) | function ue(e,t){return Array.isArray(e)&&e.some((function(e){return se(...
  function pe (line 2) | function pe(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&argume...
  function fe (line 2) | function fe(e,t,n,r){var o,a,i,u=r.style||"form",c=void 0===r.explode?"f...
  function he (line 2) | function he(e){return I()(e).reduce((function(e,t){var n,r=g()(t,2),o=r[...
  function de (line 2) | function de(e){var t=j()(e).reduce((function(t,n){var r,o=h()(pe(n,e[n])...
  function me (line 2) | function me(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[...
  function n (line 2) | function n(){this.constructor=e}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function Le (line 2) | function Le(e,t){return De.call(e,t)}
  function Be (line 2) | function Be(e){if(Array.isArray(e)){for(var t=new Array(e.length),n=0;n<...
  function Fe (line 2) | function Fe(e){switch(typeof e){case"object":return JSON.parse(JSON.stri...
  function Ue (line 2) | function Ue(e){for(var t,n=0,r=e.length;n<r;){if(!((t=e.charCodeAt(n))>=...
  function qe (line 2) | function qe(e){return-1===e.indexOf("/")&&-1===e.indexOf("~")?e:e.replac...
  function ze (line 2) | function ze(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}
  function Ve (line 2) | function Ve(e){if(void 0===e)return!0;if(e)if(Array.isArray(e)){for(var ...
  function We (line 2) | function We(e,t){var n=[e];for(var r in t){var o="object"==typeof t[r]?J...
  function t (line 2) | function t(t,n,r,o,a){var i=this.constructor,s=e.call(this,We(t,{name:n,...
  function Ge (line 2) | function Ge(e,t){if(""==t)return e;var n={op:"_get",path:t};return Ze(e,...
  function Ze (line 2) | function Ze(e,t,n,r,o,a){if(void 0===n&&(n=!1),void 0===r&&(r=!0),void 0...
  function Xe (line 2) | function Xe(e,t,n,r,o){if(void 0===r&&(r=!0),void 0===o&&(o=!0),n&&!Arra...
  function Qe (line 2) | function Qe(e,t,n){var r=Ze(e,t);if(!1===r.test)throw new $e("Test opera...
  function et (line 2) | function et(e,t,n,r){if("object"!=typeof e||null===e||Array.isArray(e))t...
  function tt (line 2) | function tt(e,t,n){try{if(!Array.isArray(e))throw new $e("Patch sequence...
  function nt (line 2) | function nt(e,t){if(e===t)return!0;if(e&&t&&"object"==typeof e&&"object"...
  function it (line 2) | function it(e,t){t.unobserve()}
  function st (line 2) | function st(e,t){var n,r=function(e){return rt.get(e)}(e);if(r){var o=fu...
  function ut (line 2) | function ut(e,t){void 0===t&&(t=!1);var n=rt.get(e.object);ct(n.value,e....
  function ct (line 2) | function ct(e,t,n,r,o){if(t!==e){"function"==typeof t.toJSON&&(t=t.toJSO...
  function lt (line 2) | function lt(e,t,n){void 0===n&&(n=!1);var r=[];return ct(e,t,r,"",n),r}
  function vt (line 2) | function vt(e){return Array.isArray(e)?e.length<1?"":"/".concat(k()(e).c...
  function gt (line 2) | function gt(e,t,n){return{op:"replace",path:e,value:t,meta:n}}
  function yt (line 2) | function yt(e,t,n){var r;return Et(xt(k()(r=N()(e).call(e,Ot)).call(r,(f...
  function bt (line 2) | function bt(e,t,n){return n=n||[],Array.isArray(e)?k()(e).call(e,(functi...
  function _t (line 2) | function _t(e,t,n){var r=[];if((n=n||[]).length>0){var o=t(e,n[n.length-...
  function wt (line 2) | function wt(e){return Array.isArray(e)?e:[e]}
  function xt (line 2) | function xt(e){var t;return s()(t=[]).apply(t,W()(k()(e).call(e,(functio...
  function Et (line 2) | function Et(e){return N()(e).call(e,(function(e){return void 0!==e}))}
  function St (line 2) | function St(e){return e&&"object"===m()(e)}
  function Ct (line 2) | function Ct(e){return e&&"function"==typeof e}
  function At (line 2) | function At(e){if(jt(e)){var t=e.op;return"add"===t||"remove"===t||"repl...
  function kt (line 2) | function kt(e){return At(e)||jt(e)&&"mutation"===e.type}
  function Ot (line 2) | function Ot(e){return kt(e)&&("add"===e.op||"replace"===e.op||"merge"===...
  function jt (line 2) | function jt(e){return e&&"object"===m()(e)}
  function Tt (line 2) | function Tt(e,t){try{return Ge(e,t)}catch(e){return console.error(e),{}}}
  function Lt (line 2) | function Lt(e,t){function n(){Error.captureStackTrace?Error.captureStack...
  function $t (line 2) | function $t(e){var t=e[e.length-1],n=e[e.length-2],r=e.join("/");return ...
  function Jt (line 2) | function Jt(e,t){var n,r=e.split("#"),o=g()(r,2),a=o[0],i=o[1],u=Dt.a.re...
  function r (line 2) | function r(e){return mt.isObject(e)&&(n.indexOf(e)>=0||j()(e).some((func...
  function rn (line 2) | function rn(e,t){if(!Yt.test(e)){var n;if(!t)throw new Gt(s()(n="Tried t...
  function on (line 2) | function on(e,t){var n,r;e&&e.response&&e.response.body?n=s()(r="".conca...
  function an (line 2) | function an(e){return(e+"").split("#")}
  function sn (line 2) | function sn(e,t){var n=Zt[e];if(n&&!mt.isPromise(n))try{var r=cn(t,n);re...
  function un (line 2) | function un(e){var t=Zt[e];return t?mt.isPromise(t)?t:Ae.a.resolve(t):(Z...
  function cn (line 2) | function cn(e,t){var n=ln(e);if(n.length<1)return t;var r=mt.getIn(t,n);...
  function ln (line 2) | function ln(e){var t;if("string"!=typeof e)throw new TypeError("Expected...
  function pn (line 2) | function pn(e){return"string"!=typeof e?e:Mt.a.unescape(e.replace(/~1/g,...
  function fn (line 2) | function fn(e){return Mt.a.escape(e.replace(/~/g,"~0").replace(/\//g,"~1...
  function hn (line 2) | function hn(e,t){if(!(n=t)||"/"===n||"#"===n)return!0;var n,r=e.charAt(t...
  function e (line 2) | function e(t){_e()(this,e),this.root=_n(t||{})}
  function _n (line 2) | function _n(e,t){return wn({children:{}},e,t)}
  function wn (line 2) | function wn(e,t,n){return e.value=t||{},e.protoValue=n?ye()(ye()({},n.pr...
  function e (line 2) | function e(t){var n,r,o=this;_e()(this,e),Se()(this,{spec:"",debugLevel:...
  function c (line 2) | function c(e){e&&(e=mt.fullyNormalizeArray(e),n.updatePatches(e,r))}
  function Cn (line 2) | function Cn(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments...
  function An (line 2) | function An(e){var t=e.fetch,n=e.spec,r=e.url,o=e.mode,a=e.allowMetaPatc...
  function Bn (line 2) | function Bn(e,t){return b()(t).call(t,"application/json")?"string"==type...
  function Fn (line 2) | function Fn(e){var t=e.req,n=e.value,r=e.parameter,o=r.name,a=r.style,i=...
  function Un (line 2) | function Un(e){var t=e.req,n=e.value,r=e.parameter;if(t.query=t.query||{...
  function zn (line 2) | function zn(e){var t=e.req,n=e.parameter,r=e.value;if(t.headers=t.header...
  function Vn (line 2) | function Vn(e){var t=e.req,n=e.parameter,r=e.value;t.headers=t.headers||...
  function Kn (line 2) | function Kn(e,t){var n=e.operation,r=e.requestBody,o=e.securities,a=e.sp...
  function Yn (line 2) | function Yn(e,t){var n,r,o=e.spec,a=e.operation,i=e.securities,u=e.reque...
  function er (line 2) | function er(e){var t=e.http,n=e.fetch,r=e.spec,o=e.operationId,a=e.pathN...
  function tr (line 2) | function tr(e){var t,n,r=e.spec,o=e.operationId,i=e.responseContentType,...
  function rr (line 2) | function rr(e,t){return or.apply(this,arguments)}
  function or (line 2) | function or(){return(or=c()(p.a.mark((function e(t,n){var r,o,a,i,s,u,c,...
  function c (line 2) | function c(){return{statePlugins:{spec:{actions:a,selectors:u},configs:{...
  function a (line 2) | function a(e){return e&&e.__esModule?e:{default:e}}
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function i (line 2) | function i(e,t,n){var i,u=r.configure({}),c=(n||{}).prefix;if("string"!=...
  function s (line 2) | function s(e){this.options=e,this.rootNode={children:[]},this.stack=[thi...
  function u (line 2) | function u(){}
  function r (line 2) | function r(e){return"undefined"!=typeof globalThis?globalThis[e]:"undefi...
  function a (line 2) | function a(e,t){try{return decodeURIComponent(e)}catch(n){return r.unesc...
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function c (line 2) | function c(e,t){try{return t(e)}catch(t){return r.unescape(e,!0)}}
  function e (line 2) | function e(){}
  function s (line 2) | function s(e,t,n){this.props=e,this.context=t,this.refs=i,this.updater=n...
  function u (line 2) | function u(e,t,n){this.props=e,this.context=t,this.refs=i,this.updater=n...
  function c (line 2) | function c(){}
  function y (line 2) | function y(e,t){e=e||{};var r=t instanceof(a=a||n(116));this.objectMode=...
  function b (line 2) | function b(e){if(a=a||n(116),!(this instanceof b))return new b(e);this._...
  function _ (line 2) | function _(e,t,n,r,o){var a,i=e._readableState;null===t?(i.reading=!1,fu...
  function w (line 2) | function w(e,t,n,r){t.flowing&&0===t.length&&!t.sync?(e.emit("data",n),e...
  function E (line 2) | function E(e,t){return e<=0||0===t.length&&t.ended?0:t.objectMode?1:e!=e...
  function S (line 2) | function S(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable...
  function C (line 2) | function C(e){h("emit readable"),e.emit("readable"),T(e)}
  function A (line 2) | function A(e,t){t.readingMore||(t.readingMore=!0,o.nextTick(k,e,t))}
  function k (line 2) | function k(e,t){for(var n=t.length;!t.reading&&!t.flowing&&!t.ended&&t.l...
  function O (line 2) | function O(e){h("readable nexttick read 0"),e.read(0)}
  function j (line 2) | function j(e,t){t.reading||(h("resume read 0"),e.read(0)),t.resumeSchedu...
  function T (line 2) | function T(e){var t=e._readableState;for(h("flow",t.flowing);t.flowing&&...
  function I (line 2) | function I(e,t){return 0===t.length?null:(t.objectMode?n=t.buffer.shift(...
  function P (line 2) | function P(e){var t=e._readableState;if(t.length>0)throw new Error('"end...
  function N (line 2) | function N(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=...
  function M (line 2) | function M(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;retu...
  function c (line 2) | function c(t,r){h("onunpipe"),t===n&&r&&!1===r.hasUnpiped&&(r.hasUnpiped...
  function l (line 2) | function l(){h("onend"),e.end()}
  function m (line 2) | function m(t){h("ondata"),d=!1,!1!==e.write(t)||d||((1===a.pipesCount&&a...
  function v (line 2) | function v(t){h("onerror",t),b(),e.removeListener("error",v),0===s(e,"er...
  function g (line 2) | function g(){e.removeListener("finish",y),b()}
  function y (line 2) | function y(){h("onfinish"),e.removeListener("close",g),b()}
  function b (line 2) | function b(){h("unpipe"),n.unpipe(e)}
  function o (line 2) | function o(e,t){e.emit("error",t)}
  function a (line 2) | function a(e,t){this._id=e,this._clearFn=t}
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function a (line 2) | function a(e){var t;switch(this.encoding=function(e){var t=function(e){i...
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function i (line 2) | function i(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1...
  function s (line 2) | function s(e){var t=this.lastTotal-this.lastNeed,n=function(e,t,n){if(12...
  function u (line 2) | function u(e,t){if((e.length-t)%2==0){var n=e.toString("utf16le",t);if(n...
  function c (line 2) | function c(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var n...
  function l (line 2) | function l(e,t){var n=(e.length-t)%3;return 0===n?e.toString("base64",t)...
  function p (line 2) | function p(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+...
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  function f (line 2) | function f(e){return e.toString(this.encoding)}
    method constructor (line 2) | constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}
    method top (line 2) | get top(){return this.stack[this.stack.length-1]}
    method root (line 2) | get root(){return this.rootNode}
    method add (line 2) | add(e){this.top.children.push(e)}
    method openNode (line 2) | openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}
    method closeNode (line 2) | closeNode(){if(this.stack.length>1)return this.stack.pop()}
    method closeAllNodes (line 2) | closeAllNodes(){for(;this.closeNode(););}
    method toJSON (line 2) | toJSON(){return JSON.stringify(this.rootNode,null,4)}
    method walk (line 2) | walk(e){return this.constructor._walk(e,this.rootNode)}
    method _walk (line 2) | static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e...
    method _collapse (line 2) | static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(...
  function h (line 2) | function h(e){return e&&e.length?this.write(e):""}
    method constructor (line 2) | constructor(e){super(),this.options=e}
    method addKeyword (line 2) | addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNo...
    method addText (line 2) | addText(e){""!==e&&this.add(e)}
    method addSublanguage (line 2) | addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}
    method toHTML (line 2) | toHTML(){return new p(this,this.options).value()}
    method finalize (line 2) | finalize(){return!0}
  function a (line 2) | function a(e,t){var n=this._transformState;n.transforming=!1;var r=n.wri...
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function i (line 2) | function i(e){if(!(this instanceof i))return new i(e);r.call(this,e),thi...
  function s (line 2) | function s(){var e=this;"function"==typeof this._flush?this._flush((func...
  function u (line 2) | function u(e,t,n){if(t)return e.emit("error",t);if(null!=n&&e.push(n),e....
  function n (line 2) | function n(e){return!!e&&("object"==typeof e||"function"==typeof e)&&"fu...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function u (line 2) | function u(){this.init(),this._w=s,o.call(this,64,56)}
  function c (line 2) | function c(e,t,n){return n^e&(t^n)}
  function l (line 2) | function l(e,t,n){return e&t|n&(e|t)}
  function p (line 2) | function p(e){return(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10)}
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  function f (line 2) | function f(e){return(e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7)}
    method constructor (line 2) | constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}
    method top (line 2) | get top(){return this.stack[this.stack.length-1]}
    method root (line 2) | get root(){return this.rootNode}
    method add (line 2) | add(e){this.top.children.push(e)}
    method openNode (line 2) | openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}
    method closeNode (line 2) | closeNode(){if(this.stack.length>1)return this.stack.pop()}
    method closeAllNodes (line 2) | closeAllNodes(){for(;this.closeNode(););}
    method toJSON (line 2) | toJSON(){return JSON.stringify(this.rootNode,null,4)}
    method walk (line 2) | walk(e){return this.constructor._walk(e,this.rootNode)}
    method _walk (line 2) | static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e...
    method _collapse (line 2) | static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(...
  function h (line 2) | function h(e){return(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3}
    method constructor (line 2) | constructor(e){super(),this.options=e}
    method addKeyword (line 2) | addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNo...
    method addText (line 2) | addText(e){""!==e&&this.add(e)}
    method addSublanguage (line 2) | addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}
    method toHTML (line 2) | toHTML(){return new p(this,this.options).value()}
    method finalize (line 2) | finalize(){return!0}
  function u (line 2) | function u(){this.init(),this._w=s,o.call(this,128,112)}
  function c (line 2) | function c(e,t,n){return n^e&(t^n)}
  function l (line 2) | function l(e,t,n){return e&t|n&(e|t)}
  function p (line 2) | function p(e,t){return(e>>>28|t<<4)^(t>>>2|e<<30)^(t>>>7|e<<25)}
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  function f (line 2) | function f(e,t){return(e>>>14|t<<18)^(e>>>18|t<<14)^(t>>>9|e<<23)}
    method constructor (line 2) | constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}
    method top (line 2) | get top(){return this.stack[this.stack.length-1]}
    method root (line 2) | get root(){return this.rootNode}
    method add (line 2) | add(e){this.top.children.push(e)}
    method openNode (line 2) | openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}
    method closeNode (line 2) | closeNode(){if(this.stack.length>1)return this.stack.pop()}
    method closeAllNodes (line 2) | closeAllNodes(){for(;this.closeNode(););}
    method toJSON (line 2) | toJSON(){return JSON.stringify(this.rootNode,null,4)}
    method walk (line 2) | walk(e){return this.constructor._walk(e,this.rootNode)}
    method _walk (line 2) | static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e...
    method _collapse (line 2) | static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(...
  function h (line 2) | function h(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7}
    method constructor (line 2) | constructor(e){super(),this.options=e}
    method addKeyword (line 2) | addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNo...
    method addText (line 2) | addText(e){""!==e&&this.add(e)}
    method addSublanguage (line 2) | addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}
    method toHTML (line 2) | toHTML(){return new p(this,this.options).value()}
    method finalize (line 2) | finalize(){return!0}
  function d (line 2) | function d(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^(e>>>7|t<<25)}
  function m (line 2) | function m(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^e>>>6}
  function v (line 2) | function v(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^(e>>>6|t<<26)}
  function g (line 2) | function g(e,t){return e>>>0<t>>>0?1:0}
  function t (line 2) | function t(t,n,r){e.writeInt32BE(t,r),e.writeInt32BE(n,r+4)}
  function e (line 2) | function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("C...
  function o (line 2) | function o(e){var t=e.type,n=e.nodeName;return n&&"input"===n.toLowerCas...
  function a (line 2) | function a(e){return e._wrapperState.valueTracker}
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function u (line 2) | function u(e){return!!s.hasOwnProperty(e)||!i.hasOwnProperty(e)&&(a.test...
  function c (line 2) | function c(e,t){return null==t||e.hasBooleanValue&&!t||e.hasNumericValue...
  function u (line 2) | function u(){if(this._rootNodeID&&this._wrapperState.pendingUpdate){this...
  function c (line 2) | function c(e,t,n){var r,o,i=a.getNodeFromInstance(e).options;if(t){for(r...
  function p (line 2) | function p(e){var t=this._currentElement.props,n=o.executeOnChange(t,e);...
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  function c (line 2) | function c(e,t){var n;if(null===e||!1===e)n=i.create(c);else if("object"...
  function s (line 2) | function s(e,t){return e&&"object"==typeof e&&null!=e.key?i.escape(e.key...
  function u (line 2) | function u(e,t,n,c){var l,p=typeof e;if("undefined"!==p&&"boolean"!==p||...
  function f (line 2) | function f(e){var t=Function.prototype.toString,n=Object.prototype.hasOw...
    method constructor (line 2) | constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}
    method top (line 2) | get top(){return this.stack[this.stack.length-1]}
    method root (line 2) | get root(){return this.rootNode}
    method add (line 2) | add(e){this.top.children.push(e)}
    method openNode (line 2) | openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}
    method closeNode (line 2) | closeNode(){if(this.stack.length>1)return this.stack.pop()}
    method closeAllNodes (line 2) | closeAllNodes(){for(;this.closeNode(););}
    method toJSON (line 2) | toJSON(){return JSON.stringify(this.rootNode,null,4)}
    method walk (line 2) | walk(e){return this.constructor._walk(e,this.rootNode)}
    method _walk (line 2) | static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e...
    method _collapse (line 2) | static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(...
  function _ (line 2) | function _(e){var t=o(e);if(t){var n=t.childIDs;a(e),n.forEach(_)}}
  function w (line 2) | function w(e,t,n){return"\n    in "+(e||"Unknown")+(t?" (at "+t.fileName...
  function x (line 2) | function x(e){return null==e?"#empty":"string"==typeof e||"number"==type...
  function E (line 2) | function E(e){var t,n=S.getDisplayName(e),r=S.getElement(e),o=S.getOwner...
  function S (line 2) | function S(e){return e?9===e.nodeType?e.documentElement:e.firstChild:null}
  function C (line 2) | function C(e,t,n,r,o){var a;if(p.logTopLevelRenders){var i=e._currentEle...
  function A (line 2) | function A(e,t,n,r){var o=v.ReactReconcileTransaction.getPooled(!n&&l.us...
  function k (line 2) | function k(e,t,n){for(0,d.unmountComponent(e,n),9===t.nodeType&&(t=t.doc...
  function O (line 2) | function O(e){var t=S(e);if(t){var n=u.getInstanceFromNode(t);return!(!n...
  function j (line 2) | function j(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType)}
  function T (line 2) | function T(e){var t=function(e){var t=S(e),n=t&&u.getInstanceFromNode(t)...
  function c (line 2) | function c(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_...
  function l (line 2) | function l(e){return"string"!=typeof e&&(e=String(e)),e}
  function p (line 2) | function p(e){var t={next:function(){var t=e.shift();return{done:void 0=...
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  function f (line 2) | function f(e){this.map={},e instanceof f?e.forEach((function(e,t){this.a...
    method constructor (line 2) | constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}
    method top (line 2) | get top(){return this.stack[this.stack.length-1]}
    method root (line 2) | get root(){return this.rootNode}
    method add (line 2) | add(e){this.top.children.push(e)}
    method openNode (line 2) | openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}
    method closeNode (line 2) | closeNode(){if(this.stack.length>1)return this.stack.pop()}
    method closeAllNodes (line 2) | closeAllNodes(){for(;this.closeNode(););}
    method toJSON (line 2) | toJSON(){return JSON.stringify(this.rootNode,null,4)}
    method walk (line 2) | walk(e){return this.constructor._walk(e,this.rootNode)}
    method _walk (line 2) | static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e...
    method _collapse (line 2) | static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(...
  function h (line 2) | function h(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already...
    method constructor (line 2) | constructor(e){super(),this.options=e}
    method addKeyword (line 2) | addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNo...
    method addText (line 2) | addText(e){""!==e&&this.add(e)}
    method addSublanguage (line 2) | addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}
    method toHTML (line 2) | toHTML(){return new p(this,this.options).value()}
    method finalize (line 2) | finalize(){return!0}
  function d (line 2) | function d(e){return new Promise((function(t,n){e.onload=function(){t(e....
  function m (line 2) | function m(e){var t=new FileReader,n=d(t);return t.readAsArrayBuffer(e),n}
  function v (line 2) | function v(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLe...
  function g (line 2) | function g(){return this.bodyUsed=!1,this._initBody=function(e){var t;th...
  function b (line 2) | function b(e,t){var n,r,o=(t=t||{}).body;if(e instanceof b){if(e.bodyUse...
  function _ (line 2) | function _(e){var t=new FormData;return e.trim().split("&").forEach((fun...
  function w (line 2) | function w(e,t){t||(t={}),this.type="default",this.status=void 0===t.sta...
  function E (line 2) | function E(e,n){return new Promise((function(r,a){var i=new b(e,n);if(i....
  function r (line 2) | function r(e){var t,n=e.Symbol;return"function"==typeof n?n.observable?t...
  function o (line 2) | function o(e){return null===e?"null":void 0===e?"undefined":"object"===(...
  function a (line 2) | function a(e){return"object"===o(e)?s(e):"array"===o(e)?i(e):e}
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function i (line 2) | function i(e){return e.map(a)}
  function s (line 2) | function s(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=a(e[n])...
  function u (line 2) | function u(e){for(var t=arguments.length>1&&void 0!==arguments[1]?argume...
  function a (line 2) | function a(e,t,n){n=n||0;var o,i,s=(o=t,new Array(n||0).join(o||"")),u=e...
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function i (line 2) | function i(e,t,n){if("object"!=typeof t)return e(!1,t);var r=t.interrupt...
  function h (line 2) | function h(e){f?t.nextTick(e):e()}
    method constructor (line 2) | constructor(e){super(),this.options=e}
    method addKeyword (line 2) | addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNo...
    method addText (line 2) | addText(e){""!==e&&this.add(e)}
    method addSublanguage (line 2) | addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}
    method toHTML (line 2) | toHTML(){return new p(this,this.options).value()}
    method finalize (line 2) | finalize(){return!0}
  function d (line 2) | function d(e,t){if(void 0!==t&&(c+=t),e&&!l&&(u=u||new o,l=!0),e&&l){var...
  function m (line 2) | function m(e,t){i(d,a(e,p,p?1:0),t)}
  function v (line 2) | function v(){if(u){var e=c;h((function(){u.emit("data",e),u.emit("end"),...
  function y (line 2) | function y(t){var n=u,r=c;return u=c=void 0,d=t,p=e.apply(r,n)}
  function b (line 2) | function b(e){return d=e,f=setTimeout(w,t),m?y(e):p}
  function _ (line 2) | function _(e){var n=e-h;return void 0===h||n>=t||n<0||v&&e-d>=l}
  function w (line 2) | function w(){var e=o();if(_(e))return x(e);f=setTimeout(w,function(e){va...
  function x (line 2) | function x(e){return f=void 0,g&&u?y(e):(u=c=void 0,p)}
  function E (line 2) | function E(){var e=o(),n=_(e);if(u=arguments,c=this,h=e,n){if(void 0===f...
  function n (line 2) | function n(){return e.exports=n=Object.assign||function(e){for(var t=1;t...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function i (line 2) | function i(e){return s("(?=",e,")")}
  function s (line 2) | function s(...e){return e.map((e=>{return(t=e)?"string"==typeof t?t:t.so...
  function n (line 2) | function n(e){return e?"string"==typeof e?e:e.source:null}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function r (line 2) | function r(e){return o("(?=",e,")")}
  function o (line 2) | function o(...e){return e.map((e=>n(e))).join("")}
  function a (line 2) | function a(...e){return"("+e.map((e=>n(e))).join("|")+")"}
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function n (line 2) | function n(...e){return e.map((e=>{return(t=e)?"string"==typeof t?t:t.so...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function r (line 2) | function r(e){this.value=e}
  function o (line 2) | function o(e,t,n){var r=[],o=[],s=!0;return function e(p){var f=n?a(p):p...
  function a (line 2) | function a(e){if("object"==typeof e&&null!==e){var t;if(u(e))t=[];else i...
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function s (line 2) | function s(e){return Object.prototype.toString.call(e)}
  function s (line 2) | function s(e,t){try{return t(e)}catch(t){return e}}
  function i (line 2) | function i(e){return e.split(/(<\/?[^>]+>)/g).filter((function(e){return...
  function s (line 2) | function s(e){return o(e)?"ClosingTag":function(e){return function(e){re...
  function c (line 2) | function c(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. L...
  function l (line 2) | function l(e,t,n){for(var o,a,i=[],s=t;s<n;s+=3)o=(e[s]<<16&16711680)+(e...
  function l (line 2) | function l(e){return(""+e).replace(c,"$&/")}
  function p (line 2) | function p(e,t){this.func=e,this.context=t,this.count=0}
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  function f (line 2) | function f(e,t,n){var r=e.func,o=e.context;r.call(o,t,e.count++)}
    method constructor (line 2) | constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}
    method top (line 2) | get top(){return this.stack[this.stack.length-1]}
    method root (line 2) | get root(){return this.rootNode}
    method add (line 2) | add(e){this.top.children.push(e)}
    method openNode (line 2) | openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}
    method closeNode (line 2) | closeNode(){if(this.stack.length>1)return this.stack.pop()}
    method closeAllNodes (line 2) | closeAllNodes(){for(;this.closeNode(););}
    method toJSON (line 2) | toJSON(){return JSON.stringify(this.rootNode,null,4)}
    method walk (line 2) | walk(e){return this.constructor._walk(e,this.rootNode)}
    method _walk (line 2) | static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e...
    method _collapse (line 2) | static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(...
  function h (line 2) | function h(e,t,n,r){this.result=e,this.keyPrefix=t,this.func=n,this.cont...
    method constructor (line 2) | constructor(e){super(),this.options=e}
    method addKeyword (line 2) | addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNo...
    method addText (line 2) | addText(e){""!==e&&this.add(e)}
    method addSublanguage (line 2) | addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}
    method toHTML (line 2) | toHTML(){return new p(this,this.options).value()}
    method finalize (line 2) | finalize(){return!0}
  function d (line 2) | function d(e,t,n){var r=e.result,i=e.keyPrefix,s=e.func,u=e.context,c=s....
  function m (line 2) | function m(e,t,n,r,o){var a="";null!=n&&(a=l(n)+"/");var s=h.getPooled(t...
  function v (line 2) | function v(e,t,n){return null}
  function s (line 2) | function s(e,t){return e&&"object"==typeof e&&null!=e.key?i.escape(e.key...
  function u (line 2) | function u(e,t,n,c){var l,p=typeof e;if("undefined"!==p&&"boolean"!==p||...
  function u (line 2) | function u(){return null}
  function p (line 2) | function p(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  function f (line 2) | function f(e){this.message=e,this.stack=""}
    method constructor (line 2) | constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}
    method top (line 2) | get top(){return this.stack[this.stack.length-1]}
    method root (line 2) | get root(){return this.rootNode}
    method add (line 2) | add(e){this.top.children.push(e)}
    method openNode (line 2) | openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}
    method closeNode (line 2) | closeNode(){if(this.stack.length>1)return this.stack.pop()}
    method closeAllNodes (line 2) | closeAllNodes(){for(;this.closeNode(););}
    method toJSON (line 2) | toJSON(){return JSON.stringify(this.rootNode,null,4)}
    method walk (line 2) | walk(e){return this.constructor._walk(e,this.rootNode)}
    method _walk (line 2) | static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e...
    method _collapse (line 2) | static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(...
  function h (line 2) | function h(e){function n(n,r,o,i,s,u,l){if((i=i||c,u=u||o,l!==a)&&t){var...
    method constructor (line 2) | constructor(e){super(),this.options=e}
    method addKeyword (line 2) | addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNo...
    method addText (line 2) | addText(e){""!==e&&this.add(e)}
    method addSublanguage (line 2) | addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}
    method toHTML (line 2) | toHTML(){return new p(this,this.options).value()}
    method finalize (line 2) | finalize(){return!0}
  function d (line 2) | function d(e){return h((function(t,n,r,o,a,i){var s=t[n];return v(s)!==e...
  function m (line 2) | function m(t){switch(typeof t){case"number":case"string":case"undefined"...
  function v (line 2) | function v(e){var t=typeof e;return Array.isArray(e)?"array":e instanceo...
  function g (line 2) | function g(e){if(null==e)return""+e;var t=v(e);if("object"===t){if(e ins...
  function y (line 2) | function y(e){var t=g(e);switch(t){case"array":case"object":return"an "+...
  function g (line 2) | function g(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t...
  function y (line 2) | function y(e){return g(e)===f}
  function r (line 2) | function r(e,t,n,r,o){}
  function a (line 2) | function a(e,t,n,r,o,a,i,s){if(!e){var u;if(void 0===t)u=new Error("Mini...
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function p (line 2) | function p(e,t){var n=u.hasOwnProperty(t)?u[t]:null;b.hasOwnProperty(t)&...
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  function f (line 2) | function f(e,n){if(n){a("function"!=typeof n,"ReactClass: You're attempt...
    method constructor (line 2) | constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}
    method top (line 2) | get top(){return this.stack[this.stack.length-1]}
    method root (line 2) | get root(){return this.rootNode}
    method add (line 2) | add(e){this.top.children.push(e)}
    method openNode (line 2) | openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}
    method closeNode (line 2) | closeNode(){if(this.stack.length>1)return this.stack.pop()}
    method closeAllNodes (line 2) | closeAllNodes(){for(;this.closeNode(););}
    method toJSON (line 2) | toJSON(){return JSON.stringify(this.rootNode,null,4)}
    method walk (line 2) | walk(e){return this.constructor._walk(e,this.rootNode)}
    method _walk (line 2) | static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e...
    method _collapse (line 2) | static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(...
  function h (line 2) | function h(e,t){for(var n in a(e&&t&&"object"==typeof e&&"object"==typeo...
    method constructor (line 2) | constructor(e){super(),this.options=e}
    method addKeyword (line 2) | addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNo...
    method addText (line 2) | addText(e){""!==e&&this.add(e)}
    method addSublanguage (line 2) | addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}
    method toHTML (line 2) | toHTML(){return new p(this,this.options).value()}
    method finalize (line 2) | finalize(){return!0}
  function d (line 2) | function d(e,t){return function(){var n=e.apply(this,arguments),r=t.appl...
  function m (line 2) | function m(e,t){return function(){e.apply(this,arguments),t.apply(this,a...
  function v (line 2) | function v(e,t){return t.bind(e)}
  function i (line 2) | function i(e){return e&&e.__esModule?e:{default:e}}
  function a (line 2) | function a(e){return e&&e.__esModule?e:{default:e}}
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function u (line 2) | function u(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var...
  function i (line 2) | function i(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new r;++t<...
  function o (line 2) | function o(){r.call(this)}
  function o (line 2) | function o(t){e.writable&&!1===e.write(t)&&n.pause&&n.pause()}
  function a (line 2) | function a(){n.readable&&n.resume&&n.resume()}
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function s (line 2) | function s(){i||(i=!0,e.end())}
  function u (line 2) | function u(){i||(i=!0,"function"==typeof e.destroy&&e.destroy())}
  function c (line 2) | function c(e){if(l(),0===r.listenerCount(this,"error"))throw e}
  function l (line 2) | function l(){n.removeListener("data",o),e.removeListener("drain",a),n.re...
  function e (line 2) | function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Ca...
  function h (line 2) | function h(e){delete c[e]}
    method constructor (line 2) | constructor(e){super(),this.options=e}
    method addKeyword (line 2) | addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNo...
    method addText (line 2) | addText(e){""!==e&&this.add(e)}
    method addSublanguage (line 2) | addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}
    method toHTML (line 2) | toHTML(){return new p(this,this.options).value()}
    method finalize (line 2) | finalize(){return!0}
  function d (line 2) | function d(e){if(l)setTimeout(d,0,e);else{var t=c[e];if(t){l=!0;try{!fun...
  function n (line 2) | function n(e){try{if(!t.localStorage)return!1}catch(e){return!1}var n=t....
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function a (line 2) | function a(e){if(!(this instanceof a))return new a(e);r.call(this,e)}
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function u (line 2) | function u(){this.init(),this._w=s,o.call(this,64,56)}
  function c (line 2) | function c(e){return e<<30|e>>>2}
  function l (line 2) | function l(e,t,n,r){return 0===e?t&n|~t&r:2===e?t&n|t&r|n&r:t^n^r}
  function u (line 2) | function u(){this.init(),this._w=s,o.call(this,64,56)}
  function c (line 2) | function c(e){return e<<5|e>>>27}
  function l (line 2) | function l(e){return e<<30|e>>>2}
  function p (line 2) | function p(e,t,n,r){return 0===e?t&n|~t&r:2===e?t&n|t&r|n&r:t^n^r}
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  function u (line 2) | function u(){this.init(),this._w=s,a.call(this,64,56)}
  function u (line 2) | function u(){this.init(),this._w=s,a.call(this,128,112)}
  function t (line 2) | function t(t,n,r){e.writeInt32BE(t,r),e.writeInt32BE(n,r+4)}
  function u (line 2) | function u(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!...
  function c (line 2) | function c(e,t,n,r){var o=t&&t.prototype instanceof v?t:v,a=Object.creat...
  function l (line 2) | function l(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){ret...
  function v (line 2) | function v(){}
  function g (line 2) | function g(){}
  function y (line 2) | function y(){}
  function E (line 2) | function E(e){["next","throw","return"].forEach((function(t){u(e,t,(func...
  function S (line 2) | function S(e,t){function n(o,a,i,s){var u=l(e[o],e,a);if("throw"!==u.typ...
  function C (line 2) | function C(e,n){var r=e.iterator[n.method];if(r===t){if(n.delegate=null,...
  function A (line 2) | function A(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.f...
  function k (line 2) | function k(e){var t=e.completion||{};t.type="normal",delete t.arg,e.comp...
  function O (line 2) | function O(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(A,this),this.r...
  function j (line 2) | function j(e){if(e){var n=e[a];if(n)return n.call(e);if("function"==type...
  function T (line 2) | function T(){return{value:t,done:!0}}
  function o (line 2) | function o(r,o){return s.type="throw",s.arg=e,n.next=r,o&&(n.method="nex...
  function o (line 2) | function o(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch(...
  function a (line 2) | function a(e){try{return encodeURIComponent(e)}catch(e){return null}}
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function o (line 2) | function o(t,n){return e.exports=o=r||function(e,t){return e.__proto__=t...
  function e (line 2) | function e(){}
  function a (line 2) | function a(t){return e.exports=a=r?o:function(e){return e.__proto__||o(e...
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function g (line 2) | function g(e,t){switch(e){case"topKeyUp":return-1!==u.indexOf(t.keyCode)...
  function y (line 2) | function y(e){var t=e.detail;return"object"==typeof t&&"data"in t?t.data...
  function _ (line 2) | function _(e,t,n,o){var s,u;if(c?s=function(e){switch(e){case"topComposi...
  function w (line 2) | function w(e,t,n,o){var i;if(!(i=f?function(e,t){switch(e){case"topCompo...
  function i (line 2) | function i(e){this._root=e,this._startText=this.getText(),this._fallback...
  function o (line 2) | function o(e,t,n,o){return r.call(this,e,t,n,o)}
  function o (line 2) | function o(e,t,n,o){return r.call(this,e,t,n,o)}
  function d (line 2) | function d(e,t,n){var r=u.getPooled(h.change,e,t,n);return r.type="chang...
  function y (line 2) | function y(e){var t=d(v,e,l(e));s.batchedUpdates(b,t)}
  function b (line 2) | function b(e){r.enqueueEvents(e),r.processEventQueue(!1)}
  function _ (line 2) | function _(){m&&(m.detachEvent("onchange",y),m=null,v=null)}
  function w (line 2) | function w(e,t){var n=c.updateValueIfChanged(e),r=!0===t.simulated&&I._a...
  function x (line 2) | function x(e,t){if("topChange"===e)return t}
  function E (line 2) | function E(e,t,n){"topFocus"===e?(_(),function(e,t){v=t,(m=e).attachEven...
  function C (line 2) | function C(){m&&(m.detachEvent("onpropertychange",A),m=null,v=null)}
  function A (line 2) | function A(e){"value"===e.propertyName&&w(v,e)&&y(e)}
  function k (line 2) | function k(e,t,n){"topFocus"===e?(C(),function(e,t){v=t,(m=e).attachEven...
  function O (line 2) | function O(e,t,n){if("topSelectionChange"===e||"topKeyUp"===e||"topKeyDo...
  function j (line 2) | function j(e,t,n){if("topClick"===e)return w(t,n)}
  function T (line 2) | function T(e,t,n){if("topInput"===e||"topChange"===e)return w(t,n)}
  function o (line 2) | function o(e){return!(!e||"function"!=typeof e.attachRef||"function"!=ty...
  function P (line 2) | function P(e,t){t&&(W[e._tag]&&(null!=t.children||null!=t.dangerouslySet...
  function N (line 2) | function N(e,t,n,r){if(!(r instanceof w)){0;var o=e._hostContainerInfo,a...
  function M (line 2) | function M(){var e=this;p.putListener(e.inst,e.registrationName,e.listen...
  function R (line 2) | function R(){v.postMountWrapper(this)}
  function D (line 2) | function D(){b.postMountWrapper(this)}
  function L (line 2) | function L(){g.postMountWrapper(this)}
  function F (line 2) | function F(){E.track(this)}
  function U (line 2) | function U(){var e=this;e._rootNodeID||r("63");var t=A(e);switch(t||r("6...
  function q (line 2) | function q(){y.postUpdateWrapper(this)}
  function K (line 2) | function K(e,t){return e.indexOf("-")>=0||null!=t.is}
  function G (line 2) | function G(e){var t=e.type;!function(e){J.call($,e)||(H.test(e)||r("65",...
  function o (line 2) | function o(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["We...
  function c (line 2) | function c(){this._rootNodeID&&p.updateWrapper(this)}
  function l (line 2) | function l(e){return"checkbox"===e.type||"radio"===e.type?null!=e.checke...
  function f (line 2) | function f(e){var t=this._currentElement.props,n=i.executeOnChange(t,e);...
    method constructor (line 2) | constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}
    method top (line 2) | get top(){return this.stack[this.stack.length-1]}
    method root (line 2) | get root(){return this.rootNode}
    method add (line 2) | add(e){this.top.children.push(e)}
    method openNode (line 2) | openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}
    method closeNode (line 2) | closeNode(){if(this.stack.length>1)return this.stack.pop()}
    method closeAllNodes (line 2) | closeAllNodes(){for(;this.closeNode(););}
    method toJSON (line 2) | toJSON(){return JSON.stringify(this.rootNode,null,4)}
    method walk (line 2) | walk(e){return this.constructor._walk(e,this.rootNode)}
    method _walk (line 2) | static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e...
    method _collapse (line 2) | static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(...
  function u (line 2) | function u(e){var t="";return o.Children.forEach(e,(function(e){null!=e&...
  function u (line 2) | function u(){this._rootNodeID&&c.updateWrapper(this)}
  function l (line 2) | function l(e){var t=this._currentElement.props,n=a.executeOnChange(t,e);...
  function u (line 2) | function u(e,t){return t&&(e=e||[]).push(t),e}
  function c (line 2) | function c(e,t){o.processChildrenUpdates(e,t)}
  function s (line 2) | function s(e,t,n,r){var a=void 0===e[n];null!=t&&a&&(e[n]=o(t,!0))}
  function y (line 2) | function y(e){}
  function b (line 2) | function b(e,t){0}
  function o (line 2) | function o(e,t,n,r){if(e&&"object"==typeof e){var o=e;0,void 0===o[n]&&n...
  function c (line 2) | function c(e){this.reinitializeTransaction(),this.renderToStaticMarkup=e...
  function e (line 2) | function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("C...
  function o (line 2) | function o(e,t){"_hostNode"in e||r("33"),"_hostNode"in t||r("33");for(va...
  function c (line 2) | function c(){this.reinitializeTransaction()}
  function p (line 2) | function p(e){for(;e._hostParent;)e=e._hostParent;var t=s.getNodeFromIns...
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  function f (line 2) | function f(e,t){this.topLevelType=e,this.nativeEvent=t,this.ancestors=[]}
    method constructor (line 2) | constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}
    method top (line 2) | get top(){return this.stack[this.stack.length-1]}
    method root (line 2) | get root(){return this.rootNode}
    method add (line 2) | add(e){this.top.children.push(e)}
    method openNode (line 2) | openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}
    method closeNode (line 2) | closeNode(){if(this.stack.length>1)return this.stack.pop()}
    method closeAllNodes (line 2) | closeAllNodes(){for(;this.closeNode(););}
    method toJSON (line 2) | toJSON(){return JSON.stringify(this.rootNode,null,4)}
    method walk (line 2) | walk(e){return this.constructor._walk(e,this.rootNode)}
    method _walk (line 2) | static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e...
    method _collapse (line 2) | static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(...
  function h (line 2) | function h(e){var t=c(e.nativeEvent),n=s.getClosestInstanceFromNode(t),r...
    method constructor (line 2) | constructor(e){super(),this.options=e}
    method addKeyword (line 2) | addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNo...
    method addText (line 2) | addText(e){""!==e&&this.add(e)}
    method addSublanguage (line 2) | addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}
    method toHTML (line 2) | toHTML(){return new p(this,this.options).value()}
    method finalize (line 2) | finalize(){return!0}
  function d (line 2) | function d(e){e(l(window))}
  function p (line 2) | function p(e){this.reinitializeTransaction(),this.renderToStaticMarkup=!...
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  function i (line 2) | function i(e,t,n,r){return e===n&&t===r}
  function r (line 2) | function r(e){for(;e&&e.firstChild;)e=e.firstChild;return e}
  function o (line 2) | function o(e){for(;e;){if(e.nextSibling)return e.nextSibling;e=e.parentN...
  function y (line 2) | function y(e,t){if(v||null==h||h!==u())return null;var n=function(e){if(...
  function E (line 2) | function E(e){return"."+e._rootNodeID}
  function S (line 2) | function S(e){return"button"===e||"input"===e||"select"===e||"textarea"=...
  function o (line 2) | function o(e,t,n,o){return r.call(this,e,t,n,o)}
  function a (line 2) | function a(e,t,n,o){return r.call(this,e,t,n,o)}
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function o (line 2) | function o(e,t,n,o){return r.call(this,e,t,n,o)}
  function i (line 2) | function i(e,t,n,o){return r.call(this,e,t,n,o)}
  function o (line 2) | function o(e,t,n,o){return r.call(this,e,t,n,o)}
  function a (line 2) | function a(e,t,n,o){return r.call(this,e,t,n,o)}
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function o (line 2) | function o(e,t,n,o){return r.call(this,e,t,n,o)}
  function o (line 2) | function o(e,t,n,o){return r.call(this,e,t,n,o)}
  function i (line 2) | function i(e){return e&&e.__esModule?e:{default:e}}
  function t (line 2) | function t(n,r){!function(e,t){if(!(e instanceof t))throw new TypeError(...
  function o (line 2) | function o(){}
  function a (line 2) | function a(){}
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function e (line 2) | function e(e,t,n,o,a,i){if(i!==r){var s=new Error("Calling PropTypes val...
  function t (line 2) | function t(){return e}
  function a (line 2) | function a(e,r){p(this,a);var o=f(this,n.call(this,e,r));o.version=T,o.s...
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function l (line 2) | function l(e){return e&&e.__esModule?e:{default:e}}
  function p (line 2) | function p(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a ...
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  function f (line 2) | function f(e,t){if(!e)throw new ReferenceError("this hasn't been initial...
    method constructor (line 2) | constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}
    method top (line 2) | get top(){return this.stack[this.stack.length-1]}
    method root (line 2) | get root(){return this.rootNode}
    method add (line 2) | add(e){this.top.children.push(e)}
    method openNode (line 2) | openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}
    method closeNode (line 2) | closeNode(){if(this.stack.length>1)return this.stack.pop()}
    method closeAllNodes (line 2) | closeAllNodes(){for(;this.closeNode(););}
    method toJSON (line 2) | toJSON(){return JSON.stringify(this.rootNode,null,4)}
    method walk (line 2) | walk(e){return this.constructor._walk(e,this.rootNode)}
    method _walk (line 2) | static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e...
    method _collapse (line 2) | static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(...
  function h (line 2) | function h(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("S...
    method constructor (line 2) | constructor(e){super(),this.options=e}
    method addKeyword (line 2) | addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNo...
    method addText (line 2) | addText(e){""!==e&&this.add(e)}
    method addSublanguage (line 2) | addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}
    method toHTML (line 2) | toHTML(){return new p(this,this.options).value()}
    method finalize (line 2) | finalize(){return!0}
  function g (line 2) | function g(e){return e.displayName||e.name||"Component"}
  function b (line 2) | function b(e,t){try{return e.apply(t)}catch(e){return y.value=e,y}}
  function u (line 2) | function u(e){return r.isMemo(e)?i:s[e.$$typeof]||o}
  function e (line 2) | function e(){}
  function a (line 2) | function a(e){return e&&e.__esModule?e:{default:e}}
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function i (line 2) | function i(e){return(i="function"==typeof Symbol&&"symbol"==typeof Symbo...
  function s (line 2) | function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){va...
  function u (line 2) | function u(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)r...
  function c (line 2) | function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a ...
  function l (line 2) | function l(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function p (line 2) | function p(e,t){return!t||"object"!==i(t)&&"function"!=typeof t?h(e):t}
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  function f (line 2) | function f(e){return(f=Object.setPrototypeOf?Object.getPrototypeOf:funct...
    method constructor (line 2) | constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}
    method top (line 2) | get top(){return this.stack[this.stack.length-1]}
    method root (line 2) | get root(){return this.rootNode}
    method add (line 2) | add(e){this.top.children.push(e)}
    method openNode (line 2) | openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}
    method closeNode (line 2) | closeNode(){if(this.stack.length>1)return this.stack.pop()}
    method closeAllNodes (line 2) | closeAllNodes(){for(;this.closeNode(););}
    method toJSON (line 2) | toJSON(){return JSON.stringify(this.rootNode,null,4)}
    method walk (line 2) | walk(e){return this.constructor._walk(e,this.rootNode)}
    method _walk (line 2) | static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e...
    method _collapse (line 2) | static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(...
  function h (line 2) | function h(e){if(void 0===e)throw new ReferenceError("this hasn't been i...
    method constructor (line 2) | constructor(e){super(),this.options=e}
    method addKeyword (line 2) | addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNo...
    method addText (line 2) | addText(e){""!==e&&this.add(e)}
    method addSublanguage (line 2) | addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}
    method toHTML (line 2) | toHTML(){return new p(this,this.options).value()}
    method finalize (line 2) | finalize(){return!0}
  function d (line 2) | function d(e,t){return(d=Object.setPrototypeOf||function(e,t){return e._...
  function m (line 2) | function m(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enume...
  function t (line 2) | function t(){var e,n;c(this,t);for(var a=arguments.length,i=new Array(a)...
  function n (line 2) | function n(e){return e instanceof Map?e.clear=e.delete=e.set=function(){...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  class a (line 2) | class a{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}ign...
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function i (line 2) | function i(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replac...
  function s (line 2) | function s(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t...
  function u (line 2) | function u(e){return e.nodeName.toLowerCase()}
  function s (line 2) | function s(){return e.length&&t.length?e[0].offset!==t[0].offset?e[0].of...
  function c (line 2) | function c(e){o+="<"+u(e)+[].map.call(e.attributes,(function(e){return" ...
  function l (line 2) | function l(e){o+="</"+u(e)+">"}
  function p (line 2) | function p(e){("start"===e.event?c:l)(e.node)}
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  class p (line 2) | class p{constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e...
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  class f (line 2) | class f{constructor(){this.rootNode={children:[]},this.stack=[this.rootN...
    method constructor (line 2) | constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}
    method top (line 2) | get top(){return this.stack[this.stack.length-1]}
    method root (line 2) | get root(){return this.rootNode}
    method add (line 2) | add(e){this.top.children.push(e)}
    method openNode (line 2) | openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}
    method closeNode (line 2) | closeNode(){if(this.stack.length>1)return this.stack.pop()}
    method closeAllNodes (line 2) | closeAllNodes(){for(;this.closeNode(););}
    method toJSON (line 2) | toJSON(){return JSON.stringify(this.rootNode,null,4)}
    method walk (line 2) | walk(e){return this.constructor._walk(e,this.rootNode)}
    method _walk (line 2) | static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e...
    method _collapse (line 2) | static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(...
  class h (line 2) | class h extends f{constructor(e){super(),this.options=e}addKeyword(e,t){...
    method constructor (line 2) | constructor(e){super(),this.options=e}
    method addKeyword (line 2) | addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNo...
    method addText (line 2) | addText(e){""!==e&&this.add(e)}
    method addSublanguage (line 2) | addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}
    method toHTML (line 2) | toHTML(){return new p(this,this.options).value()}
    method finalize (line 2) | finalize(){return!0}
  function d (line 2) | function d(e){return e?"string"==typeof e?e:e.source:null}
  function B (line 2) | function B(e){function t(t,n){return new RegExp(d(t),"m"+(e.case_insensi...
  function F (line 2) | function F(e){return!!e&&(e.endsWithParent||F(e.starts))}
  function U (line 2) | function U(e,t){return t?Number(t):function(e){return L.includes(e.toLow...
  function q (line 2) | function q(e){const t={props:["language","code","autodetect"],data:funct...
  function f (line 2) | function f(e){return p.noHighlightRe.test(e)}
    method constructor (line 2) | constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}
    method top (line 2) | get top(){return this.stack[this.stack.length-1]}
    method root (line 2) | get root(){return this.rootNode}
    method add (line 2) | add(e){this.top.children.push(e)}
    method openNode (line 2) | openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}
    method closeNode (line 2) | closeNode(){if(this.stack.length>1)return this.stack.pop()}
    method closeAllNodes (line 2) | closeAllNodes(){for(;this.closeNode(););}
    method toJSON (line 2) | toJSON(){return JSON.stringify(this.rootNode,null,4)}
    method walk (line 2) | walk(e){return this.constructor._walk(e,this.rootNode)}
    method _walk (line 2) | static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e...
    method _collapse (line 2) | static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(...
  function d (line 2) | function d(e,t,n,r){const o={code:t,language:e};E("before:highlight",o);...
  function m (line 2) | function m(e,t,r,o){const i=t;function u(e,t){const n=x.case_insensitive...
  function v (line 2) | function v(e,t){t=t||p.languages||Object.keys(n);const r=function(e){con...
  function g (line 2) | function g(e){return p.tabReplace||p.useBR?e.replace(u,(e=>"\n"===e?p.us...
  function y (line 2) | function y(e){let t=null;const n=function(e){let t=e.className+" ";t+=e....
  function _ (line 2) | function _(e){return e=(e||"").toLowerCase(),n[e]||n[o[e]]}
  function w (line 2) | function w(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach((e=...
  function x (line 2) | function x(e){const t=_(e);return t&&!t.disableAutodetect}
  function E (line 2) | function E(e,t){const n=e;i.forEach((function(e){e[n]&&e[n](t)}))}
  function a (line 2) | function a(e){return t.displayName=e.displayName||e.name,t;function t(t)...
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function n (line 2) | function n(e){for(var t,n,r,o,a=1,i=[].slice.call(arguments),s=0,u=e.len...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function E (line 2) | function E(e,t,n){var r="double"===(n.quoteStyle||t)?'"':"'";return r+e+r}
  function S (line 2) | function S(e){return String(e).replace(/"/g,"&quot;")}
  function C (line 2) | function C(e){return"[object Array]"===j(e)}
  function A (line 2) | function A(e){return"[object Symbol]"===j(e)}
  function _ (line 2) | function _(t,n,a){if(n&&(o=o.slice()).push(n),a){var i={depth:s.depth};r...
  function O (line 2) | function O(e,t){return k.call(e,t)}
  function j (line 2) | function j(e){return d.call(e)}
  function T (line 2) | function T(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0,r=e.length;...
  function I (line 2) | function I(e,t){if(e.length>t.maxStringLength){var n=e.length-t.maxStrin...
  function P (line 2) | function P(e){var t=e.charCodeAt(0),n={8:"b",9:"t",10:"n",12:"f",13:"r"}...
  function N (line 2) | function N(e){return"Object("+e+")"}
  function M (line 2) | function M(e){return e+" { ? }"}
  function R (line 2) | function R(e,t,n,r){return e+" ("+t+") {"+(r?D(n,r):n.join(", "))+"}"}
  function D (line 2) | function D(e,t){if(0===e.length)return"";var n="\n"+t.prev+t.base;return...
  function L (line 2) | function L(e,t){var n=C(e),r=[];if(n){r.length=e.length;for(var o=0;o<e....
  function v (line 2) | function v(e){throw RangeError(h[e])}
  function g (line 2) | function g(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}
  function y (line 2) | function y(e,t){var n=e.split("@"),r="";return n.length>1&&(r=n[0]+"@",e...
  function b (line 2) | function b(e){for(var t,n,r=[],o=0,a=e.length;o<a;)(t=e.charCodeAt(o++))...
  function _ (line 2) | function _(e){return g(e,(function(e){var t="";return e>65535&&(t+=m((e-...
  function w (line 2) | function w(e,t){return e+22+75*(e<26)-((0!=t)<<5)}
  function x (line 2) | function x(e,t,n){var r=0;for(e=n?d(e/700):e>>1,e+=d(e/t);e>455;r+=c)e=d...
  function E (line 2) | function E(e){var t,n,r,o,a,i,s,l,p,f,h,m=[],g=e.length,y=0,b=128,w=72;f...
  function S (line 2) | function S(e){var t,n,r,o,a,i,s,l,p,f,h,g,y,_,E,S=[];for(g=(e=b(e)).leng...
  function r (line 2) | function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}
  function a (line 2) | function a(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++...
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function a (line 2) | function a(e){return e&&e.__esModule?e:{default:e}}
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function i (line 2) | function i(e){return(i="function"==typeof Symbol&&"symbol"==typeof Symbo...
  function s (line 2) | function s(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)r...
  function u (line 2) | function u(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){va...
  function c (line 2) | function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[...
  function l (line 2) | function l(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function p (line 2) | function p(e,t){return(p=Object.setPrototypeOf||function(e,t){return e._...
    method constructor (line 2) | constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(...
    method addText (line 2) | addText(e){this.buffer+=i(e)}
    method openNode (line 2) | openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.cla...
    method closeNode (line 2) | closeNode(e){l(e)&&(this.buffer+="</span>")}
    method value (line 2) | value(){return this.buffer}
    method span (line 2) | span(e){this.buffer+=`<span class="${e}">`}
  function f (line 2) | function f(e){var t=function(){if("undefined"==typeof Reflect||!Reflect....
    method constructor (line 2) | constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}
    method top (line 2) | get top(){return this.stack[this.stack.length-1]}
    method root (line 2) | get root(){return this.rootNode}
    method add (line 2) | add(e){this.top.children.push(e)}
    method openNode (line 2) | openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}
    method closeNode (line 2) | closeNode(){if(this.stack.length>1)return this.stack.pop()}
    method closeAllNodes (line 2) | closeAllNodes(){for(;this.closeNode(););}
    method toJSON (line 2) | toJSON(){return JSON.stringify(this.rootNode,null,4)}
    method walk (line 2) | walk(e){return this.constructor._walk(e,this.rootNode)}
    method _walk (line 2) | static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e...
    method _collapse (line 2) | static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(...
  function h (line 2) | function h(e,t){return!t||"object"!==i(t)&&"function"!=typeof t?d(e):t}
    method constructor (line 2) | constructor(e){super(),this.options=e}
    method addKeyword (line 2) | addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNo...
    method addText (line 2) | addText(e){""!==e&&this.add(e)}
    method addSublanguage (line 2) | addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}
    method toHTML (line 2) | toHTML(){return new p(this,this.options).value()}
    method finalize (line 2) | finalize(){return!0}
  function d (line 2) | function d(e){if(void 0===e)throw new ReferenceError("this hasn't been i...
  function m (line 2) | function m(e){return(m=Object.setPrototypeOf?Object.getPrototypeOf:funct...
  function v (line 2) | function v(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enume...
  function u (line 2) | function u(e){var t;!function(e,t){if(!(e instanceof t))throw new TypeEr...
  function d (line 2) | function d(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}
  function m (line 2) | function m(e){if("number"==typeof e)return e;if(function(e){return"symbo...
  function y (line 2) | function y(t){var n=r,a=o;return r=o=void 0,c=t,i=e.apply(a,n)}
  function b (line 2) | function b(e){return c=e,s=setTimeout(w,t),l?y(e):i}
  function _ (line 2) | function _(e){var n=e-u;return void 0===u||n>=t||n<0||v&&e-c>=a}
  function w (line 2) | function w(){var e=h();if(_(e))return x(e);s=setTimeout(w,function(e){va...
  function x (line 2) | function x(e){return s=void 0,g&&r?y(e):(r=o=void 0,i)}
  function E (line 2) | function E(){var e=h(),n=_(e);if(r=arguments,o=this,u=e,n){if(void 0===s...
  function o (line 2) | function o(e){var t=a(e);return n(t)}
  function a (line 2) | function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'"...
    method constructor (line 2) | constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}
    method ignoreMatch (line 2) | ignoreMatch(){this.ignore=!0}
  function e (line 2) | function e(){var t,n=arguments.length>0&&void 0!==arguments[0]?arguments...
  function Y (line 2) | function Y(e,t,n){if(Object($.t)(e)&&!Object($.p)(e))return V()({},e);if...
  function G (line 2) | function G(e,t){var n=this,r=arguments.length>2&&void 0!==arguments[2]?a...
  function Z (line 2) | function Z(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0...
  function X (line 2) | function X(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[...
  function Q (line 2) | function Q(e,t,n){return function(e,t,n){var r=[Object($.J)(n)],o=H.a.__...
  function n (line 2) | function n(e,r){var o;_()(this,n),o=t.call(this,e,r),y()(ve()(o),"toggle...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){var e,r;_()(this,n);for(var o=arguments.length,a=new Array(...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){var e,r;_()(this,n);for(var o=arguments.length,a=new Array(...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(e,r){var o;return _()(this,n),o=t.call(this,e,r),y()(ve()(o),...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(e,r){var o;_()(this,n),o=t.call(this,e,r),y()(ve()(o),"onChan...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(e,r){var o;_()(this,n),o=t.call(this,e,r),y()(ve()(o),"onChan...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function Re (line 2) | function Re(e){var t=e.example,n=e.showValue,r=e.getComponent,o=e.getCon...
  function n (line 2) | function n(){var e,r;_()(this,n);for(var o=arguments.length,a=new Array(...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(e){var r;_()(this,n),r=t.call(this,e),y()(ve()(r),"_getStateF...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(e,r){var o;_()(this,n),o=t.call(this,e,r),y()(ve()(o),"close"...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){var e,r;_()(this,n);for(var o=arguments.length,a=new Array(...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){var e,r;_()(this,n);for(var o=arguments.length,a=new Array(...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function it (line 2) | function it(e){return e.match(/^(?:[a-z]+:)?\/\//i)}
  function st (line 2) | function st(e,t){return e?it(e)?(n=e).match(/^\/\//i)?u()(r="".concat(wi...
  function ut (line 2) | function ut(e,t){var n=arguments.length>2&&void 0!==arguments[2]?argumen...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function r (line 2) | function r(){return _()(this,r),t.apply(this,arguments)}
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){var e,r;_()(this,n);for(var o=arguments.length,a=new Array(...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){var e,r;_()(this,n);for(var o=arguments.length,a=new Array(...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){var e,r;_()(this,n);for(var o=arguments.length,a=new Array(...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(e,r){var o;return _()(this,n),o=t.call(this,e,r),y()(ve()(o),...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){var e,r;_()(this,n);for(var o=arguments.length,a=new Array(...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(e){var r;return _()(this,n),r=t.call(this,e),y()(ve()(r),"onC...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){var e,r;_()(this,n);for(var o=arguments.length,a=new Array(...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(e,r){var o;return _()(this,n),o=t.call(this,e,r),y()(ve()(o),...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){var e,r;_()(this,n);for(var o=arguments.length,a=new Array(...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function ln (line 2) | function ln(e){var t;return M()(t=(e||"").split(" ")).call(t,(function(e...
  function n (line 2) | function n(){var e,r;_()(this,n);for(var o=arguments.length,a=new Array(...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function _n (line 2) | function _n(){for(var e,t=arguments.length,n=new Array(t),r=0;r<t;r++)n[...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(e,r){var o,a;return _()(this,n),o=t.call(this,e,r),y()(ve()(o...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){var e,r,o;_()(this,n);for(var a=arguments.length,i=new Arra...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(e){var r,o;return _()(this,n),(o=t.call(this,e)).onClick=S()(...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){var e,r;_()(this,n);for(var o=arguments.length,a=new Array(...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(e,r){var o;return _()(this,n),o=t.call(this,e,r),y()(ve()(o),...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){var e,r;_()(this,n);for(var o=arguments.length,a=new Array(...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(e,r){var o;_()(this,n),o=t.call(this,e,r),y()(ve()(o),"toggle...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(e,r){var o;_()(this,n),o=t.call(this,e,r),y()(ve()(o),"active...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){var e,r;_()(this,n);for(var o=arguments.length,a=new Array(...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){var e,r;_()(this,n);for(var o=arguments.length,a=new Array(...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){return _()(this,n),t.apply(this,arguments)}
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){var e,r;_()(this,n);for(var o=arguments.length,a=new Array(...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(e,r){var o;return _()(this,n),o=t.call(this,e,r),y()(ve()(o),...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){var e,r;_()(this,n);for(var o=arguments.length,a=new Array(...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){var e,r;_()(this,n);for(var o=arguments.length,a=new Array(...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){var e,r;_()(this,n);for(var o=arguments.length,a=new Array(...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function n (line 2) | function n(){var e;return _()(this,n),e=t.call(this),y()(ve()(e),"onChan...
    method constructor (line 2) | constructor(e){super(n._prepareSuperMessage(e)),Object.defineProperty(...
    method _prepareSuperMessage (line 2) | static _prepareSuperMessage(e){try{return JSON.stringify(e)}catch{retu...
  function kr (line 2) | function kr(e){return B.List.isList(e)?e:T()(e)?Object(B.fromJS)(e):Obje...
  function Tr (line 2) | function Tr(){return[Or,jr.default]}
  function Lr (line 2) | function Lr(e){var t;H.a.versions=H.a.versions||{},H.a.versions.swaggerU...

FILE: assembly/assembly-swagger-war/src/main/webapp/swagger-ui-es-bundle-core.js
  function n (line 2) | function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{...
  function be (line 2) | function be(e){return we(e)?ye(e)?e.toJS():e:{}}
  function Ee (line 2) | function Ee(e){var t,n;if(ye(e))return e;if(e instanceof se.a.File)retur...
  function xe (line 2) | function xe(e){return l()(e)?e:[e]}
  function Se (line 2) | function Se(e){return"function"==typeof e}
  function we (line 2) | function we(e){return!!e&&"object"===i()(e)}
  function je (line 2) | function je(e){return"function"==typeof e}
  function Oe (line 2) | function Oe(e){return l()(e)}
  function _e (line 2) | function _e(e,t){var n;return j()(n=S()(e)).call(n,(function(n,r){return...
  function Ae (line 2) | function Ae(e,t){var n;return j()(n=S()(e)).call(n,(function(n,r){var a=...
  function ke (line 2) | function ke(e){return function(t){t.dispatch,t.getState;return function(...
  function Ie (line 2) | function Ie(e){var t,n=e.keySeq();return n.contains(ge)?ge:A()(t=E()(n)....
  function Pe (line 2) | function Pe(e,t){if(!J.a.Iterable.isIterable(e))return J.a.List();var n=...
  function Te (line 2) | function Te(e){var t,n=[/filename\*=[^']+'\w*'"([^"]+)";?/i,/filename\*=...
  function Re (line 2) | function Re(e){return t=e.replace(/\.[^./]*$/,""),K()($()(t));var t}
  function Ne (line 2) | function Ne(e,t,n,r,o){if(!t)return[];var s=[],c=t.get("nullable"),u=t.g...
  function $e (line 2) | function $e(e){return"string"!=typeof e||""===e?"":Object(W.sanitizeUrl)...
  function Ye (line 2) | function Ye(e){return!(!e||q()(e).call(e,"localhost")>=0||q()(e).call(e,...
  function Ke (line 2) | function Ke(e){if(!J.a.OrderedMap.isOrderedMap(e))return null;if(!e.size...
  function et (line 2) | function et(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?argum...
  function tt (line 2) | function tt(e){if("string"==typeof e)return e;if(e&&e.toJS&&(e=e.toJS())...
  function nt (line 2) | function nt(e){return"number"==typeof e?e.toString():e}
  function rt (line 2) | function rt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments...
  function at (line 2) | function at(e,t){var n,r=rt(e,{returnAll:!0});return E()(n=f()(r).call(r...
  function ot (line 2) | function ot(){return st(fe()(32).toString("base64"))}
  function it (line 2) | function it(e){return st(he()("sha256").update(e).digest("base64"))}
  function st (line 2) | function st(e){return e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=...
  function a (line 2) | function a(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.en...
  function o (line 2) | function o(t){return"function"==typeof r&&"symbol"==typeof a?(e.exports=...
  function f (line 2) | function f(e,t){var n=r(e);if(a){var s=a(e);t&&(s=o(s).call(s,(function(...
  function a (line 2) | function a(){return e.exports=a=r||function(e){for(var t=1;t<arguments.l...
  function u (line 2) | function u(e){var t=e.get("openapi");return"string"==typeof t&&(i()(t).c...
  function l (line 2) | function l(e){var t=e.get("swagger");return"string"==typeof t&&i()(t).ca...
  function p (line 2) | function p(e){return function(t,n){return function(r){return n&&n.specSe...
  function ye (line 2) | function ye(e){var t,n=(t=e,Y()(t)?t:"").replace(/\t/g,"  ");if("string"...
  function be (line 2) | function be(e){return{type:me,payload:e}}
  function Ee (line 2) | function Ee(e){return{type:ne,payload:e}}
  function xe (line 2) | function xe(e){return{type:re,payload:e}}
  function Ae (line 2) | function Ae(e,t,n,r,a){return{type:ae,payload:{path:e,value:r,paramName:...
  function ke (line 2) | function ke(e,t,n,r){return{type:ae,payload:{path:e,param:t,value:n,isXm...
  function Ne (line 2) | function Ne(e){return{type:de,payload:{pathMethod:e}}}
  function Me (line 2) | function Me(e,t){return{type:he,payload:{path:e,value:t,key:"consumes_va...
  function qe (line 2) | function qe(e,t){return{type:he,payload:{path:e,value:t,key:"produces_va...
  function Fe (line 2) | function Fe(e,t){return{type:pe,payload:{path:e,method:t}}}
  function Je (line 2) | function Je(e,t){return{type:fe,payload:{path:e,method:t}}}
  function We (line 2) | function We(e,t,n){return{type:ge,payload:{scheme:e,path:t,method:n}}}
  function h (line 2) | function h(e,t){return{type:r,payload:{selectedServerUrl:e,namespace:t}}}
  function m (line 2) | function m(e){var t=e.value,n=e.pathMethod;return{type:a,payload:{value:...
  function g (line 2) | function g(e){var t=e.value,n=e.pathMethod,r=e.name;return{type:i,payloa...
  function y (line 2) | function y(e){var t=e.name,n=e.pathMethod,r=e.contextType,a=e.contextNam...
  function b (line 2) | function b(e){var t=e.value,n=e.pathMethod;return{type:c,payload:{value:...
  function E (line 2) | function E(e){var t=e.value,n=e.path,r=e.method;return{type:u,payload:{v...
  function x (line 2) | function x(e){var t=e.server,n=e.namespace,r=e.key,a=e.val;return{type:l...
  function m (line 2) | function m(e){var t=e.openapi;return!!t&&f()(t,"3")}
  function v (line 2) | function v(e,t){var n=arguments.length>2&&void 0!==arguments[2]?argument...
  function g (line 2) | function g(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?argume...
  function y (line 2) | function y(e,t){var n;return c()(n="".concat(d(t),"-")).call(n,e)}
  function b (line 2) | function b(e,t){return e&&e.paths?function(e,t){return function(e,t,n){i...
  function E (line 2) | function E(e){var t=e.spec,n=t.paths,r={};if(!n||t.$$normalized)return e...
  function p (line 2) | function p(e){return{type:a,payload:Object(r.serializeError)(e)}}
  function f (line 2) | function f(e){return{type:o,payload:e}}
  function d (line 2) | function d(e){return{type:i,payload:e}}
  function h (line 2) | function h(e){return{type:s,payload:e}}
  function m (line 2) | function m(e){return{type:c,payload:e}}
  function v (line 2) | function v(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0...
  function g (line 2) | function g(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0...
  function a (line 2) | function a(e,t,n,a,o,i,s){try{var c=e[i](s),u=c.value}catch(e){return vo...
  function s (line 2) | function s(e){a(i,r,o,s,c,"next",e)}
  function c (line 2) | function c(e){a(i,r,o,s,c,"throw",e)}
  function x (line 2) | function x(e){return{type:d,payload:e}}
  function S (line 2) | function S(e){return{type:h,payload:e}}
  function j (line 2) | function j(e){return{type:m,payload:e}}
  function _ (line 2) | function _(e){return{type:g,payload:e}}
  function N (line 2) | function N(e){return{type:b,payload:e}}
  function M (line 2) | function M(e){return{type:E,payload:e}}
  function Se (line 2) | function Se(e,t,n,r){var a;t=t||[];var o=e.getIn(c()(a=["meta","paths"])...
  function je (line 2) | function je(e,t,n){var r;t=t||[];var a=xe.apply(void 0,c()(r=[e]).call(r...
  function Oe (line 2) | function Oe(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments...
  function Ce (line 2) | function Ce(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments...
  function _e (line 2) | function _e(e,t){var n,r;t=t||[];var a=z(e).getIn(c()(n=["paths"]).call(...
  function Ae (line 2) | function Ae(e,t){var n,r;t=t||[];var a=z(e).getIn(c()(n=["paths"]).call(...
  function ke (line 2) | function ke(e,t){var n;t=t||[];var r=z(e),o=r.getIn(c()(n=["paths"]).cal...
  function Ie (line 2) | function Ie(e,t){var n;t=t||[];var r=z(e),o=r.getIn(c()(n=["paths"]).cal...
  function qe (line 2) | function qe(e){return P.Map.isMap(e)?e:new P.Map}
  function r (line 2) | function r(e){return function(e){try{return!!JSON.parse(e)}catch(e){retu...
  function c (line 2) | function c(e){return{type:a,payload:e}}
  function u (line 2) | function u(e){return{type:o,payload:e}}
  function l (line 2) | function l(e){var t=!(arguments.length>1&&void 0!==arguments[1])||argume...
  function p (line 2) | function p(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[...
  function l (line 2) | function l(e){var t,n={jsSpec:{}},r=c()(u,(function(e,t){try{var r=t.tra...
  function s (line 2) | function s(e,t){return{type:o,payload:a()({},e,t)}}
  function c (line 2) | function c(e){return{type:i,payload:e}}
  function l (line 2) | function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[...
  function P (line 2) | function P(e){var t,n=[],r=c()(e.get("body").entrySeq());try{for(r.s();!...
  function a (line 2) | function a(){return c()(this,a),r.apply(this,arguments)}
  function a (line 2) | function a(){return c()(this,a),r.apply(this,arguments)}
  function i (line 2) | function i(t,n){var a;return c()(this,i),a=r.call(this,t,n),_(e,o,t,{}),a}
  function r (line 2) | function r(){return c()(this,r),n.apply(this,arguments)}
  function c (line 2) | function c(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var...
  function n (line 2) | function n(e,r){var a;i()(this,n),a=t.call(this,e,r),v()(l()(a),"getDefi...
  function n (line 2) | function n(e){var r;return i()(this,n),(r=t.call(this,e)).state={loaded:...
  function r (line 2) | function r(){var e,n;i()(this,r);for(var a=arguments.length,o=new Array(...
  function u (line 2) | function u(e){return/^<\/a\s*>/i.test(e)}
  function l (line 2) | function l(){var e=[],t=new s.a({stripPrefix:!1,url:!0,email:!0,replaceF...
  function p (line 2) | function p(e){var t,n,r,a,o,i,s,p,f,d,h,m,v,g,y=e.tokens,b=null;for(n=0,...
  function f (line 2) | function f(e){e.core.ruler.push("linkify",p)}
  function g (line 2) | function g(e){var t=e.source,n=e.className,r=void 0===n?"":n,i=e.getConf...
  function y (line 2) | function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[...
  function c (line 2) | function c(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var...
  function u (line 2) | function u(e){var t=this.__data__=new r(e);this.size=t.size}
  function a (line 2) | function a(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)t...
  function p (line 2) | function p(e){return a()(e).call(e,(function(e){var t,n="is not of a typ...
  function r (line 2) | function r(e,t){t.jsSpec;return e}
  function n (line 2) | function n(){var e,r,a,o,s,c;return i()(this,n),(c=t.call(this)).state={...
  function s (line 2) | function s(e){for(var t,n=arguments.length,a=new Array(n>1?n-1:0),o=1;o<...
  function d (line 2) | function d(e,t,n,r){var o,i=e.authActions.authorize,s=e.specSelectors,u=...
  function h (line 2) | function h(e,t,n){var r,o=e.authActions.authorize,i=e.specSelectors,s=i....
  function v (line 2) | function v(e){var t=e.fn;return{statePlugins:{spec:{actions:{download:fu...
  function o (line 2) | function o(n){n instanceof Error||n.status>=400?(a.updateLoadingStatus("...
  function o (line 2) | function o(){var e,n;a()(this,o);for(var i=arguments.length,s=new Array(...
  function o (line 2) | function o(){var e,n;a()(this,o);for(var i=arguments.length,s=new Array(...
  function s (line 2) | function s(e){return function(t,n){return function(){var r=n.getSystem()...
  function n (line 2) | function n(){return a()(this,n),t.apply(this,arguments)}
  function n (line 2) | function n(){var e,r;i()(this,n);for(var a=arguments.length,o=new Array(...
  function n (line 2) | function n(){return a()(this,n),t.apply(this,arguments)}
  function n (line 2) | function n(e,r){var o;return a()(this,n),o=t.call(this,e,r),h()(c()(o),"...
  function n (line 2) | function n(e,r){var o;a()(this,n),o=t.call(this,e,r),h()(c()(o),"onChang...
  function n (line 2) | function n(){var e,r;i()(this,n);for(var o=arguments.length,s=new Array(...
  function n (line 2) | function n(){return i()(this,n),t.apply(this,arguments)}
  function b (line 2) | function b(e){return function(){for(var t=arguments.length,n=new Array(t...
  function K (line 2) | function K(e){var t,n=arguments.length>1&&void 0!==arguments[1]?argument...
  function G (line 2) | function G(e){var t=e.value;return Array.isArray(t)?function(e){var t=e....
  function Q (line 2) | function Q(e){return ee.apply(this,arguments)}
  function ee (line 2) | function ee(){return(ee=s()(u.a.mark((function e(t){var n,r,a,o,i,s=argu...
  function ne (line 2) | function ne(e,t){return t&&(0===t.indexOf("application/json")||t.indexOf...
  function re (line 2) | function re(e,t){var n=arguments.length>2&&void 0!==arguments[2]?argumen...
  function ae (line 2) | function ae(e){return g()(e).call(e,", ")?e.split(", "):e}
  function oe (line 2) | function oe(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[...
  function ie (line 2) | function ie(e,t){return t||"undefined"==typeof navigator||(t=navigator),...
  function se (line 2) | function se(e,t){return Array.isArray(e)&&e.some((function(e){return ie(...
  function le (line 2) | function le(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&argume...
  function pe (line 2) | function pe(e,t,n,r){var a,i,s,c=r.style||"form",u=void 0===r.explode?"f...
  function fe (line 2) | function fe(e){return k()(e).reduce((function(e,t){var n,r=m()(t,2),a=r[...
  function de (line 2) | function de(e){var t=_()(e).reduce((function(t,n){var r,a=p()(le(n,e[n])...
  function he (line 2) | function he(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[...
  function Le (line 2) | function Le(e){return Array.isArray(e)?e.length<1?"":"/".concat(O()(e).c...
  function Ue (line 2) | function Ue(e,t,n){return{op:"replace",path:e,value:t,meta:n}}
  function Ve (line 2) | function Ve(e,t,n){var r;return He(We(O()(r=P()(e).call(e,Ze)).call(r,(f...
  function ze (line 2) | function ze(e,t,n){return n=n||[],Array.isArray(e)?O()(e).call(e,(functi...
  function Fe (line 2) | function Fe(e,t,n){var r=[];if((n=n||[]).length>0){var a=t(e,n[n.length-...
  function Je (line 2) | function Je(e){return Array.isArray(e)?e:[e]}
  function We (line 2) | function We(e){var t;return o()(t=[]).apply(t,F()(O()(e).call(e,(functio...
  function He (line 2) | function He(e){return P()(e).call(e,(function(e){return void 0!==e}))}
  function $e (line 2) | function $e(e){return e&&"object"===d()(e)}
  function Ye (line 2) | function Ye(e){return e&&"function"==typeof e}
  function Ke (line 2) | function Ke(e){if(Xe(e)){var t=e.op;return"add"===t||"remove"===t||"repl...
  function Ge (line 2) | function Ge(e){return Ke(e)||Xe(e)&&"mutation"===e.type}
  function Ze (line 2) | function Ze(e){return Ge(e)&&("add"===e.op||"replace"===e.op||"merge"===...
  function Xe (line 2) | function Xe(e){return e&&"object"===d()(e)}
  function Qe (line 2) | function Qe(e,t){try{return Re.getValueByPointer(e,t)}catch(e){return co...
  function it (line 2) | function it(e,t){function n(){Error.captureStackTrace?Error.captureStack...
  function mt (line 2) | function mt(e){var t=e[e.length-1],n=e[e.length-2],r=e.join("/");return ...
  function vt (line 2) | function vt(e,t){var n,r=e.split("#"),a=m()(r,2),i=a[0],s=a[1],c=ot.a.re...
  function r (line 2) | function r(e){return Be.isObject(e)&&(n.indexOf(e)>=0||_()(e).some((func...
  function Ct (line 2) | function Ct(e,t){if(!yt.test(e)){var n;if(!t)throw new bt(o()(n="Tried t...
  function _t (line 2) | function _t(e,t){var n,r;e&&e.response&&e.response.body?n=o()(r="".conca...
  function At (line 2) | function At(e){return(e+"").split("#")}
  function kt (line 2) | function kt(e,t){var n=Et[e];if(n&&!Be.isPromise(n))try{var r=Pt(t,n);re...
  function It (line 2) | function It(e){var t=Et[e];return t?Be.isPromise(t)?t:j
Copy disabled (too large) Download .json
Condensed preview — 1954 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (14,719K chars).
[
  {
    "path": ".ci/openshift-ci/Dockerfile",
    "chars": 1373,
    "preview": "#!/bin/bash\n#\n# Copyright (c) 2023 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available unde"
  },
  {
    "path": ".ci/openshift-ci/ca.crt",
    "chars": 1119,
    "preview": "-----BEGIN CERTIFICATE-----\nMIIDDDCCAfSgAwIBAgIBATANBgkqhkiG9w0BAQsFADAmMSQwIgYDVQQDDBtpbmdy\nZXNzLW9wZXJhdG9yQDE3MjQwNzU"
  },
  {
    "path": ".ci/openshift-ci/common.sh",
    "chars": 22136,
    "preview": "#!/bin/bash\n#\n# Copyright (c) 2023-2025 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available"
  },
  {
    "path": ".ci/openshift-ci/devworkspace-test.yaml",
    "chars": 569,
    "preview": "kind: DevWorkspace\napiVersion: workspace.devfile.io/v1alpha2\nmetadata:\n  name: ws-name\nspec:\n  started: true\n  routingCl"
  },
  {
    "path": ".ci/openshift-ci/htpasswdProvider.yaml",
    "chars": 233,
    "preview": "apiVersion: config.openshift.io/v1\nkind: OAuth\nmetadata:\n  name: cluster\nspec:\n  identityProviders:\n    - name: htpasswd"
  },
  {
    "path": ".ci/openshift-ci/oauth-secret.yaml",
    "chars": 398,
    "preview": "kind: Secret\napiVersion: v1\nmetadata:\n  name: gitlab-oauth-secret\n  namespace: eclipse-che\n  labels:\n    app.kubernetes."
  },
  {
    "path": ".ci/openshift-ci/pat-secret.yaml",
    "chars": 455,
    "preview": "kind: Secret\napiVersion: v1\nmetadata:\n  name: personal-access-token\n  labels:\n    app.kubernetes.io/component: scm-perso"
  },
  {
    "path": ".ci/openshift-ci/pod-che-smoke-test.yaml",
    "chars": 2111,
    "preview": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: che-smoke-test\n  namespace: CHE-NAMESPACE\nspec:\n  volumes:\n    - name: test-r"
  },
  {
    "path": ".ci/openshift-ci/pod-oauth-factory-test.yaml",
    "chars": 2625,
    "preview": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: oauth-factory-test\n  namespace: CHE-NAMESPACE\nspec:\n  volumes:\n    - name: te"
  },
  {
    "path": ".ci/openshift-ci/ssh-secret.yaml",
    "chars": 473,
    "preview": "apiVersion: v1\nkind: Secret\nmetadata:\n  name: git-ssh-key\n  annotations:\n    controller.devfile.io/mount-as: subpath\n   "
  },
  {
    "path": ".ci/openshift-ci/test-azure-no-pat-oauth-flow-raw-devfile-url.sh",
    "chars": 1657,
    "preview": "#!/bin/bash\n#\n# Copyright (c) 2023 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available unde"
  },
  {
    "path": ".ci/openshift-ci/test-azure-no-pat-oauth-flow-ssh-url.sh",
    "chars": 1607,
    "preview": "\n#!/bin/bash\n#\n# Copyright (c) 2023 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available und"
  },
  {
    "path": ".ci/openshift-ci/test-azure-no-pat-oauth-flow.sh",
    "chars": 1489,
    "preview": "#!/bin/bash\n#\n# Copyright (c) 2023 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available unde"
  },
  {
    "path": ".ci/openshift-ci/test-azure-with-pat-setup-flow.sh",
    "chars": 3116,
    "preview": "#!/bin/bash\n#\n# Copyright (c) 2023 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available unde"
  },
  {
    "path": ".ci/openshift-ci/test-bitbucket-no-pat-oauth-flow-raw-devfile-url.sh",
    "chars": 1620,
    "preview": "#!/bin/bash\n#\n# Copyright (c) 2023 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available unde"
  },
  {
    "path": ".ci/openshift-ci/test-bitbucket-no-pat-oauth-flow-ssh-url.sh",
    "chars": 1544,
    "preview": "\n#!/bin/bash\n#\n# Copyright (c) 2023 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available und"
  },
  {
    "path": ".ci/openshift-ci/test-bitbucket-no-pat-oauth-flow.sh",
    "chars": 1468,
    "preview": "#!/bin/bash\n#\n# Copyright (c) 2023 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available unde"
  },
  {
    "path": ".ci/openshift-ci/test-che-smoke-test.sh",
    "chars": 868,
    "preview": "#!/bin/bash\n#\n# Copyright (c) 2024  Red Hat, Inc.\n# This program and the accompanying materials are made\n# available und"
  },
  {
    "path": ".ci/openshift-ci/test-gitea-no-pat-oauth-flow.sh",
    "chars": 1967,
    "preview": "#!/bin/bash\n#\n# Copyright (c) 2023 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available unde"
  },
  {
    "path": ".ci/openshift-ci/test-gitea-with-pat-setup-flow.sh",
    "chars": 1203,
    "preview": "#!/bin/bash\n#\n# Copyright (c) 2023 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available unde"
  },
  {
    "path": ".ci/openshift-ci/test-github-no-pat-oauth-flow-raw-devfile-url.sh",
    "chars": 1563,
    "preview": "#!/bin/bash\n#\n# Copyright (c) 2023 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available unde"
  },
  {
    "path": ".ci/openshift-ci/test-github-no-pat-oauth-flow-ssh-url.sh",
    "chars": 1534,
    "preview": "\n#!/bin/bash\n#\n# Copyright (c) 2023 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available und"
  },
  {
    "path": ".ci/openshift-ci/test-github-no-pat-oauth-flow.sh",
    "chars": 1440,
    "preview": "#!/bin/bash\n#\n# Copyright (c) 2023 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available unde"
  },
  {
    "path": ".ci/openshift-ci/test-github-with-pat-setup-flow.sh",
    "chars": 3008,
    "preview": "#!/bin/bash\n#\n# Copyright (c) 2023 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available unde"
  },
  {
    "path": ".ci/openshift-ci/test-gitlab-no-pat-oauth-flow-raw-devfile-url.sh",
    "chars": 1541,
    "preview": "#!/bin/bash\n#\n# Copyright (c) 2023 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available unde"
  },
  {
    "path": ".ci/openshift-ci/test-gitlab-no-pat-oauth-flow-ssh-url.sh",
    "chars": 1534,
    "preview": "\n#!/bin/bash\n#\n# Copyright (c) 2023 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available und"
  },
  {
    "path": ".ci/openshift-ci/test-gitlab-no-pat-oauth-flow.sh",
    "chars": 2889,
    "preview": "#!/bin/bash\n#\n# Copyright (c) 2023 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available unde"
  },
  {
    "path": ".ci/openshift-ci/test-gitlab-with-oauth-setup-flow.sh",
    "chars": 1446,
    "preview": "#!/bin/bash\n#\n# Copyright (c) 2023 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available unde"
  },
  {
    "path": ".ci/openshift-ci/test-gitlab-with-pat-setup-flow.sh",
    "chars": 4438,
    "preview": "#!/bin/bash\n#\n# Copyright (c) 2023 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available unde"
  },
  {
    "path": ".gitattributes",
    "chars": 34,
    "preview": "*.sh text eol=lf\n*.ts text eol=lf\n"
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 267,
    "preview": "# Global Owners\n* @SDawley @ibuziuk @vinokurig @tolusha\n\n# che.properties file is quasi-documentation, so in future we m"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 2583,
    "preview": "<!-- Please review the following before submitting a PR:\nChe's Contributing Guide: https://github.com/eclipse/che/blob/m"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 160,
    "preview": "version: 2\nupdates:\n  - package-ecosystem: maven\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n      day: \"s"
  },
  {
    "path": ".github/workflows/build-pr-check.yml",
    "chars": 2901,
    "preview": "#\n# Copyright (c) 2020 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available under the terms "
  },
  {
    "path": ".github/workflows/che-properties-docs-update.yml",
    "chars": 1967,
    "preview": "#\n# Copyright (c) 2021 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available under the terms "
  },
  {
    "path": ".github/workflows/generate-maven-sbom.yml",
    "chars": 2008,
    "preview": "name: Generate Maven SBOM\n\non:\n  release:\n    types: [published]\n  workflow_dispatch:\n    inputs:\n      version:\n       "
  },
  {
    "path": ".github/workflows/next-build.yml",
    "chars": 1979,
    "preview": "#\n# Copyright (c) 2021 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available under the terms "
  },
  {
    "path": ".github/workflows/release.yml",
    "chars": 5705,
    "preview": "#\n# Copyright (c) 2020-2023 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available under the t"
  },
  {
    "path": ".github/workflows/try-in-web-ide.yaml",
    "chars": 347,
    "preview": "# Add Web IDE link on PRs\nname: Try in Web IDE\n\non:\n  pull_request_target:\n    types: [opened, synchronize]\n\njobs:\n  add"
  },
  {
    "path": ".gitignore",
    "chars": 1351,
    "preview": ".repository/\n\n# Eclipse  #\n###################\n\n*.launch\n.classpath\n.project\n.settings/\ntarget/\nbin/\ntest-output/\nmaven-"
  },
  {
    "path": ".mvn/jvm.config",
    "chars": 751,
    "preview": "-Xmx2048m -Xms1024m -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dgwt.compiler.localWorkers=1\n--add-exports"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 6923,
    "preview": "## Developing with Eclipse Che\n\nThis project contains a [devfile v2](https://github.com/eclipse-che/che-server/blob/main"
  },
  {
    "path": "LICENSE",
    "chars": 14197,
    "preview": "Eclipse Public License - v 2.0\n\n    THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE\n    PUBLIC LICE"
  },
  {
    "path": "NUMBERING.md",
    "chars": 482,
    "preview": "### Schema\n```\na.b.c-d\n  a = major\n  b = feature\n  c = bug fix\n  d = development, numbered as `<rc>d`\n```\n\n### Release\n`"
  },
  {
    "path": "README.md",
    "chars": 2124,
    "preview": "[![Contribute](https://www.eclipse.org/che/contribute.svg)](https://workspaces.openshift.com#https://github.com/eclipse-"
  },
  {
    "path": "RELEASE.md",
    "chars": 1191,
    "preview": "# Automated release workflow\nRelease is performed with GitHub Actions workflow [release.yml](https://github.com/eclipse/"
  },
  {
    "path": "assembly/assembly-che-tomcat/pom.xml",
    "chars": 3898,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Copyright (c) 2012-2026 Red Hat, Inc.\n    This program and the accompan"
  },
  {
    "path": "assembly/assembly-che-tomcat/src/assembly/LICENSE-tomcat.txt",
    "chars": 60269,
    "preview": "\n                                 Apache License\n                           Version 2.0, January 2004\n                  "
  },
  {
    "path": "assembly/assembly-che-tomcat/src/assembly/assembly.xml",
    "chars": 2940,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Copyright (c) 2012-2021 Red Hat, Inc.\n    This program and the accompan"
  },
  {
    "path": "assembly/assembly-che-tomcat/src/assembly/conf/logback-access.xml",
    "chars": 1421,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Copyright (c) 2012-2021 Red Hat, Inc.\n    This program and the accompan"
  },
  {
    "path": "assembly/assembly-che-tomcat/src/assembly/conf/logback-json-appenders.xml",
    "chars": 814,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Copyright (c) 2012-2021 Red Hat, Inc.\n    This program and the accompan"
  },
  {
    "path": "assembly/assembly-che-tomcat/src/assembly/conf/logback-plaintext-appenders.xml",
    "chars": 1369,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Copyright (c) 2012-2021 Red Hat, Inc.\n    This program and the accompan"
  },
  {
    "path": "assembly/assembly-che-tomcat/src/assembly/conf/logback.xml",
    "chars": 1355,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Copyright (c) 2012-2021 Red Hat, Inc.\n    This program and the accompan"
  },
  {
    "path": "assembly/assembly-che-tomcat/src/assembly/conf/server.xml",
    "chars": 7318,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  Licensed to the Apache Software Foundation (ASF) under one or more\n  contr"
  },
  {
    "path": "assembly/assembly-main/pom.xml",
    "chars": 4030,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Copyright (c) 2012-2026 Red Hat, Inc.\n    This program and the accompan"
  },
  {
    "path": "assembly/assembly-main/src/assembly/LICENSE",
    "chars": 11514,
    "preview": "Eclipse Public License - v 1.0\n\nTHE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC\nLICENSE (\"AG"
  },
  {
    "path": "assembly/assembly-main/src/assembly/README",
    "chars": 1003,
    "preview": "/*******************************************************************************\n * Copyright (c) 2012-2019 Red Hat, In"
  },
  {
    "path": "assembly/assembly-main/src/assembly/assembly.xml",
    "chars": 2899,
    "preview": "<!--\n\n    Copyright (c) 2012-2021 Red Hat, Inc.\n    This program and the accompanying materials are made\n    available u"
  },
  {
    "path": "assembly/assembly-root-war/pom.xml",
    "chars": 4213,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Copyright (c) 2012-2026 Red Hat, Inc.\n    This program and the accompan"
  },
  {
    "path": "assembly/assembly-root-war/src/main/java/org/eclipse/che/ApiAccessRejectionFilter.java",
    "chars": 1603,
    "preview": "/*\n * Copyright (c) 2012-2021 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "assembly/assembly-root-war/src/main/java/org/eclipse/che/DashboardModule.java",
    "chars": 711,
    "preview": "/*\n * Copyright (c) 2012-2021 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "assembly/assembly-root-war/src/main/java/org/eclipse/che/DashboardRedirectionFilter.java",
    "chars": 2017,
    "preview": "/*\n * Copyright (c) 2012-2021 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "assembly/assembly-root-war/src/main/webapp/META-INF/context.xml",
    "chars": 517,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Copyright (c) 2012-2021 Red Hat, Inc.\n    This program and the accompan"
  },
  {
    "path": "assembly/assembly-root-war/src/main/webapp/WEB-INF/rewrite.config",
    "chars": 474,
    "preview": "RewriteRule ^/factory$                /dashboard/#/load-factory/    [R,NE,QSA]\nRewriteRule ^/factory/$               /da"
  },
  {
    "path": "assembly/assembly-root-war/src/main/webapp/WEB-INF/web.xml",
    "chars": 2381,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Copyright (c) 2012-2021 Red Hat, Inc.\n    This program and the accompan"
  },
  {
    "path": "assembly/assembly-root-war/src/main/webapp/_app/keycloackLoader.js",
    "chars": 3802,
    "preview": "/*\n * Copyright (c) 2012-2021 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "assembly/assembly-root-war/src/main/webapp/_app/loader.css",
    "chars": 2962,
    "preview": "/**\n * Copyright (c) 2012-2021 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under "
  },
  {
    "path": "assembly/assembly-root-war/src/main/webapp/_app/loader.html",
    "chars": 1152,
    "preview": "<!--\n\n    Copyright (c) 2012-2021 Red Hat, Inc.\n    This program and the accompanying materials are made\n    available u"
  },
  {
    "path": "assembly/assembly-root-war/src/main/webapp/_app/loader.js",
    "chars": 8250,
    "preview": "/*\n * Copyright (c) 2012-2021 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "assembly/assembly-root-war/src/main/webapp/_app/oauth.html",
    "chars": 657,
    "preview": "<!--\n\n    Copyright (c) 2012-2021 Red Hat, Inc.\n    This program and the accompanying materials are made\n    available u"
  },
  {
    "path": "assembly/assembly-root-war/src/main/webapp/_app/oauthLoader.js",
    "chars": 5866,
    "preview": "/*\n * Copyright (c) 2012-2021 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "assembly/assembly-root-war/src/test/java/org/eclipse/che/ApiAccessRejectionFilterTest.java",
    "chars": 1665,
    "preview": "/*\n * Copyright (c) 2012-2025 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "assembly/assembly-root-war/src/test/java/org/eclipse/che/DashboardRedirectionFilterTest.java",
    "chars": 3917,
    "preview": "/*\n * Copyright (c) 2012-2026 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "assembly/assembly-swagger-war/pom.xml",
    "chars": 1668,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Copyright (c) 2012-2026 Red Hat, Inc.\n    This program and the accompan"
  },
  {
    "path": "assembly/assembly-swagger-war/src/main/webapp/index.html",
    "chars": 1707,
    "preview": "<!-- HTML for static distribution bundle build -->\n<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\">\n"
  },
  {
    "path": "assembly/assembly-swagger-war/src/main/webapp/oauth2-redirect.html",
    "chars": 2595,
    "preview": "<!doctype html>\n<html lang=\"en-US\">\n<head>\n    <title>Swagger UI: OAuth2 Redirect</title>\n</head>\n<body>\n<script>\n    'u"
  },
  {
    "path": "assembly/assembly-swagger-war/src/main/webapp/swagger-ui-bundle.js",
    "chars": 1090277,
    "preview": "/*! For license information please see swagger-ui-bundle.js.LICENSE.txt */\n!function(e,t){\"object\"==typeof exports&&\"obj"
  },
  {
    "path": "assembly/assembly-swagger-war/src/main/webapp/swagger-ui-es-bundle-core.js",
    "chars": 510551,
    "preview": "/*! For license information please see swagger-ui-es-bundle-core.js.LICENSE.txt */\nmodule.exports=function(e){var t={};f"
  },
  {
    "path": "assembly/assembly-swagger-war/src/main/webapp/swagger-ui-es-bundle.js",
    "chars": 1090060,
    "preview": "/*! For license information please see swagger-ui-es-bundle.js.LICENSE.txt */\nmodule.exports=function(e){var t={};functi"
  },
  {
    "path": "assembly/assembly-swagger-war/src/main/webapp/swagger-ui-standalone-preset.js",
    "chars": 336962,
    "preview": "/*! For license information please see swagger-ui-standalone-preset.js.LICENSE.txt */\n!function(t,e){\"object\"==typeof ex"
  },
  {
    "path": "assembly/assembly-swagger-war/src/main/webapp/swagger-ui.css",
    "chars": 143669,
    "preview": ".swagger-ui{color:#3b4151;\n  /*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */font-family:san"
  },
  {
    "path": "assembly/assembly-swagger-war/src/main/webapp/swagger-ui.js",
    "chars": 510740,
    "preview": "/*! For license information please see swagger-ui.js.LICENSE.txt */\n!function(e,t){\"object\"==typeof exports&&\"object\"==t"
  },
  {
    "path": "assembly/assembly-wsmaster-war/.deps/EXCLUDED/dev.md",
    "chars": 412,
    "preview": "This file contains a manual contribution to .deps/dev.md and it's needed because eclipse/dash-licenses does not deal wit"
  },
  {
    "path": "assembly/assembly-wsmaster-war/.deps/EXCLUDED/prod.md",
    "chars": 1346,
    "preview": "This file lists dependencies that do not need CQs or auto-detection does not work due to a bug in https://github.com/ecl"
  },
  {
    "path": "assembly/assembly-wsmaster-war/.deps/dev.md",
    "chars": 1053,
    "preview": "# Development dependencies\n\n| Packages | License | Resolved CQs |\n| --- | --- | --- |\n| `com.beust/jcommander@1.78` | Ap"
  },
  {
    "path": "assembly/assembly-wsmaster-war/.deps/problems.md",
    "chars": 61,
    "preview": "# Dependency analysis\n\n## UNRESOLVED Production dependencies\n"
  },
  {
    "path": "assembly/assembly-wsmaster-war/.deps/prod.md",
    "chars": 19238,
    "preview": "# Production dependencies\n\n| Packages | License | Resolved CQs |\n| --- | --- | --- |\n| `aopalliance/aopalliance@1.0` | L"
  },
  {
    "path": "assembly/assembly-wsmaster-war/gen-deps.sh",
    "chars": 353,
    "preview": "#!/bin/sh\n# Simple script that helps to build local version to test easily\nset -e\nset -u\ncd ../..\nmvn clean install\ncd  "
  },
  {
    "path": "assembly/assembly-wsmaster-war/pom.xml",
    "chars": 19215,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Copyright (c) 2012-2026 Red Hat, Inc.\n    This program and the accompan"
  },
  {
    "path": "assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/ReplicationModule.java",
    "chars": 2184,
    "preview": "/*\n * Copyright (c) 2012-2026 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/WsMasterModule.java",
    "chars": 23750,
    "preview": "/*\n * Copyright (c) 2012-2026 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/WsMasterServletModule.java",
    "chars": 2945,
    "preview": "/*\n * Copyright (c) 2012-2026 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/jsonrpc/CheJsonRpcWebSocketConfigurationModule.java",
    "chars": 1062,
    "preview": "/*\n * Copyright (c) 2012-2021 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/jsonrpc/CheMajorWebSocketEndpoint.java",
    "chars": 1610,
    "preview": "/*\n * Copyright (c) 2012-2021 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/jsonrpc/CheMajorWebSocketEndpointConfiguration.java",
    "chars": 3323,
    "preview": "/*\n * Copyright (c) 2012-2021 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/swagger/deploy/DocsModule.java",
    "chars": 661,
    "preview": "/*\n * Copyright (c) 2012-2025 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "assembly/assembly-wsmaster-war/src/main/resources/META-INF/persistence.xml",
    "chars": 5771,
    "preview": "<!--\n\n    Copyright (c) 2012-2023 Red Hat, Inc.\n    This program and the accompanying materials are made\n    available u"
  },
  {
    "path": "assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/che.properties",
    "chars": 37439,
    "preview": "#\n# Copyright (c) 2012-2026 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available under the t"
  },
  {
    "path": "assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/multiuser.properties",
    "chars": 7030,
    "preview": "#\n# Copyright (c) 2012-2026 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available under the t"
  },
  {
    "path": "assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che_aliases.properties",
    "chars": 2118,
    "preview": "#\n# Copyright (c) 2012-2023 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available under the t"
  },
  {
    "path": "assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/jgroups/che-tcp.xml",
    "chars": 1630,
    "preview": "<!--\n\n    Copyright (c) 2012-2021 Red Hat, Inc.\n    This program and the accompanying materials are made\n    available u"
  },
  {
    "path": "assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/keycloak/OIDCKeycloak.js",
    "chars": 61093,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/keycloak/oidcCallback.js",
    "chars": 816,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/keycloak/oidcCallbackDashboard.html",
    "chars": 522,
    "preview": "<!--\n\n    Copyright (c) 2012-2018 Red Hat, Inc.\n    This program and the accompanying materials are made\n    available u"
  },
  {
    "path": "assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/keycloak/oidcCallbackIde.html",
    "chars": 521,
    "preview": "<!--\n\n    Copyright (c) 2012-2018 Red Hat, Inc.\n    This program and the accompanying materials are made\n    available u"
  },
  {
    "path": "assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/logging.properties",
    "chars": 47,
    "preview": "handlers = org.slf4j.bridge.SLF4JBridgeHandler\n"
  },
  {
    "path": "assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/openapi-configuration.json",
    "chars": 674,
    "preview": "{\n  \"resourcePackages\": [\n    \"org.eclipse.che\"\n  ],\n  \"prettyPrint\" : true,\n  \"cacheTTL\": 0,\n  \"openAPI\": {\n    \"server"
  },
  {
    "path": "assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/web.xml",
    "chars": 1400,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Copyright (c) 2012-2025 Red Hat, Inc.\n    This program and the accompan"
  },
  {
    "path": "assembly/assembly-wsmaster-war/src/test/java/org/eclipse/che/integration/IntegrityConfigurationTest.java",
    "chars": 8368,
    "preview": "/*\n * Copyright (c) 2012-2024 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "assembly/assembly-wsmaster-war/src/test/resources/logback-test.xml",
    "chars": 724,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Copyright (c) 2012-2021 Red Hat, Inc.\n    This program and the accompan"
  },
  {
    "path": "assembly/pom.xml",
    "chars": 1215,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Copyright (c) 2012-2026 Red Hat, Inc.\n    This program and the accompan"
  },
  {
    "path": "build/README.md",
    "chars": 2644,
    "preview": "# Eclipse Che - Dockerfiles\n\nThis `che-dockerfiles` repository is where all dockerfiles for Che Launcher, Che's CLI and "
  },
  {
    "path": "build/build.sh",
    "chars": 9239,
    "preview": "#!/bin/bash\n#\n# Copyright (c) 2017-2023 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available"
  },
  {
    "path": "build/dockerfiles/Dockerfile",
    "chars": 1519,
    "preview": "# Copyright (c) 2018-2023 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available under the ter"
  },
  {
    "path": "build/dockerfiles/brew.Dockerfile",
    "chars": 1653,
    "preview": "# Copyright (c) 2018-2023 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available under the ter"
  },
  {
    "path": "build/dockerfiles/entrypoint.sh",
    "chars": 15351,
    "preview": "#!/bin/bash\n#\n# Copyright (c) 2012-2020 Red Hat, Inc.\n# This program and the accompanying materials are made\n# available"
  },
  {
    "path": "check_properties_description.sh",
    "chars": 614,
    "preview": "#!/bin/bash\n\nCHE_PROPERTIES_PATH=\"assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/che.properties\"\nMUL"
  },
  {
    "path": "core/che-core-api-core/pom.xml",
    "chars": 12289,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Copyright (c) 2012-2026 Red Hat, Inc.\n    This program and the accompan"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/ApiException.java",
    "chars": 1389,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/AuthenticationException.java",
    "chars": 1640,
    "preview": "/*\n * Copyright (c) 2012-2021 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/BadRequestException.java",
    "chars": 995,
    "preview": "/*\n * Copyright (c) 2012-2021 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/ConflictException.java",
    "chars": 1092,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/ErrorCodes.java",
    "chars": 700,
    "preview": "/*\n * Copyright (c) 2012-2021 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/ForbiddenException.java",
    "chars": 987,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/NotFoundException.java",
    "chars": 880,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/Page.java",
    "chars": 9533,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/Pages.java",
    "chars": 7110,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/ServerException.java",
    "chars": 1047,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/UnauthorizedException.java",
    "chars": 1475,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/ValidationException.java",
    "chars": 1066,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/cors/CheCorsFilter.java",
    "chars": 2049,
    "preview": "/*\n * Copyright (c) 2012-2021 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/cors/CheCorsFilterConfig.java",
    "chars": 2910,
    "preview": "/*\n * Copyright (c) 2012-2021 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/factory/FactoryParameter.java",
    "chars": 1443,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/ClientSubscriptionHandler.java",
    "chars": 1507,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/JsonRpcComposer.java",
    "chars": 2320,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/JsonRpcError.java",
    "chars": 786,
    "preview": "/*\n * Copyright (c) 2012-2021 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/JsonRpcErrorTransmitter.java",
    "chars": 1824,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/JsonRpcException.java",
    "chars": 991,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/JsonRpcMarshaller.java",
    "chars": 1023,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/JsonRpcMessageReceiver.java",
    "chars": 4994,
    "preview": "/*\n * Copyright (c) 2012-2021 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/JsonRpcMethodInvokerFilter.java",
    "chars": 1100,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/JsonRpcParams.java",
    "chars": 965,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/JsonRpcPromise.java",
    "chars": 5643,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/JsonRpcQualifier.java",
    "chars": 561,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/JsonRpcRequest.java",
    "chars": 991,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/JsonRpcResponse.java",
    "chars": 1160,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/JsonRpcResult.java",
    "chars": 965,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/JsonRpcUnmarshaller.java",
    "chars": 1170,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/JsonRpcUtils.java",
    "chars": 555,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/NotificationHandler.java",
    "chars": 622,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/RequestDispatcher.java",
    "chars": 2783,
    "preview": "/*\n * Copyright (c) 2012-2021 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/RequestHandler.java",
    "chars": 580,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/RequestHandlerConfigurator.java",
    "chars": 648,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/RequestHandlerManager.java",
    "chars": 18078,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/RequestProcessor.java",
    "chars": 757,
    "preview": "/*\n * Copyright (c) 2012-2021 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/RequestProcessorConfigurationProvider.java",
    "chars": 840,
    "preview": "/*\n * Copyright (c) 2012-2021 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/RequestTransmitter.java",
    "chars": 641,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/ResponseDispatcher.java",
    "chars": 6261,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/TimeoutActionRunner.java",
    "chars": 528,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/reception/ConsumerConfiguratorManyToNone.java",
    "chars": 1997,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/reception/ConsumerConfiguratorNoneToNone.java",
    "chars": 1562,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/reception/ConsumerConfiguratorOneToNone.java",
    "chars": 1960,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/reception/FunctionConfiguratorManyToMany.java",
    "chars": 2111,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/reception/FunctionConfiguratorManyToOne.java",
    "chars": 2330,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/reception/FunctionConfiguratorNoneToMany.java",
    "chars": 2083,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/reception/FunctionConfiguratorNoneToOne.java",
    "chars": 2041,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/reception/FunctionConfiguratorOneToMany.java",
    "chars": 2370,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/reception/FunctionConfiguratorOneToOne.java",
    "chars": 2320,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/reception/MethodNameConfigurator.java",
    "chars": 1474,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/reception/ParamsConfigurator.java",
    "chars": 4547,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/reception/PromiseConfigurationOneToOne.java",
    "chars": 2427,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/reception/ResultConfiguratorFromMany.java",
    "chars": 4539,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/reception/ResultConfiguratorFromNone.java",
    "chars": 4360,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/reception/ResultConfiguratorFromOne.java",
    "chars": 5211,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/transmission/EndpointIdConfigurator.java",
    "chars": 1822,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/transmission/MethodNameConfigurator.java",
    "chars": 2032,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/transmission/ParamsConfigurator.java",
    "chars": 7568,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/transmission/SendConfiguratorFromMany.java",
    "chars": 10662,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/transmission/SendConfiguratorFromNone.java",
    "chars": 8488,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/commons/transmission/SendConfiguratorFromOne.java",
    "chars": 10379,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/impl/GsonJsonRpcComposer.java",
    "chars": 2310,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/impl/GsonJsonRpcMarshaller.java",
    "chars": 5215,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/impl/GsonJsonRpcQualifier.java",
    "chars": 2984,
    "preview": "/*\n * Copyright (c) 2012-2025 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/impl/GsonJsonRpcUnmarshaller.java",
    "chars": 5450,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/impl/JsonRpcModule.java",
    "chars": 2284,
    "preview": "/*\n * Copyright (c) 2012-2021 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/impl/ServerSideRequestProcessor.java",
    "chars": 1508,
    "preview": "/*\n * Copyright (c) 2012-2021 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/impl/ServerSideRequestProcessorConfigurator.java",
    "chars": 1245,
    "preview": "/*\n * Copyright (c) 2012-2021 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/jsonrpc/impl/ServerSideTimeoutActionRunner.java",
    "chars": 935,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/notification/EventOrigin.java",
    "chars": 695,
    "preview": "/*\n * Copyright (c) 2012-2025 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/notification/EventService.java",
    "chars": 6976,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/notification/EventSubscriber.java",
    "chars": 716,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/notification/InmemoryRemoteSubscriptionStorage.java",
    "chars": 1610,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/notification/RemoteSubscriptionContext.java",
    "chars": 973,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/notification/RemoteSubscriptionManager.java",
    "chars": 3163,
    "preview": "/*\n * Copyright (c) 2012-2021 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/notification/RemoteSubscriptionStorage.java",
    "chars": 1423,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/notification/dto/EventSubscription.java",
    "chars": 664,
    "preview": "/*\n * Copyright (c) 2012-2018 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/rest/ApiExceptionMapper.java",
    "chars": 2879,
    "preview": "/*\n * Copyright (c) 2012-2021 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/rest/ApiInfoProvider.java",
    "chars": 2687,
    "preview": "/*\n * Copyright (c) 2012-2021 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/rest/ApiInfoService.java",
    "chars": 2217,
    "preview": "/*\n * Copyright (c) 2012-2025 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  },
  {
    "path": "core/che-core-api-core/src/main/java/org/eclipse/che/api/core/rest/AuthenticationExceptionMapper.java",
    "chars": 1556,
    "preview": "/*\n * Copyright (c) 2012-2021 Red Hat, Inc.\n * This program and the accompanying materials are made\n * available under t"
  }
]

// ... and 1754 more files (download for full content)

About this extraction

This page contains the full source code of the eclipse-che/che-server GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1954 files (13.4 MB), approximately 3.7M tokens, and a symbol index with 21308 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!