diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index f16d882..20057c1 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -23,7 +23,7 @@ on: jobs: analyze: name: Analyze - runs-on: windows-2019 + runs-on: windows-2022 permissions: actions: read contents: read diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ba5e6aa..3dbac44 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,7 +1,6 @@ -# This is a basic workflow to help you get started with Actions name: CI -# Controls when the workflow will run + on: # Triggers the workflow on push or pull request events but only for the master branch push: @@ -10,92 +9,251 @@ on: # Allows you to run this workflow manually from the Actions tab workflow_dispatch: -# A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" build: - # The type of runner that the job will run on - runs-on: windows-2019 + permissions: + contents: write + runs-on: windows-2022 # Steps represent a sequence of tasks that will be executed as part of the job steps: - - name: Check Commit and Install 7Zip PowerShell Module + # Step to check if the commit message contains #GITBUILD + - name: Check Commit Message shell: powershell run: | - # cancel early, if not build commit - $strVal ='${{ github.event.commits[0].message }}' + # Get the commit message + $strVal = '${{ github.event.commits[0].message }}' # Convert commit message to a single line if multiline $singleLineStrVal = $strVal -replace "`r`n", " " -replace "`n", " " - if($singleLineStrVal -match '#GITBUILD') - { - Write-Host 'True' + if ($singleLineStrVal -match '#GITBUILD') { + Write-Host 'Build commit detected. Proceeding with build...' + echo "build_trigger=true" >> $env:GITHUB_ENV } else { - Write-Host 'False' - exit(1) + Write-Host 'No build commit. Skipping build steps...' + echo "build_trigger=false" >> $env:GITHUB_ENV } - Install-Module 7Zip4PowerShell -Force -Verbose - - uses: actions/checkout@v2 + # Step to ensure the repository is checked out + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + fetch-tags: true + # Inform if build steps are skipped + - name: Inform Skipped Build Steps + if: env.build_trigger != 'true' + shell: powershell + run: | + Write-Host "Skipping build steps because the commit message does not contain #GITBUILD." + + # Install 7Zip PowerShell module + - name: Install 7Zip PowerShell Module + if: env.build_trigger == 'true' + shell: powershell + run: Install-Module 7Zip4PowerShell -Force -Verbose + + # Restore NuGet packages - name: Restore NuGet packages + if: env.build_trigger == 'true' run: nuget restore UnityLauncherPro.sln - + + # Build the binary - name: Build Binary + if: env.build_trigger == 'true' shell: cmd run: call .\Build.cmd - + + # Build the artifact - name: Build Artifact + if: env.build_trigger == 'true' shell: cmd run: call .\ArtifactBuild.cmd - - name: Get current date and time - id: datetime + # Check that output exists + - name: Validate UnityLauncherPro.exe exists + if: env.build_trigger == 'true' + shell: cmd + run: | + if not exist "UnityLauncherPro\bin\Release\UnityLauncherPro.exe" ( + echo ERROR: UnityLauncherPro.exe not found. + exit /b 1 + ) + echo Found UnityLauncherPro.exe + + # 1) Compute a wrapped major.minor.build from the run number + - name: Compute installer version + if: env.build_trigger == 'true' + shell: bash + run: | + TOTAL=${{ github.run_number }} + BUILD=$(( TOTAL % 65536 )) + MINOR_TOTAL=$(( TOTAL / 65536 )) + MINOR=$(( MINOR_TOTAL % 256 )) + MAJOR=$(( MINOR_TOTAL / 256 )) + echo "INSTALLER_MAJOR=$MAJOR" >> $GITHUB_ENV + echo "INSTALLER_MINOR=$MINOR" >> $GITHUB_ENV + echo "INSTALLER_BUILD=$BUILD" >> $GITHUB_ENV + echo "INSTALLER_VER=$MAJOR.$MINOR.$BUILD" >> $GITHUB_ENV + echo "Computed installer version → $MAJOR.$MINOR.$BUILD (run #${{ github.run_number }})" + + # 2) Patch your .vdproj in place (inject ProductVersion and a new GUID) + - name: Patch .vdproj ProductVersion & ProductCode + if: env.build_trigger == 'true' + shell: pwsh + run: | + $proj = 'UnityLauncherProInstaller\UnityLauncherProInstaller.vdproj' + $ver = "${{ env.INSTALLER_VER }}" # e.g. 0.0.118 + $guid = [Guid]::NewGuid().ToString("B").ToUpper() # e.g. {E821A3F5-1F84-4A4B-BE9D-115D93E9E6F0} + + # Read & rewrite line-by-line + $fixed = Get-Content $proj | ForEach-Object { + if ($_ -match '^(\s*)"ProductVersion"') { + # preserve indentation, then inject exactly one pair of braces + "$($Matches[1])""ProductVersion"" = ""8:$ver""" + } + elseif ($_ -match '^(\s*)"ProductCode"') { + "$($Matches[1])""ProductCode"" = ""8:$guid""" + } + else { + $_ + } + } + + # Overwrite the project + Set-Content -Path $proj -Value $fixed + + Write-Host "→ ProductVersion patched to 8:$ver" + Write-Host "→ ProductCode patched to 8:$guid" + + + # 3) **DEBUG**: print out the patched .vdproj so you can inspect it + - name: Show patched .vdproj + if: env.build_trigger == 'true' + shell: pwsh + run: | + $proj = 'UnityLauncherProInstaller\UnityLauncherProInstaller.vdproj' + Write-Host "=== BEGIN .vdproj CONTENT ===" + Get-Content $proj + Write-Host "=== END .vdproj CONTENT ===" + + # locate VS 2022 + - name: Locate Visual Studio 2022 + id: vswhere + shell: pwsh + run: | + $installPath = vswhere -latest -products * -requires Microsoft.Component.MSBuild ` + -property installationPath + if (-not $installPath) { throw 'VS 2022 not found' } + "installPath=$installPath" >> $env:GITHUB_OUTPUT + + # download vs installer builder (v2.0.1) + - name: Download Installer-Projects VSIX + shell: pwsh run: | - echo "current_datetime=$(date +'%d/%m/%Y %H:%M')" >> $GITHUB_ENV + $vsixUrl = "https://marketplace.visualstudio.com/_apis/public/gallery/publishers/VisualStudioClient/vsextensions/MicrosoftVisualStudio2022InstallerProjects/2.0.1/vspackage" + Invoke-WebRequest $vsixUrl -OutFile installerprojects.vsix - # Step to get previous tag and commits - - name: Get commits since last release + # install vs installer builder + - name: Install Installer-Projects extension + shell: pwsh + run: | + $vsixInstaller = Join-Path "${{ steps.vswhere.outputs.installPath }}" 'Common7\IDE\VSIXInstaller.exe' + Write-Host "Running: $vsixInstaller installerprojects.vsix /quiet" + & $vsixInstaller installerprojects.vsix /quiet + + # Build MSI installer project using Visual Studio 2022 workaround + - name: Build Installer MSI + if: env.build_trigger == 'true' + shell: cmd + run: | + echo === Running BuildInstaller.bat === + call .\BuildInstaller.bat || echo WARNING: BuildInstaller.bat exited with %ERRORLEVEL%, continuing... + echo === Verifying MSI === + if exist "UnityLauncherProInstaller\Release\UnityLauncherPro-Installer.msi" ( + echo Success: MSI found at UnityLauncherProInstaller\Release\UnityLauncherPro-Installer.msi + exit /b 0 + ) else ( + echo ERROR: MSI not found in UnityLauncherProInstaller\Release + exit /b 1 + ) + + # Get the current date and time + - name: Get current date and time (Helsinki) + if: env.build_trigger == 'true' + shell: pwsh + run: | + $nowUtc = Get-Date -AsUTC + $tz = [TimeZoneInfo]::FindSystemTimeZoneById('FLE Standard Time') # Europe/Helsinki + $now = [TimeZoneInfo]::ConvertTimeFromUtc($nowUtc, $tz) + + "current_datetime=$($now.ToString('dd/MM/yyyy HH:mm'))" >> $env:GITHUB_ENV + "build_timestamp=$($now.ToString('HH:mm:ss - dd/MM/yyyy'))" >> $env:GITHUB_ENV + - name: Echo timestamp (debug) + if: env.build_trigger == 'true' + shell: pwsh + run: echo "build_timestamp=${env:build_timestamp}" + + # Get commits since last build + - name: Get commits since last numeric CI tag id: get_commits + if: env.build_trigger == 'true' shell: bash run: | - # Get the most recent tag - PREV_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "none") - if [ "$PREV_TAG" = "none" ]; then - echo "No previous tag found, listing all commits" - COMMITS=$(git log --pretty=format:"* %s" --no-merges) + set -euo pipefail + + # Defensive: fetch tags + git fetch --tags --force + + # Collect numeric-only tags (e.g., 145, 143...) and sort ascending numerically + mapfile -t NUM_TAGS < <(git tag --list '[0-9]*' | sort -n) + + PREV_TAG="" + # Walk from newest to oldest and pick the newest tag that is an ancestor of HEAD + for (( idx=${#NUM_TAGS[@]}-1 ; idx>=0 ; idx-- )); do + t="${NUM_TAGS[$idx]}" + if git merge-base --is-ancestor "$t" HEAD; then + PREV_TAG="$t" + break + fi + done + + if [ -z "$PREV_TAG" ]; then + echo "No previous numeric CI tag reachable from HEAD → listing all commits" + RANGE="--all" else - echo "Previous tag: $PREV_TAG" - # List commits since last tag - COMMITS=$(git log $PREV_TAG..HEAD --pretty=format:"* %s" --no-merges) + echo "Previous CI tag: $PREV_TAG" + RANGE="$PREV_TAG..HEAD" fi - echo "Commits since last release: $COMMITS" - - # Save commits to environment file for later use - echo "commits=$COMMITS" >> $GITHUB_ENV - - - name: Create Release - id: create_release - uses: actions/create-release@latest - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + # Nicely formatted bullets; add --date=short if you want dates + COMMITS=$(git log $RANGE --no-merges --pretty='* %h %s (by %an)') + + if [ -z "$COMMITS" ]; then + COMMITS="* No code changes since last CI tag." + fi + + { + echo 'commits<> "$GITHUB_OUTPUT" + + - name: Create GitHub Release + Upload Assets + if: env.build_trigger == 'true' + uses: softprops/action-gh-release@v2 with: - tag_name: ${{github.run_number}} - release_name: ${{ env.current_datetime }} (${{ github.run_number }}) + tag_name: ${{ github.run_number }} + name: ${{ env.current_datetime }} (${{ github.run_number }}) body: | - Automated Release by GitHub Action CI - - ### Commits in this release: - ${{ env.commits }} + Automated Release by GitHub Action CI. + **Build time:** ${{ env.build_timestamp }} + NOTE: Installer is experimental (and it loses settings from previous version) + + ### Commits in this release + ${{ steps.get_commits.outputs.commits }} draft: false - prerelease: false - - - name: Upload Release Asset - id: upload-release-asset - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./UnityLauncherPro.zip - asset_name: UnityLauncherPro.zip - asset_content_type: application/zip + prerelease: false + files: | + ./UnityLauncherPro.zip + ./UnityLauncherProInstaller/Release/UnityLauncherPro-Installer.msi diff --git a/Build.cmd b/Build.cmd index 96f1597..80288d1 100644 --- a/Build.cmd +++ b/Build.cmd @@ -1,10 +1,10 @@ @echo off REM Default VS paths to check if no Paths.cmd file exists -set VISUAL_STUDIO_PATH_0="%programfiles(x86)%\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\msbuild.exe" -set VISUAL_STUDIO_PATH_1="%programfiles(x86)%\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\msbuild.exe" -set VISUAL_STUDIO_PATH_2="%programfiles(x86)%\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\msbuild.exe" -set VISUAL_STUDIO_PATH_3="%programfiles(x86)%\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\msbuild.exe" +set VISUAL_STUDIO_PATH_0="%programfiles%\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\msbuild.exe" +set VISUAL_STUDIO_PATH_1="%programfiles%\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\msbuild.exe" +set VISUAL_STUDIO_PATH_2="%programfiles(x86)%\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\msbuild.exe" +set VISUAL_STUDIO_PATH_3="%programfiles(x86)%\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\msbuild.exe" pushd "%~dp0" if exist Debug rd /s /q Debug diff --git a/BuildInstaller.bat b/BuildInstaller.bat new file mode 100644 index 0000000..97b0d01 --- /dev/null +++ b/BuildInstaller.bat @@ -0,0 +1,75 @@ +@ECHO OFF +SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION + +ECHO: +ECHO === Starting Installer Build Workaround === + +REM Store current directory +SET "current_path=%CD%" + +REM Try all known editions of Visual Studio 2022 +SET "vs_base_path=%ProgramFiles%\Microsoft Visual Studio\2022" +FOR %%E IN (Community Professional Enterprise) DO ( + IF EXIST "%vs_base_path%\%%E\Common7\IDE\CommonExtensions\Microsoft\VSI\DisableOutOfProcBuild\DisableOutOfProcBuild.exe" ( + SET "buildfix_path=%vs_base_path%\%%E\Common7\IDE\CommonExtensions\Microsoft\VSI\DisableOutOfProcBuild" + SET "devenv_path=%vs_base_path%\%%E\Common7\IDE\devenv.exe" + SET "vs_edition=%%E" + GOTO :FoundEdition + ) +) + +ECHO [ERROR] Could not find DisableOutOfProcBuild.exe in any known VS2022 edition. +EXIT /B 1 + +:FoundEdition +ECHO Found Visual Studio 2022 Edition: %vs_edition% +CD /D "%buildfix_path%" +CALL DisableOutOfProcBuild.exe + +REM Restore previous directory +CD /D "%current_path%" + +REM === Validate required files === +ECHO: +ECHO === Checking required files === + +SET "error=0" + +IF NOT EXIST "UnityLauncherPro\bin\Release\UnityLauncherPro.exe" ( + ECHO [ERROR] Missing file: UnityLauncherPro\bin\Release\UnityLauncherPro.exe + SET "error=1" +) +IF NOT EXIST "UnityLauncherPro\Images\icon.ico" ( + ECHO [ERROR] Missing file: UnityLauncherPro\Images\icon.ico + SET "error=1" +) + +IF %error% NEQ 0 ( + ECHO [ERROR] Required files are missing. Aborting installer build. + EXIT /B 1 +) + + +ECHO: +ECHO === Building Installer === +"%devenv_path%" UnityLauncherPro.sln /Rebuild Release /Project UnityLauncherProInstaller > build_output.log 2>&1 +SET "exitCode=%ERRORLEVEL%" + +TYPE build_output.log +ECHO: +ECHO === devenv.exe exit code: %exitCode% === + +IF NOT "%exitCode%"=="0" ( + ECHO [ERROR] Installer build failed. Check build_output.log for details. + EXIT /B %exitCode% +) + + +ECHO: +ECHO === Build Complete === + +REM Optional cleanup: disable workaround +REG DELETE "HKCU\Software\Microsoft\VisualStudio\Setup" /v VSDisableOutOfProcBuild /f >NUL 2>&1 + +ENDLOCAL +EXIT /B %exitCode% diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..6b201eb --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,41 @@ +# Contributing to UnityLauncherPro + +Thanks for your interest in contributing! +Here’s how you can help: + +## How to Contribute + +0. **Open Issue** Describe your idea first (if its useful, it might get accepted) OR check existing issues and comment there +1. **Fork** the repository +2. **Clone** your fork: `git clone https://github.com/YOURUSERNAME/UnityLauncherPro.git` +3. Optional: **Create a new branch**: `git checkout -b feature-name` +4. **Make your changes** +5. **Commit**: `git commit -m "Add feature XYZ"` +6. **Push**: `git push origin feature-name` +7. **Open a Pull Request** from your fork + +## Reporting Bugs + +- Use the **Issues** tab +- Include **steps to reproduce**, screenshots, and error messages + +## Suggesting Features + +- Open an issue with `[Feature]` in the title +- Describe the problem your feature solves +- Note: Not all features get merged! *i'd like to keep workflows and UI something close to my own preferences (Sorry!), but you can of course make your own forks with additional features! + +## Code Style & External Libraries + +- Style is not enforced +- Simple code is good and functions can be as long as they need, to do the task (but can extract commonly used parts/methods into Tools or other helper libraries) +- Avoid using external packages/nugets/dependencies (to keep this as a small single exe build) +- Try to keep main features fast (or even improve existing features to make this more lightweight and faster to start etc.) + +## Need Help? + +Feel free to open an issue or post in discussion. + +--- + +Thanks for contributing! diff --git a/README.md b/README.md index c6af1d1..f7540b8 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,9 @@ -# UnityLauncherPro -[![Build Status](https://ci.appveyor.com/api/projects/status/hajcaavcsg7904rx?svg=true)](https://github.com/unitycoder/UnityLauncherPro/releases/latest/download/UnityLauncherPro.zip) [![Downloads](https://img.shields.io/github/downloads/unitycoder/unitylauncherpro/total)](https://github.com/unitycoder/UnityLauncherPro/releases/latest/download/UnityLauncherPro.zip) [![GitHub license](https://img.shields.io/github/license/unitycoder/UnityLauncherPro)](https://github.com/unitycoder/UnityLauncherPro/blob/master/LICENSE) [](https://discord.gg/cXT97hU) [![VirusTotal scan now](https://img.shields.io/static/v1?label=VirusTotal&message=Scan)](https://www.virustotal.com/gui/url/e123b616cf4cbe3d3f7ba13b0d88cf5fff4638f72d5b9461088d0b11e9a41de3?nocache=1) [![CodeQL](https://github.com/unitycoder/UnityLauncherPro/actions/workflows/codeql.yml/badge.svg)](https://github.com/unitycoder/UnityLauncherPro/actions/workflows/codeql.yml) +# Disclaimer +This is un-official, alternative Project launcher for Unity Editor. +These materials are not sponsored by or affiliated with Unity Technologies or its affiliates. “Unity” is a trademark or registered trademark of Unity Technologies or its affiliates in the U.S. and elsewhere. +# Project Launcher For Unity +[![Build Status](https://github.com/unitycoder/UnityLauncherPro/actions/workflows/main.yml/badge.svg)](https://github.com/unitycoder/UnityLauncherPro/releases/latest/download/UnityLauncherPro.zip) [![Downloads](https://img.shields.io/github/downloads/unitycoder/unitylauncherpro/total)](https://github.com/unitycoder/UnityLauncherPro/releases/latest/download/UnityLauncherPro.zip) [![GitHub license](https://img.shields.io/github/license/unitycoder/UnityLauncherPro)](https://github.com/unitycoder/UnityLauncherPro/blob/master/LICENSE) [](https://discord.gg/cXT97hU) [![VirusTotal scan now](https://img.shields.io/static/v1?label=VirusTotal&message=Scan)](https://www.virustotal.com/gui/url/e123b616cf4cbe3d3f7ba13b0d88cf5fff4638f72d5b9461088d0b11e9a41de3?nocache=1) [![CodeQL](https://github.com/unitycoder/UnityLauncherPro/actions/workflows/codeql.yml/badge.svg)](https://github.com/unitycoder/UnityLauncherPro/actions/workflows/codeql.yml) Handle all your Unity versions and Projects easily! @@ -27,6 +30,9 @@ Handle all your Unity versions and Projects easily! - Select template for new project (template based on selected unity version) - And more: https://github.com/unitycoder/UnityLauncherPro/wiki/Launcher-Comparison +### Powered by +[![JetBrains logo.](https://resources.jetbrains.com/storage/products/company/brand/logos/jetbrains.svg)](https://jb.gg/OpenSourceSupport) + ### Forum Thread https://forum.unity.com/threads/unity-launcher-launch-correct-unity-versions-for-each-project-automatically.488718/ @@ -37,17 +43,20 @@ https://github.com/unitycoder/UnityLauncherPro/wiki See DEV branch for latest commits https://github.com/unitycoder/UnityLauncherPro/tree/dev
Pre-releases are sometimes available from dev branch: https://github.com/unitycoder/UnityLauncherPro/releases +### Contributing +See https://github.com/unitycoder/UnityLauncherPro/blob/master/CONTRIBUTING.md + ### Screenshots -![image](https://user-images.githubusercontent.com/5438317/71485879-184b3a00-281c-11ea-97db-73c5dfa9bb4e.png) +image -![image](https://github.com/unitycoder/UnityLauncherPro/assets/5438317/21eb1fcd-3cb1-4dea-8133-9ce440de77d8) +image -![image](https://github.com/unitycoder/UnityLauncherPro/assets/5438317/2942c1d7-2006-4dee-8b68-e1f6f2e0fbf4) +image -![image](https://github.com/unitycoder/UnityLauncherPro/assets/5438317/6f8dce07-c640-42db-a1ef-d8bcc7a80cc2) +image -![image](https://user-images.githubusercontent.com/5438317/206923022-4b4bb8ed-0351-408f-b1d3-82bd6eefbc45.png) +image ### Perform tasks on selected project ![image](https://github.com/unitycoder/UnityLauncherPro/assets/5438317/a0b468ba-e3a6-420b-8155-78bc32814752) @@ -64,8 +73,10 @@ Pre-releases are sometimes available from dev branch: https://github.com/unityco ### View and Select current platform ![unitylauncherpro_platform](https://user-images.githubusercontent.com/5438317/132997691-5ed50f1d-e285-4c83-b356-46c1e3f431e4.gif) -### Rename Project title -![pro-rename](https://user-images.githubusercontent.com/5438317/193453048-aa5527c6-a345-4f93-b934-f68ac2524cac.gif) -
Old (winforms) version is here: https://github.com/unitycoder/UnityLauncher + + + + + diff --git a/UnityLauncherPro.sln b/UnityLauncherPro.sln index 63fd938..2314601 100644 --- a/UnityLauncherPro.sln +++ b/UnityLauncherPro.sln @@ -1,14 +1,13 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.28307.539 +# Visual Studio Version 17 +VisualStudioVersion = 17.13.35931.197 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnityLauncherPro", "UnityLauncherPro\UnityLauncherPro.csproj", "{EC78D91A-3E63-4CAA-8BC3-9673A30FDA45}" EndProject +Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "UnityLauncherProInstaller", "UnityLauncherProInstaller\UnityLauncherProInstaller.vdproj", "{249180EF-BFC1-9DD7-48CC-E2B9253A64E0}" +EndProject Global - GlobalSection(Performance) = preSolution - HasPerformanceSessions = true - EndGlobalSection GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU @@ -18,6 +17,9 @@ Global {EC78D91A-3E63-4CAA-8BC3-9673A30FDA45}.Debug|Any CPU.Build.0 = Debug|Any CPU {EC78D91A-3E63-4CAA-8BC3-9673A30FDA45}.Release|Any CPU.ActiveCfg = Release|Any CPU {EC78D91A-3E63-4CAA-8BC3-9673A30FDA45}.Release|Any CPU.Build.0 = Release|Any CPU + {249180EF-BFC1-9DD7-48CC-E2B9253A64E0}.Debug|Any CPU.ActiveCfg = Debug + {249180EF-BFC1-9DD7-48CC-E2B9253A64E0}.Release|Any CPU.ActiveCfg = Release + {249180EF-BFC1-9DD7-48CC-E2B9253A64E0}.Release|Any CPU.Build.0 = Release EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -28,4 +30,7 @@ Global GlobalSection(Performance) = preSolution HasPerformanceSessions = true EndGlobalSection + GlobalSection(Performance) = preSolution + HasPerformanceSessions = true + EndGlobalSection EndGlobal diff --git a/UnityLauncherPro/App.xaml b/UnityLauncherPro/App.xaml index 1d882de..adfad5f 100644 --- a/UnityLauncherPro/App.xaml +++ b/UnityLauncherPro/App.xaml @@ -136,7 +136,7 @@ - + @@ -530,9 +530,6 @@ - - - diff --git a/UnityLauncherPro/App.xaml.cs b/UnityLauncherPro/App.xaml.cs index 180b5f2..d14e416 100644 --- a/UnityLauncherPro/App.xaml.cs +++ b/UnityLauncherPro/App.xaml.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Configuration; -using System.Data; -using System.Linq; -using System.Threading.Tasks; -using System.Windows; +using System.Windows; namespace UnityLauncherPro { diff --git a/UnityLauncherPro/Converters/LastModifiedConverter.cs b/UnityLauncherPro/Converters/LastModifiedConverter.cs index 710dd14..a0f2b45 100644 --- a/UnityLauncherPro/Converters/LastModifiedConverter.cs +++ b/UnityLauncherPro/Converters/LastModifiedConverter.cs @@ -23,5 +23,23 @@ public object ConvertBack(object value, Type targetType, object parameter, Cultu return DateTime.ParseExact((string)value, MainWindow.currentDateFormat, culture); } + } + + // just for tooltip + [ValueConversion(typeof(DateTime), typeof(String))] + public class LastModifiedConverterTooltip : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value == null) return null; + DateTime date = (DateTime)value; + return date.ToString(MainWindow.currentDateFormat); + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + return DateTime.ParseExact((string)value, MainWindow.currentDateFormat, culture); + } + } } diff --git a/UnityLauncherPro/Converters/ThumbnailConverter.cs b/UnityLauncherPro/Converters/ThumbnailConverter.cs new file mode 100644 index 0000000..d389489 --- /dev/null +++ b/UnityLauncherPro/Converters/ThumbnailConverter.cs @@ -0,0 +1,58 @@ +using System; +using System.Globalization; +using System.IO; +using System.Windows.Data; +using System.Windows.Media.Imaging; + +namespace UnityLauncherPro.Converters +{ + public class ThumbnailConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is Project project) + { + if (!string.IsNullOrEmpty(project.Path)) + { + string thumbnailPath = Path.Combine(project.Path, "ProjectSettings", "icon.png"); + + if (File.Exists(thumbnailPath)) + { + try + { + var bitmap = new BitmapImage(); + bitmap.BeginInit(); + bitmap.CacheOption = BitmapCacheOption.OnLoad; + bitmap.CreateOptions = BitmapCreateOptions.IgnoreImageCache; + bitmap.UriSource = new Uri(thumbnailPath, UriKind.Absolute); + bitmap.DecodePixelWidth = 64; // Match your display size + bitmap.DecodePixelHeight = 64; + + bitmap.EndInit(); + + // Freeze for cross-thread access + if (bitmap.CanFreeze) + { + bitmap.Freeze(); + } + + return bitmap; + } + catch + { + // Ignore and fall back to null + } + } + } + return null; + } + + return null; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/UnityLauncherPro/Data/MessageType.cs b/UnityLauncherPro/Data/MessageType.cs new file mode 100644 index 0000000..febb9be --- /dev/null +++ b/UnityLauncherPro/Data/MessageType.cs @@ -0,0 +1,9 @@ +namespace UnityLauncherPro.Data +{ + public enum MessageType + { + Info, + Warning, + Error + } +} diff --git a/UnityLauncherPro/Data/OnlineTemplateItem.cs b/UnityLauncherPro/Data/OnlineTemplateItem.cs new file mode 100644 index 0000000..a5ff4e6 --- /dev/null +++ b/UnityLauncherPro/Data/OnlineTemplateItem.cs @@ -0,0 +1,12 @@ +namespace UnityLauncherPro.Data +{ + public class OnlineTemplateItem + { + public string Name { get; set; } + public string Description { get; set; } + public string RenderPipeline { get; set; } + public string Type { get; set; } // Core, Learning, Sample, + public string PreviewImageURL { get; set; } + public string TarBallURL { get; set; } + } +} \ No newline at end of file diff --git a/UnityLauncherPro/Data/Project.cs b/UnityLauncherPro/Data/Project.cs index 6bf8621..7b221ee 100644 --- a/UnityLauncherPro/Data/Project.cs +++ b/UnityLauncherPro/Data/Project.cs @@ -1,10 +1,11 @@ using System; +using System.ComponentModel; using System.Globalization; using System.Windows.Data; namespace UnityLauncherPro { - public class Project : IValueConverter + public class Project : IValueConverter, INotifyPropertyChanged { public string Title { set; get; } public string Version { set; get; } @@ -16,6 +17,20 @@ public class Project : IValueConverter public string TargetPlatform { set; get; } // TODO rename to Platform public string[] TargetPlatforms { set; get; } public bool folderExists { set; get; } + public string SRP { set; get; } // Scriptable Render Pipeline, TODO add version info? + + //public string InfoLabel { set; get; } // this is additional info from Releases API (like vulnerabilities..) + private string _infoLabel; + public string InfoLabel + { + get => _infoLabel; + set + { + if (_infoLabel == value) return; + _infoLabel = value; + OnPropertyChanged(nameof(InfoLabel)); + } + } // WPF keeps calling this method from AppendFormatHelper, GetNameCore..? not sure if need to return something else or default would be faster? public override string ToString() @@ -40,5 +55,8 @@ public object ConvertBack(object value, Type targetType, object parameter, Cultu { throw new NotSupportedException(); } + + public event PropertyChangedEventHandler PropertyChanged; + protected void OnPropertyChanged(string name) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); } } \ No newline at end of file diff --git a/UnityLauncherPro/Data/TemplateGraphQLResponse.cs b/UnityLauncherPro/Data/TemplateGraphQLResponse.cs new file mode 100644 index 0000000..32bdd91 --- /dev/null +++ b/UnityLauncherPro/Data/TemplateGraphQLResponse.cs @@ -0,0 +1,49 @@ +namespace UnityLauncherPro.Data +{ + public class TemplateGraphQLResponse + { + public TemplateData data { get; set; } + } + + public class TemplateData + { + public GetTemplates getTemplates { get; set; } + } + + public class GetTemplates + { + public TemplateEdge[] edges { get; set; } + } + + public class TemplateEdge + { + public TemplateNode node { get; set; } + } + + public class TemplateNode + { + public string name { get; set; } + public string packageName { get; set; } + public string description { get; set; } + public string type { get; set; } + public string renderPipeline { get; set; } + public PreviewImage previewImage { get; set; } + public TemplateVersion[] versions { get; set; } + } + + public class PreviewImage + { + public string url { get; set; } + } + + public class TemplateVersion + { + public string name { get; set; } + public Tarball tarball { get; set; } + } + + public class Tarball + { + public string url { get; set; } + } +} \ No newline at end of file diff --git a/UnityLauncherPro/Data/ThemeColor.cs b/UnityLauncherPro/Data/ThemeColor.cs index 24a6232..2dcbd02 100644 --- a/UnityLauncherPro/Data/ThemeColor.cs +++ b/UnityLauncherPro/Data/ThemeColor.cs @@ -1,5 +1,4 @@ using System; -using System.ComponentModel; using System.Globalization; using System.Windows.Data; using System.Windows.Media; diff --git a/UnityLauncherPro/Data/UnityInstallation.cs b/UnityLauncherPro/Data/UnityInstallation.cs index 3647bf6..5f5d320 100644 --- a/UnityLauncherPro/Data/UnityInstallation.cs +++ b/UnityLauncherPro/Data/UnityInstallation.cs @@ -1,29 +1,60 @@ using System; +using System.ComponentModel; using System.Windows.Data; namespace UnityLauncherPro { - public class UnityInstallation : IValueConverter + public class UnityInstallation : IValueConverter, INotifyPropertyChanged { public string Version { set; get; } public long VersionCode { set; get; } // version as number, cached for sorting public string Path { set; get; } // exe path public DateTime? Installed { set; get; } - public string PlatformsCombined { set; get; } public string[] Platforms { set; get; } public int ProjectCount { set; get; } - public bool IsPreferred { set; get; } - public string ReleaseType { set; get; } // Alpha, Beta, LTS.. TODO could be enum + //public string InfoLabel { set; get; } // this is additional info from Releases API (like vulnerabilities..) + + private string _infoLabel; + public string InfoLabel + { + get => _infoLabel; + set + { + if (_infoLabel == value) return; + _infoLabel = value; + OnPropertyChanged(nameof(InfoLabel)); + } + } + // https://stackoverflow.com/a/5551986/5452781 public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { string version = value as string; if (string.IsNullOrEmpty(version)) return null; - return MainWindow.unityInstalledVersions.ContainsKey(version); + + bool checkInfoLabel = true; + + if (MainWindow.unityInstalledVersions.ContainsKey(version)) + { + //Console.WriteLine("checking version: "+version); + if (checkInfoLabel && string.IsNullOrEmpty(InfoLabel) == false) + { + Console.WriteLine("Contains warning: " + version); + return -1; // has warning + } + else + { + return 1; // normal + } + } + else + { + return 0; // not installed + } } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) @@ -31,5 +62,9 @@ public object ConvertBack(object value, Type targetType, object parameter, Syste throw new NotSupportedException(); } + // status label results are ready + public event PropertyChangedEventHandler PropertyChanged; + protected void OnPropertyChanged(string name) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); + } } diff --git a/UnityLauncherPro/Data/UnityVersion.cs b/UnityLauncherPro/Data/UnityVersion.cs index f616aaa..e4a0649 100644 --- a/UnityLauncherPro/Data/UnityVersion.cs +++ b/UnityLauncherPro/Data/UnityVersion.cs @@ -8,6 +8,7 @@ public class UnityVersion public string Version { get; set; } public UnityVersionStream Stream { get; set; } public DateTime ReleaseDate { get; set; } + public string directURL { get; set; } = null; // if found from unofficial releases list public static UnityVersion FromJson(string json) { diff --git a/UnityLauncherPro/GetProjects.cs b/UnityLauncherPro/GetProjects.cs index caa05a9..bb3ae29 100644 --- a/UnityLauncherPro/GetProjects.cs +++ b/UnityLauncherPro/GetProjects.cs @@ -15,7 +15,7 @@ public static class GetProjects // convert target platform name into valid buildtarget platform name, NOTE this depends on unity version, now only 2019 and later are supported public static Dictionary remapPlatformNames = new Dictionary { { "StandaloneWindows64", "Win64" }, { "StandaloneWindows", "Win" }, { "Android", "Android" }, { "WebGL", "WebGL" } }; - public static List Scan(bool getGitBranch = false, bool getPlasticBranch = false, bool getArguments = false, bool showMissingFolders = false, bool showTargetPlatform = false, StringCollection AllProjectPaths = null, bool searchGitbranchRecursivly = false) + public static List Scan(bool getGitBranch = false, bool getPlasticBranch = false, bool getArguments = false, bool showMissingFolders = false, bool showTargetPlatform = false, StringCollection AllProjectPaths = null, bool searchGitbranchRecursively = false, bool showSRP = false) { List projectsFound = new List(); @@ -53,17 +53,18 @@ public static List Scan(bool getGitBranch = false, bool getPlasticBranc projectPath = (string)key.GetValue(valueName); } - var p = GetProjectInfo(projectPath, getGitBranch, getPlasticBranch, getArguments, showMissingFolders, showTargetPlatform, searchGitbranchRecursivly); + var p = GetProjectInfo(projectPath, getGitBranch, getPlasticBranch, getArguments, showMissingFolders, showTargetPlatform, searchGitbranchRecursively, showSRP); //Console.WriteLine(projectPath+" "+p.TargetPlatform); // if want to hide project and folder path for screenshot - //p.Title = "Example Project "; - //p.Path = "C:/Projects/ExamplePath/MyProj"; + //p.Title = "Example Project"; + //p.Path = "C:/Projects/MyProj"; if (p != null) { projectsFound.Add(p); + // TODO FIXME, this gets called everytime for same projects? // add found projects to history also (gets added only if its not already there) Tools.AddProjectToHistory(p.Path); } @@ -94,7 +95,7 @@ public static List Scan(bool getGitBranch = false, bool getPlasticBranc // if not found from registry, add to recent projects list if (found == false) { - var p = GetProjectInfo(projectPath, getGitBranch, getPlasticBranch, getArguments, showMissingFolders, showTargetPlatform, searchGitbranchRecursivly); + var p = GetProjectInfo(projectPath, getGitBranch, getPlasticBranch, getArguments, showMissingFolders, showTargetPlatform, searchGitbranchRecursively, showSRP); if (p != null) projectsFound.Add(p); } } @@ -117,11 +118,10 @@ public static List Scan(bool getGitBranch = false, bool getPlasticBranc //Console.WriteLine("Trimming projects list to " + MainWindow.maxProjectCount + " projects"); projectsFound.RemoveRange(MainWindow.maxProjectCount, projectsFound.Count - MainWindow.maxProjectCount); } - return projectsFound; } // Scan() - static Project GetProjectInfo(string projectPath, bool getGitBranch = false, bool getPlasticBranch = false, bool getArguments = false, bool showMissingFolders = false, bool showTargetPlatform = false, bool searchGitbranchRecursivly = false) + static Project GetProjectInfo(string projectPath, bool getGitBranch = false, bool getPlasticBranch = false, bool getArguments = false, bool showMissingFolders = false, bool showTargetPlatform = false, bool searchGitbranchRecursively = false, bool showSRP = false) { bool folderExists = Directory.Exists(projectPath); @@ -166,11 +166,12 @@ static Project GetProjectInfo(string projectPath, bool getGitBranch = false, boo string gitBranch = ""; if (getGitBranch == true) { - gitBranch = folderExists ? Tools.ReadGitBranchInfo(projectPath, searchGitbranchRecursivly) : null; + gitBranch = folderExists ? Tools.ReadGitBranchInfo(projectPath, searchGitbranchRecursively) : null; + // check for plastic, if enabled if (getPlasticBranch == true && gitBranch == null) { - gitBranch = folderExists ? Tools.ReadPlasticBranchInfo(projectPath) : null; + gitBranch = folderExists ? Tools.ReadPlasticBranchInfo(projectPath, searchGitbranchRecursively) : null; } } @@ -209,6 +210,9 @@ static Project GetProjectInfo(string projectPath, bool getGitBranch = false, boo // bubblegum(TM) solution, fill available platforms for this unity version, for this project p.TargetPlatforms = Tools.GetPlatformsForUnityVersion(projectVersion); p.folderExists = folderExists; + + if (showSRP == true) p.SRP = Tools.GetSRP(projectPath); + return p; } diff --git a/UnityLauncherPro/GetUnityInstallations.cs b/UnityLauncherPro/GetUnityInstallations.cs index f12bc77..7f4570d 100644 --- a/UnityLauncherPro/GetUnityInstallations.cs +++ b/UnityLauncherPro/GetUnityInstallations.cs @@ -11,7 +11,6 @@ public static class GetUnityInstallations { static Dictionary platformNames = new Dictionary { { "androidplayer", "Android" }, { "windowsstandalonesupport", "Win" }, { "linuxstandalonesupport", "Linux" }, { "LinuxStandalone", "Linux" }, { "OSXStandalone", "OSX" }, { "webglsupport", "WebGL" }, { "metrosupport", "UWP" }, { "iossupport", "iOS" } }; - // returns unity installations public static List Scan() { @@ -65,6 +64,9 @@ public static List Scan() unity.IsPreferred = (version == MainWindow.preferredVersion); unity.ProjectCount = GetProjectCountForUnityVersion(version); + // TODO here need to check for vulnerabilities from CACHED data, BUT if its cached, then it might be old + unity.InfoLabel = null; + if (Tools.IsAlpha(version)) { unity.ReleaseType = "Alpha"; diff --git a/UnityLauncherPro/GetUnityUpdates.cs b/UnityLauncherPro/GetUnityUpdates.cs index 3c614e0..8384fcd 100644 --- a/UnityLauncherPro/GetUnityUpdates.cs +++ b/UnityLauncherPro/GetUnityUpdates.cs @@ -16,22 +16,126 @@ public static class GetUnityUpdates private const int DelayBetweenBatches = 1000; // 1 second in milliseconds private const string CacheFileName = "UnityVersionCache.json"; private static readonly HttpClient Client = new HttpClient(); + public static string unofficalReleasesURL = "https://raw.githubusercontent.com/unitycoder/UnofficialUnityReleasesWatcher/refs/heads/main/unity-releases.md"; - public static async Task> FetchAll() + static Dictionary unofficialReleaseURLs = new Dictionary(); + + public static async Task> FetchAll(bool useUnofficialList = false) { var cachedVersions = LoadCachedVersions(); var newVersions = await FetchNewVersions(cachedVersions); var allVersions = newVersions.Concat(cachedVersions).ToList(); - if (newVersions.Count > 0) + if (useUnofficialList == true) + { + var unofficialVersions = await FetchUnofficialVersions(cachedVersions); + unofficialReleaseURLs.Clear(); + + // TODO modify FetchUnofficialVersions to put items in this dictionary directly + foreach (var version in unofficialVersions) + { + Console.WriteLine("version in unofficials: " + version); + // add only if not there yet + if (unofficialReleaseURLs.ContainsKey(version.Version) == false) + { + Console.WriteLine("added unofficial: " + version.Version + " , " + version.directURL); + unofficialReleaseURLs.Add(version.Version, version.directURL); + } + } + // combine + allVersions = unofficialVersions.Concat(allVersions).ToList(); + } + + if (newVersions.Count > 0 || (useUnofficialList && unofficialReleaseURLs.Count > 0)) { SaveCachedVersions(allVersions); } + return allVersions; } + public static async Task> FetchUnofficialVersions(List cachedVersions) + { + var unofficialVersions = new List(); + var existingVersions = new HashSet(cachedVersions.Select(v => v.Version)); + + try + { + var content = await Client.GetStringAsync(unofficalReleasesURL); + + // Parse the Markdown content + var lines = content.Split(new[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries); + foreach (var line in lines) + { + //Console.WriteLine(line); + + if (line.StartsWith("- ")) // Identify Markdown list items + { + var urlPart = line.Substring(4).Trim(); // bug in server, has double - + var version = ExtractVersionFromUrl(urlPart); + + //Console.WriteLine("VERSION: " + version); + //Console.WriteLine("IsNullOrEmpty: " + (string.IsNullOrEmpty(version)) + ", existingVersions:" + (existingVersions.Contains(version))); + + if (string.IsNullOrEmpty(version) == false && existingVersions.Contains(version) == false) + { + var stream = InferStreamFromVersion(version); + + Console.WriteLine(version + " , " + urlPart); + + unofficialVersions.Add(new UnityVersion + { + Version = version, + Stream = stream, + ReleaseDate = DateTime.Now, // NOTE not correct, but we don't have known release date for unofficial versions (its only when they are found..) + //ReleaseDate = DateTime.MinValue // Release date is unavailable in the MD format, TODO add to md as #2021-01-01 ? + directURL = urlPart, // this is available only for unofficial releases + }); + } + } + } + } + catch (Exception ex) + { + Console.WriteLine($"Error fetching unofficial versions: {ex.Message}"); + } + + return unofficialVersions; + } + + // TODO fixme, f is not always LTS + private static UnityVersionStream InferStreamFromVersion(string version) + { + if (Tools.IsAlpha(version)) return UnityVersionStream.Alpha; + if (Tools.IsBeta(version)) return UnityVersionStream.Beta; + if (Tools.IsLTS(version)) return UnityVersionStream.LTS; + + //if (version.Contains("a")) return UnityVersionStream.Alpha; + //if (version.Contains("b")) return UnityVersionStream.Beta; + //if (version.Contains("f")) return UnityVersionStream.LTS; + return UnityVersionStream.Tech; // Default to Tech if no identifier is found + } + + /// + /// Extracts the Unity version from the given URL. + /// + /// The URL to parse. + /// The Unity version string. + private static string ExtractVersionFromUrl(string url) + { + try + { + var versionStart = url.LastIndexOf('#') + 1; + return versionStart > 0 && versionStart < url.Length ? url.Substring(versionStart) : null; + } + catch + { + return null; + } + } + public static async Task FetchDownloadUrl(string unityVersion) { if (string.IsNullOrEmpty(unityVersion)) @@ -39,6 +143,7 @@ public static async Task FetchDownloadUrl(string unityVersion) return null; } + // unity release api string apiUrl = $"{BaseApiUrl}?limit=1&version={unityVersion}&architecture=X86_64&platform=WINDOWS"; try @@ -55,6 +160,32 @@ public static async Task FetchDownloadUrl(string unityVersion) private static async Task ExtractDownloadUrlAsync(string json, string unityVersion) { + //Console.WriteLine("json: " + json + " vers: " + unityVersion); + + if (json.Contains("\"results\":[]")) + { + Console.WriteLine("No results found from releases API, checking unofficial list (if enabled), v=" + unityVersion); + + // print unofficialReleaseURLs + foreach (var kvp in unofficialReleaseURLs) + { + Console.WriteLine($"Unofficial: {kvp.Key} => {kvp.Value}"); + } + + if (unofficialReleaseURLs.ContainsKey(unityVersion)) + { + Console.WriteLine("Unofficial release found in the list: "); + + string unityHash = Tools.ParseHashCodeFromURL(unofficialReleaseURLs[unityVersion]); + // Console.WriteLine(unityHash); + string downloadURL = Tools.ParseDownloadURLFromWebpage(unityVersion, unityHash, false, true); + // Console.WriteLine("direct download url: "+downloadURL); + return downloadURL; + } + + return null; + } + int resultsIndex = json.IndexOf("\"results\":"); if (resultsIndex == -1) return null; @@ -84,7 +215,7 @@ private static async Task ExtractDownloadUrlAsync(string json, string un if (await CheckAssistantUrl(assistantUrl)) { - Console.WriteLine("Assistant download URL found."); + //Console.WriteLine("ExtractDownloadUrlAsync: Assistant download URL found."); return assistantUrl; } else @@ -261,6 +392,8 @@ private static List LoadCachedVersions() string cacheFilePath = Path.Combine(configDirectory, CacheFileName); if (!File.Exists(cacheFilePath)) return new List(); + Console.WriteLine("cache file: " + cacheFilePath); + string json = File.ReadAllText(cacheFilePath); return ParseCachedUnityVersions(json); } @@ -279,7 +412,30 @@ private static void SaveCachedVersions(List versions) if (configDirectory == null) return; string cacheFilePath = Path.Combine(configDirectory, CacheFileName); + //Console.WriteLine("Saving cachedrelease: " + cacheFilePath); File.WriteAllText(cacheFilePath, json); } + + internal static async Task CheckUnofficialVersionList(string version) + { + // fetch md page from unofficalReleasesURL + var content = await Client.GetStringAsync(unofficalReleasesURL); + // parse lines + var lines = content.Split(new[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries); + foreach (var line in lines) + { + if (line.StartsWith("- ")) // Identify Markdown list items + { + var urlPart = line.Substring(4).Trim(); // bug in server, has double - + var foundVersion = ExtractVersionFromUrl(urlPart); + if (foundVersion == version) + { + Console.WriteLine("Found unofficial version in the list: " + foundVersion + " , " + urlPart); + return urlPart; + } + } + } + return null; + } } } diff --git a/UnityLauncherPro/MainWindow.xaml b/UnityLauncherPro/MainWindow.xaml index bf95317..9441c30 100644 --- a/UnityLauncherPro/MainWindow.xaml +++ b/UnityLauncherPro/MainWindow.xaml @@ -7,10 +7,12 @@ xmlns:System="clr-namespace:System;assembly=mscorlib" xmlns:converters="clr-namespace:UnityLauncherPro.Converters" x:Class="UnityLauncherPro.MainWindow" mc:Ignorable="d" - Title="UnityLauncherPro" Height="650" Width="880" WindowStartupLocation="CenterScreen" Background="{DynamicResource ThemeDarkestBackground}" MinWidth="780" MinHeight="650" AllowsTransparency="True" WindowStyle="None" Margin="0" KeyDown="OnWindowKeyDown" Closing="Window_Closing" SizeChanged="Window_SizeChanged" Icon="Images/icon.ico" SourceInitialized="Window_SourceInitialized" MouseDown="Window_MouseDown"> + Title="UnityLauncherPro" Height="670" Width="880" WindowStartupLocation="CenterScreen" Background="{DynamicResource ThemeDarkestBackground}" MinWidth="780" MinHeight="650" AllowsTransparency="True" WindowStyle="None" Margin="0" KeyDown="OnWindowKeyDown" Closing="Window_Closing" SizeChanged="Window_SizeChanged" Icon="Images/icon.ico" SourceInitialized="Window_SourceInitialized" MouseDown="Window_MouseDown"> + + @@ -30,7 +32,7 @@ - + \r\n")] + [global::System.Configuration.DefaultSettingValueAttribute(@" + + C:\Program Files\Unity\Hub\Editor\ + C:\Program Files\ +")] public global::System.Collections.Specialized.StringCollection rootFolders { get { return ((global::System.Collections.Specialized.StringCollection)(this["rootFolders"])); @@ -575,5 +577,77 @@ public bool useAlphaReleaseNotes { this["useAlphaReleaseNotes"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool checkSRP { + get { + return ((bool)(this["checkSRP"])); + } + set { + this["checkSRP"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool useUnofficialReleaseList { + get { + return ((bool)(this["useUnofficialReleaseList"])); + } + set { + this["useUnofficialReleaseList"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool disableUnityHubLaunch { + get { + return ((bool)(this["disableUnityHubLaunch"])); + } + set { + this["disableUnityHubLaunch"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool registerExplorerMenuAPK { + get { + return ((bool)(this["registerExplorerMenuAPK"])); + } + set { + this["registerExplorerMenuAPK"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool fetchAdditionalInfo { + get { + return ((bool)(this["fetchAdditionalInfo"])); + } + set { + this["fetchAdditionalInfo"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool forceDX11 { + get { + return ((bool)(this["forceDX11"])); + } + set { + this["forceDX11"] = value; + } + } } } diff --git a/UnityLauncherPro/Properties/Settings.settings b/UnityLauncherPro/Properties/Settings.settings index 90c362e..1ae9246 100644 --- a/UnityLauncherPro/Properties/Settings.settings +++ b/UnityLauncherPro/Properties/Settings.settings @@ -110,6 +110,7 @@ <?xml version="1.0" encoding="utf-16"?> <ArrayOfString xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <string>C:\Program Files\Unity\Hub\Editor\</string> <string>C:\Program Files\</string> </ArrayOfString> @@ -144,5 +145,23 @@ True + + False + + + False + + + False + + + False + + + False + + + False + \ No newline at end of file diff --git a/UnityLauncherPro/Resources/Colors.xaml b/UnityLauncherPro/Resources/Colors.xaml index d6d27b1..5d5bd1a 100644 --- a/UnityLauncherPro/Resources/Colors.xaml +++ b/UnityLauncherPro/Resources/Colors.xaml @@ -66,5 +66,10 @@ + + + + + \ No newline at end of file diff --git a/UnityLauncherPro/Resources/UnityVersionCache.json b/UnityLauncherPro/Resources/UnityVersionCache.json index 8b7310c..50f65d5 100644 --- a/UnityLauncherPro/Resources/UnityVersionCache.json +++ b/UnityLauncherPro/Resources/UnityVersionCache.json @@ -1 +1 @@ -[{"version":"2022.3.48f1","stream":"LTS","releaseDate":"2024-09-26T18:38:03.76Z"},{"version":"6000.0.21f1","stream":"TECH","releaseDate":"2024-09-24T16:11:20.586Z"},{"version":"2021.3.44f1","stream":"LTS","releaseDate":"2024-09-23T14:46:08.531Z"},{"version":"6000.0.20f1","stream":"TECH","releaseDate":"2024-09-19T15:22:09.961Z"},{"version":"2022.3.47f1","stream":"LTS","releaseDate":"2024-09-18T06:44:50.214Z"},{"version":"6000.0.19f1","stream":"TECH","releaseDate":"2024-09-12T01:29:34.656Z"},{"version":"2022.3.46f1","stream":"LTS","releaseDate":"2024-09-10T16:41:40.233Z"},{"version":"6000.0.18f1","stream":"TECH","releaseDate":"2024-09-04T06:08:14.69Z"},{"version":"2022.3.45f1","stream":"LTS","releaseDate":"2024-09-03T22:44:17.358Z"},{"version":"6000.0.17f1","stream":"TECH","releaseDate":"2024-08-27T16:52:36.763Z"},{"version":"2022.3.44f1","stream":"LTS","releaseDate":"2024-08-23T06:10:50.975Z"},{"version":"6000.0.16f1","stream":"TECH","releaseDate":"2024-08-22T18:12:19.775Z"},{"version":"2021.3.43f1","stream":"LTS","releaseDate":"2024-08-22T10:10:30.849Z"},{"version":"2022.3.43f1","stream":"LTS","releaseDate":"2024-08-21T14:11:42.728Z"},{"version":"6000.0.15f1","stream":"TECH","releaseDate":"2024-08-13T18:03:16.792Z"},{"version":"2022.3.42f1","stream":"LTS","releaseDate":"2024-08-13T09:26:14.269Z"},{"version":"6000.0.14f1","stream":"TECH","releaseDate":"2024-08-07T05:59:10.659Z"},{"version":"2022.3.41f1","stream":"LTS","releaseDate":"2024-08-06T10:07:06.853Z"},{"version":"2021.3.42f1","stream":"LTS","releaseDate":"2024-08-06T09:30:24.602Z"},{"version":"6000.0.13f1","stream":"TECH","releaseDate":"2024-07-31T18:30:12.352Z"},{"version":"2022.3.40f1","stream":"LTS","releaseDate":"2024-07-30T14:14:27.536Z"},{"version":"6000.0.12f1","stream":"TECH","releaseDate":"2024-07-25T16:59:55.927Z"},{"version":"2022.3.39f1","stream":"LTS","releaseDate":"2024-07-23T16:04:16.202Z"},{"version":"2021.3.41f1","stream":"LTS","releaseDate":"2024-07-23T14:54:58.798Z"},{"version":"6000.0.11f1","stream":"TECH","releaseDate":"2024-07-17T10:16:09.023Z"},{"version":"2022.3.38f1","stream":"LTS","releaseDate":"2024-07-16T13:52:35.994Z"},{"version":"6000.0.10f1","stream":"TECH","releaseDate":"2024-07-10T16:45:22.488Z"},{"version":"2022.3.37f1","stream":"LTS","releaseDate":"2024-07-09T12:05:40.074Z"},{"version":"6000.0.9f1","stream":"TECH","releaseDate":"2024-07-03T14:22:27.352Z"},{"version":"2022.3.36f1","stream":"LTS","releaseDate":"2024-07-02T17:23:09.124Z"},{"version":"6000.0.8f1","stream":"TECH","releaseDate":"2024-06-28T15:36:42.098Z"},{"version":"2022.3.35f1","stream":"LTS","releaseDate":"2024-06-27T17:06:27.082Z"},{"version":"2021.3.40f1","stream":"LTS","releaseDate":"2024-06-27T02:15:04.495Z"},{"version":"6000.0.7f1","stream":"TECH","releaseDate":"2024-06-20T16:04:46.276Z"},{"version":"2022.3.34f1","stream":"LTS","releaseDate":"2024-06-18T11:27:05.706Z"},{"version":"2022.3.33f1","stream":"LTS","releaseDate":"2024-06-12T06:22:11.955Z"},{"version":"6000.0.5f1","stream":"TECH","releaseDate":"2024-06-04T18:54:20.572Z"},{"version":"2022.3.32f1","stream":"LTS","releaseDate":"2024-06-04T17:45:52.358Z"},{"version":"6000.0.4f1","stream":"TECH","releaseDate":"2024-05-29T16:49:19.341Z"},{"version":"2022.3.31f1","stream":"LTS","releaseDate":"2024-05-28T17:19:07.265Z"},{"version":"2021.3.39f1","stream":"LTS","releaseDate":"2024-05-28T16:13:34.56Z"},{"version":"6000.0.3f1","stream":"TECH","releaseDate":"2024-05-21T16:15:54.933Z"},{"version":"2022.3.30f1","stream":"LTS","releaseDate":"2024-05-21T12:05:13.739Z"},{"version":"6000.0.2f1","stream":"TECH","releaseDate":"2024-05-14T19:54:04.427Z"},{"version":"2022.3.29f1","stream":"LTS","releaseDate":"2024-05-14T15:20:52.928Z"},{"version":"6000.0.1f1","stream":"TECH","releaseDate":"2024-05-08T15:11:21.9Z"},{"version":"2022.3.28f1","stream":"LTS","releaseDate":"2024-05-07T15:20:10.592Z"},{"version":"2021.3.38f1","stream":"LTS","releaseDate":"2024-05-02T18:42:56.761Z"},{"version":"2022.3.27f1","stream":"LTS","releaseDate":"2024-04-30T17:28:32.438Z"},{"version":"6000.0.0f1","stream":"TECH","releaseDate":"2024-04-29T18:37:33.422Z"},{"version":"2023.2.20f1","stream":"TECH","releaseDate":"2024-04-25T19:29:55.528Z"},{"version":"2022.3.26f1","stream":"LTS","releaseDate":"2024-04-23T17:47:02.175Z"},{"version":"6000.0.0b16","stream":"BETA","releaseDate":"2024-04-19T15:47:47.012Z"},{"version":"2023.2.19f1","stream":"TECH","releaseDate":"2024-04-18T08:21:36.264Z"},{"version":"2022.3.25f1","stream":"LTS","releaseDate":"2024-04-16T12:56:01.94Z"},{"version":"6000.0.0b15","stream":"BETA","releaseDate":"2024-04-13T00:46:31.309Z"},{"version":"2023.2.18f1","stream":"TECH","releaseDate":"2024-04-09T21:11:33.786Z"},{"version":"2022.3.24f1","stream":"LTS","releaseDate":"2024-04-09T11:12:12.504Z"},{"version":"2023.2.17f1","stream":"TECH","releaseDate":"2024-04-04T01:45:09.545Z"},{"version":"2022.3.23f1","stream":"LTS","releaseDate":"2024-04-02T15:24:02.324Z"},{"version":"2021.3.37f1","stream":"LTS","releaseDate":"2024-04-02T13:12:43.531Z"},{"version":"6000.0.0b13","stream":"BETA","releaseDate":"2024-03-27T01:28:00.39Z"},{"version":"2023.2.16f1","stream":"TECH","releaseDate":"2024-03-27T01:03:51.315Z"},{"version":"2023.2.15f1","stream":"TECH","releaseDate":"2024-03-19T21:07:34.034Z"},{"version":"6000.0.0b12","stream":"BETA","releaseDate":"2024-03-19T19:32:02.889Z"},{"version":"2022.3.22f1","stream":"LTS","releaseDate":"2024-03-19T11:06:29.329Z"},{"version":"6000.0.0b11","stream":"BETA","releaseDate":"2024-03-13T21:20:06.403Z"},{"version":"2023.2.14f1","stream":"TECH","releaseDate":"2024-03-12T18:27:41.758Z"},{"version":"2023.2.13f1","stream":"TECH","releaseDate":"2024-03-05T20:41:13.839Z"},{"version":"2023.3.0b10","stream":"BETA","releaseDate":"2024-03-05T19:08:01.485Z"},{"version":"2021.3.36f1","stream":"LTS","releaseDate":"2024-03-05T18:42:24.171Z"},{"version":"2022.3.21f1","stream":"LTS","releaseDate":"2024-03-05T16:04:04.858Z"},{"version":"2023.2.12f1","stream":"TECH","releaseDate":"2024-02-28T23:06:57.279Z"},{"version":"2023.3.0b9","stream":"BETA","releaseDate":"2024-02-28T21:32:42.698Z"},{"version":"2023.2.11f1","stream":"TECH","releaseDate":"2024-02-20T21:17:45.026Z"},{"version":"2023.3.0b8","stream":"BETA","releaseDate":"2024-02-20T19:40:27.171Z"},{"version":"2023.2.10f1","stream":"TECH","releaseDate":"2024-02-14T19:39:19.891Z"},{"version":"2022.3.20f1","stream":"LTS","releaseDate":"2024-02-14T11:25:56.541Z"},{"version":"2023.3.0b7","stream":"BETA","releaseDate":"2024-02-13T19:59:14.714Z"},{"version":"2023.3.0b6","stream":"BETA","releaseDate":"2024-02-07T07:24:40.232Z"},{"version":"2023.2.9f1","stream":"TECH","releaseDate":"2024-02-07T06:56:57.647Z"},{"version":"2021.3.35f1","stream":"LTS","releaseDate":"2024-02-06T15:40:15.583Z"},{"version":"2022.3.19f1","stream":"LTS","releaseDate":"2024-01-31T11:56:51.634Z"},{"version":"2023.3.0b5","stream":"BETA","releaseDate":"2024-01-31T00:28:33.7Z"},{"version":"2023.2.8f1","stream":"TECH","releaseDate":"2024-01-31T00:02:00.587Z"},{"version":"2023.2.7f1","stream":"TECH","releaseDate":"2024-01-23T20:43:04.878Z"},{"version":"2023.3.0b4","stream":"BETA","releaseDate":"2024-01-23T19:12:34.872Z"},{"version":"2022.3.18f1","stream":"LTS","releaseDate":"2024-01-20T16:00:12.21Z"},{"version":"2023.2.6f1","stream":"TECH","releaseDate":"2024-01-17T05:22:12.116Z"},{"version":"2023.3.0b3","stream":"BETA","releaseDate":"2024-01-15T05:07:54.401Z"},{"version":"2023.3.0b2","stream":"BETA","releaseDate":"2024-01-09T21:10:15.944Z"},{"version":"2021.3.34f1","stream":"LTS","releaseDate":"2024-01-09T15:33:57.013Z"},{"version":"2022.3.17f1","stream":"LTS","releaseDate":"2024-01-09T13:24:21.309Z"},{"version":"2023.2.5f1","stream":"TECH","releaseDate":"2024-01-09T08:49:30.857Z"},{"version":"2023.3.0b1","stream":"BETA","releaseDate":"2024-01-03T02:06:01.186Z"},{"version":"2023.2.4f1","stream":"TECH","releaseDate":"2023-12-22T11:24:31.462Z"},{"version":"2022.3.16f1","stream":"LTS","releaseDate":"2023-12-19T10:05:11.721Z"},{"version":"2023.3.0a18","stream":"ALPHA","releaseDate":"2023-12-13T21:40:57.508Z"},{"version":"2023.2.3f1","stream":"TECH","releaseDate":"2023-12-05T22:03:42.762Z"},{"version":"2023.3.0a17","stream":"ALPHA","releaseDate":"2023-12-05T20:29:50.071Z"},{"version":"2022.3.15f1","stream":"LTS","releaseDate":"2023-12-05T16:41:51.676Z"},{"version":"2023.2.2f1","stream":"TECH","releaseDate":"2023-11-28T20:28:30.951Z"},{"version":"2023.3.0a16","stream":"ALPHA","releaseDate":"2023-11-28T18:53:03.105Z"},{"version":"2021.3.33f1","stream":"LTS","releaseDate":"2023-11-28T15:21:35.633Z"},{"version":"2023.2.1f1","stream":"TECH","releaseDate":"2023-11-21T22:09:38.485Z"},{"version":"2022.3.14f1","stream":"LTS","releaseDate":"2023-11-21T20:07:15.67Z"},{"version":"2023.3.0a15","stream":"ALPHA","releaseDate":"2023-11-21T17:46:47.002Z"},{"version":"2023.2.0f1","stream":"TECH","releaseDate":"2023-11-14T23:22:44.293Z"},{"version":"2023.3.0a14","stream":"ALPHA","releaseDate":"2023-11-14T21:47:34.468Z"},{"version":"2023.1.20f1","stream":"TECH","releaseDate":"2023-11-09T11:37:53.08Z"},{"version":"2022.3.13f1","stream":"LTS","releaseDate":"2023-11-07T17:33:11.846Z"},{"version":"2023.3.0a13","stream":"ALPHA","releaseDate":"2023-11-07T13:03:31.636Z"},{"version":"2023.2.0b17","stream":"BETA","releaseDate":"2023-11-07T01:15:49.736Z"},{"version":"2021.3.32f1","stream":"LTS","releaseDate":"2023-11-01T15:47:25.801Z"},{"version":"2023.2.0b16","stream":"BETA","releaseDate":"2023-11-01T07:07:29.019Z"},{"version":"2023.3.0a12","stream":"ALPHA","releaseDate":"2023-10-31T20:54:47.461Z"},{"version":"2023.1.19f1","stream":"TECH","releaseDate":"2023-10-31T14:12:27.135Z"},{"version":"2023.3.0a11","stream":"ALPHA","releaseDate":"2023-10-26T20:42:38.014Z"},{"version":"2023.2.0b15","stream":"BETA","releaseDate":"2023-10-26T19:42:17.8Z"},{"version":"2022.3.12f1","stream":"LTS","releaseDate":"2023-10-26T14:00:14.602Z"},{"version":"2023.1.18f1","stream":"TECH","releaseDate":"2023-10-24T16:38:46.558Z"},{"version":"2023.1.17f1","stream":"TECH","releaseDate":"2023-10-17T13:06:27.215Z"},{"version":"2023.2.0b14","stream":"BETA","releaseDate":"2023-10-16T16:49:19.211Z"},{"version":"2023.3.0a10","stream":"ALPHA","releaseDate":"2023-10-16T15:53:09.409Z"},{"version":"2023.2.0b13","stream":"BETA","releaseDate":"2023-10-10T23:43:50.418Z"},{"version":"2022.3.11f1","stream":"LTS","releaseDate":"2023-10-10T15:27:45.575Z"},{"version":"2023.2.0b12","stream":"BETA","releaseDate":"2023-10-05T05:35:01.259Z"},{"version":"2023.3.0a8","stream":"ALPHA","releaseDate":"2023-10-05T04:37:32.541Z"},{"version":"2023.1.16f1","stream":"TECH","releaseDate":"2023-10-03T17:51:07.924Z"},{"version":"2021.3.31f1","stream":"LTS","releaseDate":"2023-10-03T15:50:59.188Z"},{"version":"2023.2.0b11","stream":"BETA","releaseDate":"2023-09-27T19:03:28.283Z"},{"version":"2023.1.15f1","stream":"TECH","releaseDate":"2023-09-26T13:26:57.122Z"},{"version":"2023.3.0a6","stream":"ALPHA","releaseDate":"2023-09-21T19:57:30.172Z"},{"version":"2023.2.0b10","stream":"BETA","releaseDate":"2023-09-21T00:25:39.068Z"},{"version":"2023.3.0a7","stream":"ALPHA","releaseDate":"2023-09-20T23:32:03.486Z"},{"version":"2023.1.14f1","stream":"TECH","releaseDate":"2023-09-19T13:45:02.802Z"},{"version":"2022.3.10f1","stream":"LTS","releaseDate":"2023-09-19T11:09:17.924Z"},{"version":"2023.2.0b9","stream":"BETA","releaseDate":"2023-09-13T16:47:50.265Z"},{"version":"2023.3.0a5","stream":"ALPHA","releaseDate":"2023-09-13T08:39:30.342Z"},{"version":"2023.1.13f1","stream":"TECH","releaseDate":"2023-09-12T16:45:26.506Z"},{"version":"2023.2.0b8","stream":"BETA","releaseDate":"2023-09-07T00:06:06.619Z"},{"version":"2023.3.0a4","stream":"ALPHA","releaseDate":"2023-09-06T23:09:51.761Z"},{"version":"2023.1.12f1","stream":"TECH","releaseDate":"2023-09-05T13:19:07.6Z"},{"version":"2022.3.9f1","stream":"LTS","releaseDate":"2023-09-05T11:20:42.552Z"},{"version":"2023.3.0a3","stream":"ALPHA","releaseDate":"2023-08-29T23:57:28.456Z"},{"version":"2023.1.11f1","stream":"TECH","releaseDate":"2023-08-29T23:34:23.251Z"},{"version":"2023.2.0b7","stream":"BETA","releaseDate":"2023-08-29T22:05:40.255Z"},{"version":"2021.3.30f1","stream":"LTS","releaseDate":"2023-08-29T22:00:32.916Z"},{"version":"2023.2.0b6","stream":"BETA","releaseDate":"2023-08-23T16:37:08.157Z"},{"version":"2022.3.8f1","stream":"LTS","releaseDate":"2023-08-22T16:08:57.69Z"},{"version":"2023.1.10f1","stream":"TECH","releaseDate":"2023-08-22T09:04:56.856Z"},{"version":"2023.2.0b5","stream":"BETA","releaseDate":"2023-08-15T19:46:13.961Z"},{"version":"2023.1.9f1","stream":"TECH","releaseDate":"2023-08-15T08:51:07.431Z"},{"version":"2023.2.0b4","stream":"BETA","releaseDate":"2023-08-10T16:28:52.954Z"},{"version":"2023.1.8f1","stream":"TECH","releaseDate":"2023-08-08T10:46:36.347Z"},{"version":"2022.3.7f1","stream":"LTS","releaseDate":"2023-08-08T09:39:39.25Z"},{"version":"2023.2.0b3","stream":"BETA","releaseDate":"2023-08-01T21:20:07.98Z"},{"version":"2023.1.7f1","stream":"TECH","releaseDate":"2023-08-01T11:52:30.688Z"},{"version":"2022.3.6f1","stream":"LTS","releaseDate":"2023-07-31T18:44:28.313Z"},{"version":"2023.2.0b2","stream":"BETA","releaseDate":"2023-07-26T15:36:17.09Z"},{"version":"2023.1.6f1","stream":"TECH","releaseDate":"2023-07-25T14:07:19.679Z"},{"version":"2021.3.29f1","stream":"LTS","releaseDate":"2023-07-25T12:13:45.721Z"},{"version":"2023.2.0b1","stream":"BETA","releaseDate":"2023-07-19T17:48:18.078Z"},{"version":"2023.1.5f1","stream":"TECH","releaseDate":"2023-07-18T09:47:39.883Z"},{"version":"2022.3.5f1","stream":"LTS","releaseDate":"2023-07-13T16:12:49.118Z"},{"version":"2023.1.4f1","stream":"TECH","releaseDate":"2023-07-13T09:22:35.284Z"},{"version":"2023.2.0a22","stream":"ALPHA","releaseDate":"2023-07-10T10:49:24.525Z"},{"version":"2023.1.3f1","stream":"TECH","releaseDate":"2023-07-05T10:38:33.783Z"},{"version":"2021.3.28f1","stream":"LTS","releaseDate":"2023-07-04T19:41:02.205Z"},{"version":"2023.1.2f1","stream":"TECH","releaseDate":"2023-06-26T17:35:53.289Z"},{"version":"2022.3.4f1","stream":"LTS","releaseDate":"2023-06-26T16:47:18.705Z"},{"version":"2023.2.0a20","stream":"ALPHA","releaseDate":"2023-06-21T19:58:23.589Z"},{"version":"2022.3.3f1","stream":"LTS","releaseDate":"2023-06-21T15:21:19.031Z"},{"version":"2023.1.1f1","stream":"TECH","releaseDate":"2023-06-21T14:44:26.694Z"},{"version":"2023.2.0a19","stream":"ALPHA","releaseDate":"2023-06-13T17:56:46.902Z"},{"version":"2022.3.2f1","stream":"LTS","releaseDate":"2023-06-13T17:35:17.032Z"},{"version":"2023.1.0f1","stream":"TECH","releaseDate":"2023-06-12T20:09:17.94Z"},{"version":"2021.3.27f1","stream":"LTS","releaseDate":"2023-06-07T16:35:21.242Z"},{"version":"2023.2.0a18","stream":"ALPHA","releaseDate":"2023-06-07T15:05:43.861Z"},{"version":"2023.1.0b20","stream":"BETA","releaseDate":"2023-06-07T14:07:58.105Z"},{"version":"2022.3.1f1","stream":"LTS","releaseDate":"2023-06-07T11:44:18.643Z"},{"version":"2023.1.0b19","stream":"BETA","releaseDate":"2023-05-31T21:22:40.716Z"},{"version":"2023.2.0a17","stream":"ALPHA","releaseDate":"2023-05-31T19:36:57.585Z"},{"version":"2022.3.0f1","stream":"LTS","releaseDate":"2023-05-30T10:40:13.858Z"},{"version":"2021.3.26f1","stream":"LTS","releaseDate":"2023-05-25T11:47:02.15Z"},{"version":"2023.2.0a16","stream":"ALPHA","releaseDate":"2023-05-24T20:32:01.993Z"},{"version":"2023.1.0b18","stream":"BETA","releaseDate":"2023-05-24T14:12:55.453Z"},{"version":"2022.2.21f1","stream":"TECH","releaseDate":"2023-05-24T11:15:23.985Z"},{"version":"2022.2.20f1","stream":"TECH","releaseDate":"2023-05-18T09:58:25.774Z"},{"version":"2023.2.0a15","stream":"ALPHA","releaseDate":"2023-05-17T20:05:43.215Z"},{"version":"2020.3.48f1","stream":"LTS","releaseDate":"2023-05-17T17:23:52.784Z"},{"version":"2023.1.0b17","stream":"BETA","releaseDate":"2023-05-17T16:32:57.091Z"},{"version":"2021.3.25f1","stream":"LTS","releaseDate":"2023-05-11T13:55:39.057Z"},{"version":"2022.2.19f1","stream":"TECH","releaseDate":"2023-05-11T12:02:51.939Z"},{"version":"2023.1.0b16","stream":"BETA","releaseDate":"2023-05-11T01:23:47.798Z"},{"version":"2023.2.0a14","stream":"ALPHA","releaseDate":"2023-05-10T19:50:11.444Z"},{"version":"2023.1.0b15","stream":"BETA","releaseDate":"2023-05-04T15:09:21.872Z"},{"version":"2022.2.18f1","stream":"TECH","releaseDate":"2023-05-04T14:54:59.951Z"},{"version":"2023.2.0a13","stream":"ALPHA","releaseDate":"2023-05-03T19:08:00.761Z"},{"version":"2022.2.17f1","stream":"TECH","releaseDate":"2023-04-27T17:55:43.297Z"},{"version":"2021.3.24f1","stream":"LTS","releaseDate":"2023-04-27T17:16:27.561Z"},{"version":"2023.2.0a12","stream":"ALPHA","releaseDate":"2023-04-27T14:39:10.774Z"},{"version":"2023.1.0b14","stream":"BETA","releaseDate":"2023-04-26T17:38:33.828Z"},{"version":"2023.2.0a11","stream":"ALPHA","releaseDate":"2023-04-19T23:11:25.842Z"},{"version":"2023.1.0b13","stream":"BETA","releaseDate":"2023-04-19T15:38:30.438Z"},{"version":"2022.2.16f1","stream":"TECH","releaseDate":"2023-04-19T14:00:29.791Z"},{"version":"2021.3.23f1","stream":"LTS","releaseDate":"2023-04-14T03:05:53.411Z"},{"version":"2022.2.15f1","stream":"TECH","releaseDate":"2023-04-13T13:56:06.949Z"},{"version":"2023.2.0a10","stream":"ALPHA","releaseDate":"2023-04-12T17:57:27.395Z"},{"version":"2023.1.0b12","stream":"BETA","releaseDate":"2023-04-12T16:58:27.175Z"},{"version":"2022.2.14f1","stream":"TECH","releaseDate":"2023-04-05T22:20:20.9Z"},{"version":"2023.2.0a9","stream":"ALPHA","releaseDate":"2023-04-05T17:17:10.383Z"},{"version":"2020.3.47f1","stream":"LTS","releaseDate":"2023-04-05T16:12:43.414Z"},{"version":"2023.1.0b11","stream":"BETA","releaseDate":"2023-04-04T21:58:08.41Z"},{"version":"2022.2.13f1","stream":"TECH","releaseDate":"2023-03-31T14:48:28.306Z"},{"version":"2021.3.22f1","stream":"LTS","releaseDate":"2023-03-29T20:44:06.131Z"},{"version":"2023.1.0b10","stream":"BETA","releaseDate":"2023-03-29T19:31:31.427Z"},{"version":"2023.2.0a8","stream":"ALPHA","releaseDate":"2023-03-29T17:45:36.718Z"},{"version":"2023.2.0a7","stream":"ALPHA","releaseDate":"2023-03-22T21:21:49.277Z"},{"version":"2022.2.12f1","stream":"TECH","releaseDate":"2023-03-22T19:38:11.702Z"},{"version":"2023.1.0b9","stream":"BETA","releaseDate":"2023-03-22T17:34:30.593Z"},{"version":"2023.2.0a6","stream":"ALPHA","releaseDate":"2023-03-15T17:05:39.94Z"},{"version":"2023.1.0b8","stream":"BETA","releaseDate":"2023-03-15T15:20:07.049Z"},{"version":"2021.3.21f1","stream":"LTS","releaseDate":"2023-03-15T03:07:29.397Z"},{"version":"2022.2.11f1","stream":"TECH","releaseDate":"2023-03-15T02:33:37.439Z"},{"version":"2022.2.10f1","stream":"TECH","releaseDate":"2023-03-09T01:37:14.186Z"},{"version":"2020.3.46f1","stream":"LTS","releaseDate":"2023-03-08T16:13:10.801Z"},{"version":"2023.1.0b7","stream":"BETA","releaseDate":"2023-03-07T17:21:08.118Z"},{"version":"2022.2.9f1","stream":"TECH","releaseDate":"2023-03-03T01:54:20.162Z"},{"version":"2021.3.20f1","stream":"LTS","releaseDate":"2023-03-02T23:34:21.478Z"},{"version":"2023.1.0b6","stream":"BETA","releaseDate":"2023-03-02T17:05:36.697Z"},{"version":"2022.2.8f1","stream":"TECH","releaseDate":"2023-02-23T15:21:52.581Z"},{"version":"2023.1.0b5","stream":"BETA","releaseDate":"2023-02-22T14:43:31.652Z"},{"version":"2021.3.19f1","stream":"LTS","releaseDate":"2023-02-17T15:24:45.325Z"},{"version":"2023.1.0b4","stream":"BETA","releaseDate":"2023-02-16T16:12:27.289Z"},{"version":"2022.2.7f1","stream":"TECH","releaseDate":"2023-02-15T20:59:18.694Z"},{"version":"2020.3.45f1","stream":"LTS","releaseDate":"2023-02-14T21:48:56.797Z"},{"version":"2022.2.6f1","stream":"TECH","releaseDate":"2023-02-10T01:46:54.429Z"},{"version":"2023.1.0b3","stream":"BETA","releaseDate":"2023-02-08T16:02:45.148Z"},{"version":"2021.3.18f1","stream":"LTS","releaseDate":"2023-02-01T20:10:11.475Z"},{"version":"2023.1.0b2","stream":"BETA","releaseDate":"2023-02-01T14:26:56.98Z"},{"version":"2022.2.5f1","stream":"TECH","releaseDate":"2023-01-31T20:58:08.206Z"},{"version":"2022.2.4f1","stream":"TECH","releaseDate":"2023-01-27T14:41:48.225Z"},{"version":"2023.1.0b1","stream":"BETA","releaseDate":"2023-01-24T16:35:43.402Z"},{"version":"2021.3.17f1","stream":"LTS","releaseDate":"2023-01-24T16:26:13.742Z"},{"version":"2022.2.3f1","stream":"TECH","releaseDate":"2023-01-23T19:50:52.175Z"},{"version":"2023.1.0a26","stream":"ALPHA","releaseDate":"2023-01-18T17:32:21.563Z"},{"version":"2020.3.44f1","stream":"LTS","releaseDate":"2023-01-18T17:25:53.109Z"},{"version":"2023.1.0a25","stream":"ALPHA","releaseDate":"2023-01-11T19:23:37.686Z"},{"version":"2022.2.2f1","stream":"TECH","releaseDate":"2023-01-10T03:21:01.425Z"},{"version":"2023.1.0a24","stream":"ALPHA","releaseDate":"2022-12-22T01:56:32.448Z"},{"version":"2020.3.43f1","stream":"LTS","releaseDate":"2022-12-15T22:02:25.885Z"},{"version":"2021.3.16f1","stream":"LTS","releaseDate":"2022-12-15T16:05:52.918Z"},{"version":"2023.1.0a23","stream":"ALPHA","releaseDate":"2022-12-14T18:58:53.977Z"},{"version":"2022.2.1f1","stream":"TECH","releaseDate":"2022-12-12T15:26:11.226Z"},{"version":"2023.1.0a22","stream":"ALPHA","releaseDate":"2022-12-07T21:25:31.942Z"},{"version":"2022.2.0f1","stream":"TECH","releaseDate":"2022-12-07T14:29:04.831Z"},{"version":"2022.1.24f1","stream":"TECH","releaseDate":"2022-12-06T18:33:08.73Z"},{"version":"2021.3.15f1","stream":"LTS","releaseDate":"2022-12-01T17:20:58.301Z"},{"version":"2023.1.0a21","stream":"ALPHA","releaseDate":"2022-11-30T15:35:08.652Z"},{"version":"2023.1.0a20","stream":"ALPHA","releaseDate":"2022-11-24T14:54:00.095Z"},{"version":"2022.2.0b16","stream":"BETA","releaseDate":"2022-11-18T15:21:52.75Z"},{"version":"2023.1.0a19","stream":"ALPHA","releaseDate":"2022-11-17T21:40:42.637Z"},{"version":"2021.3.14f1","stream":"LTS","releaseDate":"2022-11-17T17:28:01.68Z"},{"version":"2020.3.42f1","stream":"LTS","releaseDate":"2022-11-17T16:42:55.716Z"},{"version":"2022.1.23f1","stream":"TECH","releaseDate":"2022-11-16T11:07:08.587Z"},{"version":"2022.2.0b15","stream":"BETA","releaseDate":"2022-11-16T09:42:02.426Z"},{"version":"2023.1.0a18","stream":"ALPHA","releaseDate":"2022-11-10T15:10:57.781Z"},{"version":"2022.1.22f1","stream":"TECH","releaseDate":"2022-11-09T12:42:48.452Z"},{"version":"2022.2.0b14","stream":"BETA","releaseDate":"2022-11-07T14:57:36.808Z"},{"version":"2021.3.13f1","stream":"LTS","releaseDate":"2022-11-04T16:42:23.168Z"},{"version":"2023.1.0a17","stream":"ALPHA","releaseDate":"2022-11-04T15:52:07.007Z"},{"version":"2023.1.0a16","stream":"ALPHA","releaseDate":"2022-10-27T15:51:25.673Z"},{"version":"2022.1.21f1","stream":"TECH","releaseDate":"2022-10-27T14:14:42.051Z"},{"version":"2022.2.0b13","stream":"BETA","releaseDate":"2022-10-26T20:13:31.627Z"},{"version":"2021.3.12f1","stream":"LTS","releaseDate":"2022-10-25T15:16:10.951Z"},{"version":"2023.1.0a15","stream":"ALPHA","releaseDate":"2022-10-21T15:12:32.32Z"},{"version":"2020.3.41f1","stream":"LTS","releaseDate":"2022-10-21T14:22:52.563Z"},{"version":"2022.2.0b12","stream":"BETA","releaseDate":"2022-10-20T15:21:30.949Z"},{"version":"2022.2.0b11","stream":"BETA","releaseDate":"2022-10-17T19:47:44.246Z"},{"version":"2023.1.0a14","stream":"ALPHA","releaseDate":"2022-10-13T19:56:48.359Z"},{"version":"2022.1.20f1","stream":"TECH","releaseDate":"2022-10-12T11:42:58.624Z"},{"version":"2023.1.0a13","stream":"ALPHA","releaseDate":"2022-10-06T19:12:22.623Z"},{"version":"2022.2.0b10","stream":"BETA","releaseDate":"2022-10-06T15:22:41.471Z"},{"version":"2022.1.19f1","stream":"TECH","releaseDate":"2022-10-05T12:57:27.655Z"},{"version":"2022.1.18f1","stream":"TECH","releaseDate":"2022-09-29T14:37:44.585Z"},{"version":"2021.3.11f1","stream":"LTS","releaseDate":"2022-09-29T10:18:44.505Z"},{"version":"2022.2.0b9","stream":"BETA","releaseDate":"2022-09-29T03:03:40.791Z"},{"version":"2023.1.0a12","stream":"ALPHA","releaseDate":"2022-09-28T19:55:37.092Z"},{"version":"2020.3.40f1","stream":"LTS","releaseDate":"2022-09-27T10:08:51.488Z"},{"version":"2023.1.0a11","stream":"ALPHA","releaseDate":"2022-09-21T14:43:10.283Z"},{"version":"2022.1.17f1","stream":"TECH","releaseDate":"2022-09-21T11:47:30.136Z"},{"version":"2021.3.10f1","stream":"LTS","releaseDate":"2022-09-16T15:49:10.593Z"},{"version":"2020.3.39f1","stream":"LTS","releaseDate":"2022-09-14T21:53:29.605Z"},{"version":"2023.1.0a10","stream":"ALPHA","releaseDate":"2022-09-12T18:11:46.938Z"},{"version":"2022.2.0b8","stream":"BETA","releaseDate":"2022-09-09T16:13:00.347Z"},{"version":"2022.1.16f1","stream":"TECH","releaseDate":"2022-09-08T13:08:35.083Z"},{"version":"2023.1.0a9","stream":"ALPHA","releaseDate":"2022-09-06T18:57:38.971Z"},{"version":"2021.3.9f1","stream":"LTS","releaseDate":"2022-09-01T16:32:11.579Z"},{"version":"2022.2.0b7","stream":"BETA","releaseDate":"2022-09-01T14:23:07.207Z"},{"version":"2022.1.15f1","stream":"TECH","releaseDate":"2022-09-01T10:40:40.395Z"},{"version":"2022.2.0b6","stream":"BETA","releaseDate":"2022-08-25T22:40:10.31Z"},{"version":"2022.2.0b5","stream":"BETA","releaseDate":"2022-08-22T13:46:29.274Z"},{"version":"2022.1.14f1","stream":"TECH","releaseDate":"2022-08-22T08:56:08.045Z"},{"version":"2023.1.0a6","stream":"ALPHA","releaseDate":"2022-08-18T16:45:55.03Z"},{"version":"2020.3.38f1","stream":"LTS","releaseDate":"2022-08-17T13:37:37.983Z"},{"version":"2023.1.0a5","stream":"ALPHA","releaseDate":"2022-08-11T16:35:17.219Z"},{"version":"2022.1.13f1","stream":"TECH","releaseDate":"2022-08-11T07:43:08.279Z"},{"version":"2021.3.8f1","stream":"LTS","releaseDate":"2022-08-08T15:26:36.929Z"},{"version":"2022.1.12f1","stream":"TECH","releaseDate":"2022-08-05T10:30:50.92Z"},{"version":"2022.2.0b4","stream":"BETA","releaseDate":"2022-08-05T02:14:17.717Z"},{"version":"2022.2.0b3","stream":"BETA","releaseDate":"2022-07-28T17:18:44.591Z"},{"version":"2021.3.7f1","stream":"LTS","releaseDate":"2022-07-28T09:50:46.767Z"},{"version":"2022.1.11f1","stream":"TECH","releaseDate":"2022-07-27T12:20:14.487Z"},{"version":"2023.1.0a4","stream":"ALPHA","releaseDate":"2022-07-26T16:55:38.559Z"},{"version":"2022.2.0b2","stream":"BETA","releaseDate":"2022-07-22T13:54:37.023Z"},{"version":"2020.3.37f1","stream":"LTS","releaseDate":"2022-07-21T09:53:36.224Z"},{"version":"2022.1.10f1","stream":"TECH","releaseDate":"2022-07-20T11:35:58.889Z"},{"version":"2022.1.9f1","stream":"TECH","releaseDate":"2022-07-14T11:39:28.809Z"},{"version":"2022.2.0b1","stream":"BETA","releaseDate":"2022-07-12T23:24:29.908Z"},{"version":"2021.3.6f1","stream":"LTS","releaseDate":"2022-07-08T09:48:54.711Z"},{"version":"2022.1.8f1","stream":"TECH","releaseDate":"2022-07-07T15:05:53.642Z"},{"version":"2022.2.0a18","stream":"ALPHA","releaseDate":"2022-07-04T16:35:28.141Z"},{"version":"2022.1.7f1","stream":"TECH","releaseDate":"2022-06-29T12:39:55.587Z"},{"version":"2022.1.6f1","stream":"TECH","releaseDate":"2022-06-23T11:07:14.856Z"},{"version":"2021.3.5f1","stream":"LTS","releaseDate":"2022-06-22T17:32:31.147Z"},{"version":"2019.4.40f1","stream":"LTS","releaseDate":"2022-06-16T20:44:08.743Z"},{"version":"2022.2.0a17","stream":"ALPHA","releaseDate":"2022-06-16T19:20:11.108Z"},{"version":"2020.3.36f1","stream":"LTS","releaseDate":"2022-06-16T15:04:11.655Z"},{"version":"2022.1.5f1","stream":"TECH","releaseDate":"2022-06-15T16:47:55.461Z"},{"version":"2022.2.0a16","stream":"ALPHA","releaseDate":"2022-06-08T20:20:40.379Z"},{"version":"2022.1.4f1","stream":"TECH","releaseDate":"2022-06-08T15:53:22.151Z"},{"version":"2022.1.3f1","stream":"TECH","releaseDate":"2022-05-31T16:42:45.974Z"},{"version":"2021.3.4f1","stream":"LTS","releaseDate":"2022-05-31T15:14:15.559Z"},{"version":"2020.3.35f1","stream":"LTS","releaseDate":"2022-05-26T23:30:47.962Z"},{"version":"2022.1.2f1","stream":"TECH","releaseDate":"2022-05-25T14:32:41.967Z"},{"version":"2021.3.3f1","stream":"LTS","releaseDate":"2022-05-19T10:01:53.956Z"},{"version":"2022.1.1f1","stream":"TECH","releaseDate":"2022-05-18T20:43:29.778Z"},{"version":"2022.2.0a13","stream":"ALPHA","releaseDate":"2022-05-12T22:47:12.2Z"},{"version":"2019.4.39f1","stream":"LTS","releaseDate":"2022-05-11T22:31:15.588Z"},{"version":"2022.1.0f1","stream":"TECH","releaseDate":"2022-05-09T16:53:20.722Z"},{"version":"2022.2.0a12","stream":"ALPHA","releaseDate":"2022-05-05T12:15:24.277Z"},{"version":"2021.3.2f1","stream":"LTS","releaseDate":"2022-05-05T10:42:14.717Z"},{"version":"2020.3.34f1","stream":"LTS","releaseDate":"2022-05-04T14:33:40.994Z"},{"version":"2022.2.0a11","stream":"ALPHA","releaseDate":"2022-04-25T14:28:41.066Z"},{"version":"2021.3.1f1","stream":"LTS","releaseDate":"2022-04-21T18:19:43.403Z"},{"version":"2022.2.0a10","stream":"ALPHA","releaseDate":"2022-04-14T13:22:59.494Z"},{"version":"2019.4.38f1","stream":"LTS","releaseDate":"2022-04-13T15:24:10.41Z"},{"version":"2022.1.0b16","stream":"BETA","releaseDate":"2022-04-12T18:11:34.766Z"},{"version":"2021.3.0f1","stream":"LTS","releaseDate":"2022-04-11T18:46:28.654Z"},{"version":"2020.3.33f1","stream":"LTS","releaseDate":"2022-04-07T13:58:00.788Z"},{"version":"2022.1.0b15","stream":"BETA","releaseDate":"2022-04-07T07:56:08.228Z"},{"version":"2021.2.19f1","stream":"TECH","releaseDate":"2022-04-05T17:15:08.016Z"},{"version":"2022.2.0a9","stream":"ALPHA","releaseDate":"2022-04-01T10:23:18.714Z"},{"version":"2021.2.18f1","stream":"TECH","releaseDate":"2022-04-01T07:28:41.049Z"},{"version":"2022.1.0b14","stream":"BETA","releaseDate":"2022-03-30T09:56:12.725Z"},{"version":"2021.2.17f1","stream":"TECH","releaseDate":"2022-03-24T21:31:28.98Z"},{"version":"2020.3.32f1","stream":"LTS","releaseDate":"2022-03-23T15:39:23.912Z"},{"version":"2019.4.37f1","stream":"LTS","releaseDate":"2022-03-22T18:47:13.846Z"},{"version":"2022.1.0b13","stream":"BETA","releaseDate":"2022-03-22T17:02:39.21Z"},{"version":"2020.3.31f1","stream":"LTS","releaseDate":"2022-03-17T18:06:28.222Z"},{"version":"2021.2.16f1","stream":"TECH","releaseDate":"2022-03-17T17:27:16.428Z"},{"version":"2022.1.0b12","stream":"BETA","releaseDate":"2022-03-17T15:03:20.498Z"},{"version":"2021.2.15f1","stream":"TECH","releaseDate":"2022-03-11T17:03:49.668Z"},{"version":"2022.1.0b11","stream":"BETA","releaseDate":"2022-03-09T07:19:01.616Z"},{"version":"2021.2.14f1","stream":"TECH","releaseDate":"2022-03-03T17:20:56.922Z"},{"version":"2022.1.0b10","stream":"BETA","releaseDate":"2022-03-02T12:36:18.043Z"},{"version":"2020.3.30f1","stream":"LTS","releaseDate":"2022-02-24T17:26:14.613Z"},{"version":"2021.2.13f1","stream":"TECH","releaseDate":"2022-02-23T19:42:33.34Z"},{"version":"2022.1.0b9","stream":"BETA","releaseDate":"2022-02-23T13:13:56.537Z"},{"version":"2021.2.12f1","stream":"TECH","releaseDate":"2022-02-17T20:43:34.621Z"},{"version":"2019.4.36f1","stream":"LTS","releaseDate":"2022-02-17T16:41:01.394Z"},{"version":"2020.3.29f1","stream":"LTS","releaseDate":"2022-02-17T15:59:07.521Z"},{"version":"2022.1.0b8","stream":"BETA","releaseDate":"2022-02-16T11:35:02.222Z"},{"version":"2021.2.11f1","stream":"TECH","releaseDate":"2022-02-10T17:24:35.612Z"},{"version":"2020.3.28f1","stream":"LTS","releaseDate":"2022-02-09T21:48:58.684Z"},{"version":"2022.1.0b7","stream":"BETA","releaseDate":"2022-02-08T11:39:17.916Z"},{"version":"2022.1.0b6","stream":"BETA","releaseDate":"2022-02-02T08:30:32.412Z"},{"version":"2021.2.10f1","stream":"TECH","releaseDate":"2022-02-01T22:07:17.864Z"},{"version":"2020.3.27f1","stream":"LTS","releaseDate":"2022-01-31T23:06:41.649Z"},{"version":"2019.4.35f1","stream":"LTS","releaseDate":"2022-01-28T14:26:18.891Z"},{"version":"2022.1.0b5","stream":"BETA","releaseDate":"2022-01-27T17:44:54.531Z"},{"version":"2021.2.9f1","stream":"TECH","releaseDate":"2022-01-27T17:09:54.141Z"},{"version":"2022.1.0b4","stream":"BETA","releaseDate":"2022-01-19T11:50:18.82Z"},{"version":"2020.3.26f1","stream":"LTS","releaseDate":"2022-01-13T20:29:30.146Z"},{"version":"2021.2.8f1","stream":"TECH","releaseDate":"2022-01-13T16:36:04.553Z"},{"version":"2022.1.0b3","stream":"BETA","releaseDate":"2022-01-12T12:14:48.421Z"},{"version":"2020.3.25f1","stream":"LTS","releaseDate":"2021-12-16T18:21:47.61Z"},{"version":"2021.2.7f1","stream":"TECH","releaseDate":"2021-12-16T17:44:39.837Z"},{"version":"2019.4.34f1","stream":"LTS","releaseDate":"2021-12-15T17:52:49.421Z"},{"version":"2022.1.0b2","stream":"BETA","releaseDate":"2021-12-14T18:43:17.216Z"},{"version":"2021.2.6f1","stream":"TECH","releaseDate":"2021-12-10T16:38:19.632Z"},{"version":"2022.1.0b1","stream":"BETA","releaseDate":"2021-12-08T19:49:54.8Z"},{"version":"2020.3.24f1","stream":"LTS","releaseDate":"2021-12-02T20:30:57.111Z"},{"version":"2021.2.5f1","stream":"TECH","releaseDate":"2021-12-01T16:54:28.059Z"},{"version":"2022.1.0a16","stream":"ALPHA","releaseDate":"2021-11-29T12:23:09.813Z"},{"version":"2019.4.33f1","stream":"LTS","releaseDate":"2021-11-25T18:53:15.439Z"},{"version":"2021.2.4f1","stream":"TECH","releaseDate":"2021-11-25T13:45:23.549Z"},{"version":"2020.3.23f1","stream":"LTS","releaseDate":"2021-11-19T20:08:31.142Z"},{"version":"2022.1.0a15","stream":"ALPHA","releaseDate":"2021-11-18T12:23:33.305Z"},{"version":"2021.2.3f1","stream":"TECH","releaseDate":"2021-11-18T11:49:58.417Z"},{"version":"2021.2.2f1","stream":"TECH","releaseDate":"2021-11-11T11:54:38.289Z"},{"version":"2020.3.22f1","stream":"LTS","releaseDate":"2021-11-05T19:35:33.664Z"},{"version":"2021.1.28f1","stream":"TECH","releaseDate":"2021-11-04T19:43:00.612Z"},{"version":"2021.2.1f1","stream":"TECH","releaseDate":"2021-11-04T12:14:00.179Z"},{"version":"2019.4.32f1","stream":"LTS","releaseDate":"2021-10-28T16:49:13.453Z"},{"version":"2022.1.0a13","stream":"ALPHA","releaseDate":"2021-10-28T14:30:14.459Z"},{"version":"2021.1.27f1","stream":"TECH","releaseDate":"2021-10-25T19:24:00.396Z"},{"version":"2021.2.0f1","stream":"TECH","releaseDate":"2021-10-25T14:52:13.034Z"},{"version":"2020.3.21f1","stream":"LTS","releaseDate":"2021-10-21T16:33:29.335Z"},{"version":"2021.1.26f1","stream":"TECH","releaseDate":"2021-10-20T15:42:50.491Z"},{"version":"2021.1.25f1","stream":"TECH","releaseDate":"2021-10-14T21:35:29.388Z"},{"version":"2022.1.0a12","stream":"ALPHA","releaseDate":"2021-10-13T19:34:46.255Z"},{"version":"2021.2.0b16","stream":"BETA","releaseDate":"2021-10-12T16:42:06.071Z"},{"version":"2020.3.20f1","stream":"LTS","releaseDate":"2021-10-08T16:38:35.542Z"},{"version":"2021.1.24f1","stream":"TECH","releaseDate":"2021-10-06T18:29:11.434Z"},{"version":"2022.1.0a11","stream":"ALPHA","releaseDate":"2021-10-06T15:14:18.114Z"},{"version":"2021.2.0b15","stream":"BETA","releaseDate":"2021-10-06T09:13:13.691Z"},{"version":"2022.1.0a10","stream":"ALPHA","releaseDate":"2021-10-01T19:35:39.33Z"},{"version":"2021.2.0b14","stream":"BETA","releaseDate":"2021-10-01T11:27:08.42Z"},{"version":"2021.1.23f1","stream":"TECH","releaseDate":"2021-09-30T17:01:27.178Z"},{"version":"2019.4.31f1","stream":"LTS","releaseDate":"2021-09-30T16:11:12.7Z"},{"version":"2022.1.0a9","stream":"ALPHA","releaseDate":"2021-09-23T16:24:52.925Z"},{"version":"2020.3.19f1","stream":"LTS","releaseDate":"2021-09-22T21:58:37.423Z"},{"version":"2021.2.0b13","stream":"BETA","releaseDate":"2021-09-22T13:58:46.571Z"},{"version":"2021.1.22f1","stream":"TECH","releaseDate":"2021-09-21T00:25:04.557Z"},{"version":"2021.2.0b12","stream":"BETA","releaseDate":"2021-09-16T11:41:11.337Z"},{"version":"2022.1.0a8","stream":"ALPHA","releaseDate":"2021-09-15T14:02:16.501Z"},{"version":"2021.1.21f1","stream":"TECH","releaseDate":"2021-09-14T21:44:40.4Z"},{"version":"2020.3.18f1","stream":"LTS","releaseDate":"2021-09-09T09:35:05.255Z"},{"version":"2021.1.20f1","stream":"TECH","releaseDate":"2021-09-08T13:15:22.713Z"},{"version":"2021.2.0b11","stream":"BETA","releaseDate":"2021-09-07T11:45:52.414Z"},{"version":"2022.1.0a7","stream":"ALPHA","releaseDate":"2021-09-06T11:16:46.35Z"},{"version":"2021.2.0b10","stream":"BETA","releaseDate":"2021-09-04T01:54:50.158Z"},{"version":"2019.4.30f1","stream":"LTS","releaseDate":"2021-09-03T22:17:29.374Z"},{"version":"2021.1.19f1","stream":"TECH","releaseDate":"2021-09-01T10:51:04.953Z"},{"version":"2020.3.17f1","stream":"LTS","releaseDate":"2021-08-25T18:28:14.223Z"},{"version":"2021.1.18f1","stream":"TECH","releaseDate":"2021-08-25T17:26:42.238Z"},{"version":"2021.2.0b9","stream":"BETA","releaseDate":"2021-08-25T11:31:02.295Z"},{"version":"2021.2.0b8","stream":"BETA","releaseDate":"2021-08-19T09:59:27.465Z"},{"version":"2021.1.17f1","stream":"TECH","releaseDate":"2021-08-13T18:37:59.39Z"},{"version":"2020.3.16f1","stream":"LTS","releaseDate":"2021-08-12T15:55:22.688Z"},{"version":"2021.2.0b7","stream":"BETA","releaseDate":"2021-08-10T10:33:56.915Z"},{"version":"2021.2.0b6","stream":"BETA","releaseDate":"2021-08-04T13:24:08.916Z"},{"version":"2021.2.0b5","stream":"BETA","releaseDate":"2021-08-02T15:15:23.162Z"},{"version":"2021.1.16f1","stream":"TECH","releaseDate":"2021-08-02T14:27:00.489Z"},{"version":"2020.3.15f2","stream":"LTS","releaseDate":"2021-07-30T16:23:30.239Z"},{"version":"2019.4.29f1","stream":"LTS","releaseDate":"2021-07-30T15:19:33.152Z"},{"version":"2021.2.0b4","stream":"BETA","releaseDate":"2021-07-15T10:53:43.739Z"},{"version":"2021.1.15f1","stream":"TECH","releaseDate":"2021-07-14T11:13:58.182Z"},{"version":"2020.3.14f1","stream":"LTS","releaseDate":"2021-07-13T16:58:10.491Z"},{"version":"2021.2.0b3","stream":"BETA","releaseDate":"2021-07-08T10:47:42.2Z"},{"version":"2021.1.14f1","stream":"TECH","releaseDate":"2021-07-07T01:08:43.836Z"},{"version":"2021.2.0b2","stream":"BETA","releaseDate":"2021-07-02T13:15:04.412Z"},{"version":"2020.3.13f1","stream":"LTS","releaseDate":"2021-06-30T18:40:12.88Z"},{"version":"2021.1.13f1","stream":"TECH","releaseDate":"2021-06-30T05:59:29.187Z"},{"version":"2021.2.0b1","stream":"BETA","releaseDate":"2021-06-18T19:27:35.539Z"},{"version":"2018.4.36f1","stream":"LTS","releaseDate":"2021-06-17T16:13:54.008Z"},{"version":"2021.1.12f1","stream":"TECH","releaseDate":"2021-06-17T15:00:50.572Z"},{"version":"2020.3.12f1","stream":"LTS","releaseDate":"2021-06-15T18:58:12.277Z"},{"version":"2021.2.0a21","stream":"ALPHA","releaseDate":"2021-06-15T16:37:53.038Z"},{"version":"2021.1.11f1","stream":"TECH","releaseDate":"2021-06-10T10:04:24.296Z"},{"version":"2021.2.0a20","stream":"ALPHA","releaseDate":"2021-06-09T17:17:01.426Z"},{"version":"2019.4.28f1","stream":"LTS","releaseDate":"2021-06-03T17:50:56.439Z"},{"version":"2021.1.10f1","stream":"TECH","releaseDate":"2021-06-03T16:53:09.276Z"},{"version":"2021.2.0a19","stream":"ALPHA","releaseDate":"2021-06-03T15:19:41.987Z"},{"version":"2020.3.11f1","stream":"LTS","releaseDate":"2021-06-01T17:44:03.061Z"},{"version":"2021.1.9f1","stream":"TECH","releaseDate":"2021-05-28T12:13:35.97Z"},{"version":"2020.3.10f1","stream":"LTS","releaseDate":"2021-05-26T18:08:15.246Z"},{"version":"2019.4.27f1","stream":"LTS","releaseDate":"2021-05-20T13:45:43.095Z"},{"version":"2020.3.9f1","stream":"LTS","releaseDate":"2021-05-19T17:45:38.084Z"},{"version":"2021.1.7f1","stream":"TECH","releaseDate":"2021-05-13T14:00:02.535Z"},{"version":"2020.3.8f1","stream":"LTS","releaseDate":"2021-05-12T20:50:34.775Z"},{"version":"2021.2.0a17","stream":"ALPHA","releaseDate":"2021-05-12T18:15:13.437Z"},{"version":"2018.4.35f1","stream":"LTS","releaseDate":"2021-05-12T15:16:04.996Z"},{"version":"2021.1.6f1","stream":"TECH","releaseDate":"2021-05-06T06:42:44.386Z"},{"version":"2019.4.26f1","stream":"LTS","releaseDate":"2021-05-05T18:28:43.028Z"},{"version":"2020.3.7f1","stream":"LTS","releaseDate":"2021-05-05T17:05:58.368Z"},{"version":"2021.2.0a16","stream":"ALPHA","releaseDate":"2021-05-05T15:00:27.234Z"},{"version":"2020.3.6f1","stream":"LTS","releaseDate":"2021-04-28T18:33:45.041Z"},{"version":"2021.2.0a15","stream":"ALPHA","releaseDate":"2021-04-28T16:51:06.522Z"},{"version":"2021.1.5f1","stream":"TECH","releaseDate":"2021-04-28T11:57:22.314Z"},{"version":"2019.4.25f1","stream":"LTS","releaseDate":"2021-04-22T18:56:19.468Z"},{"version":"2021.1.4f1","stream":"TECH","releaseDate":"2021-04-22T08:14:16.919Z"},{"version":"2021.2.0a14","stream":"ALPHA","releaseDate":"2021-04-21T16:58:34.062Z"},{"version":"2020.3.5f1","stream":"LTS","releaseDate":"2021-04-21T15:58:44.831Z"},{"version":"2018.4.34f1","stream":"LTS","releaseDate":"2021-04-15T10:28:39.047Z"},{"version":"2021.2.0a13","stream":"ALPHA","releaseDate":"2021-04-14T16:07:25.935Z"},{"version":"2020.3.4f1","stream":"LTS","releaseDate":"2021-04-13T17:59:16.594Z"},{"version":"2021.1.3f1","stream":"TECH","releaseDate":"2021-04-13T11:23:53.38Z"},{"version":"2019.4.24f1","stream":"LTS","releaseDate":"2021-04-08T23:33:06.909Z"},{"version":"2020.3.3f1","stream":"LTS","releaseDate":"2021-04-07T16:37:40.613Z"},{"version":"2021.1.2f1","stream":"TECH","releaseDate":"2021-04-07T14:35:36.828Z"},{"version":"2021.2.0a12","stream":"ALPHA","releaseDate":"2021-04-06T16:40:54.747Z"},{"version":"2021.2.0a11","stream":"ALPHA","releaseDate":"2021-03-31T17:48:42.977Z"},{"version":"2021.1.1f1","stream":"TECH","releaseDate":"2021-03-31T14:04:08.025Z"},{"version":"2020.3.2f1","stream":"LTS","releaseDate":"2021-03-29T18:24:30.684Z"},{"version":"2021.2.0a10","stream":"ALPHA","releaseDate":"2021-03-24T20:41:29.457Z"},{"version":"2018.4.33f1","stream":"LTS","releaseDate":"2021-03-24T17:48:21.951Z"},{"version":"2019.4.23f1","stream":"LTS","releaseDate":"2021-03-24T16:44:56.561Z"},{"version":"2020.3.1f1","stream":"LTS","releaseDate":"2021-03-22T18:05:51.728Z"},{"version":"2021.1.0f1","stream":"TECH","releaseDate":"2021-03-22T11:13:57.905Z"},{"version":"2021.2.0a9","stream":"ALPHA","releaseDate":"2021-03-17T18:02:06.971Z"},{"version":"2021.1.0b12","stream":"BETA","releaseDate":"2021-03-17T11:21:39.687Z"},{"version":"2020.3.0f1","stream":"LTS","releaseDate":"2021-03-10T23:09:00.019Z"},{"version":"2021.1.0b11","stream":"BETA","releaseDate":"2021-03-10T18:19:22.091Z"},{"version":"2019.4.22f1","stream":"LTS","releaseDate":"2021-03-10T16:07:28.301Z"},{"version":"2021.2.0a8","stream":"ALPHA","releaseDate":"2021-03-09T15:39:33.338Z"},{"version":"2021.1.0b10","stream":"BETA","releaseDate":"2021-03-04T17:23:44.817Z"},{"version":"2020.2.7f1","stream":"LTS","releaseDate":"2021-03-04T16:43:17.817Z"},{"version":"2021.2.0a6","stream":"ALPHA","releaseDate":"2021-02-24T18:59:57.208Z"},{"version":"2021.1.0b8","stream":"BETA","releaseDate":"2021-02-24T17:47:25.506Z"},{"version":"2019.4.21f1","stream":"LTS","releaseDate":"2021-02-24T17:14:33.49Z"},{"version":"2020.2.6f1","stream":"LTS","releaseDate":"2021-02-24T00:10:19.496Z"},{"version":"2020.2.5f1","stream":"LTS","releaseDate":"2021-02-18T23:17:13.017Z"},{"version":"2018.4.32f1","stream":"LTS","releaseDate":"2021-02-18T12:18:22.145Z"},{"version":"2021.2.0a5","stream":"ALPHA","releaseDate":"2021-02-17T16:45:52.404Z"},{"version":"2021.1.0b7","stream":"BETA","releaseDate":"2021-02-17T15:33:40.334Z"},{"version":"2020.2.4f1","stream":"LTS","releaseDate":"2021-02-12T20:14:18.572Z"},{"version":"2019.4.20f1","stream":"LTS","releaseDate":"2021-02-10T17:06:33.684Z"},{"version":"2021.1.0b6","stream":"BETA","releaseDate":"2021-02-10T15:26:16.381Z"},{"version":"2020.2.3f1","stream":"LTS","releaseDate":"2021-02-03T20:51:44.022Z"},{"version":"2021.1.0b5","stream":"BETA","releaseDate":"2021-02-03T11:02:09.257Z"},{"version":"2019.4.19f1","stream":"LTS","releaseDate":"2021-02-01T17:49:54.726Z"},{"version":"2021.1.0b4","stream":"BETA","releaseDate":"2021-01-27T12:14:30.67Z"},{"version":"2018.4.31f1","stream":"LTS","releaseDate":"2021-01-22T14:08:18.401Z"},{"version":"2020.2.2f1","stream":"LTS","releaseDate":"2021-01-21T20:41:55.747Z"},{"version":"2021.1.0b3","stream":"BETA","releaseDate":"2021-01-20T16:49:58.086Z"},{"version":"2021.1.0b2","stream":"BETA","releaseDate":"2021-01-13T15:48:52.769Z"},{"version":"2019.4.18f1","stream":"LTS","releaseDate":"2021-01-13T15:13:41.161Z"},{"version":"2020.2.1f1","stream":"LTS","releaseDate":"2020-12-23T17:32:56.794Z"},{"version":"2021.1.0b1","stream":"BETA","releaseDate":"2020-12-23T15:53:59.255Z"},{"version":"2019.4.17f1","stream":"LTS","releaseDate":"2020-12-22T15:05:02.037Z"},{"version":"2020.2.0f1","stream":"LTS","releaseDate":"2020-12-14T20:24:28.653Z"},{"version":"2021.1.0a9","stream":"ALPHA","releaseDate":"2020-12-11T09:34:06.14Z"},{"version":"2020.1.17f1","stream":"LTS","releaseDate":"2020-12-09T11:39:40.055Z"},{"version":"2020.2.0b14","stream":"BETA","releaseDate":"2020-12-02T17:45:40.026Z"},{"version":"2021.1.0a8","stream":"ALPHA","releaseDate":"2020-12-02T17:15:19.256Z"},{"version":"2019.4.16f1","stream":"LTS","releaseDate":"2020-12-02T16:12:41.344Z"},{"version":"2018.4.30f1","stream":"LTS","releaseDate":"2020-12-01T20:09:28.083Z"},{"version":"2020.1.16f1","stream":"LTS","releaseDate":"2020-12-01T19:04:30.374Z"},{"version":"2021.1.0a7","stream":"ALPHA","releaseDate":"2020-11-25T18:59:24.158Z"},{"version":"2020.2.0b13","stream":"BETA","releaseDate":"2020-11-25T17:57:21.563Z"},{"version":"2020.1.15f1","stream":"LTS","releaseDate":"2020-11-25T11:32:56.247Z"},{"version":"2020.2.0b12","stream":"BETA","releaseDate":"2020-11-19T18:01:22.432Z"},{"version":"2020.1.14f1","stream":"LTS","releaseDate":"2020-11-18T19:08:42.052Z"},{"version":"2019.4.15f1","stream":"LTS","releaseDate":"2020-11-18T18:02:15.055Z"},{"version":"2021.1.0a5","stream":"ALPHA","releaseDate":"2020-11-16T08:29:13.862Z"},{"version":"2021.1.0a6","stream":"ALPHA","releaseDate":"2020-11-12T13:53:12.828Z"},{"version":"2020.2.0b11","stream":"BETA","releaseDate":"2020-11-11T19:36:00.659Z"},{"version":"2018.4.29f1","stream":"LTS","releaseDate":"2020-11-11T10:56:28.809Z"},{"version":"2020.1.13f1","stream":"LTS","releaseDate":"2020-11-11T09:59:32.603Z"},{"version":"2019.4.14f1","stream":"LTS","releaseDate":"2020-11-05T17:37:50.176Z"},{"version":"2020.2.0b10","stream":"BETA","releaseDate":"2020-11-04T17:18:58.393Z"},{"version":"2021.1.0a4","stream":"ALPHA","releaseDate":"2020-11-04T11:36:41.327Z"},{"version":"2020.1.12f1","stream":"LTS","releaseDate":"2020-11-04T11:19:05.134Z"},{"version":"2020.2.0b9","stream":"BETA","releaseDate":"2020-10-28T16:33:57.648Z"},{"version":"2020.1.11f1","stream":"LTS","releaseDate":"2020-10-28T11:19:45.342Z"},{"version":"2020.2.0b8","stream":"BETA","releaseDate":"2020-10-22T15:53:30.161Z"},{"version":"2021.1.0a2","stream":"ALPHA","releaseDate":"2020-10-22T10:37:27.727Z"},{"version":"2019.4.13f1","stream":"LTS","releaseDate":"2020-10-21T14:49:14.4Z"},{"version":"2020.1.10f1","stream":"LTS","releaseDate":"2020-10-21T09:46:16.103Z"},{"version":"2020.2.0b7","stream":"BETA","releaseDate":"2020-10-15T20:12:00.785Z"},{"version":"2020.1.9f1","stream":"LTS","releaseDate":"2020-10-13T17:07:55.642Z"},{"version":"2020.2.0b6","stream":"BETA","releaseDate":"2020-10-08T17:11:41.822Z"},{"version":"2019.4.12f1","stream":"LTS","releaseDate":"2020-10-07T16:30:31.41Z"},{"version":"2020.1.8f1","stream":"LTS","releaseDate":"2020-10-06T10:51:55.487Z"},{"version":"2018.4.28f1","stream":"LTS","releaseDate":"2020-10-06T09:51:51.368Z"},{"version":"2020.2.0b5","stream":"BETA","releaseDate":"2020-10-01T17:28:10.446Z"},{"version":"2020.1.7f1","stream":"LTS","releaseDate":"2020-09-30T09:51:21.006Z"},{"version":"2020.2.0b4","stream":"BETA","releaseDate":"2020-09-28T15:04:05.094Z"},{"version":"2019.4.11f1","stream":"LTS","releaseDate":"2020-09-23T14:50:07.523Z"},{"version":"2020.1.6f1","stream":"LTS","releaseDate":"2020-09-16T10:37:08.418Z"},{"version":"2019.4.10f1","stream":"LTS","releaseDate":"2020-09-10T15:00:59.355Z"},{"version":"2020.1.5f1","stream":"LTS","releaseDate":"2020-09-10T12:29:36.749Z"},{"version":"2020.2.0b2","stream":"BETA","releaseDate":"2020-09-09T17:06:38.902Z"},{"version":"2018.4.27f1","stream":"LTS","releaseDate":"2020-09-09T09:04:26.626Z"},{"version":"2020.2.0b1","stream":"BETA","releaseDate":"2020-09-03T03:50:06.958Z"},{"version":"2020.1.4f1","stream":"LTS","releaseDate":"2020-08-27T13:54:15.261Z"},{"version":"2019.4.9f1","stream":"LTS","releaseDate":"2020-08-26T15:12:20.178Z"},{"version":"2020.1.3f1","stream":"LTS","releaseDate":"2020-08-21T17:25:52.43Z"},{"version":"2020.2.0a21","stream":"ALPHA","releaseDate":"2020-08-20T16:08:48.015Z"},{"version":"2019.4.8f1","stream":"LTS","releaseDate":"2020-08-12T13:18:43.927Z"},{"version":"2018.4.26f1","stream":"LTS","releaseDate":"2020-08-12T11:59:47.812Z"},{"version":"2020.1.2f1","stream":"LTS","releaseDate":"2020-08-12T11:11:53.662Z"},{"version":"2019.4.7f1","stream":"LTS","releaseDate":"2020-08-05T15:02:13.572Z"},{"version":"2020.1.1f1","stream":"LTS","releaseDate":"2020-08-05T09:04:55.163Z"},{"version":"2019.4.6f1","stream":"LTS","releaseDate":"2020-07-30T20:31:02.827Z"},{"version":"2020.2.0a19","stream":"ALPHA","releaseDate":"2020-07-28T17:12:37.126Z"},{"version":"2019.4.5f1","stream":"LTS","releaseDate":"2020-07-23T08:08:58.294Z"},{"version":"2020.1.0f1","stream":"LTS","releaseDate":"2020-07-20T10:15:38.949Z"},{"version":"2020.2.0a18","stream":"ALPHA","releaseDate":"2020-07-15T15:09:32.204Z"},{"version":"2019.4.4f1","stream":"LTS","releaseDate":"2020-07-15T14:33:21.342Z"},{"version":"2018.4.25f1","stream":"LTS","releaseDate":"2020-07-14T15:59:51.172Z"},{"version":"2020.1.0b16","stream":"BETA","releaseDate":"2020-07-14T11:16:19.736Z"},{"version":"2019.4.3f1","stream":"LTS","releaseDate":"2020-07-08T17:17:30.743Z"},{"version":"2020.1.0b15","stream":"BETA","releaseDate":"2020-07-08T13:16:36.144Z"},{"version":"2020.2.0a17","stream":"ALPHA","releaseDate":"2020-07-07T17:13:29.087Z"},{"version":"2018.4.24f1","stream":"LTS","releaseDate":"2020-07-02T12:50:59.969Z"},{"version":"2019.4.2f1","stream":"LTS","releaseDate":"2020-07-01T14:31:49.653Z"},{"version":"2020.2.0a16","stream":"ALPHA","releaseDate":"2020-06-30T17:30:06.405Z"},{"version":"2020.1.0b14","stream":"BETA","releaseDate":"2020-06-30T13:03:30.165Z"},{"version":"2019.4.1f1","stream":"LTS","releaseDate":"2020-06-18T14:26:11.25Z"},{"version":"2020.2.0a15","stream":"ALPHA","releaseDate":"2020-06-16T22:26:34.624Z"},{"version":"2020.1.0b13","stream":"BETA","releaseDate":"2020-06-16T15:13:24.163Z"},{"version":"2020.1.0b12","stream":"BETA","releaseDate":"2020-06-09T15:59:47.841Z"},{"version":"2019.4.0f1","stream":"LTS","releaseDate":"2020-06-07T16:09:39.244Z"},{"version":"2020.1.0b11","stream":"BETA","releaseDate":"2020-06-03T08:04:41.278Z"},{"version":"2020.2.0a13","stream":"ALPHA","releaseDate":"2020-06-02T18:22:41.666Z"},{"version":"2019.3.15f1","stream":"LTS","releaseDate":"2020-05-28T15:28:05.935Z"},{"version":"2020.1.0b10","stream":"BETA","releaseDate":"2020-05-27T15:18:15.761Z"},{"version":"2020.2.0a12","stream":"ALPHA","releaseDate":"2020-05-27T01:46:13.703Z"},{"version":"2020.1.0b9","stream":"BETA","releaseDate":"2020-05-18T19:30:07.616Z"},{"version":"2019.3.14f1","stream":"LTS","releaseDate":"2020-05-18T19:09:15.413Z"},{"version":"2020.2.0a11","stream":"ALPHA","releaseDate":"2020-05-18T17:28:51.358Z"},{"version":"2018.4.23f1","stream":"LTS","releaseDate":"2020-05-18T16:26:44.505Z"},{"version":"2017.4.40f1","stream":"LTS","releaseDate":"2020-05-18T15:54:47.513Z"},{"version":"2019.3.13f1","stream":"LTS","releaseDate":"2020-05-06T16:28:06.431Z"},{"version":"2020.2.0a10","stream":"ALPHA","releaseDate":"2020-05-06T14:34:37.918Z"},{"version":"2020.1.0b8","stream":"BETA","releaseDate":"2020-05-05T16:50:03.104Z"},{"version":"2019.3.12f1","stream":"LTS","releaseDate":"2020-04-29T17:04:13.318Z"},{"version":"2020.2.0a9","stream":"ALPHA","releaseDate":"2020-04-28T13:42:11.975Z"},{"version":"2020.1.0b7","stream":"BETA","releaseDate":"2020-04-28T10:12:51.135Z"},{"version":"2018.4.22f1","stream":"LTS","releaseDate":"2020-04-24T11:56:23.065Z"},{"version":"2020.1.0b6","stream":"BETA","releaseDate":"2020-04-23T21:32:23.418Z"},{"version":"2020.2.0a8","stream":"ALPHA","releaseDate":"2020-04-23T20:39:25.331Z"},{"version":"2019.3.11f1","stream":"LTS","releaseDate":"2020-04-23T20:12:30.91Z"},{"version":"2019.3.10f1","stream":"LTS","releaseDate":"2020-04-16T14:51:49.221Z"},{"version":"2020.2.0a7","stream":"ALPHA","releaseDate":"2020-04-14T14:50:07.557Z"},{"version":"2018.4.21f1","stream":"LTS","releaseDate":"2020-04-09T10:24:27.752Z"},{"version":"2020.1.0b5","stream":"BETA","releaseDate":"2020-04-09T09:02:00.178Z"},{"version":"2019.3.9f1","stream":"LTS","releaseDate":"2020-04-08T17:27:11.233Z"},{"version":"2019.3.8f1","stream":"LTS","releaseDate":"2020-04-06T13:35:43.636Z"},{"version":"2017.4.39f1","stream":"LTS","releaseDate":"2020-04-03T08:51:34.4Z"},{"version":"2020.1.0b4","stream":"BETA","releaseDate":"2020-04-01T09:27:53.068Z"},{"version":"2019.3.7f1","stream":"LTS","releaseDate":"2020-03-26T13:25:09.746Z"},{"version":"2018.4.20f1","stream":"LTS","releaseDate":"2020-03-26T12:30:57.862Z"},{"version":"2020.1.0b3","stream":"BETA","releaseDate":"2020-03-26T08:40:28.937Z"},{"version":"2017.4.38f1","stream":"LTS","releaseDate":"2020-03-20T10:06:20.615Z"},{"version":"2019.3.6f1","stream":"LTS","releaseDate":"2020-03-19T13:48:25.49Z"},{"version":"2020.1.0b2","stream":"BETA","releaseDate":"2020-03-18T11:35:10.189Z"},{"version":"2018.4.19f1","stream":"LTS","releaseDate":"2020-03-13T10:43:07.033Z"},{"version":"2019.3.5f1","stream":"LTS","releaseDate":"2020-03-12T13:37:50.368Z"},{"version":"2020.1.0b1","stream":"BETA","releaseDate":"2020-03-11T12:36:55.598Z"},{"version":"2019.3.4f1","stream":"LTS","releaseDate":"2020-03-06T10:05:37.894Z"},{"version":"2020.1.0a25","stream":"ALPHA","releaseDate":"2020-02-27T12:18:33.968Z"},{"version":"2018.4.18f1","stream":"LTS","releaseDate":"2020-02-27T11:32:09.755Z"},{"version":"2019.3.3f1","stream":"LTS","releaseDate":"2020-02-26T13:41:18.47Z"},{"version":"2020.1.0a24","stream":"ALPHA","releaseDate":"2020-02-21T10:47:26.502Z"},{"version":"2019.3.2f1","stream":"LTS","releaseDate":"2020-02-19T16:29:42.676Z"},{"version":"2017.4.37f1","stream":"LTS","releaseDate":"2020-02-18T16:24:58.609Z"},{"version":"2020.1.0a23","stream":"ALPHA","releaseDate":"2020-02-12T15:20:34.112Z"},{"version":"2019.3.1f1","stream":"LTS","releaseDate":"2020-02-12T13:41:59.019Z"},{"version":"2018.4.17f1","stream":"LTS","releaseDate":"2020-02-11T11:48:12.924Z"},{"version":"2019.2.21f1","stream":"LTS","releaseDate":"2020-02-07T23:29:05.963Z"},{"version":"2020.1.0a22","stream":"ALPHA","releaseDate":"2020-02-05T10:35:10.098Z"},{"version":"2019.2.20f1","stream":"LTS","releaseDate":"2020-01-31T13:52:30.564Z"},{"version":"2020.1.0a21","stream":"ALPHA","releaseDate":"2020-01-30T11:45:07.164Z"},{"version":"2018.4.16f1","stream":"LTS","releaseDate":"2020-01-27T14:58:33.603Z"},{"version":"2019.3.0f6","stream":"LTS","releaseDate":"2020-01-27T12:06:56.575Z"},{"version":"2020.1.0a20","stream":"ALPHA","releaseDate":"2020-01-23T10:37:53.228Z"},{"version":"2019.2.19f1","stream":"LTS","releaseDate":"2020-01-22T19:01:38.023Z"},{"version":"2020.1.0a19","stream":"ALPHA","releaseDate":"2020-01-16T11:54:15.474Z"},{"version":"2019.2.18f1","stream":"LTS","releaseDate":"2020-01-15T23:24:20.651Z"},{"version":"2019.3.0f5","stream":"LTS","releaseDate":"2020-01-13T17:38:10.201Z"},{"version":"2017.4.36f1","stream":"LTS","releaseDate":"2020-01-09T14:49:31.02Z"},{"version":"2018.4.15f1","stream":"LTS","releaseDate":"2020-01-09T14:09:30.059Z"},{"version":"2020.1.0a18","stream":"ALPHA","releaseDate":"2020-01-08T11:28:04.162Z"},{"version":"2020.1.0a17","stream":"ALPHA","releaseDate":"2019-12-19T10:21:05.753Z"},{"version":"2019.2.17f1","stream":"LTS","releaseDate":"2019-12-18T19:20:41.595Z"},{"version":"2019.2.16f1","stream":"LTS","releaseDate":"2019-12-13T18:41:32.658Z"},{"version":"2020.1.0a16","stream":"ALPHA","releaseDate":"2019-12-12T14:47:22.946Z"},{"version":"2019.3.0f3","stream":"LTS","releaseDate":"2019-12-11T20:34:41.701Z"},{"version":"2018.4.14f1","stream":"LTS","releaseDate":"2019-12-10T11:15:45.58Z"},{"version":"2017.4.35f1","stream":"LTS","releaseDate":"2019-12-06T14:49:43.1Z"},{"version":"2020.1.0a15","stream":"ALPHA","releaseDate":"2019-12-06T10:23:44.009Z"},{"version":"2019.2.15f1","stream":"LTS","releaseDate":"2019-12-04T19:50:05.071Z"},{"version":"2019.2.14f1","stream":"LTS","releaseDate":"2019-11-27T18:40:20.135Z"},{"version":"2019.3.0f1","stream":"LTS","releaseDate":"2019-11-27T16:46:18.692Z"},{"version":"2019.3.0b12","stream":"BETA","releaseDate":"2019-11-21T20:46:51.96Z"},{"version":"2020.1.0a14","stream":"ALPHA","releaseDate":"2019-11-21T17:18:32.557Z"},{"version":"2018.4.13f1","stream":"LTS","releaseDate":"2019-11-21T15:42:03.544Z"},{"version":"2019.2.13f1","stream":"LTS","releaseDate":"2019-11-20T17:22:07.155Z"},{"version":"2020.1.0a13","stream":"ALPHA","releaseDate":"2019-11-15T12:47:40.557Z"},{"version":"2019.3.0b11","stream":"BETA","releaseDate":"2019-11-14T21:50:47.112Z"},{"version":"2019.2.12f1","stream":"LTS","releaseDate":"2019-11-11T18:38:24.9Z"},{"version":"2020.1.0a12","stream":"ALPHA","releaseDate":"2019-11-08T10:46:31.252Z"},{"version":"2019.3.0b10","stream":"BETA","releaseDate":"2019-11-06T17:42:42.164Z"},{"version":"2019.3.0b9","stream":"BETA","releaseDate":"2019-11-01T16:37:43.062Z"},{"version":"2019.2.11f1","stream":"LTS","releaseDate":"2019-11-01T12:01:07.474Z"},{"version":"2020.1.0a11","stream":"ALPHA","releaseDate":"2019-10-31T16:32:46.552Z"},{"version":"2017.4.34f1","stream":"LTS","releaseDate":"2019-10-30T17:20:05.481Z"},{"version":"2018.4.12f1","stream":"LTS","releaseDate":"2019-10-28T11:35:32.884Z"},{"version":"2019.2.10f1","stream":"LTS","releaseDate":"2019-10-23T21:46:43.575Z"},{"version":"2019.3.0b8","stream":"BETA","releaseDate":"2019-10-23T17:20:42.499Z"},{"version":"2020.1.0a9","stream":"ALPHA","releaseDate":"2019-10-17T10:21:00.053Z"},{"version":"2019.3.0b7","stream":"BETA","releaseDate":"2019-10-14T17:32:52.898Z"},{"version":"2019.2.9f1","stream":"LTS","releaseDate":"2019-10-11T18:05:30.452Z"},{"version":"2018.4.11f1","stream":"LTS","releaseDate":"2019-10-10T13:08:52.311Z"},{"version":"2020.1.0a8","stream":"ALPHA","releaseDate":"2019-10-10T09:24:32.063Z"},{"version":"2017.4.33f1","stream":"LTS","releaseDate":"2019-10-07T08:27:32.743Z"},{"version":"2019.3.0b6","stream":"BETA","releaseDate":"2019-10-04T16:50:37.447Z"},{"version":"2019.2.8f1","stream":"LTS","releaseDate":"2019-10-03T22:11:03.839Z"},{"version":"2020.1.0a7","stream":"ALPHA","releaseDate":"2019-10-01T16:22:34.376Z"},{"version":"2018.4.10f1","stream":"LTS","releaseDate":"2019-10-01T12:06:54.816Z"},{"version":"2019.2.7f2","stream":"LTS","releaseDate":"2019-09-30T18:04:28.712Z"},{"version":"2019.3.0b5","stream":"BETA","releaseDate":"2019-09-30T14:32:45.431Z"},{"version":"2020.1.0a5","stream":"ALPHA","releaseDate":"2019-09-25T14:28:57.747Z"},{"version":"2019.3.0b4","stream":"BETA","releaseDate":"2019-09-20T15:43:52.375Z"},{"version":"2019.2.6f1","stream":"LTS","releaseDate":"2019-09-17T19:29:14.52Z"},{"version":"2018.4.9f1","stream":"LTS","releaseDate":"2019-09-13T12:05:02.297Z"},{"version":"2019.2.5f1","stream":"LTS","releaseDate":"2019-09-12T15:37:27.548Z"},{"version":"2019.3.0b3","stream":"BETA","releaseDate":"2019-09-10T16:31:30.365Z"},{"version":"2019.3.0b2","stream":"BETA","releaseDate":"2019-09-06T17:16:21.53Z"},{"version":"2020.1.0a3","stream":"ALPHA","releaseDate":"2019-09-05T15:08:44.256Z"},{"version":"2019.2.4f1","stream":"LTS","releaseDate":"2019-09-05T14:17:26.668Z"},{"version":"2017.4.32f1","stream":"LTS","releaseDate":"2019-09-05T11:50:38.862Z"},{"version":"2018.4.8f1","stream":"LTS","releaseDate":"2019-08-30T09:24:35.891Z"},{"version":"2019.2.3f1","stream":"LTS","releaseDate":"2019-08-28T12:57:33.717Z"},{"version":"2019.3.0b1","stream":"BETA","releaseDate":"2019-08-26T15:03:03.449Z"},{"version":"2019.2.2f1","stream":"LTS","releaseDate":"2019-08-21T10:42:41.115Z"},{"version":"2018.4.7f1","stream":"LTS","releaseDate":"2019-08-19T10:07:37.594Z"},{"version":"2019.2.1f1","stream":"LTS","releaseDate":"2019-08-14T14:28:59.019Z"},{"version":"2019.3.0a12","stream":"ALPHA","releaseDate":"2019-08-13T14:24:35.256Z"},{"version":"2018.4.6f1","stream":"LTS","releaseDate":"2019-08-08T09:30:29.839Z"},{"version":"2019.1.14f1","stream":"LTS","releaseDate":"2019-08-08T09:01:21.726Z"},{"version":"2017.4.31f1","stream":"LTS","releaseDate":"2019-08-02T10:02:34.064Z"},{"version":"2019.1.13f1","stream":"LTS","releaseDate":"2019-08-01T11:12:43.951Z"},{"version":"2019.3.0a11","stream":"ALPHA","releaseDate":"2019-07-31T18:32:46.987Z"},{"version":"2019.2.0f1","stream":"LTS","releaseDate":"2019-07-29T10:48:07.134Z"},{"version":"2019.1.12f1","stream":"LTS","releaseDate":"2019-07-26T13:28:16.083Z"},{"version":"2018.4.5f1","stream":"LTS","releaseDate":"2019-07-26T11:33:58.831Z"},{"version":"2019.3.0a10","stream":"ALPHA","releaseDate":"2019-07-22T18:03:08.983Z"},{"version":"2019.2.0b10","stream":"BETA","releaseDate":"2019-07-18T15:39:34.132Z"},{"version":"2019.1.11f1","stream":"LTS","releaseDate":"2019-07-18T12:29:11.337Z"},{"version":"2018.4.4f1","stream":"LTS","releaseDate":"2019-07-12T16:20:22.902Z"},{"version":"2019.1.10f1","stream":"LTS","releaseDate":"2019-07-12T15:54:54.003Z"},{"version":"2019.2.0b9","stream":"BETA","releaseDate":"2019-07-11T18:56:49.631Z"},{"version":"2017.4.30f1","stream":"LTS","releaseDate":"2019-07-05T14:27:47.061Z"},{"version":"2019.1.9f1","stream":"LTS","releaseDate":"2019-07-05T11:47:29.641Z"},{"version":"2019.3.0a8","stream":"ALPHA","releaseDate":"2019-07-03T17:30:44.98Z"},{"version":"2018.4.3f1","stream":"LTS","releaseDate":"2019-06-28T13:03:41.367Z"},{"version":"2019.3.0a7","stream":"ALPHA","releaseDate":"2019-06-26T17:12:40.683Z"},{"version":"2019.2.0b7","stream":"BETA","releaseDate":"2019-06-25T20:47:11.254Z"},{"version":"2019.1.8f1","stream":"LTS","releaseDate":"2019-06-22T08:48:33.79Z"},{"version":"2019.3.0a6","stream":"ALPHA","releaseDate":"2019-06-19T03:02:44.009Z"},{"version":"2019.1.7f1","stream":"LTS","releaseDate":"2019-06-14T15:44:01.613Z"},{"version":"2019.2.0b6","stream":"BETA","releaseDate":"2019-06-12T09:40:00.788Z"},{"version":"2017.4.29f1","stream":"LTS","releaseDate":"2019-06-08T19:03:51.252Z"},{"version":"2018.4.2f1","stream":"LTS","releaseDate":"2019-06-08T18:07:32.046Z"},{"version":"2019.1.6f1","stream":"LTS","releaseDate":"2019-06-08T16:58:35.535Z"},{"version":"2019.3.0a5","stream":"ALPHA","releaseDate":"2019-06-06T12:22:57.562Z"},{"version":"2019.2.0b5","stream":"BETA","releaseDate":"2019-06-05T14:32:16.273Z"},{"version":"2019.1.5f1","stream":"LTS","releaseDate":"2019-06-03T11:40:25.501Z"},{"version":"2017.4.28f1","stream":"LTS","releaseDate":"2019-05-30T17:27:14.681Z"},{"version":"2019.3.0a4","stream":"ALPHA","releaseDate":"2019-05-30T14:15:42.707Z"},{"version":"2019.2.0b4","stream":"BETA","releaseDate":"2019-05-29T17:12:13.245Z"},{"version":"2018.4.1f1","stream":"LTS","releaseDate":"2019-05-28T16:24:03.858Z"},{"version":"2019.1.4f1","stream":"LTS","releaseDate":"2019-05-24T17:57:10.778Z"},{"version":"2019.2.0b3","stream":"BETA","releaseDate":"2019-05-22T14:03:19.445Z"},{"version":"2019.3.0a3","stream":"ALPHA","releaseDate":"2019-05-22T11:46:55.055Z"},{"version":"2019.1.3f1","stream":"LTS","releaseDate":"2019-05-16T14:47:53.826Z"},{"version":"2019.2.0b2","stream":"BETA","releaseDate":"2019-05-15T15:44:17.759Z"},{"version":"2019.3.0a2","stream":"ALPHA","releaseDate":"2019-05-10T20:36:39.254Z"},{"version":"2019.1.2f1","stream":"LTS","releaseDate":"2019-05-10T15:59:18.52Z"},{"version":"2017.4.27f1","stream":"LTS","releaseDate":"2019-05-10T13:21:41.135Z"},{"version":"2018.4.0f1","stream":"LTS","releaseDate":"2019-05-10T11:43:31.421Z"},{"version":"2019.2.0b1","stream":"BETA","releaseDate":"2019-05-09T09:44:58.351Z"},{"version":"2019.1.1f1","stream":"LTS","releaseDate":"2019-05-03T14:43:43.597Z"},{"version":"2019.2.0a14","stream":"ALPHA","releaseDate":"2019-05-01T17:59:12.688Z"},{"version":"2018.3.14f1","stream":"LTS","releaseDate":"2019-04-26T11:50:27.045Z"},{"version":"2019.2.0a13","stream":"ALPHA","releaseDate":"2019-04-24T17:50:21.067Z"},{"version":"2017.4.26f1","stream":"LTS","releaseDate":"2019-04-23T09:36:49.591Z"},{"version":"2018.3.13f1","stream":"LTS","releaseDate":"2019-04-18T09:14:47.695Z"},{"version":"2019.1.0f2","stream":"LTS","releaseDate":"2019-04-15T13:28:01.444Z"},{"version":"2019.2.0a11","stream":"ALPHA","releaseDate":"2019-04-11T16:48:43.184Z"},{"version":"2019.1.0f1","stream":"LTS","releaseDate":"2019-04-08T18:51:36.408Z"},{"version":"2018.3.12f1","stream":"LTS","releaseDate":"2019-04-08T14:36:53.346Z"},{"version":"2017.4.25f1","stream":"LTS","releaseDate":"2019-04-08T13:39:05.191Z"},{"version":"2019.1.0b10","stream":"BETA","releaseDate":"2019-04-03T14:15:22.385Z"},{"version":"2018.3.11f1","stream":"LTS","releaseDate":"2019-03-29T12:15:27.935Z"},{"version":"2019.1.0b9","stream":"BETA","releaseDate":"2019-03-26T16:57:04.847Z"},{"version":"2018.3.10f1","stream":"LTS","releaseDate":"2019-03-25T17:27:03.035Z"},{"version":"2017.4.24f1","stream":"LTS","releaseDate":"2019-03-22T09:39:13.667Z"},{"version":"2019.2.0a9","stream":"ALPHA","releaseDate":"2019-03-20T15:45:22.309Z"},{"version":"2019.1.0b8","stream":"BETA","releaseDate":"2019-03-18T17:17:39.093Z"},{"version":"2018.3.9f1","stream":"LTS","releaseDate":"2019-03-18T12:14:09.612Z"},{"version":"2019.1.0b7","stream":"BETA","releaseDate":"2019-03-13T16:10:13.39Z"},{"version":"2019.2.0a8","stream":"ALPHA","releaseDate":"2019-03-13T14:22:24.924Z"},{"version":"2017.4.23f1","stream":"LTS","releaseDate":"2019-03-08T17:28:16.467Z"},{"version":"2019.1.0b6","stream":"BETA","releaseDate":"2019-03-08T16:41:08.133Z"},{"version":"2018.3.8f1","stream":"LTS","releaseDate":"2019-03-08T16:15:08.806Z"},{"version":"2019.2.0a7","stream":"ALPHA","releaseDate":"2019-03-04T13:52:19.71Z"},{"version":"2019.1.0b5","stream":"BETA","releaseDate":"2019-03-01T16:44:15.408Z"},{"version":"5.6.7f1","stream":"LTS","releaseDate":"2019-02-28T18:35:23.895Z"},{"version":"2018.2.21f1","stream":"LTS","releaseDate":"2019-02-28T17:57:55.345Z"},{"version":"2017.4.22f1","stream":"LTS","releaseDate":"2019-02-28T17:01:39.756Z"},{"version":"2018.3.7f1","stream":"LTS","releaseDate":"2019-02-28T16:07:09.189Z"},{"version":"2019.2.0a6","stream":"ALPHA","releaseDate":"2019-02-27T07:50:11.087Z"},{"version":"2017.4.21f1","stream":"LTS","releaseDate":"2019-02-21T15:15:49.214Z"},{"version":"2019.1.0b4","stream":"BETA","releaseDate":"2019-02-19T16:30:33.254Z"},{"version":"2018.3.6f1","stream":"LTS","releaseDate":"2019-02-15T16:45:14.684Z"},{"version":"2019.1.0b3","stream":"BETA","releaseDate":"2019-02-11T15:22:34.464Z"},{"version":"2017.4.20f2","stream":"LTS","releaseDate":"2019-02-11T10:07:10.811Z"},{"version":"2018.3.5f1","stream":"LTS","releaseDate":"2019-02-08T15:27:29.379Z"},{"version":"2019.2.0a4","stream":"ALPHA","releaseDate":"2019-02-06T14:46:04.41Z"},{"version":"2019.1.0b2","stream":"BETA","releaseDate":"2019-02-04T13:55:05.8Z"},{"version":"2018.3.4f1","stream":"LTS","releaseDate":"2019-02-01T16:49:54.517Z"},{"version":"2019.1.0b1","stream":"BETA","releaseDate":"2019-01-28T15:21:41.622Z"},{"version":"2017.4.19f1","stream":"LTS","releaseDate":"2019-01-28T14:49:20.963Z"},{"version":"2018.3.3f1","stream":"LTS","releaseDate":"2019-01-25T14:37:01.862Z"},{"version":"2018.3.2f1","stream":"LTS","releaseDate":"2019-01-17T09:18:26.546Z"},{"version":"2019.1.0a14","stream":"ALPHA","releaseDate":"2019-01-15T18:45:50.054Z"},{"version":"2018.3.1f1","stream":"LTS","releaseDate":"2019-01-10T12:42:52.538Z"},{"version":"2017.4.18f1","stream":"LTS","releaseDate":"2019-01-10T11:37:33.909Z"},{"version":"2019.1.0a13","stream":"ALPHA","releaseDate":"2019-01-03T01:39:26.479Z"},{"version":"2019.1.0a12","stream":"ALPHA","releaseDate":"2018-12-14T18:20:29.279Z"},{"version":"2018.2.20f1","stream":"LTS","releaseDate":"2018-12-14T11:15:42.947Z"},{"version":"2018.3.0f2","stream":"LTS","releaseDate":"2018-12-12T12:02:30.555Z"},{"version":"2018.3.0f1","stream":"LTS","releaseDate":"2018-12-11T15:41:14.382Z"},{"version":"2017.2.5f1","stream":"LTS","releaseDate":"2018-12-07T18:04:37.579Z"},{"version":"2018.2.19f1","stream":"LTS","releaseDate":"2018-12-07T16:44:08.592Z"},{"version":"2017.4.17f1","stream":"LTS","releaseDate":"2018-12-07T15:51:37.308Z"},{"version":"2019.1.0a11","stream":"ALPHA","releaseDate":"2018-12-04T20:58:06.128Z"},{"version":"2018.2.18f1","stream":"LTS","releaseDate":"2018-11-30T15:10:33.273Z"},{"version":"2018.3.0b12","stream":"BETA","releaseDate":"2018-11-28T12:03:56.216Z"},{"version":"2019.1.0a10","stream":"ALPHA","releaseDate":"2018-11-23T16:56:21.743Z"},{"version":"2017.4.16f1","stream":"LTS","releaseDate":"2018-11-23T10:14:00.455Z"},{"version":"2018.2.17f1","stream":"LTS","releaseDate":"2018-11-21T15:28:51.618Z"},{"version":"2018.3.0b11","stream":"BETA","releaseDate":"2018-11-21T13:58:06.343Z"},{"version":"2017.2.4p1","stream":"TECH","releaseDate":"2018-11-16T10:22:37.674Z"},{"version":"2018.2.16f1","stream":"LTS","releaseDate":"2018-11-15T11:01:20.605Z"},{"version":"2019.1.0a9","stream":"ALPHA","releaseDate":"2018-11-14T16:08:29.504Z"},{"version":"2018.3.0b10","stream":"BETA","releaseDate":"2018-11-14T13:35:56.456Z"},{"version":"2017.4.15f1","stream":"LTS","releaseDate":"2018-11-12T14:08:59.607Z"},{"version":"2018.2.15f1","stream":"LTS","releaseDate":"2018-11-09T10:10:19.078Z"},{"version":"2018.3.0b9","stream":"BETA","releaseDate":"2018-11-07T11:26:23.779Z"},{"version":"2019.1.0a8","stream":"ALPHA","releaseDate":"2018-11-06T23:07:14.781Z"},{"version":"2019.1.0a7","stream":"ALPHA","releaseDate":"2018-10-31T16:36:10.741Z"},{"version":"2018.3.0b8","stream":"BETA","releaseDate":"2018-10-31T10:43:25.542Z"},{"version":"2018.2.14f1","stream":"LTS","releaseDate":"2018-10-26T15:36:58.385Z"},{"version":"2017.4.14f1","stream":"LTS","releaseDate":"2018-10-26T11:46:14.967Z"},{"version":"2018.3.0b7","stream":"BETA","releaseDate":"2018-10-24T09:18:44.743Z"},{"version":"2018.2.13f1","stream":"LTS","releaseDate":"2018-10-18T10:04:17.744Z"},{"version":"2018.3.0b6","stream":"BETA","releaseDate":"2018-10-18T07:28:58.765Z"},{"version":"2018.2.12f1","stream":"LTS","releaseDate":"2018-10-12T14:40:28.955Z"},{"version":"2017.4.13f1","stream":"LTS","releaseDate":"2018-10-12T12:12:23.499Z"},{"version":"2018.3.0b5","stream":"BETA","releaseDate":"2018-10-10T08:17:14.48Z"},{"version":"2018.2.11f1","stream":"LTS","releaseDate":"2018-10-04T10:36:18.263Z"},{"version":"2018.3.0b4","stream":"BETA","releaseDate":"2018-10-03T11:09:35.425Z"},{"version":"2017.2.4f1","stream":"LTS","releaseDate":"2018-10-03T10:10:22.697Z"},{"version":"2017.4.12f1","stream":"LTS","releaseDate":"2018-09-27T10:54:38.666Z"},{"version":"2018.2.10f1","stream":"LTS","releaseDate":"2018-09-26T14:32:56.446Z"},{"version":"2018.3.0b3","stream":"BETA","releaseDate":"2018-09-26T13:21:30.939Z"},{"version":"2018.2.9f1","stream":"LTS","releaseDate":"2018-09-21T12:47:59.578Z"},{"version":"2018.3.0b2","stream":"BETA","releaseDate":"2018-09-20T09:44:45.621Z"},{"version":"2018.2.8f1","stream":"LTS","releaseDate":"2018-09-14T10:03:11.163Z"},{"version":"2017.4.11f1","stream":"LTS","releaseDate":"2018-09-13T09:35:24.146Z"},{"version":"2018.3.0b1","stream":"BETA","releaseDate":"2018-09-11T13:07:05.27Z"},{"version":"2018.2.7f1","stream":"LTS","releaseDate":"2018-09-06T16:34:51.171Z"},{"version":"2018.2.6f1","stream":"LTS","releaseDate":"2018-08-30T11:26:23.289Z"},{"version":"2017.2.3p4","stream":"TECH","releaseDate":"2018-08-29T13:24:14.637Z"},{"version":"2018.1.9f2","stream":"LTS","releaseDate":"2018-08-29T10:25:53.036Z"},{"version":"2017.4.10f1","stream":"LTS","releaseDate":"2018-08-24T13:44:21.526Z"},{"version":"2018.2.5f1","stream":"LTS","releaseDate":"2018-08-22T15:12:22.79Z"},{"version":"2018.2.4f1","stream":"LTS","releaseDate":"2018-08-17T14:17:08.695Z"},{"version":"2018.2.3f1","stream":"LTS","releaseDate":"2018-08-10T16:45:34.078Z"},{"version":"2017.4.9f1","stream":"LTS","releaseDate":"2018-08-10T14:27:28.131Z"},{"version":"2017.2.3p3","stream":"TECH","releaseDate":"2018-08-03T14:58:35.317Z"},{"version":"2018.2.2f1","stream":"LTS","releaseDate":"2018-08-03T13:32:08.878Z"},{"version":"2017.4.8f1","stream":"LTS","releaseDate":"2018-07-26T11:30:32.443Z"},{"version":"2018.2.1f1","stream":"LTS","releaseDate":"2018-07-26T10:43:51.519Z"},{"version":"2017.1.5f1","stream":"LTS","releaseDate":"2018-07-23T16:24:20.275Z"},{"version":"2018.1.8f1","stream":"LTS","releaseDate":"2018-07-13T13:52:59.791Z"},{"version":"2017.4.7f1","stream":"LTS","releaseDate":"2018-07-13T10:22:49.092Z"},{"version":"2018.2.0f2","stream":"LTS","releaseDate":"2018-07-09T16:46:12.134Z"},{"version":"2018.2.0f1","stream":"LTS","releaseDate":"2018-07-06T15:20:59.9Z"},{"version":"2017.2.3p2","stream":"TECH","releaseDate":"2018-07-05T14:38:35.927Z"},{"version":"2018.1.7f1","stream":"LTS","releaseDate":"2018-07-05T14:17:37.546Z"},{"version":"2018.2.0b11","stream":"BETA","releaseDate":"2018-07-03T13:34:59.156Z"},{"version":"2018.2.0b10","stream":"BETA","releaseDate":"2018-06-26T13:53:45.043Z"},{"version":"2017.4.6f1","stream":"LTS","releaseDate":"2018-06-22T08:23:54.219Z"},{"version":"2018.1.6f1","stream":"LTS","releaseDate":"2018-06-21T15:02:57.356Z"},{"version":"2017.1.4p2","stream":"TECH","releaseDate":"2018-06-20T09:46:38.07Z"},{"version":"2018.2.0b9","stream":"BETA","releaseDate":"2018-06-19T13:54:09.066Z"},{"version":"2018.1.5f1","stream":"LTS","releaseDate":"2018-06-15T12:35:07.622Z"},{"version":"2018.2.0b8","stream":"BETA","releaseDate":"2018-06-13T13:54:30.171Z"},{"version":"2017.1.4p1","stream":"TECH","releaseDate":"2018-06-13T13:31:38.393Z"},{"version":"2018.1.4f1","stream":"LTS","releaseDate":"2018-06-11T14:59:27.426Z"},{"version":"2017.4.5f1","stream":"LTS","releaseDate":"2018-06-07T09:24:13.11Z"},{"version":"2018.2.0b7","stream":"BETA","releaseDate":"2018-06-06T17:13:56.25Z"},{"version":"2018.1.3f1","stream":"LTS","releaseDate":"2018-06-04T09:52:38.309Z"},{"version":"2017.2.3p1","stream":"TECH","releaseDate":"2018-05-31T10:04:31.746Z"},{"version":"2018.2.0b6","stream":"BETA","releaseDate":"2018-05-29T14:49:22.168Z"},{"version":"2018.1.2f1","stream":"LTS","releaseDate":"2018-05-25T15:39:42.936Z"},{"version":"2018.2.0b5","stream":"BETA","releaseDate":"2018-05-24T07:21:44.102Z"},{"version":"2017.1.4f1","stream":"LTS","releaseDate":"2018-05-23T15:53:36.991Z"},{"version":"2017.4.4f1","stream":"LTS","releaseDate":"2018-05-23T15:20:18.873Z"},{"version":"2017.2.3f1","stream":"LTS","releaseDate":"2018-05-18T13:26:34.763Z"},{"version":"2018.1.1f1","stream":"LTS","releaseDate":"2018-05-18T09:56:06.072Z"},{"version":"2018.2.0b4","stream":"BETA","releaseDate":"2018-05-11T19:14:37.677Z"},{"version":"2017.4.3f1","stream":"LTS","releaseDate":"2018-05-11T14:44:04.818Z"},{"version":"5.6.6f2","stream":"LTS","releaseDate":"2018-05-08T09:03:55.479Z"},{"version":"2017.1.3p4","stream":"TECH","releaseDate":"2018-05-06T10:03:23.748Z"},{"version":"2018.2.0b3","stream":"BETA","releaseDate":"2018-05-04T00:29:00.783Z"},{"version":"2018.1.0f2","stream":"LTS","releaseDate":"2018-05-02T09:32:53.181Z"},{"version":"2017.4.2f2","stream":"LTS","releaseDate":"2018-04-30T09:57:20.774Z"},{"version":"2017.2.2p4","stream":"TECH","releaseDate":"2018-04-27T08:09:34.659Z"},{"version":"2018.1.0f1","stream":"LTS","releaseDate":"2018-04-26T14:34:43.932Z"},{"version":"2018.2.0b2","stream":"BETA","releaseDate":"2018-04-25T15:46:41.702Z"},{"version":"2018.2.0b1","stream":"BETA","releaseDate":"2018-04-18T01:14:08.21Z"},{"version":"2017.4.1f1","stream":"LTS","releaseDate":"2018-04-12T12:46:45.437Z"},{"version":"5.6.5p4","stream":"TECH","releaseDate":"2018-04-12T10:47:59.717Z"},{"version":"2017.1.3p3","stream":"TECH","releaseDate":"2018-04-06T10:32:38.635Z"},{"version":"2017.2.2p3","stream":"TECH","releaseDate":"2018-04-05T10:16:10.263Z"},{"version":"2018.1.0b13","stream":"BETA","releaseDate":"2018-03-30T10:12:24.922Z"},{"version":"2017.2.2p2","stream":"TECH","releaseDate":"2018-03-23T13:33:23.076Z"},{"version":"2018.1.0b12","stream":"BETA","releaseDate":"2018-03-23T08:03:45.342Z"},{"version":"2017.4.0f1","stream":"LTS","releaseDate":"2018-03-19T11:40:15.833Z"},{"version":"2018.1.0b11","stream":"BETA","releaseDate":"2018-03-16T13:01:57.652Z"},{"version":"5.6.5p3","stream":"TECH","releaseDate":"2018-03-16T09:45:19.363Z"},{"version":"2017.3.1p4","stream":"TECH","releaseDate":"2018-03-13T11:06:06.216Z"},{"version":"2017.2.2p1","stream":"TECH","releaseDate":"2018-03-09T15:01:16.687Z"},{"version":"2018.1.0b10","stream":"BETA","releaseDate":"2018-03-08T15:30:14.498Z"},{"version":"2017.3.1p3","stream":"TECH","releaseDate":"2018-03-06T13:00:52.238Z"},{"version":"2017.1.3p2","stream":"TECH","releaseDate":"2018-03-02T11:14:31.123Z"},{"version":"2018.1.0b9","stream":"BETA","releaseDate":"2018-02-27T20:03:39.092Z"},{"version":"2017.3.1p2","stream":"TECH","releaseDate":"2018-02-26T11:20:31.229Z"},{"version":"2017.2.2f1","stream":"LTS","releaseDate":"2018-02-26T10:56:15.298Z"},{"version":"2018.1.0b8","stream":"BETA","releaseDate":"2018-02-20T23:19:54.456Z"},{"version":"5.6.5p2","stream":"TECH","releaseDate":"2018-02-15T10:54:22.592Z"},{"version":"2017.3.1p1","stream":"TECH","releaseDate":"2018-02-14T16:32:07.563Z"},{"version":"2018.1.0b7","stream":"BETA","releaseDate":"2018-02-14T11:12:33.84Z"},{"version":"2017.2.1p4","stream":"TECH","releaseDate":"2018-02-12T13:46:02.925Z"},{"version":"2018.1.0b6","stream":"BETA","releaseDate":"2018-02-07T23:26:06.828Z"},{"version":"2017.3.1f1","stream":"LTS","releaseDate":"2018-02-05T15:31:22.383Z"},{"version":"2017.1.3p1","stream":"TECH","releaseDate":"2018-02-02T16:03:25.943Z"},{"version":"2018.1.0b5","stream":"BETA","releaseDate":"2018-01-31T12:56:51.085Z"},{"version":"2017.2.1p3","stream":"TECH","releaseDate":"2018-01-30T16:14:38.479Z"},{"version":"2017.3.0p4","stream":"TECH","releaseDate":"2018-01-29T12:43:13.44Z"},{"version":"2018.1.0b4","stream":"BETA","releaseDate":"2018-01-22T19:10:28.089Z"},{"version":"5.6.5p1","stream":"TECH","releaseDate":"2018-01-22T10:15:55.22Z"},{"version":"2017.3.0p3","stream":"TECH","releaseDate":"2018-01-18T16:39:06.631Z"},{"version":"2018.1.0b3","stream":"BETA","releaseDate":"2018-01-17T12:06:15.898Z"},{"version":"2017.3.0p2","stream":"TECH","releaseDate":"2018-01-12T18:16:05.847Z"},{"version":"5.5.6f1","stream":"LTS","releaseDate":"2018-01-12T17:52:32.094Z"},{"version":"2017.2.1p2","stream":"TECH","releaseDate":"2018-01-12T10:39:16.706Z"},{"version":"2018.1.0b2","stream":"BETA","releaseDate":"2018-01-09T15:44:00.845Z"},{"version":"2017.1.3f1","stream":"LTS","releaseDate":"2018-01-04T17:14:40.655Z"},{"version":"2017.3.0p1","stream":"TECH","releaseDate":"2017-12-22T11:42:56.17Z"},{"version":"5.6.5f1","stream":"LTS","releaseDate":"2017-12-21T11:08:15.313Z"},{"version":"2017.2.1p1","stream":"TECH","releaseDate":"2017-12-20T13:53:25.025Z"},{"version":"2017.3.0f3","stream":"LTS","releaseDate":"2017-12-18T16:24:06.352Z"},{"version":"2017.2.1f1","stream":"LTS","releaseDate":"2017-12-11T15:44:05.803Z"},{"version":"2017.3.0f2","stream":"LTS","releaseDate":"2017-12-08T16:45:52.244Z"},{"version":"2017.1.2p4","stream":"TECH","releaseDate":"2017-12-08T15:51:33.874Z"},{"version":"5.6.4p4","stream":"TECH","releaseDate":"2017-12-07T12:26:50.54Z"},{"version":"2017.2.0p4","stream":"TECH","releaseDate":"2017-12-04T10:45:02.991Z"},{"version":"2017.3.0f1","stream":"LTS","releaseDate":"2017-12-01T18:31:55.923Z"},{"version":"5.5.5p2","stream":"TECH","releaseDate":"2017-11-28T16:57:54.61Z"},{"version":"2017.3.0b11","stream":"BETA","releaseDate":"2017-11-28T15:29:29.286Z"},{"version":"2017.2.0p3","stream":"TECH","releaseDate":"2017-11-27T13:27:46.218Z"},{"version":"2017.1.2p3","stream":"TECH","releaseDate":"2017-11-21T15:57:28.21Z"},{"version":"2017.3.0b10","stream":"BETA","releaseDate":"2017-11-20T15:18:14.574Z"},{"version":"5.6.4p3","stream":"TECH","releaseDate":"2017-11-20T13:49:56.763Z"},{"version":"2017.2.0p2","stream":"TECH","releaseDate":"2017-11-15T14:24:53.185Z"},{"version":"5.6.4p2","stream":"TECH","releaseDate":"2017-11-12T19:00:26.687Z"},{"version":"2017.3.0b9","stream":"BETA","releaseDate":"2017-11-10T17:33:11.854Z"},{"version":"2017.2.0p1","stream":"TECH","releaseDate":"2017-11-06T17:18:19.496Z"},{"version":"2017.3.0b8","stream":"BETA","releaseDate":"2017-11-03T15:21:00.754Z"},{"version":"2017.3.0b7","stream":"BETA","releaseDate":"2017-10-31T15:40:56.235Z"},{"version":"2017.1.2p2","stream":"TECH","releaseDate":"2017-10-27T11:03:41.029Z"},{"version":"2017.3.0b6","stream":"BETA","releaseDate":"2017-10-24T16:13:05.044Z"},{"version":"5.6.4p1","stream":"TECH","releaseDate":"2017-10-20T08:55:09.428Z"},{"version":"2017.3.0b5","stream":"BETA","releaseDate":"2017-10-17T14:14:21.23Z"},{"version":"5.6.4f1","stream":"LTS","releaseDate":"2017-10-15T21:45:41.61Z"},{"version":"5.5.5p1","stream":"TECH","releaseDate":"2017-10-13T15:41:22.604Z"},{"version":"2017.1.2p1","stream":"TECH","releaseDate":"2017-10-13T14:36:45.03Z"},{"version":"2017.2.0f3","stream":"LTS","releaseDate":"2017-10-11T17:12:25.471Z"},{"version":"2017.1.1p4","stream":"TECH","releaseDate":"2017-10-10T22:24:40.459Z"},{"version":"2017.3.0b4","stream":"BETA","releaseDate":"2017-10-10T15:09:12.877Z"},{"version":"2017.1.2f1","stream":"LTS","releaseDate":"2017-10-06T12:44:00.57Z"},{"version":"2017.3.0b3","stream":"BETA","releaseDate":"2017-10-05T14:33:00.365Z"},{"version":"5.5.5f1","stream":"LTS","releaseDate":"2017-10-03T18:12:06.132Z"},{"version":"2017.2.0f2","stream":"LTS","releaseDate":"2017-10-02T17:53:40.396Z"},{"version":"2017.3.0b2","stream":"BETA","releaseDate":"2017-09-26T14:46:30.171Z"},{"version":"2017.1.1p3","stream":"TECH","releaseDate":"2017-09-22T16:41:25.511Z"},{"version":"2017.2.0f1","stream":"LTS","releaseDate":"2017-09-22T15:33:23.309Z"},{"version":"5.6.3p4","stream":"TECH","releaseDate":"2017-09-22T13:54:29.483Z"},{"version":"2017.3.0b1","stream":"BETA","releaseDate":"2017-09-21T13:38:59.597Z"},{"version":"5.4.6f3","stream":"LTS","releaseDate":"2017-09-20T08:37:58.914Z"},{"version":"2017.1.1p2","stream":"TECH","releaseDate":"2017-09-15T10:24:31.557Z"},{"version":"5.5.4p5","stream":"TECH","releaseDate":"2017-09-14T14:25:05.91Z"},{"version":"2017.2.0b11","stream":"BETA","releaseDate":"2017-09-12T13:31:58.615Z"},{"version":"2017.1.1p1","stream":"TECH","releaseDate":"2017-09-08T16:32:50.056Z"},{"version":"5.6.3p3","stream":"TECH","releaseDate":"2017-09-08T13:29:05.068Z"},{"version":"2017.2.0b10","stream":"BETA","releaseDate":"2017-09-04T20:19:12.822Z"},{"version":"2017.1.1f1","stream":"LTS","releaseDate":"2017-09-04T11:34:13.935Z"},{"version":"5.6.3p2","stream":"TECH","releaseDate":"2017-09-01T16:44:02.764Z"},{"version":"5.5.4p4","stream":"TECH","releaseDate":"2017-08-31T17:24:23.024Z"},{"version":"2017.2.0b9","stream":"BETA","releaseDate":"2017-08-29T15:59:23.864Z"},{"version":"2017.1.0p5","stream":"TECH","releaseDate":"2017-08-25T11:26:12.473Z"},{"version":"2017.2.0b8","stream":"BETA","releaseDate":"2017-08-18T14:33:35.185Z"},{"version":"5.3.8p2","stream":"TECH","releaseDate":"2017-08-18T10:53:50.159Z"},{"version":"5.4.5p5","stream":"TECH","releaseDate":"2017-08-18T00:06:42.901Z"},{"version":"5.5.4p3","stream":"TECH","releaseDate":"2017-08-17T21:45:42.73Z"},{"version":"5.6.3p1","stream":"TECH","releaseDate":"2017-08-17T20:56:53.906Z"},{"version":"2017.1.0p4","stream":"TECH","releaseDate":"2017-08-17T07:16:35.478Z"},{"version":"2017.2.0b7","stream":"BETA","releaseDate":"2017-08-15T17:42:22.612Z"},{"version":"2017.1.0p3","stream":"TECH","releaseDate":"2017-08-11T14:09:22.978Z"},{"version":"2017.2.0b6","stream":"BETA","releaseDate":"2017-08-08T21:09:18.966Z"},{"version":"5.6.3f1","stream":"LTS","releaseDate":"2017-08-01T17:03:58.044Z"},{"version":"2017.2.0b5","stream":"BETA","releaseDate":"2017-08-01T09:24:10.578Z"},{"version":"2017.1.0p2","stream":"TECH","releaseDate":"2017-07-27T12:04:31.433Z"},{"version":"5.5.4p2","stream":"TECH","releaseDate":"2017-07-26T11:06:59.785Z"},{"version":"5.6.2p4","stream":"TECH","releaseDate":"2017-07-21T17:06:22.579Z"},{"version":"2017.1.0p1","stream":"TECH","releaseDate":"2017-07-21T16:18:52.683Z"},{"version":"2017.2.0b4","stream":"BETA","releaseDate":"2017-07-20T16:07:24.314Z"},{"version":"5.6.2p3","stream":"TECH","releaseDate":"2017-07-17T14:54:07.43Z"},{"version":"2017.2.0b3","stream":"BETA","releaseDate":"2017-07-14T13:58:24.249Z"},{"version":"2017.1.0f3","stream":"LTS","releaseDate":"2017-07-10T11:29:48.344Z"},{"version":"2017.2.0b2","stream":"BETA","releaseDate":"2017-07-06T14:42:46.105Z"},{"version":"5.6.2p2","stream":"TECH","releaseDate":"2017-07-06T12:05:04.255Z"},{"version":"2017.1.0f2","stream":"LTS","releaseDate":"2017-07-05T18:06:25.71Z"},{"version":"5.6.2p1","stream":"TECH","releaseDate":"2017-06-29T14:08:51.315Z"},{"version":"5.4.5p4","stream":"TECH","releaseDate":"2017-06-28T11:33:16.401Z"},{"version":"2017.1.0f1","stream":"LTS","releaseDate":"2017-06-26T18:35:00.156Z"},{"version":"5.5.4p1","stream":"TECH","releaseDate":"2017-06-22T14:02:21.433Z"},{"version":"5.6.2f1","stream":"LTS","releaseDate":"2017-06-21T13:10:00.385Z"},{"version":"2017.1.0b10","stream":"BETA","releaseDate":"2017-06-19T15:48:58.272Z"},{"version":"5.6.1p4","stream":"TECH","releaseDate":"2017-06-16T15:05:31.413Z"},{"version":"5.3.8f2","stream":"LTS","releaseDate":"2017-06-13T11:42:19.078Z"},{"version":"2017.1.0b9","stream":"BETA","releaseDate":"2017-06-09T19:19:53.748Z"},{"version":"5.4.5p3","stream":"TECH","releaseDate":"2017-06-09T19:08:09.909Z"},{"version":"5.6.1p3","stream":"TECH","releaseDate":"2017-06-09T17:34:47.454Z"},{"version":"5.5.4f1","stream":"LTS","releaseDate":"2017-06-06T16:31:53.057Z"},{"version":"2017.1.0b8","stream":"BETA","releaseDate":"2017-06-02T15:43:21.394Z"},{"version":"5.6.1p2","stream":"TECH","releaseDate":"2017-06-02T10:52:12.61Z"},{"version":"5.4.5p2","stream":"TECH","releaseDate":"2017-05-29T08:25:58.959Z"},{"version":"2017.1.0b7","stream":"BETA","releaseDate":"2017-05-26T16:22:45.206Z"},{"version":"5.5.3p4","stream":"TECH","releaseDate":"2017-05-24T16:03:02.585Z"},{"version":"2017.1.0b6","stream":"BETA","releaseDate":"2017-05-19T11:33:20.637Z"},{"version":"5.6.1p1","stream":"TECH","releaseDate":"2017-05-18T12:38:02.433Z"},{"version":"2017.1.0b5","stream":"BETA","releaseDate":"2017-05-11T12:55:57.667Z"},{"version":"5.6.1f1","stream":"LTS","releaseDate":"2017-05-11T10:42:26.042Z"},{"version":"5.5.3p3","stream":"TECH","releaseDate":"2017-05-10T15:53:39.619Z"},{"version":"2017.1.0b4","stream":"BETA","releaseDate":"2017-05-08T14:47:09.728Z"},{"version":"5.6.0p4","stream":"TECH","releaseDate":"2017-05-08T12:16:30.156Z"},{"version":"2017.1.0b3","stream":"BETA","releaseDate":"2017-05-03T13:29:05.251Z"},{"version":"5.6.0p3","stream":"TECH","releaseDate":"2017-04-27T19:02:39.441Z"},{"version":"2017.1.0b2","stream":"BETA","releaseDate":"2017-04-26T13:56:42.441Z"},{"version":"5.5.3p2","stream":"TECH","releaseDate":"2017-04-25T14:57:56.683Z"},{"version":"5.6.0p2","stream":"TECH","releaseDate":"2017-04-21T20:03:49.145Z"},{"version":"5.6.0p1","stream":"TECH","releaseDate":"2017-04-18T13:49:03.982Z"},{"version":"5.5.3p1","stream":"TECH","releaseDate":"2017-04-13T15:11:15.612Z"},{"version":"2017.1.0b1","stream":"BETA","releaseDate":"2017-04-11T14:05:40.004Z"},{"version":"5.6.0f3","stream":"LTS","releaseDate":"2017-03-31T15:00:22.486Z"},{"version":"5.5.3f1","stream":"LTS","releaseDate":"2017-03-31T10:51:39.156Z"},{"version":"5.4.5p1","stream":"TECH","releaseDate":"2017-03-30T14:45:22.189Z"},{"version":"5.6.0f2","stream":"LTS","releaseDate":"2017-03-27T16:28:45.658Z"},{"version":"5.5.2p4","stream":"TECH","releaseDate":"2017-03-23T10:35:50.243Z"},{"version":"5.5.2p3","stream":"TECH","releaseDate":"2017-03-17T18:58:40.164Z"},{"version":"5.6.0f1","stream":"LTS","releaseDate":"2017-03-17T16:41:48.638Z"},{"version":"5.4.5f1","stream":"LTS","releaseDate":"2017-03-10T14:21:03.746Z"},{"version":"5.6.0b11","stream":"BETA","releaseDate":"2017-03-08T17:05:35.299Z"},{"version":"5.5.2p2","stream":"TECH","releaseDate":"2017-03-08T16:29:03.349Z"},{"version":"5.5.2p1","stream":"TECH","releaseDate":"2017-03-03T12:06:12.373Z"},{"version":"5.6.0b10","stream":"BETA","releaseDate":"2017-03-02T17:57:00.642Z"},{"version":"5.4.4p4","stream":"TECH","releaseDate":"2017-03-01T11:11:30.914Z"},{"version":"5.5.2f1","stream":"LTS","releaseDate":"2017-02-24T09:54:27.426Z"},{"version":"5.5.1p4","stream":"TECH","releaseDate":"2017-02-17T16:08:36.975Z"},{"version":"5.6.0b9","stream":"BETA","releaseDate":"2017-02-17T14:41:26.853Z"},{"version":"5.6.0b8","stream":"BETA","releaseDate":"2017-02-13T15:54:50.112Z"},{"version":"5.5.1p3","stream":"TECH","releaseDate":"2017-02-09T12:22:29.265Z"},{"version":"5.4.4p3","stream":"TECH","releaseDate":"2017-02-08T17:25:47.967Z"},{"version":"5.3.7p4","stream":"TECH","releaseDate":"2017-02-07T17:01:05.91Z"},{"version":"5.6.0b7","stream":"BETA","releaseDate":"2017-02-07T15:05:04.895Z"},{"version":"5.5.1p2","stream":"TECH","releaseDate":"2017-02-03T13:27:39.914Z"},{"version":"5.6.0b6","stream":"BETA","releaseDate":"2017-02-01T15:38:41.38Z"},{"version":"5.5.1p1","stream":"TECH","releaseDate":"2017-02-01T14:22:21.414Z"},{"version":"5.6.0b5","stream":"BETA","releaseDate":"2017-01-26T09:26:16.775Z"},{"version":"5.4.4p2","stream":"TECH","releaseDate":"2017-01-25T15:10:44.295Z"},{"version":"5.5.1f1","stream":"LTS","releaseDate":"2017-01-24T10:32:21.504Z"},{"version":"5.6.0b4","stream":"BETA","releaseDate":"2017-01-17T20:17:27.658Z"},{"version":"5.4.4p1","stream":"TECH","releaseDate":"2017-01-13T16:46:40.758Z"},{"version":"5.5.0p4","stream":"TECH","releaseDate":"2017-01-11T16:18:53.99Z"},{"version":"5.4.4f1","stream":"LTS","releaseDate":"2017-01-05T15:53:15.05Z"},{"version":"5.5.0p3","stream":"TECH","releaseDate":"2017-01-05T09:04:18.854Z"},{"version":"5.6.0b3","stream":"BETA","releaseDate":"2016-12-23T17:38:00.246Z"},{"version":"5.3.7p3","stream":"TECH","releaseDate":"2016-12-21T16:13:38.502Z"},{"version":"5.6.0b2","stream":"BETA","releaseDate":"2016-12-20T13:32:52.874Z"},{"version":"5.5.0p2","stream":"TECH","releaseDate":"2016-12-16T20:23:56.1Z"},{"version":"5.4.3p4","stream":"TECH","releaseDate":"2016-12-16T13:59:43.927Z"},{"version":"5.6.0b1","stream":"BETA","releaseDate":"2016-12-13T10:35:25.751Z"},{"version":"5.4.3p3","stream":"TECH","releaseDate":"2016-12-07T16:18:47.86Z"},{"version":"5.5.0p1","stream":"TECH","releaseDate":"2016-12-07T15:25:41.557Z"},{"version":"5.4.3p2","stream":"TECH","releaseDate":"2016-12-01T13:54:47.954Z"},{"version":"5.5.0f3","stream":"LTS","releaseDate":"2016-11-30T11:49:48.44Z"},{"version":"5.3.7p2","stream":"TECH","releaseDate":"2016-11-28T16:06:22.443Z"},{"version":"5.4.3p1","stream":"TECH","releaseDate":"2016-11-28T10:09:25.413Z"},{"version":"5.5.0f2","stream":"LTS","releaseDate":"2016-11-25T10:16:50.283Z"},{"version":"5.5.0f1","stream":"LTS","releaseDate":"2016-11-22T16:14:01.185Z"},{"version":"5.4.3f1","stream":"LTS","releaseDate":"2016-11-17T12:51:02.026Z"},{"version":"5.3.7p1","stream":"TECH","releaseDate":"2016-11-11T15:32:03.022Z"},{"version":"5.5.0b11","stream":"BETA","releaseDate":"2016-11-09T18:04:57.217Z"},{"version":"5.5.0b10","stream":"BETA","releaseDate":"2016-11-09T15:40:05.177Z"},{"version":"5.4.2p4","stream":"TECH","releaseDate":"2016-11-09T12:35:14.541Z"},{"version":"5.3.7f1","stream":"LTS","releaseDate":"2016-11-08T13:22:26.898Z"},{"version":"5.4.2p3","stream":"TECH","releaseDate":"2016-11-02T15:35:46.038Z"},{"version":"5.4.2p2","stream":"TECH","releaseDate":"2016-10-28T12:33:11.631Z"},{"version":"5.4.2p1","stream":"TECH","releaseDate":"2016-10-24T15:58:28.014Z"},{"version":"5.5.0b9","stream":"BETA","releaseDate":"2016-10-24T15:06:57.148Z"},{"version":"5.3.6p8","stream":"TECH","releaseDate":"2016-10-24T14:31:38.053Z"},{"version":"5.4.2f2","stream":"LTS","releaseDate":"2016-10-21T09:41:39.171Z"},{"version":"5.5.0b8","stream":"BETA","releaseDate":"2016-10-20T13:10:07.348Z"},{"version":"5.5.0b7","stream":"BETA","releaseDate":"2016-10-11T14:19:07.139Z"},{"version":"5.3.6p7","stream":"TECH","releaseDate":"2016-10-07T12:14:33.794Z"},{"version":"5.4.1p4","stream":"TECH","releaseDate":"2016-10-05T16:04:22.609Z"},{"version":"5.5.0b6","stream":"BETA","releaseDate":"2016-10-03T16:33:15.78Z"},{"version":"5.4.1p3","stream":"TECH","releaseDate":"2016-09-28T14:50:34.112Z"},{"version":"5.5.0b5","stream":"BETA","releaseDate":"2016-09-27T08:31:35.768Z"},{"version":"5.3.6p6","stream":"TECH","releaseDate":"2016-09-23T10:03:44.038Z"},{"version":"5.4.1p2","stream":"TECH","releaseDate":"2016-09-22T18:37:12.216Z"},{"version":"5.5.0b4","stream":"BETA","releaseDate":"2016-09-19T15:28:43.203Z"},{"version":"5.3.6p5","stream":"TECH","releaseDate":"2016-09-16T07:03:24.647Z"},{"version":"5.4.1p1","stream":"TECH","releaseDate":"2016-09-15T11:18:34.21Z"},{"version":"5.5.0b3","stream":"BETA","releaseDate":"2016-09-12T13:01:26.004Z"},{"version":"5.4.1f1","stream":"LTS","releaseDate":"2016-09-07T11:02:30.459Z"},{"version":"5.5.0b2","stream":"BETA","releaseDate":"2016-09-05T14:30:09.838Z"},{"version":"5.3.6p4","stream":"TECH","releaseDate":"2016-09-02T14:39:02.879Z"},{"version":"5.4.0p4","stream":"TECH","releaseDate":"2016-08-31T15:12:19.933Z"},{"version":"5.5.0b1","stream":"BETA","releaseDate":"2016-08-29T22:26:28.148Z"},{"version":"5.4.0p3","stream":"TECH","releaseDate":"2016-08-25T16:23:33.971Z"},{"version":"5.3.6p3","stream":"TECH","releaseDate":"2016-08-23T15:52:41.717Z"},{"version":"5.4.0p2","stream":"TECH","releaseDate":"2016-08-18T15:13:53.454Z"},{"version":"5.4.0p1","stream":"TECH","releaseDate":"2016-08-11T16:41:23.062Z"},{"version":"5.3.6p2","stream":"TECH","releaseDate":"2016-08-03T13:49:58.642Z"},{"version":"5.4.0f3","stream":"LTS","releaseDate":"2016-07-27T15:33:32.065Z"},{"version":"5.3.6p1","stream":"TECH","releaseDate":"2016-07-27T13:49:40.408Z"},{"version":"5.4.0f2","stream":"LTS","releaseDate":"2016-07-21T14:37:50.492Z"},{"version":"5.3.6f1","stream":"LTS","releaseDate":"2016-07-20T09:42:16.587Z"},{"version":"5.4.0f1","stream":"LTS","releaseDate":"2016-07-14T14:14:28.948Z"},{"version":"5.3.5p8","stream":"TECH","releaseDate":"2016-07-13T12:31:43.913Z"},{"version":"5.4.0b25","stream":"BETA","releaseDate":"2016-07-11T14:27:32.571Z"},{"version":"5.3.5p7","stream":"TECH","releaseDate":"2016-07-08T09:46:28.284Z"},{"version":"5.4.0b24","stream":"BETA","releaseDate":"2016-07-01T15:47:18.233Z"},{"version":"5.3.5p6","stream":"TECH","releaseDate":"2016-06-29T16:20:44.035Z"},{"version":"5.4.0b23","stream":"BETA","releaseDate":"2016-06-28T11:35:44.656Z"},{"version":"5.4.0b22","stream":"BETA","releaseDate":"2016-06-20T09:50:01.918Z"},{"version":"5.3.5p5","stream":"TECH","releaseDate":"2016-06-20T08:56:54.195Z"},{"version":"5.3.5p4","stream":"TECH","releaseDate":"2016-06-20T08:17:44.257Z"},{"version":"5.3.5p3","stream":"TECH","releaseDate":"2016-06-10T09:28:48.99Z"},{"version":"5.4.0b21","stream":"BETA","releaseDate":"2016-06-09T10:10:18.503Z"},{"version":"5.1.5f1","stream":"LTS","releaseDate":"2016-06-06T11:04:12.199Z"},{"version":"5.3.5p2","stream":"TECH","releaseDate":"2016-06-03T14:52:11.159Z"},{"version":"5.4.0b20","stream":"BETA","releaseDate":"2016-06-03T13:53:41.345Z"},{"version":"5.2.5f1","stream":"LTS","releaseDate":"2016-06-01T11:51:51.594Z"},{"version":"5.3.5p1","stream":"TECH","releaseDate":"2016-05-31T07:40:56.682Z"},{"version":"5.4.0b19","stream":"BETA","releaseDate":"2016-05-25T09:23:12.812Z"},{"version":"5.4.0b18","stream":"BETA","releaseDate":"2016-05-19T15:44:13.019Z"},{"version":"5.3.5f1","stream":"LTS","releaseDate":"2016-05-19T15:29:29.778Z"},{"version":"5.3.4p6","stream":"TECH","releaseDate":"2016-05-06T15:28:15.34Z"},{"version":"5.4.0b17","stream":"BETA","releaseDate":"2016-05-03T22:24:49.734Z"},{"version":"5.3.4p5","stream":"TECH","releaseDate":"2016-04-27T15:20:06.968Z"},{"version":"5.4.0b16","stream":"BETA","releaseDate":"2016-04-27T11:25:25.945Z"},{"version":"5.3.4p4","stream":"TECH","releaseDate":"2016-04-20T10:50:41.942Z"},{"version":"5.4.0b15","stream":"BETA","releaseDate":"2016-04-18T10:10:26.21Z"},{"version":"5.3.4p3","stream":"TECH","releaseDate":"2016-04-13T10:24:45.535Z"},{"version":"5.4.0b14","stream":"BETA","releaseDate":"2016-04-11T11:55:25.285Z"},{"version":"5.3.4p2","stream":"TECH","releaseDate":"2016-04-08T13:41:06.681Z"},{"version":"5.4.0b13","stream":"BETA","releaseDate":"2016-04-04T09:27:37.064Z"},{"version":"5.4.0b12","stream":"BETA","releaseDate":"2016-03-29T16:39:18.712Z"},{"version":"5.3.4p1","stream":"TECH","releaseDate":"2016-03-23T22:30:26.074Z"},{"version":"5.4.0b11","stream":"BETA","releaseDate":"2016-03-21T11:52:03.765Z"},{"version":"5.4.0b10","stream":"BETA","releaseDate":"2016-03-15T13:45:23.973Z"},{"version":"5.3.4f1","stream":"LTS","releaseDate":"2016-03-15T13:33:58.451Z"},{"version":"5.3.3p3","stream":"TECH","releaseDate":"2016-03-14T17:48:02.217Z"},{"version":"5.4.0b9","stream":"BETA","releaseDate":"2016-03-08T10:03:52.265Z"},{"version":"5.3.3p2","stream":"TECH","releaseDate":"2016-03-04T16:05:49.874Z"},{"version":"5.4.0b8","stream":"BETA","releaseDate":"2016-03-02T12:14:56.597Z"},{"version":"5.3.3p1","stream":"TECH","releaseDate":"2016-02-24T16:53:39.519Z"},{"version":"5.3.3f1","stream":"LTS","releaseDate":"2016-02-23T12:53:03.453Z"},{"version":"5.4.0b7","stream":"BETA","releaseDate":"2016-02-22T14:29:51.467Z"},{"version":"5.3.2p4","stream":"TECH","releaseDate":"2016-02-20T19:48:43.616Z"},{"version":"5.4.0b6","stream":"BETA","releaseDate":"2016-02-15T16:11:52.055Z"},{"version":"5.3.2p3","stream":"TECH","releaseDate":"2016-02-12T09:22:27.923Z"},{"version":"5.4.0b5","stream":"BETA","releaseDate":"2016-02-09T16:00:54.01Z"},{"version":"5.3.2p2","stream":"TECH","releaseDate":"2016-02-03T18:16:50.764Z"},{"version":"5.4.0b4","stream":"BETA","releaseDate":"2016-01-30T14:05:07.635Z"},{"version":"5.3.2p1","stream":"TECH","releaseDate":"2016-01-28T16:05:44.713Z"},{"version":"5.3.2f1","stream":"LTS","releaseDate":"2016-01-27T15:27:25.943Z"},{"version":"5.3.1p4","stream":"TECH","releaseDate":"2016-01-23T12:12:30.074Z"},{"version":"5.4.0b3","stream":"BETA","releaseDate":"2016-01-22T17:00:02.981Z"},{"version":"5.4.0b2","stream":"BETA","releaseDate":"2016-01-15T11:09:43.69Z"},{"version":"5.3.1p3","stream":"TECH","releaseDate":"2016-01-14T17:48:48.731Z"},{"version":"5.4.0b1","stream":"BETA","releaseDate":"2016-01-12T22:10:16.262Z"},{"version":"5.3.1p2","stream":"TECH","releaseDate":"2016-01-08T12:16:04.435Z"},{"version":"5.3.1p1","stream":"TECH","releaseDate":"2016-01-08T12:10:16.321Z"},{"version":"5.3.1f1","stream":"LTS","releaseDate":"2015-12-18T14:23:10.274Z"},{"version":"5.2.4f1","stream":"LTS","releaseDate":"2015-12-15T16:37:45.105Z"},{"version":"5.2.3p3","stream":"TECH","releaseDate":"2015-12-10T10:23:24.949Z"},{"version":"5.3.0f4","stream":"LTS","releaseDate":"2015-12-07T22:12:35.035Z"},{"version":"5.2.3p2","stream":"TECH","releaseDate":"2015-12-03T12:16:45.571Z"},{"version":"5.2.3p1","stream":"TECH","releaseDate":"2015-11-27T15:42:46.602Z"},{"version":"5.3.0f2","stream":"LTS","releaseDate":"2015-11-23T15:08:26.331Z"},{"version":"5.2.3f1","stream":"LTS","releaseDate":"2015-11-19T10:38:36.694Z"},{"version":"5.2.2p4","stream":"TECH","releaseDate":"2015-11-18T11:12:41.143Z"},{"version":"5.3.0f1","stream":"LTS","releaseDate":"2015-11-14T15:28:15.863Z"},{"version":"5.2.2p3","stream":"TECH","releaseDate":"2015-11-10T16:44:28.035Z"},{"version":"5.3.0b6","stream":"BETA","releaseDate":"2015-11-09T15:44:01.764Z"},{"version":"5.3.0b5","stream":"BETA","releaseDate":"2015-11-02T17:19:46.615Z"},{"version":"5.2.2p2","stream":"TECH","releaseDate":"2015-10-30T16:26:48.959Z"},{"version":"5.2.2p1","stream":"TECH","releaseDate":"2015-10-24T17:00:34.513Z"},{"version":"5.3.0b4","stream":"BETA","releaseDate":"2015-10-23T12:11:59.016Z"},{"version":"5.2.2f1","stream":"LTS","releaseDate":"2015-10-21T13:11:59.792Z"},{"version":"5.3.0b3","stream":"BETA","releaseDate":"2015-10-16T20:48:22.978Z"},{"version":"5.2.1p4","stream":"TECH","releaseDate":"2015-10-15T06:00:51.32Z"},{"version":"5.3.0b2","stream":"BETA","releaseDate":"2015-10-10T13:11:44.641Z"},{"version":"5.2.1p3","stream":"TECH","releaseDate":"2015-10-09T14:49:17.051Z"},{"version":"5.1.4f1","stream":"LTS","releaseDate":"2015-10-06T08:17:42.759Z"},{"version":"5.3.0b1","stream":"BETA","releaseDate":"2015-10-02T19:38:07.851Z"},{"version":"5.2.1p2","stream":"TECH","releaseDate":"2015-10-01T13:15:11.225Z"},{"version":"5.2.1p1","stream":"TECH","releaseDate":"2015-09-25T13:13:16.856Z"},{"version":"5.2.1f1","stream":"LTS","releaseDate":"2015-09-22T12:24:32.468Z"},{"version":"5.2.0p1","stream":"TECH","releaseDate":"2015-09-18T00:00:00Z"},{"version":"5.1.3p3","stream":"TECH","releaseDate":"2015-09-11T00:00:00Z"},{"version":"5.1.3p2","stream":"TECH","releaseDate":"2015-09-04T00:00:00Z"},{"version":"5.2.0f3","stream":"LTS","releaseDate":"2015-09-03T09:33:57.148Z"},{"version":"5.1.3p1","stream":"TECH","releaseDate":"2015-08-27T00:00:00Z"},{"version":"5.1.3f1","stream":"LTS","releaseDate":"2015-08-24T09:50:04.179Z"},{"version":"5.2.0f2","stream":"LTS","releaseDate":"2015-08-21T15:46:49.996Z"},{"version":"5.2.0f1","stream":"LTS","releaseDate":"2015-08-16T15:50:39.469Z"},{"version":"5.2.0b6","stream":"BETA","releaseDate":"2015-08-07T19:27:28.2Z"},{"version":"5.1.2p3","stream":"TECH","releaseDate":"2015-08-06T15:11:03.99Z"},{"version":"5.2.0b5","stream":"BETA","releaseDate":"2015-07-31T10:58:16.63Z"},{"version":"5.1.2p2","stream":"TECH","releaseDate":"2015-07-30T16:04:41.211Z"},{"version":"5.2.0b4","stream":"BETA","releaseDate":"2015-07-23T15:55:44.27Z"},{"version":"5.1.2p1","stream":"TECH","releaseDate":"2015-07-23T15:20:51.984Z"},{"version":"5.2.0b3","stream":"BETA","releaseDate":"2015-07-17T19:58:20.57Z"},{"version":"5.1.2f1","stream":"LTS","releaseDate":"2015-07-16T08:54:11.096Z"},{"version":"5.2.0b2","stream":"BETA","releaseDate":"2015-07-10T18:37:49.539Z"},{"version":"5.1.1p4","stream":"TECH","releaseDate":"2015-07-10T09:08:40.175Z"},{"version":"5.0.4f1","stream":"LTS","releaseDate":"2015-07-06T12:10:34.23Z"},{"version":"5.1.1p3","stream":"TECH","releaseDate":"2015-07-03T16:18:12.615Z"},{"version":"5.2.0b1","stream":"BETA","releaseDate":"2015-07-01T16:26:20.921Z"},{"version":"5.1.1p2","stream":"TECH","releaseDate":"2015-06-25T21:27:14.067Z"},{"version":"5.0.3p3","stream":"TECH","releaseDate":"2015-06-24T15:55:13.644Z"},{"version":"5.1.1p1","stream":"TECH","releaseDate":"2015-06-23T15:05:55.566Z"},{"version":"5.1.1f1","stream":"LTS","releaseDate":"2015-06-18T10:20:02.247Z"},{"version":"5.0.3p2","stream":"TECH","releaseDate":"2015-06-18T00:00:00Z"},{"version":"5.1.0p1","stream":"TECH","releaseDate":"2015-06-12T00:00:00Z"},{"version":"5.0.3p1","stream":"TECH","releaseDate":"2015-06-11T00:00:00Z"},{"version":"5.0.3f2","stream":"LTS","releaseDate":"2015-06-09T15:36:46.869Z"},{"version":"5.1.0f3","stream":"LTS","releaseDate":"2015-06-03T21:31:28.217Z"},{"version":"5.0.2p4","stream":"TECH","releaseDate":"2015-06-03T00:00:00Z"},{"version":"5.0.2p3","stream":"TECH","releaseDate":"2015-05-28T00:00:00Z"},{"version":"5.0.2p2","stream":"TECH","releaseDate":"2015-05-20T00:00:00Z"},{"version":"5.0.2p1","stream":"TECH","releaseDate":"2015-05-15T00:00:00Z"},{"version":"5.0.2f1","stream":"LTS","releaseDate":"2015-05-13T14:05:42.791Z"},{"version":"5.0.1p4","stream":"TECH","releaseDate":"2015-05-08T10:25:56.976Z"},{"version":"5.0.1p3","stream":"TECH","releaseDate":"2015-04-29T00:00:00Z"},{"version":"5.0.1p2","stream":"TECH","releaseDate":"2015-04-24T14:14:44.97Z"},{"version":"5.0.1p1","stream":"TECH","releaseDate":"2015-04-16T08:21:07Z"},{"version":"5.0.1f1","stream":"LTS","releaseDate":"2015-03-31T16:55:08.376Z"},{"version":"5.0.0p3","stream":"TECH","releaseDate":"2015-03-26T12:03:56.068Z"},{"version":"5.0.0p2","stream":"TECH","releaseDate":"2015-03-20T16:38:49.515Z"},{"version":"5.0.0p1","stream":"TECH","releaseDate":"2015-03-16T15:20:13.604Z"},{"version":"5.0.0f4","stream":"LTS","releaseDate":"2015-02-25T15:49:05.835Z"}] \ No newline at end of file +[{"version":"6000.3.0b3","releaseDate":"2025-09-30T21:20:55.2365253+03:00","stream":"Beta"},{"version":"6000.3.0b4","releaseDate":"2025-09-30T21:20:55.2365253+03:00","stream":"Beta"},{"version":"6000.3.0b3","releaseDate":"2025-09-25T12:32:28.8700000+03:00","stream":"Tech"},{"version":"6000.2.6f1","releaseDate":"2025-09-25T12:31:26.1340000+03:00","stream":"Tech"},{"version":"6000.3.0b2","releaseDate":"2025-09-17T14:13:50.6420000+03:00","stream":"Tech"},{"version":"6000.2.5f1","releaseDate":"2025-09-17T08:28:37.0430000+03:00","stream":"Tech"},{"version":"6000.0.58f1","releaseDate":"2025-09-17T08:27:16.4870000+03:00","stream":"Tech"},{"version":"6000.2.4f1","releaseDate":"2025-09-12T12:50:41.4540000+03:00","stream":"Tech"},{"version":"6000.3.0b1","releaseDate":"2025-09-09T19:50:04.5110000+03:00","stream":"Tech"},{"version":"6000.2.3f1","releaseDate":"2025-09-04T18:48:31.8630000+03:00","stream":"Tech"},{"version":"6000.0.57f1","releaseDate":"2025-09-03T12:18:47.7990000+03:00","stream":"Tech"},{"version":"6000.2.2f1","releaseDate":"2025-08-26T23:57:12.7490000+03:00","stream":"Tech"},{"version":"6000.3.0a5","releaseDate":"2025-08-21T12:46:22.7360000+03:00","stream":"Tech"},{"version":"6000.2.1f1","releaseDate":"2025-08-20T21:26:03.3440000+03:00","stream":"Tech"},{"version":"6000.0.56f1","releaseDate":"2025-08-20T10:31:57.0100000+03:00","stream":"Tech"},{"version":"6000.1.16f1","releaseDate":"2025-08-13T13:01:50.9500000+03:00","stream":"Tech"},{"version":"6000.2.0f1","releaseDate":"2025-08-12T21:26:22.1900000+03:00","stream":"Tech"},{"version":"6000.2.0b13","releaseDate":"2025-08-08T01:59:59.6800000+03:00","stream":"Tech"},{"version":"6000.1.15f1","releaseDate":"2025-08-05T17:09:59.1050000+03:00","stream":"Tech"},{"version":"6000.0.55f1","releaseDate":"2025-08-05T16:33:24.7270000+03:00","stream":"Tech"},{"version":"6000.1.14f1","releaseDate":"2025-07-30T11:28:59.4950000+03:00","stream":"Tech"},{"version":"6000.2.0b12","releaseDate":"2025-07-29T20:28:17.2950000+03:00","stream":"Tech"},{"version":"6000.2.0b11","releaseDate":"2025-07-24T18:28:42.3790000+03:00","stream":"Tech"},{"version":"6000.3.0a3","releaseDate":"2025-07-23T18:26:41.8870000+03:00","stream":"Tech"},{"version":"6000.0.54f1","releaseDate":"2025-07-23T14:28:35.7140000+03:00","stream":"Tech"},{"version":"6000.1.13f1","releaseDate":"2025-07-23T09:54:37.0260000+03:00","stream":"Tech"},{"version":"6000.3.0a2","releaseDate":"2025-07-17T13:48:27.7620000+03:00","stream":"Tech"},{"version":"6000.2.0b10","releaseDate":"2025-07-16T16:54:47.1060000+03:00","stream":"Tech"},{"version":"6000.1.12f1","releaseDate":"2025-07-15T17:19:15.7530000+03:00","stream":"Tech"},{"version":"6000.2.0b9","releaseDate":"2025-07-09T19:49:32.8200000+03:00","stream":"Tech"},{"version":"6000.1.11f1","releaseDate":"2025-07-09T13:28:05.7180000+03:00","stream":"Tech"},{"version":"6000.0.53f1","releaseDate":"2025-07-09T09:34:27.5310000+03:00","stream":"Tech"},{"version":"6000.1.10f1","releaseDate":"2025-07-02T20:01:29.6990000+03:00","stream":"Tech"},{"version":"6000.2.0b8","releaseDate":"2025-07-02T19:48:35.9940000+03:00","stream":"Tech"},{"version":"6000.0.52f1","releaseDate":"2025-07-02T08:11:11.7010000+03:00","stream":"Tech"},{"version":"6000.2.0b7","releaseDate":"2025-06-24T18:49:01.1870000+03:00","stream":"Tech"},{"version":"6000.1.9f1","releaseDate":"2025-06-24T16:56:32.8380000+03:00","stream":"Tech"},{"version":"6000.1.8f1","releaseDate":"2025-06-18T08:09:52.6810000+03:00","stream":"Tech"},{"version":"6000.2.0b6","releaseDate":"2025-06-14T00:10:42.6505176+03:00","stream":"Beta"},{"version":"6000.1.7f1","releaseDate":"2025-06-11T16:28:11.0210000+03:00","stream":"Tech"},{"version":"6000.0.51f1","releaseDate":"2025-06-11T12:43:13.5700000+03:00","stream":"Tech"},{"version":"6000.2.0b5","releaseDate":"2025-06-05T21:43:56.6458275+03:00","stream":"Beta"},{"version":"6000.1.6f1","releaseDate":"2025-06-05T12:52:49.5640000+03:00","stream":"Tech"},{"version":"6000.2.0b4","releaseDate":"2025-06-04T08:33:17.6990000+03:00","stream":"Tech"},{"version":"6000.0.50f1","releaseDate":"2025-05-28T18:00:23.5230000+03:00","stream":"Tech"},{"version":"6000.1.5f1","releaseDate":"2025-05-28T17:09:19.2710000+03:00","stream":"Tech"},{"version":"6000.2.0b3","releaseDate":"2025-05-23T10:48:51.3054783+03:00","stream":"Beta"},{"version":"6000.1.4f1","releaseDate":"2025-05-21T12:38:18.0710000+03:00","stream":"Tech"},{"version":"6000.2.0b2","releaseDate":"2025-05-20T17:11:12.0840000+03:00","stream":"Tech"},{"version":"6000.2.0b1","releaseDate":"2025-05-15T12:05:37.2680000+03:00","stream":"Tech"},{"version":"6000.0.49f1","releaseDate":"2025-05-14T06:30:14.3260000+03:00","stream":"Tech"},{"version":"6000.1.3f1","releaseDate":"2025-05-14T06:29:42.5580000+03:00","stream":"Tech"},{"version":"2022.3.62f1","releaseDate":"2025-05-07T09:24:12.5330000+03:00","stream":"Tech"},{"version":"6000.1.2f1","releaseDate":"2025-05-06T20:34:03.1050000+03:00","stream":"Tech"},{"version":"6000.2.0a10","releaseDate":"2025-05-01T12:14:47.8870000+03:00","stream":"Tech"},{"version":"6000.1.1f1","releaseDate":"2025-04-29T19:39:51.9700000+03:00","stream":"Tech"},{"version":"6000.0.48f1","releaseDate":"2025-04-29T17:35:44.5230000+03:00","stream":"Tech"},{"version":"6000.1.0f1","releaseDate":"2025-04-23T19:39:14.5990000+03:00","stream":"Tech"},{"version":"6000.0.47f1","releaseDate":"2025-04-16T06:29:12.0920000+03:00","stream":"Tech"},{"version":"6000.1.0b15","releaseDate":"2025-04-16T06:28:31.9490000+03:00","stream":"Tech"},{"version":"6000.1.0b14","releaseDate":"2025-04-10T21:26:49.7290000+03:00","stream":"Tech"},{"version":"6000.0.46f1","releaseDate":"2025-04-10T05:59:39.0190000+03:00","stream":"Tech"},{"version":"6000.2.0a9","releaseDate":"2025-04-10T21:54:23.9518927+03:00","stream":"Alpha"},{"version":"2022.3.61f1","releaseDate":"2025-04-10T11:38:43.5390000+03:00","stream":"Tech"},{"version":"6000.1.0b13","releaseDate":"2025-04-03T17:02:05.1710000+03:00","stream":"Tech"},{"version":"6000.2.0a8","releaseDate":"2025-04-03T14:42:33.5640000+03:00","stream":"Tech"},{"version":"6000.0.45f1","releaseDate":"2025-04-02T20:28:25.2630000+03:00","stream":"Tech"},{"version":"6000.2.0a7","releaseDate":"2025-04-03T00:29:12.5673679+03:00","stream":"Alpha"},{"version":"6000.0.44f1","releaseDate":"2025-03-28T17:42:02.3830000+02:00","stream":"Tech"},{"version":"6000.1.0b12","releaseDate":"2025-03-28T17:41:15.4510000+02:00","stream":"Tech"},{"version":"6000.0.43f1","releaseDate":"2025-03-18T19:24:00.4850000+02:00","stream":"Tech"},{"version":"6000.1.0b11","releaseDate":"2025-03-13T23:12:53.3749487+02:00","stream":"Beta"},{"version":"6000.0.42f1","releaseDate":"2025-03-11T15:58:50.1000000+02:00","stream":"Tech"},{"version":"2022.3.60f1","releaseDate":"2025-03-12T12:34:20.8620000+02:00","stream":"Tech"},{"version":"6000.1.0b10","releaseDate":"2025-03-09T21:03:55.9859232+02:00","stream":"Beta"},{"version":"6000.2.0a6","releaseDate":"2025-03-05T12:38:42.7350000+02:00","stream":"Tech"},{"version":"6000.0.41f1","releaseDate":"2025-03-03T23:59:40.0490000+02:00","stream":"Tech"},{"version":"6000.1.0b9","releaseDate":"2025-02-26T20:38:37.1430029+02:00","stream":"Beta"},{"version":"2022.3.59f1","releaseDate":"2025-02-26T08:46:36.6070000+02:00","stream":"Tech"},{"version":"6000.0.40f1","releaseDate":"2025-02-25T18:31:05.0170000+02:00","stream":"Tech"},{"version":"6000.1.0b8","releaseDate":"2025-02-22T23:05:50.9086693+02:00","stream":"Beta"},{"version":"6000.2.0a4","releaseDate":"2025-02-19T16:48:33.1920000+02:00","stream":"Tech"},{"version":"6000.0.39f1","releaseDate":"2025-02-19T09:25:26.3610000+02:00","stream":"Tech"},{"version":"6000.1.0b7","releaseDate":"2025-02-19T09:25:03.6480000+02:00","stream":"Tech"},{"version":"2022.3.58f1","releaseDate":"2025-02-12T09:38:47.9230000+02:00","stream":"Tech"},{"version":"6000.1.0b6","releaseDate":"2025-02-11T17:27:26.4890000+02:00","stream":"Tech"},{"version":"6000.0.38f1","releaseDate":"2025-02-11T17:26:47.9610000+02:00","stream":"Tech"},{"version":"6000.1.0b5","releaseDate":"2025-02-04T18:57:33.9900000+02:00","stream":"Tech"},{"version":"6000.0.37f1","releaseDate":"2025-02-04T18:57:15.7990000+02:00","stream":"Tech"},{"version":"6000.2.0a1","releaseDate":"2025-01-29T12:20:51.8410000+02:00","stream":"Tech"},{"version":"2022.3.57f1","releaseDate":"2025-01-29T11:35:20.0040000+02:00","stream":"Tech"},{"version":"6000.1.0b4","releaseDate":"2025-01-28T20:18:53.6020000+02:00","stream":"Tech"},{"version":"6000.0.36f1","releaseDate":"2025-01-28T20:18:05.4190000+02:00","stream":"Tech"},{"version":"6000.0.35f1","releaseDate":"2025-01-22T20:20:41.5350000+02:00","stream":"Tech"},{"version":"6000.1.0b3","releaseDate":"2025-01-22T20:18:42.6480000+02:00","stream":"Tech"},{"version":"6000.1.0b2","releaseDate":"2025-01-16T14:57:55.2590000+02:00","stream":"Tech"},{"version":"6000.0.34f1","releaseDate":"2025-01-15T15:46:28.7450000+02:00","stream":"Tech"},{"version":"2022.3.56f1","releaseDate":"2025-01-15T09:37:15.3380000+02:00","stream":"Tech"},{"version":"6000.0.33f1","releaseDate":"2025-01-08T12:15:44.6480000+02:00","stream":"Tech"},{"version":"6000.1.0b1","releaseDate":"2025-01-07T23:50:17.2740000+02:00","stream":"Tech"},{"version":"6000.0.32f1","releaseDate":"2024-12-19T17:34:00.0720000+02:00","stream":"Tech"},{"version":"6000.1.0a9","releaseDate":"2024-12-18T10:40:10.1340000+02:00","stream":"Tech"},{"version":"2022.3.55f1","releaseDate":"2024-12-17T18:21:09.4100000+02:00","stream":"Tech"},{"version":"6000.1.0a8","releaseDate":"2024-12-15T18:28:59.7430639+02:00","stream":"Alpha"},{"version":"6000.0.31f1","releaseDate":"2024-12-10T22:18:02.5280000+02:00","stream":"Tech"},{"version":"6000.1.0a8","releaseDate":"2024-12-10T22:17:32.5920000+02:00","stream":"Tech"},{"version":"6000.1.0a7","releaseDate":"2024-12-05T08:33:50.3480000+02:00","stream":"Tech"},{"version":"6000.0.30f1","releaseDate":"2024-12-04T16:36:24.5510000+02:00","stream":"Tech"},{"version":"2022.3.54f1","releaseDate":"2024-12-04T16:24:52.8920000+02:00","stream":"Tech"},{"version":"6000.1.0a6","releaseDate":"2024-11-28T13:20:00.3060000+02:00","stream":"Tech"},{"version":"6000.0.29f1","releaseDate":"2024-11-28T11:51:13.4500000+02:00","stream":"Tech"},{"version":"6000.0.28f1","releaseDate":"2024-11-20T17:26:35.0740000+02:00","stream":"Tech"},{"version":"6000.1.0a5","releaseDate":"2024-11-20T06:47:45.8140000+02:00","stream":"Tech"},{"version":"2022.3.53f1","releaseDate":"2024-11-19T18:19:05.9770000+02:00","stream":"Tech"},{"version":"6000.0.27f1","releaseDate":"2024-11-14T09:07:52.6160000+02:00","stream":"Tech"},{"version":"6000.1.0a4","releaseDate":"2024-11-14T08:21:53.5470000+02:00","stream":"Tech"},{"version":"6000.1.0a3","releaseDate":"2024-10-31T02:09:14.4710000+02:00","stream":"Tech"},{"version":"6000.0.26f1","releaseDate":"2024-11-07T05:58:16.8120000+02:00","stream":"Tech"},{"version":"2022.3.52f1","releaseDate":"2024-11-06T08:44:56.0460000+02:00","stream":"Tech"},{"version":"6000.0.25f1","releaseDate":"2024-10-31T02:08:57.1640000+02:00","stream":"LTS"},{"version":"6000.1.0a2","releaseDate":"2024-10-31T01:18:23.1720000+02:00","stream":"Alpha"},{"version":"6000.0.24f1","releaseDate":"2024-10-24T07:50:49.7030000+03:00","stream":"LTS"},{"version":"2022.3.51f1","releaseDate":"2024-10-22T19:55:03.7950000+03:00","stream":"LTS"},{"version":"6000.0.23f1","releaseDate":"2024-10-17T02:50:12.5800000+03:00","stream":"LTS"},{"version":"2021.3.45f1","releaseDate":"2024-10-16T11:39:15.9770000+03:00","stream":"LTS"},{"version":"2022.3.50f1","releaseDate":"2024-10-09T12:22:48.6100000+03:00","stream":"LTS"},{"version":"6000.0.22f1","releaseDate":"2024-10-02T22:04:27.2050000+03:00","stream":"Tech"},{"version":"2022.3.49f1","releaseDate":"2024-10-01T17:05:21.8390000+03:00","stream":"LTS"},{"version":"2022.3.48f1","releaseDate":"2024-09-26T21:38:03.7600000+03:00","stream":"LTS"},{"version":"6000.0.21f1","releaseDate":"2024-09-24T19:11:20.5860000+03:00","stream":"Tech"},{"version":"2021.3.44f1","releaseDate":"2024-09-23T17:46:08.5310000+03:00","stream":"LTS"},{"version":"6000.0.20f1","releaseDate":"2024-09-19T18:22:09.9610000+03:00","stream":"Tech"},{"version":"2022.3.47f1","releaseDate":"2024-09-18T09:44:50.2140000+03:00","stream":"LTS"},{"version":"6000.0.19f1","releaseDate":"2024-09-12T04:29:34.6560000+03:00","stream":"Tech"},{"version":"2022.3.46f1","releaseDate":"2024-09-10T19:41:40.2330000+03:00","stream":"LTS"},{"version":"6000.0.18f1","releaseDate":"2024-09-04T09:08:14.6900000+03:00","stream":"Tech"},{"version":"2022.3.45f1","releaseDate":"2024-09-04T01:44:17.3580000+03:00","stream":"LTS"},{"version":"6000.0.17f1","releaseDate":"2024-08-27T19:52:36.7630000+03:00","stream":"Tech"},{"version":"2022.3.44f1","releaseDate":"2024-08-23T09:10:50.9750000+03:00","stream":"LTS"},{"version":"6000.0.16f1","releaseDate":"2024-08-22T21:12:19.7750000+03:00","stream":"Tech"},{"version":"2021.3.43f1","releaseDate":"2024-08-22T13:10:30.8490000+03:00","stream":"LTS"},{"version":"2022.3.43f1","releaseDate":"2024-08-21T17:11:42.7280000+03:00","stream":"LTS"},{"version":"6000.0.15f1","releaseDate":"2024-08-13T21:03:16.7920000+03:00","stream":"Tech"},{"version":"2022.3.42f1","releaseDate":"2024-08-13T12:26:14.2690000+03:00","stream":"LTS"},{"version":"6000.0.14f1","releaseDate":"2024-08-07T08:59:10.6590000+03:00","stream":"Tech"},{"version":"2022.3.41f1","releaseDate":"2024-08-06T13:07:06.8530000+03:00","stream":"LTS"},{"version":"2021.3.42f1","releaseDate":"2024-08-06T12:30:24.6020000+03:00","stream":"LTS"},{"version":"6000.0.13f1","releaseDate":"2024-07-31T21:30:12.3520000+03:00","stream":"Tech"},{"version":"2022.3.40f1","releaseDate":"2024-07-30T17:14:27.5360000+03:00","stream":"LTS"},{"version":"6000.0.12f1","releaseDate":"2024-07-25T19:59:55.9270000+03:00","stream":"Tech"},{"version":"2022.3.39f1","releaseDate":"2024-07-23T19:04:16.2020000+03:00","stream":"LTS"},{"version":"2021.3.41f1","releaseDate":"2024-07-23T17:54:58.7980000+03:00","stream":"LTS"},{"version":"6000.0.11f1","releaseDate":"2024-07-17T13:16:09.0230000+03:00","stream":"Tech"},{"version":"2022.3.38f1","releaseDate":"2024-07-16T16:52:35.9940000+03:00","stream":"LTS"},{"version":"6000.0.10f1","releaseDate":"2024-07-10T19:45:22.4880000+03:00","stream":"Tech"},{"version":"2022.3.37f1","releaseDate":"2024-07-09T15:05:40.0740000+03:00","stream":"LTS"},{"version":"6000.0.9f1","releaseDate":"2024-07-03T17:22:27.3520000+03:00","stream":"Tech"},{"version":"2022.3.36f1","releaseDate":"2024-07-02T20:23:09.1240000+03:00","stream":"LTS"},{"version":"6000.0.8f1","releaseDate":"2024-06-28T18:36:42.0980000+03:00","stream":"Tech"},{"version":"2022.3.35f1","releaseDate":"2024-06-27T20:06:27.0820000+03:00","stream":"LTS"},{"version":"2021.3.40f1","releaseDate":"2024-06-27T05:15:04.4950000+03:00","stream":"LTS"},{"version":"6000.0.7f1","releaseDate":"2024-06-20T19:04:46.2760000+03:00","stream":"Tech"},{"version":"2022.3.34f1","releaseDate":"2024-06-18T14:27:05.7060000+03:00","stream":"LTS"},{"version":"2022.3.33f1","releaseDate":"2024-06-12T09:22:11.9550000+03:00","stream":"LTS"},{"version":"6000.0.5f1","releaseDate":"2024-06-04T21:54:20.5720000+03:00","stream":"Tech"},{"version":"2022.3.32f1","releaseDate":"2024-06-04T20:45:52.3580000+03:00","stream":"LTS"},{"version":"6000.0.4f1","releaseDate":"2024-05-29T19:49:19.3410000+03:00","stream":"Tech"},{"version":"2022.3.31f1","releaseDate":"2024-05-28T20:19:07.2650000+03:00","stream":"LTS"},{"version":"2021.3.39f1","releaseDate":"2024-05-28T19:13:34.5600000+03:00","stream":"LTS"},{"version":"6000.0.3f1","releaseDate":"2024-05-21T19:15:54.9330000+03:00","stream":"Tech"},{"version":"2022.3.30f1","releaseDate":"2024-05-21T15:05:13.7390000+03:00","stream":"LTS"},{"version":"6000.0.2f1","releaseDate":"2024-05-14T22:54:04.4270000+03:00","stream":"Tech"},{"version":"2022.3.29f1","releaseDate":"2024-05-14T18:20:52.9280000+03:00","stream":"LTS"},{"version":"6000.0.1f1","releaseDate":"2024-05-08T18:11:21.9000000+03:00","stream":"Tech"},{"version":"2022.3.28f1","releaseDate":"2024-05-07T18:20:10.5920000+03:00","stream":"LTS"},{"version":"2021.3.38f1","releaseDate":"2024-05-02T21:42:56.7610000+03:00","stream":"LTS"},{"version":"2022.3.27f1","releaseDate":"2024-04-30T20:28:32.4380000+03:00","stream":"LTS"},{"version":"6000.0.0f1","releaseDate":"2024-04-29T21:37:33.4220000+03:00","stream":"Tech"},{"version":"2023.2.20f1","releaseDate":"2024-04-25T22:29:55.5280000+03:00","stream":"Tech"},{"version":"2022.3.26f1","releaseDate":"2024-04-23T20:47:02.1750000+03:00","stream":"LTS"},{"version":"6000.0.0b16","releaseDate":"2024-04-19T18:47:47.0120000+03:00","stream":"Beta"},{"version":"2023.2.19f1","releaseDate":"2024-04-18T11:21:36.2640000+03:00","stream":"Tech"},{"version":"2022.3.25f1","releaseDate":"2024-04-16T15:56:01.9400000+03:00","stream":"LTS"},{"version":"6000.0.0b15","releaseDate":"2024-04-13T03:46:31.3090000+03:00","stream":"Beta"},{"version":"2023.2.18f1","releaseDate":"2024-04-10T00:11:33.7860000+03:00","stream":"Tech"},{"version":"2022.3.24f1","releaseDate":"2024-04-09T14:12:12.5040000+03:00","stream":"LTS"},{"version":"2023.2.17f1","releaseDate":"2024-04-04T04:45:09.5450000+03:00","stream":"Tech"},{"version":"2022.3.23f1","releaseDate":"2024-04-02T18:24:02.3240000+03:00","stream":"LTS"},{"version":"2021.3.37f1","releaseDate":"2024-04-02T16:12:43.5310000+03:00","stream":"LTS"},{"version":"6000.0.0b13","releaseDate":"2024-03-27T03:28:00.3900000+02:00","stream":"Beta"},{"version":"2023.2.16f1","releaseDate":"2024-03-27T03:03:51.3150000+02:00","stream":"Tech"},{"version":"2023.2.15f1","releaseDate":"2024-03-19T23:07:34.0340000+02:00","stream":"Tech"},{"version":"6000.0.0b12","releaseDate":"2024-03-19T21:32:02.8890000+02:00","stream":"Beta"},{"version":"2022.3.22f1","releaseDate":"2024-03-19T13:06:29.3290000+02:00","stream":"LTS"},{"version":"6000.0.0b11","releaseDate":"2024-03-13T23:20:06.4030000+02:00","stream":"Beta"},{"version":"2023.2.14f1","releaseDate":"2024-03-12T20:27:41.7580000+02:00","stream":"Tech"},{"version":"2023.2.13f1","releaseDate":"2024-03-05T22:41:13.8390000+02:00","stream":"Tech"},{"version":"2023.3.0b10","releaseDate":"2024-03-05T21:08:01.4850000+02:00","stream":"Beta"},{"version":"2021.3.36f1","releaseDate":"2024-03-05T20:42:24.1710000+02:00","stream":"LTS"},{"version":"2022.3.21f1","releaseDate":"2024-03-05T18:04:04.8580000+02:00","stream":"LTS"},{"version":"2023.2.12f1","releaseDate":"2024-02-29T01:06:57.2790000+02:00","stream":"Tech"},{"version":"2023.3.0b9","releaseDate":"2024-02-28T23:32:42.6980000+02:00","stream":"Beta"},{"version":"2023.2.11f1","releaseDate":"2024-02-20T23:17:45.0260000+02:00","stream":"Tech"},{"version":"2023.3.0b8","releaseDate":"2024-02-20T21:40:27.1710000+02:00","stream":"Beta"},{"version":"2023.2.10f1","releaseDate":"2024-02-14T21:39:19.8910000+02:00","stream":"Tech"},{"version":"2022.3.20f1","releaseDate":"2024-02-14T13:25:56.5410000+02:00","stream":"LTS"},{"version":"2023.3.0b7","releaseDate":"2024-02-13T21:59:14.7140000+02:00","stream":"Beta"},{"version":"2023.3.0b6","releaseDate":"2024-02-07T09:24:40.2320000+02:00","stream":"Beta"},{"version":"2023.2.9f1","releaseDate":"2024-02-07T08:56:57.6470000+02:00","stream":"Tech"},{"version":"2021.3.35f1","releaseDate":"2024-02-06T17:40:15.5830000+02:00","stream":"LTS"},{"version":"2022.3.19f1","releaseDate":"2024-01-31T13:56:51.6340000+02:00","stream":"LTS"},{"version":"2023.3.0b5","releaseDate":"2024-01-31T02:28:33.7000000+02:00","stream":"Beta"},{"version":"2023.2.8f1","releaseDate":"2024-01-31T02:02:00.5870000+02:00","stream":"Tech"},{"version":"2023.2.7f1","releaseDate":"2024-01-23T22:43:04.8780000+02:00","stream":"Tech"},{"version":"2023.3.0b4","releaseDate":"2024-01-23T21:12:34.8720000+02:00","stream":"Beta"},{"version":"2022.3.18f1","releaseDate":"2024-01-20T18:00:12.2100000+02:00","stream":"LTS"},{"version":"2023.2.6f1","releaseDate":"2024-01-17T07:22:12.1160000+02:00","stream":"Tech"},{"version":"2023.3.0b3","releaseDate":"2024-01-15T07:07:54.4010000+02:00","stream":"Beta"},{"version":"2023.3.0b2","releaseDate":"2024-01-09T23:10:15.9440000+02:00","stream":"Beta"},{"version":"2021.3.34f1","releaseDate":"2024-01-09T17:33:57.0130000+02:00","stream":"LTS"},{"version":"2022.3.17f1","releaseDate":"2024-01-09T15:24:21.3090000+02:00","stream":"LTS"},{"version":"2023.2.5f1","releaseDate":"2024-01-09T10:49:30.8570000+02:00","stream":"Tech"},{"version":"2023.3.0b1","releaseDate":"2024-01-03T04:06:01.1860000+02:00","stream":"Beta"},{"version":"2023.2.4f1","releaseDate":"2023-12-22T13:24:31.4620000+02:00","stream":"Tech"},{"version":"2022.3.16f1","releaseDate":"2023-12-19T12:05:11.7210000+02:00","stream":"LTS"},{"version":"2023.3.0a18","releaseDate":"2023-12-13T23:40:57.5080000+02:00","stream":"Alpha"},{"version":"2023.2.3f1","releaseDate":"2023-12-06T00:03:42.7620000+02:00","stream":"Tech"},{"version":"2023.3.0a17","releaseDate":"2023-12-05T22:29:50.0710000+02:00","stream":"Alpha"},{"version":"2022.3.15f1","releaseDate":"2023-12-05T18:41:51.6760000+02:00","stream":"LTS"},{"version":"2023.2.2f1","releaseDate":"2023-11-28T22:28:30.9510000+02:00","stream":"Tech"},{"version":"2023.3.0a16","releaseDate":"2023-11-28T20:53:03.1050000+02:00","stream":"Alpha"},{"version":"2021.3.33f1","releaseDate":"2023-11-28T17:21:35.6330000+02:00","stream":"LTS"},{"version":"2023.2.1f1","releaseDate":"2023-11-22T00:09:38.4850000+02:00","stream":"Tech"},{"version":"2022.3.14f1","releaseDate":"2023-11-21T22:07:15.6700000+02:00","stream":"LTS"},{"version":"2023.3.0a15","releaseDate":"2023-11-21T19:46:47.0020000+02:00","stream":"Alpha"},{"version":"2023.2.0f1","releaseDate":"2023-11-15T01:22:44.2930000+02:00","stream":"Tech"},{"version":"2023.3.0a14","releaseDate":"2023-11-14T23:47:34.4680000+02:00","stream":"Alpha"},{"version":"2023.1.20f1","releaseDate":"2023-11-09T13:37:53.0800000+02:00","stream":"Tech"},{"version":"2022.3.13f1","releaseDate":"2023-11-07T19:33:11.8460000+02:00","stream":"LTS"},{"version":"2023.3.0a13","releaseDate":"2023-11-07T15:03:31.6360000+02:00","stream":"Alpha"},{"version":"2023.2.0b17","releaseDate":"2023-11-07T03:15:49.7360000+02:00","stream":"Beta"},{"version":"2021.3.32f1","releaseDate":"2023-11-01T17:47:25.8010000+02:00","stream":"LTS"},{"version":"2023.2.0b16","releaseDate":"2023-11-01T09:07:29.0190000+02:00","stream":"Beta"},{"version":"2023.3.0a12","releaseDate":"2023-10-31T22:54:47.4610000+02:00","stream":"Alpha"},{"version":"2023.1.19f1","releaseDate":"2023-10-31T16:12:27.1350000+02:00","stream":"Tech"},{"version":"2023.3.0a11","releaseDate":"2023-10-26T23:42:38.0140000+03:00","stream":"Alpha"},{"version":"2023.2.0b15","releaseDate":"2023-10-26T22:42:17.8000000+03:00","stream":"Beta"},{"version":"2022.3.12f1","releaseDate":"2023-10-26T17:00:14.6020000+03:00","stream":"LTS"},{"version":"2023.1.18f1","releaseDate":"2023-10-24T19:38:46.5580000+03:00","stream":"Tech"},{"version":"2023.1.17f1","releaseDate":"2023-10-17T16:06:27.2150000+03:00","stream":"Tech"},{"version":"2023.2.0b14","releaseDate":"2023-10-16T19:49:19.2110000+03:00","stream":"Beta"},{"version":"2023.3.0a10","releaseDate":"2023-10-16T18:53:09.4090000+03:00","stream":"Alpha"},{"version":"2023.2.0b13","releaseDate":"2023-10-11T02:43:50.4180000+03:00","stream":"Beta"},{"version":"2022.3.11f1","releaseDate":"2023-10-10T18:27:45.5750000+03:00","stream":"LTS"},{"version":"2023.2.0b12","releaseDate":"2023-10-05T08:35:01.2590000+03:00","stream":"Beta"},{"version":"2023.3.0a8","releaseDate":"2023-10-05T07:37:32.5410000+03:00","stream":"Alpha"},{"version":"2023.1.16f1","releaseDate":"2023-10-03T20:51:07.9240000+03:00","stream":"Tech"},{"version":"2021.3.31f1","releaseDate":"2023-10-03T18:50:59.1880000+03:00","stream":"LTS"},{"version":"2023.2.0b11","releaseDate":"2023-09-27T22:03:28.2830000+03:00","stream":"Beta"},{"version":"2023.1.15f1","releaseDate":"2023-09-26T16:26:57.1220000+03:00","stream":"Tech"},{"version":"2023.3.0a6","releaseDate":"2023-09-21T22:57:30.1720000+03:00","stream":"Alpha"},{"version":"2023.2.0b10","releaseDate":"2023-09-21T03:25:39.0680000+03:00","stream":"Beta"},{"version":"2023.3.0a7","releaseDate":"2023-09-21T02:32:03.4860000+03:00","stream":"Alpha"},{"version":"2023.1.14f1","releaseDate":"2023-09-19T16:45:02.8020000+03:00","stream":"Tech"},{"version":"2022.3.10f1","releaseDate":"2023-09-19T14:09:17.9240000+03:00","stream":"LTS"},{"version":"2023.2.0b9","releaseDate":"2023-09-13T19:47:50.2650000+03:00","stream":"Beta"},{"version":"2023.3.0a5","releaseDate":"2023-09-13T11:39:30.3420000+03:00","stream":"Alpha"},{"version":"2023.1.13f1","releaseDate":"2023-09-12T19:45:26.5060000+03:00","stream":"Tech"},{"version":"2023.2.0b8","releaseDate":"2023-09-07T03:06:06.6190000+03:00","stream":"Beta"},{"version":"2023.3.0a4","releaseDate":"2023-09-07T02:09:51.7610000+03:00","stream":"Alpha"},{"version":"2023.1.12f1","releaseDate":"2023-09-05T16:19:07.6000000+03:00","stream":"Tech"},{"version":"2022.3.9f1","releaseDate":"2023-09-05T14:20:42.5520000+03:00","stream":"LTS"},{"version":"2023.3.0a3","releaseDate":"2023-08-30T02:57:28.4560000+03:00","stream":"Alpha"},{"version":"2023.1.11f1","releaseDate":"2023-08-30T02:34:23.2510000+03:00","stream":"Tech"},{"version":"2023.2.0b7","releaseDate":"2023-08-30T01:05:40.2550000+03:00","stream":"Beta"},{"version":"2021.3.30f1","releaseDate":"2023-08-30T01:00:32.9160000+03:00","stream":"LTS"},{"version":"2023.2.0b6","releaseDate":"2023-08-23T19:37:08.1570000+03:00","stream":"Beta"},{"version":"2022.3.8f1","releaseDate":"2023-08-22T19:08:57.6900000+03:00","stream":"LTS"},{"version":"2023.1.10f1","releaseDate":"2023-08-22T12:04:56.8560000+03:00","stream":"Tech"},{"version":"2023.2.0b5","releaseDate":"2023-08-15T22:46:13.9610000+03:00","stream":"Beta"},{"version":"2023.1.9f1","releaseDate":"2023-08-15T11:51:07.4310000+03:00","stream":"Tech"},{"version":"2023.2.0b4","releaseDate":"2023-08-10T19:28:52.9540000+03:00","stream":"Beta"},{"version":"2023.1.8f1","releaseDate":"2023-08-08T13:46:36.3470000+03:00","stream":"Tech"},{"version":"2022.3.7f1","releaseDate":"2023-08-08T12:39:39.2500000+03:00","stream":"LTS"},{"version":"2023.2.0b3","releaseDate":"2023-08-02T00:20:07.9800000+03:00","stream":"Beta"},{"version":"2023.1.7f1","releaseDate":"2023-08-01T14:52:30.6880000+03:00","stream":"Tech"},{"version":"2022.3.6f1","releaseDate":"2023-07-31T21:44:28.3130000+03:00","stream":"LTS"},{"version":"2023.2.0b2","releaseDate":"2023-07-26T18:36:17.0900000+03:00","stream":"Beta"},{"version":"2023.1.6f1","releaseDate":"2023-07-25T17:07:19.6790000+03:00","stream":"Tech"},{"version":"2021.3.29f1","releaseDate":"2023-07-25T15:13:45.7210000+03:00","stream":"LTS"},{"version":"2023.2.0b1","releaseDate":"2023-07-19T20:48:18.0780000+03:00","stream":"Beta"},{"version":"2023.1.5f1","releaseDate":"2023-07-18T12:47:39.8830000+03:00","stream":"Tech"},{"version":"2022.3.5f1","releaseDate":"2023-07-13T19:12:49.1180000+03:00","stream":"LTS"},{"version":"2023.1.4f1","releaseDate":"2023-07-13T12:22:35.2840000+03:00","stream":"Tech"},{"version":"2023.2.0a22","releaseDate":"2023-07-10T13:49:24.5250000+03:00","stream":"Alpha"},{"version":"2023.1.3f1","releaseDate":"2023-07-05T13:38:33.7830000+03:00","stream":"Tech"},{"version":"2021.3.28f1","releaseDate":"2023-07-04T22:41:02.2050000+03:00","stream":"LTS"},{"version":"2023.1.2f1","releaseDate":"2023-06-26T20:35:53.2890000+03:00","stream":"Tech"},{"version":"2022.3.4f1","releaseDate":"2023-06-26T19:47:18.7050000+03:00","stream":"LTS"},{"version":"2023.2.0a20","releaseDate":"2023-06-21T22:58:23.5890000+03:00","stream":"Alpha"},{"version":"2022.3.3f1","releaseDate":"2023-06-21T18:21:19.0310000+03:00","stream":"LTS"},{"version":"2023.1.1f1","releaseDate":"2023-06-21T17:44:26.6940000+03:00","stream":"Tech"},{"version":"2023.2.0a19","releaseDate":"2023-06-13T20:56:46.9020000+03:00","stream":"Alpha"},{"version":"2022.3.2f1","releaseDate":"2023-06-13T20:35:17.0320000+03:00","stream":"LTS"},{"version":"2023.1.0f1","releaseDate":"2023-06-12T23:09:17.9400000+03:00","stream":"Tech"},{"version":"2021.3.27f1","releaseDate":"2023-06-07T19:35:21.2420000+03:00","stream":"LTS"},{"version":"2023.2.0a18","releaseDate":"2023-06-07T18:05:43.8610000+03:00","stream":"Alpha"},{"version":"2023.1.0b20","releaseDate":"2023-06-07T17:07:58.1050000+03:00","stream":"Beta"},{"version":"2022.3.1f1","releaseDate":"2023-06-07T14:44:18.6430000+03:00","stream":"LTS"},{"version":"2023.1.0b19","releaseDate":"2023-06-01T00:22:40.7160000+03:00","stream":"Beta"},{"version":"2023.2.0a17","releaseDate":"2023-05-31T22:36:57.5850000+03:00","stream":"Alpha"},{"version":"2022.3.0f1","releaseDate":"2023-05-30T13:40:13.8580000+03:00","stream":"LTS"},{"version":"2021.3.26f1","releaseDate":"2023-05-25T14:47:02.1500000+03:00","stream":"LTS"},{"version":"2023.2.0a16","releaseDate":"2023-05-24T23:32:01.9930000+03:00","stream":"Alpha"},{"version":"2023.1.0b18","releaseDate":"2023-05-24T17:12:55.4530000+03:00","stream":"Beta"},{"version":"2022.2.21f1","releaseDate":"2023-05-24T14:15:23.9850000+03:00","stream":"Tech"},{"version":"2022.2.20f1","releaseDate":"2023-05-18T12:58:25.7740000+03:00","stream":"Tech"},{"version":"2023.2.0a15","releaseDate":"2023-05-17T23:05:43.2150000+03:00","stream":"Alpha"},{"version":"2020.3.48f1","releaseDate":"2023-05-17T20:23:52.7840000+03:00","stream":"LTS"},{"version":"2023.1.0b17","releaseDate":"2023-05-17T19:32:57.0910000+03:00","stream":"Beta"},{"version":"2021.3.25f1","releaseDate":"2023-05-11T16:55:39.0570000+03:00","stream":"LTS"},{"version":"2022.2.19f1","releaseDate":"2023-05-11T15:02:51.9390000+03:00","stream":"Tech"},{"version":"2023.1.0b16","releaseDate":"2023-05-11T04:23:47.7980000+03:00","stream":"Beta"},{"version":"2023.2.0a14","releaseDate":"2023-05-10T22:50:11.4440000+03:00","stream":"Alpha"},{"version":"2023.1.0b15","releaseDate":"2023-05-04T18:09:21.8720000+03:00","stream":"Beta"},{"version":"2022.2.18f1","releaseDate":"2023-05-04T17:54:59.9510000+03:00","stream":"Tech"},{"version":"2023.2.0a13","releaseDate":"2023-05-03T22:08:00.7610000+03:00","stream":"Alpha"},{"version":"2022.2.17f1","releaseDate":"2023-04-27T20:55:43.2970000+03:00","stream":"Tech"},{"version":"2021.3.24f1","releaseDate":"2023-04-27T20:16:27.5610000+03:00","stream":"LTS"},{"version":"2023.2.0a12","releaseDate":"2023-04-27T17:39:10.7740000+03:00","stream":"Alpha"},{"version":"2023.1.0b14","releaseDate":"2023-04-26T20:38:33.8280000+03:00","stream":"Beta"},{"version":"2023.2.0a11","releaseDate":"2023-04-20T02:11:25.8420000+03:00","stream":"Alpha"},{"version":"2023.1.0b13","releaseDate":"2023-04-19T18:38:30.4380000+03:00","stream":"Beta"},{"version":"2022.2.16f1","releaseDate":"2023-04-19T17:00:29.7910000+03:00","stream":"Tech"},{"version":"2021.3.23f1","releaseDate":"2023-04-14T06:05:53.4110000+03:00","stream":"LTS"},{"version":"2022.2.15f1","releaseDate":"2023-04-13T16:56:06.9490000+03:00","stream":"Tech"},{"version":"2023.2.0a10","releaseDate":"2023-04-12T20:57:27.3950000+03:00","stream":"Alpha"},{"version":"2023.1.0b12","releaseDate":"2023-04-12T19:58:27.1750000+03:00","stream":"Beta"},{"version":"2022.2.14f1","releaseDate":"2023-04-06T01:20:20.9000000+03:00","stream":"Tech"},{"version":"2023.2.0a9","releaseDate":"2023-04-05T20:17:10.3830000+03:00","stream":"Alpha"},{"version":"2020.3.47f1","releaseDate":"2023-04-05T19:12:43.4140000+03:00","stream":"LTS"},{"version":"2023.1.0b11","releaseDate":"2023-04-05T00:58:08.4100000+03:00","stream":"Beta"},{"version":"2022.2.13f1","releaseDate":"2023-03-31T17:48:28.3060000+03:00","stream":"Tech"},{"version":"2021.3.22f1","releaseDate":"2023-03-29T23:44:06.1310000+03:00","stream":"LTS"},{"version":"2023.1.0b10","releaseDate":"2023-03-29T22:31:31.4270000+03:00","stream":"Beta"},{"version":"2023.2.0a8","releaseDate":"2023-03-29T20:45:36.7180000+03:00","stream":"Alpha"},{"version":"2023.2.0a7","releaseDate":"2023-03-22T23:21:49.2770000+02:00","stream":"Alpha"},{"version":"2022.2.12f1","releaseDate":"2023-03-22T21:38:11.7020000+02:00","stream":"Tech"},{"version":"2023.1.0b9","releaseDate":"2023-03-22T19:34:30.5930000+02:00","stream":"Beta"},{"version":"2023.2.0a6","releaseDate":"2023-03-15T19:05:39.9400000+02:00","stream":"Alpha"},{"version":"2023.1.0b8","releaseDate":"2023-03-15T17:20:07.0490000+02:00","stream":"Beta"},{"version":"2021.3.21f1","releaseDate":"2023-03-15T05:07:29.3970000+02:00","stream":"LTS"},{"version":"2022.2.11f1","releaseDate":"2023-03-15T04:33:37.4390000+02:00","stream":"Tech"},{"version":"2022.2.10f1","releaseDate":"2023-03-09T03:37:14.1860000+02:00","stream":"Tech"},{"version":"2020.3.46f1","releaseDate":"2023-03-08T18:13:10.8010000+02:00","stream":"LTS"},{"version":"2023.1.0b7","releaseDate":"2023-03-07T19:21:08.1180000+02:00","stream":"Beta"},{"version":"2022.2.9f1","releaseDate":"2023-03-03T03:54:20.1620000+02:00","stream":"Tech"},{"version":"2021.3.20f1","releaseDate":"2023-03-03T01:34:21.4780000+02:00","stream":"LTS"},{"version":"2023.1.0b6","releaseDate":"2023-03-02T19:05:36.6970000+02:00","stream":"Beta"},{"version":"2022.2.8f1","releaseDate":"2023-02-23T17:21:52.5810000+02:00","stream":"Tech"},{"version":"2023.1.0b5","releaseDate":"2023-02-22T16:43:31.6520000+02:00","stream":"Beta"},{"version":"2021.3.19f1","releaseDate":"2023-02-17T17:24:45.3250000+02:00","stream":"LTS"},{"version":"2023.1.0b4","releaseDate":"2023-02-16T18:12:27.2890000+02:00","stream":"Beta"},{"version":"2022.2.7f1","releaseDate":"2023-02-15T22:59:18.6940000+02:00","stream":"Tech"},{"version":"2020.3.45f1","releaseDate":"2023-02-14T23:48:56.7970000+02:00","stream":"LTS"},{"version":"2022.2.6f1","releaseDate":"2023-02-10T03:46:54.4290000+02:00","stream":"Tech"},{"version":"2023.1.0b3","releaseDate":"2023-02-08T18:02:45.1480000+02:00","stream":"Beta"},{"version":"2021.3.18f1","releaseDate":"2023-02-01T22:10:11.4750000+02:00","stream":"LTS"},{"version":"2023.1.0b2","releaseDate":"2023-02-01T16:26:56.9800000+02:00","stream":"Beta"},{"version":"2022.2.5f1","releaseDate":"2023-01-31T22:58:08.2060000+02:00","stream":"Tech"},{"version":"2022.2.4f1","releaseDate":"2023-01-27T16:41:48.2250000+02:00","stream":"Tech"},{"version":"2023.1.0b1","releaseDate":"2023-01-24T18:35:43.4020000+02:00","stream":"Beta"},{"version":"2021.3.17f1","releaseDate":"2023-01-24T18:26:13.7420000+02:00","stream":"LTS"},{"version":"2022.2.3f1","releaseDate":"2023-01-23T21:50:52.1750000+02:00","stream":"Tech"},{"version":"2023.1.0a26","releaseDate":"2023-01-18T19:32:21.5630000+02:00","stream":"Alpha"},{"version":"2020.3.44f1","releaseDate":"2023-01-18T19:25:53.1090000+02:00","stream":"LTS"},{"version":"2023.1.0a25","releaseDate":"2023-01-11T21:23:37.6860000+02:00","stream":"Alpha"},{"version":"2022.2.2f1","releaseDate":"2023-01-10T05:21:01.4250000+02:00","stream":"Tech"},{"version":"2023.1.0a24","releaseDate":"2022-12-22T03:56:32.4480000+02:00","stream":"Alpha"},{"version":"2020.3.43f1","releaseDate":"2022-12-16T00:02:25.8850000+02:00","stream":"LTS"},{"version":"2021.3.16f1","releaseDate":"2022-12-15T18:05:52.9180000+02:00","stream":"LTS"},{"version":"2023.1.0a23","releaseDate":"2022-12-14T20:58:53.9770000+02:00","stream":"Alpha"},{"version":"2022.2.1f1","releaseDate":"2022-12-12T17:26:11.2260000+02:00","stream":"Tech"},{"version":"2023.1.0a22","releaseDate":"2022-12-07T23:25:31.9420000+02:00","stream":"Alpha"},{"version":"2022.2.0f1","releaseDate":"2022-12-07T16:29:04.8310000+02:00","stream":"Tech"},{"version":"2022.1.24f1","releaseDate":"2022-12-06T20:33:08.7300000+02:00","stream":"Tech"},{"version":"2021.3.15f1","releaseDate":"2022-12-01T19:20:58.3010000+02:00","stream":"LTS"},{"version":"2023.1.0a21","releaseDate":"2022-11-30T17:35:08.6520000+02:00","stream":"Alpha"},{"version":"2023.1.0a20","releaseDate":"2022-11-24T16:54:00.0950000+02:00","stream":"Alpha"},{"version":"2022.2.0b16","releaseDate":"2022-11-18T17:21:52.7500000+02:00","stream":"Beta"},{"version":"2023.1.0a19","releaseDate":"2022-11-17T23:40:42.6370000+02:00","stream":"Alpha"},{"version":"2021.3.14f1","releaseDate":"2022-11-17T19:28:01.6800000+02:00","stream":"LTS"},{"version":"2020.3.42f1","releaseDate":"2022-11-17T18:42:55.7160000+02:00","stream":"LTS"},{"version":"2022.1.23f1","releaseDate":"2022-11-16T13:07:08.5870000+02:00","stream":"Tech"},{"version":"2022.2.0b15","releaseDate":"2022-11-16T11:42:02.4260000+02:00","stream":"Beta"},{"version":"2023.1.0a18","releaseDate":"2022-11-10T17:10:57.7810000+02:00","stream":"Alpha"},{"version":"2022.1.22f1","releaseDate":"2022-11-09T14:42:48.4520000+02:00","stream":"Tech"},{"version":"2022.2.0b14","releaseDate":"2022-11-07T16:57:36.8080000+02:00","stream":"Beta"},{"version":"2021.3.13f1","releaseDate":"2022-11-04T18:42:23.1680000+02:00","stream":"LTS"},{"version":"2023.1.0a17","releaseDate":"2022-11-04T17:52:07.0070000+02:00","stream":"Alpha"},{"version":"2023.1.0a16","releaseDate":"2022-10-27T18:51:25.6730000+03:00","stream":"Alpha"},{"version":"2022.1.21f1","releaseDate":"2022-10-27T17:14:42.0510000+03:00","stream":"Tech"},{"version":"2022.2.0b13","releaseDate":"2022-10-26T23:13:31.6270000+03:00","stream":"Beta"},{"version":"2021.3.12f1","releaseDate":"2022-10-25T18:16:10.9510000+03:00","stream":"LTS"},{"version":"2023.1.0a15","releaseDate":"2022-10-21T18:12:32.3200000+03:00","stream":"Alpha"},{"version":"2020.3.41f1","releaseDate":"2022-10-21T17:22:52.5630000+03:00","stream":"LTS"},{"version":"2022.2.0b12","releaseDate":"2022-10-20T18:21:30.9490000+03:00","stream":"Beta"},{"version":"2022.2.0b11","releaseDate":"2022-10-17T22:47:44.2460000+03:00","stream":"Beta"},{"version":"2023.1.0a14","releaseDate":"2022-10-13T22:56:48.3590000+03:00","stream":"Alpha"},{"version":"2022.1.20f1","releaseDate":"2022-10-12T14:42:58.6240000+03:00","stream":"Tech"},{"version":"2023.1.0a13","releaseDate":"2022-10-06T22:12:22.6230000+03:00","stream":"Alpha"},{"version":"2022.2.0b10","releaseDate":"2022-10-06T18:22:41.4710000+03:00","stream":"Beta"},{"version":"2022.1.19f1","releaseDate":"2022-10-05T15:57:27.6550000+03:00","stream":"Tech"},{"version":"2022.1.18f1","releaseDate":"2022-09-29T17:37:44.5850000+03:00","stream":"Tech"},{"version":"2021.3.11f1","releaseDate":"2022-09-29T13:18:44.5050000+03:00","stream":"LTS"},{"version":"2022.2.0b9","releaseDate":"2022-09-29T06:03:40.7910000+03:00","stream":"Beta"},{"version":"2023.1.0a12","releaseDate":"2022-09-28T22:55:37.0920000+03:00","stream":"Alpha"},{"version":"2020.3.40f1","releaseDate":"2022-09-27T13:08:51.4880000+03:00","stream":"LTS"},{"version":"2023.1.0a11","releaseDate":"2022-09-21T17:43:10.2830000+03:00","stream":"Alpha"},{"version":"2022.1.17f1","releaseDate":"2022-09-21T14:47:30.1360000+03:00","stream":"Tech"},{"version":"2021.3.10f1","releaseDate":"2022-09-16T18:49:10.5930000+03:00","stream":"LTS"},{"version":"2020.3.39f1","releaseDate":"2022-09-15T00:53:29.6050000+03:00","stream":"LTS"},{"version":"2023.1.0a10","releaseDate":"2022-09-12T21:11:46.9380000+03:00","stream":"Alpha"},{"version":"2022.2.0b8","releaseDate":"2022-09-09T19:13:00.3470000+03:00","stream":"Beta"},{"version":"2022.1.16f1","releaseDate":"2022-09-08T16:08:35.0830000+03:00","stream":"Tech"},{"version":"2023.1.0a9","releaseDate":"2022-09-06T21:57:38.9710000+03:00","stream":"Alpha"},{"version":"2021.3.9f1","releaseDate":"2022-09-01T19:32:11.5790000+03:00","stream":"LTS"},{"version":"2022.2.0b7","releaseDate":"2022-09-01T17:23:07.2070000+03:00","stream":"Beta"},{"version":"2022.1.15f1","releaseDate":"2022-09-01T13:40:40.3950000+03:00","stream":"Tech"},{"version":"2022.2.0b6","releaseDate":"2022-08-26T01:40:10.3100000+03:00","stream":"Beta"},{"version":"2022.2.0b5","releaseDate":"2022-08-22T16:46:29.2740000+03:00","stream":"Beta"},{"version":"2022.1.14f1","releaseDate":"2022-08-22T11:56:08.0450000+03:00","stream":"Tech"},{"version":"2023.1.0a6","releaseDate":"2022-08-18T19:45:55.0300000+03:00","stream":"Alpha"},{"version":"2020.3.38f1","releaseDate":"2022-08-17T16:37:37.9830000+03:00","stream":"LTS"},{"version":"2023.1.0a5","releaseDate":"2022-08-11T19:35:17.2190000+03:00","stream":"Alpha"},{"version":"2022.1.13f1","releaseDate":"2022-08-11T10:43:08.2790000+03:00","stream":"Tech"},{"version":"2021.3.8f1","releaseDate":"2022-08-08T18:26:36.9290000+03:00","stream":"LTS"},{"version":"2022.1.12f1","releaseDate":"2022-08-05T13:30:50.9200000+03:00","stream":"Tech"},{"version":"2022.2.0b4","releaseDate":"2022-08-05T05:14:17.7170000+03:00","stream":"Beta"},{"version":"2022.2.0b3","releaseDate":"2022-07-28T20:18:44.5910000+03:00","stream":"Beta"},{"version":"2021.3.7f1","releaseDate":"2022-07-28T12:50:46.7670000+03:00","stream":"LTS"},{"version":"2022.1.11f1","releaseDate":"2022-07-27T15:20:14.4870000+03:00","stream":"Tech"},{"version":"2023.1.0a4","releaseDate":"2022-07-26T19:55:38.5590000+03:00","stream":"Alpha"},{"version":"2022.2.0b2","releaseDate":"2022-07-22T16:54:37.0230000+03:00","stream":"Beta"},{"version":"2020.3.37f1","releaseDate":"2022-07-21T12:53:36.2240000+03:00","stream":"LTS"},{"version":"2022.1.10f1","releaseDate":"2022-07-20T14:35:58.8890000+03:00","stream":"Tech"},{"version":"2022.1.9f1","releaseDate":"2022-07-14T14:39:28.8090000+03:00","stream":"Tech"},{"version":"2022.2.0b1","releaseDate":"2022-07-13T02:24:29.9080000+03:00","stream":"Beta"},{"version":"2021.3.6f1","releaseDate":"2022-07-08T12:48:54.7110000+03:00","stream":"LTS"},{"version":"2022.1.8f1","releaseDate":"2022-07-07T18:05:53.6420000+03:00","stream":"Tech"},{"version":"2022.2.0a18","releaseDate":"2022-07-04T19:35:28.1410000+03:00","stream":"Alpha"},{"version":"2022.1.7f1","releaseDate":"2022-06-29T15:39:55.5870000+03:00","stream":"Tech"},{"version":"2022.1.6f1","releaseDate":"2022-06-23T14:07:14.8560000+03:00","stream":"Tech"},{"version":"2021.3.5f1","releaseDate":"2022-06-22T20:32:31.1470000+03:00","stream":"LTS"},{"version":"2019.4.40f1","releaseDate":"2022-06-16T23:44:08.7430000+03:00","stream":"LTS"},{"version":"2022.2.0a17","releaseDate":"2022-06-16T22:20:11.1080000+03:00","stream":"Alpha"},{"version":"2020.3.36f1","releaseDate":"2022-06-16T18:04:11.6550000+03:00","stream":"LTS"},{"version":"2022.1.5f1","releaseDate":"2022-06-15T19:47:55.4610000+03:00","stream":"Tech"},{"version":"2022.2.0a16","releaseDate":"2022-06-08T23:20:40.3790000+03:00","stream":"Alpha"},{"version":"2022.1.4f1","releaseDate":"2022-06-08T18:53:22.1510000+03:00","stream":"Tech"},{"version":"2022.1.3f1","releaseDate":"2022-05-31T19:42:45.9740000+03:00","stream":"Tech"},{"version":"2021.3.4f1","releaseDate":"2022-05-31T18:14:15.5590000+03:00","stream":"LTS"},{"version":"2020.3.35f1","releaseDate":"2022-05-27T02:30:47.9620000+03:00","stream":"LTS"},{"version":"2022.1.2f1","releaseDate":"2022-05-25T17:32:41.9670000+03:00","stream":"Tech"},{"version":"2021.3.3f1","releaseDate":"2022-05-19T13:01:53.9560000+03:00","stream":"LTS"},{"version":"2022.1.1f1","releaseDate":"2022-05-18T23:43:29.7780000+03:00","stream":"Tech"},{"version":"2022.2.0a13","releaseDate":"2022-05-13T01:47:12.2000000+03:00","stream":"Alpha"},{"version":"2019.4.39f1","releaseDate":"2022-05-12T01:31:15.5880000+03:00","stream":"LTS"},{"version":"2022.1.0f1","releaseDate":"2022-05-09T19:53:20.7220000+03:00","stream":"Tech"},{"version":"2022.2.0a12","releaseDate":"2022-05-05T15:15:24.2770000+03:00","stream":"Alpha"},{"version":"2021.3.2f1","releaseDate":"2022-05-05T13:42:14.7170000+03:00","stream":"LTS"},{"version":"2020.3.34f1","releaseDate":"2022-05-04T17:33:40.9940000+03:00","stream":"LTS"},{"version":"2022.2.0a11","releaseDate":"2022-04-25T17:28:41.0660000+03:00","stream":"Alpha"},{"version":"2021.3.1f1","releaseDate":"2022-04-21T21:19:43.4030000+03:00","stream":"LTS"},{"version":"2022.2.0a10","releaseDate":"2022-04-14T16:22:59.4940000+03:00","stream":"Alpha"},{"version":"2019.4.38f1","releaseDate":"2022-04-13T18:24:10.4100000+03:00","stream":"LTS"},{"version":"2022.1.0b16","releaseDate":"2022-04-12T21:11:34.7660000+03:00","stream":"Beta"},{"version":"2021.3.0f1","releaseDate":"2022-04-11T21:46:28.6540000+03:00","stream":"LTS"},{"version":"2020.3.33f1","releaseDate":"2022-04-07T16:58:00.7880000+03:00","stream":"LTS"},{"version":"2022.1.0b15","releaseDate":"2022-04-07T10:56:08.2280000+03:00","stream":"Beta"},{"version":"2021.2.19f1","releaseDate":"2022-04-05T20:15:08.0160000+03:00","stream":"Tech"},{"version":"2022.2.0a9","releaseDate":"2022-04-01T13:23:18.7140000+03:00","stream":"Alpha"},{"version":"2021.2.18f1","releaseDate":"2022-04-01T10:28:41.0490000+03:00","stream":"Tech"},{"version":"2022.1.0b14","releaseDate":"2022-03-30T12:56:12.7250000+03:00","stream":"Beta"},{"version":"2021.2.17f1","releaseDate":"2022-03-24T23:31:28.9800000+02:00","stream":"Tech"},{"version":"2020.3.32f1","releaseDate":"2022-03-23T17:39:23.9120000+02:00","stream":"LTS"},{"version":"2019.4.37f1","releaseDate":"2022-03-22T20:47:13.8460000+02:00","stream":"LTS"},{"version":"2022.1.0b13","releaseDate":"2022-03-22T19:02:39.2100000+02:00","stream":"Beta"},{"version":"2020.3.31f1","releaseDate":"2022-03-17T20:06:28.2220000+02:00","stream":"LTS"},{"version":"2021.2.16f1","releaseDate":"2022-03-17T19:27:16.4280000+02:00","stream":"Tech"},{"version":"2022.1.0b12","releaseDate":"2022-03-17T17:03:20.4980000+02:00","stream":"Beta"},{"version":"2021.2.15f1","releaseDate":"2022-03-11T19:03:49.6680000+02:00","stream":"Tech"},{"version":"2022.1.0b11","releaseDate":"2022-03-09T09:19:01.6160000+02:00","stream":"Beta"},{"version":"2021.2.14f1","releaseDate":"2022-03-03T19:20:56.9220000+02:00","stream":"Tech"},{"version":"2022.1.0b10","releaseDate":"2022-03-02T14:36:18.0430000+02:00","stream":"Beta"},{"version":"2020.3.30f1","releaseDate":"2022-02-24T19:26:14.6130000+02:00","stream":"LTS"},{"version":"2021.2.13f1","releaseDate":"2022-02-23T21:42:33.3400000+02:00","stream":"Tech"},{"version":"2022.1.0b9","releaseDate":"2022-02-23T15:13:56.5370000+02:00","stream":"Beta"},{"version":"2021.2.12f1","releaseDate":"2022-02-17T22:43:34.6210000+02:00","stream":"Tech"},{"version":"2019.4.36f1","releaseDate":"2022-02-17T18:41:01.3940000+02:00","stream":"LTS"},{"version":"2020.3.29f1","releaseDate":"2022-02-17T17:59:07.5210000+02:00","stream":"LTS"},{"version":"2022.1.0b8","releaseDate":"2022-02-16T13:35:02.2220000+02:00","stream":"Beta"},{"version":"2021.2.11f1","releaseDate":"2022-02-10T19:24:35.6120000+02:00","stream":"Tech"},{"version":"2020.3.28f1","releaseDate":"2022-02-09T23:48:58.6840000+02:00","stream":"LTS"},{"version":"2022.1.0b7","releaseDate":"2022-02-08T13:39:17.9160000+02:00","stream":"Beta"},{"version":"2022.1.0b6","releaseDate":"2022-02-02T10:30:32.4120000+02:00","stream":"Beta"},{"version":"2021.2.10f1","releaseDate":"2022-02-02T00:07:17.8640000+02:00","stream":"Tech"},{"version":"2020.3.27f1","releaseDate":"2022-02-01T01:06:41.6490000+02:00","stream":"LTS"},{"version":"2019.4.35f1","releaseDate":"2022-01-28T16:26:18.8910000+02:00","stream":"LTS"},{"version":"2022.1.0b5","releaseDate":"2022-01-27T19:44:54.5310000+02:00","stream":"Beta"},{"version":"2021.2.9f1","releaseDate":"2022-01-27T19:09:54.1410000+02:00","stream":"Tech"},{"version":"2022.1.0b4","releaseDate":"2022-01-19T13:50:18.8200000+02:00","stream":"Beta"},{"version":"2020.3.26f1","releaseDate":"2022-01-13T22:29:30.1460000+02:00","stream":"LTS"},{"version":"2021.2.8f1","releaseDate":"2022-01-13T18:36:04.5530000+02:00","stream":"Tech"},{"version":"2022.1.0b3","releaseDate":"2022-01-12T14:14:48.4210000+02:00","stream":"Beta"},{"version":"2020.3.25f1","releaseDate":"2021-12-16T20:21:47.6100000+02:00","stream":"LTS"},{"version":"2021.2.7f1","releaseDate":"2021-12-16T19:44:39.8370000+02:00","stream":"Tech"},{"version":"2019.4.34f1","releaseDate":"2021-12-15T19:52:49.4210000+02:00","stream":"LTS"},{"version":"2022.1.0b2","releaseDate":"2021-12-14T20:43:17.2160000+02:00","stream":"Beta"},{"version":"2021.2.6f1","releaseDate":"2021-12-10T18:38:19.6320000+02:00","stream":"Tech"},{"version":"2022.1.0b1","releaseDate":"2021-12-08T21:49:54.8000000+02:00","stream":"Beta"},{"version":"2020.3.24f1","releaseDate":"2021-12-02T22:30:57.1110000+02:00","stream":"LTS"},{"version":"2021.2.5f1","releaseDate":"2021-12-01T18:54:28.0590000+02:00","stream":"Tech"},{"version":"2022.1.0a16","releaseDate":"2021-11-29T14:23:09.8130000+02:00","stream":"Alpha"},{"version":"2019.4.33f1","releaseDate":"2021-11-25T20:53:15.4390000+02:00","stream":"LTS"},{"version":"2021.2.4f1","releaseDate":"2021-11-25T15:45:23.5490000+02:00","stream":"Tech"},{"version":"2020.3.23f1","releaseDate":"2021-11-19T22:08:31.1420000+02:00","stream":"LTS"},{"version":"2022.1.0a15","releaseDate":"2021-11-18T14:23:33.3050000+02:00","stream":"Alpha"},{"version":"2021.2.3f1","releaseDate":"2021-11-18T13:49:58.4170000+02:00","stream":"Tech"},{"version":"2021.2.2f1","releaseDate":"2021-11-11T13:54:38.2890000+02:00","stream":"Tech"},{"version":"2020.3.22f1","releaseDate":"2021-11-05T21:35:33.6640000+02:00","stream":"LTS"},{"version":"2021.1.28f1","releaseDate":"2021-11-04T21:43:00.6120000+02:00","stream":"Tech"},{"version":"2021.2.1f1","releaseDate":"2021-11-04T14:14:00.1790000+02:00","stream":"Tech"},{"version":"2019.4.32f1","releaseDate":"2021-10-28T19:49:13.4530000+03:00","stream":"LTS"},{"version":"2022.1.0a13","releaseDate":"2021-10-28T17:30:14.4590000+03:00","stream":"Alpha"},{"version":"2021.1.27f1","releaseDate":"2021-10-25T22:24:00.3960000+03:00","stream":"Tech"},{"version":"2021.2.0f1","releaseDate":"2021-10-25T17:52:13.0340000+03:00","stream":"Tech"},{"version":"2020.3.21f1","releaseDate":"2021-10-21T19:33:29.3350000+03:00","stream":"LTS"},{"version":"2021.1.26f1","releaseDate":"2021-10-20T18:42:50.4910000+03:00","stream":"Tech"},{"version":"2021.1.25f1","releaseDate":"2021-10-15T00:35:29.3880000+03:00","stream":"Tech"},{"version":"2022.1.0a12","releaseDate":"2021-10-13T22:34:46.2550000+03:00","stream":"Alpha"},{"version":"2021.2.0b16","releaseDate":"2021-10-12T19:42:06.0710000+03:00","stream":"Beta"},{"version":"2020.3.20f1","releaseDate":"2021-10-08T19:38:35.5420000+03:00","stream":"LTS"},{"version":"2021.1.24f1","releaseDate":"2021-10-06T21:29:11.4340000+03:00","stream":"Tech"},{"version":"2022.1.0a11","releaseDate":"2021-10-06T18:14:18.1140000+03:00","stream":"Alpha"},{"version":"2021.2.0b15","releaseDate":"2021-10-06T12:13:13.6910000+03:00","stream":"Beta"},{"version":"2022.1.0a10","releaseDate":"2021-10-01T22:35:39.3300000+03:00","stream":"Alpha"},{"version":"2021.2.0b14","releaseDate":"2021-10-01T14:27:08.4200000+03:00","stream":"Beta"},{"version":"2021.1.23f1","releaseDate":"2021-09-30T20:01:27.1780000+03:00","stream":"Tech"},{"version":"2019.4.31f1","releaseDate":"2021-09-30T19:11:12.7000000+03:00","stream":"LTS"},{"version":"2022.1.0a9","releaseDate":"2021-09-23T19:24:52.9250000+03:00","stream":"Alpha"},{"version":"2020.3.19f1","releaseDate":"2021-09-23T00:58:37.4230000+03:00","stream":"LTS"},{"version":"2021.2.0b13","releaseDate":"2021-09-22T16:58:46.5710000+03:00","stream":"Beta"},{"version":"2021.1.22f1","releaseDate":"2021-09-21T03:25:04.5570000+03:00","stream":"Tech"},{"version":"2021.2.0b12","releaseDate":"2021-09-16T14:41:11.3370000+03:00","stream":"Beta"},{"version":"2022.1.0a8","releaseDate":"2021-09-15T17:02:16.5010000+03:00","stream":"Alpha"},{"version":"2021.1.21f1","releaseDate":"2021-09-15T00:44:40.4000000+03:00","stream":"Tech"},{"version":"2020.3.18f1","releaseDate":"2021-09-09T12:35:05.2550000+03:00","stream":"LTS"},{"version":"2021.1.20f1","releaseDate":"2021-09-08T16:15:22.7130000+03:00","stream":"Tech"},{"version":"2021.2.0b11","releaseDate":"2021-09-07T14:45:52.4140000+03:00","stream":"Beta"},{"version":"2022.1.0a7","releaseDate":"2021-09-06T14:16:46.3500000+03:00","stream":"Alpha"},{"version":"2021.2.0b10","releaseDate":"2021-09-04T04:54:50.1580000+03:00","stream":"Beta"},{"version":"2019.4.30f1","releaseDate":"2021-09-04T01:17:29.3740000+03:00","stream":"LTS"},{"version":"2021.1.19f1","releaseDate":"2021-09-01T13:51:04.9530000+03:00","stream":"Tech"},{"version":"2020.3.17f1","releaseDate":"2021-08-25T21:28:14.2230000+03:00","stream":"LTS"},{"version":"2021.1.18f1","releaseDate":"2021-08-25T20:26:42.2380000+03:00","stream":"Tech"},{"version":"2021.2.0b9","releaseDate":"2021-08-25T14:31:02.2950000+03:00","stream":"Beta"},{"version":"2021.2.0b8","releaseDate":"2021-08-19T12:59:27.4650000+03:00","stream":"Beta"},{"version":"2021.1.17f1","releaseDate":"2021-08-13T21:37:59.3900000+03:00","stream":"Tech"},{"version":"2020.3.16f1","releaseDate":"2021-08-12T18:55:22.6880000+03:00","stream":"LTS"},{"version":"2021.2.0b7","releaseDate":"2021-08-10T13:33:56.9150000+03:00","stream":"Beta"},{"version":"2021.2.0b6","releaseDate":"2021-08-04T16:24:08.9160000+03:00","stream":"Beta"},{"version":"2021.2.0b5","releaseDate":"2021-08-02T18:15:23.1620000+03:00","stream":"Beta"},{"version":"2021.1.16f1","releaseDate":"2021-08-02T17:27:00.4890000+03:00","stream":"Tech"},{"version":"2020.3.15f2","releaseDate":"2021-07-30T19:23:30.2390000+03:00","stream":"LTS"},{"version":"2019.4.29f1","releaseDate":"2021-07-30T18:19:33.1520000+03:00","stream":"LTS"},{"version":"2021.2.0b4","releaseDate":"2021-07-15T13:53:43.7390000+03:00","stream":"Beta"},{"version":"2021.1.15f1","releaseDate":"2021-07-14T14:13:58.1820000+03:00","stream":"Tech"},{"version":"2020.3.14f1","releaseDate":"2021-07-13T19:58:10.4910000+03:00","stream":"LTS"},{"version":"2021.2.0b3","releaseDate":"2021-07-08T13:47:42.2000000+03:00","stream":"Beta"},{"version":"2021.1.14f1","releaseDate":"2021-07-07T04:08:43.8360000+03:00","stream":"Tech"},{"version":"2021.2.0b2","releaseDate":"2021-07-02T16:15:04.4120000+03:00","stream":"Beta"},{"version":"2020.3.13f1","releaseDate":"2021-06-30T21:40:12.8800000+03:00","stream":"LTS"},{"version":"2021.1.13f1","releaseDate":"2021-06-30T08:59:29.1870000+03:00","stream":"Tech"},{"version":"2021.2.0b1","releaseDate":"2021-06-18T22:27:35.5390000+03:00","stream":"Beta"},{"version":"2018.4.36f1","releaseDate":"2021-06-17T19:13:54.0080000+03:00","stream":"LTS"},{"version":"2021.1.12f1","releaseDate":"2021-06-17T18:00:50.5720000+03:00","stream":"Tech"},{"version":"2020.3.12f1","releaseDate":"2021-06-15T21:58:12.2770000+03:00","stream":"LTS"},{"version":"2021.2.0a21","releaseDate":"2021-06-15T19:37:53.0380000+03:00","stream":"Alpha"},{"version":"2021.1.11f1","releaseDate":"2021-06-10T13:04:24.2960000+03:00","stream":"Tech"},{"version":"2021.2.0a20","releaseDate":"2021-06-09T20:17:01.4260000+03:00","stream":"Alpha"},{"version":"2019.4.28f1","releaseDate":"2021-06-03T20:50:56.4390000+03:00","stream":"LTS"},{"version":"2021.1.10f1","releaseDate":"2021-06-03T19:53:09.2760000+03:00","stream":"Tech"},{"version":"2021.2.0a19","releaseDate":"2021-06-03T18:19:41.9870000+03:00","stream":"Alpha"},{"version":"2020.3.11f1","releaseDate":"2021-06-01T20:44:03.0610000+03:00","stream":"LTS"},{"version":"2021.1.9f1","releaseDate":"2021-05-28T15:13:35.9700000+03:00","stream":"Tech"},{"version":"2020.3.10f1","releaseDate":"2021-05-26T21:08:15.2460000+03:00","stream":"LTS"},{"version":"2019.4.27f1","releaseDate":"2021-05-20T16:45:43.0950000+03:00","stream":"LTS"},{"version":"2020.3.9f1","releaseDate":"2021-05-19T20:45:38.0840000+03:00","stream":"LTS"},{"version":"2021.1.7f1","releaseDate":"2021-05-13T17:00:02.5350000+03:00","stream":"Tech"},{"version":"2020.3.8f1","releaseDate":"2021-05-12T23:50:34.7750000+03:00","stream":"LTS"},{"version":"2021.2.0a17","releaseDate":"2021-05-12T21:15:13.4370000+03:00","stream":"Alpha"},{"version":"2018.4.35f1","releaseDate":"2021-05-12T18:16:04.9960000+03:00","stream":"LTS"},{"version":"2021.1.6f1","releaseDate":"2021-05-06T09:42:44.3860000+03:00","stream":"Tech"},{"version":"2019.4.26f1","releaseDate":"2021-05-05T21:28:43.0280000+03:00","stream":"LTS"},{"version":"2020.3.7f1","releaseDate":"2021-05-05T20:05:58.3680000+03:00","stream":"LTS"},{"version":"2021.2.0a16","releaseDate":"2021-05-05T18:00:27.2340000+03:00","stream":"Alpha"},{"version":"2020.3.6f1","releaseDate":"2021-04-28T21:33:45.0410000+03:00","stream":"LTS"},{"version":"2021.2.0a15","releaseDate":"2021-04-28T19:51:06.5220000+03:00","stream":"Alpha"},{"version":"2021.1.5f1","releaseDate":"2021-04-28T14:57:22.3140000+03:00","stream":"Tech"},{"version":"2019.4.25f1","releaseDate":"2021-04-22T21:56:19.4680000+03:00","stream":"LTS"},{"version":"2021.1.4f1","releaseDate":"2021-04-22T11:14:16.9190000+03:00","stream":"Tech"},{"version":"2021.2.0a14","releaseDate":"2021-04-21T19:58:34.0620000+03:00","stream":"Alpha"},{"version":"2020.3.5f1","releaseDate":"2021-04-21T18:58:44.8310000+03:00","stream":"LTS"},{"version":"2018.4.34f1","releaseDate":"2021-04-15T13:28:39.0470000+03:00","stream":"LTS"},{"version":"2021.2.0a13","releaseDate":"2021-04-14T19:07:25.9350000+03:00","stream":"Alpha"},{"version":"2020.3.4f1","releaseDate":"2021-04-13T20:59:16.5940000+03:00","stream":"LTS"},{"version":"2021.1.3f1","releaseDate":"2021-04-13T14:23:53.3800000+03:00","stream":"Tech"},{"version":"2019.4.24f1","releaseDate":"2021-04-09T02:33:06.9090000+03:00","stream":"LTS"},{"version":"2020.3.3f1","releaseDate":"2021-04-07T19:37:40.6130000+03:00","stream":"LTS"},{"version":"2021.1.2f1","releaseDate":"2021-04-07T17:35:36.8280000+03:00","stream":"Tech"},{"version":"2021.2.0a12","releaseDate":"2021-04-06T19:40:54.7470000+03:00","stream":"Alpha"},{"version":"2021.2.0a11","releaseDate":"2021-03-31T20:48:42.9770000+03:00","stream":"Alpha"},{"version":"2021.1.1f1","releaseDate":"2021-03-31T17:04:08.0250000+03:00","stream":"Tech"},{"version":"2020.3.2f1","releaseDate":"2021-03-29T21:24:30.6840000+03:00","stream":"LTS"},{"version":"2021.2.0a10","releaseDate":"2021-03-24T22:41:29.4570000+02:00","stream":"Alpha"},{"version":"2018.4.33f1","releaseDate":"2021-03-24T19:48:21.9510000+02:00","stream":"LTS"},{"version":"2019.4.23f1","releaseDate":"2021-03-24T18:44:56.5610000+02:00","stream":"LTS"},{"version":"2020.3.1f1","releaseDate":"2021-03-22T20:05:51.7280000+02:00","stream":"LTS"},{"version":"2021.1.0f1","releaseDate":"2021-03-22T13:13:57.9050000+02:00","stream":"Tech"},{"version":"2021.2.0a9","releaseDate":"2021-03-17T20:02:06.9710000+02:00","stream":"Alpha"},{"version":"2021.1.0b12","releaseDate":"2021-03-17T13:21:39.6870000+02:00","stream":"Beta"},{"version":"2020.3.0f1","releaseDate":"2021-03-11T01:09:00.0190000+02:00","stream":"LTS"},{"version":"2021.1.0b11","releaseDate":"2021-03-10T20:19:22.0910000+02:00","stream":"Beta"},{"version":"2019.4.22f1","releaseDate":"2021-03-10T18:07:28.3010000+02:00","stream":"LTS"},{"version":"2021.2.0a8","releaseDate":"2021-03-09T17:39:33.3380000+02:00","stream":"Alpha"},{"version":"2021.1.0b10","releaseDate":"2021-03-04T19:23:44.8170000+02:00","stream":"Beta"},{"version":"2020.2.7f1","releaseDate":"2021-03-04T18:43:17.8170000+02:00","stream":"LTS"},{"version":"2021.2.0a6","releaseDate":"2021-02-24T20:59:57.2080000+02:00","stream":"Alpha"},{"version":"2021.1.0b8","releaseDate":"2021-02-24T19:47:25.5060000+02:00","stream":"Beta"},{"version":"2019.4.21f1","releaseDate":"2021-02-24T19:14:33.4900000+02:00","stream":"LTS"},{"version":"2020.2.6f1","releaseDate":"2021-02-24T02:10:19.4960000+02:00","stream":"LTS"},{"version":"2020.2.5f1","releaseDate":"2021-02-19T01:17:13.0170000+02:00","stream":"LTS"},{"version":"2018.4.32f1","releaseDate":"2021-02-18T14:18:22.1450000+02:00","stream":"LTS"},{"version":"2021.2.0a5","releaseDate":"2021-02-17T18:45:52.4040000+02:00","stream":"Alpha"},{"version":"2021.1.0b7","releaseDate":"2021-02-17T17:33:40.3340000+02:00","stream":"Beta"},{"version":"2020.2.4f1","releaseDate":"2021-02-12T22:14:18.5720000+02:00","stream":"LTS"},{"version":"2019.4.20f1","releaseDate":"2021-02-10T19:06:33.6840000+02:00","stream":"LTS"},{"version":"2021.1.0b6","releaseDate":"2021-02-10T17:26:16.3810000+02:00","stream":"Beta"},{"version":"2020.2.3f1","releaseDate":"2021-02-03T22:51:44.0220000+02:00","stream":"LTS"},{"version":"2021.1.0b5","releaseDate":"2021-02-03T13:02:09.2570000+02:00","stream":"Beta"},{"version":"2019.4.19f1","releaseDate":"2021-02-01T19:49:54.7260000+02:00","stream":"LTS"},{"version":"2021.1.0b4","releaseDate":"2021-01-27T14:14:30.6700000+02:00","stream":"Beta"},{"version":"2018.4.31f1","releaseDate":"2021-01-22T16:08:18.4010000+02:00","stream":"LTS"},{"version":"2020.2.2f1","releaseDate":"2021-01-21T22:41:55.7470000+02:00","stream":"LTS"},{"version":"2021.1.0b3","releaseDate":"2021-01-20T18:49:58.0860000+02:00","stream":"Beta"},{"version":"2021.1.0b2","releaseDate":"2021-01-13T17:48:52.7690000+02:00","stream":"Beta"},{"version":"2019.4.18f1","releaseDate":"2021-01-13T17:13:41.1610000+02:00","stream":"LTS"},{"version":"2020.2.1f1","releaseDate":"2020-12-23T19:32:56.7940000+02:00","stream":"LTS"},{"version":"2021.1.0b1","releaseDate":"2020-12-23T17:53:59.2550000+02:00","stream":"Beta"},{"version":"2019.4.17f1","releaseDate":"2020-12-22T17:05:02.0370000+02:00","stream":"LTS"},{"version":"2020.2.0f1","releaseDate":"2020-12-14T22:24:28.6530000+02:00","stream":"LTS"},{"version":"2021.1.0a9","releaseDate":"2020-12-11T11:34:06.1400000+02:00","stream":"Alpha"},{"version":"2020.1.17f1","releaseDate":"2020-12-09T13:39:40.0550000+02:00","stream":"LTS"},{"version":"2020.2.0b14","releaseDate":"2020-12-02T19:45:40.0260000+02:00","stream":"Beta"},{"version":"2021.1.0a8","releaseDate":"2020-12-02T19:15:19.2560000+02:00","stream":"Alpha"},{"version":"2019.4.16f1","releaseDate":"2020-12-02T18:12:41.3440000+02:00","stream":"LTS"},{"version":"2018.4.30f1","releaseDate":"2020-12-01T22:09:28.0830000+02:00","stream":"LTS"},{"version":"2020.1.16f1","releaseDate":"2020-12-01T21:04:30.3740000+02:00","stream":"LTS"},{"version":"2021.1.0a7","releaseDate":"2020-11-25T20:59:24.1580000+02:00","stream":"Alpha"},{"version":"2020.2.0b13","releaseDate":"2020-11-25T19:57:21.5630000+02:00","stream":"Beta"},{"version":"2020.1.15f1","releaseDate":"2020-11-25T13:32:56.2470000+02:00","stream":"LTS"},{"version":"2020.2.0b12","releaseDate":"2020-11-19T20:01:22.4320000+02:00","stream":"Beta"},{"version":"2020.1.14f1","releaseDate":"2020-11-18T21:08:42.0520000+02:00","stream":"LTS"},{"version":"2019.4.15f1","releaseDate":"2020-11-18T20:02:15.0550000+02:00","stream":"LTS"},{"version":"2021.1.0a5","releaseDate":"2020-11-16T10:29:13.8620000+02:00","stream":"Alpha"},{"version":"2021.1.0a6","releaseDate":"2020-11-12T15:53:12.8280000+02:00","stream":"Alpha"},{"version":"2020.2.0b11","releaseDate":"2020-11-11T21:36:00.6590000+02:00","stream":"Beta"},{"version":"2018.4.29f1","releaseDate":"2020-11-11T12:56:28.8090000+02:00","stream":"LTS"},{"version":"2020.1.13f1","releaseDate":"2020-11-11T11:59:32.6030000+02:00","stream":"LTS"},{"version":"2019.4.14f1","releaseDate":"2020-11-05T19:37:50.1760000+02:00","stream":"LTS"},{"version":"2020.2.0b10","releaseDate":"2020-11-04T19:18:58.3930000+02:00","stream":"Beta"},{"version":"2021.1.0a4","releaseDate":"2020-11-04T13:36:41.3270000+02:00","stream":"Alpha"},{"version":"2020.1.12f1","releaseDate":"2020-11-04T13:19:05.1340000+02:00","stream":"LTS"},{"version":"2020.2.0b9","releaseDate":"2020-10-28T18:33:57.6480000+02:00","stream":"Beta"},{"version":"2020.1.11f1","releaseDate":"2020-10-28T13:19:45.3420000+02:00","stream":"LTS"},{"version":"2020.2.0b8","releaseDate":"2020-10-22T18:53:30.1610000+03:00","stream":"Beta"},{"version":"2021.1.0a2","releaseDate":"2020-10-22T13:37:27.7270000+03:00","stream":"Alpha"},{"version":"2019.4.13f1","releaseDate":"2020-10-21T17:49:14.4000000+03:00","stream":"LTS"},{"version":"2020.1.10f1","releaseDate":"2020-10-21T12:46:16.1030000+03:00","stream":"LTS"},{"version":"2020.2.0b7","releaseDate":"2020-10-15T23:12:00.7850000+03:00","stream":"Beta"},{"version":"2020.1.9f1","releaseDate":"2020-10-13T20:07:55.6420000+03:00","stream":"LTS"},{"version":"2020.2.0b6","releaseDate":"2020-10-08T20:11:41.8220000+03:00","stream":"Beta"},{"version":"2019.4.12f1","releaseDate":"2020-10-07T19:30:31.4100000+03:00","stream":"LTS"},{"version":"2020.1.8f1","releaseDate":"2020-10-06T13:51:55.4870000+03:00","stream":"LTS"},{"version":"2018.4.28f1","releaseDate":"2020-10-06T12:51:51.3680000+03:00","stream":"LTS"},{"version":"2020.2.0b5","releaseDate":"2020-10-01T20:28:10.4460000+03:00","stream":"Beta"},{"version":"2020.1.7f1","releaseDate":"2020-09-30T12:51:21.0060000+03:00","stream":"LTS"},{"version":"2020.2.0b4","releaseDate":"2020-09-28T18:04:05.0940000+03:00","stream":"Beta"},{"version":"2019.4.11f1","releaseDate":"2020-09-23T17:50:07.5230000+03:00","stream":"LTS"},{"version":"2020.1.6f1","releaseDate":"2020-09-16T13:37:08.4180000+03:00","stream":"LTS"},{"version":"2019.4.10f1","releaseDate":"2020-09-10T18:00:59.3550000+03:00","stream":"LTS"},{"version":"2020.1.5f1","releaseDate":"2020-09-10T15:29:36.7490000+03:00","stream":"LTS"},{"version":"2020.2.0b2","releaseDate":"2020-09-09T20:06:38.9020000+03:00","stream":"Beta"},{"version":"2018.4.27f1","releaseDate":"2020-09-09T12:04:26.6260000+03:00","stream":"LTS"},{"version":"2020.2.0b1","releaseDate":"2020-09-03T06:50:06.9580000+03:00","stream":"Beta"},{"version":"2020.1.4f1","releaseDate":"2020-08-27T16:54:15.2610000+03:00","stream":"LTS"},{"version":"2019.4.9f1","releaseDate":"2020-08-26T18:12:20.1780000+03:00","stream":"LTS"},{"version":"2020.1.3f1","releaseDate":"2020-08-21T20:25:52.4300000+03:00","stream":"LTS"},{"version":"2020.2.0a21","releaseDate":"2020-08-20T19:08:48.0150000+03:00","stream":"Alpha"},{"version":"2019.4.8f1","releaseDate":"2020-08-12T16:18:43.9270000+03:00","stream":"LTS"},{"version":"2018.4.26f1","releaseDate":"2020-08-12T14:59:47.8120000+03:00","stream":"LTS"},{"version":"2020.1.2f1","releaseDate":"2020-08-12T14:11:53.6620000+03:00","stream":"LTS"},{"version":"2019.4.7f1","releaseDate":"2020-08-05T18:02:13.5720000+03:00","stream":"LTS"},{"version":"2020.1.1f1","releaseDate":"2020-08-05T12:04:55.1630000+03:00","stream":"LTS"},{"version":"2019.4.6f1","releaseDate":"2020-07-30T23:31:02.8270000+03:00","stream":"LTS"},{"version":"2020.2.0a19","releaseDate":"2020-07-28T20:12:37.1260000+03:00","stream":"Alpha"},{"version":"2019.4.5f1","releaseDate":"2020-07-23T11:08:58.2940000+03:00","stream":"LTS"},{"version":"2020.1.0f1","releaseDate":"2020-07-20T13:15:38.9490000+03:00","stream":"LTS"},{"version":"2020.2.0a18","releaseDate":"2020-07-15T18:09:32.2040000+03:00","stream":"Alpha"},{"version":"2019.4.4f1","releaseDate":"2020-07-15T17:33:21.3420000+03:00","stream":"LTS"},{"version":"2018.4.25f1","releaseDate":"2020-07-14T18:59:51.1720000+03:00","stream":"LTS"},{"version":"2020.1.0b16","releaseDate":"2020-07-14T14:16:19.7360000+03:00","stream":"Beta"},{"version":"2019.4.3f1","releaseDate":"2020-07-08T20:17:30.7430000+03:00","stream":"LTS"},{"version":"2020.1.0b15","releaseDate":"2020-07-08T16:16:36.1440000+03:00","stream":"Beta"},{"version":"2020.2.0a17","releaseDate":"2020-07-07T20:13:29.0870000+03:00","stream":"Alpha"},{"version":"2018.4.24f1","releaseDate":"2020-07-02T15:50:59.9690000+03:00","stream":"LTS"},{"version":"2019.4.2f1","releaseDate":"2020-07-01T17:31:49.6530000+03:00","stream":"LTS"},{"version":"2020.2.0a16","releaseDate":"2020-06-30T20:30:06.4050000+03:00","stream":"Alpha"},{"version":"2020.1.0b14","releaseDate":"2020-06-30T16:03:30.1650000+03:00","stream":"Beta"},{"version":"2019.4.1f1","releaseDate":"2020-06-18T17:26:11.2500000+03:00","stream":"LTS"},{"version":"2020.2.0a15","releaseDate":"2020-06-17T01:26:34.6240000+03:00","stream":"Alpha"},{"version":"2020.1.0b13","releaseDate":"2020-06-16T18:13:24.1630000+03:00","stream":"Beta"},{"version":"2020.1.0b12","releaseDate":"2020-06-09T18:59:47.8410000+03:00","stream":"Beta"},{"version":"2019.4.0f1","releaseDate":"2020-06-07T19:09:39.2440000+03:00","stream":"LTS"},{"version":"2020.1.0b11","releaseDate":"2020-06-03T11:04:41.2780000+03:00","stream":"Beta"},{"version":"2020.2.0a13","releaseDate":"2020-06-02T21:22:41.6660000+03:00","stream":"Alpha"},{"version":"2019.3.15f1","releaseDate":"2020-05-28T18:28:05.9350000+03:00","stream":"LTS"},{"version":"2020.1.0b10","releaseDate":"2020-05-27T18:18:15.7610000+03:00","stream":"Beta"},{"version":"2020.2.0a12","releaseDate":"2020-05-27T04:46:13.7030000+03:00","stream":"Alpha"},{"version":"2020.1.0b9","releaseDate":"2020-05-18T22:30:07.6160000+03:00","stream":"Beta"},{"version":"2019.3.14f1","releaseDate":"2020-05-18T22:09:15.4130000+03:00","stream":"LTS"},{"version":"2020.2.0a11","releaseDate":"2020-05-18T20:28:51.3580000+03:00","stream":"Alpha"},{"version":"2018.4.23f1","releaseDate":"2020-05-18T19:26:44.5050000+03:00","stream":"LTS"},{"version":"2017.4.40f1","releaseDate":"2020-05-18T18:54:47.5130000+03:00","stream":"LTS"},{"version":"2019.3.13f1","releaseDate":"2020-05-06T19:28:06.4310000+03:00","stream":"LTS"},{"version":"2020.2.0a10","releaseDate":"2020-05-06T17:34:37.9180000+03:00","stream":"Alpha"},{"version":"2020.1.0b8","releaseDate":"2020-05-05T19:50:03.1040000+03:00","stream":"Beta"},{"version":"2019.3.12f1","releaseDate":"2020-04-29T20:04:13.3180000+03:00","stream":"LTS"},{"version":"2020.2.0a9","releaseDate":"2020-04-28T16:42:11.9750000+03:00","stream":"Alpha"},{"version":"2020.1.0b7","releaseDate":"2020-04-28T13:12:51.1350000+03:00","stream":"Beta"},{"version":"2018.4.22f1","releaseDate":"2020-04-24T14:56:23.0650000+03:00","stream":"LTS"},{"version":"2020.1.0b6","releaseDate":"2020-04-24T00:32:23.4180000+03:00","stream":"Beta"},{"version":"2020.2.0a8","releaseDate":"2020-04-23T23:39:25.3310000+03:00","stream":"Alpha"},{"version":"2019.3.11f1","releaseDate":"2020-04-23T23:12:30.9100000+03:00","stream":"LTS"},{"version":"2019.3.10f1","releaseDate":"2020-04-16T17:51:49.2210000+03:00","stream":"LTS"},{"version":"2020.2.0a7","releaseDate":"2020-04-14T17:50:07.5570000+03:00","stream":"Alpha"},{"version":"2018.4.21f1","releaseDate":"2020-04-09T13:24:27.7520000+03:00","stream":"LTS"},{"version":"2020.1.0b5","releaseDate":"2020-04-09T12:02:00.1780000+03:00","stream":"Beta"},{"version":"2019.3.9f1","releaseDate":"2020-04-08T20:27:11.2330000+03:00","stream":"LTS"},{"version":"2019.3.8f1","releaseDate":"2020-04-06T16:35:43.6360000+03:00","stream":"LTS"},{"version":"2017.4.39f1","releaseDate":"2020-04-03T11:51:34.4000000+03:00","stream":"LTS"},{"version":"2020.1.0b4","releaseDate":"2020-04-01T12:27:53.0680000+03:00","stream":"Beta"},{"version":"2019.3.7f1","releaseDate":"2020-03-26T15:25:09.7460000+02:00","stream":"LTS"},{"version":"2018.4.20f1","releaseDate":"2020-03-26T14:30:57.8620000+02:00","stream":"LTS"},{"version":"2020.1.0b3","releaseDate":"2020-03-26T10:40:28.9370000+02:00","stream":"Beta"},{"version":"2017.4.38f1","releaseDate":"2020-03-20T12:06:20.6150000+02:00","stream":"LTS"},{"version":"2019.3.6f1","releaseDate":"2020-03-19T15:48:25.4900000+02:00","stream":"LTS"},{"version":"2020.1.0b2","releaseDate":"2020-03-18T13:35:10.1890000+02:00","stream":"Beta"},{"version":"2018.4.19f1","releaseDate":"2020-03-13T12:43:07.0330000+02:00","stream":"LTS"},{"version":"2019.3.5f1","releaseDate":"2020-03-12T15:37:50.3680000+02:00","stream":"LTS"},{"version":"2020.1.0b1","releaseDate":"2020-03-11T14:36:55.5980000+02:00","stream":"Beta"},{"version":"2019.3.4f1","releaseDate":"2020-03-06T12:05:37.8940000+02:00","stream":"LTS"},{"version":"2020.1.0a25","releaseDate":"2020-02-27T14:18:33.9680000+02:00","stream":"Alpha"},{"version":"2018.4.18f1","releaseDate":"2020-02-27T13:32:09.7550000+02:00","stream":"LTS"},{"version":"2019.3.3f1","releaseDate":"2020-02-26T15:41:18.4700000+02:00","stream":"LTS"},{"version":"2020.1.0a24","releaseDate":"2020-02-21T12:47:26.5020000+02:00","stream":"Alpha"},{"version":"2019.3.2f1","releaseDate":"2020-02-19T18:29:42.6760000+02:00","stream":"LTS"},{"version":"2017.4.37f1","releaseDate":"2020-02-18T18:24:58.6090000+02:00","stream":"LTS"},{"version":"2020.1.0a23","releaseDate":"2020-02-12T17:20:34.1120000+02:00","stream":"Alpha"},{"version":"2019.3.1f1","releaseDate":"2020-02-12T15:41:59.0190000+02:00","stream":"LTS"},{"version":"2018.4.17f1","releaseDate":"2020-02-11T13:48:12.9240000+02:00","stream":"LTS"},{"version":"2019.2.21f1","releaseDate":"2020-02-08T01:29:05.9630000+02:00","stream":"LTS"},{"version":"2020.1.0a22","releaseDate":"2020-02-05T12:35:10.0980000+02:00","stream":"Alpha"},{"version":"2019.2.20f1","releaseDate":"2020-01-31T15:52:30.5640000+02:00","stream":"LTS"},{"version":"2020.1.0a21","releaseDate":"2020-01-30T13:45:07.1640000+02:00","stream":"Alpha"},{"version":"2018.4.16f1","releaseDate":"2020-01-27T16:58:33.6030000+02:00","stream":"LTS"},{"version":"2019.3.0f6","releaseDate":"2020-01-27T14:06:56.5750000+02:00","stream":"LTS"},{"version":"2020.1.0a20","releaseDate":"2020-01-23T12:37:53.2280000+02:00","stream":"Alpha"},{"version":"2019.2.19f1","releaseDate":"2020-01-22T21:01:38.0230000+02:00","stream":"LTS"},{"version":"2020.1.0a19","releaseDate":"2020-01-16T13:54:15.4740000+02:00","stream":"Alpha"},{"version":"2019.2.18f1","releaseDate":"2020-01-16T01:24:20.6510000+02:00","stream":"LTS"},{"version":"2019.3.0f5","releaseDate":"2020-01-13T19:38:10.2010000+02:00","stream":"LTS"},{"version":"2017.4.36f1","releaseDate":"2020-01-09T16:49:31.0200000+02:00","stream":"LTS"},{"version":"2018.4.15f1","releaseDate":"2020-01-09T16:09:30.0590000+02:00","stream":"LTS"},{"version":"2020.1.0a18","releaseDate":"2020-01-08T13:28:04.1620000+02:00","stream":"Alpha"},{"version":"2020.1.0a17","releaseDate":"2019-12-19T12:21:05.7530000+02:00","stream":"Alpha"},{"version":"2019.2.17f1","releaseDate":"2019-12-18T21:20:41.5950000+02:00","stream":"LTS"},{"version":"2019.2.16f1","releaseDate":"2019-12-13T20:41:32.6580000+02:00","stream":"LTS"},{"version":"2020.1.0a16","releaseDate":"2019-12-12T16:47:22.9460000+02:00","stream":"Alpha"},{"version":"2019.3.0f3","releaseDate":"2019-12-11T22:34:41.7010000+02:00","stream":"LTS"},{"version":"2018.4.14f1","releaseDate":"2019-12-10T13:15:45.5800000+02:00","stream":"LTS"},{"version":"2017.4.35f1","releaseDate":"2019-12-06T16:49:43.1000000+02:00","stream":"LTS"},{"version":"2020.1.0a15","releaseDate":"2019-12-06T12:23:44.0090000+02:00","stream":"Alpha"},{"version":"2019.2.15f1","releaseDate":"2019-12-04T21:50:05.0710000+02:00","stream":"LTS"},{"version":"2019.2.14f1","releaseDate":"2019-11-27T20:40:20.1350000+02:00","stream":"LTS"},{"version":"2019.3.0f1","releaseDate":"2019-11-27T18:46:18.6920000+02:00","stream":"LTS"},{"version":"2019.3.0b12","releaseDate":"2019-11-21T22:46:51.9600000+02:00","stream":"Beta"},{"version":"2020.1.0a14","releaseDate":"2019-11-21T19:18:32.5570000+02:00","stream":"Alpha"},{"version":"2018.4.13f1","releaseDate":"2019-11-21T17:42:03.5440000+02:00","stream":"LTS"},{"version":"2019.2.13f1","releaseDate":"2019-11-20T19:22:07.1550000+02:00","stream":"LTS"},{"version":"2020.1.0a13","releaseDate":"2019-11-15T14:47:40.5570000+02:00","stream":"Alpha"},{"version":"2019.3.0b11","releaseDate":"2019-11-14T23:50:47.1120000+02:00","stream":"Beta"},{"version":"2019.2.12f1","releaseDate":"2019-11-11T20:38:24.9000000+02:00","stream":"LTS"},{"version":"2020.1.0a12","releaseDate":"2019-11-08T12:46:31.2520000+02:00","stream":"Alpha"},{"version":"2019.3.0b10","releaseDate":"2019-11-06T19:42:42.1640000+02:00","stream":"Beta"},{"version":"2019.3.0b9","releaseDate":"2019-11-01T18:37:43.0620000+02:00","stream":"Beta"},{"version":"2019.2.11f1","releaseDate":"2019-11-01T14:01:07.4740000+02:00","stream":"LTS"},{"version":"2020.1.0a11","releaseDate":"2019-10-31T18:32:46.5520000+02:00","stream":"Alpha"},{"version":"2017.4.34f1","releaseDate":"2019-10-30T19:20:05.4810000+02:00","stream":"LTS"},{"version":"2018.4.12f1","releaseDate":"2019-10-28T13:35:32.8840000+02:00","stream":"LTS"},{"version":"2019.2.10f1","releaseDate":"2019-10-24T00:46:43.5750000+03:00","stream":"LTS"},{"version":"2019.3.0b8","releaseDate":"2019-10-23T20:20:42.4990000+03:00","stream":"Beta"},{"version":"2020.1.0a9","releaseDate":"2019-10-17T13:21:00.0530000+03:00","stream":"Alpha"},{"version":"2019.3.0b7","releaseDate":"2019-10-14T20:32:52.8980000+03:00","stream":"Beta"},{"version":"2019.2.9f1","releaseDate":"2019-10-11T21:05:30.4520000+03:00","stream":"LTS"},{"version":"2018.4.11f1","releaseDate":"2019-10-10T16:08:52.3110000+03:00","stream":"LTS"},{"version":"2020.1.0a8","releaseDate":"2019-10-10T12:24:32.0630000+03:00","stream":"Alpha"},{"version":"2017.4.33f1","releaseDate":"2019-10-07T11:27:32.7430000+03:00","stream":"LTS"},{"version":"2019.3.0b6","releaseDate":"2019-10-04T19:50:37.4470000+03:00","stream":"Beta"},{"version":"2019.2.8f1","releaseDate":"2019-10-04T01:11:03.8390000+03:00","stream":"LTS"},{"version":"2020.1.0a7","releaseDate":"2019-10-01T19:22:34.3760000+03:00","stream":"Alpha"},{"version":"2018.4.10f1","releaseDate":"2019-10-01T15:06:54.8160000+03:00","stream":"LTS"},{"version":"2019.2.7f2","releaseDate":"2019-09-30T21:04:28.7120000+03:00","stream":"LTS"},{"version":"2019.3.0b5","releaseDate":"2019-09-30T17:32:45.4310000+03:00","stream":"Beta"},{"version":"2020.1.0a5","releaseDate":"2019-09-25T17:28:57.7470000+03:00","stream":"Alpha"},{"version":"2019.3.0b4","releaseDate":"2019-09-20T18:43:52.3750000+03:00","stream":"Beta"},{"version":"2019.2.6f1","releaseDate":"2019-09-17T22:29:14.5200000+03:00","stream":"LTS"},{"version":"2018.4.9f1","releaseDate":"2019-09-13T15:05:02.2970000+03:00","stream":"LTS"},{"version":"2019.2.5f1","releaseDate":"2019-09-12T18:37:27.5480000+03:00","stream":"LTS"},{"version":"2019.3.0b3","releaseDate":"2019-09-10T19:31:30.3650000+03:00","stream":"Beta"},{"version":"2019.3.0b2","releaseDate":"2019-09-06T20:16:21.5300000+03:00","stream":"Beta"},{"version":"2020.1.0a3","releaseDate":"2019-09-05T18:08:44.2560000+03:00","stream":"Alpha"},{"version":"2019.2.4f1","releaseDate":"2019-09-05T17:17:26.6680000+03:00","stream":"LTS"},{"version":"2017.4.32f1","releaseDate":"2019-09-05T14:50:38.8620000+03:00","stream":"LTS"},{"version":"2018.4.8f1","releaseDate":"2019-08-30T12:24:35.8910000+03:00","stream":"LTS"},{"version":"2019.2.3f1","releaseDate":"2019-08-28T15:57:33.7170000+03:00","stream":"LTS"},{"version":"2019.3.0b1","releaseDate":"2019-08-26T18:03:03.4490000+03:00","stream":"Beta"},{"version":"2019.2.2f1","releaseDate":"2019-08-21T13:42:41.1150000+03:00","stream":"LTS"},{"version":"2018.4.7f1","releaseDate":"2019-08-19T13:07:37.5940000+03:00","stream":"LTS"},{"version":"2019.2.1f1","releaseDate":"2019-08-14T17:28:59.0190000+03:00","stream":"LTS"},{"version":"2019.3.0a12","releaseDate":"2019-08-13T17:24:35.2560000+03:00","stream":"Alpha"},{"version":"2018.4.6f1","releaseDate":"2019-08-08T12:30:29.8390000+03:00","stream":"LTS"},{"version":"2019.1.14f1","releaseDate":"2019-08-08T12:01:21.7260000+03:00","stream":"LTS"},{"version":"2017.4.31f1","releaseDate":"2019-08-02T13:02:34.0640000+03:00","stream":"LTS"},{"version":"2019.1.13f1","releaseDate":"2019-08-01T14:12:43.9510000+03:00","stream":"LTS"},{"version":"2019.3.0a11","releaseDate":"2019-07-31T21:32:46.9870000+03:00","stream":"Alpha"},{"version":"2019.2.0f1","releaseDate":"2019-07-29T13:48:07.1340000+03:00","stream":"LTS"},{"version":"2019.1.12f1","releaseDate":"2019-07-26T16:28:16.0830000+03:00","stream":"LTS"},{"version":"2018.4.5f1","releaseDate":"2019-07-26T14:33:58.8310000+03:00","stream":"LTS"},{"version":"2019.3.0a10","releaseDate":"2019-07-22T21:03:08.9830000+03:00","stream":"Alpha"},{"version":"2019.2.0b10","releaseDate":"2019-07-18T18:39:34.1320000+03:00","stream":"Beta"},{"version":"2019.1.11f1","releaseDate":"2019-07-18T15:29:11.3370000+03:00","stream":"LTS"},{"version":"2018.4.4f1","releaseDate":"2019-07-12T19:20:22.9020000+03:00","stream":"LTS"},{"version":"2019.1.10f1","releaseDate":"2019-07-12T18:54:54.0030000+03:00","stream":"LTS"},{"version":"2019.2.0b9","releaseDate":"2019-07-11T21:56:49.6310000+03:00","stream":"Beta"},{"version":"2017.4.30f1","releaseDate":"2019-07-05T17:27:47.0610000+03:00","stream":"LTS"},{"version":"2019.1.9f1","releaseDate":"2019-07-05T14:47:29.6410000+03:00","stream":"LTS"},{"version":"2019.3.0a8","releaseDate":"2019-07-03T20:30:44.9800000+03:00","stream":"Alpha"},{"version":"2018.4.3f1","releaseDate":"2019-06-28T16:03:41.3670000+03:00","stream":"LTS"},{"version":"2019.3.0a7","releaseDate":"2019-06-26T20:12:40.6830000+03:00","stream":"Alpha"},{"version":"2019.2.0b7","releaseDate":"2019-06-25T23:47:11.2540000+03:00","stream":"Beta"},{"version":"2019.1.8f1","releaseDate":"2019-06-22T11:48:33.7900000+03:00","stream":"LTS"},{"version":"2019.3.0a6","releaseDate":"2019-06-19T06:02:44.0090000+03:00","stream":"Alpha"},{"version":"2019.1.7f1","releaseDate":"2019-06-14T18:44:01.6130000+03:00","stream":"LTS"},{"version":"2019.2.0b6","releaseDate":"2019-06-12T12:40:00.7880000+03:00","stream":"Beta"},{"version":"2017.4.29f1","releaseDate":"2019-06-08T22:03:51.2520000+03:00","stream":"LTS"},{"version":"2018.4.2f1","releaseDate":"2019-06-08T21:07:32.0460000+03:00","stream":"LTS"},{"version":"2019.1.6f1","releaseDate":"2019-06-08T19:58:35.5350000+03:00","stream":"LTS"},{"version":"2019.3.0a5","releaseDate":"2019-06-06T15:22:57.5620000+03:00","stream":"Alpha"},{"version":"2019.2.0b5","releaseDate":"2019-06-05T17:32:16.2730000+03:00","stream":"Beta"},{"version":"2019.1.5f1","releaseDate":"2019-06-03T14:40:25.5010000+03:00","stream":"LTS"},{"version":"2017.4.28f1","releaseDate":"2019-05-30T20:27:14.6810000+03:00","stream":"LTS"},{"version":"2019.3.0a4","releaseDate":"2019-05-30T17:15:42.7070000+03:00","stream":"Alpha"},{"version":"2019.2.0b4","releaseDate":"2019-05-29T20:12:13.2450000+03:00","stream":"Beta"},{"version":"2018.4.1f1","releaseDate":"2019-05-28T19:24:03.8580000+03:00","stream":"LTS"},{"version":"2019.1.4f1","releaseDate":"2019-05-24T20:57:10.7780000+03:00","stream":"LTS"},{"version":"2019.2.0b3","releaseDate":"2019-05-22T17:03:19.4450000+03:00","stream":"Beta"},{"version":"2019.3.0a3","releaseDate":"2019-05-22T14:46:55.0550000+03:00","stream":"Alpha"},{"version":"2019.1.3f1","releaseDate":"2019-05-16T17:47:53.8260000+03:00","stream":"LTS"},{"version":"2019.2.0b2","releaseDate":"2019-05-15T18:44:17.7590000+03:00","stream":"Beta"},{"version":"2019.3.0a2","releaseDate":"2019-05-10T23:36:39.2540000+03:00","stream":"Alpha"},{"version":"2019.1.2f1","releaseDate":"2019-05-10T18:59:18.5200000+03:00","stream":"LTS"},{"version":"2017.4.27f1","releaseDate":"2019-05-10T16:21:41.1350000+03:00","stream":"LTS"},{"version":"2018.4.0f1","releaseDate":"2019-05-10T14:43:31.4210000+03:00","stream":"LTS"},{"version":"2019.2.0b1","releaseDate":"2019-05-09T12:44:58.3510000+03:00","stream":"Beta"},{"version":"2019.1.1f1","releaseDate":"2019-05-03T17:43:43.5970000+03:00","stream":"LTS"},{"version":"2019.2.0a14","releaseDate":"2019-05-01T20:59:12.6880000+03:00","stream":"Alpha"},{"version":"2018.3.14f1","releaseDate":"2019-04-26T14:50:27.0450000+03:00","stream":"LTS"},{"version":"2019.2.0a13","releaseDate":"2019-04-24T20:50:21.0670000+03:00","stream":"Alpha"},{"version":"2017.4.26f1","releaseDate":"2019-04-23T12:36:49.5910000+03:00","stream":"LTS"},{"version":"2018.3.13f1","releaseDate":"2019-04-18T12:14:47.6950000+03:00","stream":"LTS"},{"version":"2019.1.0f2","releaseDate":"2019-04-15T16:28:01.4440000+03:00","stream":"LTS"},{"version":"2019.2.0a11","releaseDate":"2019-04-11T19:48:43.1840000+03:00","stream":"Alpha"},{"version":"2019.1.0f1","releaseDate":"2019-04-08T21:51:36.4080000+03:00","stream":"LTS"},{"version":"2018.3.12f1","releaseDate":"2019-04-08T17:36:53.3460000+03:00","stream":"LTS"},{"version":"2017.4.25f1","releaseDate":"2019-04-08T16:39:05.1910000+03:00","stream":"LTS"},{"version":"2019.1.0b10","releaseDate":"2019-04-03T17:15:22.3850000+03:00","stream":"Beta"},{"version":"2018.3.11f1","releaseDate":"2019-03-29T14:15:27.9350000+02:00","stream":"LTS"},{"version":"2019.1.0b9","releaseDate":"2019-03-26T18:57:04.8470000+02:00","stream":"Beta"},{"version":"2018.3.10f1","releaseDate":"2019-03-25T19:27:03.0350000+02:00","stream":"LTS"},{"version":"2017.4.24f1","releaseDate":"2019-03-22T11:39:13.6670000+02:00","stream":"LTS"},{"version":"2019.2.0a9","releaseDate":"2019-03-20T17:45:22.3090000+02:00","stream":"Alpha"},{"version":"2019.1.0b8","releaseDate":"2019-03-18T19:17:39.0930000+02:00","stream":"Beta"},{"version":"2018.3.9f1","releaseDate":"2019-03-18T14:14:09.6120000+02:00","stream":"LTS"},{"version":"2019.1.0b7","releaseDate":"2019-03-13T18:10:13.3900000+02:00","stream":"Beta"},{"version":"2019.2.0a8","releaseDate":"2019-03-13T16:22:24.9240000+02:00","stream":"Alpha"},{"version":"2017.4.23f1","releaseDate":"2019-03-08T19:28:16.4670000+02:00","stream":"LTS"},{"version":"2019.1.0b6","releaseDate":"2019-03-08T18:41:08.1330000+02:00","stream":"Beta"},{"version":"2018.3.8f1","releaseDate":"2019-03-08T18:15:08.8060000+02:00","stream":"LTS"},{"version":"2019.2.0a7","releaseDate":"2019-03-04T15:52:19.7100000+02:00","stream":"Alpha"},{"version":"2019.1.0b5","releaseDate":"2019-03-01T18:44:15.4080000+02:00","stream":"Beta"},{"version":"5.6.7f1","releaseDate":"2019-02-28T20:35:23.8950000+02:00","stream":"LTS"},{"version":"2018.2.21f1","releaseDate":"2019-02-28T19:57:55.3450000+02:00","stream":"LTS"},{"version":"2017.4.22f1","releaseDate":"2019-02-28T19:01:39.7560000+02:00","stream":"LTS"},{"version":"2018.3.7f1","releaseDate":"2019-02-28T18:07:09.1890000+02:00","stream":"LTS"},{"version":"2019.2.0a6","releaseDate":"2019-02-27T09:50:11.0870000+02:00","stream":"Alpha"},{"version":"2017.4.21f1","releaseDate":"2019-02-21T17:15:49.2140000+02:00","stream":"LTS"},{"version":"2019.1.0b4","releaseDate":"2019-02-19T18:30:33.2540000+02:00","stream":"Beta"},{"version":"2018.3.6f1","releaseDate":"2019-02-15T18:45:14.6840000+02:00","stream":"LTS"},{"version":"2019.1.0b3","releaseDate":"2019-02-11T17:22:34.4640000+02:00","stream":"Beta"},{"version":"2017.4.20f2","releaseDate":"2019-02-11T12:07:10.8110000+02:00","stream":"LTS"},{"version":"2018.3.5f1","releaseDate":"2019-02-08T17:27:29.3790000+02:00","stream":"LTS"},{"version":"2019.2.0a4","releaseDate":"2019-02-06T16:46:04.4100000+02:00","stream":"Alpha"},{"version":"2019.1.0b2","releaseDate":"2019-02-04T15:55:05.8000000+02:00","stream":"Beta"},{"version":"2018.3.4f1","releaseDate":"2019-02-01T18:49:54.5170000+02:00","stream":"LTS"},{"version":"2019.1.0b1","releaseDate":"2019-01-28T17:21:41.6220000+02:00","stream":"Beta"},{"version":"2017.4.19f1","releaseDate":"2019-01-28T16:49:20.9630000+02:00","stream":"LTS"},{"version":"2018.3.3f1","releaseDate":"2019-01-25T16:37:01.8620000+02:00","stream":"LTS"},{"version":"2018.3.2f1","releaseDate":"2019-01-17T11:18:26.5460000+02:00","stream":"LTS"},{"version":"2019.1.0a14","releaseDate":"2019-01-15T20:45:50.0540000+02:00","stream":"Alpha"},{"version":"2018.3.1f1","releaseDate":"2019-01-10T14:42:52.5380000+02:00","stream":"LTS"},{"version":"2017.4.18f1","releaseDate":"2019-01-10T13:37:33.9090000+02:00","stream":"LTS"},{"version":"2019.1.0a13","releaseDate":"2019-01-03T03:39:26.4790000+02:00","stream":"Alpha"},{"version":"2019.1.0a12","releaseDate":"2018-12-14T20:20:29.2790000+02:00","stream":"Alpha"},{"version":"2018.2.20f1","releaseDate":"2018-12-14T13:15:42.9470000+02:00","stream":"LTS"},{"version":"2018.3.0f2","releaseDate":"2018-12-12T14:02:30.5550000+02:00","stream":"LTS"},{"version":"2018.3.0f1","releaseDate":"2018-12-11T17:41:14.3820000+02:00","stream":"LTS"},{"version":"2017.2.5f1","releaseDate":"2018-12-07T20:04:37.5790000+02:00","stream":"LTS"},{"version":"2018.2.19f1","releaseDate":"2018-12-07T18:44:08.5920000+02:00","stream":"LTS"},{"version":"2017.4.17f1","releaseDate":"2018-12-07T17:51:37.3080000+02:00","stream":"LTS"},{"version":"2019.1.0a11","releaseDate":"2018-12-04T22:58:06.1280000+02:00","stream":"Alpha"},{"version":"2018.2.18f1","releaseDate":"2018-11-30T17:10:33.2730000+02:00","stream":"LTS"},{"version":"2018.3.0b12","releaseDate":"2018-11-28T14:03:56.2160000+02:00","stream":"Beta"},{"version":"2019.1.0a10","releaseDate":"2018-11-23T18:56:21.7430000+02:00","stream":"Alpha"},{"version":"2017.4.16f1","releaseDate":"2018-11-23T12:14:00.4550000+02:00","stream":"LTS"},{"version":"2018.2.17f1","releaseDate":"2018-11-21T17:28:51.6180000+02:00","stream":"LTS"},{"version":"2018.3.0b11","releaseDate":"2018-11-21T15:58:06.3430000+02:00","stream":"Beta"},{"version":"2017.2.4p1","releaseDate":"2018-11-16T12:22:37.6740000+02:00","stream":"Tech"},{"version":"2018.2.16f1","releaseDate":"2018-11-15T13:01:20.6050000+02:00","stream":"LTS"},{"version":"2019.1.0a9","releaseDate":"2018-11-14T18:08:29.5040000+02:00","stream":"Alpha"},{"version":"2018.3.0b10","releaseDate":"2018-11-14T15:35:56.4560000+02:00","stream":"Beta"},{"version":"2017.4.15f1","releaseDate":"2018-11-12T16:08:59.6070000+02:00","stream":"LTS"},{"version":"2018.2.15f1","releaseDate":"2018-11-09T12:10:19.0780000+02:00","stream":"LTS"},{"version":"2018.3.0b9","releaseDate":"2018-11-07T13:26:23.7790000+02:00","stream":"Beta"},{"version":"2019.1.0a8","releaseDate":"2018-11-07T01:07:14.7810000+02:00","stream":"Alpha"},{"version":"2019.1.0a7","releaseDate":"2018-10-31T18:36:10.7410000+02:00","stream":"Alpha"},{"version":"2018.3.0b8","releaseDate":"2018-10-31T12:43:25.5420000+02:00","stream":"Beta"},{"version":"2018.2.14f1","releaseDate":"2018-10-26T18:36:58.3850000+03:00","stream":"LTS"},{"version":"2017.4.14f1","releaseDate":"2018-10-26T14:46:14.9670000+03:00","stream":"LTS"},{"version":"2018.3.0b7","releaseDate":"2018-10-24T12:18:44.7430000+03:00","stream":"Beta"},{"version":"2018.2.13f1","releaseDate":"2018-10-18T13:04:17.7440000+03:00","stream":"LTS"},{"version":"2018.3.0b6","releaseDate":"2018-10-18T10:28:58.7650000+03:00","stream":"Beta"},{"version":"2018.2.12f1","releaseDate":"2018-10-12T17:40:28.9550000+03:00","stream":"LTS"},{"version":"2017.4.13f1","releaseDate":"2018-10-12T15:12:23.4990000+03:00","stream":"LTS"},{"version":"2018.3.0b5","releaseDate":"2018-10-10T11:17:14.4800000+03:00","stream":"Beta"},{"version":"2018.2.11f1","releaseDate":"2018-10-04T13:36:18.2630000+03:00","stream":"LTS"},{"version":"2018.3.0b4","releaseDate":"2018-10-03T14:09:35.4250000+03:00","stream":"Beta"},{"version":"2017.2.4f1","releaseDate":"2018-10-03T13:10:22.6970000+03:00","stream":"LTS"},{"version":"2017.4.12f1","releaseDate":"2018-09-27T13:54:38.6660000+03:00","stream":"LTS"},{"version":"2018.2.10f1","releaseDate":"2018-09-26T17:32:56.4460000+03:00","stream":"LTS"},{"version":"2018.3.0b3","releaseDate":"2018-09-26T16:21:30.9390000+03:00","stream":"Beta"},{"version":"2018.2.9f1","releaseDate":"2018-09-21T15:47:59.5780000+03:00","stream":"LTS"},{"version":"2018.3.0b2","releaseDate":"2018-09-20T12:44:45.6210000+03:00","stream":"Beta"},{"version":"2018.2.8f1","releaseDate":"2018-09-14T13:03:11.1630000+03:00","stream":"LTS"},{"version":"2017.4.11f1","releaseDate":"2018-09-13T12:35:24.1460000+03:00","stream":"LTS"},{"version":"2018.3.0b1","releaseDate":"2018-09-11T16:07:05.2700000+03:00","stream":"Beta"},{"version":"2018.2.7f1","releaseDate":"2018-09-06T19:34:51.1710000+03:00","stream":"LTS"},{"version":"2018.2.6f1","releaseDate":"2018-08-30T14:26:23.2890000+03:00","stream":"LTS"},{"version":"2017.2.3p4","releaseDate":"2018-08-29T16:24:14.6370000+03:00","stream":"Tech"},{"version":"2018.1.9f2","releaseDate":"2018-08-29T13:25:53.0360000+03:00","stream":"LTS"},{"version":"2017.4.10f1","releaseDate":"2018-08-24T16:44:21.5260000+03:00","stream":"LTS"},{"version":"2018.2.5f1","releaseDate":"2018-08-22T18:12:22.7900000+03:00","stream":"LTS"},{"version":"2018.2.4f1","releaseDate":"2018-08-17T17:17:08.6950000+03:00","stream":"LTS"},{"version":"2018.2.3f1","releaseDate":"2018-08-10T19:45:34.0780000+03:00","stream":"LTS"},{"version":"2017.4.9f1","releaseDate":"2018-08-10T17:27:28.1310000+03:00","stream":"LTS"},{"version":"2017.2.3p3","releaseDate":"2018-08-03T17:58:35.3170000+03:00","stream":"Tech"},{"version":"2018.2.2f1","releaseDate":"2018-08-03T16:32:08.8780000+03:00","stream":"LTS"},{"version":"2017.4.8f1","releaseDate":"2018-07-26T14:30:32.4430000+03:00","stream":"LTS"},{"version":"2018.2.1f1","releaseDate":"2018-07-26T13:43:51.5190000+03:00","stream":"LTS"},{"version":"2017.1.5f1","releaseDate":"2018-07-23T19:24:20.2750000+03:00","stream":"LTS"},{"version":"2018.1.8f1","releaseDate":"2018-07-13T16:52:59.7910000+03:00","stream":"LTS"},{"version":"2017.4.7f1","releaseDate":"2018-07-13T13:22:49.0920000+03:00","stream":"LTS"},{"version":"2018.2.0f2","releaseDate":"2018-07-09T19:46:12.1340000+03:00","stream":"LTS"},{"version":"2018.2.0f1","releaseDate":"2018-07-06T18:20:59.9000000+03:00","stream":"LTS"},{"version":"2017.2.3p2","releaseDate":"2018-07-05T17:38:35.9270000+03:00","stream":"Tech"},{"version":"2018.1.7f1","releaseDate":"2018-07-05T17:17:37.5460000+03:00","stream":"LTS"},{"version":"2018.2.0b11","releaseDate":"2018-07-03T16:34:59.1560000+03:00","stream":"Beta"},{"version":"2018.2.0b10","releaseDate":"2018-06-26T16:53:45.0430000+03:00","stream":"Beta"},{"version":"2017.4.6f1","releaseDate":"2018-06-22T11:23:54.2190000+03:00","stream":"LTS"},{"version":"2018.1.6f1","releaseDate":"2018-06-21T18:02:57.3560000+03:00","stream":"LTS"},{"version":"2017.1.4p2","releaseDate":"2018-06-20T12:46:38.0700000+03:00","stream":"Tech"},{"version":"2018.2.0b9","releaseDate":"2018-06-19T16:54:09.0660000+03:00","stream":"Beta"},{"version":"2018.1.5f1","releaseDate":"2018-06-15T15:35:07.6220000+03:00","stream":"LTS"},{"version":"2018.2.0b8","releaseDate":"2018-06-13T16:54:30.1710000+03:00","stream":"Beta"},{"version":"2017.1.4p1","releaseDate":"2018-06-13T16:31:38.3930000+03:00","stream":"Tech"},{"version":"2018.1.4f1","releaseDate":"2018-06-11T17:59:27.4260000+03:00","stream":"LTS"},{"version":"2017.4.5f1","releaseDate":"2018-06-07T12:24:13.1100000+03:00","stream":"LTS"},{"version":"2018.2.0b7","releaseDate":"2018-06-06T20:13:56.2500000+03:00","stream":"Beta"},{"version":"2018.1.3f1","releaseDate":"2018-06-04T12:52:38.3090000+03:00","stream":"LTS"},{"version":"2017.2.3p1","releaseDate":"2018-05-31T13:04:31.7460000+03:00","stream":"Tech"},{"version":"2018.2.0b6","releaseDate":"2018-05-29T17:49:22.1680000+03:00","stream":"Beta"},{"version":"2018.1.2f1","releaseDate":"2018-05-25T18:39:42.9360000+03:00","stream":"LTS"},{"version":"2018.2.0b5","releaseDate":"2018-05-24T10:21:44.1020000+03:00","stream":"Beta"},{"version":"2017.1.4f1","releaseDate":"2018-05-23T18:53:36.9910000+03:00","stream":"LTS"},{"version":"2017.4.4f1","releaseDate":"2018-05-23T18:20:18.8730000+03:00","stream":"LTS"},{"version":"2017.2.3f1","releaseDate":"2018-05-18T16:26:34.7630000+03:00","stream":"LTS"},{"version":"2018.1.1f1","releaseDate":"2018-05-18T12:56:06.0720000+03:00","stream":"LTS"},{"version":"2018.2.0b4","releaseDate":"2018-05-11T22:14:37.6770000+03:00","stream":"Beta"},{"version":"2017.4.3f1","releaseDate":"2018-05-11T17:44:04.8180000+03:00","stream":"LTS"},{"version":"5.6.6f2","releaseDate":"2018-05-08T12:03:55.4790000+03:00","stream":"LTS"},{"version":"2017.1.3p4","releaseDate":"2018-05-06T13:03:23.7480000+03:00","stream":"Tech"},{"version":"2018.2.0b3","releaseDate":"2018-05-04T03:29:00.7830000+03:00","stream":"Beta"},{"version":"2018.1.0f2","releaseDate":"2018-05-02T12:32:53.1810000+03:00","stream":"LTS"},{"version":"2017.4.2f2","releaseDate":"2018-04-30T12:57:20.7740000+03:00","stream":"LTS"},{"version":"2017.2.2p4","releaseDate":"2018-04-27T11:09:34.6590000+03:00","stream":"Tech"},{"version":"2018.1.0f1","releaseDate":"2018-04-26T17:34:43.9320000+03:00","stream":"LTS"},{"version":"2018.2.0b2","releaseDate":"2018-04-25T18:46:41.7020000+03:00","stream":"Beta"},{"version":"2018.2.0b1","releaseDate":"2018-04-18T04:14:08.2100000+03:00","stream":"Beta"},{"version":"2017.4.1f1","releaseDate":"2018-04-12T15:46:45.4370000+03:00","stream":"LTS"},{"version":"5.6.5p4","releaseDate":"2018-04-12T13:47:59.7170000+03:00","stream":"Tech"},{"version":"2017.1.3p3","releaseDate":"2018-04-06T13:32:38.6350000+03:00","stream":"Tech"},{"version":"2017.2.2p3","releaseDate":"2018-04-05T13:16:10.2630000+03:00","stream":"Tech"},{"version":"2018.1.0b13","releaseDate":"2018-03-30T13:12:24.9220000+03:00","stream":"Beta"},{"version":"2017.2.2p2","releaseDate":"2018-03-23T15:33:23.0760000+02:00","stream":"Tech"},{"version":"2018.1.0b12","releaseDate":"2018-03-23T10:03:45.3420000+02:00","stream":"Beta"},{"version":"2017.4.0f1","releaseDate":"2018-03-19T13:40:15.8330000+02:00","stream":"LTS"},{"version":"2018.1.0b11","releaseDate":"2018-03-16T15:01:57.6520000+02:00","stream":"Beta"},{"version":"5.6.5p3","releaseDate":"2018-03-16T11:45:19.3630000+02:00","stream":"Tech"},{"version":"2017.3.1p4","releaseDate":"2018-03-13T13:06:06.2160000+02:00","stream":"Tech"},{"version":"2017.2.2p1","releaseDate":"2018-03-09T17:01:16.6870000+02:00","stream":"Tech"},{"version":"2018.1.0b10","releaseDate":"2018-03-08T17:30:14.4980000+02:00","stream":"Beta"},{"version":"2017.3.1p3","releaseDate":"2018-03-06T15:00:52.2380000+02:00","stream":"Tech"},{"version":"2017.1.3p2","releaseDate":"2018-03-02T13:14:31.1230000+02:00","stream":"Tech"},{"version":"2018.1.0b9","releaseDate":"2018-02-27T22:03:39.0920000+02:00","stream":"Beta"},{"version":"2017.3.1p2","releaseDate":"2018-02-26T13:20:31.2290000+02:00","stream":"Tech"},{"version":"2017.2.2f1","releaseDate":"2018-02-26T12:56:15.2980000+02:00","stream":"LTS"},{"version":"2018.1.0b8","releaseDate":"2018-02-21T01:19:54.4560000+02:00","stream":"Beta"},{"version":"5.6.5p2","releaseDate":"2018-02-15T12:54:22.5920000+02:00","stream":"Tech"},{"version":"2017.3.1p1","releaseDate":"2018-02-14T18:32:07.5630000+02:00","stream":"Tech"},{"version":"2018.1.0b7","releaseDate":"2018-02-14T13:12:33.8400000+02:00","stream":"Beta"},{"version":"2017.2.1p4","releaseDate":"2018-02-12T15:46:02.9250000+02:00","stream":"Tech"},{"version":"2018.1.0b6","releaseDate":"2018-02-08T01:26:06.8280000+02:00","stream":"Beta"},{"version":"2017.3.1f1","releaseDate":"2018-02-05T17:31:22.3830000+02:00","stream":"LTS"},{"version":"2017.1.3p1","releaseDate":"2018-02-02T18:03:25.9430000+02:00","stream":"Tech"},{"version":"2018.1.0b5","releaseDate":"2018-01-31T14:56:51.0850000+02:00","stream":"Beta"},{"version":"2017.2.1p3","releaseDate":"2018-01-30T18:14:38.4790000+02:00","stream":"Tech"},{"version":"2017.3.0p4","releaseDate":"2018-01-29T14:43:13.4400000+02:00","stream":"Tech"},{"version":"2018.1.0b4","releaseDate":"2018-01-22T21:10:28.0890000+02:00","stream":"Beta"},{"version":"5.6.5p1","releaseDate":"2018-01-22T12:15:55.2200000+02:00","stream":"Tech"},{"version":"2017.3.0p3","releaseDate":"2018-01-18T18:39:06.6310000+02:00","stream":"Tech"},{"version":"2018.1.0b3","releaseDate":"2018-01-17T14:06:15.8980000+02:00","stream":"Beta"},{"version":"2017.3.0p2","releaseDate":"2018-01-12T20:16:05.8470000+02:00","stream":"Tech"},{"version":"5.5.6f1","releaseDate":"2018-01-12T19:52:32.0940000+02:00","stream":"LTS"},{"version":"2017.2.1p2","releaseDate":"2018-01-12T12:39:16.7060000+02:00","stream":"Tech"},{"version":"2018.1.0b2","releaseDate":"2018-01-09T17:44:00.8450000+02:00","stream":"Beta"},{"version":"2017.1.3f1","releaseDate":"2018-01-04T19:14:40.6550000+02:00","stream":"LTS"},{"version":"2017.3.0p1","releaseDate":"2017-12-22T13:42:56.1700000+02:00","stream":"Tech"},{"version":"5.6.5f1","releaseDate":"2017-12-21T13:08:15.3130000+02:00","stream":"LTS"},{"version":"2017.2.1p1","releaseDate":"2017-12-20T15:53:25.0250000+02:00","stream":"Tech"},{"version":"2017.3.0f3","releaseDate":"2017-12-18T18:24:06.3520000+02:00","stream":"LTS"},{"version":"2017.2.1f1","releaseDate":"2017-12-11T17:44:05.8030000+02:00","stream":"LTS"},{"version":"2017.3.0f2","releaseDate":"2017-12-08T18:45:52.2440000+02:00","stream":"LTS"},{"version":"2017.1.2p4","releaseDate":"2017-12-08T17:51:33.8740000+02:00","stream":"Tech"},{"version":"5.6.4p4","releaseDate":"2017-12-07T14:26:50.5400000+02:00","stream":"Tech"},{"version":"2017.2.0p4","releaseDate":"2017-12-04T12:45:02.9910000+02:00","stream":"Tech"},{"version":"2017.3.0f1","releaseDate":"2017-12-01T20:31:55.9230000+02:00","stream":"LTS"},{"version":"5.5.5p2","releaseDate":"2017-11-28T18:57:54.6100000+02:00","stream":"Tech"},{"version":"2017.3.0b11","releaseDate":"2017-11-28T17:29:29.2860000+02:00","stream":"Beta"},{"version":"2017.2.0p3","releaseDate":"2017-11-27T15:27:46.2180000+02:00","stream":"Tech"},{"version":"2017.1.2p3","releaseDate":"2017-11-21T17:57:28.2100000+02:00","stream":"Tech"},{"version":"2017.3.0b10","releaseDate":"2017-11-20T17:18:14.5740000+02:00","stream":"Beta"},{"version":"5.6.4p3","releaseDate":"2017-11-20T15:49:56.7630000+02:00","stream":"Tech"},{"version":"2017.2.0p2","releaseDate":"2017-11-15T16:24:53.1850000+02:00","stream":"Tech"},{"version":"5.6.4p2","releaseDate":"2017-11-12T21:00:26.6870000+02:00","stream":"Tech"},{"version":"2017.3.0b9","releaseDate":"2017-11-10T19:33:11.8540000+02:00","stream":"Beta"},{"version":"2017.2.0p1","releaseDate":"2017-11-06T19:18:19.4960000+02:00","stream":"Tech"},{"version":"2017.3.0b8","releaseDate":"2017-11-03T17:21:00.7540000+02:00","stream":"Beta"},{"version":"2017.3.0b7","releaseDate":"2017-10-31T17:40:56.2350000+02:00","stream":"Beta"},{"version":"2017.1.2p2","releaseDate":"2017-10-27T14:03:41.0290000+03:00","stream":"Tech"},{"version":"2017.3.0b6","releaseDate":"2017-10-24T19:13:05.0440000+03:00","stream":"Beta"},{"version":"5.6.4p1","releaseDate":"2017-10-20T11:55:09.4280000+03:00","stream":"Tech"},{"version":"2017.3.0b5","releaseDate":"2017-10-17T17:14:21.2300000+03:00","stream":"Beta"},{"version":"5.6.4f1","releaseDate":"2017-10-16T00:45:41.6100000+03:00","stream":"LTS"},{"version":"5.5.5p1","releaseDate":"2017-10-13T18:41:22.6040000+03:00","stream":"Tech"},{"version":"2017.1.2p1","releaseDate":"2017-10-13T17:36:45.0300000+03:00","stream":"Tech"},{"version":"2017.2.0f3","releaseDate":"2017-10-11T20:12:25.4710000+03:00","stream":"LTS"},{"version":"2017.1.1p4","releaseDate":"2017-10-11T01:24:40.4590000+03:00","stream":"Tech"},{"version":"2017.3.0b4","releaseDate":"2017-10-10T18:09:12.8770000+03:00","stream":"Beta"},{"version":"2017.1.2f1","releaseDate":"2017-10-06T15:44:00.5700000+03:00","stream":"LTS"},{"version":"2017.3.0b3","releaseDate":"2017-10-05T17:33:00.3650000+03:00","stream":"Beta"},{"version":"5.5.5f1","releaseDate":"2017-10-03T21:12:06.1320000+03:00","stream":"LTS"},{"version":"2017.2.0f2","releaseDate":"2017-10-02T20:53:40.3960000+03:00","stream":"LTS"},{"version":"2017.3.0b2","releaseDate":"2017-09-26T17:46:30.1710000+03:00","stream":"Beta"},{"version":"2017.1.1p3","releaseDate":"2017-09-22T19:41:25.5110000+03:00","stream":"Tech"},{"version":"2017.2.0f1","releaseDate":"2017-09-22T18:33:23.3090000+03:00","stream":"LTS"},{"version":"5.6.3p4","releaseDate":"2017-09-22T16:54:29.4830000+03:00","stream":"Tech"},{"version":"2017.3.0b1","releaseDate":"2017-09-21T16:38:59.5970000+03:00","stream":"Beta"},{"version":"5.4.6f3","releaseDate":"2017-09-20T11:37:58.9140000+03:00","stream":"LTS"},{"version":"2017.1.1p2","releaseDate":"2017-09-15T13:24:31.5570000+03:00","stream":"Tech"},{"version":"5.5.4p5","releaseDate":"2017-09-14T17:25:05.9100000+03:00","stream":"Tech"},{"version":"2017.2.0b11","releaseDate":"2017-09-12T16:31:58.6150000+03:00","stream":"Beta"},{"version":"2017.1.1p1","releaseDate":"2017-09-08T19:32:50.0560000+03:00","stream":"Tech"},{"version":"5.6.3p3","releaseDate":"2017-09-08T16:29:05.0680000+03:00","stream":"Tech"},{"version":"2017.2.0b10","releaseDate":"2017-09-04T23:19:12.8220000+03:00","stream":"Beta"},{"version":"2017.1.1f1","releaseDate":"2017-09-04T14:34:13.9350000+03:00","stream":"LTS"},{"version":"5.6.3p2","releaseDate":"2017-09-01T19:44:02.7640000+03:00","stream":"Tech"},{"version":"5.5.4p4","releaseDate":"2017-08-31T20:24:23.0240000+03:00","stream":"Tech"},{"version":"2017.2.0b9","releaseDate":"2017-08-29T18:59:23.8640000+03:00","stream":"Beta"},{"version":"2017.1.0p5","releaseDate":"2017-08-25T14:26:12.4730000+03:00","stream":"Tech"},{"version":"2017.2.0b8","releaseDate":"2017-08-18T17:33:35.1850000+03:00","stream":"Beta"},{"version":"5.3.8p2","releaseDate":"2017-08-18T13:53:50.1590000+03:00","stream":"Tech"},{"version":"5.4.5p5","releaseDate":"2017-08-18T03:06:42.9010000+03:00","stream":"Tech"},{"version":"5.5.4p3","releaseDate":"2017-08-18T00:45:42.7300000+03:00","stream":"Tech"},{"version":"5.6.3p1","releaseDate":"2017-08-17T23:56:53.9060000+03:00","stream":"Tech"},{"version":"2017.1.0p4","releaseDate":"2017-08-17T10:16:35.4780000+03:00","stream":"Tech"},{"version":"2017.2.0b7","releaseDate":"2017-08-15T20:42:22.6120000+03:00","stream":"Beta"},{"version":"2017.1.0p3","releaseDate":"2017-08-11T17:09:22.9780000+03:00","stream":"Tech"},{"version":"2017.2.0b6","releaseDate":"2017-08-09T00:09:18.9660000+03:00","stream":"Beta"},{"version":"5.6.3f1","releaseDate":"2017-08-01T20:03:58.0440000+03:00","stream":"LTS"},{"version":"2017.2.0b5","releaseDate":"2017-08-01T12:24:10.5780000+03:00","stream":"Beta"},{"version":"2017.1.0p2","releaseDate":"2017-07-27T15:04:31.4330000+03:00","stream":"Tech"},{"version":"5.5.4p2","releaseDate":"2017-07-26T14:06:59.7850000+03:00","stream":"Tech"},{"version":"5.6.2p4","releaseDate":"2017-07-21T20:06:22.5790000+03:00","stream":"Tech"},{"version":"2017.1.0p1","releaseDate":"2017-07-21T19:18:52.6830000+03:00","stream":"Tech"},{"version":"2017.2.0b4","releaseDate":"2017-07-20T19:07:24.3140000+03:00","stream":"Beta"},{"version":"5.6.2p3","releaseDate":"2017-07-17T17:54:07.4300000+03:00","stream":"Tech"},{"version":"2017.2.0b3","releaseDate":"2017-07-14T16:58:24.2490000+03:00","stream":"Beta"},{"version":"2017.1.0f3","releaseDate":"2017-07-10T14:29:48.3440000+03:00","stream":"LTS"},{"version":"2017.2.0b2","releaseDate":"2017-07-06T17:42:46.1050000+03:00","stream":"Beta"},{"version":"5.6.2p2","releaseDate":"2017-07-06T15:05:04.2550000+03:00","stream":"Tech"},{"version":"2017.1.0f2","releaseDate":"2017-07-05T21:06:25.7100000+03:00","stream":"LTS"},{"version":"5.6.2p1","releaseDate":"2017-06-29T17:08:51.3150000+03:00","stream":"Tech"},{"version":"5.4.5p4","releaseDate":"2017-06-28T14:33:16.4010000+03:00","stream":"Tech"},{"version":"2017.1.0f1","releaseDate":"2017-06-26T21:35:00.1560000+03:00","stream":"LTS"},{"version":"5.5.4p1","releaseDate":"2017-06-22T17:02:21.4330000+03:00","stream":"Tech"},{"version":"5.6.2f1","releaseDate":"2017-06-21T16:10:00.3850000+03:00","stream":"LTS"},{"version":"2017.1.0b10","releaseDate":"2017-06-19T18:48:58.2720000+03:00","stream":"Beta"},{"version":"5.6.1p4","releaseDate":"2017-06-16T18:05:31.4130000+03:00","stream":"Tech"},{"version":"5.3.8f2","releaseDate":"2017-06-13T14:42:19.0780000+03:00","stream":"LTS"},{"version":"2017.1.0b9","releaseDate":"2017-06-09T22:19:53.7480000+03:00","stream":"Beta"},{"version":"5.4.5p3","releaseDate":"2017-06-09T22:08:09.9090000+03:00","stream":"Tech"},{"version":"5.6.1p3","releaseDate":"2017-06-09T20:34:47.4540000+03:00","stream":"Tech"},{"version":"5.5.4f1","releaseDate":"2017-06-06T19:31:53.0570000+03:00","stream":"LTS"},{"version":"2017.1.0b8","releaseDate":"2017-06-02T18:43:21.3940000+03:00","stream":"Beta"},{"version":"5.6.1p2","releaseDate":"2017-06-02T13:52:12.6100000+03:00","stream":"Tech"},{"version":"5.4.5p2","releaseDate":"2017-05-29T11:25:58.9590000+03:00","stream":"Tech"},{"version":"2017.1.0b7","releaseDate":"2017-05-26T19:22:45.2060000+03:00","stream":"Beta"},{"version":"5.5.3p4","releaseDate":"2017-05-24T19:03:02.5850000+03:00","stream":"Tech"},{"version":"2017.1.0b6","releaseDate":"2017-05-19T14:33:20.6370000+03:00","stream":"Beta"},{"version":"5.6.1p1","releaseDate":"2017-05-18T15:38:02.4330000+03:00","stream":"Tech"},{"version":"2017.1.0b5","releaseDate":"2017-05-11T15:55:57.6670000+03:00","stream":"Beta"},{"version":"5.6.1f1","releaseDate":"2017-05-11T13:42:26.0420000+03:00","stream":"LTS"},{"version":"5.5.3p3","releaseDate":"2017-05-10T18:53:39.6190000+03:00","stream":"Tech"},{"version":"2017.1.0b4","releaseDate":"2017-05-08T17:47:09.7280000+03:00","stream":"Beta"},{"version":"5.6.0p4","releaseDate":"2017-05-08T15:16:30.1560000+03:00","stream":"Tech"},{"version":"2017.1.0b3","releaseDate":"2017-05-03T16:29:05.2510000+03:00","stream":"Beta"},{"version":"5.6.0p3","releaseDate":"2017-04-27T22:02:39.4410000+03:00","stream":"Tech"},{"version":"2017.1.0b2","releaseDate":"2017-04-26T16:56:42.4410000+03:00","stream":"Beta"},{"version":"5.5.3p2","releaseDate":"2017-04-25T17:57:56.6830000+03:00","stream":"Tech"},{"version":"5.6.0p2","releaseDate":"2017-04-21T23:03:49.1450000+03:00","stream":"Tech"},{"version":"5.6.0p1","releaseDate":"2017-04-18T16:49:03.9820000+03:00","stream":"Tech"},{"version":"5.5.3p1","releaseDate":"2017-04-13T18:11:15.6120000+03:00","stream":"Tech"},{"version":"2017.1.0b1","releaseDate":"2017-04-11T17:05:40.0040000+03:00","stream":"Beta"},{"version":"5.6.0f3","releaseDate":"2017-03-31T18:00:22.4860000+03:00","stream":"LTS"},{"version":"5.5.3f1","releaseDate":"2017-03-31T13:51:39.1560000+03:00","stream":"LTS"},{"version":"5.4.5p1","releaseDate":"2017-03-30T17:45:22.1890000+03:00","stream":"Tech"},{"version":"5.6.0f2","releaseDate":"2017-03-27T19:28:45.6580000+03:00","stream":"LTS"},{"version":"5.5.2p4","releaseDate":"2017-03-23T12:35:50.2430000+02:00","stream":"Tech"},{"version":"5.5.2p3","releaseDate":"2017-03-17T20:58:40.1640000+02:00","stream":"Tech"},{"version":"5.6.0f1","releaseDate":"2017-03-17T18:41:48.6380000+02:00","stream":"LTS"},{"version":"5.4.5f1","releaseDate":"2017-03-10T16:21:03.7460000+02:00","stream":"LTS"},{"version":"5.6.0b11","releaseDate":"2017-03-08T19:05:35.2990000+02:00","stream":"Beta"},{"version":"5.5.2p2","releaseDate":"2017-03-08T18:29:03.3490000+02:00","stream":"Tech"},{"version":"5.5.2p1","releaseDate":"2017-03-03T14:06:12.3730000+02:00","stream":"Tech"},{"version":"5.6.0b10","releaseDate":"2017-03-02T19:57:00.6420000+02:00","stream":"Beta"},{"version":"5.4.4p4","releaseDate":"2017-03-01T13:11:30.9140000+02:00","stream":"Tech"},{"version":"5.5.2f1","releaseDate":"2017-02-24T11:54:27.4260000+02:00","stream":"LTS"},{"version":"5.5.1p4","releaseDate":"2017-02-17T18:08:36.9750000+02:00","stream":"Tech"},{"version":"5.6.0b9","releaseDate":"2017-02-17T16:41:26.8530000+02:00","stream":"Beta"},{"version":"5.6.0b8","releaseDate":"2017-02-13T17:54:50.1120000+02:00","stream":"Beta"},{"version":"5.5.1p3","releaseDate":"2017-02-09T14:22:29.2650000+02:00","stream":"Tech"},{"version":"5.4.4p3","releaseDate":"2017-02-08T19:25:47.9670000+02:00","stream":"Tech"},{"version":"5.3.7p4","releaseDate":"2017-02-07T19:01:05.9100000+02:00","stream":"Tech"},{"version":"5.6.0b7","releaseDate":"2017-02-07T17:05:04.8950000+02:00","stream":"Beta"},{"version":"5.5.1p2","releaseDate":"2017-02-03T15:27:39.9140000+02:00","stream":"Tech"},{"version":"5.6.0b6","releaseDate":"2017-02-01T17:38:41.3800000+02:00","stream":"Beta"},{"version":"5.5.1p1","releaseDate":"2017-02-01T16:22:21.4140000+02:00","stream":"Tech"},{"version":"5.6.0b5","releaseDate":"2017-01-26T11:26:16.7750000+02:00","stream":"Beta"},{"version":"5.4.4p2","releaseDate":"2017-01-25T17:10:44.2950000+02:00","stream":"Tech"},{"version":"5.5.1f1","releaseDate":"2017-01-24T12:32:21.5040000+02:00","stream":"LTS"},{"version":"5.6.0b4","releaseDate":"2017-01-17T22:17:27.6580000+02:00","stream":"Beta"},{"version":"5.4.4p1","releaseDate":"2017-01-13T18:46:40.7580000+02:00","stream":"Tech"},{"version":"5.5.0p4","releaseDate":"2017-01-11T18:18:53.9900000+02:00","stream":"Tech"},{"version":"5.4.4f1","releaseDate":"2017-01-05T17:53:15.0500000+02:00","stream":"LTS"},{"version":"5.5.0p3","releaseDate":"2017-01-05T11:04:18.8540000+02:00","stream":"Tech"},{"version":"5.6.0b3","releaseDate":"2016-12-23T19:38:00.2460000+02:00","stream":"Beta"},{"version":"5.3.7p3","releaseDate":"2016-12-21T18:13:38.5020000+02:00","stream":"Tech"},{"version":"5.6.0b2","releaseDate":"2016-12-20T15:32:52.8740000+02:00","stream":"Beta"},{"version":"5.5.0p2","releaseDate":"2016-12-16T22:23:56.1000000+02:00","stream":"Tech"},{"version":"5.4.3p4","releaseDate":"2016-12-16T15:59:43.9270000+02:00","stream":"Tech"},{"version":"5.6.0b1","releaseDate":"2016-12-13T12:35:25.7510000+02:00","stream":"Beta"},{"version":"5.4.3p3","releaseDate":"2016-12-07T18:18:47.8600000+02:00","stream":"Tech"},{"version":"5.5.0p1","releaseDate":"2016-12-07T17:25:41.5570000+02:00","stream":"Tech"},{"version":"5.4.3p2","releaseDate":"2016-12-01T15:54:47.9540000+02:00","stream":"Tech"},{"version":"5.5.0f3","releaseDate":"2016-11-30T13:49:48.4400000+02:00","stream":"LTS"},{"version":"5.3.7p2","releaseDate":"2016-11-28T18:06:22.4430000+02:00","stream":"Tech"},{"version":"5.4.3p1","releaseDate":"2016-11-28T12:09:25.4130000+02:00","stream":"Tech"},{"version":"5.5.0f2","releaseDate":"2016-11-25T12:16:50.2830000+02:00","stream":"LTS"},{"version":"5.5.0f1","releaseDate":"2016-11-22T18:14:01.1850000+02:00","stream":"LTS"},{"version":"5.4.3f1","releaseDate":"2016-11-17T14:51:02.0260000+02:00","stream":"LTS"},{"version":"5.3.7p1","releaseDate":"2016-11-11T17:32:03.0220000+02:00","stream":"Tech"},{"version":"5.5.0b11","releaseDate":"2016-11-09T20:04:57.2170000+02:00","stream":"Beta"},{"version":"5.5.0b10","releaseDate":"2016-11-09T17:40:05.1770000+02:00","stream":"Beta"},{"version":"5.4.2p4","releaseDate":"2016-11-09T14:35:14.5410000+02:00","stream":"Tech"},{"version":"5.3.7f1","releaseDate":"2016-11-08T15:22:26.8980000+02:00","stream":"LTS"},{"version":"5.4.2p3","releaseDate":"2016-11-02T17:35:46.0380000+02:00","stream":"Tech"},{"version":"5.4.2p2","releaseDate":"2016-10-28T15:33:11.6310000+03:00","stream":"Tech"},{"version":"5.4.2p1","releaseDate":"2016-10-24T18:58:28.0140000+03:00","stream":"Tech"},{"version":"5.5.0b9","releaseDate":"2016-10-24T18:06:57.1480000+03:00","stream":"Beta"},{"version":"5.3.6p8","releaseDate":"2016-10-24T17:31:38.0530000+03:00","stream":"Tech"},{"version":"5.4.2f2","releaseDate":"2016-10-21T12:41:39.1710000+03:00","stream":"LTS"},{"version":"5.5.0b8","releaseDate":"2016-10-20T16:10:07.3480000+03:00","stream":"Beta"},{"version":"5.5.0b7","releaseDate":"2016-10-11T17:19:07.1390000+03:00","stream":"Beta"},{"version":"5.3.6p7","releaseDate":"2016-10-07T15:14:33.7940000+03:00","stream":"Tech"},{"version":"5.4.1p4","releaseDate":"2016-10-05T19:04:22.6090000+03:00","stream":"Tech"},{"version":"5.5.0b6","releaseDate":"2016-10-03T19:33:15.7800000+03:00","stream":"Beta"},{"version":"5.4.1p3","releaseDate":"2016-09-28T17:50:34.1120000+03:00","stream":"Tech"},{"version":"5.5.0b5","releaseDate":"2016-09-27T11:31:35.7680000+03:00","stream":"Beta"},{"version":"5.3.6p6","releaseDate":"2016-09-23T13:03:44.0380000+03:00","stream":"Tech"},{"version":"5.4.1p2","releaseDate":"2016-09-22T21:37:12.2160000+03:00","stream":"Tech"},{"version":"5.5.0b4","releaseDate":"2016-09-19T18:28:43.2030000+03:00","stream":"Beta"},{"version":"5.3.6p5","releaseDate":"2016-09-16T10:03:24.6470000+03:00","stream":"Tech"},{"version":"5.4.1p1","releaseDate":"2016-09-15T14:18:34.2100000+03:00","stream":"Tech"},{"version":"5.5.0b3","releaseDate":"2016-09-12T16:01:26.0040000+03:00","stream":"Beta"},{"version":"5.4.1f1","releaseDate":"2016-09-07T14:02:30.4590000+03:00","stream":"LTS"},{"version":"5.5.0b2","releaseDate":"2016-09-05T17:30:09.8380000+03:00","stream":"Beta"},{"version":"5.3.6p4","releaseDate":"2016-09-02T17:39:02.8790000+03:00","stream":"Tech"},{"version":"5.4.0p4","releaseDate":"2016-08-31T18:12:19.9330000+03:00","stream":"Tech"},{"version":"5.5.0b1","releaseDate":"2016-08-30T01:26:28.1480000+03:00","stream":"Beta"},{"version":"5.4.0p3","releaseDate":"2016-08-25T19:23:33.9710000+03:00","stream":"Tech"},{"version":"5.3.6p3","releaseDate":"2016-08-23T18:52:41.7170000+03:00","stream":"Tech"},{"version":"5.4.0p2","releaseDate":"2016-08-18T18:13:53.4540000+03:00","stream":"Tech"},{"version":"5.4.0p1","releaseDate":"2016-08-11T19:41:23.0620000+03:00","stream":"Tech"},{"version":"5.3.6p2","releaseDate":"2016-08-03T16:49:58.6420000+03:00","stream":"Tech"},{"version":"5.4.0f3","releaseDate":"2016-07-27T18:33:32.0650000+03:00","stream":"LTS"},{"version":"5.3.6p1","releaseDate":"2016-07-27T16:49:40.4080000+03:00","stream":"Tech"},{"version":"5.4.0f2","releaseDate":"2016-07-21T17:37:50.4920000+03:00","stream":"LTS"},{"version":"5.3.6f1","releaseDate":"2016-07-20T12:42:16.5870000+03:00","stream":"LTS"},{"version":"5.4.0f1","releaseDate":"2016-07-14T17:14:28.9480000+03:00","stream":"LTS"},{"version":"5.3.5p8","releaseDate":"2016-07-13T15:31:43.9130000+03:00","stream":"Tech"},{"version":"5.4.0b25","releaseDate":"2016-07-11T17:27:32.5710000+03:00","stream":"Beta"},{"version":"5.3.5p7","releaseDate":"2016-07-08T12:46:28.2840000+03:00","stream":"Tech"},{"version":"5.4.0b24","releaseDate":"2016-07-01T18:47:18.2330000+03:00","stream":"Beta"},{"version":"5.3.5p6","releaseDate":"2016-06-29T19:20:44.0350000+03:00","stream":"Tech"},{"version":"5.4.0b23","releaseDate":"2016-06-28T14:35:44.6560000+03:00","stream":"Beta"},{"version":"5.4.0b22","releaseDate":"2016-06-20T12:50:01.9180000+03:00","stream":"Beta"},{"version":"5.3.5p5","releaseDate":"2016-06-20T11:56:54.1950000+03:00","stream":"Tech"},{"version":"5.3.5p4","releaseDate":"2016-06-20T11:17:44.2570000+03:00","stream":"Tech"},{"version":"5.3.5p3","releaseDate":"2016-06-10T12:28:48.9900000+03:00","stream":"Tech"},{"version":"5.4.0b21","releaseDate":"2016-06-09T13:10:18.5030000+03:00","stream":"Beta"},{"version":"5.1.5f1","releaseDate":"2016-06-06T14:04:12.1990000+03:00","stream":"LTS"},{"version":"5.3.5p2","releaseDate":"2016-06-03T17:52:11.1590000+03:00","stream":"Tech"},{"version":"5.4.0b20","releaseDate":"2016-06-03T16:53:41.3450000+03:00","stream":"Beta"},{"version":"5.2.5f1","releaseDate":"2016-06-01T14:51:51.5940000+03:00","stream":"LTS"},{"version":"5.3.5p1","releaseDate":"2016-05-31T10:40:56.6820000+03:00","stream":"Tech"},{"version":"5.4.0b19","releaseDate":"2016-05-25T12:23:12.8120000+03:00","stream":"Beta"},{"version":"5.4.0b18","releaseDate":"2016-05-19T18:44:13.0190000+03:00","stream":"Beta"},{"version":"5.3.5f1","releaseDate":"2016-05-19T18:29:29.7780000+03:00","stream":"LTS"},{"version":"5.3.4p6","releaseDate":"2016-05-06T18:28:15.3400000+03:00","stream":"Tech"},{"version":"5.4.0b17","releaseDate":"2016-05-04T01:24:49.7340000+03:00","stream":"Beta"},{"version":"5.3.4p5","releaseDate":"2016-04-27T18:20:06.9680000+03:00","stream":"Tech"},{"version":"5.4.0b16","releaseDate":"2016-04-27T14:25:25.9450000+03:00","stream":"Beta"},{"version":"5.3.4p4","releaseDate":"2016-04-20T13:50:41.9420000+03:00","stream":"Tech"},{"version":"5.4.0b15","releaseDate":"2016-04-18T13:10:26.2100000+03:00","stream":"Beta"},{"version":"5.3.4p3","releaseDate":"2016-04-13T13:24:45.5350000+03:00","stream":"Tech"},{"version":"5.4.0b14","releaseDate":"2016-04-11T14:55:25.2850000+03:00","stream":"Beta"},{"version":"5.3.4p2","releaseDate":"2016-04-08T16:41:06.6810000+03:00","stream":"Tech"},{"version":"5.4.0b13","releaseDate":"2016-04-04T12:27:37.0640000+03:00","stream":"Beta"},{"version":"5.4.0b12","releaseDate":"2016-03-29T19:39:18.7120000+03:00","stream":"Beta"},{"version":"5.3.4p1","releaseDate":"2016-03-24T00:30:26.0740000+02:00","stream":"Tech"},{"version":"5.4.0b11","releaseDate":"2016-03-21T13:52:03.7650000+02:00","stream":"Beta"},{"version":"5.4.0b10","releaseDate":"2016-03-15T15:45:23.9730000+02:00","stream":"Beta"},{"version":"5.3.4f1","releaseDate":"2016-03-15T15:33:58.4510000+02:00","stream":"LTS"},{"version":"5.3.3p3","releaseDate":"2016-03-14T19:48:02.2170000+02:00","stream":"Tech"},{"version":"5.4.0b9","releaseDate":"2016-03-08T12:03:52.2650000+02:00","stream":"Beta"},{"version":"5.3.3p2","releaseDate":"2016-03-04T18:05:49.8740000+02:00","stream":"Tech"},{"version":"5.4.0b8","releaseDate":"2016-03-02T14:14:56.5970000+02:00","stream":"Beta"},{"version":"5.3.3p1","releaseDate":"2016-02-24T18:53:39.5190000+02:00","stream":"Tech"},{"version":"5.3.3f1","releaseDate":"2016-02-23T14:53:03.4530000+02:00","stream":"LTS"},{"version":"5.4.0b7","releaseDate":"2016-02-22T16:29:51.4670000+02:00","stream":"Beta"},{"version":"5.3.2p4","releaseDate":"2016-02-20T21:48:43.6160000+02:00","stream":"Tech"},{"version":"5.4.0b6","releaseDate":"2016-02-15T18:11:52.0550000+02:00","stream":"Beta"},{"version":"5.3.2p3","releaseDate":"2016-02-12T11:22:27.9230000+02:00","stream":"Tech"},{"version":"5.4.0b5","releaseDate":"2016-02-09T18:00:54.0100000+02:00","stream":"Beta"},{"version":"5.3.2p2","releaseDate":"2016-02-03T20:16:50.7640000+02:00","stream":"Tech"},{"version":"5.4.0b4","releaseDate":"2016-01-30T16:05:07.6350000+02:00","stream":"Beta"},{"version":"5.3.2p1","releaseDate":"2016-01-28T18:05:44.7130000+02:00","stream":"Tech"},{"version":"5.3.2f1","releaseDate":"2016-01-27T17:27:25.9430000+02:00","stream":"LTS"},{"version":"5.3.1p4","releaseDate":"2016-01-23T14:12:30.0740000+02:00","stream":"Tech"},{"version":"5.4.0b3","releaseDate":"2016-01-22T19:00:02.9810000+02:00","stream":"Beta"},{"version":"5.4.0b2","releaseDate":"2016-01-15T13:09:43.6900000+02:00","stream":"Beta"},{"version":"5.3.1p3","releaseDate":"2016-01-14T19:48:48.7310000+02:00","stream":"Tech"},{"version":"5.4.0b1","releaseDate":"2016-01-13T00:10:16.2620000+02:00","stream":"Beta"},{"version":"5.3.1p2","releaseDate":"2016-01-08T14:16:04.4350000+02:00","stream":"Tech"},{"version":"5.3.1p1","releaseDate":"2016-01-08T14:10:16.3210000+02:00","stream":"Tech"},{"version":"5.3.1f1","releaseDate":"2015-12-18T16:23:10.2740000+02:00","stream":"LTS"},{"version":"5.2.4f1","releaseDate":"2015-12-15T18:37:45.1050000+02:00","stream":"LTS"},{"version":"5.2.3p3","releaseDate":"2015-12-10T12:23:24.9490000+02:00","stream":"Tech"},{"version":"5.3.0f4","releaseDate":"2015-12-08T00:12:35.0350000+02:00","stream":"LTS"},{"version":"5.2.3p2","releaseDate":"2015-12-03T14:16:45.5710000+02:00","stream":"Tech"},{"version":"5.2.3p1","releaseDate":"2015-11-27T17:42:46.6020000+02:00","stream":"Tech"},{"version":"5.3.0f2","releaseDate":"2015-11-23T17:08:26.3310000+02:00","stream":"LTS"},{"version":"5.2.3f1","releaseDate":"2015-11-19T12:38:36.6940000+02:00","stream":"LTS"},{"version":"5.2.2p4","releaseDate":"2015-11-18T13:12:41.1430000+02:00","stream":"Tech"},{"version":"5.3.0f1","releaseDate":"2015-11-14T17:28:15.8630000+02:00","stream":"LTS"},{"version":"5.2.2p3","releaseDate":"2015-11-10T18:44:28.0350000+02:00","stream":"Tech"},{"version":"5.3.0b6","releaseDate":"2015-11-09T17:44:01.7640000+02:00","stream":"Beta"},{"version":"5.3.0b5","releaseDate":"2015-11-02T19:19:46.6150000+02:00","stream":"Beta"},{"version":"5.2.2p2","releaseDate":"2015-10-30T18:26:48.9590000+02:00","stream":"Tech"},{"version":"5.2.2p1","releaseDate":"2015-10-24T20:00:34.5130000+03:00","stream":"Tech"},{"version":"5.3.0b4","releaseDate":"2015-10-23T15:11:59.0160000+03:00","stream":"Beta"},{"version":"5.2.2f1","releaseDate":"2015-10-21T16:11:59.7920000+03:00","stream":"LTS"},{"version":"5.3.0b3","releaseDate":"2015-10-16T23:48:22.9780000+03:00","stream":"Beta"},{"version":"5.2.1p4","releaseDate":"2015-10-15T09:00:51.3200000+03:00","stream":"Tech"},{"version":"5.3.0b2","releaseDate":"2015-10-10T16:11:44.6410000+03:00","stream":"Beta"},{"version":"5.2.1p3","releaseDate":"2015-10-09T17:49:17.0510000+03:00","stream":"Tech"},{"version":"5.1.4f1","releaseDate":"2015-10-06T11:17:42.7590000+03:00","stream":"LTS"},{"version":"5.3.0b1","releaseDate":"2015-10-02T22:38:07.8510000+03:00","stream":"Beta"},{"version":"5.2.1p2","releaseDate":"2015-10-01T16:15:11.2250000+03:00","stream":"Tech"},{"version":"5.2.1p1","releaseDate":"2015-09-25T16:13:16.8560000+03:00","stream":"Tech"},{"version":"5.2.1f1","releaseDate":"2015-09-22T15:24:32.4680000+03:00","stream":"LTS"},{"version":"5.2.0p1","releaseDate":"2015-09-18T03:00:00.0000000+03:00","stream":"Tech"},{"version":"5.1.3p3","releaseDate":"2015-09-11T03:00:00.0000000+03:00","stream":"Tech"},{"version":"5.1.3p2","releaseDate":"2015-09-04T03:00:00.0000000+03:00","stream":"Tech"},{"version":"5.2.0f3","releaseDate":"2015-09-03T12:33:57.1480000+03:00","stream":"LTS"},{"version":"5.1.3p1","releaseDate":"2015-08-27T03:00:00.0000000+03:00","stream":"Tech"},{"version":"5.1.3f1","releaseDate":"2015-08-24T12:50:04.1790000+03:00","stream":"LTS"},{"version":"5.2.0f2","releaseDate":"2015-08-21T18:46:49.9960000+03:00","stream":"LTS"},{"version":"5.2.0f1","releaseDate":"2015-08-16T18:50:39.4690000+03:00","stream":"LTS"},{"version":"5.2.0b6","releaseDate":"2015-08-07T22:27:28.2000000+03:00","stream":"Beta"},{"version":"5.1.2p3","releaseDate":"2015-08-06T18:11:03.9900000+03:00","stream":"Tech"},{"version":"5.2.0b5","releaseDate":"2015-07-31T13:58:16.6300000+03:00","stream":"Beta"},{"version":"5.1.2p2","releaseDate":"2015-07-30T19:04:41.2110000+03:00","stream":"Tech"},{"version":"5.2.0b4","releaseDate":"2015-07-23T18:55:44.2700000+03:00","stream":"Beta"},{"version":"5.1.2p1","releaseDate":"2015-07-23T18:20:51.9840000+03:00","stream":"Tech"},{"version":"5.2.0b3","releaseDate":"2015-07-17T22:58:20.5700000+03:00","stream":"Beta"},{"version":"5.1.2f1","releaseDate":"2015-07-16T11:54:11.0960000+03:00","stream":"LTS"},{"version":"5.2.0b2","releaseDate":"2015-07-10T21:37:49.5390000+03:00","stream":"Beta"},{"version":"5.1.1p4","releaseDate":"2015-07-10T12:08:40.1750000+03:00","stream":"Tech"},{"version":"5.0.4f1","releaseDate":"2015-07-06T15:10:34.2300000+03:00","stream":"LTS"},{"version":"5.1.1p3","releaseDate":"2015-07-03T19:18:12.6150000+03:00","stream":"Tech"},{"version":"5.2.0b1","releaseDate":"2015-07-01T19:26:20.9210000+03:00","stream":"Beta"},{"version":"5.1.1p2","releaseDate":"2015-06-26T00:27:14.0670000+03:00","stream":"Tech"},{"version":"5.0.3p3","releaseDate":"2015-06-24T18:55:13.6440000+03:00","stream":"Tech"},{"version":"5.1.1p1","releaseDate":"2015-06-23T18:05:55.5660000+03:00","stream":"Tech"},{"version":"5.1.1f1","releaseDate":"2015-06-18T13:20:02.2470000+03:00","stream":"LTS"},{"version":"5.0.3p2","releaseDate":"2015-06-18T03:00:00.0000000+03:00","stream":"Tech"},{"version":"5.1.0p1","releaseDate":"2015-06-12T03:00:00.0000000+03:00","stream":"Tech"},{"version":"5.0.3p1","releaseDate":"2015-06-11T03:00:00.0000000+03:00","stream":"Tech"},{"version":"5.0.3f2","releaseDate":"2015-06-09T18:36:46.8690000+03:00","stream":"LTS"},{"version":"5.1.0f3","releaseDate":"2015-06-04T00:31:28.2170000+03:00","stream":"LTS"},{"version":"5.0.2p4","releaseDate":"2015-06-03T03:00:00.0000000+03:00","stream":"Tech"},{"version":"5.0.2p3","releaseDate":"2015-05-28T03:00:00.0000000+03:00","stream":"Tech"},{"version":"5.0.2p2","releaseDate":"2015-05-20T03:00:00.0000000+03:00","stream":"Tech"},{"version":"5.0.2p1","releaseDate":"2015-05-15T03:00:00.0000000+03:00","stream":"Tech"},{"version":"5.0.2f1","releaseDate":"2015-05-13T17:05:42.7910000+03:00","stream":"LTS"},{"version":"5.0.1p4","releaseDate":"2015-05-08T13:25:56.9760000+03:00","stream":"Tech"},{"version":"5.0.1p3","releaseDate":"2015-04-29T03:00:00.0000000+03:00","stream":"Tech"},{"version":"5.0.1p2","releaseDate":"2015-04-24T17:14:44.9700000+03:00","stream":"Tech"},{"version":"5.0.1p1","releaseDate":"2015-04-16T11:21:07.0000000+03:00","stream":"Tech"},{"version":"5.0.1f1","releaseDate":"2015-03-31T19:55:08.3760000+03:00","stream":"LTS"},{"version":"5.0.0p3","releaseDate":"2015-03-26T14:03:56.0680000+02:00","stream":"Tech"},{"version":"5.0.0p2","releaseDate":"2015-03-20T18:38:49.5150000+02:00","stream":"Tech"},{"version":"5.0.0p1","releaseDate":"2015-03-16T17:20:13.6040000+02:00","stream":"Tech"},{"version":"5.0.0f4","releaseDate":"2015-02-25T17:49:05.8350000+02:00","stream":"LTS"}] \ No newline at end of file diff --git a/UnityLauncherPro/ThemeEditor.xaml.cs b/UnityLauncherPro/ThemeEditor.xaml.cs index a5da45a..a6b6686 100644 --- a/UnityLauncherPro/ThemeEditor.xaml.cs +++ b/UnityLauncherPro/ThemeEditor.xaml.cs @@ -109,35 +109,47 @@ private void GridThemeColors_SelectionChanged(object sender, SelectionChangedEve private void BtnSaveTheme_Click(object sender, RoutedEventArgs e) { - var themeFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Themes"); - - if (Directory.Exists(themeFolder) == false) Directory.CreateDirectory(themeFolder); - - SaveFileDialog saveFileDialog = new SaveFileDialog(); - if (string.IsNullOrEmpty(previousSaveFileName)) - { - saveFileDialog.FileName = "custom"; - } - else + // 1) Determine the default filename (with .ini) + string defaultName = string.IsNullOrEmpty(previousSaveFileName) + ? "custom.ini" + : previousSaveFileName + ".ini"; + + // 2) Ask the helper for a safe full path + string initialFullPath = Tools.GetSafeFilePath("Themes", defaultName); + string initialDir = Path.GetDirectoryName(initialFullPath); + string initialFile = Path.GetFileNameWithoutExtension(initialFullPath); + + // 3) Configure the save dialog + var saveFileDialog = new SaveFileDialog { - saveFileDialog.FileName = previousSaveFileName; - } - saveFileDialog.DefaultExt = ".ini"; - saveFileDialog.Filter = "Theme files (.ini)|*.ini"; - saveFileDialog.InitialDirectory = themeFolder; - saveFileDialog.RestoreDirectory = true; - + FileName = initialFile, // no extension here + DefaultExt = ".ini", + Filter = "Theme files (.ini)|*.ini", + InitialDirectory = initialDir, + RestoreDirectory = true + }; + + // 4) Show and, if confirmed, write out the INI if (saveFileDialog.ShowDialog() == true) { - List iniRows = new List(); - iniRows.Add("# Created with UnityLauncherPro built-in theme editor " + DateTime.Now.ToString("dd/MM/yyyy")); + // Build INI lines + var iniRows = new List + { + "# Created with UnityLauncherPro built-in theme editor " + + DateTime.Now.ToString("dd/MM/yyyy") + }; + // original-style loop for (int i = 0; i < themeColors.Count; i++) { iniRows.Add(themeColors[i].Key + "=" + themeColors[i].Brush.ToString()); } - var themePath = saveFileDialog.FileName; + // Get the chosen path & ensure its folder exists + string themePath = saveFileDialog.FileName; previousSaveFileName = Path.GetFileNameWithoutExtension(themePath); + Directory.CreateDirectory(Path.GetDirectoryName(themePath)); + + // Write out File.WriteAllLines(themePath, iniRows); Console.WriteLine("Saved theme: " + themePath); } diff --git a/UnityLauncherPro/Tools.cs b/UnityLauncherPro/Tools.cs index 1722f9d..11fd57b 100644 --- a/UnityLauncherPro/Tools.cs +++ b/UnityLauncherPro/Tools.cs @@ -1,6 +1,7 @@ using Microsoft.Win32; using System; using System.Collections.Generic; +using System.ComponentModel; using System.Diagnostics; using System.IO; using System.Linq; @@ -16,6 +17,7 @@ using System.Windows.Controls; using System.Windows.Input; using System.Windows.Media; +using System.Windows.Threading; using UnityLauncherPro.Helpers; namespace UnityLauncherPro @@ -256,13 +258,6 @@ public static Process LaunchProject(Project proj, DataGrid dataGridRef = null, b Directory.CreateDirectory(assetsFolder); } - // when opening project, check for crashed backup scene first - var cancelLaunch = CheckCrashBackupScene(proj.Path); - if (cancelLaunch == true) - { - return null; - } - // if its upgrade, we dont want to check current version if (upgrade == false) { @@ -279,10 +274,24 @@ public static Process LaunchProject(Project proj, DataGrid dataGridRef = null, b var unityExePath = GetUnityExePath(proj.Version); if (unityExePath == null) { + // if no editors installed, show message + if (MainWindow.unityInstallationsSource.Count == 0) + { + MessageBox.Show($"No Unity versions installed. Please run {MainWindow.appName} first to setup root folders.", MainWindow.appName, MessageBoxButton.OK, MessageBoxImage.Warning); + return null; + } + DisplayUpgradeDialog(proj, null, useInitScript); return null; } + // when opening project, check for crashed backup scene first + var cancelLaunch = CheckCrashBackupScene(proj.Path); + if (cancelLaunch == true) + { + return null; + } + Process newProcess = new Process(); try { @@ -399,7 +408,7 @@ static bool CheckCrashBackupScene(string projectPath) var recoveryFile = Path.Combine(projectPath, "Temp", "__Backupscenes", "0.backup"); if (File.Exists(recoveryFile)) { - var result = MessageBox.Show("Crash recovery scene found, do you want to copy it into Assets/_Recovery/-folder?", "UnityLauncherPro - Scene Recovery", MessageBoxButton.YesNo, MessageBoxImage.Question); + var result = MessageBox.Show("Crash recovery scene found, do you want to MOVE it into Assets/_Recovery/-folder?", "UnityLauncherPro - Scene Recovery", MessageBoxButton.YesNo, MessageBoxImage.Question); if (result == MessageBoxResult.Yes) { var restoreFolder = Path.Combine(projectPath, "Assets", "_Recovery"); @@ -411,7 +420,22 @@ static bool CheckCrashBackupScene(string projectPath) { Int32 unixTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds; var uniqueFileName = "Recovered_Scene" + unixTimestamp + ".unity"; - File.Copy(recoveryFile, Path.Combine(restoreFolder, uniqueFileName)); + + try + { + File.Move(recoveryFile, Path.Combine(restoreFolder, uniqueFileName)); + // remove folder, otherwise unity 6000.2 asks for recovery + Directory.Delete(Path.Combine(projectPath, "Temp", "__Backupscenes"), true); + + Console.WriteLine("moved file to " + uniqueFileName); + } + catch (IOException) + { + // if move failed, try copy + File.Copy(recoveryFile, Path.Combine(restoreFolder, uniqueFileName)); + Console.WriteLine("copied file"); + } + Console.WriteLine("Recovered crashed scene into: " + restoreFolder); } else @@ -438,6 +462,8 @@ public static string GetUnityExePath(string version) // opens Explorer to target folder public static bool LaunchExplorer(string folder) { + if (folder == null || folder.Length < 1) return false; + if (Directory.Exists(folder) == true) { Process.Start(folder); @@ -488,7 +514,7 @@ public static bool LaunchExplorerSelectFile(string fileName) } // run any exe, return process - public static Process LaunchExe(string path, string param = null) + public static Process LaunchExe(string path, string param = null, bool captureOutput = false) { if (string.IsNullOrEmpty(path)) return null; @@ -510,6 +536,12 @@ public static Process LaunchExe(string path, string param = null) newProcess = new Process(); newProcess.StartInfo.FileName = "\"" + path + "\""; newProcess.StartInfo.Arguments = param; + if (captureOutput) + { + newProcess.StartInfo.RedirectStandardError = true; + newProcess.StartInfo.RedirectStandardOutput = true; + newProcess.StartInfo.UseShellExecute = false; + } newProcess.EnableRaisingEvents = true; // needed to get Exited event newProcess.Start(); } @@ -520,8 +552,8 @@ public static Process LaunchExe(string path, string param = null) } return newProcess; } - // Console.WriteLine("Failed to run exe: " + path + " " + param); - // return null; + // Console.WriteLine("Failed to run exe: " + path + " " + param); + // return null; } @@ -667,6 +699,21 @@ public static async void DownloadInBrowser(string version, bool preferFullInstal if (version == null) return; string exeURL = await GetUnityUpdates.FetchDownloadUrl(version); + // null from unity api? then try direct download + // https://beta.unity3d.com/download/330fbefc18b7/UnityDownloadAssistant-6000.1.0a8.exe + if (exeURL == null) + { + // exe url not found, try unofficial list (TODO this is hack to avoid null url, because unofficial list items have been cached to local json, without download url..) + Console.WriteLine("Fixing null in DownloadInBrowser ,v=" + version); + var downloadURL = await GetUnityUpdates.CheckUnofficialVersionList(version); + if (string.IsNullOrEmpty(downloadURL) == false) + { + string unityHash = ParseHashCodeFromURL(downloadURL); + exeURL = ParseDownloadURLFromWebpage(version, unityHash, false, true); + } + return; + } + if (preferFullInstaller == true) { exeURL = exeURL.Replace("UnityDownloadAssistant-" + version + ".exe", "Windows64EditorInstaller/UnitySetup64-" + version + ".exe"); @@ -689,12 +736,26 @@ public static async void DownloadInBrowser(string version, bool preferFullInstal public static async void DownloadAndInstall(string version) { + string exeURL = await GetUnityUpdates.FetchDownloadUrl(version); + if (version == null) { Console.WriteLine("Error> Cannot download and install null version"); return; } - string exeURL = await GetUnityUpdates.FetchDownloadUrl(version); + + if (string.IsNullOrEmpty(exeURL) == true) + { + // exe url not found, try unofficial list (TODO this is hack to avoid null url, because unofficial list items have been cached to local json, without download url..) + Console.WriteLine("Fixing null in DownloadInBrowser ,v=" + version); + var downloadURL = await GetUnityUpdates.CheckUnofficialVersionList(version); + if (string.IsNullOrEmpty(downloadURL) == false) + { + string unityHash = ParseHashCodeFromURL(downloadURL); + exeURL = ParseDownloadURLFromWebpage(version, unityHash, false, true); + } + + } Console.WriteLine("download exeURL= (" + exeURL + ")"); @@ -729,11 +790,18 @@ public static async void DownloadAndInstall(string version) process.Exited += (sender, e) => DeleteTempFile(tempFile); process.Start(); } - catch (Exception) + catch (Win32Exception ex) when (ex.NativeErrorCode == 1223) // ERROR_CANCELLED + { + // User declined the UAC prompt + Console.WriteLine("User cancelled elevation (UAC)."); + DeleteTempFile(tempFile); + } + catch (Exception ex) { - Console.WriteLine("Failed to run exe: " + tempFile); + Console.WriteLine("Failed to run exe: " + tempFile + " - " + ex.Message); DeleteTempFile(tempFile); } + // TODO refresh upgrade dialog after installer finished } } @@ -750,6 +818,7 @@ public static async void DownloadAndInstall(string version) public static async Task DownloadInitScript(string currentInitScriptFullPath, string currentInitScriptLocationOrURL) { string currentInitScriptFolder = Path.GetDirectoryName(currentInitScriptFullPath); + string currentInitScriptFile = Path.GetFileName(currentInitScriptFullPath); string tempFile = Path.Combine(Path.GetTempPath(), currentInitScriptFile); bool isLocalFile = false; @@ -803,20 +872,24 @@ public static async Task DownloadInitScript(string currentInitScriptFullPath, st { File.Move(tempFile, currentInitScriptFullPath); } + SetStatus("Downloaded latest init script."); } else { Console.WriteLine("Invalid c# init file..(missing correct Namespace, Class or Method)"); + SetStatus("Invalid c# init file..(missing correct Namespace, Class or Method)"); } } catch (Exception e) { Console.WriteLine("File exception: " + e.Message); + SetStatus("File exception: " + e.Message); } } else { Console.WriteLine("Failed to download init script from: " + currentInitScriptLocationOrURL); + SetStatus("Failed to download init script from: " + currentInitScriptLocationOrURL); } } @@ -831,6 +904,8 @@ static void DeleteTempFile(string path) public static string DownloadHTML(string url) { + Console.WriteLine("DownloadHTML: " + url); + if (string.IsNullOrEmpty(url) == true) return null; using (WebClient client = new WebClient()) { @@ -853,19 +928,202 @@ public static string CleanVersionNumber(string version) var split = version.Split('.'); float parsedVersion = float.Parse($"{split[0]}.{split[1]}"); - // 2023.3 and newer Alpha releases, no replace - if (IsAlpha(version) && parsedVersion >= 2023.3) + + // For 2023.3 and newer pre-release (alpha or beta) versions, do not clean. + if ((IsAlpha(version) || version.Contains("b")) && parsedVersion >= 2023.3) { - // do nothing + // Do nothing; leave version unchanged. } else { - // note old patch versions still contains p## in the end - version = Regex.Replace(version, @"[f|a|b][0-9]{1,2}", "", RegexOptions.IgnoreCase); + // Remove the trailing patch/build indicator. + version = Regex.Replace(version, @"[fab][0-9]{1,2}", "", RegexOptions.IgnoreCase); } return version; } + + // TODO only hash version is used, cleanup the rest + public static string ParseDownloadURLFromWebpage(string version, string hash = null, bool preferFullInstaller = false, bool useHash = false) + { + string exeURL = ""; + + //Console.WriteLine("ParseDownloadURLFromWebpage: " + version + ", hash: " + useHash); + + if (string.IsNullOrEmpty(version)) return null; + + // NOTE no longer uses f# in the end + + string url = null; + if (useHash == false) + { + var cleanVersion = CleanVersionNumber(version); + // NOTE 2024 June, installs are now located on separate pages, like https://unity.com/releases/editor/whats-new/6000.0.5#installs + + // get correct page url + //url = "https://unity3d.com/get-unity/download/archive"; + // fix unity server problem, some pages says 404 found if no url params + url = "https://unity.com/releases/editor/whats-new/" + cleanVersion + "?unitylauncherpro#installs"; + //if (VersionIsPatch(version)) url = "https://unity3d.com/unity/qa/patch-releases"; + if (VersionIsBeta(version)) url = "https://unity.com/releases/editor/beta/" + version; + if (VersionIsAlpha(version)) url = "https://unity.com/releases/editor/alpha/" + version; + //url += "?unitylauncherpro"; + } + else + { + // NOTE version here is actually VERSION|HASH + //string hash = version; + url = $"https://beta.unity3d.com/download/{hash}/download.html"; + + //Console.WriteLine("hashurl: " + url); + + //version = FetchUnityVersionNumberFromHTML(url); + //Console.WriteLine(url); + //Console.WriteLine("got "+version); + if (string.IsNullOrEmpty(version)) + { + SetStatus("Failed to get version (" + version + ") number from hash: " + hash); + return null; + } + } + + //Console.WriteLine("scanning installers from url: " + url); + + //string sourceHTML = DownloadHTML(url); + + //if (string.IsNullOrEmpty(sourceHTML) == true) + //{ + // Console.WriteLine("Failed to download html from: " + url); + // return null; + //} + + //// parse changeset hash from html + //string pattern = $@"href=""unityhub://{version}/([^""]+)"""; + //Regex regex = new Regex(pattern); + //Match match = regex.Match(sourceHTML); + + //if (match.Success == true) + //{ + // string changeSet = match.Groups[1].Value; + // Console.WriteLine("changeSet: " + changeSet); + //} + + exeURL = $"https://beta.unity3d.com/download/{hash}/UnityDownloadAssistant-{version}.exe"; + //string[] lines = sourceHTML.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None); + + // patch version download assistant finder + //if (useHash == false && VersionIsPatch(version)) + //{ + // for (int i = 0; i < lines.Length; i++) + // { + // //if (lines[i].Contains("UnityDownloadAssistant-" + version + ".exe")) + // if (lines[i].Contains("UnitySetup64-" + version + ".exe")) + // { + // int start = lines[i].IndexOf('"') + 1; + // int end = lines[i].IndexOf('"', start); + // exeURL = lines[i].Substring(start, end - start); + // break; + // } + // } + //} + //else if (useHash == false && VersionIsArchived(version)) + //{ + // // archived version download assistant finder + // for (int i = 0; i < lines.Length; i++) + // { + // // find line where full installer is (from archive page) + // if (lines[i].Contains("UnitySetup64-" + version)) + // { + + // Console.WriteLine(lines[i]); + + // // take full exe installer line, to have changeset hash, then replace with download assistant filepath + // string line = lines[i]; + // int start = line.IndexOf('"') + 1; + // int end = line.IndexOf('"', start); + // exeURL = line.Substring(start, end - start); + // exeURL = exeURL.Replace("Windows64EditorInstaller/UnitySetup64-", "UnityDownloadAssistant-"); + // break; + // } + // } + //} + //else // alpha or beta version download assistant finder + //{ + // // regular beta + // // + // // https://beta.unity3d.com/download/21aeb48b6ed2/UnityDownloadAssistant.exe + + // // hidden beta + // // + // // https://beta.unity3d.com/download/8008bc0c1b74/UnityDownloadAssistant-6000.0.0b15.exe + + // // new 10.06.2024, no more downloadassistant.exe in html + + // // check html lines + // for (int i = 0; i < lines.Length; i++) + // { + // //Console.WriteLine(lines[i]); + // //if (lines[i].Contains("UnityDownloadAssistant")) + // if (lines[i].Contains("UnityDownloadAssistant")) + // { + // if (useHash == false) + // { + // string pattern = @"https://beta\.unity3d\.com/download/[a-zA-Z0-9]+/UnityDownloadAssistant\.exe"; + // Match match = Regex.Match(lines[i], pattern); + // if (match.Success) + // { + // exeURL = match.Value; + // } + // else + // { + // Console.WriteLine("No match found for download base url.."); + // } + // } + // else // hidden download page + // { + // string pattern = @"UnityDownloadAssistant(?:-\d+\.\d+\.\d+[bf]\d*)?\.exe"; + // Match match = Regex.Match(lines[i], pattern); + // if (match.Success) + // { + // // append base url + // Regex regex = new Regex(@"(https://beta\.unity3d\.com/download/[a-zA-Z0-9]+/)"); + // Match match2 = regex.Match(url); + + // //Console.WriteLine("source url: " + url); + + // if (match2.Success) + // { + // string capturedUrl = match2.Groups[1].Value; + // exeURL = capturedUrl + match.Value; + // } + // else + // { + // Console.WriteLine("No match found for download base url.."); + // } + // } + // break; + // } + // } + // } // for lines + //} // alpha or beta + + // download full installer instead, TODO probably not needed anymore? + if (useHash == false && preferFullInstaller == true) + { + exeURL = exeURL.Replace("UnityDownloadAssistant-" + version + ".exe", "Windows64EditorInstaller/UnitySetup64-" + version + ".exe"); + // handle alpha/beta + exeURL = exeURL.Replace("UnityDownloadAssistant.exe", "Windows64EditorInstaller/UnitySetup64-" + version + ".exe"); + } + + // didnt find installer + if (string.IsNullOrEmpty(exeURL)) + { + //SetStatus("Cannot find UnityDownloadAssistant.exe for this version."); + Console.WriteLine("Installer not found from URL: " + url); + } + return exeURL; + } + private static string FetchUnityVersionNumberFromHTML(string url) { string sourceHTML = DownloadHTML(url); @@ -885,7 +1143,7 @@ private static string FetchUnityVersionNumberFromHTML(string url) } else { - Console.WriteLine("No match found."); + Console.WriteLine("FetchUnityVersionNumberFromHTML: No match found."); } return null; @@ -911,8 +1169,7 @@ public static string FindNearestVersion(string currentVersion, List allA string result = null; // add current version to list, to sort it with others - if (!allAvailable.Contains(currentVersion)) - allAvailable.Add(currentVersion); + if (!allAvailable.Contains(currentVersion)) allAvailable.Add(currentVersion); // sort list if (checkBelow) @@ -962,6 +1219,7 @@ public static long VersionAsLong(string version) multiplier *= 50; } } + return result; } @@ -1082,6 +1340,56 @@ public static void AddContextMenuRegistry(string contextRegRoot) } } + public static void AddContextMenuRegistryAPKInstall(string contextRegRoot) + { + // Define the registry key path for .apk file association + string apkFileTypeRegPath = @"Software\Classes\.apk"; + + // Open or create the registry key for .apk files + RegistryKey apkKey = Registry.CurrentUser.OpenSubKey(apkFileTypeRegPath, true); + + if (apkKey == null) + { + apkKey = Registry.CurrentUser.CreateSubKey(apkFileTypeRegPath); + } + + if (apkKey != null) + { + // Create or open the Shell subkey for context menu options + RegistryKey shellKey = apkKey.CreateSubKey("shell", true); + + if (shellKey != null) + { + var appName = "UnityLauncherPro"; + // Create a subkey for the app's context menu item + RegistryKey appKey = shellKey.CreateSubKey(appName, true); + + if (appKey != null) + { + appKey.SetValue("", "Install with " + appName); // Display name in context menu + appKey.SetValue("Icon", "\"" + Process.GetCurrentProcess().MainModule.FileName + "\""); + appKey.SetValue("Position", "Bottom"); // Set position to adjust order + + // Create the command subkey to specify the action + RegistryKey commandKey = appKey.CreateSubKey("command", true); + + if (commandKey != null) + { + // Build the command string to launch with -install argument + var executeString = "\"" + Process.GetCurrentProcess().MainModule.FileName + "\" -install \"%1\""; + commandKey.SetValue("", executeString); + } + } + } + } + else + { + Console.WriteLine("Error> Cannot create or access registry key for .apk file association: " + apkFileTypeRegPath); + } + } + + + /// /// uninstall context menu item from registry /// @@ -1109,6 +1417,37 @@ public static void RemoveContextMenuRegistry(string contextRegRoot) } } + public static void RemoveContextMenuRegistryAPKInstall(string contextRegRoot) + { + // Define the registry key path for .apk file association + string apkFileTypeRegPath = @"Software\Classes\.apk\shell"; + + // Open the registry key for the shell context menu + RegistryKey shellKey = Registry.CurrentUser.OpenSubKey(apkFileTypeRegPath, true); + + if (shellKey != null) + { + var appName = "UnityLauncherPro"; + + // Check if the app's context menu key exists + RegistryKey appKey = shellKey.OpenSubKey(appName, false); + if (appKey != null) + { + // Delete the app's context menu key + shellKey.DeleteSubKeyTree(appName); + Console.WriteLine("Removed context menu for .apk files."); + } + else + { + Console.WriteLine("No context menu found for .apk files."); + } + } + else + { + Console.WriteLine("Error> Cannot find registry key for .apk shell context: " + apkFileTypeRegPath); + } + } + /// /// reads .git/HEAD file from the project to get current branch name /// @@ -1116,117 +1455,141 @@ public static void RemoveContextMenuRegistry(string contextRegRoot) /// public static string ReadGitBranchInfo(string projectPath, bool searchParentFolders) { - string results = null; - - if (searchParentFolders) + DirectoryInfo directoryInfo = new DirectoryInfo(projectPath); + while (directoryInfo != null) { - DirectoryInfo directoryInfo = new DirectoryInfo(projectPath); + string gitDir = Path.Combine(directoryInfo.FullName, ".git"); + string headFile = Path.Combine(gitDir, "HEAD"); - while (directoryInfo != null) + if (Directory.Exists(gitDir) && File.Exists(headFile)) { - string dirName = Path.Combine(directoryInfo.FullName, ".git"); + string headContent = File.ReadAllText(headFile).Trim(); + int pos = headContent.LastIndexOf('/') + 1; + return (pos < headContent.Length) ? headContent.Substring(pos) : headContent; + } - if (Directory.Exists(dirName)) - { - string branchFile = Path.Combine(dirName, "HEAD"); - if (File.Exists(branchFile)) - { - // removes extra end of line - results = string.Join(" ", File.ReadAllLines(branchFile)); - // get branch only - int pos = results.LastIndexOf("/") + 1; - results = results.Substring(pos, results.Length - pos); - return results; - } - } - directoryInfo = directoryInfo.Parent; + if (!searchParentFolders) + { + break; } + directoryInfo = directoryInfo.Parent; } - else - { - string dirName = Path.Combine(projectPath, ".git"); - if (Directory.Exists(dirName)) + return null; + } - { - string branchFile = Path.Combine(dirName, "HEAD"); - if (File.Exists(branchFile)) - { - // removes extra end of line - results = string.Join(" ", File.ReadAllLines(branchFile)); - // get branch only - int pos = results.LastIndexOf("/") + 1; - results = results.Substring(pos, results.Length - pos); + public static string ReadPlasticBranchInfo(string projectPath, bool searchParentFolders) + { + string branchName = null; + DirectoryInfo directoryInfo = new DirectoryInfo(projectPath); + while (directoryInfo != null) + { + string plasticSelectorPath = Path.Combine(directoryInfo.FullName, ".plastic", "plastic.selector"); + if (File.Exists(plasticSelectorPath)) + { + branchName = ExtractPlasticBranch(plasticSelectorPath); + if (!string.IsNullOrEmpty(branchName)) + { + return branchName; } + } + if (!searchParentFolders) + { + break; } + + directoryInfo = directoryInfo.Parent; } - return results; + + return branchName; } - public static string ReadPlasticBranchInfo(string projectPath) + private static string ExtractPlasticBranch(string plasticSelectorPath) { - string results = null; - string dirName = Path.Combine(projectPath, ".plastic"); - if (Directory.Exists(dirName)) + string[] lines = File.ReadAllLines(plasticSelectorPath); + foreach (string line in lines) { - string branchFile = Path.Combine(dirName, "plastic.selector"); - if (File.Exists(branchFile)) + string trimmedLine = line.Trim(); + if (trimmedLine.StartsWith("br ") || trimmedLine.StartsWith("smartbranch ")) { - // removes extra end of line - results = string.Join(" ", File.ReadAllText(branchFile)); - // get branch only - int pos = results.LastIndexOf("\"/") + 1; - // -1 to remove last " - results = results.Substring(pos, results.Length - pos - 1); + // Extract the first quoted string + var match = Regex.Match(trimmedLine, "\"([^\"]+)\""); + if (match.Success) + { + string branchName = match.Groups[1].Value; + // Remove leading slash if present (e.g., "/main" becomes "main") + if (branchName.StartsWith("/")) + { + branchName = branchName.Substring(1); + } + return branchName; + } } } - return results; + return null; } - //public static Platform GetTargetPlatform(string projectPath) static string GetTargetPlatformRaw(string projectPath) { string results = null; - //Platform results = Platform.Unknown; // get buildtarget from .csproj // StandaloneWindows64:19 // get main csproj file var csproj = Path.Combine(projectPath, "Assembly-CSharp.csproj"); + // TODO check projname also, if no assembly-.., NOTE already checked above - //var csproj = Path.Combine(projectPath, projectName + ".csproj"); + // var csproj = Path.Combine(projectPath, projectName + ".csproj"); + if (File.Exists(csproj)) { - var csprojtxt = File.ReadAllText(csproj); - var csprojsplit = csprojtxt.Split(new[] { "" }, StringSplitOptions.None); - if (csprojsplit != null && csprojsplit.Length > 1) + // Read the file line by line for performance + using (var reader = new StreamReader(csproj)) { - var endrow = csprojsplit[1].IndexOf(":"); - if (endrow > -1) + string line; + while ((line = reader.ReadLine()) != null) { - //Console.WriteLine("build target: " + csprojsplit[1].Substring(0, endrow)); - // 5.6 : win32, win64, osx, linux, linux64, ios, android, web, webstreamed, webgl, xboxone, ps4, psp2, wsaplayer, tizen, samsungtv - // 2017: standalone, Win, Win64, OSXUniversal, Linux, Linux64, LinuxUniversal, iOS, Android, Web, WebStreamed, WebGL, XboxOne, PS4, PSP2, WindowsStoreApps, Switch, WiiU, N3DS, tvOS, PSM - // 2018: standalone, Win, Win64, OSXUniversal, Linux, Linux64, LinuxUniversal, iOS, Android, Web, WebStreamed, WebGL, XboxOne, PS4, WindowsStoreApps, Switch, N3DS, tvOS - // 2019: Standalone, Win, Win64, OSXUniversal, Linux64, iOS, Android, WebGL, XboxOne, PS4, WindowsStoreApps, Switch, tvOS - // 2020: Standalone, Win, Win64, OSXUniversal, Linux64, iOS, Android, WebGL, XboxOne, PS4, WindowsStoreApps, Switch, tvOS - // 2021: Standalone, Win, Win64, OSXUniversal, Linux64, iOS, Android, WebGL, XboxOne, PS4, WindowsStoreApps, Switch, tvOS - results = csprojsplit[1].Substring(0, endrow); - //results = (Platform)Enum.Parse(typeof(Platform), csprojsplit[1].Substring(0, endrow)); + const string tagStart = ""; + const string tagEnd = ""; + + int startIdx = line.IndexOf(tagStart); + if (startIdx >= 0) + { + int endIdx = line.IndexOf(tagEnd, startIdx); + if (endIdx > startIdx) + { + string inner = line.Substring(startIdx + tagStart.Length, endIdx - startIdx - tagStart.Length); + int colonIndex = inner.IndexOf(':'); + if (colonIndex > -1) + { + //Console.WriteLine("build target: " + inner.Substring(0, colonIndex)); + // 5.6 : win32, win64, osx, linux, linux64, ios, android, web, webstreamed, webgl, xboxone, ps4, psp2, wsaplayer, tizen, samsungtv + // 2017: standalone, Win, Win64, OSXUniversal, Linux, Linux64, LinuxUniversal, iOS, Android, Web, WebStreamed, WebGL, XboxOne, PS4, PSP2, WindowsStoreApps, Switch, WiiU, N3DS, tvOS, PSM + // 2018: standalone, Win, Win64, OSXUniversal, Linux, Linux64, LinuxUniversal, iOS, Android, Web, WebStreamed, WebGL, XboxOne, PS4, WindowsStoreApps, Switch, N3DS, tvOS + // 2019: Standalone, Win, Win64, OSXUniversal, Linux64, iOS, Android, WebGL, XboxOne, PS4, WindowsStoreApps, Switch, tvOS + // 2020: Standalone, Win, Win64, OSXUniversal, Linux64, iOS, Android, WebGL, XboxOne, PS4, WindowsStoreApps, Switch, tvOS + // 2021: Standalone, Win, Win64, OSXUniversal, Linux64, iOS, Android, WebGL, XboxOne, PS4, WindowsStoreApps, Switch, tvOS + results = inner.Substring(0, colonIndex); + //results = (Platform)Enum.Parse(typeof(Platform), inner.Substring(0, colonIndex)); + break; // we found it, exit early + } + } + } } } } else { - //Console.WriteLine("Missing csproj, cannot parse target platform: "+ projectPath); + //Console.WriteLine("Missing csproj, cannot parse target platform: " + projectPath); } return results; } + public static string GetTargetPlatform(string projectPath) { var rawPlatformName = GetTargetPlatformRaw(projectPath); @@ -1244,19 +1607,31 @@ public static string GetTargetPlatform(string projectPath) public static string ReadCustomProjectData(string projectPath, string customFile) { - string results = null; - customFile = Path.Combine(projectPath, "ProjectSettings", customFile); - if (File.Exists(customFile) == true) + // ProjectSettings is the old deprecated location (and current location from Hub 3.15.x, but later they will use UserSettings first too) + string[] directories = { "UserSettings", "ProjectSettings" }; + + foreach (var directory in directories) { - results = string.Join(" ", File.ReadAllLines(customFile)); + string filePath = Path.Combine(projectPath, directory, customFile); + if (File.Exists(filePath)) + { + return string.Join(" ", File.ReadAllLines(filePath)); + } } - return results; + + return null; } public static bool SaveCustomProjectData(string projectPath, string customFile, string data) { - customFile = Path.Combine(projectPath, "ProjectSettings", customFile); + // NOTE: now saving into UserSettings folder only (there might be old custom data is in ProjectSettings/ still..) + var customPath = Path.Combine(projectPath, "UserSettings"); + if (!Directory.Exists(customPath)) + { + Directory.CreateDirectory(customPath); + } + customFile = Path.Combine(customPath, customFile); try { File.WriteAllText(customFile, data); @@ -1264,6 +1639,7 @@ public static bool SaveCustomProjectData(string projectPath, string customFile, } catch (Exception) { + SetStatus("Failed to save custom project data to: " + customFile); } return false; @@ -1285,47 +1661,42 @@ public static bool HasFocus(DependencyObject obj, Control control, bool checkChi public static void SetFocusToGrid(DataGrid targetGrid, int index = -1) { - // set main component focus - //targetGrid.Focus(); - //Keyboard.Focus(targetGrid); - - // no items if (targetGrid.Items.Count < 1) return; - // keep current row selected if (index == -1 && targetGrid.SelectedIndex > -1) index = targetGrid.SelectedIndex; - - // if no item selected, pick first if (index == -1) index = 0; targetGrid.SelectedIndex = index; - // set full focus + // Try get the row, if not realized yet, defer DataGridRow row = (DataGridRow)targetGrid.ItemContainerGenerator.ContainerFromIndex(index); if (row == null) { - targetGrid.UpdateLayout(); - if (index < targetGrid.Items.Count) - { - // scroll selected into view - targetGrid.ScrollIntoView(targetGrid.Items[index]); - row = (DataGridRow)targetGrid.ItemContainerGenerator.ContainerFromIndex(index); - } - else + // clamp to max items + if (index >= targetGrid.Items.Count) index = targetGrid.Items.Count - 1; + + targetGrid.ScrollIntoView(targetGrid.Items[index]); + // Defer the focus once row is generated + targetGrid.Dispatcher.InvokeAsync(() => { - Console.WriteLine("selected row out of bounds: " + index); - } + var newRow = (DataGridRow)targetGrid.ItemContainerGenerator.ContainerFromIndex(index); + if (newRow != null) + { + newRow.MoveFocus(new TraversalRequest(FocusNavigationDirection.Up)); + newRow.Focus(); + Keyboard.Focus(newRow); + } + }, DispatcherPriority.Background); } - // NOTE does this causes move below? - //row.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next)); - if (row != null) + else { - row.MoveFocus(new TraversalRequest(FocusNavigationDirection.Up)); // works better than Up + row.MoveFocus(new TraversalRequest(FocusNavigationDirection.Up)); row.Focus(); Keyboard.Focus(row); } } + public static string BrowseForOutputFolder(string title, string initialDirectory = null) { // https://stackoverflow.com/a/50261723/5452781 @@ -1352,26 +1723,27 @@ public static string BrowseForOutputFolder(string title, string initialDirectory } // TODO too many params.. - public static Project FastCreateProject(string version, string baseFolder, string projectName = null, string templateZipPath = null, string[] platformsForThisUnity = null, string platform = null, bool useInitScript = false, string initScriptPath = null) + public static Project FastCreateProject(string version, string baseFolder, string projectName = null, string templateZipPath = null, string[] platformsForThisUnity = null, string platform = null, bool useInitScript = false, string initScriptPath = null, bool forceDX11 = false) { // check for base folders in settings tab if (string.IsNullOrEmpty(baseFolder) == true) { - Console.WriteLine("Missing baseFolder value"); + SetStatus("Missing baseFolder value"); return null; } // check if base folder exists if (Directory.Exists(baseFolder) == false) { - Console.WriteLine("Missing baseFolder: " + baseFolder); + // TODO add streaming filter + SetStatus("Missing baseFolder: " + baseFolder); return null; } // check selected unity version if (string.IsNullOrEmpty(version) == true) { - Console.WriteLine("Missing unity version string"); + SetStatus("Missing unity version string"); return null; } @@ -1388,10 +1760,34 @@ public static Project FastCreateProject(string version, string baseFolder, strin // create folder CreateEmptyProjectFolder(newPath, version); - // unzip template, if any + // unzip or copy template if (templateZipPath != null) { - TarLib.Tar.ExtractTarGz(templateZipPath, newPath); + // Console.WriteLine(templateZipPath); + + if (File.Exists(templateZipPath)) + { + try + { + TarLib.Tar.ExtractTarGz(templateZipPath, newPath); + } + catch (Exception ex) + { + SetStatus("Error extract template file:" + ex.Message); + } + } + else if (Directory.Exists(templateZipPath)) + { + try + { + CopyDirectory(templateZipPath, newPath); + } + catch (Exception ex) + { + SetStatus("Error copying template folder: " + ex.Message); + } + } + } // copy init file into project @@ -1416,7 +1812,7 @@ public static Project FastCreateProject(string version, string baseFolder, strin proj.TargetPlatform = platform; proj.Modified = DateTime.Now; proj.folderExists = true; // have to set this value, so item is green on list - + proj.Arguments = version.Contains("6000") ? (forceDX11 ? "-force-d3d11" : null) : null; // this gets erased later, since its not saved? would be nice to not add it at all though var proc = LaunchProject(proj, null, useInitScript); ProcessHandler.Add(proj, proc); @@ -1457,6 +1853,8 @@ public static string GetSuggestedProjectName(string version, string baseFolder) static void CreateEmptyProjectFolder(string path, string version) { Console.WriteLine("Create new project folder: " + path); + // TODO add streaming filter + SetStatus("Creating new project folder: " + path); Directory.CreateDirectory(path); // create project version file, to avoid wrong version warning @@ -1511,24 +1909,38 @@ public static Dictionary ScanTemplates(string unityInstallPath) var templateFolder = Path.Combine(unityPath, "Data/Resources/PackageManager/ProjectTemplates/"); if (Directory.Exists(templateFolder) == false) return items; + // get all files in template folder var fileEntries = Directory.GetFiles(templateFolder).ToList(); // process found files - for (int i = fileEntries.Count - 1; i > -1; i--) + for (int i = 0; i < fileEntries.Count; i++) { + //Console.WriteLine(fileEntries[i]); // check if its tgz - if (fileEntries[i].IndexOf(".tgz") == -1) + if (fileEntries[i].ToLower().IndexOf(".tgz") > -1) { - fileEntries.RemoveAt(i); - } - else - { - // cleanup name + // cleanup displayed name var name = Path.GetFileName(fileEntries[i]).Replace("com.unity.template.", "").Replace(".tgz", ""); items.Add(name, fileEntries[i]); } } + // 2018.4 has folders instead of tgz files + // BUT do this for all versions, in case user has added custom template folders (that contain Assets/ folder) + var dirEntries = Directory.GetDirectories(templateFolder).ToList(); + for (int i = 0; i < dirEntries.Count; i++) + { + //Console.WriteLine(dirEntries[i]); + // if it has com.unity.template. prefix, then its a template + // if that directory contains Assets/ folder, then its a template + if (Directory.Exists(Path.Combine(dirEntries[i], "Assets")) == true) + { + //Console.WriteLine(dirEntries[i]); + var name = Path.GetFileName(dirEntries[i]).Replace("com.unity.template.", ""); + items.Add(name, dirEntries[i]); + } + } + return items; } @@ -1754,6 +2166,33 @@ static string[] GetScenes() } + public static void BuildProjectCustom(Project proj) + { + Console.WriteLine("Building " + proj.Title + " (custom)"); + SetStatus("Build process started: " + DateTime.Now.ToString("HH:mm:ss")); + + // get selected project unity exe path + var unityExePath = Tools.GetUnityExePath(proj.Version); + if (unityExePath == null) return; + + // create commandline string for building and launch it + //var buildcmd = $"\"{unityExePath}\" -quit -batchmode -nographics -projectPath \"{proj.Path}\" -executeMethod \"Builder.BuildAndroid\" -buildTarget android -logFile -"; + // TODO test without nographics : https://forum.unity.com/threads/batch-build-one-scene-is-black-works-in-normal-file-build.1282823/#post-9456524 + var buildParams = $" -quit -batchmode -nographics -projectPath \"{proj.Path}\" -executeMethod \"UnityLauncherProToolsCustom.BuildCustom\""; + Console.WriteLine("buildcmd= " + buildParams); + + // launch build + var proc = Tools.LaunchExe(unityExePath, buildParams); + + // wait for process exit then open output folder + proc.Exited += (o, i) => + { + SetStatus("Build process finished: " + DateTime.Now.ToString("HH:mm:ss")); + // TODO set color based on results + SetBuildStatus(Colors.Green); + }; + } + // runs unity SimpleWebServer.exe and launches default Browser into project build/ folder' public static void LaunchWebGL(Project proj, string relativeFolder) { @@ -2281,6 +2720,428 @@ private static async Task DownloadFileAsync(string fileUrl, string destina } return result; } + + internal static string GetSRP(string projectPath) + { + var settingsFile = Path.Combine(projectPath, "ProjectSettings", "GraphicsSettings.asset"); + if (!File.Exists(settingsFile)) return null; + + bool srpSectionFound = false; + + using (var reader = new StreamReader(settingsFile)) + { + string line; + while ((line = reader.ReadLine()) != null) + { + if (!srpSectionFound) + { + if (line.Contains("m_SRPDefaultSettings:") || line.Contains("m_RenderPipelineGlobalSettingsMap:")) + { + srpSectionFound = true; + } + continue; + } + + if (line.Contains("UniversalRenderPipeline")) + { + return "URP"; + } + else if (line.Contains("HDRenderPipeline")) + { + return "HDRP"; + } + } + } + return null; // BIRP or unknown + } + + internal static void InstallAPK(string ApkPath) + { + try + { + var cmd = "cmd.exe"; + var pars = $"/C adb install -r \"{ApkPath}\""; // Use /C to execute and close the window after finishing + + var processStartInfo = new ProcessStartInfo + { + FileName = cmd, + Arguments = pars, + RedirectStandardOutput = true, // Capture output to wait for completion + RedirectStandardError = true, + UseShellExecute = false, + CreateNoWindow = false + }; + + string installOutput = null; + string installError = null; + + using (var installProcess = Process.Start(processStartInfo)) + { + installOutput = installProcess.StandardOutput.ReadToEnd(); + installError = installProcess.StandardError.ReadToEnd(); + installProcess.WaitForExit(); + + if (installProcess.ExitCode != 0 || !string.IsNullOrEmpty(installError)) + { + SetStatus($"Error installing APK: {installError.Trim()}\n{installOutput.Trim()}"); + return; + } + } + + // Attempt to extract package name using aapt + var aaptCmd = $"aapt dump badging \"{ApkPath}\" | findstr package:"; + var aaptProcessStartInfo = new ProcessStartInfo + { + FileName = "cmd.exe", + Arguments = $"/C {aaptCmd}", + RedirectStandardOutput = true, + UseShellExecute = false, + CreateNoWindow = true + }; + + string packageName = null; + using (var process = Process.Start(aaptProcessStartInfo)) + { + var output = process.StandardOutput.ReadToEnd(); + process.WaitForExit(); + + var match = System.Text.RegularExpressions.Regex.Match(output, "package: name='(.*?)'"); + if (match.Success) + { + packageName = match.Groups[1].Value; + } + } + + if (!string.IsNullOrEmpty(packageName)) + { + // Run the application using adb + var runPars = $"/C adb shell monkey -p {packageName} 1"; + var runProcessStartInfo = new ProcessStartInfo + { + FileName = cmd, + Arguments = runPars, + UseShellExecute = true, + CreateNoWindow = false, + WindowStyle = ProcessWindowStyle.Normal + }; + Process.Start(runProcessStartInfo); + + SetStatus($"Installed and launched APK with package name: {packageName}"); + } + else + { + SetStatus("ADB install completed, but failed to extract package name. Application not launched."); + } + } + catch (Win32Exception ex) + { + // Handle case where adb or aapt is not found + SetStatus($"Error: Required tool not found. Ensure adb and aapt are installed and added to PATH. Details: {ex.Message}"); + } + catch (Exception ex) + { + // Handle other unexpected exceptions + SetStatus($"An unexpected error occurred: {ex.Message}"); + } + } + + // exclude folders from windows defender + internal static bool RunExclusionElevated(IEnumerable paths, bool silent = false) + { + var escapedPaths = new List(); + foreach (var rawPath in paths) + { + var path = rawPath.Trim(); + string safePath = path.Replace("'", "''"); + escapedPaths.Add($"'{safePath}'"); + } + + string joinedPaths = string.Join(", ", escapedPaths); + string psCommand = $"Add-MpPreference -ExclusionPath {joinedPaths}"; + + string fullCommand; + + if (silent) + { + // No output, just run the command silently + fullCommand = psCommand; + } + else + { + // Show command and keep window open + var quotedPathsForDisplay = string.Join(", ", escapedPaths.ConvertAll(p => $"'{p.Trim('\'')}'")); + string displayCommand = $"Add-MpPreference -ExclusionPath {quotedPathsForDisplay}"; + fullCommand = $"Write-Host 'Running: {displayCommand}'; {psCommand}; Write-Host ''; Write-Host 'Done. Press any key to exit...'; pause"; + } + + var startInfo = new ProcessStartInfo + { + FileName = "powershell.exe", + Arguments = silent + ? $"-WindowStyle Hidden -Command \"{fullCommand}\"" + : $"-NoExit -Command \"{fullCommand}\"", + UseShellExecute = true, + Verb = "runas", // Requires admin rights + WindowStyle = silent ? ProcessWindowStyle.Hidden : ProcessWindowStyle.Normal + }; + + try + { + Process.Start(startInfo); + } + catch (Win32Exception) + { + if (!silent) + { + MessageBox.Show("Operation cancelled or failed due to insufficient privileges.", "Cancelled", MessageBoxButton.OK, MessageBoxImage.Warning); + } + return false; + } + + return true; + } + + /// + /// Returns a full file path under either the application's install folder + /// or, if that isn't writable, under LocalAppData\UnityLauncherPro\. + /// + /// e.g. "Themes", "Scripts" + /// e.g. "custom.ini", "InitializeProject.cs" + public static string GetSafeFilePath(string subfolder, string fileName) + { + // 1) Preferred: under the app folder + string preferredDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, subfolder); + // 2) Fallback: in LocalAppData + string fallbackDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "UnityLauncherPro", subfolder); + + try + { + // Safe even if it already exists + Directory.CreateDirectory(preferredDir); + return Path.Combine(preferredDir, fileName); + } + catch (UnauthorizedAccessException) + { + // no write access under Program Files + } + catch (Exception ex) + { + // optional: log unexpected errors + Console.WriteLine($"Warning: couldn’t create {preferredDir}: {ex.Message}"); + } + + // Ensure fallback always exists + Directory.CreateDirectory(fallbackDir); + return Path.Combine(fallbackDir, fileName); + } + + // copy directory structure (for template folder) + public static void CopyDirectory(string sourceDir, string targetDir) + { + // Create the target directory if it doesn't exist + Directory.CreateDirectory(targetDir); + + // Copy all files + foreach (var file in Directory.GetFiles(sourceDir)) + { + var destFile = Path.Combine(targetDir, Path.GetFileName(file)); + File.Copy(file, destFile, overwrite: false); + } + + // Recursively copy subdirectories + foreach (var directory in Directory.GetDirectories(sourceDir)) + { + var destDir = Path.Combine(targetDir, Path.GetFileName(directory)); + CopyDirectory(directory, destDir); + } + } + + + + // test fetching + + // Reuse a single HttpClient + private static readonly HttpClient _http = new HttpClient + { + Timeout = TimeSpan.FromSeconds(15) + }; + + /// + /// Fire-and-forget entry; returns immediately. Keeps your UI thread free. + /// + internal static void FetchAdditionalInfoForEditors() + { + _ = FetchImplAsync(); // don't await -> no UI hang + } + + private static async Task FetchImplAsync() + { + try + { + foreach (var version in MainWindow.unityInstalledVersions.Keys) + { + //Console.WriteLine("******** Fetching " + version); + + var url = $"https://services.api.unity.com/unity/editor/release/v1/releases?order=RELEASE_DATE_DESC&limit=1&version={Uri.EscapeDataString(version)}"; + + string json; + try + { + json = await _http.GetStringAsync(url).ConfigureAwait(false); + } + catch (Exception ex) + { + Debug.WriteLine($"[FetchAdditionalInfo] {version}: HTTP error: {ex.Message}"); + continue; + } + + try + { + //Console.WriteLine("received: " + json); + UnityEditorInfoLabel label = ExtractLabelText(json); + if (label != null) + { + + // feed this info back to main window + if (string.IsNullOrEmpty(label.labelText) == false) + { + //Console.WriteLine(label.description); + + var u = MainWindow.unityInstallationsSource.FirstOrDefault(x => x.Version == version); + + string infoText = label.labelText + "\n" + label.description; ; + + u.InfoLabel = infoText; + + int index = MainWindow.unityInstallationsSource.IndexOf(u); + if (index >= 0) + { + MainWindow.unityInstallationsSource[index] = u; + } + + // update all projectsSource items with this version too + foreach (var p in MainWindow.projectsSource) + { + if (p.Version == version) + { + p.InfoLabel = infoText; + } + } + + + + //SetStatus($"Info for {version}: {label.labelText}"); + //Console.WriteLine("got infolabel for " + version); + } + } + + } + catch (Exception ex) + { + Debug.WriteLine($"[FetchAdditionalInfo] {version}: JSON parse error: {ex.Message}"); + } + + // delay + await Task.Delay(500).ConfigureAwait(false); + + } // foreach version + } + catch (Exception ex) + { + // Last-resort catch so fire-and-forget exceptions aren’t unobserved + Debug.WriteLine($"[FetchAdditionalInfo] Fatal: {ex}"); + } + } // FetchImplAsync() + + public class UnityEditorInfoLabel + { + public string description; // may contain HTML + public string labelText; + public string icon; + public string color; + } + + private static UnityEditorInfoLabel ExtractLabelText(string json) + { + var label = new UnityEditorInfoLabel(); + if (string.IsNullOrEmpty(json) || json.Contains("\"results\":[]")) return label; + + int resultsIndex = json.IndexOf("\"results\":", StringComparison.Ordinal); + if (resultsIndex == -1) return label; + + // Use the LAST "label": in the payload (the editor-level one) + int labelIndex = json.LastIndexOf("\"label\":", StringComparison.Ordinal); + if (labelIndex == -1 || labelIndex < resultsIndex) return label; + + // labelText + int ltIndex = json.IndexOf("\"labelText\":", labelIndex, StringComparison.Ordinal); + if (ltIndex != -1) + { + int vStart = json.IndexOf('\"', ltIndex + 12) + 1; // "labelText": => +12 + if (vStart > 0) + { + int vEnd = json.IndexOf('\"', vStart); + if (vEnd > vStart) label.labelText = json.Substring(vStart, vEnd - vStart); + } + } + + // icon + int iconIndex = json.IndexOf("\"icon\":", labelIndex, StringComparison.Ordinal); + if (iconIndex != -1) + { + int vStart = json.IndexOf('\"', iconIndex + 7) + 1; // "icon": => +7 + if (vStart > 0) + { + int vEnd = json.IndexOf('\"', vStart); + if (vEnd > vStart) label.icon = json.Substring(vStart, vEnd - vStart); + } + } + + // color + int colorIndex = json.IndexOf("\"color\":", labelIndex, StringComparison.Ordinal); + if (colorIndex != -1) + { + int vStart = json.IndexOf('\"', colorIndex + 8) + 1; // "color": => +8 + if (vStart > 0) + { + int vEnd = json.IndexOf('\"', vStart); + if (vEnd > vStart) label.color = json.Substring(vStart, vEnd - vStart); + } + } + + // description (may contain escaped quotes) + int descIndex = json.IndexOf("\"description\":", labelIndex, StringComparison.Ordinal); + if (descIndex != -1) + { + int qStart = json.IndexOf('\"', descIndex + 14) + 1; // "description": => +14 + if (qStart > 0) + { + int i = qStart; + for (; i < json.Length; i++) + if (json[i] == '\"' && json[i - 1] != '\\') break; + + if (i > qStart) + { + label.description = json.Substring(qStart, i - qStart).Replace("\\\"", "\"").Replace("\\n", "\n").Replace("\\r", "\r").Replace("\\t", "\t"); + // strip HTML tags for now + label.description = System.Text.RegularExpressions.Regex.Replace(label.description, "<.*?>", string.Empty); + } + } + } + + return label; + } + + public static string ParseHashCodeFromURL(string url) + { + // https://beta.unity3d.com/download/330fbefc18b7/download.html#6000.1.0a8 > 330fbefc18b7 + + int hashStart = url.IndexOf("download/") + 9; + int hashEnd = url.IndexOf("/download.html", hashStart); + return url.Substring(hashStart, hashEnd - hashStart); + } + + } // class } // namespace diff --git a/UnityLauncherPro/UnityLauncherPro.csproj b/UnityLauncherPro/UnityLauncherPro.csproj index 40c2ef4..821e8cc 100644 --- a/UnityLauncherPro/UnityLauncherPro.csproj +++ b/UnityLauncherPro/UnityLauncherPro.csproj @@ -85,11 +85,15 @@ + + + + diff --git a/UnityLauncherPro/UpgradeWindow.xaml b/UnityLauncherPro/UpgradeWindow.xaml index 1e5c437..c38280d 100644 --- a/UnityLauncherPro/UpgradeWindow.xaml +++ b/UnityLauncherPro/UpgradeWindow.xaml @@ -5,7 +5,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:UnityLauncherPro" mc:Ignorable="d" - Title="Upgrade Project Version" Height="533.165" Width="552" Background="{DynamicResource ThemeDarkestBackground}" MinWidth="319" MinHeight="555" ResizeMode="NoResize" WindowStartupLocation="CenterOwner" HorizontalAlignment="Left" VerticalAlignment="Top" PreviewKeyDown="Window_PreviewKeyDown" ShowInTaskbar="False"> + Title="Upgrade Project Version" Height="540" Width="580" Background="{DynamicResource ThemeDarkestBackground}" MinWidth="319" MinHeight="555" ResizeMode="NoResize" WindowStartupLocation="CenterOwner" HorizontalAlignment="Left" VerticalAlignment="Top" PreviewKeyDown="Window_PreviewKeyDown" ShowInTaskbar="False"> diff --git a/UnityLauncherPro/UpgradeWindow.xaml.cs b/UnityLauncherPro/UpgradeWindow.xaml.cs index bc2ef62..22f9477 100644 --- a/UnityLauncherPro/UpgradeWindow.xaml.cs +++ b/UnityLauncherPro/UpgradeWindow.xaml.cs @@ -1,6 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; +using System.Linq; using System.Windows; using System.Windows.Controls; using System.Windows.Input; @@ -28,30 +26,35 @@ public UpgradeWindow(string currentVersion, string projectPath, string commandLi gridAvailableVersions.SelectedItem = null; - // we have current version info in project - // enable release and dl buttons - btnOpenReleasePage.IsEnabled = true; - btnDownload.IsEnabled = true; - // if dont have exact version, show red outline - if (MainWindow.unityInstalledVersions.ContainsKey(currentVersion) == false) + if (currentVersion == null || MainWindow.unityInstalledVersions.ContainsKey(currentVersion) == false) { txtCurrentVersion.BorderBrush = Brushes.Red; txtCurrentVersion.BorderThickness = new Thickness(1); } - // find nearest version - string nearestVersion = Tools.FindNearestVersion(currentVersion, MainWindow.unityInstalledVersions.Keys.ToList()); - if (nearestVersion != null) + if (currentVersion != null) { - // select nearest version - for (int i = 0; i < MainWindow.unityInstallationsSource.Count; i++) + // we know the version, enable buttons + btnOpenReleasePage.IsEnabled = true; + btnDownload.IsEnabled = true; + + // remove china c1 from version + if (currentVersion.Contains("c")) currentVersion = currentVersion.Replace("c1", ""); + // find nearest version + string nearestVersion = Tools.FindNearestVersion(currentVersion, MainWindow.unityInstalledVersions.Keys.ToList()); + + if (nearestVersion != null) { - if (MainWindow.unityInstallationsSource[i].Version == nearestVersion) + // select nearest version + for (int i = 0; i < MainWindow.unityInstallationsSource.Count; i++) { - gridAvailableVersions.SelectedIndex = i; - gridAvailableVersions.ScrollIntoView(gridAvailableVersions.SelectedItem); - break; + if (MainWindow.unityInstallationsSource[i].Version == nearestVersion) + { + gridAvailableVersions.SelectedIndex = i; + gridAvailableVersions.ScrollIntoView(gridAvailableVersions.SelectedItem); + break; + } } } } @@ -75,7 +78,7 @@ private void BtnOpenReleasePage_Click(object sender, RoutedEventArgs e) Tools.OpenReleaseNotes(txtCurrentVersion.Text); } - + private void BtnDownloadEditor_Click(object sender, RoutedEventArgs e) { Tools.DownloadInBrowser(txtCurrentVersion.Text); @@ -146,6 +149,13 @@ private void GridAvailableVersions_PreviewMouseDoubleClick(object sender, MouseB void Upgrade() { var k = (UnityInstallation)gridAvailableVersions.SelectedItem; + + if (k == null) + { + DialogResult = false; + return; + } + upgradeVersion = k.Version; DialogResult = true; } diff --git a/UnityLauncherProInstaller/UnityLauncherProInstaller.vdproj b/UnityLauncherProInstaller/UnityLauncherProInstaller.vdproj new file mode 100644 index 0000000..1faa96f --- /dev/null +++ b/UnityLauncherProInstaller/UnityLauncherProInstaller.vdproj @@ -0,0 +1,835 @@ +"DeployProject" +{ +"VSVersion" = "3:800" +"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}" +"IsWebType" = "8:FALSE" +"ProjectName" = "8:UnityLauncherProInstaller" +"LanguageId" = "3:1033" +"CodePage" = "3:1252" +"UILanguageId" = "3:1033" +"SccProjectName" = "8:" +"SccLocalPath" = "8:" +"SccAuxPath" = "8:" +"SccProvider" = "8:" + "Hierarchy" + { + "Entry" + { + "MsmKey" = "8:_56C1F622109E4E31983910358EA5BCB3" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_7E1343CBA8EB43B8864B8A7BBEB62BCA" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_B4800275BE183C6B5A0394F826FCA770" + "OwnerKey" = "8:_7E1343CBA8EB43B8864B8A7BBEB62BCA" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_7E1343CBA8EB43B8864B8A7BBEB62BCA" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_B4800275BE183C6B5A0394F826FCA770" + "MsmSig" = "8:_UNDEFINED" + } + } + "Configurations" + { + "Debug" + { + "DisplayName" = "8:Debug" + "IsDebugOnly" = "11:TRUE" + "IsReleaseOnly" = "11:FALSE" + "OutputFilename" = "8:Debug\\UnityLauncherProInstaller.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:2" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:1" + "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" + { + "Enabled" = "11:TRUE" + "PromptEnabled" = "11:TRUE" + "PrerequisitesLocation" = "2:1" + "Url" = "8:" + "ComponentsUrl" = "8:" + "Items" + { + "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:{88EC2DC6-E1F3-4355-B2F4-CF0345A0D5AF}" + { + "Name" = "8:Microsoft .NET Framework 4.7.2 (x86 and x64)" + "ProductCode" = "8:{88EC2DC6-E1F3-4355-B2F4-CF0345A0D5AF}" + } + } + } + } + "Release" + { + "DisplayName" = "8:Release" + "IsDebugOnly" = "11:FALSE" + "IsReleaseOnly" = "11:TRUE" + "OutputFilename" = "8:Release\\UnityLauncherPro-Installer.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:2" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:1" + "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" + { + "Enabled" = "11:FALSE" + "PromptEnabled" = "11:TRUE" + "PrerequisitesLocation" = "2:1" + "Url" = "8:" + "ComponentsUrl" = "8:" + "Items" + { + } + } + } + } + "Deployable" + { + "CustomAction" + { + } + "DefaultFeature" + { + "Name" = "8:DefaultFeature" + "Title" = "8:" + "Description" = "8:" + } + "ExternalPersistence" + { + "LaunchCondition" + { + "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_C6DAFA7E7FB6480FB6A878EC2AE20521" + { + "Name" = "8:.NET Framework" + "Message" = "8:[VSDNETMSG]" + "FrameworkVersion" = "8:.NETFramework,Version=v4.8" + "AllowLaterVersions" = "11:FALSE" + "InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=863262" + } + } + } + "File" + { + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_56C1F622109E4E31983910358EA5BCB3" + { + "SourcePath" = "8:..\\UnityLauncherPro\\Images\\icon.ico" + "TargetName" = "8:icon.ico" + "Tag" = "8:" + "Folder" = "8:_68B52FAF3D0E46A7BB2DA063CB0BC570" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_B4800275BE183C6B5A0394F826FCA770" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" + "ScatterAssemblies" + { + "_B4800275BE183C6B5A0394F826FCA770" + { + "Name" = "8:System.Net.Http.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:System.Net.Http.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_68B52FAF3D0E46A7BB2DA063CB0BC570" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:TRUE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + } + "FileType" + { + } + "Folder" + { + "{1525181F-901A-416C-8A58-119130FE478E}:_19ED9D0C790D4F4D9166B197E25DE46F" + { + "Name" = "8:#1919" + "AlwaysCreate" = "11:TRUE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:ProgramMenuFolder" + "Folders" + { + } + } + "{1525181F-901A-416C-8A58-119130FE478E}:_2963B7ED2A0A442D83028448A89C2E88" + { + "Name" = "8:#1916" + "AlwaysCreate" = "11:TRUE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:DesktopFolder" + "Folders" + { + } + } + "{3C67513D-01DD-4637-8A68-80971EB9504F}:_68B52FAF3D0E46A7BB2DA063CB0BC570" + { + "DefaultLocation" = "8:[ProgramFilesFolder][Manufacturer]\\[ProductName]" + "Name" = "8:#1925" + "AlwaysCreate" = "11:TRUE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:TARGETDIR" + "Folders" + { + } + } + } + "LaunchCondition" + { + } + "Locator" + { + } + "MsiBootstrapper" + { + "LangId" = "3:1033" + "RequiresElevation" = "11:FALSE" + } + "Product" + { + "Name" = "8:Microsoft Visual Studio" + "ProductName" = "8:UnityLauncherPro" + "ProductCode" = "8:{904A3434-1B2D-42CB-AC64-C311F3956044}" + "PackageCode" = "8:{1E8EE2AB-7275-4599-9F22-E57650F33D2B}" + "UpgradeCode" = "8:{4F3ACBAF-4673-4808-9A4F-50ED1E82F59F}" + "AspNetVersion" = "8:2.0.50727.0" + "RestartWWWService" = "11:FALSE" + "RemovePreviousVersions" = "11:TRUE" + "DetectNewerInstalledVersion" = "11:TRUE" + "InstallAllUsers" = "11:FALSE" + "ProductVersion" = "8:0.0.2" + "Manufacturer" = "8:unitycoder.com" + "ARPHELPTELEPHONE" = "8:" + "ARPHELPLINK" = "8:https://github.com/unitycoder/UnityLauncherPro" + "Title" = "8:UnityLauncherPro" + "Subject" = "8:" + "ARPCONTACT" = "8:unitycoder.com" + "Keywords" = "8:unity" + "ARPCOMMENTS" = "8:Custom Unity Project Launcher" + "ARPURLINFOABOUT" = "8:" + "ARPPRODUCTICON" = "8:" + "ARPIconIndex" = "3:0" + "SearchPath" = "8:" + "UseSystemSearchPath" = "11:TRUE" + "TargetPlatform" = "3:0" + "PreBuildEvent" = "8:" + "PostBuildEvent" = "8:" + "RunPostBuildEvent" = "3:0" + } + "Registry" + { + "HKLM" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_BBC8E7EDED764786B28BA436E2F2E3FA" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_53F28CB8B5D5476E83FCE79B61696A5A" + { + "Name" = "8:[Manufacturer]" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCU" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_7C8A921E5D854F9293E898B1E5D7903E" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_00642DD831ED49BF966A3921B4EE13E6" + { + "Name" = "8:[Manufacturer]" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCR" + { + "Keys" + { + } + } + "HKU" + { + "Keys" + { + } + } + "HKPU" + { + "Keys" + { + } + } + } + "Sequences" + { + } + "Shortcut" + { + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_43C0E1ACE07D4DBEA0C42EC6C9AD587A" + { + "Name" = "8:UnityLauncherPro" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_7E1343CBA8EB43B8864B8A7BBEB62BCA" + "Folder" = "8:_19ED9D0C790D4F4D9166B197E25DE46F" + "WorkingFolder" = "8:_68B52FAF3D0E46A7BB2DA063CB0BC570" + "Icon" = "8:_56C1F622109E4E31983910358EA5BCB3" + "Feature" = "8:" + } + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_C0602FC78BDC49EEBC2B8D63BF602DB2" + { + "Name" = "8:UnityLauncherPro" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_68B52FAF3D0E46A7BB2DA063CB0BC570" + "Folder" = "8:_68B52FAF3D0E46A7BB2DA063CB0BC570" + "WorkingFolder" = "8:_19ED9D0C790D4F4D9166B197E25DE46F" + "Icon" = "8:_56C1F622109E4E31983910358EA5BCB3" + "Feature" = "8:" + } + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_DC1220A510594DA78B14B2A948B17BB5" + { + "Name" = "8:UnityLauncherPro" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_7E1343CBA8EB43B8864B8A7BBEB62BCA" + "Folder" = "8:_2963B7ED2A0A442D83028448A89C2E88" + "WorkingFolder" = "8:_68B52FAF3D0E46A7BB2DA063CB0BC570" + "Icon" = "8:_56C1F622109E4E31983910358EA5BCB3" + "Feature" = "8:" + } + } + "UserInterface" + { + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_03C4E4CC62D94357B185E5414076DE3C" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdBasicDialogs.wim" + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_147ABB7D36884065B2CC6D33E436F4F1" + { + "Name" = "8:#1900" + "Sequence" = "3:1" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_2E594B7DED8F49399108B61F7333A382" + { + "Sequence" = "3:200" + "DisplayName" = "8:Installation Folder" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdFolderDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "InstallAllUsersVisible" + { + "Name" = "8:InstallAllUsersVisible" + "DisplayName" = "8:#1059" + "Description" = "8:#1159" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:0" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_AE9BBF03F4254EC78B72E1DA3A342CD2" + { + "Sequence" = "3:100" + "DisplayName" = "8:Welcome" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdWelcomeDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "CopyrightWarning" + { + "Name" = "8:CopyrightWarning" + "DisplayName" = "8:#1002" + "Description" = "8:#1102" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:2" + "Value" = "8:This is open-source application from https://github.com/unitycoder/UnityLauncherPro" + "DefaultValue" = "8:#1202" + "UsePlugInResources" = "11:TRUE" + } + "Welcome" + { + "Name" = "8:Welcome" + "DisplayName" = "8:#1003" + "Description" = "8:#1103" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1203" + "DefaultValue" = "8:#1203" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_C6CB2BBAEA624833A4382BCB39FA64B4" + { + "Sequence" = "3:300" + "DisplayName" = "8:Confirm Installation" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdConfirmDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_6FD98948481641629052D2D3CAF5F3EC" + { + "Name" = "8:#1901" + "Sequence" = "3:2" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_452D9579D991490E998DC755F1371F7B" + { + "Sequence" = "3:100" + "DisplayName" = "8:Progress" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminProgressDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "ShowProgress" + { + "Name" = "8:ShowProgress" + "DisplayName" = "8:#1009" + "Description" = "8:#1109" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_A6508805A9374BCB8029A844ED81291A" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdUserInterface.wim" + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_BA4BFC6354F84AF4B5DAA3D1002FD75E" + { + "Name" = "8:#1900" + "Sequence" = "3:2" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_ACD96EE1DEDB42B59E67289A08B39190" + { + "Sequence" = "3:200" + "DisplayName" = "8:Installation Folder" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminFolderDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_AEF9C7C83C86472088534BF4856BB7AB" + { + "Sequence" = "3:300" + "DisplayName" = "8:Confirm Installation" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminConfirmDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_DA356B2059B947B59EFF4A9037C11614" + { + "Sequence" = "3:100" + "DisplayName" = "8:Welcome" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminWelcomeDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "CopyrightWarning" + { + "Name" = "8:CopyrightWarning" + "DisplayName" = "8:#1002" + "Description" = "8:#1102" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:2" + "Value" = "8:This is open-source application from https://github.com/unitycoder/UnityLauncherPro" + "DefaultValue" = "8:#1202" + "UsePlugInResources" = "11:TRUE" + } + "Welcome" + { + "Name" = "8:Welcome" + "DisplayName" = "8:#1003" + "Description" = "8:#1103" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1203" + "DefaultValue" = "8:#1203" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_D76F1CBBB8244A92B7828779EDBE19E0" + { + "Name" = "8:#1901" + "Sequence" = "3:1" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_C84B873F85C44D4FA8E3AA32E8FB9A36" + { + "Sequence" = "3:100" + "DisplayName" = "8:Progress" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdProgressDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "ShowProgress" + { + "Name" = "8:ShowProgress" + "DisplayName" = "8:#1009" + "Description" = "8:#1109" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_DABCB1736D1B4216B9E2922C80D06DC6" + { + "Name" = "8:#1902" + "Sequence" = "3:1" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_E782EE25F33D462DAC7BFBC248F22B2A" + { + "Sequence" = "3:100" + "DisplayName" = "8:Finished" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdFinishedDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "UpdateText" + { + "Name" = "8:UpdateText" + "DisplayName" = "8:#1058" + "Description" = "8:#1158" + "Type" = "3:15" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:2" + "Value" = "8:Please use Windows Update to check for any critical updates to the .NET 4.8 Framework." + "DefaultValue" = "8:#1258" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_EA095038010E4A17BE1470B74EBD21B7" + { + "Name" = "8:#1902" + "Sequence" = "3:2" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_E429B6085A7046E699D077EBC15B0E34" + { + "Sequence" = "3:100" + "DisplayName" = "8:Finished" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminFinishedDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + } + "MergeModule" + { + } + "ProjectOutput" + { + "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_7E1343CBA8EB43B8864B8A7BBEB62BCA" + { + "SourcePath" = "8:..\\UnityLauncherPro\\bin\\Release\\UnityLauncherPro.exe" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_68B52FAF3D0E46A7BB2DA063CB0BC570" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + "ProjectOutputGroupRegister" = "3:1" + "OutputConfiguration" = "8:" + "OutputGroupCanonicalName" = "8:Built" + "OutputProjectGuid" = "8:{EC78D91A-3E63-4CAA-8BC3-9673A30FDA45}" + "ShowKeyOutput" = "11:TRUE" + "ExcludeFilters" + { + } + } + } + } +}