From 96c7fb103c8b82b4921dc0c933cedcf2d4bc9224 Mon Sep 17 00:00:00 2001 From: Diego Ciangottini Date: Sat, 28 Sep 2024 17:59:45 +0200 Subject: [PATCH] Installation with Helm and doc rework (#293) Signed-off-by: dciangot Signed-off-by: Diego Ciangottini --- .DS_Store | Bin 8196 -> 8196 bytes .github/workflows/ci.yaml | 8 +- .goreleaser.yaml | 18 +- Makefile | 18 +- ci/main.go | 7 +- ci/manifests/plugin-config.yaml | 4 +- cmd/installer/main.go | 26 +- cmd/installer/templates/configs.yaml | 17 - cmd/installer/templates/deployment.yaml | 89 ---- cmd/installer/templates/interlink-install.sh | 27 +- cmd/installer/templates/namespace.yaml | 4 - cmd/installer/templates/service-account.yaml | 88 ---- cmd/installer/templates/values.yaml | 21 + cmd/interlink/main.go | 14 +- cmd/ssh-tunnel/main.go | 95 ++++ cmd/virtual-kubelet/main.go | 12 +- docs/README.md | 2 +- docs/docs/Cookbook.mdx | 473 ++++++++++++++++++ docs/docs/Developers.md | 14 +- docs/docs/Limitations.md | 2 +- docs/docs/arch.mdx | 24 + .../01-deploy-interlink.mdx | 69 ++- .../02-develop-a-plugin.md | 2 +- .../03-api-reference.mdx | 0 .../04-oidc-IAM.md | 0 .../05-monitoring.md} | 2 +- .../_category_.json | 2 +- .../img/dashboard.png | Bin .../img/docsVersionDropdown.png | Bin .../img/iam-client0.png | Bin .../img/iam-client1.png | Bin .../img/iam-client2.png | Bin .../img/localeDropdown.png | Bin .../img/vk_tracing.png | Bin docs/docs/intro.mdx | 64 ++- docs/docs/tutorial-admins/05-multi-user.md | 13 - docs/docusaurus.config.local.ts | 136 +++++ .../src/components/AdoptersFeatures/index.tsx | 93 ++++ .../AdoptersFeatures/styles.module.css | 11 + docs/src/components/HomepageVideo/index.tsx | 12 +- docs/src/pages/index.tsx | 7 +- ..._bd169579737d47318ca1b1735db6e497~mv2.webp | Bin 0 -> 5498 bytes docs/static/img/INFN_logo_sito.png | Bin 0 -> 14463 bytes docs/static/img/INFN_logo_sito.svg | 43 ++ docs/static/img/cern-logo.png | Bin 0 -> 20037 bytes docs/static/img/cern-logo.svg | 24 + docs/static/img/egi-logo.svg | 1 + docs/static/img/logo_infn | Bin 0 -> 12688 bytes docs/static/img/logo_infn.jpg | Bin 0 -> 72981 bytes docs/static/img/logo_infn.svg | 25 + docs/static/img/nunet.webp | Bin 0 -> 5498 bytes docs/static/img/scenario-1_dark.svg | 13 + docs/static/img/scenario-1_light.svg | 13 + docs/static/img/scenario-2_dark.svg | 13 + docs/static/img/scenario-2_light.svg | 13 + docs/static/img/scenario-3_dark.svg | 13 + docs/static/img/scenario-3_light.svg | 13 + go.mod | 5 +- go.sum | 2 + 59 files changed, 1210 insertions(+), 342 deletions(-) delete mode 100644 cmd/installer/templates/configs.yaml delete mode 100644 cmd/installer/templates/deployment.yaml delete mode 100644 cmd/installer/templates/namespace.yaml delete mode 100644 cmd/installer/templates/service-account.yaml create mode 100644 cmd/installer/templates/values.yaml create mode 100644 cmd/ssh-tunnel/main.go create mode 100644 docs/docs/Cookbook.mdx create mode 100644 docs/docs/arch.mdx rename docs/docs/{tutorial-admins => guides}/01-deploy-interlink.mdx (84%) rename docs/docs/{tutorial-admins => guides}/02-develop-a-plugin.md (99%) rename docs/docs/{tutorial-admins => guides}/03-api-reference.mdx (100%) rename docs/docs/{tutorial-admins => guides}/04-oidc-IAM.md (100%) rename docs/docs/{tutorial-admins/06-monitoring.md => guides/05-monitoring.md} (99%) rename docs/docs/{tutorial-admins => guides}/_category_.json (90%) rename docs/docs/{tutorial-admins => guides}/img/dashboard.png (100%) rename docs/docs/{tutorial-admins => guides}/img/docsVersionDropdown.png (100%) rename docs/docs/{tutorial-admins => guides}/img/iam-client0.png (100%) rename docs/docs/{tutorial-admins => guides}/img/iam-client1.png (100%) rename docs/docs/{tutorial-admins => guides}/img/iam-client2.png (100%) rename docs/docs/{tutorial-admins => guides}/img/localeDropdown.png (100%) rename docs/docs/{tutorial-admins => guides}/img/vk_tracing.png (100%) delete mode 100644 docs/docs/tutorial-admins/05-multi-user.md create mode 100644 docs/docusaurus.config.local.ts create mode 100644 docs/src/components/AdoptersFeatures/index.tsx create mode 100644 docs/src/components/AdoptersFeatures/styles.module.css create mode 100644 docs/static/img/37a0d3_bd169579737d47318ca1b1735db6e497~mv2.webp create mode 100644 docs/static/img/INFN_logo_sito.png create mode 100644 docs/static/img/INFN_logo_sito.svg create mode 100644 docs/static/img/cern-logo.png create mode 100644 docs/static/img/cern-logo.svg create mode 100644 docs/static/img/egi-logo.svg create mode 100644 docs/static/img/logo_infn create mode 100644 docs/static/img/logo_infn.jpg create mode 100644 docs/static/img/logo_infn.svg create mode 100644 docs/static/img/nunet.webp create mode 100644 docs/static/img/scenario-1_dark.svg create mode 100644 docs/static/img/scenario-1_light.svg create mode 100644 docs/static/img/scenario-2_dark.svg create mode 100644 docs/static/img/scenario-2_light.svg create mode 100644 docs/static/img/scenario-3_dark.svg create mode 100644 docs/static/img/scenario-3_light.svg diff --git a/.DS_Store b/.DS_Store index 2a2dc9a32f07f7c495ebf5cab4198f259acbf168..1633454198f71a28432369f8f727336e8822ae51 100644 GIT binary patch delta 40 qcmZp1XmOa}&uF$WU^hRb*=8PrJFJ@<#M&7r7R=bpF7Xh?nF;_VfDYOK delta 334 zcmZp1XmOa}&uFzVU^hRb)n*=nJFN8_45WE!k3ITPZ5K9X(kSt}qu=$B-H{)h@iHC#NeI1Md D%vDte diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index b0c1efa3..185062a2 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -12,11 +12,6 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 - - name: Run plugin - run: | - git clone https://github.com/interTwin-eu/interlink-slurm-plugin.git \ - && cd interlink-slurm-plugin/docker \ - && docker compose up -d - name: Get Repo Owner id: get_repo_owner run: echo ::set-output name=repo_owner::$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]') @@ -25,7 +20,6 @@ jobs: with: workdir: ci verb: call - args: -s --name slurm-test build-images new-interlink --plugin-endpoint tcp://localhost:4000 test stdout + args: -s --name slurm-test build-images new-interlink test stdout cloud-token: ${{ secrets.DAGGER_CLOUD_TOKEN }} version: "0.13.0" - #dagger-flags: -d diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 3117e9cf..096d9598 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -18,7 +18,7 @@ builds: - arm64 - amd64 main: ./cmd/virtual-kubelet - - id: "interlink" + - id: "interlink-api" binary: interlink hooks: pre: bash -c "KUBELET_VERSION={{.Version}} ./cmd/virtual-kubelet/set-version.sh" @@ -32,8 +32,8 @@ builds: - amd64 - ppc64le main: ./cmd/interlink - - id: "interlink-install" - binary: interlink-install + - id: "installer" + binary: interlink-installer env: - CGO_ENABLED=0 goos: @@ -44,6 +44,18 @@ builds: - amd64 - ppc64le main: ./cmd/installer + - id: "ssh-tunnel" + binary: ssh-tunnel + env: + - CGO_ENABLED=0 + goos: + - linux + - darwin + goarch: + - arm64 + - amd64 + - ppc64le + main: ./cmd/ssh-tunnel archives: - name_template: >- {{ .Binary }}_ diff --git a/Makefile b/Makefile index 84dbae52..431d953b 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -all: interlink vk installer +all: interlink vk installer ssh-tunnel interlink: CGO_ENABLED=0 OOS=linux go build -o bin/interlink cmd/interlink/main.go @@ -9,16 +9,16 @@ vk: installer: CGO_ENABLED=0 OOS=linux go build -o bin/installer cmd/installer/main.go +ssh-tunnel: + CGO_ENABLED=0 OOS=linux go build -o bin/ssh-tunnel cmd/ssh-tunnel/main.go + clean: rm -rf ./bin -dagger_registry_delete: - docker rm -fv registry || true - test: - dagger_registry_delete - docker run -d --rm --name registry -p 5432:5000 registry - cd ci - dagger go run go main.go k8s.go - cd - + dagger call -m ./ci \ + --name my-tests \ + build-images \ + new-interlink \ + test stdout diff --git a/ci/main.go b/ci/main.go index f89a899b..1c724a77 100644 --- a/ci/main.go +++ b/ci/main.go @@ -66,7 +66,7 @@ func New(name string, // +default="ghcr.io/intertwin-eu/interlink/interlink:0.3.1-rc1" InterlinkRef string, // +optional - // +default="ghcr.io/intertwin-eu/interlink-docker-plugin/docker-plugin:0.0.24-no-gpu" + // +default="ghcr.io/intertwin-eu/interlink-sidecar-slurm/interlink-sidecar-slurm:0.3.2" pluginRef string, ) *Interlink { @@ -111,9 +111,10 @@ func (m *Interlink) NewInterlink( if pluginEndpoint == nil { plugin := dag.Container().From(m.PluginRef). WithFile("/etc/interlink/InterLinkConfig.yaml", pluginConfig). - WithEnvVariable("INTERLINKCONFIGPATH", "/etc/interlink/InterLinkConfig.yaml"). + WithEnvVariable("SLURMCONFIGPATH", "/etc/interlink/InterLinkConfig.yaml"). + WithEnvVariable("SHARED_FS", "true"). WithExposedPort(4000). - WithExec([]string{"bash", "-c", "dockerd --mtu 1450 & /sidecar/docker-sidecar"}, dagger.ContainerWithExecOpts{UseEntrypoint: false, InsecureRootCapabilities: true}) + WithExec([]string{}, dagger.ContainerWithExecOpts{UseEntrypoint: true, InsecureRootCapabilities: true}) pluginEndpoint, err = plugin.AsService().Start(ctx) if err != nil { diff --git a/ci/manifests/plugin-config.yaml b/ci/manifests/plugin-config.yaml index c096e61b..61a766f9 100644 --- a/ci/manifests/plugin-config.yaml +++ b/ci/manifests/plugin-config.yaml @@ -6,9 +6,9 @@ VerboseLogging: true ErrorsOnlyLogging: false ExportPodData: true # NEEDED PATH FOR GITHUB ACTIONS -DataRootFolder: "/home/runner/work/interLink/interLink/.interlink/" +#DataRootFolder: "/home/runner/work/interLink/interLink/.interlink/" # on your host use something like: -#DataRootFolder: "/home/ubuntu/.interlink/" +DataRootFolder: "/home/ubuntu/.interlink/" SbatchPath: "/usr/bin/sbatch" ScancelPath: "/usr/bin/scancel" SqueuePath: "/usr/bin/squeue" diff --git a/cmd/installer/main.go b/cmd/installer/main.go index 33d49302..4a245ad2 100644 --- a/cmd/installer/main.go +++ b/cmd/installer/main.go @@ -211,31 +211,13 @@ func root(cmd *cobra.Command, args []string) error { panic(fmt.Errorf("wrong grant type specified in the configuration. Only client_credentials and authorization_code are supported")) } - namespaceYAML, err := evalManifest("templates/namespace.yaml", configCLI) - if err != nil { - panic(err) - } - - deploymentYAML, err := evalManifest("templates/deployment.yaml", configCLI) - if err != nil { - panic(err) - } - - configYAML, err := evalManifest("templates/configs.yaml", configCLI) - if err != nil { - panic(err) - } - - serviceaccountYAML, err := evalManifest("templates/service-account.yaml", configCLI) + valuesYAML, err := evalManifest("templates/values.yaml", configCLI) if err != nil { panic(err) } manifests := []string{ - namespaceYAML, - serviceaccountYAML, - configYAML, - deploymentYAML, + valuesYAML, } err = os.MkdirAll(outFolder, fs.ModePerm) @@ -243,7 +225,7 @@ func root(cmd *cobra.Command, args []string) error { panic(err) } // Create a file and use bufio.NewWriter. - f, err := os.Create(outFolder + "/interlink.yaml") + f, err := os.Create(outFolder + "/values.yaml") if err != nil { panic(err) } @@ -258,7 +240,7 @@ func root(cmd *cobra.Command, args []string) error { w.Flush() - fmt.Println("\n\n=== Deployment file written at: " + outFolder + "/interlink.yaml ===\n\n To deploy the virtual kubelet run:\n kubectl apply -f " + outFolder + "/interlink.yaml") + fmt.Println("\n\n=== Deployment file written at: " + outFolder + "/values.yaml ===\n\n To deploy the virtual kubelet run:\n helm --debug upgrade --install --create-namespace -n " + configCLI.Namespace + " " + configCLI.VKName + " oci://ghcr.io/intertwin-eu/interlink-helm-chart/interlink --values " + outFolder + "/values.yaml") // TODO: ilctl.sh templating tmpl, err := template.ParseFS(templates, "templates/interlink-install.sh") diff --git a/cmd/installer/templates/configs.yaml b/cmd/installer/templates/configs.yaml deleted file mode 100644 index c2de7e0c..00000000 --- a/cmd/installer/templates/configs.yaml +++ /dev/null @@ -1,17 +0,0 @@ -apiVersion: v1 -data: - InterLinkConfig.yaml: | - InterlinkURL: https://{{.InterLinkIP}} - InterlinkPort: {{.InterLinkPort}} - CommandPrefix: "" - ExportPodData: true - ServiceAccount: "interlink" - Namespace: {{.Namespace}} - VKTokenFile: /opt/interlink/token - CPU: "{{.VKLimits.CPU}}" - Memory: "{{.VKLimits.Memory}}" - Pods: "{{.VKLimits.Pods}}" -kind: ConfigMap -metadata: - name: "{{.VKName}}-config" - namespace: {{.Namespace}} diff --git a/cmd/installer/templates/deployment.yaml b/cmd/installer/templates/deployment.yaml deleted file mode 100644 index 4154bc51..00000000 --- a/cmd/installer/templates/deployment.yaml +++ /dev/null @@ -1,89 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{.VKName}} - namespace: {{.Namespace}} - labels: - nodeName: {{.VKName}} -spec: - replicas: 1 - selector: - matchLabels: - nodeName: {{.VKName}} - template: - metadata: - labels: - nodeName: {{.VKName}} - spec: - dnsConfig: - nameservers: - - 8.8.8.8 - containers: - - name: inttw-vk - image: ghcr.io/intertwin-eu/interlink/virtual-kubelet-inttw:{{.InterLinkVersion}} - imagePullPolicy: Always - env: - - name: NODENAME - value: {{.VKName}} - - name: KUBELET_PORT - value: "10250" - - name: POD_IP - valueFrom: - fieldRef: - fieldPath: status.podIP - - name: CONFIGPATH - value: "/etc/interlink/InterLinkConfig.yaml" - - name: VKTOKENFILE - value: "/opt/interlink/token" - volumeMounts: - - name: config - mountPath: /etc/interlink/InterLinkConfig.yaml - subPath: InterLinkConfig.yaml - - name: token - mountPath: /opt/interlink - resources: - limits: - cpu: 2000m - memory: 2Gi - requests: - cpu: 100m - memory: 200Mi - - name: refresh-token - image: ghcr.io/intertwin-eu/interlink/virtual-kubelet-inttw-refresh:{{.InterLinkVersion}} - imagePullPolicy: Always - env: - - name: IAM_TOKEN_ENDPOINT - value: {{.OAUTH.TokenURL}} - - name: IAM_CLIENT_ID - value: {{.OAUTH.ClientID}} - - name: IAM_CLIENT_SECRET - value: "{{.OAUTH.ClientSecret}}" - - name: IAM_GRANT_TYPE - value: {{.OAUTH.GrantType}} - - name: IAM_REFRESH_TOKEN - value: {{.OAUTH.RefreshToken}} - - name: IAM_VK_AUD - value: {{.OAUTH.Audience}} - - name: TOKEN_PATH - value: /opt/interlink/token - command: - - python3 - - /opt/refresh.py - resources: - limits: - cpu: 200m - memory: 500Mi - requests: - cpu: 100m - memory: 300Mi - volumeMounts: - - name: token - mountPath: /opt/interlink - serviceAccountName: {{.VKName}} - volumes: - - name: config - configMap: - # Provide the name of the ConfigMap you want to mount. - name: {{.VKName}}-config - - name: token - emptyDir: {} diff --git a/cmd/installer/templates/interlink-install.sh b/cmd/installer/templates/interlink-install.sh index 0bff1517..f39441e9 100644 --- a/cmd/installer/templates/interlink-install.sh +++ b/cmd/installer/templates/interlink-install.sh @@ -24,20 +24,22 @@ install () { mkdir -p $HOME/.interlink/logs || exit 1 mkdir -p $HOME/.interlink/bin || exit 1 mkdir -p $HOME/.interlink/config || exit 1 - # set $HOME/.interlink/config/InterLinkConfig.yaml + + + # TODO download also service files for systemd cat <>$HOME/.interlink/config/InterLinkConfig.yaml -InterlinkAddress: "http://localhost" -InterlinkPort: "30080" -SidecarURL: "http://localhost" -SidecarPort: "4000" +InterlinkAddress: "unix://${HOME}/.interlink/interlink.sock" +InterlinkPort: "0" +SidecarURL: "unix://${HOME}/.interlink/plugin.sock" +SidecarPort: "0" VerboseLogging: true ErrorsOnlyLogging: false ExportPodData: true DataRootFolder: "~/.interlink" EOF - echo "=== Configured to reach sidecar service on http://localhost:4000 . You can edit this behavior changing $HOME/.interlink/config/InterLinkConfig.yaml file. ===" + echo "=== Configured to reach sidecar service on unix://${HOME}/.interlink/plugin.sock. You can edit this behavior changing $HOME/.interlink/config/InterLinkConfig.yaml file. ===" ## Download binaries to $HOME/.local/interlink/ echo "curl --fail -L -o ${HOME}/.interlink/bin/interlink https://github.com/interTwin-eu/interLink/releases/download/{{.InterLinkVersion}}/interlink_$(uname -s)_$(uname -m)" @@ -89,7 +91,7 @@ start() { $HOME/.interlink/bin/oauth2-proxy \ --client-id "{{.OAUTH.ClientID}}" \ --client-secret "\"{{.OAUTH.ClientSecret}}\"" \ - --http-address 0.0.0.0:{{.InterLinkPort}} \ + --http-address unix://${HOME}/.interlink/interlink.sock \ --oidc-issuer-url "{{.OAUTH.Issuer}}" \ --pass-authorization-header true \ --provider oidc \ @@ -112,10 +114,11 @@ start() { echo $! > $HOME/.interlink/oauth2-proxy.pid ;; github) + touch $HOME/.interlink/interlink.sock $HOME/.interlink/bin/oauth2-proxy \ --client-id {{.OAUTH.ClientID}} \ --client-secret {{.OAUTH.ClientSecret}} \ - --http-address 0.0.0.0:{{.InterLinkPort}} \ + --http-address unix://$HOME/.interlink/interlink.sock \ --pass-authorization-header true \ --provider github \ --redirect-url http://localhost:8081 \ @@ -137,9 +140,11 @@ start() { esac ## start interLink - export INTERLINKCONFIGPATH=$HOME/.interlink/config/InterLinkConfig.yaml - $HOME/.interlink/bin/interlink &> $HOME/.interlink/logs/interlink.log & - echo $! > $HOME/.interlink/interlink.pid + export INTERLINKCONFIGPATH=${HOME}/.interlink/config/InterLinkConfig.yaml + $HOME/.interlink/bin/interlink &> ${HOME}/.interlink/logs/interlink.log & + echo $! > ${HOME}/.interlink/interlink.pid + + ## TODO: if RUN_SLURM=1 then manage also slurm } diff --git a/cmd/installer/templates/namespace.yaml b/cmd/installer/templates/namespace.yaml deleted file mode 100644 index 337ae06c..00000000 --- a/cmd/installer/templates/namespace.yaml +++ /dev/null @@ -1,4 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: {{.Namespace}} diff --git a/cmd/installer/templates/service-account.yaml b/cmd/installer/templates/service-account.yaml deleted file mode 100644 index 9310ea31..00000000 --- a/cmd/installer/templates/service-account.yaml +++ /dev/null @@ -1,88 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{.VKName}} - namespace: {{.Namespace}} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{.VKName}} - namespace: interlink -rules: -- apiGroups: - - "coordination.k8s.io" - resources: - - leases - verbs: - - update - - create - - get - - list - - watch - - patch -- apiGroups: - - "" - resources: - - namespaces - - configmaps - - secrets - - services - - serviceaccounts - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - pods - verbs: - - delete - - get - - list - - watch - - patch -- apiGroups: - - "" - resources: - - nodes - verbs: - - create - - get -- apiGroups: - - "" - resources: - - nodes/status - verbs: - - update - - patch -- apiGroups: - - "" - resources: - - pods/status - verbs: - - update - - patch -- apiGroups: - - "" - resources: - - events - verbs: - - create - - patch ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{.VKName}} - namespace: {{.Namespace}} -subjects: -- kind: ServiceAccount - name: {{.VKName}} - namespace: {{.Namespace}} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{.VKName}} - diff --git a/cmd/installer/templates/values.yaml b/cmd/installer/templates/values.yaml new file mode 100644 index 00000000..1e0f02f9 --- /dev/null +++ b/cmd/installer/templates/values.yaml @@ -0,0 +1,21 @@ +nodeName: {{.VKName}} + +interlink: + address: https://{{.InterLinkIP}} + port: {{.InterLinkPort}} + +virtualNode: + CPUs: {{.VKLimits.CPU}} + MemGiB: {{.VKLimits.Memory}} + Pods: {{.VKLimits.Pods}} + HTTPProxies: + HTTP: null + HTTPs: null + +OAUTH: + TokenURL: {{.OAUTH.TokenURL}} + ClientID: {{.OAUTH.ClientID}} + ClientSecret: {{.OAUTH.ClientSecret}} + RefreshToken: {{.OAUTH.RefreshToken}} + GrantType: {{.OAUTH.GrantType}} + Audience: {{.OAUTH.Audience}} diff --git a/cmd/interlink/main.go b/cmd/interlink/main.go index c41afee3..86769e2f 100644 --- a/cmd/interlink/main.go +++ b/cmd/interlink/main.go @@ -201,9 +201,15 @@ func main() { if strings.HasPrefix(interLinkConfig.Sidecarurl, "unix://") { sidecarEndpoint = interLinkConfig.Sidecarurl // Dial the Unix socket - conn, err := net.Dial("unix", sidecarEndpoint) - if err != nil { - panic(err) + var conn net.Conn + for { + conn, err = net.Dial("unix", sidecarEndpoint) + if err != nil { + log.G(ctx).Error(err) + time.Sleep(30 * time.Second) + } else { + break + } } http.DefaultTransport.(*http.Transport).DialContext = func(_ context.Context, _, _ string) (net.Conn, error) { @@ -244,7 +250,7 @@ func main() { signal.Notify(c, os.Interrupt, syscall.SIGTERM) go func() { <-c - os.Remove(interLinkEndpoint) + os.Remove(strings.ReplaceAll(interLinkEndpoint, "unix://", "")) os.Exit(1) }() server := http.Server{ diff --git a/cmd/ssh-tunnel/main.go b/cmd/ssh-tunnel/main.go new file mode 100644 index 00000000..a4f08f8a --- /dev/null +++ b/cmd/ssh-tunnel/main.go @@ -0,0 +1,95 @@ +package main + +import ( + "flag" + "fmt" + "io" + "log" + "net" + "os" + + "golang.org/x/crypto/ssh" +) + +func runTunnel(local, remote net.Conn) { + defer local.Close() + defer remote.Close() + done := make(chan struct{}, 2) + + go func() { + io.Copy(local, remote) + done <- struct{}{} + }() + + go func() { + io.Copy(remote, local) + done <- struct{}{} + }() + + <-done +} + +func main() { + addr := flag.String("addr", "", "ssh server address to dial as :") + username := flag.String("user", "", "username for ssh") + keyFile := flag.String("keyfile", "", "file with private key for SSH authentication") + remotePort := flag.String("rport", "", "remote port for tunnel") + localSocket := flag.String("lsock", "", "local socket for tunnel") + flag.Parse() + + // Implement a HostKeyCallback to verify the server's host key + hostKeyCallback := ssh.InsecureIgnoreHostKey() // This is insecure and should be replaced with proper host key verification + + key, err := os.ReadFile(*keyFile) + if err != nil { + log.Fatalf("unable to read private key: %v", err) + } + signer, err := ssh.ParsePrivateKey(key) + if err != nil { + log.Fatalf("unable to parse private key: %v", err) + } + // An SSH client is represented with a ClientConn. + // + // To authenticate with the remote server you must pass at least one + // implementation of AuthMethod via the Auth field in ClientConfig, + // and provide a HostKeyCallback. + config := &ssh.ClientConfig{ + User: *username, + Auth: []ssh.AuthMethod{ + ssh.PublicKeys(signer), + }, + HostKeyCallback: hostKeyCallback, + } + + client, err := ssh.Dial("tcp", *addr, config) + if err != nil { + log.Fatal("Failed to dial: ", err) + } + defer client.Close() + + listener, err := client.Listen("tcp", "localhost:"+*remotePort) + if err != nil { + log.Fatalf("Failed to listen on remote socket %s: %v", *remotePort, err) + } + defer listener.Close() + log.Printf("Listening on remote socket %s", *remotePort) + for { + remote, err := listener.Accept() + if err != nil { + log.Printf("Failed to accept connection on remote socket %s: %v", *remotePort, err) + continue + } + log.Printf("Accepted connection on remote socket %s", *remotePort) + go func() { + local, err := net.Dial("unix", *localSocket) + if err != nil { + log.Printf("Failed to dial local socket %s: %v", *localSocket, err) + remote.Close() + return + } + log.Printf("Connected to local socket %s", *localSocket) + fmt.Println("tunnel established with", local.LocalAddr()) + runTunnel(local, remote) + }() + } +} diff --git a/cmd/virtual-kubelet/main.go b/cmd/virtual-kubelet/main.go index e8dc2824..a615fbae 100644 --- a/cmd/virtual-kubelet/main.go +++ b/cmd/virtual-kubelet/main.go @@ -285,9 +285,15 @@ func main() { if strings.HasPrefix(interLinkConfig.InterlinkURL, "unix://") { // Dial the Unix socket interLinkEndpoint := strings.Replace(interLinkConfig.InterlinkURL, "unix://", "", -1) - conn, err := net.Dial("unix", interLinkEndpoint) - if err != nil { - panic(err) + var conn net.Conn + for { + conn, err = net.Dial("unix", interLinkEndpoint) + if err != nil { + log.G(ctx).Error(err) + time.Sleep(30 * time.Second) + } else { + break + } } http.DefaultTransport.(*http.Transport).DialContext = func(_ context.Context, _, _ string) (net.Conn, error) { diff --git a/docs/README.md b/docs/README.md index 0c6c2c27..54f2f221 100644 --- a/docs/README.md +++ b/docs/README.md @@ -11,7 +11,7 @@ $ yarn ### Local Development ``` -$ yarn start +$ yarn start --config docusaurus.config.local.ts ``` This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. diff --git a/docs/docs/Cookbook.mdx b/docs/docs/Cookbook.mdx new file mode 100644 index 00000000..09d85930 --- /dev/null +++ b/docs/docs/Cookbook.mdx @@ -0,0 +1,473 @@ +--- +sidebar_position: 3 +--- +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import ThemedImage from '@theme/ThemedImage'; +import useBaseUrl from '@docusaurus/useBaseUrl'; + + +# Cookbook + +These are practical recipes for different deployment scenarios. + +Select here the tab with the scenario you want deploy: + + + + + + + + + + + + + +Select here the featured plugin you want to try: + + + + Offload your pods to a remote machine with Docker engine available + + + Offload your pods to an HPC SLURM based batch system + + + Offload your pods to a remote Kubernetes cluster: COMING SOON + For test instructions contact us! + + + +There are more 3rd-party plugins developed that you can get inspired by or even use out of the box. You can find some ref in the [quick start section](guides/deploy-interlink#attach-your-favorite-plugin-or-develop-one) + +## Install interLink + +### Deploy Remote components (if any) + +In general, starting from the deployment of the remote components is adviced. Since the kubernetes virtual node won't reach the `Ready` status until all the stack is successfully deployed. + +#### Interlink API server + + + + __For this deployment mode the remote host has to allow the kubernetes cluster to connect to the Oauth2 proxy service port (30443 if you use the automatic script for installation)__ + + - You first need to initialize an OIDC client with you Identity Provider (IdP). + - Different options. We have instructions ready for [GitHub](./guides/deploy-interlink#create-an-oauth-github-app), [EGI checkin](./guides/oidc-IAM), [INFN IAM](./guides/oidc-IAM). + - Any OIDC provider working with [OAuth2 Proxy](https://oauth2-proxy.github.io/oauth2-proxy/) tool will do the work though. + - Create the `install.sh` utility script through the [installation utility](./guides/deploy-interlink#configuring-your-virtual-kubelet-setup) + - __N.B.__ if your machine is shared with other users, you better indicate a socket as address to communicate with the plugin. Instead of a web URL is enough to insert something like `unix:///var/run/myplugin.socket` + - Install Oauth2-Proxy and interLink API server services as per [Quick start](./guides/deploy-interlink#deploy-the-interlink-core-components) + - by default logs are store in `~/.interlink/logs`, checkout there for any error before moving to the next step. + + + Go directly to ["Test and debugging tips"](Cookbook#test-and-debug). The selected scenario does not expect you to do anything here. + + + __For this installation you need to know which node port is open on the main kubernetes cluster, and that will be used to expose the ssh bastion for the tunnel.__ + + - Create utility folders: + + ```bash + mkdir -p $HOME/.interlink/logs + mkdir -p $HOME/.interlink/bin + mkdir -p $HOME/.interlink/config + ``` + - Generate a pair of password-less SSH keys: + ```bash + ssh-keygen -t ecdsa + ``` + - Download the ssh-tunnel binary [latest release](https://github.com/interTwin-eu/interLink/releases/latest) binary in `$HOME/.interlink/bin/ssh-tunnel` + - Start the tunnel + + ```bash + CLUSTER_PUBLIC_IP="IP of you cluster where SSH will be exposed" + SSH_TUNNEL_NODE_PORT="node port where the ssh service will be exposed" + PRIV_KEY_FILE="path the ssh priv key created above" + + $HOME/.interlink/bin/ssh-tunnel -addr $CLUSTER_PUBLIC_IP:$SSH_TUNNEL_NODE_PORT -keyfile $PRIV_KEY_FILE -user interlink -rport 3000 -lsock plugin.sock &> $HOME/.interlink/logs/ssh-tunnel.log & + echo $! > $HOME/.interlink/ssh-tunnel.pid + ``` + + - Check the logs in `$HOME/.interlink/logs/ssh-tunnel.log`. + - To kill and restart the process is enough: + + ```bash + # kill + kill $(cat $HOME/.interlink/ssh-tunnel.pid) + + # restart + $HOME/.interlink/bin/ssh-tunnel &> $HOME/.interlink/logs/ssh-tunnel.log & + echo $! > $HOME/.interlink/ssh-tunnel.pid + ``` + - at this stage __THIS WILL CORRECTLY FAIL__ until we setup all the stack. So let's go ahead + + + + +#### Plugin service + + + + + + + - Create a configuration file: + + ```bash title="./plugin-config.yaml" + ## Multi user host + # SidecarURL: "unix:///home/myusername/plugin.socket" + # InterlinkPort: "0" + # SidecarPort: "0" + + ## Dedicated edge node + # InterlinkURL: "http://127.0.0.1" + # SidecarURL: "http://127.0.0.1" + # InterlinkPort: "3000" + # SidecarPort: "4000" + + CommandPrefix: "" + ExportPodData: true + DataRootFolder: "/home/myusername/.interlink/jobs/" + BashPath: /bin/bash + VerboseLogging: true + ErrorsOnlyLogging: false + ``` + - __N.B.__ Depending on wheter you edge is single user or not, you should know by previous steps which section to uncomment here. + - More on configuration options at [official repo](https://github.com/interTwin-eu/interlink-docker-plugin/blob/main/README.md) + + - Create utility folders: + + ```bash + mkdir -p $HOME/.interlink/logs + mkdir -p $HOME/.interlink/bin + mkdir -p $HOME/.interlink/config + ``` + - Download the [latest release](https://github.com/interTwin-eu/interlink-docker-plugin/releases) binary in `$HOME/.interlink/bin/plugin` for either GPU host or CPU host (tags ending with `no-GPU`) + - Start the plugins passing the configuration that you have just created: + + ```bash + export INTERLINKCONFIGPATH=$PWD/plugin-config.yaml + $HOME/.interlink/bin/plugin &> $HOME/.interlink/logs/plugin.log & + echo $! > $HOME/.interlink/plugin.pid + ``` + + - Check the logs in `$HOME/.interlink/logs/plugin.log`. + - To kill and restart the process is enough: + + ```bash + # kill + kill $(cat $HOME/.interlink/plugin.pid) + + # restart + export INTERLINKCONFIGPATH=$PWD/plugin-config.yaml + $HOME/.interlink/bin/plugin &> $HOME/.interlink/logs/plugin.log & + echo $! > $HOME/.interlink/plugin.pid + + Almost there! Now it's time to add this virtual node into the Kubernetes cluster! + + + - Create a configuration file: + + ```bash title="./plugin-config.yaml" + ## Multi user host + # SidecarURL: "unix:///home/myusername/plugin.socket" + # InterlinkPort: "0" + # SidecarPort: "0" + + ## Dedicated edge node + # InterlinkURL: "http://127.0.0.1" + # SidecarURL: "http://127.0.0.1" + # InterlinkPort: "3000" + # SidecarPort: "4000" + + CommandPrefix: "" + ExportPodData: true + DataRootFolder: "/home/myusername/.interlink/jobs/" + BashPath: /bin/bash + VerboseLogging: true + ErrorsOnlyLogging: false + SbatchPath: "/usr/bin/sbatch" + ScancelPath: "/usr/bin/scancel" + SqueuePath: "/usr/bin/squeue" + SingularityPrefix: "" + ``` + - __N.B.__ Depending on wheter you edge is single user or not, you should know by previous steps which section to uncomment here. + - More on configuration options at [official repo](https://github.com/interTwin-eu/interlink-slurm-plugin/blob/main/README.md) + + - Create utility folders + + ```bash + mkdir -p $HOME/.interlink/logs + mkdir -p $HOME/.interlink/bin + mkdir -p $HOME/.interlink/config + ``` + - Download the [latest release](https://github.com/interTwin-eu/interlink-slurm-plugin/releases) binary in `$HOME/.interlink/bin/plugin` for either GPU host or CPU host (tags ending with `no-GPU`) + - Start the plugins passing the configuration that you have just created: + + ```bash + export INTERLINKCONFIGPATH=$PWD/plugin-config.yaml + $HOME/.interlink/bin/plugin &> $HOME/.interlink/logs/plugin.log & + echo $! > $HOME/.interlink/plugin.pid + ``` + + - Check the logs in `$HOME/.interlink/logs/plugin.log`. + - To kill and restart the process is enough: + + ```bash + # kill + kill $(cat $HOME/.interlink/plugin.pid) + + # restart + export INTERLINKCONFIGPATH=$PWD/plugin-config.yaml + $HOME/.interlink/bin/plugin &> $HOME/.interlink/logs/plugin.log & + echo $! > $HOME/.interlink/plugin.pid + + Almost there! Now it's time to add this virtual node into the Kubernetes cluster! + + + __KUBERNTES PLUGIN COMING SOOON... CONTACT US FOR TEST INSTRUCTIONS__ + + + + + + Go directly to ["Test and debugging tips"](Cookbook#test-and-debug). The selected scenario does not expect you to do anything here. + + + + + + - Create a configuration file: + + ```bash title="./plugin-config.yaml" + SidecarURL: "unix:///home/myusername/plugin.socket" + SidecarPort: "0" + + CommandPrefix: "" + ExportPodData: true + DataRootFolder: "/home/myusername/.interlink/jobs/" + BashPath: /bin/bash + VerboseLogging: true + ErrorsOnlyLogging: false + ``` + - __N.B.__ you should know by previous steps what to put in place of `myusername` here. + - More on configuration options at [official repo](https://github.com/interTwin-eu/interlink-docker-plugin/blob/main/README.md) + + - Create utility folders: + + ```bash + mkdir -p $HOME/.interlink/logs + mkdir -p $HOME/.interlink/bin + mkdir -p $HOME/.interlink/config + ``` + - Download the [latest release](https://github.com/interTwin-eu/interlink-docker-plugin/releases) binary in `$HOME/.interlink/bin/plugin` for either GPU host or CPU host (tags ending with `no-GPU`) + - Start the plugins passing the configuration that you have just created: + + ```bash + export INTERLINKCONFIGPATH=$PWD/plugin-config.yaml + $HOME/.interlink/bin/plugin &> $HOME/.interlink/logs/plugin.log & + echo $! > $HOME/.interlink/plugin.pid + ``` + + - Check the logs in `$HOME/.interlink/logs/plugin.log`. + - To kill and restart the process is enough: + + ```bash + # kill + kill $(cat $HOME/.interlink/plugin.pid) + + # restart + export INTERLINKCONFIGPATH=$PWD/plugin-config.yaml + $HOME/.interlink/bin/plugin &> $HOME/.interlink/logs/plugin.log & + echo $! > $HOME/.interlink/plugin.pid + + Almost there! Now it's time to add this virtual node into the Kubernetes cluster! + + + - Create a configuration file: + + ```bash title="./plugin-config.yaml" + SidecarURL: "unix:///home/myusername/plugin.socket" + SidecarPort: "0" + + CommandPrefix: "" + ExportPodData: true + DataRootFolder: "/home/myusername/.interlink/jobs/" + BashPath: /bin/bash + VerboseLogging: true + ErrorsOnlyLogging: false + SbatchPath: "/usr/bin/sbatch" + ScancelPath: "/usr/bin/scancel" + SqueuePath: "/usr/bin/squeue" + SingularityPrefix: "" + ``` + - __N.B.__ you should know by previous steps what to put in place of `myusername` here. + - More on configuration options at [official repo](https://github.com/interTwin-eu/interlink-slurm-plugin/blob/main/README.md) + - Create utility folders: + + ```bash + mkdir -p $HOME/.interlink/logs + mkdir -p $HOME/.interlink/bin + mkdir -p $HOME/.interlink/config + ``` + - Download the [latest release](https://github.com/interTwin-eu/interlink-slurm-plugin/releases) binary in `$HOME/.interlink/bin/plugin` for either GPU host or CPU host (tags ending with `no-GPU`) + - Start the plugins passing the configuration that you have just created: + + ```bash + export INTERLINKCONFIGPATH=$PWD/plugin-config.yaml + $HOME/.interlink/bin/plugin &> $HOME/.interlink/logs/plugin.log & + echo $! > $HOME/.interlink/plugin.pid + ``` + + - Check the logs in `$HOME/.interlink/logs/plugin.log`. + - To kill and restart the process is enough: + + ```bash + # kill + kill $(cat $HOME/.interlink/plugin.pid) + + # restart + export INTERLINKCONFIGPATH=$PWD/plugin-config.yaml + $HOME/.interlink/bin/plugin &> $HOME/.interlink/logs/plugin.log & + echo $! > $HOME/.interlink/plugin.pid + + Almost there! Now it's time to add this virtual node into the Kubernetes cluster! + + + COMING SOOON... + + + + + + + +#### Test interLink stack health + +interLink comes with a call that can be used to monitor the overall status of both interlink server and plugins, at once. + +``` +curl -v $INTERLINK_SERVER_ADDRESS:$INTERLINK_PORT/pinginterlink +``` + +This call will return the status of the system and its readiness to submit jobs. + + +### Deploy Kubernetes components + +The deployment of the Kubernetes components are managed by the official [HELM chart](https://github.com/interTwin-eu/interlink-helm-chart). Depending on the scenario you selected, there might be additional operations to be done. + + + + __For this deployment mode the remote host has to allow the kubernetes cluster to connect to the Oauth2 proxy service port (30443 if you use the automatic script for installation)__ + + - Since you might already have followed the installation script steps, you can simply follow the [Guide](./guides/deploy-interlink#deploy-the-interlink-kubernetes-agent-kubeclt-host) + + __If the installation script is not what you are currently used, you can configure the virtual kubelet manually:__ + - Create an helm values file: + + ```yaml title="values.yaml" + nodeName: interlink-with-rest + + interlink: + address: https://remote_oauth2_proxy_endpoint + port: 30443 + + virtualNode: + CPUs: 1000 + MemGiB: 1600 + Pods: 100 + HTTPProxies: + HTTP: null + HTTPs: null + OAUTH: + image: ghcr.io/intertwin-eu/interlink/virtual-kubelet-inttw-refresh:latest + TokenURL: DUMMY + ClientID: DUMMY + ClientSecret: DUMMY + RefreshToken: DUMMY + GrantType: authorization_code + Audience: DUMMY + ``` + - Substitute the OAuth value accordingly as + + + - Create an helm values file: + + ```yaml title="values.yaml" + nodeName: interlink-with-socket + + plugin: + enabled: true + image: "plugin docker image here" + command: ["/bin/bash", "-c"] + args: ["/app/plugin"] + config: | + your plugin + configuration + goes here!!! + socket: unix:///var/run/plugin.socket + + interlink: + enabled: true + socket: unix:///var/run/interlink.socket + ``` + + + - Create an helm values file: + + ```yaml title="values.yaml" + nodeName: interlink-with-socket + + interlink: + enabled: true + socket: unix:///var/run/interlink.socket + + plugin: + address: http://localhost + + sshBastion: + enabled: true + clientKeys: + authorizedKey: | + ssh-rsa A..........MG0yNvbLfJT+37pw== + port: 31021 + ``` + - insert the plublic key generated when installing interlink and ssh tunnel service + + + +Eventually deploy the latest release of the official [helm chart](https://github.com/interTwin-eu/interlink-helm-chart): + +```bash +helm upgrade --install --create-namespace -n interlink my-virtual-node oci://ghcr.io/intertwin-eu/interlink-helm-chart/interlink --values ./values.yaml +``` + +Whenever you see the node ready, you are good to go! + +## Test the setup + +Please find a demo pod to test your setup [here](./guides/develop-a-plugin#lets-test-is-out). + + diff --git a/docs/docs/Developers.md b/docs/docs/Developers.md index d8310508..61ef887f 100644 --- a/docs/docs/Developers.md +++ b/docs/docs/Developers.md @@ -1,5 +1,5 @@ --- -sidebar_position: 3 +sidebar_position: 5 --- # E2E integration tests @@ -9,7 +9,7 @@ Here you can find how to test a virtual kubelet implementation against the main ## Requirements - [Docker engine](https://docs.docker.com/engine/install/) -- [Dagger CLI v0.11.9](https://docs.dagger.io/install/) +- [Dagger CLI v0.13.x](https://docs.dagger.io/install/) ## What's in the Dagger module @@ -26,6 +26,8 @@ That means you can test your code **before** any commit, discovering in advance ### Run e2e tests +The easiest way is to simply run `make test` from the root folder of interlink. But if you need to debug or understand further the test utility or a plugin, you should follow these instructions. + #### Edit manifests with your images - `service-account.yaml` is the default set of permission needed by the virtualkubelet. Do not touch unless you know what you are doing. @@ -41,7 +43,7 @@ That means you can test your code **before** any commit, discovering in advance For a simple demonstration, you can use the plugin that we actually use in are Github Actions: ```bash -wget https://github.com/interTwin-eu/interlink-docker-plugin/releases/download/0.0.22-no-gpu/docker-plugin_Linux_x86_64 -O docker-plugin \ +wget https://github.com/interTwin-eu/interlink-docker-plugin/releases/download/0.0.24-no-gpu/docker-plugin_Linux_x86_64 -O docker-plugin \ && chmod +x docker-plugin \ && docker ps \ && export INTERLINKCONFIGPATH=$PWD/ci/manifests/plugin-config.yaml \ @@ -63,10 +65,8 @@ To run the default tests you can move to `ci` folder and execute the Dagger pipe dagger call \ --name my-tests \ build-images \ - --source-folder ../ \ new-interlink \ --plugin-endpoint tcp://localhost:4000 \ - --manifests ./manifests \ test stdout ``` @@ -103,9 +103,7 @@ In case something went wrong, you have the possibility to spawn a session inside dagger call \ --name my-tests \ build-images \ - --source-folder ../ \ new-interlink \ - --manifests ./manifests \ --plugin-endpoint tcp://localhost:4000 \ run terminal @@ -133,9 +131,7 @@ You can get the Kubernetes service running with: dagger call \ --name my-tests \ build-images \ - --source-folder ../ \ new-interlink \ - --manifests ./manifests \ --plugin-endpoint tcp://localhost:4000 \ kube up ``` diff --git a/docs/docs/Limitations.md b/docs/docs/Limitations.md index ea129510..06b99e66 100644 --- a/docs/docs/Limitations.md +++ b/docs/docs/Limitations.md @@ -1,5 +1,5 @@ --- -sidebar_position: 4 +sidebar_position: 6 --- # Current limitations diff --git a/docs/docs/arch.mdx b/docs/docs/arch.mdx new file mode 100644 index 00000000..5ad980e7 --- /dev/null +++ b/docs/docs/arch.mdx @@ -0,0 +1,24 @@ +--- +sidebar_position: 2 +--- +import ThemedImage from '@theme/ThemedImage'; +import useBaseUrl from '@docusaurus/useBaseUrl'; + +# Architecture + +InterLink aims to provide an abstraction for the execution of a Kubernetes pod on any remote resource capable of managing a Container execution lifecycle. + +The project consists of two main components: + +- __A Kubernetes Virtual Node:__ based on the [VirtualKubelet](https://virtual-kubelet.io/) technology. Translating request for a kubernetes pod execution into a remote call to the interLink API server. +- __The interLink API server:__ a modular and pluggable REST server where you can create your own Container manager plugin (called sidecars), or use the existing ones: remote docker execution on a remote host, singularity Container on a remote SLURM batch system. + +The project got inspired by the [KNoC](https://github.com/CARV-ICS-FORTH/knoc) and [Liqo](https://github.com/liqotech/liqo/tree/master) projects, enhancing that with the implemention a generic API layer b/w the virtual kubelet component and the provider logic for the container lifecycle management. + + diff --git a/docs/docs/tutorial-admins/01-deploy-interlink.mdx b/docs/docs/guides/01-deploy-interlink.mdx similarity index 84% rename from docs/docs/tutorial-admins/01-deploy-interlink.mdx rename to docs/docs/guides/01-deploy-interlink.mdx index 18b35a77..f1dc7d85 100644 --- a/docs/docs/tutorial-admins/01-deploy-interlink.mdx +++ b/docs/docs/guides/01-deploy-interlink.mdx @@ -8,22 +8,21 @@ import useBaseUrl from '@docusaurus/useBaseUrl'; Learn how to deploy interLink virtual nodes on your cluster. In this tutorial you are going to setup all the needed components to be able to either __develop__ or __deploy__ the plugin for container management on a **remote** host via a **local** kubernetes cluster. -The installation script that we are going to configure will take care of providing you with a complete Kubernetes manifest to instantiate the virtual node interface. Also you will get an installation bash script to be executed on the remote host where you want to delegate your container execution. That script is already configured to **automatically** authenticate the incoming request from the virtual node component, and forward the correct instructions to the openAPI interface of the [interLink plugin](./03-api-reference.mdx) (a.k.a. sidecar) of your choice. Thus you can use this setup also for directly [developing a plugin](./02-develop-a-plugin.md), without caring for anything else. +The installation script that we are going to configure will take care of providing you with a complete Kubernetes manifest to instantiate the virtual node interface. Also you will get an installation bash script to be executed on the remote host where you want to delegate your container execution. That script is already configured to **automatically** authenticate the incoming request from the virtual node component, and forward the correct instructions to the openAPI interface of the [interLink plugin](./api-reference) (a.k.a. sidecar) of your choice. Thus you can use this setup also for directly [developing a plugin](./develop-a-plugin), without caring for anything else. + +For a complete guide on all the possible scenarios, please refer to the [Cookbook](../cookbook). ## Requirements -- MiniKube +- __kubectl host__: an host with MiniKube installed and running - A GitHub account -- A "remote" machine with a port that is reachable by the MiniKube host +- __remote host__: A "remote" machine with a port that is reachable by the MiniKube host -:::danger -In this tutorial, we suppose the remote VM fully owned (not shared) by the user only. There is NO protection against call to the interLink services coming from the machine itself on the localhost. If you need to install it in a "multi user" environment, please refer to [this guide](./05-multi-user.md) -::: ## Create an OAuth GitHub app :::warning -In this tutorial GitHub tokens are just an example of authentication mechanism, any OpenID compliant identity provider is also supported with the very same deployment script, see [examples here](./04-oidc-IAM.md). +In this tutorial GitHub tokens are just an example of authentication mechanism, any OpenID compliant identity provider is also supported with the very same deployment script, see [examples here](./oidc-IAM). ::: As a first step, you need to create a GitHub OAuth application to allow interLink to make authentication between your Kubernetes cluster and the remote endpoint. @@ -66,9 +65,9 @@ You can click then on your application that should now appear at [https://github Now it's all set for the next steps. -## Configuring your virtual kubelet setup +## Configuring your virtual kubelet setup (remote host) -You can download the interLink **installer CLI** for your OS and processor architecture from the [release page](https://github.com/interTwin-eu/interLink/releases), looking for the binaries starting with `interlink-install`. For instance, if on a `Linux` platform with `x86_64` processor: +Login into the machine and and download the interLink **installer CLI** for your OS and processor architecture from the [release page](https://github.com/interTwin-eu/interLink/releases), looking for the binaries starting with `interlink-install`. For instance, if on a `Linux` platform with `x86_64` processor: ```bash export VERSION=0.2.3-pre6 @@ -90,7 +89,7 @@ Let's take the following as an example of a valid configuration file: see [release page](https://github.com/interTwin-eu/interLink/releases) to get the latest one! And change the value accordingly! ::: -```yaml +```yaml title="$HOME/.interlink.yaml" interlink_ip: 192.168.1.127 interlink_port: 30443 interlink_version: 0.2.1-patch2 @@ -128,9 +127,10 @@ This config file has the following meaning: You are ready now to go ahead generating the needed manifests and script for the deployment. -## Deploy the interlink Kubernetes Agent -Generate the manifests and the automatic interlink installation script with: +## Deploy the interLink core components (remote host) + +Login into the machine and generate the manifests and the automatic interlink installation script with: ```bash ./interlink-install @@ -155,27 +155,8 @@ please enter code XXXX-XXXX at https://github.com/login/device "./interlink-remote.sh install" followed by "interlink-remote.sh start" ``` -We are almost there! Essentially you need to follow what suggested by the prompt. -So go ahead and apply the produced manifest to your minikube/kubernetes instance with: - -```bash -kubectl apply -f $HOME/.interlink/interlink.yaml -``` - -Check that the node appears successfully after some time, or as soon as you see the pods in namespace `interlink` running. - -You are now ready to setup the second component on the remote host. - -## Deploy the interLink core components - -Copy the `$HOME/.interlink/interlink-remote.sh` file on the remote host: - -```bash -scp -r $HOME/.interlink/interlink-remote.sh ubuntu@192.168.1.127:~ -``` - -Then login into the machine and start installing all the needed binaries and configurations: +Start installing all the needed binaries and configurations: ```bash chmod +x ./interlink-remote.sh @@ -203,9 +184,9 @@ To stop or restart the components you can use the dedicated commands: ./interlink-remote.sh restart ``` -## Attach your favorite plugin or develop one! +## Attach your favorite plugin or develop one! (remote host) -[Next chapter](./02-develop-a-plugin.md) will show the basics for developing a new plugin following the interLink openAPI spec. +[Next chapter](./develop-a-plugin) will show the basics for developing a new plugin following the interLink openAPI spec. In alterative you can start an already supported one. @@ -226,7 +207,7 @@ Note that the SLURM plugin repository is: [github.com/interTwin-eu/interlink-slu Create a config file `$HOME/.interlink/config/slurm.yaml`: -```yaml +```yaml title="$HOME/.interlink/config/slurm.yaml" # Plugin local endpoint SidecarPort: "4000" SidecarURL: "http://localhost" @@ -314,7 +295,7 @@ Logs will be stored at `$HOME/.interlink/logs/plugin.log`. :::warning An mantained plugin will come soon... -In the meantime you can take a look at the ["developing a plugin"](./02-develop-a-plugin.md) example. +In the meantime you can take a look at the ["developing a plugin"](./develop-a-plugin) example. ::: - [Docker plugin repository](https://github.com/interTwin-eu/interlink-docker-plugin) @@ -328,6 +309,20 @@ Coming soon - [HTCondor plugin repository](https://github.com/interTwin-eu/interlink-htcondor-plugin) - [ARC plugin repository](https://github.com/interTwin-eu/interlink-arc-plugin) +## Deploy the interlink Kubernetes Agent (kubeclt host) + +We are almost there! Essentially you need to follow what suggested by the prompt of the installation script, so copy the generated `interlink.yaml` into you __kubectl host__. + +So go ahead and apply the produced manifest to your minikube/kubernetes instance with: + +```bash +kubectl apply -f $HOME/.interlink/interlink.yaml +``` + +Check that the node appears successfully after some time, or as soon as you see the pods in namespace `interlink` running. + +You are all setup, congratulations! + ## Test your setup -Please find a demo pod to test your setup [here](https://intertwin-eu.github.io/interLink/docs/tutorial-admins/develop-a-plugin#lets-test-is-out). +Please find a demo pod to test your setup [here](./develop-a-plugin#lets-test-is-out). diff --git a/docs/docs/tutorial-admins/02-develop-a-plugin.md b/docs/docs/guides/02-develop-a-plugin.md similarity index 99% rename from docs/docs/tutorial-admins/02-develop-a-plugin.md rename to docs/docs/guides/02-develop-a-plugin.md index ed35d606..30039512 100644 --- a/docs/docs/tutorial-admins/02-develop-a-plugin.md +++ b/docs/docs/guides/02-develop-a-plugin.md @@ -37,7 +37,7 @@ Then you are ready to install the python SDK with: #pip install "uvicorn[standard]" "git+https://github.com/interTwin-eu/interLink.git@${VERSION}#egg=interlink&subdirectory=example" # Or download the latest one with -pip install "uvicorn[standard]" "git+https://github.com/interTwin-eu/interLink.git#egg=interlink&subdirectory=example" +pip install "uvicorn[standard]" "git+https://baltig.infn.it/mgattari/interlink-plugin-sdk" ``` diff --git a/docs/docs/tutorial-admins/03-api-reference.mdx b/docs/docs/guides/03-api-reference.mdx similarity index 100% rename from docs/docs/tutorial-admins/03-api-reference.mdx rename to docs/docs/guides/03-api-reference.mdx diff --git a/docs/docs/tutorial-admins/04-oidc-IAM.md b/docs/docs/guides/04-oidc-IAM.md similarity index 100% rename from docs/docs/tutorial-admins/04-oidc-IAM.md rename to docs/docs/guides/04-oidc-IAM.md diff --git a/docs/docs/tutorial-admins/06-monitoring.md b/docs/docs/guides/05-monitoring.md similarity index 99% rename from docs/docs/tutorial-admins/06-monitoring.md rename to docs/docs/guides/05-monitoring.md index cfa2dc14..472beb1c 100644 --- a/docs/docs/tutorial-admins/06-monitoring.md +++ b/docs/docs/guides/05-monitoring.md @@ -1,5 +1,5 @@ --- -sidebar_position: 6 +sidebar_position: 5 --- diff --git a/docs/docs/tutorial-admins/_category_.json b/docs/docs/guides/_category_.json similarity index 90% rename from docs/docs/tutorial-admins/_category_.json rename to docs/docs/guides/_category_.json index c695e306..5d7733a7 100644 --- a/docs/docs/tutorial-admins/_category_.json +++ b/docs/docs/guides/_category_.json @@ -1,6 +1,6 @@ { "label": "Guides", - "position": 2, + "position": 4, "link": { "type": "generated-index", "description": "Learn how to deploy and adapt interLink plugins for your use case." diff --git a/docs/docs/tutorial-admins/img/dashboard.png b/docs/docs/guides/img/dashboard.png similarity index 100% rename from docs/docs/tutorial-admins/img/dashboard.png rename to docs/docs/guides/img/dashboard.png diff --git a/docs/docs/tutorial-admins/img/docsVersionDropdown.png b/docs/docs/guides/img/docsVersionDropdown.png similarity index 100% rename from docs/docs/tutorial-admins/img/docsVersionDropdown.png rename to docs/docs/guides/img/docsVersionDropdown.png diff --git a/docs/docs/tutorial-admins/img/iam-client0.png b/docs/docs/guides/img/iam-client0.png similarity index 100% rename from docs/docs/tutorial-admins/img/iam-client0.png rename to docs/docs/guides/img/iam-client0.png diff --git a/docs/docs/tutorial-admins/img/iam-client1.png b/docs/docs/guides/img/iam-client1.png similarity index 100% rename from docs/docs/tutorial-admins/img/iam-client1.png rename to docs/docs/guides/img/iam-client1.png diff --git a/docs/docs/tutorial-admins/img/iam-client2.png b/docs/docs/guides/img/iam-client2.png similarity index 100% rename from docs/docs/tutorial-admins/img/iam-client2.png rename to docs/docs/guides/img/iam-client2.png diff --git a/docs/docs/tutorial-admins/img/localeDropdown.png b/docs/docs/guides/img/localeDropdown.png similarity index 100% rename from docs/docs/tutorial-admins/img/localeDropdown.png rename to docs/docs/guides/img/localeDropdown.png diff --git a/docs/docs/tutorial-admins/img/vk_tracing.png b/docs/docs/guides/img/vk_tracing.png similarity index 100% rename from docs/docs/tutorial-admins/img/vk_tracing.png rename to docs/docs/guides/img/vk_tracing.png diff --git a/docs/docs/intro.mdx b/docs/docs/intro.mdx index b01d6661..be4358b1 100644 --- a/docs/docs/intro.mdx +++ b/docs/docs/intro.mdx @@ -12,21 +12,67 @@ interLink is in early development phase, thus subject to breaking changes with n ::: -## Overview -# -InterLink aims to provide an abstraction for the execution of a Kubernetes pod on any remote resource capable of managing a Container execution lifecycle. +## Targets -The project consists of two main components: +- __K8s applications with tasks to be executed on HPC systems__: This target focuses on Kubernetes applications that require high-performance computing (HPC) resources for executing tasks. These tasks might involve complex computations, simulations, or data processing that benefit from the specialized hardware and optimized performance of HPC systems. -- __A Kubernetes Virtual Node:__ based on the [VirtualKubelet](https://virtual-kubelet.io/) technology. Translating request for a kubernetes pod execution into a remote call to the interLink API server. -- __The interLink API server:__ a modular and pluggable REST server where you can create your own Container manager plugin (called sidecars), or use the existing ones: remote docker execution on a remote host, singularity Container on a remote SLURM batch system. +- __Remote "runner"-like application for heavy payload execution requiring GPUs__: This target is designed for applications that need to execute heavy computational payloads, particularly those requiring GPU resources. These applications can be run remotely, leveraging powerful GPU hardware to handle tasks such as machine learning model training, data analysis, or rendering. -The project got inspired by the [KNoC](https://github.com/CARV-ICS-FORTH/knoc) and [Liqo](https://github.com/liqotech/liqo/tree/master) projects, enhancing that with the implemention a generic API layer b/w the virtual kubelet component and the provider logic for the container lifecycle management. +- __Lambda-like functions calling on external resources__: This target involves running containers on demand with specific computing needs. Now these resources might also be outside of the Kubernetes cluster thanks to interLink functionality. + +## Target providers + +Our solution is designed to target a wide range of providers with container execution capabilities, including but not limited to: + +- __SLURM or HTCondor batch systems with Apptainer, Enroot, or Singularity__: These batch systems are widely used in high-performance computing environments to manage and schedule jobs. By integrating with container runtimes like Apptainer, Enroot, or Singularity, our solution can efficiently execute containerized tasks on these systems. +- __Remote/on-demand virtual machines with any container runtime__: This includes virtual machines that can be provisioned on-demand and support container runtimes such as Docker, Podman, or others. This flexibility allows for scalable and dynamic resource allocation based on workload requirements. +- __Remote Kubernetes clusters__: Our solution can extend the capabilities of existing Kubernetes clusters, enabling them to offload workloads to another remote cluster. This is particularly useful for distributing workloads across multiple clusters for better resource utilization and fault tolerance. +- __Lambda-like services__: These are serverless computing services that execute code in response to events and automatically manage the underlying compute resources. By targeting these services, our solution can leverage the scalability and efficiency of serverless architectures for containerized workloads. All of this, while exposing a bare Kubernetes API kind of orchestration. + +## NOT a target + +- __Long-running services__: Our solution is not designed for services that need to run continuously for extended periods. It is optimized for tasks that have a defined start and end, rather than persistent services exposing intra-cluster communication endpoints. +- __Kubernetes Federation__: We do not aim to support Kubernetes Federation, which involves managing multiple Kubernetes clusters as a single entity. Our focus is on enabling Kubernetes pods to execute on remote resources, not on federating all kind of resources on multiple clusters. + + +## Deployment scenarios + +### In-cluster mode + +This scenario involves deploying a Virtual Kubelet along with the interLink API server and the plugin to interact with a remote API. This setup allows Kubernetes pods to be executed on remote resources while all other components sits inside the Kubernetes cluster. + + + + +### Service remote edge node + +In this scenario, the Virtual Kubelet communicates with remote services deployed on a dedicate edge node exposing authenticated interLink APIs and its associated plugin. This setup is ideal for scenarios where edge computing resources are utilized for controlled communication b/w the Kubernetes cluster and the remote resources. + + + +### Tunneled mode + +This deployment involves the Virtual Kubelet connecting to a remote interLink API server and its plugin through a secure tunnel. This setup ensures secure communication between the Kubernetes cluster and the remote resources, making it suitable for environments with strict security requirements or to host services on a multi user host like a login node. + +For more information visit the [architecture page](arch) + diff --git a/docs/docs/tutorial-admins/05-multi-user.md b/docs/docs/tutorial-admins/05-multi-user.md deleted file mode 100644 index f79da230..00000000 --- a/docs/docs/tutorial-admins/05-multi-user.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -sidebar_position: 5 ---- - -# Multi-user setup - -We can rely on unix socket communication in order to restrict the access to the interLink API components. - -## Configuration - -:::warning -TBD -::: diff --git a/docs/docusaurus.config.local.ts b/docs/docusaurus.config.local.ts new file mode 100644 index 00000000..90cd2de0 --- /dev/null +++ b/docs/docusaurus.config.local.ts @@ -0,0 +1,136 @@ +import {themes as prismThemes} from 'prism-react-renderer'; +import type {Config} from '@docusaurus/types'; +import type * as Preset from '@docusaurus/preset-classic'; +import type * as Redocusaurus from 'redocusaurus'; + +const config: Config = { + title: 'interLink', + tagline: 'Your virtual kubelet ecosystem!', + favicon: 'img/favicon.ico', + + // Set the production url of your site here + url: 'https://intertwin-eu.github.io', + // Set the // pathname under which your site is served + // For GitHub pages deployment, it is often '//' + baseUrl: '/', + + // GitHub pages deployment config. + // If you aren't using GitHub pages, you don't need these. + organizationName: 'INFN', // Usually your GitHub org/user name. + projectName: 'interLink', // Usually your repo name. + + onBrokenLinks: 'throw', + onBrokenMarkdownLinks: 'warn', + + // Even if you don't use internationalization, you can use this field to set + // useful metadata like html lang. For example, if your site is Chinese, you + // may want to replace "en" with "zh-Hans". + i18n: { + defaultLocale: 'en', + locales: ['en'], + }, + + presets: [ + [ + 'classic', + { + docs: { + sidebarPath: './sidebars.ts', + // Please change this to your repo. + // Remove this to remove the "edit this page" links. + editUrl: + 'https://github.com/interTwin-eu/interLink', + }, + blog: false, + theme: { + customCss: './src/css/custom.css', + }, + } satisfies Preset.Options, + ], + [ + 'redocusaurus', + { + // Plugin Options for loading OpenAPI files + specs: [ + // Pass it a path to a local OpenAPI YAML file + { + // Redocusaurus will automatically bundle your spec into a single file during the build + id: 'using-single-yaml', + spec: 'openapi/openapi.json', + route: '/openapi/', + }, + ], + // Theme Options for modifying how redoc renders them + theme: { + // Change with your site colors + primaryColor: '#1890ff', + }, + }, + ], + + ], + + themeConfig: { + // Replace with your project's social card + image: 'img/img/interlink_logo.png', + navbar: { + title: 'Home', + logo: { + alt: 'interLink Logo', + src: 'img/interlink_logo.png', + }, + items: [ + { + type: 'docSidebar', + sidebarId: 'tutorialSidebar', + position: 'left', + label: 'Docs', + }, + { + href: 'https://github.com/interTwin-eu/interLink', + label: 'GitHub', + position: 'right', + }, + ], + }, + footer: { + style: 'dark', + links: [ + { + title: 'Docs', + items: [ + { + label: 'Docs', + to: '/docs/intro', + }, + ], + }, + { + title: 'Community', + items: [ + { + label: 'interTwin project Slack', + href: 'https://join.slack.com/t/intertwin/shared_invite/zt-2cs67h9wz-2DFQ6EiSQGS1vlbbbJHctA', + } + ], + }, + { + title: 'More', + items: [ + { + label: 'GitHub', + href: 'https://github.com/interTwin-eu/interLink', + }, + ], + }, + ], + copyright: `Copyright © ${new Date().getFullYear()} Istituto Nazionale di Fisica Nucleare (INFN) - Built with Docusaurus.`, + }, + prism: { + theme: prismThemes.github, + darkTheme: prismThemes.dracula, + }, + } satisfies Preset.ThemeConfig, +}; + +export default config; diff --git a/docs/src/components/AdoptersFeatures/index.tsx b/docs/src/components/AdoptersFeatures/index.tsx new file mode 100644 index 00000000..ea028f14 --- /dev/null +++ b/docs/src/components/AdoptersFeatures/index.tsx @@ -0,0 +1,93 @@ +import clsx from 'clsx'; +import Heading from '@theme/Heading'; +import styles from './styles.module.css'; + +type FeatureItem = { + title: string; + Svg: React.ComponentType>; + description: JSX.Element; +}; + +const FeatureList: FeatureItem[] = [ + { + title: 'INFN', + Svg: require('@site/static/img/INFN_logo_sito.svg').default, + description: ( + <> + ... + + ), + }, + { + title: 'EGI', + Svg: require('@site/static/img/egi-logo.svg').default, + description: ( + <> + ... + + ), + }, + { + title: 'CERN', + Svg: require('@site/static/img/cern-logo.svg').default, + description: ( + <> + + ), + }, + { + title: 'UPV', + Svg: require('@site/static/img/cern-logo.svg').default, + description: ( + <> + + ), + }, + { + title: 'NuNet', + Svg: require('@site/static/img/cern-logo.svg').default, + description: ( + <> + + ), + }, + { + title: 'AOB', + Svg: require('@site/static/img/cern-logo.svg').default, + description: ( + <> + + ), + }, +]; + +function Feature({title, Svg, description}: FeatureItem) { + return ( +
+
+
+ +
+ {title} +

{description}

+
+
+ ); +} + +export default function AdoptersFeatures(): JSX.Element { + return ( +
+
+ + Evaluators and contributors + +
+ {FeatureList.map((props, idx) => ( + + ))} +
+
+
+ ); +} diff --git a/docs/src/components/AdoptersFeatures/styles.module.css b/docs/src/components/AdoptersFeatures/styles.module.css new file mode 100644 index 00000000..d83d9dac --- /dev/null +++ b/docs/src/components/AdoptersFeatures/styles.module.css @@ -0,0 +1,11 @@ +.features { + display: flex; + align-items: center; + padding: 2rem 0; + width: 100%; +} + +.featureSvg { + height: 300px; + width: 300px; +} diff --git a/docs/src/components/HomepageVideo/index.tsx b/docs/src/components/HomepageVideo/index.tsx index 62c0caab..a786fe09 100644 --- a/docs/src/components/HomepageVideo/index.tsx +++ b/docs/src/components/HomepageVideo/index.tsx @@ -6,14 +6,18 @@ export default function HomepageVideo(): JSX.Element { return (
-
- + + Video material + + +
+ Interlink overview at Kubecon colocated CloudNative AI Day
-
- +
+ SLURM at a EuroHPC is at your hand with interLink diff --git a/docs/src/pages/index.tsx b/docs/src/pages/index.tsx index c0525bc9..235bd597 100644 --- a/docs/src/pages/index.tsx +++ b/docs/src/pages/index.tsx @@ -10,6 +10,7 @@ import ThemedImage from '@theme/ThemedImage'; import useBaseUrl from '@docusaurus/useBaseUrl'; import styles from './index.module.css'; +import AdoptersFeatures from '../components/AdoptersFeatures'; function HomepageHeader() { const {siteConfig} = useDocusaurusContext(); @@ -19,11 +20,14 @@ function HomepageHeader() { + + {siteConfig.tagline}
@@ -32,7 +36,9 @@ function HomepageHeader() { to="/docs/intro"> Try it out! 🚀 +
+
); @@ -46,7 +52,6 @@ export default function Home(): JSX.Element { description="Virtual Kubelets for everyone">
-
diff --git a/docs/static/img/37a0d3_bd169579737d47318ca1b1735db6e497~mv2.webp b/docs/static/img/37a0d3_bd169579737d47318ca1b1735db6e497~mv2.webp new file mode 100644 index 0000000000000000000000000000000000000000..40145c64c3d212113cf6def8dcd0325ef7681245 GIT binary patch literal 5498 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 T-d6GNx + + + + + + + + + diff --git a/docs/static/img/cern-logo.png b/docs/static/img/cern-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b6320c3cf8dca13e3f8731a163848c8a148cf4f0 GIT binary patch literal 20037 zcmXtA1yodBxE*@vp}RY!8|e<|2I=k&>F$*7MgalokZzC;X{13)Qu1B?_ug``T+Gb9 z_slupch27X+aJ*?$}*@(gh(I|2vts2QVj%xiUfW_!0^B;$aCnEz<=5g(a!OJNzu^f`aAE28J$QhZNNhB8+$EeG94s8& zfnPx&30DgfcMEfJFB^Ajav3=#6?0Y#1Q3WEBqu4R;k|O|@1RDsw0N^3gW4N-7H$RN z<%5w8Loha_1<5VIbs%x`Vf6&ig7SOJID_$FHQ}FSjiHy>KvY&B_BI&r8o$>bshaPb zWVR**a|gNUdNnW0Ul}#!?rl8^HtYgxx)5L2!bQm;VAy9BS7cb|U{Uhjx8I%gewkieQ@j$ibwHh6P5KByj}Z?g=c##ubr) zho!*)h6{0}$73aG%3|2}L2W7p$BMRu%CbT9vM(doB2Yq{Yw=myFbJfBkSQWjg3z@y zxaQlTamBJ^ak#m6L_&W|wClfS9zEYFnFtvwGWFeMyHpn@T3fuzDrbwbfiuSM<1}Uh zcBUA@;~S}9;aM{;zfHk^mepfX!oyisKNQ1rwun!y3{8eT4eQQ1ef%w&?&hj`lk9`~0?cb+ z^cT=sVicDirYab?XeSX9n6H?+aG48IldBUyPI!MwELS?2L4|s=n3qejPX5} zU*hQMi-NdOl4$4S%+`n8%p3~e=PnyYDNQl$#{uF8eG zgw*yDh3jlbdpzE6x&38!{Lbci==(OwXlRPa5TAt9LM1qRFatP(0&$XWj&Mqn3K$o? zOCve|0cO&G*eLm{2JTz|$!?So*Aa!r zi=l$A8W;L&*1^HZ(A`O$u5u+4jtHxkYjPc!QowxtO`<*Yq;wd1s>j7&olT|$Il5!& zyWA?vVgpYcake#1Iif$KBmhR?P_1AncJaBFtdO)Q_;k$mIcrTANDXNr;Sbxq15Av~ zJr7m(s91b_B;U+pXmWbF18^fHk~AwhKFPkX6u!b%{_X3fy>%Xj56iQrzwxM{TlEf( z5E;dQ??q=JXW;S7ls;ILGIGMtJp~UJ#ed(_v&Ux0(V~p?ZAoNd)>%yMQQ0H*Y=+Lb zFWngUkR#p)Ue0BvSOQ-@?rHE75SyQMY^bYPzzvYLX6X0=8e1H5sPM1+&Lz!fnim_N z@ws-GTZdpM;KgPS7bpw=@du^%Co1|O(Wym3!2HxoD3LF?qTkj7LGKuuZhR2;;HXfi z$j-Zv1av^t?oZK6c@lv#XSv4J2hH?0Wj~9$u_T%pZK%bL!E=i545z9ra}BZH$)Q&3 zY()enRO-?1z}3vRP`k<=hR4dGD9KSF4h6GKHjJo=SkQo*Hl3Pa!tNltA99xb{B( zOsphU4mNFixkTy&U8u7e0XajF4GE!#7P`Vd6m{Wb%E;~raW^mp3+N=p8-%Rox$OIh zYI0v3E*8q_N@X966fq?TMRSdedyJta;$+}wiy?G_*+<5gg%6)#qROE}VG{c@zRQ>OFB00o4@554T^AUD2m~kUZTLCRQZv` z+#pRAo6#OHv}H8gDiyNhy%K8fF`8%D5v2^Q=>7Y5OWC@vTcInQV0P?uhz6V;Ec0zK zOfM)IPDK;P9vG6%P<_bzlzO%-ncc?2AQ#46W2%U^%{fCHMT$1;ayzyb(%1I8BiyPh zV}a_~OLRSJWj@S?ZT~^2KXQkSZyl^(gQ#kb=aZAXXE756awh0l@1$*kvJAQGLQyBQ z<7Ft}B1YZ{A$WbTzxLoXzH!n=NP;mXSh@WXNJeVuH!w?;4C{{bQ?iKY1rBETfpAr= zWF)A5L4$i=k)Vdz(5W1IcH8zthLrGZZMMn9_HjytUgGx-zb$Z(b8XKgUv{u!?#;U< zg2X<9>ud0l5Q-l;g;_I zZG3@9q!$Zw2P?rbi<<~kmAt|cq?LMbKE;uBJ7;ofiX=|ThB24pm?$Zk*0>!O*bJrr zsa8hZzE3|KQ6Aa0lh|6!nkOly+fcR?H=^OKh|-Eqj$oes`e zmGc>Y$qzsZf8v1Uyd^JrLIlis!liQ;94iDh`#g!j-nb& zff7@9=8CqZiz$g=t88=<(ak`e%$ipE`NshD9L5MSq1}+96z&anFn0EIr(aneQy80R z@!|XLO=9XF#4$^tFkX@?PDqIOFN(V1I(ji!`dej-^sNK<&6SGE2!{2{^reMLWwE!t z&yC`t3sF&2CSF3Qbwn~6&yseH;||?9{gwnHvLyiYb^vU+mO3GJLP>q*?XC9nmb79y zNXz({_rb`so&LasJ;LIWo`Kzr!M=5ZkyG+=cAYCuV(o(e*e-ZTeDTcgc-Q$?<>V(A zU#Ia{%S%g~mkZMQe6bl?_&*^tah!0^YC;qCsjt{`@K}rRHA*AaPf#PjX1%F)L4|V{ zA9cIbhLH8DoJN!7Z?;~@;Qy2?#Tia6<8Vxg&JVl8Zk3GN(>TsA5;XFY%QY7MgOd|x z!*CtR77*}ob+*x8i2DxAuu+1#{E&GRc8cYnm{}e(>BI3f2L+gp=3nv>DUzJi_a9wQ zm{tF6A7jcs=hL~$I=H_8U`t)~eqle}0PEeTs{BEna_|dr7(SO7Z|jiP=g$xA5Q%2C z%hCWe|G5G7njlms%s@}HXZ806hV83tr>B*B5B@;~u212dnjf}Hfp4+raBMwR-b|QB zKf0JwFh6QCJIHDBtnoLqgzo5PQ6RQ2d%Z1kwhOK`Gnm1g=xuMeBo4eR#v%=wKX2a- z{F5;7A)Ok#?h^IT|FI{K`U81+$230&(3hwqj9zSyd(B z&i_qsrqDsr_ig_5oTNI{Ldv*%vf&i}y!XJ#|GtF662fElqQiN(g{R7ecSy|jEi)dgY&05QCY2e7OXQ!Wb$`ZO0qPXE%XpN^HJ#xxgu5G5OoADmq^9l zLoP(39%B9UZBM_PF3UjcDkS~R^LKeR_I43(^j$f)Y;7v?Wz4*hQ{bD2$0$#=(ySa+ z)Z)gyo5{>CAC-K|T(~7~a)wgVKK8E0L)%U#H6=o1_V(;@vEw_A@~oA|muDfPyTg&- zd4*Upfpki%zPqQwTV`z0wumQSQjK)0rWEXK>s?R-Ot^PTjfRgnvH`C1`0*lC2hOg~ z@?ctoMUywxsLfr7Q{LQ)=6iM#+`4IOqd@3IXxn#kL+Ia5g7q=*4Ie}{S~ zyavZpBWfnr-am%CKGYs+B{Kc!+-hl)DP#Tc>*jB4{hddo}&1@$^2M)Xp30 zc?}_JEziO>sp$znK6IoJw^Z+lPL}Z7>~z#{;)Joj@fl+r`><3oPccS8#mza2(6bCAK>XXCn%x=0y^ef*8_tXH zb+3!W&yI;Fg>Al3Z4>&WU`y*$jdHN^-!G_9`sc*b}MoE9%4uW z3uuHJQnwx}p3)C&bS31f61Y)fNK+x5lIX%3TE`~|d5Uc`VDzWZ?eQAskB=(5#_AFZ z^K7oB)^K_PDX{%A=ymf@d_&&pe22;kTNU9nV9HegC#vy`_t^Y(^MpeRC?w2Ll`2Un z%Y3?@gMOK4%nfaJb+)Kmhm0`5(;@)dwNeQY*N$RwMCQQs#m7NPcpFU|YU@G=hjNq^ z;=Rp8F-Z4*8L}))B1&A&(VdsE>$KvB$&Y0A-r6?L&C(8rP^>(ao$l@VT{L=!Xj&;H7AlW*a1 zy|ruX_|YMpG>RO)oe(a7aIX!HPz0GBERE{#@bTY~Qe3&)5sz4FHJN5u6USNEPip=! z66EsRYBPd$wtHlkyC;GGMjHV!M%6#I&m|rcw^8Z}&uFQsDhYM`UzER?7=N8I*Ci2# z@LSXF=!w*rF%#i^dUg%qM)(Np7}6LY(wx_F)EHOak&3PzrZjc~G& zKc>o(n9B?O7KmvIDJAW#1yX-S&q3KVrIj`SEz-o_2rlc`_^<5i`o*5s;*=P(>xGa} zV;D}yUt5~Tlrcj{9E^PxQMqd7nOAyk59`j4ith`(rC(;sIaZGkmv=!@L*nzFLy|&8 zRY2xtZ0jE&d1wKi7p-5VHe~YTT)|ziSXlBDdgS!rz9V?EtQKq^r4Ppk#tsfHz)Ub> zS2pz;SsId%#1h*x&`2>eK!OWZwnO=q6npGfq>S}`iMZzM%D>~Rv*l`dN%rsnzE)j% zn&c`u1RIIf#vZ#Wg7{MO5Ye8woY%>`Olz zOy17EuaXFE7qARAD4m>W7g)(6rY@s~q+y|*-*S=FvX=Q9`oq~OWCkk{TndZ3PD_dq z_J5FLK!gns8}FzoN*{7@zygLo{j_$xrgdSrvSj(y%iNIUR1uA5JEt@a(5xswwd6=F zM<$1mo_D!cij)=@{Vhf~yIEiQlp4xyj=h~Ds$##qd0AhY?%P^^82q_Fmsde1sZZEg(?<09?B0*aiL2^Mv@40qR!rTTQ)^TQz z*hmo8Dr@Y@E1o6I6LS7hPG4s{2meJU&-T2q{{phazO-Aa-^z=4MT%?d_@@1)mhl)W zoI7n?eif;zqoRGIdNM0e2R2`Pk?8!VC{qPF`#2j)9X*h3j#*ca9nlpLv?VLld7ug0 zY!MI3Gv27fksfeV_-~yjI0S2<&Ch7LvMmtd|GF-JG^!lDAg4YM#vq0E2CEUNgIc$F zxt+fVF2|qxb4*5bpGQP750mDr@6@j%Xcc_xe}*%eSYHbj3@DM=x2rdJF-?pUh5$ss zc+0!ck7%>Bb6*-YiweA-PO0~2J?G`IlEA9UZx6K_agL4OxE(-jgm;U5cE2ms3q?$p zb*jMn&Msr{EjXJp0t@^qGDMr&`dz^US^t7E;#W`rj0NC7*h7yPQbkQDA|tqSkN($X zoBMAZY=4+&-DwB;U?*uazz^1|qcUzv+Jh!RPI-GFw@glyhEuD9W*&mmQ zyD&t~ZFY&ruziUFlfJ7u0Xm;Q(ls482lo2~tZ-uNCFQgZSioC!+~fF_?r=-2upTso zJh|+Vx%sz@J!hamcg-pX4+dMRFTYO?04{_M?8!#^*7M@WsvV}!KevT-Ci*6ehW)-7 z6Y-<15P$w|`{}^7FaaLLhDN=>5m&qfV3i-0jE7lhLTP(ewRz&`yCu8%h8F(g$wFQ*R$@vJP<1D2DrCLsa4mvm^wZTJpcUuDnxJx@!`N0c(pTjP*~Uip5bG?x=VL z$q13XU#&O&?egq!Fukc+UM3k94`ha*ROtHH_*DWm0_BtO?Z9xTGu&484U~0&>QO}c zXvEiXKS5yCF99wD&iUxq;)rDnMEv{AIgr?%@+VDwt;7jK+q; zaEYoB==`VQ1Y=;?7NV;tLf?Eaj!9avx#y?uEd+n*`gtr{KslFt%1EQ3V)ksIA0C2P zJ^QC9jgA;~Z!pmMj|Sl?QehAhc~lyi&U+AkU7SIj_K*oJ$IhQ%P=A^~WqQrVxNse> z&bQyDE|DBMiKWh9Lu`*89UQCL{1pjaK(UJKDeUB9ZTHuC*lht+DKhplkyr0?i?$M;a zCD*B5-dCDdPcg*R4%H0U8o9+0C_gvxsF4w-gf8iu{c6|1;uyFRg8>BF8uWJ!M8cW* zC;eh}x}-M^s?C&z?(3)$!rv zLu;q|dh}DKQ-RC04xfI=oAfkmSztmAzPL!QU$VtV_{_r@M_%H$syV)^CEu(=ta7(< zKj`s^8?Hp8G~IMIYG1EbqS+D9cUZm^uBI_mS2N3%%TU}kUiQzPHPLJIX11~*RaM1p zynBA6l@a6oDScXL9!%cQ?!>2jC59W@i1qa*vAOw4Z0Ni7_`phMssy#Pp$g*Fr#U$i zd9eg^OE2xnQMqOL9RUt3v0Z%KYC(60XdWbcUDVP{9!VmB&E!xy5btq_JRibFRO5jF z;;amx!bwrDf={w#cPnIoBx2v)F`=a3AMLK3@87I8fs(r3AsMxNfjs(jCj~PTtv<5~rB=kTHZyRjjYY;eBS8M0tKYRgM}| z^}$PN0@$QS+`P6BrJs{o69)4l^?I+%{MU)7)NGUSEA8W)6SIZA1EUl$WIuW6Dl`n` z0bwY4I_V+GG;F%Ze%Huua5KcFSw^e23VxDr9J2~hEKK^wA8^PF(N)3*IeyNlLBI`|3{ZI4^+fI$K>+R2y=^{cIrm4Zz2wZj zV@b;=FXwD?y!meBWWc<~F}6C}kkf(jERGgZp9;k#f-c})2uLNsGj2Mu&)%R}C>pLQ z#=!Qmnr=ahHv5zV(KiaNcj-v#3jO#iv1`Kb*j2Nd^La4?GmI|lhT8>xo}4;yIsm6y zCz3KmRe{pDeQqdr?093i^L_CfsRhacz1RHRPt(U9kMXbC1b0c+LxqgY44l|F@Q{j?`wCht4<$oZQ>2h3VxY1`xKjI**|>isFO zP$O5eX_>I>r<%^Q0Xy%~;>qdzJtA3swwFum5!DrFU1RMJ<@{nzIc79|kRxxH{oeSy zQ4u|S(}Id!&tnZ-W+>A_@pL+V7Da2UPcXG#lO9jK7N#`b7vuluM(^H z>^X15=QcW^@0TS5RnpUGcAE ze*s#DOeCaQFFjISLs6)zASbSzQiym@IgBeFOL)U?uN@g$v6NI7oG2U3|h zkNXun`YraDv{*#l2rsSbn~~m}1li?QGpk4zvN))a7Qyg^Wh72}ojZFNJ_LVVISl)! zi^y+gLc)gCQ@m>F7&_de;>?4nCKaey-12eIh4p^(c$b%D3ki*{GZViIhaaQHV&!%B<*~=H# zl9z9qa!7ITmiSe3>`1#?3{UB%gf68+-jI-K1{r=E?@iqe6tDh|5gr3x3nYq$IzIa7 zgmP%Q)*WgC-$;ZqP@_rzqU%3H70B3Q|JEJW$`S2l_V`K^;Jzh2kXYpmK{;Gxm3k(6eGg+Hwf;)#rwL$t8mFmnR;WI%gd%?piHFJ ztf)`Sd8sWoXyr$!z@}}0mL8X*CC@T&YW-wt<;9%t1M9lT7T0r>eb2yLf-Hdgs)=!? z{$wHcFRV&IM!h+9wn!}TY@<_?m%`jnRgYs=lr19ECj9O#_#M=4&u%O~Xr8zxQq$Zv z^){j$hC=hiG_cW~!xrVmnYdG=yOLWjM6^rfa<_z2AXv-@l=A=R+gG|R&Z@3dcn4^6 zfFj2__*WKH8-*^8`K+#RD%PNUljnM zPIw2?`X(duUs0EhTO*$&g8E`i5kC!>uHVrXaq=OzvG$bRpD+6~0PXqi@Q^A))kI@A zsSDkVq)OCchDUh`F&afXZsD|MM}K&>|Q9%y_IYd%=W3 z%@PusrexY${lOY_+xaa^jG)nE7&=Ce=)|@=VpgIwlGTH-2ll>}z+ruhr%3!C(!g>AkCR=;iOlAIH5y@nN680p;&o+Dp<1+~c~?s$V3@h9EVAjn!>w zR934`_RQz>2G?L!=Z%hR?;SO%xS{x!nS3zp|3z*~eM@-U z12~I_2IKu?Sx_a|&KA=Ss0HbWoriq|nGx+W0Ocj&CIV5o7LTCy&X#|0I}uZkmm3*> z+?T#7nJULz(%^^Fb?Lp1AT;5rG?UC-w?7ZPCP@l>d#eNNXU~yGg|0LnxqSpGYi6sg zLtJ)z?URCkMs?@?u$1{GnfYN0(esZw-M?dT(z-J1?OtF+@r0c6zO31v~UONCXZr?w4Ic0d=@;`$o&kCcKjl*MW*L`TGn zw&0Vpi(=PJ5+H~i6F-RjlI343Z{Bic>8ZKHWB8W`+!wE6@{d4v0CWuMO& za=nr0)-Ha1-SR*0E;_W36>9EZh29wq>_vxH^FPAC z+eVPs@_q5JmG0)mFI4nm4xiCwTEYF>qRK;gelsjMO2O7x5H6BV&|IKX6Ifk6e-MgB zTKbQY-5F|f>RZp|8y`wU9=Hm5+t{rGwl8WH7^dZt-}}AYJt>qT&rkcra$2kW_I@H( zjC&{1T0-=@l>hlz0vd}t?Dypm9-vSJlmfne41Pt}s!%TB{asQ<&|&$v_4P2J}l+=sCp!C>ppakw<;du!wqK)efpE$lp=Pza1PH0I-`;y~ z6`_^KA5CsdB%vlYrBSVc6ZfL-cO7^!n4BH*>g;-|Wc*)fv2mpK5W@mD@}iH3A1cZz zw{Y$Q|7Oeo8{^w}zZsL0LW>DLYeW{L4V4|g5uBt46f7x^k2XUt7G?Rrj>b-5UXv>z zB8H<66+%lCN``tv31xs83)J?sRWy9BYUB}2UXJHLFP$?RP@b-07A!bCasuC)W94uk zLer_G>7xl7@|XM%>{mVFu?`ZBP|w}krkpHST7-qJU3Zw=&&2j53jA5Iln`)=Jg3f( zW#&HpFUnXQJ6^YtPRF3{siCH;204*`+rh9jlnCS4nyZplW=m5wO*y&}Yd=LJxrYG; zw#w{T*s8z^3oZ6!AI$P>irK$z)RE=Iw(~KZCh`Kt(zYd3lpMdLp3NNDK*%l?pA{i1 zDv|2tiBUhH$!biLHjSJVp}jHg6Whw34(0 zsHJG-fAXSW-VM&e=cGImS|$a0Gz#+bUH_3^0#st=Wi|QfPQkG4(JK6({2Yu3{9zlx zpUE}g)G~3wNI}5fy_v3t1T8>%eV5aK!MK^Toh`)=lm8tLDwpxQJSLJ3%mp*=yC9oP z{E|HY@ItU5>x7g9A@I4VI}{&)a_3$I+0EWDP*O>ip~$j)(oEwl%{Gw7;O880hJdQiEr+zmLM~SF)<&-YA3bqmTGuLhkBZBM8dO9~-7WPc%h? z4SAo$e@r*ID)+*#zCQKUxmHgv>+;)dN~qm>(RguVRw#NP#iA%Vc=MNI#dhPizMeK? zR+`$T;5|<^-{EjB!CZ@!06OCtdg~$yICJt5N%cg{Be+m@*VyHdYlqL~RLp3=8ITQD zC1}z7sg21Ze&*oG#{@F_*tTv;o z^Dm~n$irSOgYmEO>g2K}#szfp)na()ZrL3@ zMUM%W*lh#LK^%4|VK#o0I-Sn!QJ0OdD--kx(If@exqCA$9^v4{Qm0@O3o8`??+2upv(v{bHwCN=wr-_cUEhvy;{`?wzK5`oq|Gb@;&d zRjghV86x3Y&{TTV*KLPtHYh@Pfr1tbe#>@I-Gyl@8)f{a2?wID_{ym+rC@9sFa6Ic z#C^_;FMa5J(&emr$2h=&0leF@#{$2;M1{Mmhm~L^X@ww zMTt5StqT-z=dHFY%Pl$MH84bQPHC$fM-#)F_)Xp;)6#I8a3Tvp>kp^EN8>9e*(q{# zMU;V2FRonfPOOwrtQ4$JXJg4`t*as`qh}dmzX$gA zWDf@?PL|%BL2?Uu6f1cvc4zilYy;L2C^k<5MFho)^nX(5{|ayIb9sAt)Qw_hLppy0 zcpHl0WUI3mN_Z zE+T+8ekceaRu@=0SQA^Ba}pE0Xw96UMkm7+w0SNnqdCb@)73q1e-oh3mG_28edDE;N83-=(t`#8hM?YJ`fKa}qNP7H zs|iR|g5bZP_t!1NxmoFsX2P*cPT87i>G-vOZXzT{duL~TQ}5glV>0v231fN9a%$;4 z5X2T|08uO0m@Iy3M_pXsA=*bvl@Z8*u5H_-q7n-l1pUfEfF22BLiJbslM4~cJX3&2 zo_bCPg@cXl|I=8)H;I2V5lCNV4Ym$Cn|s3MNEw`Qs=2Z?HQH8|EZbGHz;RwDR=DRYhV_l^s^N58Ew` z@%1&+=HpUGusfoFJRdy%(`|CbGO0nmJ`--_@n{?FX^j(fodoHA&JL%fZR zvl&LbfGSaTN}bfp?f6fi@Q1|(5)Pl7?O)tiJ@d|;aDn@HIHlASLR_#Uma}$K^lY@!Pp1Cf z^DFsjNmE3mrl}$A8r$2%U$oo!ILUB&l7N5jRZ6j$+&kDeeV$J-HUQf>vkpun)t;*Q zXeBq}E33&fB!#-jf2GjY0T6rtk2=4VuUqE3jB=A5`|lKN<&xe5rNjhR9JBqppU&F5 zST+->xczeSHrKnxS+fETm@S6Ec=m9|T;SjGSta;VI@n^l#wY`I`+vK9YB<*}`4u@= z0~C+X!nh5!!h!gQveL z=HEtpS!XzLuCc8Rjlz!rpp+sst=u-79J6b0s8DS!F_BKLFaRp_P%_9&t0?2AW@pb8 zzkasZ>Qj4#xJJRKD=gb?z+(O4Fk(aAA;pC z2jgLuVE0!cUYSx$J+)UKIG64k+t|d@P{%4k5Er4r=|}aj42sARLjVZF%D~5OrB{P` zP)2Z&G;IZ{Z$qU7CR@doGt0}PP;4!YL#OHqQV=9Mx%ibjoN_3|3hp~O6$4X1Y#FFF zX%ZlLGKi=##}CGLjIn`Hiy|fC&(zaf0NL@HL100?lL$>kk6ngHb0{leqHLfQfE(j~ zPkBJg3(!knhhAYT@=#$X){knf4nLe9=}q}gMo%3l1&J|=&~Jzk%yqchu!FYr^J{<$ z;TwP?tS9_R8U3KZO_6q=*E_ax4z{2lWnaBHdRn8AV)HhnXT#*C2^cA_M+8|x=fUHjiQM7E{)23 z?rghjY-dB_8AJlaOwi4TI`k6>-mr?L&?Smx+L+WsF=x6JgqISA=>poB&rmg6?Ob_s zszZzoWeb`p2iV+c&Iz;2BTzsn%wCju*;u^N9~$>2lRF+mTuN~DHdbAheOU4%w-id; z51o9F=%RE#wo*i(;f@)RD~Y4fsY<|)QXHi(cD&g$1K?iJZo|cdHM-1X~pwM)*p2>d%l;SPf~TQi!YM>f_nX?eKTE%$Nf9$;+jjg8xB>t zR#CmzOwj&S624GIF)Q1(`M1%YXhiXx2OhiMW7ENx;q9q!AqDLG)aa^!!3vGX4$D#I z-Dc26hwoGKVQ`SHs#1o4-ZE6xCc6$H!za2r!~IKC4ERsv?72#)EUNvPqrLO9@`!O8 z&&OW1^DU;>Upm$mk>~&m#2Btrt0X#Lj9Q?i6yte2wEz)NAluoh9cgfC1V zwg=LdJSD%!>A~Y=4miV3Z0yB_r)n#y_SZ|In$aTIDSYjd_2l>fput&Jf8~C|8*eNr zd|Qk+m=J0w#Ku^GNYrp%wA@<7LY{ooISDw?))u0?eo;o`nC5qrjQ%R-1N@9U_`LsZ zBGc9*MUgNEgIK-{)BV&zV)7X(&;vUt>;LK3iDhFR}eExjbhbg!kZzYnme=ueJh(cS_JSTa4b*(9Vs_V z7q6mMZqRz44gq8H_**(qtzU>l^#3hS^{0^B#YIThbvSggN31=6F@k4pcl!mKe2ej_ z7+3%Y7?{F+Rs_4~^=d0NUPb|fqe>%xPwXbN*<*~ierJ+tN(iO>pb{Co^Y&uXzz3;u zHqk%R7b4OdA19|CQAK#4KD2C}0JctnG!A@zoy7*?}gF;;$e^QJQ)Q*$Wq#(rKTvo zSZIT5mb+?>1u4%@Nf5Fo)Y7cs_A|VQ^DVX0wqU#h4QYO@$t*Q#;;Jk7QoxEm<2{l8 zypQjYEe0&o(L)q;`PL=P@97yp*6<`kDqFPJx~u6@&q6|qhKVhM&QK3wZfaqkEulM= z{2<;Aw@sP%Pj;U&!e4g&vzBb_v89@En`v`;(xgq|{@2bI&#l$SUihUAZt~qBU^u-E zex)ZKb)bV+6`_+nd@mEI`Z_OCmqheFQvZ5?@27>3Yh6<#S_g=}{scu`2|hXJnHCGE zFJb}uJ;1>f#%w0SUWW=!h#v$2=T6b#9{HQO0ce8y@7@5GQ@@|wwn_-cPYM0!uhDXX zW~C=l+$59)17a(V?an@|U|z4x4}jXLfSITAt%SbzMY^^EupPl5GlQ6W8W2|kfQ#o_ z$cAy}GE3EeUhp?B=6?k!jJk2mg7V#VEMB9ZrhI@Kw-I@`e|c6usHqG`d+T-7HXw

(0#aGLy@W+QjuI4e*3V-CVtBND-SR)#D$nqU+VBu9fAcNGy#I z{*B zl^|qY4lSlGGlPhLFgb79&Og6Lw3!iGv+E4mxi?N7&fi_iopFd(@dz?yS6qO70g;r$ zna&0|eT|CZhG%aKK?`WRlgwX`&EptCDDD{D2C!Pv_Yn$|saIw_>*fFLuQYL6SA|!E zsffAhXh@PGBY3K8r>u}XAOad`EbVhv;>|EaQDzlFiQCPbjHIOkZQED{N;*?QS-9qV zJoDis5U*zi%S1C>zGUV=9ZGE6V6QK#JlD|PP~p2FCJereMcEl^f9#mNK8Ofp9bkL; z9*m~fbzm`MQY})& z1u|^0M7@Jn3WSTv(T(8%U;{s-T)40E4D;Z5O0uxsrWoTo2k7IX3?QlaRpfSf4rY(r zocSB{QFYq^L>BBA%g_5{4Z~X$cM?0C(MyfCS%|-@zp%b`8IG`DoJR0p1Y>7&L>2(0jq0{nkddc_m!k z7WkPEYE24^LVSYeiEy)@7Y+5)_z{Le7I)jt8~^=sn|}VZ&k|z$6(nk!YibwL@akf& zz%-L6MH%_7IJy>ZRY@>h5(C%p`*M}0=C2H(8P{0=g#twqg~PlQ`6~W zk`KN~*O!YCNijk;FA~r%Ermqr=dMS|OfpUO4v@9YP!;8Sq}n5{s%t91|FylyOA+C+ z5*~Fh-CaGra!DWS|CfXx7K+3#HHtbC(4^Doz3?%&RnIv$V;C`=_9jRO*t&^6i%w_Z zlO{^Sw(aP+-p z;EGU##HHh)b!I*eJ?7qUx(L1G4AzwNwO6cAOS&ewD+&G>F9UfU#1}?FT~~c7xv0B0Ku$56K9jmmx@m zWBQ$oth%7d|9qu#q}Ol2d#=E5_^}D`Qdxaz=k-aN)-P{|M|Qg*pN5@ihc2Rn5bC#m z1lIDl#c4=;9vy~5?)vLTS=U0qcJDY35rfQa3+rBkd#I=Rud%L-`+wh^VkoimasSriBdwZTiLin7L@&Zg4jktE~SGkBLG$-hbQO~?mKV> z?BKNULyq&++^D(IGH8?$%&E`u^aO$ zaICkT@Y5pbdsiYY&t}5{t^wsR^0jEF+Hv17d}#@wO;sypVERC(nescDA$u5!vH1a@)2GI?gx=B-M*i7>*juNsuh4!5P4xBuIYyy8udP zJm^751?#hN7?Oqc#*`B;BV+1(NBeGY&l_JPRMnzPB;TYs;*#dzXee;_=LoNok@bW! z3WWdIq=iDke@&_aKVhMQj1-CqC{NiLuU^W$HSZ|*znfe(1sW07QBolivv0C*xoF@JB)=&H z4L8LXjh3BQO>dBCm(3IwV84o=tJ(aC*4d%Yt^%;@dQo3H4{x${-j)zEanS&0iXyw$ zqhT&R6wSXbIYX!_H&w#h7~ovG59xsF0C;Jka*-F-J+*mk)Z~)>? zaA9)o+#_`+UGEy@tY4Italh_P3yLP=eb`GNe)t#xwCk`RL*`Vj8-RXA+$x>*ny(`b z`Sa(GfOZS?FV*kkc?hPYOP7f*#feaM(^i$4CWTT4SaG;wQhLsOl?b}*d*1l{*6Ab_ zMfrBrBw?E3%QO}q(yYzN)|@$p&qzCr)p6<#IKxpyGG(5i$;(|&qXXL7AY{UyKx(%U z7sE_N}i6m3}7!*+(D!y-nbp7l~apfyV3>dLzafu|d4PaKb8 z+;{e^8Kpn+C0#q3gr%|Pq2i4yWZ!M>YsBE!lD}cj8=>@hwX~YR&O63GmbL<~C~U}T z-B$by?m!ND<2*4AB!xKrPYc%`4`ueohndW%!MHZ0yfYZ&I!Ht^7#SidTVh+rVB}g6 zORdXX3?{}Uttcbf6k)qk+Zvh}m(8Hm?qW=AxfCU}R@CpjKEHp@=bba>JhyYs^L(H0 zNd3+I*?!xo*C8MCFYCj>veg z(z)q)B`Y?b%j*Yx32<-bTSR5yr^jOnb^qNN@=mS(A;Qi#=yhR*{GTpl)Z63G4LjPl zTYbAjuP5G>EqB*+f1i@s)8eq<=#)n$xP@m_bvZos=lY}f$TEmxT&33MwJ+dZgO1Zq zRNA^)!cpK-a$VE3Ss#WEacUZ_FMU@0HhTVHK-Zy;ns)7-ep0&!VSJ7eBY6Mzx|W#- ziSi~UA-2;!VY!-Edl`Eyv0ON%Q?@f7)1=-|YbLhGRD#>+@O<1wM!K2UMlWz0+)u}i z;BLjvzdBQc?eFN2tC)30CviX5@}6G}aC6u#D!QgYb1WR!p?li}PWuO*z5LIAhsrT+ z)V>rN&36jo6%s!eHHleI*o|`ujb?Kk6@-bGzFbghip}3O@QP5x9~s*D5ZnYATEi6dhk= zSX&H6mzK|!9Mw39!&a2=cI-FleQA@_2+;jLevS(a#Jz``icpW3`_)I>&vq^e+7sd| z`|_&4_eG^|_-df;v(X8|UFY6-a)%t3->Eg!9Xw(=D(R;!H3q2 zLELx3IAJtYc0crrH0e)GbkcGQ0U5kCyP{Y8aVsSG4nVhTTSogWMYP_H(-V49X|#J= z-YCeUTAc@8w@@>{3Po8`$#3rtj*XvRT=wbEPc?bG`Pc$LF^Xnopn>ezLBiO;z#e9R zHot9vo9|T<5FZ0BzY!T#!-3se&h~y6WiWpMstn*F50rSmm~Q-cR^#lIhGw1|6ed2{ zyu5WeX{vi+o5D8C==+e1AJCXLJ|C%wl`O>OU~&#z?%%tzkagp@@CHWq%F9DTL*bn5 z)z0R=(ZvjE@~%i*w)i80t-o?xF;JjWC*O)3d!(@@o^TAm8&kjEQ9DAnHLR;0aVGH5 z)xGPS0qHV3@1^z3NKDv+O$_^RJ$~DXUo6r$ycV7tTcj$h8=27^0fCHe0V#nqcfu=C z%@KM|`_%MN6nM_KBX*s^pDR-SfTh-NeFssteU$a`2C zF6vCFkUkS#$K@bn?Anoo^fDxT`t$Jqz!pi^2aS7qay$FUBjol?io43oik%gu=+X|5 z2|*_rrTPGCw}pKP66185GA+%)K~SMMuEalhU{SRYhFZRUR&xVbn-iwX4Qo|<-|)hx zmY>v5uefYa`yt)e&R<)qWs6rI%!mI?U`K`H(dWysS|Nv==ip873lsCPTwm<(`QARR>D8m+ufoKcQa7&Wjv z0e-LtsxtR7539-Ymm(M`ls&6frG>g{~tP1m$iC6?*Bz+-SMi#c_M8h~j5sK@U{smir@84*WM zlJ!7h$b0RKt*d8xAKPF`6*q@ZEQpdEZAxv9(4ylQ z3On!CVA3>?UO^MkloIj8l`tJTj=#m>9gp;>cGMUQ=7T)=kAAD6^FN1;O8K`X)?CdL zjy@`Vsb=ZTrVsPM02319EQzm0vFC3?27a*q4sV zIbjGGA%>bp1<;dv~oZ~f$-X7&@0NCLIrc8JiXL> zK*0w@!|;-s9ZD~IARI%wTrsOU9Jv`Du2L@?KL)mtiW(qG|NXM>B@ z=XMco=OTmp&SV0Dn>=--Xn*9X3MiVX$FKENRixCl?OD1XnnxiuZd_DSi8xLpqO&Lb zPs!?UvRcfXOTO06|>xM{zrnA{dklBTSMk-i}_91=-yZ08No$DHV&RX z%$uGCG^o9KfQGUsF_1j%2jRv3JUDp&drz{00Qsz z!6N3afgxKk)R1)j=ur+h99JsjW}rJ7$f2x6-xF&x6+i+>cPpTDMdx_{2d7UEXXg&x zDg?0R98K0RI9QajgLcORBNwoa!* z&K4GA{ZT1L1nFJ9Bk<^u#@{cE+^yIFwWQ3RU!TB+jxlN6NXDQ*+s;#>3Q1lA)YdEx z3mG{@5<@urxmO_>$yQU4DUK|B*ceTl|Jf}pxrR@TDe65?rgKu_1Sh$CsHbf)D4IOK zpBm%$4_*dJ?Wf=p2F}JD%wdFtEnO=IA6C)QE8@VbRdZOcx>!#^5=%0InX+p+7)X#8 zgSVtRCc1C_2~#cbP$l;yqy7Yz%f~A8SIR-pA`oqbyJPtCkyuMGEjBx^J0-%|9M4IN z);=jQAWLp-%Z4_TeGkjUf{qXkaPX)cl$*`(d*313rM32K{gZHcmSMtj6Wlt%SbMsZ zqV{AQd@V?!GoOu6UIK@}3{j=um0wBzbthOd;}UFaAQ-?e+>7F*8xwR#LT;5NE9xyQ zF~f8<-Cw4|A4uR)i*1s}&yC^bGDL2+?RIC!DlO)5u7q5E&01GA(hO)0Lbl|~14apF z+*NfAmAWrs-LZ<4jV*a{EvT3UZ2=(zxDKukU5Z!zOm+Ysk<62C{0&Oo2YIU-YlHRh zbwOVi|8PgM0O*k7b*?VbJ(dyzEC~dy!rJ@rcFBa+dvRQI=5d;Y@CB|ZMuOeiSiu`m zWK#78bG%g9ne)BFn*lXiHt=MC)q+C}K$PuU%|z=JoQ?gjJ_lxVqfz}mo7}^4{s(c4 BV21zz literal 0 HcmV?d00001 diff --git a/docs/static/img/cern-logo.svg b/docs/static/img/cern-logo.svg new file mode 100644 index 00000000..8633e877 --- /dev/null +++ b/docs/static/img/cern-logo.svg @@ -0,0 +1,24 @@ + + + + + + + + + diff --git a/docs/static/img/egi-logo.svg b/docs/static/img/egi-logo.svg new file mode 100644 index 00000000..1dbc7b9c --- /dev/null +++ b/docs/static/img/egi-logo.svg @@ -0,0 +1 @@ + Group 79 \ No newline at end of file diff --git a/docs/static/img/logo_infn b/docs/static/img/logo_infn new file mode 100644 index 0000000000000000000000000000000000000000..83fdb01a80f91ec817777e82c8ce6c9b20e03c00 GIT binary patch literal 12688 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 E7te2v;{X5v literal 0 HcmV?d00001 diff --git a/docs/static/img/logo_infn.jpg b/docs/static/img/logo_infn.jpg new file mode 100644 index 0000000000000000000000000000000000000000..14dec9ea627271703107570eacd8f6375a05524b GIT binary patch literal 72981 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®BrjJ0zN@c1;Z!9Nl)-$+Myow~5qx5Om# zcv&{_EG}OhfS%nhc5YqAjO)hHxF|=$!lJXoJgOfK6VS9$7mk+)@BBMXE8@GL!-&sI z7MG}-e|e5Cz2C}oMdJ^0HA_J0;h9tRQ8N|1Ddx+shWzDRz2?dW`}2;Z9kIr#Qw`?t zEv*-B(S>=0A;9*%;*X8ARQC#&E+}j}ofh%`(-P7fT6Na?mqXZxfL7&D z)>Tg{7v?85e(;l<4^>?NygAg_pirgOx7cWw>^z)2AnfWpBGDbL=WE%r=1oZ%-z(){ zVDHWb&|0Z<>elI|FPb`~ho!0g6SwXyt}gs?aPOTQ-vXP&0&si(opm#{9IYQsV)5gA z35{*bw~|@c00l@S$U>DS+i>|W050;2$`HZog{7UA__jMUW;d3&AS8gqKp9Ns)<~*6OfaxJ!b#pK3x#g4Svr;f^hRM_-d)CU)gf52qD0TfM zFWDtm;(Y~5_N4XTkshI0Co3;+#tYCd-^d9t`%ecRcV_zIL&kWvANcf9`FjJdC=#b` zivP?z*}7;HU>d0AybAz=YeQ*N&%GY+EA@E23Wf(n?E=i697$XM=$}bcW8Fl}yLrI- z-rQ5(VK(eb)*EJ;10qY3cor^OV0*ivTAn7lb0~Y|!F!%cV*MT7JM_Y2s8JnK{kRfx zsN4cvyZ~`+$#NO`m1S`Ez6ZxC@k-)mkVdsBB+&(XKkUFj_|$r*9mZ4YmXpbKuc1ET zbNk2+7~dbFNDe%>YJd4MQ$Ry8Z9 zxaG$Rj+NE4J9#B>jQF0}&;Z|-y*>g=di!THp^M3BMFl4+W>?#=>(o{=)6mkGI$`zT zO90F3N2UPq4khu9Hp`a9=KHDOj@Q9D_}Aa4)w8<*h|BZ&jHszu4Hiff z$95Z345^Dyz?ZWVw_%5uu$!m8QSLEIE1l|m7yBxfl>3)+h1+q{YJX7wpqk@-`F0+C zK}o@Wg034arzW5)3RaMne0xS+6Cnvf^|H!G<;-}2sK2#KxbGA%JVb6*Ly{H zxR~}5@OiYN2iE<99dyQXyrqJVsf3P9Y^O?X1dI79Is#PAv4-Ph=snjH z7M7%tH$TAZ(proT6owos6R~yA5giDYbFt>MY@hd1)Y0yLs6CHu5iug4 zjU`R)IgH3c4XZ>1@0ONq1WEOjkyoZ|JJGQG5sxaAjf%aUN$I_jR&k_>zh?KUB&98L z4sN+Z7zvD9BX2KH{8+XnDNnmM5}GiP@5n*##tzUgw5Fz4W~3 zK&Wh;y~DHS3b4y1?kJ6OsSm%n-va<=crT>HOs2fDqs1a5tK0JERWn8u%i!M3YBjZb zV;2toUqzjH>OS&y?9fFI>lA{H`RGlf2K`e}0kUesXSxu+4QY`Lqp3YtU23PBVg>uJ z4TJTE*F@h5iNTziQId|1#zp0#JShSG?tN3((k(2e@-i+)>@IN^z;8@a1T?sP9-M#s zAz;FkSWt4eF2dCxL^wI3K z*Bf6qxu}V~(hnm31U*2Df6{a_)dMH4)bEF0XQg7Z_a!dGteWWJ94C2wMg|OlgLI?i z9zs8+2|^#%n|rw#Y)S1ls}sw^^vw7w5=BVjg&{_IyyMZS z0)9+}P*>8ztw^AXgIm{&9>-+1h)=9KSdi%dK#|>`f(l05M$=t{jCAhVF130TsA6_;@!Lrlb30TqpB@sE;q#;hu&MU;@Una^w6HGZAY1(mB zPD*(vGv|JHU2OqGhaBH}BxZSDnaDm!LsrBG8_^Njl)6Fzdn_hDXI2v&R+66S>jvvD%qAp-7_q7UfTctPR zSHZsg`-=$?b+4W@vzEKhQwabV6^$`MVuG}lj^NZwW~Asb(6d`MWzKvuUu$sHVnpl6l}Jw`D1NrbCDaR2JYb zS1V^ugdB5>5hc;FQs(GL&sr`+0TGn#6HT=gg|e<7b7K;~;HTf4@NXV$wL$H8(FE>I zowA3o_#gK&Z?)uaEKuHjBg-!iGy{J5W9M*+{|}g=Id^mW?ibS(^@|Yu=Kr!+x`{MW zXq?#^TRC<65of>3DNp2BegAUy_2_A}(^Xp!fkpr}qH7BTQEV3_u7I)J5`^$XuHf}l z6;0%7=$h+_TU0F$mG#Hhj~*aUSL0ki<$u}?Ped+J&N2@3pEvy!@ybp*I&pEL(Vi?p6}}Y$wtw z9yGKv@u(1-A5-4zE}OM?a7C0!3*4{0=Gtauzcy}60pw^SG^&0!V0-H~Hm}2Sn-3OB zJRrp}65>y)C=+R8HUUvWxOSEg%J0-1CgDBfFT7Fyw6ieLx>X8WGw4yj0-2t0rLD_0 zRR6&Cu^zyd*u}@qpWxw00yfd_W?tKtw;z$Ia~$gbG=y}??ajoGKImN1Qz*cV*IFp! zF!N3^Tof~f#Y}7G>qh}>4y7e5{ptEcYF@VGQ1Twt4A1r@^cx%T`CEb%x-Ulqykr3f2B?Pp(uC1CzbTnx zt>0*Nfj*alx&L_8*<<`)8P4W4m3mS!zxC4z&WQz4_8=g{FEM(nDYc2vMu$tNgo~(}VQW;bx&NU3ZWpwrbA zh)8Ng<}`}o6kO@hC^f3#wDS*X*e{9N-}Q2E@IB@KxbOPs#s$ zS+^^yL{#i-*G~=Kl$&&hyEMg6By2H}p@=k`L0^9M7XE;DT=`&Zsh%x7T1)9zq+DlD zGLBE8R8`vMo<$6-KVmB8)X$vDG8_VmNDcvk5*Np!8S|P4Y(@`1SNInnd**`Jrikq< ztLwL;-p#CJjhO`c+IF7&gY1iQ8wLFE*%-aIM2ALAx0N%h79)d-M0~yr%Kd#4GWumx zqRRMuXd#*KO~}J%Q$tBA9>cC1AI^i3!bk1}UFX9Bj>l$C=UT2d=%@eIA7Qil`f^Vl zS!S#EBT+!Sp)Z{adngNYe?n>f?70_MLTn7er6(i*BUb$9h3QH^aX9J})_n|C{7=QXspo0-bD^hb!qSdpLC;a5CXJb>ew}g0^&ljZ?BwtA@x2 zqy+&~usK9IUYOC3UD%bWaz`wUsxAs*nNlD z?w>6D)%8hW`B)r5{;P2UN<4#FAg9jF#wfkt8;)a}R11f{zq!3QB?XG3%yi<(bZ@p$QDJp?2Q_WKZd>^mmZG zSQliVT1K@-bOA9j#hU5_Ai6mGX6B$K$qb`9zX}Bck=4}k*d&+tK=-wOv01nG=%2p|lR0RzS$Hv^(i(-@%47zxk zghV3JT|iUunyY0T6L(f4>PBQZuLOUW5?;qG@2x#j$1*Xc@m?*EWNrKfC-+o}O2h19 zmQ(wOk!qM82GJ*a{n&3`D)`IK&(MEl4@jK9sQqcx|IQ+=qO4&0=^x~*j-m(Pd!esJ z4UM{$2YpimzO|KR9IB@)je}8{gVhs@4(nL8%W7$`&-HLOebXYEtKV#rqU2Lgu2$|j zW*waE3|jKEmMNUn5Y7H%>y)T;RtcFyj){fuDUZgS#DS|6=dao$$+xg6L-CH#onme6 z>fXC%(0Z)#a%F_d?-W> z8<9tca%%R^5|j)G_;3Wp;_@og-q?-JorkG}|=wxq*TBA@eFdDf<&e3lK?fg9rE zgC)gNXeJj!%Yap(E|jxQOyHbjx73tM==r^iSpSC_$ltaxeBf%qhC}JcbWt#NsjTY@ zg*$btD$QEM>O9-;lkWF9@wsWgV-!nnX%?6QyKR-L7iLvLhFir?oB8tY_Y69 zAmVcVVC*+76Rnn+2#a}|(`Z~**Pm=Id5g?(j)T*KXP9+w~n(UPU zyDn^pR>Wv;qXd(+hbakq*jVPlS{xqa?=22nd?b06zp#q<=hflR@k#&tq#5%S5eqcA6u)*dOZP=p1nj1BvhAj_V&Ri zqx41vVrN(UOpC%*Cv31z|7^^ybdZ8z(-5(}>c9`fd%lqWB--axa>7M|mWlMP zPa0$$Y6-Gx$X8*#dP${US>$jajAes3n)>ka!!N^phF7#K;XWcH&s#SP+YuXX1da6w zWuH)=o0xA6es?4(qHZ{>+h$lYc9N(KEvMvlCbm19)KRgS8+z_LrW?l55hA^;7hrJF zI9SL>M9|dKbOU)ISNE3OT}q*@0lb%^YVXpTx8fCF7Lw`s&o(Zf+w%XD>4D9E#kyRO zx7m5)m*&^qSNftON96;5u(xtv7>_<^GIpwgG3RO-^$ydSNL!Xb!)s;ePOHuv63q3E zSE0RRhvVKZTU37K#N@kjdNL;LBng&xykdMoe=#yrdqATOf?!Vf=H=TzSYPr)$iVeD z>2xD+EDN`rpPdcwKLI#%{6{J+j^$x5J_l2q71&me8Me=vBC|Y{yq0trWcibT?rKL23Qy07F6D1w)b?swFGnsU!@3S&IJZ-qcy{TH|XjwE-$ikf5ab zn&oTxhp+z*C0^mT_BKNNl`LZ*%RJsh$vOGmIIT`#v3_4Yzr*+aM>hRiFFCn<1w1(T z1>lIc%0R!6$IHFJ;a>IL9H$42j^$m}xbhA0%-GI{w)Qt(=e;e8y?*A9g5}TD25$V6@nRfPj&CZYx8p zfrt>Ij4cRAfG~$h80=O=Ku9ezgt3AokU%0sfDjO6R3IQi2#^3mm=Z{sXM*3tTJ1UC z-skN1oW0N4-}ighAK@WcS?ihdtmnS(>%OkW;Ik`z08&zRT9I$Ix#$t;RkG2)dALs7 zb0R~oIHyGB)18kGhommci`L6bH2Xw8qL|?fjYUgrZ)acP?MGmU+KkD)LebvNXV&319 z_In$e=gU_2FxnoON3v9#CZWd4RZUiHhN_6DGi~u$ObKP1Y zCo3{qR?g8Ey-hN-ruZU4?nhRi&*~R(4s;_|pwG zM>lXxm}POW&_e8D{Kg_yWBM%yP>Q9 z*hS=?JiYSrW^ftkwh)dO*HL9^ zvVct^Qyd@{cv4jpzYuM;IZ!dFFlJR4E#|45Eppy30x!)6dgALIXtnq~`pf4)0P(FM z_s?E^|2*%3rD*f*QuN$OGtg%Ca!x8`RZqWjp02OHp!2z`0}D9$?+AGV;rRDU(06~@ z+x;@eH+)Do21yI{-F;1Te7&x>eL#4ao*scq(78-R5S0>1aQggMcHdI5_r98n3fXx! zu3F6({PKBTw8Y$Wr6a~Z?}ZAt&PU*2K4N;u!hh;&hPQqDD~+kCYp$G(5Q~^+;L)^c zx2(CRyG~LK2iMKFznC(4wzXNJpNKOx6SrL+EbA8^Pb|p!j-(-F5i}t<_$;RAH5?o& zTZJRk24b6mhvR3!v+-yVAO6%$d+2pNXG1}O@^c`-rcx=!?*C;CiBGCP~P_HtqM=W`~m2lezf@;MD7Pl%uPdofN;UZb^v;{|v^~AbMN0hHk zR!;n2$X&NwG2``DJI#&>+F?0PCJAsKhb2_&M zbP|i*)-Q1H?5XAsbPv;bGuR8NWARDTnZF@3(3M_9%^BpeK%oWv^*kSM7-Zz4KjG$f zwXvlV>pG|{u*aXyjdKHPX7TCWAkP;R?m;D&%4`2glE>~H@05kwPSkwYcRG9N1F2a~ z%j4K7F8VqZsZyaTjk{Elx~bUL}yBC_L*Q5QSsR8;T7j})JL z@K4M1g?|~n4nh=w)Fazg^K#b{axR}pk#gVc>I!e}Ec~pEk?kb*^rJ5{w{0uFP7qN8 zHFf>dU zCNpysHR6-3=DUmi%feiTd^KCBl+tvOQ4)7#~WC_Rl3q}EsACg1o6`5<&r8epUis%b-shOG7^5$(}L(=@y0`t->j!$)U6~bjL zQOp^YW8MukEfz8zkD*2cfyYBdGpLqjl^ilf5Qu3tIF(y1_S)Za7$Z|6x-dCS+Jx37 z_HE|}Ei*+0s}HujX96SZ|JDhF8o~-jI_L3iw6u8WP>WC0W!eURyL;BH!lckq6cXh% zt0c;9QJncwcJIf7t0io?9&%)LUHN980LzD)IJpd9TBAHmUTl79@$)mCi1*bpUNLan zNbY38SF#s!`v1NPC?sBp;M*)LZ%>8}HN2}xZ>UAr>sN|ZfYR~1*a5AkcU zNZe*ta`Vd9QG;9-G$p$e$NbA1(DWIKOGV=D{4|gP8EKdo(a0otBaWeenq;*|5(&h? z*}ZYf8*68lOpJ>L$xQ=l17xC_wJpqY$6b>6!ZFc&{oA}q--~c{4nD+CH(oDzb%MMc z`2&^^pJb%9^^j~3q4VMnRUdW62b(af`EbDp9~%kigFxgmu@>rKp%sv`Wo|UU&c<8fNaw(2H2(=Mx`D! zP*hm)Fymy#Cp*=m3dz;{Yyd`J=;7XTXk}+{+BpmYN`&KM4lN}}QYw;p#M%tpjKF1! zea^QGXKR1#Ey-YXXZR(mWx>x&D(I7H8-SR+547`aelc4LVm_`FX#H5=qe{Tuf@yYy zOvU$y%IovVn4#}yke+CNh%i*`?#+*XztP`#{og?oezf}D!;kx^;=NT}(?8xN4f^sV zXntDXN`aO??uF|uq$eZ+zP+9N{vUKEUbgj1WoVech{I>Vf{Qq5d^$3s*!m4_pq`}GfCl$?VCD{7(>BQ(w$1s6oVjsX$lV)9xdk#OH zRJv-Udm}YW-!2b~Ts^_BbQxuB5}M8g*;MNscr}n*BMtltAix22gy;om|G$HcF6-#! zFCQ66q8qYrfUfTT1IDOo`A66>*|!m2L!Jyb;C8%~0sH95pHPhMtM3DkM(vSj*EiR{ z|A>FcOMq30*$Fx3+8mI>W3plwG{YXhcisVRJf-m^tx?dwqksK}Z16xJuka!tDT7VK za6LZV&A8EW=3q01N8~+yh?jd-Y@is#(8dw1OC1($Vg)uEoVWzwDs|)VeCv zC=+vhEx6WG0_>5sr1p!QRFAhXq`&FUE8g&{xFHSVdw}*eyhlX4{s|rJDy>(;c6+_+ z*VljJclP(bZCIV1hke9b*IN&jA2QaeCUeM`p2mP*OaXq|tttD1QbC_Ab>j+6SH19I zQ)M!B`9{v)Cp&poHuIkkIpmqxKgVIOIc{6U=6E6X3kegVnFDna28jA@8t8h#yE+(! z*<~aZA+8LdWN5VeNr4%5yu_{cIcHT|1sD~{e%2M>m6&K$70183vb?S3j2pd4EAgrG zoYuqSD6^z=!JLw{7TZA}cV29{s8M%uIB0++9qzO1KOyV;UxFMQtNXC0J6I~3ntI~q z*>lHzqEqee>m5IK8dqBJ@vh735o42UU($^EKVF^Ug*{*d?|AQKxi&lI$(oq`(ri{< zY%Qu68J{X9GmxlF_Mff{)aMb6lz%9m>d%O>YkO5Duq?`SNCI|c4FHbvs}=g$;cBfj zeoo;vCv`5J+~vLg1W1rkVb=u&ks0>cI8&Qf#4zCi01G~Yg67qy*h1ZfHH_4%60IU- z0>QP4*VS^{F&DsBk4JM}YPGAjJaXk%NA%Hv#Zb)}JT%w1#w}?`&nm0(y@))r`5_`X zxDEs=IdVJL=@@szpC0_9@Y2%Vg1pudhVg)5LALn&^@Vbg@ouG|{6k^`e{*{S+Vz^H z>1g!q(YTj=bivz40t>RXInPaGel@gtQNtYxVH`WB;K2y@<%}>IZC3@Z!8^0i%CL$wg<*#|d0FXvBJ**=vi`exTm7uBcsfNfLH9FkF# z>3u(N(0T;Rp<@o9UHuZuVvAkp@W}2ix*yhweqT_S^9GdNvH$D?y*=YcQK<0*1N~Kt z3q5#M4i9h$=6l&Qg##cd?HZ}zzLla~i_(^b2HH02dj(*T_HwsojG zgGXOJ=t{)cDF(#56H7l5*bjRKblhgRJTw|C4od?+%11(QyZh_|a|T;ZUl&K7G1P_W6h6QeMp2 zkG_46W-#=7pBEwi?7;Hx(Z?L^--D48)!zX3+vQ066Ra8<{=tGYc)WK0z`_nsuCpk0 z*1~L2%J`AS8SVE5WNLz>d&;(b#UIj>dIKBY6JA`_c$h{UPOZ(CwQ* z|9v>#rh^FOQVA=;rbgFbA5v4qQ%`C|{7478@J*QC{FY5UbG$vO-B@CnguPbEsW_FUmv`J1na-e`?Rf zFx%i*xbMAMDaB|lM?${G>>)b*)BscN4ag|dHWmJ=bjb*+0_mUvd0t3M(u2;hpV)Uq zU3eXG_F1XZdWi&(s?I4+?i32*fZW3*$a{d6;1$J|0Z5s@e^F7sHlC;8f>+>3Ue5P9w;B5zp_|8B;L(W9vgeb-5 zUHn>g?f0eqHzE$Ae_y^njKH2h1@wb$KV(3qh)j|UGc|9@+`GA}BJe$K=$A*~?<4(V zdivPY-q@Ra4ZhjA-sg&X##RwY308C6J^^&^=o-G)7Q#S@($#OQCj0RUuf4G(D;^`R zz|`?^&h-U=5IcOdx9fY#dqY1><9MxaXm8u1z83vlT?#nkh>f%@vg!-0FVd4}SkkZh z?UZR_^GGN7w~ucEw*qDA5i#SvHLtKv9$#Kv|4?qoU{n}`PN?mi^Itx8=NYK=ej>3& zUk>)YQVDCFd?qICKJ-!##Zo*!)(s=aRqLF~&9paJ?cDbUM2Pd2%92Oh`aUB$v9#Jn zmzU-#YNAj=x5gQ?(eVVmr(e9Q$8Oc~@)y0K#z_Q!+`UY?9e=INHef@Sk^ta*o50dQ z2D?({$$@Z$G=V1uZa!lf`UYfKj&*F(^5@emMwzl#eoCQaDk_@PC+rpq z_oQWAgy0cmr9^rK#=|g3ri2Hxh%{I|f580FuH4^1p#NVy!GOVispm1alCVluw{hiI z5u$;Wra(YMhjj7ouCFOE*sy+@6F?&>(WPN&+wPy1CWx6*rUcy^n-m@`k;;LViQOuI z*NZe;V5A|rubrMatKB=snokL(3>@Fp`+R5a{ByGhzv1wgBPa8xs?D^b48m&S@|qz2 zSh7uPQBY2gqGF`mPmS}0WBU^+9|MF)CZ^{d!Suo#Yv-RDq}|-9+s^Uzkk6Ga%mXPF zX2l-~TV#MYdyB8=ks7U*n2OH`(8Iki%Yk2#V&4GSw%IDY4>9FIr<@(AKG!fT?01QIILpjunw zOqly{qKL`P?kWUbzX@p3|5G9BN2XIbg{|WkuVfp#4hK?Y)sFH+TX2aBH(Y6hdJv9= z(M)yWdUeLzY~${4-ew!`v>gP3II{ejYF9Imp5%!=0kUzt98P)b&x~o~vp1}|dAN}i zM}_?h?cL4B`E>!F*s+~7Ir#72{F|@;MR(1uokZ6EMuy0r-8Bc^@4LL-yKCOocTdEm z%8PbOO+Oj!PRYETeMI7_yN*flhQ#>Bu7V%k_-OcCpui?nRz#}|jLX}Jl0lR#lnhQO z{)EiTQl5dqVzYS(sHh=(Ts9COezBlGca4K;Q(*~6pec`k`>c4ov03=9xMTmvt(|~n z*-I>7XeHkb>h1}8FejI&a+jE%ce`-~qBNA7f#p>P5OB$ns~*{-$~-^iD(ZvU=q@qPJxj82A6_otFwDw%ubkWE{h05hm(feqgJOkFMl4&UJ~5Ktlk=1U6d1TY_kTlztjH2 zh_CL@6{f`ou<}44)keJ8K(J*X*g!pln1RJ)?)Uu8d-Vy8u4l;37?{vvgzoN#xtZAx zWbFmG+d(Cqrcuee`R38|LwqN zCMe#IxSxx-vXOG=KBu&V6rVy8GCR!+X6JCo*Rik zdN$UKL+2Rew<2NCi?{u`VDW(#(d%`iEkMgUvX1)Yfl!C#zcpk2-OzZwpS?Y|WmZH6 zKNShAELS?(UeqQ%41~RXL;<#lPCQ5Qui28y|%r!Dpd{r#SN%HM?ZX41^Q6wN&b0>r9q$8-rYT{JH&O&zHLW?X_OB4ikl)D>}1W*9S_}ne~15%6n5n<^j8u&j+uzQ6&}yI z1%Ix%<p0d;x^AmuA$#uy&|Kl(lInh11fxqvh zaip&f9*EoW4q`#Jx(`N7H43#SKgd3S$}>57-z0?kb+FrMEjkdqLF$QVnj02A1t6If zzMsA%%BL-&?$pHsXsvpoQGflbaPyqVIXGVvH<+qwY4= zO+AW0gdQyPZ8-CvZ~Xt&2I8Y#prD8SNrBCWrkknFzHdNf?vO~RuLP8EFYG6$)Zu{Z zXgbym0KQ$1D*}=r2A$QwOfWZgdg=7UB)dNY?$q8@#!L4b<)ka1{p0e0O)p;eB4y92 zOp%|Q&y_>b@7wz^?s<-KsP@sa8R^X=eKp^JV|kTT%>HAiR@Z9ow%ak|%^$^fFNw>^ z_gcn>&N$-7NdUtK{4K+Wf=pb?bC)x3K+iT)DtbriOoF_#kN0bJF5Sp!$`N+HEDL^% z*;Uw45Q3l}y6QhX;yd)B#`f5~zx)4jVHC9B!hAe03_Ve68A|W<-Ij^c3~2<2EZMGt zwz_C-52nd*PJNCATIT8h@wNZkU)c3*|Kh!|p%8|ej(L^`qT^{^-hE3jE3h*LAR%bd z(j^ZbyH1Sb;fczLfXGy{!qH-US(Rz?aLz~2@rGZgGfp{>E?Zk0_53)_XcrvyoGY1#+Ru^|i5q2G zH5IT8NIwh?xYt@(v{xp%R!!f{sm~3Uu<*GUw>FVLx}M^A^1q}5vDY(v7X=CEQZ=*i zg-mLZfkewDITPkG)#C6&w!=c@!GV$r^PV1R+}hl|j4qCkjj_uc&}i4y2gonzhsj9M zUZhP6j2Qs-z?>#N(PA2Zir1eA|K-(;udH>bk#$g@kQf|pUp=|kf)E{UDB+Y{hbt9q zTdp*7XvgL?+d>03*KcU(P+%sKWDVKGPjdCN7afMeDrmDo$ZMQ3xCb(?MY5;mj#9Q3 zbMgG3Cz5}4zMB=2QCYRZ{mH_=OjaokN2WkFq>k;9+L8@dH4wKdrqavhu7k}8h`;`?gsJv9}`)Y|fk16G9|D!El$b)LzIs zZ{ALB>S&!3n<&Ad7IeEO=Mpzvo2>qny={LoXSWNcvNB9parN@S5~yvgYokEwj@Gin)O z+nwOy=d?a~FXG@SiTtZIXGB{Wy1f(Qn-v0U87kb?MvRw|T&3sT#|~4$uT**}FB>_v ziLcvNt?9PdhEI7O{#DjCbh$N9M>ZexMN>qO9&3VFg)VNHef`Tyoi-ysujyEbeW_Ob zJo}j9LvL(T;xL3zdcR#Dg&X;~eNv{#nfj)>Fs`*LsFZTpXcX2U0CeV<`E;xW=!(E=leE}2xVf(`SsERKtIqaxyD}SGYR0H2%mKv&K+YQw109LIT~eyog0!qXIv+wjb+wT|$`2$b@ZFl=QQeEVV1Uk| z)z#w|)N`S(yfRtSI;PN}rHyEkJJ#+%Yk4LeM(9%QRlFB+ad8xv?xCRI>Q?GjGgOhP zifQvQJ6eRW!No%X)+(ILt87`Nm9D8&qv|M;y*ZT082vJW)Dh~30Gnk+eX*SyhBoEo z8WfX_6RXzqRj$)h%{g}R+ew9^6I~5hDINJj>={(UzI;-^`*b-<1MD z!DAC{Ke2^4y`x3eatVRJ%u2~G3T!F~wtC=>l(wHHRNRZyL97>!rp0E9RZIkYm)@yw zNlTEh$@jXkP7Ni}yQomsxtGg{L2SAdf^gCu|bDAJmRi>01|gud|f02Ts#o5+(?@4fWM} zSgTsX#N>PrPnhkdH)_JI8}9Z!pgXjZi~$lJ9ULcB%Yr+SkArbU$Hb0tzlRo`@WX|2 z-kH3Rttw)|sUPZ}5^A0LGpH?0x$`e7^-6@r=3ca-YolIv1hN+|)FDSRBtq#Ta?!s( z%;dX?keV!ekx_V{%2Zd&s7(WJG-{Nx5~T#+Vl1~FTCdaXD&Y5*xxh>2Mho!aPLc)@ zsxio*kfG|OZj3d)HyJ^uk(8e#hZ~;>*s#lhbd?Jv8{K$Sx@#$U^FHi2wreV8x~RdpTw!sPBD_{6$TEl{*uEFCwUD%wQ1@ucPQE!6574CCohd^oamUjH zOQoNm%YZDDn|}NB_216z{&$1>&-!=YZSPi-F9!~-;U_#)HNDb{TI8-d5ay83Ro?76 z=JKU9Tr5Z44WU!BZp4u~b}nE!T)D7PW9@|YD1sXF0xrz1sHoexlMzE4b!_NtrY2!g zx^Scbkf@gZ;amD@hMG2Huwy_^3>%1M>caV4K*x(zVfZT_kIsodmmaC|ORM*$+tq>f zq?jUJ|8aO;shUl_@;u-vyK%f?esOXCpPzN0!{$dH;_$=x?W3?Q@AA&$WJZvgwegi3 zPk+GpWy-F;4AZ>k;lMm&!+hCBNN_aP^v}ssoRa1ROFv1d_5PvlDTSyoj*ADL#n^P% z19u--a_-`RmWP2!<&`p;q7K$$BpmKe6q-qFCpdmxYU8BUBI%)E2v+Y*2?gYXa{M3> z?JSLX9-;IuT?5K6f)EH>$$5(W<^6=bAly(`)P9ZP*9cn+zu?N3lu5j+@txVcMdB-p zKLP%-w1iM+XY`yVr#Y7rbZ4%{S-b#SPIj*Nq_7K14~TW#R)Y}>MtCcA7k#=boo^Al zC4ThQkAy%y1M4938&??~dJxFDhd?yK)zuX<_vOjIG8+z&`t88ngy|K5#hvP0;|eL0 zNP&|Ewk-5es;gVAota@|Io}*@vA$Ka5b<-fv9SBTZKP_v7Hes4WQm$(k)_bv!aZ(} z%uh8ECTp^>c=ziqUK5uZg| zd^E6Ds~jxSxZDBQ_pSiXNT-I$cND$5T;{+l{je70jbAgCks*>oiwjxmX7vq;%W!X^ zzW+-DsFkYuLri4R^CLx>u;wVHtjPY1VGGFA9{{;8#(DxHM?Z(3AZge zepx!?<3PGJ#UhUX;%6WK#6j_L$sG~UK z8m#zF@t^?N;2G$rC#*2g15NUhvO{C%-F&C;q%f_Tww^bj+V<>e6V2s_gG0?)_Z$KM z9WGUCnFn2f1WT?=o)RwG?&Y6Y&Hl=i`X79&W!nCe)GB{|1M@L>(FevhUsEH)X|UR;O(QS4 z+}yAy$U||42`SZUCb0E6nRDqWob2hZDxmTYgdSahUi6Z6&8Qu zo^xQvApo9VSvJ3Itl3Fwy4)18pU{*1qIrBcX(pQy79SopYERA~pD>Uvn(@I-tQuz- zJ7gMDPl*YpH^P3cMTJiE)NKuMUwO7An??jKvpE|QvlGk3+I8_srrXQ=f+PTULmvAL z$ZPr7LV}AGO`tKayx@$F!c=FrBSd7g!Ug!@&M6uoOzvWkR*Nzjf^S^L_{}WK{T2|$ zSpgunXG85x)N-=cHwR~@~c}8fQ7O$JP=_q_1Q30rt&ma^m2`4a5Tp^$<>fr ze{&TxJnt=13K%560X0%4p%vR*e04@xFV2t6*9~6xvyrRq3JRV&T9?_o)M~5^6Wi?3 zsD>L+nZ~IyO4V;2JC95{Yk*-~@g_V2~ z|L#vgdYyhMoQQ-3yj#E=Sx2Rr+0YFJG%Gn^yy9Z{qUl}VHAQS8-;T56dGv7ECdGA^8nO{1HJDN=Y|l66{HO$o0^5aweIuf$fQ znH@2QY@AY({%g^zOKF44&SsSp_g`huF$$t1+r~NvN{sJLZ%E>i358xv#);}kXRQFX z<+PTy2}J#9>?o|K=EpOCy{~3VqLY(sZQLZ6`?H_t#%7zG+xt!5V?F&L$pS-QbhQO4zaTGZIg4Ax>XvtMuMOgd4+8?&4+E}K&8kMsj&#d@ns~V2a#-xf?G68; z0k~EKYIQ%=(tEe0!BQWdl(g7>KKPX$#n;g}!9FoEFUuCyq-BG|t>=33AbEOiUYqtx zpLYjmTcFeuz;@b$4dkjB@|NYmld!6ac1LMPNrP-Pt&Ag)mPGlq4Vn5R4a4HRpPzpI z*Zcclyg1wx&hLcxYIci&li)$5z)5BGU4+Ob*ajzg7&Zfo)aO-Ip7R?v+?gywvvYD;{e zK^LmM+r&Zwd-PrAi*63m+P zmwo{zcb7)KA$#d3S_HBo${_PzMIiM6IE=TYROCA=oP!LEjTz#Qt#+9k4hctHxEC z^g~Q(*W%*|He)ThCPCeP7Tv`b2hhhK+)%ZVt6G)o;uTodd`7Qhj1E&q*|@M`Uj_nT z*jIdnkXQ##ZysyTG(;GYjnWpZKNrNgrj3Y+jorq?0xdbwGPWA(?k_Y5vZY{e$x=#w zZ5i{6y0&Rqk^^nEIT8_AUGp(;B9yQ{B7w2^z!2-3$1anV!fA8)IQM`XC9@cg!t$VU zV^o+31_|#e{*gktw&7ol&g@xEpHNis|8XF3%Yh2B*~HZtBlIH-6*U6g;YMpz*R%}} zcf+_1mI!)HUfS5lK&@rp^XJS`&pPq2bk|4(T6AXO*h$Ci5eVdZ#DH5}n5cDaLjnEO zm(H8e0nAV2*9#%#!9%i*>~!}ha-ulTX;1Luk`kpUuG`fT=wAlKpglqf4&j@BjbGUR zt;PTCf&beBfAqk|ouA_7`B>AX*RpVUt8&E9xYPOihqXMmi zv8{=>S|vF2FirR15+yt-Yhc)dNH)|BS7!LIFk34TfI^8IAfQte+{~Lq7 zN8px#P--mp2<>ex_lnz^LfRWm(Jn?qtgQDSD7+_rV=7kz_{qhCq04|FwuMm0C_tyD-PPxE$w#fWG-m#USOjM|L6_M}3#Mokn z7>7~7qi$;T)IusgwKlIJq^MTTpnv;CBZbBhqR`zfO@`mcX79`TDj?UV<7!3626KCi zXWYJG5k#C_sHg_l8-%T`vHO8u`05YNXAmd=W({@P>5A0OP#`z$3+$_#5z!hF7RS@l z=AQmu>36SbUg5g%!4iUxORQQtSMdEGS7zxni(YAelI3P{HDlgGB;;BI zg#|M~{IX|B}Ts!Sv+KU`}4XwBqfSs&Enl#kwFzYCxT0-fVB3JX3uRXmZNw{oTobMUmDsqnfqyp# zK2JRfR3(593J>*mnLjN$9c0;x;C2zytI%J`eFJ>-?$E`JG-I9gSy+=}ckrEWhq+(3mCU)(LH-Ext3%>gfvIXz+|nRhQ>eJJ|!AI<#7{C%4M z_3iR(sFs`_eY$mPC+qRFcCBzCZ&D}XMli6Q@mWyV_8RW4Joe(s#`G0x@I;o#ARs&$ zOQyzqX0+N7K%b?6b{!8&sKZDld9%(q(GYd+R}+&ZEHwl*XOp@-^-OLVY=?OE+Gk$^ z#M7V5AY3xfy#YDF2dW*D9m%tb4k&su(<$UfHjY@x)i68~9SV@6>#(!k{P@8kVq%|n zO8I=V#Xq+I_FviJjyaXRqG7N>WG^lg`m^DwZMz#Pqz7#Mkm``{yG7Bkkbn%MZo(@- zKJ8HR@dOZ|&$tkw6kTsHY)up5}E9lnWr;XnoV#3TBEFvDDI_WO;P*A+xxT^mk zRM?!q-k`qBj371CipGV9*OAZ}qP0SnVfY2wQBsDQ`e!QD8g~TLq3}mLffl9s(%rydF&3i3YBn%a1~7sdt=+ zB9jD8YPQ>lD&^7u0h8~YoD9P+o{9HkG{~<&6^{yC0Hs_+qqx!b7hI*hl_ z$lz*;hQz2deylN4%OpWIjeDRAKiS7T8?abH;`KeRv}A{%z0$b*LDX=zPO!IwcCD8(q{QPzLLwCoPG3|4gx<~-%rWP zN=jWj>bBRSK^@JTc|OCWUUNNbm_wZ-M}5_O^ABy!Q)&UBLT;c}a$wVd06voeewAAo zyE63krOlGUNdI1wdP+82SlGMuIAyo8na7n6V z)C5qjO@+DNNbzC4Bo~m=fF;vVf8qqC27cP5f4Z(X58ykXG2lZ_N+us{#L|v+B0Az; zDQFXPId=koHa8;@*{iNfWE@Udjt(bDv~q?T$MWpb5kw{%U2Y-idAo5waZ9K907ift zl5#OQe=n_R#YyJS^h;iF*eFI95MVu^_d+{uVBX21{+Ecpo;qFk?P>}YN&Bca^wh5+ z4bET(B(NjbPZ-{q(4EH zZJ6O2MyZ|*y!gV*F^%0bm1U=O*wd26FXL>;97;_@&-3&Hos*o->o+z&I{9<^%Re3! zKmtZDMgAt=d1`!%8d*+R{x|s*IGH-Fyni?-W=*}v*p5|HpjsUzq29`0(3*3rtYL4x;tY76a{0sn!>D7Z zGTQuUmtRF>$&4}w|{$C z(+^z2Kd;8kcCY~bWARjPd5tdlVg?x&9mtJ^IxT=FAnqUqLn~Nk3_Cj+nVjpC_xsc1 z5pL!62K2{+)2Ao{jb@dqF}o@evE;%zQ;QRx869?n&yZt->DpaSGX>tpy$Fl1|Q}ReTV!i{c!oC38SS zlC#302Bxot>Hpf>H#nd+_jCmno8_n6X$uo$!f10a$Z})hlj$*b@C-e8s5h9Nat3ZF zzpNqA)$&Y3CTTq2g>bz`TXwXiXI>4it#55*c{k@-tsmAAihb&E&_n04I=EHnajh#l zHcEL6(&aG-SH3GqyUX27rYCneEFD}fM^05oDnt~;QP{LswU%J$e$RU=7oKrmR90yZ zwyjB+v2Ro*!#vQN$Yk+`X&V9Sg~H5$q&owCrJm~fMfzwgIirVZ=n+=^Fk6xprDE^t zauDpQZK0b$tyoD(${YWY4;!v;&SivHn;D%*OI)?5R}M6x?D%jYVhuw;@=Apw^@ zGvT3(FXt3TfunN!*B*#2dOU*Lo2hEF%8egL&8m&{^cRH9QTMgQ>&#ULSQ;J51lAY9 z3|F~2b^YR)ANrcmsG-XD^+1*}a;Qz1HIQx80n}!M-7jpoi^i` z7c1;KJmLzilFWIYQ33-ba?lXd&)X7^OFSi*B-bz_}Pf`m`yof()pdejQovWYSkku>k&G+rixQO;-io<;R)7 z1xDi+Lh){V{j7T#y_8|$k*2$`X{0=@koh$J)``%-klAD3Evh&dor(-GUeu(l--~SJ zD)%Z3*n4u3vs{bvIvqsaLyPSn{46^v3x9O;7>FyZypPN%Z*nRDth~|R4sgqBr+KoT z00j`PqzP@8f-`k|v;agWH6t3RQ}sQk&Jopr3Z6(0lhFn8Rs3Y7f3km-_yz=wj4R*Z zmjB>Ws$}>zm$rUSrIqE*fO3i{Iwa*0Oa}td1FF#p#8(N<6O-;fjz%6tXfB>IKl9RPb^weFP z%|#aZnlpKMI@ysP=s_eA(F_}-vU6lx zdDJQ^HT3YgrnVDD5$S3UG-&`SUVE1Ps>S4ULde6YfCW|e{#;S~11BmV<`_4X4StJV zra1QN2+i2*Qs=b=@Y8XMrvPqeBU#yjyYr!IH|!+Z!d5!cdqbr_F!?7z6kz=x-Wndi zq7^;~fQbop>vgTH!0JKwc3C5nGtEyoIL7r>o zIU00;x~Wv6b1dC|anf^?msT0L7^uqS4kRXrs=>POY4fdLaik|vPckA&`p&W*g_@m* zc+dmE&?Kzm*7NC1ozpaZA-A?-UL9th0YH6dmKw~kB~<%bUa8UPZeQO78x+5yyjV^$ z@EkH^ZYB=UD)g*9(EXWr_4AC5<$beJK0_P&UNr4p zTv;i^7V>Bk+_65QGQQe#D(5rk&l-19u%mZtT2vMm5jR$rY7JD31zIpaNk%9!4&$MO z_dtiYo7WGfgp!%hdIdH|EH`u=a}@_1V@GVm=T?OfgMm9k%(L^nILb9wCn{0_9Y7>1 zoZ_WwQ}t8smaTOO)ENVmDS!qr3HxCY_&#H;X5p5}8&G`7wgQ&gxOijyqf_^IDJG3w zE7cfqWSOwkep?fBaS=t@I1)8BpuP7@y5ebjz+#3pG0IR3vcPs2pB9@4mf_{>&m8L` z9a9h*1wmK{8o=X$Zfu7hDx9sqK0%2OEAA$an^ohRYK)^{bNo1b!HAqG?rg7$#-9I& zviFW^DqZ)0J!gueV>w7uq@0l>RY0WoIU|Szfruf55?}t{U z{;=%+EP4QmyNA>OUp<7hSA&N=rV?K+uDUTJf9OlVyc`LYevPB6 zrK(b=)`j7>WSk6q+&6XB3TrgOE_<7A>(fAI_y#4WCRAvbVs|TbKAT>;7!}hYS+RU3 z&Bbt}e8C}t5BDcYShx)6$u*X_vuPmPx_qZb8Z)ycuF24*ffp$}x*XEM>uQ8L%b=ko z1fCpOOi?nG^?nxDHE{+R?n*CQbi&B4qTn@W(QXh|&o@)1JILTgS&QgZBodfrj zGVTd6@qBhgfLl06s`{EcJp^wCX~`!k&k+~2o-{Ilq8A=kGCRu`>sVyV}%>k(!$;&kB&1XWp;))=< zySly7Qb7~*Tcmuv!~pn7`RYxx29X@!?ebss&f3cK_I#gLN`Aj<9BkR|Yx_nJ7UMiU z<+AIBp^P5>EEI00L65|ZaU2JQE@z6dL7>Q=0MKDru1Uhm&N88$w}R8)hFW!|55)|^ zfk!Unt+r8C26)Z~RMZbhXTIZuvD8_-X^dp#!WQ_Vcb02~lfa`GV?3&pSTXQdtb3KX<5`OkC^nbd4ByWE^z4~Y0rAuZJYs;L_ zWC6(9F~;|?QJ_G>`-x6WNG4rhE)_W(8Y4~4&|j})*$5MEuSLy0zOvi|KwAbr+WITd zh^ZJ7BL?deFZR{RVAPqT{)+pHW0-yF{rfOIP|r3*Hl`f?`Ar=fLxYcNJ>4Kwu%YZ| z=x9qLNh+n~8SjZ`Wa;%`#fS$JIxX?sg4xIfK1U=re9t%J3qSnO79FZZ`4U`9_Skk?QRr^sy7~GUZU$q zgpW~NC|K&fUWic1c(KS7BA1W?QM&kag~Vwds&GCR@n0vV>KBRtlrPo)>9mdx=c}xU z(C1v4bM8H6`t3&^LIxH|8EV%rii3iKiexv@{|Uc?n`%CDE*fC!&}i#loBSMF#1)AgojElj5E7%OJ>R(TOKn+<2R=TEgD_YTNG z{x!nJpvwl*7jWyDsP=s&)zm2^B|m&$7ZLr%v|KFR1y&!vF#_xMI~W->?HegSE%OIn zW9`tUeECgt@O9V>W5o3j@I(#gce790j z3J}Lyw^e3I|~62TvA<95ZZnF z#J6iGg@@r>r=?{PHg zU}V^IgWzCr^Gs7nqv6F$PThJf{!wnFj~gSTLqpDZfi9*83ZCS&WBd+l4=*AozLBp{ zcjhhVv_g(`allqr`Dv?rUW;049cLygz<;4fjGJ3>B-jyG)H2c`p!LZa2g%migEg0z zhscSV@+NqA1xli%^ud*NKQ24Ro%lKknug1FvJW?_tE*yDJ{6b?cr7i>%Zod2N9mgP zVDI|-sPBi>Gq`bHKBQun*y-4a?e1M9GoqdXr}&Uazm}MyY_E3yrYeoLRs|D{{LtQ+ zb~)$@IYDNXExxTUN9_aqFXc;kBcwLM(rEo(QFc#PuCH_C@Oj_j5;Kn$7`lt$au(K< zU^2k9T;WJW-d;iTTL5Y9Kf^&gf z+?Y7^Q@KYMKA!00Y};aouzgrS)0(0ciXY3-g43J`q^&ZNKVAaD6>r_ZB`X({`I{CG z6guUiF+SHzpHi7@F;)oxZ+_~)?v*8iJ4LR?4CizH%>%nytd4z(L1!wBGHEmB6ZYzi z)bjYgRM(pwA9~>}Grizc6?6+_W>2-$Sdi1#Q%#(l=zdF5srKT-)Cr$k24ns{fnyoO zu7DcdG=-s7;XTeYoem8EU;xFK=QvmGb_E71%iS#W$U;eoCf&(l%}_&DmkeI(K0^kl1I`IBD(qbmV$J%Ab2__b zJFt*6QnF;o_P&z0VC^Y`B({QfCkGb1^9Kuu1yQ;hZ%R?_=HoA3&W?3=Fh<=O(=Bo0 zatrIWe=n1LyxLGmYzTgZY=rUn_5uKh%0HAr;7Q1hwxbJl9(+`F)Y#vJXByK%BhDL2 zhi;oP4fAS?(}8TO7DXZ9g5t1fK-go#aUI<1;eVHhmm4lmbL@YvO#Mk&K+lF3F4W)9 zzBW$Mtuz-n1-PXg$}Fbj;j$*D&G1U(>K!Lqlb#W~2JRt@z{Z4g9Jl=FpEfD|(u>2( zFUKRx?8g#~8qb3(cT@5U0syVxwY~-pGen|{Wr&~M<;e9+2lfRT? zGtSFgNl#7-GJvvZ9#_M|Od3=7!`QGGitBH3@uq=7HTHW^edB4)3!%$!tw%F? zwA5z@K;%0oC+IL6H4*V~Z4-*g+%s!Z{iQjyIE^&GQ=2w(2r-@~P|P%Lu)=-!owCa9 z;wF#J==}xi-!*QeJU@*4dyRVy_8U-m zO~G*W(HW{y^^y^dxjQk9R=9I)#T6f>7R z?VfSF>1@PqK6|?xR5w+%R;h7gC#ZMxclcrZ{{=s+{&|fi7OcJzP%UVSL!^{H&qDTvy;_e_E}G0%&QF1+f`nAbCGx8 zk@2?E>u?nknKNLjgwy7jSgQ372K5ud-XY4H_In96;hYM{f>zL#% z5Kh_ys;zdC+ni@I-y)mqBG=z)ZyCIgnG+XRv;eRR4brM-qvNLlv<@H-=&|L^*b$@C zp#ziAya;U2;*j+PPDw5hvlhQ3?kfq5}!yQ*Wq`F>jsx)Av2jqOI0iN$zn z`mDa$?FaAE39FD>o0sKZUOyxUslGqZF>s`5FO!O{d0PU!XfpcLmi47A!)*pTh)9Ut zXrx-cUl zf>6K_Uzi_Q4^})FaUGb3wG5y}(x7I>#!xH3p0m|XXGF8C)rPh4saSd=ln=ga8#2Rf z?ONHlx9gl|FXP2gcSDo(jH5GBcLU$H{7x8Pi_-V$mXq>gJ*kP`}D-T z4tw=iN2x^1{zvGTxXPnzaXKq>_4L|EpLFKdUjIO7<%9Rj(>RCdePx?W_v*2Fnu0e~irtj|GU?D?|JOHO1$g5(`?AKJP7+)p732q}-6+ zrJAv{5tNnAh^gUL%%Qo&d1fTOgt;=weM_lpe*;9(q@%?Ne1$x;?UTvB=> zXaNGX5IQlv57uZ8EpG|LqxU^gZ;_YT+3}1j?FFh!@4P$3kjtXWsnbof_e?`uF4=Wc zyoHsYSvYqdBQNyAd@R(wjEmW(-&jY=PxkX=`s^#qJxM#atU?{v@g(m?P}G%6UaX0( z;o7VfPh-9@uKFS_QcX~YCs8~~^9h#04|e8^8Y@WviUw)x9wd>xt_b2Z-BQ+j!rNm0 z2Bga{BZ6erHpAjInRP=wZSIt^B5bLN7v8Kg)^V^p41O?{@FG3*vRbdZ43J774x(@Q zf5Olho&|97rMjIBZOTB*Cj$UY2iUL802A7evrsXTn1hdwjvy%QU5LhHJ+OR|!w6Jt zDsS36#rbW>cwu!Zt?-wBI|=pmUM6gY??-| z_iJJOrw&Cfc;uzAFkvC&bgHo9#ijT`fkHY|9Au?4GkqadD zy!lV3rS`VB)Yd?e4c7;2G!h|PS4^et_uY&%3?ho{F3y!d1=vlNu>GE4_IwpO5@2Mv zfmie|bF)eorTiPyvn&VPb+%dQPQeVu>a|{^)&-nY@WX&{Qd)GhB+!dpi6NzWKkJ8m z&gk^il0mJP4(C?%Hk|cN{wg0Y^;-F$dYmBLgPH7=sQzb`J9RVvTRkk>SoiTsU#VdGa_KzLL5@q}^pk~$dI;+tgS-uHde*`2vO?tXUq zpJ^Aes_C_V*Njkjx3k;jxnB-0`?@fB%dBxDw~6F@Z!<~Q(s=LV3EQfT>?7ns%8}G3 zCdHj=zl|w^EsDl~F@;?Wx(^Pw zR&(vnzx8ST|E*6$4h5f{KJXGb?iukC?g7cq-?*zCWqPSQTifw=`^0`$?$4BXgw~ZD}ef$|pu!!SQfj=i4@-g&TWaJwtc= zEge<1*2ei;e)RA`^9xZ)LPL>R;VRX7v)jDExN1+E{(Q&VnV#;&PjhSs46r01pvWS{ z$7*z=O8vg`D*CHqMXF?-)BMG~$i-9=5q)%>_KJMCXm;RF*ceMh20uBkpF3F+VpIkz z-N5`jUKADf+Kb~URfhFla(8xUvO7BVGmk|Md)#&_6I|Ro5nA*A%>wzat%lDt^UJ(U ztp}Tz7n9zExpeW8m?L|XRcw(25_vznQBVfBPc6^bH-misF2%^3`1LFYdv3>#t|IQ;hlocIfAxT=pM%O18`xKPBnU$JGhy)O^CN1pY>8$pjI9J?BHUA>LC*I z5ZmA&S8Z--?@|+yc^jSUvC={-6UMt;*w%(J>vFxk60ViSJG1~`Ooh|#oBjZ(eHnS?dhFrzuONN*3p+mhn2L zq!6iIK0a3zDG%&K0pptuyA-ICX0P)_9mDqnERvV<8fmM4;EiE9--})52lxkcO<}!& zdSVjT4At}B_I0Lby{-zTy3Nl$NURZn6V&n+i375VbFjXD>Km*vqusjS(%8QY?%j8v zmV?4rYpSAY^ot-bnYrfumbz)7bZF+@^{!2v{Ogw*%|;5JYV)ckweOBBQt5&S#+5x? zF8;yITXWx+!O+!VhsM51Mn;)~=<~Pob2dAr-<0w;)x=oF6A!nvjHyHS(1+>D?QYWD z{tLr3mDMFbyf0Frdtcy)iLHA-+xM-!c`vbs8mevn9ok7IT=u&>&T63t4lzzFLg)^N zMF>gDBQSxLPKP-|^sZ^Fk8H;?_6d{(LD3k*3@D16V&Aaz@dOr-&B?5;z=8tFMAj?H z!I1^axdMYUwl_SpyHJ0QF>tWA>d#`Sf)pF;Kg5GAv@YdUg1OR zw7HIJ_`j8mFw`bSR^iN0B!UBThd?1bUy2Xxhvg9VKiE&I-CraG9w<9%$Wy6I3!rxBk9z$EfRvMdJumCVi_rH*jW*((B@)Gq6ZfQt~e~J~;Y#BHu5~ zgFj~7b_;WaG^&~%$?V+bO7`>`igHzm=oqCdi81As%6iRFqsNJ`a@%5y)I3o@L1UaG z@_*u~^~OP$ZiFyQe`8HK+lLyLM493T(yZXh2AX_QT>{9GV_u;X_uD62!N%Nb`{bX; zra4Z4HVEM@yyrX)tod&KrHH&z6JL@v^}fG;jal(a{~gs-zv?uUiHVQ@w9aNv8I3f> zA5+J7AyS-|&BN-I^snN?e@2J{>#$`Hych@)4#d~i+{%907BVbiFX&fA>SM~?N>#~P zG9>l9L;oVm1h&lDG#?TAGD!IK4Yf&$S+`QEoF4cT8tbNTt)cwGMsBDr^*s1(>y89G zm09UvrkQJ~~gQ!yr#9e@>V2h(dzWAKe>}nS-U%;# zsqrWFS%}xhliEpV>Hihk3>u18O~17HVmB>iu4bR6HaPgF<2_S{1X%T-uu0rKeXWMd z&yL;E2gWXR*$sgG_MOMs)|GQ5v-J4y@1!0zdO&x1<{uV4kdZ@}uc%y(AUtd$fU@%g zvc49BBF7{UamiMp9i#wH($oC49?M40R*mkXpE=F#yaR}WL3~mz-DhHGL$C2lNBEM9 zwv{Arx&s?y8WnEid;pXiM|mxx#REtHEoG?XO4jxDjjszaWk6KweV_Z|osH1QB62Pn zyNH)Y0KoL{)&_U&9yRW9%)7BLyRYrJ*ziUJn|69iGQ!7?W-Tw);p0nZX}IM~JUSaY zqd1&wYQI|BY~xWEH<9qQE+IX3ho(9;xf#EAZ7@M^b!=#1(bUCTP`pVkTK*thoKmi9 z=MFgT*27gNw=BtxcnfI{sWu)g)v?)WZEYhMM4 z9WVy8-FW^Ex4!U5$FYNYS*_h&ri@~qx5i4ps3GnyjV`2`^LyU(zgxQz#?4s)D1j+7 z{UfS%viG-uE*h~*87CTm+Hhli60DHY3_0~0(6OWiSi$mVO*@9$u*j?{ErMLos99gf zZ)Lzf?9HYey14e{Hf`DMmfng$XGyLtGQ66|Im9=P3CA7!B~{#q4Io$DM+4PAjGm?o9r*80<_0=7Drd=g zF~c8Hj&!|Q$NNRf^HZhoXuR1KyC!>;Qe{!kfn)#thy}wDx-h+0dPt!wj#)KIXBCRe zr+VcxytH7`q~@0VeFwTR{|3hum0aGgE$!DBDvwxeW7#Oq6AG^{lf2RiMG%FdfS7+R z^V}d-{Jh%r@P@Blh67=Im7+O$2~KOWJXIW9%h?(94lcRS-sq%nN8ajbcUnrF@@_YU zQC2+c?b%c@{GD?Yi4-N2fvfXsbDel*$E{G0jIMBhY8$a2KkwQWW@>_v2n&)+*t< zFN1!nb{5^;6u0;~w72!fEKJFH2&SWr&Whoft4vEKV(-SN%=WGUK7(@}`{gz(NRh4U z+KD1KOo-S}Iajih;n@va0w}Kk?cA1Fdf=P&c)B;s9-tI6srH?vYSkD7pEMP_?g+b( ztk-Cu<%fFKAVVUJ+v70WcJ9ZzoDOX9d^We&g8uO12|z57|8&l*=6G)9j9I%^h7|3z z31;Ex#}m<(;UJO!j4Xsn{INkkzdsa!=q*Pw7KJf$NoQvSaBBx(Y*wh zf*IroR!}ruRPty}Zp|ArryuWoEivmDkbppMx#NEW7`w7G`~TtjB{Q~XVP8OZXw&H! zV)Px#yKWwMRN9n}W5_^P6OHT_#?aJ=F-~u$JTWsf)8q0#&gwThJDER>p}7)Nu}S6R z^owC`EC9w;owfi~%qh#S?EqcP*!DdK28?OIu;%IYY#-dHPe4(5{bv%5To3ilQ89Ln zw%HZ2bkzk&5<2vX;Z9h6Iob{VA~0yQ_)2fL0bsYu00DM>_uE)s+?%C=h<*GKWWQqVf;{s7UCEn=&hEwLFOHGR%0{b!xoKqKJWhkMR4ZPvY@u3hq)o5 zzrPLq!lMJ%MMmYQ6-VrZ!nG0F*?k4?7cXmUxy22ffgsR$2bSkCdT^MK6x{QjhT!9g@98BWxbjFfFKkE|J*&l3&-#>TRw-V~+Q8ku z;@sV}<*icH?&^>pR`Obm!{Vy~@@j#{ok%dh0H7$;9-*!9a}i#?={hh^SoTcF@~FTd z2rAwZj~Ngx|9m;1HYxOIV(iSjr5-%X?RX-%+9d6jyu`cK)(C4*zmSjO8#JtyFsS&7D1KS-sREcO`*yl<4^sU10RChe`lM{;peBmxxy@bxe?AYbnt^2+R)~(HDoH+D43s<^J=XPq9Q!(%q*( zE-Kf|R=Mx>4Etw4r@Cz@CWMMbZ#!|r!!#j|tc#^y?oo<+H=5NsRbe<+`Tl{e10XwP zw2dy_+N=Wt_4nWSFUF^ekgl2aKPtiiXZS)G2ySw5^XElz{mS2JNo(2H8|9C>++(25 zt_imkUU@A;`G}N-uzFL&hkF%OcL(BoH2l;3D?^aweVNU=*WQx+Q*Q{{Jpf&k_7+t( zLPb6uKE_!?SqBKV$|L0X3c@@z zas(ryjzMSsU_CD^h;pLE6aRqJTZPndOO*r*H zSs`HMSqj4{RBAmG1>JM(zwZFwoqltTXlQOz!^LXe5)KA0uzFc}R86dLd81|jDROd5 z+1f6r7F&ufD$7sFsLNY5o~CQK#0`7?ysq*GV5To`y(=di0LJ)b_eb<*ti*kU5U!qs z4p;&F6~WeHPI=8Yv9Dsk&*m0D>uo8~ocqVbmj|Iefk!sCm<3sJmxcY>^lf9~jBh}J zReuS6b(~CZy1UDu9#dYKP4emWu&yC?p8n$Z)1Wcy=Q80IHr|f%p85pfxp?3~v$mGLi+Q0kwYl*8jBx>=r`QI+aKuj1!=W{ZyZ!&0IErnm zh>rOc*m@ka5o7-bdO zl1K9KB1r1)SVq0b5m<-1^JC|nhSVttnl!1}OL;wT!1RiFhI!6rFVW}T(m|SzOCQZ{ zDF&)*2bd0P^AXc6KBf+!+DdP^*zEk3LgQMnK`$6ONJYA(GO?(uQtC{kjG_qHpqigy z8eb8wl3F)E;uv)`e!D+d@4P;9vFkDXID~pFFG!!)iCB0LO^W3WH>{u?41Zoh;CJiiYVqZ#CV$ZLHMeX}uRqtW0?MvzvD8c7lOCzA>$F^Z2P&V66l zCjex{k$=Eiyx-BT;`;qWDcJ82*LMbU?kn<1bI|>A#pha&>=?6-iumvv(7cRX{CqdX zV*cOQmh0s22$sYbiDCIEgKM+OqyUG-R{Kxlu2XZKhkZY;Q;r4kZO0hjY4&!-d1Fz= z+|LjeHGOpdUtgZp@j#i0aiLva<`H#qlJu;tznXk=*NAnfG$W!BNKWH_K64H`w$o}o z{}$bXpAaDcx2U`Gk=f0e3Q1~1%RKj zj12AuuHX~$df@)6Iow1`ZRWbxaYyaP6UT|`;2ros?sXenlL(1VyG0;6ppL7vtZnkh z6u^+h-C=_8dDQd3t|@*!nLNf8zfp9s6f(|dlJ5>{!St*S*u1@Cjk?8BbJV#2-4#Mk zZsAQ<1u~{~eu&gP^m;?*^(wSQiGd|j8$pr9?Wc5tLKB8aT%&_WA#lczcF){$mnYc@ zT`+A>PuRy3O2$l+xMu`?4O|LoG5R1)pCjG)qwW~1v}{^}hi8zJpC~4uSBo7#-VE>8 zZd|l=n;F{SxQ+xf9Q0n!(pN8A^e=9!LTSanAA1`7q`fg39lNJKe3;XWw82rV|Iqt| zg^l01F9?bLYEN^ZNh6`51{J=wJ{WQ2@%3);F*c!N^R4xpi1c;jwxB$;yd8%Ff8Pm= zjjDZ8KAzwMv+Svk<{6JTD7IJIeM|-4MS4moL|%_(1eokO?;<<;7T|O{NUIWMG()Z2 ztE_0dp7>fVWgj+oo1*FO3}roV(&#_BK4Mm?R}$Q2V|c8AJGoz*xJM#H7%>7&V~1BA z(1mQeBMdByWqL(11jU%Zn^~?kWxup^bnOI%FYNl~&2PngDmVr+YL3G$C+k>TmZ_As zf7%$47OD-6i!u_&Rl~UD=w;6vEY@&SpQ}E?^OYz$96OvySShr*p zZ#c!@4h#9r)acG&LvZL&4!EH9s`FuS?~1}BAYQ7DaQ+;|g7Ij^K&b%bsB1)uvWiqI zM(3nNTJHfE)cGCw(4R3UI~5qP;q- z!kB+?%cdkco{8Qaw6|@J#k*qs{iFXlj+0kuRv)d37x*b`EGLc*_P)YNk30SN@q{Mp zsPGy$BN`BweWUf|f8)lf9jqw)nL1ZrA5;r-$v`x1Z=+3#Lw0YivDC(R?|#*7@z7tX zaxxYg&0oswzO}AAJ6ZfYW|SKJoo|vB+&rlH3oN*!@xV2E{h_GoP|DvzW><&^50}4I zwUHSWj9_kN#ebcB);xGyUF?>XHee-Om$8J1YusD6^`91#^@+MEiLT!=ZS-C-*C(gM zTD&k&YG-Cb0hFL0mLr>4CwfAP?UKH_Kc@_EA&h&*TPPH%Pz}}xIQsKr&|b+;TxOQz z*jQnu?d@(xdL}Ary)=e|{=#7bePJ6B;~`c3DE2dl4jLvs2A>|W0_jjovJl|1mf(aH zs@J3)gec&y>>a62>$2p^9v#ib#Yx?X`Gef)>3Eo& zQQXx+Q=GK%SA@n{(>=Y*9wqHiH~Wx0c4C$Ztu0YI*JtK%6D-1Lz~xn&)hDZcGX@6Y zfZp&->u0ZmAepagOtSkg7N}cTX`hYEF?XnrHXL|Zy%v1!0lf3=ijLhv-qVa{{qj`B zT!{XV-uR2ZpYA+FL`u)v8ElcAd(3Q!MXo~|UK(xFkjxOp*Mv6FWootXf;}~@^4fHRgX1; z^MGsF18eaon}I#K=^AMLphrL!jWJM!!mMORo6a^LE=@pH-MbT2{XI@dxcvW1MGe7m z?1RYjfX##GdE_-W@SgiCnyih=!u|KeQGMh3{jgxXm;ea)xMlj=$8ydANeyk&gnLteD&SXPa}aLJE$a_1=ps~=94)M$0Ovsq{xzhPYXxqC!$vKCkVz-9x~-G_&OL^uRWMcHWMMi ztLMMnyzEh-=6lVVozms=fv(+}0k*f;g@_*vy_r+@e2U@?`+hvJq+w%md^$eL^$V9- zCIDZIKPbmD^YnUR)QCb?)U{2KQo&ytOT5`|p)!0(_rTSh;NAeo<@f_+)@ete@4O_! z5ftNIAsSvH7<=QJ7zYR78qSth~9JZ4I|7!3jKxPCE|MOk=S*JO7!yI*HOYGql9|>Cspi2p~R=(3kL3wsEpks>w zBX0dVq(1VhkQihO<&9NX_Bj;;Enkaa4-XKoeD6y5=2EP8*3r!n=Shkzwyv?AGoREevCf= zlUGsFg4i9;Mmh0Mx3}jNS8F^Y+TBt6l!joxeS%=MZ}P4Mmw$5gYpP1W0k*MFbr((koQEe!c2-BaR>A zKIUU=CXYTRYp#RUh%U6O8S>xs#bvZsMWoeu`-YVPErpR@MBDoJTLAiPCpHRtm=y5K z+|9a>&8qb|D|V44zm(Sl^^|9PcfnvRFi4DS@SdpooaS3lf#qp!?*kCXUgRHzANBxVpxf)n#j7EAhBeZf-Fa?oXzVAs+k`83uw}Xsoj}C8#2;MddIU$wp^hzt& z0_!u+5=_l90R;(bw|K#+Kxm-_dP}}+AhV;lsQj4Av}9|~=d5#|R~#eN|Jfa+=7t*Y z>L1h zI%(J)TM61-$X_M^DWbA&qCiTM?hB;%Tb8N`qVZAb4?atVhDLc(%p|UhK{?$FVya{e zk@fQasdfc`MVBjWR?bx>hfLh^eG#LYPmeHRgLbZ;<2v2Asgj>`%+`a;`AX^NE;Egy zIG}ce0FER?N4zBp^!L7hQ=EXA1*%{?;p-Yeo4wR+H|OFb;F&e^gd?6`=hkg``8L|- z$|CmtgCwI`k8`~Rs{13m;`hCe5f@5@PYz4e|ypY4pEl600byL13k=xGyx7a9DRExCQ;#nP$;wA z$?yhlj(?F-)Rx-hsP?oq*e@l|{&r9U*I*^3*x&U@3K?;6Pg-fqv)aij*h;dEbt)r! zJ2>U>dI?HS(H%EXf{4mLYVltIoa=F!*7Bx?J>XPFIWGn=@jG6#YWgSCQ+SfzO(aQRPXZ-O95MVqDtI+tlk%W9u$nW$(y}5<1aGM4q1j* zB@FfIaT(y#<#}r@d{Y)GGfD)f*cv#c6FQGGL&l5K!By+!v>0`UL@xkOi%SOMUz+tP zX7k0vUD~<(di@VNE2++t1#U&;t5| z%9o--!d(gQ`)CW!YQkfx&tOVA^(Da1?U19C@BJ&I_^Eb-Y{~RUR_E~)Ao@g-|GN8C z#$mgTn&HvsZ&^TEksz&RtCCmhM=}LsI2`-4$3c35$(8pZhIG^dbVSel0R+@*b_rjW zzY2;7FDBO9ngaa`6AdtYU-&b9m2Yywufflx8A-a+m(u`|cs56DREN`{+q162k%M>%z8C6Jj^za`Yl3ba(k0!i6Sj3>D2iP0K>oB@!WTXQLX6jH{Ay<5kB%crUVOtH^~qMEooN(jCO_Zr zSw-a8K?&#vLNA*Nn@?NLi`Vsb*9>ZSgiqv1W|?V%Gl zoMC<8A5ZMZ0)_&I=dVlUMR6eRiZu7_j<~l$4ho z?D}7La$S!T&{^VqZ7pcfv)w6WQoQz?ctdrV5uXsM;Mu}+u0@i@1DmE}i)EwWMaD!n zc!&xPv@bz+OeX!V$M&$2gtM4d=3{`axcd!MMDre}cWK!OaM{+cR<=2yw#b~SONXfs ze|Bxe61I z5wCz6NCQ{1hT|N=P8~Y$`@T&vkWaysBKLF7SFQ9{ZBSgN-{G4iLF%dMF4&eph6v0X zqF4%#LNbnwoaW|A6FT_arMrcNuY(|HI2%{iGxa`C2oTmze|~$$Y7~A`c&T0GTNAFpt)d@paI-t>D5^0>AjlQc`4l+HBsb9cz=38vGST)USwr*HP)wi`aU1{Rtni}foa%>hkNd4`S< zqw}A|h_*1dM^1o2{sRc=QG)m7VyMcwA(aq47;&QLaP2VV@Dic)vcW&HIo3+t2yBr* z>H7S%xU8YR`%N&5bN$Bk5MetnE-l=ZVR@{lBda9K<a899SF1@K34VoVq5QBqM_LVaaE%;E&Zh@QTb~yO?MX&U)i;Y*J*8+Rjed#1Qo$~ zm*=d0p<8k!AGlGPC|#;}jHl&wY(#D$`93?HIOW;h?6{T|;fF0vcz~Z#et!8tjnfbU`|hH0RMNqjwqs3kX-`nb|f)hWQ@Ex`Kz^b@>@9I0MZ z4|u}mr=+afZb|=Cv9Z*tiAt)xzapn7B@n7>mNO$XSeIA~vj*=CpP0R>1)-SE1={q( z)mcH8d=~9>xSWDZ7d_cmpM)A~4vBJ*Yp9bdq-NlyPXW>$sT5D?Tz1^|$Cj!-%?Bo#ViRE5q!6R51k{RI;svH|q*_@^RRmt# z5m;<^dHCH^i~i3sDXSQyPUYVpyqK+qLtlrhd9R1gTFk$2)00zFKWU*X6}%c;9YIbQ zjAd&dV0dS%!Q%m_Y@XlN2#{BA7Y~tD=61(1P-(S`ba!p2WZNgoLMz@E#=VVBp6dd1 zlwHGoPDI4nbg*;lo1yDMh}U)lZitHo{5sWu%BZbHPT-ws=7vB-%VeNaB6X~oj=a)9 zYnzG$9U&rPTx>iWrmYJ+GJyMIE`0cg^))Y_*V&9WLA@5ys5qpt-G0dRnga+*3nD~P zeA6NFnq}yl&>7}UMxDV*+9N9+s7{t$*P)}s9>hZTy0K4I8PZ61YT4?1KZZ0#l|-n9y_irSyf6{eV9!0_LhIZej9Gq9)r>(xjERQ+p3e%Ngo5;03-)8r(R;>c6{g>$Opf^t%H^i21 zM)}Lq9H4Re$eK?t#At??SVw%#75tt2N!#4>xYaj4S?kn<;gaum$GceRqz?zUWoDow|;iW>p+L($P7Csv{yTX?+!;i6;7I( zKnVy`0KcT};dX;s-9!hqq{Ww19}8HoR}D3~ym#KukXtq-hw-ZtQhpDwSA(g^rXo#r z%y&F+>9HnOq!_0aZU)B5djt7&EehJ|Hxf`8b>JLN>pJe^xw<#JA6|P!vC}rt-dKeo zn4uFH;${g+iF02xZS~GEsx%g)ixs88)zGF@Fpc33>4=IdejHvj3Rs#LbK%P%s&}OtwIS*h_12veOa;YJei1mFFdBFB2}X; z+Lt=-E=)XKK31P0r3>OLU(Ts)i|GFV`c7#^F|(kOmU(!U=VX$TXkDC^ZWihT7&(v+ z*rTlt1%}sq6BhoT_O3K8$#m`Gai(Uh^mVXo5uNmerCAZ~gmw~jj)9JYxZqYYVd8Fz z4sJ82>A35ZnW?E0ju5!y5+ai2xRz;(il&04X5oTMA#Uk8H+9aL^L~84y&rsjd;=bC z{`a*!*L7dl|5^=jn9(WT3nG5w9+%d|n{T^2ZpQ0`3_tHRxx;sNdCAwD^Wmcp!ecNv zBzpdd^a3yFbvBAJ>tWfRmlh$<$n_FWhL~??vx<;7pDz|2j?q)g*vA-v5(4-xEwVSX zJjegN2Qk6J!lxHOZ6~MwMkdYh)~~V47uzdOI8#zGK|v%q~UekE(uQyLkXskz2 zYJD7yp6#ceuvcNFPJ`ZT*gR|e3%I;6mn@~0wKsxZuYN>t5i7+_Gbp60ASA&xx8TT= zvg~}xLVscOOsUaf)j$itxVe)PuW)mOJNY3P0u)BTx6GEB@gjaW?*K{}pBu_KKWOay zZpHrORM~QAVwpVq^|$foLApqbB}Xs3E&K4-53Emgx%xfee@v?@K^;#TA&~6ghz}Q<9kHMrn^;ca^Ap)Bg^65-@++QI8%c>#u=ng>(bs>;42yzdT&l7OSg`2ALqRMPuZkfI5Rc;h+Tj(oZwX~)q1qLo)IEr1=hUUXMlmLDJ0R{jhr4i9yj zaBHcF!w;Vzde&_OBI*f_4l7ZOIgM2&ahbW*0ePInl2Or2Ce$jEB{Q<(cD{Mu7kNIv z&{D4I_U;OSzwad8yK`n-2-`oKR3kiZono`0 zd1JHfQEdgWxtSlRRtg(BEk)uQjxDzK1g+i;lUI&5kI+=L)0q7T(!R`etXv3eg>x+<;oGIPIHv%`(#dT(kwH_hDAir9##IFsE8*;&GnXmh&uX}8T&|uy8n?Z5)bn;*!g}+P~ zOSvuSC>I#-xnDjX*AQ+TkJ39W#kVXTD@y;tzXoj>{B$S$)|zFn0f*KAMmk^FJLSc! zf$Oo8m+XBR&Nl=^d2=8XS!bV<9>|NkGk?fbm%=lT>cT{?Ms;3){FhJjc&Aagv$xi%T*Ml-p+2Y?>fN;Z(S^QJPo!Gth z;~sRqQY}&=0k1A0$}0RD9J;y!d~aYr!aTH9;4{`M;8O_lEGLqUjM)_dY2;0zQBv zkd}%AUF?0;K5IDTqqq7DH6%S1alZ4pctB27HD#7xd^NM*l~qkkFH^)0XlIv5=Kb`; zV_}}}oyI&1_O)jx+(|dG92iX-*dWfbV}yu_ndHd{+iWPd+XU0vLG!6F`)kkO>43KW zs)ebSl`*#aF6T2P0bb4?^Y{j`@$+}2yCMnG&9PS4T77@RDO1>a9N4;vI~>Y^-NS|2q<+NmB-lno}HgDq*HAUnICx%kj8 z^K4B7=m$bAKi{*bR!qsG{D=@yZ)8JR5sw{yFK<0>w-HLsksdrg;oeS<4d7t#(D!I1 z-VPKhSkh4XqOq{_!jyMr=Yl(fwf5$~|G>=a&Ff7!ZhaaP)d0ps=|mqNZG;`FlT_+e z>fW2!Q0kx4a+(>mc2kukGjzd)>V;UH80I91096zq!3s9Px9j(ADE+-Kw~oy-Gw3zu zRnpe+Y4$p-8?8;PO=C->19FO4X()3LEpwl3}*obxaOgK2r7B=mu!I~nXbBAc}!#9(hN zA*6&pdK)-*+%#@I|3IlN67P+~MYaK+qSlW6xnCowb#+($;Sm*=N8&Z##H=`kOH%9C zVou-D)hoNF)Nk%yi$rFS$+6_iNy3M*rew0PED|f11te1ewb@b7P2p`U#LB^~qCVl% zn-r#cl%5vZW{k%fchGK+tDe=ufkXoW3LU$3(l9{!VYF~aAJZS|W}V@KhFaqdl%HKI zy%3=ItJT%4MIu*Y^V?;G602E}i<9n+6nNaOJ8iUu8_~VD?(?Je9_!HQg9NaB@wBHpdhGCsF3?Q zAoq(Z0jYk+fb3h+^&SEV1giw|dA&bwxxei2nDT_Uz}3%B+;B8y0k5TVK{-{znEC`? z5H>s|Lb>FHd9koOp%OMI6;N)|#To)E)fUmL_2Yj8^6TA>j(wxUx$t?%6vkL(;=zYN z1(>zF&Nub5B;yxJB>XE*$g%aJUtffwE+{n87ii=;9cnqTwu48cXQCUyM21IAs<5-W z$>gElWt9yEIg9z)ZOsia%}%%-{Yuh6&eJ*-`2p*DorAM>LI1>qD7}vm171W!poh1| zje$XNpNqeL*Y9;KygiFK@_1Byw1Z)=wtD)4`S?VXAH zG87tq5$uox2e3n0c&sxPkHui3z{}>BosN#$rolW;P8MYoy2?G8S~5)vo|E#(Z=<-s zPT%yBPTQHNTjNjZz>7_#&XnX&TY?9=9}jGs2bX5<&9x1G#Wru)yqdO2?2*_!{L`^d zQd0IaMAeXM+euEH21Gv~*qr>TRXjWzu{<_=PAZ1t(lqpKn7f2aI$K@$cRG^7-Gn^um6-qP1F{q1{4<^ zzJ5Cegqyu2n34(j||vvl=tR5kZ%P) + + + + + + + + diff --git a/docs/static/img/nunet.webp b/docs/static/img/nunet.webp new file mode 100644 index 0000000000000000000000000000000000000000..40145c64c3d212113cf6def8dcd0325ef7681245 GIT binary patch literal 5498 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 L{1@N*mmK&Xvj_ + + eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO19WVdcdTAwMWJZ0u17/1xulu/jLfI789BvXHUwMDE4T3jAlClcdTAwMWLbt79VS0hcdTAwMDJkXHUwMDA0kiUxuVf997t3MihPKkUmWGBcXGWqy+1CUigzT0TsXHUwMDFkcVwi4vz3X0tLjyZnw+6jfy896p62W/1eZ9Q6efRcdTAwMWJ/f9xcdTAwMWSNe4NDvKTy/1x1MDAxZVx1MDAwZo5G7fyde5PJcPzv//mf1nCYTT+VtVx1MDAwN1x1MDAwN+ef7Pa7XHUwMDA33cPJXHUwMDE47/1/+O+lpf/mf+KVXoefX/lcdTAwMWPl9mjzY+tl/9v41WdcdTAwMTFcdTAwMDabvZX8o/mbLi9o1G1PWoe7/e70pVP8XmrhM+GtMdaKqL2yVy+f8WWhVSZcXJB4i9JaiXD18kmvM9nDW4xwmbDGXHUwMDA1P/3oXre3uzfhzfqQOa2CVFbkP+7qPedcdTAwMTfz7yVx9ZvxZDTY765cdTAwMGX6g1x1MDAxMa/4/+yI0Fx1MDAxNmJ6vdut9v7uaHB02Cm8Z6fbjnH6np1ev785Ocsl4yHjYT4qyd+6uG5Z+v28T+FcdTAwMGJ391x1MDAwZbvjcfKZwbDV7k3OXHUwMDFm0fRcdTAwMGV4dcO1Tr5W/zu9plHroLvGxTo86vevft077HS5XHUwMDA0j7aLN5nf38XXXa70dFx1MDAxOfXFb/6aXny328lcdTAwMWa0j8Jf/XaqbtqF8m/XXHUwMDA3h7nqRVx1MDAxN72QXCJOr2j8XHUwMDA02jbJXHUwMDA17rT64+700fOqnpY1saiNibJNuqeTq1sq6OrXXHUwMDE3Zufj20396s1cdTAwMWZ7W8OTbW93O38+unrfX1x1MDAxN3+bPrqjYad1fj3SK2dcdTAwMWTuxoYwXYZ+73C//Fxc+4P2/vRcdTAwMTb+VXhcXCXLqb6aXHUwMDE5y0lu5sJonM2sV0E7ZZ0xKpSNxtdcdTAwMTiNXG5cdTAwMTFGXHUwMDEzo3BC2GCjmTVcdTAwMWQr7tNU9lrtvaNR92cwXHUwMDE2WW0sydsvrFx1MDAwMutcdTAwMTN9XGLGVlx1MDAxOIbyap5hSG9s8EZHf1x1MDAwYtNIruP79XeqjlRDPICnT54/XVp/++Tp0tv1pXdPN9++f7f6dOk/h1x1MDAxYu/eflh78vRdYYFcdTAwMDeHk83eN96RXHUwMDEyyW+ftVx1MDAwZXp9rodNxK/0e7t8NI/auJfu6FHx+Ux6gKarN0xcdTAwMDbD6attSGz1XHUwMDBlu6O1JoA0XHUwMDE49XZ7h63+XHUwMDFm197P7N20jiaDd93x+f1MRkfd4kPsvrg0XHUwMDFimSlbafPXXHUwMDAwYUEp7IyqXFwqhZIqOlx1MDAxN5yLVUrZetRAVc7djtNcdTAwMWJff4/t10+fd549V09aoydbrf5DQbBZV8NcdTAwMWK03mRKO22iMULA+yX+LsKZ4SVtZ9xd2U3JLv+53k21bCfs7Ezfc+kybTBcdTAwMTm+XHUwMDFiLvOcS0zv5MplXHUwMDFhpTLpI6iIifnP1K1eOFx1MDAwNKmMcV44q2/nhm6KzjO4eefQ1kjN9axHvPJ9VkvrXHUwMDFjnmCVmm83V/Ozky9n4fnqyccj8eXrwejV23cv/vzj4aBPtaL7IDItnHMyVii6XHUwMDA0z81cdTAwMDJ03FxiZaP0/k5cdTAwMTRdm5CBjmupKlxitTQ6s9piidS5jvuyilx1MDAwNyGM0bJw6X9TXHJPeVlBue1cXGB31kBcdTAwMDdC0FW63W6u299cdTAwMGVf/bn/XndG708/nJ6tvX+/uv3m7KHrtlVcdTAwMGWqXHUwMDEzXHUwMDEx5lx1MDAwNa1UXGIpaY1aZNFqXHUwMDExrPRU/ztRbe9xXHQ+XHUwMDA24aSJYL5xVsG1LSu0Q2iDy1Xx+1x1MDAxNTp5obHmeq29Nz7eirZcdTAwMTVJWEh+O4eE8Vx1MDAwMcpsaX3Q6S6d9CZ7S93T4WDc7SyNu6PjXru71JosTfa6S93ObndpsLP0YmN1qd0/XHUwMDFhJ4RtYWwuucUydfvuy7xcdTAwMTdOXHUwMDA3Zz1cdTAwMTfsonfgXHUwMDAzskj0p1x1MDAwZaHT3CFMTv54XHUwMDFkn339+Pq53Fx1MDAxZO+vXHUwMDE5uXvwaeuhO4QgdFx1MDAxNoFcdTAwMTTzwC7azPP52LtcdTAwMDQ7IbOYo8NcXFZn8Y6o5Fx1MDAxNakruKZzXHUwMDA34Vx1MDAxMY+bIOKP4nRXn7lRLmR39GJt/YWfXGLZds86wk6ef42PXHUwMDBiuZDfqsWef1j8vjFcdTAwMWO+23+zubJ3XCJWXHUwMDFlt7efb5x9Sb/l8vtbo9HgpKncOFx1MDAxY+ndk9PVXHUwMDBmXHUwMDFmV/Xvbbf1QlxmnjxuJvfib/eUu6l+elP/Nzd3XHUwMDAz8M+8hupbq51SPqZKXHUwMDBmrc+UR1x1MDAxOFxieEqU/lJhpVGZZuYmXG7rnSwkXHUwMDExpklPe43hzVx1MDAxOE/0sq3+XHUwMDE5mZvOh+apm2BUhF8yU6OeevRcdTAwMDJcdTAwMTKXXHUwMDFjelxiXHUwMDExzFx1MDAxN1x1MDAxZa2B577vxM2H3mhy1OovvTra5lx1MDAxNd1Lnuag1+lcdTAwMTRRsZSqqYGtMt7PvYNF4TjfXVx1MDAwNeEhinkrLoWSXCJE2GqVxnWbQ/hK7P/+bfJ4f//FRm/txfrxpndhXHUwMDFlp2+PXHUwMDA24/HyXmvS3vvxMO7g0aQwTntrlHCi5NGEXGaZkyD11oiofMGgbuOKtHLtrp3FcalcIoJWRFx1MDAxNyYo6YHHXHUwMDE1oauyWVx1MDAxNC5GJ61cZipcdTAwMTSw/jI7XHUwMDAzlu1EwJ1UupopNo9emr2dz19enk2Oevth6+zw9+HXzVx1MDAwMkw9ev9p7UtP7Dw9XHUwMDFjPH+3tr4+7i6//fb+XHUwMDEyrO4hZPguhzGetEaTx9Di3uFu+SPdw86cV/qt8WR1cHDQm+AyNlx1MDAwNr3DyYxnpdxcdTAwMTXC9l63NXPTkDz3tSHFpWsw/dvSVFx1MDAxZvP/uPr7//62gHcv61xm4ZcyJmqD/1x1MDAwNyq75PNcdTAwMTlcdTAwMDA9XHUwMDA246VcbkpHo0OtQFx1MDAxMzKrYjTRwcLhPXxRnlJQY6H4TS5cbm3cfYtcdTAwMDPbRaCOd9tcdTAwMTiksMIm4kxcdTAwMDaeXHUwMDBiXHUwMDAz0SriO52uXHUwMDE3XHUwMDA331x1MDAwMI5cdTAwMGaKLH1ApGNcdTAwMTJxIVPGwVx1MDAxZSFP4fJkrThn4MKtNNb5XHUwMDEwrDChKFx1MDAwZcG9U9xcdTAwMDdWIEfG+vqlWLw4rYP3XHUwMDExXGZcdTAwMDAuxiU3XHUwMDFiRCZcZlx1MDAxNMlcdTAwMDNMPJhdvTSdXHRcdTAwMWRcdTAwMTD9RKVMiMm1weXil1pcdTAwMTmEJVoqUy9MZVx1MDAxNjdiLdxekMH6kjSwSWu9tPiuqFW9UchMK0REykXtXHUwMDExwenkViXUzoPaXG6pJC7fqfqbXbhA6JYmf5POc+cg2pBcbrSZgMHihqHF1Pd6gSazXHUwMDAxXHUwMDE3J5jh10basrxcdTAwMTRb6uThXHUwMDAzWFRcdTAwMWI0kdNcblxcwzXy6rVl0eJcdTAwMTCFwKE556BcdTAwMGXBXHUwMDE1djKunlx1MDAxZb5cdTAwMDSaLGg8oVb/tMrghISDR/EyKjGzui5Kg6v28KPC1i5cdTAwMDZMw2BprcTHYFx1MDAwNr5sXHUwMDFiXHUwMDAxLMTSaytowP1cbrPgQlbCacDcYOW+5Fx1MDAwMoyWxiltXHUwMDAznLWOXHKkXHRcdTAwMDRcdTAwMTNG5Kym5Fx1MDAwM+ifYP5cdTAwMGWsXHRr5Vxc7bXZPN1cIlx1MDAwM/BcZmtcdTAwMDAjKvliXHUwMDE5oT7AMVx1MDAxOVx1MDAwMCbR3rc4qFxi9EPDg1x1MDAwMk9h5WXkQbSrqFwi8NRYqFpvbKDCXHUwMDBlrlx1MDAxOF+udVx1MDAxNCpcdTAwMTWHIDpKXHUwMDBidbNcdTAwMGXr4VxcrUWYTGJcdTAwMTGwfLhcdTAwMTdn4YJmaFx1MDAwMGJ6fFx1MDAxNcVhwWrtf9Hyllx0L3lcdTAwMWRcdTAwMTS8XHUwMDFl1EHBVyVcIpcl31x1MDAxMDT+XHUwMDA1XG6A5lx1MDAxYd1dlrX3PY8t/av4/zeNp2jrc1x1MDAwMyqm51x1MDAxZP4sxNDTgGqneUC1Nd58az6vrHftk6O1/uNcdTAwMGZxS/rfXHUwMDFm9j73eSil6T5KUcxFXY/JXHUwMDFjIFx1MDAxMvZOzS1cdTAwMTSz3S6rU5FcdTAwMGaNsLOgPVNcdTAwMWZcdTAwMGV+ulwiXHUwMDFkXHUwMDFhNbfBNXTXRi1cdTAwMTDQzURRcJTAXHUwMDA17avzoVcq9CtI+vtcdTAwMDRJMoPTXHUwMDAxXHUwMDEwwJFcdTAwMDZQZkRcYqk3i9abIGn2XHUwMDAwXHUwMDBiqWvBYFx1MDAxOYzAOiHhXHUwMDFkoWdw4TZhXGZUQVx1MDAwMWORWmisYmxcdTAwMTDX1Fx09Fx1MDAwZWCF+N/qgODGfv9cdTAwMTXeQiBcdTAwMThcdTAwMTfwSuJcdTAwMTNMXHUwMDAx61x1MDAwNO1cdTAwMWT4MXxi8Fx1MDAwMp6bYUlcdTAwMDN5XHUwMDAyolx1MDAxNFx1MDAxOD94XHUwMDFmiJxLXHUwMDE5q8wrajTJNCSbRlx1MDAwMkNcdTAwMDTiwzVcdTAwMTlng1x0psTiMjBPXHJcYqL940Lr4yWVRTxBxtX0dTYkSiPxXGKB9VwiXHUwMDA07lx1MDAwZeFp1EPgouX5LHAphGXhXHUwMDE1o+FEXHUwMDFl4lx1MDAwMU39g0gv4G/rgzA8XCJP1+pcdTAwMTGIg1x1MDAxOUWVXqAjQIPl4bvAXHUwMDFlXHUwMDAx0/VcdTAwMDJ9hlxiXHUwMDEwi8FlXHUwMDE03qlEXHUwMDFlo+tcdTAwMThBwLSJXHUwMDE2MUl9tK5kXHUwMDA2/uA9XHUwMDAyVFx1MDAxMC3Eglx0Z5JcdTAwMTm03XtcdTAwMTVcZt5cdTAwMDAu3MDoXHUwMDEwlYCGaIu3e1x1MDAxYUFyw+B0oNZcdTAwMGXvXHUwMDAwXlx1MDAwMHN0XHUwMDAzXHUwMDE1dJnBWihcdTAwMDYz/CMxXHUwMDExXHUwMDA1Qlxuhlxi/FxmXnKd6+PYhctcdTAwMGIsvFx1MDAwNVx1MDAwYtNcdTAwMDFLaZxXJYHeQo+MXHUwMDE2gbZZy/9cdTAwMTlcdTAwMTZD/Vx1MDAxOIGARHtn07hdIZ7weLjgXG6K+df68GRZI9ihXHUwMDE5QFx1MDAwMSNcdTAwMGItTEljXHUwMDAwh/BpzoKD6OjrNVx1MDAxMIxcdTAwMDQqK5RcdTAwMTDeSlx1MDAxMFx1MDAxY12Sx11cXFx1MDAwNlWRil+vMItcdTAwMTaHsNdaPCPpsFx1MDAxY16VomKPICBcIjRAXGKDh1hcdTAwMWZALWteXHUwMDAxQi1cdTAwMGJcdTAwMWZcdTAwMDJfXHUwMDE3y5dcdTAwMDcwXG4+391z+K5cdTAwMDZZj1x1MDAwMFx1MDAwYlx1MDAwMCaypFx1MDAwYkGh0eXVXHJcdTAwMGXPgVx1MDAxMZGF0tSL88yBw6CYQUFcYjVcdTAwMTPycE9cdTAwMGL0XHUwMDBlT1x1MDAxNo6tweU5hCFGXHUwMDAwyGCeuKdyalx1MDAxMXqEXGLFXHUwMDA3xoCx3t0vWlx1MDAxY8mwxa1cInSH70gzRvAtsFx1MDAxOVx1MDAwZqdcYu+CXHUwMDE1aSBOZDZcdTAwMDbGqnB+MIPUcl1cdTAwMTbPk6g+eOhMg4xcdTAwMWLkXHUwMDAxOCyzr1hcdHysnPo0kWVyXHUwMDExYahSoFx1MDAwZvW+JWZcYlxmLPmE4Fx1MDAxNqNIrzBm+DWWNk/XMDtz/1x1MDAwMpnlUVA9J8gpbOr8sFxcUWvCXHUwMDBiWFtskK7gXHUwMDAyXHUwMDAzi5jgZOZcdTAwMWQ+uCjOXGLWbYDZMJBcdTAwMDVcdTAwMTA3IFjwXHUwMDA2XHUwMDAy/iN4R1x1MDAwNyOmNWa5PM90XHUwMDAxeYtcdTAwMTZcdTAwMDZg1Uz/XHUwMDAy7ldJXHUwMDBi8lx1MDAxN1M2ZDXoYcRvLf7R4Fx0XHJu12Z4OFx1MDAwZYaOlVx1MDAwMFx1MDAxM3AleVx1MDAxMTZcdTAwMGLKQN9cIppkVFx1MDAxNyxcdTAwMGVcdTAwMTZcdTAwMDDXXHUwMDA28IdnM6VtXHUwMDA2azNcdTAwMTghOCvcMnOu9apiJK6OVFx1MDAwN1x1MDAwNo/lc2VxcHjMVbs8XdZgT8WAXGKBOVx1MDAxYlx1MDAwYl31pWSKdbg6UjXvoJyhyZ5cbu5cdTAwMDeoXHUwMDFm4JJcdTAwMWQuJHUtXHUwMDEwpyX4XHUwMDE5XoHHXG66kThW74NmXHUwMDAwybmd8LDEuYycXHUwMDFkWlx1MDAxZsBcdTAwMTWlL4tjvs1FwFx1MDAxMLyZaGC2sCTgoLdRkZKE0uV5KJ6B23agzVKqXHUwMDA2muKoqlxuulwisHygLElUJDJ8XHUwMDEzliiA/UaQrnovXHUwMDAweVx1MDAxZWZcdTAwMGJcYlx1MDAwN9JAXHUwMDFk0tQ2XHUwMDA0srBcdTAwMDaMXHUwMDE0QVx1MDAwMpG8wf2S5DJcdTAwMGU1XHUwMDAwXHJoWeL1XHUwMDFjXHUwMDE4NbyeZ1JcdTAwMDQoXHUwMDA0PGiiy4jxwPVcZjwv4CtccjsgkLG0cPhcIpZcdTAwMDE1iKWNJlx1MDAwYkLU44VcdTAwMDNcdPdcdTAwMGKQXHUwMDA3XHUwMDFmwC0xgII3KVx1MDAwYoI8wy1cdTAwMWNcdTAwMDV25FxyXHUwMDAy4HtcdTAwMTcnspzCsv1cdTAwMDJxbeluXHUwMDA1Q1x1MDAwZTiqXHUwMDE4sMxNnJ6Ak1x1MDAwNCZoR0qaXFyajYigmbBG+CVcdTAwMTHVNdg1Q8hcYj5cdTAwMDBcdTAwMDJcdDDzQpXFXHUwMDAx7ExeiFxiuFxiXHLCP5B5UEfPkmrNqNGV5OGJ4luAXHUwMDAyXGLLRYNgY8HiRO7iibdeXHUwMDAwMUp6XGarsZbFUiyE87ZBbOV5eXmRh45w9unKepF5QJ1UwYI/ilx1MDAwNslcdTAwMDdcdTAwMDU+YjVA32NBpDKJ3XpcdTAwMGI36jTjU4svbWBcdTAwMTWIJnBcdTAwMTeOXHUwMDA1YFDmKEqbNey3xCV7vlx1MDAwMupRL47RO/yQ5Vx1MDAwNibgq7yRJFx1MDAwMsBWMbp3scHu5eLFXHR4SFx1MDAxMFx1MDAxY2mZXHUwMDAz84muXHUwMDA0OD1EuVx1MDAwNtRcdTAwMWOeVtXfLENcdTAwMWRcdTAwMDNSzTRB1Mqb9PJcdTAwMWM3wllcdTAwMDCPP41s8PCUzFg/XHSyXHUwMDAy9Vx1MDAwYsGn5Cdwb1xuZMZr8DZymia6olxms302kq1cdTAwMTTqtS/kRTB4b1x1MDAxNPOAXGLXfoQ8aLCW2nBcdTAwMTfTWpXoXlx1MDAxNFx1MDAxOdiPZ1Ypgus1SUXy+nSQhmlcdTAwMDeWliS2XHUwMDExsbzkRSCQQlx1MDAwMklcdTAwMWLllXInXG6mrLHKJt3bi7h6qFx0iFx1MDAxZb1cdTAwMGY8c736xYx7z560XHUwMDA0qJbmqWY2KJqIY4aFgTO9m4ulq0NY6OG+glx1MDAwMjOI9Xeb21x1MDAxYaNPXHUwMDA27oJAU5JcdTAwMDdcXIJEZmRcdTAwMWLQKWYpoFx1MDAwYlx1MDAwZTZcdTAwMWJcdTAwMDTUXCItoYl5XHUwMDFhN8KLsu3K1u/EU1x1MDAxZfBcdTAwMDU+yFx1MDAxOWAu7F6XdFx1MDAwNTbBWDB6+opcdTAwMDZ3u2h5LlN0ucZcdTAwMGKQWyd92TaEXHUwMDA3k4FcdTAwMTbD3atcdTAwMDZJXGZcdE9OXHUwMDFkIWowV5tcdTAwMTb5XHUwMDA0wJBcdTAwMDJblVwi4iFcdTAwMDZX71x1MDAwYiSiUtyqNlx1MDAwZTQ7MFxylci7LMyJpCyhifJRXVx1MDAxOaRcdTAwMDH2aXBJlFx1MDAxYvJdXHUwMDA2p6nqtO56WJPc2Vx1MDAwNlW2bFx1MDAxYsLnSp5cdTAwMWVsjz5cdTAwMDVxKcHXNzC1XHUwMDA1y3NMSktunFBt4fNt+fHBXTPwXHUwMDBiXGJcdTAwMWbqWUaeZFx1MDAwMYYz8lR4RjJNOrB8XHUwMDAzIYOialx1MDAwMvbqQz9ET1x1MDAxZSvBbDlUzOlyMVxiy9jA0jRcdTAwMTbZ16dH8fAsXCJccnwxnLJQprS4N4RJaopDXHUwMDFjppiAXHUwMDA0ekRVVlx1MDAxNWOMY4FcdTAwMTmgw9dubyxanGHyXHUwMDEx/lODqMNLXHUwMDA1U3p0oOJcdTAwMWUqXGZQbrA3RC9cdTAwMDD8jsztsYYjlJ1cdTAwMDC+h/ZcdTAwMDK7cfXkjD5cbrzWXCLw057J7bKPMtGwXlx1MDAwMlx1MDAwMOVcdTAwMDFpXHLEcdGY+IFRXHUwMDFhacvwKIOh9eO1XHUwMDE461x1MDAxZtxipVx1MDAwMXxcdTAwMWO3tY2E3TqbljNFNo84zVx1MDAxYYKgPFx1MDAxNrdWXHUwMDFjaD9UXHUwMDFlXHUwMDExNlx1MDAxNlx1MDAxNYgrS9JcdTAwMDBuiFmA2lx1MDAxYV6+1rrAK/LNNISh+X6LKmNZhMIh9NCM3uqrS0lTVFx1MDAxZVx1MDAxZDpgs4oylMR5WF6+XHUwMDFiyLRzrZaQRSFYJ9GEuzUlXHUwMDFhwMZseECGRlx1MDAwZcpUX+CHi0NcdTAwMDTKWEVbLIYpaXBcdTAwMDDdRpjHfLipj1x1MDAxZMlojTReXHUwMDFhOFx1MDAxMbi5Mp81XGLJoOFSMni7X2HcpoieYU2e6k75XHTwXHUwMDE1hC4wxy1Y3lkrjpFcdTAwMDWAmISfg1x1MDAxMtIkbeB2XHUwMDE4XHUwMDFjNL5PcMur3lJcdTAwMDOor2JcdTAwMGVcdTAwMTbmRc+d+jjGPUBcZpZ0ws3VYjUsXHUwMDE1JJrzdlx1MDAxMLNyQzNxI1x1MDAxZbQ9ssVcdTAwMDG0k6n9elxy0YxcdGFWMGwymlx1MDAwNFlcdTAwMTGAqnxcdTAwMGZWM0Cuz2shOsbTxSWBlUCnXFxcdTAwMWG9IzpcdTAwMDZnUYhorVx1MDAwMWmvXHUwMDBmj9mNjfU0XGbg8bhcdTAwMTNcdTAwMTVB6K7PKalkVlXWXlx1MDAxYlx1MDAxM1x1MDAwYoF8XHTxO1widFFOLIC4gkDAJ5Fk1z42ZlG4v8Z6XHUwMDEzRIPBl6Q5XHUwMDEzXHUwMDFjyDzTbVxySklcdTAwMTcsjXv4IP6KSFx1MDAwM36vStL4KCXoXHUwMDFlaFx1MDAxNGhL7YMzXCLzTHv6PPflSntIXHUwMDBlludcdTAwMThcdTAwMTRcdTAwMTg+WPilWnFcdTAwMWFYXHUwMDAyMGXRSn5H5UxbXHUwMDFlQ1xi06CgXHUwMDFjothcdTAwMTJvmJdcdTAwMDVVU2VRltX0MpDJhXpAZYZcdTAwMTK4ZEHBqcNcIt2W/uHioO8we5BMai+QuiTNSXxcciRxmll9MMx0e1RMfXtcdTAwMGZklzPpZ1xcXHUwMDE20FlbuM36XG5cdTAwMDEm21xyq0SxXHUwMDEyivmYksLhXHUwMDBiQO1cdTAwMDRzdj7UX1x1MDAxYp2IZ/V40PSLqfrCl+Y0XHUwMDE2ZFx1MDAxME+j3ofk14bbXHUwMDAwkUecVEq0Q1x1MDAxYeuScLfUOF2/XHUwMDAzhedcdTAwMDb+o1x1MDAxMaXDVp3zvrzHXHUwMDAzfXQs32a6olx1MDAxZVDzLVx1MDAxZe7+R9hcdTAwMTVrZErSXHUwMDE0Y1x0XHUwMDE2doGh14c1xmTchKSSsOrLzew/XHQyaSCQZlx1MDAxN9w9S5N51YnO/Vx1MDAxMnxIqlwibFxmgJOHXHUwMDFlWptvNjRwcexxhatg9Mbdl5I8KXTePkSWXHUwMDE3XHUwMDFhgIPNPHwsXHUwMDFjUmCnS5zZp1x1MDAwNKfQeek3qGN9zVx1MDAwN3dlWUAnc8ftYiyJc3ntXHUwMDAzPD58fT2JW7g0PmjBXHUwMDFhXHJthU90jlx1MDAxYtCKSTXcK/NcdTAwMTH19WR5sVxmLJX7XHRCXHSrk5XgXHUwMDA2Ob9cYsCrgFx1MDAxZvWNaZy0XHUwMDE5rYeriIKJ9lx1MDAwNPN56dxcIlx1MDAxNFx1MDAwZUSFpVC1V6eAdqBcdNws9i5vjfstfVx1MDAxNdG9xoVcdTAwMDO+XCIoTj3Bidn5vEKEo6DTdqaVjFxcOzCjXG6X0qjDZZHiNGNITeT0hOJy8VxiXHUwMDFlXHUwMDE4O408XGY6NOivXCIpXHUwMDExrMN2mlmDtHeJpS2ej1x1MDAxNjhcdTAwMTFcdTAwMTD+Nrg4lzEkXHUwMDBm3OFcdTAwMTVsO0jEKXJcZsvxnWTc9b5Oe3a5cT+HwUu61a7yXCJWgUhcZmE0iXD9rS5WWsicol6x6NaKlGkya1x1MDAxY7xkpaFlJU99clx1MDAwZeK48ShVIFx1MDAxOEtVrveyzGmCTSmjXHUwMDE4YDS4V1x0lII+IVx1MDAxZVx1MDAwMekvV6MxQonMXHUwMDA0XHUwMDA1w4RQk2XlPqZEKFx1MDAxN50sSzMsMlQycphkXHUwMDAz60e8kT+XPE1cdTAwMDbMNiVxmuk1w399k1BcdTAwMWacP7K+UMKOYEVOllx1MDAxZZ2g+lx1MDAxYVx1MDAwNixcYlxy6q9cdTAwMGVcdTAwMTGEXHUwMDA36GBt8b9cdTAwMThT0OFKYJmwXHUwMDE2LDxiNfO9y1x1MDAwM1x1MDAwYmTZXHUwMDEwwMLAMl2YqeRj1pO7zlx1MDAxMm6iPmud15HCXFzhilx1MDAxMaSrUlx1MDAwNVxu60ixTkzZMeDWXHLSXHUwMDA3IE9s0Vx1MDAxMsRcdTAwMDOYhpwpdDVwXHUwMDAxwWp2nNbX4bKul1x1MDAxM3vgUaCnLHcsOSju+ELJZVxmLPSrXd6Fy2MtXHUwMDFmjImZZNZcdTAwMTOm4Vx0l4Pmj5dcdTAwMTDDwzHWiZMgNYicXHUwMDEx0ll6cZlmwWBcdTAwMWKKXHRwXHUwMDEzQ74xXa8tLFx1MDAxY3CAXHUwMDFlWFx1MDAxNFx1MDAxOVKaUpdAWrhcdTAwMDHL2lx1MDAwNYJ6PWtXXHUwMDE5XHUwMDAyXHUwMDFk4cGIXHUwMDEx3Vx1MDAwNcTRqSdApFx1MDAwNlx1MDAxZcBdeDZcdTAwMTVZWf/0XHUwMDAwV5aNylBcdTAwMTZcXKBIU+p5nT88LHxcdTAwMGJbXHUwMDAwXHUwMDFhXHUwMDE0XHUwMDFks1x1MDAxMYFxk2HdXHUwMDFkQq40imUjXHUwMDAyXFwse6xBK9naVy8v7+zlJrtjeiStXGLKuO1ic+uIXHJoQFx1MDAwNl9nmVx1MDAxOYHae5fuRuDJ4ZusXHUwMDAy9SNcdTAwMWZz9cVANeLob4Bzno1cdTAwMTdYkPtcdTAwMTYnXHUwMDE5XFwyUctcdTAwMWFqhP9pco1cdTAwMDWV3rOMXHRcdTAwMTRcdTAwMTTkvtHmXHUwMDBiq41xXHUwMDE5cEFYYDz1VKBgaSFdospcdTAwMDfYqfrtybtpN1x1MDAxNNPmnHK7oeYuk9aictzobvNuQ7H25WXrRfw2fNs7XG6Ptzs93Vx1MDAxN29+ivEtPmY5yOm84l+UZ4kzQuSANs9u1WC/r+dw7vhcdTAwMTZcdTAwMDTcLuQ7XHUwMDEziFx1MDAwMlx1MDAwYmOvptNb8Fx1MDAwZfg4XmTgSLiZuaOsXHUwMDFhXHUwMDE33Fx1MDAwN6+e03ilSr/aXHUwMDBlXHUwMDFmcNvhMmvG4LjzST6sIU0zz5d771xiVZhPdlxyulx1MDAwNCDQS3Juxao1IYy7RmCTMrSFXHUwMDBiRJCDXHUwMDAwh/28oGYstk3kldW+Vlx1MDAxYzNcdTAwMTaMpqzL9zXSjKC0eTFcdTAwMGLxzIo8bVxcK2+eafKHJW9cdTAwMWXLoMCMPGdPNCiTW7C4fFx1MDAwYofhXHUwMDEym1x1MDAwYpjOTSFSXCLgZl2g40LVJ9zZ4+hB5FgllVx1MDAwZnws9bGyRolcdTAwMTM72Y1cdTAwMDVQadSVL6jRjEhcdTAwMDNnX4RSqJFpXrxnUz6bc4ztLtdnfu5cbiXnXHUwMDBlKmVcdTAwMGJcdTAwMWN7XHUwMDE2K1x1MDAwN1x1MDAxN+/dYMjZYF1cdTAwMGZbQ386Ontcbu88Wn45ls9+XG6UXGZcdTAwMGVBXGJcdTAwMTSD8ZZcZq485FxmKFx0xlx1MDAwNFx1MDAwMo5w293RiDPH4fJcYvhYXG5cdTAwMDRmVXXeXHKtXHUwMDBiXHUwMDEwI1x1MDAxZLPG4FxcaqY7P3L2XHUwMDEwi/Z+oeRPi5I3e3fIXHUwMDEw5VwiLGRxPVvW07a7XGZOiYO5XHUwMDEwLmkjZH2VxHw15I9n8b3n+lx1MDAwNSvpk+vEMbaXrKtcdTAwMTA2L9FLxzRcdTAwMTGuhEMsbySTSPVcdTAwMDHYgsWpjL2wllxy3uxcdTAwMWMyaYp91tpqXHUwMDFmXHUwMDFln1x1MDAxZDtcdTAwMTPyYVtwqL50fVx1MDAxY/XD/Vx1MDAwZVx1MDAxN4I2XHKAXHUwMDAwj1txdJmWlmO9VLlFXVwijFx1MDAxN8wxcExCLVx1MDAxN7krXFxx5V9PXHUwMDBmNVx1MDAwMdJyP2/qy1xuwNJrXHUwMDBlLI/N6LNeW18zn5+dbmnn9ejN+NtPXHUwMDAxLKx/gHFyXHUwMDAziXOup375/PNcdTAwMGXmy1Q1O4FNYazXYqHF5p1cdTAwMWbWcC5QjD5WXGbGZ35cdTAwMWFuJJKZkazOjME2UjDh5uuGZ/5CloeLLKDTLJbVLs/tcVx1MDAwN7z4cWgqXGKQziekgqnWbyqUxKl0XHUwMDAzJWasi7OOlZeCRTb3LVx1MDAwZeTbh3ycUmRy15XzkoHdPNw0g8I06NCOmWPNv2c9l4JcdTAwMTmlaVOdXHUwMDFmRKiF87h812B6RlwiLpb3siCOL+JZXHUwMDA0mC1QoE7cMpP8Nlx1MDAxZsfBYZxGp002uXlcdTAwMWImsFlLXHUwMDE5mzR63oFAXHUwMDAz5DPRSIdbiyFtXHUwMDEzXHRcdTAwMWPVodhccqjyXHUwMDEyqlrtXHUwMDEzeY9cdTAwMTJiZsOJVqzoTOd7LF+8wbm8YVZAXHUwMDEzYn3O844gcm6CUlFcdTAwMDGMqVx1MDAwNMgvzVx1MDAwMXLydu3levfV+vHkZPLqcK+18+zDmftcdTAwMTlcdTAwMDDSXHUwMDBibp9rTpCVQU5cdTAwMWLFp/jInLbmiUWF+HXR6GiY01HCkNtOK49SdOShfWBg0HQlXFxcdTAwMDGoL/KTgvlcdTAwMDTj5S98/Hnx8Wbvhj9zOq9Gy4upfcr2ecpcdTAwMTbQhTWKkUXgXHJGUHJ2XG7HXHUwMDA3s6VKuVx1MDAxOXebKmCtu41MWSDky/fSvEvr3Vx0MDJcdTAwMWaOzFlfcEL1ua6SPFtcdTAwMDYsa9nEkHf43fjivk9cdTAwMTj3XHUwMDE4g1x1MDAwMK5Idlx1MDAxN0mRJpUlXHUwMDE4Nlx1MDAwN1x1MDAxZnNOXHUwMDEw9/DrxVx0zsjOx65cbqO1LfVcdTAwMWRg1Vx1MDAwMzdcXC1Zsoj1IzYz3CdcdTAwMGaYUd57mU9cZvktfVlz5lx1MDAxMVusjGLH1Fx1MDAwM9xGY9+wXG5zYGr/XHUwMDA2QzvXzPH65+fi+WhjXHUwMDEy14fH/YP+45WfXHUwMDAxplxcXHUwMDEwXHUwMDE5XHUwMDAyuHxcXFxidGMmQeiBU6BDjlx1MDAwN8DBgq85zeg7kCqyPYKDvKFKpEhcdTAwMTVAda6dzFpcdTAwMDQ2XHUwMDAziFmcUkFcdTAwMWFdPNjvXHUwMDE3TF1cbvtZYMqwKDxyXHUwMDFin4PrdFqvsizZXHUwMDEzQ1x1MDAxZOVEvnxSY3e5vnjNgyyrXGJcdTAwMWHEMnhR6qRhOVx1MDAxNTxcdTAwMTS8q7JcdTAwMWOeVJ9cdGNPv1x1MDAwZk5ohFx1MDAwZTzGqJRFZPmB5NQnlvHUQ6PKpOb2ST6rivtHXHQ2lnW+wbZS5lx1MDAwMydJxrzyl0nD6y6vyWRK2CNcdTAwMWJgOIuMvW/+mqf3g2Yyi/lnXHUwMDBmXHUwMDA3YFx1MDAxZNM+Vc6939y5byy/PJVH72T/zejZq4PuR1x1MDAxMJXD1k/h3KPJeD6E9uyJ1dPW1suT6kTGI1mDXG4sXHUwMDE1MndcdTAwMTSGuIxccuqsuYdcdTAwMWWDxVSFITxiXHUwMDEzYWye7VxyplwiXG7JT4VcdTAwMGZ6zvGsv9z7z+Deb/huTmDg1DbojVRsoUl9T9AsRDRcdTAwMWNcdTAwMTLrfGxcdTAwMDJcdTAwMDWSg1vzIXrkubI0+T9jgoZeU3BXvkGP5mKl8aRcdTAwMTA4WDZcdTAwMWJC/0tz7/LjX+GBTeR36fr9XHUwMDFhwVx1MDAxMYScXHUwMDExXHUwMDFh87NcdTAwMDLS3i+8XG4z01x1MDAxY1x1MDAwN1x1MDAxOVx1MDAxNXG2Vlx1MDAxZUCUK0CoYu2IK6dcYpnPwzJcdTAwMTjByspcdTAwMDbHarBPiO1fPCOA0VAqr+xcZlx1MDAxYcCUYCeJod157kCVQZ57TDykwbJcdTAwMTi/yWCaRVx1MDAwYuRgXHUwMDFmrIbK9zJcdTAwMTWbyZM7znKE95wugVWz9dUy5djLhbRcdTAwMDNU5IXqilEmJ1nZJp0qd1x1MDAwNc9zj0xwkYNOna/E54Pm+Hxw+nV15+1rtbr/eHly8Hx/b7S5t/tT4LOXXHUwMDE5Ylx1MDAxNlx1MDAxM/LxVXpakjXFZ6+jlGzjXGLBlq5rYfDMoeg8XydcdTAwMWakV9jJK8KzkVx1MDAxY6fIzm4mXHUwMDAzZ6tcdTAwMThpxlbNO236XHUwMDE3Pv/98Fx1MDAxOS7NKY7jNkbI4vnC5y+K4LxWcJF5o0f9XHUwMDA2heKwU4lcYoOzr1jYUfK4kufNeMVcdH+yPjdVJ1xywoLSPP9cdTAwMTJcdTAwMTDYwN/qTFx1MDAxOVx1MDAwZXdcdTAwMDD1tzntKFx1MDAwMVbJPO5dXHUwMDFlu1x1MDAwMjnJiMNcdTAwMWU5liCtp+AgNSNZ5sVTLFSDXHTknIqDR854UWm2dqUzudn2YjnCXHUwMDFmXHUwMDAxIFt56lx1MDAwNeazajxcdTAwMWJcdTAwMTelXHUwMDA07Fx1MDAwN1GGq2JFPoeQ/SCRgi1cdTAwMDaSmFx01GecP5PTLFxuxer9MFj15V9Pi1Mk29eT03ynuHrYXHUwMDFjV/Xmy1x1MDAwZk9Gf/a3J6Mvr56oP198XFx+uvNT4CrPI+JcdTAwMWWAZi4plnOa0WWSXHUwMDA3I1xuS2an7yjs9fmoalx1MDAwZeFcZiE/nbVcdTAwMDJXbcZBhEpyyIxjdVdcdTAwMTlXYdImn9v/XHUwMDBiVv8xsKqIc5bTTlx1MDAxMGolQa/gjOzI5njOXHUwMDE4N7FBs71iIGhcdTAwMTFSXHUwMDA2do2rNEqVRKFcYj/Hmf7a2/rJcDxcdTAwMGaR43VcdTAwMTD4IFxmjDrdQirJa3B6XuQ0XHLNMdMw11JDoeYkN1x1MDAwNKk8OU9yUnGdMJdxYpXFs8N1sb4jXHUwMDExZzi4N7KDgPN66vvFXHUwMDE3K43Za8lkLlx1MDAwMzLO6k9niM16glqBgadS5CV4nP0lXfnUII7K4dBSXHUwMDFlYGNcdTAwMWG0XHUwMDEwyHxcZlx1MDAxNDsnWVtSPE06XHUwMDE3mOVnI0SBgFx1MDAwNC6pyaTiRVx1MDAwYrxcdTAwMDBfJkLYoIJbL3U5sI7PcKOZM1x1MDAwZXlq6J1C86jbnpzDT1x1MDAwNT47N1x1MDAxN55cdTAwMDNcdTAwMTXAXHUwMDE2XHUwMDA2fFx1MDAxN9F50Fx1MDAxY52ft0++rTzb3zz9eLKy9fjLeGdrd3I4XHUwMDA3nVx1MDAxZsg5gTygJJOcvpXvOFx1MDAxNrO5XHUwMDE3yOxcdTAwMTGMWsEt9Civ22zs8p/rgbllO6HqqEAtJI/gcPnEcp6nMYvLlqrL7IqJ5z8z4a7lsCOvZHU7wo1cdTAwMDD3v1d6d6lal+mkv+bj8NVn/lvQ4Fx1MDAwYsXY31x1MDAwZSdPN072d7e0X373xT/92lx1MDAxNvJRUdWvdLhFXHUwMDAwfHT1yl+/Vcu9fPukezpJXHUwMDA1XSRghp2vR4/XOyudg9WVI2V2tvybUC/2/MNxONK7J6erXHUwMDFmPq7q39tu64VcdTAwMTg8edzscmf4zVxmKWFPdeHMznpSUmny193llZzKh3Su9oi9OD7WI2qwXCIpR8jVXHUwMDFlP+xcdTAwMDZcdTAwMDPWeJuo/Vx1MDAxNZeEXbDnntP7XCL3UmZVdrpcdTAwMTFZYXu3O2az245xjj/Za7X3jkbd+/QoN7Kvokf98KjS7FKmeG7WXHUwMDFj3MpjpqfXUoi45NxtRjh07WIxQTffd5ctObmMXHUwMDA1cupcXFx1MDAwYvFcdTAwMDDWXHUwMDBlJ91cdTAwMTE/t7Sysba02Vx1MDAxZOHaXHUwMDBiizo4nGz2vuVRo0h++6x10OtzXHJsXCJypd/bPczjvS5cdTAwMDUn0DfptVv9qzdcdTAwMWP0Op1cIja2IbSFaHa01lx1MDAwNL1cdTAwMDaj3m7vsNX/o9FttI4mg3fd8fmNTEZH3eJcdTAwMTPrvrhcbreyXHUwMDBiXHUwMDFhdDtIn19FJCNcdTAwMGaZUV5V9lx1MDAxOVx1MDAwZZtjuvy0vt33fz7prmyqg6OzdSPN8MmDx/R8k1lZnscpgyh1gsho89HZilVlXHUwMDBmXHUwMDFh081579ecWPtHYXpcdTAwMWT2rr99erjf+Wrfb783x1+/tb6JYFx1MDAwZppi7+KpwrncV69ON4/fvt86Xt1queHOh6efd96+Wlx1MDAxOKZHUTgj/LaYXlxy11NzL1xmQ6tIsIH/XHUwMDE1hy9cdTAwMTbN/Wtzc69eu1x1MDAwN1x1MDAwM7lzXGbe5EfiOael4llPsWTwiGAzn4+tV/Z6g79cdTAwMDVcdTAwMGK5YkScXHUwMDBlyTGYXHUwMDAx6mBcdTAwMGJcdTAwMTNhKlx1MDAxOdGlhXvuXHUwMDFmqEIgentcdTAwMGK/dZpcZv6lOLXlXHUwMDA2kH5jsOZcdTAwMTPcXHUwMDE4XHKOe53uaGnYP1x1MDAwMqI+St6wMDSvwa0yms+9qEVcdTAwMDF5p9c6XHUwMDE4XHUwMDFjdirt2s+NzPNdLOVcdTAwMGLH2lx1MDAxNO161Nyuo32z1Xr2Yvxhy+rj/oFcdTAwMWavhP2jh1xy4zYg9LbO8UxcZjFcdTAwMWKZS+8yRu8sXHUwMDE3u9ao1U7sXHUwMDFhc71Rb6tcdTAwMWS1vV1h1MFkmkea6Fx1MDAwYpCeXHUwMDEyrqlVS4vrNCxTnzHvwIlSvrjvsUBcdTAwMDC/rOBZOIDrx0P9VFx1MDAxZX9ag8KAXHUwMDA2XHUwMDBmzdGbSWxcbrTi943h8N3+m82VvVx1MDAxM7HyuL39fOPsy8KA1kc97Vx1MDAxY78zoJVzgfbirFx1MDAxNa8rgXZ8g52symf8wIHWXHUwMDAx41xcPmHe89ygUnGI4kBuZcBYpTbfa5HzYNbbjF3VLFnikbVVXHUwMDA2OWuHXHUwMDFjXHUwMDEw7n3hXHUwMDFjilx1MDAxZoCyt1x1MDAwZpxvh7KDztLgcOk/h8e90eSo1cffXHUwMDBlXHUwMDA3ne5cdTAwMWShbVxyvMyg7fnFXV5aemGLQtxz71Jh3oWTXFzK5m3ZUVx1MDAxY3yohNtJc+u+3lx0PlDr9vnZ3JGDKKtcdTAwMDBX8XC3vIttXHUwMDAxgDvXvDloXG5cdTAwMGIkVcVMXHUwMDFlXHUwMDFlgaZlXHUwMDA1i3ZaOVxc8N3kvlx1MDAxYsDstWbPaee3MfvSXHUwMDFldOHCuudf3cT0ckfRPuJVspRcdTAwMDTL53lKlfA8WlNcdTAwMTZKaFx1MDAxZe22hnz+XHUwMDE5p59cYmvz3kdfXHUwMDFjXVx1MDAwZa09Tbe1Z1x1MDAxZUyyNT7vgicnf7yOz75+fP1cXO6O99eM3D34tFV1wVwiXHUwMDBiPFx1MDAwZVxcWU5mt1x1MDAxY7Y7c7k6XHUwMDBiXHUwMDFjXHUwMDEy54pNL1xyrnPBXHUwMDFi9WVXs9C9+lxui+DP8qUxTD8/Q5+6/e3BSUMuNNdbhjCXXGZcdTAwMDWeMeVtdY7x6Fx1MDAwNsHJtfstXHUwMDBm1FtKKeAued5gYFnEbHyiLGt6YExG+KiKU15cdTAwMTboL5XhVFx1MDAxYimkdVVcdTAwMWXTslx1MDAxZsrlfNVFISuqZHliL4dcdTAwMDL8XHUwMDEzXedccjyR4CBKYUVcYkJcdTAwMDQvna/wnXfgK6/fk0idu+ah34El/YGzg9zsXHUwMDA1qlxmtDxcdTAwMTZcdTAwMDPVv523rLRcdTAwMDf+zFjCXfvNaObO6lx1MDAwMl/xYe7mzHFzx3l9svyhOk7L0lwizdH5MfIwpdIgXHUwMDEyyVx0kDxcdTAwMWLB1WzPfJffzMBcdTAwMThl4PGobGIqRFx1MDAwNFe+U9vMiXl5nehl4dC6f5DPvIlHXHUwMDEyivOlrFx1MDAxMTpgvYMsluZduCRE8/qG7qiR41x1MDAxY/75ubO2/XHtQ/fP7c/RPls5a9svlZfJONJcdTAwMDfHM5GsXHUwMDE3MMpZlsmhXHUwMDE3KnqEXHUwMDE4uFxybuqZXHUwMDFiXfBP5T/n2Vx1MDAwNX9cblx1MDAxNrEg7zkvXHUwMDAzV6hcdTAwMWSccZ7B563dlYNcdTAwMGWluFx1MDAwMevsL0/c+3efj4N5XHUwMDFin3bPjle/rdiH7jyDN5nXzLCxXHUwMDBlu1x1MDAxOFx1MDAwYp9/XrLNJLJcdTAwMDXvXHUwMDBld7qcyzxrgSWPVeGpwlXOs+wzXHUwMDFk+1x1MDAxNp2aXHUwMDFl4f7T5uBC8ttrcnBcdTAwMWYu8lvr35F4m1xmXG7FXHUwMDFhadYtue5yiq36u1x1MDAxN5Vbm5s59/Mz50p4Y4Wo7K2U8lx1MDAwNnbb/mNldfRUfz3+2N48/bTtn1xy9+f1gDxcdTAwMTi7ldJcdTAwMDUwUFx1MDAwMFxmZ8JcdTAwMDQly4ZcdTAwMWJC5jiHaVx1MDAxMbtZc1xyV+vM8oymXGJcdTAwMTdcIsX1NXuXs0hcdTAwMDNrv439XHUwMDA3pc5f/PHHxtL/XVo5muzdt9VWfvVdXHUwMDFirSo8mrLRSi9cdTAwMTEzXG5TXHUwMDE1qUjV3Giv52NcdTAwMGbVaK3iKXhcdTAwMWHhfj47YaZK1nEstHYzVbKLNNpcdTAwMTBByfKj83i8oqmaVVJYv1x1MDAwYquFg8nPMbpzsL3igYst5ZohlVx1MDAwYlxmdFxuPmHahFvnXHUwMDEzjlx1MDAwZXunS2Ncbpzct0+o/Or7KEux892C4IhcdTAwMTOO2a5yXHUwMDBiurlbeLuxt663X+iNfbv5rLO25tdcdTAwMDZ784bUPVx1MDAxY7dcdTAwMTCFzni2XHUwMDE3sFFcdTAwMWLtSyRcdTAwMWPsm51OnGdcdTAwMTiu3Vx1MDAwNt9cdTAwMTGhLcTtvILiXHSYilx1MDAxZHRVaV/Fw1xcXHUwMDEwISRJ4cuKcjbdXHUwMDE5VYywfoaalOOz8dFZODl96d5+tJ0tfTZ4/alx8eee/PrxaGUy7m7vvVl9evx6c+/L5PfFeaJcdTAwMWKyk9uB9DXpRMtYXGZxe6U1mubWWP2MXHUwMDFmvDV6kV10pzrHMTglZi1gjt5cdTAwMDetjHHujsxRwiNcYlx1MDAxZnnYK/v6XHUwMDBifaOFvZhcdTAwMTmUltFEXHUwMDExwC3+QeR6Y9D5z+HqJfqNb1x1MDAwYqY19Sg1uFJRj1J9UYuC2W6/31x1MDAxYo4rmziMmlx1MDAxYjJzWq9hW1+VXdvmdt16ufP+3dej/cngz3ZU4vOnlY1h+2FcdTAwMTd/Sm9cXMZDg/OzPGYxVtpcZuCnOWdcdTAwMTiWXThqcaFWrU1cdTAwMTaU0JXFKMZJXHUwMDFljeuqMJaRvNI2/FxcZZ9cdTAwMWRxNGhcdTAwMGI93lx1MDAxZO9MXuy8dJ3BaLNx38Z39Ff83aFb67n1Zo6lS1x1MDAxY0RdZeGuuYVXL91DR27vY6aByVx1MDAxMVGt8bGQO7yooJCg2dFcdTAwMDdcdTAwMTMkp3V+n5HPa9RyIYuW50g5XHUwMDFmWOldUVA6i9xeW1x1MDAwM6hfgH3/LLj9mHN0/nO4eTaedFx1MDAwZu5cYrVrcKqM2nMu6Xsxu4k/m7f9n6u1c5xJYpS3ynObpqTWSvGYcckjp1XknIxcdTAwMTmVXGaKXHUwMDEzolx1MDAxNefLKqOFqCCTQCZcdTAwMGLwXHUwMDEzQVlCjSx4kPpm69uko360XHUwMDBiuWWztfSPKs2uXHSsXvVocUZcblx1MDAxZXEsKvZVWDZ/w4NBNohK4XOLasK+fcfWQjeL5+opf5ZnVXQqb1x1MDAwNppcdTAwMWLukddv/F/f97VUrOny1lhOqrFSXHUwMDFh4YunXHUwMDBmX1x1MDAxNSdcdTAwMTgpNU9H5tlcdTAwMTR3U6hwvc9bSuspLM+LM96w1cIqN3vFOjOe03csy7it9DcrSfuuMoQm2/5NKN21rjVcdTAwMDRcdTAwMDTzWjIq4lx0m+UzjKR03GRT1lx1MDAxYlx1MDAwMe8qZl2rXHUwMDEzXHUwMDE5x0PCOyO0goHGqnQ6vlx1MDAwM9/EXHUwMDAzt6DXYPi/fGu1b1xy3+9bLciv40D/Kt+q5o43MJwuzDlNXHUwMDBid63cV/DTR/OjXFzrfD3lz/Ksit6Hb23sqzhcdTAwMGJaXHUwMDEzN420XlxijVxivYBcclx1MDAxN77KZSDcrKr1PN5dJtX9XHUwMDBicq7Xp4FS58r9vVx1MDAxMFxcfoaUYqXvzFx1MDAwNUvAXT5S3MhcdTAwMTBcclx1MDAxYilcdTAwMWWWd62LQ838YymktsKFxFx1MDAwZVx1MDAwYna+0jxcdTAwMTD9dHo8XHUwMDE5a3/0+Wjr1dh8XHUwMDFhXHUwMDFkXHUwMDFm91ovXHUwMDFljqebXHUwMDEziCrhODCex0JpeIBQXHUwMDFhz1x0JpeBx5h4l1x1MDAxNanWgG3E6GDM4Fx1MDAxY77Z/Fx1MDAwMCypU7bYgfFcdTAwMDP2eVx1MDAxZj/fer92uqnt5/3na+J99/OuOPlQsLJcdTAwMTlMv3rlLlI031x1MDAxN+a+XXuyet9cdTAwMWK86XcuJnxtPd/deTV+fTjc+PN16Fx1MDAwZVx1MDAwNjvL7f6XWY41k5c+r1WKnsdfgfhcdTAwMWGeXG6nSlx1MDAwMax2MfNcdTAwMWNjXHJi76MsbKJfXHK/MVx1MDAwMa5cdTAwMTLE2nM2p5BcdTAwMTXp08Cpolx1MDAxY1x1MDAwMK0ssMIpeY2N3mIuz2TUOlx1MDAxY1x1MDAwZlsjrNnD8T635VnDXHUwMDA18CzlgzB2tqw2t7S5uFx1MDAwMMdcdTAwMTg9z2u/zSCxW6ah945efzRHr99cdTAwMWXGzeXO6N2qfHXw7kvTdPHD8kXXXHUwMDE4aPVdzlx1MDAxOGjF6D74+0xcIvxcdTAwMDct5Im2urTfqTmZz4M4Rlx1MDAxM4wvXHUwMDBleZ7WXHUwMDBlaM64XHIusIDX2Yox0Deb3fdPM8dcdTAwMWLM74N3XHUwMDE0NrAgu8rw1ExKaWp4XHUwMDEyXHUwMDBiXHUwMDE0iyNcdTAwMGJcdTAwMWXOXHUwMDA0P1x1MDAwMtbSWlx1MDAwN9+Gh7p0OTqnsLA/bIZfXHLsVSHvdTeyXHUwMDE4LL7eJ12b71x1MDAwMHxmPO1cdTAwMTbkU1x1MDAxNE9HvVx1MDAxY4HDc9eFMjEoo+MsXHUwMDBlg1Naza5A5lx1MDAwYlx1MDAxOTBWWLpQXHUwMDE5h8GH/Fx1MDAxNIbiIM9fhn++hlPDXHUwMDFmfTdcdTAwMGUjXHUwMDFhhvFcdTAwMTXr5lx1MDAxYU6dQXxcdTAwMTaKx1x1MDAwNvzN0lx1MDAxZHNcdTAwMTWVPzMqOpU2g9lcdTAwMGLLdVxcXHUwMDFmyC5cdTAwMTVzXHUwMDFkynqPxbFcdTAwMWHWalxc8cjhi8SBIdX1VmvQMFx1MDAxNlx1MDAwZsaimFx1MDAwNaWRr3V8S0mmw1x1MDAxOCl54rKNXHUwMDBlf1xys9f7nVnjmdzFLVJcdTAwMWL/uljUR63hcHNcdTAwMDKdvbr3R8e97snjysCaPyR0+bXRy3Rz8/zrX3/9f1xmJ4VPIn0= + + + + + EDGE NODE ON RESOURCE PROVIDER1. Node with exposed service at the edge of HPC clusterVirtual KubeletInterlink API ServerProvider pluginPod on virtual nodeVirtual NodeHTTP + Authunix socketPodContainersBatchSystemOIDCOIDC Identity Provider \ No newline at end of file diff --git a/docs/static/img/scenario-1_light.svg b/docs/static/img/scenario-1_light.svg new file mode 100644 index 00000000..a517f3b1 --- /dev/null +++ b/docs/static/img/scenario-1_light.svg @@ -0,0 +1,13 @@ + + + eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO19WVdcdTAwMWJZ0u17/1xulu/jLfI789BvXHUwMDE4T3jAlClcdTAwMWLbt79VS0hcdTAwMDJkXHUwMDA0kiUxuVf997t3MihPKkUmWGBcXGWqy+1CUigzT0TsXHUwMDFkcVwi4vz3X0tLjyZnw+6jfy896p62W/1eZ9Q6efRcdTAwMWJ/f9xcdTAwMWSNe4NDvKTy/1x1MDAxZVx1MDAwZo5G7fyde5PJcPzv//mf1nCYTT+VtVx1MDAwN1x1MDAwN+ef7Pa7XHUwMDA33cPJXHUwMDE47/1/+O+lpf/mf+KVXoefX/lcdTAwMWPl9mjzY+tl/9v41WdcdTAwMTFcdTAwMDabvZX8o/mbLi9o1G1PWoe7/e70pVP8XmrhM+GtMdaKqL2yVy+f8WWhVSZcXJB4i9JaiXD18kmvM9nDW4xwmbDGXHUwMDA1P/3oXre3uzfhzfqQOa2CVFbkP+7qPedcdTAwMTfz7yVx9ZvxZDTY765cdTAwMGX6g1x1MDAxMa/4/+yI0Fx1MDAxNmJ6vdut9v7uaHB02Cm8Z6fbjnH6np1ev785Ocsl4yHjYT4qyd+6uG5Z+v28T+FcdTAwMGJ391x1MDAwZbvjcfKZwbDV7k3OXHUwMDFm0fRcdTAwMGV4dcO1Tr5W/zu9plHroLvGxTo86vevft077HS5XHUwMDA0j7aLN5nf38XXXa70dFx1MDAxOfXFb/6aXny328lcdTAwMWa0j8Jf/XaqbtqF8m/XXHUwMDA3h7nqRVx1MDAxN72QXCJOr2j8XHUwMDA02jbJXHUwMDA17rT64+700fOqnpY1saiNibJNuqeTq1sq6OrXXHUwMDE3Zufj20396s1cdTAwMWZ7W8OTbW93O38+unrfX1x1MDAxN3+bPrqjYad1fj3SK2dcdTAwMWTuxoYwXYZ+73C//Fxc+4P2/vRcdTAwMTb+VXhcXCXLqb6aXHUwMDE5y0lu5sJonM2sV0E7ZZ0xKpSNxtdcdTAwMTiNXG5cdTAwMTFGXHUwMDEzo3BC2GCjmTVcdTAwMWQr7tNU9lrtvaNR92cwXHUwMDE2WW0sydsvrFx1MDAwMutcdTAwMTN9XGLGVlx1MDAxOIbyap5hSG9s8EZHf1x1MDAwYtNIruP79XeqjlRDPICnT54/XVp/++Tp0tv1pXdPN9++f7f6dOk/h1x1MDAxYu/eflh78vRdYYFcdTAwMDeHk83eN96RXHUwMDEyyW+ftVx1MDAwZXp9rodNxK/0e7t8NI/auJfu6FHx+Ux6gKarN0xcdTAwMDbD6attSGz1XHUwMDBlu6O1JoA0XHUwMDE49XZ7h63+XHUwMDFm197P7N20jiaDd93x+f1MRkfd4kPsvrg0XHUwMDFimSlbafPXXHUwMDAwYUEp7IyqXFwqhZIqOlx1MDAxN5yLVUrZetRAVc7djtNcdTAwMWJff4/t10+fd549V09aoydbrf5DQbBZV8NcdTAwMWK03mRKO22iMULA+yX+LsKZ4SVtZ9xd2U3JLv+53k21bCfs7Ezfc+kybTBcdTAwMTm+XHUwMDFiLvOcS0zv5MplXHUwMDFhpTLpI6iIifnP1K1eOFx1MDAwNKmMcV44q2/nhm6KzjO4eefQ1kjN9axHvPJ9VkvrXHUwMDFjnmCVmm83V/Ozky9n4fnqyccj8eXrwejV23cv/vzj4aBPtaL7IDItnHMyVii6XHUwMDA0z81cdTAwMDJ03FxiZaP0/k5cdTAwMTRdm5CBjmupKlxitTQ6s9piidS5jvuyilx1MDAwNyGM0bJw6X9TXHJPeVlBue1cXGB31kBcdTAwMDdC0FW63W6u299cdTAwMGVf/bn/XndG708/nJ6tvX+/uv3m7KHrtlVcdTAwMGWqXHUwMDEzXHUwMDEx5lx1MDAwNa1UXGIpaY1aZNFqXHUwMDExrPRU/ztRbe9xXHQ+XHUwMDA24aSJYL5xVsG1LSu0Q2iDy1Xx+1x1MDAxNTp5obHmeq29Nz7eirZcdTAwMTVJWEh+O4eE8Vx1MDAwMcpsaX3Q6S6d9CZ7S93T4WDc7SyNu6PjXru71JosTfa6S93ObndpsLP0YmN1qd0/XHUwMDFhJ4RtYWwuucUydfvuy7xcdTAwMTdOXHUwMDA3Zz1cdTAwMTfsonfgXHUwMDAzskj0p1x1MDAwZaHT3CFMTv54XHUwMDFkn339+Pq53Fx1MDAxZO+vXHUwMDE5uXvwaeuhO4QgdFx1MDAxNoFcdTAwMTTzwC7azPP52LtcdTAwMDQ7IbOYo8NcXFZn8Y6o5Fx1MDAxNakruKZzXHUwMDA34Vx1MDAxMY+bIOKP4nRXn7lRLmR39GJt/YWfXGLZds86wk6ef42PXHUwMDBiuZDfqsWef1j8vjFcdTAwMWO+23+zubJ3XCJWXHUwMDFlt7efb5x9Sb/l8vtbo9HgpKncOFx1MDAxY+ndk9PVXHUwMDBmXHUwMDFmV/Xvbbf1QlxmnjxuJvfib/eUu6l+elP/Nzd3XHUwMDAz8M+8hupbq51SPqZKXHUwMDBmrc+UR1x1MDAxOFxieEqU/lJhpVGZZuYmXG7rnSwkXHUwMDExpklPe43hzVx1MDAxOE/0sq3+XHUwMDE5mZvOh+apm2BUhF8yU6OeevRcdTAwMDJcdTAwMTKXXHUwMDFjelxiXHUwMDExzFx1MDAxN1x1MDAxZa2B577vxM2H3mhy1OovvTra5lx1MDAxNd1Lnuag1+lcdTAwMTRRsZSqqYGtMt7PvYNF4TjfXVx1MDAwNeEhinkrLoWSXCJE2GqVxnWbQ/hK7P/+bfJ4f//FRm/txfrxpndhXHUwMDFlp2+PXHUwMDA24/HyXmvS3vvxMO7g0aQwTntrlHCi5NGEXGaZkyD11oiofMGgbuOKtHLtrp3FcalcIoJWRFx1MDAxNyYo6YHHXHUwMDE1oauyWVx1MDAxNC5GJ61cZipcdTAwMTSw/jI7XHUwMDAzlu1EwJ1UupopNo9emr2dz19enk2Oevth6+zw9+HXzVx1MDAwMkw9ev9p7UtP7Dw9XHUwMDFjPH+3tr4+7i6//fb+XHUwMDEyrO4hZPguhzGetEaTx9Di3uFu+SPdw86cV/qt8WR1cHDQm+AyNlx1MDAwNr3DyYxnpdxcdTAwMTXC9l63NXPTkDz3tSHFpWsw/dvSVFx1MDAxZvP/uPr7//62gHcv61xm4ZcyJmqD/1x1MDAwNyq75PNcdTAwMTlcdTAwMDA9XHUwMDA246VcbkpHo0OtQFx1MDAxMzKrYjTRwcLhPXxRnlJQY6H4TS5cbm3cfYtcdTAwMDPbRaCOd9tcdTAwMTiksMIm4kxcdTAwMDaeXHUwMDBiXHUwMDAz0SriO52uXHUwMDE3XHUwMDA331x1MDAwMI5cdTAwMGaKLH1ApGNcdTAwMTJxIVPGwVx1MDAxZSFP4fJkrThn4MKtNNb5XHUwMDEwrDChKFx1MDAwZcG9U9xcdTAwMDdWIEfG+vqlWLw4rYP3XHUwMDExXGZcdTAwMDAuxiU3XHUwMDFiRCZcZlx1MDAxNMlcdTAwMDNMPJhdvTSdXHRcdTAwMWRcdTAwMTD9RKVMiMm1weXil1pcdTAwMTmEJVoqUy9MZVx1MDAxNjdiLdxekMH6kjSwSWu9tPiuqFW9UchMK0REykXtXHUwMDExwenkViXUzoPaXG6pJC7fqfqbXbhA6JYmf5POc+cg2pBcbrSZgMHihqHF1Pd6gSazXHUwMDAxXHUwMDE3J5jh10basrxcdTAwMTRb6uThXHUwMDAzWFRcdTAwMWI0kdNcblxcwzXy6rVl0eJcdTAwMTCFwKE556BcdTAwMGXBXHUwMDE1djKunlx1MDAxZb5cdTAwMDSaLGg8oVb/tMrghISDR/EyKjGzui5Kg6v28KPC1i5cdTAwMDZMw2BprcTHYFx1MDAwNr5sXHUwMDFiXHUwMDAxLMTSaytowP1cbrPgQlbCacDcYOW+5Fx1MDAwMoyWxiltXHUwMDAznLWOXHKkXHRcdTAwMDRcdTAwMTNG5Kym5Fx1MDAwM+ifYP5cdTAwMGWsXHRr5Vxc7bXZPN1cIlx1MDAwM/BcZmtcdTAwMDAjKvliXHUwMDE5oT7AMVx1MDAxOVx1MDAwMCbR3rc4qFxi9EPDg1x1MDAwMk9h5WXkQbSrqFwi8NRYqFpvbKDCXHUwMDBlrlx1MDAxOF+udVx1MDAxNCpcdTAwMTWHIDpKXHUwMDBidbNcdTAwMGXr4VxcrUWYTGJcdTAwMTGwfLhcdTAwMTdn4YJmaFx1MDAwMGJ6fFx1MDAxNcVhwWrtf9Hyllx0L3lcdTAwMWRcdTAwMTS8XHUwMDFl1EHBVyVcIpcl31x1MDAxMDT+XHUwMDA1XG6A5lx1MDAxYd1dlrX3PY8t/av4/zeNp2jrc1x1MDAwMyqm51x1MDAxZP4sxNDTgGqneUC1Nd58az6vrHftk6O1/uNcdTAwMGZxS/rfXHUwMDFm9j73eSil6T5KUcxFXY/JXHUwMDFjIFx1MDAxMvZOzS1cdTAwMTSz3S6rU5FcdTAwMGaNsLOgPVNcdTAwMWZcdTAwMGV+ulwiXHUwMDFkXHUwMDFhNbfBNXTXRi1cdTAwMTDQzURRcJTAXHUwMDA17avzoVcq9CtI+vtcdTAwMDRJMoPTXHUwMDAxXHUwMDEwwJFcdTAwMDZQZkRcYqk3i9abIGn2XHUwMDAwXHUwMDBiqWvBYFx1MDAxOYzAOiHhXHUwMDFkoWdw4TZhXGZUQVx1MDAwMWORWmisYmxcdTAwMTDX1Fx09Fx1MDAwZWCF+N/qgODGfv9cdTAwMTXeQiBcdTAwMThcdTAwMTfwSuJcdTAwMTNMXHUwMDAx61x1MDAwNO1cdTAwMWT4MXxi8Fx1MDAwMp6bYUlcdTAwMDN5XHUwMDAyolx1MDAxNFx1MDAxOD94XHUwMDFmiJxLXHUwMDE5q8wrajTJNCSbRlx1MDAwMkNcdTAwMDTiwzVcdTAwMTlng1x0psTiMjBPXHJcYqL940Lr4yWVRTxBxtX0dTYkSiPxXGKB9VwiXHUwMDA07lx1MDAwZeFp1EPgouX5LHAphGXhXHUwMDE1o+FEXHUwMDFl4lx1MDAwMU39g0gv4G/rgzA8XCJP1+pcdTAwMTGIg1x1MDAxOUWVXqAjQIPl4bvAXHUwMDFlXHUwMDAx0/VcdTAwMDJ9hlxiXHUwMDEwi8FlXHUwMDE03qlEXHUwMDFlo+tcdTAwMThBwLSJXHUwMDE2MUl9tK5kXHUwMDA2/uA9XHUwMDAyVFx1MDAxMC3Eglx0Z5JcdTAwMTm03XtcdTAwMTVcZt5cdTAwMDAu3MDoXHUwMDEwlYCGaIu3e1x1MDAxYUFyw+B0oNZcdTAwMGXvXHUwMDAwXlx1MDAwMHN0XHUwMDAzXHUwMDE1dJnBWihcdTAwMDYz/CMxXHUwMDExXHUwMDA1Qlxuhlxi/FxmXnKd6+PYhctcdTAwMGIsvFx1MDAwNVx1MDAwYtNcdTAwMDFLaZxXJYHeQo+MXHUwMDE2gbZZy/9cdTAwMTlcdTAwMTZD/Vx1MDAxOIGARHtn07hdIZ7weLjgXG6K+df68GRZI9ihXHUwMDE5QFx1MDAwMSNcdTAwMGItTEljXHUwMDAwh/BpzoKD6OjrNVx1MDAxMIxcdTAwMDQqK5RcdTAwMTDeSlx1MDAxMFx1MDAxY12Sx11cXFx1MDAwNlWRil+vMItcdTAwMTaHsNdaPCPpsFx1MDAxY16VomKPICBcIjRAXGKDh1hcdTAwMWZALWteXHUwMDAxQi1cdTAwMGJcdTAwMWZcdTAwMDJfXHUwMDE3y5dcdTAwMDcwXG4+391z+K5cdTAwMDZZj1x1MDAwMFx1MDAwYlx1MDAwMCaypFx1MDAwYkGh0eXVXHJcdTAwMGXPgVx1MDAxMZGF0tSL88yBw6CYQUFcYjVcdTAwMTPycE9cdTAwMGL0XHUwMDBlT1x1MDAxNo6tweU5hCFGXHUwMDAwyGCeuKdyalx1MDAxMXqEXGLFXHUwMDA3xoCx3t0vWlx1MDAxY8mwxa1cInSH70gzRvAtsFx1MDAxOVx1MDAwZqdcYu+CXHUwMDE1aSBOZDZcdTAwMDbGqnB+MIPUcl1cdTAwMTbPk6g+eOhMg4xcdTAwMWLkXHUwMDAxOCyzr1hcdHysnPo0kWVyXHUwMDExYahSoFx1MDAwZvW+JWZcYlxmLPmE4Fx1MDAxNqNIrzBm+DWWNk/XMDtz/1x1MDAwMpnlUVA9J8gpbOr8sFxcUWvCXHUwMDBiWFtskK7gXHUwMDAyXHUwMDAzi5jgZOZcdTAwMWQ+uCjOXGLWbYDZMJBcdTAwMDVcdTAwMTA3IFjwXHUwMDA2XHUwMDAy/iN4R1x1MDAwNyOmNWa5PM90XHUwMDAxeYtcdTAwMTZcdTAwMDZg1Uz/XHUwMDAy7ldJXHUwMDBi8lx1MDAxN1M2ZDXoYcRvLf7R4Fx0XHJu12Z4OFx1MDAwZYaOlVx1MDAwMFx1MDAxM3AleVx1MDAxMTZcdTAwMGLKQN9cIppkVFx1MDAxNyxcdTAwMGVcdTAwMTZcdTAwMDDXXHUwMDA28IdnM6VtXHUwMDA2azNcdTAwMTghOCvcMnOu9apiJK6OVFx1MDAwN1x1MDAwNo/lc2VxcHjMVbs8XdZgT8WAXGKBOVx1MDAxYlx1MDAwYl31pWSKdbg6UjXvoJyhyZ5cbu5cdTAwMDeoXHUwMDFm4JJcdTAwMWQuJHUtXHUwMDEwpyX4XHUwMDE5XoHHXG66kThW74NmXHUwMDAwybmd8LDEuYycXHUwMDFkWlx1MDAxZsBcdTAwMTWlL4tjvs1FwFx1MDAxMLyZaGC2sCTgoLdRkZKE0uV5KJ6B23agzVKqXHUwMDA2muKoqlxuulwisHygLElUJDJ8XHUwMDEzliiA/UaQrnovXHUwMDAweVx1MDAxZWZcdTAwMGJcYlx1MDAwN9JAXHUwMDFk0tQ2XHUwMDA0srBcdTAwMDaMXHUwMDE0QVx1MDAwMpG8wf2S5DJcdTAwMGU1XHUwMDAwXHJoWeL1XHUwMDFjXHUwMDE4NbyeZ1JcdTAwMDQoXHUwMDA0PGiiy4jxwPVcZjwv4CtccjsgkLG0cPhcIpZcdTAwMDE1iKWNJlx1MDAwYkLU44VcdTAwMDNcdPdcdTAwMGKQXHUwMDA3XHUwMDFmwC0xgII3KVx1MDAwYoI8wy1cdTAwMWNcdTAwMDV25FxyXHUwMDAy4HtcdTAwMTcnspzCsv1cdTAwMDJxbeluXHUwMDA1Q1x1MDAwZTiqXHUwMDE4sMxNnJ6Ak1x1MDAwNCZoR0qaXFyajYigmbBG+CVcdTAwMTHVNdg1Q8hcYj5cdTAwMDBcdTAwMDJcdDDzQpXFXHUwMDAx7ExeiFxiuFxiXHLCP5B5UEfPkmrNqNGV5OGJ4luAXHUwMDAyXGLLRYNgY8HiRO7iibdeXHUwMDAwMUp6XGarsZbFUiyE87ZBbOV5eXmRh45w9unKepF5QJ1UwYI/ilx1MDAwNslcdTAwMDdcdTAwMDU+YjVA32NBpDKJ3XpcdTAwMGI36jTjU4svbWBcdTAwMTWIJnBcdTAwMTeOXHUwMDA1YFDmKEqbNey3xCV7vlx1MDAwMupRL47RO/yQ5Vx1MDAwNibgq7yRJFx1MDAwMsBWMbp3scHu5eLFXHR4SFx1MDAxMFx1MDAxY2mZXHUwMDAz84muXHUwMDA0OD1EuVx1MDAwNtRcdTAwMWOeVtXfLENcdTAwMWRcdTAwMDNSzTRB1Mqb9PJcdTAwMWM3wllcdTAwMDCPP41s8PCUzFg/XHSyXHUwMDAy9Vx1MDAwYsGn5Cdwb1xuZMZr8DZymia6olxms302kq1cdTAwMTTqtS/kRTB4b1x1MDAxNPOAXGLXfoQ8aLCW2nBcdTAwMTfTWpXoXlx1MDAxNFx1MDAxOdiPZ1Ypgus1SUXy+nSQhmlcdTAwMDeWliS2XHUwMDExsbzkRSCQQlx1MDAwMklcdTAwMWLllXInXG6mrLHKJt3bi7h6qFx0iFx1MDAxZb1cdTAwMGY8c736xYx7z560XHUwMDA0qJbmqWY2KJqIY4aFgTO9m4ulq0NY6OG+glx1MDAwMjOI9Xeb21x1MDAxYaNPXHUwMDA27oJAU5JcdTAwMDdcXIJEZmRcdTAwMWLQKWYpoFx1MDAwYlx1MDAwZTZcdTAwMWJcdTAwMDTUXCItoYl5XHUwMDFhN8KLsu3K1u/EU1x1MDAxZfBcdTAwMDU+yFx1MDAxOWAu7F6XdFx1MDAwNTbBWDB6+opcdTAwMDZ3u2h5LlN0ucZcdTAwMGKQWyd92TaEXHUwMDA3k4FcdTAwMTbD3atcdTAwMDZJXGZcdE9OXHUwMDFkIWowV5tcdTAwMTb5XHUwMDA0wJBcdTAwMDJblVwi4iFcdTAwMDZX71x1MDAwYiSiUtyqNlx1MDAwZTQ7MFxylci7LMyJpCyhifJRXVx1MDAxOaRcdTAwMDH2aXBJlFx1MDAxYvJdXHUwMDA2p6nqtO56WJPc2Vx1MDAwNlW2bFx1MDAxYsLnSp5cdTAwMWVsjz5cdTAwMDVxKcHXNzC1XHUwMDA1y3NMSktunFBt4fNt+fHBXTPwXHUwMDBiXGJcdTAwMWbqWUaeZFx1MDAwMYYz8lR4RjJNOrB8XHUwMDAzIYOialx1MDAwMvbqQz9ET1x1MDAxZSvBbDlUzOlyMVxiy9jA0jRcdTAwMTbZ16dH8fAsXCJccnwxnLJQprS4N4RJaopDXHUwMDFjppiAXHUwMDA0ekRVVlx1MDAxNWOMY4FcdTAwMTmgw9dubyxanGHyXHUwMDEx/lODqMNLXHUwMDA1U3p0oOJcdTAwMWUqXGZQbrA3RC9cdTAwMDD8jsztsYYjlJ1cdTAwMDC+h/ZcdTAwMDK7cfXkjD5cbrzWXCLw057J7bKPMtGwXlx1MDAwMlx1MDAwMOVcdTAwMDFpXHLEcdGY+IFRXHUwMDFhacvwKIOh9eO1XHUwMDE461x1MDAxZtxipVx1MDAwMXxcdTAwMWO3tY2E3TqbljNFNo84zVx1MDAxYYKgPFx1MDAxNrdWXHUwMDFjaD9UXHUwMDFlXHUwMDExNlx1MDAxNlx1MDAxNYgrS9JcdTAwMDBuiFmA2lx1MDAxYV6+1rrAK/LNNISh+X6LKmNZhMIh9NCM3uqrS0lTVFx1MDAxZVx1MDAxZDpgs4oylMR5WF6+XHUwMDFiyLRzrZaQRSFYJ9GEuzUlXHUwMDFhwMZseECGRlx1MDAwZcpUX+CHi0NcdTAwMDTKWEVbLIYpaXBcdTAwMDDdRpjHfLipj1x1MDAxZMlojTReXHUwMDFhOFx1MDAxMbi5Mp81XGLJoOFSMni7X2HcpoieYU2e6k75XHTwXHUwMDE1hC4wxy1Y3lkrjpFcdTAwMDWAmISfg1x1MDAxMtIkbeB2XHUwMDE4XHUwMDFjNL5PcMur3lJcdTAwMDOor2JcdTAwMGVcdTAwMTbmRc+d+jjGPUBcZpZ0ws3VYjUsXHUwMDE1JJrzdlx1MDAxMLNyQzNxI1x1MDAxZbQ9ssVcdTAwMDG0k6n9elxy0YxcdGFWMGwymlx1MDAwNFlcdTAwMTGAqnxcdTAwMGZWM0Cuz2shOsbTxSWBlUCnXFxcdTAwMWG9IzpcdTAwMDZnUYhorVx1MDAwMWmvXHUwMDBmj9mNjfU0XGbg8bhcdTAwMTNcdTAwMTVB6K7PKalkVlXWXlx1MDAxYlx1MDAxM1x1MDAwYoF8XHTxO1widFFOLIC4gkDAJ5Fk1z42ZlG4v8Z6XHUwMDEzRIPBl6Q5XHUwMDEzXHUwMDFjyDzTbVxySklcdTAwMTcsjXv4IP6KSFx1MDAwM36vStL4KCXoXHUwMDFlaFx1MDAxNGhL7YMzXCLzTHv6PPflSntIXHUwMDBlludcdTAwMThcdTAwMTRcdTAwMTg+WPilWnFcdTAwMWFYXHUwMDAyMGXRSn5H5UxbXHUwMDFlQ1xi06CgXHUwMDFjothcdTAwMTJvmJdcdTAwMDVVU2VRltX0MpDJhXpAZYZcdTAwMTK4ZEHBqcNcIt2W/uHioO8we5BMai+QuiTNSXxcciRxmll9MMx0e1RMfXtcdTAwMGZklzPpZ1xcXHUwMDE20FlbuM36XG5cdTAwMDEm21xyq0SxXHUwMDEyivmYksLhXHUwMDBiQO1cdTAwMDRzdj7UX1x1MDAxYp2IZ/V40PSLqfrCl+Y0XHUwMDE2ZFx1MDAxME+j3ofk14bbXHUwMDAwkUecVEq0Q1x1MDAxYeuScLfUOF2/XHUwMDAzhedcdTAwMDb+o1x1MDAxMaXDVp3zvrzHXHUwMDAzfXQs32a6olx1MDAxZVDzLVx1MDAxZe7+R9hcdTAwMTVrZErSXHUwMDE0Y1x0XHUwMDE2doGh14c1xmTchKSSsOrLzew/XHQyaSCQZlx1MDAxN9w9S5N51YnO/Vx1MDAxMnxIqlwibFxmgJOHXHUwMDFlWptvNjRwcexxhatg9Mbdl5I8KXTePkSWXHUwMDE3XHUwMDFhgIPNPHwsXHUwMDFjUmCnS5zZp1x1MDAwNKfQeek3qGN9zVx1MDAwN3dlWUAnc8ftYiyJc3ntXHUwMDAzPD58fT2JW7g0PmjBXHUwMDFhXHJthU90jlx1MDAxYtCKSTXcK/NcdTAwMTH19WR5sVxmLJX7XHRCXHSrk5XgXHUwMDA2Ob9cYsCrgFx1MDAxZvWNaZy0XHUwMDE5rYeriIKJ9lx1MDAwNPN56dxcIlx1MDAxNFx1MDAwZUSFpVC1V6eAdqBcdNws9i5vjfstfVx1MDAxNdG9xoVcdTAwMDO+XCIoTj3Bidn5vEKEo6DTdqaVjFxcOzCjXG6X0qjDZZHiNGNITeT0hOJy8VxiXHUwMDFlXHUwMDE4O408XGY6NOivXCIpXHUwMDExrMN2mlmDtHeJpS2ej1x1MDAxNjhcdTAwMTFcdTAwMTD+Nrg4lzEkXHUwMDBm3OFcdTAwMTVsO0jEKXJcZsvxnWTc9b5Oe3a5cT+HwUu61a7yXCJWgUhcZmE0iXD9rS5WWsicol6x6NaKlGkya1x1MDAxY7xkpaFlJU99clx1MDAwZeK48ShVIFx1MDAxOEtVrveyzGmCTSmjXHUwMDE4YDS4V1x0lII+IVx1MDAxZVx1MDAwMekvV6MxQonMXHUwMDA0XHUwMDA1w4RQk2XlPqZEKFx1MDAxN50sSzMsMlQycphkXHUwMDAz60e8kT+XPE1cdTAwMDbMNiVxmuk1w399k1BcdTAwMWacP7K+UMKOYEVOllx1MDAxZZ2g+lx1MDAxYVx1MDAwNixcYlxy6q9cdTAwMGVcdTAwMTGEXHUwMDA36GBt8b9cdTAwMThT0OFKYJmwXHUwMDE2LDxiNfO9y1x1MDAwM1x1MDAwYmTZXHUwMDEwwMLAMl2YqeRj1pO7zlx1MDAxMm6iPmud15HCXFzhilx1MDAxMaSrUlx1MDAwNVxu60ixTkzZMeDWXHLSXHUwMDA3IE9s0Vx1MDAxMsRcdTAwMDOYhpwpdDVwXHUwMDAxwWp2nNbX4bKul1x1MDAxM3vgUaCnLHcsOSju+ELJZVxmLPSrXd6Fy2MtXHUwMDFmjImZZNZcdTAwMTOm4Vx0l4Pmj5dcdTAwMTDDwzHWiZMgNYicXHUwMDEx0ll6cZlmwWBcdTAwMWKKXHRwXHUwMDEzQ74xXa8tLFx1MDAxY3CAXHUwMDFlWFx1MDAxNFx1MDAxOVKaUpdAWrhcdTAwMDHL2lx1MDAwNYJ6PWtXXHUwMDE5XHUwMDAyXHUwMDFk4cGIXHUwMDEx3Vx1MDAwNcTRqSdApFx1MDAwNlx1MDAxZcBdeDZcdTAwMTVZWf/0XHUwMDAwV5aNylBcdTAwMTZcXKBIU+p5nT88LHxcdTAwMGJbXHUwMDAwXHUwMDFhXHUwMDE0XHUwMDFks1x1MDAxMYFxk2HdXHUwMDFkQq40imUjXHUwMDAyXFwse6xBK9naVy8v7+zlJrtjeiStXGLKuO1ic+uIXHJoQFx1MDAwNl9nmVx1MDAxOYHae5fuRuDJ4ZusXHUwMDAy9SNcdTAwMWZz9cVANeLob4Bzno1cdTAwMTdYkPtcdTAwMTYnXHUwMDE5XFwyUctcdTAwMWFqhP9pco1cdTAwMDWV3rOMXHRcdTAwMTRcdTAwMTTkvtHmXHUwMDBiq41xXHUwMDE5cEFYYDz1VKBgaSFdospcdTAwMDfYqfrtybtpN1x1MDAxNNPmnHK7oeYuk9aictzobvNuQ7H25WXrRfw2fNs7XG6Ptzs93Vx1MDAxN29+ivEtPmY5yOm84l+UZ4kzQuSANs9u1WC/r+dw7vhcdTAwMTZcdTAwMDTcLuQ7XHUwMDEziFx1MDAwMlx1MDAwYmOvptNb8Fx1MDAwZfg4XmTgSLiZuaOsXHUwMDFhXHUwMDE33Fx1MDAwN6+e03ilSr/aXHUwMDBlXHUwMDFmcNvhMmvG4LjzST6sIU0zz5d771xiVZhPdlxyulx1MDAwNCDQS3Juxao1IYy7RmCTMrSFXHUwMDBiRJCDXHUwMDAwh/28oGYstk3kldW+Vlx1MDAxYzNcdTAwMTaMpqzL9zXSjKC0eTFcdTAwMGLxzIo8bVxcK2+eafKHJW9cdTAwMWXLoMCMPGdPNCiTW7C4fFx1MDAwYofhXHUwMDEym1x1MDAwYpjOTSFSXCLgZl2g40LVJ9zZ4+hB5FgllVx1MDAwZnws9bGyRolcdTAwMTM72Y1cdTAwMDVQadSVL6jRjEhcdTAwMDNnX4RSqJFpXrxnUz6bc4ztLtdnfu5cbiXnXHUwMDBlKmVcdTAwMGJcdTAwMWN7XHUwMDE2K1x1MDAwN1x1MDAxN+/dYMjZYF1cdTAwMGZbQ386Ontcbu88Wn45ls9+XG6UXGZcdTAwMGVBXGJcdTAwMTSD8ZZcZq485FxmKFx0xlx1MDAwNFx1MDAwMo5w293RiDPH4fJcYvhYXG5cdTAwMDRmVXXeXHKtXHUwMDBiXHUwMDEwI1x1MDAxZLPG4FxcaqY7P3L2XHUwMDEwi/Z+oeRPi5I3e3fIXHUwMDEw5VwiLGRxPVvW07a7XGZOiYO5XHUwMDEwLmkjZH2VxHw15I9n8b3n+lx1MDAwNSvpk+vEMbaXrKtcdTAwMTA2L9FLxzRcdTAwMTGuhEMsbySTSPVcdTAwMDHYgsWpjL2wllxy3uxcdTAwMWMyaYp91tpqXHUwMDFmXHUwMDFln1x1MDAxZDtcdTAwMTPyYVtwqL50fVx1MDAxY/XD/Vx1MDAwZVx1MDAxN4I2XHKAXHUwMDAwj1txdJmWlmO9VLlFXVwijFx1MDAxN8wxcExCLVx1MDAxN7krXFxx5V9PXHUwMDBmNVx1MDAwMdJyP2/qy1xuwNJrXHUwMDBlLI/N6LNeW18zn5+dbmnn9ejN+NtPXHUwMDAxLKx/gHFyXHUwMDAziXOup375/PNcdTAwMGXmy1Q1O4FNYazXYqHF5p1cdTAwMWbWcC5QjD5WXGbGZ35cdTAwMWFuJJKZkazOjME2UjDh5uuGZ/5CloeLLKDTLJbVLs/tcVx1MDAwN7z4cWgqXGKQziekgqnWbyqUxKl0XHUwMDAzJWasi7OOlZeCRTb3LVx1MDAwZeTbh3ycUmRy15XzkoHdPNw0g8I06NCOmWPNv2c9l4JcdTAwMTmlaVOdXHUwMDFmRKiF87h812B6RlwiLpb3siCOL+JZXHUwMDA0mC1QoE7cMpP8Nlx1MDAxZsfBYZxGp002uXlcdTAwMWImsFlLXHUwMDE5mzR63oFAXHUwMDAz5DPRSIdbiyFtXHUwMDEzXHRcdTAwMWPVodhccqjyXHUwMDEyqlrtXHUwMDEzeY9cdTAwMTJiZsOJVqzoTOd7LF+8wbm8YVZAXHUwMDEzYn3O844gcm6CUlFcdTAwMDGMqVx1MDAwNMgvzVx1MDAwMXLydu3levfV+vHkZPLqcK+18+zDmftcdTAwMTlcdTAwMDDSXHUwMDBibp9rTpCVQU5cdTAwMWLFp/jInLbmiUWF+HXR6GiY01HCkNtOK49SdOShfWBg0HQlXFxcdTAwMDGoL/KTgvlcdTAwMDTj5S98/Hnx8Wbvhj9zOq9Gy4upfcr2ecpcdTAwMTbQhTWKkUXgXHJGUHJ2XG7HXHUwMDA3s6VKuVx1MDAxOXebKmCtu41MWSDky/fSvEvr3Vx0MDJcdTAwMWaOzFlfcEL1ua6SPFtcdTAwMDYsa9nEkHf43fjivk9cdTAwMTj3XHUwMDE4g1x1MDAwMK5Idlx1MDAxN0mRJpUlXHUwMDE4Nlx1MDAwN1x1MDAxZnNOXHUwMDEw9/DrxVx0zsjOx65cbqO1LfVcdTAwMWRg1Vx1MDAwMzdcXC1Zsoj1IzYz3CdcdTAwMGaYUd57mU9cZvktfVlz5lx1MDAxMVusjGLH1Fx1MDAwM9xGY9+wXG5zYGr/XHUwMDA2QzvXzPH65+fi+WhjXHUwMDEy14fH/YP+45WfXHUwMDAxplxcXHUwMDEwXHUwMDE5XHUwMDAyuHxcXFxidGMmQeiBU6BDjlx1MDAwN8DBgq85zeg7kCqyPYKDvKFKpEhcdTAwMTVAda6dzFpcdTAwMDQ2XHUwMDAziFmcUkFcdTAwMWFdPNjvXHUwMDE3TF1cbvtZYMqwKDxyXHUwMDFin4PrdFqvsizZXHUwMDEzQ1x1MDAxZOVEvnxSY3e5vnjNgyyrXGJcdTAwMWHEMnhR6qRhOVx1MDAxNTxcdTAwMTS8q7JcdTAwMWOeVJ9cdGNPv1x1MDAwZk5ohFx1MDAwZTzGqJRFZPmB5NQnlvHUQ6PKpOb2ST6rivtHXHQ2lnW+wbZS5lx1MDAwMydJxrzyl0nD6y6vyWRK2CNcdTAwMWJgOIuMvW/+mqf3g2Yyi/lnXHUwMDBmXHUwMDA3YFx1MDAxZNM+Vc6939y5byy/PJVH72T/zejZq4PuR1x1MDAxMJXD1k/h3KPJeD6E9uyJ1dPW1suT6kTGI1mDXG4sXHUwMDE1MndcdTAwMTSGuIxccuqsuYdcdTAwMWWDxVSFITxiXHUwMDEzYWye7VxyplwiXG7JT4VcdTAwMGZ6zvGsv9z7z+Deb/huTmDg1DbojVRsoUl9T9AsRDRcdTAwMWNcdTAwMTLrfGxcdTAwMDJcdTAwMDWSg1vzIXrkubI0+T9jgoZeU3BXvkGP5mKl8aRcdTAwMTA4WDZcdTAwMWJC/0tz7/LjX+GBTeR36fr9XHUwMDFhwVx1MDAxMYScXHUwMDExXHUwMDFh87NcdTAwMDLS3i+8XG4z01x1MDAxY1x1MDAwN1x1MDAxOVx1MDAxNXG2Vlx1MDAxZUCUK0CoYu2IK6dcYpnPwzJcdTAwMTjByspcdTAwMDbHarBPiO1fPCOA0VAqr+xcZlx1MDAxYcCUYCeJod157kCVQZ57TDykwbJcdTAwMTi/yWCaRVx1MDAwYuRgXHUwMDFmrIbK9zJcdTAwMTWbyZM7znKE95wugVWz9dUy5djLhbRcdTAwMDNU5IXqilEmJ1nZJp0qd1x1MDAwNc9zj0xwkYNOna/E54Pm+Hxw+nV15+1rtbr/eHly8Hx/b7S5t/tT4LOXXHUwMDE5Ylx1MDAxNlx1MDAxM/LxVXpakjXFZ6+jlGzjXGLBlq5rYfDMoeg8XydcdTAwMWakV9jJK8KzkVx1MDAxY6fIzm4mXHUwMDAzZ6tcdTAwMThpxlbNO236XHUwMDE3Pv/98Fx1MDAxOS7NKY7jNkbI4vnC5y+K4LxWcJF5o0f9XHUwMDA2heKwU4lcYoOzr1jYUfK4kufNeMVcdH+yPjdVJ1xywoLSPP9cdTAwMTJcdTAwMTDYwN/qTFx1MDAxOVx1MDAwZXdcdTAwMDD1tzntKFx1MDAwMVbJPO5dXHUwMDFlu1x1MDAwMjnJiMNcdTAwMWU5liCtp+AgNSNZ5sVTLFSDXHTknIqDR854UWm2dqUzudn2YjnCXHUwMDFmXHUwMDAxIFt56lx1MDAwNeazajxcdTAwMWJcdTAwMTelXHUwMDA07Fx1MDAwN1GGq2JFPoeQ/SCRgi1cdTAwMDaSmFx01GecP5PTLFxuxer9MFj15V9Pi1Mk29eT03ynuHrYXHUwMDFjV/Xmy1x1MDAwZk9Gf/a3J6Mvr56oP198XFx+uvNT4CrPI+JcdTAwMWWAZi4plnOa0WWSXHUwMDA3I1xuS2an7yjs9fmoalx1MDAwZeFcZiE/nbVcdTAwMDJXbcZBhEpyyIxjdVdcdTAwMTlXYdImn9v/XHUwMDBiVv8xsKqIc5bTTlx1MDAxMGolQa/gjOzI5njOXHUwMDE4N7FBs71iIGhcdTAwMTFSXHUwMDA2do2rNEqVRKFcYj/Hmf7a2/rJcDxcdTAwMGaR43VcdTAwMTD4IFxmjDrdQirJa3B6XuQ0XHLNMdMw11JDoeYkN1x1MDAwNKk8OU9yUnGdMJdxYpXFs8N1sb4jXHUwMDExZzi4N7KDgPN66vvFXHUwMDE3K43Za8lkLlx1MDAwMzLO6k9niM16glqBgadS5CV4nP0lXfnUII7K4dBSXHUwMDFlYGNcdTAwMWG0XHUwMDEwyHxcZlx1MDAxNDsnWVtSPE06XHUwMDE3mOVnI0SBgFx1MDAwNC6pyaTiRVx1MDAwYrxcdTAwMDBfJkLYoIJbL3U5sI7PcKOZM1x1MDAwZXlq6J1C86jbnpzDT1x1MDAwNT47N1x1MDAxN55cdTAwMDNcdTAwMTXAXHUwMDE2XHUwMDA2fFx1MDAxN9F50Fx1MDAxY52ft0++rTzb3zz9eLKy9fjLeGdrd3I4XHUwMDA3nVx1MDAxZsg5gTygJJOcvpXvOFx1MDAxNrO5XHUwMDE3yOxcdTAwMTGMWsEt9Civ22zs8p/rgbllO6HqqEAtJI/gcPnEcp6nMYvLlqrL7IqJ5z8z4a7lsCOvZHU7wo1cdTAwMDD3v1d6d6lal+mkv+bj8NVn/lvQ4Fx1MDAwYsXY31x1MDAwZSdPN072d7e0X373xT/92lx1MDAxNvJRUdWvdLhFXHUwMDAwfHT1yl+/Vcu9fPukezpJXHUwMDA1XSRghp2vR4/XOyudg9WVI2V2tvybUC/2/MNxONK7J6erXHUwMDFmPq7q39tu64VcdTAwMTg8edzscmf4zVxmKWFPdeHMznpSUmny193llZzKh3Su9oi9OD7WI2qwXCIpR8jVXHUwMDFlP+xcdTAwMDZcdTAwMDPWeJuo/Vx1MDAxNZeEXbDnntP7XCL3UmZVdrpcdTAwMTFZYXu3O2az245xjj/Za7X3jkbd+/QoN7Kvokf98KjS7FKmeG7WXHUwMDFj3MpjpqfXUoi45NxtRjh07WIxQTffd5ctObmMXHUwMDA1cupcXFx1MDAwYvFcdTAwMDDWXHUwMDBlJ91cdTAwMTE/t7Sysba02Vx1MDAxZOHaXHUwMDBiizo4nGz2vuVRo0h++6x10OtzXHJsXCJypd/bPczjvS5cdTAwMDUn0DfptVv9qzdcdTAwMWP0Op1cIja2IbSFaHa01lx1MDAwNL1cdTAwMDaj3m7vsNX/o9FttI4mg3fd8fmNTEZH3eJcdTAwMTPrvrhcbreyXHUwMDBiXHUwMDFhdDtIn19FJCNcdTAwMGaZUV5V9lx1MDAxOVx1MDAwZZtjuvy0vt33fz7prmyqg6OzdSPN8MmDx/R8k1lZnscpgyh1gsho89HZilVlXHUwMDBmXHUwMDFh081579ecWPtHYXpcdTAwMWT2rr99erjf+Wrfb783x1+/tb6JYFx1MDAwZppi7+KpwrncV69ON4/fvt86Xt1queHOh6efd96+Wlx1MDAxOKZHUTgj/LaYXlxy11NzL1xmQ6tIsIH/XHUwMDE1hy9cdTAwMTbN/Wtzc69eu1x1MDAwN1x1MDAwM7lzXGbe5EfiOael4llPsWTwiGAzn4+tV/Z6g79cdTAwMDVcdTAwMGK5YkScXHUwMDBlyTGYXHUwMDAx6mBcdTAwMGJcdTAwMTNhKlx1MDAxOdGlhXvuXHUwMDFmqEIgentcdTAwMGK/dZpcZv6lOLXlXHUwMDA2kH5jsOZcdTAwMTPcXHUwMDE4XHKOe53uaGnYP1x1MDAwMqI+St6wMDSvwa0yms+9qEVcdTAwMDF5p9c6XHUwMDE4XHUwMDFjdirt2s+NzPNdLOVcdTAwMGLH2lx1MDAxNO161Nyuo32z1Xr2Yvxhy+rj/oFcdTAwMWavhP2jh1xy4zYg9LbO8UxcZjFcdTAwMWKZS+8yRu8sXHUwMDE3u9ao1U7sXHUwMDFhc71Rb6tcdTAwMWS1vV1h1MFkmkea6Fx1MDAwYpCeXHUwMDEyrqlVS4vrNCxTnzHvwIlSvrjvsUBcdTAwMDC/rOBZOIDrx0P9VFx1MDAxZX9ag8KAXHUwMDA2XHUwMDBmzdGbSWxcbrTi943h8N3+m82VvVx1MDAxM7HyuL39fOPsy8KA1kc97Vx1MDAxY78zoJVzgfbirFx1MDAxNa8rgXZ8g52symf8wIHWXHUwMDAx41xcPmHe89ygUnGI4kBuZcBYpTbfa5HzYNbbjF3VLFnikbVVXHUwMDA2OWuHXHUwMDFjXHUwMDEw7n3hXHUwMDFjilx1MDAxZoCyt1x1MDAwZpxvh7KDztLgcOk/h8e90eSo1cffXHUwMDBlXHUwMDA3ne5cdTAwMWShbVxyvMyg7fnFXV5aemGLQtxz71Jh3oWTXFzK5m3ZUVx1MDAxY3yohNtJc+u+3lx0PlDr9vnZ3JGDKKtcdTAwMDBX8XC3vIttXHUwMDAxgDvXvDloXG5cdTAwMGIkVcVMXHUwMDFlXHUwMDFlgaZlXHUwMDA1i3ZaOVxc8N3kvlx1MDAxYsDstWbPaee3MfvSXHUwMDFldOHCuudf3cT0ckfRPuJVspRcdTAwMDTL53lKlfA8WlNcdTAwMTZKaFx1MDAxZe22hnz+XHUwMDE5p59cYmvz3kdfXHUwMDFjXVx1MDAwZa09Tbe1Z1x1MDAxZUyyNT7vgicnf7yOz75+fP1cXO6O99eM3D34tFV1wVwiXHUwMDBiPFx1MDAwZVxcWU5mt1x1MDAxY7Y7c7k6XHUwMDBiXHUwMDFjXHUwMDEy54pNL1xyrnPBXHUwMDFi9WVXs9C9+lxui+DP8qUxTD8/Q5+6/e3BSUMuNNdbhjCXXGZcdTAwMDWeMeVtdY7x6Fx1MDAwNsHJtfstXHUwMDBm1FtKKeAued5gYFnEbHyiLGt6YExG+KiKU15cdTAwMTboL5XhVFx1MDAxYimkdVVcdTAwMWXTslx1MDAxZsrlfNVFISuqZHliL4dcdTAwMDL8XHUwMDEzXedccjyR4CBKYUVcYkJcdTAwMDQvna/wnXfgK6/fk0idu+ah34El/YGzg9zsXHUwMDA1qlxmtDxcdTAwMTZcdTAwMDPVv523rLRcdTAwMDf+zFjCXfvNaObO6lx1MDAwMl/xYe7mzHFzx3l9svyhOk7L0lwizdH5MfIwpdIgXHUwMDEyyVx0kDxcdTAwMWLB1WzPfJffzMBcdTAwMThl4PGobGIqRFx1MDAwNFe+U9vMiXl5nehl4dC6f5DPvIlHXHUwMDEyivOlrFx1MDAxMTpgvYMsluZduCRE8/qG7qiR41x1MDAxY/75ubO2/XHtQ/fP7c/RPls5a9svlZfJONJcdTAwMDfHM5GsXHUwMDE3MMpZlsmhXHUwMDE3KnqEXHUwMDE4uFxybuqZXHUwMDFiXfBP5T/n2Vx1MDAwNX9cblx1MDAxNrEg7zkvXHUwMDAzV6hcdTAwMWSccZ7B563dlYNcdTAwMGWluFx1MDAwMevsL0/c+3efj4N5XHUwMDFin3bPjle/rdiH7jyDN5nXzLCxXHUwMDBlu1x1MDAxOFx1MDAwYp9/XrLNJLJcdTAwMDXvXHUwMDBld7qcyzxrgSWPVeGpwlXOs+wzXHUwMDFk+1x1MDAxNp2aXHUwMDFl4f7T5uBC8ttrcnBcdTAwMWYu8lvr35F4m1xmXG7FXHUwMDFhadYtue5yiq36u1x1MDAxN5Vbm5s59/Mz50p4Y4Wo7K2U8lx1MDAwNnbb/mNldfRUfz3+2N48/bTtn1xy9+f1gDxcdTAwMTi7ldJcdTAwMDUwUFx1MDAwMFxmZ8JcdTAwMDQly4ZcdTAwMWJC5jiHaVx1MDAxMbtZc1xyV+vM8oymXGJcdTAwMTdcIsX1NXuXs0hcdTAwMDNrv439XHUwMDA3pc5f/PHHxtL/XVo5muzdt9VWfvVdXHUwMDFirSo8mrLRSi9cdTAwMTEzXG5TXHUwMDE1qUjV3Giv52NcdTAwMGbVaK3iKXhcdTAwMWHhfj47YaZK1nEstHYzVbKLNNpcdTAwMTBByfKj83i8oqmaVVJYv1x1MDAwYquFg8nPMbpzsL3igYst5ZohlVx1MDAwYlxmdFxuPmHahFvnXHUwMDEzjlx1MDAwZXunS2Ncbpzct0+o/Or7KEux892C4IhcdTAwMTOO2a5yXHUwMDBiurlbeLuxt663X+iNfbv5rLO25tdcdTAwMDZ784bUPVx1MDAxY7dcdTAwMTCFzni2XHUwMDE3sFFcdTAwMWLtSyRcdTAwMWPsm51OnGdcdTAwMTiu3Vx1MDAwNt9cdTAwMTGhLcTtvILiXHSYilx1MDAxZHRVaV/Fw1xcXHUwMDEwISRJ4cuKcjbdXHUwMDE5VYywfoaalOOz8dFZODl96d5+tJ0tfTZ4/alx8eee/PrxaGUy7m7vvVl9evx6c+/L5PfFeaJcdTAwMWKyk9uB9DXpRMtYXGZxe6U1mubWWP2MXHUwMDFmvDV6kV10pzrHMTglZi1gjt5cdTAwMDetjHHujsxRwiNcYlx1MDAxZnnYK/v6XHUwMDBifaOFvZhcdTAwMTmUltFEXHUwMDExwC3+QeR6Y9D5z+HqJfqNb1x1MDAwYqY19Sg1uFJRj1J9UYuC2W6/31x1MDAxYo4rmziMmlx1MDAxYjJzWq9hW1+VXdvmdt16ufP+3dej/cngz3ZU4vOnlY1h+2FcdTAwMTd/Sm9cXMZDg/OzPGYxVtpcZuCnOWdcdTAwMTiWXThqcaFWrU1cdTAwMTaU0JXFKMZJXHUwMDFljeuqMJaRvNI2/FxcZZ9cdTAwMWRxNGhcdTAwMGI93lx1MDAxZO9MXuy8dJ3BaLNx38Z39Ff83aFb67n1Zo6lS1x1MDAxY0RdZeGuuYVXL91DR27vY6aByVx1MDAxMVGt8bGQO7yooJCg2dFcdTAwMDdcdTAwMTMkp3V+n5HPa9RyIYuW50g5XHUwMDFmWOldUVA6i9xeW1x1MDAwM6hfgH3/LLj9mHN0/nO4eTaedFx1MDAwZu5cYrVrcKqM2nMu6Xsxu4k/m7f9n6u1c5xJYpS3ynObpqTWSvGYcckjp1XknIxcdTAwMTmVXGaKXHUwMDEzolx1MDAxNefLKqOFqCCTQCZcdTAwMGLwXHUwMDEzQVlCjSx4kPpm69uko360XHUwMDBiuWWztfSPKs2uXHSsXvVocUZcblx1MDAxZXEsKvZVWDZ/w4NBNohK4XOLasK+fcfWQjeL5+opf5ZnVXQqb1x1MDAwNppcdTAwMWLukddv/F/f97VUrOny1lhOqrFSXHUwMDFh4YunXHUwMDBmX1x1MDAxNSdcdTAwMTgpNU9H5tlcdTAwMTR3U6hwvc9bSuspLM+LM96w1cIqN3vFOjOe03csy7it9DcrSfuuMoQm2/5NKN21rjVcdTAwMDRcdTAwMDTzWjIq4lx0m+UzjKR03GRT1lx1MDAxYlx1MDAwMe8qZl2rXHUwMDEzXHUwMDE5x0PCOyO0goHGqnQ6vlx1MDAwM9/EXHUwMDAzt6DXYPi/fGu1b1xy3+9bLciv40D/Kt+q5o43MJwuzDlNXHUwMDBid63cV/DTR/OjXFzrfD3lz/Ksit6Hb23sqzhcdTAwMGJaXHUwMDEzN420XlxijVxivYBcclx1MDAxN77KZSDcrKr1PN5dJtX9XHUwMDBicq7Xp4FS58r9vVx1MDAxMFxcfoaUYqXvzFx1MDAwNUvAXT5S3MhcdTAwMTBcclx1MDAxYilcdTAwMWWWd62LQ838YymktsKFxFx1MDAwZVx1MDAwYna+0jxcdTAwMTD9dHo8XHUwMDE5a3/0+Wjr1dh8XHUwMDFhXHUwMDFkXHUwMDFm91ovXHUwMDFljqebXHUwMDEziCrhODCex0JpeIBQXHUwMDFhz1x0JpeBx5h4l1x1MDAxNanWgG3E6GDM4Fx1MDAxY77Z/Fx1MDAwMCypU7bYgfFcdTAwMDP2eVx1MDAxZj/fer92uqnt5/3na+J99/OuOPlQsLJcdTAwMTlMv3rlLlI031x1MDAxN+a+XXuyet9cdTAwMWK86XcuJnxtPd/deTV+fTjc+PN16Fx1MDAwZVx1MDAwNjvL7f6XWY41k5c+r1WKnsdfgfhcdTAwMWGeXG6nSlx1MDAwMax2MfNcdTAwMWNjXHJi76MsbKJfXHK/MVx1MDAwMa5cdTAwMTLE2nM2p5BcdTAwMTXp08Cpolx1MDAxY1x1MDAwMK0ssMIpeY2N3mIuz2TUOlx1MDAxY1x1MDAwZlsjrNnD8T635VnDXHUwMDA18CzlgzB2tqw2t7S5uFx1MDAwMMdcdTAwMTg9z2u/zSCxW6ah945efzRHr99cdTAwMWXGzeXO6N2qfHXw7kvTdPHD8kXXXHUwMDE4aPVdzlx1MDAxOGjF6D74+0xcIvxcdTAwMDct5Im2urTfqTmZz4M4Rlx1MDAxM4wvXHUwMDBleZ7WXHUwMDBlaM64XHIusIDX2Yox0Deb3fdPM8dcdTAwMWLM74N3XHUwMDE0NrAgu8rw1ExKaWp4XHUwMDEyXHUwMDBiXHUwMDE0iyNcdTAwMGJcdTAwMWXOXHUwMDA0P1x1MDAwMtbSWlx1MDAwN9+Gh7p0OTqnsLA/bIZfXHLsVSHvdTeyXHUwMDE4LL7eJ12b71x1MDAwMHxmPO1cdTAwMTbkU1x1MDAxNE9HvVx1MDAxY4HDc9eFMjEoo+MsXHUwMDBlg1Naza5A5lx1MDAwYlx1MDAxOTBWWLpQXHUwMDE5h8GH/Fx1MDAxNIbiIM9fhn++hlPDXHUwMDFmfTdcdTAwMGUjXHUwMDFhhvFcdTAwMTXr5lx1MDAxYU6dQXxcdTAwMTaKx1x1MDAwNvzN0lx1MDAxZHNcdTAwMTWVPzMqOpU2g9lcdTAwMGLLdVxcXHUwMDFmyC5cdTAwMTVzXHUwMDFkynqPxbFcdTAwMWHWalxc8cjhi8SBIdX1VmvQMFx1MDAxNlx1MDAwZsaimFx1MDAwNaWRr3V8S0mmw1x1MDAxOCl54rKNXHUwMDBlf1xys9f7nVnjmdzFLVJcdTAwMWL/uljUR63hcHNcdTAwMDKdvbr3R8e97snjysCaPyR0+bXRy3Rz8/zrX3/9f1xmJ4VPIn0= + + + + + EDGE NODE ON RESOURCE PROVIDER1. Node with exposed service at the edge of HPC clusterVirtual KubeletInterlink API ServerProvider pluginPod on virtual nodeVirtual NodeHTTP + Authunix socketPodContainersBatchSystemOIDCOIDC Identity Provider \ No newline at end of file diff --git a/docs/static/img/scenario-2_dark.svg b/docs/static/img/scenario-2_dark.svg new file mode 100644 index 00000000..388f2042 --- /dev/null +++ b/docs/static/img/scenario-2_dark.svg @@ -0,0 +1,13 @@ + + + eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1da1dcdTAwMTTJsv0+v4LF/XiHuvl+nG/gXHUwMDEzXHUwMDE0RVx1MDAxMVDvucvV0FxytDTd2DQqzpr/fvcuXHUwMDFlXVldTVx1MDAxNdIgzFx1MDAxMUdH+1x1MDAxMZVVXHUwMDE5XHUwMDExO3ZkZORff8zNzY9Ojzrz/5qb73zfafW67WHr2/yffP1rZ3jcXHUwMDFk9PGWyv99PDhcdTAwMTnu5J/cXHUwMDFmjY6O//U//9M6OsrG38p2XHUwMDA2h2ff7PQ6h53+6Fx1MDAxOJ/9X/x7bu6v/E+8023z++/86dMt8TFuqM314Ubn63Cl92Mj/2r+oYtcdTAwMDFccjs7o1Z/r9dcdTAwMTm/9Vx1MDAxZK9bXHUwMDFmM+mDdDFcdTAwMDTjZZSX757iXVx1MDAxZEQmpNUqaCmFXHUwMDE0Vl++/a3bXHUwMDFl7VNAMJlcdTAwMTA6XG6nrMDPWMB+p7u3P8JHjFK4RnTBm5j/mMvPnI3oX3Pi8pXj0XBw0Hk06Fxyhlx1MDAxY/Z/yVx1MDAwZX+NXHUwMDA3vd3aOdhcdTAwMWJcdTAwMGVO+u3xZ1q2XHUwMDFkdnfHn9nt9nrro9NcXDKeNJ7ofEn+1vnoZen1ad/CXHUwMDA19/b7nePj5DuDo9ZOd8RcdTAwMDclxfhcdTAwMGU4uqPldj5h/zdcdTAwMWXTsHXYWeaM9U96vcuXu/12h/Mwvy1cXHK5fvv8clx1MDAxN9M9nkt9/srf48F3OpQspVHWXG5cdTAwMTPH0zTWO6kmXn016Oc6qITU0Vx1MDAxOevHn+hcdTAwMWU/huKNcrG7rd5xZzxcdTAwMDFcdTAwMWPbk7FSJrdzctRunX1JeuWs01x1MDAwMVxuZsfz3ev2XHUwMDBmyt/pXHJ2XHUwMDBlxtf5o3BnJU3f0+9aq5tcdTAwMWa3t8P6in2pl/qjl3t7jTXdXHUwMDA3mylcdTAwMTNMULpC041xXHUwMDE5XHUwMDFlXHUwMDFl3rduiqZrfERoKy00fVLJtdRZNFbLwpt3oN37rZ39k2HnIei3n4F+x6jgQ6Sv0m8np+q3UVpcdTAwMDZf+Np9VG/devtl7fDJalutb+mTha0vL/bWXHUwMDFmTar3qPN9VPLhwmTaXHUwMDA0LVx1MDAwMow4XHUwMDFhqU2i2lrILESt4Xg1noOXdkK1g5GZXHUwMDEy2rtgLb5cdTAwMWVdhX7/VutqtVx1MDAwZdVqnXz8XFx/XXRCeYBphfqq4Kapr6N3XHUwMDBlzsbZqq/XmPBcYpu6hvqOtZFaiPtX2dy7/c7csHM4XHUwMDE4deaOhoOv3XZnONf5fjQ47sy1+nOLa8tzo1x1MDAwMV7o7JzgXHUwMDEzO4P+qNXt41x1MDAwNlx1MDAwYjOP19a7P3JLXHLJq09bh91cdTAwMWUnyiZcdTAwMTde7HX3+Mzmd3CXneF88cGNulxioS4/MFx1MDAxYVx1MDAxY43fvbz25HxcdTAwMGWG3b1uv9V7N8Pbap2MXHUwMDA2bzvHZzc2XHUwMDFhnnSKz7nz/MKwYHn2XG6vMPSvX33e+No2neen4vny83c7XHUwMDBiq6Yx6Fx1MDAwNSmyqG2cXHUwMDAyelxi/oKV8GRhWnhH51x1MDAxMXNfNzW8s/hEVPIyulx1MDAxYuvTb0dRdFx1MDAxNIs3xz9N7Fx1MDAwM1xiVuGfXHUwMDE2U1x1MDAxZIiR0UVE8D+Df/97ObzxQC+V0/f1Zlh76T7vhD3/2qy+f7a2LC9vM1HQ1nA4+DZ/+c7ff14ld/vlM/3mQPdfLb3vf/ji9M6HJff8RnIr0bNwxa/t5d7Xb90t+7nlP6/8eN4+7q5cdTAwMGZcdTAwMGJiz/82nu9bXHJcdTAwMDWqR9MgXHUwMDE0XGJRZFx1MDAxZdGOhcmLXGKLTu09alx1MDAwNFxuXHUwMDFl/mBqkFx1MDAwYlx1MDAwNpHh/SiisN7h1ibt/XpcdTAwMDFu9HJHXW3gu7udnVx1MDAxOP9cdTAwMDFcdTAwMDa+2TxcdTAwMTSQ2jlcclx1MDAwMLZVpuzMNEtcdTAwMGVRXHUwMDFhfDHeg0h2XCJcdTAwMTTY7Fx1MDAwZUcnrd7ci5NtjqhcdTAwMWHfRfLqjfH9sNtuXHUwMDE3MS+F+DrwLKP+1Du4KZRfXHUwMDE4LD89XzHhPqppM25AKKVVXHUwMDA1clPQuFx1MDAwMj2Yrlx1MDAwN2cuZePtkWptrlx1MDAwZo9WzYr+0VrrvVnZmWZzO8PB8fHCfmu0s3+XdjfpTXibzqnMSYTHcGvOXHUwMDFinbo0XHUwMDFkTWaENFx1MDAwMn5cdTAwMDYxjPelcV3PXHUwMDEzaeV2Onb8mUuvqGJmjIaBXHUwMDA0Jb0u2OelV8Q0ZVG4XHUwMDE4nbQyXHUwMDE04thzg49CWyO8XHUwMDFkXHUwMDBmv+hmxjHA8sbeidj6rvufn784Pv34eFW4zV5cdTAwMDGx5vefPO/udlx1MDAwNt2WtCed02BcdTAwMGW3Py1+vUCqWnc11S9N4P4soa4wKa3haFx0XHUwMDFh3O3vlb/S6benvNNrXHUwMDFkj1x1MDAxZVxyXHUwMDBlXHUwMDBmuyNcZmNt0O2PJrwq5S4yXHUwMDE02O+0Jm5cdTAwMWGSp753RHHpXHUwMDFjjP82N9bF/Fx1MDAxZpd//78/Z/DpXHUwMDA1oLH2ylx1MDAwMJZccv4vxJh359/PQtCRYbtC+Fx1MDAxZY1cdTAwMGW1XHUwMDAyTcisilx1MDAxMVx1MDAwNFx1MDAxZVReqHHAx1x1MDAxZqWgw0LxSlx1MDAwZdpo3F2LXHUwMDAzUYAjw6dcdTAwMTGcIPhcdTAwMThcdTAwMDcnuTiTIWJcdFx1MDAwMEVcdTAwMTVxTafrxelMRuYz8Ds4L01cIi5kyoBvS8hTXHUwMDE4nqxcdTAwMTXnXGa8t5XGOlx1MDAxZoJcdTAwMTUmXHUwMDE0xXmXOeWCt1xugZGxvn4qZi9O6+Bhd87Bv7jkZpmlN1Akj/DPS+/rpelM6OAwuUqZXHUwMDEwk7FcdTAwMDWd4UWtXGZcdTAwMTidlsrUXHUwMDBiU5nFjVhcdTAwMWKEXGYyWF+ShkjSWi8trlx1MDAxNbWqN1xumWlcdTAwMDUyqUBZvESwk9yqhNp55aOQXG6oXHUwMDE4naq/2ZlcdTAwMGKEbmlcdTAwMTmNkc5cdTAwMDOSgFxuIVx1MDAxNWgzXHUwMDAxg8VcckOLqe/1XHUwMDAyTWZcdTAwMDNcdTAwMDYnuEqijbRleUVgXHUwMDExtaqML2BSbdDCOG1cdTAwMDXGcIW8em2ZtbhcYv1cbspcdTAwMDHXI3SwsFx1MDAxYXT59HBcdTAwMTFosqDxhFr90yqDXHUwMDEzXHUwMDEyIDRQsqjExOw6xMxcdTAwMTi1h1x1MDAxZlx1MDAxNbZ2MmBcdTAwMWFcdTAwMDZTayW+XHUwMDA2M/Bl21xiTkRLr62gXHUwMDAxdyvMZrhHXHSnXHUwMDAxc4OV+5JcdTAwMGIwXHUwMDFh3Fx1MDAwMNQvwFnr2ECacFx1MDAwZU8mXHUwMDBmaUo+gP5cdObvXHUwMDEwMmGunKtcdTAwMWRcdTAwMWJ8MVx1MDAxM1xmXHUwMDAxeIY5gFx1MDAxMZV8sYxQXHUwMDFm4JhcZlx1MDAwMJNo71pcdTAwMWNUXHUwMDA0+lx1MDAwMb6F+zSw8jLygOkqqlxiPDUmqtZcdTAwMWJcdTAwMWKosGNcYlx1MDAwNGvVUahUXHUwMDFjXGJ0lFx1MDAxNupmXHUwMDFk5sO5WoswmcQkYPpwL87CXHUwMDA1TYRcdTAwMDFBaFxciuIwYbX2P2t5XHUwMDBihFx1MDAxN2GNXHUwMDBi8HpQXHUwMDA3XHUwMDA1X5WIXFyQ/EDQ+FxyXHUwMDE0cFwiXHUwMDE43VmQtfc9LVr6o/j/61IpqVx1MDAwYkmPXHUwMDEyl4JLdjBcdTAwMGahXHUwMDBi9HlMplx1MDAxZTcnU1x1MDAxZjs7P37o5d1cdTAwMTf66LB/9OP15qfj9TCFTN35+vNVNIrTXHUwMDFkpVx1MDAwM7aPs7R5ZkjSfyhlnaUvMOpmPGq3mK+9IFFgaj5oXHUwMDFmoURcdTAwMGV+ulwik1x1MDAxYzVLXHQ0dNdGLZRcdTAwMWZTjIusSYCWOVx1MDAxM/149NUs6jdJ+seQJJnB6XCpXG6BNEJmMITUm0XrTaBiXHUwMDEzLKSuXHUwMDA1g1x1MDAwNdiBdULCO0LP4MJtXHUwMDEyMVBcdTAwMDVcdTAwMDVcdTAwMDBcdTAwMTR+RGNcdTAwMTZjXHUwMDAzXlMn0DuAlTfe6lx1MDAwMHJjbz7Cn1x1MDAxMIiIXHUwMDBi2ijxXHLlXHUwMDE1/ixcbnSIj8HI4Fx1MDAxOOG5SUtcdTAwMWHIy6uCXHUwMDEw8SPug2dxacQqM8bFmsE0JJtGXHUwMDAyQ1x1MDAwNOIr4Fx1MDAxMTy0XHSmXHUwMDE0xWWIPOHYXHJcdTAwMDIlkIxcdTAwMDZ8SWVcdTAwMTFPkLya6Vx1MDAxYVx1MDAxYlx1MDAxMqWReITAelx1MDAxMUI0QuBp1EPgrOX5LHAqXHUwMDA0XHUwMDEwyYUgUy4swVx1MDAwNzT1XHUwMDBmXCI9M1v1JFxmj8jTtXpcdTAwMTBxREZRpVx1MDAwM3RcdTAwMDRoeHZcXItcdTAwMTVCoV5lpM+AXHUwMDEymFxmTqPwTiXyyK5jRFx1MDAwMKZNtOAk9WxdyVxm8YP3IKhcYrTAXHUwMDA1k5hJZtB271Uw+Fx1MDAwMGLhXHUwMDA2Rlx1MDAwN1aCMETDy4L6wlxiklx1MDAxYkZMh9BcdTAwMWFIgfBcZnBcdTAwMGZuVS/QZVx1MDAwNnOhSGb4R2JcIlxuXHUwMDAxKVwiRJGXkXCe63nszOVcdTAwMDVcdTAwMDTsXHUwMDAxUZhcdTAwMGWYSuO8Klx09Fx1MDAxNnpktFxitM3a+J+0XHUwMDE46kdcdTAwMDaCINo7m/J2hXjA4+GCXHUwMDFiKFxc0tfTk1x1MDAwNVxyskMzgFx1MDAwMkZcdHdtSlx1MDAxYWNhIVI6q6XX0ddroDZcdTAwMTlUVighvJVcYnB0SZ5cdTAwMDR3XCKpilT8eoWZtTjQXmvxjFx1MDAxME1cdGhuiVx1MDAxNfuM9TZCgcLgIdZcdTAwMTOoXHUwMDA1zVx1MDAxMYBqWfhcdTAwMTD4ulhcdTAwMWVcdTAwMWXAKMD3wNRcdTAwMWOu1SDrXHUwMDExYFx1MDAwMcBEQCfXXHUwMDAzjS7PbnB4XHUwMDBlZERcdTAwMTZKUy/OM1x1MDAwMc7QS2Jm7STlgWdcdTAwMDaNZJkoXHUwMDFjW4PhOdBcdTAwMTAjXHUwMDAwZDBP3FM5tVxiPVx1MDAwMkPxgVx1MDAxYzDWu/tZi4P7MFx1MDAxNrdcbupcdTAwMGXfkWaM4FtgM1x1MDAxZU5cdTAwMTHeXHUwMDA1M9JAnMgs62ujg/ODXHUwMDE5pJbrwHXzJKpcdTAwMGY+ssCtiTxcdTAwMDCHZfZcdTAwMTUzga+VU59cdTAwMDY6JF1cdTAwMDRcclVcbuFDvW9hXHUwMDExsLWMJ4R1oMrpXGJjhpcxtXm6htmZu1x1MDAxN8gsj4LqsYBcboFH6vwwXVFrwlx1MDAwYqK22CBdwVx0XHUwMDA2XHUwMDE2McHJzDt8cFGcXHUwMDExLHlBZENcIlx1MDAwYiBuXHUwMDEwYMFcdTAwMWJcYviP4Fx1MDAxZFx1MDAxZIxcdTAwMTjXVOXyPNNcdTAwMDWMW7QwXHUwMDAwq2b6XHUwMDE3cL9KgpBhMpP5tVx1MDAxYeFhxKtcdTAwMTa/NOKEXHUwMDA2t2szPFx1MDAxY1x1MDAwN0PHTCBcdTAwMTJwJXlcdTAwMTE2i5CBvkU0yajOWFx1MDAxYyxcdTAwMDCuXHLgXHUwMDBmz2ZKy1xm1mYwQsSscMvMudaripFcdTAwMThcdTAwMWRDXHUwMDFkXHUwMDE4PKbPlcXB4TFX7fJ0WYM1XHUwMDE1g0BcYpGzsdBVX0qmWIfRMVTzXHUwMDBlylx1MDAxOZqsqeB+gPpcdTAwMDEu2WEgqWuBOC1cdTAwMTGf4Vx1MDAxZHgsUN0m4qAmXHUwMDExYVx1MDAwNpCcy1x090ucy1x1MDAxOLND61x1MDAwM2JF6cvimG9zXHUwMDExMFx1MDAwNG8mXHUwMDFhmC0sXHQ46G1UXGZJQml4XHUwMDFlimfgtlx1MDAxZMJmKVVcdTAwMDNNcVRVXHUwMDA1XVx1MDAxMZg+hCxcdCtcdTAwMTJcdTAwMTmuhClcboh+I4Kuei9cdTAwMDB5XHUwMDFlZlx1MDAwYlxi545cblx1MDAxN9LUNlx1MDAwNLKoXHUwMDA2XHUwMDExKUhcdTAwMDKRvMH9MsglXHUwMDBmNVx1MDAwMFxyaFni9Vx1MDAxY1wiang9sFx1MDAwMybSgeNccuRxr1x1MDAwNoJ6+FxywH/UKe2AQHJp4XAhllx1MDAwMDXg0kYzXG5cdTAwMDLr8cIhXGL3M5BcdTAwMDdcdTAwMWbAJTGAgjdpXHUwMDE0XHUwMDA0eYZLOFxu0ZE3IMB3Lk5keVxiyy0s4LWlu1x1MDAxNaRcdTAwMWNwVDFgmps4PVx1MDAwMSdcdEzQjiFpMjRcdTAwMWLBoJmwXHUwMDA2/ZJgdVxyVs1AXHUwMDE5XHUwMDExXHUwMDBmIIBknbtQZXFcdTAwMDA7k9dwXHUwMDAyLkJcdTAwMDP6h2BcdTAwMWWho4dZRlx1MDAxNlx1MDAxZlx1MDAwN1eShyeKq1x1MDAwMFx1MDAwNUDLRVx1MDAwM7IxY3FcInfxxFsvgFx1MDAxOCU9htVYXHUwMDBiplx1MDAwMUWHfdhcdTAwMDbcynN4eYWHjnD26cx61tQhWlHBSlbZ14tTLLrVXHUwMDAwfY9cdJHKJHbrLdyo0+SnXHUwMDE2XHUwMDE3bWBcdTAwMTVgXHUwMDEzuFx1MDAwYvhcdTAwMTM4XHUwMDE1XHUwMDAxh1BarIlZvizk+Vx1MDAwZUKPenFk7/BDllx1MDAwYpiAr/JCklxiXHUwMDAwW0V272KD1cvZi1x1MDAxM/CQXGJwpGVcdTAwMGXMJ7pcdTAwMTLg9MByXHJCc3haVX+zpDpcdTAwMDZBNdNcdTAwMDRRK2/S4XFLT8A7XGJFIbTBw1NcdTAwMTJeXFzgblxm1C9cdTAwMDSfXHUwMDA2P4FrU1xiZrxG3MaYpomuKMNsn42MVmT0JXlcdTAwMTFcdTAwMTG859akvJjhV8iDXHUwMDA2a6lcclcxrVWJ7kWRIfrxzCpFxHpNUpFcdTAwMWOfXHUwMDBl0jDtwNKSxDZcIqaXcVx1MDAxMVx1MDAwMkghgaSN8kq5XHUwMDEzRaSsMcsmXduLXHUwMDE4PdRcdTAwMDSBXHUwMDFlvVx1MDAwZjxzvfrFjGvPnmFcdFAtzVNNLFA0XHUwMDExx1xmXHUwMDBiiTO9m4ul0YFcdTAwMTZ6uK+gXHUwMDEwXHUwMDE5xPq7zW2N7JPEXVx1MDAxMGhK8oBLkMiMbINwillcbuiCg81cdTAwMDZcdTAwMDG1SEtoYp7GjfCisEdj61fiKVx1MDAwZvhcdTAwMDJcdTAwMWbkXGYwXHUwMDE3dq9Lulx1MDAwMpsgXHUwMDE3jJ6+osHdzlqey1x1MDAxNF2u8UKwpNKXbUN4RDLQYrh71SCJIeHJqSNEXHLmatNcIp9guaNcdTAwMTDxmYh4iMHV+1x1MDAwMlx0Vopb1cYhzFx1MDAwZUxDJfIuXG5zXCJDltBE+aiuJGmAfVx1MDAxYVxcwnJDvsrgNFWd1l1cdTAwMGZrkivbXGKVLbdcdTAwMGXheyVPj2iPPlx1MDAwNbyU4OtcdTAwMWKY2ozlOSalJVx1MDAxN06otvD5tvz44K5J/Fx1MDAwMuhDfZSRJ1mA4WSeilx1MDAxYqXSpFx1MDAwM8s3QFx1MDAxOVx1MDAxNFVcdTAwMTOwV0/9wJ48ZoLZcqiY0+ViXHUwMDEwlrEhStOYZF+fXHUwMDFlxcOzYFx1MDAxYbgwnLJQpjS514RJaopcdTAwMDNcdTAwMGZTTEBcdTAwMDI9oiqrijHGscBcZtDha5c3Zi3OMPlcYv+pXHUwMDExqMNLXHUwMDA1U3p0XGLFPVRcdTAwMTig3GBtiF5cdTAwMDD4XHUwMDFkmdtjXHJHKDtcdTAwMDFcXIf2XHUwMDAyu3H1wVx1MDAxOX1cdTAwMTTiWlx1MDAwYuKnPZPbZVx1MDAxZmWiYb1cdTAwMDRcdTAwMDDKXHUwMDAz0lx1MDAxYYjjpDHxXHUwMDAzozTSluFRXHUwMDA2Q+vHezHWP7jZSlx1MDAwM/iAX1x1MDAwMFx0uCGRlVx1MDAwMiXw4YKpUVQ5j8mtXHUwMDE1h7BcdTAwMWYqXHUwMDBmho1JXHUwMDA14sqSNIBcdTAwMWI4XHUwMDBiUFvDy9daXHUwMDE34op8MVxyNDRfb1FlLItQOFBcdTAwMGZN9lZfXcowReXs0Fx1MDAwMZtVlKEkzsPy8tVApp1rtYRRXHUwMDE0yDpcdTAwMDNNuFtTXG5cdTAwMDNcdTAwMTBEsTiJ1MhBmepcdTAwMGL8MDgwUHJcdTAwMTVti/t9+Vx1MDAwM1xyXHUwMDBlXGK3QfOYXHUwMDBmN/XckVx1MDAxMa2RxktcdTAwMDMnXHUwMDAyN1eOZ1xyKFx1MDAxOTRcXEqSt7tcdTAwMTXGZYroSWvyVHdcdTAwMWGfXHUwMDAwX1x1MDAxMdBcdTAwMDXmuFx1MDAwNcs7a8WRWVx1MDAwMIhcdTAwMTnwO1x1MDAxNlxmJpNcdTAwMTC4XHUwMDFjXHUwMDA2XHUwMDA3jetcdC551VtqQOirmIOFedFzpz6OvFx1MDAwN4jBkk64uVqshqVcIog2XHUwMDA2XHUwMDFj02ouaCZuxCNsx1NQXHUwMDFlYSdT+/VcdTAwMWGiyVx0YVYwbEY0XHSygoCqfFxyVpMg1+e1wI7xdDEkRCXQKZeyd7BjxCxcbozWXHUwMDFhXHUwMDA07fX0WDNcdTAwMGYmWF9cdTAwMWNcdTAwMTHTxURFQN31WUgqmVWVtWNjYiEwXuLWdqlEObGAwFx1MDAxNVx1MDAwMVx1MDAwNHxcdTAwMTKD7NrHxixcbtfXWG9cdTAwMDI2XHUwMDE4fEmaM8EhmGe6rUEp6YylcVxyXHUwMDFmgb9cItIgvlclaXyUXHUwMDEy4Vx1MDAxZcIohC21XHUwMDBmzojMM+3p89yXK60hOVieIykwfLDwS7XiNLBcdTAwMDRgyqKV/I7KmbacQ1xi06CgXHUwMDFjomBcbqw0jFxm1VRZXHUwMDE0O5xcdTAwMDRWglx0XHUwMDE36lx1MDAwMZVcdTAwMTlK4Fx1MDAxMrc8UodFuiz9y8VB32H2XGIyqb1A6pI0J3FcdTAwMTlIglOS9WSY6faomPr2XHUwMDFlyC4n0s9cdTAwMThcdTAwMTbQWVu4zfpcblx1MDAwMSbbXHKrRDFcdTAwMTOK+ZiSwuFcdTAwMDJcYu1cdTAwMDRzdj7Uj41OxLN6PGj6xVR94UvzMFx1MDAxNsEgnka9XHUwMDBmyceG20AgXHUwMDBmnlRKtENcdTAwMWHrknC31Dhdv1x1MDAwMsXeL5HF6Fx1MDAwNrbqnPflNVx1MDAxZeijY/k201x1MDAxNfWAmi/xcPU/wq5YI1OSpsglWNiFXGK9ntZcdTAwMTiTcVx1MDAxMZJKwqovN7H+JFx1MDAxOElcdTAwMDOBuL/srqXJvOpE535cdD4kVVx1MDAxMW5cZoCTh1x1MDAxZVqbLzY0cHHgb0w3kL25wma5c3lS6Hz7XHUwMDEwo7zQXHUwMDAwXHUwMDFjbObhY+GQXHUwMDAyd7rEiXVKxFx1MDAxNDov/UboWF/zwVVZXHUwMDE20MnccbtcdTAwMThL4lxcXvtcdTAwMDCPXHUwMDBmX19cdTAwMWbEzVxcXHUwMDFhXHUwMDFmtGCNhrbCJzrHXHUwMDA1aMWkXHUwMDFh7pX5iPp6srxYXHUwMDA2lsr1XHUwMDA0oYTVyUxwgZxcdTAwMTdcdTAwMDLwKuBH/cY0jeA8Wlx1MDAwZldcdTAwMTFcdTAwMDVcdTAwMTPtXHTmc+hcXFwiXHUwMDE0XHUwMDBlgVxuS6FqR6eAdlxiXHUwMDEzuFjsXb417s/0XbB7jYFcdTAwMDO+XCJCnPpcdTAwMDAnMryCL1x1MDAwM1x1MDAxZEU4bSe2kjHWXHUwMDBlzKjCpTTa4TJLcZpcdTAwMWNSXHUwMDEzOT2huFxcPIJcdTAwMDfGnUZcdTAwMWVcdTAwMDZcdTAwMWRcdTAwMWHsr2JQXCJYh+00s1x1MDAwNuneJZa2eD5a4ERcdTAwMDD9bTA4l5GSXHUwMDA3rvBcbm47SMQpxlx1MDAxOLD9vF5N1Ps67bnLjes5JC/pUrvKi1hcdTAwMDWYXHUwMDE4aDRcdTAwMDPh+ludrbSQOUW9YtEtfFRa71x1MDAwNThcZl6y0tCykqc+OVx1MDAwN3FcXHiUKlx1MDAxMIylKtd7WeY0XHUwMDExTSmjSDBcdTAwMWHcq1x1MDAwNEpBn8BHjInlajQylMhMXHUwMDEwXHUwMDFioKn6m8W0clx1MDAxZFOCykUny9JcZotcZpWEftvQwPrBN/LnkqfJgNmmJE4zvWb42zeh+oj5I+tcdTAwMGLZ7Y5bOmTp0Vx0qq8hYVx1MDAwMTWoXHUwMDFmXHUwMDFkXHUwMDE4hFx1MDAwN+hgbvFfjCnocCYwTZhcdTAwMGJcdTAwMTZcdTAwMWWxmvnO5SFcbmTZXHUwMDEwwMLAMl2YqORj1pOrzlx1MDAxMm6iPmud15HCXFzhikHSValcdTAwMDKFdaSYJ6bsSLh1g/RcdTAwMDFcdTAwMWLnXHUwMDAxXHUwMDA3XHUwMDA08Vx1MDAwMKYhJ1xuXVxyXFxAsJo7TuvrcFnXK1x1MDAwNLw3xqaYK3UlXHUwMDA3xVx1MDAxNV8ouYzcyONqp3fm8ljLXHUwMDA3Y2ImmfWEKT3hdND88Vx1MDAxNjg8XHUwMDFjY504iaBcdTAwMDbMOeQtW6DKaVx1MDAxNlxmtqGYXHUwMDAwNzHkXHUwMDBi0/XawsJcdTAwMDFcdTAwMDfogUUxQkpT6lx1MDAxMkhcdTAwMGI3YFm7QFCvj9pVXHUwMDA2oiM8XCJisLtcdTAwMDBcdTAwMWWdelx1MDAwMjA1xFx1MDAwMVxchVdcbuAu659cdTAwMWXgynKjMpRcdTAwMDVcdTAwMDNcdTAwMTRpSj2v84eHhW/hXHUwMDE2gFx1MDAwNkXH3IhA3mRYd1x1MDAwN8qVslhuRICL5Vx1MDAxZWuEldzaVy8v39nLRXbH9EhaXHUwMDExlHHZxebWXHUwMDExXHUwMDFihFx1MDAwMVx1MDAxOXydZWZcdTAwMDRq7126XHUwMDFhgSeHK1mF0I/xmKsvXHUwMDA2qlx1MDAxMUd/XHUwMDAznPPceIFcdLlrcZLkkola1lCD/qfJNVx1MDAxNlR6zzImhKBcYu5cdTAwMWItvrDaXHUwMDE4w4BcdTAwMGLCXHUwMDA046mnXHUwMDAyXHUwMDA1S1x1MDAwYulcdTAwMTJcdTAwMTXA1nM9vlZkXCJg/Ok/iv//++xDf52/WLvdMNrpXbc83FxySG1l55YnzTdcdTAwMWL+WDj5XHUwMDEyPveOT1e/v3q192bUXmw92n9cdTAwMTCdW1jGxEVcdTAwMDewXHUwMDEyXHUwMDAzrUjbUpp8XHUwMDAzQlx1MDAxNJhZwIeMwpRcdTAwMDY2o9Yt4Nsu5Fx1MDAwYlx1MDAxMyCBhf4w484t+Fx1MDAwNFxcXHUwMDFjeFxmgiNX9HFcdTAwMTfbXHUwMDBljeJSu7Hjx/B71+GFsIey63CBJWPw23lcdTAwMTdcdTAwMWaWkKaJ54uldzBcdTAwMTWmk12DTVx1MDAwMlx1MDAxMOglQ27FojUhjLtCYJMqtJlcdTAwMGJcdTAwMDTHXHUwMDAxv/HSsjSBtbaJvJLa15c7MGFBMmVdvqyRJlx1MDAwNKXNa1lcYmdW5FnjWnnTTJM/rHjzmFx1MDAwNoXAyLP1RIMquVx1MDAxOYvLV3DIlri3gNncXHUwMDE0ISX4NstcdTAwMDJcdTAwMWQnqj7fzi2OXHUwMDFlcVx1MDAxY4uk8laZpW2sLFFyzLmb6Fx1MDAwNcLRXHUwMDA22lwiXHUwMDA0NZqENLD1RSgxXHL2XHUwMDA0VojL8Tr35lx1MDAxONtZqE/83Fx1MDAxMkhObWjHjFx1MDAxZVx1MDAwYs2r+5s9bY6SO6cvn+283H/bsd+ePl56rtbDl+31XHUwMDA3gZLOkbpcdTAwMGKEg2Bcci6WWjaye1xylMZprqlDt29cciUlc1x1MDAxNyTiXHUwMDFhodW4XHUwMDAwNsVJgIx0TFx1MDAxYiPoXHUwMDFht6y72J1vJJRcclg5biv5XHUwMDFiJy+EPVx1MDAxNJy83qdDXHUwMDA2mss5Z2FcdTAwMGWZYkKGM7glduZcdTAwMDJf0kbI+jKJ6WrIXHUwMDFmz+p7z/lj0+JYX7xKci9ZWCFsXqOX9mlcImBcdMSoXFybtbFcdTAwMDFcdTAwMDObsTiVcTMs+5FwXHUwMDBmuDFpjn3C2lx1MDAxYVAw6fPTNfJuWyDRvjQ+9vrhgodcdTAwMGJBm1x1MDAwNlCAx63Yu0xLy75eqrxHXYLHXHUwMDBiJlx1MDAxOdgnoTZcdTAwMWG5JWRcdOVXx4daXHUwMDA0PDiur1chy7NrIMvG65VcdTAwMWarX+1g7VtrKJ6Fo6PXK/5BIItcdTAwMGXsWqDg7IJXflxccHh+4lx1MDAwNbuOIfpjrFx1MDAwNNJTaFx1MDAxZj1TZLH5zlx1MDAwZmvYXHUwMDE3KEZcdTAwMWarkMVzf6yNXGbNXHUwMDE4rY5n7KJxft4my/1cdTAwMDaWXHUwMDA3XGYsiKdZLKtdntvjXG548esxM0GA9jBFjFC1flGhJE6lXHUwMDBiKDFjXZx1rLxcdTAwMTQssrlrcYjafGBBXHUwMDA3kFwiKO3KecnA3TxcXDTT+Es9MMbMsebfs55LwYzStKnOXHUwMDFjj2hcdTAwMTLOY/iuQfeMRFxcLK9lQVx1MDAxY9/Es1xiMFuAQJ24hfzom7xcdTAwMWRcdTAwMDebcVx1MDAxYZ1ussnN2zCBzVrK2GSj5y1cYjRcdTAwMDA+no7icGsxpNtEXHUwMDAyW3Uo7lx1MDAwNlR5XHRVrfaJfI9cdTAwMTJIs2FHK1Z0pv09XHUwMDE2zj/gXFy+YVx1MDAxNvG7jPU5z9tByKlcdEo8PSfZn7Bw7NNcdTAwMTghnzdHyLcv3q98etp331x1MDAxZn/f2ttaXW/tvlr79iBcdTAwMTAyOHaPjojlJHd0jVx1MDAxZtUlQkZub/JcdTAwMTZBjr4l6lx1MDAwNYA0zOsoYVx1MDAxON2Oq6pTgDSWa1x1MDAwZtwmXHK2PJGilOxcdMlUxe9cdTAwMWPlw4XI631cdTAwMWEuzem8IC2vp/ZpvFx1MDAwZpeGXHUwMDE4n3t+eTafri/HN1x1MDAxOdunsIMwd1UpN+FxU1x1MDAwNaz1uMBM9nB1+XJcdTAwMWE4TJotZH1T3lx1MDAxZpntvpRv0ISyJM+WMYtHXrDAXHUwMDFlvv3ag7uZMC4zXHUwMDA2XHUwMDAxaJHcYCRFmliWmedmJG6RlVxcxq9cdTAwMTcn2CY777wqjNa2tPVcdTAwMDCzXHUwMDFluOZqXHUwMDE5KItY32Uzw33yeFx1MDAxZeW9l3nTkD/TtzXbXHUwMDFlcZeVUdw0dVx1MDAwZlfSJMvCXHUwMDEwjVTh1HJznPLt1rOjIPtvTlx1MDAxN9pra7td/+1t+82DwCnWY+f9v5Xi8S2llTTLdjFcXKQy3JMqVWlcXLPBqcj9XHUwMDEx7ORcckVijFRxXHUwMDA2wpluMmtcdTAwMTG4XHUwMDFiQEygVOC+X23s7/adXHUwMDBmXHUwMDE3pHjWoItcXMdn5zqdXHUwMDE2rCxIbopRJFwirOdmq8bOQn31mke0rFwigiDWwYvSVlx1MDAxYdZTwT/BtyrLNfX6TFx1MDAxODf1++CEXHUwMDA2d+BcdTAwMTlGpSxcIutcdTAwMGYk2z6xjqdcdTAwMWVcdTAwMThVJjVcdTAwMTdQ8mZVXFxBSpCxrPNcclx1MDAxNpYyXHUwMDFm2Eoy5qW/TFx1MDAxYV41vCatKWGP3Fx1MDAwMcNmZNz85q94er+mKXOcPOZo3JNZsVx1MDAxMNX4yp7MK82d+8uvvZMlp1x1MDAwNotvvVx1MDAxMlx1MDAxZsWPo6er2/1cdTAwMDfh3D1r8tllXYPRjutcXM58O1eHWLjpgYFs+WpL45rZ+lx1MDAwZneos+hcdTAwMWV6jFx1MDAxOGZMXHSL6z9cdTAwMTZmXHUwMDFm82xvMJNcdTAwMWMkP1ZM2d9cdTAwMTTkXHUwMDAxe/drfppcdTAwMWRcdTAwMTjYtVxyaiNcdTAwMTW30KSuJ2hcdTAwMTZcIlx1MDAxYTaJdT42QVx1MDAwMsnGrXlcdTAwMTM9XHUwMDA2ubLU+T9jgoZOU3BZvsFcdTAwMWXN2UrjSSHwr9xsXGL1L/W9g3V4PIBoXCKvpeuXa1x1MDAwNFtcdTAwMTCyR2jMz1xuSPd+4V1Ymc7PO+aKan1BOTCUM0CkYvGIK6dcYpnPwzRcdTAwMTjByspcdTAwMDbHanCfXHUwMDEwt3/xjFx1MDAwMFKhVF7ZXHUwMDE3NEApwZ0koFx1MDAxN0F6LkCVMZ5LTDykwbJcdTAwMTi/SWOaWVx1MDAwYmRjXHUwMDFmzIbKlzJcdTAwMTU3kyd3nOVcdTAwMDDv2V1cdTAwMDKzZuvLZcrEy4V0XHUwMDA3qMhcdTAwMGLVXHUwMDE1KSY7WdkmO1VuXHSdp5+YoFx1MDAxNUitnnL83Ivm6Nzb0kJcdTAwMGXk0L1cdTAwMTFuZNZW7PLSrn5cdTAwMTDobLnZiVx1MDAxM8iliUJ99iU8W8RWTrOvsFxm5pZcdTAwMTbRcJVg2H5M5Z30ZDU8gydbnjnEZeBiQHWOz0ww5rpYd1x1MDAwNt1vgP6nXHUwMDAwNHyaU+zHbZjmjukmQ1x0XHUwMDBm6jwsXFzofKdH/VxuhWK3U4Sjns2vWNhRcrmSXHUwMDA3znjFXHUwMDE2f7I+M1UnXHLCeG515MZcdTAwMDfVwOHqTFx1MDAxOXZ3XHUwMDEwztg87ighVsk87lxcXHUwMDFlt1x1MDAwNbKVXHUwMDExuz2yL0FaT8FOakZcbp67JOl2XHUwMDFiJFxuXHLPfHLki0pzb1falJv7Xix7+INcdTAwMDByL0+9wLxZjefORSmB+0GU8apYks8uZL9IpOBcdTAwMWVcdTAwMDNJ0Fx1MDAwNOyT509kNItCMXu/XG5XY/nVXHUwMDBiXFy1YPi6kJgoourL5qi6/MU9+jL6MVhd+mDfrbVbj3rrg96DQFV31lx1MDAxMIeN2KDxslT06CX3Zlx1MDAxYsVWpcq6UFx1MDAxYdeMQNXnjarZgjOwOMVVgarN2IZcdTAwMTBBkOAup+JS6cW5rkE69oj/ndL8z8FURZCz7HVcdTAwMDKilVBewVx1MDAwZdmRW+PZYdzEXHUwMDA2W+1cdTAwMTVpoFx1MDAwNaFcZtwzrlKOKlx0QVx1MDAxMU6OXHUwMDFk/XlaeP1e9izPp0nQXHUwMDFlkMCo09WjkrxcdTAwMDZn50X20tBsMlxy6CptJ9Ts41x1MDAwNorKc/Mk+1x1MDAxNNdcdHNcdTAwMTn7VcGkOS5WdyTiXGbb9kZuIGC3nvrd4rOVxtS1ZCaXdIyd+tNcdTAwMGViXHUwMDEznqA+MVx1MDAxYngmhVx1MDAwMZWU7PwlXfnMIDbKYctSXHUwMDFlX2NcdTAwMWHsIJB5XHUwMDEzKO6bZGVcdHG9NLU8XHUwMDE5IVxuj/DLuCZ9imct8Fx1MDAxY3mZXHUwMDA24f5cdTAwMTTcemmTg/CeXHUwMDA3XHUwMDA1RrY9YDv9WrC/XHUwMDExLlx1MDAwZjs7ozP4qVx1MDAwMGetp4Iz1MlcdTAwMDVbaFx1MDAxZllE59Xm6PzktTs+XHUwMDFkLlx1MDAxZC3ufu24XHUwMDFm611p7NBNQef91s7+ybDz65E5MFWUZ7HYv0LGlO/awMZiRkd22Fx1MDAxN4W+25PI3OGvq5G5Zduh6qRALSRP4HB5w3JcdTAwMWWnMVx0zJa6y+SKiWc/ZVxcholalt6NWXBcdTAwMTGXr1x1MDAwNbh/XerdhWpdJJP+no7Dl9/5q6DB54qx/fKZfnOg+6+W3vc/fHF658OSXHUwMDFil1slOtxcIlx1MDAwMM5fvvP3n1fJ/dJ5tvhi9Opg/WRl6dmnL892n348WbyR3IuPjzrfR6mgsyu+XHUwMDBiXHUwMDFmPo7ebu9+fbMqv+wtii39fG+jIHZcIr65eVBSafJXjeZSTuXNnCm9s1nkuVxybK/nQ1ooXHKOd9bVyzCdWNT5y0gy+oz77dm5L3JcdTAwMTllUl9cdTAwMGKh/qTd/dxcdTAwMTGbnZ1cdTAwMTjvjze5lnVcdTAwMTX96eZ8pdGlceJ5kVx1MDAxYk9ZgTuYXFxN5Fx1MDAxY16xxFx1MDAxOHlcYknxzNPprrtsyMk4Zlx1MDAxOFLnSkhcbtdcdTAwMWZ1hvze3OLa8tx6Z4jBXHUwMDE3ZnXQXHUwMDFmrXd/nO1nSF592jrs9nL1TEQu9rp7/ZzudSg4Qb5Rd6fVu/zAYbfdLkLjXHUwMDBlhLbAZIfLTcBrMOzudfut3rtGt9E6XHUwMDE5XHLedo7PbmQ0POlcdTAwMTSfWOf5JdvKzqOgn0P0gt2VXHUwMDExnUdcdTAwMGIyXHUwMDE2q9LAV81cdTAwMTE9XHUwMDFlfHuybLZPlzfeya/L71x1MDAwZV5snmxu3Vx1MDAxZlx1MDAxYpyC6II96GWsRnRcdTAwMTdExsS11fqeI7q0gWdcdTAwMWZcdTAwMTai1HtcdTAwMDTpz+KT0bfY0ivv9j9/P33U2txcdTAwMGYnXHUwMDFiXHUwMDBmXHUwMDEy0tvt5UX9ovu29/bLu07v8cHCyudHP35cdTAwMTmkV4+mXHSkXHUwMDA3bnJgfVJkqU0oaX00mWIxJPtcdTAwMDBXYzp7XHUwMDFisolj0Fx1MDAxMXHkuJ/Jb0yvxfTX14B0hedcIpRRXHUwMDEzbIyzNH3rgkBkb0PhRKd7XHUwMDA06WvDwdduuzOcO+qdXHUwMDAwJO9cdTAwMDOa11x1MDAwMFdcdTAwMTnNp97BTYH8zKhXeur7vvvwbct+XHUwMDE5nK682lLLh8ePJo260+t1j447qV3zXFzujFx1MDAwN9g4zap2Oa5LyFxyW/OsK3aNvzDssYJcXFq2NllQQktVsVx1MDAxNdGwhS+Pw3XXsu5dXHUwMDExdoS4gXWXrPT+2vabatueXHUwMDA01ItymjGgXpg8ezqrQjosieGmllwiXHUwMDAw/HlYn/qZIH5cbnTXQeHqs8dmY/Fwb/NH5/irfvmpc7D0etRcdTAwMTS5by1cIvj++dWXzd7S0/dLL/tb6t361vHn983k3i10Vz+9XHUwMDA20M3W7zyWi/1QXGLdhW2/uYtkk3imVVx1MDAwM2tkpZnEbvbyt0BtzbP/lKxqZmGvipp/xrrLke9Dxe6318DuwHaPslhcdTAwMWM0tmQ1ieiX4C25+9RGZ3/ClO9cbrz/3Vx1MDAwN5E9vlx1MDAwZthdg5bTsLt8XHUwMDAzs4Huz/7Rxt7K4fu1b5uPnz39+PrL3klrOGnU7W7rcNBvl+zaRJexoe1cdTAwMTToXHUwMDBl+elq3Os/XHK6XHUwMDE129wqLpRVYbdiyyZt5V1j91x1MDAwM7Lu9ZujN1x1MDAxZKrwXHUwMDE15p1bxlT4jmznaf3PxOs/id6LrXerg80l+2pvZ/HxxtHbXHUwMDBmj9vvn/zjULb6LpugrHXsKMeGh9E5X9xdd1bZXGJrzFx1MDAwZppzStvqQFx1MDAxYZG4XHUwMDAwRyZOi1x1MDAxOFxuq8O3iLP/XHUwMDE0S3zXXHUwMDFjZ1x1MDAxNVv5umJcdTAwMTg0trjCbtOJgFmwRuF+guyg/e/+o1x1MDAwYpi7XHUwMDE3KFtcdTAwMDNsXHUwMDEzKDvtXHUwMDBlZlx1MDAwM7NXk4eS60nNWnLTg46SR4xPgixocSZcdTAwMTG2xemJr6Cyqlx1MDAxZT08hkD6yJ3H1zBptVx1MDAxYjvG/GeY9MaNwVVcdTAwMWJcdTAwMWVcdTAwMWVcdTAwMTBkdUA91dKV4IG+qrBcdTAwMTdzhrbOht0/Y+uzbVx1MDAxZVRUSv4sXHUwMDE09XH87Vx07G1YgzauYCvMVufsITXJoOVOaueEt5tcdTAwMWZNrrTmSYiOlSSFXHUwMDAyrPm91lx1MDAxMac578BvtVT5Wkfx+Fx1MDAxMij/93SgXHUwMDEzupJcdTAwMTTcTVx1MDAxYu7VpCFcdTAwMTmuys/6MHBcdTAwMWPsXHUwMDA04Iu9XHUwMDEwzsfrMsRcdTAwMDc8XHUwMDAwOjBnnpxcdTAwMTjQYLzXKvIru7ROb3vwrVEgtH7w5MPrJ3ZnaeX49PWHx+tcdTAwMWZOWrvfXHUwMDFiMlx1MDAxM8uTk/OjMc58ZqnoxfnMs2nQ9Fx1MDAwMoBgMs2DfvX56lXF5nglbWatuVx1MDAwNf+5rXbV9vZDTyxOqVx1MDAwM7hcdTAwMGU10YH7rXSsKlx1MDAwZlBmXCJ8unCfrPlcdTAwMTO6cFx1MDAxMuHtc5ON5TdPhFo8tVx1MDAwYs+erfV0e/v9ilxcaMpNfF9vhrWX7vNO2POvzer7Z2vLclbcJHpb6DhyM25SfZdccrhcdFxiXHUwMDA1l6xZf4hh6ZD2ZWJfQ8mjhZ3hWVx1MDAxMVx1MDAxNfbobVx1MDAxNkFMuI1cdTAwMGZ/iipz/Fx1MDAxZMVMscOt5sQkalx1MDAxMVx1MDAxZNvnVFx1MDAxMZMgptlcdTAwMWK7tmmeRnRcdTAwMWbrcVx1MDAxMNjPXHL6c//uf+1cdTAwMGVHJ61cdTAwMWX+1lx1MDAxZrQ794Gi1CBcXFx1MDAwNUXhnVxc3Ed6XHUwMDE3s6EpV3uiq2iK1zJcdTAwMGJBqmhCXHUwMDA14jq2VLKFVGCVhcMvqFC5iFx1MDAxN13GY6WlXHUwMDExMVDVxlxu8dvUi6b+/saQXHUwMDBi3HRsjFnlXHUwMDAxlJq6fG/Zw8hcdTAwMTRcdTAwMWKF/8P4SoV68mdhQjPHgiageWbU5Wq/UeBcdTAwMDL51rqIXHUwMDAw38W8XHUwMDA3XGKPVJ5kLz5jO2hhbd5cbi5cdTAwMTRcdTAwMGZznFx1MDAxNXtcdTAwMTn6168+b3xtm87zU/F8+fm7nYVVM4VsOcvdoTyr0rJcdTAwMTlnXHUwMDA12VxuPDfjvPBMXHUwMDE0j8K+P+Tl6orwq1x1MDAxY2n0cKRcblPFsnwjS8xF68wqXHUwMDFlcDY125OF6LmxPVx1MDAwNLhkVzhcdTAwMDeqWFx1MDAxM1x1MDAwMaW9XHUwMDE15vJPcaRcdTAwMWZu7Ei5pDKlsFnJ6ZXNXG50XeooXG7Nk/5ZjnRhuoLyp6Cad+FJXHUwMDFi+yV6Uq9MhJ9cdTAwMDdcdLHsa1ZoT3LumWRcdTAwMDavZaMunnIwK1x1MDAwZnp1+XbiQYVyikfFXGJtrOCRdHZipIonXHUwMDFmhGuO845cXOfVXHUwMDE1sle7TsCHUS569lx1MDAwMLKl7r+Op1x1MDAxY1x1MDAwN8OzcmW171RcdTAwMTl3XHQqpWN+ILyoaNyrLXjsb9d5hev8ePOkucf8iThZOZZTzelVKEJcdTAwMTieWONvY4HsXvjOqfrJn4Jm3oXnbOyPXHUwMDE2zlx1MDAxY5JQmv2nvORhuZNcdTAwMTlpm92O27xGllx1MDAxZq5S5O3NlJeG7SYmXHUwMDA2aSZqVe6T35RcdTAwMDf90D+wJ62Pr9pcdTAwMDfD+PTTx1x1MDAxZlx1MDAxYofNKuvZ5FNcYqCx4YnupY5IXCIgJlfjZHlF3YBzmefmeclTiGWsOlx1MDAxMkRfx1/+J9XWf6v2l1XpOefy8/2qXHUwMDFko566migj29PEKG8jqLxpem7zPJv1ampOLiSv3jgnN1x1MDAxYVx1MDAxY01LyCXjLmffqlx1MDAwNzqbtNvTXHUwMDFk032z8Gr7udlaf3n4TD1pf3600sh0rcysZjdcdTAwMDQu9Mm0NFx1MDAwMPSZwTSmalx1MDAxYVlcZjFTLj+03rO5fKG/83iV6zr1Pv9Jcc735naLR0/qUGGi83l9x1TDtd475+y93Od60u9+nzvmZ0aVdjvu/vVr7bZynLPav5paZGFSp3eKMjy/geVcdTAwMDRVSnU632Cmz3zGXHUwMDBis6lcdTAwMGVcdTAwMGU/tX/Yg+7w82prZfR+ZdpcdTAwMTkt92frqvWZUWzgYuKEv3JcdTAwMDZvXHUwMDAy3kTtztWf8TM/5/MuXHUwMDBljPbEXmuqm0Ld925P17bKqXbzXHUwMDBmNlnlp/ph76JH0F/d3e1Hc5Ncclx1MDAwN1x1MDAxYm8+PVxub7fXh8Njv/rp+eNnXHUwMDA38r6brFx1MDAwNCXI2Nteapv3wihlVVxcYNmWm1xmMmZptFK4LLAy2VxurySMt2q3wITVSmZ70mWpWzLb8zcqqztcdTAwMGXWtpbF8FU/PDpuP+qPXHUwMDFlP9566T79ssrzmzmF5+/erc3999ziyWj/rp1C5aVnXHUwMDEzfl+9N+DK4lxcXHUwMDAzzJLGgfSGiuJcXGs1uyRoO3XZm9S7cslbhex3mnF6+C3jfKWZXmeFxmqedVvNpv30JVx1MDAxYWG4QqPkbVx1MDAwNOX3XCLNWNJJ/ixcXKrj+MtcdTAwMTPOaWa5xca1rswtXCKc5Fx1MDAxNrEgjJWI5yazdjHjOZBGXHUwMDBiNvf18nq1ro2SjFdvNSiN1/F8XHUwMDE0nlXGLuOxopjYZ3jbq2C0cizkvd5y/OyTjX+cz/F86+hofVx1MDAwNI29fFx1MDAxMvNfu51vS5VOhj9cdTAwMDSyfGB0Mp3cOv/+4+//XHUwMDA3bbKKhCJ9 + + + + + 2. The remote provider expose an API to execute containersVirtual KubeletInterlink API ServerProvider pluginProviderAPIsPodContainersPod on virtual nodeVirtual Nodeunix socketunix socketHTTP + Auth \ No newline at end of file diff --git a/docs/static/img/scenario-2_light.svg b/docs/static/img/scenario-2_light.svg new file mode 100644 index 00000000..be103dea --- /dev/null +++ b/docs/static/img/scenario-2_light.svg @@ -0,0 +1,13 @@ + + + eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1da1dcdTAwMTTJsv0+v4LF/XiHuvl+nG/gXHUwMDEzXHUwMDE0RVx1MDAxMVDvucvV0FxytDTd2DQqzpr/fvcuXHUwMDFlXVldTVx1MDAxNdIgzFx1MDAxMUdH+1x1MDAxMZVVXHUwMDE5XHUwMDExO3ZkZORff8zNzY9Ojzrz/5qb73zfafW67WHr2/yffP1rZ3jcXHUwMDFk9PGWyv99PDhcdTAwMTnu5J/cXHUwMDFmjY6O//U//9M6OsrG38p2XHUwMDA2h2ff7PQ6h53+6Fx1MDAxOJ/9X/x7bu6v/E+8023z++/86dMt8TFuqM314Ubn63Cl92Mj/2r+oYtcdTAwMDFccjs7o1Z/r9dcdTAwMTm/9Vx1MDAxZK9bXHUwMDFmM+mDdDFcdTAwMDTjZZSX757iXVx1MDAxZEQmpNUqaCmFXHUwMDE0Vl++/a3bXHUwMDFl7VNAMJlcdTAwMTA6XG6nrMDPWMB+p7u3P8JHjFK4RnTBm5j/mMvPnI3oX3Pi8pXj0XBw0Hk06Fxyhlx1MDAxY/Z/yVx1MDAwZX+NXHUwMDA3vd3aOdhcdTAwMWJcdTAwMGVO+u3xZ1q2XHUwMDFkdnfHn9nt9nrro9NcXDKeNJ7ofEn+1vnoZen1ad/CXHUwMDA19/b7nePj5DuDo9ZOd8RcdTAwMDclxfhcdTAwMGU4uqPldj5h/zdcdTAwMWXTsHXYWeaM9U96vcuXu/12h/Mwvy1cXHK5fvv8clx1MDAxN9M9nkt9/srf48F3OpQspVHWXG5cdTAwMTPH0zTWO6kmXn016Oc6qITU0Vx1MDAxOevHn+hcdTAwMWU/huKNcrG7rd5xZzxcdTAwMDFcdTAwMWPbk7FSJrdzctRunX1JeuWs01x1MDAwMVxuZsfz3ev2XHUwMDBmyt/pXHJ2XHUwMDBlxtf5o3BnJU3f0+9aq5tcdTAwMWa3t8P6in2pl/qjl3t7jTXdXHUwMDA3mylcdTAwMTNMULpC041xXHUwMDE5XHUwMDFlXHUwMDFl3rduiqZrfERoKy00fVLJtdRZNFbLwpt3oN37rZ39k2HnIei3n4F+x6jgQ6Sv0m8np+q3UVpcdTAwMDZf+Np9VG/devtl7fDJalutb+mTha0vL/bWXHUwMDFmTar3qPN9VPLhwmTaXHUwMDA0LVx1MDAwMow4XHUwMDFhqU2i2lrILESt4Xg1noOXdkK1g5GZXHUwMDEy2rtgLb5cdTAwMWVdhX7/VutqtVx1MDAwZdVqnXz8XFx/XXRCeYBphfqq4Kapr6N3XHUwMDBlzsbZqq/XmPBcYpu6hvqOtZFaiPtX2dy7/c7csHM4XHUwMDE4deaOhoOv3XZnONf5fjQ47sy1+nOLa8tzo1x1MDAwMV7o7JzgXHUwMDEzO4P+qNXt41x1MDAwNlx1MDAwYjOP19a7P3JLXHLJq09bh91cdTAwMWUnyiZcdTAwMTde7HX3+Mzmd3CXneF88cGNulxioS4/MFx1MDAxYVx1MDAxY43fvbz25HxcdTAwMGWG3b1uv9V7N8Pbap2MXHUwMDA2bzvHZzc2XHUwMDFhnnSKz7nz/MKwYHn2XG6vMPSvX33e+No2neen4vny83c7XHUwMDBiq6Yx6Fx1MDAwNSmyqG2cXHUwMDAyelxi/oKV8GRhWnhH51x1MDAxMXNfNzW8s/hEVPIyulx1MDAxYuvTb0dRdFx1MDAxNIs3xz9N7Fx1MDAwM1xiVuGfXHUwMDE2U1x1MDAxZIiR0UVE8D+Df/97ObzxQC+V0/f1Zlh76T7vhD3/2qy+f7a2LC9vM1HQ1nA4+DZ/+c7ff14ld/vlM/3mQPdfLb3vf/ji9M6HJff8RnIr0bNwxa/t5d7Xb90t+7nlP6/8eN4+7q5cdTAwMGZcdTAwMGJiz/82nu9bXHJcdTAwMDWqR9MgXHUwMDE0XGJRZFx1MDAxZdGOhcmLXGKLTu09alx1MDAwNFxuXHUwMDFl/mBqkFx1MDAwYlx1MDAwNpHh/SiisN7h1ibt/XpcdTAwMDFu9HJHXW3gu7udnVx1MDAxOP9cdTAwMDFcdTAwMDa+2TxcdTAwMTSQ2jlcclx1MDAwMLZVpuzMNEtcdTAwMGVRXHUwMDFhfDHeg0h2XCJcdTAwMTTY7Fx1MDAwZUcnrd7ci5NtjqhcdTAwMWHfRfLqjfH9sNtuXHUwMDE3MS+F+DrwLKP+1Du4KZRfXHUwMDE4LD89XzHhPqppM25AKKVVXHUwMDA1clPQuFx1MDAwMj2Yrlx1MDAwN2cuZePtkWptrlx1MDAwZo9WzYr+0VrrvVnZmWZzO8PB8fHCfmu0s3+XdjfpTXibzqnMSYTHcGvOXHUwMDFinbo0XHUwMDFkTWaENFx1MDAwMn5cdTAwMDYxjPelcV3PXHUwMDEzaeV2Onb8mUuvqGJmjIaBXHUwMDA0Jb0u2OelV8Q0ZVG4XHUwMDE4nbQyXHUwMDE04thzg49CWyO8XHUwMDFkXHUwMDBmv+hmxjHA8sbeidj6rvufn784Pv34eFW4zV5cdTAwMDGx5vefPO/udlx1MDAwNt2WtCed02BcdTAwMGW3Py1+vUCqWnc11S9N4P4soa4wKa3haFx0XHUwMDFh3O3vlb/S6benvNNrXHUwMDFkj1x1MDAxZVxyXHUwMDBlXHUwMDBmuyNcZmNt0O2PJrwq5S4yXHUwMDE02O+0Jm5cdTAwMWGSp753RHHpXHUwMDFjjP82N9bF/Fx1MDAxZpd//78/Z/DpXHUwMDA1oLH2ylx1MDAwMJZccv4vxJh359/PQtCRYbtC+Fx1MDAxZY1cdTAwMGW1XHUwMDAyTcisilx1MDAxMVx1MDAwNFx1MDAxZVReqHHAx1x1MDAxZqWgw0LxSlx1MDAwZdpo3F2LXHUwMDAzUYAjw6dcdTAwMTGcIPhcdTAwMThcdTAwMDcnuTiTIWJcdFx1MDAwMEVcdTAwMTVxTafrxelMRuYz8Ds4L01cIi5kyoBvS8hTXHUwMDE4nqxcdTAwMTXnXGa8t5XGOlx1MDAxZoJcdTAwMTUmXHUwMDE0xXmXOeWCt1xugZGxvn4qZi9O6+Bhd87Bv7jkZpmlN1Akj/DPS+/rpelM6OAwuUqZXHUwMDEwk7FcdTAwMDWd4UWtXGZcdTAwMTidlsrUXHUwMDBiU5nFjVhcdTAwMWKEXGYyWF+ShkjSWi8trlx1MDAxNbWqN1xumWlcdTAwMDUyqUBZvESwk9yqhNp55aOQXG6oXHUwMDE4naq/2ZlcdTAwMGKEbmlcdTAwMTmNkc5cdTAwMDOSgFxuIVx1MDAxNWgzXHUwMDAxg8VcckOLqe/1XHUwMDAyTWZcdTAwMDNcdTAwMDYnuEqijbRleUVgXHUwMDExtaqML2BSbdDCOG1cdTAwMDXGcIW8em2ZtbhcYv1cbspcdTAwMDHXI3SwsFx1MDAxYXT59HBcdTAwMTFosqDxhFr90yqDXHUwMDEzXHUwMDEyIDRQsqjExOw6xMxcdTAwMTi1h1x1MDAxZlx1MDAxNbZ2MmBcdTAwMWFcdTAwMDZTayW+XHUwMDA2M/Bl21xiTkRLr62gXHUwMDAxdyvMZrhHXHSnXHUwMDAxc4OV+5JcdTAwMGIwXHUwMDFh3Fx1MDAwMNQvwFnr2ECacFx1MDAwZU8mXHUwMDBmaUo+gP5cdObvXHUwMDEwMmGunKtcdTAwMWRcdTAwMWJ8MVx1MDAxM1xmXHUwMDAxeIY5gFx1MDAxMZV8sYxQXHUwMDFm4JhcZlx1MDAwMJNo71pcdTAwMWNUXHUwMDA0+lx1MDAwMb6F+zSw8jLygOkqqlxiPDUmqtZcdTAwMWJcdTAwMWKosGNcYlx1MDAwNGvVUahUXHUwMDFjXGJ0lFx1MDAxNupmXHUwMDFk5sO5WoswmcQkYPpwL87CXHUwMDA1TYRcdTAwMDFBaFxciuIwYbX2P2t5XHUwMDBihFx1MDAxN2GNXHUwMDBi8HpQXHUwMDA3XHUwMDA1X5WIXFyQ/EDQ+FxyXHUwMDE0cFwiXHUwMDE43VmQtfc9LVr6o/j/61IpqVx1MDAwYkmPXHUwMDEyl4JLdjBcdTAwMGahXHUwMDBi9HlMplx1MDAxZTcnU1x1MDAxZjs7P37o5d1cdTAwMTf66LB/9OP15qfj9TCFTN35+vNVNIrTXHUwMDFkpVx1MDAwM7aPs7R5ZkjSfyhlnaUvMOpmPGq3mK+9IFFgaj5oXHUwMDFmoURcdTAwMGV+ulwik1x1MDAxYzVLXHQ0dNdGLZRcdTAwMWZTjIusSYCWOVx1MDAxM/149NUs6jdJ+seQJJnB6XCpXG6BNEJmMITUm0XrTaBiXHUwMDEzLKSuXHUwMDA1g1x1MDAwNdiBdULCO0LP4MJtXHUwMDEyMVBcdTAwMDVcdTAwMDVcdTAwMDBcdTAwMTR+RGNcdTAwMTZjXHUwMDAzXlMn0DuAlTfe6lx1MDAwMHJjbz7Cn1x1MDAxMIiIXHUwMDBi2ijxXHLlXHUwMDE1/ixcbnSIj8HI4Fx1MDAxOOG5SUtcdTAwMWHIy6uCXHUwMDEw8SPug2dxacQqM8bFmsE0JJtGXHUwMDAyQ1x1MDAwNOIr4Fx1MDAxMTy0XHSmXHUwMDE0xWWIPOHYXHJcdTAwMDIlkIxcdTAwMDZ8SWVcdTAwMTFPkLya6Vx1MDAxYVx1MDAxYlx1MDAxMqWReITAelx1MDAxMUI0QuBp1EPgrOX5LHAqXHUwMDA0XHUwMDEwyYUgUy4swVx1MDAwNzT1XHUwMDBmXCI9M1v1JFxmj8jTtXpcdTAwMTBxREZRpVx1MDAwM3RcdTAwMDRoeHZcXItcdTAwMTVCoV5lpM+AXHUwMDEymFxmTqPwTiXyyK5jRFx1MDAwMKZNtOAk9WxdyVxm8YP3IKhcYrTAXHUwMDA1k5hJZtB271Uw+Fx1MDAwMGLhXHUwMDA2Rlx1MDAwN1aCMETDy4L6wlxiklx1MDAxYkZMh9BcdTAwMWFIgfBcZnBcdTAwMGZuVS/QZVx1MDAwNnOhSGb4R2JcIlxuXHUwMDAxKVwiRJGXkXCe63nszOVcdTAwMDVcdTAwMDTsXHUwMDAxUZhcdTAwMGWYSuO8Klx09Fx1MDAxNnpktFxitM3a+J+0XHUwMDE46kdcdTAwMDaCINo7m/J2hXjA4+GCXHUwMDFiKFxc0tfTk1x1MDAwNVxyskMzgFx1MDAwMkZcdHdtSlx1MDAxYWNhIVI6q6XX0ddroDZcdTAwMTlUVighvJVcYnB0SZ5cdTAwMDR3XCKpilT8eoWZtTjQXmvxjFx1MDAxME1cdGhuiVx1MDAxNfuM9TZCgcLgIdZcdTAwMTOoXHUwMDA1zVx1MDAxMYBqWfhcdTAwMTD4ulhcdTAwMWVcdTAwMWXAKMD3wNRcdTAwMWOu1SDrXHUwMDExYFx1MDAwMcBEQCfXXHUwMDAzjS7PbnB4XHUwMDBlZERcdTAwMTZKUy/OM1x1MDAwMc7QS2Jm7STlgWdcdTAwMDaNZJkoXHUwMDFjW4PhOdBcdTAwMTAjXHUwMDAwZDBP3FM5tVxiPVx1MDAwMkPxgVx1MDAxYzDWu/tZi4P7MFx1MDAxNrdcbupcdTAwMGXfkWaM4FtgM1x1MDAxZU5cdTAwMTHeXHUwMDA1M9JAnMgs62ujg/ODXHUwMDE5pJbrwHXzJKpcdTAwMGY+ssCtiTxcdTAwMDCHZfZcdTAwMTUzga+VU59cdTAwMDY6JF1cdTAwMDRcclVcbuFDvW9hXHUwMDExsLWMJ4R1oMrpXGJjhpcxtXm6htmZu1x1MDAxN8gsj4LqsYBcboFH6vwwXVFrwlx1MDAwYqK22CBdwVx0XHUwMDA2XHUwMDE2McHJzDt8cFGcXHUwMDExLHlBZENcIlx1MDAwYiBuXHUwMDEwYMFcdTAwMWJcYviP4Fx1MDAxZFx1MDAxZIxcdTAwMTjXVOXyPNNcdTAwMDWMW7QwXHUwMDAwq2b6XHUwMDE3cL9KgpBhMpP5tVx1MDAxYeFhxKtcdTAwMTa/NOKEXHUwMDA2t2szPFx1MDAxY1x1MDAwN0PHTCBcdTAwMTJwJXlcdTAwMTE2i5CBvkU0yajOWFx1MDAxYyxcdTAwMDCuXHLgXHUwMDBmz2ZKy1xm1mYwQsSscMvMudaripFcdTAwMThcdTAwMWRDXHUwMDFkXHUwMDE4PKbPlcXB4TFX7fJ0WYM1XHUwMDE1g0BcYpGzsdBVX0qmWIfRMVTzXHUwMDBlylx1MDAxOZqsqeB+gPpcdTAwMDEu2WEgqWuBOC1cdTAwMTGf4Vx1MDAxZHgsUN0m4qAmXHUwMDExYVx1MDAwNpCcy1x090ucy1x1MDAxOLND61x1MDAwM2JF6cvimG9zXHUwMDExMFx1MDAwNG8mXHUwMDFhmC0sXHQ46G1UXGZJQml4XHUwMDFlimfgtlx1MDAxZMJmKVVcdTAwMDNNcVRVXHUwMDA1XVx1MDAxMZg+hCxcdCtcdTAwMTJcdTAwMTmuhClcboh+I4Kuei9cdTAwMDB5XHUwMDFlZlx1MDAwYlxi545cblx1MDAxN9LUNlx1MDAwNLKoXHUwMDA2XHUwMDExKUhcdTAwMDKRvMH9MsglXHUwMDBmNVx1MDAwMFxyaFni9Vx1MDAxY1wiang9sFx1MDAwMybSgeNccuRxr1x1MDAwNoJ6+FxywH/UKe2AQHJp4XAhllx1MDAwMDXg0kYzXG5cdTAwMDLr8cIhXGL3M5BcdTAwMDdcdTAwMWbAJTGAgjdpXHUwMDE0XHUwMDA0eYZLOFxu0ZE3IMB3Lk5keVxiyy0s4LWlu1x1MDAxNaRcdTAwMWNwVDFgmps4PVx1MDAwMSdcdEzQjiFpMjRcdTAwMWLBoJmwXHUwMDA2/ZJgdVxyVs1AXHUwMDE5XHUwMDExXHUwMDBmIIBknbtQZXFcdTAwMDA7k9dwXHUwMDAyLkJcdTAwMDP6h2BcdTAwMWWho4dZRlx1MDAxNlx1MDAxZlx1MDAwN1eShyeKq1x1MDAwMFx1MDAwNUDLRVx1MDAwM7IxY3FcInfxxFsvgFx1MDAxOCU9htVYXHUwMDBiplx1MDAwMUWHfdhcdTAwMDbcynN4eYWHjnD26cx61tQhWlHBSlbZ14tTLLrVXHUwMDAwfY9cdJHKJHbrLdyo0+SnXHUwMDE2XHUwMDE3bWBcdTAwMTVgXHUwMDEzuFx1MDAwYvhcdTAwMTM4XHUwMDE1XHUwMDAxh1BarIlZvizk+Vx1MDAwZUKPenFk7/BDllx1MDAwYpiAr/JCklxiXHUwMDAwW0V272KD1cvZi1x1MDAxM/CQXGJwpGVcdTAwMGXMJ7pcdTAwMTLg9MByXHJCc3haVX+zpDpcdTAwMDZBNdNcdTAwMDRRK2/S4XFLT8A7XGJFIbTBw1NcdTAwMTJeXFzgblxm1C9cdTAwMDSfXHUwMDA2P4FrU1xiZrxG3MaYpomuKMNsn42MVmT0JXlcdTAwMTFcdTAwMTG859akvJjhV8iDXHUwMDA2a6lcclcxrVWJ7kWRIfrxzCpFxHpNUpFcdTAwMWOfXHUwMDBl0jDtwNKSxDZcIqaXcVx1MDAxMVx1MDAwMkghgaSN8kq5XHUwMDEzRaSsMcsmXduLXHUwMDE4PdRcdTAwMDSBXHUwMDFlvVx1MDAwZjxzvfrFjGvPnmFcdFAtzVNNLFA0XHUwMDExx1xmXHUwMDBiiTO9m4ul0YFcdTAwMTZ6uK+gXHUwMDEwXHUwMDE5xPq7zW2N7JPEXVx1MDAxMGhK8oBLkMiMbINwillcbuiCg81cdTAwMDZcdTAwMDG1SEtoYp7GjfCisEdj61fiKVx1MDAwZvhcdTAwMDJcdTAwMWbkXGYwXHUwMDE3dq9Lulx1MDAwMpsgXHUwMDE3jJ6+osHdzlqey1x1MDAxNF2u8UKwpNKXbUN4RDLQYrh71SCJIeHJqSNEXHLmatNcIp9guaNcdTAwMTDxmYh4iMHV+1x1MDAwMlx0Vopb1cYhzFx1MDAwZUxDJfIuXG5zXCJDltBE+aiuJGmAfVx1MDAxYVxcwnJDvsrgNFWd1l1cdTAwMGZrkivbXGKVLbdcdTAwMGXheyVPj2iPPlx1MDAwNbyU4OtcdTAwMWKY2ozlOSalJVx1MDAxN06otvD5tvz44K5J/Fx1MDAwMuhDfZSRJ1mA4WSeilx1MDAxYqXSpFx1MDAwM8s3QFx1MDAxOVx1MDAxNFVcdTAwMTOwV0/9wJ48ZoLZcqiY0+ViXHUwMDEwlrEhStOYZF+fXHUwMDFlxcOzYFx1MDAxYbgwnLJQpjS514RJaopcdTAwMDNcdTAwMGZTTEBcdTAwMDI9oiqrijHGscBcZtDha5c3Zi3OMPlcYv+pXHUwMDExqMNLXHUwMDA1U3p0XGLFPVRcdTAwMTig3GBtiF5cdTAwMDD4XHUwMDFkmdtjXHJHKDtcdTAwMDFcXIf2XHUwMDAyu3H1wVx1MDAxOX1cdTAwMTTiWlx1MDAwYuKnPZPbZVx1MDAxZmWiYb1cdTAwMDRcdTAwMDDKXHUwMDAz0lx1MDAxYYjjpDHxXHUwMDAzozTSluFRXHUwMDA2Q+vHezHWP7jZSlx1MDAwM/iAX1x1MDAwMFx0uCGRlVx1MDAwMiXw4YKpUVQ5j8mtXHUwMDE1h7BcdTAwMWYqXHUwMDBmho1JXHUwMDA14sqSNIBcdTAwMWI4XHUwMDBiUFvDy9daXHUwMDE34op8MVxyNDRfb1FlLItQOFBcdTAwMGZN9lZfXcowReXs0Fx1MDAwMZtVlKEkzsPy8tVApp1rtYRRXHUwMDE0yDpcdTAwMDNNuFtTXG5cdTAwMDNcdTAwMTBEsTiJ1MhBmepcdTAwMGL8MDgwUHJcdTAwMTVti/t9+Vx1MDAwM1xyXHUwMDBlXGK3QfOYXHUwMDBmN/XckVx1MDAxMa2RxktcdTAwMDMnXHUwMDAyN1eOZ1xyKFx1MDAxOTRcXEqSt7tcdTAwMTXGZYroSWvyVHdcdTAwMWGfXHUwMDAwX1x1MDAxMdBcdTAwMDXmuFx1MDAwNcs7a8WRWVx1MDAwMIhcdTAwMTnwO1x1MDAxNlxmJpNcdTAwMTC4XHUwMDFjXHUwMDA2XHUwMDA3jetcdC551VtqQOirmIOFedFzpz6OvFx1MDAwN4jBkk64uVqshqVcIog2XHUwMDA2XHUwMDFj02ouaCZuxCNsx1NQXHUwMDFlYSdT+/VcdTAwMWGiyVx0YVYwbEY0XHSygoCqfFxyVpMg1+e1wI7xdDEkRCXQKZeyd7BjxCxcbozWXHUwMDFhXHUwMDA07fX0WDNcdTAwMGYmWF9cdTAwMWNcdTAwMTHTxURFQN31WUgqmVWVtWNjYiEwXuLWdqlEObGAwFx1MDAxNVx1MDAwMVx1MDAwNHxcdTAwMTKD7NrHxixcbtfXWG9cdTAwMDI2XHUwMDE4fEmaM8EhmGe6rUEp6YylcVxyXHUwMDFmgb9cItIgvlclaXyUXHUwMDEy4Vx1MDAxZcIohC21XHUwMDBmzojMM+3p89yXK60hOVieIykwfLDwS7XiNLBcdTAwMDRgyqKV/I7KmbacQ1xi06CgXHUwMDFjomBcbqw0jFxm1VRZXHUwMDE0O5xcdTAwMDRWglx0XHUwMDE36lx1MDAwMZVcdTAwMTlK4Fx1MDAxMrc8UodFuiz9y8VB32H2XGIyqb1A6pI0J3FcdTAwMTlIglOS9WSY6faomPr2XHUwMDFlyC4n0s9cdTAwMThcdTAwMTbQWVu4zfpcblx1MDAwMSbbXHKrRDFcdTAwMTOK+ZiSwuFcdTAwMDJcYu1cdTAwMDRzdj7Uj41OxLN6PGj6xVR94UvzMFx1MDAxNsEgnka9XHUwMDBmyceG20AgXHUwMDBmnlRKtENcdTAwMWHrknC31Dhdv1x1MDAwMsXeL5HF6Fx1MDAwNrbqnPflNVx1MDAxZeijY/k201x1MDAxNfWAmi/xcPU/wq5YI1OSpsglWNiFXGK9ntZcdTAwMTiTcVx1MDAxMZJKwqovN7H+JFx1MDAxOElcdTAwMDOBuL/srqXJvOpE535cdD4kVVx1MDAxMW5cZoCTh1x1MDAxZVqbLzY0cHHgb0w3kL25wma5c3lS6Hz7XHUwMDEwo7zQXHUwMDAwXHUwMDFjbObhY+GQXHUwMDAyd7rEiXVKxFx1MDAxNDov/UboWF/zwVVZXHUwMDE20MnccbtcdTAwMThL4lxcXvtcdTAwMDCPXHUwMDBmX19cdTAwMWbEzVxcXHUwMDFhXHUwMDFmtGCNhrbCJzrHXHUwMDA1aMWkXHUwMDFh7pX5iPp6srxYXHUwMDA2lsr1XHUwMDA0oYTVyUxwgZxcdTAwMTdcdTAwMDLwKuBH/cY0jeA8Wlx1MDAwZldcdTAwMTFcdTAwMDVcdTAwMTPtXHTmc+hcXFwiXHUwMDE0XHUwMDBlgVxuS6FqR6eAdlxiXHUwMDEzuFjsXb417s/0XbB7jYFcdTAwMDO+XCJCnPpcdTAwMDAnMryCL1x1MDAwM1x1MDAxZEU4bSe2kjHWXHUwMDBlzKjCpTTa4TJLcZpcdTAwMWNSXHUwMDEzOT2huFxcPIJcdTAwMDfGnUZcdTAwMWVcdTAwMDZcdTAwMWRcdTAwMWHsr2JQXCJYh+00s1x1MDAwNuneJZa2eD5a4ERcdTAwMDD9bTA4l5GSXHUwMDA3rvBcbm47SMQpxlx1MDAxOLD9vF5N1Ps67bnLjes5JC/pUrvKi1hcdTAwMDWYXHUwMDE4aDRcdTAwMDPh+ludrbSQOUW9YtEtfFRa71x1MDAwNThcZl6y0tCykqc+OVx1MDAwN3FcXHiUKlx1MDAxMIylKtd7WeY0XHUwMDExTSmjSDBcdTAwMWHcq1x1MDAwNEpBn8BHjInlajQylMhMXHUwMDEwXHUwMDFioKn6m8W0clx1MDAxZFOCykUny9JcZotcZpWEftvQwPrBN/LnkqfJgNmmJE4zvWb42zeh+oj5I+tcdTAwMGLZ7Y5bOmTp0Vx0qq8hYVx1MDAwMTWoXHUwMDFmXHUwMDFkXHUwMDE4hFx1MDAwN+hgbvFfjCnocCYwTZhcdTAwMGJcdTAwMTZcdTAwMWWxmvnO5SFcbmTZXHUwMDEwwMLAMl2YqORj1pOrzlx1MDAxMm6iPmud15HCXFzhikHSValcdTAwMDKFdaSYJ6bsSLh1g/RcdTAwMDFcdTAwMWLnXHUwMDAxXHUwMDA3XHUwMDA08Vx1MDAwMKYhJ1xuXVxyXFxAsJo7TuvrcFnXK1x1MDAwNLw3xqaYK3UlXHUwMDA3xVx1MDAxNV8ouYzcyONqp3fm8ljLXHUwMDA3Y2ImmfWEKT3hdND88Vx1MDAxNjg8XHUwMDFjY504iaBcdTAwMDbMOeQtW6DKaVx1MDAxNlxmtqGYXHUwMDAwNzHkXHUwMDBi0/XawsJcdTAwMDFcdTAwMDfogUUxQkpT6lx1MDAxMkhcdTAwMGI3YFm7QFCvj9pVXHUwMDA2oiM8XCJisLtcdTAwMDBcdTAwMWWdelx1MDAwMjA1xFx1MDAwMVxchVdcbuAu659cdTAwMWXgynKjMpRcdTAwMDVcdTAwMDNcdTAwMTRpSj2v84eHhW/hXHUwMDE2gFx1MDAwNkXH3IhA3mRYd1x1MDAwN8qVslhuRICL5Vx1MDAxZWuEldzaVy8v39nLRXbH9EhaXHUwMDExlHHZxebWXHUwMDExXHUwMDFihFx1MDAwMVx1MDAxOXydZWZcdTAwMDRq7126XHUwMDFhgSeHK1mF0I/xmKsvXHUwMDA2qlx1MDAxMUd/XHUwMDAznPPceIFcdLlrcZLkkola1lCD/qfJNVx1MDAxNlR6zzImhKBcYu5cdTAwMWItvrDaXHUwMDE4w4BcdTAwMGLCXHUwMDA046mnXHUwMDAyXHUwMDA1S1x1MDAwYulcdTAwMTJcdTAwMTXA1nM9vlZkXCJg/Ok/iv//++xDf52/WLvdMNrpXbc83FxySG1l55YnzTdcdTAwMWL+WDj5XHUwMDEyPveOT1e/v3q192bUXmw92n9cdTAwMTCdW1jGxEVcdTAwMDewXHUwMDEyXHUwMDAzrUjbUpp8XHUwMDAzQlx1MDAxNJhZwIeMwpRcdTAwMDY2o9Yt4Nsu5Fx1MDAwYlx1MDAxMyCBhf4w484t+Fx1MDAwNFxcXHUwMDFjeFxmgiNX9HFcdTAwMTfbXHUwMDBljeJSu7Hjx/B71+GFsIey63CBJWPw23lcdTAwMTdcdTAwMWaWkKaJ54uldzBcdTAwMTWmk12DTVx1MDAwMlx1MDAxMOglQ27FojUhjLtCYJMqtJlcdTAwMGJcdTAwMDTHXHUwMDAxv/HSsjSBtbaJvJLa15c7MGFBMmVdvqyRJlx1MDAwNKXNa1lcYmdW5FnjWnnTTJM/rHjzmFx1MDAwNoXAyLP1RIMquVx1MDAxOYvLV3DIlri3gNncXHUwMDE0ISX4NstcdTAwMDJcdTAwMWQnqj7fzi2OXHUwMDFlcVx1MDAxY4uk8laZpW2sLFFyzLmb6Fx1MDAwNcLRXHUwMDA22lwiXHUwMDA0NZqENLD1RSgxXHL2XHUwMDA0VojL8Tr35lx1MDAxONtZqE/83Fx1MDAxMkhObWjHjFx1MDAxZVx1MDAwYs2r+5s9bY6SO6cvn+283H/bsd+ePl56rtbDl+31XHUwMDA3gZLOkbpcdTAwMGKEg2Bcci6WWjaye1xylMZprqlDt29cciUlc1x1MDAxNyTiXHUwMDFhodW4XHUwMDAwNsVJgIx0TFx1MDAxYiPoXHUwMDFht6y72J1vJJRcclg5biv5XHUwMDFiJy+EPVx1MDAxNJy83qdDXHUwMDA2mss5Z2FcdTAwMGWZYkKGM7glduZcdTAwMDJf0kbI+jKJ6WrIXHUwMDFmz+p7z/lj0+JYX7xKci9ZWCFsXqOX9mlcImBcdMSoXFybtbFcdTAwMDFcdTAwMDObsTiVcTMs+5FwXHUwMDBmuDFpjn3C2lx1MDAxYVAw6fPTNfJuWyDRvjQ+9vrhgodcdTAwMGJBm1x1MDAwNlCAx63Yu0xLy75eqrxHXYLHXHUwMDBiJlx1MDAxOdgnoTZcdTAwMWG5JWRcdOVXx4daXHUwMDA0PDiur1chy7NrIMvG65VcdTAwMWarX+1g7VtrKJ6Fo6PXK/5BIItcdTAwMGXsWqDg7IJXflxccHh+4lx1MDAwNbuOIfpjrFx1MDAwNNJTaFx1MDAxZj1TZLH5zlx1MDAwZmvYXHUwMDE3KEZcdTAwMWarkMVzf6yNXGbNXHUwMDE4rY5n7KJxft4my/1cdTAwMDaWXHUwMDA3XGYsiKdZLKtdntvjXG548esxM0GA9jBFjFC1flGhJE6lXHUwMDBiKDFjXZx1rLxcdTAwMTQssrlrcYjafGBBXHUwMDA3kFwiKO3KecnA3TxcXDTT+Es9MMbMsebfs55LwYzStKnOXHUwMDFjj2hcdTAwMTLOY/iuQfeMRFxcLK9lQVx1MDAxY9/Es1xiMFuAQJ24hfzom7xcdTAwMWRcdTAwMDebcVx1MDAxYZ1ussnN2zCBzVrK2GSj5y1cYjRcdTAwMDA+no7icGsxpNtEXHUwMDAyW3Uo7lx1MDAwNlR5XHRVrfaJfI9cdTAwMTJIs2FHK1Z0pv09XHUwMDE2zj/gXFy+YVx1MDAxNvG7jPU5z9tByKlcdEo8PSfZn7Bw7NNcdTAwMTghnzdHyLcv3q98etp331x1MDAxZn/f2ttaXW/tvlr79iBcdTAwMTAyOHaPjojlJHd0jVx1MDAxZtUlQkZub/JcdTAwMTZBjr4l6lx1MDAwNYA0zOsoYVx1MDAxON2Oq6pTgDSWa1x1MDAwZtwmXHK2PJGilOxcdMlUxe9cdTAwMWPlw4XI631cdTAwMWEuzem8IC2vp/ZpvFx1MDAwZpeGXHUwMDE4n3t+eTafri/HN1x1MDAxOdunsIMwd1UpN+FxU1x1MDAwNaz1uMBM9nB1+XJcdTAwMWE4TJotZH1T3lx1MDAxZpntvpRv0ISyJM+WMYtHXrDAXHUwMDFlvv3ag7uZMC4zXHUwMDA2XHUwMDAxaJHcYCRFmliWmedmJG6RlVxcxq9cdTAwMTcn2CY777wqjNa2tPVcdTAwMDCzXHUwMDFluOZqXHUwMDE5KItY32Uzw33yeFx1MDAxZeW9l3nTkD/TtzXbXHUwMDFlcZeVUdw0dVx1MDAwZlfSJMvCXHUwMDEwjVTh1HJznPLt1rOjIPtvTlx1MDAxN9pra7td/+1t+82DwCnWY+f9v5Xi8S2llTTLdjFcXKQy3JMqVWlcXLPBqcj9XHUwMDEx7ORcckVijFRxXHUwMDA2wpluMmtcdTAwMTG4XHUwMDFiQEygVOC+X23s7/adXHUwMDBmXHUwMDE3pHjWoItcXMdn5zqdXHUwMDE2rCxIbopRJFwirOdmq8bOQn31mke0rFwigiDWwYvSVlx1MDAxYdZTwT/BtyrLNfX6TFx1MDAxODf1++CEXHUwMDA2d+BcdTAwMTlGpSxcIutcdTAwMGYk2z6xjqdcdTAwMWVcdTAwMThVJjVcdTAwMTdQ8mZVXFxBSpCxrPNcclx1MDAxNpYyXHUwMDFm2Eoy5qW/TFx1MDAxYV41vCatKWGP3Fx1MDAwMcNmZNz85q94er+mKXOcPOZo3JNZsVx1MDAxMNX4yp7MK82d+8uvvZMlp1x1MDAwNotvvVx1MDAxMlx1MDAxZsWPo6er2/1cdTAwMDfh3D1r8tllXYPRjutcXM58O1eHWLjpgYFs+WpL45rZ+lx1MDAwZneos+hcdTAwMWV6jFx1MDAxOGZMXHSL6z9cdTAwMTZmXHUwMDFm82xvMJNcdTAwMWMkP1ZM2d9cdTAwMTTkXHUwMDAxe/drfppcdTAwMWRcdTAwMTjYtVxyaiNcdTAwMTW30KSuJ2hcdTAwMTZcIlx1MDAxYTaJdT42QVx1MDAwMsnGrXlcdTAwMTM9XHUwMDA2ubLU+T9jgoZOU3BZvsFcdTAwMWXN2UrjSSHwr9xsXGL1L/W9g3V4PIBoXCKvpeuXa1x1MDAwNFtcdTAwMTCyR2jMz1xuSPd+4V1Ymc7PO+aKan1BOTCUM0CkYvGIK6dcYpnPwzRcdTAwMTjByspcdTAwMDbHanCfXHUwMDEwt3/xjFx1MDAwMFKhVF7ZXHUwMDE3NEApwZ0koFx1MDAxN0F6LkCVMZ5LTDykwbJcdTAwMTi/SWOaWVx1MDAwYmRjXHUwMDFmzIbKlzJcdTAwMTU3kyd3nOVcdTAwMDDv2V1cdTAwMDKzZuvLZcrEy4V0XHUwMDA3qMhcdTAwMGLVXHUwMDE1KSY7WdkmO1VuXHSdp5+YoFx1MDAxNUitnnL83Ivm6Nzb0kJcdTAwMGXk0L1cdTAwMTFuZNZW7PLSrn5cdTAwMTDobLnZiVx1MDAxM8iliUJ99iU8W8RWTrOvsFxm5pZcdTAwMTbRcJVg2H5M5Z30ZDU8gydbnjnEZeBiQHWOz0ww5rpYd1x1MDAwNt1vgP6nXHUwMDAwNHyaU+zHbZjmjukmQ1x0XHUwMDBm6jwsXFzofKdH/VxuhWK3U4Sjns2vWNhRcrmSXHUwMDA3znjFXHUwMDE2f7I+M1UnXHLCeG515MZcdTAwMDfVwOHqTFx1MDAxOXZ3XHUwMDEwztg87ighVsk87lxcXHUwMDFlt1x1MDAwNbKVXHUwMDExuz2yL0FaT8FOakZcbp67JOl2XHUwMDFiJFxuXHLPfHLki0pzb1falJv7Xix7+INcdTAwMDByL0+9wLxZjefORSmB+0GU8apYks8uZL9IpOBcdTAwMWVcdTAwMDNJ0Fx1MDAwNOyT509kNItCMXu/XG5XY/nVXHUwMDBiXFy1YPi6kJgoourL5qi6/MU9+jL6MVhd+mDfrbVbj3rrg96DQFV31lx1MDAxMIeN2KDxslT06CX3Zlx1MDAxYsVWpcq6UFx1MDAxYdeMQNXnjarZgjOwOMVVgarN2IZcdTAwMTBBkOAup+JS6cW5rkE69oj/ndL8z8FURZCz7HVcdTAwMDKilVBewVx1MDAwZdmRW+PZYdzEXHUwMDA2W+1cdTAwMTVpoFx1MDAwNaFcZtwzrlKOKlx0QVx1MDAxMU6OXHUwMDFk/XlaeP1e9izPp0nQXHUwMDFlkMCo09WjkrxcdTAwMDZn50X20tBsMlxy6CptJ9Ts41x1MDAwNorKc/Mk+1x1MDAxNNdcdHNcdTAwMTn7VcGkOS5WdyTiXGbb9kZuIGC3nvrd4rOVxtS1ZCaXdIyd+tNcdTAwMGViXHUwMDEznqA+MVx1MDAxYngmhVx1MDAwMZWU7PwlXfnMIDbKYctSXHUwMDFlX2NcdTAwMWHsIJB5XHUwMDEzKO6bZGVcdHG9NLU8XHUwMDE5IVxuj/DLuCZ9imct8Fx1MDAxY3mZXHUwMDA24f5cdTAwMTTcemmTg/CeXHUwMDA3XHUwMDA1RrY9YDv9WrC/XHUwMDExLlx1MDAwZjs7ozP4qVx1MDAwMGetp4Iz1MlcdTAwMDVbaFx1MDAxZllE59Xm6PzktTs+XHUwMDFkLlx1MDAxZC3ufu24XHUwMDFm611p7NBNQef91s7+ybDz65E5MFWUZ7HYv0LGlO/awMZiRkd22Fx1MDAxN4W+25PI3OGvq5G5Zduh6qRALSRP4HB5w3JcdTAwMWWnMVx0zJa6y+SKiWc/ZVxcholalt6NWXBcdTAwMTGXr1x1MDAwNbh/XerdhWpdJJP+no7Dl9/5q6DB54qx/fKZfnOg+6+W3vc/fHF658OSXHUwMDFil1slOtxcIlx1MDAwMM5fvvP3n1fJ/dJ5tvhi9Opg/WRl6dmnL892n348WbyR3IuPjzrfR6mgsyu+XHUwMDBiXHUwMDFmPo7ebu9+fbMqv+wtii39fG+jIHZcIr65eVBSafJXjeZSTuXNnCm9s1nkuVxybK/nQ1ooXHKOd9bVyzCdWNT5y0gy+oz77dm5L3JcdTAwMTllUl9cdTAwMGKh/qTd/dxcdTAwMTGbnZ1cdTAwMTjvjze5lnVcdTAwMTX96eZ8pdGlceJ5kVx1MDAxYk9ZgTuYXFxN5Fx1MDAxY16xxFx1MDAxOHlcYknxzNPprrtsyMk4Zlx1MDAxOFLnSkhcbtdcdTAwMWZ1hvze3OLa8tx6Z4jBXHUwMDE3ZnXQXHUwMDFmrXd/nO1nSF592jrs9nL1TEQu9rp7/ZzudSg4Qb5Rd6fVu/zAYbfdLkLjXHUwMDBlhLbAZIfLTcBrMOzudfut3rtGt9E6XHUwMDE5XHLedo7PbmQ0POlcdTAwMTSfWOf5JdvKzqOgn0P0gt2VXHUwMDExnUdcdTAwMGIyXHUwMDE2q9LAV81cdTAwMTE9XHUwMDFlfHuybLZPlzfeya/L71x1MDAwZV5snmxu3Vx1MDAxZlx1MDAxYpyC6II96GWsRnRcdTAwMTdExsS11fqeI7q0gWdcdTAwMWZcdTAwMTai1HtcdTAwMDTpz+KT0bfY0ivv9j9/P33U2txcdTAwMGYnXHUwMDFiXHUwMDBmXHUwMDEy0tvt5UX9ovu29/bLu07v8cHCyudHP35cdTAwMTmkV4+mXHSkXHUwMDA3bnJgfVJkqU0oaX00mWIxJPtcdTAwMDBXYzp7XHUwMDFisolj0Fx1MDAxMXHkuJ/Jb0yvxfTX14B0hedcIpRRXHUwMDEzbIyzNH3rgkBkb0PhRKd7XHUwMDA06WvDwdduuzOcO+qdXHUwMDAwJO9cdTAwMDOa11x1MDAwMFdcdTAwMTnNp97BTYH8zKhXeur7vvvwbct+XHUwMDE5nK682lLLh8ePJo260+t1j447qV3zXFzujFx1MDAwN9g4zap2Oa5LyFxyW/OsK3aNvzDssYJcXFq2NllQQktVsVx1MDAxNdGwhS+Pw3XXsu5dXHUwMDExdoS4gXWXrPT+2vabatueXHUwMDA01ItymjGgXpg8ezqrQjosieGmllwiXHUwMDAw/HlYn/qZIH5cbnTXQeHqs8dmY/Fwb/NH5/irfvmpc7D0etRcdTAwMTS5by1cIvj++dWXzd7S0/dLL/tb6t361vHn983k3i10Vz+9XHUwMDA20M3W7zyWi/1QXGLdhW2/uYtkk3imVVx1MDAwM2tkpZnEbvbyt0BtzbP/lKxqZmGvipp/xrrLke9Dxe6318DuwHaPslhcdTAwMWM0tmQ1ieiX4C25+9RGZ3/ClO9cbrz/3Vx1MDAwN5E9vlx1MDAwZthdg5bTsLt8XHUwMDAzs4Huz/7Rxt7K4fu1b5uPnz39+PrL3klrOGnU7W7rcNBvl+zaRJexoe1cdTAwMTToXHUwMDBl+elq3Os/XHK6XHUwMDE129wqLpRVYbdiyyZt5V1j91x1MDAwM7Lu9ZujN1x1MDAxZKrwXHUwMDE15p1bxlT4jmznaf3PxOs/id6LrXerg80l+2pvZ/HxxtHbXHUwMDBmj9vvn/zjULb6LpugrHXsKMeGh9E5X9xdd1bZXGJrzFx1MDAwZppzStvqQFx1MDAxYZG4XHUwMDAwRyZOi1x1MDAxOFxuq8O3iLP/XHUwMDE0S3zXXHUwMDFjZ1x1MDAxNVv5umJcdTAwMTg0trjCbtOJgFmwRuF+guyg/e/+o1x1MDAwYpi7XHUwMDE3KFtcdTAwMDNsXHUwMDEzKDvtXHUwMDBlZlx1MDAwM7NXk4eS60nNWnLTg46SR4xPgixocSZcdTAwMTG2xemJr6Cyqlx1MDAxZT08hkD6yJ3H1zBptVx1MDAxYjvG/GeY9MaNwVVcdTAwMWJcdTAwMWVcdTAwMWVcdTAwMTBkdUA91dKV4IG+qrBcdTAwMTdzhrbOht0/Y+uzbVx1MDAxZVRUSv4sXHUwMDE09XH87Vx07G1YgzauYCvMVufsITXJoOVOaueEt5tcdTAwMWZNrrTmSYiOlSSFXHUwMDAyrPm91lx1MDAxMac578BvtVT5Wkfx+Fx1MDAxMij/93SgXHUwMDEzupJcdTAwMTTcTVx1MDAxYu7VpCFcdTAwMTmuys/6MHBcdTAwMWPsXHUwMDA04Iu9XHUwMDEwzsfrMsRcdTAwMDc8XHUwMDAwOjBnnpxcdTAwMTjQYLzXKvIru7ROb3vwrVEgtH7w5MPrJ3ZnaeX49PWHx+tcdTAwMWZOWrvfXHUwMDFiMlx1MDAxM8uTk/OjMc58ZqnoxfnMs2nQ9Fx1MDAwMoBgMs2DfvX56lXF5nglbWatuVx1MDAwNf+5rXbV9vZDTyxOqVx1MDAwM7hcdTAwMGU10YH7rXSsKlx1MDAwZlBmXCJ8unCfrPlcdTAwMTO6cFx1MDAxMuHtc5ON5TdPhFo8tVx1MDAwYs+erfV0e/v9ilxcaMpNfF9vhrWX7vNO2POvzer7Z2vLclbcJHpb6DhyM25SfZdccrhcdFxiXHUwMDA1l6xZf4hh6ZD2ZWJfQ8mjhZ3hWVx1MDAxMVx1MDAxNfbobVx1MDAxNkFMuI1cdTAwMGZ/iipz/Fx1MDAxZMVMscOt5sQkalx1MDAxMVx1MDAxZNvnVFx1MDAxMZMgptlcdTAwMWK7tmmeRnRcdTAwMWbrcVx1MDAxMNjPXHL6c//uf+1cdTAwMGVHJ61cdTAwMWX+1lx1MDAxZrQ794Gi1CBcXFx1MDAwNUXhnVxc3Ed6XHUwMDE3s6EpV3uiq2iK1zJcdTAwMGJBqmhCXHUwMDA14jq2VLKFVGCVhcMvqFC5iFx1MDAxN13GY6WlXHUwMDExMVDVxlxu8dvUi6b+/saQXHUwMDBi3HRsjFnlXHUwMDAxlJq6fG/Zw8hcdTAwMTRcdTAwMWKF/8P4SoV68mdhQjPHgiageWbU5Wq/UeBcdTAwMDL51rqIXHUwMDAw38W8XHUwMDA3XGKPVJ5kLz5jO2hhbd5cbi5cdTAwMTRcdTAwMGZznFx1MDAxNXtcdTAwMTn6168+b3xtm87zU/F8+fm7nYVVM4VsOcvdoTyr0rJcdTAwMTlnXHUwMDA12VxuPDfjvPBMXHUwMDE0j8K+P+Tl6orwq1x1MDAxY2n0cKRcblPFsnwjS8xF68wqXHUwMDFlcDY125OF6LmxPVx1MDAwNLhkVzhcdTAwMDeqWFx1MDAxM1x1MDAwMaW9XHUwMDE15vJPcaRcdTAwMWZu7Ei5pDKlsFnJ6ZXNXG50XeooXG7Nk/5ZjnRhuoLyp6Cad+FJXHUwMDFi+yV6Uq9MhJ9cdTAwMDdcdLHsa1ZoT3LumWRcdTAwMDavZaMunnIwK1x1MDAwZnp1+XbiQYVyikfFXGJtrOCRdHZipIonXHUwMDFmhGuO845cXOfVXHUwMDE1sle7TsCHUS569lx1MDAwMLKl7r+Op1x1MDAxY1x1MDAwN8OzcmW171RcdTAwMTl3XHQqpWN+ILyoaNyrLXjsb9d5hev8ePOkucf8iThZOZZTzelVKEJcdTAwMTieWONvY4HsXvjOqfrJn4Jm3oXnbOyPXHUwMDE2zlx1MDAxY5JQmv2nvORhuZNcdTAwMTlpm92O27xGllx1MDAxZq5S5O3NlJeG7SYmXHUwMDA2aSZqVe6T35RcdTAwMDf90D+wJ62Pr9pcdTAwMDfD+PTTx1x1MDAxZlx1MDAxYofNKuvZ5FNcYqCx4YnupY5IXCIgJlfjZHlF3YBzmefmeclTiGWsOlx1MDAxMkRfx1/+J9XWf6v2l1XpOefy8/2qXHUwMDFko566migj29PEKG8jqLxpem7zPJv1ampOLiSv3jgnN1x1MDAxYVx1MDAxY01LyCXjLmffqlx1MDAwNzqbtNvTXHUwMDFk032z8Gr7udlaf3n4TD1pf3600sh0rcysZjdcdTAwMDQu9Mm0NFx1MDAwMPSZwTSmalx1MDAxYVlcZjFTLj+03rO5fKG/83iV6zr1Pv9Jcc735naLR0/qUGGi83l9x1TDtd475+y93Od60u9+nzvmZ0aVdjvu/vVr7bZynLPav5paZGFSp3eKMjy/geVcdTAwMDRVSnU632Cmz3zGXHUwMDBis6lcdTAwMGVcdTAwMGU/tX/Yg+7w82prZfR+ZdpcdTAwMTkt92frqvWZUWzgYuKEv3JcdTAwMDZvXHUwMDAy3kTtztWf8TM/5/MuXHUwMDBljPbEXmuqm0Ld925P17bKqXbzXHUwMDBmNlnlp/ph76JH0F/d3e1Hc5Ncclx1MDAwN1x1MDAxYm8+PVxub7fXh8Njv/rp+eNnXHUwMDA38r6brFx1MDAwNCXI2Nteapv3wihlVVxcYNmWm1xmMmZptFK4LLAy2VxurySMt2q3wITVSmZ70mWpWzLb8zcqqztcdTAwMGXWtpbF8FU/PDpuP+qPXHUwMDFlP9566T79ssrzmzmF5+/erc3999ziyWj/rp1C5aVnXHUwMDEzfl+9N+DK4lxcXHUwMDAzzJLGgfSGiuJcXGs1uyRoO3XZm9S7cslbhex3mnF6+C3jfKWZXmeFxmqedVvNpv30JVx1MDAxYWG4QqPkbVx1MDAwNOX3XCLNWNJJ/ixcXKrj+MtcdTAwMTPOaWa5xca1rswtXCKc5Fx1MDAxNrEgjJWI5yazdjHjOZBGXHUwMDBiNvf18nq1ro2SjFdvNSiN1/F8XHUwMDE0nlXGLuOxopjYZ3jbq2C0cizkvd5y/OyTjX+cz/F86+hofVx1MDAwNI29fFx1MDAxMvNfu51vS5VOhj9cdTAwMDSyfGB0Mp3cOv/+4+//XHUwMDA3bbKKhCJ9 + + + + + 2. The remote provider expose an API to execute containersVirtual KubeletInterlink API ServerProvider pluginProviderAPIsPodContainersPod on virtual nodeVirtual Nodeunix socketunix socketHTTP + Auth \ No newline at end of file diff --git a/docs/static/img/scenario-3_dark.svg b/docs/static/img/scenario-3_dark.svg new file mode 100644 index 00000000..e2ce7009 --- /dev/null +++ b/docs/static/img/scenario-3_dark.svg @@ -0,0 +1,13 @@ + + + eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO19bVtcdTAwMTPZ0vX38yu4fL5cdTAwMGV97/eX801cdTAwMTFcdTAwMTVfXHUwMDAwXHUwMDA1UXnOfXFcdTAwMDVcYlx1MDAxMFxyXHSGoMC55r/fazVIunc66UZcdTAwMDLGmWHOeJwkVHZ3V9VaVbuq9n//tbDwaHhx0n7074VH7fO9VrezP2h9f/RcdTAwMDdf/9ZcdTAwMWWcdvo9vKXy/z7tn1xy9vJPXHUwMDFlXHKHJ6f//p//aZ2cZKPfyvb6x1e/2e62j9u94Sk++//x31x1MDAwYlx1MDAwYv/N/yx816C9N2z1XHUwMDBlu+38XHUwMDE38rdGX2eCSF9d7ffyr9ZeSK1kiDdcdTAwMWbo9Pbb51x1MDAxNLkrn4yEdU6fYlx1MDAxMcP2Pt45aHVP26N3+NKjy8vn60cni8+fq/bX3eXtXHUwMDBmS4+3RXf061x1MDAwN51ud2N40c3XetrH9Y3eO1x1MDAxZFx1MDAwZfpf2lx1MDAxZjr7wyO8K5PXJ/3WoH92eNRrn56Wfqd/0trrXGYv+JpcdTAwMThd89WN+ffC6Fx1MDAxNV6g1EJmJiqpXFxQVpubN/Nfd0FmXG43x0vhoo9eJeta6nf7XHUwMDAzruv/XHUwMDFkiLAnxGhlu629L4dYXm+/8JmD9l6Mo898v75aI1xcJqxxwdub947ancOjIbXEh8xpXHUwMDE1pLJcIv9xozW08ychI17VVsnR4+M3n6zs56ryv6P7P2hcdTAwMWS3V/grvbNut3hcdTAwMTN7+9c38YdKjZRKX7/y5+jS+PnlVFx1MDAxOYtcbllSymH7fHhzzVx1MDAwNWVx51x1MDAxNyefzOKJOP9uV97IXHUwMDBmu+77jnh087k/r/82Wv7ZyX7rSvekV8467ZzVcvRIup3el/Tauv29LyN1/VfhQsaMp7TOgt3oKCfZjbfQmmhcXKXdLDW3m+pbUW03R629o7NBe1x1MDAxZSzHeqhttMqE6JyKqem4XHUwMDA3MFx1MDAxZFx1MDAxNU1cdTAwMTZlXGaRqzFFXHUwMDEzuDEgK1KDgeJcYi2NlHe3l9JcdTAwMWJjhjFL3Vx1MDAxZK2q31x1MDAxYm50LvlAlCi9+qx13Ony5o/cSK7UuIGv156vrC6srj1dXlhbXXi3vLH2/t3S8sJ/euvv1rZWni6/e1T6lcfdziF1/9FcdTAwMWUupT0omcWwXHUwMDAzaLr5wLB/Mnp3XHUwMDBmi2h1eu3BSlx1MDAxMzjoXHUwMDBmOoedXqu7OX2N4ytsnVxy++/ap1f3YDg4a1x1MDAxN29j+8WPXHUwMDA3XHUwMDBm122nWvxUuMRcdTAwMTOaZPZSSy+E915X2f3T5nZcdTAwMWZfxt7773ZxcP7t4PT8+bMtefbhy3zjpXWAI6uFXHUwMDE23jrATmr12mdOwiV4ay0+Z5OFjSxatvnPdKtv2f1wcDBu9TaYjN8t3Fx1MDAxNSiOLuXG6o1SmfRcdTAwMTGYamL+M0L2XHUwMDFmXkBcdTAwMWJcdTAwMTiicf5cdTAwMTeh5oNcdTAwMDHbdFZcdTAwMTgnskLp8Vx1MDAxNJ1cdTAwMTGqXHUwMDEy3pabq/nJY3/ycXHt7ZZ9/+JsZWWlfXm425t3ePNcdTAwMWU6XHUwMDE2RYxSiqBdwdbz3/dCZ0A3qJePMVx1MDAwNOvvRdG1iZmMUFx1MDAwNmltXGLKODOu6UrJLFxiXHUwMDAznVx0XllcdTAwMGaNXHUwMDFlI4hBeFx1MDAxZEw0f3lVn8ThTPRcdTAwMTO1XFxL61xcMLZKyZ81V/KLnS9cdTAwMTftJ8f7/c3X3fNXn9c/f758ujXvSm61y6BW0PVglFAyUXLrfWYl3GTUXG5cdTAwMGU1TOZwd/Lm4JFQ8GBMrlx1MDAxMqpcIlxiKuLItU5cdTAwMWJLblx0u/iFJC5IXHUwMDAxs7wriVx1MDAwYqVXp5A4nS2s9lx1MDAxN1ZWn6y9X326XHUwMDAwstWDZ+98w8NeXHUwMDE49lx1MDAxN4ZH7YVcdTAwMTfrS/dA5EpcdTAwMTeUsrZbLupBuJuVXHUwMDEzQzZqjFx1MDAwMqjFSu72vLm9XHUwMDFmbHefr2/KrZWzrTerXHUwMDFmXHUwMDA38lKYt+15t3dcdTAwMWZDpk3QRqsq9uZccqIpXHUwMDFmrFxuQdxcdTAwMWZ7Y8YlXpv6XHUwMDA09mbxiajkXHJ5XHUwMDFirfPa/K2Bv0DoOXqK85DyuNJcZiN6W+sve9sn8XCo5MXK5eDV7ogtlbS4NVx1MDAxOPS/XHUwMDE3clx1MDAxZX9Mk/tk/61+9mHz8OVy5+XJcvfpnuzu+DvJrUvRXFxcZl6ZNy/7Ty63vm9dtrut+PXg4qDpcodcdTAwMTeX21/P9O7qRf+FXHKrK4tvj49Xmy33+m+/nDYoodNXR7QhRlxy6iBHxKLgR17cgjdU3uM59yPBh0xa46VcdTAwMGLMO9qUXHUwMDFj25BcdTAwMTlvnFK1UWD0ck/9XFzuR1x1MDAxYZVpXHUwMDFiwdFcdTAwMDVoryxkmEbceJw3SG013Ir+XHUwMDFiJX+2OoPhWau78Opsl6r4s1xm4bizv1/E2yTbU1x1MDAwM4gpb5i4qFkxXHUwMDA0frrKqKHdKn35xqpcclwiLq2LRLhg1SvNrXr7y9n+6fKrlYtcdTAwMTX35Pmz7feL7U/mdIJV71xy+qeni0et4d7Rr7dsR8qP65eIaYNQIbFs53xcdTAwMTakXHUwMDBlKkTQditCsrDbWbZWbq9tKyxbxcxcdTAwMThcdTAwMWStXHRKel1cdTAwMTX1SmWzKFxcjFx1MDAwZT5cdTAwMTjLKbCIXHUwMDFmli6CxZMs+vCipY9Q/+jr25Xds4/m4Gzn85Otw71n5ycrb1x1MDAwYkD16PGTnVxycfj0eH+19bn3/ltr6/TLsf9cdTAwMDFX8+4xToetwfBcdLS40ztMf6Xd25/wTrd1Olxc6lx1MDAxZlx1MDAxZneGWMZ6v9NcdTAwMWKmn8jlPiZwXHUwMDFmtVtjXHUwMDE3XHLJXHUwMDEz3zuhuPIzXHUwMDE4/W1hpI/5f9z8/X//mMGnXHUwMDE3daa1V1x1MDAwNkZu8P9CRFf6/SxcdTAwMDRcdTAwMWRcdTAwMDNwXHKxro5Gh1qBJsBcXGI00XlcdTAwMDd7XHUwMDE50Vx1MDAwMf4oXHUwMDA1NVx1MDAxNorf5KLQxj20OPBoRDv4tI2MVYUtiTNZXHUwMDEwMTj4u4jvdLpenM4kkNMzXHUwMDAxXHUwMDFlnJemJC5kyjjYI+QpLE/WinNcdTAwMDY+3FwikndcdTAwMWXeRphQXHUwMDE0513mXHUwMDE0t0RcdTAwMTXw3Vhf/yhmL07r4H20MD5cdTAwMTlcXOlig8iEgVwi+Vx1MDAxMIWX3tdL05nQweHhKu6XldZcdTAwMTZ0hlx1MDAxN7UyXGJ4YOWmXpjKXHUwMDEwxVxuXHUwMDBiXHUwMDBmLYMsJFx1MDAxZq+lgVx1MDAxMME7S4vvilrVXHUwMDFihcy0QqylXFzUoHROly5VQu288lFIJbF8p+ovduZcdTAwMDKhW1pGY6TzSjtcdTAwMDBDKFx1MDAwYrSZgMHigqHF1Pd6gSazIbLuweNXjLSpvDK21MnDL+Ch2qCFcdpcbqxhirx6bZm1uJgxeee4SVx1MDAwYlx1MDAxZCzshdzcPXxcdDRZ0HhCrf5plcFcdFx0XHUwMDA3j+JlVGLs6booXHJW7eFHha19XHUwMDE4MFxyg0drJX5ccmbgU9tcYk4gwoCxKWjAw1xus1x1MDAxOa5cdTAwMTHhXGb8XG58sfeJXHUwMDBiMFpcIsjRNsBZ69hAmnBcdTAwMGV3Jmc1iVx1MDAwZqB/gvk7sCY8K+dq11x1MDAwNl9cZlcsXHUwMDAz8Fxmz1x1MDAwMEaU+GJcdTAwMTmhPsAxXHUwMDE5XHUwMDAwJtE+tDioXGL0Q8ODXHUwMDAyT2HlKfIgYFNUXHUwMDExeGo8qFpvbKDCXHUwMDBlrlx1MDAxOF+udVx1MDAxNKosXHUwMDBlcWBkslpyP1x1MDAwZnpea1x1MDAxMSaTeFxieHy4XHUwMDE2Z+GCxmhAXHUwMDEwXHUwMDFhX0VxeGC19j9reYuEl7wkXGJeXHUwMDBm6lx1MDAwMLqtS1wiXHUwMDE3JT9cdTAwMTA0/lx1MDAwNVxuOFx1MDAxMYxuL8ra657Elv5V/P9bXHUwMDA3VHbkPsdcdTAwMDIqXHUwMDA0XHROXHUwMDA34SvTJC+bXHUwMDA3VJsw6v3F02/d9vfOxsfXn7bbS1x1MDAxZk8mXHUwMDA0VHOyVZ6HUrBcdTAwMWJmQLxcdTAwMTd6dFx1MDAwYq5cdTAwMGJk4I2Mcd5cdTAwMDK6XG5cdTAwMDb3kzmSikRrhJlcdTAwMDXto2SJkqrKs0bNfXSEc8ZGLZRcdTAwMWbbJI9cZjzwR/XO4Y1cdTAwMDL9XHUwMDEzXCL9dUIkmcHlXHUwMDAwXHUwMDA28NBcdTAwMDNcYjPig7Ivi9abIFx08IBcbqlroWBcdTAwMTF8wDoh4Vx1MDAxYqFmcOC2xFx1MDAxN6iBXHUwMDAytiC10HiKsUFUUyfQO0BcdTAwMTWLXHUwMDE3dEBoY+++wp9cdTAwMTBcYr5cdTAwMDW0kvhccuVcdTAwMTX+LFxudGDHiMeCXHUwMDE38NtcZkpcdTAwMWHIXHUwMDEzXHUwMDEwpcD3wfpA41xcma/KjKxYk0pDsmkkMETgvVLc3VxyXHUwMDA2fqjM4TLwTlxyXHUwMDAwXHUwMDAyTWKRQ320pLKIO8iomvlcdTAwMWFcdTAwMWJKSiNxXHUwMDBigfRcIoRohMDdqFx1MDAwN8BZy/NZ4KNcdTAwMTBcdTAwMDBnXHUwMDE3XHUwMDE4XHUwMDBil+QhXHUwMDFh0NQ/iPRcdTAwMDLutj5cdTAwMDTDLfL0rFx1MDAxZWE4eFFU5Vx1MDAwNTrCMzhcdTAwMWW+XHUwMDBi3Fx1MDAxMSBdL9BniP/wMPhcdTAwMTiFd6okj7F1jKBfmrteIFx1MDAxM/U3UGZgXHUwMDBmwFx1MDAxZETrXGK2VElcdTAwMWXehLZ7r4LBXHUwMDA3wIRcdTAwMWJcdTAwMThcdTAwMWRiXHUwMDEykFx1MDAxMG3xcU8jKF0wXHUwMDE4XHUwMDFkiLXDJ1x1MDAxMEVcdTAwMDBydFx1MDAwM1x1MDAxNXSZwbNQXGZl+EfJRFx1MDAxNOgo+KHQUD7J51xcXHUwMDFmxc5cXF5cdTAwMDBdXHUwMDBm4GA64FFcdTAwMDKnVVwiXHUwMDEwwC2F0Vwi0DZr2T+DYqhcdTAwMWbjXHUwMDBmUGjvbDlqV4gmPG4uXCJcdTAwMDOFr/T1wcmiRqhDM4BcdTAwMDJGXHR3bVx1MDAxMo2xsFx1MDAxMCmJil5HX6+B2mRQWaGE8FaC3uhEnlx1MDAxNKz1xcOl4tcrzKzFIei1XHUwMDE290g6PFx1MDAwZa+SmNgjXHUwMDA0iJFcdGvexPrwaVFzXHUwMDA1gVVT0cDXxXR5XHUwMDAwo1x1MDAwMN9cdTAwMDNTc/iuXHUwMDA2OY+QcUddXHUwMDAzOlx1MDAwMZ/W6PTpXHUwMDA2MD3JeMhCaerFeWbAYVDMnyCAXHUwMDFhXHUwMDBieOCZXHUwMDExROq8Oq2Bw2ehXHUwMDBm9Fx1MDAxOEBcdTAwMDbzxDWliUXoXHUwMDEx4lx1MDAxM1x1MDAxZlx1MDAxOFx1MDAwMcZ6dz9rcXBcdTAwMWbG4lJcdTAwMTFLwHeU80WKhXjBwynCu+CJNFx1MDAxMCcyXHUwMDFiXHUwMDAzI1U4P1x1MDAxNs6VxDlEunlcbtVcdTAwMDdcdTAwMGadaZBvgzxcdTAwMTa6M/eKJ4FfS1x1MDAxM59cdTAwMDY6JF1EXHUwMDEwqlx1MDAxNOhDvW+JmWSFLPiEsFx1MDAwZYFyeYUxw8t4tHmyhrmZh1x1MDAxN8hcdTAwMWOPguo5QU5hy85cdTAwMGaPK2pNeFx1MDAwMWuLXHKSXHUwMDE1fMDAXCKmN5l3h1x1MDAwZi6KM4L1IGA2XGZjXHUwMDAxxFxyXGJcdTAwMTa8gYD/XGLe0cGIUd1/Ls8zWUDeolx1MDAwNYvKmulfwPUqiWBcclx1MDAwZrP0fK1cdTAwMDY9jHjV4lx1MDAxZlxyntDgcm2Gm+Ng6HhcdTAwMTJgXHUwMDAyLpFcdTAwMTdhs6BcZvQtokk+dcbiYFx1MDAwMXBtXHUwMDAwf3g2k2wyWJuxqlx1MDAwMY9cdTAwMWPGgaC7XlWMxOpIdWDweHwuXHUwMDE1XHUwMDA3h8dMtcuTZVxydlRcZohcdTAwMTCYs7HQVZ+kUqzD6kjVvJOs2mywo4Lr4W4mXFyyw0LKrlx1MDAwNeK0XHUwMDA0P8M78FhBN1x1MDAxMlx1MDAwNzWJoFx1MDAxOUBybibMlziXkbND61x1MDAwM7ii9Kk4ZttcXFx1MDAwNFxmwZuJXHUwMDA2Zlx1MDAwYktcdTAwMDJcdTAwMGV6XHUwMDFiXHUwMDE1KUlIlueheFx1MDAwNm7bgTZLqVx1MDAxYWiKo6oq6IrA4/Ou9GidyPBNeERcdTAwMDHsN4J01XtcdTAwMDHI8zBbQDiQxrFcdTAwMTUrXHUwMDExyMpcdTAwMTAwUlx1MDAwNFx0RPJcdTAwMDbXS5LLONRcdTAwMDA0oGUlr+fAqOH1XHUwMDEwXHUwMDFkMI1cdTAwMGVcdTAwMWNvII99XG4g9fBcdTAwMWKA/6jLYVx1MDAwN1x1MDAwNDKWXHUwMDE2XHUwMDBlX8Q6llx1MDAwNrG00WRBiHq8cCDhflx1MDAwNvLgXHUwMDAzuCFcdTAwMDZQYFlMXCLPcFx1MDAwM0eBXHUwMDFkeYNcdTAwMDD4wcWJLKewbN9AXFybXFytYMhcdTAwMDFHXHUwMDE1XHUwMDAzXHUwMDFlc1x1MDAxM6cn4CSBXHTakZKWlmYjXCJopqtcdTAwMTF+SUR1XHL2zFx1MDAxMDKCXHUwMDBmgEBcdTAwMDLMvFCpOICdyVx1MDAwYlx1MDAxY1x1MDAwMVx1MDAxN6FB+Fx1MDAwNzJcdTAwMGbq6GGWIDmIXHUwMDFhXVwiXHUwMDBmd1x1MDAxNN9cdTAwMDJcdTAwMTRAWC5cdTAwMWFcdTAwMDRcdTAwMWIzXHUwMDE2J3JcdTAwMTdPvPVcdTAwMDKIkegxrMZaRFx1MDAxYVB02IdtXHUwMDEwW3kuLy/x0Fx1MDAxMc6+/GS9yDygTqpgwVx1MDAxZkWD5INcdTAwMDJcdTAwMWaxXHUwMDFhoO/xQKQyJbv1XHUwMDE2btRpxqdcdTAwMTZf2sAqXHUwMDEwTVxctXbCqVxiOIRkqyZm+aaQ5zugXHUwMDFl9eJcdTAwMTi9w1x1MDAwZlluX1x1MDAwMr7SbSRcdTAwMTFcdTAwMDC2itG9i1xy9i5nL07AQ4LgSMtcdTAwMWOYL+lKgNNDlGtAzeFpVf3FMtQxINVMXHUwMDEzRK28KS/PcVx1MDAxYlx1MDAxY++AikJog5unJLy4wNVcdTAwMTioX1xivkx+XHUwMDAyd6ZcIlvxwNvIaZroijLM9tlItlwio0/kRTB4b1x1MDAxNPOAXGLXfoU8aLCW2nBcdTAwMGbTWlXSvSgysFx1MDAxZs+sUlx1MDAwNNdrkork+nSQhmlcdTAwMDdcdTAwMTaWlGwj4vGSXHUwMDE3gUBcblx0JG2UV8qdKJiyxlM25Z29iNVDTVj6qdlcdTAwMTjVwDhixp1nT1pcdTAwMDJUK+epxvYnmohjhoWBM72bi8nqXHUwMDEwXHUwMDE2enZtKDCDWH+1ua0x+mTgLlxiNIk84Fx1MDAxMiQyI9uATjFLXHUwMDAxXeB+UFx1MDAxMFCLclx1MDAwMU3M07hcdTAwMTFeXHUwMDE09sj69ibygC/wQc5cdTAwMDBzWe+W6FxubIKxYPT0XHUwMDE1XHKudtbyXFym6HKNXHUwMDE3ILdO+tQ2hFx1MDAwN5OBXHUwMDE2w92rXHUwMDA2SVxmXHRPTlx1MDAxZCFqMFdbLvFcdIAhXHUwMDA1tipFxE1cZq7eXHUwMDE3SESluFRtXHUwMDFj++uYhirJ+1GWXHUwMDEzSVlCXHUwMDEz5aO6Mkiz7C+PoVx1MDAxNOWGfJfBaao6rbtcdTAwMWXWJPe1QZVxTVxmO33i6cH26FNcdTAwMTCXXHUwMDEyfH1cdTAwMDNTm7E8x6S05MZcdNVcdTAwMTY+36a3XHUwMDBm7pqBX0D4UM8y8iRcdTAwMGIwnJGnwj2S5aRcdTAwMDO3S1x1MDAxMTIoqiZgrz70Q/Tk8SSYLYeKOZ2WgrCIXHIsTSs2wNU6Utw8i0hcdTAwMDNfXGanLJRJXHUwMDFl7i1hkpriXHUwMDEwhykmIIFcdTAwMWVRpapijHEsL1x1MDAwM3T42u2NWYszTD7Cf2pcdTAwMTB1eKlgkltcdTAwMDcq7qHCXHUwMDAw5Vx1MDAwNntD9Fx1MDAwMsDvyNxcdTAwMWUrOELqXHUwMDA08D20XHUwMDE32I2rJ2f0UZ7Fx1xi0DyT26mPMtGwWlx1MDAwMlx1MDAwMOVcdTAwMDFpXHLE8aEx8Vx1MDAwM6M00qbwKIOh9eO9XHUwMDE462/cbKVcdTAwMDF8XHUwMDEwX1x1MDAwMFx0JPfgbbmYKbL7wWmjqHJcdTAwMWVcdTAwMGa3Vlx1MDAxY2g/VFx1MDAxZVx1MDAxMTZcdTAwMWUqXHUwMDEwVybSXHUwMDAwbohZgNpcdTAwMWFevta6wCvyzTSEofl+i0qxLELhXHUwMDEwemhGb/W1paQpKo9cdTAwMGVcdTAwMWSwWUVcdTAwMTlcdTAwMTJxXHUwMDFllpfvXHUwMDA2Mu1cXKslZFFcYtZJNOFuTUJcdTAwMDNAoliaxNDIQZnqy/uwOESgjFW0xcMwiVx1MDAwNlx1MDAwN9BthHnMh5v62JGM1kjjpYFcdTAwMTOJUibCYFxiglx1MDAxYS4lg7eHXHUwMDE1xm2K6Fx1MDAxOdbkqe4yP1x1MDAwMb6C0Fx1MDAwNea4XHUwMDA1iztrxTGyXHUwMDAwXHUwMDEwk/A7llx1MDAwYpZcdTAwMWVC4HZcdTAwMThcdTAwMWM0vk9wy6veUlx1MDAwM6ivYlx1MDAwZVx1MDAxNuZFz132cYx7gFx1MDAxOCzohJurxWpYKlx1MDAxYupccmJMq7mhWXIjXHUwMDFltFx1MDAxZHdBedBOpvbrNUQzJoRZwbDJaErIilx1MDAwMFTle7CaXHUwMDAxcn1eXHUwMDBi0THuLpZcdTAwMDRWXHUwMDAynXLl6Fx1MDAxZNExhzIgorVcdTAwMDakvT481syDXHRWXHUwMDE3R3C6WFJcdTAwMTGE7vqKkkpmVWXt2phYXGLkS4jfXHUwMDExoYs0sVx1MDAwMOJcblx1MDAwMlx1MDAwMZ9Ekl1725hF4f5cdTAwMWHrTVx1MDAxMFxyXHUwMDA2n0hzJjiQeabbXHUwMDFhXHUwMDE0ks5YXHUwMDFh9/BB/Fx1MDAxNZFcdTAwMDb8XiXSeCsl6Fx1MDAxZWhcdTAwMTRoS+2NM1wi80x7+jz35ZI9JFx1MDAwN8tzXGZcblxmbyz8Uq04XHIsXHUwMDAxmLJoJb+iNNOWx1x1MDAxMMI0KCeHKJhcdTAwMDLrXGYjqZpKRVnW0stAJlx1MDAxN+pcdTAwMDGVXHUwMDE5SuCSXHUwMDA1XHUwMDA1p1x1MDAwZYvytvQvXHUwMDE3XHUwMDA3fedcdTAwMWNccs/dMGjpWIJX4msgXHROSdZcdTAwMDfDTLdHxdS390B2OZZ+xrKAztrCbdZXXGIw2W5YI4onoZiPSVx1MDAxNFx1MDAwZV/Apm3m7HyoX1x1MDAxYp2IZ+140PSLZfWFL81pLMgg7ka9XHUwMDBmydeGy1x1MDAwMJFHnJQk2iGNdUm4Wmqcrt+Bwn1cdTAwMDP/0YjSYavOeZ/u8UBcdTAwMWZcdTAwMWSLt5muqFx1MDAwN9R8i4e7/1x1MDAxMXbFXHUwMDFhmUSaYizBwi4w9PqwxpiMm5BUXHUwMDEyVn25sf0nQSZcclx1MDAwNIL/rVx1MDAwZmpmLE3mVSc690vwIWVcdTAwMTVhW1x1MDAwMJw89NDafLOhgYtD/MZ0XHUwMDAzozfuviTypNB581x1MDAxMFleaFx1MDAwMFx1MDAwZTbz8LFwSIF9LnFsn1x1MDAxMpxC54XfoI71NVx1MDAxZtyVZVx1MDAwMZ3MXHUwMDFkt4sxXHUwMDEx5/LaXHUwMDA3eHz4+npcdTAwMTI3c2m80YI1XHUwMDFh2lxuX9I5bkArJtVwrcxH1NeT5cUysFTuJ1xiJVxuLdO5PLhcdTAwMTJ+XHUwMDExgFdcdTAwMDE/6tvSNMh5tFx1MDAxZa5cIlxuJtpLmM+lc4tQOFx1MDAxMFx1MDAxNZZC1a5OXHUwMDAx7UBcdTAwMTO4Wexd3lx1MDAxOPdH+V1E91x1MDAxYVx1MDAwYlx1MDAwN3xFUJx6glx1MDAxM0mv4MtcdTAwMTCOgk7bsUYycu3AjCpcXEqj/pZZitOMITWR01x1MDAxM4rT4lx1MDAxMdww9lx1MDAxOXlcdTAwMTh0aNBdRVJcIliG7TSzXHUwMDA25c4llrZ43lrgRED422BxLmNIXHUwMDFluMMr2HRQXHUwMDEyp8gxYPt5vZqo93Xas8eN+zlcZl7KW+0qL2JcdTAwMTWIxFx1MDAxMEaTXGLXX+pspYXMKepcdTAwMTWLbq0oM01mjYOXrDS0rOSpT85BXHUwMDFjN1x1MDAxZaVcblx1MDAwNGOp0novy5wm2JQyilx1MDAwMUaDa5VAKehcdTAwMTPiXHUwMDExkP60XHUwMDFhjVx1MDAxMUpkJihcdTAwMTgmhJo8Vu5jSoRy0clUmmGRoZLQb1x1MDAxYlx1MDAxYVg/4o38vuRpMmC2ScRpptdcZv/1TUJ9cP7I+kJcdDuCXHUwMDE1OZncOkH1NVxmWFx1MDAxMFx1MDAxYdSvXHUwMDBlXHUwMDExhFx1MDAwN+jg2eJ/MZZBh09cdTAwMDKPXHTPgoVHrGZ+cHlggSxcdTAwMWJcdTAwMDJYXHUwMDE4WKZcdTAwMGJjlXzMenLXWcJN1Get8zpSmCtcXDGCdJVUoLCOXHUwMDE0z4kpO1x1MDAwNty6QfpcdTAwMDDkiVxyWoJ4XHUwMDEwOLY5kVx1MDAxN1xyXFxA4IxGVuTUirOMXHUwMDE14L2xNsVcXKlLXHUwMDFjXHUwMDE0d3yh5DJcdTAwMDZcdTAwMTb61T7emctjLVx1MDAxZoyJmWTWXHUwMDEzlsNcdTAwMTM+XHUwMDBlmj/eQlxmXHUwMDBmx1gnToLUIHJGSGfpxWU5XHUwMDBiXHUwMDA221BMgJtcdTAwMTjyjel6bWHhgFx1MDAwM/TAosiQyil1XHSkhVx1MDAxYrCsXSCo17N2lSHQ4WhRuHhcdTAwMWJcdTAwMTBHlz1cdTAwMDE7hnDPgD1KXHUwMDAx3GX93Vx1MDAwM1xccVx1MDAxYSfsM2CBopxSz+v84WHhW9hcdTAwMDLQoOiYjVxijJtcZuvuXHUwMDEwcpWjWDZcIsDFssNcdTAwMWG0ko199fLyvl5usjumR8pcdTAwMTVBXHUwMDE5t11sblx1MDAxZLFcdTAwMDFccsjg6ywzI1B778q7XHUwMDExuHP4JqtA/cjHXFx9MVCNOPpcdTAwMWLgnGfjXHUwMDA1XHUwMDFlyEOLk1xmLpmoZVxyNcL/cnKNXHUwMDA1lZ7DO0lBQe5cdTAwMWJtvrDaXHUwMDE4y4BcdTAwMGJSXHUwMDFj4SrLXHUwMDAyXHUwMDA1S1x1MDAwYulcdTAwMTKV58xLVb89eT/NhnLKXFxeXHUwMDA0UVx1MDAxMfGRrmw2fNW82fDZ5esvvuNfX7zVne72kjrbXSmMrprr6S3sRIWxsOTSy8LAxuuhpfB+itliJl7dlHGOd1x1MDAxOd6CgNuFfGdcdTAwMDJRYKHxczS7XHUwMDA1n4CPQyBcdTAwMDN2XHUwMDA0XHUwMDA1LrQ+Xo9uyfmJVLF6ov2NKv3TdjjHbYeLrFx1MDAxOYPjzuf4sIa0nHn+sfcuOHtcdTAwMTSMt0GXXHUwMDAwXHUwMDA0UqdcdTAwMDVJXHUwMDE0XHUwMDA3XHUwMDA3XHUwMDFhN0VgkzK0mVx1MDAwYkSQw2G70rI2gcW2JXmp2teKY8aC0ZR1+b5GOSMobV7MQjyzXCJPXHUwMDFi18qbZJr8Ycmbx2NQYEaekydcdTAwMWGUyc1YXFy+hcNwic1cdTAwMDVM55YhUlwi4GZdoOODqk+4s8fRg8ixSipcdTAwMWYkmfSxskaJ47/ZjSXAR1x1MDAxYmiLXHUwMDEw1GhGpIGTL0JcdTAwMTJqcLSmXHUwMDAyMcfrbM4xtr1Yn/m5L5Q06cujyYWCNVx1MDAwMLpyxNnr5iD5aXX18/vex/W17pH9uvX669fd7tdJg1x1MDAwYudcdTAwMGIkg8zYq5hP45GFTq1cdTAwMWYgaTJcdTAwMTagXHUwMDA0XHUwMDA1XHUwMDBlJFx1MDAwYlx1MDAxYlx1MDAwZbNGScnkXHUwMDA1kU6DW1VcdTAwMWT9QvtcdTAwMDLISMe8MViXXHUwMDFha8/nkFx1MDAxM3YyVVx1MDAwZjP8XHUwMDA3J39cdTAwMDecvN2nQ4Y4XHUwMDE3gSHL69m0Xm68y0j6nGfApI2Q9XVcdTAwMTKT1ZA/nuX3ns8vWEmvXFwnjtG9ZGWFsHmRXnlMXHUwMDEzXHUwMDAxSzhQdCOZRqpcdTAwMGbBZixOZeyGtWzxZu+QKSfZx62t9ubx3rE3IVx1MDAxZraFKNon6+OoXHUwMDFm7ni4XHUwMDEwtGlcdTAwMDBcdTAwMDVcdTAwMTknLlx1MDAwNlx1MDAxNlx1MDAwZlqO9VJpkzqYO1ttbD4ooZaN3Fx1MDAxN7KE9OVcdTAwMWJkXHUwMDExjEfDhFn6b5pDy+rmrvn6+vOGtp+OluS37id3tvjkt4BcdTAwMTbLXHRTLDFQV4N5XHUwMDEyaJE+i8xcdTAwMTMppWRcdTAwMTThnqZn2rz3w1x1MDAxYc5cdTAwMDVCLFx1MDAxOCtcdTAwMGVFYoZcdTAwMWFuJJKbka6OXHLYlpHFVsqHfya//L7QXHUwMDAyRs16We3y9Fx1MDAxZTfBi79cdTAwMWUzXHUwMDEzXHUwMDA0XHUwMDAyXHUwMDFmZolBVuv3XHUwMDE1XHUwMDEycaq8h1x1MDAxMjOWxlnH4kvBOpuHXHUwMDE2XHUwMDA3/u1cdTAwMDNrOoBcdTAwMTVcdTAwMWOplKYmXHUwMDAzXHUwMDFierhvpvGXemiMmWPZv2dJl4JcdTAwMWSVM6c6P5RPXHUwMDBi51x1MDAxZI9lqa9GLomL6XZcdTAwMTbE8U3ci1x1MDAwMLtcdTAwMDVcZtSJW2Se3+ZcdTAwMTM5OI3T6HKfTW7fhjlsllPGJr2e9yDQwDRNNNLh0mIod4pcdTAwMDRO61BsXGJUeVx1MDAxNVWt9om8TVx0YbPhTCtcdTAwMTZ1lkd8LF5/wLm8Z1ZAXHUwMDEzYn3a854wcnKOXHUwMDEyioSQw1VcdTAwMGZEW71cdTAwMDVGvjveePP5ZWtz8/Hi8+9cdTAwMTf7K+dcdTAwMDerr39cdTAwMDeM9Fx1MDAwMoYqhY4gYKylTY7c9Hk/XHUwMDFhXHUwMDE0MadWhc3GmWOkYW5HXHRDhjuqQCpjpLHcgGCvNMKs8YOVXGaLzZWy/+Qpf1+QvN2n4dSczqvS8qJqX+b8cGrg+Wz85eF0ur4m32ScocIhwmytUm7M55ZcdTAwMTWw1udcdTAwMDI1OcbV5XtqiGPKXHUwMDE5Q1x1MDAxNjnlI5I584uHc95Wnk1Ry1o2M+Sdfrde3N2Eca8xXGKAi2SXkVx1MDAxNOXkssw8O5LYJyu5l18vTnBSdj58VVx1MDAxOK1t0n+Ap1x1MDAxZbjxasmVRaxcdTAwMWa0meE6eYCN8t7LfHLIXHUwMDFm5bc1Z1x1MDAxZrHVyih2Ts3ldprncEpRXHUwMDFkzq01h6pcdTAwMTft/tn54cbjo+5B72Sw07nsXHUwMDFkfmz9XHUwMDBlUOXYOs5hiDIgmDIm3U5jaVx1MDAwN2sj2X2jw/0kXG4j2yQ4zlx1MDAxYqpEnlRcdTAwMDFUV9rJ3EVgU0DFXHTRtLtYrIj/XHUwMDA3p347nDKsXHUwMDBlj9zP51x1MDAwNDtdLlxcWZRsjlGMRljXzZGN7cX6KjZcdTAwMGaqpVwieFx1MDAxMOvhRdJSw7oquCjFYyU5Rak+Icbmflx1MDAxZpyAweRcdTAwMDfyJMlE1iFIjn9iPU89NqpMau6j5EOruJFUXHUwMDAyx1TpXHUwMDFi7C9lPnCkZMxLgJk7nLa8JiMqYZDshOFQMjbB+Sl371x1MDAxN41mloXJvWNn3Vh6XHUwMDE2U3m663pz7270MFx1MDAxY27CcHdfPH63Ozy+aPm132RcdTAwMWYoXHUwMDFmKs5yb8fAcZSNu/LumqNcdTAwMDRcdTAwMTDbO5OnoF2ysJntXHUwMDAzsVWd1fdQZPCYqkDEsa9JxjzrXHUwMDFizHhcdTAwMWOCxctcdTAwMTBcbvnsf9z7b+feb/lpjmLg+Dbqr2IvTdn3XHUwMDA0zYpEnmZlnY9NoEBygms+TY9EVyZcdTAwMDdcdTAwMDBkTNPQa1xubs83aNacrTRcdTAwMWVcdTAwMThcdTAwMDJcdTAwMDfLrkOofzJcdTAwMDBcdTAwMGbW4XFcdTAwMDOiifwuXb9tIziLkMNCY35kQLlcdFxm78LKNOdCRkWcrZVcdTAwMDdcdTAwMTDlXHUwMDEzIFSxiMSliUJm9VwiXHUwMDBm0maJZYPTNdgwxD4wXHUwMDFlXHUwMDE1wHCoLC/1XHUwMDA1XHJgSrClXHUwMDA0IUaQnlx1MDAxYlEpyHOriWc1WFblN5lQM2uBnPCDp6HyLU3FrvLSXHUwMDE1ZznCe46ZwFOz9WUzafDlQrlcdTAwMTVU5Fx1MDAxNeuKYSZHWtkmLSv3XHUwMDA1z5NPTpDgIJqLq8Lnt83x2YeLuNzuPIlftlx1MDAwZd7KtaXPvc9rj39cdTAwMGJ8djajXCLBj1x1MDAwNVuc8TnCZ4b/7OKmSdxbNSPno/OgnXymXuFkwFwiPlx1MDAxYsnJimzyjtH48YJGnr/AXHUwMDE2qbqz6P5B6L9cbkLDqTnFydzGQHVjud1QwoU6r1x1MDAxNZxk3vNRv1GhOPdUXCLG4Fx1MDAxOCxWeCQ+V/LgXHUwMDE5rzjsT9anp+qkQVhQgFS2QKhcdTAwMDZcdTAwMWVXZ8pwzoNwxubEI4GsxDxcdTAwMWVcXFx1MDAxZVx1MDAxYlx1MDAwNDnUiHNcdTAwMWY5oaBcXFjBmWpcdTAwMDbMm7PhXHUwMDExcjZcdTAwMThGzlx1MDAwMTm45YxcdTAwMTiVZpdXeTw3O2Asp/kjXHUwMDA0ZFdPvcB8bI1nXHUwMDBmIzNyKohcdTAwMTSwisX5nEf2i0RcbnZcdTAwMWJIoiZwn5H+WFqzKFx1MDAxNE/vl1x1MDAwMWtMX/5cdTAwMDGs4GHQfMB/XHUwMDE1rr5rjqvdzeHG6YuzXHUwMDBmbm+4bE9f2W3z9N3lb4GrPJeIdc+GZU7OpfWPnJFAospcdTAwMDJ8uIB7int9PrWa8zhcdTAwMDPrVFxcXHUwMDE1rrJbgVWYnDfjWOY1XHUwMDFl+EaeXG4m/slr/n1gVVx1MDAxMecsXHUwMDA3nyDYKoW9guOyI/vkOW7cxFx1MDAwNn33iqGghSVcdTAwMDQ2kKtynCqJQlx1MDAxMX6O4/1BxeuHxPFgRE7aQeiDQDDq8i5SXCKvwTF6kYM1NCdOXHUwMDAzvZLeQs2hblxiU3mEnuTQ4jphLuPwKot7h3WxzqMkznCGb2QzXHUwMDAxR/fUt47PVlx1MDAxYfPXkulcXIZkXHUwMDFj219cdTAwMWUnNu5cdGpcdTAwMDVcdTAwMDZcdTAwMWVQYVx1MDAxME5Kjlx1MDAwMZMuPUCIU3M4v5Rn2ZhcdTAwMDbdXHUwMDA0Mp9cYsUmStaYXHUwMDEw2pNHy2NcdTAwMTKiQFTijGsytHjWXHUwMDAyr8GXqVx1MDAxMPaq4NKThlx1MDAwN+E9z1xmjJyBwNn6tXh/J2hcdTAwMWW094ZX+FOBz4WjNFN45jhcdTAwMWb2XGZV1sdsNIfnb2eby0ut1feLT1x1MDAwZbcv11eevFh9sSTn+8BAuFxylVx1MDAxZv9cdTAwMWPY0ClEWlx1MDAxOZOPu+dcdTAwMTa1tTxT0CZcdTAwMGIrXHUwMDAwc5v/TFx1MDAwN+aW3Vx1MDAwZlWHXHUwMDA2aiF5XHUwMDFhh8uHl/NojXFcXLZUXeZXTLz6XHUwMDE5XHUwMDBid5nzo3uuXHUwMDBld29cdTAwMDW4/73Ru1x1MDAxZqr1I6H052RcdTAwMWO++Z3/XHUwMDE2NPhaMZ7sv9XPPmxcdTAwMWW+XFzuvDxZ7j7dk91cdTAwMWT/qKjqNzrcXCJcdTAwMDA+unnnzz+myV1ZP39+XHUwMDFlP7/8uipPn7WeXXRPn75avpPcXHUwMDFmXHUwMDFmXHUwMDFmts+HZUFX3/jx7UXn/Mh8PJHfnlx1MDAxZr7a9vJC6fWC2DF+M0ZKeMLHKHXcgJRMNfnSOlx1MDAwYtZegNXxknFcclx1MDAwMIbrl1Xmvtnc3KvvRbW5XHUwMDFmtfaOzlx1MDAwNu05MHgjXGaAyOm8078wROja4J3IXHUwMDE0Jzw4XHUwMDFl6jPV4Fx1MDAxYlx1MDAxZFx1MDAxMdrei7GCiUefcXhcdTAwMDHHIEZuRY1cdTAwMWK8sqmFa8TmXHUwMDFjwlrdeDTvjPqg31x1MDAxYm50LvlAlCi9+qx13Ony5o+uONdq2ndv2Fx1MDAxZfBLXHUwMDE2XHUwMDFlr68sbLRcdTAwMDdQ5UelTz3udlx1MDAwZXt5uNfmZ0umMOzstbo3XHUwMDFmOO7s71x1MDAxN5FxXHUwMDBmX91CLDtYaYJd/UHnsNNrdTdcdTAwMWKtrHU27L9rn15d7nBw1i7esfaLm2AruyZBP1x1MDAwN+iFZvLUxFx1MDAxMWpcbs4mrkxkv79cdTAwMDWih297345cdTAwMDavetvq07fDXHUwMDEwN+3up1x1MDAxN/OO6CbkXHUwMDAz+zlfc1x1MDAxY9FDPo7Qa3b4grj5KSnsX4zonFx1MDAwZodIY0Kj4a9cdTAwMDX0h1x1MDAwN97hwaZXXHUwMDE3x2+Gr9pLe+L1ivy0eLTUlCc8jlu9nUUnV15e7Fx1MDAwZbaWjlx1MDAwZd7uf1xcbbbcJoDuXHUwMDExXHLeN6BbMbm7mIdW5FFLlbVvNbf26ns894DOaXM8XHUwMDE2L1x1MDAwMrGVTFx1MDAwMD1YRqVcdTAwMWOcznNCptr7XVx1MDAwMJ1TXCI5XHUwMDBlM0BcdTAwMWRsYTLMNEA3PE9cdTAwMDEk41dcdTAwMDI654RcdTAwMTdSefdccujrg/63zn57sHDSPVx1MDAwM57eXHUwMDE3lk9HrVx1MDAxNMsnLmpWML7faVx1MDAxZPd7+1VmbcK0YjFcdTAwMGVcdTAwMWPU1Wb9oblZv3p89jp8Xn+1/aLvdlePdnaXvu5Mqlx1MDAxNptcdTAwMTNcdTAwMTCHXHRcdTAwMDE/NUdcdTAwMWZx/q5O9qGD4lxmbVx1MDAxZrldNZ2lq4PYNma6Ue+qXHUwMDAztbtbYdTBZJpHm+hrjFx1MDAxZXngkVVLm1lrWKaemnc+Vl+bqO9cdTAwMDXAf1x1MDAxNPDcXHUwMDFhwOuA9nJ7uL6+tvHa7Vx1MDAxZD6LavHL2lHncWhcbrRG9LbWX/a2T+LhUMmLlcvBq92GvKBcdTAwMDHQcqLnvUfOxZFcdTAwMGapRTqhjOExQlVcdTAwMTb5sblFVt/jOVx1MDAwN1rH6eyeh2yIwFx1MDAxNvuUWEfLijHrefzAnW1yXHUwMDEy0HqbsUuNNUs8vLbKJCssUVtcdTAwMWXBU7TRv3zovN7fX+j3XHUwMDE2/tP71lx1MDAxOVxmz1pd/K3X32/fXHUwMDEz4tZAzFx1MDAxOOJeLe7H0spcdTAwMGKbXHUwMDE16l45mFxuXHUwMDBij2LiOFx1MDAwNe5dWFx1MDAwZausMvBPtyjQnupcdTAwMDfn1MC9kjzeRlracFx1MDAwNeg6MGnYtVxus1x1MDAwMN2JXHUwMDA2zqFT1lx1MDAwN6kqpvPwODQtx5k0S1M8nIGq3pS+f6idaveuOFx1MDAxNPDnN6FcdTAwMGJcdTAwMGJrX311XHUwMDEz28s9xd5cdTAwMTlXyVpcdTAwMTIrjeeJVXDkjoe6XHUwMDE1tvxcdTAwMWVcdTAwMWS2TvhcdTAwMDAyXHUwMDBlQlx1MDAxMdbmXHKQoTjHXHUwMDFjente3thcdTAwMWW7M6XN8UkrPtjuPl/flFsrZ1tvVj9cdTAwMGXkpTBv21UrXHUwMDE2WeDZ4OCAQbNJv1hyfb1cXJ1cdTAwMDVOjLvOs4jiKTBccpY741x1MDAxZPvU58x0077CMviz+MMoRr8/RqXa3d3+94a8aKLblKqwYzA+hiZGLaSu3FPYbu44p+9cdTAwMTTNqePkyLJMXHUwMDE4nunjI1x1MDAwZqxcdTAwMWGJufacPIdQhFx1MDAxOJRj8czk/vq7eE7Fk69cdTAwMWTP0OXIXHUwMDBigFxcRVtL0Dz9XCJKXHUwMDFl0aVD4ajOXHUwMDFmntRLizjnnnZcdTAwMTHn3JGePn239aE92L1cXDp42Wpccndar5bWNqrdkmNLINM9+UkqRYO8dkuGXHUwMDA3McIsXHJwUkhXXHUwMDFhWzgrNzp9y6K0Xk5j1KxnMYrTp8e9vmJcbi0yjM3T1aXCl/vxo6mjeUhXOtlU+LM4ZiX371r9xJbwaFx1MDAwMpspbCUlbTX3rNNT9vPqWa2ImXXQSqgtz3lcdTAwMWRcdTAwMTG8K8/KwZGS53iImvqMO3nWTPGEVGZro+FhkuOOXHUwMDE1sbE1kocr8cxcdTAwMDbtx4NQXHUwMDA3/DSziUFn7Vl/Plx03NCzroWN3U9f3698XFxvvTk+2Vx1MDAxYrqT5fCiylMxqFx1MDAwMzO1UVx1MDAwNcHaND/uWSWPQlVwZIpHfUVZPIZtZp51alx1MDAwMrnkWVx1MDAwNYe2uXyghIpQgDi2YJPhyXPW/u0g4Heiplx1MDAxM1xyhD/jpjEjdzqx9sVP7PBiSp1cdTAwMDOIKp3pbnNnumaGw8fvPj7dWJXv1zaXulx1MDAxNzsvzt7MuzNcci7m4ywjjzDhdLCyL1x1MDAwNafJNNN78l5LX5yDx5YsXHUwMDE0hrLwdOJcbmc65jxcdTAwMDPIi1My/v5cdLxQenVKXHUwMDAyb+s6ObZ6h6zdsH8yKWVXWnean6v+7lkl5ibZrdNcdTAwMTNcdTAwMGJaXCKslmcqVpntXnOzPX1x/q2155Zff97zy+2lleVcdTAwMTX7+tm8m62UNlx1MDAxZp7tXGLUUlx1MDAxNKdcdTAwMDddV7T4LCqdXHUwMDBm7eWJcZNn4tyFXHUwMDAzSVx1MDAxMzNcdTAwMTVtXHUwMDBlcTz7p8DERptho4Vf221+tJdcdTAwMTFcdTAwMTN6MH8ju1x1MDAxZLXr1dntxsaLhferK1x1MDAxZlx1MDAxNzbWll4tbz606U78+vu2Xq0nZ4dcIqd88SDxKvvdv1x1MDAwNexO5ZHzar+WJ1XzXHUwMDAwXG5cdTAwMDZyxUNcdTAwMDCuzFx1MDAxN4RWXHUwMDFiXHUwMDFl3FBcdTAwMDe7dzHffO5Kflx1MDAxNlx1MDAxZs9rNFUjT8atV/KwZfaF3Lv53jDC2daajdHLX+1cdTAwMWPOep3zhVNcblx1MDAxYz60Y6j86oeocIlcIn31XHUwMDA21Vx1MDAxNc/LUqGSjbebu4WLwbu9/vOl81dq7WD1yfOnT95ePt+ee7dcdTAwMTCi5yHxWoFcdTAwMDOLdDdcdTAwMWRRMFx1MDAwZsqR7Gibvpt+IMKeXHUwMDEwP5nY4JGaSXBarG1hf5OV1lXsuLGPVatiWup3KG55/+3bZst9cFx1MDAwN1x1MDAxZt/tvPz+/FX3YnfTNC1uef763U7/cNA53926XFxZ3nizv/lhW/0yR/RzIFx1MDAxZCbnXHUwMDE5RVByUo/2QXNjrL7F826M0dmMLZ9Rq6uirbI5Olx1MDAxZZCez9OOwND7MkcpQFx1MDAxNHzk6bGcXHUwMDBlIKs4tlx1MDAxZEdpxcPOpbh/lJ6r6pb/9JZ+gN/pPVW11OBKRVVL9aJmhbLtbrdzclrZXGZi3USUXHUwMDA1sfQ8kKt6qtFhc8vePn6sLr7smFx1MDAwZi831Prxent1aWdz0vjzOakj5UCnTEhcdTAwMGXlsN6OgSyMXiBEhfbiXHUwMDEz02rD72TV2mSs462saDFO8qxdV4Wxxlx1MDAxOVx1MDAxMU10v2ov9ucg9uNJZ+n9Tu/l8f6X9+bbxc7J+atcdTAwMWT5XHUwMDAwjVx1MDAxYX916DZhooXz1F8/XHS6j5pcdTAwMWJ49aObd+j2XmdcdTAwMWONXHUwMDAz+1x1MDAwZaJ4yu91R6dcdTAwMTeZi5wmrXmC95SZZU2MfFLDl1x1MDAwYlx1MDAxObmBsY7t4pV1qePIrVx1MDAxNI+A8X+njs4nnMfzn97GxemwfXxPsF2DUylsT1jSvZehOjE5YeZDVFFcdTAwMTX7iFxuXHUwMDE23Wlu0dP96bxatLM289yp0lx1MDAxY1x1MDAxZVacS3GVMfMq46BcdTAwMGUpgOq2OM9xplx1MDAxOTOVRW1kkPAgweiqIYTaZkpFg5XyPC9cdTAwMTHGzopk/ixcdTAwMWZI93fc9L/FJrrnXGJSydM9gmGJY+FDV3voNjNS6nwupeaMU1dcdTAwMTQzmz3/6V6jsNy8jJYnuFx1MDAxOZBLxfGpxakvN2WpoJxcbkvVUGJbXHUwMDFlf/dcdTAwMTfb/J9oKPxZXHUwMDFjs5GRuDFmNZNaquJU0jG3aj1cdTAwMGZcdTAwMDGs3Eb83NyrTmeT8+pVXHUwMDAzXHUwMDFllMDzXHSeXHUwMDA36aixXHUwMDE5dFxihoxlxTc7eEJMXHUwMDE2Nlx1MDAxYqfqYOvGXHUwMDA2qVx1MDAwM7tkQciq9iF85oyHc4I/gFx1MDAwNVx1MDAxNY9cdTAwMDBcdTAwMTmdreGgcH/PKtXGfoojmbXkgVxi0nrB+FNcdTAwMTSmRl/7qXy8kfA8X4ddjFHfQ53q9DRK2bMqyYNYXHUwMDExiqvIXHUwMDAzIeT4iiW0OFx1MDAxZu1cclxyiFx1MDAwNu7X3GrFv5NnnWwt/FlcdTAwMWM3lFx1MDAxOfnWqWNH7OQ5Ylx1MDAxY1LKXHUwMDAx2pXbvN1blGlMLcSeU//qY4QtgbpysDrZSkJadci0YnVj1L5Y6TJvY0dgWFx1MDAxMDBfU8Tqck7761x1MDAxZs2q8rtvn5++uny69Xn96dPBt6a5oftcdTAwMWFONry43P56pndXL/ovbFhdWXx7fDyzoSNcdTAwMGaTc1J+ysHTXHUwMDE27Ffo6ilix82NvfrZzbmxR1x1MDAxOFx1MDAxYU9KUlx1MDAxNubmtU1LsmBlgafCXHUwMDBiXHUwMDE3plx1MDAxYvtcdTAwMWQqKeFvOIxbKcOuTGmrqNT4vi1blFx1MDAwMsKov1HOiSVRrUOs657yTTVwVVWhlSznrrmmJlx1MDAwZWdS5JSrs+GQXHUwMDFjXHUwMDA3XHUwMDAyyCnixSNcdTAwMTOuQoPoM+CW5NhojVx1MDAwMC+O6aLIjNLsb1x1MDAxMDpP2PhQkVx1MDAwMNU+XHUwMDBignvMwinlfXGCwLiVzVwi6vjVvuNWllXwnr1HlfbWJFT5kVlcdTAwMTY8XytGPTaSPfdcblPqbNlcdTAwMWVcXMxIT3bfqcWXrqY6LtJFvW5q8zOl1ItTNJU/4zo6hVM3jCVm2lx1MDAxMFxyVlx1MDAxN33keeZcdTAwMWW8PzppxztO7qFlu3FvZH5cdTAwMTKQ14xcdTAwMDRcdTAwMDLucjRKqfF8nsr81XQ+UFxiXHUwMDAzvnzLsPNOIdpMWkwmj5CQzFxyOqB/Ze6+35xcdTAwMTi9e7qzXHUwMDExNs3jo6VccnHUVp8/dva77+fHuU3oMdEx0/A9Klx1MDAwNJ7QKJLNuCBcdTAwMDJcdTAwMDfGa1x1MDAxN1x1MDAxY0fGXHUwMDE3SlZ+ebGrVuCyzD787sTob1SN+q9rb/yodXKyMcS9vPFgj7512t+fVOpcZn9cdTAwMThr5TZPM2rn4Prnv/78P1x1MDAwZn2PiyJ9 + + + + + LOGIN NODE ON RESOURCE PROVIDER3. No INBOUND connectivity to the HPCVirtual KubeletInterlink API ServerProvider pluginPod on virtual nodeVirtual NodeSSH UNIX SOCKETunix socketPodContainersBatchSystemSSH agentunix socket \ No newline at end of file diff --git a/docs/static/img/scenario-3_light.svg b/docs/static/img/scenario-3_light.svg new file mode 100644 index 00000000..64a87249 --- /dev/null +++ b/docs/static/img/scenario-3_light.svg @@ -0,0 +1,13 @@ + + + eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO19bVtcdTAwMTPZ0vX38yu4fL5cdTAwMGV97/eX801cdTAwMTFcdTAwMTVfXHUwMDAwXHUwMDA1UXnOfXFcdTAwMDVcYlx1MDAxMFxyXHSGoMC55r/fazVIunc66UZcdTAwMDLGmWHOeJwkVHZ3V9VaVbuq9n//tbDwaHhx0n7074VH7fO9VrezP2h9f/RcdTAwMDdf/9ZcdTAwMWWcdvo9vKXy/z7tn1xy9vJPXHUwMDFlXHKHJ6f//p//aZ2cZKPfyvb6x1e/2e62j9u94Sk++//x31x1MDAwYlx1MDAwYv/N/yx816C9N2z1XHUwMDBlu+38XHUwMDE38rdGX2eCSF9d7ffyr9ZeSK1kiDdcdTAwMWbo9Pbb51x1MDAxNLkrn4yEdU6fYlx1MDAxMcP2Pt45aHVP26N3+NKjy8vn60cni8+fq/bX3eXtXHUwMDBmS4+3RXf061x1MDAwN51ud2N40c3XetrH9Y3eO1x1MDAxZFx1MDAwZfpf2lx1MDAxZjr7wyO8K5PXJ/3WoH92eNRrn56Wfqd/0trrXGYv+JpcdTAwMThd89WN+ffC6Fx1MDAxNV6g1EJmJiqpXFxQVpubN/Nfd0FmXG43x0vhoo9eJeta6nf7XHUwMDAzruv/XHUwMDFkiLAnxGhlu629L4dYXm+/8JmD9l6Mo898v75aI1xcJqxxwdub947ancOjIbXEh8xpXHUwMDE1pLJcIv9xozW08ychI17VVsnR4+M3n6zs56ryv6P7P2hcdTAwMWS3V/grvbNut3hcdTAwMTN7+9c38YdKjZRKX7/y5+jS+PnlVFx1MDAxOYtcbllSymH7fHhzzVx1MDAwNWVx51x1MDAxNyefzOKJOP9uV97IXHUwMDBmu+77jnh087k/r/82Wv7ZyX7rSvekV8467ZzVcvRIup3el/Tauv29LyN1/VfhQsaMp7TOgt3oKCfZjbfQmmhcXKXdLDW3m+pbUW03R629o7NBe1x1MDAxZSzHeqhttMqE6JyKqem4XHUwMDA3MFx1MDAxZFx1MDAxNU1cdTAwMTZlXGaRqzFFXHUwMDEzuDEgK1KDgeJcYi2NlHe3l9JcdTAwMWJjhjFL3Vx1MDAxZK2q31x1MDAxYm50LvlAlCi9+qx13Ony5o/cSK7UuIGv156vrC6srj1dXlhbXXi3vLH2/t3S8sJ/euvv1rZWni6/e1T6lcfdziF1/9FcdTAwMWUupT0omcWwXHUwMDAzaLr5wLB/Mnp3XHUwMDBmi2h1eu3BSlx1MDAxMzjoXHUwMDBmOoedXqu7OX2N4ytsnVxy++/ap1f3YDg4a1x1MDAxN29j+8WPXHUwMDA3XHUwMDBm122nWvxUuMRcdTAwMTOaZPZSSy+E915X2f3T5nZcdTAwMWZfxt7773ZxcP7t4PT8+bMtefbhy3zjpXWAI6uFXHUwMDE23jrATmr12mdOwiV4ay0+Z5OFjSxatvnPdKtv2f1wcDBu9TaYjN8t3Fx1MDAxNSiOLuXG6o1SmfRcdTAwMTGYamL+M0L2XHUwMDFmXkBcdTAwMWJcdTAwMTiicf5cdTAwMTeh5oNcdTAwMDHbdFZcdTAwMTgnskLp8Vx1MDAxNJ1cdTAwMTGqXHUwMDEy3pabq/nJY3/ycXHt7ZZ9/+JsZWWlfXm425t3ePNcdTAwMWU6XHUwMDE2RYxSiqBdwdbz3/dCZ0A3qJePMVx1MDAwNOvvRdG1iZmMUFx1MDAwNmltXGLKODOu6UrJLFxiXHUwMDAznVx0XllcdTAwMGaNXHUwMDFlI4hBeFx1MDAxZEw0f3lVn8ThTPRcdTAwMTO1XFxL61xcMLZKyZ81V/KLnS9cdTAwMTftJ8f7/c3X3fNXn9c/f758ujXvSm61y6BW0PVglFAyUXLrfWYl3GTUXG5cdTAwMGU1TOZwd/Lm4JFQ8GBMrlx1MDAxMqpcIlxiKuLItU5cdTAwMWJLblx0u/iFJC5IXHUwMDAxs7wriVx1MDAwYqVXp5A4nS2s9lx1MDAxN1ZWn6y9X326XHUwMDAwstWDZ+98w8NeXHUwMDE49lx1MDAxN4ZH7YVcdTAwMTfrS/dA5EpcdTAwMTeUsrZbLupBuJuVXHUwMDEzQzZqjFx1MDAwMqjFSu72vLm9XHUwMDFmbHefr2/KrZWzrTerXHUwMDFmXHUwMDA38lKYt+15t3dcdTAwMWZDpk3QRqsq9uZccqIpXHUwMDFmrFxuQdxcdTAwMWZ7Y8YlXpv6XHUwMDA09mbxiajkXHJ5XHUwMDFirfPa/K2Bv0DoOXqK85DyuNJcZiN6W+sve9sn8XCo5MXK5eDV7ogtlbS4NVx1MDAxOPS/XHUwMDE3clx1MDAxZX9Mk/tk/61+9mHz8OVy5+XJcvfpnuzu+DvJrUvRXFxcZl6ZNy/7Ty63vm9dtrut+PXg4qDpcodcdTAwMTeX21/P9O7qRf+FXHKrK4tvj49Xmy33+m+/nDYoodNXR7QhRlxy6iBHxKLgR17cgjdU3uM59yPBh0xa46VcdTAwMGLMO9qUXHUwMDFj25BcdTAwMTlvnFK1UWD0ck/9XFzuR1x1MDAxYZVpXHUwMDFiwdFcdTAwMDVoryxkmEbceJw3SG013Ir+XHUwMDFiJX+2OoPhWau78Opsl6r4s1xm4bizv1/E2yTbU1x1MDAwM4gpb5i4qFkxXHUwMDA0frrKqKHdKn35xqpcclwiLq2LRLhg1SvNrXr7y9n+6fKrlYtcdTAwMTX35Pmz7feL7U/mdIJV71xy+qeni0et4d7Rr7dsR8qP65eIaYNQIbFs53xcdTAwMTakXHUwMDBlKkTQditCsrDbWbZWbq9tKyxbxcxcdTAwMThcdTAwMWStXHRKel1cdTAwMTX1SmWzKFxcjFx1MDAwZT5cdTAwMTjLKbCIXHUwMDFmli6CxZMs+vCipY9Q/+jr25Xds4/m4Gzn85Otw71n5ycrb1x1MDAwYkD16PGTnVxycfj0eH+19bn3/ltr6/TLsf9cdTAwMDFX8+4xToetwfBcdLS40ztMf6Xd25/wTrd1Olxc6lx1MDAxZlx1MDAxZneGWMZ6v9NcdTAwMWKmn8jlPiZwXHUwMDFmtVtjXHUwMDE3XHLJXHUwMDEz3zuhuPIzXHUwMDE4/W1hpI/5f9z8/X//mMGnXHUwMDE3daa1V1x1MDAwNkZu8P9CRFf6/SxcdTAwMDRcdTAwMWRcdTAwMDNwXHKxro5Gh1qBJsBcXGI00XlcdTAwMDd7XHUwMDE50Vx1MDAwMf4oXHUwMDA1NVx1MDAxNorf5KLQxj20OPBoRDv4tI2MVYUtiTNZXHUwMDEwMTj4u4jvdLpenM4kkNMzXHUwMDAxXHUwMDFlnJemJC5kyjjYI+QpLE/WinNcdTAwMDY+3FwikndcdTAwMWXeRphQXHUwMDE0513mXHUwMDE0t0RcdTAwMTXw3Vhf/yhmL07r4H20MD5cdTAwMTlcXOlig8iEgVwi+Vx1MDAxMIWX3tdL05nQweHhKu6XldZcdTAwMTZ0hlx1MDAxN7UyXGJ4YOWmXpjKXHUwMDEwxVxuXHUwMDBiXHUwMDBmLYMsJFx1MDAxZq+lgVx1MDAxMME7S4vvilrVXHUwMDFihcy0QqylXFzUoHROly5VQu288lFIJbF8p+ovduZcdTAwMDKhW1pGY6TzSjtcdTAwMDBDKFx1MDAwYrSZgMHigqHF1Pd6gSazIbLuweNXjLSpvDK21MnDL+Ch2qCFcdpcbqxhirx6bZm1uJgxeee4SVx1MDAwYlx1MDAxZCzshdzcPXxcdDRZ0HhCrf5plcFcdFx0XHUwMDA3j+JlVGLs6booXHJW7eFHha19XHUwMDE4MFxyg0drJX5ccmbgU9tcYk4gwoCxKWjAw1xus1x1MDAxOa5cdTAwMTHhXGb8XG58sfeJXHUwMDBiMFpcIsjRNsBZ69hAmnBcdTAwMGV3Jmc1iVx1MDAwZqB/gvk7sCY8K+dq11x1MDAwNl9cZlcsXHUwMDAz8Fxmz1x1MDAwMEaU+GJcdTAwMTmhPsAxXHUwMDE5XHUwMDAwJtE+tDioXGL0Q8ODXHUwMDAyT2HlKfIgYFNUXHUwMDExeGo8qFpvbKDCXHUwMDBlrlx1MDAxOF+udVx1MDAxNKosXHUwMDBlcWBkslpyP1x1MDAwZnpea1x1MDAxMSaTeFxieHy4XHUwMDE2Z+GCxmhAXHUwMDEwXHUwMDFhX0VxeGC19j9reYuEl7wkXGJeXHUwMDBm6lx1MDAwMLqtS1wiXHUwMDE3JT9cdTAwMTA0/lx1MDAwNVxuOFx1MDAxMYxuL8ra657Elv5V/P9bXHUwMDA3VHbkPsdcdTAwMDIqXHUwMDA0XHROXHUwMDA34SvTJC+bXHUwMDA3VJsw6v3F02/d9vfOxsfXn7bbS1x1MDAxZk8mXHUwMDA0VHOyVZ6HUrBcdTAwMWJmQLxcdTAwMTd6dFx1MDAwYq5cdTAwMGJk4I2Mcd5cdTAwMDK6XG5cdTAwMDb3kzmSikRrhJlcdTAwMDXto2SJkqrKs0bNfXSEc8ZGLZRcdTAwMWbbJI9cZjzwR/XO4Y1cdTAwMDL9XHUwMDEzXCL9dUIkmcHlXHUwMDAwXHUwMDA28NBcdTAwMDNcYjPig7Ivi9abIFx08IBcbqlroWBcdTAwMTF8wDoh4Vx1MDAxYqFmcOC2xFx1MDAxN6iBXHUwMDAytiC10HiKsUFUUyfQO0BcdTAwMTWLXHUwMDE3dEBoY+++wp9cdTAwMTBcYr5cdTAwMDW0kvhccuVcdTAwMTX+LFxudGDHiMeCXHUwMDE38NtcZkpcdTAwMWHIXHUwMDEzXHUwMDEwpcD3wfpA41xcma/KjKxYk0pDsmkkMETgvVLc3VxyXHUwMDA2fqjM4TLwTlxyXHUwMDAwXHUwMDAyTWKRQ320pLKIO8iomvlcdTAwMWFcdTAwMWJKSiNxXHUwMDBigfRcIoRohMDdqFx1MDAwN8BZy/NZ4KNcdTAwMTBcdTAwMDBnXHUwMDE3XHUwMDE4XHUwMDBil+QhXHUwMDFh0NQ/iPRcdTAwMDLutj5cdTAwMDTDLfL0rFx1MDAxZWE4eFFU5Vx1MDAwNTrCMzhcdTAwMWW+XHUwMDBi3Fx1MDAxMSBdL9BniP/wMPhcdTAwMTiFd6okj7F1jKBfmrteIFx1MDAxM/U3UGZgXHUwMDBmwFx1MDAxZETrXGK2VElcdTAwMWXehLZ7r4LBXHUwMDA3wIRcdTAwMWJcdTAwMThcdTAwMWRiXHUwMDEykFx1MDAxMG3xcU8jKF0wXHUwMDE4XHUwMDFkiLXDJ1x1MDAxMEVcdTAwMDBydFx1MDAwM1x1MDAxNXSZwbNQXGZl+EfJRFx1MDAxNOgo+KHQUD7J51xcXHUwMDFmxc5cXF5cdTAwMDBdXHUwMDBm4GA64FFcdTAwMDKnVVwiXHUwMDEwwC2F0Vwi0DZr2T+DYqhcdTAwMWbjXHUwMDBmUGjvbDlqV4gmPG4uXCJcdTAwMDOFr/T1wcmiRqhDM4BcdTAwMDJGXHR3bVx1MDAxMo2xsFx1MDAxMCmJil5HX6+B2mRQWaGE8FaC3uhEnlx1MDAxNKz1xcOl4tcrzKzFIei1XHUwMDE290g6PFx1MDAwZa+SmNgjXHUwMDA0iJFcdGvexPrwaVFzXHUwMDA1gVVT0cDXxXR5XHUwMDAwo1x1MDAwMN9cdTAwMDNTc/iuXHUwMDA2OY+QcUddXHUwMDAzOlx1MDAwMZ/W6PTpXHUwMDA2MD3JeMhCaerFeWbAYVDMnyCAXHUwMDFhXHUwMDBieOCZXHUwMDExROq8Oq2Bw2ehXHUwMDBm9Fx1MDAxOEBcdTAwMDbzxDWliUXoXHUwMDEx4lx1MDAxM1x1MDAxZlx1MDAxOFx1MDAwMcZ6dz9rcXBcdTAwMWbG4lJcdTAwMTFLwHeU80WKhXjBwynCu+CJNFx1MDAxMCcyXHUwMDFiXHUwMDAzI1U4P1x1MDAxNs6VxDlEunlcbtVcdTAwMDdcdTAwMGadaZBvgzxcdTAwMTa6M/eKJ4FfS1x1MDAxM59cdTAwMDY6JF1EXHUwMDEwqlx1MDAxNOhDvW+JmWSFLPiEsFx1MDAwZYFyeYUxw8t4tHmyhrmZh1x1MDAxN8hcdTAwMWOPguo5QU5hy85cdTAwMGaPK2pNeFx1MDAwMWuLXHKSXHUwMDE1fMDAXCKmN5l3h1x1MDAwZi6KM4L1IGA2XGZjXHUwMDAxxFxyXGJcdTAwMTa8gYD/XGLe0cGIUd1/Ls8zWUDeolx1MDAwNYvKmulfwPUqiWBcclx1MDAwZrP0fK1cdTAwMDY9jHjV4lx1MDAxZlxyntDgcm2Gm+Ng6HhcdTAwMTJgXHUwMDAyLpFcdTAwMTdhs6BcZvQtokk+dcbiYFx1MDAwMXBtXHUwMDAwf3g2k2wyWJuxqlx1MDAwMY9cdTAwMWPGgaC7XlWMxOpIdWDweHwuXHUwMDE1XHUwMDA3h8dMtcuTZVxydlRcZohcdTAwMTCYs7HQVZ+kUqzD6kjVvJOs2mywo4Lr4W4mXFyyw0LKrlx1MDAwNeK0XHUwMDA0P8M78FhBN1x1MDAxMlx1MDAwNzWJoFx1MDAxOUBybibMlziXkbND61x1MDAwM7ii9Kk4ZttcXFx1MDAwNFxmwZuJXHUwMDA2Zlx1MDAwYktcdTAwMDJcdTAwMGV6XHUwMDFiXHUwMDE1KUlIlueheFx1MDAwNm7bgTZLqVx1MDAxYWiKo6oq6IrA4/Ou9GidyPBNeERcdTAwMDHsN4J01XtcdTAwMDHI8zBbQDiQxrFcdTAwMTUrXHUwMDExyMpcdTAwMTAwUlx1MDAwNFx0RPJcdTAwMDbXS5LLONRcdTAwMDA0oGUlr+fAqOH1XHUwMDEwXHUwMDFkMI1cdTAwMGVcdTAwMWNvII99XG4g9fBcdTAwMWKA/6jLYVx1MDAwN1x1MDAwNDKWXHUwMDE2XHUwMDBlX8Q6llx1MDAwNrG00WRBiHq8cCDhflx1MDAwNvLgXHUwMDAzuCFcdTAwMDZQYFlMXCLPcFx1MDAwM0eBXHUwMDFkeYNcdTAwMDD4wcWJLKewbN9AXFybXFytYMhcdTAwMDFHXHUwMDE1XHUwMDAzXHUwMDFlc1x1MDAxM6cn4CSBXHTakZKWlmYjXCJopqtcdTAwMTF+SUR1XHL2zFx1MDAxMDKCXHUwMDBmgEBcdTAwMDLMvFCpOICdyVx1MDAwYlx1MDAxY1x1MDAwMVx1MDAxN6FB+Fx1MDAwNzJcdTAwMGbq6GGWIDmIXHUwMDFhXVwiXHUwMDBmd1x1MDAxNN9cdTAwMDJcdTAwMTRAWC5cdTAwMWFcdTAwMDRcdTAwMWIzXHUwMDE2J3JcdTAwMTdPvPVcdTAwMDKIkegxrMZaRFx1MDAxYVB02IdtXHUwMDEwW3kuLy/x0Fx1MDAxMc6+/GS9yDygTqpgwVx1MDAxZkWD5INcdTAwMDJcdTAwMWaxXHUwMDFhoO/xQKQyJbv1XHUwMDE2btRpxqdcdTAwMTZf2sAqXHUwMDEwTVxctXbCqVxiOIRkqyZm+aaQ5zugXHUwMDFl9eJcdTAwMTi9w1x1MDAwZlluX1x1MDAwMr7SbSRcdTAwMTFcdTAwMDC2itG9i1xy9i5nL07AQ4LgSMtcdTAwMWOYL+lKgNNDlGtAzeFpVf3FMtQxINVMXHUwMDEzRK28KS/PcVx1MDAxYlx1MDAxY++AikJog5unJLy4wNVcdTAwMTioX1xivkx+XHUwMDAyd6ZcIlvxwNvIaZroijLM9tlItlwio0/kRTB4b1x1MDAxNPOAXGLXfoU8aLCW2nBcdTAwMGbTWlXSvSgysFx1MDAxZs+sUlx1MDAwNNdrkork+nSQhmlcdTAwMDdcdTAwMTaWlGwj4vGSXHUwMDE3gUBcblx0JG2UV8qdKJiyxlM25Z29iNVDTVj6qdlcdTAwMTjVwDhixp1nT1pcdTAwMDJUK+epxvYnmohjhoWBM72bi8nqXHUwMDEwXHUwMDE2enZtKDCDWH+1ua0x+mTgLlxiNIk84Fx1MDAxMiQyI9uATjFLXHUwMDAxXeB+UFx1MDAxMFCLclx1MDAwMU3M07hcdTAwMTFeXHUwMDE09sj69ibygC/wQc5cdTAwMDBzWe+W6FxubIKxYPT0XHUwMDE1XHKudtbyXFym6HKNXHUwMDE3ILdO+tQ2hFx1MDAwN5OBXHUwMDE2w92rXHUwMDA2SVxmXHRPTlx1MDAxZCFqMFdbLvFcdIAhXHUwMDA1tipFxE1cZq7eXHUwMDE3SESluFRtXHUwMDFj++uYhirJ+1GWXHUwMDEzSVlCXHUwMDEz5aO6Mkiz7C+PoVx1MDAxNOWGfJfBaao6rbtcdTAwMWXWJPe1QZVxTVxmO33i6cH26FNcdTAwMTCXXHUwMDEyfH1cdTAwMDNTm7E8x6S05MZcdNVcdTAwMTY+36a3XHUwMDBm7pqBX0D4UM8y8iRcdTAwMGIwnJGnwj2S5aRcdTAwMDO3S1x1MDAxMTIoqiZgrz70Q/Tk8SSYLYeKOZ2WgrCIXHIsTSs2wNU6Utw8i0hcdTAwMDNfXGanLJRJXHUwMDFl7i1hkpriXHUwMDEwhykmIIFcdTAwMWVRpapijHEsL1x1MDAwM3T42u2NWYszTD7Cf2pcdTAwMTB1eKlgkltcdTAwMDcq7qHCXHUwMDAw5Vx1MDAwNntD9Fx1MDAwMsDvyNxcdTAwMWUrOELqXHUwMDA08D20XHUwMDE32I2rJ2f0UZ7Fx1xi0DyT26mPMtGwWlx1MDAwMlx1MDAwMOVcdTAwMDFpXHLE8aEx8Vx1MDAwM6M00qbwKIOh9eO9XHUwMDE462/cbKVcdTAwMDF8XHUwMDEwX1x1MDAwMFx0JPfgbbmYKbL7wWmjqHJcdTAwMWVcdTAwMGa3Vlx1MDAxY2g/VFx1MDAxZVx1MDAxMTZcdTAwMWUqXHUwMDEwVybSXHUwMDAwbohZgNpcdTAwMWFevta6wCvyzTSEofl+i0qxLELhXHUwMDEwemhGb/W1paQpKo9cdTAwMGVcdTAwMWSwWUVcdTAwMTlcdTAwMTJxXHUwMDFllpfvXHUwMDA2Mu1cXKslZFFcYtZJNOFuTUJcdTAwMDNAoliaxNDIQZnqy/uwOESgjFW0xcMwiVx1MDAwNlx1MDAwN9BthHnMh5v62JGM1kjjpYFcdTAwMTOJUibCYFxiglx1MDAxYS4lg7eHXHUwMDE1xm2K6Fx1MDAxOdbkqe4yP1x1MDAwMb6C0Fx1MDAwNea4XHUwMDA1iztrxTGyXHUwMDAwXHUwMDEwk/A7llx1MDAwYpZcdTAwMWVC4HZcdTAwMThcdTAwMWM0vk9wy6veUlx1MDAwM6ivYlx1MDAwZVx1MDAxNuZFz132cYx7gFx1MDAxOCzohJurxWpYKlx1MDAxYupccmJMq7mhWXIjXHUwMDFltFx1MDAxZHdBedBOpvbrNUQzJoRZwbDJaErIilx1MDAwMFTle7CaXHUwMDAxcn1eXHUwMDBi0THuLpZcdTAwMDRWXHUwMDAynXLl6Fx1MDAxZNExhzIgorVcdTAwMDakvT481syDXHRWXHUwMDE3R3C6WFJcdTAwMTGE7vqKkkpmVWXt2phYXGLkS4jfXHUwMDExoYs0sVx1MDAwMOJcblx1MDAwMlx1MDAwMZ9Ekl1725hF4f5cdTAwMWHrTVx1MDAxMFxyXHUwMDA2n0hzJjiQeabbXHUwMDFhXHUwMDE0ks5YXHUwMDFh9/BB/Fx1MDAxNZFcdTAwMDb8XiXSeCsl6Fx1MDAxZWhcdTAwMTRoS+2NM1wi80x7+jz35ZI9JFx1MDAwN8tzXGZcblxmbyz8Uq04XHIsXHUwMDAxmLJoJb+iNNOWx1x1MDAxMMI0KCeHKJhcdTAwMDLrXGYjqZpKRVnW0stAJlx1MDAxN+pcdTAwMDGVXHUwMDE5SuCSXHUwMDA1XHUwMDA1p1x1MDAwZYvytvQvXHUwMDE3XHUwMDA3fedcdTAwMWNccs/dMGjpWIJX4msgXHROSdZcdTAwMDfDTLdHxdS390B2OZZ+xrKAztrCbdZXXGIw2W5YI4onoZiPSVx1MDAxNFx1MDAwZV/Apm3m7HyoX1x1MDAxYp2IZ+140PSLZfWFL81pLMgg7ka9XHUwMDBmydeGy1x1MDAwMJFHnJQk2iGNdUm4Wmqcrt+Bwn1cdTAwMDP/0YjSYavOeZ/u8UBcdTAwMWZcdTAwMWSLt5muqFx1MDAwN9R8i4e7/1x1MDAxMXbFXHUwMDFhmUSaYizBwi4w9PqwxpiMm5BUXHUwMDEyVn25sf0nQSZcclx1MDAwNIL/rVx1MDAwZmpmLE3mVSc690vwIWVcdTAwMTVhW1x1MDAwMJw89NDafLOhgYtD/MZ0XHUwMDAzozfuviTypNB581x1MDAxMFleaFx1MDAwMFx1MDAwZTbz8LFwSIF9LnFsn1x1MDAxMpxC54XfoI71NVx1MDAxZtyVZVx1MDAwMZ3MXHUwMDFkt4sxXHUwMDEx5/LaXHUwMDA3eHz4+npcdTAwMTI3c2m80YI1XHUwMDFh2lxuX9I5bkArJtVwrcxH1NeT5cUysFTuJ1xiJVxuLdO5PLhcdTAwMTJ+XHUwMDExgFdcdTAwMDE/6tvSNMh5tFx1MDAxZa5cIlxuJtpLmM+lc4tQOFx1MDAxMFx1MDAxNZZC1a5OXHUwMDAx7UBcdTAwMTO4Wexd3lx1MDAxOPdH+V1E91x1MDAxYVx1MDAwYlx1MDAwN3xFUJx6glx1MDAxM0mv4MtcdTAwMTCOgk7bsUYycu3AjCpcXEqj/pZZitOMITWR01x1MDAxM4rT4lx1MDAxMdww9lx1MDAxOXlcdTAwMTh0aNBdRVJcIliG7TSzXHUwMDA25c4llrZ43lrgRED422BxLmNIXHUwMDFluMMr2HRQXHUwMDEyp8gxYPt5vZqo93Xas8eN+zlcZl7KW+0qL2JcdTAwMTWIxFx1MDAxMEaTXGLXX+pspYXMKepcdTAwMTWLbq0oM01mjYOXrDS0rOSpT85BXHUwMDFjN1x1MDAxZaVcblx1MDAwNGOp0novy5wm2JQyilx1MDAwMUaDa5VAKehcdTAwMTPiXHUwMDExkP60XHUwMDFhjVx1MDAxMUpkJihcdTAwMTgmhJo8Vu5jSoRy0clUmmGRoZLQb1x1MDAxYlx1MDAxYVg/4o38vuRpMmC2ScRpptdcZv/1TUJ9cP7I+kJcdDuCXHUwMDE1OZncOkH1NVxmWFx1MDAxMFx1MDAxYdSvXHUwMDBlXHUwMDExhFx1MDAwN+jg2eJ/MZZBh09cdTAwMDKPXHTPgoVHrGZ+cHlggSxcdTAwMWJcdTAwMDJYXHUwMDE4WKZcdTAwMGJjlXzMenLXWcJN1Get8zpSmCtcXDGCdJVUoLCOXHUwMDE0z4kpO1x1MDAwNty6QfpcdTAwMDDkiVxyWoJ4XHUwMDEwOLY5kVx1MDAxN1xyXFxA4IxGVuTUirOMXHUwMDE14L2xNsVcXKlLXHUwMDFjXHUwMDE0d3yh5DJcdTAwMDZcdTAwMTb61T7emctjLVx1MDAxZoyJmWTWXHUwMDEzlsNcdTAwMTM+XHUwMDBlmj/eQlxmXHUwMDBmx1gnToLUIHJGSGfpxWU5XHUwMDBiXHUwMDA221BMgJtcdTAwMTjyjel6bWHhgFx1MDAwM/TAosiQyil1XHSkhVx1MDAxYrCsXSCo17N2lSHQ4WhRuHhcdTAwMWJcdTAwMTBHlz1cdTAwMDE7hnDPgD1KXHUwMDAx3GX93Vx1MDAwM1xccVx1MDAxYSfsM2CBopxSz+v84WHhW9hcdTAwMDLQoOiYjVxijJtcZuvuXHUwMDEwcpWjWDZcIsDFssNcdTAwMWG0ko199fLyvl5usjumR8pcdTAwMTVBXHUwMDE5t11sblx1MDAxZLFcdTAwMDFccsjg6ywzI1B778q7XHUwMDExuHP4JqtA/cjHXFx9MVCNOPpcdTAwMWLgnGfjXHUwMDA1XHUwMDFlyEOLk1xmLpmoZVxyNcL/cnKNXHUwMDA1lZ7DO0lBQe5cdTAwMWJtvrDaXHUwMDE4y4BcdTAwMGJSXHUwMDFj4SrLXHUwMDAyXHUwMDA1S1x1MDAwYulcdTAwMTKV58xLVb89eT/NhnLKXFxeXHUwMDA0UVx1MDAxMfGRrmw2fNW82fDZ5esvvuNfX7zVne72kjrbXSmMrprr6S3sRIWxsOTSy8LAxuuhpfB+itliJl7dlHGOd1x1MDAxOd6CgNuFfGdcdTAwMDJRYKHxczS7XHUwMDA1n4CPQyBcdTAwMDN2XHUwMDA0XHUwMDA1LrQ+Xo9uyfmJVLF6ov2NKv3TdjjHbYeLrFx1MDAxOYPjzuf4sIa0nHn+sfcuOHtcdTAwMTSMt0GXXHUwMDAwXHUwMDA0UqdcdTAwMDVJXHUwMDE0XHUwMDA3XHUwMDA3XHUwMDFhN0VgkzK0mVx1MDAwYkSQw2G70rI2gcW2JXmp2teKY8aC0ZR1+b5GOSMobV7MQjyzXCJPXHUwMDFi18qbZJr8Ycmbx2NQYEaekydcdTAwMWGUyc1YXFy+hcNwic1cdTAwMDVM55YhUlwi4GZdoOODqk+4s8fRg8ixSipcdTAwMWYkmfSxskaJ47/ZjSXAR1x1MDAxYmiLXHUwMDEw1GhGpIGTL0JcdTAwMTJqcLSmXHUwMDAyMcfrbM4xtr1Yn/m5L5Q06cujyYWCNVx1MDAwMLpyxNnr5iD5aXX18/vex/W17pH9uvX669fd7tdJg1x1MDAwYudcdTAwMGIkg8zYq5hP45GFTq1cdTAwMWYgaTJcdTAwMTagXHUwMDA0XHUwMDA1XHUwMDBlJFx1MDAwYlx1MDAxYlx1MDAwZbNGScnkXHUwMDA1kU6DW1VcdTAwMWT9QvtcdTAwMDLISMe8MViXXHUwMDFha8/nkFx1MDAxM3YyVVx1MDAwZjP8XHUwMDA3J39cdTAwMDecvN2nQ4Y4XHUwMDE3gSHL69m0Xm68y0j6nGfApI2Q9XVcdTAwMTKT1ZA/nuX3ns8vWEmvXFwnjtG9ZGWFsHmRXnlMXHUwMDEzXHUwMDAxSzhQdCOZRqpcdTAwMGbBZixOZeyGtWzxZu+QKSfZx62t9ubx3rE3IVx1MDAxZraFKNon6+OoXHUwMDFm7ni4XHUwMDEwtGlcdTAwMDBcdTAwMDVcdTAwMTknLlx1MDAwNlx1MDAxNlx1MDAwZlqO9VJpkzqYO1ttbD4ooZaN3Fx1MDAxN7KE9OVcdTAwMWJkXHUwMDExjEfDhFn6b5pDy+rmrvn6+vOGtp+OluS37id3tvjkt4BcdTAwMTbLXHRTLDFQV4N5XHUwMDEyaJE+i8xcdTAwMTMppWRcdTAwMTThnqZn2rz3w1x1MDAxYc5cdTAwMDVCLFx1MDAxOCtcdTAwMGVFYoZcdTAwMWFuJJKbka6OXHLYlpHFVsqHfya//L7QXHUwMDAyRs16We3y9Fx1MDAxZTfBi79cdTAwMWUzXHUwMDEzXHUwMDA0XHUwMDAyXHUwMDFmZolBVuv3XHUwMDE1XHUwMDEycaq8h1x1MDAxMjOWxlnH4kvBOpuHXHUwMDE2XHUwMDA3/u1cdTAwMDNrOoBcdTAwMTVcdTAwMWOplKYmXHUwMDAzXHUwMDFierhvpvGXemiMmWPZv2dJl4JcdTAwMWSVM6c6P5RPXHUwMDBi51x1MDAxZI9lqa9GLomL6XZcdTAwMTbE8U3ci1x1MDAwMLtcdTAwMDVcZtSJW2Se3+ZcdTAwMTM5OI3T6HKfTW7fhjlsllPGJr2e9yDQwDRNNNLh0mIod4pcdTAwMDRO61BsXGJUeVx1MDAxNVWt9om8TVx0YbPhTCtcdTAwMTZ1lkd8LF5/wLm8Z1ZAXHUwMDEzYn3a854wcnKOXHUwMDEyioSQw1VcdTAwMGZEW71cdTAwMDVGvjveePP5ZWtz8/Hi8+9cdTAwMTf7K+dcdTAwMDerr39cdTAwMDeM9Fx1MDAwMoYqhY4gYKylTY7c9Hk/XHUwMDFhXHUwMDE0MadWhc3GmWOkYW5HXHRDhjuqQCpjpLHcgGCvNMKs8YOVXGaLzZWy/+Qpf1+QvN2n4dSczqvS8qJqX+b8cGrg+Wz85eF0ur4m32ScocIhwmytUm7M55ZcdTAwMTWw1udcdTAwMDI1OcbV5XtqiGPKXHUwMDE5Q1x1MDAxNjnlI5I584uHc95Wnk1Ry1o2M+Sdfrde3N2Eca8xXGKAi2SXkVx1MDAxNOXkssw8O5LYJyu5l18vTnBSdj58VVx1MDAxOK1t0n+Ap1x1MDAxZbjxasmVRaxcdTAwMWa0meE6eYCN8t7LfHLIXHUwMDFm5bc1Z1x1MDAxZrHVyih2Ts3ldprncEpRXHUwMDFkzq01h6pcdTAwMTft/tn54cbjo+5B72Sw07nsXHUwMDFkfmz9XHUwMDBlUOXYOs5hiDIgmDIm3U5jaVx1MDAwN2sj2X2jw/0kXG4j2yQ4zlx1MDAxYqpEnlRcdTAwMDFUV9rJ3EVgU0DFXHTRtLtYrIj/XHUwMDA3p347nDKsXHUwMDBlj9zP51x1MDAwNDtdLlxcWZRsjlGMRljXzZGN7cX6KjZcdTAwMGaqpVwieFx1MDAxMOvhRdJSw7oquCjFYyU5Rak+Icbmflx1MDAxZpyAweRcdTAwMDfyJMlE1iFIjn9iPU89NqpMau6j5EOruJFUXHUwMDAyx1TpXHUwMDFi7C9lPnCkZMxLgJk7nLa8JiMqYZDshOFQMjbB+Sl371x1MDAxN41mloXJvWNn3Vh6XHUwMDE2U3m663pz7270MFx1MDAxY27CcHdfPH63Ozy+aPm132RcdTAwMWYoXHUwMDFmKs5yb8fAcZSNu/LumqNcdTAwMDRcdTAwMTDbO5OnoF2ysJntXHUwMDAzsVWd1fdQZPCYqkDEsa9JxjzrXHUwMDFizHhcdTAwMWOCxctcdTAwMTBcbvnsf9z7b+feb/lpjmLg+Dbqr2IvTdn3XHUwMDA0zYpEnmZlnY9NoEBygms+TY9EVyZcdTAwMDdcdTAwMDBkTNPQa1xubs83aNacrTRcdTAwMWVcdTAwMThcdTAwMDJcdTAwMDfLrkOofzJcdTAwMDBcdTAwMGbW4XFcdTAwMDOiifwuXb9tIziLkMNCY35kQLlcdFxm78LKNOdCRkWcrZVcdTAwMDdcdTAwMTDlXHUwMDEzIFSxiMSliUJm9VwiXHUwMDBm0maJZYPTNdgwxD4wXHUwMDFlXHUwMDE1wHCoLC/1XHUwMDA1XHJgSrClXHUwMDA0IUaQnlx1MDAxYlEpyHOriWc1WFblN5lQM2uBnPCDp6HyLU3FrvLSXHUwMDE1ZznCe46ZwFOz9WUzafDlQrlcdTAwMTVU5Fx1MDAxNeuKYSZHWtkmLSv3XHUwMDA1z5NPTpDgIJqLq8Lnt83x2YeLuNzuPIlftlx1MDAwZd7KtaXPvc9rj39cdTAwMGJ8djajXCLBj1x1MDAwNVuc8TnCZ4b/7OKmSdxbNSPno/OgnXymXuFkwFwiPlx1MDAxYsnJimzyjtH48YJGnr/AXHUwMDE2qbqz6P5B6L9cbkLDqTnFydzGQHVjud1QwoU6r1x1MDAxNZxk3vNRv1GhOPdUXCLG4Fx1MDAxOCxWeCQ+V/LgXHUwMDE5rzjsT9anp+qkQVhQgFS2QKhcdTAwMDZcdTAwMWVXZ8pwzoNwxubEI4GsxDxcdTAwMWVcXFx1MDAxZVx1MDAxYlx1MDAwNDnUiHNcdTAwMWY5oaBcXFjBmWpcdTAwMDbMm7PhXHUwMDExcjZcdTAwMThGzlx1MDAwMTm45YxcdTAwMTiVZpdXeTw3O2Asp/kjXHUwMDA0ZFdPvcB8bI1nXHUwMDBmIzNyKohcdTAwMTSwisX5nEf2i0RcbnZcdTAwMWJIoiZwn5H+WFqzKFx1MDAxNE/vl1x1MDAwMWtMX/5cdTAwMDGs4GHQfMB/XHUwMDE1rr5rjqvdzeHG6YuzXHUwMDBmbm+4bE9f2W3z9N3lb4GrPJeIdc+GZU7OpfWPnJFAospcdTAwMDJ8uIB7int9PrWa8zhcdTAwMDPrVFxcXHUwMDE1rrJbgVWYnDfjWOY1XHUwMDFl+EaeXG4m/slr/n1gVVx1MDAxMecsXHUwMDA3nyDYKoW9guOyI/vkOW7cxFx1MDAwNn33iqGghSVcdTAwMDQ2kKtynCqJQlx1MDAxMX6O4/1BxeuHxPFgRE7aQeiDQDDq8i5SXCKvwTF6kYM1NCdOXHUwMDAzvZLeQs2hblxiU3mEnuTQ4jphLuPwKot7h3WxzqMkznCGb2QzXHUwMDAxR/fUt47PVlx1MDAxYfPXkulcXIZkXHUwMDFj219cdTAwMWUnNu5cdGpcdTAwMDVcdTAwMDZcdTAwMWVQYVx1MDAxME5Kjlx1MDAwMZMuPUCIU3M4v5Rn2ZhcdTAwMDbdXHUwMDA0Mp9cYsUmStaYXHUwMDEw2pNHy2NcdTAwMTKiQFTijGsytHjWXHUwMDAyr8GXqVx1MDAxMPaq4NKThlx1MDAwN+E9z1xmjJyBwNn6tXh/J2hcdTAwMWW094ZX+FOBz4WjNFN45jhcdTAwMWb2XGZV1sdsNIfnb2eby0ut1feLT1x1MDAwZbcv11eevFh9sSTn+8BAuFxylVx1MDAxZv9cdTAwMWPY0ClEWlx1MDAxOZOPu+dcdTAwMTa1tTxT0CZcdTAwMGIrXHUwMDAwc5v/TFx1MDAwN+aW3Vx1MDAwZlWHXHUwMDA2aiF5XHUwMDFhh8uHl/NojXFcXLZUXeZXTLz6XHUwMDE5XHUwMDBid5nzo3uuXHUwMDBld29cdTAwMDW4/73Ru1x1MDAxZqr1I6H052RcdTAwMWO++Z3/XHUwMDE2NPhaMZ7sv9XPPmxcdTAwMWW+XFzuvDxZ7j7dk91cdTAwMWT/qKjqNzrcXCJcdTAwMDA+unnnzz+myV1ZP39+XHUwMDFlP7/8uipPn7WeXXRPn75avpPcXHUwMDFmXHUwMDFmXHUwMDFmts+HZUFX3/jx7UXn/Mh8PJHfnlx1MDAxZr7a9vJC6fWC2DF+M0ZKeMLHKHXcgJRMNfnSOlx1MDAwYtZegNXxknFcclx1MDAwMIbrl1Xmvtnc3KvvRbW5XHUwMDFmtfaOzlx1MDAwNu05MHgjXGaAyOm8078wROja4J3IXHUwMDE0Jzw4XHUwMDFl6jPV4Fx1MDAxYlx1MDAxZFx1MDAxMdrei7GCiUefcXhcdTAwMDHHIEZuRY1cdTAwMWK8sqmFa8TmXHUwMDFjwlrdeDTvjPqg31x1MDAxYm50LvlAlCi9+qx13Ony5o+uONdq2ndv2Fx1MDAxZfBLXHUwMDE2XHUwMDFlr68sbLRcdTAwMDdQ5UelTz3udlx1MDAwZXt5uNfmZ0umMOzstbo3XHUwMDFmOO7s71x1MDAxN5FxXHUwMDBmX91CLDtYaYJd/UHnsNNrdTdcdTAwMWKtrHU27L9rn15d7nBw1i7esfaLm2AruyZBP1x1MDAwN+iFZvLUxFx1MDAxMWpcbs4mrkxkv79cdTAwMDWih297345cdTAwMDavetvq07fDXHUwMDEwN+3up1x1MDAxN/OO6CbkXHUwMDAz+zlfc1x1MDAxY9FDPo7Qa3b4grj5KSnsX4zonFx1MDAwZodIY0Kj4a9cdTAwMDX0h1x1MDAwN97hwaZXXHUwMDE3x2+Gr9pLe+L1ivy0eLTUlCc8jlu9nUUnV15e7Fx1MDAwZbaWjlx1MDAwZd7uf1xcbbbcJoDuXHUwMDExXHLeN6BbMbm7mIdW5FFLlbVvNbf26ns894DOaXM8XHUwMDE2L1x1MDAwMrGVTFx1MDAwMD1YRqVcdTAwMWOcznNCptr7XVx1MDAwMJ1TXCI5XHUwMDBlM0BcdTAwMWRsYTLMNEA3PE9cdTAwMDEk41dcdTAwMDI654RcdTAwMTdSefdccujrg/63zn57sHDSPVx1MDAwM57eXHUwMDE3lk9HrVx1MDAxNMsnLmpWML7faVx1MDAxZPd7+1VmbcK0YjFcdTAwMGVcdTAwMWPU1Wb9oblZv3p89jp8Xn+1/aLvdlePdnaXvu5Mqlx1MDAxNptcdTAwMTNcdTAwMTCHXHRcdTAwMDE/NUdcdTAwMWZx/q5O9qGD4lxmbVx1MDAxZrldNZ2lq4PYNma6Ue+qXHUwMDAztbtbYdTBZJpHm+hrjFx1MDAxZXngkVVLm1lrWKaemnc+Vl+bqO9cdTAwMDXAf1x1MDAxNPDcXHUwMDFhwOuA9nJ7uL6+tvHa7Vx1MDAxZD6LavHL2lHncWhcbrRG9LbWX/a2T+LhUMmLlcvBq92GvKBcdTAwMDHQcqLnvUfOxZFcdTAwMGapRTqhjOExQlVcdTAwMTb5sblFVt/jOVx1MDAwN1rH6eyeh2yIwFx1MDAxNvuUWEfLijHrefzAnW1yXHUwMDEy0HqbsUuNNUs8vLbKJCssUVtcdTAwMWXBU7TRv3zovN7fX+j3XHUwMDE2/tP71lx1MDAxOVxmz1pd/K3X32/fXHUwMDEz4tZAzFx1MDAxOOJeLe7H0spcdTAwMGKbXHUwMDE16l45mFxuXHUwMDBij2LiOFx1MDAwNe5dWFx1MDAwZausMvBPtyjQnupcdTAwMDfn1MC9kjzeRlracFx1MDAwNeg6MGnYtVxus1x1MDAwMN2JXHUwMDA2zqFT1lx1MDAwN6kqpvPwODQtx5k0S1M8nIGq3pS+f6idaveuOFx1MDAxNPDnN6FcdTAwMGJcdTAwMGJrX311XHUwMDEz28s9xd5cdTAwMTlXyVpcdTAwMTIrjeeJVXDkjoe6XHUwMDE1tvxcdTAwMWVcdTAwMWS2TvhcdTAwMDAyXHUwMDBlQlx1MDAxMdbmXHKQoTjHXHUwMDFjente3thcdTAwMWW7M6XN8UkrPtjuPl/flFsrZ1tvVj9cdTAwMGXkpTBv21UrXHUwMDE2WeDZ4OCAQbNJv1hyfb1cXJ1cdTAwMDVOjLvOs4jiKTBccpY741x1MDAxZPvU58x0077CMviz+MMoRr8/RqXa3d3+94a8aKLblKqwYzA+hiZGLaSu3FPYbu44p+9cdTAwMTTNqePkyLJMXHUwMDE4nunjI1x1MDAwZqxcdTAwMWGJufacPIdQhFx1MDAxOJRj8czk/vq7eE7Fk69cdTAwMWTP0OXIXHUwMDBigFxcRVtL0Dz9XCJKXHUwMDFl0aVD4ajOXHUwMDFmntRLizjnnnZcdTAwMTHn3JGePn239aE92L1cXDp42Wpccndar5bWNqrdkmNLINM9+UkqRYO8dkuGXHUwMDA3McIsXHJwUkhXXHUwMDFhWzgrNzp9y6K0Xk5j1KxnMYrTp8e9vmJcbi0yjM3T1aXCl/vxo6mjeUhXOtlU+LM4ZiX371r9xJbwaFx1MDAwMpspbCUlbTX3rNNT9vPqWa2ImXXQSqgtz3lcdTAwMWRcdTAwMTG8K8/KwZGS53iImvqMO3nWTPGEVGZro+FhkuOOXHUwMDE1sbE1kocr8cxcdTAwMDbtx4NQXHUwMDA3/DSziUFn7Vl/Plx03NCzroWN3U9f3698XFxvvTk+2Vx1MDAxYrqT5fCiylMxqFx1MDAwMzO1UVx1MDAwNcHaND/uWSWPQlVwZIpHfUVZPIZtZp51alx1MDAwMrnkWVx1MDAwNYe2uXyghIpQgDi2YJPhyXPW/u0g4Heiplx1MDAxM1xyhD/jpjEjdzqx9sVP7PBiSp1cdTAwMDOIKp3pbnNnumaGw8fvPj7dWJXv1zaXulx1MDAxNzsvzt7MuzNcci7m4ywjjzDhdLCyL1x1MDAwNafJNNN78l5LX5yDx5YsXHUwMDE0hrLwdOJcbmc65jxcdTAwMDPIi1My/v5cdLxQenVKXHUwMDAyb+s6ObZ6h6zdsH8yKWVXWnean6v+7lkl5ibZrdNcdTAwMTNcdTAwMGJaXCKslmcqVpntXnOzPX1x/q2155Zff97zy+2lleVcdTAwMTX7+tm8m62UNlx1MDAxZp7tXGLUUlx1MDAxNKdcdTAwMDddV7T4LCqdXHUwMDBm7eWJcZNn4tyFXHUwMDAzSVx1MDAxMzNcdTAwMTVtXHUwMDBlcTz7p8DERptho4Vf221+tJdcdTAwMTFcdTAwMTN6MH8ju1x1MDAxZLXr1dntxsaLhferK1x1MDAxZlx1MDAxNzbWll4tbz606U78+vu2Xq0nZ4dcIqd88SDxKvvdv1x1MDAwNexO5ZHzar+WJ1XzXHUwMDAwXG5cdTAwMDZyxUNcdTAwMDCuzFx1MDAxN4RWXHUwMDFiXHUwMDFl3FBcdTAwMDe7dzHffO5Kflx1MDAxNlx1MDAxZs9rNFUjT8atV/KwZfaF3Lv53jDC2daajdHLX+1cdTAwMWPOep3zhVNcblx1MDAxYz60Y6j86oeocIlcIn31XHUwMDA21Vx1MDAxNc/LUqGSjbebu4WLwbu9/vOl81dq7WD1yfOnT95ePt+ee7dcdTAwMTCi5yHxWoFcdTAwMDOLdDdcdTAwMWRRMFx1MDAwZsqR7Gibvpt+IMKeXHUwMDEwP5nY4JGaSXBarG1hf5OV1lXsuLGPVatiWup3KG55/+3bZst9cFx1MDAwN1x1MDAxZt/tvPz+/FX3YnfTNC1uef763U7/cNA53926XFxZ3nizv/lhW/0yR/RzIFx1MDAxZCbnXHUwMDE5RVByUo/2QXNjrL7F826M0dmMLZ9Rq6uirbI5Olx1MDAxZZCez9OOwND7MkcpQFx1MDAxNHzk6bGcXHUwMDBlIKs4tlx1MDAxZEdpxcPOpbh/lJ6r6pb/9JZ+gN/pPVW11OBKRVVL9aJmhbLtbrdzclrZXGZi3USUXHUwMDA1sfQ8kKt6qtFhc8vePn6sLr7smFx1MDAwZi831Prxent1aWdz0vjzOakj5UCnTEhcdTAwMGXlsN6OgSyMXiBEhfbiXHUwMDEz02rD72TV2mSs462saDFO8qxdV4Wxxlx1MDAxOVx1MDAxMU10v2ov9ucg9uNJZ+n9Tu/l8f6X9+bbxc7J+atcdTAwMWT5XHUwMDAwjVx1MDAxYX916DZhooXz1F8/XHS6j5pcdTAwMWJ49aObd+j2XmdcdTAwMWONXHUwMDAz+1x1MDAwZaJ4yu91R6dcdTAwMTeZi5wmrXmC95SZZU2MfFLDl1x1MDAwYlx1MDAxObmBsY7t4pV1qePIrVx1MDAxNI+A8X+njs4nnMfzn97GxemwfXxPsF2DUylsT1jSvZehOjE5YeZDVFFcdTAwMTX7iFxuXHUwMDE23Wlu0dP96bxatLM289yp0lx1MDAxY1x1MDAxZVacS3GVMfMq46BcdTAwMGUpgOq2OM9xplx1MDAxOTOVRW1kkPAgweiqIYTaZkpFg5XyPC9cdTAwMTHGzopk/ixcdTAwMWZI93fc9L/FJrrnXGJSydM9gmGJY+FDV3voNjNS6nwupeaMU1dcdTAwMTQzmz3/6V6jsNy8jJYnuFx1MDAxOZBLxfGpxakvN2WpoJxcbkvVUGJbXHUwMDFlf/dcdTAwMTfb/J9oKPxZXHUwMDFjs5GRuDFmNZNaquJU0jG3aj1cdTAwMGZcdTAwMDGs3Eb83NyrTmeT8+pVXHUwMDAzXHUwMDFllMDzXHSeXHUwMDA36aixXHUwMDE5dFxihoxlxTc7eEJMXHUwMDE2Nlx1MDAxYqfqYOvGXHUwMDA2qVx1MDAwM7tkQciq9iF85oyHc4I/gFx1MDAwNVx1MDAxNY9cdTAwMDBcdTAwMTmdreGgcH/PKtXGfoojmbXkgVxi0nrB+FNcdTAwMTSmRl/7qXy8kfA8X4ddjFHfQ53q9DRK2bMqyYNYXHUwMDExiqvIXHUwMDAzIeT4iiW0OFx1MDAxZu1cclxyiFx1MDAwNu7X3GrFv5NnnWwt/FlcdTAwMWM3lFx1MDAxOfnWqWNH7OQ5Ylx1MDAxY1LKXHUwMDAx2pXbvN1blGlMLcSeU//qY4QtgbpysDrZSkJadci0YnVj1L5Y6TJvY0dgWFx1MDAxMDBfU8Tqck7761x1MDAxZs2q8rtvn5++uny69Xn96dPBt6a5oftcdTAwMWFONry43P56pndXL/ovbFhdWXx7fDyzoSNcdTAwMGaTc1J+ysHTXHUwMDE27Ffo6ilix82NvfrZzbmxR1x1MDAxOFx1MDAxYU9KUlx1MDAxNubmtU1LsmBlgafCXHUwMDBiXHUwMDE3plx1MDAxYvtcdTAwMWQqKeFvOIxbKcOuTGmrqNT4vi1blFx1MDAwMsKov1HOiSVRrUOs657yTTVwVVWhlSznrrmmJlx1MDAwZWdS5JSrs+GQXHUwMDFjXHUwMDA3XHUwMDAyyCnixSNcdTAwMTOuQoPoM+CW5NhojVx1MDAwMC+O6aLIjNLsb1x1MDAxMDpP2PhQkVx1MDAwMNU+XHUwMDBignvMwinlfXGCwLiVzVwi6vjVvuNWllXwnr1HlfbWJFT5kVlcdTAwMTY8XytGPTaSPfdcblPqbNlcdTAwMWVcXMxIT3bfqcWXrqY6LtJFvW5q8zOl1ItTNJU/4zo6hVM3jCVm2lx1MDAxMFxyVlx1MDAxN33keeZcdTAwMWW8PzppxztO7qFlu3FvZH5cdTAwMTKQ14xcdTAwMDRcdTAwMDLucjRKqfF8nsr81XQ+UFxiXHUwMDAzvnzLsPNOIdpMWkwmj5CQzFxyOqB/Ze6+35xcdTAwMTi9e7qzXHUwMDExNs3jo6VccnHUVp8/dva77+fHuU3oMdEx0/A9Klx1MDAwNJ7QKJLNuCBcdTAwMDJcdTAwMDfGa1x1MDAxN1x1MDAxY0fGXHUwMDE3SlZ+ebGrVuCyzD787sTob1SN+q9rb/yodXKyMcS9vPFgj7512t+fVOpcZn9cdTAwMThr5TZPM2rn4Prnv/78P1x1MDAwZn2PiyJ9 + + + + + LOGIN NODE ON RESOURCE PROVIDER3. No INBOUND connectivity to the HPCVirtual KubeletInterlink API ServerProvider pluginPod on virtual nodeVirtual NodeSSH UNIX SOCKETunix socketPodContainersBatchSystemSSH agentunix socket \ No newline at end of file diff --git a/go.mod b/go.mod index 29fcc8b0..5a3c4063 100644 --- a/go.mod +++ b/go.mod @@ -4,12 +4,15 @@ go 1.22 require ( github.com/containerd/containerd v1.7.6 + github.com/google/uuid v1.6.0 github.com/sirupsen/logrus v1.9.3 github.com/spf13/cobra v1.7.0 github.com/virtual-kubelet/virtual-kubelet v1.11.0 go.opentelemetry.io/otel v1.27.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.27.0 go.opentelemetry.io/otel/sdk v1.27.0 + go.opentelemetry.io/otel/trace v1.27.0 + golang.org/x/crypto v0.23.0 golang.org/x/oauth2 v0.20.0 google.golang.org/grpc v1.64.0 gopkg.in/yaml.v2 v2.4.0 @@ -40,7 +43,6 @@ require ( github.com/google/gnostic-models v0.6.8 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/gofuzz v1.2.0 // indirect - github.com/google/uuid v1.6.0 // indirect github.com/gorilla/mux v1.8.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect @@ -64,7 +66,6 @@ require ( go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.27.0 // indirect go.opentelemetry.io/otel/metric v1.27.0 // indirect - go.opentelemetry.io/otel/trace v1.27.0 // indirect go.opentelemetry.io/proto/otlp v1.3.1 // indirect golang.org/x/net v0.25.0 // indirect golang.org/x/sync v0.7.0 // indirect diff --git a/go.sum b/go.sum index 38260fda..03e357e5 100644 --- a/go.sum +++ b/go.sum @@ -186,6 +186,8 @@ go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=