Skip to content

[install]: document installing via kots #8996

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Mar 30, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions install/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,48 @@
# Install

Resources for installing Gitpod

## Replicated/KOTS

Gitpod has teamed up with Replicated to simplify the installation of Gitpod for self-hosted users. This provides an installation interface, simplified license delivery for both community and paying users, easier upgrades and an improved support process.

Kubernetes Off-The-Shelf (KOTS) is the technology used to deliver and Replicated is the company behind it. The terms may be used interchangeably, but we will tend to talk of KOTS.

### Channels

> The `stable` channel should be used

The `stable` channel represents tested and validated releases. This will typically receive one update per month with each [milestone](https://github.com/gitpod-io/gitpod/milestones). Hotfixes may be released during the month where necessary.

The `beta` channel represents the release candidates for the `stable` channel. This will receive updates prior to a `stable` release ready for testing.

The `unstable` channel receives every release that is pushed to the `main` branch, typically receiving multiple updates per day.

#### Licenses

A license is required to install via KOTS. For a full list of features, please see our [docs](https://www.gitpod.io/self-hosted). To obtain a license for a paid subscription, please go to the [enterprise license](https://www.gitpod.io/enterprise-license) section of our docs.

Download the licenses below:

- [Stable](./licenses/Community.yaml) _← recommended_
- [Beta](./licenses/Community%20(Beta).yaml)
- [Unstable](./licenses/Community%20(Unstable).yaml)

### Installation

#### Existing Cluster

```shell
curl https://kots.io/install | bash
kubectl kots install gitpod
```

For detailed instructions on the KOTS CLI, please see the [Replicated docs](https://docs.replicated.com/reference/kots-cli-getting-started).

#### Embedded Cluster

> Documentation coming soon

## Installer

For advanced users, the [Installer](./installer) is available.
36 changes: 36 additions & 0 deletions install/licenses/Community (Beta).yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
apiVersion: kots.io/v1beta1
kind: License
metadata:
name: communitybeta
spec:
appSlug: gitpod
channelID: 259YYCMTfMbbN8zxJSvlWjsBDEI
channelName: Beta
customerName: Community (Beta)
endpoint: https://replicated.app
entitlements:
domain:
title: Domain
value: ""
valueType: String
expires_at:
description: License Expiration
title: Expiration
value: ""
valueType: String
levelId:
isHidden: true
title: License level
value: 1
valueType: Integer
seats:
title: User seats
value: 10
valueType: Integer
isNewKotsUiEnabled: true
isSemverRequired: true
isSnapshotSupported: true
licenseID: 273KPoWTBv5agYR2ulVguz5lsFm
licenseSequence: 1
licenseType: community
signature: eyJsaWNlbnNlRGF0YSI6ImV5SmhjR2xXWlhKemFXOXVJam9pYTI5MGN5NXBieTkyTVdKbGRHRXhJaXdpYTJsdVpDSTZJa3hwWTJWdWMyVWlMQ0p0WlhSaFpHRjBZU0k2ZXlKdVlXMWxJam9pWTI5dGJYVnVhWFI1WW1WMFlTSjlMQ0p6Y0dWaklqcDdJbXhwWTJWdWMyVkpSQ0k2SWpJM00wdFFiMWRVUW5ZMVlXZFpVakoxYkZabmRYbzFiSE5HYlNJc0lteHBZMlZ1YzJWVWVYQmxJam9pWTI5dGJYVnVhWFI1SWl3aVkzVnpkRzl0WlhKT1lXMWxJam9pUTI5dGJYVnVhWFI1SUNoQ1pYUmhLU0lzSW1Gd2NGTnNkV2NpT2lKbmFYUndiMlFpTENKamFHRnVibVZzU1VRaU9pSXlOVGxaV1VOTlZHWk5ZbUpPT0hwNFNsTjJiRmRxYzBKRVJVa2lMQ0pqYUdGdWJtVnNUbUZ0WlNJNklrSmxkR0VpTENKc2FXTmxibk5sVTJWeGRXVnVZMlVpT2pFc0ltVnVaSEJ2YVc1MElqb2lhSFIwY0hNNkx5OXlaWEJzYVdOaGRHVmtMbUZ3Y0NJc0ltVnVkR2wwYkdWdFpXNTBjeUk2ZXlKa2IyMWhhVzRpT25zaWRHbDBiR1VpT2lKRWIyMWhhVzRpTENKMllXeDFaU0k2SWlJc0luWmhiSFZsVkhsd1pTSTZJbE4wY21sdVp5SjlMQ0psZUhCcGNtVnpYMkYwSWpwN0luUnBkR3hsSWpvaVJYaHdhWEpoZEdsdmJpSXNJbVJsYzJOeWFYQjBhVzl1SWpvaVRHbGpaVzV6WlNCRmVIQnBjbUYwYVc5dUlpd2lkbUZzZFdVaU9pSWlMQ0oyWVd4MVpWUjVjR1VpT2lKVGRISnBibWNpZlN3aWJHVjJaV3hKWkNJNmV5SjBhWFJzWlNJNklreHBZMlZ1YzJVZ2JHVjJaV3dpTENKMllXeDFaU0k2TVN3aWRtRnNkV1ZVZVhCbElqb2lTVzUwWldkbGNpSXNJbWx6U0dsa1pHVnVJanAwY25WbGZTd2ljMlZoZEhNaU9uc2lkR2wwYkdVaU9pSlZjMlZ5SUhObFlYUnpJaXdpZG1Gc2RXVWlPakV3TENKMllXeDFaVlI1Y0dVaU9pSkpiblJsWjJWeUluMTlMQ0pwYzFOdVlYQnphRzkwVTNWd2NHOXlkR1ZrSWpwMGNuVmxMQ0pwYzA1bGQwdHZkSE5WYVVWdVlXSnNaV1FpT25SeWRXVXNJbWx6VTJWdGRtVnlVbVZ4ZFdseVpXUWlPblJ5ZFdWOWZRPT0iLCJpbm5lclNpZ25hdHVyZSI6ImV5SnNhV05sYm5ObFUybG5ibUYwZFhKbElqb2lVazhyUldvM2JHOXBkM1ozWWxaMFRtOTNZMUJuY0hVM2ExbGtWRVF4ZVdoRWJXWkphMk4wWTBaQ1owZFNNa2t3UkhCeVVFeDZWSEo1TmxSUlRIWkphRUl6TVRaMGRFSk5hVEZaZDNBMFMyazVaa3hyVmxKTldrb3JjaTlJY1RKUFQyMHhVM0JpUW5obU0yTm5aVkYzZVRkQ1lrWlVRbEZqWWxVNVpXaHhjRzVQTTJ4T1VtOUNjRFppUkhoalpWSXZUWFJxU1ZCMlExWm9iamRrZG5SaFIxWnNjSFp2TWtoVVJEWnNNbmNyWVhsbVJYcGhWbHB3Y21kblJXSnZZV2huTVM5R2RFTlhUeTg1UXpORk5WbFlTMjh3WlVRNVRGVlZaazlxWWtZMlRGSkNNa0U1TDB4T2RHdzVOV3BTWVhkSFNGUlFOMGRLUmpsdGQwbHJiSE1yV2xaWVRDOUdkMWRTY3pGRU5teFBXSEpPY1RsNFozaEplSFpMVUhwU2RUQXZWVFJOWW5FeE5FNDVOM0pFY1Zndk0zaG5UVVpHVFU5WVYza3lTMEV6VEVOaVNVSlJTRVJTYVZaMU9XRTFLMk5QV0RSRGF6bG5QVDBpTENKd2RXSnNhV05MWlhraU9pSXRMUzB0TFVKRlIwbE9JRkJWUWt4SlF5QkxSVmt0TFMwdExWeHVUVWxKUWtscVFVNUNaMnR4YUd0cFJ6bDNNRUpCVVVWR1FVRlBRMEZST0VGTlNVbENRMmRMUTBGUlJVRnZOVzU2T1ZsRVMxTlJSbVZ3YjJKYVZqQTVkMXh1V0V0bE4zUnNURlZWVlc1VFpUZ3dNRWREUzFSRFZGcHpibTlxZFVKaGVXcHBTMlIzV2tRelZWUktjVEJFYVc5QmNsaFZhMmhFTkd0bWRETnRSRlEzUmx4dVlrRnllRmRFVlhSck4xZHpWakZtYkVodmNHdGlXRnBJY0VoeVQzZDJXR1pUUWtoaU9WRkJhVWswZDFwRGRtbENaamRPTUhWbFRXbG9VREprYTNCc2JWeHVObVpJTHpGVGJHcGtaVlZTTVdWSmNtVldOMlJEUVhCaWFXNXlOazlVU0RGalUwNDFWbU5aZUhOMlVqaFVPVGdyVVVsSEwwWldhbU0zYTNOclNtSnlNMXh1ZDBKVGRHaGpVbGhLYmt0dFprb3plV1Z4ZDJkbE5rRkJRMmRuVjFaUVREUkdhblpvTkM5Uk1uUnhXa2RDY1d4UFdYVjRMelJJVjNaVFUyVllTMWgyY2x4dVlVUmFja05uU1hGT01YQlJSVmt3YW0weVpreEhaRTlEUldoRmRsUnhaRTQwZFc5bmJFMDFjaXN5ZFVsWWJuVkVhRW92UTNaTGRHZFRSV1pJTTNCa2RWeHVjbEZKUkVGUlFVSmNiaTB0TFMwdFJVNUVJRkJWUWt4SlF5QkxSVmt0TFMwdExWeHVJaXdpYTJWNVUybG5ibUYwZFhKbElqb2laWGxLZW1GWFpIVlpXRkl4WTIxVmFVOXBTbTlPYVRsTVpVZEdVMUpJUmpaaGJWcHFaR3RrYVZwdFNYZE1lVGt3WkRBeFdGbFdjR2xhVmtJMVlWVm5NMVpXYkROaFdHeHRZVE5LTkdONU9YZFJNMVpYVjJ0R05GZElRWGxVZWxJelYxZGtNMVZYZUVKWk1XUXhVVEJuTlZGNlJuWlVSWEJXVldwT1ZHSnNTbnBqYldSNlRqQk9TVTFXYkhKaWJWWkNWV2wwV2xWdFRYbGhXRkpaV2xjeFRtSkZSWHBaV0d4VVRrUmFORnBUZEZCWmEyUmFVbGhDVjJKdFJsZFVSV2QyWW1wWmVtRklXVEpTUmxaMFZVYzFNV0pzU25OVVJUbGhaVmROZVdScWFGcGtSbWg0VkRGYVEyRlZOV2xsUm1oWlN6TktjMXB1YkVOalNGSkxaVzEwUzFJeWR6VlNNVTVZVG01WmNrMUZTbk5qU0hCUFVWaGtlV0pxUlhsVmJWcFNVVzFrUldJeU5WQlNNMXBvVmtoc1RtRldWazVpYkdOM1RWWm9jMkZyVlhkUmFsRXpZbGhKTVV4NlZuQmtWbEpWV1RKb1VHVkVXbFZXZWtwVlYxTTVjVTB4VWxwaFJURjFaVmR2ZVdOdVVYaFVSekZaWVVaR1ZsVXlOV3BYU0dSWFZEQm9hMHN5U2xaVmJUbFZWbTB3TTJNeWNHOWlWMVpEVkVaR1JsVjZWbXBUTVUweFYxUk9TVTVIWnpKa1YyZzFWbXQwY2xOcmRHcFJhM1JxVlZaS1UxUkVaRVJOYkdSeFZYcE9UR1F3TUhsalJXUlhWVEkwTkdGdVl6bFFVMGx6U1cxa2MySXlTbWhpUlhSc1pWVnNhMGxxYjJsWmJWSnNXbFJWTWs1VVdYZFpNbHBwVGtST2FrOVhTWGxQUjBwdFQxUm9iRmxYVG1oYWJVVXlUa1JaYVdaUlBUMGlmUT09In0=
36 changes: 36 additions & 0 deletions install/licenses/Community (Unstable).yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
apiVersion: kots.io/v1beta1
kind: License
metadata:
name: communityunstable
spec:
appSlug: gitpod
channelID: 259YYGjrDCpnE0nGmF3yIKIV3zs
channelName: Unstable
customerName: Community (Unstable)
endpoint: https://replicated.app
entitlements:
domain:
title: Domain
value: ""
valueType: String
expires_at:
description: License Expiration
title: Expiration
value: ""
valueType: String
levelId:
isHidden: true
title: License level
value: 1
valueType: Integer
seats:
title: User seats
value: 10
valueType: Integer
isGitOpsSupported: true
isNewKotsUiEnabled: true
isSnapshotSupported: true
licenseID: 26QkP1TBm7krczl8eYT6sDXLRRA
licenseSequence: 1
licenseType: community
signature: eyJsaWNlbnNlRGF0YSI6ImV5SmhjR2xXWlhKemFXOXVJam9pYTI5MGN5NXBieTkyTVdKbGRHRXhJaXdpYTJsdVpDSTZJa3hwWTJWdWMyVWlMQ0p0WlhSaFpHRjBZU0k2ZXlKdVlXMWxJam9pWTI5dGJYVnVhWFI1ZFc1emRHRmliR1VpZlN3aWMzQmxZeUk2ZXlKc2FXTmxibk5sU1VRaU9pSXlObEZyVURGVVFtMDNhM0pqZW13NFpWbFVObk5FV0V4U1VrRWlMQ0pzYVdObGJuTmxWSGx3WlNJNkltTnZiVzExYm1sMGVTSXNJbU4xYzNSdmJXVnlUbUZ0WlNJNklrTnZiVzExYm1sMGVTQW9WVzV6ZEdGaWJHVXBJaXdpWVhCd1UyeDFaeUk2SW1kcGRIQnZaQ0lzSW1Ob1lXNXVaV3hKUkNJNklqSTFPVmxaUjJweVJFTndia1V3YmtkdFJqTjVTVXRKVmpONmN5SXNJbU5vWVc1dVpXeE9ZVzFsSWpvaVZXNXpkR0ZpYkdVaUxDSnNhV05sYm5ObFUyVnhkV1Z1WTJVaU9qRXNJbVZ1WkhCdmFXNTBJam9pYUhSMGNITTZMeTl5WlhCc2FXTmhkR1ZrTG1Gd2NDSXNJbVZ1ZEdsMGJHVnRaVzUwY3lJNmV5SmtiMjFoYVc0aU9uc2lkR2wwYkdVaU9pSkViMjFoYVc0aUxDSjJZV3gxWlNJNklpSXNJblpoYkhWbFZIbHdaU0k2SWxOMGNtbHVaeUo5TENKbGVIQnBjbVZ6WDJGMElqcDdJblJwZEd4bElqb2lSWGh3YVhKaGRHbHZiaUlzSW1SbGMyTnlhWEIwYVc5dUlqb2lUR2xqWlc1elpTQkZlSEJwY21GMGFXOXVJaXdpZG1Gc2RXVWlPaUlpTENKMllXeDFaVlI1Y0dVaU9pSlRkSEpwYm1jaWZTd2liR1YyWld4SlpDSTZleUowYVhSc1pTSTZJa3hwWTJWdWMyVWdiR1YyWld3aUxDSjJZV3gxWlNJNk1Td2lkbUZzZFdWVWVYQmxJam9pU1c1MFpXZGxjaUlzSW1selNHbGtaR1Z1SWpwMGNuVmxmU3dpYzJWaGRITWlPbnNpZEdsMGJHVWlPaUpWYzJWeUlITmxZWFJ6SWl3aWRtRnNkV1VpT2pFd0xDSjJZV3gxWlZSNWNHVWlPaUpKYm5SbFoyVnlJbjE5TENKcGMwZHBkRTl3YzFOMWNIQnZjblJsWkNJNmRISjFaU3dpYVhOVGJtRndjMmh2ZEZOMWNIQnZjblJsWkNJNmRISjFaU3dpYVhOT1pYZExiM1J6VldsRmJtRmliR1ZrSWpwMGNuVmxmWDA9IiwiaW5uZXJTaWduYXR1cmUiOiJleUpzYVdObGJuTmxVMmxuYm1GMGRYSmxJam9pYlZGWVZFbHpOMWd6YWpoYU1HRlBjbGhqVVZKVWJIVmlhVmxGTWtKSloxaHZOa1J0VGpOQlNrVk1OVGRhU1RadVVrTnFWRmhtYmtNeVNXNXBZVEprVW05cVRYaGlhMU41WW5kNmExZGpXSFIzUXpCQk9YWnNLM1pOZUVobWFVb3hhVFJLSzJ4TU5qTTNRVFkzUzJFMlZIQXhlbU5TUzA1TmVVcE9TM1ZCUW1OWFZpdExUMVJJZDBSc2VHcDVjbGxsUTNwRGMyOTBTSE0xZDA5S1N6VTBNblZDZUcwemMxWXJibEJqTDJoR2J6ZElSbkp6U0hWWGNrUkVUVzF1UVRrek9FaGljelpIWmpONlZIaERVMVIyUTA0MGVtZHFWblZwVkZKVVNVbHliMnRLY0ZkcVUweEZhMnBpVUcwM01YcG5LeTlOV2pkSlVtbGtSRkZPWWxadWNtMVFaMDl6Wmk5SE1qWkZOR3BHTVROVGVHSnBVbXhsV0dWbGJqazJjbTUwV21jeU1YaFlibHBUWm1KRU5IcHlRbU5vVVZKeVNreHpTVFJ6Y21ZNU5YQm1RMVZtZWpKbGVHMDJRbmQ1TDNabE4wbzFZa1ozUFQwaUxDSndkV0pzYVdOTFpYa2lPaUl0TFMwdExVSkZSMGxPSUZCVlFreEpReUJMUlZrdExTMHRMVnh1VFVsSlFrbHFRVTVDWjJ0eGFHdHBSemwzTUVKQlVVVkdRVUZQUTBGUk9FRk5TVWxDUTJkTFEwRlJSVUZ2Tlc1Nk9WbEVTMU5SUm1Wd2IySmFWakE1ZDF4dVdFdGxOM1JzVEZWVlZXNVRaVGd3TUVkRFMxUkRWRnB6Ym05cWRVSmhlV3BwUzJSM1drUXpWVlJLY1RCRWFXOUJjbGhWYTJoRU5HdG1kRE50UkZRM1JseHVZa0Z5ZUZkRVZYUnJOMWR6VmpGbWJFaHZjR3RpV0ZwSWNFaHlUM2QyV0daVFFraGlPVkZCYVVrMGQxcERkbWxDWmpkT01IVmxUV2xvVURKa2EzQnNiVnh1Tm1aSUx6RlRiR3BrWlZWU01XVkpjbVZXTjJSRFFYQmlhVzV5Tms5VVNERmpVMDQxVm1OWmVITjJVamhVT1RnclVVbEhMMFpXYW1NM2EzTnJTbUp5TTF4dWQwSlRkR2hqVWxoS2JrdHRaa296ZVdWeGQyZGxOa0ZCUTJkblYxWlFURFJHYW5ab05DOVJNblJ4V2tkQ2NXeFBXWFY0THpSSVYzWlRVMlZZUzFoMmNseHVZVVJhY2tOblNYRk9NWEJSUlZrd2FtMHlaa3hIWkU5RFJXaEZkbFJ4WkU0MGRXOW5iRTAxY2lzeWRVbFliblZFYUVvdlEzWkxkR2RUUldaSU0zQmtkVnh1Y2xGSlJFRlJRVUpjYmkwdExTMHRSVTVFSUZCVlFreEpReUJMUlZrdExTMHRMVnh1SWl3aWEyVjVVMmxuYm1GMGRYSmxJam9pWlhsS2VtRlhaSFZaV0ZJeFkyMVZhVTlwU2xSa2JWcHpUMGQwZFZKVWFHOVBWMlJYVERGUmQxZHRPVzlrVmswelZFTTVTMk51V1RGVWVtUkRaSHBLUWt3eU5WcGpWM013WTJwU1JsWlliRlZXV0ZKcVZGVTROVk50WkcxaE1HaGhWMVpHZVZOVlNrVmhhemwxVTFaT1RXRnJiM2xrUm14YVltazRlbVI2WkZCV1ZsWjBXbGRvU2xaRlRsQmpWRWw2VlRGR2EyTnNSalJWU0d4VVYwVnNiRk5YVG5oT1NHY3dZVmRHV2xGdVNUTlhhMmgxVTFWSk0yUkliR3ROVm1nMFUydFdibUpFU1hkaGExbHlZakZvZGxWVWJITmFXR3QyWkZka2RFOUZZekJqYTFwVVN6TndXbU5HVWxkaVUzUk9ZVWRPU1ZNeU5VNVNNRnBSVFd0YWRWRlRjekpqU0VKeVZUSm9WazlYTkhwWFZFcE1VMVJyZDJONlZqRlRWWEJaVGxWNGFsRnNZM2xNTUVWNVUwZFdUMDFHYXpSV1F6bHFZMFZLTVV4NmJHOVpibFV3VlVWd2NGcEZjelJVUjJoTFpWVTVTMlZZUW5GU1JVVXhXbGhqTkUxRVpFdGlla3BXVW01T2FGSnNUbmRUUkZwS1UxZHNVRk5WU1hwUFZrcERWMGhrU1dKR2J6SmhWRXBoVWpKbk1GTklVbWhWYlhSelYxWkNibFJzYUhKbGFrcEpXakJrYW1KWVZsVlhhMVY1WkZjMWFrMHljRkprVkVWNVpWYzBkbFZ0U2xOT1dGa3lUbXM1VkUxWVFtdFRiR2gzV2taU2NtTkdSVGxRVTBselNXMWtjMkl5U21oaVJYUnNaVlZzYTBscWIybFpiVkpzV2xSVk1rNVVXWGRaTWxwcFRrUk9hazlYU1hsUFIwcHRUMVJvYkZsWFRtaGFiVVV5VGtSWmFXWlJQVDBpZlE9PSJ9
37 changes: 37 additions & 0 deletions install/licenses/Community.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
apiVersion: kots.io/v1beta1
kind: License
metadata:
name: community
spec:
appSlug: gitpod
channelID: 259YYBILXTa30S1Soli9YcWcPTb
channelName: Stable
customerName: Community
endpoint: 'https://replicated.app'
entitlements:
domain:
title: Domain
value: ''
valueType: String
expires_at:
description: License Expiration
title: Expiration
value: ''
valueType: String
levelId:
isHidden: true
title: License level
value: 1
valueType: Integer
seats:
title: User seats
value: 10
valueType: Integer
isNewKotsUiEnabled: true
isSemverRequired: true
isSnapshotSupported: true
licenseID: 273WZe6zHEcVHGOuIAviuyGXbgm
licenseSequence: 2
licenseType: community
signature: >-
eyJsaWNlbnNlRGF0YSI6ImV5SmhjR2xXWlhKemFXOXVJam9pYTI5MGN5NXBieTkyTVdKbGRHRXhJaXdpYTJsdVpDSTZJa3hwWTJWdWMyVWlMQ0p0WlhSaFpHRjBZU0k2ZXlKdVlXMWxJam9pWTI5dGJYVnVhWFI1SW4wc0luTndaV01pT25zaWJHbGpaVzV6WlVsRUlqb2lNamN6VjFwbE5ucElSV05XU0VkUGRVbEJkbWwxZVVkWVltZHRJaXdpYkdsalpXNXpaVlI1Y0dVaU9pSmpiMjF0ZFc1cGRIa2lMQ0pqZFhOMGIyMWxjazVoYldVaU9pSkRiMjF0ZFc1cGRIa2lMQ0poY0hCVGJIVm5Jam9pWjJsMGNHOWtJaXdpWTJoaGJtNWxiRWxFSWpvaU1qVTVXVmxDU1V4WVZHRXpNRk14VTI5c2FUbFpZMWRqVUZSaUlpd2lZMmhoYm01bGJFNWhiV1VpT2lKVGRHRmliR1VpTENKc2FXTmxibk5sVTJWeGRXVnVZMlVpT2pJc0ltVnVaSEJ2YVc1MElqb2lhSFIwY0hNNkx5OXlaWEJzYVdOaGRHVmtMbUZ3Y0NJc0ltVnVkR2wwYkdWdFpXNTBjeUk2ZXlKa2IyMWhhVzRpT25zaWRHbDBiR1VpT2lKRWIyMWhhVzRpTENKMllXeDFaU0k2SWlJc0luWmhiSFZsVkhsd1pTSTZJbE4wY21sdVp5SjlMQ0psZUhCcGNtVnpYMkYwSWpwN0luUnBkR3hsSWpvaVJYaHdhWEpoZEdsdmJpSXNJbVJsYzJOeWFYQjBhVzl1SWpvaVRHbGpaVzV6WlNCRmVIQnBjbUYwYVc5dUlpd2lkbUZzZFdVaU9pSWlMQ0oyWVd4MVpWUjVjR1VpT2lKVGRISnBibWNpZlN3aWJHVjJaV3hKWkNJNmV5SjBhWFJzWlNJNklreHBZMlZ1YzJVZ2JHVjJaV3dpTENKMllXeDFaU0k2TVN3aWRtRnNkV1ZVZVhCbElqb2lTVzUwWldkbGNpSXNJbWx6U0dsa1pHVnVJanAwY25WbGZTd2ljMlZoZEhNaU9uc2lkR2wwYkdVaU9pSlZjMlZ5SUhObFlYUnpJaXdpZG1Gc2RXVWlPakV3TENKMllXeDFaVlI1Y0dVaU9pSkpiblJsWjJWeUluMTlMQ0pwYzFOdVlYQnphRzkwVTNWd2NHOXlkR1ZrSWpwMGNuVmxMQ0pwYzA1bGQwdHZkSE5WYVVWdVlXSnNaV1FpT25SeWRXVXNJbWx6VTJWdGRtVnlVbVZ4ZFdseVpXUWlPblJ5ZFdWOWZRPT0iLCJpbm5lclNpZ25hdHVyZSI6ImV5SnNhV05sYm5ObFUybG5ibUYwZFhKbElqb2laMU5TWkRWSFNVbzJPVGhOUVVNeGVXYzBOVmsxYTJ4cGVUWlhMMWRsVlM5T1ZUWkNhbXR4U0V0TE5HZ3JlRkJSV1RkMldsVnlTak5VZVU5NE1WWTFZVXBEU0VKTFRFdG5WQ3RHZHpGMk9VOXVhVmhNU1doeFZtbzRMMmcxVkRoU1pIVldlRTl4WWsxMU9EaHdjblJDYzBoTU1YbFNUMWgwVlU1T1pVOHJPR1JLVW1odWMyRXdXRFF3U0M5RWJGcEtla2hyVkVSR2VYZFFZM2xDY1ZWU1JuQmpjVkpIVVdaYVluTkNhbTVCVGt0QllWSXZWMkZuYmt0eVkwUnlTWFpXU2pkT1RWbEdSVWhKUjNCRlQzcEJkelZWVkU5UVlVMTRhRmhKUkZWbmJVOUNTVEJTZVVWYU1ucFZlbEJFU21scFNpOVFXV3gzSzNGU05HaFJOakI0UzBZNVRGUmxTbnBsVFdFeFZIaDFUaTloTUdoNGVWWnlObXhyY2pBM2VrRjJhbXRoT0VoT1FsUTJRbE5zZUZKWGRWQkphblpvYW1SMVVYZFJZbHA0YjFkYU4zZHpUMUZFVkUxNGEzUTVSbXRPUW1WMldYVlJQVDBpTENKd2RXSnNhV05MWlhraU9pSXRMUzB0TFVKRlIwbE9JRkJWUWt4SlF5QkxSVmt0TFMwdExWeHVUVWxKUWtscVFVNUNaMnR4YUd0cFJ6bDNNRUpCVVVWR1FVRlBRMEZST0VGTlNVbENRMmRMUTBGUlJVRnZOVzU2T1ZsRVMxTlJSbVZ3YjJKYVZqQTVkMXh1V0V0bE4zUnNURlZWVlc1VFpUZ3dNRWREUzFSRFZGcHpibTlxZFVKaGVXcHBTMlIzV2tRelZWUktjVEJFYVc5QmNsaFZhMmhFTkd0bWRETnRSRlEzUmx4dVlrRnllRmRFVlhSck4xZHpWakZtYkVodmNHdGlXRnBJY0VoeVQzZDJXR1pUUWtoaU9WRkJhVWswZDFwRGRtbENaamRPTUhWbFRXbG9VREprYTNCc2JWeHVObVpJTHpGVGJHcGtaVlZTTVdWSmNtVldOMlJEUVhCaWFXNXlOazlVU0RGalUwNDFWbU5aZUhOMlVqaFVPVGdyVVVsSEwwWldhbU0zYTNOclNtSnlNMXh1ZDBKVGRHaGpVbGhLYmt0dFprb3plV1Z4ZDJkbE5rRkJRMmRuVjFaUVREUkdhblpvTkM5Uk1uUnhXa2RDY1d4UFdYVjRMelJJVjNaVFUyVllTMWgyY2x4dVlVUmFja05uU1hGT01YQlJSVmt3YW0weVpreEhaRTlEUldoRmRsUnhaRTQwZFc5bmJFMDFjaXN5ZFVsWWJuVkVhRW92UTNaTGRHZFRSV1pJTTNCa2RWeHVjbEZKUkVGUlFVSmNiaTB0TFMwdFJVNUVJRkJWUWt4SlF5QkxSVmt0TFMwdExWeHVJaXdpYTJWNVUybG5ibUYwZFhKbElqb2laWGxLZW1GWFpIVlpXRkl4WTIxVmFVOXBTbTVrU0VJd1dUTlNTbEpzVG1GVE1IQmFZVVJhYjFsc1pHOWxTR3h5VlZWNFVrOVdXVEJpVkd4UFVtdE9jVll3T1VSU2VUbE9VVmM0TWxGc1pFZFJXR3hYV2tkYWNsb3hUWHBYVXpsWVdWaG9kRkpyZURObFZscEpZa1U1TVZGck9UUlBWelZNWTFaS1FsUlVWWEpoUlU1ell6SmFWVlZZYUZOVE1uUlhUREpHVkZGWFpFVmlVM1JXWW01b2RGbHBkSGxhUlhCM1VqQTVjbE5zYUVSVVZXUkVVMGhrVjJKVVduZGpWVTVIWTI1ck5FMUlaek5pUmswMVZWVnNibGRXUlRSV1ZUZ3dVVzAxVlV3d2FHdE9WR2h1VmtOek1tRnVjRnBqVXpsaFdtMWFORmx0WkVwWGEwWkpWbGhHVjFsWVpHMWtXRWwyV21wV01GSkVTa3RXVjNBMFlVVmFWbUp0ZEhWaE0wSkdVMVpDVjFKSVFtRlpNMk55V21zNWJGSkZhR0ZPUmtwT1pIcEdkVnBYWjNwa01qbExVVzVzYTJGc2FEWkxNMFpWVm1zd2RrNHhTbXBOTVdoUVdtdEdhR05ZV1RSTlJ6VktWREp3ZEZKSVpESldlbHB3V1RCd01GUjZWakJqUkZrd1UwaFNhMkY2VlhkVk1VWlJVMGR3ZWxwWVFuTmhhMGsxVFVoQ2EwNUZjR0ZoTVVac1RrZFJNVmRxYkVSaFdHUnFWVzA1V2xWWGFEQmxhbHBzVkhwbmQyRXlhekpQUlRsNlpWYzBOV0pXVGxKT1J6QnlWMWRyY2sweVl6bFFVMGx6U1cxa2MySXlTbWhpUlhSc1pWVnNhMGxxYjJsWmJWSnNXbFJWTWs1VVdYZFpNbHBwVGtST2FrOVhTWGxQUjBwdFQxUm9iRmxYVG1oYWJVVXlUa1JaYVdaUlBUMGlmUT09In0=