master ff2dd242f9b1 cached
3128 files
2.8 MB
913.5k tokens
497 symbols
1 requests
Download .txt
Showing preview only (3,643K chars total). Download the full file or copy to clipboard to get everything.
Repository: ballerina-platform/ballerina-distribution
Branch: master
Commit: ff2dd242f9b1
Files: 3128
Total size: 2.8 MB

Directory structure:
gitextract_3c7m_6fq/

├── .gitattributes
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug.yml
│   │   ├── config.yml
│   │   ├── improvement.yml
│   │   ├── new-feature.yml
│   │   └── task.yml
│   └── workflows/
│       ├── add_reason_labels.yml
│       ├── bbe-on-demand.yml
│       ├── daily-build-2201.12.x.yml
│       ├── daily-build-2201.13.x.yml
│       ├── daily-build-editor.yml
│       ├── daily-build.yml
│       ├── fossa_scan.yml
│       ├── language_server_simulator_fhir.yml
│       ├── language_server_simulator_nballerina.yml
│       ├── main.yml
│       ├── publish-release-artifacts-1.2.x.yml
│       ├── publish-release-artifacts.yml
│       ├── publish-release.yml
│       ├── publish_release_bi.yml
│       ├── pull-request.yml
│       ├── sign-installers.yml
│       ├── test-installers.yml
│       └── trigger-bbe-generation.yml
├── .gitignore
├── .trivyignore
├── LICENSE
├── README.md
├── ballerina/
│   ├── COPYRIGHT
│   ├── LICENSE
│   ├── README
│   ├── build.gradle
│   └── lib/
│       ├── run.bat
│       ├── run.sh
│       └── version.txt
├── ballerina-test/
│   ├── build.gradle
│   ├── gradle.properties
│   └── src/
│       └── test/
│           ├── java/
│           │   └── org/
│           │       └── ballerinalang/
│           │           └── distribution/
│           │               ├── lengthValidation/
│           │               │   ├── LengthValidator.java
│           │               │   └── LineLengthExceededException.java
│           │               ├── test/
│           │               │   ├── ArtifactBuildTest.java
│           │               │   ├── BallerinaCommandTest.java
│           │               │   ├── DistributionArtifactCheckTest.java
│           │               │   ├── GraphqlToolTest.java
│           │               │   ├── GrpcToolingTest.java
│           │               │   ├── OpenAPIArtifactBuildTest.java
│           │               │   ├── OpenAPIDistributionArtifactCheck.java
│           │               │   └── PlatformDistributionArtifactCheckTest.java
│           │               └── utils/
│           │                   └── TestUtils.java
│           └── resources/
│               ├── graphql/
│               │   ├── client-gen/
│               │   │   ├── project_1/
│               │   │   │   ├── graphql_endpoint.config.yaml
│               │   │   │   └── query_country.graphql
│               │   │   └── project_2/
│               │   │       ├── graphql_schema.config.yaml
│               │   │       ├── queries/
│               │   │       │   └── query_country.graphql
│               │   │       └── schema_country.graphql
│               │   ├── schema-gen/
│               │   │   ├── project_1/
│               │   │   │   ├── Ballerina.toml
│               │   │   │   └── main.bal
│               │   │   └── service.bal
│               │   └── service-gen/
│               │       ├── schema_book.graphql
│               │       └── schema_starwars.graphql
│               ├── grpc/
│               │   ├── expected-files/
│               │   │   └── route_guide_pb.bal
│               │   └── proto-files/
│               │       └── route_guide.proto
│               ├── openapi/
│               │   ├── expected/
│               │   │   ├── client.bal
│               │   │   ├── filtered_tags.bal
│               │   │   ├── types.bal
│               │   │   └── utils.bal
│               │   ├── integration-tests/
│               │   │   ├── Ballerina.toml
│               │   │   ├── Package.md
│               │   │   └── testFiles/
│               │   │       ├── openapi-validator-off.bal
│               │   │       ├── openapi-validator-on.bal
│               │   │       ├── openapi_validator_off.yaml
│               │   │       └── openapi_validator_on.yaml
│               │   ├── openapi_client.yaml
│               │   ├── petstore.bal
│               │   ├── petstore.yaml
│               │   └── petstoreTags.yaml
│               ├── testing-line-length.xml
│               └── testng.xml
├── ballerina-test-automation/
│   ├── build.gradle
│   ├── gradle.properties
│   ├── gradlew
│   ├── gradlew.bat
│   ├── installer-test/
│   │   ├── build.gradle
│   │   └── src/
│   │       └── test/
│   │           ├── java/
│   │           │   └── io/
│   │           │       └── ballerina/
│   │           │           └── installer/
│   │           │               └── test/
│   │           │                   ├── CentralTest.java
│   │           │                   ├── InstallerTest.java
│   │           │                   ├── ProjectTest.java
│   │           │                   └── TestUtils.java
│   │           └── resources/
│   │               └── testng.xml
│   ├── settings.gradle
│   ├── test-automation/
│   │   ├── build.gradle
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── io/
│   │                   └── ballerina/
│   │                       └── test/
│   │                           ├── CentOS.java
│   │                           ├── Executor.java
│   │                           ├── MacOS.java
│   │                           ├── Ubuntu.java
│   │                           ├── Utils.java
│   │                           └── Windows.java
│   └── update-tool-test/
│       ├── build.gradle
│       └── src/
│           └── test/
│               ├── java/
│               │   └── io/
│               │       └── ballerina/
│               │           └── tool/
│               │               └── test/
│               │                   ├── FetchDependencyTest.java
│               │                   ├── UpdateDistTest.java
│               │                   └── UpdateToolTest.java
│               └── resources/
│                   └── testng.xml
├── build-time-tests/
│   ├── build.gradle
│   ├── samples/
│   │   ├── build-samples.sh
│   │   ├── helloservice/
│   │   │   ├── Ballerina.toml
│   │   │   └── service.bal
│   │   └── helloworld/
│   │       ├── Ballerina.toml
│   │       └── helloworld.bal
│   └── src/
│       └── main/
│           └── java/
│               └── org/
│                   └── ballerina/
│                       └── packages/
│                           └── buildtime/
│                               └── GenerateBuildDataCsv.java
├── build.gradle
├── cache-generator/
│   ├── build.gradle
│   └── src/
│       └── main/
│           ├── java/
│           │   ├── io/
│           │   │   └── ballerina/
│           │   │       └── gencache/
│           │   │           └── cmd/
│           │   │               └── GenCacheCmd.java
│           │   └── module-info.java
│           └── resources/
│               └── META-INF/
│                   └── services/
│                       └── io.ballerina.cli.BLauncherCmd
├── config/
│   └── checkstyle/
│       ├── build.gradle
│       ├── checkstyle.xml
│       └── suppressions.xml
├── devtools-integration-tests/
│   ├── build.gradle
│   ├── index.json
│   ├── src/
│   │   └── test/
│   │       ├── java/
│   │       │   └── org/
│   │       │       └── ballerina/
│   │       │           └── devtools/
│   │       │               └── debug/
│   │       │                   ├── BaseTestCase.java
│   │       │                   ├── ExpressionEvaluationTest.java
│   │       │                   ├── ModuleBreakpointTest.java
│   │       │                   └── ServiceDebugTest.java
│   │       └── resources/
│   │           ├── debug/
│   │           │   ├── project-based-tests/
│   │           │   │   ├── breakpoint-tests/
│   │           │   │   │   ├── Ballerina.toml
│   │           │   │   │   └── main.bal
│   │           │   │   ├── evaluation-tests/
│   │           │   │   │   ├── Ballerina.toml
│   │           │   │   │   └── main.bal
│   │           │   │   └── service-tests/
│   │           │   │       ├── Ballerina.toml
│   │           │   │       ├── hello_service.bal
│   │           │   │       └── tests/
│   │           │   │           └── hello_service_test.bal
│   │           │   └── single-file-tests/
│   │           │       └── hello_service.bal
│   │           └── testng.xml
│   └── testerina-object-mocking-test/
│       ├── client.bal
│       ├── service.bal
│       └── tests/
│           └── main_test.bal
├── dist-repo-builder/
│   ├── build.gradle
│   └── src/
│       └── main/
│           └── java/
│               └── io/
│                   └── ballerina/
│                       └── dist/
│                           └── DistRepoBuilder.java
├── doc-guidelines.md
├── docs/
│   └── build-ballerina-from-source.md
├── examples/
│   ├── access-json-elements/
│   │   ├── access_json_elements.bal
│   │   ├── access_json_elements.md
│   │   ├── access_json_elements.metatags
│   │   └── access_json_elements.out
│   ├── access-optional-json-elements/
│   │   ├── access_optional_json_elements.bal
│   │   ├── access_optional_json_elements.md
│   │   ├── access_optional_json_elements.metatags
│   │   └── access_optional_json_elements.out
│   ├── advanced-conflict-handling/
│   │   ├── advanced_conflict_handling.bal
│   │   ├── advanced_conflict_handling.md
│   │   ├── advanced_conflict_handling.metatags
│   │   └── advanced_conflict_handling.out
│   ├── aggregation/
│   │   ├── aggregation.bal
│   │   ├── aggregation.md
│   │   ├── aggregation.metatags
│   │   └── aggregation.out
│   ├── ai-agent-external-endpoint-integration/
│   │   ├── ai_agent_external_endpoint_integration.bal
│   │   ├── ai_agent_external_endpoint_integration.md
│   │   ├── ai_agent_external_endpoint_integration.metatags
│   │   └── ai_agent_external_endpoint_integration.out
│   ├── ai-agent-local-tools/
│   │   ├── ai_agent_local_tools.bal
│   │   ├── ai_agent_local_tools.md
│   │   ├── ai_agent_local_tools.metatags
│   │   └── ai_agent_local_tools.out
│   ├── ai-agent-mcp-integration/
│   │   ├── ai_agent_mcp_integration.bal
│   │   ├── ai_agent_mcp_integration.md
│   │   ├── ai_agent_mcp_integration.metatags
│   │   └── ai_agent_mcp_integration.out
│   ├── ai-agent-tool-kit/
│   │   ├── ai_agent_tool_kit.bal
│   │   ├── ai_agent_tool_kit.md
│   │   ├── ai_agent_tool_kit.metatags
│   │   └── ai_agent_tool_kit.out
│   ├── alternate-receive/
│   │   ├── alternate_receive.bal
│   │   ├── alternate_receive.md
│   │   ├── alternate_receive.metatags
│   │   └── alternate_receive.out
│   ├── alternate-wait/
│   │   ├── alternate_wait.bal
│   │   ├── alternate_wait.md
│   │   ├── alternate_wait.metatags
│   │   └── alternate_wait.out
│   ├── annotations/
│   │   ├── annotations.bal
│   │   ├── annotations.md
│   │   ├── annotations.metatags
│   │   └── annotations.out
│   ├── anonymous-function/
│   │   ├── anonymous_function.bal
│   │   ├── anonymous_function.md
│   │   ├── anonymous_function.metatags
│   │   └── anonymous_function.out
│   ├── any-type/
│   │   ├── any_type.bal
│   │   ├── any_type.md
│   │   ├── any_type.metatags
│   │   └── any_type.out
│   ├── anydata-to-yaml-string/
│   │   ├── anydata_to_yaml_string.bal
│   │   ├── anydata_to_yaml_string.md
│   │   ├── anydata_to_yaml_string.metatags
│   │   └── anydata_to_yaml_string.out
│   ├── anydata-type/
│   │   ├── anydata_type.bal
│   │   ├── anydata_type.md
│   │   ├── anydata_type.metatags
│   │   └── anydata_type.out
│   ├── array-map-symmetry/
│   │   ├── array_map_symmetry.bal
│   │   ├── array_map_symmetry.md
│   │   ├── array_map_symmetry.metatags
│   │   └── array_map_symmetry.out
│   ├── arrays/
│   │   ├── arrays.bal
│   │   ├── arrays.md
│   │   ├── arrays.metatags
│   │   └── arrays.out
│   ├── asynchronize-message-passing/
│   │   ├── asynchronize_message_passing.bal
│   │   ├── asynchronize_message_passing.md
│   │   ├── asynchronize_message_passing.metatags
│   │   └── asynchronize_message_passing.out
│   ├── asynchronous-function-calls/
│   │   ├── asynchronous_function_calls.bal
│   │   ├── asynchronous_function_calls.md
│   │   ├── asynchronous_function_calls.metatags
│   │   └── asynchronous_function_calls.out
│   ├── avro-serdes/
│   │   ├── avro_serdes.bal
│   │   ├── avro_serdes.md
│   │   ├── avro_serdes.metatags
│   │   └── avro_serdes.out
│   ├── aws-lambda-dynamodb-trigger/
│   │   ├── aws_deploy.out
│   │   ├── aws_lambda_dynamodb_trigger.bal
│   │   ├── aws_lambda_dynamodb_trigger.md
│   │   ├── aws_lambda_dynamodb_trigger.metatags
│   │   ├── bal_build.out
│   │   └── bal_new.out
│   ├── aws-lambda-execution-context/
│   │   ├── aws_deploy.out
│   │   ├── aws_lambda_execution_context.bal
│   │   ├── aws_lambda_execution_context.md
│   │   ├── aws_lambda_execution_context.metatags
│   │   ├── bal_build.out
│   │   ├── bal_new.out
│   │   └── invoke_functions.out
│   ├── aws-lambda-hello-world/
│   │   ├── aws_deploy.out
│   │   ├── aws_lambda_hello_world.bal
│   │   ├── aws_lambda_hello_world.md
│   │   ├── aws_lambda_hello_world.metatags
│   │   ├── bal_build.out
│   │   ├── bal_new.out
│   │   └── invoke_functions.out
│   ├── aws-lambda-s3-trigger/
│   │   ├── aws_deploy.out
│   │   ├── aws_lambda_s3_trigger.bal
│   │   ├── aws_lambda_s3_trigger.md
│   │   ├── aws_lambda_s3_trigger.metatags
│   │   ├── bal_build.out
│   │   └── bal_new.out
│   ├── azure-functions-cosmosdb-trigger/
│   │   ├── az_deploy.out
│   │   ├── azure_functions_cosmosdb_trigger.bal
│   │   ├── azure_functions_cosmosdb_trigger.md
│   │   ├── azure_functions_cosmosdb_trigger.metatags
│   │   ├── bal_build.out
│   │   └── bal_new.out
│   ├── azure-functions-hello-world/
│   │   ├── az_deploy.out
│   │   ├── azure_functions_hello_world.bal
│   │   ├── azure_functions_hello_world.md
│   │   ├── azure_functions_hello_world.metatags
│   │   ├── bal_build.out
│   │   ├── bal_new.out
│   │   └── execute_function.out
│   ├── azure-functions-http-trigger-with-queue/
│   │   ├── az_deploy.out
│   │   ├── azure_functions_http_trigger_with_queue.bal
│   │   ├── azure_functions_http_trigger_with_queue.md
│   │   ├── azure_functions_http_trigger_with_queue.metatags
│   │   ├── bal_build.out
│   │   ├── bal_new.out
│   │   └── execute_function.out
│   ├── azure-functions-timer-trigger/
│   │   ├── az_deploy.out
│   │   ├── azure_functions_timer_trigger.bal
│   │   ├── azure_functions_timer_trigger.md
│   │   ├── azure_functions_timer_trigger.metatags
│   │   ├── bal_build.out
│   │   └── bal_new.out
│   ├── binary-data/
│   │   ├── binary_data.bal
│   │   ├── binary_data.md
│   │   ├── binary_data.metatags
│   │   └── binary_data.out
│   ├── binary-operators/
│   │   ├── binary_operators.bal
│   │   ├── binary_operators.md
│   │   ├── binary_operators.metatags
│   │   └── binary_operators.out
│   ├── binding-patterns/
│   │   ├── binding_patterns.bal
│   │   ├── binding_patterns.md
│   │   ├── binding_patterns.metatags
│   │   └── binding_patterns.out
│   ├── binding-patterns-in-match-statement/
│   │   ├── binding_patterns_in_match_statement.bal
│   │   ├── binding_patterns_in_match_statement.md
│   │   ├── binding_patterns_in_match_statement.metatags
│   │   └── binding_patterns_in_match_statement.out
│   ├── boolean/
│   │   ├── boolean.bal
│   │   ├── boolean.md
│   │   ├── boolean.metatags
│   │   └── boolean.out
│   ├── break-statement/
│   │   ├── break_statement.bal
│   │   ├── break_statement.md
│   │   ├── break_statement.metatags
│   │   └── break_statement.out
│   ├── built-in-integer-subtypes/
│   │   ├── built_in_integer_subtypes.bal
│   │   ├── built_in_integer_subtypes.md
│   │   ├── built_in_integer_subtypes.metatags
│   │   └── built_in_integer_subtypes.out
│   ├── built-in-string-subtype/
│   │   ├── built_in_string_subtype.bal
│   │   ├── built_in_string_subtype.md
│   │   ├── built_in_string_subtype.metatags
│   │   └── built_in_string_subtype.out
│   ├── byte-type/
│   │   ├── byte_type.bal
│   │   ├── byte_type.md
│   │   ├── byte_type.metatags
│   │   └── byte_type.out
│   ├── c2c-docker-deployment/
│   │   ├── Cloud.toml
│   │   ├── build_output.out
│   │   ├── c2c_docker_deployment.bal
│   │   ├── c2c_docker_deployment.md
│   │   ├── docker_images.out
│   │   ├── docker_run.out
│   │   └── execute_curl.out
│   ├── c2c-k8s-deployment/
│   │   ├── Cloud.toml
│   │   ├── build_output.out
│   │   ├── c2c_k8s_deployment.bal
│   │   ├── c2c_k8s_deployment.md
│   │   ├── docker_push.out
│   │   ├── execute_curl.out
│   │   ├── kubectl_apply.out
│   │   ├── kubectl_expose.out
│   │   ├── kubectl_pods.out
│   │   ├── kubectl_svc.out
│   │   └── minikube_ip.out
│   ├── cache-basics/
│   │   ├── cache_basics.bal
│   │   ├── cache_basics.md
│   │   ├── cache_basics.metatags
│   │   ├── cache_basics.out
│   │   └── tests/
│   │       └── cache_test.bal
│   ├── cache-invalidation/
│   │   ├── cache_invalidation.bal
│   │   ├── cache_invalidation.md
│   │   ├── cache_invalidation.metatags
│   │   ├── cache_invalidation.out
│   │   └── tests/
│   │       └── cache_test.bal
│   ├── casting-json-to-user-defined-type/
│   │   ├── casting_json_to_user_defined_type.bal
│   │   ├── casting_json_to_user_defined_type.md
│   │   ├── casting_json_to_user_defined_type.metatags
│   │   └── casting_json_to_user_defined_type.out
│   ├── cdc-advanced-service/
│   │   ├── cdc_advanced_service.bal
│   │   ├── cdc_advanced_service.md
│   │   ├── cdc_advanced_service.metatags
│   │   └── cdc_advanced_service.out
│   ├── cdc-prerequisite/
│   │   ├── README.md
│   │   ├── setup_finance_db.bal
│   │   ├── setup_store_db.bal
│   │   ├── test_cdc_advanced_service.bal
│   │   └── test_cdc_service.bal
│   ├── cdc-service/
│   │   ├── cdc_service.bal
│   │   ├── cdc_service.md
│   │   ├── cdc_service.metatags
│   │   └── cdc_service.out
│   ├── chat-agents/
│   │   ├── chat_agents.bal
│   │   ├── chat_agents.md
│   │   ├── chat_agents.metatags
│   │   └── chat_agents.out
│   ├── check-expression/
│   │   ├── check_expression.bal
│   │   ├── check_expression.md
│   │   ├── check_expression.metatags
│   │   └── check_expression.out
│   ├── check-semantics/
│   │   ├── check_semantics.bal
│   │   ├── check_semantics.md
│   │   ├── check_semantics.metatags
│   │   └── check_semantics.out
│   ├── child-loggers-with-context/
│   │   ├── child_loggers_with_context.bal
│   │   ├── child_loggers_with_context.md
│   │   ├── child_loggers_with_context.metatags
│   │   └── child_loggers_with_context.out
│   ├── client-class/
│   │   ├── client_class.bal
│   │   ├── client_class.md
│   │   ├── client_class.metatags
│   │   └── client_class.out
│   ├── combining-isolated-functions-and-lock/
│   │   ├── combining_isolated_functions_and_lock.bal
│   │   ├── combining_isolated_functions_and_lock.md
│   │   ├── combining_isolated_functions_and_lock.metatags
│   │   └── combining_isolated_functions_and_lock.out
│   ├── commit-rollback-handlers/
│   │   ├── commit_rollback_handlers.bal
│   │   ├── commit_rollback_handlers.md
│   │   ├── commit_rollback_handlers.metatags
│   │   └── commit_rollback_handlers.out
│   ├── computed-field-key/
│   │   ├── computed_field_key.bal
│   │   ├── computed_field_key.md
│   │   ├── computed_field_key.metatags
│   │   └── computed_field_key.out
│   ├── conditional-send/
│   │   ├── conditional_send.bal
│   │   ├── conditional_send.md
│   │   ├── conditional_send.metatags
│   │   └── conditional_send.out
│   ├── configurable-variables/
│   │   ├── configurable_variables.bal
│   │   ├── configurable_variables.md
│   │   ├── configurable_variables.metatags
│   │   └── configurable_variables.out
│   ├── configuring-via-cli/
│   │   ├── configuring_via_cli.bal
│   │   ├── configuring_via_cli.md
│   │   ├── configuring_via_cli.metatags
│   │   └── configuring_via_cli.out
│   ├── configuring-via-toml/
│   │   ├── configuring-via-toml.md
│   │   ├── configuring_via_toml.bal
│   │   ├── configuring_via_toml.metatags
│   │   └── configuring_via_toml.out
│   ├── const-and-final/
│   │   ├── const_and_final.bal
│   │   ├── const_and_final.md
│   │   ├── const_and_final.metatags
│   │   └── const_and_final.out
│   ├── constraint-validations/
│   │   ├── constraint_validations.bal
│   │   ├── constraint_validations.md
│   │   ├── constraint_validations.metatags
│   │   └── constraint_validations.out
│   ├── consuming-services/
│   │   ├── consuming_services.bal
│   │   ├── consuming_services.md
│   │   ├── consuming_services.metatags
│   │   └── consuming_services.out
│   ├── continue-statement/
│   │   ├── continue_statement.bal
│   │   ├── continue_statement.md
│   │   ├── continue_statement.metatags
│   │   └── continue_statement.out
│   ├── controlling-openness/
│   │   ├── controlling_openness.bal
│   │   ├── controlling_openness.md
│   │   ├── controlling_openness.metatags
│   │   └── controlling_openness.out
│   ├── convert-from-json-to-user-defined-type/
│   │   ├── convert_from_json_to_user_defined_type.bal
│   │   ├── convert_from_json_to_user_defined_type.md
│   │   ├── convert_from_json_to_user_defined_type.metatags
│   │   └── convert_from_json_to_user_defined_type.out
│   ├── converting-from-table-and-xml-to-json/
│   │   ├── converting_from_table_and_xml_to_json.bal
│   │   ├── converting_from_table_and_xml_to_json.md
│   │   ├── converting_from_table_and_xml_to_json.metatags
│   │   └── converting_from_table_and_xml_to_json.out
│   ├── converting-from-user-defined-type-to-json/
│   │   ├── converting_from_user_defined_type_to_json.bal
│   │   ├── converting_from_user_defined_type_to_json.md
│   │   ├── converting_from_user_defined_type_to_json.metatags
│   │   └── converting_from_user_defined_type_to_json.out
│   ├── counter-metrics/
│   │   ├── counter_metrics.bal
│   │   ├── counter_metrics.client.out
│   │   ├── counter_metrics.md
│   │   ├── counter_metrics.metatags
│   │   ├── counter_metrics.server.out
│   │   └── tests/
│   │       └── counter_metrics_test.bal
│   ├── covariance/
│   │   ├── covariance.bal
│   │   ├── covariance.md
│   │   ├── covariance.metatags
│   │   └── covariance.out
│   ├── create-maps-with-query/
│   │   ├── create_maps_with_query.bal
│   │   ├── create_maps_with_query.md
│   │   ├── create_maps_with_query.metatags
│   │   └── create_maps_with_query.out
│   ├── create-streams-with-query/
│   │   ├── create_streams_with_query.bal
│   │   ├── create_streams_with_query.md
│   │   ├── create_streams_with_query.metatags
│   │   └── create_streams_with_query.out
│   ├── create-tables-with-query/
│   │   ├── create_tables_with_query.bal
│   │   ├── create_tables_with_query.md
│   │   ├── create_tables_with_query.metatags
│   │   └── create_tables_with_query.out
│   ├── csv-streams-to-record-array/
│   │   ├── csv_streams_to_record_array.bal
│   │   ├── csv_streams_to_record_array.md
│   │   ├── csv_streams_to_record_array.metatags
│   │   └── csv_streams_to_record_array.out
│   ├── csv-string-to-anydata-array/
│   │   ├── csv_string_to_anydata_array.bal
│   │   ├── csv_string_to_anydata_array.md
│   │   ├── csv_string_to_anydata_array.metatags
│   │   └── csv_string_to_anydata_array.out
│   ├── csv-string-to-record-array/
│   │   ├── csv_string_to_record_array.bal
│   │   ├── csv_string_to_record_array.md
│   │   ├── csv_string_to_record_array.metatags
│   │   └── csv_string_to_record_array.out
│   ├── csv-user-configurations/
│   │   ├── csv_user_configurations.bal
│   │   ├── csv_user_configurations.md
│   │   ├── csv_user_configurations.metatags
│   │   └── csv_user_configurations.out
│   ├── custom-logger/
│   │   ├── custom_logger.bal
│   │   ├── custom_logger.md
│   │   ├── custom_logger.metatags
│   │   └── custom_logger.out
│   ├── custom-prefetch-methods/
│   │   ├── custom_prefetch_methods.bal
│   │   ├── custom_prefetch_methods.client.out
│   │   ├── custom_prefetch_methods.graphql
│   │   ├── custom_prefetch_methods.md
│   │   ├── custom_prefetch_methods.metatags
│   │   └── custom_prefetch_methods.server.out
│   ├── decimal-type/
│   │   ├── decimal_type.bal
│   │   ├── decimal_type.md
│   │   ├── decimal_type.metatags
│   │   └── decimal_type.out
│   ├── default-values-for-function-parameters/
│   │   ├── default_values_for_function_parameters.bal
│   │   ├── default_values_for_function_parameters.md
│   │   ├── default_values_for_function_parameters.metatags
│   │   └── default_values_for_function_parameters.out
│   ├── default-values-for-record-fields/
│   │   ├── default_values_for_record_fields.bal
│   │   ├── default_values_for_record_fields.md
│   │   ├── default_values_for_record_fields.metatags
│   │   └── default_values_for_record_fields.out
│   ├── defining-classes/
│   │   ├── defining_classes.bal
│   │   ├── defining_classes.md
│   │   ├── defining_classes.metatags
│   │   └── defining_classes.out
│   ├── dependent-types/
│   │   ├── dependent_types.bal
│   │   ├── dependent_types.md
│   │   ├── dependent_types.metatags
│   │   └── dependent_types.out
│   ├── destructure-records-using-query/
│   │   ├── destructure_records_using_query.bal
│   │   ├── destructure_records_using_query.md
│   │   ├── destructure_records_using_query.metatags
│   │   └── destructure_records_using_query.out
│   ├── direct-llm-calls/
│   │   ├── direct_llm_calls.bal
│   │   ├── direct_llm_calls.md
│   │   ├── direct_llm_calls.metatags
│   │   └── direct_llm_calls.out
│   ├── direct-llm-calls-with-history/
│   │   ├── direct_llm_calls_with_history.bal
│   │   ├── direct_llm_calls_with_history.md
│   │   ├── direct_llm_calls_with_history.metatags
│   │   └── direct_llm_calls_with_history.out
│   ├── direct-llm-calls-with-multimodal-input/
│   │   ├── direct_llm_calls_with_multimodal_input.bal
│   │   ├── direct_llm_calls_with_multimodal_input.md
│   │   ├── direct_llm_calls_with_multimodal_input.metatags
│   │   └── direct_llm_calls_with_multimodal_input.out
│   ├── directories/
│   │   ├── directories.bal
│   │   ├── directories.md
│   │   ├── directories.metatags
│   │   └── directories.out
│   ├── directory-listener/
│   │   ├── directory_listener.bal
│   │   ├── directory_listener.md
│   │   ├── directory_listener.metatags
│   │   └── directory_listener.out
│   ├── distinct-object-types/
│   │   ├── distinct_object_types.bal
│   │   ├── distinct_object_types.md
│   │   ├── distinct_object_types.metatags
│   │   └── distinct_object_types.out
│   ├── docker-hello-world/
│   │   ├── Cloud.toml
│   │   ├── build_output.out
│   │   ├── docker_hello_world.bal
│   │   ├── docker_hello_world.md
│   │   ├── docker_images.out
│   │   ├── docker_run.out
│   │   └── execute_curl.out
│   ├── documentation/
│   │   ├── documentation.bal
│   │   ├── documentation.md
│   │   ├── documentation.metatags
│   │   └── documentation.out
│   ├── dynamic-listener/
│   │   ├── dynamic_listener.bal
│   │   ├── dynamic_listener.client.out
│   │   ├── dynamic_listener.md
│   │   ├── dynamic_listener.metatags
│   │   └── dynamic_listener.server.out
│   ├── edi-to-record/
│   │   ├── bal_project.out
│   │   ├── codegen_command.out
│   │   ├── edi_to_record.bal
│   │   ├── edi_to_record.md
│   │   ├── edi_to_record.metatags
│   │   ├── order.edi
│   │   ├── output.out
│   │   ├── package_structure.out
│   │   ├── schema.json
│   │   └── tool_pull_command.out
│   ├── email-client-ssl-tls/
│   │   ├── email_client_ssl_tls.bal
│   │   ├── email_client_ssl_tls.md
│   │   ├── email_client_ssl_tls.metatags
│   │   └── email_client_ssl_tls.out
│   ├── email-service-ssl-tls/
│   │   ├── email_service_ssl_tls.bal
│   │   ├── email_service_ssl_tls.md
│   │   ├── email_service_ssl_tls.metatags
│   │   └── email_service_ssl_tls.out
│   ├── ensureType-function/
│   │   ├── ensureType_function.bal
│   │   ├── ensureType_function.md
│   │   ├── ensureType_function.metatags
│   │   └── ensureType_function.out
│   ├── enumerations/
│   │   ├── enumerations.bal
│   │   ├── enumerations.md
│   │   ├── enumerations.metatags
│   │   └── enumerations.out
│   ├── environment-variables/
│   │   ├── environment_variables.bal
│   │   ├── environment_variables.md
│   │   ├── environment_variables.metatags
│   │   └── environment_variables.out
│   ├── error-binding-pattern/
│   │   ├── error_binding_pattern.bal
│   │   ├── error_binding_pattern.md
│   │   ├── error_binding_pattern.metatags
│   │   └── error_binding_pattern.out
│   ├── error-binding-pattern-in-match-statement/
│   │   ├── error_binding_pattern_in_match_statement.bal
│   │   ├── error_binding_pattern_in_match_statement.md
│   │   ├── error_binding_pattern_in_match_statement.metatags
│   │   └── error_binding_pattern_in_match_statement.out
│   ├── error-cause/
│   │   ├── error_cause.bal
│   │   ├── error_cause.md
│   │   ├── error_cause.metatags
│   │   └── error_cause.out
│   ├── error-detail/
│   │   ├── error_detail.bal
│   │   ├── error_detail.md
│   │   ├── error_detail.metatags
│   │   └── error_detail.out
│   ├── error-handling/
│   │   ├── error_handling.bal
│   │   ├── error_handling.md
│   │   ├── error_handling.metatags
│   │   └── error_handling.out
│   ├── error-logging/
│   │   ├── error_logging.bal
│   │   ├── error_logging.md
│   │   ├── error_logging.metatags
│   │   └── error_logging.out
│   ├── error-reporting/
│   │   ├── error_reporting.bal
│   │   ├── error_reporting.md
│   │   ├── error_reporting.metatags
│   │   └── error_reporting.out
│   ├── error-subtyping/
│   │   ├── error_subtyping.bal
│   │   ├── error_subtyping.md
│   │   ├── error_subtyping.metatags
│   │   └── error_subtyping.out
│   ├── error-type-intersection/
│   │   ├── error_type_intersection.bal
│   │   ├── error_type_intersection.md
│   │   ├── error_type_intersection.metatags
│   │   └── error_type_intersection.out
│   ├── expression-equality/
│   │   ├── expression_equality.bal
│   │   ├── expression_equality.md
│   │   ├── expression_equality.metatags
│   │   └── expression_equality.out
│   ├── expression-oriented-style/
│   │   ├── expression_oriented_style.bal
│   │   ├── expression_oriented_style.md
│   │   ├── expression_oriented_style.metatags
│   │   └── expression_oriented_style.out
│   ├── filepaths/
│   │   ├── filepaths.bal
│   │   ├── filepaths.md
│   │   ├── filepaths.metatags
│   │   ├── filepaths.out
│   │   └── tests/
│   │       └── filepath_test.bal
│   ├── files/
│   │   ├── files.bal
│   │   ├── files.md
│   │   ├── files.metatags
│   │   └── files.out
│   ├── filler-values-of-a-list/
│   │   ├── filler_values_of_a_list.bal
│   │   ├── filler_values_of_a_list.md
│   │   ├── filler_values_of_a_list.metatags
│   │   └── filler_values_of_a_list.out
│   ├── floating-point-numbers/
│   │   ├── floating_point_numbers.bal
│   │   ├── floating_point_numbers.md
│   │   ├── floating_point_numbers.metatags
│   │   └── floating_point_numbers.out
│   ├── flush/
│   │   ├── flush.bal
│   │   ├── flush.md
│   │   ├── flush.metatags
│   │   └── flush.out
│   ├── foreach-statement/
│   │   ├── foreach_statement.bal
│   │   ├── foreach_statement.md
│   │   ├── foreach_statement.metatags
│   │   └── foreach_statement.out
│   ├── fork/
│   │   ├── fork.bal
│   │   ├── fork.md
│   │   ├── fork.metatags
│   │   └── fork.out
│   ├── ftp-client-receive-file/
│   │   ├── ftp_client_receive_file.bal
│   │   ├── ftp_client_receive_file.md
│   │   ├── ftp_client_receive_file.metatags
│   │   └── ftp_client_receive_file.out
│   ├── ftp-client-send-file/
│   │   ├── ftp_client_send_file.bal
│   │   ├── ftp_client_send_file.md
│   │   ├── ftp_client_send_file.metatags
│   │   └── ftp_client_send_file.out
│   ├── ftp-service-receive-file/
│   │   ├── ftp_service_receive_file.bal
│   │   ├── ftp_service_receive_file.md
│   │   ├── ftp_service_receive_file.metatags
│   │   └── ftp_service_receive_file.out
│   ├── ftp-service-send-file/
│   │   ├── ftp_service_send_file.bal
│   │   ├── ftp_service_send_file.md
│   │   ├── ftp_service_send_file.metatags
│   │   └── ftp_service_send_file.out
│   ├── function-closure/
│   │   ├── function_closure.bal
│   │   ├── function_closure.md
│   │   ├── function_closure.metatags
│   │   └── function_closure.out
│   ├── function-pointers/
│   │   ├── function_pointers.bal
│   │   ├── function_pointers.md
│   │   ├── function_pointers.metatags
│   │   └── function_pointers.out
│   ├── function-types/
│   │   ├── function_types.bal
│   │   ├── function_types.md
│   │   ├── function_types.metatags
│   │   └── function_types.out
│   ├── function-values/
│   │   ├── function_values.bal
│   │   ├── function_values.md
│   │   ├── function_values.metatags
│   │   └── function_values.out
│   ├── functions/
│   │   ├── functions.bal
│   │   ├── functions.md
│   │   ├── functions.metatags
│   │   └── functions.out
│   ├── gauge-metrics/
│   │   ├── gauge_metrics.bal
│   │   ├── gauge_metrics.client.out
│   │   ├── gauge_metrics.md
│   │   ├── gauge_metrics.metatags
│   │   ├── gauge_metrics.server.out
│   │   └── tests/
│   │       └── gauge_metrics_test.bal
│   ├── graphql-client-error-handling/
│   │   ├── graphql_client_error_handling.bal
│   │   ├── graphql_client_error_handling.md
│   │   ├── graphql_client_error_handling.metatags
│   │   └── graphql_client_error_handling.out
│   ├── graphql-client-handle-partial-response/
│   │   ├── graphql_client_handle_partial_response.bal
│   │   ├── graphql_client_handle_partial_response.md
│   │   ├── graphql_client_handle_partial_response.metatags
│   │   └── graphql_client_handle_partial_response.out
│   ├── graphql-client-query-endpoint/
│   │   ├── graphql_client_query_endpoint.bal
│   │   ├── graphql_client_query_endpoint.md
│   │   ├── graphql_client_query_endpoint.metatags
│   │   └── graphql_client_query_endpoint.out
│   ├── graphql-client-security-basic-auth/
│   │   ├── graphql_client_security_basic_auth.bal
│   │   ├── graphql_client_security_basic_auth.md
│   │   ├── graphql_client_security_basic_auth.metatags
│   │   └── graphql_client_security_basic_auth.out
│   ├── graphql-client-security-jwt-authentication/
│   │   ├── graphql_client_security_jwt_authentication.bal
│   │   ├── graphql_client_security_jwt_authentication.md
│   │   ├── graphql_client_security_jwt_authentication.metatags
│   │   └── graphql_client_security_jwt_authentication.out
│   ├── graphql-client-security-mutual-ssl/
│   │   ├── graphql_client_security_mutual_ssl.bal
│   │   ├── graphql_client_security_mutual_ssl.md
│   │   ├── graphql_client_security_mutual_ssl.metatags
│   │   └── graphql_client_security_mutual_ssl.out
│   ├── graphql-client-security-oauth2-password-grant-type/
│   │   ├── graphql_client_security_oauth2_password_grant_type.bal
│   │   ├── graphql_client_security_oauth2_password_grant_type.md
│   │   ├── graphql_client_security_oauth2_password_grant_type.metatags
│   │   └── graphql_client_security_oauth2_password_grant_type.out
│   ├── graphql-client-security-ssl-tls/
│   │   ├── graphql_client_security_ssl_tls.bal
│   │   ├── graphql_client_security_ssl_tls.md
│   │   ├── graphql_client_security_ssl_tls.metatags
│   │   └── graphql_client_security_ssl_tls.out
│   ├── graphql-context/
│   │   ├── graphql_context.1.client.out
│   │   ├── graphql_context.2.client.out
│   │   ├── graphql_context.bal
│   │   ├── graphql_context.graphql
│   │   ├── graphql_context.md
│   │   ├── graphql_context.metatags
│   │   └── graphql_context.server.out
│   ├── graphql-dataloader/
│   │   ├── graphql_dataloader.bal
│   │   ├── graphql_dataloader.client.out
│   │   ├── graphql_dataloader.graphql
│   │   ├── graphql_dataloader.md
│   │   ├── graphql_dataloader.metatags
│   │   └── graphql_dataloader.server.out
│   ├── graphql-directives/
│   │   ├── graphql_directives.1.client.out
│   │   ├── graphql_directives.1.graphql
│   │   ├── graphql_directives.2.client.out
│   │   ├── graphql_directives.2.graphql
│   │   ├── graphql_directives.3.client.out
│   │   ├── graphql_directives.3.graphql
│   │   ├── graphql_directives.bal
│   │   ├── graphql_directives.md
│   │   ├── graphql_directives.metatags
│   │   └── graphql_directives.server.out
│   ├── graphql-documentation/
│   │   ├── graphql_documentation.bal
│   │   ├── graphql_documentation.client.out
│   │   ├── graphql_documentation.graphql
│   │   ├── graphql_documentation.md
│   │   ├── graphql_documentation.metatags
│   │   └── graphql_documentation.server.out
│   ├── graphql-field-interceptors/
│   │   ├── graphql_field_interceptors.bal
│   │   ├── graphql_field_interceptors.client.out
│   │   ├── graphql_field_interceptors.graphql
│   │   ├── graphql_field_interceptors.md
│   │   ├── graphql_field_interceptors.metatags
│   │   └── graphql_field_interceptors.server.out
│   ├── graphql-file-upload/
│   │   ├── graphql_file_upload.bal
│   │   ├── graphql_file_upload.client.out
│   │   ├── graphql_file_upload.md
│   │   ├── graphql_file_upload.metatags
│   │   └── graphql_file_upload.server.out
│   ├── graphql-graphiql/
│   │   ├── graphql_graphiql.bal
│   │   ├── graphql_graphiql.md
│   │   ├── graphql_graphiql.metatags
│   │   └── graphql_graphiql.out
│   ├── graphql-hello-world/
│   │   ├── graphql_hello_world.bal
│   │   ├── graphql_hello_world.client.out
│   │   ├── graphql_hello_world.graphql
│   │   ├── graphql_hello_world.md
│   │   ├── graphql_hello_world.metatags
│   │   └── graphql_hello_world.server.out
│   ├── graphql-hierarchical-resource-paths/
│   │   ├── graphql_hierarchical_resource_paths.bal
│   │   ├── graphql_hierarchical_resource_paths.client.out
│   │   ├── graphql_hierarchical_resource_paths.graphql
│   │   ├── graphql_hierarchical_resource_paths.md
│   │   ├── graphql_hierarchical_resource_paths.metatags
│   │   └── graphql_hierarchical_resource_paths.server.out
│   ├── graphql-id-scalar-type/
│   │   ├── graphql_id_scalar_type.bal
│   │   ├── graphql_id_scalar_type.client.out
│   │   ├── graphql_id_scalar_type.graphql
│   │   ├── graphql_id_scalar_type.md
│   │   ├── graphql_id_scalar_type.metatags
│   │   └── graphql_id_scalar_type.server.out
│   ├── graphql-input-constraint-validation/
│   │   ├── graphql_input_constraint_validation.bal
│   │   ├── graphql_input_constraint_validation.client.out
│   │   ├── graphql_input_constraint_validation.graphql
│   │   ├── graphql_input_constraint_validation.md
│   │   ├── graphql_input_constraint_validation.metatags
│   │   └── graphql_input_constraint_validation.server.out
│   ├── graphql-input-objects/
│   │   ├── graphql_input_objects.bal
│   │   ├── graphql_input_objects.client.out
│   │   ├── graphql_input_objects.graphql
│   │   ├── graphql_input_objects.md
│   │   ├── graphql_input_objects.metatags
│   │   └── graphql_input_objects.server.out
│   ├── graphql-input-types/
│   │   ├── graphql_input_types.bal
│   │   ├── graphql_input_types.client.out
│   │   ├── graphql_input_types.graphql
│   │   ├── graphql_input_types.md
│   │   ├── graphql_input_types.metatags
│   │   └── graphql_input_types.server.out
│   ├── graphql-interceptor-configurations/
│   │   ├── graphql_interceptor_configurations.bal
│   │   ├── graphql_interceptor_configurations.client.out
│   │   ├── graphql_interceptor_configurations.graphql
│   │   ├── graphql_interceptor_configurations.md
│   │   ├── graphql_interceptor_configurations.metatags
│   │   └── graphql_interceptor_configurations.server.out
│   ├── graphql-interfaces/
│   │   ├── graphql_interfaces.bal
│   │   ├── graphql_interfaces.client.out
│   │   ├── graphql_interfaces.graphql
│   │   ├── graphql_interfaces.md
│   │   ├── graphql_interfaces.metatags
│   │   └── graphql_interfaces.server.out
│   ├── graphql-interfaces-implementing-interfaces/
│   │   ├── graphql_interfaces_implementing_interfaces.bal
│   │   ├── graphql_interfaces_implementing_interfaces.client.out
│   │   ├── graphql_interfaces_implementing_interfaces.graphql
│   │   ├── graphql_interfaces_implementing_interfaces.md
│   │   ├── graphql_interfaces_implementing_interfaces.metatags
│   │   └── graphql_interfaces_implementing_interfaces.server.out
│   ├── graphql-mutations/
│   │   ├── graphql_mutations.bal
│   │   ├── graphql_mutations.client.out
│   │   ├── graphql_mutations.graphql
│   │   ├── graphql_mutations.md
│   │   ├── graphql_mutations.metatags
│   │   └── graphql_mutations.server.out
│   ├── graphql-returning-record-values/
│   │   ├── graphql_returning_record_values.bal
│   │   ├── graphql_returning_record_values.client.out
│   │   ├── graphql_returning_record_values.graphql
│   │   ├── graphql_returning_record_values.md
│   │   ├── graphql_returning_record_values.metatags
│   │   └── graphql_returning_record_values.server.out
│   ├── graphql-returning-service-objects/
│   │   ├── graphql_returning_service_objects.bal
│   │   ├── graphql_returning_service_objects.client.out
│   │   ├── graphql_returning_service_objects.graphql
│   │   ├── graphql_returning_service_objects.md
│   │   ├── graphql_returning_service_objects.metatags
│   │   └── graphql_returning_service_objects.server.out
│   ├── graphql-service-basic-auth-file-user-store/
│   │   ├── graphql_service_basic_auth_file_user_store.bal
│   │   ├── graphql_service_basic_auth_file_user_store.md
│   │   ├── graphql_service_basic_auth_file_user_store.metatags
│   │   └── graphql_service_basic_auth_file_user_store.server.out
│   ├── graphql-service-basic-auth-ldap-user-store/
│   │   ├── graphql_service_basic_auth_ldap_user_store.bal
│   │   ├── graphql_service_basic_auth_ldap_user_store.md
│   │   ├── graphql_service_basic_auth_ldap_user_store.metatags
│   │   └── graphql_service_basic_auth_ldap_user_store.server.out
│   ├── graphql-service-cache-invalidation/
│   │   ├── graphql_service_cache_invalidation.bal
│   │   ├── graphql_service_cache_invalidation.client.out
│   │   ├── graphql_service_cache_invalidation.graphql
│   │   ├── graphql_service_cache_invalidation.md
│   │   ├── graphql_service_cache_invalidation.metatags
│   │   └── graphql_service_cache_invalidation.server.out
│   ├── graphql-service-error-handling/
│   │   ├── graphql_service_error_handling.1.client.out
│   │   ├── graphql_service_error_handling.1.graphql
│   │   ├── graphql_service_error_handling.2.client.out
│   │   ├── graphql_service_error_handling.2.graphql
│   │   ├── graphql_service_error_handling.bal
│   │   ├── graphql_service_error_handling.md
│   │   ├── graphql_service_error_handling.metatags
│   │   └── graphql_service_error_handling.server.out
│   ├── graphql-service-field-level-caching/
│   │   ├── graphql_service_field_level_caching.bal
│   │   ├── graphql_service_field_level_caching.client.out
│   │   ├── graphql_service_field_level_caching.graphql
│   │   ├── graphql_service_field_level_caching.md
│   │   ├── graphql_service_field_level_caching.metatags
│   │   └── graphql_service_field_level_caching.server.out
│   ├── graphql-service-field-object/
│   │   ├── graphql_service_field_object.1.client.out
│   │   ├── graphql_service_field_object.1.graphql
│   │   ├── graphql_service_field_object.2.client.out
│   │   ├── graphql_service_field_object.2.graphql
│   │   ├── graphql_service_field_object.bal
│   │   ├── graphql_service_field_object.md
│   │   ├── graphql_service_field_object.metatags
│   │   ├── graphql_service_field_object.server.1.out
│   │   ├── graphql_service_field_object.server.2.out
│   │   └── graphql_service_field_object.server.3.out
│   ├── graphql-service-interceptors/
│   │   ├── graphql_service_interceptors.bal
│   │   ├── graphql_service_interceptors.client.out
│   │   ├── graphql_service_interceptors.graphql
│   │   ├── graphql_service_interceptors.md
│   │   ├── graphql_service_interceptors.metatags
│   │   └── graphql_service_interceptors.server.out
│   ├── graphql-service-jwt-auth/
│   │   ├── graphql_service_jwt_auth.bal
│   │   ├── graphql_service_jwt_auth.md
│   │   ├── graphql_service_jwt_auth.metatags
│   │   └── graphql_service_jwt_auth.server.out
│   ├── graphql-service-mutual-ssl/
│   │   ├── graphql_service_mutual_ssl.bal
│   │   ├── graphql_service_mutual_ssl.md
│   │   ├── graphql_service_mutual_ssl.metatags
│   │   └── graphql_service_mutual_ssl.server.out
│   ├── graphql-service-oauth2/
│   │   ├── graphql_service_oauth2.bal
│   │   ├── graphql_service_oauth2.md
│   │   ├── graphql_service_oauth2.metatags
│   │   └── graphql_service_oauth2.server.out
│   ├── graphql-service-operation-level-caching/
│   │   ├── graphql_service_operation_level_caching.bal
│   │   ├── graphql_service_operation_level_caching.client.out
│   │   ├── graphql_service_operation_level_caching.graphql
│   │   ├── graphql_service_operation_level_caching.md
│   │   ├── graphql_service_operation_level_caching.metatags
│   │   └── graphql_service_operation_level_caching.server.out
│   ├── graphql-service-query-complexity/
│   │   ├── graphql_service_query_complexity.1.graphql
│   │   ├── graphql_service_query_complexity.2.graphql
│   │   ├── graphql_service_query_complexity.bal
│   │   ├── graphql_service_query_complexity.client.1.out
│   │   ├── graphql_service_query_complexity.client.2.out
│   │   ├── graphql_service_query_complexity.md
│   │   ├── graphql_service_query_complexity.metatags
│   │   └── graphql_service_query_complexity.server.out
│   ├── graphql-service-ssl-tls/
│   │   ├── graphql_service_ssl_tls.bal
│   │   ├── graphql_service_ssl_tls.md
│   │   ├── graphql_service_ssl_tls.metatags
│   │   └── graphql_service_ssl_tls.server.out
│   ├── graphql-service-union-types/
│   │   ├── graphql_service_union_types.bal
│   │   ├── graphql_service_union_types.client.out
│   │   ├── graphql_service_union_types.graphql
│   │   ├── graphql_service_union_types.md
│   │   ├── graphql_service_union_types.metatags
│   │   └── graphql_service_union_types.server.out
│   ├── graphql-subscriptions/
│   │   ├── graphql_subscriptions.bal
│   │   ├── graphql_subscriptions.client.out
│   │   ├── graphql_subscriptions.graphql
│   │   ├── graphql_subscriptions.md
│   │   ├── graphql_subscriptions.metatags
│   │   └── graphql_subscriptions.server.out
│   ├── grpc-client-basic-auth/
│   │   ├── grpc_client_basic_auth.bal
│   │   ├── grpc_client_basic_auth.md
│   │   ├── grpc_client_basic_auth.metatags
│   │   ├── grpc_client_basic_auth.out
│   │   └── grpc_simple.proto
│   ├── grpc-client-bearer-token-auth/
│   │   ├── grpc_client_bearer_token_auth.bal
│   │   ├── grpc_client_bearer_token_auth.md
│   │   ├── grpc_client_bearer_token_auth.metatags
│   │   ├── grpc_client_bearer_token_auth.out
│   │   └── grpc_simple.proto
│   ├── grpc-client-bidirectional-streaming/
│   │   ├── grpc_bidirectional_streaming.md
│   │   ├── grpc_bidirectional_streaming.metatags
│   │   ├── grpc_bidirectional_streaming.out
│   │   ├── grpc_bidirectional_streaming.proto
│   │   ├── grpc_bidirectional_streaming_service_client.bal
│   │   └── grpc_bidirectional_streaming_service_client.out
│   ├── grpc-client-client-streaming/
│   │   ├── grpc_client_streaming.md
│   │   ├── grpc_client_streaming.metatags
│   │   ├── grpc_client_streaming.out
│   │   ├── grpc_client_streaming.proto
│   │   ├── grpc_client_streaming_service_client.bal
│   │   └── grpc_client_streaming_service_client.out
│   ├── grpc-client-headers/
│   │   ├── grpc_simple.proto
│   │   ├── grpc_simple_with_headers.md
│   │   ├── grpc_simple_with_headers.metatags
│   │   ├── grpc_simple_with_headers_service_client.bal
│   │   └── grpc_simple_with_headers_service_client.out
│   ├── grpc-client-mutual-ssl/
│   │   ├── grpc_client_mutual_ssl.bal
│   │   ├── grpc_client_mutual_ssl.md
│   │   ├── grpc_client_mutual_ssl.metatags
│   │   ├── grpc_client_mutual_ssl.out
│   │   └── grpc_simple.proto
│   ├── grpc-client-oauth2-client-credentials-grant-type/
│   │   ├── grpc_client_oauth2_client_credentials_grant_type.bal
│   │   ├── grpc_client_oauth2_client_credentials_grant_type.md
│   │   ├── grpc_client_oauth2_client_credentials_grant_type.metatags
│   │   ├── grpc_client_oauth2_client_credentials_grant_type.out
│   │   └── grpc_simple.proto
│   ├── grpc-client-oauth2-jwt-bearer-grant-type/
│   │   ├── grpc_client_oauth2_jwt_bearer_grant_type.bal
│   │   ├── grpc_client_oauth2_jwt_bearer_grant_type.md
│   │   ├── grpc_client_oauth2_jwt_bearer_grant_type.metatags
│   │   ├── grpc_client_oauth2_jwt_bearer_grant_type.out
│   │   └── grpc_simple.proto
│   ├── grpc-client-oauth2-password-grant-type/
│   │   ├── grpc_client_oauth2_password_grant_type.bal
│   │   ├── grpc_client_oauth2_password_grant_type.md
│   │   ├── grpc_client_oauth2_password_grant_type.metatags
│   │   ├── grpc_client_oauth2_password_grant_type.out
│   │   └── grpc_simple.proto
│   ├── grpc-client-oauth2-refresh-token-grant-type/
│   │   ├── grpc_client_oauth2_refresh_token_grant_type.bal
│   │   ├── grpc_client_oauth2_refresh_token_grant_type.md
│   │   ├── grpc_client_oauth2_refresh_token_grant_type.metatags
│   │   ├── grpc_client_oauth2_refresh_token_grant_type.out
│   │   └── grpc_simple.proto
│   ├── grpc-client-self-signed-jwt-auth/
│   │   ├── grpc_client_self_signed_jwt_auth.bal
│   │   ├── grpc_client_self_signed_jwt_auth.md
│   │   ├── grpc_client_self_signed_jwt_auth.metatags
│   │   ├── grpc_client_self_signed_jwt_auth.out
│   │   └── grpc_simple.proto
│   ├── grpc-client-server-streaming/
│   │   ├── grpc_server_streaming.md
│   │   ├── grpc_server_streaming.metatags
│   │   ├── grpc_server_streaming.out
│   │   ├── grpc_server_streaming.proto
│   │   ├── grpc_server_streaming_service_client.bal
│   │   └── grpc_server_streaming_service_client.out
│   ├── grpc-client-set-deadline/
│   │   ├── grpc_client_set_deadline.bal
│   │   ├── grpc_client_set_deadline.md
│   │   ├── grpc_client_set_deadline.metatags
│   │   ├── grpc_client_set_deadline.out
│   │   └── grpc_simple.proto
│   ├── grpc-client-simple/
│   │   ├── grpc_client_simple.bal
│   │   ├── grpc_client_simple.md
│   │   ├── grpc_client_simple.metatags
│   │   ├── grpc_client_simple.out
│   │   ├── grpc_client_simple.proto
│   │   └── grpc_simple.out
│   ├── grpc-client-ssl-tls/
│   │   ├── grpc_client_ssl_tls.bal
│   │   ├── grpc_client_ssl_tls.md
│   │   ├── grpc_client_ssl_tls.metatags
│   │   ├── grpc_client_ssl_tls.out
│   │   └── grpc_simple.proto
│   ├── grpc-server-reflection/
│   │   ├── grpc_server_reflection.bal
│   │   ├── grpc_server_reflection.md
│   │   ├── grpc_server_reflection.metatags
│   │   ├── grpc_server_reflection.out
│   │   ├── grpc_server_reflection_grpcurl.out
│   │   └── grpc_simple.proto
│   ├── grpc-service-basic-auth-file-user-store/
│   │   ├── grpc_service_basic_auth_file_user_store.bal
│   │   ├── grpc_service_basic_auth_file_user_store.md
│   │   ├── grpc_service_basic_auth_file_user_store.metatags
│   │   ├── grpc_service_basic_auth_file_user_store.server.out
│   │   └── grpc_simple.proto
│   ├── grpc-service-basic-auth-ldap-user-store/
│   │   ├── grpc_service_basic_auth_ldap_user_store.bal
│   │   ├── grpc_service_basic_auth_ldap_user_store.md
│   │   ├── grpc_service_basic_auth_ldap_user_store.metatags
│   │   ├── grpc_service_basic_auth_ldap_user_store.server.out
│   │   └── grpc_simple.proto
│   ├── grpc-service-bidirectional-streaming/
│   │   ├── grpc_bidirectional_streaming.md
│   │   ├── grpc_bidirectional_streaming.metatags
│   │   ├── grpc_bidirectional_streaming.out
│   │   ├── grpc_bidirectional_streaming.proto
│   │   ├── grpc_bidirectional_streaming_service.bal
│   │   ├── grpc_bidirectional_streaming_service.out
│   │   └── tests/
│   │       └── grpc_bidirectional_streaming_test.bal
│   ├── grpc-service-check-deadline/
│   │   ├── grpc_service_check_deadline.bal
│   │   ├── grpc_service_check_deadline.md
│   │   ├── grpc_service_check_deadline.metatags
│   │   ├── grpc_service_check_deadline.out
│   │   └── grpc_simple.proto
│   ├── grpc-service-client-streaming/
│   │   ├── grpc_client_streaming.md
│   │   ├── grpc_client_streaming.metatags
│   │   ├── grpc_client_streaming.out
│   │   ├── grpc_client_streaming.proto
│   │   ├── grpc_client_streaming_service.bal
│   │   ├── grpc_client_streaming_service.out
│   │   └── tests/
│   │       └── grpc_client_streaming_test.bal
│   ├── grpc-service-headers/
│   │   ├── grpc_simple.proto
│   │   ├── grpc_simple_with_headers.md
│   │   ├── grpc_simple_with_headers.metatags
│   │   ├── grpc_simple_with_headers_service.bal
│   │   ├── grpc_simple_with_headers_service.out
│   │   └── tests/
│   │       └── grpc_simple_with_headers_test.bal
│   ├── grpc-service-jwt-auth/
│   │   ├── grpc_service_jwt_auth.bal
│   │   ├── grpc_service_jwt_auth.md
│   │   ├── grpc_service_jwt_auth.metatags
│   │   ├── grpc_service_jwt_auth.server.out
│   │   └── grpc_simple.proto
│   ├── grpc-service-mutual-ssl/
│   │   ├── grpc_service_mutual_ssl.bal
│   │   ├── grpc_service_mutual_ssl.md
│   │   ├── grpc_service_mutual_ssl.metatags
│   │   ├── grpc_service_mutual_ssl.server.out
│   │   └── grpc_simple.proto
│   ├── grpc-service-oauth2/
│   │   ├── grpc_service_oauth2.bal
│   │   ├── grpc_service_oauth2.md
│   │   ├── grpc_service_oauth2.metatags
│   │   ├── grpc_service_oauth2.server.out
│   │   └── grpc_simple.proto
│   ├── grpc-service-server-streaming/
│   │   ├── grpc_server_streaming.md
│   │   ├── grpc_server_streaming.metatags
│   │   ├── grpc_server_streaming.out
│   │   ├── grpc_server_streaming.proto
│   │   ├── grpc_server_streaming_service.bal
│   │   ├── grpc_server_streaming_service.out
│   │   └── tests/
│   │       └── grpc_server_streaming_test.bal
│   ├── grpc-service-simple/
│   │   ├── grpc_service_simple.bal
│   │   ├── grpc_service_simple.md
│   │   ├── grpc_service_simple.metatags
│   │   ├── grpc_service_simple.out
│   │   ├── grpc_service_simple.proto
│   │   ├── grpc_simple.out
│   │   └── tests/
│   │       └── grpc_simple_test.bal
│   ├── grpc-service-ssl-tls/
│   │   ├── grpc_service_ssl_tls.bal
│   │   ├── grpc_service_ssl_tls.md
│   │   ├── grpc_service_ssl_tls.metatags
│   │   ├── grpc_service_ssl_tls.server.out
│   │   └── grpc_simple.proto
│   ├── hello-world/
│   │   ├── hello_world.bal
│   │   ├── hello_world.md
│   │   ├── hello_world.metatags
│   │   └── hello_world.out
│   ├── hello-world-service/
│   │   ├── hello_world_service.bal
│   │   ├── hello_world_service.client.out
│   │   ├── hello_world_service.md
│   │   ├── hello_world_service.metatags
│   │   └── hello_world_service.server.out
│   ├── hierarchical-resources/
│   │   ├── hierarchical_resources.bal
│   │   ├── hierarchical_resources.client.out
│   │   ├── hierarchical_resources.md
│   │   ├── hierarchical_resources.metatags
│   │   └── hierarchical_resources.server.out
│   ├── http-1-1-to-2-0-protocol-switch/
│   │   └── http_1_1_to_2_0_protocol_switch.md
│   ├── http-100-continue/
│   │   ├── http_100_continue.bal
│   │   ├── http_100_continue.client.out
│   │   ├── http_100_continue.md
│   │   ├── http_100_continue.metatags
│   │   ├── http_100_continue.server.out
│   │   └── tests/
│   │       └── http_100_continue_test.bal
│   ├── http-2-0-client-server-push/
│   │   ├── http_2_0_client_server_push.bal
│   │   ├── http_2_0_client_server_push.md
│   │   ├── http_2_0_client_server_push.metatags
│   │   └── http_2_0_client_server_push.out
│   ├── http-2-0-server-push/
│   │   ├── http_2_0_server_push.bal
│   │   ├── http_2_0_server_push.md
│   │   ├── http_2_0_server_push.metatags
│   │   └── http_2_0_server_push.out
│   ├── http-2-prior-knowledge-client/
│   │   ├── http_2_prior_knowledge_client.bal
│   │   ├── http_2_prior_knowledge_client.md
│   │   ├── http_2_prior_knowledge_client.metatags
│   │   └── http_2_prior_knowledge_client.out
│   ├── http-2-to-1-1-downgrade-client/
│   │   ├── http_2_to_1_1_downgrade_client.bal
│   │   ├── http_2_to_1_1_downgrade_client.md
│   │   ├── http_2_to_1_1_downgrade_client.metatags
│   │   └── http_2_to_1_1_downgrade_client.out
│   ├── http-2-to-1-1-downgrade-service/
│   │   ├── http_2_to_1_1_downgrade_service.bal
│   │   ├── http_2_to_1_1_downgrade_service.client.out
│   │   ├── http_2_to_1_1_downgrade_service.md
│   │   ├── http_2_to_1_1_downgrade_service.metatags
│   │   ├── http_2_to_1_1_downgrade_service.server.out
│   │   └── tests/
│   │       └── http_2_0_to_1_1_downgrade_service_test.bal
│   ├── http-access-logs/
│   │   ├── http_access_logs.bal
│   │   ├── http_access_logs.client.out
│   │   ├── http_access_logs.md
│   │   ├── http_access_logs.metatags
│   │   └── http_access_logs.server.out
│   ├── http-basic-rest-service/
│   │   ├── http_basic_rest_service.bal
│   │   ├── http_basic_rest_service.client.1.out
│   │   ├── http_basic_rest_service.client.2.out
│   │   ├── http_basic_rest_service.md
│   │   ├── http_basic_rest_service.metatags
│   │   ├── http_basic_rest_service.server.out
│   │   └── tests/
│   │       └── http_basic_rest_service_test.bal
│   ├── http-caching-client/
│   │   ├── http_caching_client.bal
│   │   ├── http_caching_client.md
│   │   ├── http_caching_client.metatags
│   │   ├── http_caching_client.out
│   │   └── tests/
│   │       └── http_caching_client_test.bal
│   ├── http-caller/
│   │   ├── http_caller.bal
│   │   ├── http_caller.client.out
│   │   ├── http_caller.md
│   │   ├── http_caller.metatags
│   │   ├── http_caller.server.out
│   │   └── tests/
│   │       └── http_caller_test.bal
│   ├── http-circuit-breaker/
│   │   ├── http_circuit_breaker.bal
│   │   ├── http_circuit_breaker.md
│   │   ├── http_circuit_breaker.metatags
│   │   ├── http_circuit_breaker.out
│   │   └── tests/
│   │       └── http_circuit_breaker_test.bal
│   ├── http-client-basic-authentication/
│   │   ├── http_client_basic_authentication.bal
│   │   ├── http_client_basic_authentication.md
│   │   ├── http_client_basic_authentication.metatags
│   │   └── http_client_basic_authentication.out
│   ├── http-client-bearer-token-authentication/
│   │   ├── http_client_bearer_token_authentication.bal
│   │   ├── http_client_bearer_token_authentication.md
│   │   ├── http_client_bearer_token_authentication.metatags
│   │   └── http_client_bearer_token_authentication.out
│   ├── http-client-chunking/
│   │   ├── http_client_chunking.bal
│   │   ├── http_client_chunking.md
│   │   ├── http_client_chunking.metatags
│   │   ├── http_client_chunking.out
│   │   └── tests/
│   │       └── http_client_chunking_test.bal
│   ├── http-client-data-binding/
│   │   ├── http_client_data_binding.bal
│   │   ├── http_client_data_binding.md
│   │   ├── http_client_data_binding.metatags
│   │   └── http_client_data_binding.out
│   ├── http-client-file-upload/
│   │   ├── http_client_file_upload.bal
│   │   ├── http_client_file_upload.md
│   │   ├── http_client_file_upload.metatags
│   │   └── http_client_file_upload.out
│   ├── http-client-header-parameter/
│   │   ├── http_client_header_parameter.bal
│   │   ├── http_client_header_parameter.md
│   │   ├── http_client_header_parameter.metatags
│   │   ├── http_client_header_parameter.out
│   │   └── http_client_header_parameter_post.bal
│   ├── http-client-mutual-ssl/
│   │   ├── http_client_mutual_ssl.bal
│   │   ├── http_client_mutual_ssl.md
│   │   ├── http_client_mutual_ssl.metatags
│   │   └── http_client_mutual_ssl.out
│   ├── http-client-oauth2-client-credentials-grant-type/
│   │   ├── http_client_oauth2_client_credentials_grant_type.bal
│   │   ├── http_client_oauth2_client_credentials_grant_type.md
│   │   ├── http_client_oauth2_client_credentials_grant_type.metatags
│   │   └── http_client_oauth2_client_credentials_grant_type.out
│   ├── http-client-oauth2-jwt-bearer-grant-type/
│   │   ├── http_client_oauth2_jwt_bearer_grant_type.bal
│   │   ├── http_client_oauth2_jwt_bearer_grant_type.md
│   │   ├── http_client_oauth2_jwt_bearer_grant_type.metatags
│   │   └── http_client_oauth2_jwt_bearer_grant_type.out
│   ├── http-client-oauth2-password-grant-type/
│   │   ├── http_client_oauth2_password_grant_type.bal
│   │   ├── http_client_oauth2_password_grant_type.md
│   │   ├── http_client_oauth2_password_grant_type.metatags
│   │   └── http_client_oauth2_password_grant_type.out
│   ├── http-client-oauth2-refresh-token-grant-type/
│   │   ├── http_client_oauth2_refresh_token_grant_type.bal
│   │   ├── http_client_oauth2_refresh_token_grant_type.md
│   │   ├── http_client_oauth2_refresh_token_grant_type.metatags
│   │   └── http_client_oauth2_refresh_token_grant_type.out
│   ├── http-client-path-parameter/
│   │   ├── http_client_path_parameter.bal
│   │   ├── http_client_path_parameter.md
│   │   ├── http_client_path_parameter.metatags
│   │   └── http_client_path_parameter.out
│   ├── http-client-payload-constraint-validation/
│   │   ├── http_client_payload_constraint_validation.bal
│   │   ├── http_client_payload_constraint_validation.md
│   │   ├── http_client_payload_constraint_validation.metatags
│   │   └── http_client_payload_constraint_validation.out
│   ├── http-client-query-parameter/
│   │   ├── http_client_query_parameter.bal
│   │   ├── http_client_query_parameter.md
│   │   ├── http_client_query_parameter.metatags
│   │   ├── http_client_query_parameter.out
│   │   └── http_client_query_parameter_post.bal
│   ├── http-client-redirects/
│   │   ├── http_client_redirects.bal
│   │   ├── http_client_redirects.md
│   │   ├── http_client_redirects.metatags
│   │   ├── http_client_redirects.out
│   │   └── tests/
│   │       └── http_client_redirects_test.bal
│   ├── http-client-self-signed-jwt-authentication/
│   │   ├── http_client_self_signed_jwt_authentication.bal
│   │   ├── http_client_self_signed_jwt_authentication.md
│   │   ├── http_client_self_signed_jwt_authentication.metatags
│   │   └── http_client_self_signed_jwt_authentication.out
│   ├── http-client-send-request-receive-response/
│   │   ├── http_client_send_request_receive_response.bal
│   │   ├── http_client_send_request_receive_response.md
│   │   ├── http_client_send_request_receive_response.metatags
│   │   ├── http_client_send_request_receive_response.out
│   │   └── tests/
│   │       └── http_client_send_request_receive_response_test.bal
│   ├── http-client-ssl-tls/
│   │   ├── http_client_ssl_tls.bal
│   │   ├── http_client_ssl_tls.md
│   │   ├── http_client_ssl_tls.metatags
│   │   └── http_client_ssl_tls.out
│   ├── http-compression/
│   │   ├── http_compression.bal
│   │   ├── http_compression.client.out
│   │   ├── http_compression.md
│   │   ├── http_compression.metatags
│   │   ├── http_compression.server.out
│   │   └── tests/
│   │       └── http_compression_test.bal
│   ├── http-cookies-client/
│   │   ├── http_cookies_client.bal
│   │   ├── http_cookies_client.md
│   │   ├── http_cookies_client.metatags
│   │   └── http_cookies_client.out
│   ├── http-cookies-service/
│   │   ├── http_cookies_service.bal
│   │   ├── http_cookies_service.md
│   │   ├── http_cookies_service.metatags
│   │   └── http_cookies_service.out
│   ├── http-cors/
│   │   ├── http_cors.bal
│   │   ├── http_cors.client.out
│   │   ├── http_cors.md
│   │   ├── http_cors.metatags
│   │   ├── http_cors.server.out
│   │   └── tests/
│   │       └── http_cors_test.bal
│   ├── http-default-error-handling/
│   │   ├── http_default_error_handling.bal
│   │   ├── http_default_error_handling.client.out
│   │   ├── http_default_error_handling.md
│   │   ├── http_default_error_handling.metatags
│   │   ├── http_default_error_handling.server.out
│   │   └── tests/
│   │       └── http_default_error_handling_test.bal
│   ├── http-default-resource/
│   │   ├── http_default_resource.bal
│   │   ├── http_default_resource.client.out
│   │   ├── http_default_resource.md
│   │   ├── http_default_resource.metatags
│   │   ├── http_default_resource.server.out
│   │   └── tests/
│   │       └── http_default_resource_test.bal
│   ├── http-error-handling/
│   │   ├── http_error_handling.bal
│   │   ├── http_error_handling.client.out
│   │   ├── http_error_handling.md
│   │   ├── http_error_handling.metatags
│   │   ├── http_error_handling.server.out
│   │   └── tests/
│   │       └── http_error_handling_test.bal
│   ├── http-failover/
│   │   ├── http_failover.bal
│   │   ├── http_failover.md
│   │   ├── http_failover.metatags
│   │   ├── http_failover.out
│   │   └── tests/
│   │       └── http_failover_test.bal
│   ├── http-header-param/
│   │   ├── http_header_param.bal
│   │   ├── http_header_param.client.out
│   │   ├── http_header_param.md
│   │   ├── http_header_param.metatags
│   │   ├── http_header_param.server.out
│   │   └── tests/
│   │       └── http_header_param_test.bal
│   ├── http-interceptor-error-handling/
│   │   ├── http_interceptor_error_handling.bal
│   │   ├── http_interceptor_error_handling.client.out
│   │   ├── http_interceptor_error_handling.md
│   │   ├── http_interceptor_error_handling.metatags
│   │   ├── http_interceptor_error_handling.server.out
│   │   └── tests/
│   │       └── http_interceptor_error_handling_test.bal
│   ├── http-load-balancer/
│   │   ├── http_load_balancer.bal
│   │   ├── http_load_balancer.md
│   │   ├── http_load_balancer.metatags
│   │   ├── http_load_balancer.out
│   │   └── tests/
│   │       └── http_load_balancer_test.bal
│   ├── http-matrix-param/
│   │   ├── http_matrix_param.bal
│   │   ├── http_matrix_param.client.out
│   │   ├── http_matrix_param.md
│   │   ├── http_matrix_param.metatags
│   │   ├── http_matrix_param.server.out
│   │   └── tests/
│   │       └── http_matrix_param_test.bal
│   ├── http-passthrough/
│   │   ├── http_passthrough.bal
│   │   ├── http_passthrough.client.out
│   │   ├── http_passthrough.md
│   │   ├── http_passthrough.metatags
│   │   ├── http_passthrough.server.out
│   │   └── tests/
│   │       └── http_passthrough_test.bal
│   ├── http-path-param/
│   │   ├── http_path_param.bal
│   │   ├── http_path_param.client.out
│   │   ├── http_path_param.md
│   │   ├── http_path_param.metatags
│   │   ├── http_path_param.server.out
│   │   └── tests/
│   │       └── http_path_param_test.bal
│   ├── http-query-parameter/
│   │   ├── http_query_parameter.bal
│   │   ├── http_query_parameter.client.out
│   │   ├── http_query_parameter.md
│   │   ├── http_query_parameter.metatags
│   │   ├── http_query_parameter.server.out
│   │   └── tests/
│   │       └── http_query_parameter_test.bal
│   ├── http-request-interceptor/
│   │   ├── http_request_interceptor.bal
│   │   ├── http_request_interceptor.client.out
│   │   ├── http_request_interceptor.md
│   │   ├── http_request_interceptor.metatags
│   │   ├── http_request_interceptor.server.out
│   │   └── tests/
│   │       └── http_request_interceptor_test.bal
│   ├── http-request-response/
│   │   ├── http_request_response.bal
│   │   ├── http_request_response.client.out
│   │   ├── http_request_response.md
│   │   ├── http_request_response.metatags
│   │   ├── http_request_response.server.out
│   │   └── tests/
│   │       └── http_request_response_test.bal
│   ├── http-request-with-multiparts/
│   │   ├── files/
│   │   │   └── test.xml
│   │   ├── http_request_with_multiparts.1.client.out
│   │   ├── http_request_with_multiparts.2.client.out
│   │   ├── http_request_with_multiparts.bal
│   │   ├── http_request_with_multiparts.md
│   │   ├── http_request_with_multiparts.metatags
│   │   ├── http_request_with_multiparts.server.out
│   │   └── tests/
│   │       └── http_request_with_multiparts_test.bal
│   ├── http-response-interceptor/
│   │   ├── http_response_interceptor.bal
│   │   ├── http_response_interceptor.client.out
│   │   ├── http_response_interceptor.md
│   │   ├── http_response_interceptor.metatags
│   │   ├── http_response_interceptor.server.out
│   │   └── tests/
│   │       └── http_response_interceptor_test.bal
│   ├── http-response-with-multiparts/
│   │   ├── files/
│   │   │   └── test.xml
│   │   ├── http_response_with_multiparts.1.client.out
│   │   ├── http_response_with_multiparts.2.client.out
│   │   ├── http_response_with_multiparts.bal
│   │   ├── http_response_with_multiparts.md
│   │   ├── http_response_with_multiparts.metatags
│   │   ├── http_response_with_multiparts.server.out
│   │   └── tests/
│   │       └── http_response_with_multiparts_test.bal
│   ├── http-restrict-by-media-type/
│   │   ├── http_restrict_by_media_type.bal
│   │   ├── http_restrict_by_media_type.client.out
│   │   ├── http_restrict_by_media_type.md
│   │   ├── http_restrict_by_media_type.metatags
│   │   ├── http_restrict_by_media_type.server.out
│   │   └── tests/
│   │       └── http_restrict_by_media_type_test.bal
│   ├── http-retry/
│   │   ├── http_retry.bal
│   │   ├── http_retry.md
│   │   ├── http_retry.metatags
│   │   ├── http_retry.out
│   │   └── tests/
│   │       └── http_retry_test.bal
│   ├── http-send-different-status-codes/
│   │   ├── http_send_different_status_codes.bal
│   │   ├── http_send_different_status_codes.client.out
│   │   ├── http_send_different_status_codes.md
│   │   ├── http_send_different_status_codes.metatags
│   │   ├── http_send_different_status_codes.server.out
│   │   └── tests/
│   │       └── http_send_different_status_codes_test.bal
│   ├── http-send-different-status-codes-with-payload/
│   │   ├── http_send_different_status_codes_with_payload.bal
│   │   ├── http_send_different_status_codes_with_payload.client.out
│   │   ├── http_send_different_status_codes_with_payload.md
│   │   ├── http_send_different_status_codes_with_payload.metatags
│   │   ├── http_send_different_status_codes_with_payload.server.out
│   │   └── tests/
│   │       └── http_send_different_status_codes_with_payload_test.bal
│   ├── http-send-header/
│   │   ├── http_send_header.bal
│   │   ├── http_send_header.client.out
│   │   ├── http_send_header.md
│   │   ├── http_send_header.metatags
│   │   ├── http_send_header.server.out
│   │   └── tests/
│   │       └── http_send_header_test.bal
│   ├── http-send-response/
│   │   ├── http_send_response.bal
│   │   ├── http_send_response.client.out
│   │   ├── http_send_response.md
│   │   ├── http_send_response.metatags
│   │   ├── http_send_response.server.out
│   │   └── tests/
│   │       └── http_send_response_test.bal
│   ├── http-service-and-resource-paths/
│   │   ├── http_service_and_resource_paths.bal
│   │   ├── http_service_and_resource_paths.client.out
│   │   ├── http_service_and_resource_paths.md
│   │   ├── http_service_and_resource_paths.metatags
│   │   ├── http_service_and_resource_paths.server.out
│   │   └── tests/
│   │       └── http_service_and_resource_paths_test.bal
│   ├── http-service-basic-authentication-file-user-store/
│   │   ├── http_service_basic_authentication_file_user_store.bal
│   │   ├── http_service_basic_authentication_file_user_store.md
│   │   ├── http_service_basic_authentication_file_user_store.metatags
│   │   └── http_service_basic_authentication_file_user_store.server.out
│   ├── http-service-basic-authentication-ldap-user-store/
│   │   ├── http_service_basic_authentication_ldap_user_store.bal
│   │   ├── http_service_basic_authentication_ldap_user_store.md
│   │   ├── http_service_basic_authentication_ldap_user_store.metatags
│   │   └── http_service_basic_authentication_ldap_user_store.server.out
│   ├── http-service-cache-response/
│   │   ├── http_service_cache_response.bal
│   │   ├── http_service_cache_response.md
│   │   ├── http_service_cache_response.metatags
│   │   ├── http_service_cache_response.server.out
│   │   └── tests/
│   │       └── http_service_cache_response_test.bal
│   ├── http-service-chunking/
│   │   ├── http_service_chunking.bal
│   │   ├── http_service_chunking.client.out
│   │   ├── http_service_chunking.md
│   │   ├── http_service_chunking.metatags
│   │   ├── http_service_chunking.server.out
│   │   └── tests/
│   │       └── http_service_chunking_test.bal
│   ├── http-service-data-binding/
│   │   ├── http_service_data_binding.bal
│   │   ├── http_service_data_binding.client.out
│   │   ├── http_service_data_binding.md
│   │   ├── http_service_data_binding.metatags
│   │   ├── http_service_data_binding.server.out
│   │   └── tests/
│   │       └── http_service_data_binding_test.bal
│   ├── http-service-file-upload/
│   │   ├── http_service_file_upload.bal
│   │   ├── http_service_file_upload.md
│   │   ├── http_service_file_upload.metatags
│   │   └── http_service_file_upload.server.out
│   ├── http-service-jwt-authentication/
│   │   ├── http_service_jwt_authentication.bal
│   │   ├── http_service_jwt_authentication.md
│   │   ├── http_service_jwt_authentication.metatags
│   │   └── http_service_jwt_authentication.server.out
│   ├── http-service-mutual-ssl/
│   │   ├── http_service_mutual_ssl.bal
│   │   ├── http_service_mutual_ssl.client.out
│   │   ├── http_service_mutual_ssl.md
│   │   ├── http_service_mutual_ssl.metatags
│   │   └── http_service_mutual_ssl.server.out
│   ├── http-service-oauth2/
│   │   ├── http_service_oauth2.bal
│   │   ├── http_service_oauth2.md
│   │   ├── http_service_oauth2.metatags
│   │   └── http_service_oauth2.server.out
│   ├── http-service-payload-constraint-validation/
│   │   ├── http_service_payload_constraint_validation.bal
│   │   ├── http_service_payload_constraint_validation.client.out
│   │   ├── http_service_payload_constraint_validation.md
│   │   ├── http_service_payload_constraint_validation.metatags
│   │   ├── http_service_payload_constraint_validation.server.out
│   │   └── tests/
│   │       └── http_service_payload_constraint_validation.bal
│   ├── http-service-redirects/
│   │   ├── http_service_redirects.bal
│   │   ├── http_service_redirects.client.out
│   │   ├── http_service_redirects.md
│   │   ├── http_service_redirects.metatags
│   │   ├── http_service_redirects.server.out
│   │   └── tests/
│   │       └── http_service_redirects_test.bal
│   ├── http-service-ssl-tls/
│   │   ├── http_service_ssl_tls.bal
│   │   ├── http_service_ssl_tls.client.out
│   │   ├── http_service_ssl_tls.md
│   │   ├── http_service_ssl_tls.metatags
│   │   └── http_service_ssl_tls.server.out
│   ├── http-sse-client/
│   │   ├── http_sse_client.bal
│   │   ├── http_sse_client.client.out
│   │   ├── http_sse_client.md
│   │   └── http_sse_client.metatags
│   ├── http-sse-service/
│   │   ├── http_sse_service.bal
│   │   ├── http_sse_service.client.out
│   │   ├── http_sse_service.md
│   │   ├── http_sse_service.metatags
│   │   └── http_sse_service.server.out
│   ├── http-timeout/
│   │   ├── http_timeout.bal
│   │   ├── http_timeout.md
│   │   ├── http_timeout.metatags
│   │   ├── http_timeout.out
│   │   └── tests/
│   │       └── http_timeout_test.bal
│   ├── http-trace-logs/
│   │   ├── http_trace_logs.bal
│   │   ├── http_trace_logs.client.out
│   │   ├── http_trace_logs.md
│   │   ├── http_trace_logs.metatags
│   │   └── http_trace_logs.server.out
│   ├── identifiers/
│   │   ├── identifiers.bal
│   │   ├── identifiers.md
│   │   ├── identifiers.metatags
│   │   └── identifiers.out
│   ├── identity/
│   │   ├── identity.bal
│   │   ├── identity.md
│   │   ├── identity.metatags
│   │   └── identity.out
│   ├── if-statement/
│   │   ├── if_statement.bal
│   │   ├── if_statement.md
│   │   ├── if_statement.metatags
│   │   └── if_statement.out
│   ├── ignoring-return-values-and-errors/
│   │   ├── ignoring_return_values_and_errors.bal
│   │   ├── ignoring_return_values_and_errors.md
│   │   ├── ignoring_return_values_and_errors.metatags
│   │   └── ignoring_return_values_and_errors.out
│   ├── immutability/
│   │   ├── immutability.bal
│   │   ├── immutability.md
│   │   ├── immutability.metatags
│   │   └── immutability.out
│   ├── in-memory-message-store/
│   │   ├── in_memory_message_store.bal
│   │   ├── in_memory_message_store.md
│   │   ├── in_memory_message_store.metatags
│   │   └── in_memory_message_store.out
│   ├── included-record-parameters/
│   │   ├── included_record_parameters.bal
│   │   ├── included_record_parameters.md
│   │   ├── included_record_parameters.metatags
│   │   └── included_record_parameters.out
│   ├── index.json
│   ├── inferring-isolated/
│   │   ├── inferring_isolated.bal
│   │   ├── inferring_isolated.md
│   │   ├── inferring_isolated.metatags
│   │   └── inferring_isolated.out
│   ├── init-function/
│   │   ├── init_function.bal
│   │   ├── init_function.md
│   │   ├── init_function.metatags
│   │   └── init_function.out
│   ├── init-return-type/
│   │   ├── init_return_type.bal
│   │   ├── init_return_type.md
│   │   ├── init_return_type.metatags
│   │   └── init_return_type.out
│   ├── int-range/
│   │   ├── int_range.bal
│   │   ├── int_range.md
│   │   ├── int_range.metatags
│   │   └── int_range.out
│   ├── integers/
│   │   ├── integers.bal
│   │   ├── integers.md
│   │   ├── integers.metatags
│   │   └── integers.out
│   ├── inter-worker-failure-propagation/
│   │   ├── inter_worker_failure_propagation.bal
│   │   ├── inter_worker_failure_propagation.md
│   │   ├── inter_worker_failure_propagation.metatags
│   │   └── inter_worker_failure_propagation.out
│   ├── inter-worker-message-passing/
│   │   ├── inter_worker_message_passing.bal
│   │   ├── inter_worker_message_passing.md
│   │   ├── inter_worker_message_passing.metatags
│   │   └── inter_worker_message_passing.out
│   ├── interface-to-external-code/
│   │   ├── interface_to_external_code.bal
│   │   ├── interface_to_external_code.md
│   │   ├── interface_to_external_code.metatags
│   │   └── interface_to_external_code.out
│   ├── io-bytes/
│   │   ├── io_bytes.bal
│   │   ├── io_bytes.md
│   │   ├── io_bytes.metatags
│   │   └── io_bytes.out
│   ├── io-csv/
│   │   ├── io_csv.bal
│   │   ├── io_csv.md
│   │   ├── io_csv.metatags
│   │   └── io_csv.out
│   ├── io-csv-datamapping/
│   │   ├── io_csv_datamapping.bal
│   │   ├── io_csv_datamapping.md
│   │   ├── io_csv_datamapping.metatags
│   │   └── io_csv_datamapping.out
│   ├── io-json/
│   │   ├── io_json.bal
│   │   ├── io_json.md
│   │   ├── io_json.metatags
│   │   └── io_json.out
│   ├── io-strings/
│   │   ├── io_strings.bal
│   │   ├── io_strings.md
│   │   ├── io_strings.metatags
│   │   └── io_strings.out
│   ├── io-xml/
│   │   ├── io_xml.bal
│   │   ├── io_xml.md
│   │   ├── io_xml.metatags
│   │   └── io_xml.out
│   ├── isolated-functions/
│   │   ├── isolated_functions.bal
│   │   ├── isolated_functions.md
│   │   ├── isolated_functions.metatags
│   │   └── isolated_functions.out
│   ├── isolated-methods/
│   │   ├── isolated_methods.bal
│   │   ├── isolated_methods.md
│   │   ├── isolated_methods.metatags
│   │   └── isolated_methods.out
│   ├── isolated-objects/
│   │   ├── isolated_objects.bal
│   │   ├── isolated_objects.md
│   │   ├── isolated_objects.metatags
│   │   └── isolated_objects.out
│   ├── isolated-variables/
│   │   ├── isolated_variables.bal
│   │   ├── isolated_variables.md
│   │   ├── isolated_variables.metatags
│   │   └── isolated_variables.out
│   ├── iterating-over-xml-with-query/
│   │   ├── iterating_over_xml_with_query.bal
│   │   ├── iterating_over_xml_with_query.md
│   │   ├── iterating_over_xml_with_query.metatags
│   │   └── iterating_over_xml_with_query.out
│   ├── iterative-use-of-typed-binding/
│   │   ├── iterative_use_of_typed_binding.bal
│   │   ├── iterative_use_of_typed_binding.md
│   │   ├── iterative_use_of_typed_binding.metatags
│   │   └── iterative_use_of_typed_binding.out
│   ├── jdbc-atomic-transaction/
│   │   └── jdbc_atomic_transaction.out
│   ├── jms-consumer-acknowledgement/
│   │   ├── jms_consumer_acknowledgement.bal
│   │   ├── jms_consumer_acknowledgement.md
│   │   ├── jms_consumer_acknowledgement.metatags
│   │   └── jms_consumer_acknowledgement.out
│   ├── jms-consumer-consume-message/
│   │   ├── jms_consumer_consume_message.bal
│   │   ├── jms_consumer_consume_message.md
│   │   ├── jms_consumer_consume_message.metatags
│   │   └── jms_consumer_consume_message.out
│   ├── jms-producer-produce-message/
│   │   ├── jms_producer_produce_message.bal
│   │   ├── jms_producer_produce_message.curl.out
│   │   ├── jms_producer_produce_message.md
│   │   ├── jms_producer_produce_message.metatags
│   │   └── jms_producer_produce_message.out
│   ├── jms-producer-transaction/
│   │   ├── jms_producer_transaction.bal
│   │   ├── jms_producer_transaction.curl.out
│   │   ├── jms_producer_transaction.md
│   │   ├── jms_producer_transaction.metatags
│   │   └── jms_producer_transaction.out
│   ├── jms-service-consume-message/
│   │   ├── jms_service_consume_message.bal
│   │   ├── jms_service_consume_message.md
│   │   ├── jms_service_consume_message.metatags
│   │   └── jms_service_consume_message.out
│   ├── joining-iterable-objects/
│   │   ├── joining_iterable_objects.bal
│   │   ├── joining_iterable_objects.md
│   │   ├── joining_iterable_objects.metatags
│   │   └── joining_iterable_objects.out
│   ├── json-numbers/
│   │   ├── json_numbers.bal
│   │   ├── json_numbers.md
│   │   ├── json_numbers.metatags
│   │   └── json_numbers.out
│   ├── json-to-record/
│   │   ├── json_to_record.bal
│   │   ├── json_to_record.md
│   │   ├── json_to_record.metatags
│   │   └── json_to_record.out
│   ├── json-to-record-with-projection/
│   │   ├── json_to_record_with_projection.bal
│   │   ├── json_to_record_with_projection.md
│   │   ├── json_to_record_with_projection.metatags
│   │   └── json_to_record_with_projection.out
│   ├── json-type/
│   │   ├── json_type.bal
│   │   ├── json_type.md
│   │   ├── json_type.metatags
│   │   └── json_type.out
│   ├── jsonpath-expressions/
│   │   ├── jsonpath_expressions.bal
│   │   ├── jsonpath_expressions.md
│   │   ├── jsonpath_expressions.metatags
│   │   └── jsonpath_expressions.out
│   ├── kafka-consumer-constraint-validation/
│   │   ├── kafka_consumer_constraint_validation.bal
│   │   ├── kafka_consumer_constraint_validation.md
│   │   ├── kafka_consumer_constraint_validation.metatags
│   │   └── kafka_consumer_constraint_validation.out
│   ├── kafka-consumer-consumer-record-data-binding/
│   │   ├── kafka_consumer_consumer_record_data_binding.bal
│   │   ├── kafka_consumer_consumer_record_data_binding.md
│   │   ├── kafka_consumer_consumer_record_data_binding.metatags
│   │   └── kafka_consumer_consumer_record_data_binding.out
│   ├── kafka-consumer-payload-data-binding/
│   │   ├── kafka_consumer_payload_data_binding.bal
│   │   ├── kafka_consumer_payload_data_binding.md
│   │   ├── kafka_consumer_payload_data_binding.metatags
│   │   └── kafka_consumer_payload_data_binding.out
│   ├── kafka-consumer-sasl/
│   │   ├── kafka_consumer_sasl.bal
│   │   ├── kafka_consumer_sasl.md
│   │   ├── kafka_consumer_sasl.metatags
│   │   └── kafka_consumer_sasl.out
│   ├── kafka-consumer-ssl/
│   │   ├── kafka_consumer_ssl.bal
│   │   ├── kafka_consumer_ssl.md
│   │   ├── kafka_consumer_ssl.metatags
│   │   └── kafka_consumer_ssl.out
│   ├── kafka-producer-produce-message/
│   │   ├── kafka_producer_produce_message.bal
│   │   ├── kafka_producer_produce_message.curl.out
│   │   ├── kafka_producer_produce_message.md
│   │   ├── kafka_producer_produce_message.metatags
│   │   └── kafka_producer_produce_message.out
│   ├── kafka-producer-sasl/
│   │   ├── kafka_producer_sasl.bal
│   │   ├── kafka_producer_sasl.curl.out
│   │   ├── kafka_producer_sasl.md
│   │   ├── kafka_producer_sasl.metatags
│   │   └── kafka_producer_sasl.out
│   ├── kafka-producer-ssl/
│   │   ├── kafka_producer_ssl.bal
│   │   ├── kafka_producer_ssl.curl.out
│   │   ├── kafka_producer_ssl.md
│   │   ├── kafka_producer_ssl.metatags
│   │   └── kafka_producer_ssl.out
│   ├── kafka-service-constraint-validation/
│   │   ├── kafka_service_constraint_validation.bal
│   │   ├── kafka_service_constraint_validation.md
│   │   ├── kafka_service_constraint_validation.metatags
│   │   └── kafka_service_constraint_validation.out
│   ├── kafka-service-consume-message/
│   │   ├── kafka_service_consume_message.bal
│   │   ├── kafka_service_consume_message.md
│   │   ├── kafka_service_consume_message.metatags
│   │   └── kafka_service_consume_message.out
│   ├── kafka-service-error-handling/
│   │   ├── kafka_service_error_handling.bal
│   │   ├── kafka_service_error_handling.md
│   │   ├── kafka_service_error_handling.metatags
│   │   └── kafka_service_error_handling.out
│   ├── kafka-service-sasl/
│   │   ├── kafka_service_sasl.bal
│   │   ├── kafka_service_sasl.md
│   │   ├── kafka_service_sasl.metatags
│   │   └── kafka_service_sasl.out
│   ├── kafka-service-ssl/
│   │   ├── kafka_service_ssl.bal
│   │   ├── kafka_service_ssl.md
│   │   ├── kafka_service_ssl.metatags
│   │   └── kafka_service_ssl.out
│   ├── kubernetes-hello-world/
│   │   ├── Cloud.toml
│   │   ├── build_output.out
│   │   ├── docker_push.out
│   │   ├── execute_curl.out
│   │   ├── kubectl_apply.out
│   │   ├── kubectl_expose.out
│   │   ├── kubectl_pods.out
│   │   ├── kubectl_svc.out
│   │   ├── kubernetes_hello_world.bal
│   │   ├── kubernetes_hello_world.md
│   │   └── minikube_ip.out
│   ├── langlib-functions/
│   │   ├── langlib_functions.bal
│   │   ├── langlib_functions.md
│   │   ├── langlib_functions.metatags
│   │   └── langlib_functions.out
│   ├── ldap-add-remove-entry/
│   │   ├── ldap_add_remove_entry.bal
│   │   ├── ldap_add_remove_entry.md
│   │   ├── ldap_add_remove_entry.metatags
│   │   └── ldap_add_remove_entry.server.out
│   ├── ldap-search-entry/
│   │   ├── ldap_search_entry.bal
│   │   ├── ldap_search_entry.md
│   │   ├── ldap_search_entry.metatags
│   │   └── ldap_search_entry.server.out
│   ├── let-clause/
│   │   ├── let_clause.bal
│   │   ├── let_clause.md
│   │   ├── let_clause.metatags
│   │   └── let_clause.out
│   ├── limit-clause/
│   │   ├── limit_clause.bal
│   │   ├── limit_clause.md
│   │   ├── limit_clause.metatags
│   │   └── limit_clause.out
│   ├── list-binding-pattern/
│   │   ├── list_binding_pattern.bal
│   │   ├── list_binding_pattern.md
│   │   ├── list_binding_pattern.metatags
│   │   └── list_binding_pattern.out
│   ├── list-binding-pattern-in-match-statement/
│   │   ├── list_binding_pattern_in_match_statement.bal
│   │   ├── list_binding_pattern_in_match_statement.md
│   │   ├── list_binding_pattern_in_match_statement.metatags
│   │   └── list_binding_pattern_in_match_statement.out
│   ├── list-equality/
│   │   ├── list_equality.bal
│   │   ├── list_equality.md
│   │   ├── list_equality.metatags
│   │   └── list_equality.out
│   ├── list-subtyping/
│   │   ├── list_subtyping.bal
│   │   ├── list_subtyping.md
│   │   ├── list_subtyping.metatags
│   │   └── list_subtyping.out
│   ├── lock-statement/
│   │   ├── lock_statement.bal
│   │   ├── lock_statement.md
│   │   ├── lock_statement.metatags
│   │   └── lock_statement.out
│   ├── log-file-rotation/
│   │   ├── app_log_rotation.out
│   │   ├── log_file_rotation.bal
│   │   ├── log_file_rotation.md
│   │   ├── log_file_rotation.metatags
│   │   └── log_file_rotation.out
│   ├── logger-from-config/
│   │   ├── audit_logs.out
│   │   ├── logger_from_config.bal
│   │   ├── logger_from_config.md
│   │   ├── logger_from_config.metatags
│   │   ├── logger_from_config.out
│   │   └── metrics_logs.out
│   ├── logging/
│   │   ├── logging.bal
│   │   ├── logging.md
│   │   ├── logging.metatags
│   │   ├── logging.out
│   │   └── tests/
│   │       └── log_api_test.bal
│   ├── logging-configuration/
│   │   ├── ModuleConfig.toml
│   │   ├── logging_configuration.bal
│   │   ├── logging_configuration.md
│   │   ├── logging_configuration.metatags
│   │   └── logging_configuration.out
│   ├── logging-with-context/
│   │   ├── logging_with_context.bal
│   │   ├── logging_with_context.md
│   │   ├── logging_with_context.metatags
│   │   └── logging_with_context.out
│   ├── main-function/
│   │   ├── main_function.bal
│   │   ├── main_function.md
│   │   ├── main_function.metatags
│   │   └── main_function.out
│   ├── manage-scheduled-jobs/
│   │   ├── manage_scheduled_jobs.bal
│   │   ├── manage_scheduled_jobs.md
│   │   ├── manage_scheduled_jobs.metatags
│   │   └── manage_scheduled_jobs.out
│   ├── mapping-binding-pattern/
│   │   ├── mapping_binding_pattern.bal
│   │   ├── mapping_binding_pattern.md
│   │   ├── mapping_binding_pattern.metatags
│   │   └── mapping_binding_pattern.out
│   ├── mapping-binding-pattern-in-match-statement/
│   │   ├── mapping_binding_pattern_in_match_statement.bal
│   │   ├── mapping_binding_pattern_in_match_statement.md
│   │   ├── mapping_binding_pattern_in_match_statement.metatags
│   │   └── mapping_binding_pattern_in_match_statement.out
│   ├── maps/
│   │   ├── maps.bal
│   │   ├── maps.md
│   │   ├── maps.metatags
│   │   └── maps.out
│   ├── match-guard-in-match-statement/
│   │   ├── match_guard_in_match_statement.bal
│   │   ├── match_guard_in_match_statement.md
│   │   ├── match_guard_in_match_statement.metatags
│   │   └── match_guard_in_match_statement.out
│   ├── match-statement/
│   │   ├── match_statement.bal
│   │   ├── match_statement.md
│   │   ├── match_statement.metatags
│   │   └── match_statement.out
│   ├── match-statement-with-maps/
│   │   ├── match_statement_with_maps.bal
│   │   ├── match_statement_with_maps.md
│   │   ├── match_statement_with_maps.metatags
│   │   └── match_statement_with_maps.out
│   ├── mcp-service/
│   │   ├── mcp_service.bal
│   │   ├── mcp_service.md
│   │   ├── mcp_service.metatags
│   │   └── mcp_service.out
│   ├── mcp-service-advanced/
│   │   ├── mcp_service_advanced.bal
│   │   ├── mcp_service_advanced.md
│   │   ├── mcp_service_advanced.metatags
│   │   └── mcp_service_advanced.out
│   ├── message-store-listener/
│   │   ├── message_store_listener.bal
│   │   ├── message_store_listener.md
│   │   ├── message_store_listener.metatags
│   │   └── message_store_listener.out
│   ├── message-store-type/
│   │   ├── message_store_type.bal
│   │   ├── message_store_type.md
│   │   ├── message_store_type.metatags
│   │   └── message_store_type.out
│   ├── meta.json
│   ├── module-lifecycle/
│   │   ├── module_lifecycle.bal
│   │   ├── module_lifecycle.md
│   │   ├── module_lifecycle.metatags
│   │   └── module_lifecycle.out
│   ├── mqtt-client-basic-authentication/
│   │   ├── mqtt_client_basic_authentication.bal
│   │   ├── mqtt_client_basic_authentication.curl.out
│   │   ├── mqtt_client_basic_authentication.md
│   │   ├── mqtt_client_basic_authentication.metatags
│   │   └── mqtt_client_basic_authentication.out
│   ├── mqtt-client-publish-message/
│   │   ├── mqtt_client_publish_message.bal
│   │   ├── mqtt_client_publish_message.curl.out
│   │   ├── mqtt_client_publish_message.md
│   │   ├── mqtt_client_publish_message.metatags
│   │   └── mqtt_client_publish_message.out
│   ├── mqtt-client-ssl/
│   │   ├── mqtt_client_ssl.bal
│   │   ├── mqtt_client_ssl.curl.out
│   │   ├── mqtt_client_ssl.md
│   │   ├── mqtt_client_ssl.metatags
│   │   └── mqtt_client_ssl.out
│   ├── mqtt-service-basic-authentication/
│   │   ├── mqtt_service_basic_authentication.bal
│   │   ├── mqtt_service_basic_authentication.md
│   │   ├── mqtt_service_basic_authentication.metatags
│   │   └── mqtt_service_basic_authentication.out
│   ├── mqtt-service-ssl/
│   │   ├── mqtt_service_ssl.bal
│   │   ├── mqtt_service_ssl.md
│   │   ├── mqtt_service_ssl.metatags
│   │   └── mqtt_service_ssl.out
│   ├── mqtt-service-subscribe-message/
│   │   ├── mqtt_service_subscribe_message.bal
│   │   ├── mqtt_service_subscribe_message.md
│   │   ├── mqtt_service_subscribe_message.metatags
│   │   └── mqtt_service_subscribe_message.out
│   ├── multiple-key-fields/
│   │   ├── multiple_key_fields.bal
│   │   ├── multiple_key_fields.md
│   │   ├── multiple_key_fields.metatags
│   │   └── multiple_key_fields.out
│   ├── multiple-receive/
│   │   ├── multiple_receive.bal
│   │   ├── multiple_receive.md
│   │   ├── multiple_receive.metatags
│   │   └── multiple_receive.out
│   ├── multiple-wait/
│   │   ├── multiple_wait.bal
│   │   ├── multiple_wait.md
│   │   ├── multiple_wait.metatags
│   │   └── multiple_wait.out
│   ├── mysql-atomic-transaction/
│   │   ├── mysql_atomic_transaction.bal
│   │   ├── mysql_atomic_transaction.client.out
│   │   ├── mysql_atomic_transaction.md
│   │   ├── mysql_atomic_transaction.metatags
│   │   ├── mysql_atomic_transaction.server.out
│   │   └── mysql_atomic_xa_transaction.bal
│   ├── mysql-batch-execute-operation/
│   │   ├── mysql_batch_execute_operation.bal
│   │   ├── mysql_batch_execute_operation.client.out
│   │   ├── mysql_batch_execute_operation.md
│   │   ├── mysql_batch_execute_operation.metatags
│   │   └── mysql_batch_execute_operation.server.out
│   ├── mysql-call-stored-procedures/
│   │   ├── mysql_call_stored_procedures.bal
│   │   ├── mysql_call_stored_procedures.client.out
│   │   ├── mysql_call_stored_procedures.md
│   │   ├── mysql_call_stored_procedures.metatags
│   │   └── mysql_call_stored_procedures.server.out
│   ├── mysql-execute-operation/
│   │   ├── mysql_execute_operation.bal
│   │   ├── mysql_execute_operation.client.out
│   │   ├── mysql_execute_operation.md
│   │   ├── mysql_execute_operation.metatags
│   │   └── mysql_execute_operation.server.out
│   ├── mysql-prerequisite/
│   │   ├── README.md
│   │   ├── create_stored_procedure.bal
│   │   └── setup_database.bal
│   ├── mysql-query-column-mapping/
│   │   ├── mysql_query_column_mapping.bal
│   │   ├── mysql_query_column_mapping.client.out
│   │   ├── mysql_query_column_mapping.md
│   │   ├── mysql_query_column_mapping.metatags
│   │   └── mysql_query_column_mapping.server.out
│   ├── mysql-query-operation/
│   │   ├── mysql_query_operation.md
│   │   ├── mysql_query_operation.metatags
│   │   ├── mysql_simple_query.bal
│   │   ├── mysql_simple_query.client.out
│   │   └── mysql_simple_query.server.out
│   ├── mysql-query-row-operation/
│   │   ├── mysql_query_row.bal
│   │   ├── mysql_query_row.client.out
│   │   ├── mysql_query_row.server.out
│   │   ├── mysql_query_row_operation.md
│   │   └── mysql_query_row_operation.metatags
│   ├── named-worker-return-values/
│   │   ├── named_worker_return_values.bal
│   │   ├── named_worker_return_values.md
│   │   ├── named_worker_return_values.metatags
│   │   └── named_worker_return_values.out
│   ├── named-worker-with-on-fail-clause/
│   │   ├── named_worker_with_on_fail_clause.bal
│   │   ├── named_worker_with_on_fail_clause.md
│   │   ├── named_worker_with_on_fail_clause.metatags
│   │   └── named_worker_with_on_fail_clause.out
│   ├── named-workers/
│   │   ├── named_workers.bal
│   │   ├── named_workers.md
│   │   ├── named_workers.metatags
│   │   └── named_workers.out
│   ├── named-workers-and-futures/
│   │   ├── named_workers_and_futures.bal
│   │   ├── named_workers_and_futures.md
│   │   ├── named_workers_and_futures.metatags
│   │   └── named_workers_and_futures.out
│   ├── nats-basic-pub/
│   │   ├── nats_basic_pub.bal
│   │   ├── nats_basic_pub.client.out
│   │   ├── nats_basic_pub.md
│   │   ├── nats_basic_pub.metatags
│   │   └── nats_basic_pub.server.out
│   ├── nats-basic-reply/
│   │   ├── nats_basic_reply.bal
│   │   ├── nats_basic_reply.md
│   │   ├── nats_basic_reply.metatags
│   │   └── nats_basic_reply.out
│   ├── nats-basic-request/
│   │   ├── nats_basic_request.bal
│   │   ├── nats_basic_request.client.out
│   │   ├── nats_basic_request.md
│   │   ├── nats_basic_request.metatags
│   │   └── nats_basic_request.server.out
│   ├── nats-basic-sub/
│   │   ├── nats_basic_sub.bal
│   │   ├── nats_basic_sub.md
│   │   ├── nats_basic_sub.metatags
│   │   └── nats_basic_sub.out
│   ├── nats-client-basic-auth/
│   │   ├── nats_client_basic_auth.bal
│   │   ├── nats_client_basic_auth.client.out
│   │   ├── nats_client_basic_auth.md
│   │   ├── nats_client_basic_auth.metatags
│   │   └── nats_client_basic_auth.server.out
│   ├── nats-client-secure-connection/
│   │   ├── nats_client_secure_connection.bal
│   │   ├── nats_client_secure_connection.client.out
│   │   ├── nats_client_secure_connection.md
│   │   ├── nats_client_secure_connection.metatags
│   │   └── nats_client_secure_connection.server.out
│   ├── nats-jetstream-pub/
│   │   ├── nats_jetstream_pub.bal
│   │   ├── nats_jetstream_pub.client.out
│   │   ├── nats_jetstream_pub.md
│   │   ├── nats_jetstream_pub.metatags
│   │   └── nats_jetstream_pub.server.out
│   ├── nats-jetstream-sub/
│   │   ├── nats_jestream_sub.bal
│   │   ├── nats_jestream_sub.md
│   │   ├── nats_jestream_sub.metatags
│   │   └── nats_jestream_sub.out
│   ├── nats-service-basic-auth/
│   │   ├── nats_service_basic_auth.bal
│   │   ├── nats_service_basic_auth.md
│   │   ├── nats_service_basic_auth.metatags
│   │   └── nats_service_basic_auth.out
│   ├── nats-service-constraint-validation/
│   │   ├── nats_service_constraint_validation.bal
│   │   ├── nats_service_constraint_validation.md
│   │   ├── nats_service_constraint_validation.metatags
│   │   └── nats_service_constraint_validation.out
│   ├── nats-service-secure-connection/
│   │   ├── nats_service_secure_connection.bal
│   │   ├── nats_service_secure_connection.md
│   │   ├── nats_service_secure_connection.metatags
│   │   └── nats_service_secure_connection.out
│   ├── natural-expressions/
│   │   ├── natural_expressions.bal
│   │   ├── natural_expressions.md
│   │   ├── natural_expressions.metatags
│   │   └── natural_expressions.out
│   ├── nested-arrays/
│   │   ├── nested_arrays.bal
│   │   ├── nested_arrays.md
│   │   ├── nested_arrays.metatags
│   │   └── nested_arrays.out
│   ├── nested-query-expressions/
│   │   ├── nested_query_expressions.bal
│   │   ├── nested_query_expressions.md
│   │   ├── nested_query_expressions.metatags
│   │   └── nested_query_expressions.out
│   ├── never-type/
│   │   ├── never_type.bal
│   │   ├── never_type.md
│   │   ├── never_type.metatags
│   │   └── never_type.out
│   ├── nil/
│   │   ├── nil.bal
│   │   ├── nil.md
│   │   ├── nil.metatags
│   │   └── nil.out
│   ├── object/
│   │   ├── object.bal
│   │   ├── object.md
│   │   ├── object.metatags
│   │   └── object.out
│   ├── object-closure/
│   │   ├── object_closure.bal
│   │   ├── object_closure.md
│   │   ├── object_closure.metatags
│   │   └── object_closure.out
│   ├── object-constructor/
│   │   ├── object_constructor.bal
│   │   ├── object_constructor.md
│   │   ├── object_constructor.metatags
│   │   └── object_constructor.out
│   ├── object-type-inclusion/
│   │   ├── object_type_inclusion.bal
│   │   ├── object_type_inclusion.md
│   │   ├── object_type_inclusion.metatags
│   │   └── object_type_inclusion.out
│   ├── object-types/
│   │   ├── object_types.bal
│   │   ├── object_types.md
│   │   ├── object_types.metatags
│   │   └── object_types.out
│   ├── object-value-from-class-definition/
│   │   ├── object_value_from_class_definition.bal
│   │   ├── object_value_from_class_definition.md
│   │   ├── object_value_from_class_definition.metatags
│   │   └── object_value_from_class_definition.out
│   ├── on-conflict-clause/
│   │   ├── on_conflict_clause.bal
│   │   ├── on_conflict_clause.md
│   │   ├── on_conflict_clause.metatags
│   │   └── on_conflict_clause.out
│   ├── open-records/
│   │   ├── open_records.bal
│   │   ├── open_records.md
│   │   ├── open_records.metatags
│   │   └── open_records.out
│   ├── optional-fields/
│   │   ├── optional_fields.bal
│   │   ├── optional_fields.md
│   │   ├── optional_fields.metatags
│   │   └── optional_fields.out
│   ├── outer-join-clause/
│   │   ├── outer_join_clause.bal
│   │   ├── outer_join_clause.md
│   │   ├── outer_join_clause.metatags
│   │   └── outer_join_clause.out
│   ├── panics/
│   │   ├── panics.bal
│   │   ├── panics.md
│   │   ├── panics.metatags
│   │   └── panics.out
│   ├── parse-csv-lists/
│   │   ├── parse_csv_lists.bal
│   │   ├── parse_csv_lists.md
│   │   ├── parse_csv_lists.metatags
│   │   └── parse_csv_lists.out
│   ├── persist-create/
│   │   ├── persist_create.bal
│   │   ├── persist_create.md
│   │   ├── persist_create.metatags
│   │   ├── persist_create.out
│   │   ├── persist_generate.out
│   │   ├── persist_init.out
│   │   └── persist_model.bal
│   ├── persist-delete/
│   │   ├── persist_create.metatags
│   │   ├── persist_delete.bal
│   │   ├── persist_delete.md
│   │   ├── persist_delete.out
│   │   ├── persist_generate.out
│   │   ├── persist_init.out
│   │   └── persist_model.bal
│   ├── persist-filtering/
│   │   ├── persist_filtering.bal
│   │   ├── persist_filtering.md
│   │   ├── persist_filtering.metatags
│   │   ├── persist_filtering.out
│   │   ├── persist_generate.out
│   │   ├── persist_init.out
│   │   └── persist_model.bal
│   ├── persist-get-all/
│   │   ├── persist_generate.out
│   │   ├── persist_get_all.bal
│   │   ├── persist_get_all.md
│   │   ├── persist_get_all.metatags
│   │   ├── persist_get_all.out
│   │   ├── persist_init.out
│   │   └── persist_model.bal
│   ├── persist-get-by-key/
│   │   ├── persist_generate.out
│   │   ├── persist_get_by_key.bal
│   │   ├── persist_get_by_key.md
│   │   ├── persist_get_by_key.metatags
│   │   ├── persist_get_by_key.out
│   │   ├── persist_init.out
│   │   └── persist_model.bal
│   ├── persist-relation-queries/
│   │   ├── persist_generate.out
│   │   ├── persist_init.out
│   │   ├── persist_model.bal
│   │   ├── persist_relation_queries.bal
│   │   ├── persist_relation_queries.md
│   │   ├── persist_relation_queries.metatags
│   │   └── persist_relation_queries.out
│   ├── persist-select-fields/
│   │   ├── persist_generate.out
│   │   ├── persist_init.out
│   │   ├── persist_model.bal
│   │   ├── persist_select_fields.bal
│   │   ├── persist_select_fields.md
│   │   ├── persist_select_fields.metatags
│   │   └── persist_select_fields.out
│   ├── persist-update/
│   │   ├── persist_generate.out
│   │   ├── persist_init.out
│   │   ├── persist_model.bal
│   │   ├── persist_update.bal
│   │   ├── persist_update.md
│   │   ├── persist_update.metatags
│   │   └── persist_update.out
│   ├── programs-and-modules/
│   │   ├── programs_and_modules.bal
│   │   ├── programs_and_modules.md
│   │   ├── programs_and_modules.metatags
│   │   └── programs_and_modules.out
│   ├── provide-function-arguments-by-name/
│   │   ├── provide_function_arguments_by_name.bal
│   │   ├── provide_function_arguments_by_name.md
│   │   ├── provide_function_arguments_by_name.metatags
│   │   └── provide_function_arguments_by_name.out
│   ├── providing-services/
│   │   ├── providing_services.bal
│   │   ├── providing_services.md
│   │   ├── providing_services.metatags
│   │   └── providing_services.out
│   ├── query-actions/
│   │   ├── query_actions.bal
│   │   ├── query_actions.md
│   │   ├── query_actions.metatags
│   │   └── query_actions.out
│   ├── query-expressions/
│   │   ├── query_expressions.bal
│   │   ├── query_expressions.md
│   │   ├── query_expressions.metatags
│   │   └── query_expressions.out
│   ├── querying-tables/
│   │   ├── querying_tables.bal
│   │   ├── querying_tables.md
│   │   ├── querying_tables.metatags
│   │   └── querying_tables.out
│   ├── querying-with-streams/
│   │   ├── querying_with_streams.bal
│   │   ├── querying_with_streams.md
│   │   ├── querying_with_streams.metatags
│   │   └── querying_with_streams.out
│   ├── rabbitmq-client-basic-auth/
│   │   ├── rabbitmq_client_basic_auth.bal
│   │   ├── rabbitmq_client_basic_auth.client.out
│   │   ├── rabbitmq_client_basic_auth.md
│   │   ├── rabbitmq_client_basic_auth.metatags
│   │   └── rabbitmq_client_basic_auth.server.out
│   ├── rabbitmq-client-constraint-validation/
│   │   ├── rabbitmq_client_constraint_validation.bal
│   │   ├── rabbitmq_client_constraint_validation.md
│   │   ├── rabbitmq_client_constraint_validation.metatags
│   │   └── rabbitmq_client_constraint_validation.out
│   ├── rabbitmq-client-secure-connection/
│   │   ├── rabbitmq_client_secure_connection.bal
│   │   ├── rabbitmq_client_secure_connection.client.out
│   │   ├── rabbitmq_client_secure_connection.md
│   │   ├── rabbitmq_client_secure_connection.metatags
│   │   └── rabbitmq_client_secure_connection.server.out
│   ├── rabbitmq-consumer/
│   │   ├── rabbitmq_consumer.bal
│   │   ├── rabbitmq_consumer.md
│   │   ├── rabbitmq_consumer.metatags
│   │   └── rabbitmq_consumer.out
│   ├── rabbitmq-consumer-with-client-acknowledgement/
│   │   ├── rabbitmq_consumer_with_client_acknowledgement.bal
│   │   ├── rabbitmq_consumer_with_client_acknowledgement.md
│   │   ├── rabbitmq_consumer_with_client_acknowledgement.metatags
│   │   └── rabbitmq_consumer_with_client_acknowledgement.out
│   ├── rabbitmq-producer/
│   │   ├── rabbitmq_producer.bal
│   │   ├── rabbitmq_producer.client.out
│   │   ├── rabbitmq_producer.md
│   │   ├── rabbitmq_producer.metatags
│   │   └── rabbitmq_producer.server.out
│   ├── rabbitmq-queue-declare/
│   │   ├── rabbitmq_queue_declare.bal
│   │   ├── rabbitmq_queue_declare.md
│   │   ├── rabbitmq_queue_declare.metatags
│   │   └── rabbitmq_queue_declare.out
│   ├── rabbitmq-service-basic-auth/
│   │   ├── rabbitmq_service_basic_auth.bal
│   │   ├── rabbitmq_service_basic_auth.md
│   │   ├── rabbitmq_service_basic_auth.metatags
│   │   └── rabbitmq_service_basic_auth.out
│   ├── rabbitmq-service-constraint-validation/
│   │   ├── rabbitmq_service_constraint_validation.bal
│   │   ├── rabbitmq_service_constraint_validation.md
│   │   ├── rabbitmq_service_constraint_validation.metatags
│   │   └── rabbitmq_service_constraint_validation.out
│   ├── rabbitmq-service-secure-connection/
│   │   ├── rabbitmq_service_secure_connection.bal
│   │   ├── rabbitmq_service_secure_connection.md
│   │   ├── rabbitmq_service_secure_connection.metatags
│   │   └── rabbitmq_service_secure_connection.out
│   ├── rabbitmq-sync-consumer/
│   │   ├── rabbitmq_sync_consumer.bal
│   │   ├── rabbitmq_sync_consumer.md
│   │   ├── rabbitmq_sync_consumer.metatags
│   │   └── rabbitmq_sync_consumer.out
│   ├── rabbitmq-transaction-consumer/
│   │   ├── rabbitmq_transaction_consumer.bal
│   │   ├── rabbitmq_transaction_consumer.md
│   │   ├── rabbitmq_transaction_consumer.metatags
│   │   └── rabbitmq_transaction_consumer.out
│   ├── rabbitmq-transaction-producer/
│   │   ├── rabbitmq_transaction_producer.bal
│   │   ├── rabbitmq_transaction_producer.md
│   │   ├── rabbitmq_transaction_producer.metatags
│   │   └── rabbitmq_transaction_producer.out
│   ├── rag-ingestion-with-external-vector-store/
│   │   ├── rag_ingestion_with_external_vector_store.bal
│   │   ├── rag_ingestion_with_external_vector_store.md
│   │   ├── rag_ingestion_with_external_vector_store.metatags
│   │   └── rag_ingestion_with_external_vector_store.out
│   ├── rag-query-with-external-vector-store/
│   │   ├── rag_query_with_external_vector_store.bal
│   │   ├── rag_query_with_external_vector_store.md
│   │   ├── rag_query_with_external_vector_store.metatags
│   │   └── rag_query_with_external_vector_store.out
│   ├── rag-with-in-memory-vector-store/
│   │   ├── leave_policy.md
│   │   ├── rag_with_in_memory_vector_store.bal
│   │   ├── rag_with_in_memory_vector_store.md
│   │   ├── rag_with_in_memory_vector_store.metatags
│   │   └── rag_with_in_memory_vector_store.out
│   ├── random-numbers/
│   │   ├── random_numbers.bal
│   │   ├── random_numbers.md
│   │   ├── random_numbers.metatags
│   │   └── random_numbers.out
│   ├── raw-templates/
│   │   ├── raw_templates.bal
│   │   ├── raw_templates.md
│   │   ├── raw_templates.metatags
│   │   └── raw_templates.out
│   ├── readonly-and-isolated/
│   │   ├── readonly_and_isolated.bal
│   │   ├── readonly_and_isolated.md
│   │   ├── readonly_and_isolated.metatags
│   │   └── readonly_and_isolated.out
│   ├── readonly-objects-and-classes/
│   │   ├── readonly_objects_and_classes.bal
│   │   ├── readonly_objects_and_classes.md
│   │   ├── readonly_objects_and_classes.metatags
│   │   └── readonly_objects_and_classes.out
│   ├── readonly-type/
│   │   ├── readonly_type.bal
│   │   ├── readonly_type.md
│   │   ├── readonly_type.metatags
│   │   └── readonly_type.out
│   ├── receive-email-using-client/
│   │   ├── receive_email_using_client.bal
│   │   ├── receive_email_using_client.md
│   │   ├── receive_email_using_client.metatags
│   │   └── receive_email_using_client.out
│   ├── receive-email-using-service/
│   │   ├── receive_email_using_service.bal
│   │   ├── receive_email_using_service.md
│   │   ├── receive_email_using_service.metatags
│   │   └── receive_email_using_service.out
│   ├── record-to-edi/
│   │   ├── bal_project.out
│   │   ├── codegen_command.out
│   │   ├── output.out
│   │   ├── package_structure.out
│   │   ├── record_to_edi.bal
│   │   ├── record_to_edi.md
│   │   ├── record_to_edi.metatags
│   │   ├── schema.json
│   │   └── tool_pull_command.out
│   ├── records/
│   │   ├── records.bal
│   │   ├── records.md
│   │   ├── records.metatags
│   │   └── records.out
│   ├── regexp-find-operations/
│   │   ├── regexp_find_operations.bal
│   │   ├── regexp_find_operations.md
│   │   ├── regexp_find_operations.metatags
│   │   └── regexp_find_operations.out
│   ├── regexp-match-operations/
│   │   ├── regexp_match_operations.bal
│   │   ├── regexp_match_operations.md
│   │   ├── regexp_match_operations.metatags
│   │   └── regexp_match_operations.out
│   ├── regexp-operations-overview/
│   │   ├── regexp_operations_overview.bal
│   │   ├── regexp_operations_overview.md
│   │   ├── regexp_operations_overview.metatags
│   │   └── regexp_operations_overview.out
│   ├── regexp-replace-operations/
│   │   ├── regexp_replace_operations.bal
│   │   ├── regexp_replace_operations.md
│   │   ├── regexp_replace_operations.metatags
│   │   └── regexp_replace_operations.out
│   ├── regexp-type/
│   │   ├── regexp_type.bal
│   │   ├── regexp_type.md
│   │   ├── regexp_type.metatags
│   │   └── regexp_type.out
│   ├── resource/
│   │   └── path/
│   │       └── to/
│   │           ├── ballerinaKeystore.p12
│   │           ├── ballerinaTruststore.p12
│   │           ├── client-private.key
│   │           ├── client-public.crt
│   │           ├── encryptedPrivate.key
│   │           ├── private.key
│   │           ├── public.crt
│   │           ├── server-private.key
│   │           └── server-public.crt
│   ├── resource-method-typing/
│   │   ├── resource_method_typing.bal
│   │   ├── resource_method_typing.client.out
│   │   ├── resource_method_typing.md
│   │   ├── resource_method_typing.metatags
│   │   └── resource_method_typing.server.out
│   ├── resource-methods/
│   │   ├── resource_methods.bal
│   │   ├── resource_methods.client.out
│   │   ├── resource_methods.md
│   │   ├── resource_methods.metatags
│   │   └── resource_methods.server.out
│   ├── resource-path-parameters/
│   │   ├── resource_path_parameters.bal
│   │   ├── resource_path_parameters.client.out
│   │   ├── resource_path_parameters.md
│   │   ├── resource_path_parameters.metatags
│   │   └── resource_path_parameters.server.out
│   ├── rest-arguments/
│   │   ├── rest_arguments.bal
│   │   ├── rest_arguments.md
│   │   ├── rest_arguments.metatags
│   │   └── rest_arguments.out
│   ├── rest-binding-pattern-in-error-binding-pattern/
│   │   ├── rest_binding_pattern_in_error_binding_pattern.bal
│   │   ├── rest_binding_pattern_in_error_binding_pattern.md
│   │   ├── rest_binding_pattern_in_error_binding_pattern.metatags
│   │   └── rest_binding_pattern_in_error_binding_pattern.out
│   ├── rest-binding-pattern-in-list-binding-pattern/
│   │   ├── rest_binding_pattern_in_list_binding_pattern.bal
│   │   ├── rest_binding_pattern_in_list_binding_pattern.md
│   │   ├── rest_binding_pattern_in_list_binding_pattern.metatags
│   │   └── rest_binding_pattern_in_list_binding_pattern.out
│   ├── rest-binding-pattern-in-mapping-binding-pattern/
│   │   ├── rest_binding_pattern_in_mapping_binding_pattern.bal
│   │   ├── rest_binding_pattern_in_mapping_binding_pattern.md
│   │   ├── rest_binding_pattern_in_mapping_binding_pattern.metatags
│   │   └── rest_binding_pattern_in_mapping_binding_pattern.out
│   ├── rest-parameters/
│   │   ├── rest_parameters.bal
│   │   ├── rest_parameters.md
│   │   ├── rest_parameters.metatags
│   │   └── rest_parameters.out
│   ├── rest-type-in-tuples/
│   │   ├── rest_type_in_tuples.bal
│   │   ├── rest_type_in_tuples.md
│   │   ├── rest_type_in_tuples.metatags
│   │   └── rest_type_in_tuples.out
│   ├── retry-transaction-statement/
│   │   ├── retry_transaction_statement.bal
│   │   ├── retry_transaction_statement.md
│   │   ├── retry_transaction_statement.metatags
│   │   └── retry_transaction_statement.out
│   ├── rollback/
│   │   ├── rollback.bal
│   │   ├── rollback.md
│   │   ├── rollback.metatags
│   │   └── rollback.out
│   ├── run-strands-safely-on-separate-threads/
│   │   ├── run_strands_safely_on_separate_threads.bal
│   │   ├── run_strands_safely_on_separate_threads.md
│   │   ├── run_strands_safely_on_separate_threads.metatags
│   │   └── run_strands_safely_on_separate_threads.out
│   ├── security-crypto/
│   │   ├── security_crypto.bal
│   │   ├── security_crypto.md
│   │   ├── security_crypto.metatags
│   │   ├── security_crypto.out
│   │   └── tests/
│   │       └── security_crypto_test.bal
│   ├── security-jwt-issue-validate/
│   │   ├── security_jwt_issue_validate.bal
│   │   ├── security_jwt_issue_validate.md
│   │   ├── security_jwt_issue_validate.metatags
│   │   ├── security_jwt_issue_validate.out
│   │   └── tests/
│   │       └── security_jwt_issue_validate_test.bal
│   ├── send-email/
│   │   ├── send_email.bal
│   │   ├── send_email.md
│   │   ├── send_email.metatags
│   │   └── send_email.out
│   ├── sensitive-data-logging/
│   │   ├── sensitive_data_logging.bal
│   │   ├── sensitive_data_logging.md
│   │   ├── sensitive_data_logging.metatags
│   │   └── sensitive_data_logging.out
│   ├── sequence-diagrams/
│   │   ├── sequence_diagrams.bal
│   │   ├── sequence_diagrams.md
│   │   ├── sequence_diagrams.metatags
│   │   └── sequence_diagrams.out
│   ├── service-declaration/
│   │   ├── service_declaration.bal
│   │   ├── service_declaration.client.out
│   │   ├── service_declaration.md
│   │   ├── service_declaration.metatags
│   │   └── service_declaration.server.out
│   ├── sftp-client-receive-file/
│   │   ├── sftp_client_receive_file.bal
│   │   ├── sftp_client_receive_file.md
│   │   ├── sftp_client_receive_file.metatags
│   │   └── sftp_client_receive_file.out
│   ├── sftp-client-send-file/
│   │   ├── sftp_client_send_file.bal
│   │   ├── sftp_client_send_file.md
│   │   ├── sftp_client_send_file.metatags
│   │   └── sftp_client_send_file.out
│   ├── sftp-service-receive-file/
│   │   ├── sftp_service_receive_file.bal
│   │   ├── sftp_service_receive_file.md
│   │   ├── sftp_service_receive_file.metatags
│   │   └── sftp_service_receive_file.out
│   ├── sftp-service-send-file/
│   │   ├── sftp_service_send_file.bal
│   │   ├── sftp_service_send_file.md
│   │   ├── sftp_service_send_file.metatags
│   │   └── sftp_service_send_file.out
│   ├── single-use-of-typed-binding/
│   │   ├── single_use_of_typed_binding.bal
│   │   ├── single_use_of_typed_binding.md
│   │   ├── single_use_of_typed_binding.metatags
│   │   └── single_use_of_typed_binding.out
│   ├── single-use-with-on-fail-clause/
│   │   ├── single_use_with_on_fail_clause.bal
│   │   ├── single_use_with_on_fail_clause.md
│   │   ├── single_use_with_on_fail_clause.metatags
│   │   └── single_use_with_on_fail_clause.out
│   ├── singleton-types/
│   │   ├── singleton_types.bal
│   │   ├── singleton_types.md
│   │   ├── singleton_types.metatags
│   │   └── singleton_types.out
│   ├── soap-client-security-inbound-security-config/
│   │   ├── soap_client_security_inbound_security_config.bal
│   │   ├── soap_client_security_inbound_security_config.md
│   │   ├── soap_client_security_inbound_security_config.metatags
│   │   └── soap_client_security_inbound_security_config.out
│   ├── soap-client-security-outbound-security-config/
│   │   ├── soap_client_security_outbound_security_config.bal
│   │   ├── soap_client_security_outbound_security_config.md
│   │   ├── soap_client_security_outbound_security_config.metatags
│   │   └── soap_client_security_outbound_security_config.out
│   ├── soap-client-security-ssl-tsl/
│   │   ├── soap_client_security_ssl_tls.bal
│   │   ├── soap_client_security_ssl_tls.md
│   │   ├── soap_client_security_ssl_tls.metatags
│   │   └── soap_client_security_ssl_tls.out
│   ├── soap-client-send-receive/
│   │   ├── soap_client_send_receive.bal
│   │   ├── soap_client_send_receive.md
│   │   ├── soap_client_send_receive.metatags
│   │   └── soap_client_send_receive.out
│   ├── sort-iterable-objects/
│   │   ├── sort_iterable_objects.bal
│   │   ├── sort_iterable_objects.md
│   │   ├── sort_iterable_objects.metatags
│   │   └── sort_iterable_objects.out
│   ├── start-service-from-service-class-definition/
│   │   ├── start_service_from_service_class_definition.bal
│   │   ├── start_service_from_service_class_definition.client.out
│   │   ├── start_service_from_service_class_definition.md
│   │   ├── start_service_from_service_class_definition.metatags
│   │   └── start_service_from_service_class_definition.server.out
│   ├── stop-handler/
│   │   ├── stop_handler.bal
│   │   ├── stop_handler.client.out
│   │   ├── stop_handler.md
│   │   ├── stop_handler.metatags
│   │   └── stop_handler.server.out
│   ├── strands/
│   │   ├── strands.bal
│   │   ├── strands.md
│   │   ├── strands.metatags
│   │   └── strands.out
│   ├── stream-type/
│   │   ├── stream_type.bal
│   │   ├── stream_type.md
│   │   ├── stream_type.metatags
│   │   └── stream_type.out
│   ├── string-templates/
│   │   ├── string_templates.bal
│   │   ├── string_templates.md
│   │   ├── string_templates.metatags
│   │   └── string_templates.out
│   ├── strings/
│   │   ├── strings.bal
│   │   ├── strings.md
│   │   ├── strings.metatags
│   │   └── strings.out
│   ├── structural-typing/
│   │   ├── structural_typing.bal
│   │   ├── structural_typing.md
│   │   ├── structural_typing.metatags
│   │   └── structural_typing.out
│   ├── structured-keys/
│   │   ├── structured_keys.bal
│   │   ├── structured_keys.md
│   │   ├── structured_keys.metatags
│   │   └── structured_keys.out
│   ├── synchronize-message-passing/
│   │   ├── synchronize_message_passing.bal
│   │   ├── synchronize_message_passing.md
│   │   ├── synchronize_message_passing.metatags
│   │   └── synchronize_message_passing.out
│   ├── table/
│   │   ├── table.bal
│   │   ├── table.md
│   │   ├── table.metatags
│   │   └── table.out
│   ├── table-types/
│   │   ├── table_types.bal
│   │   ├── table_types.md
│   │   ├── table_types.metatags
│   │   └── table_types.out
│   ├── task-frequency-job-execution/
│   │   ├── task_frequency_job_execution.bal
│   │   ├── task_frequency_job_execution.md
│   │   ├── task_frequency_job_execution.metatags
│   │   └── task_frequency_job_execution.out
│   ├── task-one-time-job-execution/
│   │   ├── task_one_time_job_execution.bal
│   │   ├── task_one_time_job_execution.md
│   │   ├── task_one_time_job_execution.metatags
│   │   └── task_one_time_job_execution.out
│   ├── tcp-client/
│   │   ├── tcp_client.bal
│   │   ├── tcp_client.md
│   │   ├── tcp_client.metatags
│   │   └── tcp_client.out
│   ├── tcp-client-ssl-tls/
│   │   ├── tcp_client_ssl_tls.bal
│   │   ├── tcp_client_ssl_tls.md
│   │   ├── tcp_client_ssl_tls.metatags
│   │   └── tcp_client_ssl_tls.out
│   ├── tcp-listener/
│   │   ├── tcp_listener.bal
│   │   ├── tcp_listener.md
│   │   ├── tcp_listener.metatags
│   │   └── tcp_listener.out
│   ├── tcp-service-ssl-tls/
│   │   ├── tcp_service_ssl_tls.bal
│   │   ├── tcp_service_ssl_tls.md
│   │   ├── tcp_service_ssl_tls.metatags
│   │   └── tcp_service_ssl_tls.out
│   ├── temp-files-directories/
│   │   ├── temp_files_directories.bal
│   │   ├── temp_files_directories.md
│   │   ├── temp_files_directories.metatags
│   │   └── temp_files_directories.out
│   ├── testerina-assertions/
│   │   ├── testerina_assertions.bal
│   │   ├── testerina_assertions.md
│   │   ├── testerina_assertions.metatags
│   │   └── testerina_assertions.out
│   ├── testerina-before-and-after-each/
│   │   ├── testerina_before_and_after_each.bal
│   │   ├── testerina_before_and_after_each.md
│   │   ├── testerina_before_and_after_each.metatags
│   │   └── testerina_before_and_after_each.out
│   ├── testerina-before-and-after-groups/
│   │   ├── testerina_before_and_after_groups.bal
│   │   ├── testerina_before_and_after_groups.md
│   │   ├── testerina_before_and_after_groups.metatags
│   │   └── testerina_before_and_after_groups.out
│   ├── testerina-before-and-after-suite/
│   │   ├── testerina_before_and_after_suite.bal
│   │   ├── testerina_before_and_after_suite.md
│   │   ├── testerina_before_and_after_suite.metatags
│   │   └── testerina_before_and_after_suite.out
│   ├── testerina-before-and-after-test/
│   │   ├── testerina_before_and_after_test.bal
│   │   ├── testerina_before_and_after_test.md
│   │   ├── testerina_before_and_after_test.metatags
│   │   └── testerina_before_and_after_test.out
│   ├── testerina-data-driven-tests/
│   │   ├── testerina_data_driven_tests.bal
│   │   ├── testerina_data_driven_tests.md
│   │   ├── testerina_data_driven_tests.metadata
│   │   └── testerina_data_driven_tests.out
│   ├── testerina-group-tests/
│   │   ├── testerina_group_disable_groups.out
│   │   ├── testerina_group_tests.bal
│   │   ├── testerina_group_tests.md
│   │   ├── testerina_group_tests.metadata
│   │   ├── testerina_group_tests_groups_g1.out
│   │   └── testerina_group_tests_groups_g1_g2.out
│   ├── testerina-guarantee-test-execution-order/
│   │   ├── testerina_guarantee_test_execution_order.bal
│   │   ├── testerina_guarantee_test_execution_order.md
│   │   ├── testerina_guarantee_test_execution_order.metadata
│   │   └── testerina_guarantee_test_execution_order.out
│   ├── testerina-mocking-functions/
│   │   ├── testerina_mocking_functions.md
│   │   ├── testerina_mocking_functions.metatags
│   │   ├── testerina_mocking_functions_main.bal
│   │   ├── testerina_mocking_functions_test.bal
│   │   └── testerina_mocking_functions_test.out
│   ├── testerina-mocking-objects/
│   │   ├── testerina_mocking_objects.md
│   │   ├── testerina_mocking_objects.metatags
│   │   ├── testerina_mocking_objects_main.bal
│   │   ├── testerina_mocking_objects_test.bal
│   │   └── testerina_mocking_objects_test.out
│   ├── time-formatting-and-parsing/
│   │   ├── tests/
│   │   │   └── time_formatting_and_parsing_test.bal
│   │   ├── time_formatting_and_parsing.bal
│   │   ├── time_formatting_and_parsing.md
│   │   ├── time_formatting_and_parsing.metatags
│   │   └── time_formatting_and_parsing.out
│   ├── time-utc/
│   │   ├── tests/
│   │   │   └── time_utc_test.bal
│   │   ├── time_utc.bal
│   │   ├── time_utc.md
│   │   ├── time_utc.metatags
│   │   └── time_utc.out
│   ├── time-utc-and-civil/
│   │   ├── tests/
│   │   │   └── time_utc_and_civil_test.bal
│   │   ├── time_utc_and_civil.bal
│   │   ├── time_utc_and_civil.md
│   │   ├── time_utc_and_civil.metatags
│   │   └── time_utc_and_civil.out
│   ├── time-zone/
│   │   ├── time_zone.bal
│   │   ├── time_zone.md
│   │   ├── time_zone.metatags
│   │   └── time_zone.out
│   ├── tracing/
│   │   ├── tests/
│   │   │   └── tracing_test.bal
│   │   ├── tracing.bal
│   │   ├── tracing.client.out
│   │   ├── tracing.md
│   │   ├── tracing.metatags
│   │   └── tracing.server.out
│   ├── transaction-statement/
│   │   ├── transaction_statement.bal
│   │   ├── transaction_statement.md
│   │   ├── transaction_statement.metatags
│   │   └── transaction_statement.out
│   ├── transactional-named-workers/
│   │   ├── transactional_named_workers.bal
│   │   ├── transactional_named_workers.md
│   │   ├── transactional_named_workers.metatags
│   │   └── transactional_named_workers.out
│   ├── transactional-qualifier/
│   │   ├── transactional_qualifier.bal
│   │   ├── transactional_qualifier.md
│   │   ├── transactional_qualifier.metatags
│   │   └── transactional_qualifier.out
│   ├── transform-csv-records-to-custom-types/
│   │   ├── transform_csv_records_to_custom_types.bal
│   │   ├── transform_csv_records_to_custom_types.md
│   │   ├── transform_csv_records_to_custom_types.metatags
│   │   └── transform_csv_records_to_custom_types.out
│   ├── trap-expression/
│   │   ├── trap_expression.bal
│   │   ├── trap_expression.md
│   │   ├── trap_expression.metatags
│   │   └── trap_expression.out
│   ├── tuples/
│   │   ├── tuples.bal
│   │   ├── tuples.md
│   │   ├── tuples.metatags
│   │   └── tuples.out
│   ├── type-definitions/
│   │   ├── type_definitions.bal
│   │   ├── type_definitions.md
│   │   ├── type_definitions.metatags
│   │   └── type_definitions.out
│   ├── type-inclusion-for-records/
│   │   ├── type_inclusion_for_records.bal
│   │   ├── type_inclusion_for_records.md
│   │   ├── type_inclusion_for_records.metatags
│   │   └── type_inclusion_for_records.out
│   ├── type-inference/
│   │   ├── type_inference.bal
│   │   ├── type_inference.md
│   │   ├── type_inference.metatags
│   │   └── type_inference.out
│   ├── typed-binding-pattern/
│   │   ├── typed_binding_pattern.bal
│   │   ├── typed_binding_pattern.md
│   │   ├── typed_binding_pattern.metatags
│   │   └── typed_binding_pattern.out
│   ├── typedesc-type/
│   │   ├── typedesc_type.bal
│   │   ├── typedesc_type.md
│   │   ├── typedesc_type.metatags
│   │   └── typedesc_type.out
│   ├── udp-client/
│   │   ├── udp_client.bal
│   │   ├── udp_client.md
│   │   ├── udp_client.metatags
│   │   └── udp_client.out
│   ├── udp-connect-client/
│   │   ├── udp_connect_client.bal
│   │   ├── udp_connect_client.md
│   │   ├── udp_connect_client.metatags
│   │   └── udp_connect_client.out
│   ├── udp-listener/
│   │   ├── udp_listener.bal
│   │   ├── udp_listener.md
│   │   ├── udp_listener.metatags
│   │   └── udp_listener.out
│   ├── unary-operators/
│   │   ├── unary_operators.bal
│   │   ├── unary_operators.md
│   │   ├── unary_operators.metatags
│   │   └── unary_operators.out
│   ├── unions/
│   │   ├── unions.bal
│   │   ├── unions.md
│   │   ├── unions.metatags
│   │   └── unions.out
│   ├── url-encode-decode/
│   │   ├── tests/
│   │   │   └── url_encode_decode_test.bal
│   │   ├── url_encode_decode.bal
│   │   ├── url_encode_decode.md
│   │   ├── url_encode_decode.metatags
│   │   └── url_encode_decode.out
│   ├── uuid-generation/
│   │   ├── uuid_generation.bal
│   │   ├── uuid_generation.md
│   │   ├── uuid_generation.metatags
│   │   └── uuid_generation.out
│   ├── uuid-operations/
│   │   ├── uuid_operations.bal
│   │   ├── uuid_operations.md
│   │   ├── uuid_operations.metatags
│   │   └── uuid_operations.out
│   ├── variables-and-types/
│   │   ├── variables_and_types.bal
│   │   ├── variables_and_types.md
│   │   ├── variables_and_types.metatags
│   │   └── variables_and_types.out
│   ├── visibility-of-object-fields-and-methods/
│   │   ├── visibility_of_object_fields_and_methods.bal
│   │   ├── visibility_of_object_fields_and_methods.md
│   │   ├── visibility_of_object_fields_and_methods.metatags
│   │   └── visibility_of_object_fields_and_methods.out
│   ├── waiting-for-workers/
│   │   ├── waiting_for_workers.bal
│   │   ├── waiting_for_workers.md
│   │   ├── waiting_for_workers.metatags
│   │   └── waiting_for_workers.out
│   ├── websocket-basic-sample/
│   │   ├── tests/
│   │   │   └── websocket_basic_sample_test.bal
│   │   ├── websocket_basic_sample.bal
│   │   ├── websocket_basic_sample.md
│   │   ├── websocket_basic_sample.metatags
│   │   └── websocket_basic_sample.out
│   ├── websocket-binary-client/
│   │   └── websocket_binary_client.md
│   ├── websocket-client/
│   │   ├── websocket_client.bal
│   │   ├── websocket_client.md
│   │   ├── websocket_client.metatags
│   │   └── websocket_client.out
│   ├── websocket-client-basic-auth/
│   │   ├── websocket_client_basic_auth.bal
│   │   ├── websocket_client_basic_auth.md
│   │   ├── websocket_client_basic_auth.metatags
│   │   └── websocket_client_basic_auth.out
│   ├── websocket-client-bearer-token-auth/
│   │   ├── websocket_client_bearer_token_auth.bal
│   │   ├── websocket_client_bearer_token_auth.md
│   │   ├── websocket_client_bearer_token_auth.metatags
│   │   └── websocket_client_bearer_token_auth.out
│   ├── websocket-client-mutual-ssl/
│   │   ├── websocket_client_mutual_ssl.bal
│   │   ├── websocket_client_mutual_ssl.md
│   │   ├── websocket_client_mutual_ssl.metatags
│   │   └── websocket_client_mutual_ssl.out
│   ├── websocket-client-oauth2-client-cred-grant-type/
│   │   ├── websocket_client_oauth2_client_cred_grant_type.bal
│   │   ├── websocket_client_oauth2_client_cred_grant_type.md
│   │   ├── websocket_client_oauth2_client_cred_grant_type.metatags
│   │   └── websocket_client_oauth2_client_cred_grant_type.out
│   ├── websocket-client-oauth2-jwt-bearer-grant-type/
│   │   ├── websocket_client_oauth2_jwt_bearer_grant_type.bal
│   │   ├── websocket_client_oauth2_jwt_bearer_grant_type.md
│   │   ├── websocket_client_oauth2_jwt_bearer_grant_type.metatags
│   │   └── websocket_client_oauth2_jwt_bearer_grant_type.out
│   ├── websocket-client-oauth2-password-grant-type/
│   │   ├── websocket_client_oauth2_password_grant_type.bal
│   │   ├── websocket_client_oauth2_password_grant_type.md
│   │   ├── websocket_client_oauth2_password_grant_type.metatags
│   │   └── websocket_client_oauth2_password_grant_type.out
│   ├── websocket-client-oauth2-refresh-token-grant-type/
│   │   ├── websocket_client_oauth2_refresh_token_grant_type.bal
│   │   ├── websocket_client_oauth2_refresh_token_grant_type.md
│   │   ├── websocket_client_oauth2_refresh_token_grant_type.metatags
│   │   └── websocket_client_oauth2_refresh_token_grant_type.out
│   ├── websocket-client-payload-constraint-validation/
│   │   ├── websocket_client_payload_constraint_validation.bal
│   │   ├── websocket_client_payload_constraint_validation.md
│   │   ├── websocket_client_payload_constraint_validation.metatags
│   │   └── websocket_client_payload_constraint_validation.out
│   ├── websocket-client-self-signed-jwt-auth/
│   │   ├── websocket_client_self_signed_jwt_auth.bal
│   │   ├── websocket_client_self_signed_jwt_auth.md
│   │   ├── websocket_client_self_signed_jwt_auth.metatags
│   │   └── websocket_client_self_signed_jwt_auth.out
│   ├── websocket-client-ssl-tls/
│   │   ├── websocket_client_ssl_tls.bal
│   │   ├── websocket_client_ssl_tls.md
│   │   ├── websocket_client_ssl_tls.metatags
│   │   └── websocket_client_ssl_tls.out
│   ├── websocket-query-parameter/
│   │   ├── websocket_query_parameter.bal
│   │   ├── websocket_query_parameter.md
│   │   ├── websocket_query_parameter.metatags
│   │   └── websocket_query_parameter.server.out
│   ├── websocket-retry-client/
│   │   ├── websocket_retry_client.bal
│   │   ├── websocket_retry_client.md
│   │   ├── websocket_retry_client.metatags
│   │   └── websocket_retry_client.out
│   ├── websocket-service-basic-auth-file-user-store/
│   │   ├── websocket_service_basic_auth_file_user_store.bal
│   │   ├── websocket_service_basic_auth_file_user_store.md
│   │   ├── websocket_service_basic_auth_file_user_store.metatags
│   │   └── websocket_service_basic_auth_file_user_store.server.out
│   ├── websocket-service-basic-auth-ldap-user-store/
│   │   ├── websocket_service_basic_auth_ldap_user_store.bal
│   │   ├── websocket_service_basic_auth_ldap_user_store.md
│   │   ├── websocket_service_basic_auth_ldap_user_store.metatags
│   │   └── websocket_service_basic_auth_ldap_user_store.server.out
│   ├── websocket-service-error-handling/
│   │   ├── websocket_service_error_handling.bal
│   │   ├── websocket_service_error_handling.md
│   │   ├── websocket_service_error_handling.metatags
│   │   └── websocket_service_error_handling.out
│   ├── websocket-service-jwt-auth/
│   │   ├── websocket_service_jwt_auth.bal
│   │   ├── websocket_service_jwt_auth.md
│   │   ├── websocket_service_jwt_auth.metatags
│   │   └── websocket_service_jwt_auth.server.out
│   ├── websocket-service-mutual-ssl/
│   │   ├── websocket_service_mutual_ssl.bal
│   │   ├── websocket_service_mutual_ssl.md
│   │   ├── websocket_service_mutual_ssl.metatags
│   │   └── websocket_service_mutual_ssl.server.out
│   ├── websocket-service-oauth2/
│   │   ├── websocket_service_oauth2.bal
│   │   ├── websocket_service_oauth2.md
│   │   ├── websocket_service_oauth2.metatags
│   │   └── websocket_service_oauth2.server.out
│   ├── websocket-service-payload-constraint-validation/
│   │   ├── websocket_service_payload_constraint_validation.bal
│   │   ├── websocket_service_payload_constraint_validation.md
│   │   ├── websocket_service_payload_constraint_validation.metatags
│   │   └── websocket_service_payload_constraint_validation.out
│   ├── websocket-service-ssl-tls/
│   │   ├── websocket_service_ssl_tls.bal
│   │   ├── websocket_service_ssl_tls.md
│   │   ├── websocket_service_ssl_tls.metatags
│   │   └── websocket_service_ssl_tls.server.out
│   ├── websocket-text-client/
│   │   └── websocket_text_client.md
│   ├── websocket-timeout-client/
│   │   ├── websocket_timeout_client.bal
│   │   ├── websocket_timeout_client.md
│   │   ├── websocket_timeout_client.metatags
│   │   └── websocket_timeout_client.out
│   ├── websub-webhook-sample/
│   │   ├── websub_webhook_sample.bal
│   │   ├── websub_webhook_sample.md
│   │   ├── websub_webhook_sample.metatags
│   │   └── websub_webhook_sample.out
│   ├── while-statement/
│   │   ├── while_statement.bal
│   │   ├── while_statement.md
│   │   ├── while_statement.metatags
│   │   └── while_statement.out
│   ├── wildcard-binding-pattern/
│   │   ├── wildcard_binding_pattern.bal
│   │   ├── wildcard_binding_pattern.md
│   │   ├── wildcard_binding_pattern.metatags
│   │   └── wildcard_binding_pattern.out
│   ├── xml-access/
│   │   ├── xml_access.bal
│   │   ├── xml_access.md
│   │   ├── xml_access.metatags
│   │   └── xml_access.out
│   ├── xml-data-model/
│   │   ├── xml_data_model.bal
│   │   ├── xml_data_model.md
│   │   ├── xml_data_model.metatags
│   │   └── xml_data_model.out
│   ├── xml-from-json-conversion/
│   │   ├── xml_from_json_conversion.bal
│   │   ├── xml_from_json_conversion.md
│   │   ├── xml_from_json_conversion.metatags
│   │   └── xml_from_json_conversion.out
│   ├── xml-from-record-conversion/
│   │   ├── xml_from_record_conversion.bal
│   │   ├── xml_from_record_conversion.md
│   │   ├── xml_from_record_conversion.metatags
│   │   └── xml_from_record_conversion.out
│   ├── xml-iteration/
│   │   ├── xml_iteration.bal
│   │   ├── xml_iteration.md
│   │   ├── xml_iteration.metatags
│   │   └── xml_iteration.out
│   ├── xml-mutation/
│   │   ├── xml_mutation.bal
│   │   ├── xml_mutation.md
│   │   ├── xml_mutation.metatags
│   │   └── xml_mutation.out
│   ├── xml-namespaces/
│   │   ├── xml_namespaces.bal
│   │   ├── xml_namespaces.md
│   │   ├── xml_namespaces.metatags
│   │   └── xml_namespaces.out
│   ├── xml-navigation/
│   │   ├── xml_navigation.bal
│   │   ├── xml_navigation.md
│   │   ├── xml_navigation.metatags
│   │   └── xml_navigation.out
│   ├── xml-operations/
│   │   ├── xml_operations.bal
│   │   ├── xml_operations.md
│   │   ├── xml_operations.metatags
│   │   └── xml_operations.out
│   ├── xml-subtyping/
│   │   ├── xml_subtyping.bal
│   │   ├── xml_subtyping.md
│   │   ├── xml_subtyping.metatags
│   │   └── xml_subtyping.out
│   ├── xml-templates/
│   │   ├── xml_templates.bal
│   │   ├── xml_templates.md
│   │   ├── xml_templates.metatags
│   │   └── xml_templates.out
│   ├── xml-templates-and-query/
│   │   ├── xml_templates_and_query.bal
│   │   ├── xml_templates_and_query.md
│   │   ├── xml_templates_and_query.metatags
│   │   └── xml_templates_and_query.out
│   ├── xml-to-json-conversion/
│   │   ├── xml_to_json_conversion.bal
│   │   ├── xml_to_json_conversion.md
│   │   ├── xml_to_json_conversion.metatags
│   │   └── xml_to_json_conversion.out
│   ├── xml-to-record/
│   │   ├── xml_to_record.bal
│   │   ├── xml_to_record.md
│   │   ├── xml_to_record.metatags
│   │   └── xml_to_record.out
│   ├── xml-to-record-conversion/
│   │   ├── xml_to_record_conversion.bal
│   │   ├── xml_to_record_conversion.md
│   │   ├── xml_to_record_conversion.metatags
│   │   └── xml_to_record_conversion.out
│   ├── xml-to-record-with-projection/
│   │   ├── xml_to_record_with_projection.bal
│   │   ├── xml_to_record_with_projection.md
│   │   ├── xml_to_record_with_projection.metatags
│   │   └── xml_to_record_with_projection.out
│   ├── xmlns-declarations/
│   │   ├── xmlns_declarations.bal
│   │   ├── xmlns_declarations.md
│   │   ├── xmlns_declarations.metatags
│   │   └── xmlns_declarations.out
│   ├── xslt-transformation/
│   │   ├── xslt_transformation.bal
│   │   ├── xslt_transformation.md
│   │   ├── xslt_transformation.metatags
│   │   └── xslt_transformation.out
│   ├── yaml-to-anydata/
│   │   ├── yaml_to_anydata.bal
│   │   ├── yaml_to_anydata.md
│   │   ├── yaml_to_anydata.metatags
│   │   └── yaml_to_anydata.out
│   └── yaml-to-anydata-with-projection/
│       ├── yaml_to_anydata_with_projection.bal
│       ├── yaml_to_anydata_with_projection.md
│       ├── yaml_to_anydata_with_projection.metatags
│       └── yaml_to_anydata_with_projection.out
├── gradle/
│   ├── javaProject.gradle
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── installers/
│   ├── linux-deb/
│   │   ├── README.md
│   │   ├── build-ballerina-linux-deb-x64.sh
│   │   └── resources/
│   │       ├── amd/
│   │       │   └── DEBIAN/
│   │       │       ├── control
│   │       │       ├── postinst
│   │       │       └── postrm
│   │       └── arm/
│   │           └── DEBIAN/
│   │               ├── control
│   │               ├── postinst
│   │               └── postrm
│   ├── linux-rpm/
│   │   ├── build-ballerina-linux-rpm-x64.sh
│   │   ├── resources/
│   │   │   ├── ballerina-runtime.spec
│   │   │   └── ballerina-tools.spec
│   │   └── rpmbuild/
│   │       ├── BUILDROOT/
│   │       │   └── .gitkeep
│   │       ├── RPMS/
│   │       │   └── .gitkeep
│   │       ├── SOURCES/
│   │       │   └── .gitkeep
│   │       ├── SPECS/
│   │       │   └── .gitkeep
│   │       └── SRPMS/
│   │           └── .gitkeep
│   ├── mac/
│   │   ├── build-ballerina-macos-x64.sh
│   │   └── darwin/
│   │       ├── Distribution
│   │       ├── app.plist
│   │       └── scripts/
│   │           └── postinstall
│   └── windows/
│       ├── build-ballerina-windows-x64.bat
│       └── resources/
│           ├── cert/
│           │   └── ballerina-cert.pfx
│           ├── en-us.wxl
│           └── installer.wxs
├── issue_template.md
├── language-server-simulator/
│   ├── build.gradle
│   ├── gradle.properties
│   └── src/
│       └── main/
│           ├── java/
│           │   ├── module-info.java
│           │   └── org/
│           │       └── ballerinalang/
│           │           └── langserver/
│           │               └── simulator/
│           │                   ├── Editor.java
│           │                   ├── EditorOutputStream.java
│           │                   ├── EditorSimulator.java
│           │                   ├── EditorTab.java
│           │                   └── generators/
│           │                       ├── ClassGenerator.java
│           │                       ├── CodeSnippetGenerator.java
│           │                       ├── FunctionGenerator.java
│           │                       ├── Generators.java
│           │                       ├── ImportStatementGenerator.java
│           │                       ├── MatchStatementGenerator.java
│           │                       ├── ServiceGenerator.java
│           │                       ├── StatementGenerator.java
│           │                       ├── TypeDefinitionGenerator.java
│           │                       └── VarDeclarationStatementGenerator.java
│           └── resources/
│               └── META-INF/
│                   └── services/
│                       └── org.ballerinalang.langserver.simulator.generators.CodeSnippetGenerator
├── project-api-tests/
│   ├── build.gradle
│   └── src/
│       └── test/
│           ├── java/
│           │   └── org/
│           │       └── ballerina/
│           │           └── projectapi/
│           │               ├── BalToolTest.java
│           │               ├── BuildTimeTest.java
│           │               ├── CentralNegativeTest.java
│           │               ├── CentralTest.java
│           │               ├── CentralTestUtils.java
│           │               ├── DistributionCompatibilityTest.java
│           │               ├── HierarchicalPackagesTest.java
│           │               ├── MavenCustomRepoTest.java
│           │               ├── MavenCustomRepoTestUtils.java
│           │               └── TestUtils.java
│           └── resources/
│               ├── bal-tool/
│               │   ├── DistTestCommand/
│               │   │   ├── build.gradle
│               │   │   ├── gradlew
│               │   │   ├── gradlew.bat
│               │   │   ├── settings.gradle
│               │   │   └── src/
│               │   │       └── main/
│               │   │           ├── java/
│               │   │           │   └── disttest/
│               │   │           │       └── cli/
│               │   │           │           └── DistTestCommand.java
│               │   │           └── resources/
│               │   │               ├── META-INF/
│               │   │               │   └── services/
│               │   │               │       └── io.ballerina.cli.BLauncherCmd
│               │   │               └── disttest.help
│               │   ├── cmd-outputs/
│               │   │   ├── tool-execute-general-help.txt
│               │   │   ├── tool-execute-specific-help-1.0.0.txt
│               │   │   ├── tool-execute-specific-help-1.1.0.txt
│               │   │   ├── tool-execute-tool.txt
│               │   │   ├── tool-execute-unknown-cmd-non-existing.txt
│               │   │   ├── tool-execute-unknown-cmd.txt
│               │   │   ├── tool-list-with-multiple-tool-versions.txt
│               │   │   ├── tool-list-with-no-tools.txt
│               │   │   ├── tool-pull-again-with-specific-version.txt
│               │   │   ├── tool-pull-again-without-version.txt
│               │   │   ├── tool-pull-with-incompatible-dist.txt
│               │   │   ├── tool-pull-with-non-existing-version.txt
│               │   │   ├── tool-pull-with-specific-version.txt
│               │   │   ├── tool-pull-without-version.txt
│               │   │   ├── tool-remove-active-version.txt
│               │   │   ├── tool-remove-all.txt
│               │   │   ├── tool-remove-non-existing-tool.txt
│               │   │   ├── tool-remove-non-existing-version.txt
│               │   │   ├── tool-remove-specific-version.txt
│               │   │   ├── tool-remove-with-incompatible-dist.txt
│               │   │   ├── tool-search-with-tool-id.txt
│               │   │   ├── tool-update-non-existing.txt
│               │   │   ├── tool-update-with-new-patch-and-minor.txt
│               │   │   ├── tool-update-with-no-new-version.txt
│               │   │   ├── tool-use-active-version.txt
│               │   │   ├── tool-use-new-version.txt
│               │   │   ├── tool-use-non-existent-version.txt
│               │   │   ├── tool-use-old-version.txt
│               │   │   └── tool-use-with-incompatible-dist.txt
│               │   ├── v1.0.0/
│               │   │   └── disttestpackage/
│               │   │       ├── BalTool.toml
│               │   │       ├── Ballerina.toml
│               │   │       └── README.md
│               │   ├── v1.0.1/
│               │   │   └── disttestpackage/
│               │   │       ├── BalTool.toml
│               │   │       ├── Ballerina.toml
│               │   │       └── Package.md
│               │   ├── v1.0.4/
│               │   │   └── disttestpackage/
│               │   │       ├── BalTool.toml
│               │   │       ├── Ballerina.toml
│               │   │       └── README.md
│               │   └── v1.1.0/
│               │       └── disttestpackage/
│               │           ├── BalTool.toml
│               │           ├── Ballerina.toml
│               │           └── README.md
│               ├── build-time/
│               │   ├── Project1/
│               │   │   ├── Ballerina.toml
│               │   │   └── main.bal
│               │   ├── Project2/
│               │   │   ├── Ballerina.toml
│               │   │   └── main.bal
│               │   └── Project3/
│               │       ├── Ballerina.toml
│               │       ├── main.bal
│               │       └── tests/
│               │           └── test.bal
│               ├── central/
│               │   ├── projectA/
│               │   │   ├── Ballerina.toml
│               │   │   ├── Package.md
│               │   │   └── main.bal
│               │   ├── projectB/
│               │   │   ├── Ballerina.toml
│               │   │   ├── Package.md
│               │   │   └── main.bal
│               │   ├── projectC/
│               │   │   ├── Ballerina.toml
│               │   │   ├── Package.md
│               │   │   └── main.bal
│               │   ├── projectD/
│               │   │   ├── Ballerina.toml
│               │   │   ├── Package.md
│               │   │   └── main.bal
│               │   ├── projectE/
│               │   │   ├── Ballerina.toml
│               │   │   ├── Package.md
│               │   │   └── main.bal
│               │   ├── projectF/
│               │   │   ├── Ballerina.toml
│               │   │   ├── Package.md
│               │   │   └── main.bal
│               │   ├── projectG/
│               │   │   ├── Ballerina.toml
│               │   │   ├── Package.md
│               │   │   └── main.bal
│               │   └── projectSnapshot/
│               │       ├── Ballerina.toml
│               │       ├── Package.md
│               │       └── main.bal
│               ├── distribution-tests/
│               │   ├── disttestmultiples/
│               │   │   ├── Ballerina.toml
│               │   │   ├── Module.md
│               │   │   ├── Package.md
│               │   │   ├── bctestorg-disttestmultiples-any-1.1.0.bala
│               │   │   └── disttestmultiples.bal
│               │   ├── disttestpack1/
│               │   │   ├── Ballerina.toml
│               │   │   ├── Module.md
│               │   │   ├── Package.md
│               │   │   └── disttestpack1.bal
│               │   ├── disttestpack2/
│               │   │   ├── Ballerina.toml
│               │   │   └── main.bal
│               │   ├── disttestpack3/
│               │   │   ├── Ballerina.toml
│               │   │   └── main.bal
│               │   ├── disttestpack4/
│               │   │   ├── Ballerina.toml
│               │   │   └── main.bal
│               │   ├── disttestpack5/
│               │   │   ├── Ballerina.toml
│               │   │   └── main.bal
│               │   ├── disttestpackbeta6/
│               │   │   └── bctestorg-disttestpackbeta6-any-1.1.0.bala
│               │   └── forwardpack1/
│               │       └── bctestorg-forwardpack1-any-1.1.0.bala
│               ├── hierarchical-packages/
│               │   ├── PackageH.test/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Module.md
│               │   │   ├── Package.md
│               │   │   ├── lib.bal
│               │   │   └── modules/
│               │   │       └── mod.api/
│               │   │           ├── Module.md
│               │   │           ├── Package.md
│               │   │           └── mod.api.bal
│               │   ├── PackageH.test.mod/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Module.md
│               │   │   ├── Package.md
│               │   │   ├── lib.bal
│               │   │   └── modules/
│               │   │       ├── api/
│               │   │       │   ├── Module.md
│               │   │       │   ├── Package.md
│               │   │       │   └── api.bal
│               │   │       └── api.doc/
│               │   │           ├── Module.md
│               │   │           ├── Package.md
│               │   │           └── api.doc.bal
│               │   ├── PackageI/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Dependencies-template.toml
│               │   │   └── main.bal
│               │   ├── PackageJ.test/
│               │   │   ├── Ballerina.toml
│               │   │   ├── Module.md
│               │   │   ├── Package.md
│               │   │   └── lib.bal
│               │   ├── PackageK/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Dependencies-template.toml
│               │   │   └── main.bal
│               │   ├── PackageL.test/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Dependencies-template.toml
│               │   │   ├── Module.md
│               │   │   ├── Package.md
│               │   │   ├── lib.bal
│               │   │   └── modules/
│               │   │       ├── Module.md
│               │   │       ├── Package.md
│               │   │       └── mod.api/
│               │   │           ├── Module.md
│               │   │           ├── Package.md
│               │   │           └── mod.api.bal
│               │   ├── PackageM/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Dependencies-template.toml
│               │   │   └── main.bal
│               │   ├── PackageN/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Dependencies-template.toml
│               │   │   └── main.bal
│               │   ├── PackageO.test/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Module.md
│               │   │   ├── Package.md
│               │   │   └── lib.bal
│               │   ├── PackageP/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   └── main.bal
│               │   ├── PackageQ.test/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Dependencies-template.toml
│               │   │   ├── Module.md
│               │   │   ├── Package.md
│               │   │   ├── lib.bal
│               │   │   └── modules/
│               │   │       ├── Module.md
│               │   │       ├── Package.md
│               │   │       └── mod.api/
│               │   │           ├── Module.md
│               │   │           ├── Package.md
│               │   │           └── mod.api.bal
│               │   ├── PackageR/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   └── main.bal
│               │   ├── PackageR.test/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Dependencies-template.toml
│               │   │   ├── Module.md
│               │   │   ├── Package.md
│               │   │   └── lib.bal
│               │   ├── PackageS/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Dependencies-template.toml
│               │   │   └── main.bal
│               │   ├── PackageT.test/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Module.md
│               │   │   ├── Package.md
│               │   │   └── lib.bal
│               │   ├── PackageU/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Dependencies-template.toml
│               │   │   └── main.bal
│               │   └── Transitive.PackageH.test/
│               │       ├── .gitignore
│               │       ├── Ballerina.toml
│               │       ├── Module.md
│               │       ├── Package.md
│               │       └── lib.bal
│               ├── maven-repos/
│               │   ├── myproject1/
│               │   │   ├── .devcontainer.json
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Package.md
│               │   │   └── main.bal
│               │   ├── pact/
│               │   │   ├── .devcontainer.json
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Package.md
│               │   │   └── main.bal
│               │   ├── pkg1/
│               │   │   ├── .devcontainer.json
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Package.md
│               │   │   └── main.bal
│               │   ├── pkg2/
│               │   │   ├── .devcontainer.json
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Package.md
│               │   │   └── main.bal
│               │   ├── pkg3/
│               │   │   ├── .devcontainer.json
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Package.md
│               │   │   └── main.bal
│               │   └── test-resolution/
│               │       ├── .devcontainer.json
│               │       ├── .gitignore
│               │       ├── Ballerina.toml
│               │       └── main.bal
│               └── testng.xml
├── pull_request_template.md
├── release-notes.md
├── resources/
│   └── tools/
│       ├── COPYRIGHT.txt
│       ├── INSTALL.txt
│       ├── LICENSE.txt
│       ├── PATENTS.txt
│       ├── README.txt
│       ├── distributions/
│       │   ├── ballerina-version
│       │   └── installer-version
│       └── scripts/
│           ├── install
│           └── install.bat
├── settings.gradle
└── stdlib-integration-tests/
    ├── auth/
    │   └── tests/
    │       ├── Config.toml
    │       ├── auth_test.bal
    │       └── resources/
    │           └── keystore/
    │               ├── ballerinaKeystore.p12
    │               └── ballerinaTruststore.p12
    ├── crypto/
    │   └── tests/
    │       ├── crypto_test.bal
    │       └── resources/
    │           └── keystore/
    │               ├── ballerinaKeystore.p12
    │               └── ballerinaTruststore.p12
    ├── email/
    │   └── tests/
    │       └── email_test.bal
    ├── ftp/
    │   └── tests/
    │       └── ftp_test.bal
    ├── http/
    │   └── tests/
    │       ├── http_1_1_passthrough_test.bal
    │       ├── http_2_0_server_push_test.bal
    │       └── rest_introspection_test.bal
    ├── index.json
    ├── jwt/
    │   └── tests/
    │       ├── jwt_test.bal
    │       └── resources/
    │           └── keystore/
    │               ├── ballerinaKeystore.p12
    │               ├── ballerinaTruststore.p12
    │               └── expiredTruststore.p12
    ├── library_package_test/
    │   ├── Ballerina.toml
    │   └── main.bal
    ├── mime/
    │   └── tests/
    │       └── mime_test.bal
    ├── oauth2/
    │   └── tests/
    │       ├── oauth2_test.bal
    │       └── resources/
    │           └── keystore/
    │               ├── ballerinaKeystore.p12
    │               └── ballerinaTruststore.p12
    ├── task/
    │   └── tests/
    │       └── http_service.bal
    ├── tcp/
    │   └── tests/
    │       ├── mock_servers.bal
    │       ├── resources/
    │       │   ├── private.key
    │       │   └── public.crt
    │       └── tcp_tests.bal
    ├── transaction/
    │   └── tests/
    │       └── xa_transactions_test.bal
    ├── udp/
    │   └── tests/
    │       ├── mock_servers.bal
    │       └── udp_tests.bal
    ├── url/
    │   └── tests/
    │       └── url_test.bal
    ├── websocket/
    │   └── tests/
    │       └── web_socket_test.bal
    ├── websub/
    │   └── tests/
    │       └── web_sub_test.bal
    ├── websub-advance/
    │   └── tests/
    │       ├── constants.bal
    │       ├── resources/
    │       │   └── security/
    │       │       ├── ballerinaKeystore.p12
    │       │       └── ballerinaTruststore.p12
    │       ├── test_subscribers_at_basic_auth_secured_hub.bal
    │       ├── test_subscribers_at_persistence_enabled_hub.bal
    │       └── utils.bal
    └── websub-generic/
        └── tests/
            ├── 01_websub_publisher.bal
            ├── 02_redirection_publishers.bal
            ├── constants.bal
            ├── resources/
            │   └── security/
            │       ├── ballerinaKeystore.p12
            │       └── ballerinaTruststore.p12
            ├── test_content_negotiation.bal
            ├── test_custom_subscribers.bal
            ├── test_different_content_type_subscribers.bal
            ├── test_multiple_subscribers.bal
            ├── test_redirected_subscribers.bal
            ├── test_subscriber.bal
            ├── test_subscriber_startup.bal
            ├── test_unsubscription_client.bal
            └── utils.bal

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

================================================
FILE: .gitattributes
================================================
# Ensure all Java files use LF.
*.java eol=lf


================================================
FILE: .github/CODEOWNERS
================================================
# This is a comment.
# Each line is a file pattern followed by one or more owners.

# See: https://help.github.com/articles/about-codeowners/

*       @keizer619

# Components
/ballerina-test-automation/ @keizer619
/ballerina-test/ @keizer619
/build-time-tests/ @azinneera
/cache-generator/ @warunalakshitha
/config/ @keizer619
/devtools-integration-tests/ @azinneera
/dist-repo-builder/ @keizer619
/examples/ @MaryamZi @NipunaRanasinghe @gimantha
/gradle/ @keizer619 
/installers/ @keizer619
/language-server-simulator/ @kavinduZoysa
/project-api-tests/ @azinneera
/resources/ @keizer619
/stdlib-integration-tests/ @NipunaRanasinghe


================================================
FILE: .github/ISSUE_TEMPLATE/bug.yml
================================================
name: "🐞 Report a Bug"
description: Create an issue if something does not work as expected.
labels: ["Type/Bug"]
body:
  - type: textarea
    id: background
    attributes:
      label: Description
      description: Please share a clear and concise description of the problem.
      placeholder: Description
  - type: textarea
    id: steps
    attributes:
      label: Steps to Reproduce
      description: List the steps you followed when you encountered the issue. Provide sample source code to reproduce the issue where applicable.
    validations:
      required: true
  - type: input
    id: version
    attributes:
      label: Version
      description: Enter product/component version.
    validations:
      required: true
  - type: textarea
    id: environment
    attributes:
      label: Environment Details (with versions)
      description: Mention the environment details (OS, Client, etc.) that the product is running on.
    validations:
      required: false


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
- name: '📚 Documentation Issue'
  about: Request a new article, missing topic, or report an issue if a topic is incorrect in the current documentation.
  url: https://github.com/ballerina-platform/ballerina-dev-website/issues/new/choose
- name: General Question
  url: https://stackoverflow.com/questions/tagged/ballerina
  about: "If you have a question then please ask on Stack Overflow using the #ballerina tag."
- name: Chat on Ballerina Discord Channel
  url: https://discord.gg/ballerinalang
  about: "Chat about anything else with the community."


================================================
FILE: .github/ISSUE_TEMPLATE/improvement.yml
================================================
name: "🚀 Improvement Request"
description: Suggest an improvement to the product.
labels: ["Type/Improvement"]
body:
  - type: textarea
    id: limitation
    attributes:
      label: Current Limitation
      description: Describe the the current limitation.
    validations:
      required: true
  - type: textarea
    id: suggestion
    attributes:
      label: Suggested Improvement
      description: Describe the the improvement you suggest.
    validations:
      required: true
  - type: input
    id: version
    attributes:
      label: Version
      description: Enter component version.
    validations:
      required: false


================================================
FILE: .github/ISSUE_TEMPLATE/new-feature.yml
================================================
name: "💡 New Feature Request"
description: Suggest new functionality and features for the product.
labels: ["Type/NewFeature"]
body:
  - type: textarea
    id: problem
    attributes:
      label: Problem
      description: What is the problem this feature will solve?
    validations:
      required: true
  - type: textarea
    id: solution
    attributes:
      label: Proposed Solution
      description: Describe the solution you'd like to have.
    validations:
      required: true
  - type: textarea
    id: alternatives
    attributes:
      label: Alternatives
      description: Describe any alternatives have you considered
    validations:
      required: false
  - type: input
    id: version
    attributes:
      label: Version
      description: Enter product/component version.
    validations:
      required: false


================================================
FILE: .github/ISSUE_TEMPLATE/task.yml
================================================
name: "✍️ Create a Task"
description: Create a new task.
labels: ["Type/Task"]
body:
  - type: textarea
    id: description
    attributes:
      label: Description
      description: A clear description of what needs to be done.
    validations:
      required: true
  - type: input
    id: version
    attributes:
      label: Version
      description: Enter product/component version.
    validations:
      required: false


================================================
FILE: .github/workflows/add_reason_labels.yml
================================================
on:
  issues:
    types: [closed]
jobs:
  check-resolution-label:
    runs-on: ubuntu-latest
    if:
      ${{ contains(github.event.issue.labels.*.name, 'Type/Bug') && !(contains(github.event.issue.labels.*.name, 'Reason/EngineeringMistake') ||
      contains(github.event.issue.labels.*.name, 'Reason/Complex') ||
      contains(github.event.issue.labels.*.name, 'Reason/Regression') ||
      contains(github.event.issue.labels.*.name, 'Reason/Other') ||
      contains(github.event.issue.labels.*.name, 'Reason/Invalid') ||
      contains(github.event.issue.labels.*.name, 'Reason/MultipleComponentInteraction')) }}
    steps:
      - run: echo Resolution label is not set
      - run: gh issue comment $ISSUE --body "This issue is **NOT** closed with a proper **Reason/** label. Make sure to add proper reason label before closing. Please add or leave a comment with the proper reason label now.<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- **Reason/EngineeringMistake** - The issue occurred due to a mistake made in the past.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- **Reason/Regression** - The issue has introduced a regression.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- **Reason/MultipleComponentInteraction** - Issue occured due to interactions in multiple components.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- **Reason/Complex** - Issue occurred due to complex scenario.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- **Reason/Invalid** - Issue is invalid.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- **Reason/Other** - None of the above cases."
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          ISSUE: ${{ github.event.issue.html_url }}


================================================
FILE: .github/workflows/bbe-on-demand.yml
================================================
name: Run BBE On Demand

on:
  workflow_dispatch:
    inputs:
      branch:
        description: 'Branch to run BBE tests against'
        required: true
        default: 'master'
      javaVersion:
        description: 'Java version to run BBE tests on'
        required: true
        default: '25'
        type: choice
        options:
          - '21'
          - '25'

jobs:
  bbe-tests:
    name: Run BBE on Java ${{ github.event.inputs.javaVersion }}
    if: github.repository_owner == 'ballerina-platform'
    runs-on: ubuntu-latest
    concurrency:
      group: ${{ github.ref }}-manual-bbe-tests
      cancel-in-progress: true
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v4
        with:
          ref: ${{ github.event.inputs.branch }}

      - name: Set up JDK 21
        uses: actions/setup-java@v4
        with:
          distribution: 'temurin'
          java-version: '21'

      - name: Build Ballerina pack
        env:
          packageUser: ${{ github.actor }}
          packagePAT: ${{ secrets.GITHUB_TOKEN }}
          devCentralToken: ${{ secrets.BALLERINA_CENTRAL_DEV_ACCESS_TOKEN }}
          githubAccessToken: ${{ secrets.GITHUB_TOKEN }}
          ballerinaBotWorkflow: ${{ secrets.BALLERINA_BOT_WORKFLOW }}
        run: ./gradlew clean build --stacktrace --scan --console=plain --no-daemon --continue -x :ballerina:testExamples -x :project-api-tests:test

      - name: Set up JDK ${{ github.event.inputs.javaVersion }} for BBE tests
        uses: actions/setup-java@v4
        with:
          distribution: 'temurin'
          java-version: ${{ github.event.inputs.javaVersion }}

      - name: Run BBE tests
        env:
          packageUser: ${{ github.actor }}
          packagePAT: ${{ secrets.GITHUB_TOKEN }}
          devCentralToken: ${{ secrets.BALLERINA_CENTRAL_DEV_ACCESS_TOKEN }}
          githubAccessToken: ${{ secrets.GITHUB_TOKEN }}
          ballerinaBotWorkflow: ${{ secrets.BALLERINA_BOT_WORKFLOW }}
        run: |
          java -version
          ./gradlew :ballerina:testExamples --stacktrace --scan --console=plain --no-daemon --continue -x :project-api-tests:test


================================================
FILE: .github/workflows/daily-build-2201.12.x.yml
================================================
name: Daily build (2201.12.x)

on:
  workflow_dispatch:
  schedule:
    - cron:  '0 2 * * *'    # 07:30 in LK time (GMT+5:30)

jobs:
  ubuntu-build:

    runs-on: ubuntu-latest
    if: github.repository_owner == 'ballerina-platform'

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v3
        with:
          ref: 2201.12.x
      - name: Set up JDK 21
        uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: '21.0.3'
      - name: Get daily docker version
        id: version
        run: echo "::set-output name=version::$(date +'%Y-%m-%d')"
      - name: Get project version
        id: project-version
        run: |
          SHORT_VERSION=$((grep -w "version" | cut -d= -f2 | cut -d- -f1 | xargs) < gradle.properties)
          DIST_VERSION=$((grep -w "version" | cut -d= -f2 | xargs) < gradle.properties)
          LANG_VERSION=$((grep -w "ballerinaLangVersion" | cut -d= -f2 | cut -d- -f1 | xargs) < gradle.properties)
          CODE_NAME=$((grep -w 'codeName' | cut -d= -f2) < gradle.properties)
          RELEASE_VERSION=$DIST_VERSION-$CODE_NAME
          echo "::set-output name=version::$RELEASE_VERSION"
          echo "::set-output name=sversion::$SHORT_VERSION"
          echo "::set-output name=langversion::$LANG_VERSION"
      - name: Build with Gradle
        env:
          packageUser: ${{ github.actor }}
          packagePAT: ${{ secrets.GITHUB_TOKEN }}
          devCentralToken: ${{ secrets.BALLERINA_CENTRAL_DEV_ACCESS_TOKEN }}
          ballerinaBotWorkflow: $ {{ secrets.BALLERINA_BOT_WORKFLOW }}
          TEST_MODE_ACTIVE: true
        run: ./gradlew clean build --stacktrace --scan --console=plain --no-daemon --continue -x project-api-tests:test
      - name: Create linux-deb
        id: run_installers_deb
        run: |
          cd installers/linux-deb
          ./build-ballerina-linux-deb-x64.sh -v ${{ steps.project-version.outputs.version }} -p ./../../ballerina/build/distributions
          echo "Created linux-deb successfully"
      - name: Create linux-rpm
        id: run_installers_rpm
        run: |
          cd installers/linux-rpm
          ./build-ballerina-linux-rpm-x64.sh -v ${{ steps.project-version.outputs.version }} -p ./../../ballerina/build/distributions
          echo "Created linux-rpm successfully"
      - name: Generate Hashes
        run: |
          openssl dgst -sha256 -out ballerina-${{ steps.project-version.outputs.version }}-linux-x64.deb.sha256 installers/linux-deb/target/ballerina-*-linux-x64.deb
          openssl dgst -sha256 -out ballerina-${{ steps.project-version.outputs.version }}-linux-x64.rpm.sha256 installers/linux-rpm/rpmbuild/RPMS/x86_64/ballerina-*-linux-x64.rpm
          openssl dgst -sha256 -out ballerina-${{ steps.project-version.outputs.version }}.zip.sha256 ballerina/build/distributions/ballerina-${{ steps.project-version.outputs.version }}.zip
          openssl dgst -sha256 -out ballerina-${{ steps.project-version.outputs.sversion }}.zip.sha256 ballerina/build/distributions/ballerina-${{ steps.project-version.outputs.sversion }}.zip
      - name: Archive Ballerina ZIP
        uses: actions/upload-artifact@v4
        with:
          name: Ballerina ZIP
          path: ballerina/build/distributions/ballerina-*-swan-lake.zip
      - name: Archive Ballerina Short Name ZIP
        uses: actions/upload-artifact@v4
        with:
          name: Ballerina Short Name ZIP
          path: ballerina/build/distributions/ballerina-${{ steps.project-version.outputs.sversion }}.zip
      - name: Archive Linux deb
        uses: actions/upload-artifact@v4
        with:
          name: Linux Installer deb
          path: installers/linux-deb/target/ballerina-*-linux-x64.deb
      - name: Archive Linux rpm
        uses: actions/upload-artifact@v4
        with:
          name: Linux Installer rpm
          path: installers/linux-rpm/rpmbuild/RPMS/x86_64/ballerina-*-linux-x64.rpm
      - name: Archive MacOS Installer ZIP
        uses: actions/upload-artifact@v4
        with:
          name: MacOS Installer ZIP
          path: ballerina/build/distributions/ballerina-*-macos.zip
      - name: Archive MacOS-ARM Installer ZIP
        uses: actions/upload-artifact@v4
        with:
          name: MacOS-ARM Installer ZIP
          path: ballerina/build/distributions/ballerina-*-macos-arm.zip
      - name: Archive Windows Installer ZIP
        uses: actions/upload-artifact@v4
        with:
          name: Windows Installer ZIP
          path: ballerina/build/distributions/ballerina-*-windows.zip
      - name: Archive Linux deb Hashes
        uses: actions/upload-artifact@v4
        with:
          name: Linux deb Hashes
          path: ballerina-${{ steps.project-version.outputs.version }}-linux-x64.deb.sha256
      - name: Archive Linux rpm Hashes
        uses: actions/upload-artifact@v4
        with:
          name: Linux rpm Hashes
          path: ballerina-${{ steps.project-version.outputs.version }}-linux-x64.rpm.sha256
      - name: Archive Ballerina Zip Hashes
        uses: actions/upload-artifact@v4
        with:
          name: Ballerina Zip Hashes
          path: ballerina-${{ steps.project-version.outputs.version }}.zip.sha256
      - name: Archive Ballerina Short Name Hashes
        uses: actions/upload-artifact@v4
        with:
          name: Ballerina Short Name Hashes
          path: ballerina-${{ steps.project-version.outputs.sversion }}.zip.sha256
      - name: Install Ballerina DEB
        run: sudo dpkg -i installers/linux-deb/target/ballerina-*-linux-x64.deb
      - name: Update Installer Test Configs
        run: |
          DISPLAY_TEXT=${{ steps.project-version.outputs.langversion }}
          SWAN_LAKE_LATEST_VERSION="swan-lake-"+$DISPLAY_TEXT
          perl -pi -e "s/^\s*swan-lake-latest-version-display-text=.*/swan-lake-latest-version-display-text=$DISPLAY_TEXT/" ballerina-test-automation/gradle.properties
          perl -pi -e "s/^\s*swan-lake-latest-version=.*/swan-lake-latest-version=$SWAN_LAKE_LATEST_VERSION/" ballerina-test-automation/gradle.properties
      - name: Run Installer Tests
        working-directory: ./ballerina-test-automation/installer-test
        run: ./../gradlew build --stacktrace -scan --console=plain --no-daemon -DballerinaInstalled=true
        env:
          TEST_MODE_ACTIVE: true
      - name: Checkout docker repo
        uses: actions/checkout@v3
        with:
          repository: ballerina-platform/module-ballerina-docker
          path: module-ballerina-docker
      - name: Copy zip artifact
        run: cp ballerina/build/distributions/ballerina-22*.zip module-ballerina-docker/base/docker/
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v1
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1
      - name: Login to DockerHub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKER_HUB_USER }}
          password: ${{ secrets.DOCKER_HUB_TOKEN }}
      - name: Build the docker image
        id: docker_build
        uses: docker/build-push-action@v2
        with:
          context: module-ballerina-docker/base/docker/
          load: true
          push: false
          tags: ballerina/ballerina:nightly-test
          build-args: |
            BALLERINA_DIST=ballerina-${{ steps.project-version.outputs.sversion }}.zip
      - name: Run Trivy vulnerability scanner
        uses: aquasecurity/trivy-action@master
        with:
          image-ref: 'ballerina/ballerina:nightly-test'
          skip-dirs: 'ballerina/runtime/examples'
          format: 'table'
          exit-code: '1'
          timeout: "10m0s"
      - name: Build and push
        uses: docker/build-push-action@v2
        with:
          context: module-ballerina-docker/base/docker/
          push: true
          tags: ballerina/ballerina:nightly-2201.12.x
          build-args: |
            BALLERINA_DIST=ballerina-${{ steps.project-version.outputs.sversion }}.zip
      - name: Image digest
        run: echo ${{ steps.docker_build.outputs.digest }}
      - name: Copy deb artifact
        run: cp installers/linux-deb/target/ballerina-*-linux-x64.deb module-ballerina-docker/base/devcontainer/
      - name: Build the dev container docker image
        id: docker_build_devcontainer
        uses: docker/build-push-action@v2
        with:
          context: module-ballerina-docker/base/devcontainer/
          load: true
          push: false
          tags: ballerina/ballerina-devcontainer:nightly-test
          build-args: |
            BALLERINA_DIST=ballerina-${{ steps.project-version.outputs.version }}-linux-x64.deb
      - name: Run Trivy vulnerability scanner for dev container docker image
        uses: aquasecurity/trivy-action@master
        with:
          image-ref: 'ballerina/ballerina-devcontainer:nightly-test'
          skip-dirs: 'ballerina/runtime/examples'
          format: 'table'
          exit-code: '1'
          timeout: "10m0s"
      - name: Build and push dev container image
        uses: docker/build-push-action@v2
        with:
          context: module-ballerina-docker/base/devcontainer/
          push: true
          tags: ballerina/ballerina-devcontainer:nightly-2201.12.x
          build-args: |
            BALLERINA_DIST=ballerina-${{ steps.project-version.outputs.version }}-linux-x64.deb
      - name: Notify failure
        if: ${{ failure() }}
        run: |
          curl -X POST \
          'https://api.github.com/repos/ballerina-platform/ballerina-release/dispatches' \
          -H 'Accept: application/vnd.github.v3+json' \
          -H 'Authorization: Bearer ${{ secrets.BALLERINA_BOT_TOKEN }}' \
          --data "{
            \"event_type\": \"notify-build-failure\",
            \"client_payload\": {
              \"repoName\": \"ballerina-distribution\",
              \"branch\": \"2201.12.x\"
            }
          }"
    outputs:
      project-version: ${{ steps.project-version.outputs.version }}
      lang-version: ${{ steps.project-version.outputs.langversion }}

  project-api-tests:

    runs-on: ubuntu-latest
    if: false

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
        with:
          ref: 2201.12.x
      - name: Set up JDK 21
        uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: '21.0.3'
      - name: Build with Gradle
        env:
          packageUser: ${{ github.actor }}
          packagePAT: ${{ secrets.GITHUB_TOKEN }}
          devCentralToken: ${{ secrets.BALLERINA_CENTRAL_DEV_ACCESS_TOKEN }}
          prodCentralToken: ${{ secrets.BALLERINA_CENTRAL_ACCESS_TOKEN }}
          ballerinaBotWorkflow: $ {{ secrets.BALLERINA_BOT_WORKFLOW }}
          TEST_MODE_ACTIVE: true
        run: ./gradlew :project-api-tests:test --stacktrace --scan --console=plain --no-daemon --continue

  windows-build:

    runs-on: windows-latest
    if: github.repository_owner == 'ballerina-platform'

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
        with:
          ref: 2201.12.x
      - name: Set up JDK 21
        uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: '21.0.3'
      - name: Build with Gradle
        env:
          packageUser: ${{ github.actor }}
          packagePAT: ${{ secrets.GITHUB_TOKEN }}
          devCentralToken: ${{ secrets.BALLERINA_CENTRAL_DEV_ACCESS_TOKEN }}
          ballerinaBotWorkflow: $ {{ secrets.BALLERINA_BOT_WORKFLOW }}
          TEST_MODE_ACTIVE: true
        run: ./gradlew.bat clean build --stacktrace --scan --console=plain --no-daemon -x test

  ubuntu-rpm-installer-test:
    needs: ubuntu-build
    runs-on: ubuntu-latest
    container: centos:latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
        with:
          ref: 2201.12.x
      - name: Set up JDK 21
        uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: '21.0.3'
      - name: Setup Files
        run: |
          cd /etc/yum.repos.d/
          sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
          sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
      - name: Download Ballerina rpm Installer
        uses: actions/download-artifact@v4
        with:
          name: Linux Installer rpm
      - name: Install Ballerina RPM
        run: |
          rpm -ivh ballerina-*-linux-x64.rpm
      - name: Update Installer Test Configs
        run: |
          DISPLAY_TEXT=${{ needs.ubuntu-build.outputs.lang-version }}
          SWAN_LAKE_LATEST_VERSION="swan-lake-"+$DISPLAY_TEXT
          sed -i -e "s/swan-lake-latest-version-display-text=.*/swan-lake-latest-version-display-text=$DISPLAY_TEXT/" ballerina-test-automation/gradle.properties
          sed -i -e "s/swan-lake-latest-version=.*/swan-lake-latest-version=$SWAN_LAKE_LATEST_VERSION/" ballerina-test-automation/gradle.properties
      - name: Run Installer Tests
        working-directory: ./ballerina-test-automation/installer-test
        run: ./../gradlew build --stacktrace -scan --console=plain --no-daemon -DballerinaInstalled=true
        env:
          TEST_MODE_ACTIVE: true

  macos-installer-build:

    needs: ubuntu-build
    runs-on: macos-latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
        with:
          ref: 2201.12.x
      - name: Download MacOS Intaller Zip
        uses: actions/download-artifact@v4
        with:
          name: MacOS Installer ZIP
      - name: Create macos-pkg
        id: run_installers_pkg
        run: |
          cd installers/mac
          ./build-ballerina-macos-x64.sh -v ${{ needs.ubuntu-build.outputs.project-version }} -p ./../../
          echo "Created macos-pkg successfully"
      - name: Generate Hashes
        run: |
          openssl dgst -sha256 -out ballerina-${{ needs.ubuntu-build.outputs.project-version }}-macos-x64.pkg.sha256 installers/mac/target/pkg/ballerina-*-macos-x64.pkg
      - name: Archive MacOS pkg Hashes
        uses: actions/upload-artifact@v4
        with:
          name: MacOS pkg Hashes
          path: ballerina-${{ needs.ubuntu-build.outputs.project-version }}-macos-x64.pkg.sha256
      - name: Archive MacOS pkg
        uses: actions/upload-artifact@v4
        with:
          name: MacOS Installer pkg
          path: installers/mac/target/pkg/ballerina-*-macos-x64.pkg
      - name: Install Ballerina PKG
        run: sudo installer -pkg installers/mac/target/pkg/ballerina-*-macos-x64.pkg -target /
      - name: Update Installer Test Configs
        run: |
          DISPLAY_TEXT=${{ needs.ubuntu-build.outputs.lang-version }}
          SWAN_LAKE_LATEST_VERSION="swan-lake-"+$DISPLAY_TEXT
          perl -pi -e "s/^\s*swan-lake-latest-version-display-text=.*/swan-lake-latest-version-display-text=$DISPLAY_TEXT/" ballerina-test-automation/gradle.properties
          perl -pi -e "s/^\s*swan-lake-latest-version=.*/swan-lake-latest-version=$SWAN_LAKE_LATEST_VERSION/" ballerina-test-automation/gradle.properties
      - name: Run Installer Tests
        working-directory: ./ballerina-test-automation/installer-test
        run: ./../gradlew build --stacktrace -scan --console=plain --no-daemon -DballerinaInstalled=true
        env:
          TEST_MODE_ACTIVE: true

  macos-arm-installer-build:

    needs: ubuntu-build
    runs-on: macos-latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
      - name: Set up JDK 21
        uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: '21.0.3'
      - name: Download MacOS-ARM Intaller Zip
        uses: actions/download-artifact@v4
        with:
          name: MacOS-ARM Installer ZIP
      - name: Create macos-arm-pkg
        id: run_installers_arm_pkg
        run: |
          cd installers/mac
          ./build-ballerina-macos-x64.sh -v ${{ needs.ubuntu-build.outputs.project-version }} -p ./../../ -a arm
          echo "Created macos-arm-pkg successfully"
      - name: Generate Hashes
        run: |
          openssl dgst -sha256 -out ballerina-${{ needs.ubuntu-build.outputs.project-version }}-macos-arm-x64.pkg.sha256 installers/mac/target/pkg/ballerina-*-macos-arm-x64.pkg
      - name: Archive MacOS-ARM pkg Hashes
        uses: actions/upload-artifact@v4
        with:
          name: MacOS-ARM pkg Hashes
          path: ballerina-${{ needs.ubuntu-build.outputs.project-version }}-macos-arm-x64.pkg.sha256
      - name: Archive MacOS-ARM pkg
        uses: actions/upload-artifact@v4
        with:
          name: MacOS Installer ARM pkg
          path: installers/mac/target/pkg/ballerina-*-macos-arm-x64.pkg

  windows-installer-build:

    needs: ubuntu-build
    runs-on: windows-latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
        with:
          ref: 2201.12.x
      - name: Set up JDK 21
        uses: actions/setup-java@v2
        with:
          distribution: 'temurin'
          java-version: '21.0.3'
      - uses: actions/setup-dotnet@v1
        with:
          dotnet-version: '2.1.x'
      - name: Install GUID Generator
        run: dotnet tool install -g dotnet-guid --version 0.5.2
      - name: Set up Wix toolkit
        run: echo "${WIX}bin" >> $GITHUB_PATH
        shell: bash
      - name: Download Windows Intaller Zip
        uses: actions/download-artifact@v4
        with:
          name: Windows Installer ZIP
      - name: Create windows-msi
        id: run_installers_msi
        run: |
          move installers\windows .\..\..\
          cd ..\..\windows
          .\build-ballerina-windows-x64.bat --version ${{ needs.ubuntu-build.outputs.project-version }} --path .\..\ballerina-distribution\ballerina-distribution
      - name: Generate Hashes
        run: |
          openssl dgst -sha256 -out ballerina-${{ needs.ubuntu-build.outputs.project-version }}-windows-x64.msi.sha256 D:\a\windows\target\msi\ballerina-*-windows-x64.msi
      - name: Archive Windows msi Hashes
        uses: actions/upload-artifact@v4
        with:
          name: Windows msi Hashes
          path: ballerina-${{ needs.ubuntu-build.outputs.project-version }}-windows-x64.msi.sha256
      - name: Archive Windows msi
        uses: actions/upload-artifact@v4
        with:
          name: Windows Installer msi
          path: D:\a\windows\target\msi\ballerina-*-windows-x64.msi
      - name: Install Ballerina msi
        run: msiexec /i D:\a\windows\target\msi\ballerina-${{ needs.ubuntu-build.outputs.project-version }}-windows-x64.msi /quiet /qr
        shell: cmd
      - name: Update Installer Test Configs
        run: |
          set DISPLAY_TEXT=${{ needs.ubuntu-build.outputs.lang-version }}
          set SWAN_LAKE_LATEST_VERSION=swan-lake-%DISPLAY_TEXT%
          perl -pi -e "s/^\s*swan-lake-latest-version-display-text=.*/swan-lake-latest-version-display-text=%DISPLAY_TEXT%/" ballerina-test-automation/gradle.properties
          perl -pi -e "s/^\s*swan-lake-latest-version=.*/swan-lake-latest-version=%SWAN_LAKE_LATEST_VERSION%/" ballerina-test-automation/gradle.properties
        shell: cmd
      - name: Run Installer Tests
        working-directory: .\ballerina-test-automation\installer-test
        run: |
          $env:Path += ";C:\Program Files\Ballerina\bin"
          .\..\gradlew build --stacktrace -scan --console=plain --no-daemon -DballerinaInstalled=true
        env:
          TEST_MODE_ACTIVE: true

  trigger-notifications:

    needs: [ubuntu-build, macos-installer-build, windows-installer-build]
    runs-on: ubuntu-latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
        with:
          ref: 2201.12.x
      - name: Invoke Connector Ballerina Version Bump
        run: |
          ballerinaVersion=$((grep -w 'ballerinaLangVersion' | cut -d= -f2) < gradle.properties)
          echo "Triggering connectors dependency bumps..." && \
          curl -X POST \
          https://api.github.com/repos/ballerina-platform/ballerina-release/dispatches \
          -H 'Accept: application/vnd.github.v3+json' \
          -H 'Authorization: token ${{ secrets.BALLERINA_BOT_TOKEN }}' \
          --data "{
            \"event_type\": \"connector-update\",
            \"client_payload\": {
              \"ballerinaVersion\": \"$ballerinaVersion\"
            }
          }"


================================================
FILE: .github/workflows/daily-build-2201.13.x.yml
================================================
name: Daily build (2201.13.x)

on:
  workflow_dispatch:
  schedule:
    - cron:  '0 2 * * *'    # 07:30 in LK time (GMT+5:30)

jobs:
  ubuntu-build:

    runs-on: ubuntu-latest
    if: github.repository_owner == 'ballerina-platform'

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v3
        with:
          ref: 2201.13.x
      - name: Set up JDK 21
        uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: '21.0.3'
      - name: Get daily docker version
        id: version
        run: echo "::set-output name=version::$(date +'%Y-%m-%d')"
      - name: Get project version
        id: project-version
        run: |
          SHORT_VERSION=$((grep -w "version" | cut -d= -f2 | cut -d- -f1 | xargs) < gradle.properties)
          DIST_VERSION=$((grep -w "version" | cut -d= -f2 | xargs) < gradle.properties)
          LANG_VERSION=$((grep -w "ballerinaLangVersion" | cut -d= -f2 | cut -d- -f1 | xargs) < gradle.properties)
          CODE_NAME=$((grep -w 'codeName' | cut -d= -f2) < gradle.properties)
          RELEASE_VERSION=$DIST_VERSION-$CODE_NAME
          echo "::set-output name=version::$RELEASE_VERSION"
          echo "::set-output name=sversion::$SHORT_VERSION"
          echo "::set-output name=langversion::$LANG_VERSION"
      - name: Build with Gradle
        env:
          packageUser: ${{ github.actor }}
          packagePAT: ${{ secrets.GITHUB_TOKEN }}
          devCentralToken: ${{ secrets.BALLERINA_CENTRAL_DEV_ACCESS_TOKEN }}
          ballerinaBotWorkflow: $ {{ secrets.BALLERINA_BOT_WORKFLOW }}
          TEST_MODE_ACTIVE: true
        run: ./gradlew clean build --stacktrace --scan --console=plain --no-daemon --continue -x project-api-tests:test
      - name: Create linux-deb
        id: run_installers_deb
        run: |
          cd installers/linux-deb
          ./build-ballerina-linux-deb-x64.sh -v ${{ steps.project-version.outputs.version }} -p ./../../ballerina/build/distributions
          echo "Created linux-deb successfully"
      - name: Create linux-rpm
        id: run_installers_rpm
        run: |
          cd installers/linux-rpm
          ./build-ballerina-linux-rpm-x64.sh -v ${{ steps.project-version.outputs.version }} -p ./../../ballerina/build/distributions
          echo "Created linux-rpm successfully"
      - name: Generate Hashes
        run: |
          openssl dgst -sha256 -out ballerina-${{ steps.project-version.outputs.version }}-linux-x64.deb.sha256 installers/linux-deb/target/ballerina-*-linux-x64.deb
          openssl dgst -sha256 -out ballerina-${{ steps.project-version.outputs.version }}-linux-x64.rpm.sha256 installers/linux-rpm/rpmbuild/RPMS/x86_64/ballerina-*-linux-x64.rpm
          openssl dgst -sha256 -out ballerina-${{ steps.project-version.outputs.version }}.zip.sha256 ballerina/build/distributions/ballerina-${{ steps.project-version.outputs.version }}.zip
          openssl dgst -sha256 -out ballerina-${{ steps.project-version.outputs.sversion }}.zip.sha256 ballerina/build/distributions/ballerina-${{ steps.project-version.outputs.sversion }}.zip
      - name: Archive Ballerina ZIP
        uses: actions/upload-artifact@v4
        with:
          name: Ballerina ZIP
          path: ballerina/build/distributions/ballerina-*-swan-lake.zip
      - name: Archive Ballerina Short Name ZIP
        uses: actions/upload-artifact@v4
        with:
          name: Ballerina Short Name ZIP
          path: ballerina/build/distributions/ballerina-${{ steps.project-version.outputs.sversion }}.zip
      - name: Archive Linux deb
        uses: actions/upload-artifact@v4
        with:
          name: Linux Installer deb
          path: installers/linux-deb/target/ballerina-*-linux-x64.deb
      - name: Archive Linux rpm
        uses: actions/upload-artifact@v4
        with:
          name: Linux Installer rpm
          path: installers/linux-rpm/rpmbuild/RPMS/x86_64/ballerina-*-linux-x64.rpm
      - name: Archive MacOS Installer ZIP
        uses: actions/upload-artifact@v4
        with:
          name: MacOS Installer ZIP
          path: ballerina/build/distributions/ballerina-*-macos.zip
      - name: Archive MacOS-ARM Installer ZIP
        uses: actions/upload-artifact@v4
        with:
          name: MacOS-ARM Installer ZIP
          path: ballerina/build/distributions/ballerina-*-macos-arm.zip
      - name: Archive Windows Installer ZIP
        uses: actions/upload-artifact@v4
        with:
          name: Windows Installer ZIP
          path: ballerina/build/distributions/ballerina-*-windows.zip
      - name: Archive Linux deb Hashes
        uses: actions/upload-artifact@v4
        with:
          name: Linux deb Hashes
          path: ballerina-${{ steps.project-version.outputs.version }}-linux-x64.deb.sha256
      - name: Archive Linux rpm Hashes
        uses: actions/upload-artifact@v4
        with:
          name: Linux rpm Hashes
          path: ballerina-${{ steps.project-version.outputs.version }}-linux-x64.rpm.sha256
      - name: Archive Ballerina Zip Hashes
        uses: actions/upload-artifact@v4
        with:
          name: Ballerina Zip Hashes
          path: ballerina-${{ steps.project-version.outputs.version }}.zip.sha256
      - name: Archive Ballerina Short Name Hashes
        uses: actions/upload-artifact@v4
        with:
          name: Ballerina Short Name Hashes
          path: ballerina-${{ steps.project-version.outputs.sversion }}.zip.sha256
      - name: Install Ballerina DEB
        run: sudo dpkg -i installers/linux-deb/target/ballerina-*-linux-x64.deb
      - name: Update Installer Test Configs
        run: |
          DISPLAY_TEXT=${{ steps.project-version.outputs.langversion }}
          SWAN_LAKE_LATEST_VERSION="swan-lake-"+$DISPLAY_TEXT
          perl -pi -e "s/^\s*swan-lake-latest-version-display-text=.*/swan-lake-latest-version-display-text=$DISPLAY_TEXT/" ballerina-test-automation/gradle.properties
          perl -pi -e "s/^\s*swan-lake-latest-version=.*/swan-lake-latest-version=$SWAN_LAKE_LATEST_VERSION/" ballerina-test-automation/gradle.properties
      - name: Run Installer Tests
        working-directory: ./ballerina-test-automation/installer-test
        run: ./../gradlew build --stacktrace -scan --console=plain --no-daemon -DballerinaInstalled=true
        env:
          TEST_MODE_ACTIVE: true
      - name: Checkout docker repo
        uses: actions/checkout@v3
        with:
          repository: ballerina-platform/module-ballerina-docker
          path: module-ballerina-docker
      - name: Copy zip artifact
        run: cp ballerina/build/distributions/ballerina-22*.zip module-ballerina-docker/base/docker/
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v1
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1
      - name: Login to DockerHub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKER_HUB_USER }}
          password: ${{ secrets.DOCKER_HUB_TOKEN }}
      - name: Build the docker image
        id: docker_build
        uses: docker/build-push-action@v2
        with:
          context: module-ballerina-docker/base/docker/
          load: true
          push: false
          tags: ballerina/ballerina:nightly-test
          build-args: |
            BALLERINA_DIST=ballerina-${{ steps.project-version.outputs.sversion }}.zip
      - name: Run Trivy vulnerability scanner
        uses: aquasecurity/trivy-action@master
        with:
          image-ref: 'ballerina/ballerina:nightly-test'
          skip-dirs: 'ballerina/runtime/examples'
          format: 'table'
          exit-code: '1'
          timeout: "10m0s"
      - name: Build and push
        uses: docker/build-push-action@v2
        with:
          context: module-ballerina-docker/base/docker/
          push: true
          tags: ballerina/ballerina:nightly-2201.13.x
          build-args: |
            BALLERINA_DIST=ballerina-${{ steps.project-version.outputs.sversion }}.zip
      - name: Image digest
        run: echo ${{ steps.docker_build.outputs.digest }}
      - name: Copy deb artifact
        run: cp installers/linux-deb/target/ballerina-*-linux-x64.deb module-ballerina-docker/base/devcontainer/
      - name: Build the dev container docker image
        id: docker_build_devcontainer
        uses: docker/build-push-action@v2
        with:
          context: module-ballerina-docker/base/devcontainer/
          load: true
          push: false
          tags: ballerina/ballerina-devcontainer:nightly-test
          build-args: |
            BALLERINA_DIST=ballerina-${{ steps.project-version.outputs.version }}-linux-x64.deb
      - name: Run Trivy vulnerability scanner for dev container docker image
        uses: aquasecurity/trivy-action@master
        with:
          image-ref: 'ballerina/ballerina-devcontainer:nightly-test'
          skip-dirs: 'ballerina/runtime/examples'
          format: 'table'
          exit-code: '1'
          timeout: "10m0s"
      - name: Build and push dev container image
        uses: docker/build-push-action@v2
        with:
          context: module-ballerina-docker/base/devcontainer/
          push: true
          tags: ballerina/ballerina-devcontainer:nightly-2201.13.x
          build-args: |
            BALLERINA_DIST=ballerina-${{ steps.project-version.outputs.version }}-linux-x64.deb
      - name: Notify failure
        if: ${{ failure() }}
        run: |
          curl -X POST \
          'https://api.github.com/repos/ballerina-platform/ballerina-release/dispatches' \
          -H 'Accept: application/vnd.github.v3+json' \
          -H 'Authorization: Bearer ${{ secrets.BALLERINA_BOT_TOKEN }}' \
          --data "{
            \"event_type\": \"notify-build-failure\",
            \"client_payload\": {
              \"repoName\": \"ballerina-distribution\",
              \"branch\": \"2201.13.x\"
            }
          }"
    outputs:
      project-version: ${{ steps.project-version.outputs.version }}
      lang-version: ${{ steps.project-version.outputs.langversion }}

  project-api-tests:

    runs-on: ubuntu-latest
    if: false

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
        with:
          ref: 2201.13.x
      - name: Set up JDK 21
        uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: '21.0.3'
      - name: Build with Gradle
        env:
          packageUser: ${{ github.actor }}
          packagePAT: ${{ secrets.GITHUB_TOKEN }}
          devCentralToken: ${{ secrets.BALLERINA_CENTRAL_DEV_ACCESS_TOKEN }}
          prodCentralToken: ${{ secrets.BALLERINA_CENTRAL_ACCESS_TOKEN }}
          ballerinaBotWorkflow: $ {{ secrets.BALLERINA_BOT_WORKFLOW }}
          TEST_MODE_ACTIVE: true
        run: ./gradlew :project-api-tests:test --stacktrace --scan --console=plain --no-daemon --continue

  windows-build:

    runs-on: windows-latest
    if: github.repository_owner == 'ballerina-platform'

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
        with:
          ref: 2201.13.x
      - name: Set up JDK 21
        uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: '21.0.3'
      - name: Build with Gradle
        env:
          packageUser: ${{ github.actor }}
          packagePAT: ${{ secrets.GITHUB_TOKEN }}
          devCentralToken: ${{ secrets.BALLERINA_CENTRAL_DEV_ACCESS_TOKEN }}
          ballerinaBotWorkflow: $ {{ secrets.BALLERINA_BOT_WORKFLOW }}
          TEST_MODE_ACTIVE: true
        run: ./gradlew.bat clean build --stacktrace --scan --console=plain --no-daemon -x test

  ubuntu-rpm-installer-test:
    needs: ubuntu-build
    runs-on: ubuntu-latest
    container: centos:latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
        with:
          ref: 2201.13.x
      - name: Set up JDK 21
        uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: '21.0.3'
      - name: Setup Files
        run: |
          cd /etc/yum.repos.d/
          sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
          sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
      - name: Download Ballerina rpm Installer
        uses: actions/download-artifact@v4
        with:
          name: Linux Installer rpm
      - name: Install Ballerina RPM
        run: |
          rpm -ivh ballerina-*-linux-x64.rpm
      - name: Update Installer Test Configs
        run: |
          DISPLAY_TEXT=${{ needs.ubuntu-build.outputs.lang-version }}
          SWAN_LAKE_LATEST_VERSION="swan-lake-"+$DISPLAY_TEXT
          sed -i -e "s/swan-lake-latest-version-display-text=.*/swan-lake-latest-version-display-text=$DISPLAY_TEXT/" ballerina-test-automation/gradle.properties
          sed -i -e "s/swan-lake-latest-version=.*/swan-lake-latest-version=$SWAN_LAKE_LATEST_VERSION/" ballerina-test-automation/gradle.properties
      - name: Run Installer Tests
        working-directory: ./ballerina-test-automation/installer-test
        run: ./../gradlew build --stacktrace -scan --console=plain --no-daemon -DballerinaInstalled=true
        env:
          TEST_MODE_ACTIVE: true

  macos-installer-build:

    needs: ubuntu-build
    runs-on: macos-latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
        with:
          ref: 2201.13.x
      - name: Download MacOS Intaller Zip
        uses: actions/download-artifact@v4
        with:
          name: MacOS Installer ZIP
      - name: Create macos-pkg
        id: run_installers_pkg
        run: |
          cd installers/mac
          ./build-ballerina-macos-x64.sh -v ${{ needs.ubuntu-build.outputs.project-version }} -p ./../../
          echo "Created macos-pkg successfully"
      - name: Generate Hashes
        run: |
          openssl dgst -sha256 -out ballerina-${{ needs.ubuntu-build.outputs.project-version }}-macos-x64.pkg.sha256 installers/mac/target/pkg/ballerina-*-macos-x64.pkg
      - name: Archive MacOS pkg Hashes
        uses: actions/upload-artifact@v4
        with:
          name: MacOS pkg Hashes
          path: ballerina-${{ needs.ubuntu-build.outputs.project-version }}-macos-x64.pkg.sha256
      - name: Archive MacOS pkg
        uses: actions/upload-artifact@v4
        with:
          name: MacOS Installer pkg
          path: installers/mac/target/pkg/ballerina-*-macos-x64.pkg
      - name: Install Ballerina PKG
        run: sudo installer -pkg installers/mac/target/pkg/ballerina-*-macos-x64.pkg -target /
      - name: Update Installer Test Configs
        run: |
          DISPLAY_TEXT=${{ needs.ubuntu-build.outputs.lang-version }}
          SWAN_LAKE_LATEST_VERSION="swan-lake-"+$DISPLAY_TEXT
          perl -pi -e "s/^\s*swan-lake-latest-version-display-text=.*/swan-lake-latest-version-display-text=$DISPLAY_TEXT/" ballerina-test-automation/gradle.properties
          perl -pi -e "s/^\s*swan-lake-latest-version=.*/swan-lake-latest-version=$SWAN_LAKE_LATEST_VERSION/" ballerina-test-automation/gradle.properties
      - name: Run Installer Tests
        working-directory: ./ballerina-test-automation/installer-test
        run: ./../gradlew build --stacktrace -scan --console=plain --no-daemon -DballerinaInstalled=true
        env:
          TEST_MODE_ACTIVE: true

  macos-arm-installer-build:

    needs: ubuntu-build
    runs-on: macos-latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
      - name: Set up JDK 21
        uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: '21.0.3'
      - name: Download MacOS-ARM Intaller Zip
        uses: actions/download-artifact@v4
        with:
          name: MacOS-ARM Installer ZIP
      - name: Create macos-arm-pkg
        id: run_installers_arm_pkg
        run: |
          cd installers/mac
          ./build-ballerina-macos-x64.sh -v ${{ needs.ubuntu-build.outputs.project-version }} -p ./../../ -a arm
          echo "Created macos-arm-pkg successfully"
      - name: Generate Hashes
        run: |
          openssl dgst -sha256 -out ballerina-${{ needs.ubuntu-build.outputs.project-version }}-macos-arm-x64.pkg.sha256 installers/mac/target/pkg/ballerina-*-macos-arm-x64.pkg
      - name: Archive MacOS-ARM pkg Hashes
        uses: actions/upload-artifact@v4
        with:
          name: MacOS-ARM pkg Hashes
          path: ballerina-${{ needs.ubuntu-build.outputs.project-version }}-macos-arm-x64.pkg.sha256
      - name: Archive MacOS-ARM pkg
        uses: actions/upload-artifact@v4
        with:
          name: MacOS Installer ARM pkg
          path: installers/mac/target/pkg/ballerina-*-macos-arm-x64.pkg

  windows-installer-build:

    needs: ubuntu-build
    runs-on: windows-latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
        with:
          ref: 2201.13.x
      - name: Set up JDK 21
        uses: actions/setup-java@v2
        with:
          distribution: 'temurin'
          java-version: '21.0.3'
      - uses: actions/setup-dotnet@v1
        with:
          dotnet-version: '2.1.x'
      - name: Install GUID Generator
        run: dotnet tool install -g dotnet-guid --version 0.5.2
      - name: Set up Wix toolkit
        run: echo "${WIX}bin" >> $GITHUB_PATH
        shell: bash
      - name: Download Windows Intaller Zip
        uses: actions/download-artifact@v4
        with:
          name: Windows Installer ZIP
      - name: Create windows-msi
        id: run_installers_msi
        run: |
          move installers\windows .\..\..\
          cd ..\..\windows
          .\build-ballerina-windows-x64.bat --version ${{ needs.ubuntu-build.outputs.project-version }} --path .\..\ballerina-distribution\ballerina-distribution
      - name: Generate Hashes
        run: |
          openssl dgst -sha256 -out ballerina-${{ needs.ubuntu-build.outputs.project-version }}-windows-x64.msi.sha256 D:\a\windows\target\msi\ballerina-*-windows-x64.msi
      - name: Archive Windows msi Hashes
        uses: actions/upload-artifact@v4
        with:
          name: Windows msi Hashes
          path: ballerina-${{ needs.ubuntu-build.outputs.project-version }}-windows-x64.msi.sha256
      - name: Archive Windows msi
        uses: actions/upload-artifact@v4
        with:
          name: Windows Installer msi
          path: D:\a\windows\target\msi\ballerina-*-windows-x64.msi
      - name: Install Ballerina msi
        run: msiexec /i D:\a\windows\target\msi\ballerina-${{ needs.ubuntu-build.outputs.project-version }}-windows-x64.msi /quiet /qr
        shell: cmd
      - name: Update Installer Test Configs
        run: |
          set DISPLAY_TEXT=${{ needs.ubuntu-build.outputs.lang-version }}
          set SWAN_LAKE_LATEST_VERSION=swan-lake-%DISPLAY_TEXT%
          perl -pi -e "s/^\s*swan-lake-latest-version-display-text=.*/swan-lake-latest-version-display-text=%DISPLAY_TEXT%/" ballerina-test-automation/gradle.properties
          perl -pi -e "s/^\s*swan-lake-latest-version=.*/swan-lake-latest-version=%SWAN_LAKE_LATEST_VERSION%/" ballerina-test-automation/gradle.properties
        shell: cmd
      - name: Run Installer Tests
        working-directory: .\ballerina-test-automation\installer-test
        run: |
          $env:Path += ";C:\Program Files\Ballerina\bin"
          .\..\gradlew build --stacktrace -scan --console=plain --no-daemon -DballerinaInstalled=true
        env:
          TEST_MODE_ACTIVE: true

  trigger-notifications:

    needs: [ubuntu-build, macos-installer-build, windows-installer-build]
    runs-on: ubuntu-latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
        with:
          ref: 2201.13.x
      - name: Invoke Connector Ballerina Version Bump
        run: |
          ballerinaVersion=$((grep -w 'ballerinaLangVersion' | cut -d= -f2) < gradle.properties)
          echo "Triggering connectors dependency bumps..." && \
          curl -X POST \
          https://api.github.com/repos/ballerina-platform/ballerina-release/dispatches \
          -H 'Accept: application/vnd.github.v3+json' \
          -H 'Authorization: token ${{ secrets.BALLERINA_BOT_TOKEN }}' \
          --data "{
            \"event_type\": \"connector-update\",
            \"client_payload\": {
              \"ballerinaVersion\": \"$ballerinaVersion\"
            }
          }"


================================================
FILE: .github/workflows/daily-build-editor.yml
================================================
name: Daily build editor

on:
  workflow_dispatch:
  schedule:
    - cron:  '0 2 * * *'    # 07:30 in LK time (GMT+5:30)

jobs:
  ubuntu-build:

    runs-on: ubuntu-latest
    if: github.repository_owner == 'ballerina-platform'

    steps:
      - name: Set up JDK 21
        uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: '21.0.3'
      - name: Use Node.js
        uses: actions/setup-node@v1
        with:
          node-version: '10.22.1'
      - name: Checkout Dev Tools Repository
        uses: actions/checkout@v3
        with:
          repository: ballerina-platform/ballerina-dev-tools
          path: ballerina-dev-tools
      - name: Build with Gradle
        id: build-dev-tools
        env:
          packageUser: ${{ github.actor }}
          packagePAT: ${{ secrets.GITHUB_TOKEN }}
          devCentralToken: ${{ secrets.BALLERINA_CENTRAL_DEV_ACCESS_TOKEN }}
          githubAccessToken: ${{ secrets.GITHUB_TOKEN }}
          ballerinaBotWorkflow: $ {{ secrets.BALLERINA_BOT_WORKFLOW }}
          TEST_MODE_ACTIVE: true
        run:  |
          cd ballerina-dev-tools
          echo "::set-output name=version::$(grep "^version=" gradle.properties | cut -d'=' -f2)"
          echo "::set-output name=langVersion::$(grep "^ballerinaLangVersion=" gradle.properties | cut -d'=' -f2)"
          ./gradlew clean build --stacktrace --scan -x test  --console=plain --no-daemon --continue publishToMavenLocal
          cd ..
      - name: Checkout Distribution Repository
        uses: actions/checkout@v3
        with:
          repository: ballerina-platform/ballerina-distribution
          path: ballerina-distribution
      - name: Get daily docker version
        id: version
        run: echo "::set-output name=version::$(date +'%Y-%m-%d')"
      - name: Get project version
        id: project-version
        run: |
          cd ballerina-distribution
          SHORT_VERSION=$((grep -w "version" | cut -d= -f2 | cut -d- -f1 | xargs) < gradle.properties)
          DIST_VERSION=$((grep -w "version" | cut -d= -f2 | xargs) < gradle.properties)
          LANG_VERSION=$((grep -w "ballerinaLangVersion" | cut -d= -f2 | cut -d- -f1 | xargs) < gradle.properties)
          CODE_NAME=$((grep -w 'codeName' | cut -d= -f2) < gradle.properties)
          RELEASE_VERSION=$DIST_VERSION-$CODE_NAME
          echo "::set-output name=version::$RELEASE_VERSION"
          echo "::set-output name=sversion::$SHORT_VERSION"
          echo "::set-output name=langversion::$LANG_VERSION"
      - name: Build with Gradle
        env:
          packageUser: ${{ github.actor }}
          packagePAT: ${{ secrets.GITHUB_TOKEN }}
          devCentralToken: ${{ secrets.BALLERINA_CENTRAL_DEV_ACCESS_TOKEN }}
          githubAccessToken: ${{ secrets.GITHUB_TOKEN }}
          ballerinaBotWorkflow: $ {{ secrets.BALLERINA_BOT_WORKFLOW }}
          TEST_MODE_ACTIVE: true
        run: |
          cd ballerina-distribution
          sed -i "s/^devToolsVersion=.*/devToolsVersion=${{ steps.build-dev-tools.outputs.version }}/" gradle.properties
          sed -i "s/^ballerinaLangVersion=.*/ballerinaLangVersion=${{ steps.build-dev-tools.outputs.langVersion }}/" gradle.properties
          ./gradlew clean build --stacktrace --scan -x test --console=plain --no-daemon --continue -x project-api-tests:test
      - name: Create linux-deb
        id: run_installers_deb
        run: |
          cd ballerina-distribution/installers/linux-deb
          ./build-ballerina-linux-deb-x64.sh -v ${{ steps.project-version.outputs.version }} -p ./../../ballerina/build/distributions
          echo "Created linux-deb successfully"
      - name: Create linux-rpm
        id: run_installers_rpm
        run: |
          cd ballerina-distribution/installers/linux-rpm
          ./build-ballerina-linux-rpm-x64.sh -v ${{ steps.project-version.outputs.version }} -p ./../../ballerina/build/distributions
          echo "Created linux-rpm successfully"
      - name: Archive Ballerina ZIP
        uses: actions/upload-artifact@v4
        id: artifact-upload
        with:
          name: Ballerina ZIP
          path: ballerina-distribution/ballerina/build/distributions/ballerina-*-swan-lake.zip
      - name: Archive Ballerina Short Name ZIP
        uses: actions/upload-artifact@v4
        with:
          name: Ballerina Short Name ZIP
          path: ballerina-distribution/ballerina/build/distributions/ballerina-${{ steps.project-version.outputs.sversion }}.zip
      - name: Archive Linux deb
        uses: actions/upload-artifact@v4
        with:
          name: Linux Installer deb
          path: ballerina-distribution/installers/linux-deb/target/ballerina-*-linux-x64.deb
      - name: Archive Linux rpm
        uses: actions/upload-artifact@v4
        with:
          name: Linux Installer rpm
          path: ballerina-distribution/installers/linux-rpm/rpmbuild/RPMS/x86_64/ballerina-*-linux-x64.rpm
      - name: Archive MacOS Installer ZIP
        uses: actions/upload-artifact@v4
        with:
          name: MacOS Installer ZIP
          path: ballerina-distribution/ballerina/build/distributions/ballerina-*-macos.zip
      - name: Archive MacOS-ARM Installer ZIP
        uses: actions/upload-artifact@v4
        with:
          name: MacOS-ARM Installer ZIP
          path: ballerina-distribution/ballerina/build/distributions/ballerina-*-macos-arm.zip
      - name: Archive Windows Installer ZIP
        uses: actions/upload-artifact@v4
        with:
          name: Windows Installer ZIP
          path: ballerina-distribution/ballerina/build/distributions/ballerina-*-windows.zip
      - name: Send release notification
        shell: bash
        run: |
          body=$(cat << EOF
          {
          "cards": [
              { 
              "header": {
                  "title": "Daily Build",
              },
              "sections": [
                  {
                  "widgets": [
                      {
                      "keyValue": {
                          "topLabel": "Ballerina Distribution",
                          "content": "v${{ steps.project-version.outputs.langversion }}",
                          "onClick": {
                          "openLink": {
                              "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
                          }
                          },
                          "iconUrl": "https://lh6.googleusercontent.com/proxy/R9Rx8vYNd-_HZn58ckf5PNX7RMlC6P-B75fB7UQ_GFH5R0UwtfJ1gVNARBvH1us8LBuK4NVFsvMGnwZkm-H2_9ACwH_j0lQmExR1SRMNGlFcbrm_1O7foFpqqOiVzA",
                          "button": {
                          "textButton": {
                              "text": "Download ZIP",
                              "onClick": {
                              "openLink": {
                                  "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}/artifacts/${{ steps.artifact-upload.outputs.artifact-id }}"
                              }
                              }
                          }
                          }
                      }
                      }
                  ]
                  }
              ]
              }
          ]
          }
          EOF
          )
          curl \
          -X POST \
          -H 'Content-Type: application/json' \
          "https://chat.googleapis.com/v1/spaces/AAAApvQDm3o/messages?key=${{ secrets.EDITOR_CHAT_BOT_KEY }}&token=${{ secrets.EDITOR_CHAT_BOT_TOKEN }}" \
          -d "$body"


================================================
FILE: .github/workflows/daily-build.yml
================================================
name: Daily build

on:
  workflow_dispatch:
  schedule:
    - cron:  '0 2 * * *'    # 07:30 in LK time (GMT+5:30)

jobs:
  ubuntu-build:

    runs-on: ubuntu-latest
    if: github.repository_owner == 'ballerina-platform'

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v3
      - name: Set up JDK 21
        uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: '21.0.3'
      - name: Get daily docker version
        id: version
        run: echo "::set-output name=version::$(date +'%Y-%m-%d')"
      - name: Get project version
        id: project-version
        run: |
          SHORT_VERSION=$((grep -w "version" | cut -d= -f2 | cut -d- -f1 | xargs) < gradle.properties)
          DIST_VERSION=$((grep -w "version" | cut -d= -f2 | xargs) < gradle.properties)
          LANG_VERSION=$((grep -w "ballerinaLangVersion" | cut -d= -f2 | cut -d- -f1 | xargs) < gradle.properties)
          CODE_NAME=$((grep -w 'codeName' | cut -d= -f2) < gradle.properties)
          RELEASE_VERSION=$DIST_VERSION-$CODE_NAME
          echo "::set-output name=version::$RELEASE_VERSION"
          echo "::set-output name=sversion::$SHORT_VERSION"
          echo "::set-output name=langversion::$LANG_VERSION"
      - name: Build with Gradle
        env:
          packageUser: ${{ github.actor }}
          packagePAT: ${{ secrets.GITHUB_TOKEN }}
          devCentralToken: ${{ secrets.BALLERINA_CENTRAL_DEV_ACCESS_TOKEN }}
          githubAccessToken: ${{ secrets.GITHUB_TOKEN }}
          ballerinaBotWorkflow: $ {{ secrets.BALLERINA_BOT_WORKFLOW }}
          TEST_MODE_ACTIVE: true
        run: ./gradlew clean build --stacktrace --scan --console=plain --no-daemon --continue -x project-api-tests:test
      - name: Create linux-deb
        id: run_installers_deb
        run: |
          cd installers/linux-deb
          ./build-ballerina-linux-deb-x64.sh -v ${{ steps.project-version.outputs.version }} -p ./../../ballerina/build/distributions
          echo "Created linux-deb successfully"
      - name: Create linux-rpm
        id: run_installers_rpm
        run: |
          cd installers/linux-rpm
          ./build-ballerina-linux-rpm-x64.sh -v ${{ steps.project-version.outputs.version }} -p ./../../ballerina/build/distributions
          echo "Created linux-rpm successfully"
      - name: Generate Hashes
        run: |
          openssl dgst -sha256 -out ballerina-${{ steps.project-version.outputs.version }}-linux-x64.deb.sha256 installers/linux-deb/target/ballerina-*-linux-x64.deb
          openssl dgst -sha256 -out ballerina-${{ steps.project-version.outputs.version }}-linux-x64.rpm.sha256 installers/linux-rpm/rpmbuild/RPMS/x86_64/ballerina-*-linux-x64.rpm
          openssl dgst -sha256 -out ballerina-${{ steps.project-version.outputs.version }}.zip.sha256 ballerina/build/distributions/ballerina-${{ steps.project-version.outputs.version }}.zip
          openssl dgst -sha256 -out ballerina-${{ steps.project-version.outputs.sversion }}.zip.sha256 ballerina/build/distributions/ballerina-${{ steps.project-version.outputs.sversion }}.zip
      - name: Archive Ballerina ZIP
        uses: actions/upload-artifact@v4
        with:
          name: Ballerina ZIP
          path: ballerina/build/distributions/ballerina-*-swan-lake.zip
      - name: Archive Ballerina Short Name ZIP
        uses: actions/upload-artifact@v4
        with:
          name: Ballerina Short Name ZIP
          path: ballerina/build/distributions/ballerina-${{ steps.project-version.outputs.sversion }}.zip
      
      # Delete existing nightly release if it exists
      - name: Delete existing nightly release
        continue-on-error: true
        uses: actions/github-script@v7
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          script: |
            const release = await github.rest.repos.getReleaseByTag({
              owner: context.repo.owner,
              repo: context.repo.repo,
              tag: 'nightly'
            });
            
            await github.rest.repos.deleteRelease({
              owner: context.repo.owner,
              repo: context.repo.repo,
              release_id: release.data.id
            });
            
            await github.rest.git.deleteRef({
              owner: context.repo.owner,
              repo: context.repo.repo,
              ref: 'tags/nightly'
            });
      
      # Create nightly release and upload artifacts
      - name: Create nightly release
        uses: softprops/action-gh-release@v1
        with:
          tag_name: nightly
          name: Nightly Build - ${{ steps.version.outputs.version }}
          body: |
            Automated nightly build for ${{ steps.version.outputs.version }}
            Ballerina Version: ${{ steps.project-version.outputs.version }}
          prerelease: true
          files: |
            ballerina/build/distributions/ballerina-*-swan-lake.zip
            installers/linux-deb/target/ballerina-*-linux-x64.deb
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      
      - name: Archive Linux deb
        uses: actions/upload-artifact@v4
        with:
          name: Linux Installer deb
          path: installers/linux-deb/target/ballerina-*-linux-x64.deb
      - name: Archive Linux rpm
        uses: actions/upload-artifact@v4
        with:
          name: Linux Installer rpm
          path: installers/linux-rpm/rpmbuild/RPMS/x86_64/ballerina-*-linux-x64.rpm
      - name: Archive Linux Installer ZIP
        uses: actions/upload-artifact@v4
        with:
          name: Linux Installer ZIP
          path: ballerina/build/distributions/ballerina-*-linux.zip
      - name: Archive Linux-ARM Installer ZIP
        uses: actions/upload-artifact@v4
        with:
          name: Linux-ARM Installer ZIP
          path: ballerina/build/distributions/ballerina-*-linux-arm.zip
      - name: Archive MacOS Installer ZIP
        uses: actions/upload-artifact@v4
        with:
          name: MacOS Installer ZIP
          path: ballerina/build/distributions/ballerina-*-macos.zip
      - name: Archive MacOS-ARM Installer ZIP
        uses: actions/upload-artifact@v4
        with:
          name: MacOS-ARM Installer ZIP
          path: ballerina/build/distributions/ballerina-*-macos-arm.zip
      - name: Archive Windows Installer ZIP
        uses: actions/upload-artifact@v4
        with:
          name: Windows Installer ZIP
          path: ballerina/build/distributions/ballerina-*-windows.zip
      - name: Archive Linux deb Hashes
        uses: actions/upload-artifact@v4
        with:
          name: Linux deb Hashes
          path: ballerina-${{ steps.project-version.outputs.version }}-linux-x64.deb.sha256
      - name: Archive Linux rpm Hashes
        uses: actions/upload-artifact@v4
        with:
          name: Linux rpm Hashes
          path: ballerina-${{ steps.project-version.outputs.version }}-linux-x64.rpm.sha256
      - name: Archive Ballerina Zip Hashes
        uses: actions/upload-artifact@v4
        with:
          name: Ballerina Zip Hashes
          path: ballerina-${{ steps.project-version.outputs.version }}.zip.sha256
      - name: Archive Ballerina Short Name Hashes
        uses: actions/upload-artifact@v4
        with:
          name: Ballerina Short Name Hashes
          path: ballerina-${{ steps.project-version.outputs.sversion }}.zip.sha256
      - name: Install Ballerina DEB
        run: sudo dpkg -i installers/linux-deb/target/ballerina-*-linux-x64.deb
      - name: Update Installer Test Configs
        run: |
          DISPLAY_TEXT=${{ steps.project-version.outputs.langversion }}
          SWAN_LAKE_LATEST_VERSION="swan-lake-"+$DISPLAY_TEXT
          perl -pi -e "s/^\s*swan-lake-latest-version-display-text=.*/swan-lake-latest-version-display-text=$DISPLAY_TEXT/" ballerina-test-automation/gradle.properties
          perl -pi -e "s/^\s*swan-lake-latest-version=.*/swan-lake-latest-version=$SWAN_LAKE_LATEST_VERSION/" ballerina-test-automation/gradle.properties
      - name: Run Installer Tests
        working-directory: ./ballerina-test-automation/installer-test
        run: ./../gradlew build --stacktrace -scan --console=plain --no-daemon -DballerinaInstalled=true
        env:
          TEST_MODE_ACTIVE: true
      - name: Checkout docker repo
        uses: actions/checkout@v2
        with:
          repository: ballerina-platform/module-ballerina-docker
          path: module-ballerina-docker
      - name: Copy zip artifact
        run: cp ballerina/build/distributions/ballerina-22*.zip module-ballerina-docker/base/docker/
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v1
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1
      - name: Login to DockerHub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKER_HUB_USER }}
          password: ${{ secrets.DOCKER_HUB_TOKEN }}
      - name: Build the docker image
        id: docker_build
        uses: docker/build-push-action@v2
        with:
          context: module-ballerina-docker/base/docker/
          load: true
          push: false
          tags: ballerina/ballerina:nightly-test
          build-args: |
            BALLERINA_DIST=ballerina-${{ steps.project-version.outputs.sversion }}.zip
      - name: Run Trivy vulnerability scanner
        uses: aquasecurity/trivy-action@master
        with:
          image-ref: 'ballerina/ballerina:nightly-test'
          skip-dirs: 'ballerina/runtime/examples'
          format: 'table'
          exit-code: '1'
          timeout: "10m0s"
      - name: Build and push
        uses: docker/build-push-action@v2
        with:
          context: module-ballerina-docker/base/docker/
          push: true
          tags: ballerina/ballerina:nightly
          build-args: |
            BALLERINA_DIST=ballerina-${{ steps.project-version.outputs.sversion }}.zip
      - name: Image digest
        run: echo ${{ steps.docker_build.outputs.digest }}
      - name: Copy deb artifact
        run: cp installers/linux-deb/target/ballerina-*-linux-x64.deb module-ballerina-docker/base/devcontainer/
      - name: Build the dev container docker image
        id: docker_build_devcontainer
        uses: docker/build-push-action@v2
        with:
          context: module-ballerina-docker/base/devcontainer/
          load: true
          push: false
          tags: ballerina/ballerina-devcontainer:nightly-test
          build-args: |
            BALLERINA_DIST=ballerina-${{ steps.project-version.outputs.version }}-linux-x64.deb
      - name: Clean up created artifacts
        run: |
          rm -rf installers/linux-deb/target/ballerina-*-linux-x64.deb
          rm -rf installers/linux-rpm/rpmbuild/RPMS/x86_64/ballerina-*-linux-x64.rpm
          rm -rf ballerina/build/distributions/ballerina-*-macos.zip
          rm -rf ballerina/build/distributions/ballerina-*-macos-arm.zip
          rm -rf ballerina/build/distributions/ballerina-*-windows.zip
      - name: Run Trivy vulnerability scanner for dev container docker image
        uses: aquasecurity/trivy-action@master
        with:
          image-ref: 'ballerina/ballerina-devcontainer:nightly-test'
          skip-dirs: 'ballerina/runtime/examples'
          format: 'table'
          exit-code: '1'
          timeout: "10m0s"
      - name: Build and push dev container image
        uses: docker/build-push-action@v2
        with:
          context: module-ballerina-docker/base/devcontainer/
          push: true
          tags: ballerina/ballerina-devcontainer:nightly
          build-args: |
            BALLERINA_DIST=ballerina-${{ steps.project-version.outputs.version }}-linux-x64.deb
      - name: Notify failure
        if: ${{ failure() }}
        run: |
          curl -X POST \
          'https://api.github.com/repos/ballerina-platform/ballerina-release/dispatches' \
          -H 'Accept: application/vnd.github.v3+json' \
          -H 'Authorization: Bearer ${{ secrets.BALLERINA_BOT_TOKEN }}' \
          --data "{
            \"event_type\": \"notify-build-failure\",
            \"client_payload\": {
              \"repoName\": \"ballerina-distribution\",
              \"branch\": \"master\"
            }
          }"
    outputs:
      project-version: ${{ steps.project-version.outputs.version }}
      lang-version: ${{ steps.project-version.outputs.langversion }}

  project-api-tests:

    runs-on: ubuntu-latest
    if: github.repository_owner == 'ballerina-platform'

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
      - name: Set up JDK 21
        uses: actions/setup-java@v2
        with:
          distribution: 'temurin'
          java-version: '21.0.3'
      - name: Build with Gradle
        env:
          packageUser: ${{ github.actor }}
          packagePAT: ${{ secrets.GITHUB_TOKEN }}
          devCentralToken: ${{ secrets.BALLERINA_CENTRAL_DEV_ACCESS_TOKEN }}
          prodCentralToken: ${{ secrets.BALLERINA_CENTRAL_ACCESS_TOKEN }}
          githubAccessToken: ${{ secrets.GITHUB_TOKEN }}
          ballerinaBotWorkflow: $ {{ secrets.BALLERINA_BOT_WORKFLOW }}
          TEST_MODE_ACTIVE: true
        run: ./gradlew :project-api-tests:test --stacktrace --scan --console=plain --no-daemon --continue

  windows-build:

    runs-on: windows-latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
      - name: Set up JDK 21
        uses: actions/setup-java@v2
        with:
          distribution: 'temurin'
          java-version: '21.0.3'
      - name: Build with Gradle
        env:
          packageUser: ${{ github.actor }}
          packagePAT: ${{ secrets.GITHUB_TOKEN }}
          devCentralToken: ${{ secrets.BALLERINA_CENTRAL_DEV_ACCESS_TOKEN }}
          githubAccessToken: ${{ secrets.GITHUB_TOKEN }}
          ballerinaBotWorkflow: $ {{ secrets.BALLERINA_BOT_WORKFLOW }}
          TEST_MODE_ACTIVE: true
        run: ./gradlew.bat clean build --stacktrace --scan --console=plain --no-daemon -x test

  ubuntu-rpm-installer-test:
    needs: ubuntu-build
    runs-on: ubuntu-latest
    container: centos:latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
      - name: Set up JDK 21
        uses: actions/setup-java@v2
        with:
          distribution: 'temurin'
          java-version: '21.0.3'
      - name: Setup Files
        run: |
          cd /etc/yum.repos.d/
          sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
          sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
      - name: Download Ballerina rpm Installer
        uses: actions/download-artifact@v4
        with:
          name: Linux Installer rpm
      - name: Install Ballerina RPM
        run: |
          rpm -ivh ballerina-*-linux-x64.rpm
      - name: Update Installer Test Configs
        run: |
          DISPLAY_TEXT=${{ needs.ubuntu-build.outputs.lang-version }}
          SWAN_LAKE_LATEST_VERSION="swan-lake-"+$DISPLAY_TEXT
          sed -i -e "s/swan-lake-latest-version-display-text=.*/swan-lake-latest-version-display-text=$DISPLAY_TEXT/" ballerina-test-automation/gradle.properties
          sed -i -e "s/swan-lake-latest-version=.*/swan-lake-latest-version=$SWAN_LAKE_LATEST_VERSION/" ballerina-test-automation/gradle.properties
      - name: Run Installer Tests
        working-directory: ./ballerina-test-automation/installer-test
        run: ./../gradlew build --stacktrace -scan --console=plain --no-daemon -DballerinaInstalled=true
        env:
          TEST_MODE_ACTIVE: true

  ubuntu-arm-installer-build:

    needs: ubuntu-build
    runs-on: ubuntu-latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
      - name: Set up JDK 21
        uses: actions/setup-java@v2
        with:
          distribution: 'temurin'
          java-version: '21.0.3'
      - name: Download Linux-ARM Installer Zip
        uses: actions/download-artifact@v4
        with:
          name: Linux-ARM Installer ZIP
      - name: Create linux-arm deb
        working-directory: installers/linux-deb
        run: |
          ./build-ballerina-linux-deb-x64.sh -v ${{ needs.ubuntu-build.outputs.project-version }} -p ./../../ -a arm
          echo "Created linux-arm-deb successfully"
      - name: Generate Hashes
        run: |
          openssl dgst -sha256 -out ballerina-${{ needs.ubuntu-build.outputs.project-version }}-linux-arm-x64.deb.sha256 installers/linux-deb/target/ballerina-*-linux-arm-x64.deb
      - name: Archive Linux deb
        uses: actions/upload-artifact@v4
        with:
          name: Linux-ARM Installer deb
          path: installers/linux-deb/target/ballerina-*-linux-arm-x64.deb
      - name: Archive Linux deb Hashes
        uses: actions/upload-artifact@v4
        with:
          name: Linux-ARM deb Hashes
          path: ballerina-${{ needs.ubuntu-build.outputs.project-version }}-linux-arm-x64.deb.sha256

  macos-installer-build:

    needs: ubuntu-build
    runs-on: macos-latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
      - name: Set up JDK 21
        uses: actions/setup-java@v2
        with:
          distribution: 'temurin'
          java-version: '21.0.3'
      - name: Download MacOS Installer Zip
        uses: actions/download-artifact@v4
        with:
          name: MacOS Installer ZIP
      - name: Create macos-pkg
        id: run_installers_pkg
        run: |
          cd installers/mac
          ./build-ballerina-macos-x64.sh -v ${{ needs.ubuntu-build.outputs.project-version }} -p ./../../
          echo "Created macos-pkg successfully"
      - name: Generate Hashes
        run: |
          openssl dgst -sha256 -out ballerina-${{ needs.ubuntu-build.outputs.project-version }}-macos-x64.pkg.sha256 installers/mac/target/pkg/ballerina-*-macos-x64.pkg
      - name: Archive MacOS pkg Hashes
        uses: actions/upload-artifact@v4
        with:
          name: MacOS pkg Hashes
          path: ballerina-${{ needs.ubuntu-build.outputs.project-version }}-macos-x64.pkg.sha256
      - name: Archive MacOS pkg
        uses: actions/upload-artifact@v4
        with:
          name: MacOS Installer pkg
          path: installers/mac/target/pkg/ballerina-*-macos-x64.pkg
      - name: Install Ballerina PKG
        run: sudo installer -pkg installers/mac/target/pkg/ballerina-*-macos-x64.pkg -target /
      - name: Update Installer Test Configs
        run: |
          DISPLAY_TEXT=${{ needs.ubuntu-build.outputs.lang-version }}
          SWAN_LAKE_LATEST_VERSION="swan-lake-"+$DISPLAY_TEXT
          perl -pi -e "s/^\s*swan-lake-latest-version-display-text=.*/swan-lake-latest-version-display-text=$DISPLAY_TEXT/" ballerina-test-automation/gradle.properties
          perl -pi -e "s/^\s*swan-lake-latest-version=.*/swan-lake-latest-version=$SWAN_LAKE_LATEST_VERSION/" ballerina-test-automation/gradle.properties
      - name: Run Installer Tests
        working-directory: ./ballerina-test-automation/installer-test
        run: ./../gradlew build --stacktrace -scan --console=plain --no-daemon -DballerinaInstalled=true
        env:
          TEST_MODE_ACTIVE: true

  macos-arm-installer-build:

    needs: ubuntu-build
    runs-on: macos-latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
      - name: Set up JDK 21
        uses: actions/setup-java@v2
        with:
          distribution: 'temurin'
          java-version: '21.0.3'
      - name: Download MacOS-ARM Intaller Zip
        uses: actions/download-artifact@v4
        with:
          name: MacOS-ARM Installer ZIP
      - name: Create macos-arm-pkg
        id: run_installers_arm_pkg
        run: |
          cd installers/mac
          ./build-ballerina-macos-x64.sh -v ${{ needs.ubuntu-build.outputs.project-version }} -p ./../../ -a arm
          echo "Created macos-arm-pkg successfully"
      - name: Generate Hashes
        run: |
          openssl dgst -sha256 -out ballerina-${{ needs.ubuntu-build.outputs.project-version }}-macos-arm-x64.pkg.sha256 installers/mac/target/pkg/ballerina-*-macos-arm-x64.pkg
      - name: Archive MacOS-ARM pkg Hashes
        uses: actions/upload-artifact@v4
        with:
          name: MacOS-ARM pkg Hashes
          path: ballerina-${{ needs.ubuntu-build.outputs.project-version }}-macos-arm-x64.pkg.sha256
      - name: Archive MacOS-ARM pkg
        uses: actions/upload-artifact@v4
        with:
          name: MacOS Installer ARM pkg
          path: installers/mac/target/pkg/ballerina-*-macos-arm-x64.pkg

  windows-installer-build:

    needs: ubuntu-build
    runs-on: windows-latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
      - name: Set up JDK 21
        uses: actions/setup-java@v2
        with:
          distribution: 'temurin'
          java-version: '21.0.3'
      - uses: actions/setup-dotnet@v1
        with:
          dotnet-version: '2.1.x'
      - name: Install GUID Generator
        run: dotnet tool install -g dotnet-guid --version 0.5.2
      - name: Set up Wix toolkit
        run: echo "${WIX}bin" >> $GITHUB_PATH
        shell: bash
      - name: Download Windows Installer Zip
        uses: actions/download-artifact@v4
        with:
          name: Windows Installer ZIP
      - name: Create windows-msi
        id: run_installers_msi
        run: |
          move installers\windows .\..\..\
          cd ..\..\windows
          .\build-ballerina-windows-x64.bat --version ${{ needs.ubuntu-build.outputs.project-version }} --path .\..\ballerina-distribution\ballerina-distribution
      - name: Generate Hashes
        run: |
          openssl dgst -sha256 -out ballerina-${{ needs.ubuntu-build.outputs.project-version }}-windows-x64.msi.sha256 D:\a\windows\target\msi\ballerina-*-windows-x64.msi
      - name: Archive Windows msi Hashes
        uses: actions/upload-artifact@v4
        with:
          name: Windows msi Hashes
          path: ballerina-${{ needs.ubuntu-build.outputs.project-version }}-windows-x64.msi.sha256
      - name: Archive Windows msi
        uses: actions/upload-artifact@v4
        with:
          name: Windows Installer msi
          path: D:\a\windows\target\msi\ballerina-*-windows-x64.msi
      - name: Install Ballerina msi
        run: msiexec /i D:\a\windows\target\msi\ballerina-${{ needs.ubuntu-build.outputs.project-version }}-windows-x64.msi /quiet /qr
        shell: cmd
      - name: Update Installer Test Configs
        run: |
          set DISPLAY_TEXT=${{ needs.ubuntu-build.outputs.lang-version }}
          set SWAN_LAKE_LATEST_VERSION=swan-lake-%DISPLAY_TEXT%
          perl -pi -e "s/^\s*swan-lake-latest-version-display-text=.*/swan-lake-latest-version-display-text=%DISPLAY_TEXT%/" ballerina-test-automation/gradle.properties
          perl -pi -e "s/^\s*swan-lake-latest-version=.*/swan-lake-latest-version=%SWAN_LAKE_LATEST_VERSION%/" ballerina-test-automation/gradle.properties
        shell: cmd
      - name: Run Installer Tests
        working-directory: .\ballerina-test-automation\installer-test
        run: |
          $env:Path += ";C:\Program Files\Ballerina\bin"
          .\..\gradlew build --stacktrace -scan --console=plain --no-daemon -DballerinaInstalled=true
        env:
          TEST_MODE_ACTIVE: true

  trigger-notifications:

    needs: [ubuntu-build, macos-installer-build, windows-installer-build]
    runs-on: ubuntu-latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
      - name: Invoke Connector Ballerina Version Bump
        run: |
          ballerinaVersion=$((grep -w 'ballerinaLangVersion' | cut -d= -f2) < gradle.properties)
          echo "Triggering connectors dependency bumps..." && \
          curl -X POST \
          https://api.github.com/repos/ballerina-platform/ballerina-release/dispatches \
          -H 'Accept: application/vnd.github.v3+json' \
          -H 'Authorization: token ${{ secrets.BALLERINA_BOT_TOKEN }}' \
          --data "{
            \"event_type\": \"connector-update\",
            \"client_payload\": {
              \"ballerinaVersion\": \"$ballerinaVersion\"
            }
          }"


================================================
FILE: .github/workflows/fossa_scan.yml
================================================
name: Fossa Scan
on:
  workflow_dispatch:
  schedule:
    - cron: '30 18 * * *'    # 00:00 in LK time (GMT+5:30)
jobs:
  fossa-scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: fossas/fossa-action@main
        env:
          packageUser: ${{ secrets.BALLERINA_BOT_USERNAME }}
          packagePAT: ${{ secrets.BALLERINA_BOT_TOKEN }}       
        with:
          api-key: ${{secrets.FOSSA_APIKEY}}


================================================
FILE: .github/workflows/language_server_simulator_fhir.yml
================================================
name: Language Server Simulator on FHIR

on:
  schedule:
    - cron: '0 */12 * * *'
  workflow_dispatch:

jobs:
  run_simulator:
    name: Run LS Simulator
    runs-on: ubuntu-latest
    timeout-minutes: 240
    strategy:
      fail-fast: false
      matrix:
        branch: [ "master" ]
        skipGenerators: [ "", "IMPORT_STATEMENT" ]

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
        with:
          ref: ${{ matrix.branch }}

      - name: Set up JDK 21
        uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: '21.0.3'

      - name: Initialize sub-modules
        run: git submodule update --init

      - name: Build with Gradle
        timeout-minutes: 180
        env:
          packageUser: ${{ github.actor }}
          packagePAT: ${{ secrets.GITHUB_TOKEN }}
        run: |
          export DISPLAY=':99.0'
          /usr/bin/Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
          ./gradlew clean :language-server-simulator:runLSSimulatorOnFHIR -Dls.simulation.skipGenerators=${{ matrix.skipGenerators }}

      - name: Check Simulation Failure
        run: if test -f dump.hprof; then exit 1; else exit 0; fi

      - name: Analyze Heap Dump If Exists
        if: failure()
        run: |
          if test -f dump.hprof; then echo "Heap sump exists. Analyzing..."; else exit 0; fi
          wget https://ftp.jaist.ac.jp/pub/eclipse/mat/1.12.0/rcp/MemoryAnalyzer-1.12.0.20210602-linux.gtk.x86_64.zip
          unzip MemoryAnalyzer-1.12.0.20210602-linux.gtk.x86_64.zip
          ./mat/ParseHeapDump.sh ./dump.hprof org.eclipse.mat.api:suspects

      - name: Upload Heap Dumps
        uses: actions/upload-artifact@v4
        if: always()
        with:
          name: heap_dump-${{ matrix.branch }}.hprof
          path: '*.hprof'

      - name: Upload Leaks Suspects
        uses: actions/upload-artifact@v4
        if: failure()
        with:
          name: Leak_Suspects-${{ matrix.branch }}
          path: 'dump_Leak_Suspects.zip'

      - name: Notify failure
        if: failure()
        run: |
          curl -X POST \
          'https://api.github.com/repos/ballerina-platform/ballerina-release/dispatches' \
          -H 'Accept: application/vnd.github.v3+json' \
          -H 'Authorization: Bearer ${{ secrets.BALLERINA_BOT_TOKEN }}' \
          --data "{
            \"event_type\": \"notify-simulator-failure\",
            \"client_payload\": {
              \"branch\": \"${{ matrix.branch }}\",
              \"runId\":\"${{ github.run_id }}\"
            }
          }"


================================================
FILE: .github/workflows/language_server_simulator_nballerina.yml
================================================
name: Language Server Simulator on nBallerina

on:
  schedule:
    - cron: '0 */12 * * *'
  workflow_dispatch:

jobs:
  run_simulator:
    name: Run LS Simulator
    runs-on: ubuntu-latest
    timeout-minutes: 240
    strategy:
      fail-fast: false
      matrix:
        branch: [ "master" ]
        skipGenerators: [ "", "IMPORT_STATEMENT" ]

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
        with:
          ref: ${{ matrix.branch }}

      - name: Set up JDK 21
        uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: '21.0.3'

      - name: Initialize sub-modules
        run: git submodule update --init

      - name: Build with Gradle
        timeout-minutes: 180
        env:
          packageUser: ${{ github.actor }}
          packagePAT: ${{ secrets.GITHUB_TOKEN }}
        run: |
          export DISPLAY=':99.0'
          /usr/bin/Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
          ./gradlew clean :language-server-simulator:runLSSimulatorOnnBallerina -Dls.simulation.skipGenerators=${{ matrix.skipGenerators }}

      - name: Check Simulation Failure
        run: if test -f dump.hprof; then exit 1; else exit 0; fi

      - name: Analyze Heap Dump If Exists
        if: failure()
        run: |
          if test -f dump.hprof; then echo "Heap sump exists. Analyzing..."; else exit 0; fi
          wget https://ftp.jaist.ac.jp/pub/eclipse/mat/1.12.0/rcp/MemoryAnalyzer-1.12.0.20210602-linux.gtk.x86_64.zip
          unzip MemoryAnalyzer-1.12.0.20210602-linux.gtk.x86_64.zip
          ./mat/ParseHeapDump.sh ./dump.hprof org.eclipse.mat.api:suspects

      - name: Upload Heap Dumps
        uses: actions/upload-artifact@v4
        if: always()
        with:
          name: heap_dump-${{ matrix.branch }}.hprof
          path: '*.hprof'

      - name: Upload Leaks Suspects
        uses: actions/upload-artifact@v4
        if: failure()
        with:
          name: Leak_Suspects-${{ matrix.branch }}
          path: 'dump_Leak_Suspects.zip'

      - name: Notify failure
        if: failure()
        run: |
          curl -X POST \
          'https://api.github.com/repos/ballerina-platform/ballerina-release/dispatches' \
          -H 'Accept: application/vnd.github.v3+json' \
          -H 'Authorization: Bearer ${{ secrets.BALLERINA_BOT_TOKEN }}' \
          --data "{
            \"event_type\": \"notify-simulator-failure\",
            \"client_payload\": {
              \"branch\": \"${{ matrix.branch }}\",
              \"runId\":\"${{ github.run_id }}\"
            }
          }"


================================================
FILE: .github/workflows/main.yml
================================================
name: Build 

on:
  push:
    branches:
      - master
      - stage
      - ballerina-1.1.x
  workflow_dispatch:
    inputs:
      skipTests:
        description: 'Skip Tests during build'
        required: false
        default: 'false'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v3
      - name: Set up JDK 21
        uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: '21.0.3'
      - name: Get project version
        id: project-version
        run: |
          SHORT_VERSION=$((grep -w "version" | cut -d= -f2 | cut -d- -f1) < gradle.properties)
          DIST_VERSION=$((grep -w "version" | cut -d= -f2) < gradle.properties)
          CODE_NAME=$((grep -w 'codeName' | cut -d= -f2) < gradle.properties)
          RELEASE_VERSION=$DIST_VERSION-$CODE_NAME
          echo "::set-output name=version::$RELEASE_VERSION"
          echo "::set-output name=sversion::$SHORT_VERSION"
      - name: Build Ballerina Distribution
        if: ${{ github.event.inputs.skipTests == '' || github.event.inputs.skipTests == 'false' }}
        env:
          packageUser: ${{ github.actor }}
          packagePAT: ${{ secrets.GITHUB_TOKEN }}
          devCentralToken: ${{ secrets.BALLERINA_CENTRAL_DEV_ACCESS_TOKEN }}
          githubAccessToken: ${{ secrets.GITHUB_TOKEN }}
          ballerinaBotWorkflow: $ {{ secrets.BALLERINA_BOT_WORKFLOW }}
        run: ./gradlew clean build --stacktrace --scan --console=plain --no-daemon --continue -x project-api-tests:test
      - name: Build Ballerina Distribution Skip Tests
        if: ${{ github.event.inputs.skipTests == 'true' }}
        env:
          packageUser: ${{ github.actor }}
          packagePAT: ${{ secrets.GITHUB_TOKEN }}
          devCentralToken: ${{ secrets.BALLERINA_CENTRAL_DEV_ACCESS_TOKEN }}
          githubAccessToken: ${{ secrets.GITHUB_TOKEN }}
        run: ./gradlew clean build --stacktrace --scan --console=plain --no-daemon --continue -x test
      - name: Archive Ballerina ZIP
        uses: actions/upload-artifact@v4
        with:
          name: Ballerina ZIP
          path: ballerina/build/distributions/ballerina-*-swan-lake.zip
      - name: Archive Ballerina Short Name ZIP
        uses: actions/upload-artifact@v4
        with:
          name: Ballerina Short Name ZIP
          path: ballerina/build/distributions/ballerina-${{ steps.project-version.outputs.sversion }}.zip
      - name: Archive Linux installer ZIP
        uses: actions/upload-artifact@v4
        with:
          name: Linux installer ZIP
          path: ballerina/build/distributions/ballerina-*-linux.zip
      - name: Archive MacOS installer ZIP
        uses: actions/upload-artifact@v4
        with:
          name: MacOS installer ZIP
          path: ballerina/build/distributions/ballerina-*-macos.zip
      - name: Archive Windows Installer ZIP
        uses: actions/upload-artifact@v4
        with:
          name: Windows Installer ZIP
          path: ballerina/build/distributions/ballerina-*-windows.zip


================================================
FILE: .github/workflows/publish-release-artifacts-1.2.x.yml
================================================
name: Publish Release Artifacts (1.2.x)

on:
  workflow_dispatch:
    inputs:
      release_version:
        description: 'Release Version e.g., 1.2.31, 1.2.31-rc1'
        default: '1.2.31'
        required: true

jobs:
  publish-artifacts:
    name: Publish Release Artifacts
    runs-on: ubuntu-latest
    if: github.repository_owner == 'ballerina-platform'

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v3

      - name: Set up JDK 8
        uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: '8'

      - name: Set version env variable
        id: set-version
        run: |
          RELEASE_VERSION=${{ github.event.inputs.release_version }}
          VERSION=$(cut -d- -f1 <<< $RELEASE_VERSION)
          TAGGED_VERSION=$RELEASE_VERSION
          DISPLAY_VERSION=$VERSION

          echo VERSION=$VERSION >> $GITHUB_ENV
          echo DISPLAY_VERSION=$DISPLAY_VERSION >> $GITHUB_ENV
          echo GIT_TAG=$TAGGED_VERSION >> $GITHUB_ENV
          echo "::set-output name=version::$RELEASE_VERSION"
          echo "::set-output name=taggedVersion::$TAGGED_VERSION"

      - name: Download artifacts
        run: |
          baseUrl="https://github.com/ballerina-platform/ballerina-distribution/releases/download/v$GIT_TAG"
          rm -rf $VERSION
          mkdir $VERSION
          cd $VERSION

          wget "$baseUrl/ballerina-$VERSION.zip"
          wget "$baseUrl/jballerina-$VERSION.zip"
          wget "$baseUrl/ballerina-windows-installer-x64-$VERSION.msi"
          wget "$baseUrl/ballerina-linux-installer-x64-$VERSION.deb"
          wget "$baseUrl/ballerina-linux-installer-x64-$VERSION.rpm"
          wget "$baseUrl/ballerina-macos-installer-x64-$VERSION.pkg"
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
          packageUser: ${{ secrets.BALLERINA_BOT_USERNAME }}
          packagePAT: ${{ secrets.BALLERINA_BOT_TOKEN }}
          devCentralToken: ${{ secrets.BALLERINA_CENTRAL_DEV_ACCESS_TOKEN }}
          githubAccessToken: ${{ secrets.GITHUB_TOKEN }}
          ballerinaBotWorkflow: $ {{ secrets.BALLERINA_BOT_WORKFLOW }}

      - name: Generate metadata json
        working-directory: ${{ steps.set-version.outputs.version }}
        run: |
          date=`date +%Y-%m-%d`
          winInstSize=`ls -lh ballerina-windows-installer-x64-$VERSION.msi | cut -d " " -f5 | sed 's/M/mb/g'`
          linuxInstSize=`ls -lh ballerina-linux-installer-x64-$VERSION.deb | cut -d " " -f5 | sed 's/M/mb/g'`
          rpmInstSize=`ls -lh ballerina-linux-installer-x64-$VERSION.rpm | cut -d " " -f5 | sed 's/M/mb/g'`
          macInstSize=`ls -lh ballerina-macos-installer-x64-$VERSION.pkg | cut -d " " -f5 | sed 's/M/mb/g'`
          fileName=metadata.json
          echo { > $fileName
          echo "	\"version\":\"$VERSION\"," >> $fileName
          echo "	\"release-date\":\"$date\"," >> $fileName
          echo "	\"windows-installer\":\"ballerina-windows-installer-x64-$VERSION.msi\"," >> $fileName
          echo "	\"windows-installer-size\":\"$winInstSize\"," >> $fileName
          echo "	\"linux-installer\":\"ballerina-linux-installer-x64-$VERSION.deb\"," >> $fileName
          echo "	\"linux-installer-size\":\"$linuxInstSize\"," >> $fileName
          echo "	\"macos-installer\":\"ballerina-macos-installer-x64-$VERSION.pkg\"," >> $fileName
          echo "	\"macos-installer-size\":\"$macInstSize\"," >> $fileName
          echo "	\"rpm-installer\":\"ballerina-linux-installer-x64-$VERSION.rpm\"," >> $fileName
          echo "	\"rpm-installer-size\":\"$rpmInstSize\"," >> $fileName
          echo "	\"other-artefacts\":[  " >> $fileName
          echo "		\"ballerina-$VERSION.zip\"," >> $fileName
          echo "		\"ballerina-$VERSION.vsix\"" >> $fileName
          echo " 	]", >> $fileName
          echo "	\"api-docs\":\"ballerina-api-docs-$VERSION.zip\"," >> $fileName
          echo "	\"release-notes\":\"ballerina-release-notes-$VERSION.md\"" >> $fileName
          echo } >> $fileName

      - name: Archive metadata json
        uses: actions/upload-artifact@v4
        with:
          name: Metadata JSON
          path: ${{ steps.set-version.outputs.version }}/metadata.json

      - name: Login to DockerHub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKER_HUB_USER }}
          password: ${{ secrets.DOCKER_HUB_TOKEN }}

      - name: Process docker
        id: process-docker
        run: |
          git clone --single-branch --branch ballerina-1.2.x https://github.com/ballerina-platform/module-ballerina-docker
          DOCKER_REPO='module-ballerina-docker'
          echo "::set-output name=dockerRepo::$DOCKER_REPO"

      - name: Enable experimental functions
        run: |
          echo $'{\n    "experimental": true\n}' | sudo tee /etc/docker/daemon.json
          sudo service docker restart
          docker version

      - name: Build and push docker image
        run: |
          DOCKER_REPO=${{ steps.process-docker.outputs.dockerRepo }}
          cp $VERSION/ballerina-$VERSION.zip $DOCKER_REPO/base/docker/

          docker build --no-cache=true --squash --build-arg BALLERINA_DIST=ballerina-$VERSION.zip -t ballerina/ballerina:$VERSION  $DOCKER_REPO/base/docker/
          rm $DOCKER_REPO/base/docker/ballerina-$VERSION.zip
          docker push ballerina/ballerina:$VERSION
          docker rmi ballerina/ballerina:$VERSION
          docker image prune -f

      - name: Publish Artifacts
        run: |
          sudo apt-get install python3-setuptools
          python3 -m pip install --user awscli
          aws configure set aws_access_key_id $s3_acc_id
          aws configure set aws_secret_access_key $s3_acc_key
          aws s3 cp $VERSION s3://dist-dev.ballerina.io/downloads/$VERSION --recursive
        env:
          s3_acc_id: ${{ secrets.S3_ID }}
          s3_acc_key: ${{ secrets.S3_KEY }}


================================================
FILE: .github/workflows/publish-release-artifacts.yml
================================================
name: Publish Release Artifacts

on:
  workflow_dispatch:
    inputs:
      release_version:
        description: 'Release Version e.g., 2201.1.1, 2201.1.1-rc1'
        default: '2201.1.1'
        required: true

jobs:
  publish-artifacts:
    name: Publish Release Artifacts
    runs-on: ubuntu-latest
    if: github.repository_owner == 'ballerina-platform'

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v3

      - name: Set up JDK 21
        uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: '21.0.3'

      - name: Set version env variable
        id: set-version
        env:
          RELEASE_VERSION: ${{ github.event.inputs.release_version }}
        run: |
          if [[ "$RELEASE_VERSION" == *-SNAPSHOT ]]; then
            VERSION="${RELEASE_VERSION%-SNAPSHOT}"
          else
            VERSION="$RELEASE_VERSION"
          fi
          DIST_VERSION="${VERSION%%-*}"
          CODE_NAME="swan-lake"
          TAGGED_VERSION=$RELEASE_VERSION
          LONG_VERSION=$DIST_VERSION-$CODE_NAME

          UPDATE_NUMBER=$(cut -d'.' -f2 <<< $DIST_VERSION)
          DISPLAY_VERSION="$VERSION (Swan Lake Update $UPDATE_NUMBER)"

          echo VERSION=$VERSION >> $GITHUB_ENV
          echo DIST_VERSION=$DIST_VERSION >> $GITHUB_ENV
          echo LONG_VERSION=$LONG_VERSION >> $GITHUB_ENV
          echo DISPLAY_VERSION=$DISPLAY_VERSION >> $GITHUB_ENV
          echo GIT_TAG=$TAGGED_VERSION >> $GITHUB_ENV
          echo "version=$VERSION" >> "$GITHUB_OUTPUT"
          echo "distVersion=$DIST_VERSION" >> "$GITHUB_OUTPUT"
          echo "taggedVersion=$TAGGED_VERSION" >> "$GITHUB_OUTPUT"
          echo "::set-output name=updateNumber::$UPDATE_NUMBER"
          echo "::set-output name=longVersion::$LONG_VERSION"

      - name: Download artifacts
        run: |
          baseUrl="https://github.com/ballerina-platform/ballerina-distribution/releases/download/v$GIT_TAG"
          updateNumber=${{ steps.set-version.outputs.updateNumber }}
          distVersion=${{ steps.set-version.outputs.distVersion }}
          rm -rf $VERSION
          mkdir $VERSION
          cd $VERSION

          wget "$baseUrl/ballerina-$LONG_VERSION.zip"
          wget "$baseUrl/ballerina-$distVersion.zip"
          wget "$baseUrl/ballerina-$LONG_VERSION-windows-x64.msi"
          wget "$baseUrl/ballerina-$LONG_VERSION-linux-x64.deb"
          wget "$baseUrl/ballerina-$LONG_VERSION-linux-x64.rpm"
          wget "$baseUrl/ballerina-$LONG_VERSION-macos-x64.pkg"
          if [ "$updateNumber" -ge 5 ]; then
            wget "$baseUrl/ballerina-$LONG_VERSION-macos-arm-x64.pkg"
          fi
          if [ "$updateNumber" -ge 11 ]; then
            wget "$baseUrl/ballerina-$LONG_VERSION-linux-arm-x64.deb"
          fi
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
          packageUser: ${{ secrets.BALLERINA_BOT_USERNAME }}
          packagePAT: ${{ secrets.BALLERINA_BOT_TOKEN }}
          devCentralToken: ${{ secrets.BALLERINA_CENTRAL_DEV_ACCESS_TOKEN }}
          githubAccessToken: ${{ secrets.GITHUB_TOKEN }}
          ballerinaBotWorkflow: $ {{ secrets.BALLERINA_BOT_WORKFLOW }}

      - name: Generate metadata json
        working-directory: ${{ steps.set-version.outputs.version }}
        run: |
          updateNumber=${{ steps.set-version.outputs.updateNumber }}
          date=`date +%Y-%m-%d`
          winInstSize=`ls -lh ballerina-$LONG_VERSION-windows-x64.msi | cut -d " " -f5 | sed 's/M/mb/g'`
          linuxInstSize=`ls -lh ballerina-$LONG_VERSION-linux-x64.deb | cut -d " " -f5 | sed 's/M/mb/g'`
          rpmInstSize=`ls -lh ballerina-$LONG_VERSION-linux-x64.rpm | cut -d " " -f5 | sed 's/M/mb/g'`
          macInstSize=`ls -lh ballerina-$LONG_VERSION-macos-x64.pkg | cut -d " " -f5 | sed 's/M/mb/g'`

          fileName=metadata.json
          echo "{" >> $fileName
          echo "	\"version\":\"$VERSION\"," >> $fileName
          echo "	\"short-version\":\"$VERSION\"," >> $fileName
          echo "	\"display-version\":\"$DISPLAY_VERSION\"," >> $fileName
          echo "	\"release-date\":\"$date\"," >> $fileName
          echo "	\"windows-installer\":\"ballerina-$LONG_VERSION-windows-x64.msi\"," >> $fileName
          echo "	\"windows-installer-size\":\"$winInstSize\"," >> $fileName
          echo "	\"linux-installer\":\"ballerina-$LONG_VERSION-linux-x64.deb\"," >> $fileName
          echo "	\"linux-installer-size\":\"$linuxInstSize\"," >> $fileName
          if [ "$updateNumber" -ge 11 ]; then
            linuxArmInstSize=`ls -lh ballerina-$LONG_VERSION-linux-arm-x64.deb | cut -d " " -f5 | sed 's/M/mb/g'`
            echo "	\"linux-arm-installer\":\"ballerina-$LONG_VERSION-linux-arm-x64.deb\"," >> $fileName
            echo "	\"linux-arm-installer-size\":\"$linuxArmInstSize\"," >> $fileName
          fi
          echo "	\"macos-installer\":\"ballerina-$LONG_VERSION-macos-x64.pkg\"," >> $fileName
          echo "	\"macos-installer-size\":\"$macInstSize\"," >> $fileName
          if [ "$updateNumber" -ge 5 ]; then
            macArmInstSize=`ls -lh ballerina-$LONG_VERSION-macos-arm-x64.pkg | cut -d " " -f5 | sed 's/M/mb/g'`
            echo "	\"macos-arm-installer\":\"ballerina-$LONG_VERSION-macos-arm-x64.pkg\"," >> $fileName
            echo "	\"macos-arm-installer-size\":\"$macArmInstSize\"," >> $fileName
          fi
          echo "	\"rpm-installer\":\"ballerina-$LONG_VERSION-linux-x64.rpm\"," >> $fileName
          echo "	\"rpm-installer-size\":\"$rpmInstSize\"," >> $fileName
          echo "	\"other-artefacts\":[  " >> $fileName
          echo "		\"ballerina-$LONG_VERSION.zip\"" >> $fileName
          echo " 	]", >> $fileName
          echo "	\"api-docs\":\"ballerina-api-docs-$VERSION.zip\"," >> $fileName
          echo "	\"release-notes\":\"ballerina-release-notes-$VERSION.md\"" >> $fileName
          echo "}" >> $fileName

      - name: Archive metadata json
        uses: actions/upload-artifact@v4
        with:
          name: Metadata JSON
          path: ${{ steps.set-version.outputs.version }}/metadata.json

      - name: Login to DockerHub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKER_HUB_USER }}
          password: ${{ secrets.DOCKER_HUB_TOKEN }}

      - name: Clone Docker Repo
        id: process-docker
        run: |
          git clone --single-branch --branch master https://github.com/ballerina-platform/module-ballerina-docker
          DOCKER_REPO='module-ballerina-docker'
          echo "::set-output name=dockerRepo::$DOCKER_REPO"

      - name: Copy artifacts to Docker repo
        run: |
          DOCKER_REPO=${{ steps.process-docker.outputs.dockerRepo }}
          cp $VERSION/ballerina-${{ steps.set-version.outputs.distVersion }}.zip $DOCKER_REPO/base/docker/
          cp $VERSION/ballerina-$LONG_VERSION-linux-x64.deb $DOCKER_REPO/base/devcontainer/

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3

      - name: Build and push the Ballerina Docker image
        id: docker_build
        uses: docker/build-push-action@v6
        with:
          context: ${{ steps.process-docker.outputs.dockerRepo }}/base/docker/
          push: true
          tags: ballerina/ballerina:${{ steps.set-version.outputs.taggedVersion }}
          platforms: linux/amd64,linux/arm64
          build-args: |
            BALLERINA_DIST=ballerina-${{ steps.set-version.outputs.distVersion }}.zip

      - name: Build and push dev container image
        id: docker_build_devcontainer
        uses: docker/build-push-action@v6
        with:
          context: ${{ steps.process-docker.outputs.dockerRepo }}/base/devcontainer/
          push: true
          tags: ballerina/ballerina-devcontainer:${{ steps.set-version.outputs.taggedVersion }}
          build-args: |
            BALLERINA_DIST=ballerina-${{ steps.set-version.outputs.longVersion }}-linux-x64.deb

      - name: Publish Artifacts
        run: |
          sudo apt-get install python3-setuptools
          python3 -m pip install --user awscli
          aws configure set aws_access_key_id $s3_acc_id
          aws configure set aws_secret_access_key $s3_acc_key
          aws s3 cp $VERSION s3://dist-dev.ballerina.io/downloads/$VERSION --recursive
        env:
          s3_acc_id: ${{ secrets.S3_ID }}
          s3_acc_key: ${{ secrets.S3_KEY }}


================================================
FILE: .github/workflows/publish-release.yml
================================================
name: Publish release

on:
  workflow_dispatch:
    inputs:
      isPreRelease:
        description: "Tag created is a pre-release tag"
        required: true
        default: "false"
      preReleaseSuffix:
        description: "The text that will be suffixed to the Git tag. e.g., rc1"
        required: false
        default: ""

permissions:
  id-token: write
  contents: write

jobs:
  publish-release:
    name: Publish Release
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v3
      - name: Set up JDK 21
        uses: actions/setup-java@v3
        with:
          distribution: "temurin"
          java-version: "21.0.3"
      - name: Set version env variable
        id: version-set
        run: |
          SHORT_VERSION=$(grep -w "version" gradle.properties | cut -d= -f2 | sed 's/-SNAPSHOT//' | xargs)
          DIST_VERSION=$(grep -w "version" gradle.properties | cut -d= -f2 | sed 's/-SNAPSHOT//' | xargs)          
          LANG_VERSION=$(grep -w "ballerinaLangVersion" gradle.properties | cut -d= -f2 | sed 's/-SNAPSHOT//' | xargs)
          CODE_NAME=$((grep -w 'codeName' | cut -d= -f2) < gradle.properties)
          RELEASE_VERSION=$DIST_VERSION
          TAGGED_VERSION=$RELEASE_VERSION
          LONG_VERSION=$DIST_VERSION-$CODE_NAME
          if [ -n "${{ github.event.inputs.preReleaseSuffix }}" ]; then
            TAGGED_VERSION=$RELEASE_VERSION-${{ github.event.inputs.preReleaseSuffix }}
          fi
          echo VERSION=$RELEASE_VERSION >> $GITHUB_ENV
          echo GIT_TAG=$TAGGED_VERSION >> $GITHUB_ENV
          echo "::set-output name=version::$RELEASE_VERSION"
          echo "::set-output name=sversion::$SHORT_VERSION"
          echo "::set-output name=taggedVersion::$TAGGED_VERSION"
          echo "::set-output name=longVersion::$LONG_VERSION"
          echo "::set-output name=langVersion::$LANG_VERSION"
      - name: Pre release depenency version update
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        run: |
          echo "Version: ${VERSION}"
          echo "Tagged Version: ${GIT_TAG}"
          git config user.name ${{ secrets.BALLERINA_BOT_USERNAME }}
          git config user.email ${{ secrets.BALLERINA_BOT_EMAIL }}
          git checkout -b release-${GIT_TAG}
      - name: Generate UUID
        run: |
          UUID=$(uuidgen)
          perl -pi -e "s/^\s*installerVersion=.*/installerVersion=$UUID/" gradle.properties
          git config user.name ${{ secrets.BALLERINA_BOT_USERNAME }}
          git config user.email ${{ secrets.BALLERINA_BOT_EMAIL }}
          git add gradle.properties
          git commit -m "Update UUID for installer"
      - name: Grant execute permission for gradlew
        run: chmod +x gradlew
      - name: Publish artifact
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
          packageUser: ${{ secrets.BALLERINA_BOT_USERNAME }}
          packagePAT: ${{ secrets.BALLERINA_BOT_TOKEN }}
          devCentralToken: ${{ secrets.BALLERINA_CENTRAL_DEV_ACCESS_TOKEN }}
          prodCentralToken: ${{ secrets.BALLERINA_CENTRAL_ACCESS_TOKEN }}
          githubAccessToken: ${{ secrets.GITHUB_TOKEN }}
          ballerinaBotWorkflow: $ {{ secrets.BALLERINA_BOT_WORKFLOW }}
        run: |
          ./gradlew build -x project-api-tests:test -Pversion=${VERSION}
          ./gradlew release -x project-api-tests:test -Prelease.useAutomaticVersion=true
      - name: Checkout docker repo
        uses: actions/checkout@v3
        with:
          repository: ballerina-platform/module-ballerina-docker
          path: module-ballerina-docker
      - name: Copy zip artifact
        run: cp ballerina/build/distributions/ballerina-22*.zip module-ballerina-docker/base/docker/
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3
      - name: Login to DockerHub
        uses: docker/login-action@v3
        with:
          username: ${{ secrets.DOCKER_HUB_USER }}
          password: ${{ secrets.DOCKER_HUB_TOKEN }}
      - name: Build the docker image
        id: docker_build
        uses: docker/build-push-action@v6
        with:
          context: module-ballerina-docker/base/docker/
          load: true
          push: false
          tags: ballerina/ballerina:release-test
          build-args: |
            BALLERINA_DIST=ballerina-${{ steps.version-set.outputs.sversion }}.zip
      - name: Run Trivy vulnerability scanner
        uses: aquasecurity/trivy-action@master
        with:
          image-ref: "ballerina/ballerina:release-test"
          skip-dirs: "ballerina/runtime/examples"
          format: "table"
          exit-code: "1"
          timeout: "10m0s"
      - name: cosign-installer
        uses: sigstore/cosign-installer@v3.5.0
      - name: Set up Node.js
        uses: actions/setup-node@v2
        with:
          node-version: "14"
      - name: Install GitHub CLI
        run: |
          npm install -g github-cli
          gh --version
      - name: Get Markdown file
        id: file-url
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          gh repo view ballerina-platform/ballerina-dev-website --json url --jq '.clone_url'
          gh api repos/ballerina-platform/ballerina-dev-website/contents/downloads/verify-ballerina-artifacts.md -H 'Accept: application/vnd.github.v3.raw' > release_notes.md
          sed -i '1,10d' release_notes.md
      - name: Retrieve Branch
        id: retrieve-branch
        run: |
          branchName=$(echo ${{ github.ref }} | cut -d'/' -f3)
          echo "::set-output name=branchName::$branchName"
      - name: Update Markdown file
        run: |
          if ${{ github.event.inputs.isPreRelease }} == 'true'; then 
            echo "" > release_notes.md; 
          else sed -i 's/{{ version }}/${{ steps.version-set.outputs.taggedVersion }}/g' release_notes.md; sed -i 's/{{ branch }}/${{ steps.retrieve-branch.outputs.branchName }}/g' release_notes.md; fi
      - name: Read release notes from file
        id: release_notes
        uses: actions/github-script@v4
        with:
          github-token: ${{ secrets.BALLERINA_BOT_TOKEN }}
          script: |
            const fs = require('fs');
            const releaseNotes = fs.readFileSync('release_notes.md', 'utf8');
            core.setOutput('notes', releaseNotes);
      - name: Create release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          tag_name: "v${{ steps.version-set.outputs.taggedVersion }}"
          release_name: ${{ steps.version-set.outputs.taggedVersion }}
          body: ${{ steps.release_notes.outputs.notes }}
          draft: false
          prerelease: ${{ github.event.inputs.isPreRelease }}
      - name: Create linux-deb Installer
        run: |
          cd installers/linux-deb
          ./build-ballerina-linux-deb-x64.sh -v ${{ steps.version-set.outputs.longVersion }} -p ./../../ballerina/build/distributions
          echo "Created linux-deb successfully"
      - name: Sign the linux-deb installer
        run: |
          cosign sign-blob installers/linux-deb/target/ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.deb --output-certificate ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.deb.pem --output-signature ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.deb.sig --yes
      - name: Verify the linux-deb installer
        run: |
          cosign verify-blob installers/linux-deb/target/ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.deb --certificate ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.deb.pem --signature ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.deb.sig --certificate-identity=https://github.com/ballerina-platform/ballerina-distribution/.github/workflows/publish-release.yml@${{ github.ref }} --certificate-oidc-issuer=https://token.actions.githubusercontent.com
      - name: Create linux-rpm Installer
        id: run_installers_rpm
        run: |
          cd installers/linux-rpm
          ./build-ballerina-linux-rpm-x64.sh -v ${{ steps.version-set.outputs.longVersion }} -p ./../../ballerina/build/distributions
          echo "Created linux-rpm successfully"
      - name: Sign the linux-rpm installer
        run: |
          cosign sign-blob installers/linux-rpm/rpmbuild/RPMS/x86_64/ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.rpm --output-certificate ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.rpm.pem --output-signature ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.rpm.sig --yes
      - name: Verify the linux-rpm installer
        run: |
          cosign verify-blob installers/linux-rpm/rpmbuild/RPMS/x86_64/ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.rpm --certificate ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.rpm.pem --signature ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.rpm.sig --certificate-identity=https://github.com/ballerina-platform/ballerina-distribution/.github/workflows/publish-release.yml@${{ github.ref }} --certificate-oidc-issuer=https://token.actions.githubusercontent.com
      - name: Generate Hashes
        run: |
          openssl dgst -sha256 -out ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.deb.sha256 installers/linux-deb/target/ballerina-*-linux-x64.deb
          openssl dgst -sha256 -out ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.rpm.sha256 installers/linux-rpm/rpmbuild/RPMS/x86_64/ballerina-*-linux-x64.rpm
          openssl dgst -sha256 -out ballerina-${{ steps.version-set.outputs.longVersion }}.zip.sha256 ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}.zip
          openssl dgst -sha256 -out ballerina-${{ steps.version-set.outputs.sversion }}.zip.sha256 ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.sversion }}.zip
      - name: Sign the zip artifacts
        run: |
          cosign sign-blob ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}.zip --output-certificate ballerina-${{ steps.version-set.outputs.longVersion }}.pem --output-signature ballerina-${{ steps.version-set.outputs.longVersion }}.sig --yes
          cosign sign-blob ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.sversion }}.zip --output-certificate ballerina-${{ steps.version-set.outputs.sversion }}.pem --output-signature ballerina-${{ steps.version-set.outputs.sversion }}.sig --yes
          cosign sign-blob ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}-linux.zip --output-certificate ballerina-${{ steps.version-set.outputs.longVersion }}-linux.pem --output-signature ballerina-${{ steps.version-set.outputs.longVersion }}-linux.sig --yes
          cosign sign-blob ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}-linux-arm.zip --output-certificate ballerina-${{ steps.version-set.outputs.longVersion }}-linux-arm.pem --output-signature ballerina-${{ steps.version-set.outputs.longVersion }}-linux-arm.sig --yes
          cosign sign-blob ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}-macos.zip --output-certificate ballerina-${{ steps.version-set.outputs.longVersion }}-macos.pem --output-signature ballerina-${{ steps.version-set.outputs.longVersion }}-macos.sig --yes
          cosign sign-blob ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}-macos-arm.zip --output-certificate ballerina-${{ steps.version-set.outputs.longVersion }}-macos-arm.pem --output-signature ballerina-${{ steps.version-set.outputs.longVersion }}-macos-arm.sig --yes
          cosign sign-blob ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}-windows.zip --output-certificate ballerina-${{ steps.version-set.outputs.longVersion }}-windows.pem --output-signature ballerina-${{ steps.version-set.outputs.longVersion }}-windows.sig --yes
      - name: Verify the zip artifacts
        run: |
          cosign verify-blob ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}.zip --certificate ballerina-${{ steps.version-set.outputs.longVersion }}.pem --signature ballerina-${{ steps.version-set.outputs.longVersion }}.sig --certificate-identity=https://github.com/ballerina-platform/ballerina-distribution/.github/workflows/publish-release.yml@${{ github.ref }} --certificate-oidc-issuer=https://token.actions.githubusercontent.com
          cosign verify-blob ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.sversion }}.zip --certificate ballerina-${{ steps.version-set.outputs.sversion }}.pem --signature ballerina-${{ steps.version-set.outputs.sversion }}.sig --certificate-identity=https://github.com/ballerina-platform/ballerina-distribution/.github/workflows/publish-release.yml@${{ github.ref }} --certificate-oidc-issuer=https://token.actions.githubusercontent.com
          cosign verify-blob ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}-linux.zip --certificate ballerina-${{ steps.version-set.outputs.longVersion }}-linux.pem --signature ballerina-${{ steps.version-set.outputs.longVersion }}-linux.sig --certificate-identity=https://github.com/ballerina-platform/ballerina-distribution/.github/workflows/publish-release.yml@${{ github.ref }} --certificate-oidc-issuer=https://token.actions.githubusercontent.com
          cosign verify-blob ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}-linux-arm.zip --certificate ballerina-${{ steps.version-set.outputs.longVersion }}-linux-arm.pem --signature ballerina-${{ steps.version-set.outputs.longVersion }}-linux-arm.sig --certificate-identity=https://github.com/ballerina-platform/ballerina-distribution/.github/workflows/publish-release.yml@${{ github.ref }} --certificate-oidc-issuer=https://token.actions.githubusercontent.com
          cosign verify-blob ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}-macos.zip --certificate ballerina-${{ steps.version-set.outputs.longVersion }}-macos.pem --signature ballerina-${{ steps.version-set.outputs.longVersion }}-macos.sig --certificate-identity=https://github.com/ballerina-platform/ballerina-distribution/.github/workflows/publish-release.yml@${{ github.ref }} --certificate-oidc-issuer=https://token.actions.githubusercontent.com
          cosign verify-blob ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}-macos-arm.zip --certificate ballerina-${{ steps.version-set.outputs.longVersion }}-macos-arm.pem --signature ballerina-${{ steps.version-set.outputs.longVersion }}-macos-arm.sig --certificate-identity=https://github.com/ballerina-platform/ballerina-distribution/.github/workflows/publish-release.yml@${{ github.ref }} --certificate-oidc-issuer=https://token.actions.githubusercontent.com
          cosign verify-blob ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}-windows.zip --certificate ballerina-${{ steps.version-set.outputs.longVersion }}-windows.pem --signature ballerina-${{ steps.version-set.outputs.longVersion }}-windows.sig --certificate-identity=https://github.com/ballerina-platform/ballerina-distribution/.github/workflows/publish-release.yml@${{ github.ref }} --certificate-oidc-issuer=https://token.actions.githubusercontent.com
      - name: Upload zip artifacts
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}.zip
          asset_path: ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}.zip
          asset_content_type: application/octet-stream
      - name: Upload zip artifact's Certificate
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}.pem
          asset_path: ./ballerina-${{ steps.version-set.outputs.longVersion }}.pem
          asset_content_type: application/octet-stream
      - name: Upload zip artifact's Signature
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}.sig
          asset_path: ./ballerina-${{ steps.version-set.outputs.longVersion }}.sig
          asset_content_type: application/octet-stream
      - name: Upload zip without tool artifacts
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.sversion }}.zip
          asset_path: ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.sversion }}.zip
          asset_content_type: application/octet-stream
      - name: Upload zip without tool artifact's Certificate
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.sversion }}.pem
          asset_path: ./ballerina-${{ steps.version-set.outputs.sversion }}.pem
          asset_content_type: application/octet-stream
      - name: Upload zip without tool artifact's Signature
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.sversion }}.sig
          asset_path: ./ballerina-${{ steps.version-set.outputs.sversion }}.sig
          asset_content_type: application/octet-stream
      - name: Upload Linux deb Installer
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.deb
          asset_path: installers/linux-deb/target/ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.deb
          asset_content_type: application/octet-stream
      - name: Upload Linux deb Installer's Certificate
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.deb.pem
          asset_path: ./ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.deb.pem
          asset_content_type: application/octet-stream
      - name: Upload Linux deb Installer's Signature
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.deb.sig
          asset_path: ./ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.deb.sig
          asset_content_type: application/octet-stream
      - name: Upload Linux rpm Installer
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.rpm
          asset_path: installers/linux-rpm/rpmbuild/RPMS/x86_64/ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.rpm
          asset_content_type: application/octet-stream
      - name: Upload Linux rpm Installer's Certificate
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.rpm.pem
          asset_path: ./ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.rpm.pem
          asset_content_type: application/octet-stream
      - name: Upload Linux rpm Installer's Signature
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.rpm.sig
          asset_path: ./ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.rpm.sig
          asset_content_type: application/octet-stream
      - name: Upload Linux zip artifacts
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-linux.zip
          asset_path: ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}-linux.zip
          asset_content_type: application/octet-stream
      - name: Upload Linux zip artifact's Certificate
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-linux.pem
          asset_path: ./ballerina-${{ steps.version-set.outputs.longVersion }}-linux.pem
          asset_content_type: application/octet-stream
      - name: Upload Linux zip artifact's Signature
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-linux.sig
          asset_path: ./ballerina-${{ steps.version-set.outputs.longVersion }}-linux.sig
          asset_content_type: application/octet-stream
      - name: Upload Linux-ARM zip artifacts
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-arm.zip
          asset_path: ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}-linux-arm.zip
          asset_content_type: application/octet-stream
      - name: Upload Linux-ARM zip artifact's Certificate
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-arm.pem
          asset_path: ./ballerina-${{ steps.version-set.outputs.longVersion }}-linux-arm.pem
          asset_content_type: application/octet-stream
      - name: Upload Linux-ARM zip artifact's Signature
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-arm.sig
          asset_path: ./ballerina-${{ steps.version-set.outputs.longVersion }}-linux-arm.sig
          asset_content_type: application/octet-stream
      - name: Upload MacOS zip artifacts
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-macos.zip
          asset_path: ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}-macos.zip
          asset_content_type: application/octet-stream
      - name: Upload MacOS zip artifact's Certificate
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-macos.pem
          asset_path: ./ballerina-${{ steps.version-set.outputs.longVersion }}-macos.pem
          asset_content_type: application/octet-stream
      - name: Upload MacOS zip artifact's Signature
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-macos.sig
          asset_path: ./ballerina-${{ steps.version-set.outputs.longVersion }}-macos.sig
          asset_content_type: application/octet-stream
      - name: Upload MacOS-ARM zip artifacts
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-macos-arm.zip
          asset_path: ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}-macos-arm.zip
          asset_content_type: application/octet-stream
      - name: Upload MacOS-ARM zip artifact's Certificate
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-macos-arm.pem
          asset_path: ./ballerina-${{ steps.version-set.outputs.longVersion }}-macos-arm.pem
          asset_content_type: application/octet-stream
      - name: Upload MacOS-ARM zip artifact's Signature
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-macos-arm.sig
          asset_path: ./ballerina-${{ steps.version-set.outputs.longVersion }}-macos-arm.sig
          asset_content_type: application/octet-stream
      - name: Upload Windows zip artifacts
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-windows.zip
          asset_path: ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}-windows.zip
          asset_content_type: application/octet-stream
      - name: Upload Windows zip artifact's Certificate
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-windows.pem
          asset_path: ./ballerina-${{ steps.version-set.outputs.longVersion }}-windows.pem
          asset_content_type: application/octet-stream
      - name: Upload Windows zip artifact's Signature
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-windows.sig
          asset_path: ./ballerina-${{ steps.version-set.outputs.longVersion }}-windows.sig
          asset_content_type: application/octet-stream
      - name: Upload Linux deb Hashes
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.deb.sha256
          asset_path: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.deb.sha256
          asset_content_type: application/octet-stream
      - name: Upload Linux rpm Hashes
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.rpm.sha256
          asset_path: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.rpm.sha256
          asset_content_type: application/octet-stream
      - name: Upload Ballerina zip Hashes
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}.zip.sha256
          asset_path: ballerina-${{ steps.version-set.outputs.longVersion }}.zip.sha256
          asset_content_type: application/octet-stream
      - name: Upload ballerina Short Name zip Hashes
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.sversion }}.zip.sha256
          asset_path: ballerina-${{ steps.version-set.outputs.sversion }}.zip.sha256
          asset_content_type: application/octet-stream
      - name: Install Ballerina DEB
        run: sudo dpkg -i installers/linux-deb/target/ballerina-*-linux-x64.deb
      - name: Update Installer Test Configs
        run: |
          DISPLAY_TEXT=${{ steps.version-set.outputs.langVersion }}
          SWAN_LAKE_LATEST_VERSION="swan-lake-"+$DISPLAY_TEXT
          perl -pi -e "s/^\s*swan-lake-latest-version-display-text=.*/swan-lake-latest-version-display-text=$DISPLAY_TEXT/" ballerina-test-automation/gradle.properties
          perl -pi -e "s/^\s*swan-lake-latest-version=.*/swan-lake-latest-version=$SWAN_LAKE_LATEST_VERSION/" ballerina-test-automation/gradle.properties
      # - name: Run Installer Tests
      #   working-directory: ./ballerina-test-automation/installer-test
      #   run: ./../gradlew build --stacktrace -scan --console=plain --no-daemon -DballerinaInstalled=true
      #   env:
      #     TEST_MODE_ACTIVE: true
      - name: Create linux-arm-deb Installer
        run: |
          cd installers/linux-deb
          ./build-ballerina-linux-deb-x64.sh -v ${{ steps.version-set.outputs.longVersion }} -p ./../../ballerina/build/distributions -a arm
          echo "Created linux-arm-deb successfully"
      - name: Sign the linux-arm-deb installer
        run: |
          cosign sign-blob installers/linux-deb/target/ballerina-${{ steps.version-set.outputs.longVersion }}-linux-arm-x64.deb --output-certificate ballerina-${{ steps.version-set.outputs.longVersion }}-linux-arm-x64.deb.pem --output-signature ballerina-${{ steps.version-set.outputs.longVersion }}-linux-arm-x64.deb.sig --yes
      - name: Verify the linux-arm-deb installer
        run: |
          cosign verify-blob installers/linux-deb/target/ballerina-${{ steps.version-set.outputs.longVersion }}-linux-arm-x64.deb --certificate ballerina-${{ steps.version-set.outputs.longVersion }}-linux-arm-x64.deb.pem --signature ballerina-${{ steps.version-set.outputs.longVersion }}-linux-arm-x64.deb.sig --certificate-identity=https://github.com/ballerina-platform/ballerina-distribution/.github/workflows/publish-release.yml@${{ github.ref }} --certificate-oidc-issuer=https://token.actions.githubusercontent.com
      - name: Upload Linux-ARM deb Installer
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-arm-x64.deb
          asset_path: installers/linux-deb/target/ballerina-${{ steps.version-set.outputs.longVersion }}-linux-arm-x64.deb
          asset_content_type: application/octet-stream
      - name: Upload Linux-ARM deb Installer's Certificate
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-arm-x64.deb.pem
          asset_path: ./ballerina-${{ steps.version-set.outputs.longVersion }}-linux-arm-x64.deb.pem
          asset_content_type: application/octet-stream
      - name: Upload Linux-ARM deb Installer's Signature
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-arm-x64.deb.sig
          asset_path: ./ballerina-${{ steps.version-set.outputs.longVersion }}-linux-arm-x64.deb.sig
          asset_content_type: application/octet-stream
      - name: Post release PR
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        run: |
          curl -fsSL https://github.com/github/hub/raw/master/script/get | bash -s 2.14.1
          bin/hub pull-request -m "[Automated] Sync master after "$VERSION" release"

    outputs:
      project-version: ${{ steps.version-set.outputs.longVersion }}
      upload-asset-url: ${{ steps.create_release.outputs.upload_url }}
      release-version: ${{ steps.version-set.outputs.taggedVersion }}
      lang-version: ${{ steps.version-set.outputs.langVersion }}

  macos-installer-build:
    name: MacOS Installer Build
    needs: publish-release
    runs-on: macos-latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
      - name: Set up JDK 21
        uses: actions/setup-java@v2
        with:
          distribution: "temurin"
          java-version: "21.0.3"
      - name: Download MacOS Intaller Zip
        run: |
          wget https://github.com/ballerina-platform/ballerina-distribution/releases/download/v${{ needs.publish-release.outputs.release-version }}/ballerina-${{ needs.publish-release.outputs.project-version }}-macos.zip
      - name: cosign-installer
        uses: sigstore/cosign-installer@v3.5.0
      - name: Create macos-pkg Installer
        id: run_installers_pkg
        run: |
          cd installers/mac
          ./build-ballerina-macos-x64.sh -v ${{ needs.publish-release.outputs.project-version }} -p ./../../
          echo "Created macos-pkg successfully"
      - name: Sign the MacOS installer
        run: |
          cosign sign-blob installers/mac/target/pkg/ballerina-${{ needs.publish-release.outputs.project-version }}-macos-x64.pkg --output-certificate ballerina-${{ needs.publish-release.outputs.project-version }}-macos-x64.pkg.pem --output-signature ballerina-${{ needs.publish-release.outputs.project-version }}-macos-x64.pkg.sig --yes
      - name: Verify the MacOS installer
        run: |
          cosign verify-blob installers/mac/target/pkg/ballerina-${{ needs.publish-release.outputs.project-version }}-macos-x64.pkg --certificate ballerina-${{ needs.publish-release.outputs.project-version }}-macos-x64.pkg.pem --signature ballerina-${{ needs.publish-release.outputs.project-version }}-macos-x64.pkg.sig --certificate-identity=https://github.com/ballerina-platform/ballerina-distribution/.github/workflows/publish-release.yml@${{ github.ref }} --certificate-oidc-issuer=https://token.actions.githubusercontent.com
      - name: Generate Hashes
        run: |
          openssl dgst -sha256 -out ballerina-${{ needs.publish-release.outputs.project-version }}-macos-x64.pkg.sha256 installers/mac/target/pkg/ballerina-${{ needs.publish-release.outputs.project-version }}-macos-x64.pkg
      - name: Upload MacOS pkg Hashes
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ needs.publish-release.outputs.upload-asset-url }}
          asset_name: ballerina-${{ needs.publish-release.outputs.project-version }}-macos-x64.pkg.sha256
          asset_path: ballerina-${{ needs.publish-release.outputs.project-version }}-macos-x64.pkg.sha256
          asset_content_type: application/octet-stream
      - name: Upload MacOS pkg Installer
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ needs.publish-release.outputs.upload-asset-url }}
          asset_name: ballerina-${{ needs.publish-release.outputs.project-version }}-macos-x64.pkg
          asset_path: installers/mac/target/pkg/ballerina-${{ needs.publish-release.outputs.project-version }}-macos-x64.pkg
          asset_content_type: application/octet-stream
      - name: Upload MacOS installer's Certificate
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ needs.publish-release.outputs.upload-asset-url }}
          asset_name: ballerina-${{ needs.publish-release.outputs.project-version }}-macos-x64.pkg.pem
          asset_path: ./ballerina-${{ needs.publish-release.outputs.project-version }}-macos-x64.pkg.pem
          asset_content_type: application/octet-stream
      - name: Upload MacOS installer's Signature
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ needs.publish-release.outputs.upload-asset-url }}
          asset_name: ballerina-${{ needs.publish-release.outputs.project-version }}-macos-x64.pkg.sig
          asset_path: ./ballerina-${{ needs.publish-release.outputs.project-version }}-macos-x64.pkg.sig
          asset_content_type: application/octet-stream
      - name: Install Ballerina PKG
        run: sudo installer -pkg installers/mac/target/pkg/ballerina-*-macos-x64.pkg -target /
      - name: Update Installer Test Configs
        run: |
          DISPLAY_TEXT=${{ needs.publish-release.outputs.lang-version }}
          SWAN_LAKE_LATEST_VERSION="swan-lake-"+$DISPLAY_TEXT
          perl -pi -e "s/^\s*swan-lake-latest-version-display-text=.*/swan-lake-latest-version-display-text=$DISPLAY_TEXT/" ballerina-test-automation/gradle.properties
          perl -pi -e "s/^\s*swan-lake-latest-version=.*/swan-lake-latest-version=$SWAN_LAKE_LATEST_VERSION/" ballerina-test-automation/gradle.properties
      # - name: Run Installer Tests
      #   working-directory: ./ballerina-test-automation/installer-test
      #   run: ./../gradlew build --stacktrace -scan --console=plain --no-daemon -DballerinaInstalled=true
      #   env:
      #     TEST_MODE_ACTIVE: true
      - name: Download MacOS-ARM Installer Zip
        run: |
          wget https://github.com/ballerina-platform/ballerina-distribution/releases/download/v${{ needs.publish-release.outputs.release-version }}/ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm.zip
      - name: Create macos-arm-pkg Installer
        id: run_installers_arm_pkg
        run: |
          cd installers/mac
          ./build-ballerina-macos-x64.sh -v ${{ needs.publish-release.outputs.project-version }} -p ./../../ -a arm
          echo "Created macos-arm-pkg successfully"
      - name: Sign the MacOS-ARM installer
        run: |
          cosign sign-blob installers/mac/target/pkg/ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm-x64.pkg --output-certificate ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm-x64.pkg.pem --output-signature ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm-x64.pkg.sig --yes
      - name: Verify the MacOS-ARM installer
        run: |
          cosign verify-blob installers/mac/target/pkg/ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm-x64.pkg --certificate ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm-x64.pkg.pem --signature ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm-x64.pkg.sig --certificate-identity=https://github.com/ballerina-platform/ballerina-distribution/.github/workflows/publish-release.yml@${{ github.ref }} --certificate-oidc-issuer=https://token.actions.githubusercontent.com
      - name: Generate Hashes
        run: |
          openssl dgst -sha256 -out ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm-x64.pkg.sha256 installers/mac/target/pkg/ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm-x64.pkg
      - name: Upload MacOS-ARM pkg Hashes
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ needs.publish-release.outputs.upload-asset-url }}
          asset_name: ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm-x64.pkg.sha256
          asset_path: ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm-x64.pkg.sha256
          asset_content_type: application/octet-stream
      - name: Upload MacOS-ARM pkg Installer
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ needs.publish-release.outputs.upload-asset-url }}
          asset_name: ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm-x64.pkg
          asset_path: installers/mac/target/pkg/ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm-x64.pkg
          asset_content_type: application/octet-stream
      - name: Upload MacOS-ARM installer's Certificate
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ needs.publish-release.outputs.upload-asset-url }}
          asset_name: ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm-x64.pkg.pem
          asset_path: ./ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm-x64.pkg.pem
          asset_content_type: application/octet-stream
      - name: Upload MacOS-ARM installer's Signature
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ needs.publish-release.outputs.upload-asset-url }}
          asset_name: ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm-x64.pkg.sig
          asset_path: ./ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm-x64.pkg.sig
          asset_content_type: application/octet-stream

  windows-installer-build:
    name: Windows Installer Build
    needs: publish-release
    runs-on: windows-latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
      - name: Set up JDK 21
        uses: actions/setup-java@v2
        with:
          distribution: "temurin"
          java-version: "21.0.3"
      - uses: actions/setup-dotnet@v1
        with:
          dotnet-version: "2.1.x"
      - name: Install GUID Generator
        run: dotnet tool install -g dotnet-guid --version 0.5.2
      - name: Set up Wix toolkit
        run: echo "${WIX}bin" >> $GITHUB_PATH
        shell: bash
      - name: Set cosign-installer
        uses: sigstore/cosign-installer@v3.5.0
      - name: Download Windows Installer Zip
        run: |
          echo default login ${{ secrets.BALLERINA_BOT_USERNAME }} password ${{ secrets.BALLERINA_BOT_TOKEN }} >> _netrc
          curl --netrc-file _netrc -L -o ballerina-${{ needs.publish-release.outputs.project-version }}-windows.zip https://github.com/ballerina-platform/ballerina-distribution/releases/download/v${{ needs.publish-release.outputs.release-version }}/ballerina-${{ needs.publish-release.outputs.project-version }}-windows.zip
      - name: Create windows-msi Installer
        id: run_installers_msi
        run: |
          move installers\windows .\..\..\
          cd ..\..\windows
          .\build-ballerina-windows-x64.bat --version ${{ needs.publish-release.outputs.project-version }} --path .\..\ballerina-distribution\ballerina-distribution
      - name: Sign the Windows installer
        run: |
          cosign sign-blob D:\a\windows\target\msi\ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi --output-certificate ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi.pem --output-signature ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi.sig --yes
      - name: Verify the Windows installer
        run: |
          cosign verify-blob D:\a\windows\target\msi\ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi --certificate ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi.pem --signature ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi.sig --certificate-identity=https://github.com/ballerina-platform/ballerina-distribution/.github/workflows/publish-release.yml@${{ github.ref }} --certificate-oidc-issuer=https://token.actions.githubusercontent.com
      - name: Generate Hashes
        run: |
          openssl dgst -sha256 -out ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi.sha256 D:\a\windows\target\msi\ballerina-*-windows-x64.msi
      - name: Upload Windows msi Hashes
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ needs.publish-release.outputs.upload-asset-url }}
          asset_name: ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi.sha256
          asset_path: ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi.sha256
          asset_content_type: application/octet-stream
      - name: Upload Windows msi Installer
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ needs.publish-release.outputs.upload-asset-url }}
          asset_name: ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi
          asset_path: D:\a\windows\target\msi\ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi
          asset_content_type: application/octet-stream
      - name: Upload Windows installer's Certificate
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ needs.publish-release.outputs.upload-asset-url }}
          asset_name: ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi.pem
          asset_path: ./ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi.pem
          asset_content_type: application/octet-stream
      - name: Upload Windows installer's Signature
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ needs.publish-release.outputs.upload-asset-url }}
          asset_name: ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi.sig
          asset_path: ./ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi.sig
          asset_content_type: application/octet-stream
      - name: Install Ballerina msi
        run: msiexec /i D:\a\windows\target\msi\ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi /quiet /qr
        shell: cmd
      - name: Update Installer Test Configs
        run: |
          set DISPLAY_TEXT=${{ needs.publish-release.outputs.lang-version }}
          set SWAN_LAKE_LATEST_VERSION=swan-lake-%DISPLAY_TEXT%
          perl -pi -e "s/^\s*swan-lake-latest-version-display-text=.*/swan-lake-latest-version-display-text=%DISPLAY_TEXT%/" ballerina-test-automation/gradle.properties
          perl -pi -e "s/^\s*swan-lake-latest-version=.*/swan-lake-latest-version=%SWAN_LAKE_LATEST_VERSION%/" ballerina-test-automation/gradle.properties
        shell: cmd
      # - name: Run Installer Tests
      #   working-directory: .\ballerina-test-automation\installer-test
      #   run: |
      #     $env:Path += ";C:\Program Files\Ballerina\bin"
      #     .\..\gradlew build --stacktrace -scan --console=plain --no-daemon -DballerinaInstalled=true


================================================
FILE: .github/workflows/publish_release_bi.yml
================================================
name: Publish Release Kola Distribution

on:
  workflow_dispatch:
  schedule:
    - cron:  '0 2 * * *'    # 07:30 in LK time (GMT+5:30)

permissions:
  id-token: write
  contents: write

jobs:
  publish-release:
    name: Publish Release
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v3
      - name: Set up JDK 21
        uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: '21.0.3'
      - name: Use Node.js
        uses: actions/setup-node@v1
        with:
          node-version: '10.22.1'
      - name: Clone ballerina-dev-tools
        run: git clone https://github.com/ballerina-platform/ballerina-dev-tools.git
      - name: Build ballerina-dev-tools
        id: build-dev-tools
        env:
          packageUser: ${{ github.actor }}
          packagePAT: ${{ secrets.GITHUB_TOKEN }}
          devCentralToken: ${{ secrets.BALLERINA_CENTRAL_DEV_ACCESS_TOKEN }}
          githubAccessToken: ${{ secrets.GITHUB_TOKEN }}
          ballerinaBotWorkflow: $ {{ secrets.BALLERINA_BOT_WORKFLOW }}
          TEST_MODE_ACTIVE: true
        run: |
          cd ballerina-dev-tools
          VERSION=$((grep -w 'version' | cut -d= -f2 | cut -d- -f1) < gradle.properties)
          sed -i "s/^version=.*/version=$VERSION/" gradle.properties
          echo "::set-output name=version::$(grep "^version=" gradle.properties | cut -d'=' -f2)"
          echo "::set-output name=langVersion::$(grep "^ballerinaLangVersion=" gradle.properties | cut -d'=' -f2)"
          ./gradlew clean build --stacktrace --scan -x test  --console=plain --no-daemon --continue publishToMavenLocal
          cd ..
          rm -rf ballerina-dev-tools
      - name: Set version env variable
        id: version-set
        run: |
          sed -i "s/^devToolsVersion=.*/devToolsVersion=${{ steps.build-dev-tools.outputs.version }}/" gradle.properties
          sed -i "s/^ballerinaLangVersion=.*/ballerinaLangVersion=${{ steps.build-dev-tools.outputs.langVersion }}/" gradle.properties
          SHORT_VERSION=$((grep -w 'version' | cut -d= -f2 | cut -d- -f1) < gradle.properties)
          DIST_VERSION=$((grep -w 'version' | cut -d= -f2) < gradle.properties | rev | cut --complement -d- -f1 | rev)
          LANG_VERSION=$((grep -w "ballerinaLangVersion" | cut -d= -f2 | cut -d- -f1 | xargs) < gradle.properties)
          CODE_NAME=$((grep -w 'codeName' | cut -d= -f2) < gradle.properties)
          RELEASE_VERSION=$DIST_VERSION
          TAGGED_VERSION=$RELEASE_VERSION-bi-pack-$(TZ="Asia/Kolkata" date +'%Y%m%d-%H%M00')
          LONG_VERSION=$DIST_VERSION-$CODE_NAME
          echo VERSION=$RELEASE_VERSION >> $GITHUB_ENV
          echo GIT_TAG=$TAGGED_VERSION >> $GITHUB_ENV
          echo "::set-output name=version::$RELEASE_VERSION"
          echo "::set-output name=sversion::$SHORT_VERSION"
          echo "::set-output name=taggedVersion::$TAGGED_VERSION"
          echo "::set-output name=longVersion::$LONG_VERSION"
          echo "::set-output name=langVersion::$LANG_VERSION"
      - name: Pre release dependency version update
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        run: |
          echo "Version: ${VERSION}"
          echo "Tagged Version: ${GIT_TAG}"
          git config user.name ${{ secrets.BALLERINA_BOT_USERNAME }}
          git config user.email ${{ secrets.BALLERINA_BOT_EMAIL }}
          git checkout -b release-${GIT_TAG}
      - name: Generate UUID
        run: |
          UUID=$(uuidgen)
          perl -pi -e "s/^\s*installerVersion=.*/installerVersion=$UUID/" gradle.properties
          git config user.name ${{ secrets.BALLERINA_BOT_USERNAME }}
          git config user.email ${{ secrets.BALLERINA_BOT_EMAIL }}
          git add gradle.properties
          git commit -m "Update UUID for installer"
      - name: Grant execute permission for gradlew
        run: chmod +x gradlew
      - name: Publish artifact
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
          packageUser: ${{ secrets.BALLERINA_BOT_USERNAME }}
          packagePAT: ${{ secrets.BALLERINA_BOT_TOKEN }}
          devCentralToken: ${{ secrets.BALLERINA_CENTRAL_DEV_ACCESS_TOKEN }}
          prodCentralToken: ${{ secrets.BALLERINA_CENTRAL_ACCESS_TOKEN }}
          githubAccessToken: ${{ secrets.GITHUB_TOKEN }}
          ballerinaBotWorkflow: $ {{ secrets.BALLERINA_BOT_WORKFLOW }}
        run: |
          ./gradlew build -x test -x project-api-tests:test -Pversion=${VERSION}
          ./gradlew release -Prelease.useAutomaticVersion=true -x test
      - name: Checkout docker repo
        uses: actions/checkout@v3
        with:
          repository: ballerina-platform/module-ballerina-docker
          path: module-ballerina-docker
      - name: Copy zip artifact
        run: cp ballerina/build/distributions/ballerina-22*.zip module-ballerina-docker/base/docker/
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v1
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1
      - name: Login to DockerHub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKER_HUB_USER }}
          password: ${{ secrets.DOCKER_HUB_TOKEN }}
      - name: Build the docker image
        id: docker_build
        uses: docker/build-push-action@v2
        with:
          context: module-ballerina-docker/base/docker/
          load: true
          push: false
          tags: ballerina/ballerina:release-test
          build-args: |
            BALLERINA_DIST=ballerina-${{ steps.version-set.outputs.sversion }}.zip
      - name: Run Trivy vulnerability scanner
        uses: aquasecurity/trivy-action@master
        with:
          image-ref: 'ballerina/ballerina:release-test'
          skip-dirs: 'ballerina/runtime/examples'
          format: 'table'
          exit-code: '1'
          timeout: "10m0s"
          severity: 'CRITICAL,HIGH'
      - name: cosign-installer
        uses: sigstore/cosign-installer@v3.5.0
      - name: Set up Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14'
      - name: Install GitHub CLI
        run: |
          npm install -g github-cli
          gh --version
      - name: Get Markdown file
        id: file-url
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          gh repo view ballerina-platform/ballerina-dev-website --json url --jq '.clone_url'
          gh api repos/ballerina-platform/ballerina-dev-website/contents/downloads/verify-ballerina-artifacts.md -H 'Accept: application/vnd.github.v3.raw' > release_notes.md
          sed -i '1,10d' release_notes.md
      - name: Retrieve Branch
        id: retrieve-branch
        run: |
          branchName=$(echo ${{ github.ref }} | cut -d'/' -f3)
          echo "::set-output name=branchName::$branchName"
      - name: Update Markdown file
        run: echo "" > release_notes.md;
      - name: Read release notes from file
        id: release_notes
        uses: actions/github-script@v4
        with:
          github-token: ${{ secrets.BALLERINA_BOT_TOKEN }}
          script: |
            const fs = require('fs');
            const releaseNotes = fs.readFileSync('release_notes.md', 'utf8');
            core.setOutput('notes', releaseNotes);
      - name: Create release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          tag_name: "v${{ steps.version-set.outputs.taggedVersion }}"
          release_name: ${{ steps.version-set.outputs.taggedVersion }}
          body: ${{ steps.release_notes.outputs.notes }}
          draft: false
          prerelease: true
      - name: Create linux-deb Installer
        run: |
          cd installers/linux-deb
          ./build-ballerina-linux-deb-x64.sh -v ${{ steps.version-set.outputs.longVersion }} -p ./../../ballerina/build/distributions
          echo "Created linux-deb successfully"
      - name: Create linux-rpm Installer
        id: run_installers_rpm
        run: |
          cd installers/linux-rpm
          ./build-ballerina-linux-rpm-x64.sh -v ${{ steps.version-set.outputs.longVersion }} -p ./../../ballerina/build/distributions
          echo "Created linux-rpm successfully"
      - name: Generate Hashes
        run: |
          openssl dgst -sha256 -out ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.deb.sha256 installers/linux-deb/target/ballerina-*-linux-x64.deb
          openssl dgst -sha256 -out ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.rpm.sha256 installers/linux-rpm/rpmbuild/RPMS/x86_64/ballerina-*-linux-x64.rpm
          openssl dgst -sha256 -out ballerina-${{ steps.version-set.outputs.longVersion }}.zip.sha256 ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}.zip
          openssl dgst -sha256 -out ballerina-${{ steps.version-set.outputs.sversion }}.zip.sha256 ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.sversion }}.zip
      - name: Upload zip artifacts
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}.zip
          asset_path: ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}.zip
          asset_content_type: application/octet-stream
      - name: Upload zip without tool artifacts
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.sversion }}.zip
          asset_path: ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.sversion }}.zip
          asset_content_type: application/octet-stream
      - name: Upload Linux deb Installer
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.deb
          asset_path: installers/linux-deb/target/ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.deb
          asset_content_type: application/octet-stream
      - name: Upload Linux rpm Installer
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.rpm
          asset_path: installers/linux-rpm/rpmbuild/RPMS/x86_64/ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.rpm
          asset_content_type: application/octet-stream
      - name: Upload Linux zip artifacts
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-linux.zip
          asset_path: ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}-linux.zip
          asset_content_type: application/octet-stream
      - name: Upload Linux-ARM zip artifacts
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-arm.zip
          asset_path: ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}-linux-arm.zip
          asset_content_type: application/octet-stream
      - name: Upload MacOS zip artifacts
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-macos.zip
          asset_path: ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}-macos.zip
          asset_content_type: application/octet-stream
      - name: Upload MacOS-ARM zip artifacts
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-macos-arm.zip
          asset_path: ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}-macos-arm.zip
          asset_content_type: application/octet-stream
      - name: Upload Windows zip artifacts
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-windows.zip
          asset_path: ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}-windows.zip
          asset_content_type: application/octet-stream
      - name: Upload Linux deb Hashes
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.deb.sha256
          asset_path: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.deb.sha256
          asset_content_type: application/octet-stream
      - name: Upload Linux rpm Hashes
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.rpm.sha256
          asset_path: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.rpm.sha256
          asset_content_type: application/octet-stream
      - name: Upload Ballerina zip Hashes
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}.zip.sha256
          asset_path: ballerina-${{ steps.version-set.outputs.longVersion }}.zip.sha256
          asset_content_type: application/octet-stream
      - name: Upload ballerina Short Name zip Hashes
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.sversion }}.zip.sha256
          asset_path: ballerina-${{ steps.version-set.outputs.sversion }}.zip.sha256
          asset_content_type: application/octet-stream
#      - name: Install Ballerina DEB
#        run: sudo dpkg -i installers/linux-deb/target/ballerina-*-linux-x64.deb
#      - name: Update Installer Test Configs
#        run: |
#          DISPLAY_TEXT=${{ steps.version-set.outputs.langVersion }}
#          SWAN_LAKE_LATEST_VERSION="swan-lake-"+$DISPLAY_TEXT
#          perl -pi -e "s/^\s*swan-lake-latest-version-display-text=.*/swan-lake-latest-version-display-text=$DISPLAY_TEXT/" ballerina-test-automation/gradle.properties
#          perl -pi -e "s/^\s*swan-lake-latest-version=.*/swan-lake-latest-version=$SWAN_LAKE_LATEST_VERSION/" ballerina-test-automation/gradle.properties
#      - name: Run Installer Tests
#        working-directory: ./ballerina-test-automation/installer-test
#        run: ./../gradlew build --stacktrace -scan --console=plain --no-daemon -DballerinaInstalled=true
#        env:
#          TEST_MODE_ACTIVE: true
      - name: Create linux-arm-deb Installer
        run: |
          cd installers/linux-deb
          ./build-ballerina-linux-deb-x64.sh -v ${{ steps.version-set.outputs.longVersion }} -p ./../../ballerina/build/distributions -a arm
          echo "Created linux-arm-deb successfully"
      - name: Upload Linux-ARM deb Installer
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-arm-x64.deb
          asset_path: installers/linux-deb/target/ballerina-${{ steps.version-set.outputs.longVersion }}-linux-arm-x64.deb
          asset_content_type: application/octet-stream

    outputs:
      project-version: ${{ steps.version-set.outputs.longVersion }}
      upload-asset-url: ${{ steps.create_release.outputs.upload_url }}
      release-version: ${{ steps.version-set.outputs.taggedVersion }}
      lang-version: ${{ steps.version-set.outputs.langVersion }}

  macos-installer-build:
    name: MacOS Installer Build
    needs: publish-release
    runs-on: macos-latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
      - name: Set up JDK 21
        uses: actions/setup-java@v2
        with:
          distribution: 'temurin'
          java-version: '21.0.3'
      - name: Download MacOS Intaller Zip
        run: |
          wget https://github.com/ballerina-platform/ballerina-distribution/releases/download/v${{ needs.publish-release.outputs.release-version }}/ballerina-${{ needs.publish-release.outputs.project-version }}-macos.zip
      - name: cosign-installer
        uses: sigstore/cosign-installer@v3.5.0
      - name: Create macos-pkg Installer
        id: run_installers_pkg
        run: |
          cd installers/mac
          ./build-ballerina-macos-x64.sh -v ${{ needs.publish-release.outputs.project-version }} -p ./../../
          echo "Created macos-pkg successfully"
      - name: Generate Hashes
        run: |
          openssl dgst -sha256 -out ballerina-${{ needs.publish-release.outputs.project-version }}-macos-x64.pkg.sha256 installers/mac/target/pkg/ballerina-${{ needs.publish-release.outputs.project-version }}-macos-x64.pkg
      - name: Upload MacOS pkg Hashes
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ needs.publish-release.outputs.upload-asset-url }}
          asset_name: ballerina-${{ needs.publish-release.outputs.project-version }}-macos-x64.pkg.sha256
          asset_path: ballerina-${{ needs.publish-release.outputs.project-version }}-macos-x64.pkg.sha256
          asset_content_type: application/octet-stream
      - name: Upload MacOS pkg Installer
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ needs.publish-release.outputs.upload-asset-url }}
          asset_name: ballerina-${{ needs.publish-release.outputs.project-version }}-macos-x64.pkg
          asset_path: installers/mac/target/pkg/ballerina-${{ needs.publish-release.outputs.project-version }}-macos-x64.pkg
          asset_content_type: application/octet-stream
#      - name: Install Ballerina PKG
#        run: sudo installer -pkg installers/mac/target/pkg/ballerina-*-macos-x64.pkg -target /
#      - name: Update Installer Test Configs
#        run: |
#          DISPLAY_TEXT=${{ needs.publish-release.outputs.lang-version }}
#          SWAN_LAKE_LATEST_VERSION="swan-lake-"+$DISPLAY_TEXT
#          perl -pi -e "s/^\s*swan-lake-latest-version-display-text=.*/swan-lake-latest-version-display-text=$DISPLAY_TEXT/" ballerina-test-automation/gradle.properties
#          perl -pi -e "s/^\s*swan-lake-latest-version=.*/swan-lake-latest-version=$SWAN_LAKE_LATEST_VERSION/" ballerina-test-automation/gradle.properties
#      - name: Run Installer Tests
#        working-directory: ./ballerina-test-automation/installer-test
#        run: ./../gradlew build --stacktrace -scan --console=plain --no-daemon -DballerinaInstalled=true
#        env:
#          TEST_MODE_ACTIVE: true
      - name: Download MacOS-ARM Installer Zip
        run: |
          wget https://github.com/ballerina-platform/ballerina-distribution/releases/download/v${{ needs.publish-release.outputs.release-version }}/ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm.zip
      - name: Create macos-arm-pkg Installer
        id: run_installers_arm_pkg
        run: |
          cd installers/mac
          ./build-ballerina-macos-x64.sh -v ${{ needs.publish-release.outputs.project-version }} -p ./../../ -a arm
          echo "Created macos-arm-pkg successfully"
      - name: Generate Hashes
        run: |
          openssl dgst -sha256 -out ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm-x64.pkg.sha256 installers/mac/target/pkg/ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm-x64.pkg
      - name: Upload MacOS-ARM pkg Hashes
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ needs.publish-release.outputs.upload-asset-url }}
          asset_name: ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm-x64.pkg.sha256
          asset_path: ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm-x64.pkg.sha256
          asset_content_type: application/octet-stream
      - name: Upload MacOS-ARM pkg Installer
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ needs.publish-release.outputs.upload-asset-url }}
          asset_name: ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm-x64.pkg
          asset_path: installers/mac/target/pkg/ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm-x64.pkg
          asset_content_type: application/octet-stream

  windows-installer-build:
    name: Windows Installer Build
    needs: publish-release
    runs-on: windows-latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
      - name: Set up JDK 21
        uses: actions/setup-java@v2
        with:
          distribution: 'temurin'
          java-version: '21.0.3'
      - uses: actions/setup-dotnet@v1
        with:
          dotnet-version: '2.1.x'
      - name: Install GUID Generator
        run: dotnet tool install -g dotnet-guid --version 0.5.2
      - name: Set up Wix toolkit
        run: echo "${WIX}bin" >> $GITHUB_PATH
        shell: bash
      - name: Set cosign-installer
        uses: sigstore/cosign-installer@v3.5.0
      - name: Download Windows Installer Zip
        run: |
          echo default login ${{ secrets.BALLERINA_BOT_USERNAME }} password ${{ secrets.BALLERINA_BOT_TOKEN }} >> _netrc
          curl --netrc-file _netrc -L -o ballerina-${{ needs.publish-release.outputs.project-version }}-windows.zip https://github.com/ballerina-platform/ballerina-distribution/releases/download/v${{ needs.publish-release.outputs.release-version }}/ballerina-${{ needs.publish-release.outputs.project-version }}-windows.zip
      - name: Create windows-msi Installer
        id: run_installers_msi
        run: |
          move installers\windows .\..\..\
          cd ..\..\windows
          .\build-ballerina-windows-x64.bat --version ${{ needs.publish-release.outputs.project-version }} --path .\..\ballerina-distribution\ballerina-distribution
      - name: Generate Hashes
        run: |
          openssl dgst -sha256 -out ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi.sha256 D:\a\windows\target\msi\ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi
      - name: Upload Windows msi Hashes
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ needs.publish-release.outputs.upload-asset-url }}
          asset_name: ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi.sha256
          asset_path: ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi.sha256
          asset_content_type: application/octet-stream
      - name: Upload Windows msi Installer
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }}
        with:
          upload_url: ${{ needs.publish-release.outputs.upload-asset-url }}
          asset_name: ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi
          asset_path: D:\a\windows\target\msi\ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi
          asset_content_type: application/octet-stream
#      - name: Install Ballerina msi
#        run: msiexec /i w\target\msi\ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi /quiet /qr
#        shell: cmd
#      - name: Update Installer Test Configs
#        run: |
#          set DISPLAY_TEXT=${{ needs.publish-release.outputs.lang-version }}
#          set SWAN_LAKE_LATEST_VERSION=swan-lake-%DISPLAY_TEXT%
#          perl -pi -e "s/^\s*swan-lake-latest-version-display-text=.*/swan-lake-latest-version-display-text=%DISPLAY_TEXT%/" ballerina-test-automation/gradle.properties
#          perl -pi -e "s/^\s*swan-lake-latest-version=.*/swan-lake-latest-version=%SWAN_LAKE_LATEST_VERSION%/" ballerina-test-automation/gradle.properties
#        shell: cmd
#      - name: Run Installer Tests
#        working-directory: .\ballerina-test-automation\installer-test
#        run: |
#          $env:Path += ";C:\Program Files\Ballerina\bin"
#          .\..\gradlew build --stacktrace -scan --console=plain --no-daemon -DballerinaInstalled=true

  send-notification:
    name: Send Notification
    runs-on: ubuntu-latest
    needs: [publish-release, macos-installer-build, windows-installer-build]
    steps:
      - name: Send notification to Google Chat
        run: |
          body=$(cat << 'EOF'
          {
            "cardsV2": [
              {
                "cardId": "published-ballerina-distribution",
                "card": {
                  "header": {
                    "title": "Ballerina Distribution",
                    "subtitle": "v${{ needs.publish-release.outputs.release-version }}",
                    "imageUrl": "https://lh6.googleusercontent.com/proxy/R9Rx8vYNd-_HZn58ckf5PNX7RMlC6P-B75fB7UQ_GFH5R0UwtfJ1gVNARBvH1us8LBuK4NVFsvMGnwZkm-H2_9ACwH_j0lQmExR1SRMNGlFcbrm_1O7foFpqqOiVzA",
                    "imageType": "CIRCLE"
                  },
                  "sections": [
                    {
                      "widgets": [
                        {
                          "textParagraph": {
                            "text": "Run \"Update Kola\" to update the distribution."
                          }
                        },
                        {
                          "buttonList": {
                            "buttons": [
                              {
                                "text": "Download",
                                "onClick": {
                                  "openLink": {
                                    "url": "https://github.com/${{ github.repository }}/releases/tag/v${{ needs.publish-release.outputs.release-version }}"
                                  }
                                }
                              }
                            ]
                          }
                        }
                      ]
                    }
                  ]
                }
              }
            ]
          }
          EOF
          )
          curl -X POST -H 'Content-Type: application/json' "https://chat.googleapis.com/v1/spaces/AAAApvQDm3o/messages?key=${{ secrets.EDITOR_CHAT_BOT_KEY }}&token=${{ secrets.EDITOR_CHAT_BOT_TOKEN }}" -d "$body"

  send-failure-notification:
    name: Send Failure Notification
    runs-on: ubuntu-latest
    if: ${{ failure() }}
    needs: [publish-release, macos-installer-build, windows-installer-build]
    steps:
      - name: Send failure notification to Google Chat
        run: |
          body=$(cat << 'EOF'
          {
            "cardsV2": [
              {
                "cardId": "ballerina-dist-build-error",
                "card": {
                  "header": {
                    "title": "Ballerina Distribution",
                    "subtitle": "Release Failure",
                    "imageUrl": "https://lh6.googleusercontent.com/proxy/R9Rx8vYNd-_HZn58ckf5PNX7RMlC6P-B75fB7UQ_GFH5R0UwtfJ1gVNARBvH1us8LBuK4NVFsvMGnwZkm-H2_9ACwH_j0lQmExR1SRMNGlFcbrm_1O7foFpqqOiVzA",
                    "imageType": "CIRCLE"
                  },
                  "sections": [
                    {
                      "widgets": [
                        {
                          "decoratedText": {
                            "text": "<font color=\"#FF0000\">Error: The build has failed</font>",
                            "startIcon": {
                              "materialIcon": {
                                "name": "error",
                                "fill": true,
                                "weight": 500,
                                "grade": 100
                              }
                            }
                          }
                        },
                        {
                          "textParagraph": {
                            "text": "Please view the workflow for further details."
                          }
                        },
                        {
                          "buttonList": {
                            "buttons": [
                              {
                                "text": "View Workflow",
                                "onClick": {
                                  "openLink": {
                                    "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
                                  }
                                }
                              }
                            ]
                          }
                        }
                      ]
                    }
                  ]
                }
              }
            ]
          }
          EOF
          )
          curl -X POST -H 'Content-Type: application/json' "https://chat.googleapis.com/v1/spaces/AAAApvQDm3o/messages?key=${{ secrets.EDITOR_CHAT_BOT_KEY }}&token=${{ secrets.EDITOR_CHAT_BOT_TOKEN }}" -d "$body"


================================================
FILE: .github/workflows/pull-request.yml
================================================
name: Pull Request

on:
    pull_request:
        branches:
            - master
            - ballerina-1.1.x
            - ballerina-1.2.x
            - 2201.[0-9]+.x

jobs:
    ubuntu-integration-tests:
        name: Integration Tests on Ubuntu
        runs-on: ubuntu-latest
        concurrency:
            group: ${{ github.ref }}-integration-tests
            cancel-in-progress: true
        steps:
            -   name: Checkout Repository
                uses: actions/checkout@v3
            -   name: Set up JDK 21
                uses: actions/setup-java@v3
                with:
                    distribution: 'temurin'
                    java-version: '21.0.3'
            -   name: Build Ballerina Distribution
                env:
                    packageUser: ${{ github.actor }}
                    packagePAT: ${{ secrets.GITHUB_TOKEN }}
                    devCentralToken: ${{ secrets.BALLERINA_CENTRAL_DEV_ACCESS_TOKEN }}
                    githubAccessToken: ${{ secrets.GITHUB_TOKEN }}
                    ballerinaBotWorkflow: $ {{ secrets.BALLERINA_BOT_WORKFLOW }}
                run: ./gradlew clean build --stacktrace --scan --console=plain --no-daemon --continue -x :ballerina:testExamples -x :project-api-tests:test

    ubuntu-bbe-tests:
        name: BBE Tests on Ubuntu
        runs-on: ubuntu-latest
        concurrency:
            group: ${{ github.ref }}-bbe-tests
            cancel-in-progress: true
        steps:
            -   name: Checkout Repository
                uses: actions/checkout@v3
            -   name: Set up JDK 21
                uses: actions/setup-java@v3
                with:
                    distribution: 'temurin'
                    java-version: '21.0.3'
            -   name: Build Ballerina Distribution
                env:
                    packageUser: ${{ github.actor }}
                    packagePAT: ${{ secrets.GITHUB_TOKEN }}
                    devCentralToken: ${{ secrets.BALLERINA_CENTRAL_DEV_ACCESS_TOKEN }}
                    githubAccessToken: ${{ secrets.GITHUB_TOKEN }}
                    ballerinaBotWorkflow: $ {{ secrets.BALLERINA_BOT_WORKFLOW }}
                run: ./gradlew clean :ballerina:testExamples --stacktrace --scan --console=plain --no-daemon --continue -x :project-api-tests:test
    windows-build-without-tests:
        name: Windows Build
        runs-on: windows-latest
        concurrency:
            group: ${{ github.ref }}-windows
            cancel-in-progress: true
        steps:
            -   name: Checkout Repository
                uses: actions/checkout@v3
            -   name: Set up JDK 21
                uses: actions/setup-java@v3
                with:
                    distribution: 'temurin'
                    java-version: '21.0.3'
            - name: Build Ballerina Distribution
              env:
                  packageUser: ${{ github.actor }}
                  packagePAT: ${{ secrets.GITHUB_TOKEN }}
                  JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
                  devCentralToken: ${{ secrets.BALLERINA_CENTRAL_DEV_ACCESS_TOKEN }}
                  githubAccessToken: ${{ secrets.GITHUB_TOKEN }}
                  ballerinaBotWorkflow: $ {{ secrets.BALLERINA_BOT_WORKFLOW }}
              run: ./gradlew.bat clean build --stacktrace --scan --console=plain --no-daemon --continue -x test


================================================
FILE: .github/workflows/sign-installers.yml
================================================
name: Sign release artifacts

on:
  workflow_dispatch:
    inputs:
      versionName:
        description: 'Specify the Version name eg: 2201.6.0'
        required: true
        default: ''

permissions:
  id-token: write 
  contents: write

jobs:
  sign-release:
    name: Sign release artifacts
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v3
      - name: cosign-installer
        uses: sigstore/cosign-installer@v3.5.0
      - name: Install Node
        uses: actions/setup-node@v2
        with:
          node-version: '14'
      - name: Install GitHub CLI
        run: |
          npm install -g github-cli
      - name: Retrieve MacOS Installer
        run:
          |
          wget https://github.com/ballerina-platform/ballerina-distribution/releases/download/v${{ github.event.inputs.versionName }}/ballerina-${{ github.event.inputs.versionName }}-swan-lake-macos-x64.pkg
      - name: Sign the MacOS Installer
        run: |
          cosign sign-blob ballerina-${{ github.event.inputs.versionName }}-swan-lake-macos-x64.pkg --output-certificate ballerina-${{ github.event.inputs.versionName }}-swan-lake-macos-x64.pkg.pem --output-signature ballerina-${{ github.event.inputs.versionName }}-swan-lake-macos-x64.pkg.sig --yes
      - name: Verify the MacOS Installer
        run: |
          cosign verify-blob ballerina-${{ github.event.inputs.versionName }}-swan-lake-macos-x64.pkg --certificate ballerina-${{ github.event.inputs.versionName }}-swan-lake-macos-x64.pkg.pem --signature ballerina-${{ github.event.inputs.versionName }}-swan-lake-macos-x64.pkg.sig --certificate-identity=https://github.com/ballerina-platform/ballerina-distribution/.github/workflows/sign-installers.yml@${{ github.ref }} --certificate-oidc-issuer=https://token.actions.githubusercontent.com 
      - name: Retrieve MacOS-ARM Installer
        run:
          |
          wget https://github.com/ballerina-platform/ballerina-distribution/releases/download/v${{ github.event.inputs.versionName }}/ballerina-${{ github.event.inputs.versionName }}-swan-lake-macos-arm-x64.pkg
      - name: Sign the MacOS-ARM Installer
        run: |
          cosign sign-blob ballerina-${{ github.event.inputs.versionName }}-swan-lake-macos-arm-x64.pkg --output-certificate ballerina-${{ github.event.inputs.versionName }}-swan-lake-macos-arm-x64.pkg.pem --output-signature ballerina-${{ github.event.inputs.versionName }}-swan-lake-macos-arm-x64.pkg.sig --yes
      - name: Verify the MacOS-ARM Installer
        run: |
          cosign verify-blob ballerina-${{ github.event.inputs.versionName }}-swan-lake-macos-arm-x64.pkg --certificate ballerina-${{ github.event.inputs.versionName }}-swan-lake-macos-arm-x64.pkg.pem --signature ballerina-${{ github.event.inputs.versionName }}-swan-lake-macos-arm-x64.pkg.sig --certificate-identity=https://github.com/ballerina-platform/ballerina-distribution/.github/workflows/sign-installers.yml@${{ github.ref }} --certificate-oidc-issuer=https://token.actions.githubusercontent.com
      - name: Retrieve Windows Installer
        run:
          |
          wget https://github.com/ballerina-platform/ballerina-distribution/releases/download/v${{ github.event.inputs.versionName }}/ballerina-${{ github.event.inputs.versionName }}-swan-lake-windows-x64.msi
      - name: Sign the Windows Installer
        run: |
          cosign sign-blob ballerina-${{ github.event.inputs.versionName }}-swan-lake-windows-x64.msi --output-certificate ballerina-${{ github.event.inputs.versionName }}-swan-lake-windows-x64.msi.pem --output-signature ballerina-${{ github.event.inputs.versionName }}-swan-lake-windows-x64.msi.sig --yes
      - name: Verify the Windows Installer
        run: |
          cosign verify-blob ballerina-${{ github.event.inputs.versionName }}-swan-lake-windows-x64.msi --certificate ballerina-${{ github.event.inputs.versionName }}-swan-lake-windows-x64.msi.pem --signature ballerina-${{ github.event.inputs.versionName }}-swan-lake-windows-x64.msi.sig --certificate-identity=https://github.com/ballerina-platform/ballerina-distribution/.github/workflows/sign-installers.yml@${{ github.ref }} --certificate-oidc-issuer=https://token.actions.githubusercontent.com
      - name: Upload Installers' Verification Files
        env:
          GH_TOKEN : ${{ secrets.BALLERINA_BOT_TOKEN }}
        run: |
          gh release upload v${{ github.event.inputs.versionName }} ./ballerina-${{ github.event.inputs.versionName }}-swan-lake-macos-x64.pkg.pem --clobber
          gh release upload v${{ github.event.inputs.versionName }} ./ballerina-${{ github.event.inputs.versionName }}-swan-lake-macos-x64.pkg.sig --clobber
          gh release upload v${{ github.event.inputs.versionName }} ./ballerina-${{ github.event.inputs.versionName }}-swan-lake-macos-arm-x64.pkg.pem --clobber
          gh release upload v${{ github.event.inputs.versionName }} ./ballerina-${{ github.event.inputs.versionName }}-swan-lake-macos-arm-x64.pkg.sig --clobber
          gh release upload v${{ github.event.inputs.versionName }} ./ballerina-${{ github.event.inputs.versionName }}-swan-lake-windows-x64.msi.pem --clobber
          gh release upload v${{ github.event.inputs.versionName }} ./ballerina-${{ github.event.inputs.versionName }}-swan-lake-windows-x64.msi.sig --clobber
          

================================================
FILE: .github/workflows/test-installers.yml
================================================
name: Test Installers

on:
  workflow_dispatch:
    inputs:
      releaseVersion:
        description: 'Version of the release. e.g., swan-lake-beta1'
        required: true
      preReleaseSuffix:
        description: 'The text that will be suffixed to the Git tag. e.g., rc1'
        required: false
        default: ''

jobs:
  macos-installer-test:
    runs-on: macos-latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v3
      - name: Set Version
        id: set-version
        run: |
          RELEASE_VERSION=${{ github.event.inputs.releaseVersion }}
          TAGGED_VERSION=$RELEASE_VERSION
          if [ -n "${{ github.event.inputs.preReleaseSuffix }}" ]; then
            TAGGED_VERSION=$RELEASE_VERSION-${{ github.event.inputs.preReleaseSuffix }}
          fi
          echo VERSION=$RELEASE_VERSION >> $GITHUB_ENV
          echo GIT_TAG=$TAGGED_VERSION >> $GITHUB_ENV
          echo "::set-output name=version::$RELEASE_VERSION"
          echo "::set-output name=taggedVersion::$TAGGED_VERSION"
      - name: Download Ballerina pkg Installer
        run: wget https://github.com/ballerina-platform/ballerina-distribution/releases/download/v${{ steps.set-version.outputs.taggedVersion }}/ballerina-macos-x64-${{ steps.set-version.outputs.version }}.pkg
      - name: Install Ballerina pkg
        run: sudo installer -pkg ballerina-macos-x64-${{ steps.set-version.outputs.version }}.pkg -target /
      - name: Run Installer Tests
        working-directory: ./ballerina-test-automation/installer-test
        run: ./../gradlew build --stacktrace -scan --console=plain --no-daemon -DballerinaInstalled=true


================================================
FILE: .github/workflows/trigger-bbe-generation.yml
================================================
name: Generate Ballerina By Examples
on:
    push:
        branches:
            - '2201.0.x'
        paths:
            - 'examples/**'
jobs:
    trigger-bbe-gen:
        name: Trigger Ballerina By Examples genration
        if: github.repository_owner == 'ballerina-platform'
        runs-on: ubuntu-latest
        steps:
            -   run: |
                    curl --request \
                    POST 'http
Download .txt
gitextract_3c7m_6fq/

├── .gitattributes
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug.yml
│   │   ├── config.yml
│   │   ├── improvement.yml
│   │   ├── new-feature.yml
│   │   └── task.yml
│   └── workflows/
│       ├── add_reason_labels.yml
│       ├── bbe-on-demand.yml
│       ├── daily-build-2201.12.x.yml
│       ├── daily-build-2201.13.x.yml
│       ├── daily-build-editor.yml
│       ├── daily-build.yml
│       ├── fossa_scan.yml
│       ├── language_server_simulator_fhir.yml
│       ├── language_server_simulator_nballerina.yml
│       ├── main.yml
│       ├── publish-release-artifacts-1.2.x.yml
│       ├── publish-release-artifacts.yml
│       ├── publish-release.yml
│       ├── publish_release_bi.yml
│       ├── pull-request.yml
│       ├── sign-installers.yml
│       ├── test-installers.yml
│       └── trigger-bbe-generation.yml
├── .gitignore
├── .trivyignore
├── LICENSE
├── README.md
├── ballerina/
│   ├── COPYRIGHT
│   ├── LICENSE
│   ├── README
│   ├── build.gradle
│   └── lib/
│       ├── run.bat
│       ├── run.sh
│       └── version.txt
├── ballerina-test/
│   ├── build.gradle
│   ├── gradle.properties
│   └── src/
│       └── test/
│           ├── java/
│           │   └── org/
│           │       └── ballerinalang/
│           │           └── distribution/
│           │               ├── lengthValidation/
│           │               │   ├── LengthValidator.java
│           │               │   └── LineLengthExceededException.java
│           │               ├── test/
│           │               │   ├── ArtifactBuildTest.java
│           │               │   ├── BallerinaCommandTest.java
│           │               │   ├── DistributionArtifactCheckTest.java
│           │               │   ├── GraphqlToolTest.java
│           │               │   ├── GrpcToolingTest.java
│           │               │   ├── OpenAPIArtifactBuildTest.java
│           │               │   ├── OpenAPIDistributionArtifactCheck.java
│           │               │   └── PlatformDistributionArtifactCheckTest.java
│           │               └── utils/
│           │                   └── TestUtils.java
│           └── resources/
│               ├── graphql/
│               │   ├── client-gen/
│               │   │   ├── project_1/
│               │   │   │   ├── graphql_endpoint.config.yaml
│               │   │   │   └── query_country.graphql
│               │   │   └── project_2/
│               │   │       ├── graphql_schema.config.yaml
│               │   │       ├── queries/
│               │   │       │   └── query_country.graphql
│               │   │       └── schema_country.graphql
│               │   ├── schema-gen/
│               │   │   ├── project_1/
│               │   │   │   ├── Ballerina.toml
│               │   │   │   └── main.bal
│               │   │   └── service.bal
│               │   └── service-gen/
│               │       ├── schema_book.graphql
│               │       └── schema_starwars.graphql
│               ├── grpc/
│               │   ├── expected-files/
│               │   │   └── route_guide_pb.bal
│               │   └── proto-files/
│               │       └── route_guide.proto
│               ├── openapi/
│               │   ├── expected/
│               │   │   ├── client.bal
│               │   │   ├── filtered_tags.bal
│               │   │   ├── types.bal
│               │   │   └── utils.bal
│               │   ├── integration-tests/
│               │   │   ├── Ballerina.toml
│               │   │   ├── Package.md
│               │   │   └── testFiles/
│               │   │       ├── openapi-validator-off.bal
│               │   │       ├── openapi-validator-on.bal
│               │   │       ├── openapi_validator_off.yaml
│               │   │       └── openapi_validator_on.yaml
│               │   ├── openapi_client.yaml
│               │   ├── petstore.bal
│               │   ├── petstore.yaml
│               │   └── petstoreTags.yaml
│               ├── testing-line-length.xml
│               └── testng.xml
├── ballerina-test-automation/
│   ├── build.gradle
│   ├── gradle.properties
│   ├── gradlew
│   ├── gradlew.bat
│   ├── installer-test/
│   │   ├── build.gradle
│   │   └── src/
│   │       └── test/
│   │           ├── java/
│   │           │   └── io/
│   │           │       └── ballerina/
│   │           │           └── installer/
│   │           │               └── test/
│   │           │                   ├── CentralTest.java
│   │           │                   ├── InstallerTest.java
│   │           │                   ├── ProjectTest.java
│   │           │                   └── TestUtils.java
│   │           └── resources/
│   │               └── testng.xml
│   ├── settings.gradle
│   ├── test-automation/
│   │   ├── build.gradle
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── io/
│   │                   └── ballerina/
│   │                       └── test/
│   │                           ├── CentOS.java
│   │                           ├── Executor.java
│   │                           ├── MacOS.java
│   │                           ├── Ubuntu.java
│   │                           ├── Utils.java
│   │                           └── Windows.java
│   └── update-tool-test/
│       ├── build.gradle
│       └── src/
│           └── test/
│               ├── java/
│               │   └── io/
│               │       └── ballerina/
│               │           └── tool/
│               │               └── test/
│               │                   ├── FetchDependencyTest.java
│               │                   ├── UpdateDistTest.java
│               │                   └── UpdateToolTest.java
│               └── resources/
│                   └── testng.xml
├── build-time-tests/
│   ├── build.gradle
│   ├── samples/
│   │   ├── build-samples.sh
│   │   ├── helloservice/
│   │   │   ├── Ballerina.toml
│   │   │   └── service.bal
│   │   └── helloworld/
│   │       ├── Ballerina.toml
│   │       └── helloworld.bal
│   └── src/
│       └── main/
│           └── java/
│               └── org/
│                   └── ballerina/
│                       └── packages/
│                           └── buildtime/
│                               └── GenerateBuildDataCsv.java
├── build.gradle
├── cache-generator/
│   ├── build.gradle
│   └── src/
│       └── main/
│           ├── java/
│           │   ├── io/
│           │   │   └── ballerina/
│           │   │       └── gencache/
│           │   │           └── cmd/
│           │   │               └── GenCacheCmd.java
│           │   └── module-info.java
│           └── resources/
│               └── META-INF/
│                   └── services/
│                       └── io.ballerina.cli.BLauncherCmd
├── config/
│   └── checkstyle/
│       ├── build.gradle
│       ├── checkstyle.xml
│       └── suppressions.xml
├── devtools-integration-tests/
│   ├── build.gradle
│   ├── index.json
│   ├── src/
│   │   └── test/
│   │       ├── java/
│   │       │   └── org/
│   │       │       └── ballerina/
│   │       │           └── devtools/
│   │       │               └── debug/
│   │       │                   ├── BaseTestCase.java
│   │       │                   ├── ExpressionEvaluationTest.java
│   │       │                   ├── ModuleBreakpointTest.java
│   │       │                   └── ServiceDebugTest.java
│   │       └── resources/
│   │           ├── debug/
│   │           │   ├── project-based-tests/
│   │           │   │   ├── breakpoint-tests/
│   │           │   │   │   ├── Ballerina.toml
│   │           │   │   │   └── main.bal
│   │           │   │   ├── evaluation-tests/
│   │           │   │   │   ├── Ballerina.toml
│   │           │   │   │   └── main.bal
│   │           │   │   └── service-tests/
│   │           │   │       ├── Ballerina.toml
│   │           │   │       ├── hello_service.bal
│   │           │   │       └── tests/
│   │           │   │           └── hello_service_test.bal
│   │           │   └── single-file-tests/
│   │           │       └── hello_service.bal
│   │           └── testng.xml
│   └── testerina-object-mocking-test/
│       ├── client.bal
│       ├── service.bal
│       └── tests/
│           └── main_test.bal
├── dist-repo-builder/
│   ├── build.gradle
│   └── src/
│       └── main/
│           └── java/
│               └── io/
│                   └── ballerina/
│                       └── dist/
│                           └── DistRepoBuilder.java
├── doc-guidelines.md
├── docs/
│   └── build-ballerina-from-source.md
├── examples/
│   ├── access-json-elements/
│   │   ├── access_json_elements.bal
│   │   ├── access_json_elements.md
│   │   ├── access_json_elements.metatags
│   │   └── access_json_elements.out
│   ├── access-optional-json-elements/
│   │   ├── access_optional_json_elements.bal
│   │   ├── access_optional_json_elements.md
│   │   ├── access_optional_json_elements.metatags
│   │   └── access_optional_json_elements.out
│   ├── advanced-conflict-handling/
│   │   ├── advanced_conflict_handling.bal
│   │   ├── advanced_conflict_handling.md
│   │   ├── advanced_conflict_handling.metatags
│   │   └── advanced_conflict_handling.out
│   ├── aggregation/
│   │   ├── aggregation.bal
│   │   ├── aggregation.md
│   │   ├── aggregation.metatags
│   │   └── aggregation.out
│   ├── ai-agent-external-endpoint-integration/
│   │   ├── ai_agent_external_endpoint_integration.bal
│   │   ├── ai_agent_external_endpoint_integration.md
│   │   ├── ai_agent_external_endpoint_integration.metatags
│   │   └── ai_agent_external_endpoint_integration.out
│   ├── ai-agent-local-tools/
│   │   ├── ai_agent_local_tools.bal
│   │   ├── ai_agent_local_tools.md
│   │   ├── ai_agent_local_tools.metatags
│   │   └── ai_agent_local_tools.out
│   ├── ai-agent-mcp-integration/
│   │   ├── ai_agent_mcp_integration.bal
│   │   ├── ai_agent_mcp_integration.md
│   │   ├── ai_agent_mcp_integration.metatags
│   │   └── ai_agent_mcp_integration.out
│   ├── ai-agent-tool-kit/
│   │   ├── ai_agent_tool_kit.bal
│   │   ├── ai_agent_tool_kit.md
│   │   ├── ai_agent_tool_kit.metatags
│   │   └── ai_agent_tool_kit.out
│   ├── alternate-receive/
│   │   ├── alternate_receive.bal
│   │   ├── alternate_receive.md
│   │   ├── alternate_receive.metatags
│   │   └── alternate_receive.out
│   ├── alternate-wait/
│   │   ├── alternate_wait.bal
│   │   ├── alternate_wait.md
│   │   ├── alternate_wait.metatags
│   │   └── alternate_wait.out
│   ├── annotations/
│   │   ├── annotations.bal
│   │   ├── annotations.md
│   │   ├── annotations.metatags
│   │   └── annotations.out
│   ├── anonymous-function/
│   │   ├── anonymous_function.bal
│   │   ├── anonymous_function.md
│   │   ├── anonymous_function.metatags
│   │   └── anonymous_function.out
│   ├── any-type/
│   │   ├── any_type.bal
│   │   ├── any_type.md
│   │   ├── any_type.metatags
│   │   └── any_type.out
│   ├── anydata-to-yaml-string/
│   │   ├── anydata_to_yaml_string.bal
│   │   ├── anydata_to_yaml_string.md
│   │   ├── anydata_to_yaml_string.metatags
│   │   └── anydata_to_yaml_string.out
│   ├── anydata-type/
│   │   ├── anydata_type.bal
│   │   ├── anydata_type.md
│   │   ├── anydata_type.metatags
│   │   └── anydata_type.out
│   ├── array-map-symmetry/
│   │   ├── array_map_symmetry.bal
│   │   ├── array_map_symmetry.md
│   │   ├── array_map_symmetry.metatags
│   │   └── array_map_symmetry.out
│   ├── arrays/
│   │   ├── arrays.bal
│   │   ├── arrays.md
│   │   ├── arrays.metatags
│   │   └── arrays.out
│   ├── asynchronize-message-passing/
│   │   ├── asynchronize_message_passing.bal
│   │   ├── asynchronize_message_passing.md
│   │   ├── asynchronize_message_passing.metatags
│   │   └── asynchronize_message_passing.out
│   ├── asynchronous-function-calls/
│   │   ├── asynchronous_function_calls.bal
│   │   ├── asynchronous_function_calls.md
│   │   ├── asynchronous_function_calls.metatags
│   │   └── asynchronous_function_calls.out
│   ├── avro-serdes/
│   │   ├── avro_serdes.bal
│   │   ├── avro_serdes.md
│   │   ├── avro_serdes.metatags
│   │   └── avro_serdes.out
│   ├── aws-lambda-dynamodb-trigger/
│   │   ├── aws_deploy.out
│   │   ├── aws_lambda_dynamodb_trigger.bal
│   │   ├── aws_lambda_dynamodb_trigger.md
│   │   ├── aws_lambda_dynamodb_trigger.metatags
│   │   ├── bal_build.out
│   │   └── bal_new.out
│   ├── aws-lambda-execution-context/
│   │   ├── aws_deploy.out
│   │   ├── aws_lambda_execution_context.bal
│   │   ├── aws_lambda_execution_context.md
│   │   ├── aws_lambda_execution_context.metatags
│   │   ├── bal_build.out
│   │   ├── bal_new.out
│   │   └── invoke_functions.out
│   ├── aws-lambda-hello-world/
│   │   ├── aws_deploy.out
│   │   ├── aws_lambda_hello_world.bal
│   │   ├── aws_lambda_hello_world.md
│   │   ├── aws_lambda_hello_world.metatags
│   │   ├── bal_build.out
│   │   ├── bal_new.out
│   │   └── invoke_functions.out
│   ├── aws-lambda-s3-trigger/
│   │   ├── aws_deploy.out
│   │   ├── aws_lambda_s3_trigger.bal
│   │   ├── aws_lambda_s3_trigger.md
│   │   ├── aws_lambda_s3_trigger.metatags
│   │   ├── bal_build.out
│   │   └── bal_new.out
│   ├── azure-functions-cosmosdb-trigger/
│   │   ├── az_deploy.out
│   │   ├── azure_functions_cosmosdb_trigger.bal
│   │   ├── azure_functions_cosmosdb_trigger.md
│   │   ├── azure_functions_cosmosdb_trigger.metatags
│   │   ├── bal_build.out
│   │   └── bal_new.out
│   ├── azure-functions-hello-world/
│   │   ├── az_deploy.out
│   │   ├── azure_functions_hello_world.bal
│   │   ├── azure_functions_hello_world.md
│   │   ├── azure_functions_hello_world.metatags
│   │   ├── bal_build.out
│   │   ├── bal_new.out
│   │   └── execute_function.out
│   ├── azure-functions-http-trigger-with-queue/
│   │   ├── az_deploy.out
│   │   ├── azure_functions_http_trigger_with_queue.bal
│   │   ├── azure_functions_http_trigger_with_queue.md
│   │   ├── azure_functions_http_trigger_with_queue.metatags
│   │   ├── bal_build.out
│   │   ├── bal_new.out
│   │   └── execute_function.out
│   ├── azure-functions-timer-trigger/
│   │   ├── az_deploy.out
│   │   ├── azure_functions_timer_trigger.bal
│   │   ├── azure_functions_timer_trigger.md
│   │   ├── azure_functions_timer_trigger.metatags
│   │   ├── bal_build.out
│   │   └── bal_new.out
│   ├── binary-data/
│   │   ├── binary_data.bal
│   │   ├── binary_data.md
│   │   ├── binary_data.metatags
│   │   └── binary_data.out
│   ├── binary-operators/
│   │   ├── binary_operators.bal
│   │   ├── binary_operators.md
│   │   ├── binary_operators.metatags
│   │   └── binary_operators.out
│   ├── binding-patterns/
│   │   ├── binding_patterns.bal
│   │   ├── binding_patterns.md
│   │   ├── binding_patterns.metatags
│   │   └── binding_patterns.out
│   ├── binding-patterns-in-match-statement/
│   │   ├── binding_patterns_in_match_statement.bal
│   │   ├── binding_patterns_in_match_statement.md
│   │   ├── binding_patterns_in_match_statement.metatags
│   │   └── binding_patterns_in_match_statement.out
│   ├── boolean/
│   │   ├── boolean.bal
│   │   ├── boolean.md
│   │   ├── boolean.metatags
│   │   └── boolean.out
│   ├── break-statement/
│   │   ├── break_statement.bal
│   │   ├── break_statement.md
│   │   ├── break_statement.metatags
│   │   └── break_statement.out
│   ├── built-in-integer-subtypes/
│   │   ├── built_in_integer_subtypes.bal
│   │   ├── built_in_integer_subtypes.md
│   │   ├── built_in_integer_subtypes.metatags
│   │   └── built_in_integer_subtypes.out
│   ├── built-in-string-subtype/
│   │   ├── built_in_string_subtype.bal
│   │   ├── built_in_string_subtype.md
│   │   ├── built_in_string_subtype.metatags
│   │   └── built_in_string_subtype.out
│   ├── byte-type/
│   │   ├── byte_type.bal
│   │   ├── byte_type.md
│   │   ├── byte_type.metatags
│   │   └── byte_type.out
│   ├── c2c-docker-deployment/
│   │   ├── Cloud.toml
│   │   ├── build_output.out
│   │   ├── c2c_docker_deployment.bal
│   │   ├── c2c_docker_deployment.md
│   │   ├── docker_images.out
│   │   ├── docker_run.out
│   │   └── execute_curl.out
│   ├── c2c-k8s-deployment/
│   │   ├── Cloud.toml
│   │   ├── build_output.out
│   │   ├── c2c_k8s_deployment.bal
│   │   ├── c2c_k8s_deployment.md
│   │   ├── docker_push.out
│   │   ├── execute_curl.out
│   │   ├── kubectl_apply.out
│   │   ├── kubectl_expose.out
│   │   ├── kubectl_pods.out
│   │   ├── kubectl_svc.out
│   │   └── minikube_ip.out
│   ├── cache-basics/
│   │   ├── cache_basics.bal
│   │   ├── cache_basics.md
│   │   ├── cache_basics.metatags
│   │   ├── cache_basics.out
│   │   └── tests/
│   │       └── cache_test.bal
│   ├── cache-invalidation/
│   │   ├── cache_invalidation.bal
│   │   ├── cache_invalidation.md
│   │   ├── cache_invalidation.metatags
│   │   ├── cache_invalidation.out
│   │   └── tests/
│   │       └── cache_test.bal
│   ├── casting-json-to-user-defined-type/
│   │   ├── casting_json_to_user_defined_type.bal
│   │   ├── casting_json_to_user_defined_type.md
│   │   ├── casting_json_to_user_defined_type.metatags
│   │   └── casting_json_to_user_defined_type.out
│   ├── cdc-advanced-service/
│   │   ├── cdc_advanced_service.bal
│   │   ├── cdc_advanced_service.md
│   │   ├── cdc_advanced_service.metatags
│   │   └── cdc_advanced_service.out
│   ├── cdc-prerequisite/
│   │   ├── README.md
│   │   ├── setup_finance_db.bal
│   │   ├── setup_store_db.bal
│   │   ├── test_cdc_advanced_service.bal
│   │   └── test_cdc_service.bal
│   ├── cdc-service/
│   │   ├── cdc_service.bal
│   │   ├── cdc_service.md
│   │   ├── cdc_service.metatags
│   │   └── cdc_service.out
│   ├── chat-agents/
│   │   ├── chat_agents.bal
│   │   ├── chat_agents.md
│   │   ├── chat_agents.metatags
│   │   └── chat_agents.out
│   ├── check-expression/
│   │   ├── check_expression.bal
│   │   ├── check_expression.md
│   │   ├── check_expression.metatags
│   │   └── check_expression.out
│   ├── check-semantics/
│   │   ├── check_semantics.bal
│   │   ├── check_semantics.md
│   │   ├── check_semantics.metatags
│   │   └── check_semantics.out
│   ├── child-loggers-with-context/
│   │   ├── child_loggers_with_context.bal
│   │   ├── child_loggers_with_context.md
│   │   ├── child_loggers_with_context.metatags
│   │   └── child_loggers_with_context.out
│   ├── client-class/
│   │   ├── client_class.bal
│   │   ├── client_class.md
│   │   ├── client_class.metatags
│   │   └── client_class.out
│   ├── combining-isolated-functions-and-lock/
│   │   ├── combining_isolated_functions_and_lock.bal
│   │   ├── combining_isolated_functions_and_lock.md
│   │   ├── combining_isolated_functions_and_lock.metatags
│   │   └── combining_isolated_functions_and_lock.out
│   ├── commit-rollback-handlers/
│   │   ├── commit_rollback_handlers.bal
│   │   ├── commit_rollback_handlers.md
│   │   ├── commit_rollback_handlers.metatags
│   │   └── commit_rollback_handlers.out
│   ├── computed-field-key/
│   │   ├── computed_field_key.bal
│   │   ├── computed_field_key.md
│   │   ├── computed_field_key.metatags
│   │   └── computed_field_key.out
│   ├── conditional-send/
│   │   ├── conditional_send.bal
│   │   ├── conditional_send.md
│   │   ├── conditional_send.metatags
│   │   └── conditional_send.out
│   ├── configurable-variables/
│   │   ├── configurable_variables.bal
│   │   ├── configurable_variables.md
│   │   ├── configurable_variables.metatags
│   │   └── configurable_variables.out
│   ├── configuring-via-cli/
│   │   ├── configuring_via_cli.bal
│   │   ├── configuring_via_cli.md
│   │   ├── configuring_via_cli.metatags
│   │   └── configuring_via_cli.out
│   ├── configuring-via-toml/
│   │   ├── configuring-via-toml.md
│   │   ├── configuring_via_toml.bal
│   │   ├── configuring_via_toml.metatags
│   │   └── configuring_via_toml.out
│   ├── const-and-final/
│   │   ├── const_and_final.bal
│   │   ├── const_and_final.md
│   │   ├── const_and_final.metatags
│   │   └── const_and_final.out
│   ├── constraint-validations/
│   │   ├── constraint_validations.bal
│   │   ├── constraint_validations.md
│   │   ├── constraint_validations.metatags
│   │   └── constraint_validations.out
│   ├── consuming-services/
│   │   ├── consuming_services.bal
│   │   ├── consuming_services.md
│   │   ├── consuming_services.metatags
│   │   └── consuming_services.out
│   ├── continue-statement/
│   │   ├── continue_statement.bal
│   │   ├── continue_statement.md
│   │   ├── continue_statement.metatags
│   │   └── continue_statement.out
│   ├── controlling-openness/
│   │   ├── controlling_openness.bal
│   │   ├── controlling_openness.md
│   │   ├── controlling_openness.metatags
│   │   └── controlling_openness.out
│   ├── convert-from-json-to-user-defined-type/
│   │   ├── convert_from_json_to_user_defined_type.bal
│   │   ├── convert_from_json_to_user_defined_type.md
│   │   ├── convert_from_json_to_user_defined_type.metatags
│   │   └── convert_from_json_to_user_defined_type.out
│   ├── converting-from-table-and-xml-to-json/
│   │   ├── converting_from_table_and_xml_to_json.bal
│   │   ├── converting_from_table_and_xml_to_json.md
│   │   ├── converting_from_table_and_xml_to_json.metatags
│   │   └── converting_from_table_and_xml_to_json.out
│   ├── converting-from-user-defined-type-to-json/
│   │   ├── converting_from_user_defined_type_to_json.bal
│   │   ├── converting_from_user_defined_type_to_json.md
│   │   ├── converting_from_user_defined_type_to_json.metatags
│   │   └── converting_from_user_defined_type_to_json.out
│   ├── counter-metrics/
│   │   ├── counter_metrics.bal
│   │   ├── counter_metrics.client.out
│   │   ├── counter_metrics.md
│   │   ├── counter_metrics.metatags
│   │   ├── counter_metrics.server.out
│   │   └── tests/
│   │       └── counter_metrics_test.bal
│   ├── covariance/
│   │   ├── covariance.bal
│   │   ├── covariance.md
│   │   ├── covariance.metatags
│   │   └── covariance.out
│   ├── create-maps-with-query/
│   │   ├── create_maps_with_query.bal
│   │   ├── create_maps_with_query.md
│   │   ├── create_maps_with_query.metatags
│   │   └── create_maps_with_query.out
│   ├── create-streams-with-query/
│   │   ├── create_streams_with_query.bal
│   │   ├── create_streams_with_query.md
│   │   ├── create_streams_with_query.metatags
│   │   └── create_streams_with_query.out
│   ├── create-tables-with-query/
│   │   ├── create_tables_with_query.bal
│   │   ├── create_tables_with_query.md
│   │   ├── create_tables_with_query.metatags
│   │   └── create_tables_with_query.out
│   ├── csv-streams-to-record-array/
│   │   ├── csv_streams_to_record_array.bal
│   │   ├── csv_streams_to_record_array.md
│   │   ├── csv_streams_to_record_array.metatags
│   │   └── csv_streams_to_record_array.out
│   ├── csv-string-to-anydata-array/
│   │   ├── csv_string_to_anydata_array.bal
│   │   ├── csv_string_to_anydata_array.md
│   │   ├── csv_string_to_anydata_array.metatags
│   │   └── csv_string_to_anydata_array.out
│   ├── csv-string-to-record-array/
│   │   ├── csv_string_to_record_array.bal
│   │   ├── csv_string_to_record_array.md
│   │   ├── csv_string_to_record_array.metatags
│   │   └── csv_string_to_record_array.out
│   ├── csv-user-configurations/
│   │   ├── csv_user_configurations.bal
│   │   ├── csv_user_configurations.md
│   │   ├── csv_user_configurations.metatags
│   │   └── csv_user_configurations.out
│   ├── custom-logger/
│   │   ├── custom_logger.bal
│   │   ├── custom_logger.md
│   │   ├── custom_logger.metatags
│   │   └── custom_logger.out
│   ├── custom-prefetch-methods/
│   │   ├── custom_prefetch_methods.bal
│   │   ├── custom_prefetch_methods.client.out
│   │   ├── custom_prefetch_methods.graphql
│   │   ├── custom_prefetch_methods.md
│   │   ├── custom_prefetch_methods.metatags
│   │   └── custom_prefetch_methods.server.out
│   ├── decimal-type/
│   │   ├── decimal_type.bal
│   │   ├── decimal_type.md
│   │   ├── decimal_type.metatags
│   │   └── decimal_type.out
│   ├── default-values-for-function-parameters/
│   │   ├── default_values_for_function_parameters.bal
│   │   ├── default_values_for_function_parameters.md
│   │   ├── default_values_for_function_parameters.metatags
│   │   └── default_values_for_function_parameters.out
│   ├── default-values-for-record-fields/
│   │   ├── default_values_for_record_fields.bal
│   │   ├── default_values_for_record_fields.md
│   │   ├── default_values_for_record_fields.metatags
│   │   └── default_values_for_record_fields.out
│   ├── defining-classes/
│   │   ├── defining_classes.bal
│   │   ├── defining_classes.md
│   │   ├── defining_classes.metatags
│   │   └── defining_classes.out
│   ├── dependent-types/
│   │   ├── dependent_types.bal
│   │   ├── dependent_types.md
│   │   ├── dependent_types.metatags
│   │   └── dependent_types.out
│   ├── destructure-records-using-query/
│   │   ├── destructure_records_using_query.bal
│   │   ├── destructure_records_using_query.md
│   │   ├── destructure_records_using_query.metatags
│   │   └── destructure_records_using_query.out
│   ├── direct-llm-calls/
│   │   ├── direct_llm_calls.bal
│   │   ├── direct_llm_calls.md
│   │   ├── direct_llm_calls.metatags
│   │   └── direct_llm_calls.out
│   ├── direct-llm-calls-with-history/
│   │   ├── direct_llm_calls_with_history.bal
│   │   ├── direct_llm_calls_with_history.md
│   │   ├── direct_llm_calls_with_history.metatags
│   │   └── direct_llm_calls_with_history.out
│   ├── direct-llm-calls-with-multimodal-input/
│   │   ├── direct_llm_calls_with_multimodal_input.bal
│   │   ├── direct_llm_calls_with_multimodal_input.md
│   │   ├── direct_llm_calls_with_multimodal_input.metatags
│   │   └── direct_llm_calls_with_multimodal_input.out
│   ├── directories/
│   │   ├── directories.bal
│   │   ├── directories.md
│   │   ├── directories.metatags
│   │   └── directories.out
│   ├── directory-listener/
│   │   ├── directory_listener.bal
│   │   ├── directory_listener.md
│   │   ├── directory_listener.metatags
│   │   └── directory_listener.out
│   ├── distinct-object-types/
│   │   ├── distinct_object_types.bal
│   │   ├── distinct_object_types.md
│   │   ├── distinct_object_types.metatags
│   │   └── distinct_object_types.out
│   ├── docker-hello-world/
│   │   ├── Cloud.toml
│   │   ├── build_output.out
│   │   ├── docker_hello_world.bal
│   │   ├── docker_hello_world.md
│   │   ├── docker_images.out
│   │   ├── docker_run.out
│   │   └── execute_curl.out
│   ├── documentation/
│   │   ├── documentation.bal
│   │   ├── documentation.md
│   │   ├── documentation.metatags
│   │   └── documentation.out
│   ├── dynamic-listener/
│   │   ├── dynamic_listener.bal
│   │   ├── dynamic_listener.client.out
│   │   ├── dynamic_listener.md
│   │   ├── dynamic_listener.metatags
│   │   └── dynamic_listener.server.out
│   ├── edi-to-record/
│   │   ├── bal_project.out
│   │   ├── codegen_command.out
│   │   ├── edi_to_record.bal
│   │   ├── edi_to_record.md
│   │   ├── edi_to_record.metatags
│   │   ├── order.edi
│   │   ├── output.out
│   │   ├── package_structure.out
│   │   ├── schema.json
│   │   └── tool_pull_command.out
│   ├── email-client-ssl-tls/
│   │   ├── email_client_ssl_tls.bal
│   │   ├── email_client_ssl_tls.md
│   │   ├── email_client_ssl_tls.metatags
│   │   └── email_client_ssl_tls.out
│   ├── email-service-ssl-tls/
│   │   ├── email_service_ssl_tls.bal
│   │   ├── email_service_ssl_tls.md
│   │   ├── email_service_ssl_tls.metatags
│   │   └── email_service_ssl_tls.out
│   ├── ensureType-function/
│   │   ├── ensureType_function.bal
│   │   ├── ensureType_function.md
│   │   ├── ensureType_function.metatags
│   │   └── ensureType_function.out
│   ├── enumerations/
│   │   ├── enumerations.bal
│   │   ├── enumerations.md
│   │   ├── enumerations.metatags
│   │   └── enumerations.out
│   ├── environment-variables/
│   │   ├── environment_variables.bal
│   │   ├── environment_variables.md
│   │   ├── environment_variables.metatags
│   │   └── environment_variables.out
│   ├── error-binding-pattern/
│   │   ├── error_binding_pattern.bal
│   │   ├── error_binding_pattern.md
│   │   ├── error_binding_pattern.metatags
│   │   └── error_binding_pattern.out
│   ├── error-binding-pattern-in-match-statement/
│   │   ├── error_binding_pattern_in_match_statement.bal
│   │   ├── error_binding_pattern_in_match_statement.md
│   │   ├── error_binding_pattern_in_match_statement.metatags
│   │   └── error_binding_pattern_in_match_statement.out
│   ├── error-cause/
│   │   ├── error_cause.bal
│   │   ├── error_cause.md
│   │   ├── error_cause.metatags
│   │   └── error_cause.out
│   ├── error-detail/
│   │   ├── error_detail.bal
│   │   ├── error_detail.md
│   │   ├── error_detail.metatags
│   │   └── error_detail.out
│   ├── error-handling/
│   │   ├── error_handling.bal
│   │   ├── error_handling.md
│   │   ├── error_handling.metatags
│   │   └── error_handling.out
│   ├── error-logging/
│   │   ├── error_logging.bal
│   │   ├── error_logging.md
│   │   ├── error_logging.metatags
│   │   └── error_logging.out
│   ├── error-reporting/
│   │   ├── error_reporting.bal
│   │   ├── error_reporting.md
│   │   ├── error_reporting.metatags
│   │   └── error_reporting.out
│   ├── error-subtyping/
│   │   ├── error_subtyping.bal
│   │   ├── error_subtyping.md
│   │   ├── error_subtyping.metatags
│   │   └── error_subtyping.out
│   ├── error-type-intersection/
│   │   ├── error_type_intersection.bal
│   │   ├── error_type_intersection.md
│   │   ├── error_type_intersection.metatags
│   │   └── error_type_intersection.out
│   ├── expression-equality/
│   │   ├── expression_equality.bal
│   │   ├── expression_equality.md
│   │   ├── expression_equality.metatags
│   │   └── expression_equality.out
│   ├── expression-oriented-style/
│   │   ├── expression_oriented_style.bal
│   │   ├── expression_oriented_style.md
│   │   ├── expression_oriented_style.metatags
│   │   └── expression_oriented_style.out
│   ├── filepaths/
│   │   ├── filepaths.bal
│   │   ├── filepaths.md
│   │   ├── filepaths.metatags
│   │   ├── filepaths.out
│   │   └── tests/
│   │       └── filepath_test.bal
│   ├── files/
│   │   ├── files.bal
│   │   ├── files.md
│   │   ├── files.metatags
│   │   └── files.out
│   ├── filler-values-of-a-list/
│   │   ├── filler_values_of_a_list.bal
│   │   ├── filler_values_of_a_list.md
│   │   ├── filler_values_of_a_list.metatags
│   │   └── filler_values_of_a_list.out
│   ├── floating-point-numbers/
│   │   ├── floating_point_numbers.bal
│   │   ├── floating_point_numbers.md
│   │   ├── floating_point_numbers.metatags
│   │   └── floating_point_numbers.out
│   ├── flush/
│   │   ├── flush.bal
│   │   ├── flush.md
│   │   ├── flush.metatags
│   │   └── flush.out
│   ├── foreach-statement/
│   │   ├── foreach_statement.bal
│   │   ├── foreach_statement.md
│   │   ├── foreach_statement.metatags
│   │   └── foreach_statement.out
│   ├── fork/
│   │   ├── fork.bal
│   │   ├── fork.md
│   │   ├── fork.metatags
│   │   └── fork.out
│   ├── ftp-client-receive-file/
│   │   ├── ftp_client_receive_file.bal
│   │   ├── ftp_client_receive_file.md
│   │   ├── ftp_client_receive_file.metatags
│   │   └── ftp_client_receive_file.out
│   ├── ftp-client-send-file/
│   │   ├── ftp_client_send_file.bal
│   │   ├── ftp_client_send_file.md
│   │   ├── ftp_client_send_file.metatags
│   │   └── ftp_client_send_file.out
│   ├── ftp-service-receive-file/
│   │   ├── ftp_service_receive_file.bal
│   │   ├── ftp_service_receive_file.md
│   │   ├── ftp_service_receive_file.metatags
│   │   └── ftp_service_receive_file.out
│   ├── ftp-service-send-file/
│   │   ├── ftp_service_send_file.bal
│   │   ├── ftp_service_send_file.md
│   │   ├── ftp_service_send_file.metatags
│   │   └── ftp_service_send_file.out
│   ├── function-closure/
│   │   ├── function_closure.bal
│   │   ├── function_closure.md
│   │   ├── function_closure.metatags
│   │   └── function_closure.out
│   ├── function-pointers/
│   │   ├── function_pointers.bal
│   │   ├── function_pointers.md
│   │   ├── function_pointers.metatags
│   │   └── function_pointers.out
│   ├── function-types/
│   │   ├── function_types.bal
│   │   ├── function_types.md
│   │   ├── function_types.metatags
│   │   └── function_types.out
│   ├── function-values/
│   │   ├── function_values.bal
│   │   ├── function_values.md
│   │   ├── function_values.metatags
│   │   └── function_values.out
│   ├── functions/
│   │   ├── functions.bal
│   │   ├── functions.md
│   │   ├── functions.metatags
│   │   └── functions.out
│   ├── gauge-metrics/
│   │   ├── gauge_metrics.bal
│   │   ├── gauge_metrics.client.out
│   │   ├── gauge_metrics.md
│   │   ├── gauge_metrics.metatags
│   │   ├── gauge_metrics.server.out
│   │   └── tests/
│   │       └── gauge_metrics_test.bal
│   ├── graphql-client-error-handling/
│   │   ├── graphql_client_error_handling.bal
│   │   ├── graphql_client_error_handling.md
│   │   ├── graphql_client_error_handling.metatags
│   │   └── graphql_client_error_handling.out
│   ├── graphql-client-handle-partial-response/
│   │   ├── graphql_client_handle_partial_response.bal
│   │   ├── graphql_client_handle_partial_response.md
│   │   ├── graphql_client_handle_partial_response.metatags
│   │   └── graphql_client_handle_partial_response.out
│   ├── graphql-client-query-endpoint/
│   │   ├── graphql_client_query_endpoint.bal
│   │   ├── graphql_client_query_endpoint.md
│   │   ├── graphql_client_query_endpoint.metatags
│   │   └── graphql_client_query_endpoint.out
│   ├── graphql-client-security-basic-auth/
│   │   ├── graphql_client_security_basic_auth.bal
│   │   ├── graphql_client_security_basic_auth.md
│   │   ├── graphql_client_security_basic_auth.metatags
│   │   └── graphql_client_security_basic_auth.out
│   ├── graphql-client-security-jwt-authentication/
│   │   ├── graphql_client_security_jwt_authentication.bal
│   │   ├── graphql_client_security_jwt_authentication.md
│   │   ├── graphql_client_security_jwt_authentication.metatags
│   │   └── graphql_client_security_jwt_authentication.out
│   ├── graphql-client-security-mutual-ssl/
│   │   ├── graphql_client_security_mutual_ssl.bal
│   │   ├── graphql_client_security_mutual_ssl.md
│   │   ├── graphql_client_security_mutual_ssl.metatags
│   │   └── graphql_client_security_mutual_ssl.out
│   ├── graphql-client-security-oauth2-password-grant-type/
│   │   ├── graphql_client_security_oauth2_password_grant_type.bal
│   │   ├── graphql_client_security_oauth2_password_grant_type.md
│   │   ├── graphql_client_security_oauth2_password_grant_type.metatags
│   │   └── graphql_client_security_oauth2_password_grant_type.out
│   ├── graphql-client-security-ssl-tls/
│   │   ├── graphql_client_security_ssl_tls.bal
│   │   ├── graphql_client_security_ssl_tls.md
│   │   ├── graphql_client_security_ssl_tls.metatags
│   │   └── graphql_client_security_ssl_tls.out
│   ├── graphql-context/
│   │   ├── graphql_context.1.client.out
│   │   ├── graphql_context.2.client.out
│   │   ├── graphql_context.bal
│   │   ├── graphql_context.graphql
│   │   ├── graphql_context.md
│   │   ├── graphql_context.metatags
│   │   └── graphql_context.server.out
│   ├── graphql-dataloader/
│   │   ├── graphql_dataloader.bal
│   │   ├── graphql_dataloader.client.out
│   │   ├── graphql_dataloader.graphql
│   │   ├── graphql_dataloader.md
│   │   ├── graphql_dataloader.metatags
│   │   └── graphql_dataloader.server.out
│   ├── graphql-directives/
│   │   ├── graphql_directives.1.client.out
│   │   ├── graphql_directives.1.graphql
│   │   ├── graphql_directives.2.client.out
│   │   ├── graphql_directives.2.graphql
│   │   ├── graphql_directives.3.client.out
│   │   ├── graphql_directives.3.graphql
│   │   ├── graphql_directives.bal
│   │   ├── graphql_directives.md
│   │   ├── graphql_directives.metatags
│   │   └── graphql_directives.server.out
│   ├── graphql-documentation/
│   │   ├── graphql_documentation.bal
│   │   ├── graphql_documentation.client.out
│   │   ├── graphql_documentation.graphql
│   │   ├── graphql_documentation.md
│   │   ├── graphql_documentation.metatags
│   │   └── graphql_documentation.server.out
│   ├── graphql-field-interceptors/
│   │   ├── graphql_field_interceptors.bal
│   │   ├── graphql_field_interceptors.client.out
│   │   ├── graphql_field_interceptors.graphql
│   │   ├── graphql_field_interceptors.md
│   │   ├── graphql_field_interceptors.metatags
│   │   └── graphql_field_interceptors.server.out
│   ├── graphql-file-upload/
│   │   ├── graphql_file_upload.bal
│   │   ├── graphql_file_upload.client.out
│   │   ├── graphql_file_upload.md
│   │   ├── graphql_file_upload.metatags
│   │   └── graphql_file_upload.server.out
│   ├── graphql-graphiql/
│   │   ├── graphql_graphiql.bal
│   │   ├── graphql_graphiql.md
│   │   ├── graphql_graphiql.metatags
│   │   └── graphql_graphiql.out
│   ├── graphql-hello-world/
│   │   ├── graphql_hello_world.bal
│   │   ├── graphql_hello_world.client.out
│   │   ├── graphql_hello_world.graphql
│   │   ├── graphql_hello_world.md
│   │   ├── graphql_hello_world.metatags
│   │   └── graphql_hello_world.server.out
│   ├── graphql-hierarchical-resource-paths/
│   │   ├── graphql_hierarchical_resource_paths.bal
│   │   ├── graphql_hierarchical_resource_paths.client.out
│   │   ├── graphql_hierarchical_resource_paths.graphql
│   │   ├── graphql_hierarchical_resource_paths.md
│   │   ├── graphql_hierarchical_resource_paths.metatags
│   │   └── graphql_hierarchical_resource_paths.server.out
│   ├── graphql-id-scalar-type/
│   │   ├── graphql_id_scalar_type.bal
│   │   ├── graphql_id_scalar_type.client.out
│   │   ├── graphql_id_scalar_type.graphql
│   │   ├── graphql_id_scalar_type.md
│   │   ├── graphql_id_scalar_type.metatags
│   │   └── graphql_id_scalar_type.server.out
│   ├── graphql-input-constraint-validation/
│   │   ├── graphql_input_constraint_validation.bal
│   │   ├── graphql_input_constraint_validation.client.out
│   │   ├── graphql_input_constraint_validation.graphql
│   │   ├── graphql_input_constraint_validation.md
│   │   ├── graphql_input_constraint_validation.metatags
│   │   └── graphql_input_constraint_validation.server.out
│   ├── graphql-input-objects/
│   │   ├── graphql_input_objects.bal
│   │   ├── graphql_input_objects.client.out
│   │   ├── graphql_input_objects.graphql
│   │   ├── graphql_input_objects.md
│   │   ├── graphql_input_objects.metatags
│   │   └── graphql_input_objects.server.out
│   ├── graphql-input-types/
│   │   ├── graphql_input_types.bal
│   │   ├── graphql_input_types.client.out
│   │   ├── graphql_input_types.graphql
│   │   ├── graphql_input_types.md
│   │   ├── graphql_input_types.metatags
│   │   └── graphql_input_types.server.out
│   ├── graphql-interceptor-configurations/
│   │   ├── graphql_interceptor_configurations.bal
│   │   ├── graphql_interceptor_configurations.client.out
│   │   ├── graphql_interceptor_configurations.graphql
│   │   ├── graphql_interceptor_configurations.md
│   │   ├── graphql_interceptor_configurations.metatags
│   │   └── graphql_interceptor_configurations.server.out
│   ├── graphql-interfaces/
│   │   ├── graphql_interfaces.bal
│   │   ├── graphql_interfaces.client.out
│   │   ├── graphql_interfaces.graphql
│   │   ├── graphql_interfaces.md
│   │   ├── graphql_interfaces.metatags
│   │   └── graphql_interfaces.server.out
│   ├── graphql-interfaces-implementing-interfaces/
│   │   ├── graphql_interfaces_implementing_interfaces.bal
│   │   ├── graphql_interfaces_implementing_interfaces.client.out
│   │   ├── graphql_interfaces_implementing_interfaces.graphql
│   │   ├── graphql_interfaces_implementing_interfaces.md
│   │   ├── graphql_interfaces_implementing_interfaces.metatags
│   │   └── graphql_interfaces_implementing_interfaces.server.out
│   ├── graphql-mutations/
│   │   ├── graphql_mutations.bal
│   │   ├── graphql_mutations.client.out
│   │   ├── graphql_mutations.graphql
│   │   ├── graphql_mutations.md
│   │   ├── graphql_mutations.metatags
│   │   └── graphql_mutations.server.out
│   ├── graphql-returning-record-values/
│   │   ├── graphql_returning_record_values.bal
│   │   ├── graphql_returning_record_values.client.out
│   │   ├── graphql_returning_record_values.graphql
│   │   ├── graphql_returning_record_values.md
│   │   ├── graphql_returning_record_values.metatags
│   │   └── graphql_returning_record_values.server.out
│   ├── graphql-returning-service-objects/
│   │   ├── graphql_returning_service_objects.bal
│   │   ├── graphql_returning_service_objects.client.out
│   │   ├── graphql_returning_service_objects.graphql
│   │   ├── graphql_returning_service_objects.md
│   │   ├── graphql_returning_service_objects.metatags
│   │   └── graphql_returning_service_objects.server.out
│   ├── graphql-service-basic-auth-file-user-store/
│   │   ├── graphql_service_basic_auth_file_user_store.bal
│   │   ├── graphql_service_basic_auth_file_user_store.md
│   │   ├── graphql_service_basic_auth_file_user_store.metatags
│   │   └── graphql_service_basic_auth_file_user_store.server.out
│   ├── graphql-service-basic-auth-ldap-user-store/
│   │   ├── graphql_service_basic_auth_ldap_user_store.bal
│   │   ├── graphql_service_basic_auth_ldap_user_store.md
│   │   ├── graphql_service_basic_auth_ldap_user_store.metatags
│   │   └── graphql_service_basic_auth_ldap_user_store.server.out
│   ├── graphql-service-cache-invalidation/
│   │   ├── graphql_service_cache_invalidation.bal
│   │   ├── graphql_service_cache_invalidation.client.out
│   │   ├── graphql_service_cache_invalidation.graphql
│   │   ├── graphql_service_cache_invalidation.md
│   │   ├── graphql_service_cache_invalidation.metatags
│   │   └── graphql_service_cache_invalidation.server.out
│   ├── graphql-service-error-handling/
│   │   ├── graphql_service_error_handling.1.client.out
│   │   ├── graphql_service_error_handling.1.graphql
│   │   ├── graphql_service_error_handling.2.client.out
│   │   ├── graphql_service_error_handling.2.graphql
│   │   ├── graphql_service_error_handling.bal
│   │   ├── graphql_service_error_handling.md
│   │   ├── graphql_service_error_handling.metatags
│   │   └── graphql_service_error_handling.server.out
│   ├── graphql-service-field-level-caching/
│   │   ├── graphql_service_field_level_caching.bal
│   │   ├── graphql_service_field_level_caching.client.out
│   │   ├── graphql_service_field_level_caching.graphql
│   │   ├── graphql_service_field_level_caching.md
│   │   ├── graphql_service_field_level_caching.metatags
│   │   └── graphql_service_field_level_caching.server.out
│   ├── graphql-service-field-object/
│   │   ├── graphql_service_field_object.1.client.out
│   │   ├── graphql_service_field_object.1.graphql
│   │   ├── graphql_service_field_object.2.client.out
│   │   ├── graphql_service_field_object.2.graphql
│   │   ├── graphql_service_field_object.bal
│   │   ├── graphql_service_field_object.md
│   │   ├── graphql_service_field_object.metatags
│   │   ├── graphql_service_field_object.server.1.out
│   │   ├── graphql_service_field_object.server.2.out
│   │   └── graphql_service_field_object.server.3.out
│   ├── graphql-service-interceptors/
│   │   ├── graphql_service_interceptors.bal
│   │   ├── graphql_service_interceptors.client.out
│   │   ├── graphql_service_interceptors.graphql
│   │   ├── graphql_service_interceptors.md
│   │   ├── graphql_service_interceptors.metatags
│   │   └── graphql_service_interceptors.server.out
│   ├── graphql-service-jwt-auth/
│   │   ├── graphql_service_jwt_auth.bal
│   │   ├── graphql_service_jwt_auth.md
│   │   ├── graphql_service_jwt_auth.metatags
│   │   └── graphql_service_jwt_auth.server.out
│   ├── graphql-service-mutual-ssl/
│   │   ├── graphql_service_mutual_ssl.bal
│   │   ├── graphql_service_mutual_ssl.md
│   │   ├── graphql_service_mutual_ssl.metatags
│   │   └── graphql_service_mutual_ssl.server.out
│   ├── graphql-service-oauth2/
│   │   ├── graphql_service_oauth2.bal
│   │   ├── graphql_service_oauth2.md
│   │   ├── graphql_service_oauth2.metatags
│   │   └── graphql_service_oauth2.server.out
│   ├── graphql-service-operation-level-caching/
│   │   ├── graphql_service_operation_level_caching.bal
│   │   ├── graphql_service_operation_level_caching.client.out
│   │   ├── graphql_service_operation_level_caching.graphql
│   │   ├── graphql_service_operation_level_caching.md
│   │   ├── graphql_service_operation_level_caching.metatags
│   │   └── graphql_service_operation_level_caching.server.out
│   ├── graphql-service-query-complexity/
│   │   ├── graphql_service_query_complexity.1.graphql
│   │   ├── graphql_service_query_complexity.2.graphql
│   │   ├── graphql_service_query_complexity.bal
│   │   ├── graphql_service_query_complexity.client.1.out
│   │   ├── graphql_service_query_complexity.client.2.out
│   │   ├── graphql_service_query_complexity.md
│   │   ├── graphql_service_query_complexity.metatags
│   │   └── graphql_service_query_complexity.server.out
│   ├── graphql-service-ssl-tls/
│   │   ├── graphql_service_ssl_tls.bal
│   │   ├── graphql_service_ssl_tls.md
│   │   ├── graphql_service_ssl_tls.metatags
│   │   └── graphql_service_ssl_tls.server.out
│   ├── graphql-service-union-types/
│   │   ├── graphql_service_union_types.bal
│   │   ├── graphql_service_union_types.client.out
│   │   ├── graphql_service_union_types.graphql
│   │   ├── graphql_service_union_types.md
│   │   ├── graphql_service_union_types.metatags
│   │   └── graphql_service_union_types.server.out
│   ├── graphql-subscriptions/
│   │   ├── graphql_subscriptions.bal
│   │   ├── graphql_subscriptions.client.out
│   │   ├── graphql_subscriptions.graphql
│   │   ├── graphql_subscriptions.md
│   │   ├── graphql_subscriptions.metatags
│   │   └── graphql_subscriptions.server.out
│   ├── grpc-client-basic-auth/
│   │   ├── grpc_client_basic_auth.bal
│   │   ├── grpc_client_basic_auth.md
│   │   ├── grpc_client_basic_auth.metatags
│   │   ├── grpc_client_basic_auth.out
│   │   └── grpc_simple.proto
│   ├── grpc-client-bearer-token-auth/
│   │   ├── grpc_client_bearer_token_auth.bal
│   │   ├── grpc_client_bearer_token_auth.md
│   │   ├── grpc_client_bearer_token_auth.metatags
│   │   ├── grpc_client_bearer_token_auth.out
│   │   └── grpc_simple.proto
│   ├── grpc-client-bidirectional-streaming/
│   │   ├── grpc_bidirectional_streaming.md
│   │   ├── grpc_bidirectional_streaming.metatags
│   │   ├── grpc_bidirectional_streaming.out
│   │   ├── grpc_bidirectional_streaming.proto
│   │   ├── grpc_bidirectional_streaming_service_client.bal
│   │   └── grpc_bidirectional_streaming_service_client.out
│   ├── grpc-client-client-streaming/
│   │   ├── grpc_client_streaming.md
│   │   ├── grpc_client_streaming.metatags
│   │   ├── grpc_client_streaming.out
│   │   ├── grpc_client_streaming.proto
│   │   ├── grpc_client_streaming_service_client.bal
│   │   └── grpc_client_streaming_service_client.out
│   ├── grpc-client-headers/
│   │   ├── grpc_simple.proto
│   │   ├── grpc_simple_with_headers.md
│   │   ├── grpc_simple_with_headers.metatags
│   │   ├── grpc_simple_with_headers_service_client.bal
│   │   └── grpc_simple_with_headers_service_client.out
│   ├── grpc-client-mutual-ssl/
│   │   ├── grpc_client_mutual_ssl.bal
│   │   ├── grpc_client_mutual_ssl.md
│   │   ├── grpc_client_mutual_ssl.metatags
│   │   ├── grpc_client_mutual_ssl.out
│   │   └── grpc_simple.proto
│   ├── grpc-client-oauth2-client-credentials-grant-type/
│   │   ├── grpc_client_oauth2_client_credentials_grant_type.bal
│   │   ├── grpc_client_oauth2_client_credentials_grant_type.md
│   │   ├── grpc_client_oauth2_client_credentials_grant_type.metatags
│   │   ├── grpc_client_oauth2_client_credentials_grant_type.out
│   │   └── grpc_simple.proto
│   ├── grpc-client-oauth2-jwt-bearer-grant-type/
│   │   ├── grpc_client_oauth2_jwt_bearer_grant_type.bal
│   │   ├── grpc_client_oauth2_jwt_bearer_grant_type.md
│   │   ├── grpc_client_oauth2_jwt_bearer_grant_type.metatags
│   │   ├── grpc_client_oauth2_jwt_bearer_grant_type.out
│   │   └── grpc_simple.proto
│   ├── grpc-client-oauth2-password-grant-type/
│   │   ├── grpc_client_oauth2_password_grant_type.bal
│   │   ├── grpc_client_oauth2_password_grant_type.md
│   │   ├── grpc_client_oauth2_password_grant_type.metatags
│   │   ├── grpc_client_oauth2_password_grant_type.out
│   │   └── grpc_simple.proto
│   ├── grpc-client-oauth2-refresh-token-grant-type/
│   │   ├── grpc_client_oauth2_refresh_token_grant_type.bal
│   │   ├── grpc_client_oauth2_refresh_token_grant_type.md
│   │   ├── grpc_client_oauth2_refresh_token_grant_type.metatags
│   │   ├── grpc_client_oauth2_refresh_token_grant_type.out
│   │   └── grpc_simple.proto
│   ├── grpc-client-self-signed-jwt-auth/
│   │   ├── grpc_client_self_signed_jwt_auth.bal
│   │   ├── grpc_client_self_signed_jwt_auth.md
│   │   ├── grpc_client_self_signed_jwt_auth.metatags
│   │   ├── grpc_client_self_signed_jwt_auth.out
│   │   └── grpc_simple.proto
│   ├── grpc-client-server-streaming/
│   │   ├── grpc_server_streaming.md
│   │   ├── grpc_server_streaming.metatags
│   │   ├── grpc_server_streaming.out
│   │   ├── grpc_server_streaming.proto
│   │   ├── grpc_server_streaming_service_client.bal
│   │   └── grpc_server_streaming_service_client.out
│   ├── grpc-client-set-deadline/
│   │   ├── grpc_client_set_deadline.bal
│   │   ├── grpc_client_set_deadline.md
│   │   ├── grpc_client_set_deadline.metatags
│   │   ├── grpc_client_set_deadline.out
│   │   └── grpc_simple.proto
│   ├── grpc-client-simple/
│   │   ├── grpc_client_simple.bal
│   │   ├── grpc_client_simple.md
│   │   ├── grpc_client_simple.metatags
│   │   ├── grpc_client_simple.out
│   │   ├── grpc_client_simple.proto
│   │   └── grpc_simple.out
│   ├── grpc-client-ssl-tls/
│   │   ├── grpc_client_ssl_tls.bal
│   │   ├── grpc_client_ssl_tls.md
│   │   ├── grpc_client_ssl_tls.metatags
│   │   ├── grpc_client_ssl_tls.out
│   │   └── grpc_simple.proto
│   ├── grpc-server-reflection/
│   │   ├── grpc_server_reflection.bal
│   │   ├── grpc_server_reflection.md
│   │   ├── grpc_server_reflection.metatags
│   │   ├── grpc_server_reflection.out
│   │   ├── grpc_server_reflection_grpcurl.out
│   │   └── grpc_simple.proto
│   ├── grpc-service-basic-auth-file-user-store/
│   │   ├── grpc_service_basic_auth_file_user_store.bal
│   │   ├── grpc_service_basic_auth_file_user_store.md
│   │   ├── grpc_service_basic_auth_file_user_store.metatags
│   │   ├── grpc_service_basic_auth_file_user_store.server.out
│   │   └── grpc_simple.proto
│   ├── grpc-service-basic-auth-ldap-user-store/
│   │   ├── grpc_service_basic_auth_ldap_user_store.bal
│   │   ├── grpc_service_basic_auth_ldap_user_store.md
│   │   ├── grpc_service_basic_auth_ldap_user_store.metatags
│   │   ├── grpc_service_basic_auth_ldap_user_store.server.out
│   │   └── grpc_simple.proto
│   ├── grpc-service-bidirectional-streaming/
│   │   ├── grpc_bidirectional_streaming.md
│   │   ├── grpc_bidirectional_streaming.metatags
│   │   ├── grpc_bidirectional_streaming.out
│   │   ├── grpc_bidirectional_streaming.proto
│   │   ├── grpc_bidirectional_streaming_service.bal
│   │   ├── grpc_bidirectional_streaming_service.out
│   │   └── tests/
│   │       └── grpc_bidirectional_streaming_test.bal
│   ├── grpc-service-check-deadline/
│   │   ├── grpc_service_check_deadline.bal
│   │   ├── grpc_service_check_deadline.md
│   │   ├── grpc_service_check_deadline.metatags
│   │   ├── grpc_service_check_deadline.out
│   │   └── grpc_simple.proto
│   ├── grpc-service-client-streaming/
│   │   ├── grpc_client_streaming.md
│   │   ├── grpc_client_streaming.metatags
│   │   ├── grpc_client_streaming.out
│   │   ├── grpc_client_streaming.proto
│   │   ├── grpc_client_streaming_service.bal
│   │   ├── grpc_client_streaming_service.out
│   │   └── tests/
│   │       └── grpc_client_streaming_test.bal
│   ├── grpc-service-headers/
│   │   ├── grpc_simple.proto
│   │   ├── grpc_simple_with_headers.md
│   │   ├── grpc_simple_with_headers.metatags
│   │   ├── grpc_simple_with_headers_service.bal
│   │   ├── grpc_simple_with_headers_service.out
│   │   └── tests/
│   │       └── grpc_simple_with_headers_test.bal
│   ├── grpc-service-jwt-auth/
│   │   ├── grpc_service_jwt_auth.bal
│   │   ├── grpc_service_jwt_auth.md
│   │   ├── grpc_service_jwt_auth.metatags
│   │   ├── grpc_service_jwt_auth.server.out
│   │   └── grpc_simple.proto
│   ├── grpc-service-mutual-ssl/
│   │   ├── grpc_service_mutual_ssl.bal
│   │   ├── grpc_service_mutual_ssl.md
│   │   ├── grpc_service_mutual_ssl.metatags
│   │   ├── grpc_service_mutual_ssl.server.out
│   │   └── grpc_simple.proto
│   ├── grpc-service-oauth2/
│   │   ├── grpc_service_oauth2.bal
│   │   ├── grpc_service_oauth2.md
│   │   ├── grpc_service_oauth2.metatags
│   │   ├── grpc_service_oauth2.server.out
│   │   └── grpc_simple.proto
│   ├── grpc-service-server-streaming/
│   │   ├── grpc_server_streaming.md
│   │   ├── grpc_server_streaming.metatags
│   │   ├── grpc_server_streaming.out
│   │   ├── grpc_server_streaming.proto
│   │   ├── grpc_server_streaming_service.bal
│   │   ├── grpc_server_streaming_service.out
│   │   └── tests/
│   │       └── grpc_server_streaming_test.bal
│   ├── grpc-service-simple/
│   │   ├── grpc_service_simple.bal
│   │   ├── grpc_service_simple.md
│   │   ├── grpc_service_simple.metatags
│   │   ├── grpc_service_simple.out
│   │   ├── grpc_service_simple.proto
│   │   ├── grpc_simple.out
│   │   └── tests/
│   │       └── grpc_simple_test.bal
│   ├── grpc-service-ssl-tls/
│   │   ├── grpc_service_ssl_tls.bal
│   │   ├── grpc_service_ssl_tls.md
│   │   ├── grpc_service_ssl_tls.metatags
│   │   ├── grpc_service_ssl_tls.server.out
│   │   └── grpc_simple.proto
│   ├── hello-world/
│   │   ├── hello_world.bal
│   │   ├── hello_world.md
│   │   ├── hello_world.metatags
│   │   └── hello_world.out
│   ├── hello-world-service/
│   │   ├── hello_world_service.bal
│   │   ├── hello_world_service.client.out
│   │   ├── hello_world_service.md
│   │   ├── hello_world_service.metatags
│   │   └── hello_world_service.server.out
│   ├── hierarchical-resources/
│   │   ├── hierarchical_resources.bal
│   │   ├── hierarchical_resources.client.out
│   │   ├── hierarchical_resources.md
│   │   ├── hierarchical_resources.metatags
│   │   └── hierarchical_resources.server.out
│   ├── http-1-1-to-2-0-protocol-switch/
│   │   └── http_1_1_to_2_0_protocol_switch.md
│   ├── http-100-continue/
│   │   ├── http_100_continue.bal
│   │   ├── http_100_continue.client.out
│   │   ├── http_100_continue.md
│   │   ├── http_100_continue.metatags
│   │   ├── http_100_continue.server.out
│   │   └── tests/
│   │       └── http_100_continue_test.bal
│   ├── http-2-0-client-server-push/
│   │   ├── http_2_0_client_server_push.bal
│   │   ├── http_2_0_client_server_push.md
│   │   ├── http_2_0_client_server_push.metatags
│   │   └── http_2_0_client_server_push.out
│   ├── http-2-0-server-push/
│   │   ├── http_2_0_server_push.bal
│   │   ├── http_2_0_server_push.md
│   │   ├── http_2_0_server_push.metatags
│   │   └── http_2_0_server_push.out
│   ├── http-2-prior-knowledge-client/
│   │   ├── http_2_prior_knowledge_client.bal
│   │   ├── http_2_prior_knowledge_client.md
│   │   ├── http_2_prior_knowledge_client.metatags
│   │   └── http_2_prior_knowledge_client.out
│   ├── http-2-to-1-1-downgrade-client/
│   │   ├── http_2_to_1_1_downgrade_client.bal
│   │   ├── http_2_to_1_1_downgrade_client.md
│   │   ├── http_2_to_1_1_downgrade_client.metatags
│   │   └── http_2_to_1_1_downgrade_client.out
│   ├── http-2-to-1-1-downgrade-service/
│   │   ├── http_2_to_1_1_downgrade_service.bal
│   │   ├── http_2_to_1_1_downgrade_service.client.out
│   │   ├── http_2_to_1_1_downgrade_service.md
│   │   ├── http_2_to_1_1_downgrade_service.metatags
│   │   ├── http_2_to_1_1_downgrade_service.server.out
│   │   └── tests/
│   │       └── http_2_0_to_1_1_downgrade_service_test.bal
│   ├── http-access-logs/
│   │   ├── http_access_logs.bal
│   │   ├── http_access_logs.client.out
│   │   ├── http_access_logs.md
│   │   ├── http_access_logs.metatags
│   │   └── http_access_logs.server.out
│   ├── http-basic-rest-service/
│   │   ├── http_basic_rest_service.bal
│   │   ├── http_basic_rest_service.client.1.out
│   │   ├── http_basic_rest_service.client.2.out
│   │   ├── http_basic_rest_service.md
│   │   ├── http_basic_rest_service.metatags
│   │   ├── http_basic_rest_service.server.out
│   │   └── tests/
│   │       └── http_basic_rest_service_test.bal
│   ├── http-caching-client/
│   │   ├── http_caching_client.bal
│   │   ├── http_caching_client.md
│   │   ├── http_caching_client.metatags
│   │   ├── http_caching_client.out
│   │   └── tests/
│   │       └── http_caching_client_test.bal
│   ├── http-caller/
│   │   ├── http_caller.bal
│   │   ├── http_caller.client.out
│   │   ├── http_caller.md
│   │   ├── http_caller.metatags
│   │   ├── http_caller.server.out
│   │   └── tests/
│   │       └── http_caller_test.bal
│   ├── http-circuit-breaker/
│   │   ├── http_circuit_breaker.bal
│   │   ├── http_circuit_breaker.md
│   │   ├── http_circuit_breaker.metatags
│   │   ├── http_circuit_breaker.out
│   │   └── tests/
│   │       └── http_circuit_breaker_test.bal
│   ├── http-client-basic-authentication/
│   │   ├── http_client_basic_authentication.bal
│   │   ├── http_client_basic_authentication.md
│   │   ├── http_client_basic_authentication.metatags
│   │   └── http_client_basic_authentication.out
│   ├── http-client-bearer-token-authentication/
│   │   ├── http_client_bearer_token_authentication.bal
│   │   ├── http_client_bearer_token_authentication.md
│   │   ├── http_client_bearer_token_authentication.metatags
│   │   └── http_client_bearer_token_authentication.out
│   ├── http-client-chunking/
│   │   ├── http_client_chunking.bal
│   │   ├── http_client_chunking.md
│   │   ├── http_client_chunking.metatags
│   │   ├── http_client_chunking.out
│   │   └── tests/
│   │       └── http_client_chunking_test.bal
│   ├── http-client-data-binding/
│   │   ├── http_client_data_binding.bal
│   │   ├── http_client_data_binding.md
│   │   ├── http_client_data_binding.metatags
│   │   └── http_client_data_binding.out
│   ├── http-client-file-upload/
│   │   ├── http_client_file_upload.bal
│   │   ├── http_client_file_upload.md
│   │   ├── http_client_file_upload.metatags
│   │   └── http_client_file_upload.out
│   ├── http-client-header-parameter/
│   │   ├── http_client_header_parameter.bal
│   │   ├── http_client_header_parameter.md
│   │   ├── http_client_header_parameter.metatags
│   │   ├── http_client_header_parameter.out
│   │   └── http_client_header_parameter_post.bal
│   ├── http-client-mutual-ssl/
│   │   ├── http_client_mutual_ssl.bal
│   │   ├── http_client_mutual_ssl.md
│   │   ├── http_client_mutual_ssl.metatags
│   │   └── http_client_mutual_ssl.out
│   ├── http-client-oauth2-client-credentials-grant-type/
│   │   ├── http_client_oauth2_client_credentials_grant_type.bal
│   │   ├── http_client_oauth2_client_credentials_grant_type.md
│   │   ├── http_client_oauth2_client_credentials_grant_type.metatags
│   │   └── http_client_oauth2_client_credentials_grant_type.out
│   ├── http-client-oauth2-jwt-bearer-grant-type/
│   │   ├── http_client_oauth2_jwt_bearer_grant_type.bal
│   │   ├── http_client_oauth2_jwt_bearer_grant_type.md
│   │   ├── http_client_oauth2_jwt_bearer_grant_type.metatags
│   │   └── http_client_oauth2_jwt_bearer_grant_type.out
│   ├── http-client-oauth2-password-grant-type/
│   │   ├── http_client_oauth2_password_grant_type.bal
│   │   ├── http_client_oauth2_password_grant_type.md
│   │   ├── http_client_oauth2_password_grant_type.metatags
│   │   └── http_client_oauth2_password_grant_type.out
│   ├── http-client-oauth2-refresh-token-grant-type/
│   │   ├── http_client_oauth2_refresh_token_grant_type.bal
│   │   ├── http_client_oauth2_refresh_token_grant_type.md
│   │   ├── http_client_oauth2_refresh_token_grant_type.metatags
│   │   └── http_client_oauth2_refresh_token_grant_type.out
│   ├── http-client-path-parameter/
│   │   ├── http_client_path_parameter.bal
│   │   ├── http_client_path_parameter.md
│   │   ├── http_client_path_parameter.metatags
│   │   └── http_client_path_parameter.out
│   ├── http-client-payload-constraint-validation/
│   │   ├── http_client_payload_constraint_validation.bal
│   │   ├── http_client_payload_constraint_validation.md
│   │   ├── http_client_payload_constraint_validation.metatags
│   │   └── http_client_payload_constraint_validation.out
│   ├── http-client-query-parameter/
│   │   ├── http_client_query_parameter.bal
│   │   ├── http_client_query_parameter.md
│   │   ├── http_client_query_parameter.metatags
│   │   ├── http_client_query_parameter.out
│   │   └── http_client_query_parameter_post.bal
│   ├── http-client-redirects/
│   │   ├── http_client_redirects.bal
│   │   ├── http_client_redirects.md
│   │   ├── http_client_redirects.metatags
│   │   ├── http_client_redirects.out
│   │   └── tests/
│   │       └── http_client_redirects_test.bal
│   ├── http-client-self-signed-jwt-authentication/
│   │   ├── http_client_self_signed_jwt_authentication.bal
│   │   ├── http_client_self_signed_jwt_authentication.md
│   │   ├── http_client_self_signed_jwt_authentication.metatags
│   │   └── http_client_self_signed_jwt_authentication.out
│   ├── http-client-send-request-receive-response/
│   │   ├── http_client_send_request_receive_response.bal
│   │   ├── http_client_send_request_receive_response.md
│   │   ├── http_client_send_request_receive_response.metatags
│   │   ├── http_client_send_request_receive_response.out
│   │   └── tests/
│   │       └── http_client_send_request_receive_response_test.bal
│   ├── http-client-ssl-tls/
│   │   ├── http_client_ssl_tls.bal
│   │   ├── http_client_ssl_tls.md
│   │   ├── http_client_ssl_tls.metatags
│   │   └── http_client_ssl_tls.out
│   ├── http-compression/
│   │   ├── http_compression.bal
│   │   ├── http_compression.client.out
│   │   ├── http_compression.md
│   │   ├── http_compression.metatags
│   │   ├── http_compression.server.out
│   │   └── tests/
│   │       └── http_compression_test.bal
│   ├── http-cookies-client/
│   │   ├── http_cookies_client.bal
│   │   ├── http_cookies_client.md
│   │   ├── http_cookies_client.metatags
│   │   └── http_cookies_client.out
│   ├── http-cookies-service/
│   │   ├── http_cookies_service.bal
│   │   ├── http_cookies_service.md
│   │   ├── http_cookies_service.metatags
│   │   └── http_cookies_service.out
│   ├── http-cors/
│   │   ├── http_cors.bal
│   │   ├── http_cors.client.out
│   │   ├── http_cors.md
│   │   ├── http_cors.metatags
│   │   ├── http_cors.server.out
│   │   └── tests/
│   │       └── http_cors_test.bal
│   ├── http-default-error-handling/
│   │   ├── http_default_error_handling.bal
│   │   ├── http_default_error_handling.client.out
│   │   ├── http_default_error_handling.md
│   │   ├── http_default_error_handling.metatags
│   │   ├── http_default_error_handling.server.out
│   │   └── tests/
│   │       └── http_default_error_handling_test.bal
│   ├── http-default-resource/
│   │   ├── http_default_resource.bal
│   │   ├── http_default_resource.client.out
│   │   ├── http_default_resource.md
│   │   ├── http_default_resource.metatags
│   │   ├── http_default_resource.server.out
│   │   └── tests/
│   │       └── http_default_resource_test.bal
│   ├── http-error-handling/
│   │   ├── http_error_handling.bal
│   │   ├── http_error_handling.client.out
│   │   ├── http_error_handling.md
│   │   ├── http_error_handling.metatags
│   │   ├── http_error_handling.server.out
│   │   └── tests/
│   │       └── http_error_handling_test.bal
│   ├── http-failover/
│   │   ├── http_failover.bal
│   │   ├── http_failover.md
│   │   ├── http_failover.metatags
│   │   ├── http_failover.out
│   │   └── tests/
│   │       └── http_failover_test.bal
│   ├── http-header-param/
│   │   ├── http_header_param.bal
│   │   ├── http_header_param.client.out
│   │   ├── http_header_param.md
│   │   ├── http_header_param.metatags
│   │   ├── http_header_param.server.out
│   │   └── tests/
│   │       └── http_header_param_test.bal
│   ├── http-interceptor-error-handling/
│   │   ├── http_interceptor_error_handling.bal
│   │   ├── http_interceptor_error_handling.client.out
│   │   ├── http_interceptor_error_handling.md
│   │   ├── http_interceptor_error_handling.metatags
│   │   ├── http_interceptor_error_handling.server.out
│   │   └── tests/
│   │       └── http_interceptor_error_handling_test.bal
│   ├── http-load-balancer/
│   │   ├── http_load_balancer.bal
│   │   ├── http_load_balancer.md
│   │   ├── http_load_balancer.metatags
│   │   ├── http_load_balancer.out
│   │   └── tests/
│   │       └── http_load_balancer_test.bal
│   ├── http-matrix-param/
│   │   ├── http_matrix_param.bal
│   │   ├── http_matrix_param.client.out
│   │   ├── http_matrix_param.md
│   │   ├── http_matrix_param.metatags
│   │   ├── http_matrix_param.server.out
│   │   └── tests/
│   │       └── http_matrix_param_test.bal
│   ├── http-passthrough/
│   │   ├── http_passthrough.bal
│   │   ├── http_passthrough.client.out
│   │   ├── http_passthrough.md
│   │   ├── http_passthrough.metatags
│   │   ├── http_passthrough.server.out
│   │   └── tests/
│   │       └── http_passthrough_test.bal
│   ├── http-path-param/
│   │   ├── http_path_param.bal
│   │   ├── http_path_param.client.out
│   │   ├── http_path_param.md
│   │   ├── http_path_param.metatags
│   │   ├── http_path_param.server.out
│   │   └── tests/
│   │       └── http_path_param_test.bal
│   ├── http-query-parameter/
│   │   ├── http_query_parameter.bal
│   │   ├── http_query_parameter.client.out
│   │   ├── http_query_parameter.md
│   │   ├── http_query_parameter.metatags
│   │   ├── http_query_parameter.server.out
│   │   └── tests/
│   │       └── http_query_parameter_test.bal
│   ├── http-request-interceptor/
│   │   ├── http_request_interceptor.bal
│   │   ├── http_request_interceptor.client.out
│   │   ├── http_request_interceptor.md
│   │   ├── http_request_interceptor.metatags
│   │   ├── http_request_interceptor.server.out
│   │   └── tests/
│   │       └── http_request_interceptor_test.bal
│   ├── http-request-response/
│   │   ├── http_request_response.bal
│   │   ├── http_request_response.client.out
│   │   ├── http_request_response.md
│   │   ├── http_request_response.metatags
│   │   ├── http_request_response.server.out
│   │   └── tests/
│   │       └── http_request_response_test.bal
│   ├── http-request-with-multiparts/
│   │   ├── files/
│   │   │   └── test.xml
│   │   ├── http_request_with_multiparts.1.client.out
│   │   ├── http_request_with_multiparts.2.client.out
│   │   ├── http_request_with_multiparts.bal
│   │   ├── http_request_with_multiparts.md
│   │   ├── http_request_with_multiparts.metatags
│   │   ├── http_request_with_multiparts.server.out
│   │   └── tests/
│   │       └── http_request_with_multiparts_test.bal
│   ├── http-response-interceptor/
│   │   ├── http_response_interceptor.bal
│   │   ├── http_response_interceptor.client.out
│   │   ├── http_response_interceptor.md
│   │   ├── http_response_interceptor.metatags
│   │   ├── http_response_interceptor.server.out
│   │   └── tests/
│   │       └── http_response_interceptor_test.bal
│   ├── http-response-with-multiparts/
│   │   ├── files/
│   │   │   └── test.xml
│   │   ├── http_response_with_multiparts.1.client.out
│   │   ├── http_response_with_multiparts.2.client.out
│   │   ├── http_response_with_multiparts.bal
│   │   ├── http_response_with_multiparts.md
│   │   ├── http_response_with_multiparts.metatags
│   │   ├── http_response_with_multiparts.server.out
│   │   └── tests/
│   │       └── http_response_with_multiparts_test.bal
│   ├── http-restrict-by-media-type/
│   │   ├── http_restrict_by_media_type.bal
│   │   ├── http_restrict_by_media_type.client.out
│   │   ├── http_restrict_by_media_type.md
│   │   ├── http_restrict_by_media_type.metatags
│   │   ├── http_restrict_by_media_type.server.out
│   │   └── tests/
│   │       └── http_restrict_by_media_type_test.bal
│   ├── http-retry/
│   │   ├── http_retry.bal
│   │   ├── http_retry.md
│   │   ├── http_retry.metatags
│   │   ├── http_retry.out
│   │   └── tests/
│   │       └── http_retry_test.bal
│   ├── http-send-different-status-codes/
│   │   ├── http_send_different_status_codes.bal
│   │   ├── http_send_different_status_codes.client.out
│   │   ├── http_send_different_status_codes.md
│   │   ├── http_send_different_status_codes.metatags
│   │   ├── http_send_different_status_codes.server.out
│   │   └── tests/
│   │       └── http_send_different_status_codes_test.bal
│   ├── http-send-different-status-codes-with-payload/
│   │   ├── http_send_different_status_codes_with_payload.bal
│   │   ├── http_send_different_status_codes_with_payload.client.out
│   │   ├── http_send_different_status_codes_with_payload.md
│   │   ├── http_send_different_status_codes_with_payload.metatags
│   │   ├── http_send_different_status_codes_with_payload.server.out
│   │   └── tests/
│   │       └── http_send_different_status_codes_with_payload_test.bal
│   ├── http-send-header/
│   │   ├── http_send_header.bal
│   │   ├── http_send_header.client.out
│   │   ├── http_send_header.md
│   │   ├── http_send_header.metatags
│   │   ├── http_send_header.server.out
│   │   └── tests/
│   │       └── http_send_header_test.bal
│   ├── http-send-response/
│   │   ├── http_send_response.bal
│   │   ├── http_send_response.client.out
│   │   ├── http_send_response.md
│   │   ├── http_send_response.metatags
│   │   ├── http_send_response.server.out
│   │   └── tests/
│   │       └── http_send_response_test.bal
│   ├── http-service-and-resource-paths/
│   │   ├── http_service_and_resource_paths.bal
│   │   ├── http_service_and_resource_paths.client.out
│   │   ├── http_service_and_resource_paths.md
│   │   ├── http_service_and_resource_paths.metatags
│   │   ├── http_service_and_resource_paths.server.out
│   │   └── tests/
│   │       └── http_service_and_resource_paths_test.bal
│   ├── http-service-basic-authentication-file-user-store/
│   │   ├── http_service_basic_authentication_file_user_store.bal
│   │   ├── http_service_basic_authentication_file_user_store.md
│   │   ├── http_service_basic_authentication_file_user_store.metatags
│   │   └── http_service_basic_authentication_file_user_store.server.out
│   ├── http-service-basic-authentication-ldap-user-store/
│   │   ├── http_service_basic_authentication_ldap_user_store.bal
│   │   ├── http_service_basic_authentication_ldap_user_store.md
│   │   ├── http_service_basic_authentication_ldap_user_store.metatags
│   │   └── http_service_basic_authentication_ldap_user_store.server.out
│   ├── http-service-cache-response/
│   │   ├── http_service_cache_response.bal
│   │   ├── http_service_cache_response.md
│   │   ├── http_service_cache_response.metatags
│   │   ├── http_service_cache_response.server.out
│   │   └── tests/
│   │       └── http_service_cache_response_test.bal
│   ├── http-service-chunking/
│   │   ├── http_service_chunking.bal
│   │   ├── http_service_chunking.client.out
│   │   ├── http_service_chunking.md
│   │   ├── http_service_chunking.metatags
│   │   ├── http_service_chunking.server.out
│   │   └── tests/
│   │       └── http_service_chunking_test.bal
│   ├── http-service-data-binding/
│   │   ├── http_service_data_binding.bal
│   │   ├── http_service_data_binding.client.out
│   │   ├── http_service_data_binding.md
│   │   ├── http_service_data_binding.metatags
│   │   ├── http_service_data_binding.server.out
│   │   └── tests/
│   │       └── http_service_data_binding_test.bal
│   ├── http-service-file-upload/
│   │   ├── http_service_file_upload.bal
│   │   ├── http_service_file_upload.md
│   │   ├── http_service_file_upload.metatags
│   │   └── http_service_file_upload.server.out
│   ├── http-service-jwt-authentication/
│   │   ├── http_service_jwt_authentication.bal
│   │   ├── http_service_jwt_authentication.md
│   │   ├── http_service_jwt_authentication.metatags
│   │   └── http_service_jwt_authentication.server.out
│   ├── http-service-mutual-ssl/
│   │   ├── http_service_mutual_ssl.bal
│   │   ├── http_service_mutual_ssl.client.out
│   │   ├── http_service_mutual_ssl.md
│   │   ├── http_service_mutual_ssl.metatags
│   │   └── http_service_mutual_ssl.server.out
│   ├── http-service-oauth2/
│   │   ├── http_service_oauth2.bal
│   │   ├── http_service_oauth2.md
│   │   ├── http_service_oauth2.metatags
│   │   └── http_service_oauth2.server.out
│   ├── http-service-payload-constraint-validation/
│   │   ├── http_service_payload_constraint_validation.bal
│   │   ├── http_service_payload_constraint_validation.client.out
│   │   ├── http_service_payload_constraint_validation.md
│   │   ├── http_service_payload_constraint_validation.metatags
│   │   ├── http_service_payload_constraint_validation.server.out
│   │   └── tests/
│   │       └── http_service_payload_constraint_validation.bal
│   ├── http-service-redirects/
│   │   ├── http_service_redirects.bal
│   │   ├── http_service_redirects.client.out
│   │   ├── http_service_redirects.md
│   │   ├── http_service_redirects.metatags
│   │   ├── http_service_redirects.server.out
│   │   └── tests/
│   │       └── http_service_redirects_test.bal
│   ├── http-service-ssl-tls/
│   │   ├── http_service_ssl_tls.bal
│   │   ├── http_service_ssl_tls.client.out
│   │   ├── http_service_ssl_tls.md
│   │   ├── http_service_ssl_tls.metatags
│   │   └── http_service_ssl_tls.server.out
│   ├── http-sse-client/
│   │   ├── http_sse_client.bal
│   │   ├── http_sse_client.client.out
│   │   ├── http_sse_client.md
│   │   └── http_sse_client.metatags
│   ├── http-sse-service/
│   │   ├── http_sse_service.bal
│   │   ├── http_sse_service.client.out
│   │   ├── http_sse_service.md
│   │   ├── http_sse_service.metatags
│   │   └── http_sse_service.server.out
│   ├── http-timeout/
│   │   ├── http_timeout.bal
│   │   ├── http_timeout.md
│   │   ├── http_timeout.metatags
│   │   ├── http_timeout.out
│   │   └── tests/
│   │       └── http_timeout_test.bal
│   ├── http-trace-logs/
│   │   ├── http_trace_logs.bal
│   │   ├── http_trace_logs.client.out
│   │   ├── http_trace_logs.md
│   │   ├── http_trace_logs.metatags
│   │   └── http_trace_logs.server.out
│   ├── identifiers/
│   │   ├── identifiers.bal
│   │   ├── identifiers.md
│   │   ├── identifiers.metatags
│   │   └── identifiers.out
│   ├── identity/
│   │   ├── identity.bal
│   │   ├── identity.md
│   │   ├── identity.metatags
│   │   └── identity.out
│   ├── if-statement/
│   │   ├── if_statement.bal
│   │   ├── if_statement.md
│   │   ├── if_statement.metatags
│   │   └── if_statement.out
│   ├── ignoring-return-values-and-errors/
│   │   ├── ignoring_return_values_and_errors.bal
│   │   ├── ignoring_return_values_and_errors.md
│   │   ├── ignoring_return_values_and_errors.metatags
│   │   └── ignoring_return_values_and_errors.out
│   ├── immutability/
│   │   ├── immutability.bal
│   │   ├── immutability.md
│   │   ├── immutability.metatags
│   │   └── immutability.out
│   ├── in-memory-message-store/
│   │   ├── in_memory_message_store.bal
│   │   ├── in_memory_message_store.md
│   │   ├── in_memory_message_store.metatags
│   │   └── in_memory_message_store.out
│   ├── included-record-parameters/
│   │   ├── included_record_parameters.bal
│   │   ├── included_record_parameters.md
│   │   ├── included_record_parameters.metatags
│   │   └── included_record_parameters.out
│   ├── index.json
│   ├── inferring-isolated/
│   │   ├── inferring_isolated.bal
│   │   ├── inferring_isolated.md
│   │   ├── inferring_isolated.metatags
│   │   └── inferring_isolated.out
│   ├── init-function/
│   │   ├── init_function.bal
│   │   ├── init_function.md
│   │   ├── init_function.metatags
│   │   └── init_function.out
│   ├── init-return-type/
│   │   ├── init_return_type.bal
│   │   ├── init_return_type.md
│   │   ├── init_return_type.metatags
│   │   └── init_return_type.out
│   ├── int-range/
│   │   ├── int_range.bal
│   │   ├── int_range.md
│   │   ├── int_range.metatags
│   │   └── int_range.out
│   ├── integers/
│   │   ├── integers.bal
│   │   ├── integers.md
│   │   ├── integers.metatags
│   │   └── integers.out
│   ├── inter-worker-failure-propagation/
│   │   ├── inter_worker_failure_propagation.bal
│   │   ├── inter_worker_failure_propagation.md
│   │   ├── inter_worker_failure_propagation.metatags
│   │   └── inter_worker_failure_propagation.out
│   ├── inter-worker-message-passing/
│   │   ├── inter_worker_message_passing.bal
│   │   ├── inter_worker_message_passing.md
│   │   ├── inter_worker_message_passing.metatags
│   │   └── inter_worker_message_passing.out
│   ├── interface-to-external-code/
│   │   ├── interface_to_external_code.bal
│   │   ├── interface_to_external_code.md
│   │   ├── interface_to_external_code.metatags
│   │   └── interface_to_external_code.out
│   ├── io-bytes/
│   │   ├── io_bytes.bal
│   │   ├── io_bytes.md
│   │   ├── io_bytes.metatags
│   │   └── io_bytes.out
│   ├── io-csv/
│   │   ├── io_csv.bal
│   │   ├── io_csv.md
│   │   ├── io_csv.metatags
│   │   └── io_csv.out
│   ├── io-csv-datamapping/
│   │   ├── io_csv_datamapping.bal
│   │   ├── io_csv_datamapping.md
│   │   ├── io_csv_datamapping.metatags
│   │   └── io_csv_datamapping.out
│   ├── io-json/
│   │   ├── io_json.bal
│   │   ├── io_json.md
│   │   ├── io_json.metatags
│   │   └── io_json.out
│   ├── io-strings/
│   │   ├── io_strings.bal
│   │   ├── io_strings.md
│   │   ├── io_strings.metatags
│   │   └── io_strings.out
│   ├── io-xml/
│   │   ├── io_xml.bal
│   │   ├── io_xml.md
│   │   ├── io_xml.metatags
│   │   └── io_xml.out
│   ├── isolated-functions/
│   │   ├── isolated_functions.bal
│   │   ├── isolated_functions.md
│   │   ├── isolated_functions.metatags
│   │   └── isolated_functions.out
│   ├── isolated-methods/
│   │   ├── isolated_methods.bal
│   │   ├── isolated_methods.md
│   │   ├── isolated_methods.metatags
│   │   └── isolated_methods.out
│   ├── isolated-objects/
│   │   ├── isolated_objects.bal
│   │   ├── isolated_objects.md
│   │   ├── isolated_objects.metatags
│   │   └── isolated_objects.out
│   ├── isolated-variables/
│   │   ├── isolated_variables.bal
│   │   ├── isolated_variables.md
│   │   ├── isolated_variables.metatags
│   │   └── isolated_variables.out
│   ├── iterating-over-xml-with-query/
│   │   ├── iterating_over_xml_with_query.bal
│   │   ├── iterating_over_xml_with_query.md
│   │   ├── iterating_over_xml_with_query.metatags
│   │   └── iterating_over_xml_with_query.out
│   ├── iterative-use-of-typed-binding/
│   │   ├── iterative_use_of_typed_binding.bal
│   │   ├── iterative_use_of_typed_binding.md
│   │   ├── iterative_use_of_typed_binding.metatags
│   │   └── iterative_use_of_typed_binding.out
│   ├── jdbc-atomic-transaction/
│   │   └── jdbc_atomic_transaction.out
│   ├── jms-consumer-acknowledgement/
│   │   ├── jms_consumer_acknowledgement.bal
│   │   ├── jms_consumer_acknowledgement.md
│   │   ├── jms_consumer_acknowledgement.metatags
│   │   └── jms_consumer_acknowledgement.out
│   ├── jms-consumer-consume-message/
│   │   ├── jms_consumer_consume_message.bal
│   │   ├── jms_consumer_consume_message.md
│   │   ├── jms_consumer_consume_message.metatags
│   │   └── jms_consumer_consume_message.out
│   ├── jms-producer-produce-message/
│   │   ├── jms_producer_produce_message.bal
│   │   ├── jms_producer_produce_message.curl.out
│   │   ├── jms_producer_produce_message.md
│   │   ├── jms_producer_produce_message.metatags
│   │   └── jms_producer_produce_message.out
│   ├── jms-producer-transaction/
│   │   ├── jms_producer_transaction.bal
│   │   ├── jms_producer_transaction.curl.out
│   │   ├── jms_producer_transaction.md
│   │   ├── jms_producer_transaction.metatags
│   │   └── jms_producer_transaction.out
│   ├── jms-service-consume-message/
│   │   ├── jms_service_consume_message.bal
│   │   ├── jms_service_consume_message.md
│   │   ├── jms_service_consume_message.metatags
│   │   └── jms_service_consume_message.out
│   ├── joining-iterable-objects/
│   │   ├── joining_iterable_objects.bal
│   │   ├── joining_iterable_objects.md
│   │   ├── joining_iterable_objects.metatags
│   │   └── joining_iterable_objects.out
│   ├── json-numbers/
│   │   ├── json_numbers.bal
│   │   ├── json_numbers.md
│   │   ├── json_numbers.metatags
│   │   └── json_numbers.out
│   ├── json-to-record/
│   │   ├── json_to_record.bal
│   │   ├── json_to_record.md
│   │   ├── json_to_record.metatags
│   │   └── json_to_record.out
│   ├── json-to-record-with-projection/
│   │   ├── json_to_record_with_projection.bal
│   │   ├── json_to_record_with_projection.md
│   │   ├── json_to_record_with_projection.metatags
│   │   └── json_to_record_with_projection.out
│   ├── json-type/
│   │   ├── json_type.bal
│   │   ├── json_type.md
│   │   ├── json_type.metatags
│   │   └── json_type.out
│   ├── jsonpath-expressions/
│   │   ├── jsonpath_expressions.bal
│   │   ├── jsonpath_expressions.md
│   │   ├── jsonpath_expressions.metatags
│   │   └── jsonpath_expressions.out
│   ├── kafka-consumer-constraint-validation/
│   │   ├── kafka_consumer_constraint_validation.bal
│   │   ├── kafka_consumer_constraint_validation.md
│   │   ├── kafka_consumer_constraint_validation.metatags
│   │   └── kafka_consumer_constraint_validation.out
│   ├── kafka-consumer-consumer-record-data-binding/
│   │   ├── kafka_consumer_consumer_record_data_binding.bal
│   │   ├── kafka_consumer_consumer_record_data_binding.md
│   │   ├── kafka_consumer_consumer_record_data_binding.metatags
│   │   └── kafka_consumer_consumer_record_data_binding.out
│   ├── kafka-consumer-payload-data-binding/
│   │   ├── kafka_consumer_payload_data_binding.bal
│   │   ├── kafka_consumer_payload_data_binding.md
│   │   ├── kafka_consumer_payload_data_binding.metatags
│   │   └── kafka_consumer_payload_data_binding.out
│   ├── kafka-consumer-sasl/
│   │   ├── kafka_consumer_sasl.bal
│   │   ├── kafka_consumer_sasl.md
│   │   ├── kafka_consumer_sasl.metatags
│   │   └── kafka_consumer_sasl.out
│   ├── kafka-consumer-ssl/
│   │   ├── kafka_consumer_ssl.bal
│   │   ├── kafka_consumer_ssl.md
│   │   ├── kafka_consumer_ssl.metatags
│   │   └── kafka_consumer_ssl.out
│   ├── kafka-producer-produce-message/
│   │   ├── kafka_producer_produce_message.bal
│   │   ├── kafka_producer_produce_message.curl.out
│   │   ├── kafka_producer_produce_message.md
│   │   ├── kafka_producer_produce_message.metatags
│   │   └── kafka_producer_produce_message.out
│   ├── kafka-producer-sasl/
│   │   ├── kafka_producer_sasl.bal
│   │   ├── kafka_producer_sasl.curl.out
│   │   ├── kafka_producer_sasl.md
│   │   ├── kafka_producer_sasl.metatags
│   │   └── kafka_producer_sasl.out
│   ├── kafka-producer-ssl/
│   │   ├── kafka_producer_ssl.bal
│   │   ├── kafka_producer_ssl.curl.out
│   │   ├── kafka_producer_ssl.md
│   │   ├── kafka_producer_ssl.metatags
│   │   └── kafka_producer_ssl.out
│   ├── kafka-service-constraint-validation/
│   │   ├── kafka_service_constraint_validation.bal
│   │   ├── kafka_service_constraint_validation.md
│   │   ├── kafka_service_constraint_validation.metatags
│   │   └── kafka_service_constraint_validation.out
│   ├── kafka-service-consume-message/
│   │   ├── kafka_service_consume_message.bal
│   │   ├── kafka_service_consume_message.md
│   │   ├── kafka_service_consume_message.metatags
│   │   └── kafka_service_consume_message.out
│   ├── kafka-service-error-handling/
│   │   ├── kafka_service_error_handling.bal
│   │   ├── kafka_service_error_handling.md
│   │   ├── kafka_service_error_handling.metatags
│   │   └── kafka_service_error_handling.out
│   ├── kafka-service-sasl/
│   │   ├── kafka_service_sasl.bal
│   │   ├── kafka_service_sasl.md
│   │   ├── kafka_service_sasl.metatags
│   │   └── kafka_service_sasl.out
│   ├── kafka-service-ssl/
│   │   ├── kafka_service_ssl.bal
│   │   ├── kafka_service_ssl.md
│   │   ├── kafka_service_ssl.metatags
│   │   └── kafka_service_ssl.out
│   ├── kubernetes-hello-world/
│   │   ├── Cloud.toml
│   │   ├── build_output.out
│   │   ├── docker_push.out
│   │   ├── execute_curl.out
│   │   ├── kubectl_apply.out
│   │   ├── kubectl_expose.out
│   │   ├── kubectl_pods.out
│   │   ├── kubectl_svc.out
│   │   ├── kubernetes_hello_world.bal
│   │   ├── kubernetes_hello_world.md
│   │   └── minikube_ip.out
│   ├── langlib-functions/
│   │   ├── langlib_functions.bal
│   │   ├── langlib_functions.md
│   │   ├── langlib_functions.metatags
│   │   └── langlib_functions.out
│   ├── ldap-add-remove-entry/
│   │   ├── ldap_add_remove_entry.bal
│   │   ├── ldap_add_remove_entry.md
│   │   ├── ldap_add_remove_entry.metatags
│   │   └── ldap_add_remove_entry.server.out
│   ├── ldap-search-entry/
│   │   ├── ldap_search_entry.bal
│   │   ├── ldap_search_entry.md
│   │   ├── ldap_search_entry.metatags
│   │   └── ldap_search_entry.server.out
│   ├── let-clause/
│   │   ├── let_clause.bal
│   │   ├── let_clause.md
│   │   ├── let_clause.metatags
│   │   └── let_clause.out
│   ├── limit-clause/
│   │   ├── limit_clause.bal
│   │   ├── limit_clause.md
│   │   ├── limit_clause.metatags
│   │   └── limit_clause.out
│   ├── list-binding-pattern/
│   │   ├── list_binding_pattern.bal
│   │   ├── list_binding_pattern.md
│   │   ├── list_binding_pattern.metatags
│   │   └── list_binding_pattern.out
│   ├── list-binding-pattern-in-match-statement/
│   │   ├── list_binding_pattern_in_match_statement.bal
│   │   ├── list_binding_pattern_in_match_statement.md
│   │   ├── list_binding_pattern_in_match_statement.metatags
│   │   └── list_binding_pattern_in_match_statement.out
│   ├── list-equality/
│   │   ├── list_equality.bal
│   │   ├── list_equality.md
│   │   ├── list_equality.metatags
│   │   └── list_equality.out
│   ├── list-subtyping/
│   │   ├── list_subtyping.bal
│   │   ├── list_subtyping.md
│   │   ├── list_subtyping.metatags
│   │   └── list_subtyping.out
│   ├── lock-statement/
│   │   ├── lock_statement.bal
│   │   ├── lock_statement.md
│   │   ├── lock_statement.metatags
│   │   └── lock_statement.out
│   ├── log-file-rotation/
│   │   ├── app_log_rotation.out
│   │   ├── log_file_rotation.bal
│   │   ├── log_file_rotation.md
│   │   ├── log_file_rotation.metatags
│   │   └── log_file_rotation.out
│   ├── logger-from-config/
│   │   ├── audit_logs.out
│   │   ├── logger_from_config.bal
│   │   ├── logger_from_config.md
│   │   ├── logger_from_config.metatags
│   │   ├── logger_from_config.out
│   │   └── metrics_logs.out
│   ├── logging/
│   │   ├── logging.bal
│   │   ├── logging.md
│   │   ├── logging.metatags
│   │   ├── logging.out
│   │   └── tests/
│   │       └── log_api_test.bal
│   ├── logging-configuration/
│   │   ├── ModuleConfig.toml
│   │   ├── logging_configuration.bal
│   │   ├── logging_configuration.md
│   │   ├── logging_configuration.metatags
│   │   └── logging_configuration.out
│   ├── logging-with-context/
│   │   ├── logging_with_context.bal
│   │   ├── logging_with_context.md
│   │   ├── logging_with_context.metatags
│   │   └── logging_with_context.out
│   ├── main-function/
│   │   ├── main_function.bal
│   │   ├── main_function.md
│   │   ├── main_function.metatags
│   │   └── main_function.out
│   ├── manage-scheduled-jobs/
│   │   ├── manage_scheduled_jobs.bal
│   │   ├── manage_scheduled_jobs.md
│   │   ├── manage_scheduled_jobs.metatags
│   │   └── manage_scheduled_jobs.out
│   ├── mapping-binding-pattern/
│   │   ├── mapping_binding_pattern.bal
│   │   ├── mapping_binding_pattern.md
│   │   ├── mapping_binding_pattern.metatags
│   │   └── mapping_binding_pattern.out
│   ├── mapping-binding-pattern-in-match-statement/
│   │   ├── mapping_binding_pattern_in_match_statement.bal
│   │   ├── mapping_binding_pattern_in_match_statement.md
│   │   ├── mapping_binding_pattern_in_match_statement.metatags
│   │   └── mapping_binding_pattern_in_match_statement.out
│   ├── maps/
│   │   ├── maps.bal
│   │   ├── maps.md
│   │   ├── maps.metatags
│   │   └── maps.out
│   ├── match-guard-in-match-statement/
│   │   ├── match_guard_in_match_statement.bal
│   │   ├── match_guard_in_match_statement.md
│   │   ├── match_guard_in_match_statement.metatags
│   │   └── match_guard_in_match_statement.out
│   ├── match-statement/
│   │   ├── match_statement.bal
│   │   ├── match_statement.md
│   │   ├── match_statement.metatags
│   │   └── match_statement.out
│   ├── match-statement-with-maps/
│   │   ├── match_statement_with_maps.bal
│   │   ├── match_statement_with_maps.md
│   │   ├── match_statement_with_maps.metatags
│   │   └── match_statement_with_maps.out
│   ├── mcp-service/
│   │   ├── mcp_service.bal
│   │   ├── mcp_service.md
│   │   ├── mcp_service.metatags
│   │   └── mcp_service.out
│   ├── mcp-service-advanced/
│   │   ├── mcp_service_advanced.bal
│   │   ├── mcp_service_advanced.md
│   │   ├── mcp_service_advanced.metatags
│   │   └── mcp_service_advanced.out
│   ├── message-store-listener/
│   │   ├── message_store_listener.bal
│   │   ├── message_store_listener.md
│   │   ├── message_store_listener.metatags
│   │   └── message_store_listener.out
│   ├── message-store-type/
│   │   ├── message_store_type.bal
│   │   ├── message_store_type.md
│   │   ├── message_store_type.metatags
│   │   └── message_store_type.out
│   ├── meta.json
│   ├── module-lifecycle/
│   │   ├── module_lifecycle.bal
│   │   ├── module_lifecycle.md
│   │   ├── module_lifecycle.metatags
│   │   └── module_lifecycle.out
│   ├── mqtt-client-basic-authentication/
│   │   ├── mqtt_client_basic_authentication.bal
│   │   ├── mqtt_client_basic_authentication.curl.out
│   │   ├── mqtt_client_basic_authentication.md
│   │   ├── mqtt_client_basic_authentication.metatags
│   │   └── mqtt_client_basic_authentication.out
│   ├── mqtt-client-publish-message/
│   │   ├── mqtt_client_publish_message.bal
│   │   ├── mqtt_client_publish_message.curl.out
│   │   ├── mqtt_client_publish_message.md
│   │   ├── mqtt_client_publish_message.metatags
│   │   └── mqtt_client_publish_message.out
│   ├── mqtt-client-ssl/
│   │   ├── mqtt_client_ssl.bal
│   │   ├── mqtt_client_ssl.curl.out
│   │   ├── mqtt_client_ssl.md
│   │   ├── mqtt_client_ssl.metatags
│   │   └── mqtt_client_ssl.out
│   ├── mqtt-service-basic-authentication/
│   │   ├── mqtt_service_basic_authentication.bal
│   │   ├── mqtt_service_basic_authentication.md
│   │   ├── mqtt_service_basic_authentication.metatags
│   │   └── mqtt_service_basic_authentication.out
│   ├── mqtt-service-ssl/
│   │   ├── mqtt_service_ssl.bal
│   │   ├── mqtt_service_ssl.md
│   │   ├── mqtt_service_ssl.metatags
│   │   └── mqtt_service_ssl.out
│   ├── mqtt-service-subscribe-message/
│   │   ├── mqtt_service_subscribe_message.bal
│   │   ├── mqtt_service_subscribe_message.md
│   │   ├── mqtt_service_subscribe_message.metatags
│   │   └── mqtt_service_subscribe_message.out
│   ├── multiple-key-fields/
│   │   ├── multiple_key_fields.bal
│   │   ├── multiple_key_fields.md
│   │   ├── multiple_key_fields.metatags
│   │   └── multiple_key_fields.out
│   ├── multiple-receive/
│   │   ├── multiple_receive.bal
│   │   ├── multiple_receive.md
│   │   ├── multiple_receive.metatags
│   │   └── multiple_receive.out
│   ├── multiple-wait/
│   │   ├── multiple_wait.bal
│   │   ├── multiple_wait.md
│   │   ├── multiple_wait.metatags
│   │   └── multiple_wait.out
│   ├── mysql-atomic-transaction/
│   │   ├── mysql_atomic_transaction.bal
│   │   ├── mysql_atomic_transaction.client.out
│   │   ├── mysql_atomic_transaction.md
│   │   ├── mysql_atomic_transaction.metatags
│   │   ├── mysql_atomic_transaction.server.out
│   │   └── mysql_atomic_xa_transaction.bal
│   ├── mysql-batch-execute-operation/
│   │   ├── mysql_batch_execute_operation.bal
│   │   ├── mysql_batch_execute_operation.client.out
│   │   ├── mysql_batch_execute_operation.md
│   │   ├── mysql_batch_execute_operation.metatags
│   │   └── mysql_batch_execute_operation.server.out
│   ├── mysql-call-stored-procedures/
│   │   ├── mysql_call_stored_procedures.bal
│   │   ├── mysql_call_stored_procedures.client.out
│   │   ├── mysql_call_stored_procedures.md
│   │   ├── mysql_call_stored_procedures.metatags
│   │   └── mysql_call_stored_procedures.server.out
│   ├── mysql-execute-operation/
│   │   ├── mysql_execute_operation.bal
│   │   ├── mysql_execute_operation.client.out
│   │   ├── mysql_execute_operation.md
│   │   ├── mysql_execute_operation.metatags
│   │   └── mysql_execute_operation.server.out
│   ├── mysql-prerequisite/
│   │   ├── README.md
│   │   ├── create_stored_procedure.bal
│   │   └── setup_database.bal
│   ├── mysql-query-column-mapping/
│   │   ├── mysql_query_column_mapping.bal
│   │   ├── mysql_query_column_mapping.client.out
│   │   ├── mysql_query_column_mapping.md
│   │   ├── mysql_query_column_mapping.metatags
│   │   └── mysql_query_column_mapping.server.out
│   ├── mysql-query-operation/
│   │   ├── mysql_query_operation.md
│   │   ├── mysql_query_operation.metatags
│   │   ├── mysql_simple_query.bal
│   │   ├── mysql_simple_query.client.out
│   │   └── mysql_simple_query.server.out
│   ├── mysql-query-row-operation/
│   │   ├── mysql_query_row.bal
│   │   ├── mysql_query_row.client.out
│   │   ├── mysql_query_row.server.out
│   │   ├── mysql_query_row_operation.md
│   │   └── mysql_query_row_operation.metatags
│   ├── named-worker-return-values/
│   │   ├── named_worker_return_values.bal
│   │   ├── named_worker_return_values.md
│   │   ├── named_worker_return_values.metatags
│   │   └── named_worker_return_values.out
│   ├── named-worker-with-on-fail-clause/
│   │   ├── named_worker_with_on_fail_clause.bal
│   │   ├── named_worker_with_on_fail_clause.md
│   │   ├── named_worker_with_on_fail_clause.metatags
│   │   └── named_worker_with_on_fail_clause.out
│   ├── named-workers/
│   │   ├── named_workers.bal
│   │   ├── named_workers.md
│   │   ├── named_workers.metatags
│   │   └── named_workers.out
│   ├── named-workers-and-futures/
│   │   ├── named_workers_and_futures.bal
│   │   ├── named_workers_and_futures.md
│   │   ├── named_workers_and_futures.metatags
│   │   └── named_workers_and_futures.out
│   ├── nats-basic-pub/
│   │   ├── nats_basic_pub.bal
│   │   ├── nats_basic_pub.client.out
│   │   ├── nats_basic_pub.md
│   │   ├── nats_basic_pub.metatags
│   │   └── nats_basic_pub.server.out
│   ├── nats-basic-reply/
│   │   ├── nats_basic_reply.bal
│   │   ├── nats_basic_reply.md
│   │   ├── nats_basic_reply.metatags
│   │   └── nats_basic_reply.out
│   ├── nats-basic-request/
│   │   ├── nats_basic_request.bal
│   │   ├── nats_basic_request.client.out
│   │   ├── nats_basic_request.md
│   │   ├── nats_basic_request.metatags
│   │   └── nats_basic_request.server.out
│   ├── nats-basic-sub/
│   │   ├── nats_basic_sub.bal
│   │   ├── nats_basic_sub.md
│   │   ├── nats_basic_sub.metatags
│   │   └── nats_basic_sub.out
│   ├── nats-client-basic-auth/
│   │   ├── nats_client_basic_auth.bal
│   │   ├── nats_client_basic_auth.client.out
│   │   ├── nats_client_basic_auth.md
│   │   ├── nats_client_basic_auth.metatags
│   │   └── nats_client_basic_auth.server.out
│   ├── nats-client-secure-connection/
│   │   ├── nats_client_secure_connection.bal
│   │   ├── nats_client_secure_connection.client.out
│   │   ├── nats_client_secure_connection.md
│   │   ├── nats_client_secure_connection.metatags
│   │   └── nats_client_secure_connection.server.out
│   ├── nats-jetstream-pub/
│   │   ├── nats_jetstream_pub.bal
│   │   ├── nats_jetstream_pub.client.out
│   │   ├── nats_jetstream_pub.md
│   │   ├── nats_jetstream_pub.metatags
│   │   └── nats_jetstream_pub.server.out
│   ├── nats-jetstream-sub/
│   │   ├── nats_jestream_sub.bal
│   │   ├── nats_jestream_sub.md
│   │   ├── nats_jestream_sub.metatags
│   │   └── nats_jestream_sub.out
│   ├── nats-service-basic-auth/
│   │   ├── nats_service_basic_auth.bal
│   │   ├── nats_service_basic_auth.md
│   │   ├── nats_service_basic_auth.metatags
│   │   └── nats_service_basic_auth.out
│   ├── nats-service-constraint-validation/
│   │   ├── nats_service_constraint_validation.bal
│   │   ├── nats_service_constraint_validation.md
│   │   ├── nats_service_constraint_validation.metatags
│   │   └── nats_service_constraint_validation.out
│   ├── nats-service-secure-connection/
│   │   ├── nats_service_secure_connection.bal
│   │   ├── nats_service_secure_connection.md
│   │   ├── nats_service_secure_connection.metatags
│   │   └── nats_service_secure_connection.out
│   ├── natural-expressions/
│   │   ├── natural_expressions.bal
│   │   ├── natural_expressions.md
│   │   ├── natural_expressions.metatags
│   │   └── natural_expressions.out
│   ├── nested-arrays/
│   │   ├── nested_arrays.bal
│   │   ├── nested_arrays.md
│   │   ├── nested_arrays.metatags
│   │   └── nested_arrays.out
│   ├── nested-query-expressions/
│   │   ├── nested_query_expressions.bal
│   │   ├── nested_query_expressions.md
│   │   ├── nested_query_expressions.metatags
│   │   └── nested_query_expressions.out
│   ├── never-type/
│   │   ├── never_type.bal
│   │   ├── never_type.md
│   │   ├── never_type.metatags
│   │   └── never_type.out
│   ├── nil/
│   │   ├── nil.bal
│   │   ├── nil.md
│   │   ├── nil.metatags
│   │   └── nil.out
│   ├── object/
│   │   ├── object.bal
│   │   ├── object.md
│   │   ├── object.metatags
│   │   └── object.out
│   ├── object-closure/
│   │   ├── object_closure.bal
│   │   ├── object_closure.md
│   │   ├── object_closure.metatags
│   │   └── object_closure.out
│   ├── object-constructor/
│   │   ├── object_constructor.bal
│   │   ├── object_constructor.md
│   │   ├── object_constructor.metatags
│   │   └── object_constructor.out
│   ├── object-type-inclusion/
│   │   ├── object_type_inclusion.bal
│   │   ├── object_type_inclusion.md
│   │   ├── object_type_inclusion.metatags
│   │   └── object_type_inclusion.out
│   ├── object-types/
│   │   ├── object_types.bal
│   │   ├── object_types.md
│   │   ├── object_types.metatags
│   │   └── object_types.out
│   ├── object-value-from-class-definition/
│   │   ├── object_value_from_class_definition.bal
│   │   ├── object_value_from_class_definition.md
│   │   ├── object_value_from_class_definition.metatags
│   │   └── object_value_from_class_definition.out
│   ├── on-conflict-clause/
│   │   ├── on_conflict_clause.bal
│   │   ├── on_conflict_clause.md
│   │   ├── on_conflict_clause.metatags
│   │   └── on_conflict_clause.out
│   ├── open-records/
│   │   ├── open_records.bal
│   │   ├── open_records.md
│   │   ├── open_records.metatags
│   │   └── open_records.out
│   ├── optional-fields/
│   │   ├── optional_fields.bal
│   │   ├── optional_fields.md
│   │   ├── optional_fields.metatags
│   │   └── optional_fields.out
│   ├── outer-join-clause/
│   │   ├── outer_join_clause.bal
│   │   ├── outer_join_clause.md
│   │   ├── outer_join_clause.metatags
│   │   └── outer_join_clause.out
│   ├── panics/
│   │   ├── panics.bal
│   │   ├── panics.md
│   │   ├── panics.metatags
│   │   └── panics.out
│   ├── parse-csv-lists/
│   │   ├── parse_csv_lists.bal
│   │   ├── parse_csv_lists.md
│   │   ├── parse_csv_lists.metatags
│   │   └── parse_csv_lists.out
│   ├── persist-create/
│   │   ├── persist_create.bal
│   │   ├── persist_create.md
│   │   ├── persist_create.metatags
│   │   ├── persist_create.out
│   │   ├── persist_generate.out
│   │   ├── persist_init.out
│   │   └── persist_model.bal
│   ├── persist-delete/
│   │   ├── persist_create.metatags
│   │   ├── persist_delete.bal
│   │   ├── persist_delete.md
│   │   ├── persist_delete.out
│   │   ├── persist_generate.out
│   │   ├── persist_init.out
│   │   └── persist_model.bal
│   ├── persist-filtering/
│   │   ├── persist_filtering.bal
│   │   ├── persist_filtering.md
│   │   ├── persist_filtering.metatags
│   │   ├── persist_filtering.out
│   │   ├── persist_generate.out
│   │   ├── persist_init.out
│   │   └── persist_model.bal
│   ├── persist-get-all/
│   │   ├── persist_generate.out
│   │   ├── persist_get_all.bal
│   │   ├── persist_get_all.md
│   │   ├── persist_get_all.metatags
│   │   ├── persist_get_all.out
│   │   ├── persist_init.out
│   │   └── persist_model.bal
│   ├── persist-get-by-key/
│   │   ├── persist_generate.out
│   │   ├── persist_get_by_key.bal
│   │   ├── persist_get_by_key.md
│   │   ├── persist_get_by_key.metatags
│   │   ├── persist_get_by_key.out
│   │   ├── persist_init.out
│   │   └── persist_model.bal
│   ├── persist-relation-queries/
│   │   ├── persist_generate.out
│   │   ├── persist_init.out
│   │   ├── persist_model.bal
│   │   ├── persist_relation_queries.bal
│   │   ├── persist_relation_queries.md
│   │   ├── persist_relation_queries.metatags
│   │   └── persist_relation_queries.out
│   ├── persist-select-fields/
│   │   ├── persist_generate.out
│   │   ├── persist_init.out
│   │   ├── persist_model.bal
│   │   ├── persist_select_fields.bal
│   │   ├── persist_select_fields.md
│   │   ├── persist_select_fields.metatags
│   │   └── persist_select_fields.out
│   ├── persist-update/
│   │   ├── persist_generate.out
│   │   ├── persist_init.out
│   │   ├── persist_model.bal
│   │   ├── persist_update.bal
│   │   ├── persist_update.md
│   │   ├── persist_update.metatags
│   │   └── persist_update.out
│   ├── programs-and-modules/
│   │   ├── programs_and_modules.bal
│   │   ├── programs_and_modules.md
│   │   ├── programs_and_modules.metatags
│   │   └── programs_and_modules.out
│   ├── provide-function-arguments-by-name/
│   │   ├── provide_function_arguments_by_name.bal
│   │   ├── provide_function_arguments_by_name.md
│   │   ├── provide_function_arguments_by_name.metatags
│   │   └── provide_function_arguments_by_name.out
│   ├── providing-services/
│   │   ├── providing_services.bal
│   │   ├── providing_services.md
│   │   ├── providing_services.metatags
│   │   └── providing_services.out
│   ├── query-actions/
│   │   ├── query_actions.bal
│   │   ├── query_actions.md
│   │   ├── query_actions.metatags
│   │   └── query_actions.out
│   ├── query-expressions/
│   │   ├── query_expressions.bal
│   │   ├── query_expressions.md
│   │   ├── query_expressions.metatags
│   │   └── query_expressions.out
│   ├── querying-tables/
│   │   ├── querying_tables.bal
│   │   ├── querying_tables.md
│   │   ├── querying_tables.metatags
│   │   └── querying_tables.out
│   ├── querying-with-streams/
│   │   ├── querying_with_streams.bal
│   │   ├── querying_with_streams.md
│   │   ├── querying_with_streams.metatags
│   │   └── querying_with_streams.out
│   ├── rabbitmq-client-basic-auth/
│   │   ├── rabbitmq_client_basic_auth.bal
│   │   ├── rabbitmq_client_basic_auth.client.out
│   │   ├── rabbitmq_client_basic_auth.md
│   │   ├── rabbitmq_client_basic_auth.metatags
│   │   └── rabbitmq_client_basic_auth.server.out
│   ├── rabbitmq-client-constraint-validation/
│   │   ├── rabbitmq_client_constraint_validation.bal
│   │   ├── rabbitmq_client_constraint_validation.md
│   │   ├── rabbitmq_client_constraint_validation.metatags
│   │   └── rabbitmq_client_constraint_validation.out
│   ├── rabbitmq-client-secure-connection/
│   │   ├── rabbitmq_client_secure_connection.bal
│   │   ├── rabbitmq_client_secure_connection.client.out
│   │   ├── rabbitmq_client_secure_connection.md
│   │   ├── rabbitmq_client_secure_connection.metatags
│   │   └── rabbitmq_client_secure_connection.server.out
│   ├── rabbitmq-consumer/
│   │   ├── rabbitmq_consumer.bal
│   │   ├── rabbitmq_consumer.md
│   │   ├── rabbitmq_consumer.metatags
│   │   └── rabbitmq_consumer.out
│   ├── rabbitmq-consumer-with-client-acknowledgement/
│   │   ├── rabbitmq_consumer_with_client_acknowledgement.bal
│   │   ├── rabbitmq_consumer_with_client_acknowledgement.md
│   │   ├── rabbitmq_consumer_with_client_acknowledgement.metatags
│   │   └── rabbitmq_consumer_with_client_acknowledgement.out
│   ├── rabbitmq-producer/
│   │   ├── rabbitmq_producer.bal
│   │   ├── rabbitmq_producer.client.out
│   │   ├── rabbitmq_producer.md
│   │   ├── rabbitmq_producer.metatags
│   │   └── rabbitmq_producer.server.out
│   ├── rabbitmq-queue-declare/
│   │   ├── rabbitmq_queue_declare.bal
│   │   ├── rabbitmq_queue_declare.md
│   │   ├── rabbitmq_queue_declare.metatags
│   │   └── rabbitmq_queue_declare.out
│   ├── rabbitmq-service-basic-auth/
│   │   ├── rabbitmq_service_basic_auth.bal
│   │   ├── rabbitmq_service_basic_auth.md
│   │   ├── rabbitmq_service_basic_auth.metatags
│   │   └── rabbitmq_service_basic_auth.out
│   ├── rabbitmq-service-constraint-validation/
│   │   ├── rabbitmq_service_constraint_validation.bal
│   │   ├── rabbitmq_service_constraint_validation.md
│   │   ├── rabbitmq_service_constraint_validation.metatags
│   │   └── rabbitmq_service_constraint_validation.out
│   ├── rabbitmq-service-secure-connection/
│   │   ├── rabbitmq_service_secure_connection.bal
│   │   ├── rabbitmq_service_secure_connection.md
│   │   ├── rabbitmq_service_secure_connection.metatags
│   │   └── rabbitmq_service_secure_connection.out
│   ├── rabbitmq-sync-consumer/
│   │   ├── rabbitmq_sync_consumer.bal
│   │   ├── rabbitmq_sync_consumer.md
│   │   ├── rabbitmq_sync_consumer.metatags
│   │   └── rabbitmq_sync_consumer.out
│   ├── rabbitmq-transaction-consumer/
│   │   ├── rabbitmq_transaction_consumer.bal
│   │   ├── rabbitmq_transaction_consumer.md
│   │   ├── rabbitmq_transaction_consumer.metatags
│   │   └── rabbitmq_transaction_consumer.out
│   ├── rabbitmq-transaction-producer/
│   │   ├── rabbitmq_transaction_producer.bal
│   │   ├── rabbitmq_transaction_producer.md
│   │   ├── rabbitmq_transaction_producer.metatags
│   │   └── rabbitmq_transaction_producer.out
│   ├── rag-ingestion-with-external-vector-store/
│   │   ├── rag_ingestion_with_external_vector_store.bal
│   │   ├── rag_ingestion_with_external_vector_store.md
│   │   ├── rag_ingestion_with_external_vector_store.metatags
│   │   └── rag_ingestion_with_external_vector_store.out
│   ├── rag-query-with-external-vector-store/
│   │   ├── rag_query_with_external_vector_store.bal
│   │   ├── rag_query_with_external_vector_store.md
│   │   ├── rag_query_with_external_vector_store.metatags
│   │   └── rag_query_with_external_vector_store.out
│   ├── rag-with-in-memory-vector-store/
│   │   ├── leave_policy.md
│   │   ├── rag_with_in_memory_vector_store.bal
│   │   ├── rag_with_in_memory_vector_store.md
│   │   ├── rag_with_in_memory_vector_store.metatags
│   │   └── rag_with_in_memory_vector_store.out
│   ├── random-numbers/
│   │   ├── random_numbers.bal
│   │   ├── random_numbers.md
│   │   ├── random_numbers.metatags
│   │   └── random_numbers.out
│   ├── raw-templates/
│   │   ├── raw_templates.bal
│   │   ├── raw_templates.md
│   │   ├── raw_templates.metatags
│   │   └── raw_templates.out
│   ├── readonly-and-isolated/
│   │   ├── readonly_and_isolated.bal
│   │   ├── readonly_and_isolated.md
│   │   ├── readonly_and_isolated.metatags
│   │   └── readonly_and_isolated.out
│   ├── readonly-objects-and-classes/
│   │   ├── readonly_objects_and_classes.bal
│   │   ├── readonly_objects_and_classes.md
│   │   ├── readonly_objects_and_classes.metatags
│   │   └── readonly_objects_and_classes.out
│   ├── readonly-type/
│   │   ├── readonly_type.bal
│   │   ├── readonly_type.md
│   │   ├── readonly_type.metatags
│   │   └── readonly_type.out
│   ├── receive-email-using-client/
│   │   ├── receive_email_using_client.bal
│   │   ├── receive_email_using_client.md
│   │   ├── receive_email_using_client.metatags
│   │   └── receive_email_using_client.out
│   ├── receive-email-using-service/
│   │   ├── receive_email_using_service.bal
│   │   ├── receive_email_using_service.md
│   │   ├── receive_email_using_service.metatags
│   │   └── receive_email_using_service.out
│   ├── record-to-edi/
│   │   ├── bal_project.out
│   │   ├── codegen_command.out
│   │   ├── output.out
│   │   ├── package_structure.out
│   │   ├── record_to_edi.bal
│   │   ├── record_to_edi.md
│   │   ├── record_to_edi.metatags
│   │   ├── schema.json
│   │   └── tool_pull_command.out
│   ├── records/
│   │   ├── records.bal
│   │   ├── records.md
│   │   ├── records.metatags
│   │   └── records.out
│   ├── regexp-find-operations/
│   │   ├── regexp_find_operations.bal
│   │   ├── regexp_find_operations.md
│   │   ├── regexp_find_operations.metatags
│   │   └── regexp_find_operations.out
│   ├── regexp-match-operations/
│   │   ├── regexp_match_operations.bal
│   │   ├── regexp_match_operations.md
│   │   ├── regexp_match_operations.metatags
│   │   └── regexp_match_operations.out
│   ├── regexp-operations-overview/
│   │   ├── regexp_operations_overview.bal
│   │   ├── regexp_operations_overview.md
│   │   ├── regexp_operations_overview.metatags
│   │   └── regexp_operations_overview.out
│   ├── regexp-replace-operations/
│   │   ├── regexp_replace_operations.bal
│   │   ├── regexp_replace_operations.md
│   │   ├── regexp_replace_operations.metatags
│   │   └── regexp_replace_operations.out
│   ├── regexp-type/
│   │   ├── regexp_type.bal
│   │   ├── regexp_type.md
│   │   ├── regexp_type.metatags
│   │   └── regexp_type.out
│   ├── resource/
│   │   └── path/
│   │       └── to/
│   │           ├── ballerinaKeystore.p12
│   │           ├── ballerinaTruststore.p12
│   │           ├── client-private.key
│   │           ├── client-public.crt
│   │           ├── encryptedPrivate.key
│   │           ├── private.key
│   │           ├── public.crt
│   │           ├── server-private.key
│   │           └── server-public.crt
│   ├── resource-method-typing/
│   │   ├── resource_method_typing.bal
│   │   ├── resource_method_typing.client.out
│   │   ├── resource_method_typing.md
│   │   ├── resource_method_typing.metatags
│   │   └── resource_method_typing.server.out
│   ├── resource-methods/
│   │   ├── resource_methods.bal
│   │   ├── resource_methods.client.out
│   │   ├── resource_methods.md
│   │   ├── resource_methods.metatags
│   │   └── resource_methods.server.out
│   ├── resource-path-parameters/
│   │   ├── resource_path_parameters.bal
│   │   ├── resource_path_parameters.client.out
│   │   ├── resource_path_parameters.md
│   │   ├── resource_path_parameters.metatags
│   │   └── resource_path_parameters.server.out
│   ├── rest-arguments/
│   │   ├── rest_arguments.bal
│   │   ├── rest_arguments.md
│   │   ├── rest_arguments.metatags
│   │   └── rest_arguments.out
│   ├── rest-binding-pattern-in-error-binding-pattern/
│   │   ├── rest_binding_pattern_in_error_binding_pattern.bal
│   │   ├── rest_binding_pattern_in_error_binding_pattern.md
│   │   ├── rest_binding_pattern_in_error_binding_pattern.metatags
│   │   └── rest_binding_pattern_in_error_binding_pattern.out
│   ├── rest-binding-pattern-in-list-binding-pattern/
│   │   ├── rest_binding_pattern_in_list_binding_pattern.bal
│   │   ├── rest_binding_pattern_in_list_binding_pattern.md
│   │   ├── rest_binding_pattern_in_list_binding_pattern.metatags
│   │   └── rest_binding_pattern_in_list_binding_pattern.out
│   ├── rest-binding-pattern-in-mapping-binding-pattern/
│   │   ├── rest_binding_pattern_in_mapping_binding_pattern.bal
│   │   ├── rest_binding_pattern_in_mapping_binding_pattern.md
│   │   ├── rest_binding_pattern_in_mapping_binding_pattern.metatags
│   │   └── rest_binding_pattern_in_mapping_binding_pattern.out
│   ├── rest-parameters/
│   │   ├── rest_parameters.bal
│   │   ├── rest_parameters.md
│   │   ├── rest_parameters.metatags
│   │   └── rest_parameters.out
│   ├── rest-type-in-tuples/
│   │   ├── rest_type_in_tuples.bal
│   │   ├── rest_type_in_tuples.md
│   │   ├── rest_type_in_tuples.metatags
│   │   └── rest_type_in_tuples.out
│   ├── retry-transaction-statement/
│   │   ├── retry_transaction_statement.bal
│   │   ├── retry_transaction_statement.md
│   │   ├── retry_transaction_statement.metatags
│   │   └── retry_transaction_statement.out
│   ├── rollback/
│   │   ├── rollback.bal
│   │   ├── rollback.md
│   │   ├── rollback.metatags
│   │   └── rollback.out
│   ├── run-strands-safely-on-separate-threads/
│   │   ├── run_strands_safely_on_separate_threads.bal
│   │   ├── run_strands_safely_on_separate_threads.md
│   │   ├── run_strands_safely_on_separate_threads.metatags
│   │   └── run_strands_safely_on_separate_threads.out
│   ├── security-crypto/
│   │   ├── security_crypto.bal
│   │   ├── security_crypto.md
│   │   ├── security_crypto.metatags
│   │   ├── security_crypto.out
│   │   └── tests/
│   │       └── security_crypto_test.bal
│   ├── security-jwt-issue-validate/
│   │   ├── security_jwt_issue_validate.bal
│   │   ├── security_jwt_issue_validate.md
│   │   ├── security_jwt_issue_validate.metatags
│   │   ├── security_jwt_issue_validate.out
│   │   └── tests/
│   │       └── security_jwt_issue_validate_test.bal
│   ├── send-email/
│   │   ├── send_email.bal
│   │   ├── send_email.md
│   │   ├── send_email.metatags
│   │   └── send_email.out
│   ├── sensitive-data-logging/
│   │   ├── sensitive_data_logging.bal
│   │   ├── sensitive_data_logging.md
│   │   ├── sensitive_data_logging.metatags
│   │   └── sensitive_data_logging.out
│   ├── sequence-diagrams/
│   │   ├── sequence_diagrams.bal
│   │   ├── sequence_diagrams.md
│   │   ├── sequence_diagrams.metatags
│   │   └── sequence_diagrams.out
│   ├── service-declaration/
│   │   ├── service_declaration.bal
│   │   ├── service_declaration.client.out
│   │   ├── service_declaration.md
│   │   ├── service_declaration.metatags
│   │   └── service_declaration.server.out
│   ├── sftp-client-receive-file/
│   │   ├── sftp_client_receive_file.bal
│   │   ├── sftp_client_receive_file.md
│   │   ├── sftp_client_receive_file.metatags
│   │   └── sftp_client_receive_file.out
│   ├── sftp-client-send-file/
│   │   ├── sftp_client_send_file.bal
│   │   ├── sftp_client_send_file.md
│   │   ├── sftp_client_send_file.metatags
│   │   └── sftp_client_send_file.out
│   ├── sftp-service-receive-file/
│   │   ├── sftp_service_receive_file.bal
│   │   ├── sftp_service_receive_file.md
│   │   ├── sftp_service_receive_file.metatags
│   │   └── sftp_service_receive_file.out
│   ├── sftp-service-send-file/
│   │   ├── sftp_service_send_file.bal
│   │   ├── sftp_service_send_file.md
│   │   ├── sftp_service_send_file.metatags
│   │   └── sftp_service_send_file.out
│   ├── single-use-of-typed-binding/
│   │   ├── single_use_of_typed_binding.bal
│   │   ├── single_use_of_typed_binding.md
│   │   ├── single_use_of_typed_binding.metatags
│   │   └── single_use_of_typed_binding.out
│   ├── single-use-with-on-fail-clause/
│   │   ├── single_use_with_on_fail_clause.bal
│   │   ├── single_use_with_on_fail_clause.md
│   │   ├── single_use_with_on_fail_clause.metatags
│   │   └── single_use_with_on_fail_clause.out
│   ├── singleton-types/
│   │   ├── singleton_types.bal
│   │   ├── singleton_types.md
│   │   ├── singleton_types.metatags
│   │   └── singleton_types.out
│   ├── soap-client-security-inbound-security-config/
│   │   ├── soap_client_security_inbound_security_config.bal
│   │   ├── soap_client_security_inbound_security_config.md
│   │   ├── soap_client_security_inbound_security_config.metatags
│   │   └── soap_client_security_inbound_security_config.out
│   ├── soap-client-security-outbound-security-config/
│   │   ├── soap_client_security_outbound_security_config.bal
│   │   ├── soap_client_security_outbound_security_config.md
│   │   ├── soap_client_security_outbound_security_config.metatags
│   │   └── soap_client_security_outbound_security_config.out
│   ├── soap-client-security-ssl-tsl/
│   │   ├── soap_client_security_ssl_tls.bal
│   │   ├── soap_client_security_ssl_tls.md
│   │   ├── soap_client_security_ssl_tls.metatags
│   │   └── soap_client_security_ssl_tls.out
│   ├── soap-client-send-receive/
│   │   ├── soap_client_send_receive.bal
│   │   ├── soap_client_send_receive.md
│   │   ├── soap_client_send_receive.metatags
│   │   └── soap_client_send_receive.out
│   ├── sort-iterable-objects/
│   │   ├── sort_iterable_objects.bal
│   │   ├── sort_iterable_objects.md
│   │   ├── sort_iterable_objects.metatags
│   │   └── sort_iterable_objects.out
│   ├── start-service-from-service-class-definition/
│   │   ├── start_service_from_service_class_definition.bal
│   │   ├── start_service_from_service_class_definition.client.out
│   │   ├── start_service_from_service_class_definition.md
│   │   ├── start_service_from_service_class_definition.metatags
│   │   └── start_service_from_service_class_definition.server.out
│   ├── stop-handler/
│   │   ├── stop_handler.bal
│   │   ├── stop_handler.client.out
│   │   ├── stop_handler.md
│   │   ├── stop_handler.metatags
│   │   └── stop_handler.server.out
│   ├── strands/
│   │   ├── strands.bal
│   │   ├── strands.md
│   │   ├── strands.metatags
│   │   └── strands.out
│   ├── stream-type/
│   │   ├── stream_type.bal
│   │   ├── stream_type.md
│   │   ├── stream_type.metatags
│   │   └── stream_type.out
│   ├── string-templates/
│   │   ├── string_templates.bal
│   │   ├── string_templates.md
│   │   ├── string_templates.metatags
│   │   └── string_templates.out
│   ├── strings/
│   │   ├── strings.bal
│   │   ├── strings.md
│   │   ├── strings.metatags
│   │   └── strings.out
│   ├── structural-typing/
│   │   ├── structural_typing.bal
│   │   ├── structural_typing.md
│   │   ├── structural_typing.metatags
│   │   └── structural_typing.out
│   ├── structured-keys/
│   │   ├── structured_keys.bal
│   │   ├── structured_keys.md
│   │   ├── structured_keys.metatags
│   │   └── structured_keys.out
│   ├── synchronize-message-passing/
│   │   ├── synchronize_message_passing.bal
│   │   ├── synchronize_message_passing.md
│   │   ├── synchronize_message_passing.metatags
│   │   └── synchronize_message_passing.out
│   ├── table/
│   │   ├── table.bal
│   │   ├── table.md
│   │   ├── table.metatags
│   │   └── table.out
│   ├── table-types/
│   │   ├── table_types.bal
│   │   ├── table_types.md
│   │   ├── table_types.metatags
│   │   └── table_types.out
│   ├── task-frequency-job-execution/
│   │   ├── task_frequency_job_execution.bal
│   │   ├── task_frequency_job_execution.md
│   │   ├── task_frequency_job_execution.metatags
│   │   └── task_frequency_job_execution.out
│   ├── task-one-time-job-execution/
│   │   ├── task_one_time_job_execution.bal
│   │   ├── task_one_time_job_execution.md
│   │   ├── task_one_time_job_execution.metatags
│   │   └── task_one_time_job_execution.out
│   ├── tcp-client/
│   │   ├── tcp_client.bal
│   │   ├── tcp_client.md
│   │   ├── tcp_client.metatags
│   │   └── tcp_client.out
│   ├── tcp-client-ssl-tls/
│   │   ├── tcp_client_ssl_tls.bal
│   │   ├── tcp_client_ssl_tls.md
│   │   ├── tcp_client_ssl_tls.metatags
│   │   └── tcp_client_ssl_tls.out
│   ├── tcp-listener/
│   │   ├── tcp_listener.bal
│   │   ├── tcp_listener.md
│   │   ├── tcp_listener.metatags
│   │   └── tcp_listener.out
│   ├── tcp-service-ssl-tls/
│   │   ├── tcp_service_ssl_tls.bal
│   │   ├── tcp_service_ssl_tls.md
│   │   ├── tcp_service_ssl_tls.metatags
│   │   └── tcp_service_ssl_tls.out
│   ├── temp-files-directories/
│   │   ├── temp_files_directories.bal
│   │   ├── temp_files_directories.md
│   │   ├── temp_files_directories.metatags
│   │   └── temp_files_directories.out
│   ├── testerina-assertions/
│   │   ├── testerina_assertions.bal
│   │   ├── testerina_assertions.md
│   │   ├── testerina_assertions.metatags
│   │   └── testerina_assertions.out
│   ├── testerina-before-and-after-each/
│   │   ├── testerina_before_and_after_each.bal
│   │   ├── testerina_before_and_after_each.md
│   │   ├── testerina_before_and_after_each.metatags
│   │   └── testerina_before_and_after_each.out
│   ├── testerina-before-and-after-groups/
│   │   ├── testerina_before_and_after_groups.bal
│   │   ├── testerina_before_and_after_groups.md
│   │   ├── testerina_before_and_after_groups.metatags
│   │   └── testerina_before_and_after_groups.out
│   ├── testerina-before-and-after-suite/
│   │   ├── testerina_before_and_after_suite.bal
│   │   ├── testerina_before_and_after_suite.md
│   │   ├── testerina_before_and_after_suite.metatags
│   │   └── testerina_before_and_after_suite.out
│   ├── testerina-before-and-after-test/
│   │   ├── testerina_before_and_after_test.bal
│   │   ├── testerina_before_and_after_test.md
│   │   ├── testerina_before_and_after_test.metatags
│   │   └── testerina_before_and_after_test.out
│   ├── testerina-data-driven-tests/
│   │   ├── testerina_data_driven_tests.bal
│   │   ├── testerina_data_driven_tests.md
│   │   ├── testerina_data_driven_tests.metadata
│   │   └── testerina_data_driven_tests.out
│   ├── testerina-group-tests/
│   │   ├── testerina_group_disable_groups.out
│   │   ├── testerina_group_tests.bal
│   │   ├── testerina_group_tests.md
│   │   ├── testerina_group_tests.metadata
│   │   ├── testerina_group_tests_groups_g1.out
│   │   └── testerina_group_tests_groups_g1_g2.out
│   ├── testerina-guarantee-test-execution-order/
│   │   ├── testerina_guarantee_test_execution_order.bal
│   │   ├── testerina_guarantee_test_execution_order.md
│   │   ├── testerina_guarantee_test_execution_order.metadata
│   │   └── testerina_guarantee_test_execution_order.out
│   ├── testerina-mocking-functions/
│   │   ├── testerina_mocking_functions.md
│   │   ├── testerina_mocking_functions.metatags
│   │   ├── testerina_mocking_functions_main.bal
│   │   ├── testerina_mocking_functions_test.bal
│   │   └── testerina_mocking_functions_test.out
│   ├── testerina-mocking-objects/
│   │   ├── testerina_mocking_objects.md
│   │   ├── testerina_mocking_objects.metatags
│   │   ├── testerina_mocking_objects_main.bal
│   │   ├── testerina_mocking_objects_test.bal
│   │   └── testerina_mocking_objects_test.out
│   ├── time-formatting-and-parsing/
│   │   ├── tests/
│   │   │   └── time_formatting_and_parsing_test.bal
│   │   ├── time_formatting_and_parsing.bal
│   │   ├── time_formatting_and_parsing.md
│   │   ├── time_formatting_and_parsing.metatags
│   │   └── time_formatting_and_parsing.out
│   ├── time-utc/
│   │   ├── tests/
│   │   │   └── time_utc_test.bal
│   │   ├── time_utc.bal
│   │   ├── time_utc.md
│   │   ├── time_utc.metatags
│   │   └── time_utc.out
│   ├── time-utc-and-civil/
│   │   ├── tests/
│   │   │   └── time_utc_and_civil_test.bal
│   │   ├── time_utc_and_civil.bal
│   │   ├── time_utc_and_civil.md
│   │   ├── time_utc_and_civil.metatags
│   │   └── time_utc_and_civil.out
│   ├── time-zone/
│   │   ├── time_zone.bal
│   │   ├── time_zone.md
│   │   ├── time_zone.metatags
│   │   └── time_zone.out
│   ├── tracing/
│   │   ├── tests/
│   │   │   └── tracing_test.bal
│   │   ├── tracing.bal
│   │   ├── tracing.client.out
│   │   ├── tracing.md
│   │   ├── tracing.metatags
│   │   └── tracing.server.out
│   ├── transaction-statement/
│   │   ├── transaction_statement.bal
│   │   ├── transaction_statement.md
│   │   ├── transaction_statement.metatags
│   │   └── transaction_statement.out
│   ├── transactional-named-workers/
│   │   ├── transactional_named_workers.bal
│   │   ├── transactional_named_workers.md
│   │   ├── transactional_named_workers.metatags
│   │   └── transactional_named_workers.out
│   ├── transactional-qualifier/
│   │   ├── transactional_qualifier.bal
│   │   ├── transactional_qualifier.md
│   │   ├── transactional_qualifier.metatags
│   │   └── transactional_qualifier.out
│   ├── transform-csv-records-to-custom-types/
│   │   ├── transform_csv_records_to_custom_types.bal
│   │   ├── transform_csv_records_to_custom_types.md
│   │   ├── transform_csv_records_to_custom_types.metatags
│   │   └── transform_csv_records_to_custom_types.out
│   ├── trap-expression/
│   │   ├── trap_expression.bal
│   │   ├── trap_expression.md
│   │   ├── trap_expression.metatags
│   │   └── trap_expression.out
│   ├── tuples/
│   │   ├── tuples.bal
│   │   ├── tuples.md
│   │   ├── tuples.metatags
│   │   └── tuples.out
│   ├── type-definitions/
│   │   ├── type_definitions.bal
│   │   ├── type_definitions.md
│   │   ├── type_definitions.metatags
│   │   └── type_definitions.out
│   ├── type-inclusion-for-records/
│   │   ├── type_inclusion_for_records.bal
│   │   ├── type_inclusion_for_records.md
│   │   ├── type_inclusion_for_records.metatags
│   │   └── type_inclusion_for_records.out
│   ├── type-inference/
│   │   ├── type_inference.bal
│   │   ├── type_inference.md
│   │   ├── type_inference.metatags
│   │   └── type_inference.out
│   ├── typed-binding-pattern/
│   │   ├── typed_binding_pattern.bal
│   │   ├── typed_binding_pattern.md
│   │   ├── typed_binding_pattern.metatags
│   │   └── typed_binding_pattern.out
│   ├── typedesc-type/
│   │   ├── typedesc_type.bal
│   │   ├── typedesc_type.md
│   │   ├── typedesc_type.metatags
│   │   └── typedesc_type.out
│   ├── udp-client/
│   │   ├── udp_client.bal
│   │   ├── udp_client.md
│   │   ├── udp_client.metatags
│   │   └── udp_client.out
│   ├── udp-connect-client/
│   │   ├── udp_connect_client.bal
│   │   ├── udp_connect_client.md
│   │   ├── udp_connect_client.metatags
│   │   └── udp_connect_client.out
│   ├── udp-listener/
│   │   ├── udp_listener.bal
│   │   ├── udp_listener.md
│   │   ├── udp_listener.metatags
│   │   └── udp_listener.out
│   ├── unary-operators/
│   │   ├── unary_operators.bal
│   │   ├── unary_operators.md
│   │   ├── unary_operators.metatags
│   │   └── unary_operators.out
│   ├── unions/
│   │   ├── unions.bal
│   │   ├── unions.md
│   │   ├── unions.metatags
│   │   └── unions.out
│   ├── url-encode-decode/
│   │   ├── tests/
│   │   │   └── url_encode_decode_test.bal
│   │   ├── url_encode_decode.bal
│   │   ├── url_encode_decode.md
│   │   ├── url_encode_decode.metatags
│   │   └── url_encode_decode.out
│   ├── uuid-generation/
│   │   ├── uuid_generation.bal
│   │   ├── uuid_generation.md
│   │   ├── uuid_generation.metatags
│   │   └── uuid_generation.out
│   ├── uuid-operations/
│   │   ├── uuid_operations.bal
│   │   ├── uuid_operations.md
│   │   ├── uuid_operations.metatags
│   │   └── uuid_operations.out
│   ├── variables-and-types/
│   │   ├── variables_and_types.bal
│   │   ├── variables_and_types.md
│   │   ├── variables_and_types.metatags
│   │   └── variables_and_types.out
│   ├── visibility-of-object-fields-and-methods/
│   │   ├── visibility_of_object_fields_and_methods.bal
│   │   ├── visibility_of_object_fields_and_methods.md
│   │   ├── visibility_of_object_fields_and_methods.metatags
│   │   └── visibility_of_object_fields_and_methods.out
│   ├── waiting-for-workers/
│   │   ├── waiting_for_workers.bal
│   │   ├── waiting_for_workers.md
│   │   ├── waiting_for_workers.metatags
│   │   └── waiting_for_workers.out
│   ├── websocket-basic-sample/
│   │   ├── tests/
│   │   │   └── websocket_basic_sample_test.bal
│   │   ├── websocket_basic_sample.bal
│   │   ├── websocket_basic_sample.md
│   │   ├── websocket_basic_sample.metatags
│   │   └── websocket_basic_sample.out
│   ├── websocket-binary-client/
│   │   └── websocket_binary_client.md
│   ├── websocket-client/
│   │   ├── websocket_client.bal
│   │   ├── websocket_client.md
│   │   ├── websocket_client.metatags
│   │   └── websocket_client.out
│   ├── websocket-client-basic-auth/
│   │   ├── websocket_client_basic_auth.bal
│   │   ├── websocket_client_basic_auth.md
│   │   ├── websocket_client_basic_auth.metatags
│   │   └── websocket_client_basic_auth.out
│   ├── websocket-client-bearer-token-auth/
│   │   ├── websocket_client_bearer_token_auth.bal
│   │   ├── websocket_client_bearer_token_auth.md
│   │   ├── websocket_client_bearer_token_auth.metatags
│   │   └── websocket_client_bearer_token_auth.out
│   ├── websocket-client-mutual-ssl/
│   │   ├── websocket_client_mutual_ssl.bal
│   │   ├── websocket_client_mutual_ssl.md
│   │   ├── websocket_client_mutual_ssl.metatags
│   │   └── websocket_client_mutual_ssl.out
│   ├── websocket-client-oauth2-client-cred-grant-type/
│   │   ├── websocket_client_oauth2_client_cred_grant_type.bal
│   │   ├── websocket_client_oauth2_client_cred_grant_type.md
│   │   ├── websocket_client_oauth2_client_cred_grant_type.metatags
│   │   └── websocket_client_oauth2_client_cred_grant_type.out
│   ├── websocket-client-oauth2-jwt-bearer-grant-type/
│   │   ├── websocket_client_oauth2_jwt_bearer_grant_type.bal
│   │   ├── websocket_client_oauth2_jwt_bearer_grant_type.md
│   │   ├── websocket_client_oauth2_jwt_bearer_grant_type.metatags
│   │   └── websocket_client_oauth2_jwt_bearer_grant_type.out
│   ├── websocket-client-oauth2-password-grant-type/
│   │   ├── websocket_client_oauth2_password_grant_type.bal
│   │   ├── websocket_client_oauth2_password_grant_type.md
│   │   ├── websocket_client_oauth2_password_grant_type.metatags
│   │   └── websocket_client_oauth2_password_grant_type.out
│   ├── websocket-client-oauth2-refresh-token-grant-type/
│   │   ├── websocket_client_oauth2_refresh_token_grant_type.bal
│   │   ├── websocket_client_oauth2_refresh_token_grant_type.md
│   │   ├── websocket_client_oauth2_refresh_token_grant_type.metatags
│   │   └── websocket_client_oauth2_refresh_token_grant_type.out
│   ├── websocket-client-payload-constraint-validation/
│   │   ├── websocket_client_payload_constraint_validation.bal
│   │   ├── websocket_client_payload_constraint_validation.md
│   │   ├── websocket_client_payload_constraint_validation.metatags
│   │   └── websocket_client_payload_constraint_validation.out
│   ├── websocket-client-self-signed-jwt-auth/
│   │   ├── websocket_client_self_signed_jwt_auth.bal
│   │   ├── websocket_client_self_signed_jwt_auth.md
│   │   ├── websocket_client_self_signed_jwt_auth.metatags
│   │   └── websocket_client_self_signed_jwt_auth.out
│   ├── websocket-client-ssl-tls/
│   │   ├── websocket_client_ssl_tls.bal
│   │   ├── websocket_client_ssl_tls.md
│   │   ├── websocket_client_ssl_tls.metatags
│   │   └── websocket_client_ssl_tls.out
│   ├── websocket-query-parameter/
│   │   ├── websocket_query_parameter.bal
│   │   ├── websocket_query_parameter.md
│   │   ├── websocket_query_parameter.metatags
│   │   └── websocket_query_parameter.server.out
│   ├── websocket-retry-client/
│   │   ├── websocket_retry_client.bal
│   │   ├── websocket_retry_client.md
│   │   ├── websocket_retry_client.metatags
│   │   └── websocket_retry_client.out
│   ├── websocket-service-basic-auth-file-user-store/
│   │   ├── websocket_service_basic_auth_file_user_store.bal
│   │   ├── websocket_service_basic_auth_file_user_store.md
│   │   ├── websocket_service_basic_auth_file_user_store.metatags
│   │   └── websocket_service_basic_auth_file_user_store.server.out
│   ├── websocket-service-basic-auth-ldap-user-store/
│   │   ├── websocket_service_basic_auth_ldap_user_store.bal
│   │   ├── websocket_service_basic_auth_ldap_user_store.md
│   │   ├── websocket_service_basic_auth_ldap_user_store.metatags
│   │   └── websocket_service_basic_auth_ldap_user_store.server.out
│   ├── websocket-service-error-handling/
│   │   ├── websocket_service_error_handling.bal
│   │   ├── websocket_service_error_handling.md
│   │   ├── websocket_service_error_handling.metatags
│   │   └── websocket_service_error_handling.out
│   ├── websocket-service-jwt-auth/
│   │   ├── websocket_service_jwt_auth.bal
│   │   ├── websocket_service_jwt_auth.md
│   │   ├── websocket_service_jwt_auth.metatags
│   │   └── websocket_service_jwt_auth.server.out
│   ├── websocket-service-mutual-ssl/
│   │   ├── websocket_service_mutual_ssl.bal
│   │   ├── websocket_service_mutual_ssl.md
│   │   ├── websocket_service_mutual_ssl.metatags
│   │   └── websocket_service_mutual_ssl.server.out
│   ├── websocket-service-oauth2/
│   │   ├── websocket_service_oauth2.bal
│   │   ├── websocket_service_oauth2.md
│   │   ├── websocket_service_oauth2.metatags
│   │   └── websocket_service_oauth2.server.out
│   ├── websocket-service-payload-constraint-validation/
│   │   ├── websocket_service_payload_constraint_validation.bal
│   │   ├── websocket_service_payload_constraint_validation.md
│   │   ├── websocket_service_payload_constraint_validation.metatags
│   │   └── websocket_service_payload_constraint_validation.out
│   ├── websocket-service-ssl-tls/
│   │   ├── websocket_service_ssl_tls.bal
│   │   ├── websocket_service_ssl_tls.md
│   │   ├── websocket_service_ssl_tls.metatags
│   │   └── websocket_service_ssl_tls.server.out
│   ├── websocket-text-client/
│   │   └── websocket_text_client.md
│   ├── websocket-timeout-client/
│   │   ├── websocket_timeout_client.bal
│   │   ├── websocket_timeout_client.md
│   │   ├── websocket_timeout_client.metatags
│   │   └── websocket_timeout_client.out
│   ├── websub-webhook-sample/
│   │   ├── websub_webhook_sample.bal
│   │   ├── websub_webhook_sample.md
│   │   ├── websub_webhook_sample.metatags
│   │   └── websub_webhook_sample.out
│   ├── while-statement/
│   │   ├── while_statement.bal
│   │   ├── while_statement.md
│   │   ├── while_statement.metatags
│   │   └── while_statement.out
│   ├── wildcard-binding-pattern/
│   │   ├── wildcard_binding_pattern.bal
│   │   ├── wildcard_binding_pattern.md
│   │   ├── wildcard_binding_pattern.metatags
│   │   └── wildcard_binding_pattern.out
│   ├── xml-access/
│   │   ├── xml_access.bal
│   │   ├── xml_access.md
│   │   ├── xml_access.metatags
│   │   └── xml_access.out
│   ├── xml-data-model/
│   │   ├── xml_data_model.bal
│   │   ├── xml_data_model.md
│   │   ├── xml_data_model.metatags
│   │   └── xml_data_model.out
│   ├── xml-from-json-conversion/
│   │   ├── xml_from_json_conversion.bal
│   │   ├── xml_from_json_conversion.md
│   │   ├── xml_from_json_conversion.metatags
│   │   └── xml_from_json_conversion.out
│   ├── xml-from-record-conversion/
│   │   ├── xml_from_record_conversion.bal
│   │   ├── xml_from_record_conversion.md
│   │   ├── xml_from_record_conversion.metatags
│   │   └── xml_from_record_conversion.out
│   ├── xml-iteration/
│   │   ├── xml_iteration.bal
│   │   ├── xml_iteration.md
│   │   ├── xml_iteration.metatags
│   │   └── xml_iteration.out
│   ├── xml-mutation/
│   │   ├── xml_mutation.bal
│   │   ├── xml_mutation.md
│   │   ├── xml_mutation.metatags
│   │   └── xml_mutation.out
│   ├── xml-namespaces/
│   │   ├── xml_namespaces.bal
│   │   ├── xml_namespaces.md
│   │   ├── xml_namespaces.metatags
│   │   └── xml_namespaces.out
│   ├── xml-navigation/
│   │   ├── xml_navigation.bal
│   │   ├── xml_navigation.md
│   │   ├── xml_navigation.metatags
│   │   └── xml_navigation.out
│   ├── xml-operations/
│   │   ├── xml_operations.bal
│   │   ├── xml_operations.md
│   │   ├── xml_operations.metatags
│   │   └── xml_operations.out
│   ├── xml-subtyping/
│   │   ├── xml_subtyping.bal
│   │   ├── xml_subtyping.md
│   │   ├── xml_subtyping.metatags
│   │   └── xml_subtyping.out
│   ├── xml-templates/
│   │   ├── xml_templates.bal
│   │   ├── xml_templates.md
│   │   ├── xml_templates.metatags
│   │   └── xml_templates.out
│   ├── xml-templates-and-query/
│   │   ├── xml_templates_and_query.bal
│   │   ├── xml_templates_and_query.md
│   │   ├── xml_templates_and_query.metatags
│   │   └── xml_templates_and_query.out
│   ├── xml-to-json-conversion/
│   │   ├── xml_to_json_conversion.bal
│   │   ├── xml_to_json_conversion.md
│   │   ├── xml_to_json_conversion.metatags
│   │   └── xml_to_json_conversion.out
│   ├── xml-to-record/
│   │   ├── xml_to_record.bal
│   │   ├── xml_to_record.md
│   │   ├── xml_to_record.metatags
│   │   └── xml_to_record.out
│   ├── xml-to-record-conversion/
│   │   ├── xml_to_record_conversion.bal
│   │   ├── xml_to_record_conversion.md
│   │   ├── xml_to_record_conversion.metatags
│   │   └── xml_to_record_conversion.out
│   ├── xml-to-record-with-projection/
│   │   ├── xml_to_record_with_projection.bal
│   │   ├── xml_to_record_with_projection.md
│   │   ├── xml_to_record_with_projection.metatags
│   │   └── xml_to_record_with_projection.out
│   ├── xmlns-declarations/
│   │   ├── xmlns_declarations.bal
│   │   ├── xmlns_declarations.md
│   │   ├── xmlns_declarations.metatags
│   │   └── xmlns_declarations.out
│   ├── xslt-transformation/
│   │   ├── xslt_transformation.bal
│   │   ├── xslt_transformation.md
│   │   ├── xslt_transformation.metatags
│   │   └── xslt_transformation.out
│   ├── yaml-to-anydata/
│   │   ├── yaml_to_anydata.bal
│   │   ├── yaml_to_anydata.md
│   │   ├── yaml_to_anydata.metatags
│   │   └── yaml_to_anydata.out
│   └── yaml-to-anydata-with-projection/
│       ├── yaml_to_anydata_with_projection.bal
│       ├── yaml_to_anydata_with_projection.md
│       ├── yaml_to_anydata_with_projection.metatags
│       └── yaml_to_anydata_with_projection.out
├── gradle/
│   ├── javaProject.gradle
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── installers/
│   ├── linux-deb/
│   │   ├── README.md
│   │   ├── build-ballerina-linux-deb-x64.sh
│   │   └── resources/
│   │       ├── amd/
│   │       │   └── DEBIAN/
│   │       │       ├── control
│   │       │       ├── postinst
│   │       │       └── postrm
│   │       └── arm/
│   │           └── DEBIAN/
│   │               ├── control
│   │               ├── postinst
│   │               └── postrm
│   ├── linux-rpm/
│   │   ├── build-ballerina-linux-rpm-x64.sh
│   │   ├── resources/
│   │   │   ├── ballerina-runtime.spec
│   │   │   └── ballerina-tools.spec
│   │   └── rpmbuild/
│   │       ├── BUILDROOT/
│   │       │   └── .gitkeep
│   │       ├── RPMS/
│   │       │   └── .gitkeep
│   │       ├── SOURCES/
│   │       │   └── .gitkeep
│   │       ├── SPECS/
│   │       │   └── .gitkeep
│   │       └── SRPMS/
│   │           └── .gitkeep
│   ├── mac/
│   │   ├── build-ballerina-macos-x64.sh
│   │   └── darwin/
│   │       ├── Distribution
│   │       ├── app.plist
│   │       └── scripts/
│   │           └── postinstall
│   └── windows/
│       ├── build-ballerina-windows-x64.bat
│       └── resources/
│           ├── cert/
│           │   └── ballerina-cert.pfx
│           ├── en-us.wxl
│           └── installer.wxs
├── issue_template.md
├── language-server-simulator/
│   ├── build.gradle
│   ├── gradle.properties
│   └── src/
│       └── main/
│           ├── java/
│           │   ├── module-info.java
│           │   └── org/
│           │       └── ballerinalang/
│           │           └── langserver/
│           │               └── simulator/
│           │                   ├── Editor.java
│           │                   ├── EditorOutputStream.java
│           │                   ├── EditorSimulator.java
│           │                   ├── EditorTab.java
│           │                   └── generators/
│           │                       ├── ClassGenerator.java
│           │                       ├── CodeSnippetGenerator.java
│           │                       ├── FunctionGenerator.java
│           │                       ├── Generators.java
│           │                       ├── ImportStatementGenerator.java
│           │                       ├── MatchStatementGenerator.java
│           │                       ├── ServiceGenerator.java
│           │                       ├── StatementGenerator.java
│           │                       ├── TypeDefinitionGenerator.java
│           │                       └── VarDeclarationStatementGenerator.java
│           └── resources/
│               └── META-INF/
│                   └── services/
│                       └── org.ballerinalang.langserver.simulator.generators.CodeSnippetGenerator
├── project-api-tests/
│   ├── build.gradle
│   └── src/
│       └── test/
│           ├── java/
│           │   └── org/
│           │       └── ballerina/
│           │           └── projectapi/
│           │               ├── BalToolTest.java
│           │               ├── BuildTimeTest.java
│           │               ├── CentralNegativeTest.java
│           │               ├── CentralTest.java
│           │               ├── CentralTestUtils.java
│           │               ├── DistributionCompatibilityTest.java
│           │               ├── HierarchicalPackagesTest.java
│           │               ├── MavenCustomRepoTest.java
│           │               ├── MavenCustomRepoTestUtils.java
│           │               └── TestUtils.java
│           └── resources/
│               ├── bal-tool/
│               │   ├── DistTestCommand/
│               │   │   ├── build.gradle
│               │   │   ├── gradlew
│               │   │   ├── gradlew.bat
│               │   │   ├── settings.gradle
│               │   │   └── src/
│               │   │       └── main/
│               │   │           ├── java/
│               │   │           │   └── disttest/
│               │   │           │       └── cli/
│               │   │           │           └── DistTestCommand.java
│               │   │           └── resources/
│               │   │               ├── META-INF/
│               │   │               │   └── services/
│               │   │               │       └── io.ballerina.cli.BLauncherCmd
│               │   │               └── disttest.help
│               │   ├── cmd-outputs/
│               │   │   ├── tool-execute-general-help.txt
│               │   │   ├── tool-execute-specific-help-1.0.0.txt
│               │   │   ├── tool-execute-specific-help-1.1.0.txt
│               │   │   ├── tool-execute-tool.txt
│               │   │   ├── tool-execute-unknown-cmd-non-existing.txt
│               │   │   ├── tool-execute-unknown-cmd.txt
│               │   │   ├── tool-list-with-multiple-tool-versions.txt
│               │   │   ├── tool-list-with-no-tools.txt
│               │   │   ├── tool-pull-again-with-specific-version.txt
│               │   │   ├── tool-pull-again-without-version.txt
│               │   │   ├── tool-pull-with-incompatible-dist.txt
│               │   │   ├── tool-pull-with-non-existing-version.txt
│               │   │   ├── tool-pull-with-specific-version.txt
│               │   │   ├── tool-pull-without-version.txt
│               │   │   ├── tool-remove-active-version.txt
│               │   │   ├── tool-remove-all.txt
│               │   │   ├── tool-remove-non-existing-tool.txt
│               │   │   ├── tool-remove-non-existing-version.txt
│               │   │   ├── tool-remove-specific-version.txt
│               │   │   ├── tool-remove-with-incompatible-dist.txt
│               │   │   ├── tool-search-with-tool-id.txt
│               │   │   ├── tool-update-non-existing.txt
│               │   │   ├── tool-update-with-new-patch-and-minor.txt
│               │   │   ├── tool-update-with-no-new-version.txt
│               │   │   ├── tool-use-active-version.txt
│               │   │   ├── tool-use-new-version.txt
│               │   │   ├── tool-use-non-existent-version.txt
│               │   │   ├── tool-use-old-version.txt
│               │   │   └── tool-use-with-incompatible-dist.txt
│               │   ├── v1.0.0/
│               │   │   └── disttestpackage/
│               │   │       ├── BalTool.toml
│               │   │       ├── Ballerina.toml
│               │   │       └── README.md
│               │   ├── v1.0.1/
│               │   │   └── disttestpackage/
│               │   │       ├── BalTool.toml
│               │   │       ├── Ballerina.toml
│               │   │       └── Package.md
│               │   ├── v1.0.4/
│               │   │   └── disttestpackage/
│               │   │       ├── BalTool.toml
│               │   │       ├── Ballerina.toml
│               │   │       └── README.md
│               │   └── v1.1.0/
│               │       └── disttestpackage/
│               │           ├── BalTool.toml
│               │           ├── Ballerina.toml
│               │           └── README.md
│               ├── build-time/
│               │   ├── Project1/
│               │   │   ├── Ballerina.toml
│               │   │   └── main.bal
│               │   ├── Project2/
│               │   │   ├── Ballerina.toml
│               │   │   └── main.bal
│               │   └── Project3/
│               │       ├── Ballerina.toml
│               │       ├── main.bal
│               │       └── tests/
│               │           └── test.bal
│               ├── central/
│               │   ├── projectA/
│               │   │   ├── Ballerina.toml
│               │   │   ├── Package.md
│               │   │   └── main.bal
│               │   ├── projectB/
│               │   │   ├── Ballerina.toml
│               │   │   ├── Package.md
│               │   │   └── main.bal
│               │   ├── projectC/
│               │   │   ├── Ballerina.toml
│               │   │   ├── Package.md
│               │   │   └── main.bal
│               │   ├── projectD/
│               │   │   ├── Ballerina.toml
│               │   │   ├── Package.md
│               │   │   └── main.bal
│               │   ├── projectE/
│               │   │   ├── Ballerina.toml
│               │   │   ├── Package.md
│               │   │   └── main.bal
│               │   ├── projectF/
│               │   │   ├── Ballerina.toml
│               │   │   ├── Package.md
│               │   │   └── main.bal
│               │   ├── projectG/
│               │   │   ├── Ballerina.toml
│               │   │   ├── Package.md
│               │   │   └── main.bal
│               │   └── projectSnapshot/
│               │       ├── Ballerina.toml
│               │       ├── Package.md
│               │       └── main.bal
│               ├── distribution-tests/
│               │   ├── disttestmultiples/
│               │   │   ├── Ballerina.toml
│               │   │   ├── Module.md
│               │   │   ├── Package.md
│               │   │   ├── bctestorg-disttestmultiples-any-1.1.0.bala
│               │   │   └── disttestmultiples.bal
│               │   ├── disttestpack1/
│               │   │   ├── Ballerina.toml
│               │   │   ├── Module.md
│               │   │   ├── Package.md
│               │   │   └── disttestpack1.bal
│               │   ├── disttestpack2/
│               │   │   ├── Ballerina.toml
│               │   │   └── main.bal
│               │   ├── disttestpack3/
│               │   │   ├── Ballerina.toml
│               │   │   └── main.bal
│               │   ├── disttestpack4/
│               │   │   ├── Ballerina.toml
│               │   │   └── main.bal
│               │   ├── disttestpack5/
│               │   │   ├── Ballerina.toml
│               │   │   └── main.bal
│               │   ├── disttestpackbeta6/
│               │   │   └── bctestorg-disttestpackbeta6-any-1.1.0.bala
│               │   └── forwardpack1/
│               │       └── bctestorg-forwardpack1-any-1.1.0.bala
│               ├── hierarchical-packages/
│               │   ├── PackageH.test/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Module.md
│               │   │   ├── Package.md
│               │   │   ├── lib.bal
│               │   │   └── modules/
│               │   │       └── mod.api/
│               │   │           ├── Module.md
│               │   │           ├── Package.md
│               │   │           └── mod.api.bal
│               │   ├── PackageH.test.mod/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Module.md
│               │   │   ├── Package.md
│               │   │   ├── lib.bal
│               │   │   └── modules/
│               │   │       ├── api/
│               │   │       │   ├── Module.md
│               │   │       │   ├── Package.md
│               │   │       │   └── api.bal
│               │   │       └── api.doc/
│               │   │           ├── Module.md
│               │   │           ├── Package.md
│               │   │           └── api.doc.bal
│               │   ├── PackageI/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Dependencies-template.toml
│               │   │   └── main.bal
│               │   ├── PackageJ.test/
│               │   │   ├── Ballerina.toml
│               │   │   ├── Module.md
│               │   │   ├── Package.md
│               │   │   └── lib.bal
│               │   ├── PackageK/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Dependencies-template.toml
│               │   │   └── main.bal
│               │   ├── PackageL.test/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Dependencies-template.toml
│               │   │   ├── Module.md
│               │   │   ├── Package.md
│               │   │   ├── lib.bal
│               │   │   └── modules/
│               │   │       ├── Module.md
│               │   │       ├── Package.md
│               │   │       └── mod.api/
│               │   │           ├── Module.md
│               │   │           ├── Package.md
│               │   │           └── mod.api.bal
│               │   ├── PackageM/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Dependencies-template.toml
│               │   │   └── main.bal
│               │   ├── PackageN/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Dependencies-template.toml
│               │   │   └── main.bal
│               │   ├── PackageO.test/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Module.md
│               │   │   ├── Package.md
│               │   │   └── lib.bal
│               │   ├── PackageP/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   └── main.bal
│               │   ├── PackageQ.test/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Dependencies-template.toml
│               │   │   ├── Module.md
│               │   │   ├── Package.md
│               │   │   ├── lib.bal
│               │   │   └── modules/
│               │   │       ├── Module.md
│               │   │       ├── Package.md
│               │   │       └── mod.api/
│               │   │           ├── Module.md
│               │   │           ├── Package.md
│               │   │           └── mod.api.bal
│               │   ├── PackageR/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   └── main.bal
│               │   ├── PackageR.test/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Dependencies-template.toml
│               │   │   ├── Module.md
│               │   │   ├── Package.md
│               │   │   └── lib.bal
│               │   ├── PackageS/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Dependencies-template.toml
│               │   │   └── main.bal
│               │   ├── PackageT.test/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Module.md
│               │   │   ├── Package.md
│               │   │   └── lib.bal
│               │   ├── PackageU/
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Dependencies-template.toml
│               │   │   └── main.bal
│               │   └── Transitive.PackageH.test/
│               │       ├── .gitignore
│               │       ├── Ballerina.toml
│               │       ├── Module.md
│               │       ├── Package.md
│               │       └── lib.bal
│               ├── maven-repos/
│               │   ├── myproject1/
│               │   │   ├── .devcontainer.json
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Package.md
│               │   │   └── main.bal
│               │   ├── pact/
│               │   │   ├── .devcontainer.json
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Package.md
│               │   │   └── main.bal
│               │   ├── pkg1/
│               │   │   ├── .devcontainer.json
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Package.md
│               │   │   └── main.bal
│               │   ├── pkg2/
│               │   │   ├── .devcontainer.json
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Package.md
│               │   │   └── main.bal
│               │   ├── pkg3/
│               │   │   ├── .devcontainer.json
│               │   │   ├── .gitignore
│               │   │   ├── Ballerina.toml
│               │   │   ├── Package.md
│               │   │   └── main.bal
│               │   └── test-resolution/
│               │       ├── .devcontainer.json
│               │       ├── .gitignore
│               │       ├── Ballerina.toml
│               │       └── main.bal
│               └── testng.xml
├── pull_request_template.md
├── release-notes.md
├── resources/
│   └── tools/
│       ├── COPYRIGHT.txt
│       ├── INSTALL.txt
│       ├── LICENSE.txt
│       ├── PATENTS.txt
│       ├── README.txt
│       ├── distributions/
│       │   ├── ballerina-version
│       │   └── installer-version
│       └── scripts/
│           ├── install
│           └── install.bat
├── settings.gradle
└── stdlib-integration-tests/
    ├── auth/
    │   └── tests/
    │       ├── Config.toml
    │       ├── auth_test.bal
    │       └── resources/
    │           └── keystore/
    │               ├── ballerinaKeystore.p12
    │               └── ballerinaTruststore.p12
    ├── crypto/
    │   └── tests/
    │       ├── crypto_test.bal
    │       └── resources/
    │           └── keystore/
    │               ├── ballerinaKeystore.p12
    │               └── ballerinaTruststore.p12
    ├── email/
    │   └── tests/
    │       └── email_test.bal
    ├── ftp/
    │   └── tests/
    │       └── ftp_test.bal
    ├── http/
    │   └── tests/
    │       ├── http_1_1_passthrough_test.bal
    │       ├── http_2_0_server_push_test.bal
    │       └── rest_introspection_test.bal
    ├── index.json
    ├── jwt/
    │   └── tests/
    │       ├── jwt_test.bal
    │       └── resources/
    │           └── keystore/
    │               ├── ballerinaKeystore.p12
    │               ├── ballerinaTruststore.p12
    │               └── expiredTruststore.p12
    ├── library_package_test/
    │   ├── Ballerina.toml
    │   └── main.bal
    ├── mime/
    │   └── tests/
    │       └── mime_test.bal
    ├── oauth2/
    │   └── tests/
    │       ├── oauth2_test.bal
    │       └── resources/
    │           └── keystore/
    │               ├── ballerinaKeystore.p12
    │               └── ballerinaTruststore.p12
    ├── task/
    │   └── tests/
    │       └── http_service.bal
    ├── tcp/
    │   └── tests/
    │       ├── mock_servers.bal
    │       ├── resources/
    │       │   ├── private.key
    │       │   └── public.crt
    │       └── tcp_tests.bal
    ├── transaction/
    │   └── tests/
    │       └── xa_transactions_test.bal
    ├── udp/
    │   └── tests/
    │       ├── mock_servers.bal
    │       └── udp_tests.bal
    ├── url/
    │   └── tests/
    │       └── url_test.bal
    ├── websocket/
    │   └── tests/
    │       └── web_socket_test.bal
    ├── websub/
    │   └── tests/
    │       └── web_sub_test.bal
    ├── websub-advance/
    │   └── tests/
    │       ├── constants.bal
    │       ├── resources/
    │       │   └── security/
    │       │       ├── ballerinaKeystore.p12
    │       │       └── ballerinaTruststore.p12
    │       ├── test_subscribers_at_basic_auth_secured_hub.bal
    │       ├── test_subscribers_at_persistence_enabled_hub.bal
    │       └── utils.bal
    └── websub-generic/
        └── tests/
            ├── 01_websub_publisher.bal
            ├── 02_redirection_publishers.bal
            ├── constants.bal
            ├── resources/
            │   └── security/
            │       ├── ballerinaKeystore.p12
            │       └── ballerinaTruststore.p12
            ├── test_content_negotiation.bal
            ├── test_custom_subscribers.bal
            ├── test_different_content_type_subscribers.bal
            ├── test_multiple_subscribers.bal
            ├── test_redirected_subscribers.bal
            ├── test_subscriber.bal
            ├── test_subscriber_startup.bal
            ├── test_unsubscription_client.bal
            └── utils.bal
Download .txt
SYMBOL INDEX (497 symbols across 56 files)

FILE: ballerina-test-automation/installer-test/src/test/java/io/ballerina/installer/test/CentralTest.java
  class CentralTest (line 25) | public class CentralTest {
    method dataProviderMethod (line 30) | @DataProvider(name = "getExecutors")
    method testPull (line 37) | @Test(dataProvider = "getExecutors")

FILE: ballerina-test-automation/installer-test/src/test/java/io/ballerina/installer/test/InstallerTest.java
  class InstallerTest (line 24) | public class InstallerTest {
    method dataProviderMethod (line 29) | @DataProvider(name = "getExecutors")
    method testSmoke (line 36) | @Test(dataProvider = "getExecutors")

FILE: ballerina-test-automation/installer-test/src/test/java/io/ballerina/installer/test/ProjectTest.java
  class ProjectTest (line 24) | public class ProjectTest {
    method dataProviderMethod (line 29) | @DataProvider(name = "getExecutors")
    method testProject (line 36) | @Test(dataProvider = "getExecutors")
    method testBBEs (line 53) | @Test(dataProvider = "getExecutors")
    method testDirectoryPath (line 68) | @Test(dataProvider = "getExecutors")

FILE: ballerina-test-automation/installer-test/src/test/java/io/ballerina/installer/test/TestUtils.java
  class TestUtils (line 40) | public class TestUtils {
    method getVersionOutput (line 54) | public static String getVersionOutput(String jBallerinaVersion, String...
    method getExecutor (line 71) | public static Executor getExecutor(String version) {
    method testDistCommands (line 88) | public static void testDistCommands(Executor executor, String version,...
    method testInstallation (line 152) | public static void testInstallation(Executor executor, String version,...
    method testDependencyFetch (line 166) | public static void testDependencyFetch(Executor executor, String toolV...
    method verifyDistList (line 212) | public static void verifyDistList(Executor executor, String toolVersio...
    method isSupportedRelease (line 225) | public static boolean isSupportedRelease(String version) {
    method isOldToolVersion (line 240) | public static boolean isOldToolVersion(String toolVersion) {
    method testProject (line 252) | public static void testProject(Executor executor, String previousVersi...
    method testBBEs (line 276) | public static void testBBEs(Executor executor, String previousVersion,...
    method getSupportedVersion (line 322) | private static String getSupportedVersion(String toolVersion, String v...
    method testDirectoryPath (line 337) | public static void testDirectoryPath(Executor executor, String toolVer...

FILE: ballerina-test-automation/test-automation/src/main/java/io/ballerina/test/CentOS.java
  class CentOS (line 19) | public class CentOS implements Executor {
    method CentOS (line 24) | public CentOS(String version) {
    method transferArtifacts (line 30) | @Override
    method install (line 36) | @Override
    method executeCommand (line 41) | @Override
    method uninstall (line 48) | @Override
    method cleanArtifacts (line 53) | @Override

FILE: ballerina-test-automation/test-automation/src/main/java/io/ballerina/test/Executor.java
  type Executor (line 19) | public interface Executor {
    method transferArtifacts (line 20) | String transferArtifacts();
    method install (line 22) | String install();
    method executeCommand (line 24) | String executeCommand(String command, boolean isAdminMode, String tool...
    method uninstall (line 26) | String uninstall();
    method cleanArtifacts (line 28) | String cleanArtifacts();

FILE: ballerina-test-automation/test-automation/src/main/java/io/ballerina/test/MacOS.java
  class MacOS (line 20) | public class MacOS implements Executor {
    method MacOS (line 24) | public MacOS(String version) {
    method transferArtifacts (line 30) | @Override
    method install (line 36) | @Override
    method executeCommand (line 41) | @Override
    method uninstall (line 51) | @Override
    method cleanArtifacts (line 56) | @Override

FILE: ballerina-test-automation/test-automation/src/main/java/io/ballerina/test/Ubuntu.java
  class Ubuntu (line 20) | public class Ubuntu implements Executor {
    method Ubuntu (line 25) | public Ubuntu(String version) {
    method transferArtifacts (line 32) | @Override
    method install (line 38) | @Override
    method executeCommand (line 43) | @Override
    method uninstall (line 50) | @Override
    method cleanArtifacts (line 55) | @Override

FILE: ballerina-test-automation/test-automation/src/main/java/io/ballerina/test/Utils.java
  class Utils (line 36) | public class Utils {
    method downloadFile (line 44) | public static void downloadFile(String version, String installerName) {
    method executeCommand (line 70) | public static String executeCommand(String command) {
    method isUnix (line 106) | private static boolean isUnix() {
    method isWindows (line 110) | private static boolean isWindows() {
    method getUserHome (line 119) | public static String getUserHome() {
    method getCommandName (line 136) | public static String getCommandName(String toolVersion) {

FILE: ballerina-test-automation/test-automation/src/main/java/io/ballerina/test/Windows.java
  class Windows (line 19) | public class Windows implements Executor {
    method Windows (line 23) | public Windows(String version) {
    method transferArtifacts (line 28) | @Override
    method install (line 34) | @Override
    method executeCommand (line 40) | @Override
    method uninstall (line 45) | @Override
    method cleanArtifacts (line 50) | @Override

FILE: ballerina-test-automation/update-tool-test/src/test/java/io/ballerina/tool/test/FetchDependencyTest.java
  class FetchDependencyTest (line 25) | public class FetchDependencyTest {
    method dataProviderMethod (line 31) | @DataProvider(name = "getExecutors")
    method testFetchDependency (line 38) | @Test(dataProvider = "getExecutors")

FILE: ballerina-test-automation/update-tool-test/src/test/java/io/ballerina/tool/test/UpdateDistTest.java
  class UpdateDistTest (line 25) | public class UpdateDistTest {
    method dataProviderMethod (line 35) | @DataProvider(name = "getExecutors")
    method testDistCommands (line 42) | @Test(dataProvider = "getExecutors")

FILE: ballerina-test-automation/update-tool-test/src/test/java/io/ballerina/tool/test/UpdateToolTest.java
  class UpdateToolTest (line 25) | public class UpdateToolTest {
    method dataProviderMethod (line 36) | @DataProvider(name = "getExecutors")
    method testUpdateTool (line 43) | @Test(dataProvider = "getExecutors")

FILE: ballerina-test/src/test/java/org/ballerinalang/distribution/lengthValidation/LengthValidator.java
  class LengthValidator (line 38) | public class LengthValidator {
    method logger (line 46) | public static void logger(String message) {
    method validateLineLength (line 53) | public static void validateLineLength(String path, String fileName) th...
    method validateFileExtension (line 89) | public static void validateFileExtension(File fileEntry, String[] exte...
    method listFilesForFolder (line 100) | public static  void listFilesForFolder(final File folder) throws LineL...
    method validateLength (line 110) | @Test

FILE: ballerina-test/src/test/java/org/ballerinalang/distribution/lengthValidation/LineLengthExceededException.java
  class LineLengthExceededException (line 19) | public class LineLengthExceededException extends Exception{
    method LineLengthExceededException (line 21) | LineLengthExceededException(String message) {

FILE: ballerina-test/src/test/java/org/ballerinalang/distribution/test/ArtifactBuildTest.java
  class ArtifactBuildTest (line 34) | public class ArtifactBuildTest {
    method distributionNameProvider (line 36) | @DataProvider(name = "distribution-provider")
    method setupDistributions (line 45) | @BeforeClass
    method cleanUp (line 54) | @AfterClass

FILE: ballerina-test/src/test/java/org/ballerinalang/distribution/test/BallerinaCommandTest.java
  class BallerinaCommandTest (line 34) | public class BallerinaCommandTest {
    method setupDistributions (line 43) | @BeforeClass
    method testVersionCommand (line 49) | @Test(description = "Execute smoke testing to verify installation.")
    method testBuildCommand (line 54) | @Test(description = "Execute smoke testing to verify build command.", ...
    method testDistCommands (line 67) | @Test(description = "Execute smoke testing to verify dist commands.", ...
    method cleanUp (line 131) | @AfterClass

FILE: ballerina-test/src/test/java/org/ballerinalang/distribution/test/DistributionArtifactCheckTest.java
  class DistributionArtifactCheckTest (line 38) | public class DistributionArtifactCheckTest {
    method setupDistributions (line 41) | @BeforeClass
    method c2cExistsTest (line 47) | @Test()
    method c2cToolingExistsTest (line 78) | @Test()
    method cleanUp (line 90) | @AfterClass

FILE: ballerina-test/src/test/java/org/ballerinalang/distribution/test/GraphqlToolTest.java
  class GraphqlToolTest (line 36) | public class GraphqlToolTest {
    method setupDistributions (line 38) | @BeforeClass
    method testGraphqlClientGenerationUsingEndpoint (line 44) | @Test(description = "Check GraphQL client generation")
    method testGraphqlClientGenerationUsingSchemaFile (line 60) | @Test(description = "Check GraphQL client generation")
    method testGraphqlSchemaGeneration (line 76) | @Test(description = "Check GraphQL schema generation")
    method testGraphqlSchemaGenerationWithServicePathFlag (line 89) | @Test(description = "Check GraphQL schema generation")
    method testGraphqlServiceGeneration (line 104) | @Test(description = "Check GraphQL service generation")
    method testGraphqlServiceGenerationWithRecordFlag (line 118) | @Test(description = "Check GraphQL service generation")
    method cleanUp (line 133) | @AfterClass

FILE: ballerina-test/src/test/java/org/ballerinalang/distribution/test/GrpcToolingTest.java
  class GrpcToolingTest (line 42) | public class GrpcToolingTest {
    method setupDistributions (line 46) | @BeforeClass
    method grpcCommandWithoutInputOptionTest (line 52) | @Test
    method grpcCommandWithoutInputValueTest (line 62) | @Test
    method grpcCommandWithValidInputTest (line 73) | @Test
    method grpcHelpCommandTest (line 91) | @Test
    method grpcHCommandTest (line 101) | @Test
    method readOutputFromStreamAsString (line 111) | private String readOutputFromStreamAsString(InputStream result) throws...
    method cleanUp (line 121) | @AfterClass

FILE: ballerina-test/src/test/java/org/ballerinalang/distribution/test/OpenAPIArtifactBuildTest.java
  class OpenAPIArtifactBuildTest (line 46) | public class OpenAPIArtifactBuildTest {
    method setupDistributions (line 48) | @BeforeClass
    method buildOpenAPIToBallerinaTest (line 54) | @Test(description = "Check openapi to ballerina generator command")
    method buildOpenAPIToBallerinaServiceFileGenerationTest (line 68) | @Test(description = "Check openapi to ballerina generator command with...
    method buildOpenAPIToBallerinaWithFilterTagsTest (line 84) | @Test(description = "Check openapi to ballerina generator command for ...
    method buildOpenAPIToBallerinaClientGenerationTests (line 121) | @Test(description = "Check openapi to ballerina client generator comma...
    method buildBallerinaToOpenAPITest (line 158) | @Test(description = "Check ballerina to openapi generator command")
    method buildOpenAPIValidatorOffTest (line 172) | @Test(description = "Test for openapi validator off")
    method buildOpenAPIValidatorONTest (line 197) | @Test(description = "Tests for openapi validator on")
    method cleanUp (line 222) | @AfterClass
    method replaceContractPath (line 228) | public String replaceContractPath(Stream<String> expectedServiceLines,...

FILE: ballerina-test/src/test/java/org/ballerinalang/distribution/test/OpenAPIDistributionArtifactCheck.java
  class OpenAPIDistributionArtifactCheck (line 39) | public class OpenAPIDistributionArtifactCheck {
    method setupDistributions (line 44) | @BeforeClass
    method openapiAnnotationExistsTest (line 50) | @Test
    method cleanUp (line 103) | @AfterClass

FILE: ballerina-test/src/test/java/org/ballerinalang/distribution/test/PlatformDistributionArtifactCheckTest.java
  class PlatformDistributionArtifactCheckTest (line 38) | public class PlatformDistributionArtifactCheckTest {
    method distributionNameProvider (line 42) | @DataProvider(name = "distribution-provider")
    method setupDistributions (line 52) | @BeforeClass
    method c2cExistsTest (line 61) | @Test(dataProvider = "distribution-provider", enabled = false)
    method c2cToolingExistsTest (line 97) | @Test(dataProvider = "distribution-provider")
    method cleanUp (line 113) | @AfterClass

FILE: ballerina-test/src/test/java/org/ballerinalang/distribution/utils/TestUtils.java
  class TestUtils (line 49) | public class TestUtils {
    method logOutput (line 74) | private static void logOutput(InputStream inputStream) throws IOExcept...
    method executeBuild (line 90) | public static boolean executeBuild(String distributionName, Path sourc...
    method executeOpenapiBuild (line 117) | public static InputStream executeOpenapiBuild(String distributionName,...
    method executeGrpcCommand (line 134) | public static InputStream executeGrpcCommand(String distributionName, ...
    method executeOpenAPI (line 153) | public static boolean executeOpenAPI(String distributionName, Path sou...
    method executeGraphql (line 173) | public static boolean executeGraphql(String distributionName, Path sou...
    method getProcessBuilderResults (line 192) | public static Process getProcessBuilderResults(String distributionName...
    method prepareDistribution (line 213) | public static void prepareDistribution(Path distributionZipPath) throw...
    method cleanDistribution (line 224) | public static void cleanDistribution() throws IOException {
    method getResource (line 234) | public static Path getResource(Path resource) {
    method findFileOrDirectory (line 246) | public static String findFileOrDirectory(Path dir, String dirName) {
    method deleteGeneratedFiles (line 257) | public static void deleteGeneratedFiles(String generatedFileName, Stri...
    method executeCommand (line 284) | public static String executeCommand(String command) throws IOException {
    method getUserHome (line 318) | public static String getUserHome() {
    method testInstallation (line 335) | public static void testInstallation(String path, String jBallerinaVers...
    method getVersionOutput (line 350) | public static String getVersionOutput(String jBallerinaVersion, String...
    method isOldToolVersion (line 369) | public static boolean isOldToolVersion(String toolVersion) {
    method isSupportedRelease (line 378) | public static boolean isSupportedRelease(String version) {
    method getContent (line 393) | public static String getContent(Path filePath) throws IOException {
    method getStringFromGivenBalFile (line 397) | public static String getStringFromGivenBalFile(Path expectedServiceFil...

FILE: build-time-tests/src/main/java/org/ballerina/packages/buildtime/GenerateBuildDataCsv.java
  class GenerateBuildDataCsv (line 43) | public class GenerateBuildDataCsv {
    method main (line 44) | public static void main(String[] args) throws IOException {
    method getJsonFiles (line 76) | private static List<Path> getJsonFiles(Path artefactsDir) throws IOExc...

FILE: cache-generator/src/main/java/io/ballerina/gencache/cmd/GenCacheCmd.java
  class GenCacheCmd (line 32) | @CommandLine.Command(
    method GenCacheCmd (line 49) | public GenCacheCmd() {
    method execute (line 55) | @Override
    method getName (line 99) | @Override
    method printLongDesc (line 104) | @Override
    method printUsage (line 115) | @Override
    method setParentCmdParser (line 120) | @Override
    method exitError (line 124) | private void exitError(boolean exitWhenFinish) {

FILE: devtools-integration-tests/src/test/java/org/ballerina/devtools/debug/BaseTestCase.java
  class BaseTestCase (line 32) | public class BaseTestCase {
    method initialize (line 34) | @BeforeSuite(alwaysRun = true)
    method destroy (line 41) | @AfterSuite(alwaysRun = true)

FILE: devtools-integration-tests/src/test/java/org/ballerina/devtools/debug/ExpressionEvaluationTest.java
  class ExpressionEvaluationTest (line 36) | public class ExpressionEvaluationTest extends BaseTestCase {
    method setup (line 41) | @BeforeClass
    method testRemoteCallEvaluation (line 46) | @Test(description = "Test Ballerina standard library related remote me...
    method testObjectMethodEvaluation (line 52) | @Test(description = "Test Ballerina standard library related object me...
    method cleanUp (line 60) | @AfterClass(alwaysRun = true)
    method prepareForEvaluation (line 66) | protected void prepareForEvaluation() throws BallerinaTestException {

FILE: devtools-integration-tests/src/test/java/org/ballerina/devtools/debug/ModuleBreakpointTest.java
  class ModuleBreakpointTest (line 36) | public class ModuleBreakpointTest extends BaseTestCase {
    method setup (line 40) | @BeforeClass
    method testMultipleBreakpointsInSameFile (line 47) | @Test
    method cleanUp (line 66) | @AfterMethod(alwaysRun = true)

FILE: devtools-integration-tests/src/test/java/org/ballerina/devtools/debug/ServiceDebugTest.java
  class ServiceDebugTest (line 39) | public class ServiceDebugTest extends BaseTestCase {
    method setup (line 43) | @BeforeClass
    method testModuleServiceDebugScenarios (line 50) | @Test(description = "Test for service module debug engage")
    method serviceCallStackDebugTest (line 75) | @Test(description = "Test for service call stack representation")
    method testSingleBalFileServiceDebugScenarios (line 89) | @Test(description = "Test for single bal file debug engage")
    method cleanUp (line 102) | @AfterMethod(alwaysRun = true)

FILE: dist-repo-builder/src/main/java/io/ballerina/dist/DistRepoBuilder.java
  class DistRepoBuilder (line 43) | public class DistRepoBuilder {
    method main (line 51) | public static void main(String args[]) throws Exception {
    method getExistingDocs (line 86) | private static List<Path> getExistingDocs(Path jBalToolsDocPath) throw...
    method generateDocsFromBala (line 110) | private static void generateDocsFromBala(Path balaPath, Path jBalTools...
    method validateCache (line 124) | private static boolean validateCache(Path bala, Path repo) {
    method findBalas (line 147) | static List<Path> findBalas(Path repo) throws IOException {
    method getJarName (line 169) | private static String getJarName(String orgName, String moduleName, St...
    method setFilePermission (line 173) | private static void setFilePermission(Path filepath) {
    method isWindows (line 179) | private static boolean isWindows() {

FILE: language-server-simulator/src/main/java/org/ballerinalang/langserver/simulator/Editor.java
  class Editor (line 34) | public class Editor {
    method Editor (line 44) | private Editor(BallerinaLanguageServer languageServer, Endpoint endpoi...
    method open (line 54) | public static Editor open() {
    method openFile (line 64) | public EditorTab openFile(Path filePath) {
    method closeFile (line 87) | public void closeFile(Path filePath) {
    method closeTab (line 100) | public void closeTab(EditorTab tab) {
    method close (line 107) | public void close() {
    method activeTab (line 112) | public EditorTab activeTab() {

FILE: language-server-simulator/src/main/java/org/ballerinalang/langserver/simulator/EditorOutputStream.java
  class EditorOutputStream (line 34) | class EditorOutputStream extends ByteArrayOutputStream {
    method flush (line 47) | @Override
    method process (line 64) | void process(String message) {
    method setEditor (line 95) | public void setEditor(Editor editor) {

FILE: language-server-simulator/src/main/java/org/ballerinalang/langserver/simulator/EditorSimulator.java
  class EditorSimulator (line 45) | public class EditorSimulator {
    method main (line 54) | public static void main(String[] args) throws IOException {
    method run (line 63) | public static void run() throws IOException {
    method getRandomGenerator (line 170) | public static Generators.Type getRandomGenerator() {

FILE: language-server-simulator/src/main/java/org/ballerinalang/langserver/simulator/EditorTab.java
  class EditorTab (line 53) | public class EditorTab {
    method EditorTab (line 67) | public EditorTab(Path filePath, Endpoint endpoint, BallerinaLanguageSe...
    method type (line 89) | public void type(String content) {
    method isDocumentNotInSync (line 151) | private boolean isDocumentNotInSync() {
    method completions (line 165) | public void completions() {
    method codeActions (line 187) | public void codeActions() {
    method cursor (line 193) | public void cursor(int line, int offset) {
    method cursor (line 197) | public Position cursor() {
    method syntaxTree (line 201) | public SyntaxTree syntaxTree() {
    method textDocument (line 205) | public TextDocument textDocument() {
    method filePath (line 209) | public Path filePath() {
    method close (line 213) | public void close() {
    method toString (line 218) | @Override
    method equals (line 226) | @Override
    method hashCode (line 238) | @Override

FILE: language-server-simulator/src/main/java/org/ballerinalang/langserver/simulator/generators/ClassGenerator.java
  class ClassGenerator (line 28) | @JavaSPIService("org.ballerinalang.langserver.org.ballerinalang.langserv...
    method generate (line 31) | @Override
    method type (line 36) | @Override
    method generateRandomClass (line 41) | private String generateRandomClass() {

FILE: language-server-simulator/src/main/java/org/ballerinalang/langserver/simulator/generators/CodeSnippetGenerator.java
  class CodeSnippetGenerator (line 26) | public abstract class CodeSnippetGenerator {
    method generate (line 31) | public abstract String generate();
    method type (line 33) | public abstract Generators.Type type();

FILE: language-server-simulator/src/main/java/org/ballerinalang/langserver/simulator/generators/FunctionGenerator.java
  class FunctionGenerator (line 25) | @JavaSPIService("org.ballerinalang.langserver.org.ballerinalang.langserv...
    method generate (line 28) | @Override
    method type (line 33) | @Override
    method generateRandomFunction (line 38) | public String generateRandomFunction() {
    method generateRandomFunction (line 44) | public String generateRandomFunction(String name, String returnType) {
    method getRandomFunctionBody (line 50) | public String getRandomFunctionBody(String returnType) {

FILE: language-server-simulator/src/main/java/org/ballerinalang/langserver/simulator/generators/Generators.java
  class Generators (line 32) | public class Generators {
    method Generators (line 39) | private Generators() {
    method generate (line 64) | public static String generate(Type type) {
    method getGenerator (line 72) | public static <T> T getGenerator(Type type) {
    method getInstance (line 76) | public static Generators getInstance() {
    type Type (line 83) | public enum Type {
      method Type (line 95) | Type(boolean topLevelNode) {
      method isTopLevelNode (line 99) | public boolean isTopLevelNode() {

FILE: language-server-simulator/src/main/java/org/ballerinalang/langserver/simulator/generators/ImportStatementGenerator.java
  class ImportStatementGenerator (line 34) | @JavaSPIService("org.ballerinalang.langserver.org.ballerinalang.langserv...
    method generate (line 39) | @Override
    method type (line 63) | @Override

FILE: language-server-simulator/src/main/java/org/ballerinalang/langserver/simulator/generators/MatchStatementGenerator.java
  class MatchStatementGenerator (line 25) | @JavaSPIService("org.ballerinalang.langserver.org.ballerinalang.langserv...
    method generate (line 33) | @Override
    method type (line 45) | @Override

FILE: language-server-simulator/src/main/java/org/ballerinalang/langserver/simulator/generators/ServiceGenerator.java
  class ServiceGenerator (line 25) | @JavaSPIService("org.ballerinalang.langserver.org.ballerinalang.langserv...
    method generate (line 28) | @Override
    method type (line 33) | @Override
    method generateRandomService (line 38) | public String generateRandomService() {

FILE: language-server-simulator/src/main/java/org/ballerinalang/langserver/simulator/generators/StatementGenerator.java
  class StatementGenerator (line 25) | @JavaSPIService("org.ballerinalang.langserver.org.ballerinalang.langserv...
    method generate (line 28) | @Override
    method type (line 33) | @Override
    method getRandomStatement (line 38) | public String getRandomStatement() {

FILE: language-server-simulator/src/main/java/org/ballerinalang/langserver/simulator/generators/TypeDefinitionGenerator.java
  class TypeDefinitionGenerator (line 30) | @JavaSPIService("org.ballerinalang.langserver.org.ballerinalang.langserv...
    method generate (line 36) | @Override
    method generateRecordType (line 49) | public String generateRecordType() {
    method generateUnionType (line 69) | public String generateUnionType() {
    method generateObjectTypeDef (line 90) | public String generateObjectTypeDef() {
    method type (line 99) | @Override

FILE: language-server-simulator/src/main/java/org/ballerinalang/langserver/simulator/generators/VarDeclarationStatementGenerator.java
  class VarDeclarationStatementGenerator (line 25) | @JavaSPIService("org.ballerinalang.langserver.org.ballerinalang.langserv...
    method generate (line 30) | public String generate() {
    method type (line 36) | @Override

FILE: project-api-tests/src/test/java/org/ballerina/projectapi/BalToolTest.java
  class BalToolTest (line 73) | public class BalToolTest {
    method setUp (line 93) | @BeforeClass()
    method setupPullTests (line 105) | @BeforeGroups(value = "pull")
    method testPullToolWithoutVersion (line 121) | @Test(description = "Pull a tool without specifying a version", groups...
    method testPullToolAgainWithoutVersion (line 165) | @Test(description = "Pull a tool again without specifying a version",
    method testPullToolWithASpecificVersion (line 211) | @Test(description = "Pull a tool with a specific version",
    method testPullToolAgainWithASpecificVersion (line 259) | @Test(description = "Pull a tool again with a specific version",
    method testPullToolWithANonExistingVersion (line 307) | @Test(description = "Pull a tool with a non existing version",
    method testPullAToolVersionWithIncompatibleDistribution (line 344) | @Test(description = "Pull a tool version with incompatible distribution",
    method setupRemoveTests (line 366) | @BeforeGroups(value = "remove")
    method testRemoveANonExistingTool (line 392) | @Test(description = "Remove a non existing tool", groups = {"remove"})
    method testRemoveANonExistingVersionOfATool (line 415) | @Test(description = "Remove a non existing version of a tool", groups ...
    method testRemoveToolVersionWithIncompatibleDistribution (line 438) | @Test(description = "Remove a tool version with incompatible distribut...
    method testRemoveToolActiveVersion (line 459) | @Test(description = "Remove a tool version with incompatible distribut...
    method testRemoveASpecificToolVersion (line 486) | @Test(description = "Remove a specific tool version",
    method testRemoveAllToolVersions (line 543) | @Test(description = "Remove all tool versions", dependsOnMethods = {"t...
    method setupUpdateTests (line 592) | @BeforeGroups(value = "update")
    method testUpdateNonExistingTool (line 607) | @Test(description = "Update a non-existing tool", groups = {"update"})
    method testUpdateToolWithNewPatchAndMinor (line 635) | @Test(description = "Update a tool with new patch and minor versions",...
    method testUpdateToolWithNoNewVersions (line 688) | @Test(description = "Update a tool with no new versions",
    method setupUseTests (line 734) | @BeforeGroups(value = "use")
    method testUseNewToolVersion (line 759) | @Test(description = "Use a newer tool version", groups = {"use"})
    method testUseOldToolVersion (line 785) | @Test(description = "Use a newer tool version", dependsOnMethods = {"t...
    method testUseCurrentlyActiveToolVersion (line 811) | @Test(description = "Use the currently active tool version",
    method testUseNonExistentToolVersion (line 838) | @Test(description = "Use a non existent tool version", dependsOnMethod...
    method testUseToolVersionWithIncompatibleDistribution (line 860) | @Test(description = "Use a tool version built with incompatible distri...
    method testListToolsWhenNoToolsInstalled (line 882) | @Test(description = "List all tools when there are no tools", groups =...
    method testListToolsWithMultipleToolVersions (line 905) | @Test(description = "List all tools when there are multiple versions o...
    method testSearchAToolWithId (line 934) | @Test(description = "Search a tool with tool id", groups = {"list"})
    method setupExecuteToolTests (line 952) | @BeforeGroups(value = "execute_tool")
    method testExecuteGeneralHelpWithToolInstalled (line 966) | @Test(description = "Execute bal help with the tool installed", groups...
    method testExecuteToolSpecificHelpWithToolInstalled (line 983) | @Test(description = "Execute bal help disttest with the tool installed...
    method testExecuteTool (line 1001) | @Test(description = "Execute disstest tool", groups = {"execute_tool"})
    method setToolEnvironmentsForSubCommands (line 1018) | private Map<ToolSubCommand, BalToolTest.ToolEnvironment> setToolEnviro...
    method getToolEnvironment (line 1030) | private BalToolTest.ToolEnvironment getToolEnvironment(ToolSubCommand ...
    method copyTestResourcesToTempWorkspace (line 1040) | private void copyTestResourcesToTempWorkspace() {
    method pushToolPackages (line 1051) | private void pushToolPackages(Map<String, String> envVariables) throws...
    method getBalaPath (line 1076) | private Optional<Path> getBalaPath(Path packagePath, String version) {
    method updateBallerinaVersionOfBala (line 1089) | private void updateBallerinaVersionOfBala(Path balaFilePath, String ba...
    method unzipBalaFile (line 1100) | private void unzipBalaFile(Path balaFilePath, Path destDir) throws IOE...
    method newFile (line 1125) | private File newFile(File destinationDir, ZipEntry zipEntry) throws IO...
    method updatePackageJsonBallerinaVersion (line 1135) | private void updatePackageJsonBallerinaVersion(Path packagePath, Strin...
    method zipBalaFile (line 1147) | private void zipBalaFile(Path sourceDirPath, Path zipFilePath) throws ...
    method readExpectedCmdOutsAsString (line 1166) | private String readExpectedCmdOutsAsString(String outputFileName) {
    method executeHelpFlagOfTool (line 1176) | private Pair<String, String> executeHelpFlagOfTool(String toolId, Map<...
    class ToolEnvironment (line 1185) | static class ToolEnvironment {
      method ToolEnvironment (line 1191) | public ToolEnvironment(ToolSubCommand subCommand, Map<String, String...
  type ToolSubCommand (line 1201) | enum ToolSubCommand {

FILE: project-api-tests/src/test/java/org/ballerina/projectapi/BuildTimeTest.java
  class BuildTimeTest (line 53) | public class BuildTimeTest {
    method setup (line 60) | @BeforeClass
    method testResolutionTimeReduction (line 78) | @Test(enabled = false,
    method testCodeGenOfflineResolution (line 91) | @Test(description = "Verify the offline resolution during code generat...
    method addEnvVariables (line 108) | private Map<String, String> addEnvVariables(Map<String, String> envVar...
    method getPackageResolutionTime (line 122) | private long getPackageResolutionTime(String projectName) throws IOExc...
    method getPackageBuildTime (line 153) | private long getPackageBuildTime(String projectName) throws IOExceptio...
    method cleanup (line 175) | @AfterClass

FILE: project-api-tests/src/test/java/org/ballerina/projectapi/CentralNegativeTest.java
  class CentralNegativeTest (line 59) | public class CentralNegativeTest {
    method setUp (line 75) | @BeforeClass()
    method testPushPackageWithInvalidAccessToken (line 105) | @Test(description = "Build and push package with invalid access token"...
    method cleanup (line 139) | @AfterClass
    method addEnvVariablesWithInvalidAccessToken (line 145) | private Map<String, String> addEnvVariablesWithInvalidAccessToken(Map<...
    method setupDistributions (line 155) | private void setupDistributions() throws IOException {
    method isPkgAvailableInCentral (line 166) | private boolean isPkgAvailableInCentral(String pkg) throws IOException...

FILE: project-api-tests/src/test/java/org/ballerina/projectapi/CentralTest.java
  class CentralTest (line 69) | public class CentralTest {
    method setUp (line 94) | @BeforeClass()
    method testBuildPackageA (line 163) | @Test(description = "Build package A with a native lib dependency")
    method testPushPackageA (line 183) | @Test(description = "Push package A to central", dependsOnMethods = "t...
    method testBuildPackageB (line 198) | @Test(description = "Build package B which has java21 platform depende...
    method testBuildPackageC (line 218) | @Test(description = "Build package C which depends on Package A and B",
    method testPushPackageB (line 238) | @Test(description = "Push package B to central", dependsOnMethods = "t...
    method testBuildPackageCAgain (line 253) | @Test(description = "Build package C after pushing Package B", depends...
    method testPushPackageC (line 274) | @Test(description = "Push package C to central", dependsOnMethods = "t...
    method testBuildSnapshotPackage (line 289) | @Test(description = "Build package with pre-release version")
    method testPushSnapshotPackage (line 314) | @Test(description = "Push package with pre-release version to central",
    method testPullSnapshotPackage (line 334) | @Test(description = "Pull package with pre-release version from central",
    method testBuildPackageE (line 355) | @Test(description = "Build package E")
    method testPushPackageE (line 373) | @Test(description = "Push package E to the central", dependsOnMethods ...
    method testBuildPackageF (line 387) | @Test(description = "Build package F", dependsOnMethods = "testPushPac...
    method testPushPackageF (line 405) | @Test(description = "Push package F to the central", dependsOnMethods ...
    method testBuildPackageG (line 419) | @Test(description = "Build package G", dependsOnMethods = "testPushPac...
    method testPushPackageG (line 437) | @Test(description = "Push package G", dependsOnMethods = "testBuildPac...
    method testPullPackageG (line 451) | @Test(description = "Pull package G from central. Should pull both E, ...
    method cleanup (line 485) | @AfterClass
    class Copy (line 494) | static class Copy extends SimpleFileVisitor<Path> {
      method Copy (line 499) | Copy(Path fromPath, Path toPath, StandardCopyOption copyOption) {
      method Copy (line 505) | Copy(Path fromPath, Path toPath) {
      method preVisitDirectory (line 509) | @Override
      method visitFile (line 519) | @Override

FILE: project-api-tests/src/test/java/org/ballerina/projectapi/CentralTestUtils.java
  class CentralTestUtils (line 55) | public class CentralTestUtils {
    method CentralTestUtils (line 57) | private CentralTestUtils() {
    method randomPackageName (line 84) | static String randomPackageName(int count) {
    method createSettingToml (line 101) | static void createSettingToml(Path dirPath) throws IOException {
    method getDevToken (line 112) | private static String getDevToken() {
    method getProdToken (line 122) | private static String getProdToken() {
    method getBallerinaBotWorkflow (line 131) | public static String getBallerinaBotWorkflow() {
    method getEnvVariables (line 140) | static Map<String, String> getEnvVariables() {
    method updateFileToken (line 155) | static void updateFileToken(Path filePath, String guessToken, String a...
    method getString (line 170) | static String getString(InputStream outputs) throws IOException {
    method deleteFiles (line 185) | static void deleteFiles(Path dirPath) throws IOException {
    method getGenerateBalaLog (line 207) | static String getGenerateBalaLog(String org, String pkgName, String pl...
    method getPushedToCentralLog (line 219) | static String getPushedToCentralLog(String orgName, String pkgName, St...
    method getPushedToCentralLog (line 230) | static String getPushedToCentralLog(String orgName, String pkgName) {
    method getExecutableJarPath (line 241) | static Path getExecutableJarPath(Path projectPath, String pkgName) {
    method getBalaPath (line 255) | static Path getBalaPath(Path projectPath, String org, String pkgName, ...
    method isPkgAvailableInCentral (line 270) | static boolean isPkgAvailableInCentral(String pkg, Path tempWorkspaceD...
    method isToolAvailableInCentral (line 286) | static boolean isToolAvailableInCentral(String toolId, Path tempWorksp...
    method isPkgVersionAvailableInCentral (line 303) | static boolean isPkgVersionAvailableInCentral(String pkg, Path tempWor...
    method searchPackageDetails (line 320) | private static String searchPackageDetails(String pkg, Path tempWorksp...
    method searchToolDetails (line 343) | private static String searchToolDetails(String toolId, Path tempWorksp...
    method buildPackageBala (line 369) | static void buildPackageBala(Path tempWorkspaceDirectory, Map<String, ...
    method testPushPackage (line 403) | static void testPushPackage(Path tempWorkspaceDirectory, String projec...
    method testPushPackageToLocal (line 430) | static void testPushPackageToLocal(Path tempWorkspaceDirectory, String...
    method testPushPackageUsingBalaPath (line 458) | public static void testPushPackageUsingBalaPath(Path tempWorkspaceDire...
    method deleteBalaOfPackage (line 474) | public static void deleteBalaOfPackage(String orgName, String packageN...
    method getFileListByExtension (line 482) | public static List<Path> getFileListByExtension(Path filesDirectory, S...
    method replacePackageName (line 491) | public static void replacePackageName(List<Path> filesToChange, String...
    method getNewDirectoryName (line 511) | public static String getNewDirectoryName(String currentPackageName, St...
    method replaceRandomPackageName (line 517) | public static void replaceRandomPackageName(Path tempWorkspaceDirector...

FILE: project-api-tests/src/test/java/org/ballerina/projectapi/DistributionCompatibilityTest.java
  class DistributionCompatibilityTest (line 66) | public class DistributionCompatibilityTest {
    method setUp (line 76) | @BeforeClass()
    method replaceContainingDir (line 130) | private void replaceContainingDir(String packageName, String updatedPa...
    method testDependencyResolutionWithSameDist (line 138) | @Test(description = "Verify dependency resolution with a dependency bu...
    method testDependencyResolutionBackwardCompatibility (line 149) | @Test(description = "Verify dependency resolution with a dependency bu...
    method testDependencyResolutionForwardCompatibility (line 160) | @Test(description = "Verify dependency resolution with a dependency bu...
    method testWithMultipleDistDependencyVersions (line 165) | @Test(description = "Verify dependency resolution with multiple depend...
    method buildPackage (line 188) | private void buildPackage(String packageName, LinkedList args) throws ...
    method pushToCentral (line 202) | private void pushToCentral(String packageName, String version) throws ...
    method verifyUpdatedDependencies (line 214) | private void verifyUpdatedDependencies(String packageName, String depe...
    method verifyBuildPackage (line 220) | private void verifyBuildPackage(String packageName, String dependencyP...
    method modifyBala (line 235) | private void modifyBala(String packageName, String updatedPackageName)...
    method createBala (line 304) | private void createBala(List<File> listFiles, String destZipFile) thro...
    method zipFile (line 318) | private void zipFile(File file, ZipOutputStream out)
    method zipDirectory (line 333) | private void zipDirectory(File folder, String parentFolder,
    method cleanup (line 354) | @AfterClass

FILE: project-api-tests/src/test/java/org/ballerina/projectapi/HierarchicalPackagesTest.java
  class HierarchicalPackagesTest (line 77) | public class HierarchicalPackagesTest {
    method setUp (line 89) | @BeforeClass()
    method pushToCentral (line 169) | private void pushToCentral(String packageName, String version) throws ...
    method pushUpdatedVersion (line 181) | private void pushUpdatedVersion(List<String> previousVersions, int i, ...
    method testConsecutiveBuilds (line 198) | @Test(description = "Verify build package behaviour for hierarchical p...
    method testUpdatedVersionInRemote (line 208) | @Test(description = "Verify build package behaviour when there is an u...
    method testUpdatedPackage (line 221) | @Test(description = "When a new module is added and published to remot...
    method testTwoPossiblePackages (line 252) | @Test(description = "Verify whether the correct packages are picked wh...
    method testPackageFromLocal (line 269) | @Test(description = "Verify build package behaviour if hierarchical pa...
    method testUpdateTransitiveDependency (line 292) | @Test(description = "Verify build package behaviour when there is an u...
    method pushPreRequisites (line 323) | private void pushPreRequisites(String transitivePackagePrefix, String ...
    method copyProject (line 341) | private void copyProject(String packagePrefix, String packageName) thr...
    method testTwoPossibleTransitiveDependencies (line 351) | @Test(description = "Verify build package behaviour when there is dire...
    method testUpdateToPreReleaseVersionInRemote (line 369) | @Test(description = "Verify build package behaviour when there is an u...
    method buildPackage (line 379) | private void buildPackage(String packageName, LinkedList args) throws ...
    method verifyUpdatedDependencies (line 393) | private void verifyUpdatedDependencies(String packageName, String depe...
    method addNewModule (line 399) | private void addNewModule(String packageName, String newModule, String...
    method updateBallerinaToml (line 410) | private void updateBallerinaToml(String packageName, String previousVe...
    method addExports (line 425) | private void addExports(String packageName, String[] moduleNames) thro...
    method updateImports (line 437) | private void updateImports(String packageName, String s, String fileNa...
    method getDependencyUpdate (line 447) | private String getDependencyUpdate(String orgName, String packageName,...
    method replaceDependenciesTomlVersion (line 452) | private void replaceDependenciesTomlVersion(Path projectPath) throws I...
    method cleanup (line 470) | @AfterClass

FILE: project-api-tests/src/test/java/org/ballerina/projectapi/MavenCustomRepoTest.java
  class MavenCustomRepoTest (line 61) | public class MavenCustomRepoTest {
    method setUp (line 73) | @BeforeClass()
    method testPushBalaGithub (line 104) | @Test(description = "Push package to Github packages", enabled = false)
    method testPullBalaGithub (line 139) | @Test(description = "Pull package from Github packages", dependsOnMeth...
    method testBuildBalaGithubOffline (line 160) | @Test(description = "Build a package offline using a module from Githu...
    method testBuildBalaGithubOnline (line 172) | @Test(description = "Build a package Online using a module from Github...
    method publishBalaPackagesBeforeTests (line 192) | private void publishBalaPackagesBeforeTests() throws IOException, Inte...
    method testCase1_buildMyProject_assertDependenciesToml (line 215) | @Test(description = "Build a package with multiple dependencies from G...
    method beforeGroupTestCase2 (line 249) | @BeforeGroups("testCase2")
    method testCase2_publishAdditionalVersionsForDeps (line 263) | @Test(description = "Push more packages to Github to test locking mode...
    method testCase2_1_softLockingMode_resolvesLatestCompatible (line 307) | @Test(description = "Build package with soft locking mode",
    method testCase2_2_mediumLockingMode_resolvesConservative (line 353) | @Test(description = "Build package with medium locking mode",
    method testCase2_3_hardLockingMode_enforcesExact (line 401) | @Test(description = "Build package with hard locking mode",
    method testCase2_4_lockedMode_usesLockedVersions (line 451) | @Test(description = "Build package with locked mode", dependsOnMethods...
    method testCase3_backwardCompatibility_legacyBallerinaToml (line 484) | @Test(description = "Build package with backwards compatibility", depe...
    method pinPkg1AndPkg2To100 (line 524) | private void pinPkg1AndPkg2To100() throws IOException, InterruptedExce...
    method beforeGroupTestCase4 (line 556) | @BeforeGroups("testCase4")
    method testCase4_1_addDep3_softLocking (line 561) | @Test(description = "Test case 4.1: Add dep3 and build with SOFT locki...
    method testCase4_2_addDep3_mediumLocking (line 592) | @Test(description = "Test case 4.2: Add dep3 and build with MEDIUM (de...
    method testCase4_3_addDep3_hardLocking (line 636) | @Test(description = "Test case 4.3: Add dep3 and build with HARD locki...
    method testCase4_4_addDep3_lockedLocking (line 679) | @Test(description = "Test case 4.4: Add dep3 and build with LOCKED loc...
    method testCase5_addVersionInBallerinaToml_buildSucceeds (line 724) | @Test(description = "Add a new version for an existing dependency and ...
    method testCase5_addIncompatibleVersion_buildFails (line 753) | @Test(description = "Add an incompatible version for an existing depen...
    method cleanup (line 787) | @AfterClass(alwaysRun = true)
    class Copy (line 802) | static class Copy extends SimpleFileVisitor<Path> {
      method Copy (line 807) | Copy(Path fromPath, Path toPath, StandardCopyOption copyOption) {
      method Copy (line 813) | Copy(Path fromPath, Path toPath) {
      method preVisitDirectory (line 817) | @Override
      method visitFile (line 827) | @Override

FILE: project-api-tests/src/test/java/org/ballerina/projectapi/MavenCustomRepoTestUtils.java
  class MavenCustomRepoTestUtils (line 52) | public class MavenCustomRepoTestUtils {
    method createSettingToml (line 59) | static void createSettingToml(Path dirPath) throws IOException {
    method getGithubToken (line 74) | private static String getGithubToken() {
    method getEnvVariables (line 83) | static Map<String, String> getEnvVariables() {
    method getString (line 97) | static String getString(InputStream outputs) throws IOException {
    method deleteFiles (line 113) | static void deleteFiles(Path dirPath, boolean deleteDirContentOnly) th...
    method deleteArtifacts (line 128) | static void deleteArtifacts(String org, String packagename) throws IOE...
    method packTrigger (line 150) | static Process packTrigger(String packageName, Path sourceDirectory, M...
    method pushTrigger (line 173) | static Process pushTrigger(String packageName, Path sourceDirectory, M...
    method editVersionBallerinaToml (line 197) | static void editVersionBallerinaToml(Path sourceDirectory, String vers...
    method updateVersionForPackage (line 249) | static boolean updateVersionForPackage(Path sourceDirectory, String pa...
    method getPackageVersionFromDependencies (line 291) | static Optional<String> getPackageVersionFromDependencies(Path depende...
    method ensureLegacyDependency (line 313) | public static void ensureLegacyDependency(Path projectDir, String org,...
    method pasteStaticMainBalWithPkg1AndPkg2 (line 365) | public static void pasteStaticMainBalWithPkg1AndPkg2(Path projectDir) ...
    method pasteStaticMainBalWithAllPkgs (line 400) | public static void pasteStaticMainBalWithAllPkgs(Path projectDir) thro...

FILE: project-api-tests/src/test/java/org/ballerina/projectapi/TestUtils.java
  class TestUtils (line 39) | public class TestUtils {
    method TestUtils (line 41) | private TestUtils() {
    method executeCommand (line 63) | public static Process executeCommand(String command, String distributi...
    method executeBuildCommand (line 92) | public static Process executeBuildCommand(String distributionName, Pat...
    method executePackCommand (line 97) | public static Process executePackCommand(String distributionName, Path...
    method executePushCommand (line 102) | public static Process executePushCommand(String distributionName, Path...
    method executePullCommand (line 107) | public static Process executePullCommand(String distributionName, Path...
    method executeSearchCommand (line 112) | public static Process executeSearchCommand(String distributionName, Pa...
    method executeToolCommand (line 117) | public static Process executeToolCommand(String distributionName, Path...
    method executeHelpCommand (line 122) | public static Process executeHelpCommand(String distributionName, Path...
    method executeCleanCommand (line 127) | public static Process executeCleanCommand(String distributionName, Pat...
    method executeNewCommand (line 132) | public static Process executeNewCommand(String distributionName, Path ...
    method setupDistributions (line 143) | static void setupDistributions() throws IOException {
    method prepareDistribution (line 154) | public static void prepareDistribution(Path distributionZipPath) throw...
    method cleanDistribution (line 165) | public static void cleanDistribution() throws IOException {
    method addEnvVariables (line 174) | static Map<String, String> addEnvVariables(Map<String, String> envVari...

FILE: project-api-tests/src/test/resources/bal-tool/DistTestCommand/src/main/java/disttest/cli/DistTestCommand.java
  class DistTestCommand (line 14) | @CommandLine.Command(name = "disttest", description = "The tool implemen...
    method DistTestCommand (line 24) | public DistTestCommand() {
    method DistTestCommand (line 28) | public DistTestCommand(PrintStream printStream) {
    method execute (line 32) | @Override
    method getName (line 47) | @Override
    method printLongDesc (line 52) | @Override
    method printUsage (line 57) | @Override
    method setParentCmdParser (line 62) | @Override
    method appendHelpText (line 66) | private void appendHelpText(StringBuilder out) {
Condensed preview — 3128 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,316K chars).
[
  {
    "path": ".gitattributes",
    "chars": 46,
    "preview": "# Ensure all Java files use LF.\n*.java eol=lf\n"
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 634,
    "preview": "# This is a comment.\n# Each line is a file pattern followed by one or more owners.\n\n# See: https://help.github.com/artic"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug.yml",
    "chars": 979,
    "preview": "name: \"🐞 Report a Bug\"\ndescription: Create an issue if something does not work as expected.\nlabels: [\"Type/Bug\"]\nbody:\n "
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 597,
    "preview": "blank_issues_enabled: false\ncontact_links:\n- name: '📚 Documentation Issue'\n  about: Request a new article, missing topic"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/improvement.yml",
    "chars": 637,
    "preview": "name: \"🚀 Improvement Request\"\ndescription: Suggest an improvement to the product.\nlabels: [\"Type/Improvement\"]\nbody:\n  -"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/new-feature.yml",
    "chars": 835,
    "preview": "name: \"💡 New Feature Request\"\ndescription: Suggest new functionality and features for the product.\nlabels: [\"Type/NewFea"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/task.yml",
    "chars": 428,
    "preview": "name: \"✍️ Create a Task\"\ndescription: Create a new task.\nlabels: [\"Type/Task\"]\nbody:\n  - type: textarea\n    id: descript"
  },
  {
    "path": ".github/workflows/add_reason_labels.yml",
    "chars": 1675,
    "preview": "on:\n  issues:\n    types: [closed]\njobs:\n  check-resolution-label:\n    runs-on: ubuntu-latest\n    if:\n      ${{ contains("
  },
  {
    "path": ".github/workflows/bbe-on-demand.yml",
    "chars": 2148,
    "preview": "name: Run BBE On Demand\n\non:\n  workflow_dispatch:\n    inputs:\n      branch:\n        description: 'Branch to run BBE test"
  },
  {
    "path": ".github/workflows/daily-build-2201.12.x.yml",
    "chars": 20501,
    "preview": "name: Daily build (2201.12.x)\n\non:\n  workflow_dispatch:\n  schedule:\n    - cron:  '0 2 * * *'    # 07:30 in LK time (GMT+"
  },
  {
    "path": ".github/workflows/daily-build-2201.13.x.yml",
    "chars": 20501,
    "preview": "name: Daily build (2201.13.x)\n\non:\n  workflow_dispatch:\n  schedule:\n    - cron:  '0 2 * * *'    # 07:30 in LK time (GMT+"
  },
  {
    "path": ".github/workflows/daily-build-editor.yml",
    "chars": 7576,
    "preview": "name: Daily build editor\n\non:\n  workflow_dispatch:\n  schedule:\n    - cron:  '0 2 * * *'    # 07:30 in LK time (GMT+5:30)"
  },
  {
    "path": ".github/workflows/daily-build.yml",
    "chars": 24237,
    "preview": "name: Daily build\n\non:\n  workflow_dispatch:\n  schedule:\n    - cron:  '0 2 * * *'    # 07:30 in LK time (GMT+5:30)\n\njobs:"
  },
  {
    "path": ".github/workflows/fossa_scan.yml",
    "chars": 441,
    "preview": "name: Fossa Scan\non:\n  workflow_dispatch:\n  schedule:\n    - cron: '30 18 * * *'    # 00:00 in LK time (GMT+5:30)\njobs:\n "
  },
  {
    "path": ".github/workflows/language_server_simulator_fhir.yml",
    "chars": 2599,
    "preview": "name: Language Server Simulator on FHIR\n\non:\n  schedule:\n    - cron: '0 */12 * * *'\n  workflow_dispatch:\n\njobs:\n  run_si"
  },
  {
    "path": ".github/workflows/language_server_simulator_nballerina.yml",
    "chars": 2611,
    "preview": "name: Language Server Simulator on nBallerina\n\non:\n  schedule:\n    - cron: '0 */12 * * *'\n  workflow_dispatch:\n\njobs:\n  "
  },
  {
    "path": ".github/workflows/main.yml",
    "chars": 3087,
    "preview": "name: Build \n\non:\n  push:\n    branches:\n      - master\n      - stage\n      - ballerina-1.1.x\n  workflow_dispatch:\n    in"
  },
  {
    "path": ".github/workflows/publish-release-artifacts-1.2.x.yml",
    "chars": 5920,
    "preview": "name: Publish Release Artifacts (1.2.x)\n\non:\n  workflow_dispatch:\n    inputs:\n      release_version:\n        description"
  },
  {
    "path": ".github/workflows/publish-release-artifacts.yml",
    "chars": 8444,
    "preview": "name: Publish Release Artifacts\n\non:\n  workflow_dispatch:\n    inputs:\n      release_version:\n        description: 'Relea"
  },
  {
    "path": ".github/workflows/publish-release.yml",
    "chars": 50367,
    "preview": "name: Publish release\n\non:\n  workflow_dispatch:\n    inputs:\n      isPreRelease:\n        description: \"Tag created is a p"
  },
  {
    "path": ".github/workflows/publish_release_bi.yml",
    "chars": 31350,
    "preview": "name: Publish Release Kola Distribution\n\non:\n  workflow_dispatch:\n  schedule:\n    - cron:  '0 2 * * *'    # 07:30 in LK "
  },
  {
    "path": ".github/workflows/pull-request.yml",
    "chars": 3364,
    "preview": "name: Pull Request\n\non:\n    pull_request:\n        branches:\n            - master\n            - ballerina-1.1.x\n         "
  },
  {
    "path": ".github/workflows/sign-installers.yml",
    "chars": 5351,
    "preview": "name: Sign release artifacts\n\non:\n  workflow_dispatch:\n    inputs:\n      versionName:\n        description: 'Specify the "
  },
  {
    "path": ".github/workflows/test-installers.yml",
    "chars": 1653,
    "preview": "name: Test Installers\n\non:\n  workflow_dispatch:\n    inputs:\n      releaseVersion:\n        description: 'Version of the r"
  },
  {
    "path": ".github/workflows/trigger-bbe-generation.yml",
    "chars": 837,
    "preview": "name: Generate Ballerina By Examples\non:\n    push:\n        branches:\n            - '2201.0.x'\n        paths:\n           "
  },
  {
    "path": ".gitignore",
    "chars": 775,
    "preview": "*.class\n*.log\n\n# Mobile Tools for Java (J2ME)\n.mtj.tmp/\n\n# Package Files #\n*.jar\n*.war\n*.ear\n\n# virtual machine crash lo"
  },
  {
    "path": ".trivyignore",
    "chars": 66,
    "preview": "# False positive\nCVE-2020-7768\n\n# Need to be fixed\nCVE-2025-48924\n"
  },
  {
    "path": "LICENSE",
    "chars": 11357,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "README.md",
    "chars": 3885,
    "preview": "# Ballerina Distribution\n\n[![Ballerina Distribution Build](https://github.com/ballerina-platform/ballerina-distribution/"
  },
  {
    "path": "ballerina/COPYRIGHT",
    "chars": 10520,
    "preview": "\nCopyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n\nThis product includes software developed at W"
  },
  {
    "path": "ballerina/LICENSE",
    "chars": 49647,
    "preview": "\nThis product is licensed by WSO2 LLC. under Apache License 2.0. The license\ncan be downloaded from the following locati"
  },
  {
    "path": "ballerina/README",
    "chars": 1302,
    "preview": "Hello, I'm Ballerina.\n=====================\nBallerina is a general purpose, concurrent, and strongly typed programming l"
  },
  {
    "path": "ballerina/build.gradle",
    "chars": 67122,
    "preview": "/*\n ~ * Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n ~ *\n ~ * Licensed under the Apache Lic"
  },
  {
    "path": "ballerina/lib/run.bat",
    "chars": 568,
    "preview": "@echo off\r\n\r\nREM Change directory to provided path\r\ncd %1\r\n\r\nREM  run ballerina file as background process\r\nSTART \"\" /b "
  },
  {
    "path": "ballerina/lib/run.sh",
    "chars": 523,
    "preview": "#!/bin/bash\n\nkill_service() {\n  case \"$(uname -s)\" in\n  Darwin)\n    kill $(lsof -ti:$1)\n    ;;\n\n  Linux)\n    fuser -k $1"
  },
  {
    "path": "ballerina/lib/version.txt",
    "chars": 38,
    "preview": "Ballerina Platform version: @version@\n"
  },
  {
    "path": "ballerina-test/build.gradle",
    "chars": 2959,
    "preview": "/*\n  ~ * Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n  ~ *\n  ~ * Licensed under the Apache "
  },
  {
    "path": "ballerina-test/gradle.properties",
    "chars": 60,
    "preview": "filePath=/../examples\ndebug=true\nfileExtensions=.java, .bal\n"
  },
  {
    "path": "ballerina-test/src/test/java/org/ballerinalang/distribution/lengthValidation/LengthValidator.java",
    "chars": 4948,
    "preview": "/*\n  ~ * Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n  ~ *\n  ~ * Licensed under the Apache "
  },
  {
    "path": "ballerina-test/src/test/java/org/ballerinalang/distribution/lengthValidation/LineLengthExceededException.java",
    "chars": 882,
    "preview": "/*\n  ~ * Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n  ~ *\n  ~ * Licensed under the Apache "
  },
  {
    "path": "ballerina-test/src/test/java/org/ballerinalang/distribution/test/ArtifactBuildTest.java",
    "chars": 1914,
    "preview": "/*\n * Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n *\n * WSO2 Inc. licenses this file to you"
  },
  {
    "path": "ballerina-test/src/test/java/org/ballerinalang/distribution/test/BallerinaCommandTest.java",
    "chars": 7598,
    "preview": "/*\n * Copyright (c) 2021, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n *\n * WSO2 Inc. licenses this file to you"
  },
  {
    "path": "ballerina-test/src/test/java/org/ballerinalang/distribution/test/DistributionArtifactCheckTest.java",
    "chars": 3175,
    "preview": "/*\n * Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n *\n * WSO2 Inc. licenses this file to you"
  },
  {
    "path": "ballerina-test/src/test/java/org/ballerinalang/distribution/test/GraphqlToolTest.java",
    "chars": 6715,
    "preview": "/*\n * Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com) All Rights Reserved.\n *\n * WSO2 LLC. licenses this file to you"
  },
  {
    "path": "ballerina-test/src/test/java/org/ballerinalang/distribution/test/GrpcToolingTest.java",
    "chars": 6746,
    "preview": "/*\n * Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com) All Rights Reserved.\n *\n * Licensed under the Apache License, "
  },
  {
    "path": "ballerina-test/src/test/java/org/ballerinalang/distribution/test/OpenAPIArtifactBuildTest.java",
    "chars": 11109,
    "preview": "/*\n * Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n *\n * WSO2 Inc. licenses this file to you"
  },
  {
    "path": "ballerina-test/src/test/java/org/ballerinalang/distribution/test/OpenAPIDistributionArtifactCheck.java",
    "chars": 4183,
    "preview": "/*\n * Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n *\n * WSO2 Inc. licenses this file to you"
  },
  {
    "path": "ballerina-test/src/test/java/org/ballerinalang/distribution/test/PlatformDistributionArtifactCheckTest.java",
    "chars": 4384,
    "preview": "/*\n * Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n *\n * WSO2 Inc. licenses this file to you"
  },
  {
    "path": "ballerina-test/src/test/java/org/ballerinalang/distribution/utils/TestUtils.java",
    "chars": 17437,
    "preview": "/*\n * Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n *\n * WSO2 Inc. licenses this file to you"
  },
  {
    "path": "ballerina-test/src/test/resources/graphql/client-gen/project_1/graphql_endpoint.config.yaml",
    "chars": 228,
    "preview": "## The GraphQL schema. E.g., https://countries.trevorblades.com or ./schemas/country.graphql\nschema: https://countries.t"
  },
  {
    "path": "ballerina-test/src/test/resources/graphql/client-gen/project_1/query_country.graphql",
    "chars": 82,
    "preview": "query countryByCode($code: ID!) {\n    country(code: $code) {\n        name\n    }\n}\n"
  },
  {
    "path": "ballerina-test/src/test/resources/graphql/client-gen/project_2/graphql_schema.config.yaml",
    "chars": 226,
    "preview": "## The GraphQL schema. E.g., https://countries.trevorblades.com or ./schemas/country.graphql\nschema: ./schema_country.gr"
  },
  {
    "path": "ballerina-test/src/test/resources/graphql/client-gen/project_2/queries/query_country.graphql",
    "chars": 82,
    "preview": "query countryByCode($code: ID!) {\n    country(code: $code) {\n        name\n    }\n}\n"
  },
  {
    "path": "ballerina-test/src/test/resources/graphql/client-gen/project_2/schema_country.graphql",
    "chars": 2250,
    "preview": "schema {\n    query: Query\n}\n\n\"Directs the executor to include this field or fragment only when the `if` argument is true"
  },
  {
    "path": "ballerina-test/src/test/resources/graphql/schema-gen/project_1/Ballerina.toml",
    "chars": 89,
    "preview": "[package]\norg = \"ballerina_sdl_file_generator_test\"\nname = \"project_1\"\nversion = \"0.1.0\"\n"
  },
  {
    "path": "ballerina-test/src/test/resources/graphql/schema-gen/project_1/main.bal",
    "chars": 1410,
    "preview": "// Copyright (c) 2023 WSO2 LLC. (http://www.wso2.org). All Rights Reserved.\n//\n// WSO2 LLC. licenses this file to you un"
  },
  {
    "path": "ballerina-test/src/test/resources/graphql/schema-gen/service.bal",
    "chars": 5109,
    "preview": "// Copyright (c) 2023 WSO2 LLC. (http://www.wso2.org). All Rights Reserved.\n//\n// WSO2 LLC. licenses this file to you un"
  },
  {
    "path": "ballerina-test/src/test/resources/graphql/service-gen/schema_book.graphql",
    "chars": 188,
    "preview": "type Query {\n    \"Fetch all the books from database\"\n    books: [Book]\n    \"Fetch a book by its id\"\n    book(\n        id"
  },
  {
    "path": "ballerina-test/src/test/resources/graphql/service-gen/schema_starwars.graphql",
    "chars": 3067,
    "preview": "type Query {\n    \"Fetch the hero of the Star Wars\"\n    hero(episode: Episode): Character!\n    \"Returns reviews of the St"
  },
  {
    "path": "ballerina-test/src/test/resources/grpc/expected-files/route_guide_pb.bal",
    "chars": 13322,
    "preview": "import ballerina/grpc;\nimport ballerina/protobuf;\n\npublic const string ROUTE_GUIDE_DESC = \"0A11726F7574655F67756964652E7"
  },
  {
    "path": "ballerina-test/src/test/resources/grpc/proto-files/route_guide.proto",
    "chars": 3644,
    "preview": "// Copyright 2015 gRPC authors.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use"
  },
  {
    "path": "ballerina-test/src/test/resources/openapi/expected/client.bal",
    "chars": 3788,
    "preview": "// AUTO-GENERATED FILE. DO NOT MODIFY.\n// This file is auto-generated by the Ballerina OpenAPI tool.\nimport ballerina/ht"
  },
  {
    "path": "ballerina-test/src/test/resources/openapi/expected/filtered_tags.bal",
    "chars": 541,
    "preview": "// AUTO-GENERATED FILE.\n// This file is auto-generated by the Ballerina OpenAPI tool.\n\nimport ballerina/http;\n\nlistener "
  },
  {
    "path": "ballerina-test/src/test/resources/openapi/expected/types.bal",
    "chars": 4053,
    "preview": "// AUTO-GENERATED FILE. DO NOT MODIFY.\n// This file is auto-generated by the Ballerina OpenAPI tool.\nimport ballerina/co"
  },
  {
    "path": "ballerina-test/src/test/resources/openapi/expected/utils.bal",
    "chars": 9351,
    "preview": "// AUTO-GENERATED FILE. DO NOT MODIFY.\n// This file is auto-generated by the Ballerina OpenAPI tool.\n\nimport ballerina/h"
  },
  {
    "path": "ballerina-test/src/test/resources/openapi/integration-tests/Ballerina.toml",
    "chars": 59,
    "preview": "[package]\norg= \"ballerina\"\nname= \"openAPI\"\nversion= \"0.1.0\""
  },
  {
    "path": "ballerina-test/src/test/resources/openapi/integration-tests/Package.md",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ballerina-test/src/test/resources/openapi/integration-tests/testFiles/openapi-validator-off.bal",
    "chars": 571,
    "preview": "import ballerina/http;\nimport ballerina/log;\nimport ballerina/openapi;\n\nlistener http:Listener ep0 = new (9090, config ="
  },
  {
    "path": "ballerina-test/src/test/resources/openapi/integration-tests/testFiles/openapi-validator-on.bal",
    "chars": 585,
    "preview": "import ballerina/http;\nimport ballerina/log;\nimport ballerina/openapi;\n\nlistener http:Listener ep0 = new(9090, config = "
  },
  {
    "path": "ballerina-test/src/test/resources/openapi/integration-tests/testFiles/openapi_validator_off.yaml",
    "chars": 587,
    "preview": "openapi: 3.0.1\ninfo:\n  title: Openapi validator off\n  description: test 2 or more uri parameters\n  version: 1.0.0\nserver"
  },
  {
    "path": "ballerina-test/src/test/resources/openapi/integration-tests/testFiles/openapi_validator_on.yaml",
    "chars": 587,
    "preview": "openapi: 3.0.1\ninfo:\n  title: Openapi validator off\n  description: test 2 or more uri parameters\n  version: 1.0.0\nserver"
  },
  {
    "path": "ballerina-test/src/test/resources/openapi/openapi_client.yaml",
    "chars": 3743,
    "preview": "openapi: 3.0.0\ninfo:\n  contact:\n    email: dev-platform@stripe.com\n    name: Stripe Dev Platform Team\n    url: https://s"
  },
  {
    "path": "ballerina-test/src/test/resources/openapi/petstore.bal",
    "chars": 414,
    "preview": "import ballerina/http;\nimport ballerina/log;\n\nlistener http:Listener helloEp = new (9090);\n\nservice /hello on helloEp {\n"
  },
  {
    "path": "ballerina-test/src/test/resources/openapi/petstore.yaml",
    "chars": 3394,
    "preview": "openapi: \"3.0.0\"\ninfo:\n  version: 1.0.0\n  title: OpenApi Petstore\n  license:\n    name: MIT\nservers:\n  - url: http://pets"
  },
  {
    "path": "ballerina-test/src/test/resources/openapi/petstoreTags.yaml",
    "chars": 3381,
    "preview": "openapi: \"3.0.0\"\ninfo:\n  version: 1.0.0\n  title: OpenApi Petstore\n  license:\n    name: MIT\nservers:\n  - url: http://pets"
  },
  {
    "path": "ballerina-test/src/test/resources/testing-line-length.xml",
    "chars": 1031,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n ~ Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n"
  },
  {
    "path": "ballerina-test/src/test/resources/testng.xml",
    "chars": 1603,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n ~ Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n"
  },
  {
    "path": "ballerina-test-automation/build.gradle",
    "chars": 1405,
    "preview": "/*\n * Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n *\n * Licensed under the Apache License, "
  },
  {
    "path": "ballerina-test-automation/gradle.properties",
    "chars": 265,
    "preview": "swan-lake-latest-version=swan-lake-2201.13.0\nswan-lake-latest-spec-version=2024R1\nswan-lake-latest-version-display-text="
  },
  {
    "path": "ballerina-test-automation/gradlew",
    "chars": 5919,
    "preview": "#!/usr/bin/env sh\n\n#\n# Copyright 2015 the original author or authors.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "ballerina-test-automation/gradlew.bat",
    "chars": 2944,
    "preview": "@rem\r\n@rem Copyright 2015 the original author or authors.\r\n@rem\r\n@rem Licensed under the Apache License, Version 2.0 (th"
  },
  {
    "path": "ballerina-test-automation/installer-test/build.gradle",
    "chars": 2243,
    "preview": "/*\n * Copyright (c) 2021, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n *\n * Licensed under the Apache License, "
  },
  {
    "path": "ballerina-test-automation/installer-test/src/test/java/io/ballerina/installer/test/CentralTest.java",
    "chars": 1837,
    "preview": "/*\n * Copyright (c) 2020, WSO2 Inc. (http://wso2.com) All Rights Reserved.\n *\n * Licensed under the Apache License, Vers"
  },
  {
    "path": "ballerina-test-automation/installer-test/src/test/java/io/ballerina/installer/test/InstallerTest.java",
    "chars": 1760,
    "preview": "/*\n * Copyright (c) 2020, WSO2 Inc. (http://wso2.com) All Rights Reserved.\n *\n * Licensed under the Apache License, Vers"
  },
  {
    "path": "ballerina-test-automation/installer-test/src/test/java/io/ballerina/installer/test/ProjectTest.java",
    "chars": 2896,
    "preview": "/*\n * Copyright (c) 2020, WSO2 Inc. (http://wso2.com) All Rights Reserved.\n *\n * Licensed under the Apache License, Vers"
  },
  {
    "path": "ballerina-test-automation/installer-test/src/test/java/io/ballerina/installer/test/TestUtils.java",
    "chars": 18509,
    "preview": "/*\n * Copyright (c) 2020, WSO2 Inc. (http://wso2.com) All Rights Reserved.\n *\n * Licensed under the Apache License, Vers"
  },
  {
    "path": "ballerina-test-automation/installer-test/src/test/resources/testng.xml",
    "chars": 1148,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  ~ Copyright (c) 2021, WSO2 Inc. (http://www.wso2.org) All Rights Reserved."
  },
  {
    "path": "ballerina-test-automation/settings.gradle",
    "chars": 995,
    "preview": "/*\n * Copyright (c) 2021, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n *\n * Licensed under the Apache License, "
  },
  {
    "path": "ballerina-test-automation/test-automation/build.gradle",
    "chars": 883,
    "preview": "/*\n * Copyright (c) 2021, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n *\n * Licensed under the Apache License, "
  },
  {
    "path": "ballerina-test-automation/test-automation/src/main/java/io/ballerina/test/CentOS.java",
    "chars": 1961,
    "preview": "/*\n * Copyright (c) 2020, WSO2 Inc. (http://wso2.com) All Rights Reserved.\n *\n * Licensed under the Apache License, Vers"
  },
  {
    "path": "ballerina-test-automation/test-automation/src/main/java/io/ballerina/test/Executor.java",
    "chars": 887,
    "preview": "/*\n * Copyright (c) 2020, WSO2 Inc. (http://wso2.com) All Rights Reserved.\n *\n * Licensed under the Apache License, Vers"
  },
  {
    "path": "ballerina-test-automation/test-automation/src/main/java/io/ballerina/test/MacOS.java",
    "chars": 2128,
    "preview": "/*\n * Copyright (c) 2020, WSO2 Inc. (http://wso2.com) All Rights Reserved.\n *\n * Licensed under the Apache License, Vers"
  },
  {
    "path": "ballerina-test-automation/test-automation/src/main/java/io/ballerina/test/Ubuntu.java",
    "chars": 2005,
    "preview": "/*\n * Copyright (c) 2020, WSO2 Inc. (http://wso2.com) All Rights Reserved.\n *\n * Licensed under the Apache License, Vers"
  },
  {
    "path": "ballerina-test-automation/test-automation/src/main/java/io/ballerina/test/Utils.java",
    "chars": 5253,
    "preview": "/*\n * Copyright (c) 2020, WSO2 Inc. (http://wso2.com) All Rights Reserved.\n *\n * Licensed under the Apache License, Vers"
  },
  {
    "path": "ballerina-test-automation/test-automation/src/main/java/io/ballerina/test/Windows.java",
    "chars": 1763,
    "preview": "/*\n * Copyright (c) 2020, WSO2 Inc. (http://wso2.com) All Rights Reserved.\n *\n * Licensed under the Apache License, Vers"
  },
  {
    "path": "ballerina-test-automation/update-tool-test/build.gradle",
    "chars": 1795,
    "preview": "/*\n * Copyright (c) 2021, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n *\n * Licensed under the Apache License, "
  },
  {
    "path": "ballerina-test-automation/update-tool-test/src/test/java/io/ballerina/tool/test/FetchDependencyTest.java",
    "chars": 1781,
    "preview": "/*\n * Copyright (c) 2020, WSO2 Inc. (http://wso2.com) All Rights Reserved.\n *\n * Licensed under the Apache License, Vers"
  },
  {
    "path": "ballerina-test-automation/update-tool-test/src/test/java/io/ballerina/tool/test/UpdateDistTest.java",
    "chars": 1954,
    "preview": "/*\n * Copyright (c) 2020, WSO2 Inc. (http://wso2.com) All Rights Reserved.\n *\n * Licensed under the Apache License, Vers"
  },
  {
    "path": "ballerina-test-automation/update-tool-test/src/test/java/io/ballerina/tool/test/UpdateToolTest.java",
    "chars": 2515,
    "preview": "/*\n * Copyright (c) 2020, WSO2 Inc. (http://wso2.com) All Rights Reserved.\n *\n * Licensed under the Apache License, Vers"
  },
  {
    "path": "ballerina-test-automation/update-tool-test/src/test/resources/testng.xml",
    "chars": 1227,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  ~ Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved."
  },
  {
    "path": "build-time-tests/build.gradle",
    "chars": 1859,
    "preview": "/*\n ~ * Copyright (c) 2021, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n ~ *\n ~ * Licensed under the Apache Lic"
  },
  {
    "path": "build-time-tests/samples/build-samples.sh",
    "chars": 1491,
    "preview": "#!/bin/bash\n# ---------------------------------------------------------------------------\n#  Copyright (c) 2021, WSO2 In"
  },
  {
    "path": "build-time-tests/samples/helloservice/Ballerina.toml",
    "chars": 45,
    "preview": "[build-options]\nobservabilityIncluded = true\n"
  },
  {
    "path": "build-time-tests/samples/helloservice/service.bal",
    "chars": 674,
    "preview": "import ballerina/http;\nimport ballerina/io;\n\n# A service representing a network-accessible API\n# bound to absolute path "
  },
  {
    "path": "build-time-tests/samples/helloworld/Ballerina.toml",
    "chars": 45,
    "preview": "[build-options]\nobservabilityIncluded = true\n"
  },
  {
    "path": "build-time-tests/samples/helloworld/helloworld.bal",
    "chars": 81,
    "preview": "import ballerina/io;\n\npublic function main() {\n    io:println(\"Hello World!\");\n}\n"
  },
  {
    "path": "build-time-tests/src/main/java/org/ballerina/packages/buildtime/GenerateBuildDataCsv.java",
    "chars": 3473,
    "preview": "/*\n *  Copyright (c) 2021, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n *\n *  WSO2 Inc. licenses this file to y"
  },
  {
    "path": "build.gradle",
    "chars": 9366,
    "preview": "/*\n * Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n *\n * Licensed under the Apache License, "
  },
  {
    "path": "cache-generator/build.gradle",
    "chars": 2835,
    "preview": "/*\n * Copyright (c) 2021, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n *\n * Licensed under the Apache License, "
  },
  {
    "path": "cache-generator/src/main/java/io/ballerina/gencache/cmd/GenCacheCmd.java",
    "chars": 4932,
    "preview": "/*\n *  Copyright (c) 2021, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n *\n *  WSO2 Inc. licenses this file to y"
  },
  {
    "path": "cache-generator/src/main/java/module-info.java",
    "chars": 1670,
    "preview": "/*\n * Copyright (c) 2021, WSO2 Inc. (http://wso2.com) All Rights Reserved.\n *\n * Licensed under the Apache License, Vers"
  },
  {
    "path": "cache-generator/src/main/resources/META-INF/services/io.ballerina.cli.BLauncherCmd",
    "chars": 37,
    "preview": "io.ballerina.gencache.cmd.GenCacheCmd"
  },
  {
    "path": "config/checkstyle/build.gradle",
    "chars": 1334,
    "preview": "/*\n * Copyright (c) 2021, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n *\n * Licensed under the Apache License, "
  },
  {
    "path": "config/checkstyle/checkstyle.xml",
    "chars": 15634,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n    # Copyright (c) 2021, WSO2 Inc. (http://www.wso2.org) All Rights Reserve"
  },
  {
    "path": "config/checkstyle/suppressions.xml",
    "chars": 1820,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n    # Copyright (c) 2021, WSO2 Inc. (http://www.wso2.org) All Rights Reserve"
  },
  {
    "path": "devtools-integration-tests/build.gradle",
    "chars": 3043,
    "preview": " /*\n  ~ * Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n  ~ *\n  ~ * Licensed under the Apache"
  },
  {
    "path": "devtools-integration-tests/index.json",
    "chars": 114,
    "preview": "[\n    {\n        \"name\": \"Testerina Object mocking test\",\n        \"path\": \"testerina-object-mocking-test\"\n    } \n]\n"
  },
  {
    "path": "devtools-integration-tests/src/test/java/org/ballerina/devtools/debug/BaseTestCase.java",
    "chars": 1649,
    "preview": "/*\n * Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n *\n * WSO2 Inc. licenses this file to you"
  },
  {
    "path": "devtools-integration-tests/src/test/java/org/ballerina/devtools/debug/ExpressionEvaluationTest.java",
    "chars": 3202,
    "preview": "/*\n * Copyright (c) 2022 WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n *\n * WSO2 Inc. licenses this file to you "
  },
  {
    "path": "devtools-integration-tests/src/test/java/org/ballerina/devtools/debug/ModuleBreakpointTest.java",
    "chars": 3043,
    "preview": "/*\n * Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n *\n * WSO2 Inc. licenses this file to you"
  },
  {
    "path": "devtools-integration-tests/src/test/java/org/ballerina/devtools/debug/ServiceDebugTest.java",
    "chars": 4732,
    "preview": "/*\n * Copyright (c) 2020 WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n *\n * WSO2 Inc. licenses this file to you "
  },
  {
    "path": "devtools-integration-tests/src/test/resources/debug/project-based-tests/breakpoint-tests/Ballerina.toml",
    "chars": 84,
    "preview": "[package]\norg = \"debug_test_resources\"\nname = \"breakpoint_tests\"\nversion = \"0.1.0\"\n\n"
  },
  {
    "path": "devtools-integration-tests/src/test/resources/debug/project-based-tests/breakpoint-tests/main.bal",
    "chars": 924,
    "preview": "// Copyright (c) 2020 WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n//\n// WSO2 Inc. licenses this file to you und"
  },
  {
    "path": "devtools-integration-tests/src/test/resources/debug/project-based-tests/evaluation-tests/Ballerina.toml",
    "chars": 84,
    "preview": "[package]\norg = \"debug_test_resources\"\nname = \"evaluation_tests\"\nversion = \"0.1.0\"\n\n"
  },
  {
    "path": "devtools-integration-tests/src/test/resources/debug/project-based-tests/evaluation-tests/main.bal",
    "chars": 996,
    "preview": "// Copyright (c) 2022 WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n//\n// WSO2 Inc. licenses this file to you und"
  },
  {
    "path": "devtools-integration-tests/src/test/resources/debug/project-based-tests/service-tests/Ballerina.toml",
    "chars": 81,
    "preview": "[package]\norg = \"debug_test_resources\"\nname = \"service_tests\"\nversion = \"0.1.0\"\n\n"
  },
  {
    "path": "devtools-integration-tests/src/test/resources/debug/project-based-tests/service-tests/hello_service.bal",
    "chars": 888,
    "preview": "// Copyright (c) 2020 WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n//\n// WSO2 Inc. licenses this file to you und"
  },
  {
    "path": "devtools-integration-tests/src/test/resources/debug/project-based-tests/service-tests/tests/hello_service_test.bal",
    "chars": 1427,
    "preview": "// Copyright (c) 2020 WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n//\n// WSO2 Inc. licenses this file to you und"
  },
  {
    "path": "devtools-integration-tests/src/test/resources/debug/single-file-tests/hello_service.bal",
    "chars": 1311,
    "preview": "// Copyright (c) 2020 WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n//\n// WSO2 Inc. licenses this file to you und"
  },
  {
    "path": "devtools-integration-tests/src/test/resources/testng.xml",
    "chars": 1062,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n ~ Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n"
  },
  {
    "path": "devtools-integration-tests/testerina-object-mocking-test/client.bal",
    "chars": 1382,
    "preview": "import ballerina/http;\n\nhttp:Client orderManagementClient = checkpanic new (\"http://localhost:9117/ordermgt\");\n\njson res"
  },
  {
    "path": "devtools-integration-tests/testerina-object-mocking-test/service.bal",
    "chars": 1906,
    "preview": "import ballerina/http;\nimport ballerina/log;\n\nlistener http:Listener httpListener = new(9117);\n\nmap<json> ordersMap = {}"
  },
  {
    "path": "devtools-integration-tests/testerina-object-mocking-test/tests/main_test.bal",
    "chars": 3352,
    "preview": "import ballerina/test;\nimport ballerina/http;\n\npublic client class MockHttpClient {\n    public string url = \"http://mock"
  },
  {
    "path": "dist-repo-builder/build.gradle",
    "chars": 239,
    "preview": "plugins {\n    id 'java'\n}\n\ngroup 'org.ballerinalang'\nversion '1.0.0'\n\ndependencies {\n    implementation \"org.ballerinala"
  },
  {
    "path": "dist-repo-builder/src/main/java/io/ballerina/dist/DistRepoBuilder.java",
    "chars": 7630,
    "preview": "/*\n *  Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n *\n *  WSO2 Inc. licenses this file to y"
  },
  {
    "path": "doc-guidelines.md",
    "chars": 13157,
    "preview": "# Ballerina Doc Guidelines\n\n- [Ballerina Documentation Components](#ballerina-documentation-components)\n- [Ballerina By "
  },
  {
    "path": "docs/build-ballerina-from-source.md",
    "chars": 6593,
    "preview": "# Build Ballerina from source\n\n## Overview\n\n[Building the complete Ballerina distribution](#building-the-complete-baller"
  },
  {
    "path": "examples/access-json-elements/access_json_elements.bal",
    "chars": 949,
    "preview": "import ballerina/io;\nimport ballerina/lang.value;\n \npublic function main() returns error? {\n    json[] users = [\n       "
  },
  {
    "path": "examples/access-json-elements/access_json_elements.md",
    "chars": 1113,
    "preview": "# Access JSON elements\n\nBallerina defines certain types as lax types for which static typing rules are less strict. `jso"
  },
  {
    "path": "examples/access-json-elements/access_json_elements.metatags",
    "chars": 323,
    "preview": "description: This BBE demonstrates how to get elements in JSON, check whether a given element is available in JSON, hand"
  },
  {
    "path": "examples/access-json-elements/access_json_elements.out",
    "chars": 87,
    "preview": "$ bal run access_json_elements.bal\nValue of first name: John\nValue of first name: John\n"
  },
  {
    "path": "examples/access-optional-json-elements/access_optional_json_elements.bal",
    "chars": 602,
    "preview": "import ballerina/io;\n\npublic function main() returns error? {\n    json user = {\n      name: {\n         firstName: \"John\""
  },
  {
    "path": "examples/access-optional-json-elements/access_optional_json_elements.md",
    "chars": 536,
    "preview": "# Accessing optional JSON elements\n\nIf there is no prior knowledge of the availability of a particular field, optional f"
  },
  {
    "path": "examples/access-optional-json-elements/access_optional_json_elements.metatags",
    "chars": 322,
    "preview": "description: This BBE demonstrates how to get elements in json, check whether given element is available in json, handle"
  },
  {
    "path": "examples/access-optional-json-elements/access_optional_json_elements.out",
    "chars": 61,
    "preview": "$ bal run access_optional_json_elements.bal\nFirst name: John\n"
  },
  {
    "path": "examples/advanced-conflict-handling/advanced_conflict_handling.bal",
    "chars": 1426,
    "preview": "import ballerina/io;\n\ntype Student record {|\n    string name;\n    int score;\n|};\n\npublic function main() {\n    Student[]"
  },
  {
    "path": "examples/advanced-conflict-handling/advanced_conflict_handling.md",
    "chars": 1109,
    "preview": "# Advanced conflict handling\n\nWe can implement a custom conflict-handling policy to determine whether to replace a value"
  },
  {
    "path": "examples/advanced-conflict-handling/advanced_conflict_handling.metatags",
    "chars": 212,
    "preview": "description: This BBE demonstrates writing custom conflict handling logic when constructing a map or a table.\nkeywords: "
  },
  {
    "path": "examples/advanced-conflict-handling/advanced_conflict_handling.out",
    "chars": 128,
    "preview": "$ bal run advanced_conflict_handling.bal\n{\"John\":200,\"Jane\":150}\nerror(\"Key Conflict\",message=\"Duplicate key has an odd "
  },
  {
    "path": "examples/aggregation/aggregation.bal",
    "chars": 1315,
    "preview": "import ballerina/io;\n\npublic function main() returns error? {\n    var orders = [\n        {orderId: 1, itemName: \"A\", pri"
  },
  {
    "path": "examples/aggregation/aggregation.md",
    "chars": 1494,
    "preview": "# Aggregation\n\nThe `group by` clause in the query expression can group the elements in a collection. Grouping happens ba"
  },
  {
    "path": "examples/aggregation/aggregation.metatags",
    "chars": 188,
    "preview": "description: This BBE demonstrates how to group a collection, how to handle non grouping keys.\nkeywords: ballerina, ball"
  },
  {
    "path": "examples/aggregation/aggregation.out",
    "chars": 116,
    "preview": "$ bal run aggregation.bal\n[[\"A\",\"A\",\"B\"],[\"B\"]]\n[{\"itemName\":\"A\",\"quantity\":3},{\"itemName\":\"B\",\"quantity\":6}]\n196.2\n"
  },
  {
    "path": "examples/ai-agent-external-endpoint-integration/ai_agent_external_endpoint_integration.bal",
    "chars": 3457,
    "preview": "import ballerina/ai;\nimport ballerina/io;\nimport ballerinax/googleapis.calendar;\nimport ballerinax/googleapis.gmail;\n\n//"
  },
  {
    "path": "examples/ai-agent-external-endpoint-integration/ai_agent_external_endpoint_integration.md",
    "chars": 2417,
    "preview": "# AI agents with external endpoints as tools\n\nBallerina enables developers to easily create intelligent AI agents powere"
  },
  {
    "path": "examples/ai-agent-external-endpoint-integration/ai_agent_external_endpoint_integration.metatags",
    "chars": 169,
    "preview": "description: This BBE demonstrates AI agents integrated with external endpoints as tools.\nkeywords: ballerina, ballerina"
  },
  {
    "path": "examples/ai-agent-external-endpoint-integration/ai_agent_external_endpoint_integration.out",
    "chars": 1502,
    "preview": "$ bal run ai_agent_external_endpoint_integration.bal\nUser (or 'exit' to quit): Do I have any meetings today?\nAgent: You "
  },
  {
    "path": "examples/ai-agent-local-tools/ai_agent_local_tools.bal",
    "chars": 2258,
    "preview": "import ballerina/ai;\nimport ballerina/io;\nimport ballerina/time;\nimport ballerina/uuid;\n\ntype Task record {|\n    string "
  },
  {
    "path": "examples/ai-agent-local-tools/ai_agent_local_tools.md",
    "chars": 2121,
    "preview": "# AI agents with local tools\n\nBallerina enables developers to easily create intelligent AI agents powered by large langu"
  },
  {
    "path": "examples/ai-agent-local-tools/ai_agent_local_tools.metatags",
    "chars": 125,
    "preview": "description: This BBE demonstrates AI agents.\nkeywords: ballerina, ballerina by example, BBE, ai, llm, model-provider, a"
  },
  {
    "path": "examples/ai-agent-local-tools/ai_agent_local_tools.out",
    "chars": 1025,
    "preview": "$ bal run ai_agent_local_tools.bal\nUser (or 'exit' to quit): What do I have on my plate today?\nAgent: You have the follo"
  },
  {
    "path": "examples/ai-agent-mcp-integration/ai_agent_mcp_integration.bal",
    "chars": 1219,
    "preview": "import ballerina/ai;\nimport ballerina/io;\n\n// Define an MCP toolkit to connect to the MCP service.\n// This allows using "
  },
  {
    "path": "examples/ai-agent-mcp-integration/ai_agent_mcp_integration.md",
    "chars": 2234,
    "preview": "# AI agents with MCP tools\n\nBallerina enables developers to easily create intelligent AI agents powered by large languag"
  },
  {
    "path": "examples/ai-agent-mcp-integration/ai_agent_mcp_integration.metatags",
    "chars": 156,
    "preview": "description: This BBE demonstrates AI agents integrated with MCP tools.\nkeywords: ballerina, ballerina by example, BBE, "
  },
  {
    "path": "examples/ai-agent-mcp-integration/ai_agent_mcp_integration.out",
    "chars": 669,
    "preview": "$ bal run ai_agent_mcp_integration.bal\nUser (or 'exit' to quit): Should I go for a walk in Colombo today?\nAgent: The cur"
  },
  {
    "path": "examples/ai-agent-tool-kit/ai_agent_tool_kit.bal",
    "chars": 2494,
    "preview": "import ballerina/ai;\nimport ballerina/io;\nimport ballerina/time;\nimport ballerina/uuid;\n\ntype Task record {|\n    string "
  },
  {
    "path": "examples/ai-agent-tool-kit/ai_agent_tool_kit.md",
    "chars": 2269,
    "preview": "# AI agents with tool kits\n\nBallerina enables developers to easily create intelligent AI agents powered by large languag"
  },
  {
    "path": "examples/ai-agent-tool-kit/ai_agent_tool_kit.metatags",
    "chars": 140,
    "preview": "description: This BBE demonstrates AI agents with tool kits.\nkeywords: ballerina, ballerina by example, BBE, ai, llm, mo"
  },
  {
    "path": "examples/ai-agent-tool-kit/ai_agent_tool_kit.out",
    "chars": 719,
    "preview": "$ bal run ai_agent_tool_kit.bal\nUser (or 'exit' to quit): Hello\nAgent: Hello! How can I assist you today? Do you need he"
  },
  {
    "path": "examples/alternate-receive/alternate_receive.bal",
    "chars": 2131,
    "preview": "import ballerina/http;\nimport ballerina/io;\nimport ballerina/lang.runtime;\n\ntype Response record {\n    record {\n        "
  },
  {
    "path": "examples/alternate-receive/alternate_receive.md",
    "chars": 520,
    "preview": "# Alternate receive\n\nThe alternate receive action can be used to receive one of multiple values corresponding to multipl"
  },
  {
    "path": "examples/alternate-receive/alternate_receive.metatags",
    "chars": 179,
    "preview": "description: This BBE demonstrates the use of the alternate receive action in inter-worker communication\nkeywords: balle"
  },
  {
    "path": "examples/alternate-receive/alternate_receive.out",
    "chars": 38,
    "preview": "$ bal run alternate_receive.bal\nw1\nw5\n"
  },
  {
    "path": "examples/alternate-wait/alternate_wait.bal",
    "chars": 875,
    "preview": "import ballerina/http;\nimport ballerina/io;\n\n// Fetch from A or B.\nfunction altFetch(string urlA, string urlB) returns s"
  },
  {
    "path": "examples/alternate-wait/alternate_wait.md",
    "chars": 148,
    "preview": "# Alternate wait\n\nThe `wait` action can be used to wait for one of several workers.\n\n::: code alternate_wait.bal :::\n\n::"
  },
  {
    "path": "examples/alternate-wait/alternate_wait.metatags",
    "chars": 132,
    "preview": "description: This BBE demonstrates the alternate wait action\nkeywords: ballerina, ballerina by example, bbe, worker, alt"
  },
  {
    "path": "examples/alternate-wait/alternate_wait.out",
    "chars": 50,
    "preview": "$ bal run alternate_wait.bal\n{\"lang\":\"ballerina\"}\n"
  },
  {
    "path": "examples/annotations/annotations.bal",
    "chars": 668,
    "preview": "import ballerina/io;\n\n// The `@display` annotation is applied to the `transform` function.\n@display {\n    label: \"Transf"
  },
  {
    "path": "examples/annotations/annotations.md",
    "chars": 330,
    "preview": "# Annotations\n\nAnnotations start with `@tag` and they come before what they apply to. Unprefixed tags refer to standard "
  },
  {
    "path": "examples/annotations/annotations.metatags",
    "chars": 133,
    "preview": "description: This BBE demonstrates how to use annotations in Ballerina\nkeywords:  ballerina, ballerina by example, bbe, "
  },
  {
    "path": "examples/annotations/annotations.out",
    "chars": 41,
    "preview": "$ bal run annotations.bal\n{\"value\":\"T1\"}\n"
  },
  {
    "path": "examples/anonymous-function/anonymous_function.bal",
    "chars": 872,
    "preview": "import ballerina/io;\n\npublic function main() {\n    // Infer anonymous function.\n    // The type of `x` is inferred from "
  },
  {
    "path": "examples/anonymous-function/anonymous_function.md",
    "chars": 596,
    "preview": "# Anonymous function\n\nThe anonymous function is used to create function values. There are two different kinds of syntaxe"
  },
  {
    "path": "examples/anonymous-function/anonymous_function.metatags",
    "chars": 263,
    "preview": "description: This BBE demonstrates creating an anonymous function, which is commonly known as an arrow function or lambd"
  },
  {
    "path": "examples/anonymous-function/anonymous_function.out",
    "chars": 41,
    "preview": "$ bal run anonymous_function.bal\n2\n3\n3\n1\n"
  },
  {
    "path": "examples/any-type/any_type.bal",
    "chars": 533,
    "preview": "import ballerina/io;\n\n// A variable of type `any` can hold any value except an `error` value.\nany x = 1;\n\npublic functio"
  },
  {
    "path": "examples/any-type/any_type.md",
    "chars": 290,
    "preview": "# Any type\n\n`any` means any value except an `error` value. Equivalent to a union of all non-error basic types. Use `any|"
  },
  {
    "path": "examples/any-type/any_type.metatags",
    "chars": 124,
    "preview": "description: This BBE demonstrates the any type in Ballerina\nkeywords:  ballerina, ballerina by example, bbe, any, any t"
  },
  {
    "path": "examples/any-type/any_type.out",
    "chars": 34,
    "preview": "$ bal run any_type.bal\n1\ntrue\n1.0\n"
  },
  {
    "path": "examples/anydata-to-yaml-string/anydata_to_yaml_string.bal",
    "chars": 615,
    "preview": "import ballerina/data.yaml;\nimport ballerina/io;\n\ntype ServerConfig record {|\n    string host;\n    int port;\n    Databas"
  },
  {
    "path": "examples/anydata-to-yaml-string/anydata_to_yaml_string.md",
    "chars": 404,
    "preview": "# Serialize a Ballerina value to a string in YAML format\n\nThe `data.yaml` library provides the `toYamlString` function t"
  },
  {
    "path": "examples/anydata-to-yaml-string/anydata_to_yaml_string.metatags",
    "chars": 196,
    "preview": "description: This BBE demonstrates how to serialize a value belonging to `anydata` to a string in YAML format.\nkeywords:"
  },
  {
    "path": "examples/anydata-to-yaml-string/anydata_to_yaml_string.out",
    "chars": 112,
    "preview": "$ bal run anydata_to_yaml_string.bal\nhost: localhost\nport: 3000\ndatabase:\n  dbName: userDB\n  username: testUser\n"
  },
  {
    "path": "examples/anydata-type/anydata_type.bal",
    "chars": 262,
    "preview": "import ballerina/io;\n\nanydata x1 = [1, \"string\", true];\n// `x1.clone()` returns a deep copy with the same mutability.\nan"
  },
  {
    "path": "examples/anydata-type/anydata_type.md",
    "chars": 504,
    "preview": "# Anydata type\n\nThe type for plain data is `anydata`. It is a subtype of `any`. `==` and `!=` operators test for deep eq"
  },
  {
    "path": "examples/anydata-type/anydata_type.metatags",
    "chars": 123,
    "preview": "description: This BBE demonstrates anydata type in Ballerina.\nkeywords: ballerina, ballerina by example, bbe, anydata ty"
  },
  {
    "path": "examples/anydata-type/anydata_type.out",
    "chars": 50,
    "preview": "$ bal run anydata_type.bal\n[1,\"string\",true]\ntrue\n"
  },
  {
    "path": "examples/array-map-symmetry/array_map_symmetry.bal",
    "chars": 2067,
    "preview": "import ballerina/io;\n\npublic function main() {\n    // List constructors are used to construct list values.\n    // Arrays"
  },
  {
    "path": "examples/array-map-symmetry/array_map_symmetry.md",
    "chars": 1090,
    "preview": "# Array/map symmetry\n\nBallerina provides a fine symmetry between lists and mappings. Lists are indexed by integers and m"
  },
  {
    "path": "examples/array-map-symmetry/array_map_symmetry.metatags",
    "chars": 147,
    "preview": "description: This BBE demonstrates array map symmetry in Ballerina.\nkeywords: ballerina, ballerina by example, bbe, arra"
  }
]

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

About this extraction

This page contains the full source code of the ballerina-platform/ballerina-distribution GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3128 files (2.8 MB), approximately 913.5k tokens, and a symbol index with 497 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!